├── TUIKit ├── .eslintignore ├── utils │ ├── index.ts │ ├── enableSampleTaskStatus.ts │ ├── env.ts │ ├── documentLink.ts │ └── unifyPromiseVue2.ts ├── debug │ ├── index.js │ └── index.d.ts ├── index.vue ├── vue.config.js ├── .npmignore ├── .npmrc ├── components │ ├── TUIGroup │ │ ├── manage-group │ │ │ ├── style │ │ │ │ ├── h5.scss │ │ │ │ └── index.scss │ │ │ └── index.ts │ │ ├── create-group │ │ │ ├── index.ts │ │ │ └── style │ │ │ │ └── index.scss │ │ ├── select-member │ │ │ └── index.ts │ │ └── index.ts │ ├── common │ │ ├── Loading │ │ │ └── index.ts │ │ ├── Dialog │ │ │ ├── index.ts │ │ │ └── style │ │ │ │ ├── dialog.scss │ │ │ │ └── color.scss │ │ ├── Transfer │ │ │ ├── index.ts │ │ │ └── style │ │ │ │ └── transfer.scss │ │ ├── DatePicker │ │ │ ├── index.ts │ │ │ └── date-picker.ts │ │ ├── SwitchBar │ │ │ └── index.ts │ │ ├── BottomPopup │ │ │ ├── style │ │ │ │ ├── modal.scss │ │ │ │ └── index.scss │ │ │ └── index.ts │ │ ├── Navigation │ │ │ └── index.ts │ │ ├── SelectUser │ │ │ └── index.ts │ │ ├── ImagePreviewer │ │ │ └── index.ts │ │ └── Toast │ │ │ ├── type.ts │ │ │ └── index.ts │ ├── TUIChat │ │ ├── style │ │ │ ├── wx.scss │ │ │ ├── uni.scss │ │ │ ├── index.scss │ │ │ ├── h5.scss │ │ │ └── web.scss │ │ ├── message-input-toolbar │ │ │ ├── words │ │ │ │ ├── index.ts │ │ │ │ └── style │ │ │ │ │ ├── color.scss │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── h5.scss │ │ │ │ │ └── web.scss │ │ │ ├── clearHistory │ │ │ │ └── index.ts │ │ │ ├── evaluate │ │ │ │ ├── index.ts │ │ │ │ └── style │ │ │ │ │ └── index.scss │ │ │ ├── file-upload │ │ │ │ └── index.ts │ │ │ ├── album-upload │ │ │ │ └── index.ts │ │ │ ├── camera-upload │ │ │ │ └── index.ts │ │ │ ├── emoji-picker │ │ │ │ ├── index.ts │ │ │ │ └── style │ │ │ │ │ ├── index.scss │ │ │ │ │ └── h5.scss │ │ │ ├── image-upload │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── user-selector │ │ │ │ └── index.ts │ │ │ ├── video-upload │ │ │ │ └── index.ts │ │ │ ├── toolbar-item-container │ │ │ │ └── style │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── color.scss │ │ │ │ │ ├── h5.scss │ │ │ │ │ ├── web.scss │ │ │ │ │ └── uni.scss │ │ │ └── uploadToolkit │ │ │ │ └── index.ts │ │ ├── message-input │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── aiRobotManager │ │ │ ├── interface.ts │ │ │ ├── index.ts │ │ │ ├── info.ts │ │ │ └── const.ts │ │ ├── offlinePushInfoManager │ │ │ ├── index.ts │ │ │ ├── info.ts │ │ │ └── const.ts │ │ ├── message-list │ │ │ ├── style │ │ │ │ ├── index.scss │ │ │ │ ├── h5.scss │ │ │ │ └── color.scss │ │ │ ├── read-receipt-panel │ │ │ │ └── interface.ts │ │ │ ├── link │ │ │ │ └── index.ts │ │ │ └── message-elements │ │ │ │ └── message-location.vue │ │ ├── web-view.vue │ │ ├── emoji-config │ │ │ └── custom-emoji.ts │ │ └── utils │ │ │ └── wordsList.ts │ ├── TUIContact │ │ ├── contact-list │ │ │ ├── components │ │ │ │ └── index.js │ │ │ ├── index.ts │ │ │ └── style │ │ │ │ ├── index.scss │ │ │ │ └── h5.scss │ │ ├── contact-info │ │ │ ├── index.ts │ │ │ └── style │ │ │ │ └── index.scss │ │ ├── contact-search │ │ │ └── index.ts │ │ ├── select-friend │ │ │ └── index.ts │ │ └── index.ts │ ├── TUISearch │ │ ├── search-input │ │ │ └── index.ts │ │ ├── search-more │ │ │ └── index.ts │ │ ├── search-result │ │ │ ├── index.ts │ │ │ ├── style │ │ │ │ └── index.scss │ │ │ ├── search-result-default │ │ │ │ └── index.ts │ │ │ ├── search-result-loading │ │ │ │ ├── index.ts │ │ │ │ └── index.vue │ │ │ └── search-result-item │ │ │ │ └── style │ │ │ │ ├── index.scss │ │ │ │ └── h5.scss │ │ ├── style │ │ │ ├── index.scss │ │ │ ├── web.scss │ │ │ └── h5.scss │ │ ├── search-container │ │ │ ├── index.ts │ │ │ └── style │ │ │ │ ├── index.scss │ │ │ │ └── h5.scss │ │ └── index.ts │ ├── TUIConversation │ │ ├── style │ │ │ ├── index.scss │ │ │ └── color.scss │ │ ├── conversation-header │ │ │ └── index.ts │ │ ├── conversation-network │ │ │ ├── index.ts │ │ │ └── index.vue │ │ ├── conversation-list │ │ │ └── style │ │ │ │ └── index.scss │ │ ├── entry.ts │ │ └── index.ts │ └── index.ts ├── static │ ├── message.png │ ├── profile.png │ ├── relation.png │ ├── message-selected.png │ ├── profile-selected.png │ └── relation-selected.png ├── assets │ └── icon │ │ ├── call.png │ │ ├── more.png │ │ ├── star.png │ │ ├── face-uni.png │ │ ├── loading.gif │ │ ├── loading.png │ │ ├── more-uni.png │ │ ├── camera-uni.png │ │ ├── image-uni.png │ │ ├── star-light.png │ │ ├── video-play.png │ │ ├── video-uni.png │ │ ├── close-image.png │ │ ├── downaload-image.png │ │ ├── down-icon.svg │ │ ├── right-icon.svg │ │ ├── minus.svg │ │ ├── break-btn.svg │ │ ├── plus.svg │ │ ├── break.svg │ │ ├── left-arrow.svg │ │ ├── search.svg │ │ ├── convertText_en.svg │ │ ├── input-close.svg │ │ ├── d-right-arrow.svg │ │ ├── face-dark.svg │ │ ├── video-dark.svg │ │ ├── d-left-arrow.svg │ │ ├── check-sm.svg │ │ ├── msg-quote.svg │ │ ├── more.svg │ │ ├── add.svg │ │ ├── start-group.svg │ │ ├── add-circle.svg │ │ ├── msg-audio.svg │ │ ├── radio.svg │ │ ├── icon-arrow-left.svg │ │ ├── double-arrow.svg │ │ ├── right-arrow.svg │ │ ├── setting.svg │ │ ├── video-light.svg │ │ ├── icon-close.svg │ │ ├── call-voice.svg │ │ ├── mute.svg │ │ ├── rotate-left.svg │ │ ├── rotate-right.svg │ │ ├── close-dark.svg │ │ ├── face-light.svg │ │ ├── words-dark.svg │ │ ├── forward-each.svg │ │ ├── search-more.svg │ │ ├── edit.svg │ │ ├── file-dark.svg │ │ └── groups.svg ├── locales │ ├── en │ │ ├── emoji.ts │ │ ├── evaluate.ts │ │ ├── component.ts │ │ ├── words.ts │ │ ├── time.ts │ │ └── TUIConversation.ts │ ├── zh_cn │ │ ├── emoji.ts │ │ ├── evaluate.ts │ │ ├── words.ts │ │ ├── component.ts │ │ ├── TUIConversation.ts │ │ ├── time.ts │ │ └── TUISearch.ts │ ├── zh_tw │ │ ├── emoji.ts │ │ ├── evaluate.ts │ │ ├── words.ts │ │ ├── component.ts │ │ ├── TUIConversation.ts │ │ ├── time.ts │ │ └── TUISearch.ts │ └── index.ts ├── adapter-vue.ts ├── index.ts ├── plugins │ └── plugin-components │ │ └── message-room │ │ └── message-room.vue ├── shims-vue.d.ts └── .eslintrc.js ├── sample ├── uni_modules │ └── TencentCloud-Push │ │ ├── index.js │ │ └── utssdk │ │ ├── app-android │ │ ├── push-listener-options.uts │ │ └── push-callback-options.uts │ │ ├── app-ios │ │ ├── push-listener-options.uts │ │ ├── config.json │ │ ├── UTS.entitlements │ │ └── push-listener.uts │ │ └── interface.uts ├── TUIKit │ ├── utils │ │ ├── index.ts │ │ ├── enableSampleTaskStatus.ts │ │ ├── env.ts │ │ ├── documentLink.ts │ │ └── unifyPromiseVue2.ts │ ├── debug │ │ ├── index.js │ │ └── index.d.ts │ ├── index.vue │ ├── vue.config.js │ ├── .npmignore │ ├── .npmrc │ ├── components │ │ ├── TUIGroup │ │ │ ├── manage-group │ │ │ │ ├── style │ │ │ │ │ ├── h5.scss │ │ │ │ │ └── index.scss │ │ │ │ └── index.ts │ │ │ ├── create-group │ │ │ │ ├── index.ts │ │ │ │ └── style │ │ │ │ │ └── index.scss │ │ │ ├── select-member │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── common │ │ │ ├── Dialog │ │ │ │ ├── index.ts │ │ │ │ └── style │ │ │ │ │ ├── dialog.scss │ │ │ │ │ └── color.scss │ │ │ ├── Loading │ │ │ │ └── index.ts │ │ │ ├── Transfer │ │ │ │ ├── index.ts │ │ │ │ └── style │ │ │ │ │ └── transfer.scss │ │ │ ├── SwitchBar │ │ │ │ └── index.ts │ │ │ ├── DatePicker │ │ │ │ ├── index.ts │ │ │ │ └── date-picker.ts │ │ │ ├── BottomPopup │ │ │ │ ├── index.ts │ │ │ │ └── style │ │ │ │ │ ├── modal.scss │ │ │ │ │ └── index.scss │ │ │ ├── Navigation │ │ │ │ └── index.ts │ │ │ ├── SelectUser │ │ │ │ └── index.ts │ │ │ ├── ImagePreviewer │ │ │ │ └── index.ts │ │ │ └── Toast │ │ │ │ ├── type.ts │ │ │ │ └── index.ts │ │ ├── TUIChat │ │ │ ├── style │ │ │ │ ├── wx.scss │ │ │ │ ├── uni.scss │ │ │ │ ├── index.scss │ │ │ │ ├── h5.scss │ │ │ │ └── web.scss │ │ │ ├── message-input-toolbar │ │ │ │ ├── words │ │ │ │ │ ├── index.ts │ │ │ │ │ └── style │ │ │ │ │ │ ├── color.scss │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ ├── h5.scss │ │ │ │ │ │ └── web.scss │ │ │ │ ├── clearHistory │ │ │ │ │ └── index.ts │ │ │ │ ├── evaluate │ │ │ │ │ ├── index.ts │ │ │ │ │ └── style │ │ │ │ │ │ └── index.scss │ │ │ │ ├── album-upload │ │ │ │ │ └── index.ts │ │ │ │ ├── emoji-picker │ │ │ │ │ ├── index.ts │ │ │ │ │ └── style │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ └── h5.scss │ │ │ │ ├── file-upload │ │ │ │ │ └── index.ts │ │ │ │ ├── image-upload │ │ │ │ │ └── index.ts │ │ │ │ ├── video-upload │ │ │ │ │ └── index.ts │ │ │ │ ├── camera-upload │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── user-selector │ │ │ │ │ └── index.ts │ │ │ │ ├── toolbar-item-container │ │ │ │ │ └── style │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ ├── color.scss │ │ │ │ │ │ ├── h5.scss │ │ │ │ │ │ ├── web.scss │ │ │ │ │ │ └── uni.scss │ │ │ │ └── uploadToolkit │ │ │ │ │ └── index.ts │ │ │ ├── message-input │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── aiRobotManager │ │ │ │ ├── interface.ts │ │ │ │ ├── index.ts │ │ │ │ ├── info.ts │ │ │ │ └── const.ts │ │ │ ├── offlinePushInfoManager │ │ │ │ ├── index.ts │ │ │ │ ├── info.ts │ │ │ │ └── const.ts │ │ │ ├── message-list │ │ │ │ ├── style │ │ │ │ │ ├── index.scss │ │ │ │ │ ├── h5.scss │ │ │ │ │ └── color.scss │ │ │ │ ├── read-receipt-panel │ │ │ │ │ └── interface.ts │ │ │ │ ├── link │ │ │ │ │ └── index.ts │ │ │ │ └── message-elements │ │ │ │ │ └── message-location.vue │ │ │ ├── web-view.vue │ │ │ ├── emoji-config │ │ │ │ └── custom-emoji.ts │ │ │ └── utils │ │ │ │ └── wordsList.ts │ │ ├── TUIContact │ │ │ ├── contact-list │ │ │ │ ├── components │ │ │ │ │ └── index.js │ │ │ │ ├── index.ts │ │ │ │ └── style │ │ │ │ │ ├── index.scss │ │ │ │ │ └── h5.scss │ │ │ ├── contact-info │ │ │ │ ├── index.ts │ │ │ │ └── style │ │ │ │ │ └── index.scss │ │ │ ├── contact-search │ │ │ │ └── index.ts │ │ │ ├── select-friend │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── TUISearch │ │ │ ├── search-input │ │ │ │ └── index.ts │ │ │ ├── search-more │ │ │ │ └── index.ts │ │ │ ├── search-result │ │ │ │ ├── index.ts │ │ │ │ ├── style │ │ │ │ │ └── index.scss │ │ │ │ ├── search-result-default │ │ │ │ │ └── index.ts │ │ │ │ ├── search-result-loading │ │ │ │ │ ├── index.ts │ │ │ │ │ └── index.vue │ │ │ │ └── search-result-item │ │ │ │ │ └── style │ │ │ │ │ ├── index.scss │ │ │ │ │ └── h5.scss │ │ │ ├── style │ │ │ │ ├── index.scss │ │ │ │ ├── web.scss │ │ │ │ └── h5.scss │ │ │ ├── search-container │ │ │ │ ├── index.ts │ │ │ │ └── style │ │ │ │ │ ├── index.scss │ │ │ │ │ └── h5.scss │ │ │ └── index.ts │ │ ├── TUIConversation │ │ │ ├── style │ │ │ │ ├── index.scss │ │ │ │ └── color.scss │ │ │ ├── conversation-header │ │ │ │ └── index.ts │ │ │ ├── conversation-network │ │ │ │ ├── index.ts │ │ │ │ └── index.vue │ │ │ ├── conversation-list │ │ │ │ └── style │ │ │ │ │ └── index.scss │ │ │ ├── entry.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── static │ │ ├── message.png │ │ ├── profile.png │ │ ├── relation.png │ │ ├── message-selected.png │ │ ├── profile-selected.png │ │ └── relation-selected.png │ ├── assets │ │ └── icon │ │ │ ├── call.png │ │ │ ├── more.png │ │ │ ├── star.png │ │ │ ├── face-uni.png │ │ │ ├── loading.gif │ │ │ ├── loading.png │ │ │ ├── more-uni.png │ │ │ ├── camera-uni.png │ │ │ ├── close-image.png │ │ │ ├── image-uni.png │ │ │ ├── star-light.png │ │ │ ├── video-play.png │ │ │ ├── video-uni.png │ │ │ ├── downaload-image.png │ │ │ ├── down-icon.svg │ │ │ ├── right-icon.svg │ │ │ ├── minus.svg │ │ │ ├── break-btn.svg │ │ │ ├── left-arrow.svg │ │ │ ├── plus.svg │ │ │ ├── break.svg │ │ │ ├── search.svg │ │ │ ├── convertText_en.svg │ │ │ ├── input-close.svg │ │ │ ├── d-right-arrow.svg │ │ │ ├── face-dark.svg │ │ │ ├── video-dark.svg │ │ │ ├── d-left-arrow.svg │ │ │ ├── check-sm.svg │ │ │ ├── msg-quote.svg │ │ │ ├── more.svg │ │ │ ├── add.svg │ │ │ ├── start-group.svg │ │ │ ├── add-circle.svg │ │ │ ├── msg-audio.svg │ │ │ ├── radio.svg │ │ │ ├── icon-arrow-left.svg │ │ │ ├── double-arrow.svg │ │ │ ├── right-arrow.svg │ │ │ ├── setting.svg │ │ │ ├── video-light.svg │ │ │ ├── icon-close.svg │ │ │ ├── mute.svg │ │ │ ├── call-voice.svg │ │ │ ├── rotate-left.svg │ │ │ ├── rotate-right.svg │ │ │ ├── close-dark.svg │ │ │ ├── face-light.svg │ │ │ ├── words-dark.svg │ │ │ ├── forward-each.svg │ │ │ ├── search-more.svg │ │ │ ├── edit.svg │ │ │ ├── file-dark.svg │ │ │ └── groups.svg │ ├── locales │ │ ├── en │ │ │ ├── emoji.ts │ │ │ ├── evaluate.ts │ │ │ ├── component.ts │ │ │ ├── words.ts │ │ │ ├── time.ts │ │ │ └── TUIConversation.ts │ │ ├── zh_cn │ │ │ ├── emoji.ts │ │ │ ├── evaluate.ts │ │ │ ├── words.ts │ │ │ ├── component.ts │ │ │ ├── TUIConversation.ts │ │ │ ├── time.ts │ │ │ └── TUISearch.ts │ │ ├── zh_tw │ │ │ ├── emoji.ts │ │ │ ├── evaluate.ts │ │ │ ├── words.ts │ │ │ ├── component.ts │ │ │ ├── TUIConversation.ts │ │ │ ├── time.ts │ │ │ └── TUISearch.ts │ │ └── index.ts │ ├── adapter-vue.ts │ ├── index.ts │ ├── plugins │ │ └── plugin-components │ │ │ └── message-room │ │ │ └── message-room.vue │ └── shims-vue.d.ts ├── shims-vue.d.ts ├── static │ ├── logo.png │ ├── im-app.png │ ├── login-bg.png │ ├── message.png │ ├── profile.png │ ├── relation.png │ ├── message-selected.png │ ├── profile-selected.png │ └── relation-selected.png ├── styles │ ├── profile │ │ └── index.scss │ └── login.scss ├── locales │ ├── zh_cn │ │ └── index.ts │ ├── zh_tw │ │ └── index.ts │ ├── en │ │ └── index.ts │ └── index.ts ├── vue.config.js ├── main.js ├── .hbuilderx │ └── launch.json └── index.html └── .gitignore /TUIKit/.eslintignore: -------------------------------------------------------------------------------- 1 | * 2 | -------------------------------------------------------------------------------- /sample/uni_modules/TencentCloud-Push/index.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json 3 | -------------------------------------------------------------------------------- /TUIKit/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./type-check"; 2 | -------------------------------------------------------------------------------- /sample/TUIKit/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./type-check"; 2 | -------------------------------------------------------------------------------- /TUIKit/debug/index.js: -------------------------------------------------------------------------------- 1 | export * from "./GenerateTestUserSig"; 2 | -------------------------------------------------------------------------------- /TUIKit/index.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /sample/TUIKit/debug/index.js: -------------------------------------------------------------------------------- 1 | export * from "./GenerateTestUserSig"; 2 | -------------------------------------------------------------------------------- /sample/TUIKit/index.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /TUIKit/vue.config.js: -------------------------------------------------------------------------------- 1 | const configureWebpack = {}; 2 | export { configureWebpack }; 3 | -------------------------------------------------------------------------------- /TUIKit/.npmignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json 3 | pnpm-lock.yaml 4 | dist 5 | **/dist/ -------------------------------------------------------------------------------- /sample/TUIKit/vue.config.js: -------------------------------------------------------------------------------- 1 | const configureWebpack = {}; 2 | export { configureWebpack }; 3 | -------------------------------------------------------------------------------- /TUIKit/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | strict-peer-dependencies=false 3 | # shamefully-hoist=true -------------------------------------------------------------------------------- /TUIKit/components/TUIGroup/manage-group/style/h5.scss: -------------------------------------------------------------------------------- 1 | .deleted-dialog { 2 | padding: 20%; 3 | } 4 | -------------------------------------------------------------------------------- /sample/TUIKit/.npmignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json 3 | pnpm-lock.yaml 4 | dist 5 | **/dist/ -------------------------------------------------------------------------------- /TUIKit/components/common/Loading/index.ts: -------------------------------------------------------------------------------- 1 | import Loading from './index.vue'; 2 | export default Loading; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | strict-peer-dependencies=false 3 | # shamefully-hoist=true -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIGroup/manage-group/style/h5.scss: -------------------------------------------------------------------------------- 1 | .deleted-dialog { 2 | padding: 20%; 3 | } 4 | -------------------------------------------------------------------------------- /TUIKit/components/common/Dialog/index.ts: -------------------------------------------------------------------------------- 1 | import Dialog from './index.vue'; 2 | 3 | export default Dialog; 4 | -------------------------------------------------------------------------------- /TUIKit/components/common/Transfer/index.ts: -------------------------------------------------------------------------------- 1 | import Transfer from './index.vue'; 2 | export default Transfer; 3 | -------------------------------------------------------------------------------- /sample/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.vue" { 2 | import Vue from 'vue' 3 | export default Vue 4 | } 5 | -------------------------------------------------------------------------------- /sample/static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/static/logo.png -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/style/wx.scss: -------------------------------------------------------------------------------- 1 | .tui-chat-wx { 2 | &-message-input { 3 | padding: 0; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /TUIKit/components/common/DatePicker/index.ts: -------------------------------------------------------------------------------- 1 | import DatePicker from './index.vue'; 2 | export default DatePicker; 3 | -------------------------------------------------------------------------------- /TUIKit/components/common/SwitchBar/index.ts: -------------------------------------------------------------------------------- 1 | import SwitchBar from './index.vue'; 2 | export default SwitchBar; 3 | -------------------------------------------------------------------------------- /TUIKit/static/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/static/message.png -------------------------------------------------------------------------------- /TUIKit/static/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/static/profile.png -------------------------------------------------------------------------------- /TUIKit/static/relation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/static/relation.png -------------------------------------------------------------------------------- /sample/TUIKit/components/common/Dialog/index.ts: -------------------------------------------------------------------------------- 1 | import Dialog from './index.vue'; 2 | 3 | export default Dialog; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/Loading/index.ts: -------------------------------------------------------------------------------- 1 | import Loading from './index.vue'; 2 | export default Loading; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/Transfer/index.ts: -------------------------------------------------------------------------------- 1 | import Transfer from './index.vue'; 2 | export default Transfer; 3 | -------------------------------------------------------------------------------- /sample/static/im-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/static/im-app.png -------------------------------------------------------------------------------- /sample/static/login-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/static/login-bg.png -------------------------------------------------------------------------------- /sample/static/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/static/message.png -------------------------------------------------------------------------------- /sample/static/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/static/profile.png -------------------------------------------------------------------------------- /sample/static/relation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/static/relation.png -------------------------------------------------------------------------------- /TUIKit/assets/icon/call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/call.png -------------------------------------------------------------------------------- /TUIKit/assets/icon/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/more.png -------------------------------------------------------------------------------- /TUIKit/assets/icon/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/star.png -------------------------------------------------------------------------------- /TUIKit/components/TUIContact/contact-list/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as FriendList } from './FriendList.vue'; 2 | -------------------------------------------------------------------------------- /TUIKit/components/common/BottomPopup/style/modal.scss: -------------------------------------------------------------------------------- 1 | .bottom-popup-modal { 2 | background: rgba(0, 0, 0, 0.5); 3 | } 4 | -------------------------------------------------------------------------------- /TUIKit/components/common/Navigation/index.ts: -------------------------------------------------------------------------------- 1 | import Navigation from './index.vue'; 2 | 3 | export default Navigation; 4 | -------------------------------------------------------------------------------- /TUIKit/components/common/SelectUser/index.ts: -------------------------------------------------------------------------------- 1 | import SelectUser from './index.vue'; 2 | 3 | export default SelectUser; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/style/wx.scss: -------------------------------------------------------------------------------- 1 | .tui-chat-wx { 2 | &-message-input { 3 | padding: 0; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/SwitchBar/index.ts: -------------------------------------------------------------------------------- 1 | import SwitchBar from './index.vue'; 2 | export default SwitchBar; 3 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/face-uni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/face-uni.png -------------------------------------------------------------------------------- /TUIKit/assets/icon/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/loading.gif -------------------------------------------------------------------------------- /TUIKit/assets/icon/loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/loading.png -------------------------------------------------------------------------------- /TUIKit/assets/icon/more-uni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/more-uni.png -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/words/index.ts: -------------------------------------------------------------------------------- 1 | import Words from "./index.vue"; 2 | export default Words; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input/index.ts: -------------------------------------------------------------------------------- 1 | import MessageInput from './index.vue'; 2 | export default MessageInput; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIGroup/create-group/index.ts: -------------------------------------------------------------------------------- 1 | import CreateGroup from './index.vue'; 2 | 3 | export default CreateGroup; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUIGroup/manage-group/index.ts: -------------------------------------------------------------------------------- 1 | import ManageGroup from './index.vue'; 2 | 3 | export default ManageGroup; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/search-input/index.ts: -------------------------------------------------------------------------------- 1 | import SearchInput from './index.vue'; 2 | export default SearchInput; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/search-more/index.ts: -------------------------------------------------------------------------------- 1 | import SearchMore from './index.vue'; 2 | 3 | export default SearchMore; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/search-result/index.ts: -------------------------------------------------------------------------------- 1 | import SearchResult from './index.vue'; 2 | export default SearchResult; 3 | -------------------------------------------------------------------------------- /TUIKit/components/common/BottomPopup/index.ts: -------------------------------------------------------------------------------- 1 | import BottomPopup from './index.vue'; 2 | 3 | export default BottomPopup; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/DatePicker/index.ts: -------------------------------------------------------------------------------- 1 | import DatePicker from './index.vue'; 2 | export default DatePicker; 3 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/camera-uni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/camera-uni.png -------------------------------------------------------------------------------- /TUIKit/assets/icon/image-uni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/image-uni.png -------------------------------------------------------------------------------- /TUIKit/assets/icon/star-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/star-light.png -------------------------------------------------------------------------------- /TUIKit/assets/icon/video-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/video-play.png -------------------------------------------------------------------------------- /TUIKit/assets/icon/video-uni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/video-uni.png -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/clearHistory/index.ts: -------------------------------------------------------------------------------- 1 | import Words from "./index.vue"; 2 | export default Words; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIContact/contact-info/index.ts: -------------------------------------------------------------------------------- 1 | import ContactInfo from './index.vue'; 2 | 3 | export default ContactInfo; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUIContact/contact-list/index.ts: -------------------------------------------------------------------------------- 1 | import ContactList from './index.vue'; 2 | 3 | export default ContactList; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUIContact/contact-search/index.ts: -------------------------------------------------------------------------------- 1 | import ContactHeader from './index.vue'; 2 | export default ContactHeader; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIContact/select-friend/index.ts: -------------------------------------------------------------------------------- 1 | import SelectFriend from './index.vue'; 2 | 3 | export default SelectFriend; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUIGroup/select-member/index.ts: -------------------------------------------------------------------------------- 1 | import SelectMember from './index.vue'; 2 | 3 | export default SelectMember; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/styles/common'; 2 | @import './web'; 3 | @import './h5'; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/words/index.ts: -------------------------------------------------------------------------------- 1 | import Words from "./index.vue"; 2 | export default Words; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input/index.ts: -------------------------------------------------------------------------------- 1 | import MessageInput from './index.vue'; 2 | export default MessageInput; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIContact/contact-list/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as FriendList } from './FriendList.vue'; 2 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/search-input/index.ts: -------------------------------------------------------------------------------- 1 | import SearchInput from './index.vue'; 2 | export default SearchInput; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/search-more/index.ts: -------------------------------------------------------------------------------- 1 | import SearchMore from './index.vue'; 2 | 3 | export default SearchMore; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/BottomPopup/index.ts: -------------------------------------------------------------------------------- 1 | import BottomPopup from './index.vue'; 2 | 3 | export default BottomPopup; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/BottomPopup/style/modal.scss: -------------------------------------------------------------------------------- 1 | .bottom-popup-modal { 2 | background: rgba(0, 0, 0, 0.5); 3 | } 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/Navigation/index.ts: -------------------------------------------------------------------------------- 1 | import Navigation from './index.vue'; 2 | 3 | export default Navigation; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/SelectUser/index.ts: -------------------------------------------------------------------------------- 1 | import SelectUser from './index.vue'; 2 | 3 | export default SelectUser; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/static/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/static/message.png -------------------------------------------------------------------------------- /sample/TUIKit/static/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/static/profile.png -------------------------------------------------------------------------------- /sample/TUIKit/static/relation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/static/relation.png -------------------------------------------------------------------------------- /TUIKit/assets/icon/close-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/close-image.png -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/evaluate/index.ts: -------------------------------------------------------------------------------- 1 | import Evaluate from './index.vue'; 2 | export default Evaluate; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/search-container/index.ts: -------------------------------------------------------------------------------- 1 | import SearchContainer from './index.vue'; 2 | export default SearchContainer; 3 | -------------------------------------------------------------------------------- /TUIKit/components/common/ImagePreviewer/index.ts: -------------------------------------------------------------------------------- 1 | import ImagePreviewer from './index.vue'; 2 | 3 | export default ImagePreviewer; 4 | -------------------------------------------------------------------------------- /TUIKit/static/message-selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/static/message-selected.png -------------------------------------------------------------------------------- /TUIKit/static/profile-selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/static/profile-selected.png -------------------------------------------------------------------------------- /TUIKit/static/relation-selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/static/relation-selected.png -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/call.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/call.png -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/more.png -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/star.png -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIContact/contact-info/index.ts: -------------------------------------------------------------------------------- 1 | import ContactInfo from './index.vue'; 2 | 3 | export default ContactInfo; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIContact/contact-list/index.ts: -------------------------------------------------------------------------------- 1 | import ContactList from './index.vue'; 2 | 3 | export default ContactList; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIContact/contact-search/index.ts: -------------------------------------------------------------------------------- 1 | import ContactHeader from './index.vue'; 2 | export default ContactHeader; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIGroup/create-group/index.ts: -------------------------------------------------------------------------------- 1 | import CreateGroup from './index.vue'; 2 | 3 | export default CreateGroup; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIGroup/manage-group/index.ts: -------------------------------------------------------------------------------- 1 | import ManageGroup from './index.vue'; 2 | 3 | export default ManageGroup; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIGroup/select-member/index.ts: -------------------------------------------------------------------------------- 1 | import SelectMember from './index.vue'; 2 | 3 | export default SelectMember; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/search-result/index.ts: -------------------------------------------------------------------------------- 1 | import SearchResult from './index.vue'; 2 | export default SearchResult; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/styles/common'; 2 | @import './web'; 3 | @import './h5'; 4 | -------------------------------------------------------------------------------- /sample/static/message-selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/static/message-selected.png -------------------------------------------------------------------------------- /sample/static/profile-selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/static/profile-selected.png -------------------------------------------------------------------------------- /sample/static/relation-selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/static/relation-selected.png -------------------------------------------------------------------------------- /sample/styles/profile/index.scss: -------------------------------------------------------------------------------- 1 | @import "../../TUIKit/assets/styles/common.scss"; 2 | @import "./web.scss"; 3 | @import "./h5.scss"; 4 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/downaload-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/TUIKit/assets/icon/downaload-image.png -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/file-upload/index.ts: -------------------------------------------------------------------------------- 1 | import ImageUpload from './index.vue'; 2 | export default ImageUpload; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIConversation/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/styles/common'; 2 | @import './web'; 3 | @import './color'; 4 | -------------------------------------------------------------------------------- /TUIKit/locales/en/emoji.ts: -------------------------------------------------------------------------------- 1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/en'; 2 | export default Emoji; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/face-uni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/face-uni.png -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/loading.gif -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/loading.png -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/more-uni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/more-uni.png -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/clearHistory/index.ts: -------------------------------------------------------------------------------- 1 | import Words from "./index.vue"; 2 | export default Words; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/evaluate/index.ts: -------------------------------------------------------------------------------- 1 | import Evaluate from './index.vue'; 2 | export default Evaluate; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIContact/select-friend/index.ts: -------------------------------------------------------------------------------- 1 | import SelectFriend from './index.vue'; 2 | 3 | export default SelectFriend; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/search-container/index.ts: -------------------------------------------------------------------------------- 1 | import SearchContainer from './index.vue'; 2 | export default SearchContainer; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/ImagePreviewer/index.ts: -------------------------------------------------------------------------------- 1 | import ImagePreviewer from './index.vue'; 2 | 3 | export default ImagePreviewer; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/album-upload/index.ts: -------------------------------------------------------------------------------- 1 | import AlbumUpload from './index.vue'; 2 | export default AlbumUpload; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/camera-upload/index.ts: -------------------------------------------------------------------------------- 1 | import CameraUpload from './index.vue'; 2 | export default CameraUpload; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/index.ts: -------------------------------------------------------------------------------- 1 | import EmojiPicker from './index.vue'; 2 | export default EmojiPicker; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/image-upload/index.ts: -------------------------------------------------------------------------------- 1 | import ImageUpload from './index.vue'; 2 | export default ImageUpload; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/index.ts: -------------------------------------------------------------------------------- 1 | import MessageInputToolbar from './index.vue'; 2 | export default MessageInputToolbar; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/user-selector/index.ts: -------------------------------------------------------------------------------- 1 | import UserSelector from './index.vue'; 2 | export default UserSelector; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/video-upload/index.ts: -------------------------------------------------------------------------------- 1 | import ImageUpload from './index.vue'; 2 | export default ImageUpload; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIContact/contact-info/style/index.scss: -------------------------------------------------------------------------------- 1 | @import "./web"; 2 | @import "./h5"; 3 | @import "../../../../assets/styles/common"; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUIContact/contact-list/style/index.scss: -------------------------------------------------------------------------------- 1 | @import './web'; 2 | @import './h5'; 3 | @import '../../../../assets/styles/common'; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/search-result/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import './web'; 3 | @import './h5'; 4 | -------------------------------------------------------------------------------- /TUIKit/components/common/BottomPopup/style/index.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../assets/styles/common"; 2 | @import "./h5"; 3 | @import "./modal"; 4 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_cn/emoji.ts: -------------------------------------------------------------------------------- 1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/zh_cn'; 2 | export default Emoji; 3 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_tw/emoji.ts: -------------------------------------------------------------------------------- 1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/zh_tw'; 2 | export default Emoji; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/camera-uni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/camera-uni.png -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/close-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/close-image.png -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/image-uni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/image-uni.png -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/star-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/star-light.png -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/video-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/video-play.png -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/video-uni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/video-uni.png -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIConversation/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/styles/common'; 2 | @import './web'; 3 | @import './color'; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/en/emoji.ts: -------------------------------------------------------------------------------- 1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/en'; 2 | export default Emoji; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/static/message-selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/static/message-selected.png -------------------------------------------------------------------------------- /sample/TUIKit/static/profile-selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/static/profile-selected.png -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/search-container/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import './web'; 3 | @import './h5'; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/album-upload/index.ts: -------------------------------------------------------------------------------- 1 | import AlbumUpload from './index.vue'; 2 | export default AlbumUpload; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/index.ts: -------------------------------------------------------------------------------- 1 | import EmojiPicker from './index.vue'; 2 | export default EmojiPicker; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/file-upload/index.ts: -------------------------------------------------------------------------------- 1 | import ImageUpload from './index.vue'; 2 | export default ImageUpload; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/image-upload/index.ts: -------------------------------------------------------------------------------- 1 | import ImageUpload from './index.vue'; 2 | export default ImageUpload; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/video-upload/index.ts: -------------------------------------------------------------------------------- 1 | import ImageUpload from './index.vue'; 2 | export default ImageUpload; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/BottomPopup/style/index.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../assets/styles/common"; 2 | @import "./h5"; 3 | @import "./modal"; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/static/relation-selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/static/relation-selected.png -------------------------------------------------------------------------------- /TUIKit/components/TUIConversation/conversation-header/index.ts: -------------------------------------------------------------------------------- 1 | import ConversationHeader from './index.vue'; 2 | 3 | export default ConversationHeader; 4 | -------------------------------------------------------------------------------- /TUIKit/debug/index.d.ts: -------------------------------------------------------------------------------- 1 | export function genTestUserSig({ SDKAppID: number, secretKey: string, userID: string }): any; 2 | export const EXPIRETIME: number; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/downaload-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TencentCloud/chat-uikit-uniapp/HEAD/sample/TUIKit/assets/icon/downaload-image.png -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/camera-upload/index.ts: -------------------------------------------------------------------------------- 1 | import CameraUpload from './index.vue'; 2 | export default CameraUpload; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/index.ts: -------------------------------------------------------------------------------- 1 | import MessageInputToolbar from './index.vue'; 2 | export default MessageInputToolbar; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/user-selector/index.ts: -------------------------------------------------------------------------------- 1 | import UserSelector from './index.vue'; 2 | export default UserSelector; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIContact/contact-info/style/index.scss: -------------------------------------------------------------------------------- 1 | @import "./web"; 2 | @import "./h5"; 3 | @import "../../../../assets/styles/common"; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIContact/contact-list/style/index.scss: -------------------------------------------------------------------------------- 1 | @import './web'; 2 | @import './h5'; 3 | @import '../../../../assets/styles/common'; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/search-container/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import './web'; 3 | @import './h5'; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/search-result/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import './web'; 3 | @import './h5'; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_cn/emoji.ts: -------------------------------------------------------------------------------- 1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/zh_cn'; 2 | export default Emoji; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_tw/emoji.ts: -------------------------------------------------------------------------------- 1 | import { default as Emoji } from '../../components/TUIChat/emoji-config/locales/zh_tw'; 2 | export default Emoji; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIConversation/conversation-network/index.ts: -------------------------------------------------------------------------------- 1 | import ConversationNetwork from './index.vue'; 2 | 3 | export default ConversationNetwork; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/search-result/search-result-default/index.ts: -------------------------------------------------------------------------------- 1 | import SearchResultDefault from './index.vue'; 2 | export default SearchResultDefault; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/search-result/search-result-loading/index.ts: -------------------------------------------------------------------------------- 1 | import SearchResultLoading from './index.vue'; 2 | export default SearchResultLoading; 3 | -------------------------------------------------------------------------------- /TUIKit/components/common/Dialog/style/dialog.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import "./color"; 3 | @import "./web"; 4 | @import "./h5"; 5 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIConversation/conversation-header/index.ts: -------------------------------------------------------------------------------- 1 | import ConversationHeader from './index.vue'; 2 | 3 | export default ConversationHeader; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/index.ts: -------------------------------------------------------------------------------- 1 | import TUIChat from './index.vue'; 2 | import Server from './server'; 3 | 4 | new Server(); 5 | 6 | export default TUIChat; 7 | -------------------------------------------------------------------------------- /TUIKit/components/TUIGroup/create-group/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import './color'; 3 | @import './web'; 4 | @import './h5'; 5 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/index.ts: -------------------------------------------------------------------------------- 1 | import TUISearch from './index.vue'; 2 | import Server from './server'; 3 | new Server(); 4 | 5 | export default TUISearch; 6 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIConversation/conversation-network/index.ts: -------------------------------------------------------------------------------- 1 | import ConversationNetwork from './index.vue'; 2 | 3 | export default ConversationNetwork; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/Dialog/style/dialog.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import "./color"; 3 | @import "./web"; 4 | @import "./h5"; 5 | -------------------------------------------------------------------------------- /sample/TUIKit/debug/index.d.ts: -------------------------------------------------------------------------------- 1 | export function genTestUserSig({ SDKAppID: number, secretKey: string, userID: string }): any; 2 | export const EXPIRETIME: number; 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/aiRobotManager/interface.ts: -------------------------------------------------------------------------------- 1 | export interface BreakAiRobotPayload { 2 | chatbotPlugin: number; 3 | src: number; 4 | msgKey: string; 5 | } 6 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/search-result/search-result-item/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../../assets/styles/common'; 2 | @import './web'; 3 | @import './h5'; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/index.ts: -------------------------------------------------------------------------------- 1 | import TUIChat from './index.vue'; 2 | import Server from './server'; 3 | 4 | new Server(); 5 | 6 | export default TUIChat; 7 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/index.ts: -------------------------------------------------------------------------------- 1 | import TUISearch from './index.vue'; 2 | import Server from './server'; 3 | new Server(); 4 | 5 | export default TUISearch; 6 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/search-result/search-result-default/index.ts: -------------------------------------------------------------------------------- 1 | import SearchResultDefault from './index.vue'; 2 | export default SearchResultDefault; 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/search-result/search-result-loading/index.ts: -------------------------------------------------------------------------------- 1 | import SearchResultLoading from './index.vue'; 2 | export default SearchResultLoading; 3 | -------------------------------------------------------------------------------- /sample/styles/login.scss: -------------------------------------------------------------------------------- 1 | @import "./color/login.scss"; 2 | @import "./web/login.scss"; 3 | @import "./h5/login.scss"; 4 | @import "../TUIKit/assets/styles/common.scss"; 5 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/style/index.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../../assets/styles/common"; 2 | @import "./web"; 3 | @import "./h5"; 4 | 5 | -------------------------------------------------------------------------------- /TUIKit/components/TUIContact/index.ts: -------------------------------------------------------------------------------- 1 | import TUIContact from './index.vue'; 2 | import Server from './server'; 3 | Server.getInstance(); 4 | 5 | export default TUIContact; 6 | -------------------------------------------------------------------------------- /TUIKit/components/TUIGroup/index.ts: -------------------------------------------------------------------------------- 1 | import TUIGroup from './index.vue'; 2 | import Server from './server'; 3 | 4 | Server.getInstance(); 5 | 6 | export default TUIGroup; 7 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIGroup/create-group/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import './color'; 3 | @import './web'; 4 | @import './h5'; 5 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/search-result/search-result-item/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../../assets/styles/common'; 2 | @import './web'; 3 | @import './h5'; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUIConversation/conversation-list/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import './color'; 3 | @import './web'; 4 | @import './h5'; 5 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/aiRobotManager/interface.ts: -------------------------------------------------------------------------------- 1 | export interface BreakAiRobotPayload { 2 | chatbotPlugin: number; 3 | src: number; 4 | msgKey: string; 5 | } 6 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/style/index.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../../assets/styles/common"; 2 | @import "./web"; 3 | @import "./h5"; 4 | 5 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIContact/index.ts: -------------------------------------------------------------------------------- 1 | import TUIContact from './index.vue'; 2 | import Server from './server'; 3 | Server.getInstance(); 4 | 5 | export default TUIContact; 6 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIGroup/index.ts: -------------------------------------------------------------------------------- 1 | import TUIGroup from './index.vue'; 2 | import Server from './server'; 3 | 4 | Server.getInstance(); 5 | 6 | export default TUIGroup; 7 | -------------------------------------------------------------------------------- /sample/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener-options.uts: -------------------------------------------------------------------------------- 1 | export type PushListenerOptions = { 2 | listener: (eventType: string, data: any) => void 3 | } 4 | -------------------------------------------------------------------------------- /sample/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener-options.uts: -------------------------------------------------------------------------------- 1 | export type PushListenerOptions = { 2 | listener: (eventType: string, data: any) => void 3 | } 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/aiRobotManager/index.ts: -------------------------------------------------------------------------------- 1 | import aiRobotManager from './aiRobotManager'; 2 | 3 | export * from './info'; 4 | 5 | export default aiRobotManager.getInstance(); 6 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/evaluate/style/index.scss: -------------------------------------------------------------------------------- 1 | @import "./color"; 2 | @import "./web"; 3 | @import "./h5"; 4 | @import "../../../../../assets/styles/common"; 5 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIConversation/conversation-list/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import './color'; 3 | @import './web'; 4 | @import './h5'; 5 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/down-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/right-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/aiRobotManager/info.ts: -------------------------------------------------------------------------------- 1 | import { SendMessageOptions } from "@tencentcloud/chat-uikit-engine-lite"; 2 | 3 | export const sendMessageOptions: SendMessageOptions = {}; 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUIConversation/entry.ts: -------------------------------------------------------------------------------- 1 | import { TUIChatKit } from '../../index.ts'; 2 | TUIChatKit?.init(); // Add optional chaining operator to fix sample main package integration errors 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/aiRobotManager/index.ts: -------------------------------------------------------------------------------- 1 | import aiRobotManager from './aiRobotManager'; 2 | 3 | export * from './info'; 4 | 5 | export default aiRobotManager.getInstance(); 6 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/evaluate/style/index.scss: -------------------------------------------------------------------------------- 1 | @import "./color"; 2 | @import "./web"; 3 | @import "./h5"; 4 | @import "../../../../../assets/styles/common"; 5 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/words/style/color.scss: -------------------------------------------------------------------------------- 1 | .words { 2 | background-color: #ffffff; 3 | &-header { 4 | &-close { 5 | color: #3370ff; 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/down-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/right-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/aiRobotManager/info.ts: -------------------------------------------------------------------------------- 1 | import { SendMessageOptions } from "@tencentcloud/chat-uikit-engine-lite"; 2 | 3 | export const sendMessageOptions: SendMessageOptions = {}; 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIConversation/entry.ts: -------------------------------------------------------------------------------- 1 | import { TUIChatKit } from '../../index.ts'; 2 | TUIChatKit?.init(); // Add optional chaining operator to fix sample main package integration errors 3 | -------------------------------------------------------------------------------- /TUIKit/components/common/Toast/type.ts: -------------------------------------------------------------------------------- 1 | const TOAST_TYPE = { 2 | SUCCESS: 'success', 3 | WARNING: 'warning', 4 | ERROR: 'error', 5 | NORMAL: 'normal', 6 | }; 7 | 8 | export default TOAST_TYPE; 9 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/words/style/color.scss: -------------------------------------------------------------------------------- 1 | .words { 2 | background-color: #ffffff; 3 | &-header { 4 | &-close { 5 | color: #3370ff; 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /TUIKit/components/TUIConversation/index.ts: -------------------------------------------------------------------------------- 1 | import TUIConversation from "./index.vue"; 2 | import TUIConversationServer from "./server"; 3 | new TUIConversationServer(); 4 | 5 | export default TUIConversation; 6 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/Toast/type.ts: -------------------------------------------------------------------------------- 1 | const TOAST_TYPE = { 2 | SUCCESS: 'success', 3 | WARNING: 'warning', 4 | ERROR: 'error', 5 | NORMAL: 'normal', 6 | }; 7 | 8 | export default TOAST_TYPE; 9 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/words/style/index.scss: -------------------------------------------------------------------------------- 1 | @import url("../../../../../assets/styles/common.scss"); 2 | @import "./color.scss"; 3 | @import "./web.scss"; 4 | @import "./h5.scss"; 5 | 6 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/index.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../../assets/styles/common"; 2 | @import "./color"; 3 | @import "./web"; 4 | @import "./h5"; 5 | @import "./uni"; 6 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/words/style/index.scss: -------------------------------------------------------------------------------- 1 | @import url("../../../../../assets/styles/common.scss"); 2 | @import "./color.scss"; 3 | @import "./web.scss"; 4 | @import "./h5.scss"; 5 | 6 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIConversation/index.ts: -------------------------------------------------------------------------------- 1 | import TUIConversation from "./index.vue"; 2 | import TUIConversationServer from "./server"; 3 | new TUIConversationServer(); 4 | 5 | export default TUIConversation; 6 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/color.scss: -------------------------------------------------------------------------------- 1 | .toolbar-item-container { 2 | &-dialog { 3 | background: #fff; 4 | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/style/uni.scss: -------------------------------------------------------------------------------- 1 | .tui-chat-uni { 2 | &-message-input { 3 | max-height: 370px; 4 | padding: 10px; 5 | } 6 | 7 | &-message-input-toolbar { 8 | z-index: 100; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/h5.scss: -------------------------------------------------------------------------------- 1 | .toolbar-item-container-h5 { 2 | &-dialog { 3 | position: static !important; 4 | width: 100%; 5 | box-shadow: none; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/index.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../../assets/styles/common"; 2 | @import "./color"; 3 | @import "./web"; 4 | @import "./h5"; 5 | @import "./uni"; 6 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/style/uni.scss: -------------------------------------------------------------------------------- 1 | .tui-chat-uni { 2 | &-message-input { 3 | max-height: 370px; 4 | padding: 10px; 5 | } 6 | 7 | &-message-input-toolbar { 8 | z-index: 100; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/color.scss: -------------------------------------------------------------------------------- 1 | .toolbar-item-container { 2 | &-dialog { 3 | background: #fff; 4 | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/h5.scss: -------------------------------------------------------------------------------- 1 | .toolbar-item-container-h5 { 2 | &-dialog { 3 | position: static !important; 4 | width: 100%; 5 | box-shadow: none; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /sample/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback-options.uts: -------------------------------------------------------------------------------- 1 | export type PushCallbackOptions = { 2 | apiName: string 3 | success: (res?: any) => void 4 | fail: (errCode: number, errMsg: string) => void 5 | } 6 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/offlinePushInfoManager/index.ts: -------------------------------------------------------------------------------- 1 | import OfflinePushInfoManager from './offlinePushInfoManager'; 2 | 3 | export * from './const'; 4 | export * from './interface'; 5 | 6 | export default OfflinePushInfoManager.getInstance(); 7 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/offlinePushInfoManager/index.ts: -------------------------------------------------------------------------------- 1 | import OfflinePushInfoManager from './offlinePushInfoManager'; 2 | 3 | export * from './const'; 4 | export * from './interface'; 5 | 6 | export default OfflinePushInfoManager.getInstance(); 7 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_cn/evaluate.ts: -------------------------------------------------------------------------------- 1 | const Evaluate = { 2 | "请对本次服务进行评价": "请对本次服务进行评价", 3 | "提交评价": "提交评价", 4 | "服务评价工具": "服务评价工具", 5 | "使用": "使用", 6 | "自定义消息": "自定义消息", 7 | "搭建": "搭建", 8 | "星": "星" 9 | } 10 | 11 | export default Evaluate; 12 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_tw/evaluate.ts: -------------------------------------------------------------------------------- 1 | const Evaluate = { 2 | "请对本次服务进行评价": "請對本次服務進行評價", 3 | "提交评价": "提交評價", 4 | "服务评价工具": "服務評價工具", 5 | "使用": "使用", 6 | "自定义消息": "自定義消息", 7 | "搭建": "搭建", 8 | "星": "星" 9 | } 10 | 11 | export default Evaluate; 12 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_cn/evaluate.ts: -------------------------------------------------------------------------------- 1 | const Evaluate = { 2 | "请对本次服务进行评价": "请对本次服务进行评价", 3 | "提交评价": "提交评价", 4 | "服务评价工具": "服务评价工具", 5 | "使用": "使用", 6 | "自定义消息": "自定义消息", 7 | "搭建": "搭建", 8 | "星": "星" 9 | } 10 | 11 | export default Evaluate; 12 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_tw/evaluate.ts: -------------------------------------------------------------------------------- 1 | const Evaluate = { 2 | "请对本次服务进行评价": "請對本次服務進行評價", 3 | "提交评价": "提交評價", 4 | "服务评价工具": "服務評價工具", 5 | "使用": "使用", 6 | "自定义消息": "自定義消息", 7 | "搭建": "搭建", 8 | "星": "星" 9 | } 10 | 11 | export default Evaluate; 12 | -------------------------------------------------------------------------------- /TUIKit/components/TUIConversation/style/color.scss: -------------------------------------------------------------------------------- 1 | .tui-conversation { 2 | background: #fff; 3 | } 4 | 5 | .network { 6 | &-content { 7 | font-family: PingFangSC-Regular; 8 | font-weight: 400; 9 | color: #e54545; 10 | letter-spacing: 0; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIConversation/style/color.scss: -------------------------------------------------------------------------------- 1 | .tui-conversation { 2 | background: #fff; 3 | } 4 | 5 | .network { 6 | &-content { 7 | font-family: PingFangSC-Regular; 8 | font-weight: 400; 9 | color: #e54545; 10 | letter-spacing: 0; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-list/style/index.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../assets/styles/common"; 2 | @import "./color"; 3 | @import "./web"; 4 | @import "./h5"; 5 | 6 | :not(not) { 7 | display: flex; 8 | flex-direction: column; 9 | box-sizing: border-box; 10 | min-width: 0; 11 | } -------------------------------------------------------------------------------- /sample/uni_modules/TencentCloud-Push/utssdk/app-ios/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "deploymentTarget": "9.0", 3 | "dependencies-pods": [ 4 | { 5 | "name": "TXIMSDK_Plus_iOS_XCFramework", 6 | "version": "8.5.6864" 7 | }, { 8 | "name": "TIMPush", 9 | "version": "8.5.6864" 10 | }] 11 | } 12 | -------------------------------------------------------------------------------- /TUIKit/locales/en/evaluate.ts: -------------------------------------------------------------------------------- 1 | const Evaluate = { 2 | "请对本次服务进行评价": "Please rate this service", 3 | "提交评价": "Feedback", 4 | "服务评价工具": "Service rate tool", 5 | "使用": "Build with", 6 | "自定义消息": "Custom message", 7 | "搭建": "", 8 | "星": "Star" 9 | } 10 | 11 | export default Evaluate; 12 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-list/style/index.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../assets/styles/common"; 2 | @import "./color"; 3 | @import "./web"; 4 | @import "./h5"; 5 | 6 | :not(not) { 7 | display: flex; 8 | flex-direction: column; 9 | box-sizing: border-box; 10 | min-width: 0; 11 | } -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/styles/common'; 2 | @import './web'; 3 | @import './h5'; 4 | @import './uni'; 5 | @import './wx'; 6 | 7 | :not(not) { 8 | display: flex; 9 | flex-direction: column; 10 | box-sizing: border-box; 11 | min-width: 0; 12 | } 13 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/styles/common'; 2 | @import './web'; 3 | @import './h5'; 4 | @import './uni'; 5 | @import './wx'; 6 | 7 | :not(not) { 8 | display: flex; 9 | flex-direction: column; 10 | box-sizing: border-box; 11 | min-width: 0; 12 | } 13 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/en/evaluate.ts: -------------------------------------------------------------------------------- 1 | const Evaluate = { 2 | "请对本次服务进行评价": "Please rate this service", 3 | "提交评价": "Feedback", 4 | "服务评价工具": "Service rate tool", 5 | "使用": "Build with", 6 | "自定义消息": "Custom message", 7 | "搭建": "", 8 | "星": "Star" 9 | } 10 | 11 | export default Evaluate; 12 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/offlinePushInfoManager/info.ts: -------------------------------------------------------------------------------- 1 | import { IChatOfflinePushInfo, ICallOfflinePushInfo } from './interface'; 2 | 3 | export const chatOfflinePushInfo: IChatOfflinePushInfo = { 4 | androidInfo: {}, 5 | apnsInfo: {}, 6 | }; 7 | 8 | export const callOfflinePushInfo: ICallOfflinePushInfo = {}; 9 | -------------------------------------------------------------------------------- /sample/locales/zh_cn/index.ts: -------------------------------------------------------------------------------- 1 | import Login from './login.json'; 2 | 3 | const messages = { 4 | zh_cn: { 5 | 当前语言: '简体中文', 6 | 即时通信: '即时通信', 7 | 即时通信IM: '即时通信IM', 8 | 社交娱乐: '社交娱乐', 9 | 腾讯云: '腾讯云', 10 | 使用指引: '使用指引', 11 | Login, 12 | }, 13 | }; 14 | 15 | export default messages; 16 | -------------------------------------------------------------------------------- /sample/locales/zh_tw/index.ts: -------------------------------------------------------------------------------- 1 | import Login from './login.json'; 2 | 3 | const messages = { 4 | zh_tw: { 5 | 当前语言: '繁體中文', 6 | 即时通信: '即時通信', 7 | 即时通信IM: '即時通信IM', 8 | 社交娱乐: '社交娛樂', 9 | 腾讯云: '騰訊雲', 10 | 使用指引: '使用指引', 11 | Login, 12 | }, 13 | }; 14 | 15 | export default messages; 16 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/offlinePushInfoManager/info.ts: -------------------------------------------------------------------------------- 1 | import { IChatOfflinePushInfo, ICallOfflinePushInfo } from './interface'; 2 | 3 | export const chatOfflinePushInfo: IChatOfflinePushInfo = { 4 | androidInfo: {}, 5 | apnsInfo: {}, 6 | }; 7 | 8 | export const callOfflinePushInfo: ICallOfflinePushInfo = {}; 9 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-list/style/h5.scss: -------------------------------------------------------------------------------- 1 | .tui-chat-h5 { 2 | flex: 1; 3 | position: static; 4 | 5 | .tui-chat-main { 6 | .tui-message-list { 7 | height: 100%; 8 | } 9 | 10 | .message-more { 11 | color: #999; 12 | cursor: pointer; 13 | font-size: 14px; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /sample/uni_modules/TencentCloud-Push/utssdk/app-ios/UTS.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | 8 | 9 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/uploadToolkit/index.ts: -------------------------------------------------------------------------------- 1 | export { useUpload, genSourceType } from './useUpload'; 2 | export { 3 | UploadType, 4 | SourceType, 5 | PlatformType, 6 | ThemeType, 7 | MediaType, 8 | ToolbarTitle, 9 | } from './constants'; 10 | export * from './constants'; 11 | export * from './utils'; 12 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-list/style/h5.scss: -------------------------------------------------------------------------------- 1 | .tui-chat-h5 { 2 | flex: 1; 3 | position: static; 4 | 5 | .tui-chat-main { 6 | .tui-message-list { 7 | height: 100%; 8 | } 9 | 10 | .message-more { 11 | color: #999; 12 | cursor: pointer; 13 | font-size: 14px; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /sample/locales/en/index.ts: -------------------------------------------------------------------------------- 1 | import Login from './login.json'; 2 | 3 | const messages = { 4 | en: { 5 | 当前语言: 'English', 6 | 即时通信: 'Chat', 7 | 即时通信IM: 'Chat', 8 | 社交娱乐: 'Entertaining & Socializing', 9 | 腾讯云: 'Tencent Cloud', 10 | 使用指引: 'User Guide', 11 | Login, 12 | } 13 | } 14 | 15 | export default messages 16 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/web-view.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 14 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/uploadToolkit/index.ts: -------------------------------------------------------------------------------- 1 | export { useUpload, genSourceType } from './useUpload'; 2 | export { 3 | UploadType, 4 | SourceType, 5 | PlatformType, 6 | ThemeType, 7 | MediaType, 8 | ToolbarTitle, 9 | } from './constants'; 10 | export * from './constants'; 11 | export * from './utils'; 12 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/web-view.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 14 | -------------------------------------------------------------------------------- /TUIKit/components/common/Transfer/style/transfer.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import "./color"; 3 | @import "./web"; 4 | @import "./h5"; 5 | 6 | .icon-unselected { 7 | width: 18px; 8 | height: 18px; 9 | background: #FFF; 10 | border: 1px solid #DDD; 11 | border-radius: 11px; 12 | box-sizing: border-box; 13 | } 14 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/Transfer/style/transfer.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import "./color"; 3 | @import "./web"; 4 | @import "./h5"; 5 | 6 | .icon-unselected { 7 | width: 18px; 8 | height: 18px; 9 | background: #FFF; 10 | border: 1px solid #DDD; 11 | border-radius: 11px; 12 | box-sizing: border-box; 13 | } 14 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/minus.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /TUIKit/locales/index.ts: -------------------------------------------------------------------------------- 1 | 2 | import en from './en'; 3 | import zh_cn from './zh_cn'; 4 | import zh_tw from './zh_tw'; 5 | 6 | export interface ILanguageResources { 7 | [key: string]: string | ILanguageResources; 8 | } 9 | 10 | const messages: Record = { 11 | ...en, 12 | ...zh_cn, 13 | ...zh_tw, 14 | }; 15 | 16 | export default messages; 17 | -------------------------------------------------------------------------------- /TUIKit/utils/enableSampleTaskStatus.ts: -------------------------------------------------------------------------------- 1 | import { TUIStore, StoreName } from "@tencentcloud/chat-uikit-engine-lite"; 2 | export function enableSampleTaskStatus(taskKey: string) { 3 | const tasks = TUIStore.getData(StoreName.APP, "tasks"); 4 | if (taskKey in tasks && !tasks[taskKey]) { 5 | tasks[taskKey] = true; 6 | TUIStore.update(StoreName.APP, "tasks", tasks); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/minus.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /TUIKit/adapter-vue.ts: -------------------------------------------------------------------------------- 1 | let vueVersion: number; 2 | let framework = 'vue2'; 3 | // #ifndef VUE3 4 | export * from '@vue/composition-api'; 5 | vueVersion = 2; 6 | // #endif 7 | 8 | // #ifdef VUE3 9 | export * from 'vue'; 10 | vueVersion = 3; 11 | framework = 'vue3'; 12 | // #endif 13 | console.warn(`[adapter-vue]: vue version is ${vueVersion}`); 14 | export { vueVersion, framework }; 15 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/index.ts: -------------------------------------------------------------------------------- 1 | 2 | import en from './en'; 3 | import zh_cn from './zh_cn'; 4 | import zh_tw from './zh_tw'; 5 | 6 | export interface ILanguageResources { 7 | [key: string]: string | ILanguageResources; 8 | } 9 | 10 | const messages: Record = { 11 | ...en, 12 | ...zh_cn, 13 | ...zh_tw, 14 | }; 15 | 16 | export default messages; 17 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/aiRobotManager/const.ts: -------------------------------------------------------------------------------- 1 | import { BreakAiRobotPayload } from './interface'; 2 | 3 | export const ChatbotPlugin = 2; 4 | export const ChatbotBreakMsgType = 22; 5 | export const ChatbotErrorMsgType = 23; 6 | 7 | export const breakAiRobotPayload: BreakAiRobotPayload = { 8 | chatbotPlugin: ChatbotPlugin, 9 | src: ChatbotBreakMsgType, 10 | msgKey: '', 11 | }; 12 | -------------------------------------------------------------------------------- /sample/TUIKit/utils/enableSampleTaskStatus.ts: -------------------------------------------------------------------------------- 1 | import { TUIStore, StoreName } from "@tencentcloud/chat-uikit-engine-lite"; 2 | export function enableSampleTaskStatus(taskKey: string) { 3 | const tasks = TUIStore.getData(StoreName.APP, "tasks"); 4 | if (taskKey in tasks && !tasks[taskKey]) { 5 | tasks[taskKey] = true; 6 | TUIStore.update(StoreName.APP, "tasks", tasks); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sample/TUIKit/adapter-vue.ts: -------------------------------------------------------------------------------- 1 | let vueVersion: number; 2 | let framework = 'vue2'; 3 | // #ifndef VUE3 4 | export * from '@vue/composition-api'; 5 | vueVersion = 2; 6 | // #endif 7 | 8 | // #ifdef VUE3 9 | export * from 'vue'; 10 | vueVersion = 3; 11 | framework = 'vue3'; 12 | // #endif 13 | console.warn(`[adapter-vue]: vue version is ${vueVersion}`); 14 | export { vueVersion, framework }; 15 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/break-btn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/aiRobotManager/const.ts: -------------------------------------------------------------------------------- 1 | import { BreakAiRobotPayload } from './interface'; 2 | 3 | export const ChatbotPlugin = 2; 4 | export const ChatbotBreakMsgType = 22; 5 | export const ChatbotErrorMsgType = 23; 6 | 7 | export const breakAiRobotPayload: BreakAiRobotPayload = { 8 | chatbotPlugin: ChatbotPlugin, 9 | src: ChatbotBreakMsgType, 10 | msgKey: '', 11 | }; 12 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/break-btn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/break.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/left-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/left-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/break.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /TUIKit/components/TUIContact/contact-list/style/h5.scss: -------------------------------------------------------------------------------- 1 | .tui-contact-list-h5 { 2 | .tui-contact-list-item { 3 | .tui-contact-list-item-header { 4 | cursor: none; 5 | } 6 | 7 | .tui-contact-list-item-header:active, 8 | .tui-contact-list-item-main-item:active { 9 | background-color: #eef0f3; 10 | } 11 | } 12 | 13 | .tui-contact-list-group-title { 14 | font-size: 13px; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /sample/vue.config.js: -------------------------------------------------------------------------------- 1 | const ScriptSetup = require('unplugin-vue2-script-setup/webpack').default; 2 | module.exports = { 3 | parallel: false, 4 | configureWebpack: { 5 | plugins: [ 6 | ScriptSetup({ 7 | /* options */ 8 | }), 9 | ], 10 | }, 11 | chainWebpack(config) { 12 | // disable type check and let `vue-tsc` handles it 13 | config.plugins.delete('fork-ts-checker'); 14 | }, 15 | }; 16 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIContact/contact-list/style/h5.scss: -------------------------------------------------------------------------------- 1 | .tui-contact-list-h5 { 2 | .tui-contact-list-item { 3 | .tui-contact-list-item-header { 4 | cursor: none; 5 | } 6 | 7 | .tui-contact-list-item-header:active, 8 | .tui-contact-list-item-main-item:active { 9 | background-color: #eef0f3; 10 | } 11 | } 12 | 13 | .tui-contact-list-group-title { 14 | font-size: 13px; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/emoji-config/custom-emoji.ts: -------------------------------------------------------------------------------- 1 | import { IEmojiGroupList } from '../../../interface'; 2 | 3 | /** 4 | * Custom big emoji 5 | */ 6 | export const CUSTOM_BIG_EMOJI_URL: string = ''; 7 | 8 | export const CUSTOM_BIG_EMOJI_GROUP_LIST: IEmojiGroupList = []; 9 | 10 | /** 11 | * Custom basic emoji 12 | */ 13 | export const CUSTOM_BASIC_EMOJI_URL: string = ''; 14 | 15 | export const CUSTOM_BASIC_EMOJI_URL_MAPPING: Record = {}; 16 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/emoji-config/custom-emoji.ts: -------------------------------------------------------------------------------- 1 | import { IEmojiGroupList } from '../../../interface'; 2 | 3 | /** 4 | * Custom big emoji 5 | */ 6 | export const CUSTOM_BIG_EMOJI_URL: string = ''; 7 | 8 | export const CUSTOM_BIG_EMOJI_GROUP_LIST: IEmojiGroupList = []; 9 | 10 | /** 11 | * Custom basic emoji 12 | */ 13 | export const CUSTOM_BASIC_EMOJI_URL: string = ''; 14 | 15 | export const CUSTOM_BASIC_EMOJI_URL_MAPPING: Record = {}; 16 | -------------------------------------------------------------------------------- /TUIKit/components/common/DatePicker/date-picker.ts: -------------------------------------------------------------------------------- 1 | import { Dayjs } from 'dayjs'; 2 | 3 | export type DateCellType = 4 | | 'normal' 5 | | 'today' 6 | | 'week' 7 | | 'next-month' 8 | | 'prev-month'; 9 | export interface DateCell { 10 | text?: number; 11 | disabled?: boolean; 12 | isSelected?: boolean; 13 | isSelectedStart?: boolean; 14 | isSelectedEnd?: boolean; 15 | isInRange?: boolean; 16 | isCurrent?: boolean; 17 | date: typeof Dayjs; 18 | type?: DateCellType; 19 | } 20 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_cn/words.ts: -------------------------------------------------------------------------------- 1 | const Words = { 2 | "常用语-快捷回复工具": "常用语-快捷回复工具", 3 | "在吗?在吗?在吗?重要的话说三遍。": "在吗?在吗?在吗?重要的话说三遍。", 4 | "好久没聊天了,快来和我说说话~": "好久没聊天了,快来和我说说话~", 5 | "好的,就这么说定了。": "好的,就这么说定了。", 6 | "感恩的心,感谢有你。": "感恩的心,感谢有你。", 7 | "糟糕!是心动的感觉!": "糟糕!是心动的感觉!", 8 | "心疼地抱抱自己,我太难了!": "心疼地抱抱自己,我太难了!", 9 | "没关系,别在意,事情过去就过去了。": "没关系,别在意,事情过去就过去了。", 10 | "早上好,今天也是让人期待的一天呢!": "早上好,今天也是让人期待的一天呢!", 11 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "熬夜有什么用,又没人陪你聊天,早点休息吧。" 12 | } 13 | 14 | export default Words; 15 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_tw/words.ts: -------------------------------------------------------------------------------- 1 | const Words = { 2 | "常用语-快捷回复工具": "常用語-快捷回覆工具", 3 | "在吗?在吗?在吗?重要的话说三遍。": "在嗎?在嗎?在嗎?重要的話說三遍。", 4 | "好久没聊天了,快来和我说说话~": "好久沒聊天了,快來和我說說話~", 5 | "好的,就这么说定了。": "好的,就這麼說定了。", 6 | "感恩的心,感谢有你。": "感恩的心,感謝有你。", 7 | "糟糕!是心动的感觉!": "糟糕!是心動的感覺!", 8 | "心疼地抱抱自己,我太难了!": "心疼地抱抱自己,我太難了!", 9 | "没关系,别在意,事情过去就过去了。": "沒關係,別在意,事情過去就過去了。", 10 | "早上好,今天也是让人期待的一天呢!": "早上好,今天也是讓人期待的一天呢!", 11 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "熬夜有什麼用,又沒人陪你聊天,早點休息吧。" 12 | } 13 | 14 | export default Words; 15 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/DatePicker/date-picker.ts: -------------------------------------------------------------------------------- 1 | import { Dayjs } from 'dayjs'; 2 | 3 | export type DateCellType = 4 | | 'normal' 5 | | 'today' 6 | | 'week' 7 | | 'next-month' 8 | | 'prev-month'; 9 | export interface DateCell { 10 | text?: number; 11 | disabled?: boolean; 12 | isSelected?: boolean; 13 | isSelectedStart?: boolean; 14 | isSelectedEnd?: boolean; 15 | isInRange?: boolean; 16 | isCurrent?: boolean; 17 | date: typeof Dayjs; 18 | type?: DateCellType; 19 | } 20 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_cn/component.ts: -------------------------------------------------------------------------------- 1 | const components = { 2 | "取消": "取消", 3 | "完成": "完成", 4 | "已选中": "已选中", 5 | "人": "人", 6 | "保存": "保存", 7 | "请输入userID": "请输入userID", 8 | "请输入groupID": "请输入groupID", 9 | "确定": "确定", 10 | "全选": "全选", 11 | "已在群聊中": "已在群聊中", 12 | "查看更多": "查看更多", 13 | "图片 url 不存在": "图片 url 不存在", 14 | "已取消": "已取消", 15 | "获取权限失败": "获取权限失败", 16 | "已保存至相册": "已保存至相册", 17 | "图片下载失败": "图片下载失败", 18 | "暂不支持下载此类型图片": "暂不支持下载此类型图片", 19 | } 20 | 21 | export default components; 22 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_cn/words.ts: -------------------------------------------------------------------------------- 1 | const Words = { 2 | "常用语-快捷回复工具": "常用语-快捷回复工具", 3 | "在吗?在吗?在吗?重要的话说三遍。": "在吗?在吗?在吗?重要的话说三遍。", 4 | "好久没聊天了,快来和我说说话~": "好久没聊天了,快来和我说说话~", 5 | "好的,就这么说定了。": "好的,就这么说定了。", 6 | "感恩的心,感谢有你。": "感恩的心,感谢有你。", 7 | "糟糕!是心动的感觉!": "糟糕!是心动的感觉!", 8 | "心疼地抱抱自己,我太难了!": "心疼地抱抱自己,我太难了!", 9 | "没关系,别在意,事情过去就过去了。": "没关系,别在意,事情过去就过去了。", 10 | "早上好,今天也是让人期待的一天呢!": "早上好,今天也是让人期待的一天呢!", 11 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "熬夜有什么用,又没人陪你聊天,早点休息吧。" 12 | } 13 | 14 | export default Words; 15 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_tw/words.ts: -------------------------------------------------------------------------------- 1 | const Words = { 2 | "常用语-快捷回复工具": "常用語-快捷回覆工具", 3 | "在吗?在吗?在吗?重要的话说三遍。": "在嗎?在嗎?在嗎?重要的話說三遍。", 4 | "好久没聊天了,快来和我说说话~": "好久沒聊天了,快來和我說說話~", 5 | "好的,就这么说定了。": "好的,就這麼說定了。", 6 | "感恩的心,感谢有你。": "感恩的心,感謝有你。", 7 | "糟糕!是心动的感觉!": "糟糕!是心動的感覺!", 8 | "心疼地抱抱自己,我太难了!": "心疼地抱抱自己,我太難了!", 9 | "没关系,别在意,事情过去就过去了。": "沒關係,別在意,事情過去就過去了。", 10 | "早上好,今天也是让人期待的一天呢!": "早上好,今天也是讓人期待的一天呢!", 11 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "熬夜有什麼用,又沒人陪你聊天,早點休息吧。" 12 | } 13 | 14 | export default Words; 15 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_tw/component.ts: -------------------------------------------------------------------------------- 1 | const components = { 2 | "取消": "取消", 3 | "完成": "完成", 4 | "已选中": "已選中", 5 | "人": "人", 6 | "保存": "保存", 7 | "请输入userID": "請輸入userID", 8 | "请输入groupID": "請輸入groupID", 9 | "确定": "確定", 10 | "全选": "全選", 11 | "已在群聊中": "已在群聊中", 12 | "查看更多": "查看更多", 13 | "图片 url 不存在": "圖片 url 不存在", 14 | "已取消": "已取消", 15 | "获取权限失败": "獲取權限失敗", 16 | "已保存至相册": "已保存至相冊", 17 | "图片下载失败": "圖片下載失敗", 18 | "暂不支持下载此类型图片": "暫不支持下載此類型圖片", 19 | }; 20 | 21 | export default components; 22 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_cn/component.ts: -------------------------------------------------------------------------------- 1 | const components = { 2 | "取消": "取消", 3 | "完成": "完成", 4 | "已选中": "已选中", 5 | "人": "人", 6 | "保存": "保存", 7 | "请输入userID": "请输入userID", 8 | "请输入groupID": "请输入groupID", 9 | "确定": "确定", 10 | "全选": "全选", 11 | "已在群聊中": "已在群聊中", 12 | "查看更多": "查看更多", 13 | "图片 url 不存在": "图片 url 不存在", 14 | "已取消": "已取消", 15 | "获取权限失败": "获取权限失败", 16 | "已保存至相册": "已保存至相册", 17 | "图片下载失败": "图片下载失败", 18 | "暂不支持下载此类型图片": "暂不支持下载此类型图片", 19 | } 20 | 21 | export default components; 22 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_tw/component.ts: -------------------------------------------------------------------------------- 1 | const components = { 2 | "取消": "取消", 3 | "完成": "完成", 4 | "已选中": "已選中", 5 | "人": "人", 6 | "保存": "保存", 7 | "请输入userID": "請輸入userID", 8 | "请输入groupID": "請輸入groupID", 9 | "确定": "確定", 10 | "全选": "全選", 11 | "已在群聊中": "已在群聊中", 12 | "查看更多": "查看更多", 13 | "图片 url 不存在": "圖片 url 不存在", 14 | "已取消": "已取消", 15 | "获取权限失败": "獲取權限失敗", 16 | "已保存至相册": "已保存至相冊", 17 | "图片下载失败": "圖片下載失敗", 18 | "暂不支持下载此类型图片": "暫不支持下載此類型圖片", 19 | }; 20 | 21 | export default components; 22 | -------------------------------------------------------------------------------- /TUIKit/components/index.ts: -------------------------------------------------------------------------------- 1 | import TUIChat from "./TUIChat"; 2 | import TUIConversation from "./TUIConversation"; 3 | import TUISearch from "./TUISearch"; 4 | import TUIContact from "./TUIContact"; 5 | import TUIGroup from "./TUIGroup"; 6 | 7 | const TUIComponents = { 8 | TUIChat, 9 | TUIConversation, 10 | TUIContact, 11 | TUISearch, 12 | TUIGroup 13 | }; 14 | 15 | export default TUIComponents; 16 | 17 | export { 18 | TUIChat, 19 | TUIConversation, 20 | TUIContact, 21 | TUISearch, 22 | TUIGroup, 23 | }; 24 | -------------------------------------------------------------------------------- /sample/TUIKit/components/index.ts: -------------------------------------------------------------------------------- 1 | import TUIChat from "./TUIChat"; 2 | import TUIConversation from "./TUIConversation"; 3 | import TUISearch from "./TUISearch"; 4 | import TUIContact from "./TUIContact"; 5 | import TUIGroup from "./TUIGroup"; 6 | 7 | const TUIComponents = { 8 | TUIChat, 9 | TUIConversation, 10 | TUIContact, 11 | TUISearch, 12 | TUIGroup 13 | }; 14 | 15 | export default TUIComponents; 16 | 17 | export { 18 | TUIChat, 19 | TUIConversation, 20 | TUIContact, 21 | TUISearch, 22 | TUIGroup, 23 | }; 24 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/utils/wordsList.ts: -------------------------------------------------------------------------------- 1 | export const wordsList = [ 2 | { 3 | value: '在吗?在吗?在吗?重要的话说三遍。', 4 | }, 5 | { 6 | value: '好久没聊天了,快来和我说说话~', 7 | }, 8 | { 9 | value: '好的,就这么说定了。', 10 | }, 11 | { 12 | value: '感恩的心,感谢有你。', 13 | }, 14 | { 15 | value: '糟糕!是心动的感觉!', 16 | }, 17 | { 18 | value: '心疼地抱抱自己,我太难了!', 19 | }, 20 | { 21 | value: '没关系,别在意,事情过去就过去了。', 22 | }, 23 | { 24 | value: '早上好,今天也是让人期待的一天呢!', 25 | }, 26 | { 27 | value: '熬夜有什么用,又没人陪你聊天,早点休息吧。', 28 | }, 29 | ]; 30 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/utils/wordsList.ts: -------------------------------------------------------------------------------- 1 | export const wordsList = [ 2 | { 3 | value: '在吗?在吗?在吗?重要的话说三遍。', 4 | }, 5 | { 6 | value: '好久没聊天了,快来和我说说话~', 7 | }, 8 | { 9 | value: '好的,就这么说定了。', 10 | }, 11 | { 12 | value: '感恩的心,感谢有你。', 13 | }, 14 | { 15 | value: '糟糕!是心动的感觉!', 16 | }, 17 | { 18 | value: '心疼地抱抱自己,我太难了!', 19 | }, 20 | { 21 | value: '没关系,别在意,事情过去就过去了。', 22 | }, 23 | { 24 | value: '早上好,今天也是让人期待的一天呢!', 25 | }, 26 | { 27 | value: '熬夜有什么用,又没人陪你聊天,早点休息吧。', 28 | }, 29 | ]; 30 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/convertText_en.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/style/h5.scss: -------------------------------------------------------------------------------- 1 | .emoji-picker-h5 { 2 | width: 100%; 3 | 4 | &-list { 5 | justify-content: space-between; 6 | } 7 | 8 | &-list::after { 9 | content: ""; 10 | display: block; 11 | flex: 1 1 auto; 12 | } 13 | 14 | .send-btn { 15 | width: 50px; 16 | height: 30px; 17 | background-color: #55C06A; 18 | position: absolute; 19 | right: 10px; 20 | font-size: 16px; 21 | color: #fff; 22 | text-align: center; 23 | line-height: 30px; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/emoji-picker/style/h5.scss: -------------------------------------------------------------------------------- 1 | .emoji-picker-h5 { 2 | width: 100%; 3 | 4 | &-list { 5 | justify-content: space-between; 6 | } 7 | 8 | &-list::after { 9 | content: ""; 10 | display: block; 11 | flex: 1 1 auto; 12 | } 13 | 14 | .send-btn { 15 | width: 50px; 16 | height: 30px; 17 | background-color: #55C06A; 18 | position: absolute; 19 | right: 10px; 20 | font-size: 16px; 21 | color: #fff; 22 | text-align: center; 23 | line-height: 30px; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/convertText_en.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-list/style/color.scss: -------------------------------------------------------------------------------- 1 | .tui-chat { 2 | .tui-message-list { 3 | .message-more { 4 | color: #999; 5 | cursor: pointer; 6 | } 7 | } 8 | 9 | .image-dialog { 10 | background: rgba(0, 0, 0, 0.6); 11 | 12 | header { 13 | background: rgba(0,0,0,0.49); 14 | } 15 | } 16 | } 17 | 18 | .tui-chat-h5 { 19 | .tui-chat-header { 20 | background: #FFF; 21 | } 22 | 23 | .tui-chat-footer { 24 | background: #FFF; 25 | 26 | .input { 27 | input { 28 | background: #F4F5F9; 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /sample/locales/index.ts: -------------------------------------------------------------------------------- 1 | import en from './en'; 2 | import zh_cn from './zh_cn'; 3 | import zh_tw from './zh_tw'; 4 | import TUILocales from '../TUIKit/locales/index'; 5 | 6 | const demoLocales = { 7 | ...en, 8 | ...zh_cn, 9 | ...zh_tw, 10 | }; 11 | 12 | const locales = {}; 13 | 14 | const allLanguages = new Set([ 15 | ...Object.keys(demoLocales), 16 | ...Object.keys(TUILocales), 17 | ]); 18 | 19 | allLanguages.forEach((lang) => { 20 | locales[lang] = { 21 | ...(demoLocales[lang] || {}), 22 | ...(TUILocales[lang] || {}), 23 | }; 24 | }); 25 | 26 | export { locales, demoLocales }; 27 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/input-close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-list/style/color.scss: -------------------------------------------------------------------------------- 1 | .tui-chat { 2 | .tui-message-list { 3 | .message-more { 4 | color: #999; 5 | cursor: pointer; 6 | } 7 | } 8 | 9 | .image-dialog { 10 | background: rgba(0, 0, 0, 0.6); 11 | 12 | header { 13 | background: rgba(0,0,0,0.49); 14 | } 15 | } 16 | } 17 | 18 | .tui-chat-h5 { 19 | .tui-chat-header { 20 | background: #FFF; 21 | } 22 | 23 | .tui-chat-footer { 24 | background: #FFF; 25 | 26 | .input { 27 | input { 28 | background: #F4F5F9; 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /TUIKit/utils/env.ts: -------------------------------------------------------------------------------- 1 | import { getPlatform } from '@tencentcloud/universal-api'; 2 | 3 | declare const uni: any; 4 | 5 | export const isPC = getPlatform() === 'pc'; 6 | 7 | export const isH5 = getPlatform() === 'h5'; 8 | 9 | export const isWeChat = getPlatform() === 'wechat'; 10 | 11 | export const isApp = getPlatform() === 'app'; 12 | 13 | export const isUniFrameWork = typeof uni !== 'undefined'; 14 | 15 | // H5, mini programs, and apps are all considered mobile. 16 | // If you need to unify the mobile UI style, you can directly use isMobile to control 17 | export const isMobile = isH5 || isWeChat || isApp; 18 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/input-close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/search-result/search-result-item/style/h5.scss: -------------------------------------------------------------------------------- 1 | .search-result-list-item-h5 { 2 | padding: 10px 0; 3 | border-radius: 0; 4 | 5 | .bubble { 6 | .bubble-left { 7 | .bubble-left-avatar { 8 | width: 48px; 9 | height: 48px; 10 | } 11 | 12 | .bubble-main { 13 | .bubble-main-name { 14 | color: #333; 15 | font-family: "PingFang SC", sans-serif; 16 | font-size: 14px; 17 | font-weight: 400; 18 | letter-spacing: 0; 19 | text-align: left; 20 | } 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /sample/TUIKit/utils/env.ts: -------------------------------------------------------------------------------- 1 | import { getPlatform } from '@tencentcloud/universal-api'; 2 | 3 | declare const uni: any; 4 | 5 | export const isPC = getPlatform() === 'pc'; 6 | 7 | export const isH5 = getPlatform() === 'h5'; 8 | 9 | export const isWeChat = getPlatform() === 'wechat'; 10 | 11 | export const isApp = getPlatform() === 'app'; 12 | 13 | export const isUniFrameWork = typeof uni !== 'undefined'; 14 | 15 | // H5, mini programs, and apps are all considered mobile. 16 | // If you need to unify the mobile UI style, you can directly use isMobile to control 17 | export const isMobile = isH5 || isWeChat || isApp; 18 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/search-result/search-result-item/style/h5.scss: -------------------------------------------------------------------------------- 1 | .search-result-list-item-h5 { 2 | padding: 10px 0; 3 | border-radius: 0; 4 | 5 | .bubble { 6 | .bubble-left { 7 | .bubble-left-avatar { 8 | width: 48px; 9 | height: 48px; 10 | } 11 | 12 | .bubble-main { 13 | .bubble-main-name { 14 | color: #333; 15 | font-family: "PingFang SC", sans-serif; 16 | font-size: 14px; 17 | font-weight: 400; 18 | letter-spacing: 0; 19 | text-align: left; 20 | } 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /TUIKit/index.ts: -------------------------------------------------------------------------------- 1 | import { genTestUserSig } from './debug'; 2 | import Server from './server'; 3 | import TUIComponents, { 4 | TUIChat, 5 | TUIConversation, 6 | TUIContact, 7 | TUISearch, 8 | TUIGroup, 9 | } from './components'; 10 | import TUIKit from './index.vue'; 11 | import { hideTUIChatFeatures } from './components/TUIChat/config'; 12 | 13 | const TUIChatKit = new Server(); 14 | TUIChatKit.init(); 15 | 16 | export { 17 | TUIKit, 18 | TUIChatKit, 19 | TUIComponents, 20 | TUIChat, 21 | TUIConversation, 22 | TUIContact, 23 | TUISearch, 24 | TUIGroup, 25 | hideTUIChatFeatures, 26 | genTestUserSig, 27 | }; 28 | -------------------------------------------------------------------------------- /TUIKit/locales/en/component.ts: -------------------------------------------------------------------------------- 1 | const component = { 2 | "取消": "Cancel", 3 | "完成": "Done", 4 | "已选中": "Selected", 5 | "人": "", 6 | "保存": "Save", 7 | "请输入userID": "Enter a userID", 8 | "请输入groupID": "Enter a groupID", 9 | "确定": "submit", 10 | "全选": "All", 11 | "已在群聊中": "exists", 12 | "查看更多": "More", 13 | "图片 url 不存在": "Image url does not exist", 14 | "已取消": "Cancelled", 15 | "获取权限失败": "Failed to obtain permission", 16 | "已保存至相册": "Saved to album", 17 | "图片下载失败": "Image download failed", 18 | "暂不支持下载此类型图片": "Downloading this type of pictures is not supported yet", 19 | } 20 | 21 | export default component; 22 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/d-right-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /sample/TUIKit/index.ts: -------------------------------------------------------------------------------- 1 | import { genTestUserSig } from './debug'; 2 | import Server from './server'; 3 | import TUIComponents, { 4 | TUIChat, 5 | TUIConversation, 6 | TUIContact, 7 | TUISearch, 8 | TUIGroup, 9 | } from './components'; 10 | import TUIKit from './index.vue'; 11 | import { hideTUIChatFeatures } from './components/TUIChat/config'; 12 | 13 | const TUIChatKit = new Server(); 14 | TUIChatKit.init(); 15 | 16 | export { 17 | TUIKit, 18 | TUIChatKit, 19 | TUIComponents, 20 | TUIChat, 21 | TUIConversation, 22 | TUIContact, 23 | TUISearch, 24 | TUIGroup, 25 | hideTUIChatFeatures, 26 | genTestUserSig, 27 | }; 28 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/en/component.ts: -------------------------------------------------------------------------------- 1 | const component = { 2 | "取消": "Cancel", 3 | "完成": "Done", 4 | "已选中": "Selected", 5 | "人": "", 6 | "保存": "Save", 7 | "请输入userID": "Enter a userID", 8 | "请输入groupID": "Enter a groupID", 9 | "确定": "submit", 10 | "全选": "All", 11 | "已在群聊中": "exists", 12 | "查看更多": "More", 13 | "图片 url 不存在": "Image url does not exist", 14 | "已取消": "Cancelled", 15 | "获取权限失败": "Failed to obtain permission", 16 | "已保存至相册": "Saved to album", 17 | "图片下载失败": "Image download failed", 18 | "暂不支持下载此类型图片": "Downloading this type of pictures is not supported yet", 19 | } 20 | 21 | export default component; 22 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_cn/TUIConversation.ts: -------------------------------------------------------------------------------- 1 | const TUIConversation = { 2 | "发起会话": "发起会话", 3 | "发起单聊": "发起单聊", 4 | "发起群聊": "发起群聊", 5 | "请输入userID": "请输入userID", 6 | "删除会话": "删除会话", 7 | "删除后,将清空该聊天的消息记录": "删除后,将清空该聊天的消息记录", 8 | "删除后,将清空该群聊的消息记录": "删除后,将清空该群聊的消息记录", 9 | "置顶会话": "置顶会话", 10 | "取消置顶": "取消置顶", 11 | "消息免打扰": "消息免打扰", 12 | "取消免打扰": "取消免打扰", 13 | "系统通知": "系统通知", 14 | "有人@我": "有人@我", 15 | "@所有人": "@所有人", 16 | "条": "条", 17 | "我": "我", 18 | "网络异常,请您检查网络设置": "网络异常,请您检查网络设置", 19 | "您已被群管理员移出群聊": "您已被群管理员移出群聊", 20 | "该群聊已被解散": "该群聊已被解散", 21 | "您已退出该群聊": "您已退出该群聊", 22 | } 23 | 24 | export default TUIConversation; 25 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_tw/TUIConversation.ts: -------------------------------------------------------------------------------- 1 | const TUIConversation = { 2 | "发起会话": "發起會話", 3 | "发起单聊": "發起單聊", 4 | "发起群聊": "發起群聊", 5 | "请输入userID": "請輸入userID", 6 | "删除会话": "刪除會話", 7 | "删除后,将清空该聊天的消息记录": "刪除後,將清空該聊天的消息記錄", 8 | "删除后,将清空该群聊的消息记录": "刪除後,將清空該群聊的消息記錄", 9 | "置顶会话": "置頂會話", 10 | "取消置顶": "取消置頂", 11 | "消息免打扰": "消息免打擾", 12 | "取消免打扰": "取消免打擾", 13 | "系统通知": "系統通知", 14 | "有人@我": "有人@我", 15 | "@所有人": "@所有人", 16 | "条": "條", 17 | "我": "我", 18 | "网络异常,请您检查网络设置": "網絡異常,請您檢查網絡設置", 19 | "您已被群管理员移出群聊": "您已被群管理員移出群聊", 20 | "该群聊已被解散": "該群聊已被解散", 21 | "您已退出该群聊": "您已退出該群聊", 22 | } 23 | 24 | export default TUIConversation; 25 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/d-right-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_cn/TUIConversation.ts: -------------------------------------------------------------------------------- 1 | const TUIConversation = { 2 | "发起会话": "发起会话", 3 | "发起单聊": "发起单聊", 4 | "发起群聊": "发起群聊", 5 | "请输入userID": "请输入userID", 6 | "删除会话": "删除会话", 7 | "删除后,将清空该聊天的消息记录": "删除后,将清空该聊天的消息记录", 8 | "删除后,将清空该群聊的消息记录": "删除后,将清空该群聊的消息记录", 9 | "置顶会话": "置顶会话", 10 | "取消置顶": "取消置顶", 11 | "消息免打扰": "消息免打扰", 12 | "取消免打扰": "取消免打扰", 13 | "系统通知": "系统通知", 14 | "有人@我": "有人@我", 15 | "@所有人": "@所有人", 16 | "条": "条", 17 | "我": "我", 18 | "网络异常,请您检查网络设置": "网络异常,请您检查网络设置", 19 | "您已被群管理员移出群聊": "您已被群管理员移出群聊", 20 | "该群聊已被解散": "该群聊已被解散", 21 | "您已退出该群聊": "您已退出该群聊", 22 | } 23 | 24 | export default TUIConversation; 25 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_tw/TUIConversation.ts: -------------------------------------------------------------------------------- 1 | const TUIConversation = { 2 | "发起会话": "發起會話", 3 | "发起单聊": "發起單聊", 4 | "发起群聊": "發起群聊", 5 | "请输入userID": "請輸入userID", 6 | "删除会话": "刪除會話", 7 | "删除后,将清空该聊天的消息记录": "刪除後,將清空該聊天的消息記錄", 8 | "删除后,将清空该群聊的消息记录": "刪除後,將清空該群聊的消息記錄", 9 | "置顶会话": "置頂會話", 10 | "取消置顶": "取消置頂", 11 | "消息免打扰": "消息免打擾", 12 | "取消免打扰": "取消免打擾", 13 | "系统通知": "系統通知", 14 | "有人@我": "有人@我", 15 | "@所有人": "@所有人", 16 | "条": "條", 17 | "我": "我", 18 | "网络异常,请您检查网络设置": "網絡異常,請您檢查網絡設置", 19 | "您已被群管理员移出群聊": "您已被群管理員移出群聊", 20 | "该群聊已被解散": "該群聊已被解散", 21 | "您已退出该群聊": "您已退出該群聊", 22 | } 23 | 24 | export default TUIConversation; 25 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/face-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/video-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/d-left-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/face-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/video-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/check-sm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/d-left-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/msg-quote.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/more.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/check-sm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/msg-quote.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-list/read-receipt-panel/interface.ts: -------------------------------------------------------------------------------- 1 | export interface IMemberData { 2 | nick: string; 3 | userID: string; 4 | avatar: string; 5 | } 6 | 7 | export interface IGroupMessageReadMemberData { 8 | code: number; 9 | data: { 10 | cursor: string; 11 | isCompleted: boolean; 12 | messageID: string; 13 | readUserInfoList: IMemberData[]; 14 | unreadUserInfoList: IMemberData[]; 15 | }; 16 | } 17 | 18 | export type ITabInfo = Record< 19 | TabName, 20 | { 21 | tabName: string; 22 | count: number | undefined; 23 | memberList: IMemberData[]; 24 | } 25 | >; 26 | 27 | export type TabName = 'read' | 'unread' | 'close'; 28 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/offlinePushInfoManager/const.ts: -------------------------------------------------------------------------------- 1 | import TUIChatEngine from '@tencentcloud/chat-uikit-engine-lite'; 2 | export const DEFAULT_DESC: any = { 3 | [TUIChatEngine.TYPES.MSG_TEXT]: '[文本]', 4 | [TUIChatEngine.TYPES.MSG_FACE]: '[动画表情]', 5 | [TUIChatEngine.TYPES.MSG_IMAGE]: '[图片]', 6 | [TUIChatEngine.TYPES.MSG_FILE]: '[文件]', 7 | [TUIChatEngine.TYPES.MSG_AUDIO]: '[语音]', 8 | [TUIChatEngine.TYPES.MSG_VIDEO]: '[视频]', 9 | [TUIChatEngine.TYPES.MSG_LOCATION]: '[地理位置]', 10 | [TUIChatEngine.TYPES.MSG_MERGER]: '[聊天记录]', 11 | [TUIChatEngine.TYPES.MSG_CUSTOM]: '[自定义消息]', 12 | }; 13 | 14 | export enum PUSH_SCENE { 15 | CHAT = 'chat', 16 | CALL = 'call', 17 | } 18 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/search-result/search-result-loading/index.vue: -------------------------------------------------------------------------------- 1 | 9 | 13 | 26 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/style/web.scss: -------------------------------------------------------------------------------- 1 | .tui-search { 2 | background: #EBF0F6; 3 | 4 | &-main-global { 5 | width: 100%; 6 | height: fit-content; 7 | } 8 | 9 | &-main-conversation { 10 | width: 100%; 11 | height: 100%; 12 | background: #fff; 13 | box-shadow: 0 1px 10px 0 rgba(2,16,43,0.15); 14 | } 15 | 16 | .tui-search-global { 17 | padding-bottom: 10px; 18 | &-header { 19 | display: flex; 20 | flex-direction: row; 21 | justify-content: center; 22 | align-items: center; 23 | } 24 | } 25 | 26 | .tui-search-conversation { 27 | width: 100%; 28 | height: 100%; 29 | overflow: hidden; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_cn/time.ts: -------------------------------------------------------------------------------- 1 | const time = { 2 | "周": "周", 3 | "天": "天", 4 | "小时": "小时", 5 | "分钟": "分钟", 6 | "刚刚": "刚刚", 7 | "前": "前", 8 | "昨天": "昨天", 9 | "星期一": "星期一", 10 | "星期二": "星期二", 11 | "星期三": "星期三", 12 | "星期四": "星期四", 13 | "星期五": "星期五", 14 | "星期六": "星期六", 15 | "星期日": "星期日", 16 | "一月": "一月", 17 | "二月": "二月", 18 | "三月": "三月", 19 | "四月": "四月", 20 | "五月": "五月", 21 | "六月": "六月", 22 | "七月": "七月", 23 | "八月": "八月", 24 | "九月": "九月", 25 | "十月": "十月", 26 | "十一月": "十一月", 27 | "十二月": "十二月", 28 | "一": "一", 29 | "二": "二", 30 | "三": "三", 31 | "四": "四", 32 | "五": "五", 33 | "六": "六", 34 | "日": "日", 35 | } 36 | 37 | export default time; 38 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_tw/time.ts: -------------------------------------------------------------------------------- 1 | const time = { 2 | "周": "週", 3 | "天": "天", 4 | "小时": "小時", 5 | "分钟": "分鐘", 6 | "刚刚": "剛剛", 7 | "前": "前", 8 | "昨天": "昨天", 9 | "星期一": "星期一", 10 | "星期二": "星期二", 11 | "星期三": "星期三", 12 | "星期四": "星期四", 13 | "星期五": "星期五", 14 | "星期六": "星期六", 15 | "星期日": "星期日", 16 | "一月": "一月", 17 | "二月": "二月", 18 | "三月": "三月", 19 | "四月": "四月", 20 | "五月": "五月", 21 | "六月": "六月", 22 | "七月": "七月", 23 | "八月": "八月", 24 | "九月": "九月", 25 | "十月": "十月", 26 | "十一月": "十一月", 27 | "十二月": "十二月", 28 | "一": "一", 29 | "二": "二", 30 | "三": "三", 31 | "四": "四", 32 | "五": "五", 33 | "六": "六", 34 | "日": "日", 35 | } 36 | 37 | export default time; 38 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/more.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-list/read-receipt-panel/interface.ts: -------------------------------------------------------------------------------- 1 | export interface IMemberData { 2 | nick: string; 3 | userID: string; 4 | avatar: string; 5 | } 6 | 7 | export interface IGroupMessageReadMemberData { 8 | code: number; 9 | data: { 10 | cursor: string; 11 | isCompleted: boolean; 12 | messageID: string; 13 | readUserInfoList: IMemberData[]; 14 | unreadUserInfoList: IMemberData[]; 15 | }; 16 | } 17 | 18 | export type ITabInfo = Record< 19 | TabName, 20 | { 21 | tabName: string; 22 | count: number | undefined; 23 | memberList: IMemberData[]; 24 | } 25 | >; 26 | 27 | export type TabName = 'read' | 'unread' | 'close'; 28 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/offlinePushInfoManager/const.ts: -------------------------------------------------------------------------------- 1 | import TUIChatEngine from '@tencentcloud/chat-uikit-engine-lite'; 2 | export const DEFAULT_DESC: any = { 3 | [TUIChatEngine.TYPES.MSG_TEXT]: '[文本]', 4 | [TUIChatEngine.TYPES.MSG_FACE]: '[动画表情]', 5 | [TUIChatEngine.TYPES.MSG_IMAGE]: '[图片]', 6 | [TUIChatEngine.TYPES.MSG_FILE]: '[文件]', 7 | [TUIChatEngine.TYPES.MSG_AUDIO]: '[语音]', 8 | [TUIChatEngine.TYPES.MSG_VIDEO]: '[视频]', 9 | [TUIChatEngine.TYPES.MSG_LOCATION]: '[地理位置]', 10 | [TUIChatEngine.TYPES.MSG_MERGER]: '[聊天记录]', 11 | [TUIChatEngine.TYPES.MSG_CUSTOM]: '[自定义消息]', 12 | }; 13 | 14 | export enum PUSH_SCENE { 15 | CHAT = 'chat', 16 | CALL = 'call', 17 | } 18 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/search-result/search-result-loading/index.vue: -------------------------------------------------------------------------------- 1 | 9 | 13 | 26 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/style/web.scss: -------------------------------------------------------------------------------- 1 | .tui-search { 2 | background: #EBF0F6; 3 | 4 | &-main-global { 5 | width: 100%; 6 | height: fit-content; 7 | } 8 | 9 | &-main-conversation { 10 | width: 100%; 11 | height: 100%; 12 | background: #fff; 13 | box-shadow: 0 1px 10px 0 rgba(2,16,43,0.15); 14 | } 15 | 16 | .tui-search-global { 17 | padding-bottom: 10px; 18 | &-header { 19 | display: flex; 20 | flex-direction: row; 21 | justify-content: center; 22 | align-items: center; 23 | } 24 | } 25 | 26 | .tui-search-conversation { 27 | width: 100%; 28 | height: 100%; 29 | overflow: hidden; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/start-group.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_cn/time.ts: -------------------------------------------------------------------------------- 1 | const time = { 2 | "周": "周", 3 | "天": "天", 4 | "小时": "小时", 5 | "分钟": "分钟", 6 | "刚刚": "刚刚", 7 | "前": "前", 8 | "昨天": "昨天", 9 | "星期一": "星期一", 10 | "星期二": "星期二", 11 | "星期三": "星期三", 12 | "星期四": "星期四", 13 | "星期五": "星期五", 14 | "星期六": "星期六", 15 | "星期日": "星期日", 16 | "一月": "一月", 17 | "二月": "二月", 18 | "三月": "三月", 19 | "四月": "四月", 20 | "五月": "五月", 21 | "六月": "六月", 22 | "七月": "七月", 23 | "八月": "八月", 24 | "九月": "九月", 25 | "十月": "十月", 26 | "十一月": "十一月", 27 | "十二月": "十二月", 28 | "一": "一", 29 | "二": "二", 30 | "三": "三", 31 | "四": "四", 32 | "五": "五", 33 | "六": "六", 34 | "日": "日", 35 | } 36 | 37 | export default time; 38 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_tw/time.ts: -------------------------------------------------------------------------------- 1 | const time = { 2 | "周": "週", 3 | "天": "天", 4 | "小时": "小時", 5 | "分钟": "分鐘", 6 | "刚刚": "剛剛", 7 | "前": "前", 8 | "昨天": "昨天", 9 | "星期一": "星期一", 10 | "星期二": "星期二", 11 | "星期三": "星期三", 12 | "星期四": "星期四", 13 | "星期五": "星期五", 14 | "星期六": "星期六", 15 | "星期日": "星期日", 16 | "一月": "一月", 17 | "二月": "二月", 18 | "三月": "三月", 19 | "四月": "四月", 20 | "五月": "五月", 21 | "六月": "六月", 22 | "七月": "七月", 23 | "八月": "八月", 24 | "九月": "九月", 25 | "十月": "十月", 26 | "十一月": "十一月", 27 | "十二月": "十二月", 28 | "一": "一", 29 | "二": "二", 30 | "三": "三", 31 | "四": "四", 32 | "五": "五", 33 | "六": "六", 34 | "日": "日", 35 | } 36 | 37 | export default time; 38 | -------------------------------------------------------------------------------- /sample/main.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-empty */ 2 | /* eslint-disable no-implicit-coercion */ 3 | import App from "./App"; 4 | 5 | // #ifndef VUE3 6 | import Vue from "vue"; 7 | import VueCompositionAPI from "@vue/composition-api"; 8 | Vue.use(VueCompositionAPI); 9 | import unifyPromiseVue2 from "./TUIKit/utils/unifyPromiseVue2"; 10 | Vue.config.productionTip = false; 11 | App.mpType = "app"; 12 | unifyPromiseVue2(); 13 | const app = new Vue({ 14 | ...App, 15 | }); 16 | app.$mount(); 17 | // #endif 18 | 19 | // #ifdef VUE3 20 | import { createSSRApp } from "vue"; 21 | export function createApp() { 22 | const app = createSSRApp(App); 23 | return { 24 | app, 25 | }; 26 | } 27 | // #endif 28 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/add-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/start-group.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/msg-audio.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/radio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/add-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/msg-audio.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/radio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /TUIKit/plugins/plugin-components/message-room/message-room.vue: -------------------------------------------------------------------------------- 1 | 2 | 5 | 17 | 20 | -------------------------------------------------------------------------------- /sample/TUIKit/plugins/plugin-components/message-room/message-room.vue: -------------------------------------------------------------------------------- 1 | 2 | 5 | 17 | 20 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/icon-arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | -------------------------------------------------------------------------------- /TUIKit/utils/documentLink.ts: -------------------------------------------------------------------------------- 1 | const Link = { 2 | product: { 3 | label: '产品文档', 4 | url: 'https://cloud.tencent.com/document/product/269/1499#.E7.BE.A4.E7.BB.84.E5.8A.9F.E8.83.BD', 5 | }, 6 | customMessage: { 7 | label: '自定义消息', 8 | url: 'https://web.sdk.qcloud.com/im/doc/v3/zh-cn/SDK.html#createCustomMessage', 9 | }, 10 | complaint: { 11 | label: '点此投诉', 12 | url: 'https://cloud.tencent.com/apply/p/xc3oaubi98g', 13 | }, 14 | implement: { 15 | label: '集成TUICallKit', 16 | url: 'https://cloud.tencent.com/document/product/269/79861', 17 | }, 18 | purchase: { 19 | label: '开通腾讯实时音视频服务', 20 | url: 'https://cloud.tencent.com/document/product/1640/79968', 21 | }, 22 | }; 23 | export default Link; -------------------------------------------------------------------------------- /TUIKit/locales/en/words.ts: -------------------------------------------------------------------------------- 1 | const Words = { 2 | "请对本次服务进行评价": "Please rate this service", 3 | "提交评价": "Feedback", 4 | "常用语-快捷回复工具": "Common Expressions - Quick Reply Tool", 5 | "使用": "Build with", 6 | "自定义消息": "Custom message", 7 | "搭建": "", 8 | "在吗?在吗?在吗?重要的话说三遍。": "Are you there? ", 9 | "好久没聊天了,快来和我说说话~": "It’s been a long time. How about you?", 10 | "好的,就这么说定了。": "Okay. It's a deal.", 11 | "感恩的心,感谢有你。": "So grateful! ", 12 | "糟糕!是心动的感觉!": "Oh, no. Flipped.", 13 | "心疼地抱抱自己,我太难了!": "Give myself a warm hug. ", 14 | "没关系,别在意,事情过去就过去了。": "Take it easy.", 15 | "早上好,今天也是让人期待的一天呢!": "Good morning. Have a wonderful day.", 16 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "It's better to go to bed early." 17 | } 18 | 19 | export default Words; 20 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/icon-arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | -------------------------------------------------------------------------------- /sample/TUIKit/utils/documentLink.ts: -------------------------------------------------------------------------------- 1 | const Link = { 2 | product: { 3 | label: '产品文档', 4 | url: 'https://cloud.tencent.com/document/product/269/1499#.E7.BE.A4.E7.BB.84.E5.8A.9F.E8.83.BD', 5 | }, 6 | customMessage: { 7 | label: '自定义消息', 8 | url: 'https://web.sdk.qcloud.com/im/doc/v3/zh-cn/SDK.html#createCustomMessage', 9 | }, 10 | complaint: { 11 | label: '点此投诉', 12 | url: 'https://cloud.tencent.com/apply/p/xc3oaubi98g', 13 | }, 14 | implement: { 15 | label: '集成TUICallKit', 16 | url: 'https://cloud.tencent.com/document/product/269/79861', 17 | }, 18 | purchase: { 19 | label: '开通腾讯实时音视频服务', 20 | url: 'https://cloud.tencent.com/document/product/1640/79968', 21 | }, 22 | }; 23 | export default Link; -------------------------------------------------------------------------------- /TUIKit/assets/icon/double-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/web.scss: -------------------------------------------------------------------------------- 1 | .toolbar-item-container { 2 | position: relative; 3 | 4 | &-icon { 5 | padding: 8px; 6 | cursor: pointer; 7 | -webkit-tap-highlight-color: transparent; 8 | } 9 | 10 | &-dialog { 11 | z-index: 5; 12 | position: absolute; 13 | background: #fff; 14 | box-shadow: 0 2px 4px -3px rgba(32, 77, 141, 0.03), 0 6px 10px 1px rgba(32, 77, 141, 0.06), 0 3px 14px 2px rgba(32, 77, 141, 0.05); 15 | width: fit-content; 16 | height: fit-content; 17 | bottom: 35px; 18 | } 19 | 20 | &-dialog-dark { 21 | background: #22262E; 22 | box-shadow: 0 8px 40px 0 rgba(23, 25, 31, 0.6), 0 4px 12px 0 rgba(23, 25, 31, 0.8); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/words/style/h5.scss: -------------------------------------------------------------------------------- 1 | .words-h5 { 2 | width: 100%; 3 | box-sizing: border-box; 4 | max-height: 80vh; 5 | height: fit-content; 6 | overflow: hidden; 7 | display: flex; 8 | flex-direction: column; 9 | &-header { 10 | &-title { 11 | font-size: 18px; 12 | line-height: 40px; 13 | } 14 | } 15 | &-list { 16 | flex: 1; 17 | overflow-y: scroll; 18 | &-item { 19 | cursor: none; 20 | -webkit-tap-highlight-color: transparent; 21 | -moz-tap-highlight-color: transparent; 22 | padding: 12px 0; 23 | font-size: 16px; 24 | color: #50545c; 25 | line-height: 18px; 26 | border-bottom: 1px solid #eeeeee; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/en/words.ts: -------------------------------------------------------------------------------- 1 | const Words = { 2 | "请对本次服务进行评价": "Please rate this service", 3 | "提交评价": "Feedback", 4 | "常用语-快捷回复工具": "Common Expressions - Quick Reply Tool", 5 | "使用": "Build with", 6 | "自定义消息": "Custom message", 7 | "搭建": "", 8 | "在吗?在吗?在吗?重要的话说三遍。": "Are you there? ", 9 | "好久没聊天了,快来和我说说话~": "It’s been a long time. How about you?", 10 | "好的,就这么说定了。": "Okay. It's a deal.", 11 | "感恩的心,感谢有你。": "So grateful! ", 12 | "糟糕!是心动的感觉!": "Oh, no. Flipped.", 13 | "心疼地抱抱自己,我太难了!": "Give myself a warm hug. ", 14 | "没关系,别在意,事情过去就过去了。": "Take it easy.", 15 | "早上好,今天也是让人期待的一天呢!": "Good morning. Have a wonderful day.", 16 | "熬夜有什么用,又没人陪你聊天,早点休息吧。": "It's better to go to bed early." 17 | } 18 | 19 | export default Words; 20 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/words/style/web.scss: -------------------------------------------------------------------------------- 1 | .words { 2 | z-index: 5; 3 | width: 315px; 4 | padding: 12px; 5 | display: flex; 6 | flex-direction: column; 7 | width: 19.13rem; 8 | height: 12.44rem; 9 | overflow-y: auto; 10 | &-header { 11 | display: flex; 12 | justify-content: space-between; 13 | font-size: 14px; 14 | font-weight: 500; 15 | } 16 | &-list { 17 | flex: 1; 18 | display: flex; 19 | flex-direction: column; 20 | cursor: pointer; 21 | &-item { 22 | cursor: pointer; 23 | padding: 4px 0; 24 | font-size: 14px; 25 | color: #50545c; 26 | line-height: 18px; 27 | } 28 | &-item:hover { 29 | color: #006eff; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/web.scss: -------------------------------------------------------------------------------- 1 | .toolbar-item-container { 2 | position: relative; 3 | 4 | &-icon { 5 | padding: 8px; 6 | cursor: pointer; 7 | -webkit-tap-highlight-color: transparent; 8 | } 9 | 10 | &-dialog { 11 | z-index: 5; 12 | position: absolute; 13 | background: #fff; 14 | box-shadow: 0 2px 4px -3px rgba(32, 77, 141, 0.03), 0 6px 10px 1px rgba(32, 77, 141, 0.06), 0 3px 14px 2px rgba(32, 77, 141, 0.05); 15 | width: fit-content; 16 | height: fit-content; 17 | bottom: 35px; 18 | } 19 | 20 | &-dialog-dark { 21 | background: #22262E; 22 | box-shadow: 0 8px 40px 0 rgba(23, 25, 31, 0.6), 0 4px 12px 0 rgba(23, 25, 31, 0.8); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/words/style/h5.scss: -------------------------------------------------------------------------------- 1 | .words-h5 { 2 | width: 100%; 3 | box-sizing: border-box; 4 | max-height: 80vh; 5 | height: fit-content; 6 | overflow: hidden; 7 | display: flex; 8 | flex-direction: column; 9 | &-header { 10 | &-title { 11 | font-size: 18px; 12 | line-height: 40px; 13 | } 14 | } 15 | &-list { 16 | flex: 1; 17 | overflow-y: scroll; 18 | &-item { 19 | cursor: none; 20 | -webkit-tap-highlight-color: transparent; 21 | -moz-tap-highlight-color: transparent; 22 | padding: 12px 0; 23 | font-size: 16px; 24 | color: #50545c; 25 | line-height: 18px; 26 | border-bottom: 1px solid #eeeeee; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /sample/.hbuilderx/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ 3 | // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 4 | "version" : "0.0", 5 | "configurations" : [ 6 | { 7 | "app-plus" : { 8 | "launchtype" : "local" 9 | }, 10 | "default" : { 11 | "launchtype" : "local" 12 | }, 13 | "mp-weixin" : { 14 | "launchtype" : "local" 15 | }, 16 | "type" : "uniCloud" 17 | }, 18 | { 19 | "playground" : "custom", 20 | "type" : "uni-app:app-ios" 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/double-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/words/style/web.scss: -------------------------------------------------------------------------------- 1 | .words { 2 | z-index: 5; 3 | width: 315px; 4 | padding: 12px; 5 | display: flex; 6 | flex-direction: column; 7 | width: 19.13rem; 8 | height: 12.44rem; 9 | overflow-y: auto; 10 | &-header { 11 | display: flex; 12 | justify-content: space-between; 13 | font-size: 14px; 14 | font-weight: 500; 15 | } 16 | &-list { 17 | flex: 1; 18 | display: flex; 19 | flex-direction: column; 20 | cursor: pointer; 21 | &-item { 22 | cursor: pointer; 23 | padding: 4px 0; 24 | font-size: 14px; 25 | color: #50545c; 26 | line-height: 18px; 27 | } 28 | &-item:hover { 29 | color: #006eff; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/right-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-list/link/index.ts: -------------------------------------------------------------------------------- 1 | const Link = { 2 | product: { 3 | label: '产品文档', 4 | url: 'https://cloud.tencent.com/document/product/269/1499#.E7.BE.A4.E7.BB.84.E5.8A.9F.E8.83.BD', 5 | }, 6 | customMessage: { 7 | label: '自定义消息', 8 | url: 'https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html#createCustomMessage', 9 | }, 10 | complaint: { 11 | label: '点此投诉', 12 | url: 'https://cloud.tencent.com/apply/p/xc3oaubi98g', 13 | }, 14 | implement: { 15 | label: '集成TUICallKit', 16 | url: 'https://cloud.tencent.com/document/product/269/79861', 17 | }, 18 | purchase: { 19 | label: '开通腾讯实时音视频服务', 20 | url: 'https://cloud.tencent.com/document/product/1640/79968', 21 | }, 22 | }; 23 | export default Link; 24 | -------------------------------------------------------------------------------- /sample/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/setting.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-list/link/index.ts: -------------------------------------------------------------------------------- 1 | const Link = { 2 | product: { 3 | label: '产品文档', 4 | url: 'https://cloud.tencent.com/document/product/269/1499#.E7.BE.A4.E7.BB.84.E5.8A.9F.E8.83.BD', 5 | }, 6 | customMessage: { 7 | label: '自定义消息', 8 | url: 'https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html#createCustomMessage', 9 | }, 10 | complaint: { 11 | label: '点此投诉', 12 | url: 'https://cloud.tencent.com/apply/p/xc3oaubi98g', 13 | }, 14 | implement: { 15 | label: '集成TUICallKit', 16 | url: 'https://cloud.tencent.com/document/product/269/79861', 17 | }, 18 | purchase: { 19 | label: '开通腾讯实时音视频服务', 20 | url: 'https://cloud.tencent.com/document/product/1640/79968', 21 | }, 22 | }; 23 | export default Link; 24 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/right-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/setting.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/video-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/style/h5.scss: -------------------------------------------------------------------------------- 1 | .tui-search-h5 { 2 | &-full-screen { 3 | position: fixed; 4 | width: 100%; 5 | height: 100%; 6 | overflow: hidden; 7 | display: flex; 8 | flex-direction: column; 9 | z-index: 1000; 10 | } 11 | 12 | &-global, 13 | &-conversation { 14 | width: 100%; 15 | height: 100%; 16 | display: flex; 17 | flex: 1; 18 | flex-direction: column; 19 | } 20 | 21 | &-conversation { 22 | overflow: hidden; 23 | } 24 | 25 | &.tui-search-main-conversation { 26 | box-shadow: none; 27 | } 28 | 29 | .search-input, 30 | .search-container, 31 | .search-result { 32 | min-width: 0; 33 | box-sizing: border-box; 34 | display: flex; 35 | flex: 1; 36 | overflow: hidden; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/video-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/style/h5.scss: -------------------------------------------------------------------------------- 1 | .tui-search-h5 { 2 | &-full-screen { 3 | position: fixed; 4 | width: 100%; 5 | height: 100%; 6 | overflow: hidden; 7 | display: flex; 8 | flex-direction: column; 9 | z-index: 1000; 10 | } 11 | 12 | &-global, 13 | &-conversation { 14 | width: 100%; 15 | height: 100%; 16 | display: flex; 17 | flex: 1; 18 | flex-direction: column; 19 | } 20 | 21 | &-conversation { 22 | overflow: hidden; 23 | } 24 | 25 | &.tui-search-main-conversation { 26 | box-shadow: none; 27 | } 28 | 29 | .search-input, 30 | .search-container, 31 | .search-result { 32 | min-width: 0; 33 | box-sizing: border-box; 34 | display: flex; 35 | flex: 1; 36 | overflow: hidden; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/icon-close.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /TUIKit/components/TUIGroup/manage-group/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import './color'; 3 | @import './web'; 4 | @import './h5'; 5 | 6 | 7 | .icon-close { 8 | display: inline-block; 9 | width: 24px; 10 | height: 24px; 11 | position: relative; 12 | border-radius: 50%; 13 | } 14 | 15 | .icon-close::before, 16 | .icon-close::after { 17 | content: ""; 18 | position: absolute; 19 | background-color: #8F959E; 20 | height: 16px; 21 | width: 2px; 22 | top: 50%; 23 | left: 50%; 24 | margin-top: -8px; 25 | margin-left: -1px; 26 | } 27 | 28 | .icon-close::before { 29 | transform: rotate(45deg); 30 | } 31 | 32 | .icon-close::after { 33 | transform: rotate(-45deg); 34 | } 35 | 36 | .tab-icon { 37 | position: absolute; 38 | left: 20px; 39 | } 40 | -------------------------------------------------------------------------------- /TUIKit/components/common/Dialog/style/color.scss: -------------------------------------------------------------------------------- 1 | .dialog { 2 | background: rgba(0, 0, 0, 0.6); 3 | 4 | &-main { 5 | background: #FFF; 6 | 7 | &-header { 8 | font-weight: 500; 9 | color: #333; 10 | } 11 | 12 | &-title { 13 | font-family: PingFangSC-Medium; 14 | font-weight: 500; 15 | color: #333; 16 | } 17 | 18 | &-back { 19 | background: none; 20 | } 21 | 22 | &-content { 23 | font-weight: 400; 24 | color: #333; 25 | } 26 | } 27 | } 28 | 29 | .btn { 30 | font-weight: 400; 31 | color: #FFF; 32 | letter-spacing: 0; 33 | 34 | &-cancel { 35 | border: 1px solid #ddd; 36 | color: #666; 37 | } 38 | 39 | &-default { 40 | background: #006EFF; 41 | border: 1px solid #006EFF; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/icon-close.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIGroup/manage-group/style/index.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../assets/styles/common'; 2 | @import './color'; 3 | @import './web'; 4 | @import './h5'; 5 | 6 | 7 | .icon-close { 8 | display: inline-block; 9 | width: 24px; 10 | height: 24px; 11 | position: relative; 12 | border-radius: 50%; 13 | } 14 | 15 | .icon-close::before, 16 | .icon-close::after { 17 | content: ""; 18 | position: absolute; 19 | background-color: #8F959E; 20 | height: 16px; 21 | width: 2px; 22 | top: 50%; 23 | left: 50%; 24 | margin-top: -8px; 25 | margin-left: -1px; 26 | } 27 | 28 | .icon-close::before { 29 | transform: rotate(45deg); 30 | } 31 | 32 | .icon-close::after { 33 | transform: rotate(-45deg); 34 | } 35 | 36 | .tab-icon { 37 | position: absolute; 38 | left: 20px; 39 | } 40 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/Dialog/style/color.scss: -------------------------------------------------------------------------------- 1 | .dialog { 2 | background: rgba(0, 0, 0, 0.6); 3 | 4 | &-main { 5 | background: #FFF; 6 | 7 | &-header { 8 | font-weight: 500; 9 | color: #333; 10 | } 11 | 12 | &-title { 13 | font-family: PingFangSC-Medium; 14 | font-weight: 500; 15 | color: #333; 16 | } 17 | 18 | &-back { 19 | background: none; 20 | } 21 | 22 | &-content { 23 | font-weight: 400; 24 | color: #333; 25 | } 26 | } 27 | } 28 | 29 | .btn { 30 | font-weight: 400; 31 | color: #FFF; 32 | letter-spacing: 0; 33 | 34 | &-cancel { 35 | border: 1px solid #ddd; 36 | color: #666; 37 | } 38 | 39 | &-default { 40 | background: #006EFF; 41 | border: 1px solid #006EFF; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/call-voice.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/mute.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /TUIKit/locales/en/time.ts: -------------------------------------------------------------------------------- 1 | const time = { 2 | "周": "week(s) ", 3 | "天": "day(s)", 4 | "小时": "hour(s) ", 5 | "分钟": "minute(s)", 6 | "刚刚": "Just now", 7 | "前": " ago", 8 | "昨天": "Yesterday", 9 | "星期一": "Monday", 10 | "星期二": "Tuesday", 11 | "星期三": "Wednesday", 12 | "星期四": "Thursday", 13 | "星期五": "Friday", 14 | "星期六": "Saturday", 15 | "星期日": "Sunday", 16 | "一月": "January", 17 | "二月": "February", 18 | "三月": "March", 19 | "四月": "April", 20 | "五月": "May", 21 | "六月": "June", 22 | "七月": "July", 23 | "八月": "August", 24 | "九月": "September", 25 | "十月": "October", 26 | "十一月": "November", 27 | "十二月": "December", 28 | "一": "Mon", 29 | "二": "Tues", 30 | "三": "Wed", 31 | "四": "Thur", 32 | "五": "Fri", 33 | "六": "Sat", 34 | "日": "Sun", 35 | } 36 | 37 | export default time; 38 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/rotate-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/rotate-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/mute.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/en/time.ts: -------------------------------------------------------------------------------- 1 | const time = { 2 | "周": "week(s) ", 3 | "天": "day(s)", 4 | "小时": "hour(s) ", 5 | "分钟": "minute(s)", 6 | "刚刚": "Just now", 7 | "前": " ago", 8 | "昨天": "Yesterday", 9 | "星期一": "Monday", 10 | "星期二": "Tuesday", 11 | "星期三": "Wednesday", 12 | "星期四": "Thursday", 13 | "星期五": "Friday", 14 | "星期六": "Saturday", 15 | "星期日": "Sunday", 16 | "一月": "January", 17 | "二月": "February", 18 | "三月": "March", 19 | "四月": "April", 20 | "五月": "May", 21 | "六月": "June", 22 | "七月": "July", 23 | "八月": "August", 24 | "九月": "September", 25 | "十月": "October", 26 | "十一月": "November", 27 | "十二月": "December", 28 | "一": "Mon", 29 | "二": "Tues", 30 | "三": "Wed", 31 | "四": "Thur", 32 | "五": "Fri", 33 | "六": "Sat", 34 | "日": "Sun", 35 | } 36 | 37 | export default time; 38 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/call-voice.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/rotate-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/rotate-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/close-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/face-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /TUIKit/components/TUISearch/search-container/style/h5.scss: -------------------------------------------------------------------------------- 1 | .tui-search-container-h5 { 2 | width: 100%; 3 | height: 100%; 4 | overflow: hidden; 5 | margin: 0; 6 | padding: 0; 7 | display: flex; 8 | flex-direction: column; 9 | 10 | .tui-search-container-h5-main { 11 | width: 100%; 12 | height: 100%; 13 | overflow: hidden; 14 | display: flex; 15 | flex-direction: column; 16 | 17 | .tui-search-tabs { 18 | .tui-search-tabs-item { 19 | cursor: none; 20 | } 21 | } 22 | 23 | .tui-search-time { 24 | background-color: #f4f4f4; 25 | 26 | .tui-search-time-item { 27 | cursor: none; 28 | background-color: #fff; 29 | } 30 | 31 | .tui-search-time-item-selected { 32 | background-color: rgba(0,122,255,0.2); 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /TUIKit/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | declare module "*.vue" { 3 | import type { DefineComponent } from "vue"; 4 | const component: DefineComponent<{}, {}, any>; 5 | export default component; 6 | } 7 | 8 | declare module "*.svg"; 9 | declare module "*.png"; 10 | declare module "*.jpg"; 11 | declare module "*.jpeg"; 12 | declare module "*.gif"; 13 | declare module "*.bmp"; 14 | declare module "*.tiff"; 15 | 16 | declare module "*.json" { 17 | const content: any; 18 | export default content; 19 | } 20 | 21 | declare module "dayjs"; 22 | declare module "dayjs/plugin/localeData.js"; 23 | declare module "dayjs/plugin/isSameOrAfter.js"; 24 | declare module "dayjs/plugin/isSameOrBefore.js"; 25 | 26 | declare module "marked-highlight"; 27 | declare module "highlight.js"; 28 | declare module "dompurify"; 29 | declare module "marked"; 30 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/close-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/face-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/words-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/uni.scss: -------------------------------------------------------------------------------- 1 | .toolbar-item-container-uni { 2 | width: 100%; 3 | height: 100%; 4 | display: flex; 5 | gap: 6px; 6 | flex-direction: column; 7 | justify-content: center; 8 | align-items: center; 9 | position: static; 10 | 11 | &-icon { 12 | background: #fff; 13 | border-radius: 15px; 14 | width: 60px; 15 | height: 60px; 16 | padding: 0; 17 | display: flex; 18 | justify-content: center; 19 | align-items: center; 20 | } 21 | 22 | &-title { 23 | font-size: 14px; 24 | color: #8F959D; 25 | } 26 | 27 | &-dialog{ 28 | position: absolute !important; 29 | background: transparent; 30 | left: -10px; 31 | bottom: -5px; 32 | 33 | .toolbar-bottom-popup{ 34 | position: sticky; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/message-list/message-elements/message-location.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 26 | 34 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUISearch/search-container/style/h5.scss: -------------------------------------------------------------------------------- 1 | .tui-search-container-h5 { 2 | width: 100%; 3 | height: 100%; 4 | overflow: hidden; 5 | margin: 0; 6 | padding: 0; 7 | display: flex; 8 | flex-direction: column; 9 | 10 | .tui-search-container-h5-main { 11 | width: 100%; 12 | height: 100%; 13 | overflow: hidden; 14 | display: flex; 15 | flex-direction: column; 16 | 17 | .tui-search-tabs { 18 | .tui-search-tabs-item { 19 | cursor: none; 20 | } 21 | } 22 | 23 | .tui-search-time { 24 | background-color: #f4f4f4; 25 | 26 | .tui-search-time-item { 27 | cursor: none; 28 | background-color: #fff; 29 | } 30 | 31 | .tui-search-time-item-selected { 32 | background-color: rgba(0,122,255,0.2); 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /sample/TUIKit/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | declare module "*.vue" { 3 | import type { DefineComponent } from "vue"; 4 | const component: DefineComponent<{}, {}, any>; 5 | export default component; 6 | } 7 | 8 | declare module "*.svg"; 9 | declare module "*.png"; 10 | declare module "*.jpg"; 11 | declare module "*.jpeg"; 12 | declare module "*.gif"; 13 | declare module "*.bmp"; 14 | declare module "*.tiff"; 15 | 16 | declare module "*.json" { 17 | const content: any; 18 | export default content; 19 | } 20 | 21 | declare module "dayjs"; 22 | declare module "dayjs/plugin/localeData.js"; 23 | declare module "dayjs/plugin/isSameOrAfter.js"; 24 | declare module "dayjs/plugin/isSameOrBefore.js"; 25 | 26 | declare module "marked-highlight"; 27 | declare module "highlight.js"; 28 | declare module "dompurify"; 29 | declare module "marked"; 30 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/words-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-input-toolbar/toolbar-item-container/style/uni.scss: -------------------------------------------------------------------------------- 1 | .toolbar-item-container-uni { 2 | width: 100%; 3 | height: 100%; 4 | display: flex; 5 | gap: 6px; 6 | flex-direction: column; 7 | justify-content: center; 8 | align-items: center; 9 | position: static; 10 | 11 | &-icon { 12 | background: #fff; 13 | border-radius: 15px; 14 | width: 60px; 15 | height: 60px; 16 | padding: 0; 17 | display: flex; 18 | justify-content: center; 19 | align-items: center; 20 | } 21 | 22 | &-title { 23 | font-size: 14px; 24 | color: #8F959D; 25 | } 26 | 27 | &-dialog{ 28 | position: absolute !important; 29 | background: transparent; 30 | left: -10px; 31 | bottom: -5px; 32 | 33 | .toolbar-bottom-popup{ 34 | position: sticky; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/message-list/message-elements/message-location.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 26 | 34 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/forward-each.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /TUIKit/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | node: true, 5 | }, 6 | extends: [ 7 | "eslint:recommended", 8 | "@vue/typescript/recommended", 9 | ], 10 | parserOptions: { 11 | ecmaVersion: 2020, 12 | }, 13 | rules: { 14 | "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", 15 | "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", 16 | "@typescript-eslint/no-var-requires": 0, 17 | "prefer-const": 0, 18 | "vue/multi-word-component-names": 0, 19 | "no-undef": 0, 20 | "@typescript-eslint/ban-types": 0, 21 | "@typescript-eslint/no-inferrable-types": 0, 22 | "@typescript-eslint/no-empty-function": 0, 23 | "no-constant-condition": 0, 24 | "no-case-declarations": 0, 25 | "@typescript-eslint/no-extra-non-null-assertion": 0, 26 | }, 27 | }; 28 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/forward-each.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /sample/uni_modules/TencentCloud-Push/utssdk/interface.uts: -------------------------------------------------------------------------------- 1 | interface Push { 2 | setRegistrationID(registrationID: string, onSuccess: () => void): void, 3 | registerPush(SDKAppID: number, appKey: string, onSuccess: (data: string) => void, onError?: (errCode: number, errMsg: string) => void): void, 4 | getRegistrationID(onSuccess: (registrationID: string) => void): void, 5 | unRegisterPush(onSuccess: () => void, onError?: (errCode: number, errMsg: string) => void): void, 6 | getNotificationExtInfo(onSuccess: (extInfo: string) => void): void 7 | addPushListener(eventName: string, listener: (res: any) => void): void 8 | removePushListener(eventName: string, listener?: (res: any) => void): void 9 | disablePostNotificationInForeground(disable: boolean): void 10 | createNotificationChannel(options: any, onSuccess: (data: string) => void): void 11 | } 12 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/search-more.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/search-more.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/edit.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_cn/TUISearch.ts: -------------------------------------------------------------------------------- 1 | const TUISearch = { 2 | 搜索: "搜索", 3 | 全部: "全部", 4 | 联系人: "联系人", 5 | 群聊: "群聊", 6 | 聊天记录: "聊天记录", 7 | 文本: "文本", 8 | 文件: "文件", 9 | "图片/视频": "图片/视频", 10 | 其他: "其他", 11 | 选择时间: "选择时间", 12 | 今天: "今天", 13 | 近三天: "近三天", 14 | 近七天: "近七天", 15 | 查看更多: "查看更多", 16 | 条相关: "条相关", 17 | 条与: "条与", 18 | 相关的: "相关的", 19 | 进入聊天: "进入聊天", 20 | 定位到聊天位置: "定位到聊天位置", 21 | 搜索会话内容: "搜索会话内容", 22 | 查看更多历史记录: "查看更多历史记录", 23 | 暂无搜索结果: "暂无搜索结果", 24 | 结果: "结果", 25 | 取消: "取消", 26 | "[文本]": "[文本]", 27 | "[图片]": "[图片]", 28 | "[语音]": "[语音]", 29 | "[视频]": "[视频]", 30 | "[文件]": "[文件]", 31 | "[自定义消息]": "[自定义消息]", 32 | "[系统消息]": "[系统消息]", 33 | "[合并消息]": "[合并消息]", 34 | "[位置消息]": "[位置消息]", 35 | "消息云端搜索失败:": "消息云端搜索失败:", 36 | "查找联系人失败:": "查找联系人失败:", 37 | "查找群聊失败:": "查找群聊失败:", 38 | "进入会话失败": "进入会话失败", 39 | }; 40 | 41 | export default TUISearch; 42 | -------------------------------------------------------------------------------- /TUIKit/locales/zh_tw/TUISearch.ts: -------------------------------------------------------------------------------- 1 | const TUISearch = { 2 | 搜索: "搜索", 3 | 全部: "全部", 4 | 联系人: "聯繫人", 5 | 群聊: "群聊", 6 | 聊天记录: "聊天記錄", 7 | 文本: "文本", 8 | 文件: "文件", 9 | "图片/视频": "圖片/視頻", 10 | 其他: "其他", 11 | 选择时间: "選擇時間", 12 | 今天: "今天", 13 | 近三天: "近三天", 14 | 近七天: "近七天", 15 | 查看更多: "查看更多", 16 | 条相关: "條相關", 17 | 条与: "條與", 18 | 相关的: "相關的", 19 | 进入聊天: "進入聊天", 20 | 定位到聊天位置: "定位到聊天位置", 21 | 搜索会话内容: "搜索會話內容", 22 | 查看更多历史记录: "查看更多歷史記錄", 23 | 暂无搜索结果: "暫無搜索結果", 24 | 结果: "結果", 25 | 取消: "取消", 26 | "[文本]": "[文本]", 27 | "[图片]": "[圖片]", 28 | "[语音]": "[語音]", 29 | "[视频]": "[視頻]", 30 | "[文件]": "[文件]", 31 | "[自定义消息]": "[自定義消息]", 32 | "[系统消息]": "[系統消息]", 33 | "[合并消息]": "[合併消息]", 34 | "[位置消息]": "[位置消息]", 35 | "消息云端搜索失败:": "消息雲端搜索失敗:", 36 | "查找联系人失败:": "查找聯繫人失敗:", 37 | "查找群聊失败:": "查找群聊失敗:", 38 | "进入会话失败": "進入會話失敗", 39 | }; 40 | 41 | export default TUISearch; 42 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/style/h5.scss: -------------------------------------------------------------------------------- 1 | .chat { 2 | display: block; 3 | height: 100%; 4 | overflow: hidden; 5 | } 6 | 7 | .tui-chat-h5 { 8 | &-message-list { 9 | flex: 1; 10 | overflow: hidden; 11 | display: flex; 12 | } 13 | 14 | &-message-input { 15 | height: auto; 16 | padding: 10px 10px 0; 17 | border-top: 1px solid #eee; 18 | } 19 | 20 | &-message-input-toolbar { 21 | order: 1; 22 | } 23 | } 24 | 25 | .tui-chat-uniapp { 26 | &-header { 27 | display: none; 28 | } 29 | } 30 | 31 | .group-profile { 32 | position: absolute; 33 | top: 14%; 34 | right: 0; 35 | width: 50px; 36 | height: 30px; 37 | line-height: 30px; 38 | color: #000; 39 | font-size: 10px; 40 | border-top-left-radius: 20px; 41 | border-bottom-left-radius: 20px; 42 | padding-left: 15px; 43 | z-index: 100; 44 | background-color: #ccc; 45 | opacity: 0.5; 46 | } 47 | -------------------------------------------------------------------------------- /TUIKit/components/TUIConversation/conversation-network/index.vue: -------------------------------------------------------------------------------- 1 | 14 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_cn/TUISearch.ts: -------------------------------------------------------------------------------- 1 | const TUISearch = { 2 | 搜索: "搜索", 3 | 全部: "全部", 4 | 联系人: "联系人", 5 | 群聊: "群聊", 6 | 聊天记录: "聊天记录", 7 | 文本: "文本", 8 | 文件: "文件", 9 | "图片/视频": "图片/视频", 10 | 其他: "其他", 11 | 选择时间: "选择时间", 12 | 今天: "今天", 13 | 近三天: "近三天", 14 | 近七天: "近七天", 15 | 查看更多: "查看更多", 16 | 条相关: "条相关", 17 | 条与: "条与", 18 | 相关的: "相关的", 19 | 进入聊天: "进入聊天", 20 | 定位到聊天位置: "定位到聊天位置", 21 | 搜索会话内容: "搜索会话内容", 22 | 查看更多历史记录: "查看更多历史记录", 23 | 暂无搜索结果: "暂无搜索结果", 24 | 结果: "结果", 25 | 取消: "取消", 26 | "[文本]": "[文本]", 27 | "[图片]": "[图片]", 28 | "[语音]": "[语音]", 29 | "[视频]": "[视频]", 30 | "[文件]": "[文件]", 31 | "[自定义消息]": "[自定义消息]", 32 | "[系统消息]": "[系统消息]", 33 | "[合并消息]": "[合并消息]", 34 | "[位置消息]": "[位置消息]", 35 | "消息云端搜索失败:": "消息云端搜索失败:", 36 | "查找联系人失败:": "查找联系人失败:", 37 | "查找群聊失败:": "查找群聊失败:", 38 | "进入会话失败": "进入会话失败", 39 | }; 40 | 41 | export default TUISearch; 42 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/zh_tw/TUISearch.ts: -------------------------------------------------------------------------------- 1 | const TUISearch = { 2 | 搜索: "搜索", 3 | 全部: "全部", 4 | 联系人: "聯繫人", 5 | 群聊: "群聊", 6 | 聊天记录: "聊天記錄", 7 | 文本: "文本", 8 | 文件: "文件", 9 | "图片/视频": "圖片/視頻", 10 | 其他: "其他", 11 | 选择时间: "選擇時間", 12 | 今天: "今天", 13 | 近三天: "近三天", 14 | 近七天: "近七天", 15 | 查看更多: "查看更多", 16 | 条相关: "條相關", 17 | 条与: "條與", 18 | 相关的: "相關的", 19 | 进入聊天: "進入聊天", 20 | 定位到聊天位置: "定位到聊天位置", 21 | 搜索会话内容: "搜索會話內容", 22 | 查看更多历史记录: "查看更多歷史記錄", 23 | 暂无搜索结果: "暫無搜索結果", 24 | 结果: "結果", 25 | 取消: "取消", 26 | "[文本]": "[文本]", 27 | "[图片]": "[圖片]", 28 | "[语音]": "[語音]", 29 | "[视频]": "[視頻]", 30 | "[文件]": "[文件]", 31 | "[自定义消息]": "[自定義消息]", 32 | "[系统消息]": "[系統消息]", 33 | "[合并消息]": "[合併消息]", 34 | "[位置消息]": "[位置消息]", 35 | "消息云端搜索失败:": "消息雲端搜索失敗:", 36 | "查找联系人失败:": "查找聯繫人失敗:", 37 | "查找群聊失败:": "查找群聊失敗:", 38 | "进入会话失败": "進入會話失敗", 39 | }; 40 | 41 | export default TUISearch; 42 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/edit.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/style/h5.scss: -------------------------------------------------------------------------------- 1 | .chat { 2 | display: block; 3 | height: 100%; 4 | overflow: hidden; 5 | } 6 | 7 | .tui-chat-h5 { 8 | &-message-list { 9 | flex: 1; 10 | overflow: hidden; 11 | display: flex; 12 | } 13 | 14 | &-message-input { 15 | height: auto; 16 | padding: 10px 10px 0; 17 | border-top: 1px solid #eee; 18 | } 19 | 20 | &-message-input-toolbar { 21 | order: 1; 22 | } 23 | } 24 | 25 | .tui-chat-uniapp { 26 | &-header { 27 | display: none; 28 | } 29 | } 30 | 31 | .group-profile { 32 | position: absolute; 33 | top: 14%; 34 | right: 0; 35 | width: 50px; 36 | height: 30px; 37 | line-height: 30px; 38 | color: #000; 39 | font-size: 10px; 40 | border-top-left-radius: 20px; 41 | border-bottom-left-radius: 20px; 42 | padding-left: 15px; 43 | z-index: 100; 44 | background-color: #ccc; 45 | opacity: 0.5; 46 | } 47 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIConversation/conversation-network/index.vue: -------------------------------------------------------------------------------- 1 | 14 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/file-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /TUIKit/assets/icon/groups.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sample/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener.uts: -------------------------------------------------------------------------------- 1 | import { TIMPushListener, TIMPushMessage} from "TIMPush" 2 | import { PushListenerOptions } from './push-listener-options.uts'; 3 | 4 | const LOG_PREFIX: string = 'Push | PushListener'; 5 | export default class PushListener implements TIMPushListener { 6 | private listener: (eventType: string, data: any) => void; 7 | 8 | constructor(options: PushListenerOptions) { 9 | this.listener = options.listener; 10 | console.log(`${LOG_PREFIX} ok`); 11 | } 12 | 13 | onRecvPushMessage(message: TIMPushMessage) { 14 | this.listener('message_received', { data: message }); 15 | } 16 | 17 | onRevokePushMessage(messageID: string) { 18 | this.listener('message_revoked', { data: messageID }); 19 | } 20 | 21 | onNotificationClicked(ext: string) { 22 | this.listener('notification_clicked', { data: ext }); 23 | } 24 | } -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/file-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /sample/TUIKit/assets/icon/groups.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /TUIKit/components/TUIChat/style/web.scss: -------------------------------------------------------------------------------- 1 | .tui-chat { 2 | width: 100%; 3 | height: 100%; 4 | max-width: 100%; 5 | overflow: hidden; 6 | box-sizing: border-box; 7 | display: flex; 8 | flex-direction: column; 9 | position: relative; 10 | 11 | &-default { 12 | width: 100%; 13 | height: 100%; 14 | box-sizing: border-box; 15 | display: flex; 16 | } 17 | 18 | &-header { 19 | padding: 10px; 20 | box-sizing: border-box; 21 | display: flex; 22 | } 23 | 24 | &-message-list { 25 | flex: 1; 26 | overflow: hidden; 27 | display: flex; 28 | } 29 | 30 | &-leave-group { 31 | font-size: 14px; 32 | height: 160px; 33 | border-top: 1px solid #efefef; 34 | justify-content: center; 35 | align-items: center; 36 | 37 | &-mobile { 38 | height: 50px; 39 | } 40 | } 41 | 42 | &-message-input { 43 | height: 160px; 44 | display: flex; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /TUIKit/components/common/Toast/index.ts: -------------------------------------------------------------------------------- 1 | import { TUIGlobal } from '@tencentcloud/universal-api'; 2 | import TOAST_TYPE from './type'; 3 | 4 | interface IToast { 5 | message: string; 6 | type?: string; 7 | duration?: number; 8 | } 9 | 10 | const Toast = (options: IToast): void => { 11 | TUIGlobal.showToast({ 12 | title: options.message || 'Toast', 13 | duration: options.duration || 1500, 14 | icon: handleIconType(options.type), 15 | }); 16 | }; 17 | 18 | const handleIconType = (type: string | undefined) => { 19 | if (!type) { 20 | return 'none'; 21 | } 22 | switch (type) { 23 | case TOAST_TYPE.ERROR: 24 | return 'none'; 25 | case TOAST_TYPE.WARNING: 26 | return 'none'; 27 | case TOAST_TYPE.SUCCESS: 28 | return 'success'; 29 | case TOAST_TYPE.NORMAL: 30 | return 'none'; 31 | default: 32 | return 'none'; 33 | } 34 | }; 35 | 36 | export { Toast, TOAST_TYPE }; 37 | -------------------------------------------------------------------------------- /TUIKit/locales/en/TUIConversation.ts: -------------------------------------------------------------------------------- 1 | const TUIConversation = { 2 | "发起会话": "Start chat", 3 | "发起单聊": "New one-to-one chat", 4 | "发起群聊": "New group chat", 5 | "请输入userID": "Enter a user ID", 6 | "删除会话": "Delete", 7 | "删除后,将清空该聊天的消息记录": "Once deleted, all chat messages will be cleared.", 8 | "删除后,将清空该群聊的消息记录": "Once deleted, group chat history will be cleared.", 9 | "系统通知": "System notification", 10 | "置顶会话": "Pin", 11 | "取消置顶": "Unpin", 12 | "消息免打扰": "Mute Notifications", 13 | "取消免打扰": "Enable Notifications", 14 | "有人@我": "Someone @ me", 15 | "@所有人": "@All", 16 | "条": "strip", 17 | "我": "me", 18 | "网络异常,请您检查网络设置": "Network exception, please check the network settings", 19 | "您已被群管理员移出群聊": "You have been removed from the group chat by the group administrator", 20 | "该群聊已被解散": "The group chat has been disband", 21 | "您已退出该群聊": "You have left the group chat", 22 | } 23 | 24 | export default TUIConversation; 25 | -------------------------------------------------------------------------------- /sample/TUIKit/components/TUIChat/style/web.scss: -------------------------------------------------------------------------------- 1 | .tui-chat { 2 | width: 100%; 3 | height: 100%; 4 | max-width: 100%; 5 | overflow: hidden; 6 | box-sizing: border-box; 7 | display: flex; 8 | flex-direction: column; 9 | position: relative; 10 | 11 | &-default { 12 | width: 100%; 13 | height: 100%; 14 | box-sizing: border-box; 15 | display: flex; 16 | } 17 | 18 | &-header { 19 | padding: 10px; 20 | box-sizing: border-box; 21 | display: flex; 22 | } 23 | 24 | &-message-list { 25 | flex: 1; 26 | overflow: hidden; 27 | display: flex; 28 | } 29 | 30 | &-leave-group { 31 | font-size: 14px; 32 | height: 160px; 33 | border-top: 1px solid #efefef; 34 | justify-content: center; 35 | align-items: center; 36 | 37 | &-mobile { 38 | height: 50px; 39 | } 40 | } 41 | 42 | &-message-input { 43 | height: 160px; 44 | display: flex; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /TUIKit/utils/unifyPromiseVue2.ts: -------------------------------------------------------------------------------- 1 | export default function unifyPromiseVue2() { 2 | try { 3 | // eslint-disable-next-line no-inner-declarations 4 | function isPromise(obj) { 5 | return Boolean(obj) && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'; 6 | } 7 | // Unified vue2 API Promise return format to be consistent with vue3 8 | // eslint-disable-next-line no-undef 9 | (uni as any).addInterceptor({ 10 | returnValue(res) { 11 | if (!isPromise(res)) { 12 | return res; 13 | } 14 | return new Promise((resolve, reject) => { 15 | res.then((res) => { 16 | if (res[0]) { 17 | reject(res[0]); 18 | } else { 19 | resolve(res[1]); 20 | } 21 | }); 22 | }); 23 | }, 24 | }); 25 | // eslint-disable-next-line no-empty 26 | } catch (error) { } 27 | } 28 | -------------------------------------------------------------------------------- /sample/TUIKit/components/common/Toast/index.ts: -------------------------------------------------------------------------------- 1 | import { TUIGlobal } from '@tencentcloud/universal-api'; 2 | import TOAST_TYPE from './type'; 3 | 4 | interface IToast { 5 | message: string; 6 | type?: string; 7 | duration?: number; 8 | } 9 | 10 | const Toast = (options: IToast): void => { 11 | TUIGlobal.showToast({ 12 | title: options.message || 'Toast', 13 | duration: options.duration || 1500, 14 | icon: handleIconType(options.type), 15 | }); 16 | }; 17 | 18 | const handleIconType = (type: string | undefined) => { 19 | if (!type) { 20 | return 'none'; 21 | } 22 | switch (type) { 23 | case TOAST_TYPE.ERROR: 24 | return 'none'; 25 | case TOAST_TYPE.WARNING: 26 | return 'none'; 27 | case TOAST_TYPE.SUCCESS: 28 | return 'success'; 29 | case TOAST_TYPE.NORMAL: 30 | return 'none'; 31 | default: 32 | return 'none'; 33 | } 34 | }; 35 | 36 | export { Toast, TOAST_TYPE }; 37 | -------------------------------------------------------------------------------- /sample/TUIKit/locales/en/TUIConversation.ts: -------------------------------------------------------------------------------- 1 | const TUIConversation = { 2 | "发起会话": "Start chat", 3 | "发起单聊": "New one-to-one chat", 4 | "发起群聊": "New group chat", 5 | "请输入userID": "Enter a user ID", 6 | "删除会话": "Delete", 7 | "删除后,将清空该聊天的消息记录": "Once deleted, all chat messages will be cleared.", 8 | "删除后,将清空该群聊的消息记录": "Once deleted, group chat history will be cleared.", 9 | "系统通知": "System notification", 10 | "置顶会话": "Pin", 11 | "取消置顶": "Unpin", 12 | "消息免打扰": "Mute Notifications", 13 | "取消免打扰": "Enable Notifications", 14 | "有人@我": "Someone @ me", 15 | "@所有人": "@All", 16 | "条": "strip", 17 | "我": "me", 18 | "网络异常,请您检查网络设置": "Network exception, please check the network settings", 19 | "您已被群管理员移出群聊": "You have been removed from the group chat by the group administrator", 20 | "该群聊已被解散": "The group chat has been disband", 21 | "您已退出该群聊": "You have left the group chat", 22 | } 23 | 24 | export default TUIConversation; 25 | -------------------------------------------------------------------------------- /sample/TUIKit/utils/unifyPromiseVue2.ts: -------------------------------------------------------------------------------- 1 | export default function unifyPromiseVue2() { 2 | try { 3 | // eslint-disable-next-line no-inner-declarations 4 | function isPromise(obj) { 5 | return Boolean(obj) && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'; 6 | } 7 | // Unified vue2 API Promise return format to be consistent with vue3 8 | // eslint-disable-next-line no-undef 9 | (uni as any).addInterceptor({ 10 | returnValue(res) { 11 | if (!isPromise(res)) { 12 | return res; 13 | } 14 | return new Promise((resolve, reject) => { 15 | res.then((res) => { 16 | if (res[0]) { 17 | reject(res[0]); 18 | } else { 19 | resolve(res[1]); 20 | } 21 | }); 22 | }); 23 | }, 24 | }); 25 | // eslint-disable-next-line no-empty 26 | } catch (error) { } 27 | } 28 | --------------------------------------------------------------------------------