├── .editorconfig ├── .gitattributes ├── .gitignore ├── App.vue ├── LICENSE ├── README.md ├── changelog.md ├── common ├── airport.js ├── graceChecker.js ├── html-parser.js ├── permission.js ├── uni-nvue.css ├── uni.css └── util.js ├── components ├── amap-wx │ ├── js │ │ └── util.js │ └── lib │ │ └── amap-wx.js ├── api-set-tabbar.nvue ├── marked │ ├── index.js │ └── lib │ │ └── marked.js ├── page-foot │ └── page-foot.vue ├── page-head │ └── page-head.vue ├── product.vue ├── tab-nvue │ └── mediaList.vue ├── u-charts │ └── u-charts.js └── u-link │ └── u-link.vue ├── hybrid └── html │ └── local.html ├── index.html ├── jest.config.js ├── main.js ├── manifest.json ├── package.json ├── pages.json ├── pages ├── API │ ├── action-sheet │ │ └── action-sheet.vue │ ├── add-phone-contact │ │ └── add-phone-contact.vue │ ├── animation │ │ └── animation.vue │ ├── background-audio │ │ └── background-audio.vue │ ├── bluetooth │ │ └── bluetooth.vue │ ├── brightness │ │ └── brightness.vue │ ├── canvas │ │ └── canvas.vue │ ├── choose-location │ │ └── choose-location.vue │ ├── clipboard │ │ └── clipboard.vue │ ├── download-file │ │ ├── download-file.test.js │ │ └── download-file.vue │ ├── file │ │ └── file.vue │ ├── full-screen-video-ad │ │ └── full-screen-video-ad.vue │ ├── get-location │ │ └── get-location.vue │ ├── get-network-type │ │ └── get-network-type.vue │ ├── get-node-info │ │ ├── get-node-info.test.js │ │ └── get-node-info.vue │ ├── get-system-info │ │ └── get-system-info.vue │ ├── get-user-info │ │ └── get-user-info.vue │ ├── ibeacon │ │ └── ibeacon.vue │ ├── image │ │ └── image.vue │ ├── inner-audio │ │ └── inner-audio.vue │ ├── intersection-observer │ │ └── intersection-observer.vue │ ├── login │ │ └── login.vue │ ├── make-phone-call │ │ └── make-phone-call.vue │ ├── map-search │ │ └── map-search.nvue │ ├── map │ │ └── map.nvue │ ├── modal │ │ └── modal.vue │ ├── navigator │ │ ├── navigator.vue │ │ └── new-page │ │ │ ├── new-nvue-page-1.nvue │ │ │ ├── new-nvue-page-2.nvue │ │ │ ├── new-vue-page-1.vue │ │ │ └── new-vue-page-2.vue │ ├── on-accelerometer-change │ │ └── on-accelerometer-change.vue │ ├── on-compass-change │ │ └── on-compass-change.vue │ ├── open-location │ │ └── open-location.vue │ ├── pull-down-refresh │ │ └── pull-down-refresh.vue │ ├── request-payment │ │ └── request-payment.vue │ ├── request │ │ └── request.vue │ ├── rewarded-video-ad │ │ └── rewarded-video-ad.vue │ ├── save-media │ │ └── save-media.vue │ ├── scan-code │ │ └── scan-code.vue │ ├── set-navigation-bar-title │ │ ├── set-navigation-bar-title.test.js │ │ └── set-navigation-bar-title.vue │ ├── share │ │ └── share.vue │ ├── show-loading │ │ └── show-loading.vue │ ├── soter │ │ └── soter.vue │ ├── sqlite │ │ └── sqlite.vue │ ├── storage │ │ └── storage.vue │ ├── subnvue │ │ ├── subnvue.vue │ │ └── subnvue │ │ │ ├── drawer.nvue │ │ │ ├── popup.nvue │ │ │ └── video-mask.nvue │ ├── toast │ │ └── toast.vue │ ├── upload-file │ │ └── upload-file.vue │ ├── vibrate │ │ └── vibrate.vue │ ├── video │ │ └── video.vue │ ├── voice │ │ └── voice.vue │ ├── websocket-global │ │ └── websocket-global.vue │ └── websocket-socketTask │ │ └── websocket-socketTask.vue ├── about │ └── about.vue ├── component │ ├── ad │ │ └── ad.vue │ ├── audio │ │ └── audio.vue │ ├── button │ │ └── button.vue │ ├── canvas │ │ └── canvas.vue │ ├── checkbox │ │ └── checkbox.vue │ ├── cover-view │ │ ├── cover-view.nvue │ │ └── cover-view.vue │ ├── editor │ │ ├── editor-icon.css │ │ ├── editor.vue │ │ └── iconfont.ttf │ ├── form │ │ └── form.vue │ ├── image │ │ └── image.vue │ ├── input │ │ └── input.nvue │ ├── label │ │ └── label.vue │ ├── map │ │ ├── map.nvue │ │ └── map.vue │ ├── movable-view │ │ └── movable-view.vue │ ├── navigator │ │ ├── navigate │ │ │ └── navigate.vue │ │ ├── navigator.vue │ │ └── redirect │ │ │ └── redirect.vue │ ├── picker-view │ │ └── picker-view.vue │ ├── picker │ │ └── picker.vue │ ├── progress │ │ └── progress.vue │ ├── radio │ │ └── radio.vue │ ├── rich-text │ │ └── rich-text.vue │ ├── scroll-view │ │ └── scroll-view.vue │ ├── slider │ │ └── slider.vue │ ├── swiper │ │ └── swiper.vue │ ├── switch │ │ └── switch.vue │ ├── text │ │ └── text.vue │ ├── textarea │ │ └── textarea.vue │ ├── video │ │ ├── video.nvue │ │ └── video.vue │ ├── view │ │ ├── view.test.js │ │ └── view.vue │ ├── web-view-local │ │ └── web-view-local.vue │ └── web-view │ │ └── web-view.vue ├── error │ └── 404.vue ├── extUI │ ├── badge │ │ └── badge.vue │ ├── breadcrumb │ │ └── breadcrumb.vue │ ├── button │ │ └── button.vue │ ├── calendar │ │ └── calendar.nvue │ ├── card │ │ └── card.nvue │ ├── collapse │ │ └── collapse.vue │ ├── color │ │ └── color.nvue │ ├── combox │ │ └── combox.vue │ ├── countdown │ │ └── countdown.nvue │ ├── data-checkbox │ │ └── data-checkbox.vue │ ├── data-indexed-list │ │ └── data-indexed-list.vue │ ├── data-picker │ │ └── data-picker.nvue │ ├── data-select │ │ └── data-select.vue │ ├── dateformat │ │ └── dateformat.vue │ ├── datetime-picker │ │ └── datetime-picker.vue │ ├── drawer │ │ └── drawer.vue │ ├── easyinput │ │ └── easyinput.vue │ ├── fab │ │ └── fab.vue │ ├── fav │ │ └── fav.vue │ ├── file-picker │ │ └── file-picker.vue │ ├── font │ │ └── font.nvue │ ├── forms │ │ └── forms.vue │ ├── goods-nav │ │ └── goods-nav.nvue │ ├── grid │ │ └── grid.nvue │ ├── group │ │ └── group.vue │ ├── icons │ │ └── icons.nvue │ ├── indexed-list │ │ └── indexed-list.nvue │ ├── link │ │ └── link.vue │ ├── list │ │ ├── chat.vue │ │ └── list.nvue │ ├── load-more │ │ └── load-more.nvue │ ├── nav-bar │ │ └── nav-bar.nvue │ ├── notice-bar │ │ └── notice-bar.vue │ ├── number-box │ │ └── number-box.nvue │ ├── pagination │ │ └── pagination.vue │ ├── popup │ │ └── popup.vue │ ├── radius │ │ └── radius.nvue │ ├── rate │ │ └── rate.nvue │ ├── row │ │ └── row.vue │ ├── search-bar │ │ └── search-bar.vue │ ├── section │ │ └── section.vue │ ├── segmented-control │ │ └── segmented-control.vue │ ├── space │ │ └── space.nvue │ ├── steps │ │ └── steps.vue │ ├── swipe-action │ │ └── swipe-action.vue │ ├── swiper-dot │ │ └── swiper-dot.nvue │ ├── table │ │ ├── table.vue │ │ └── tableData.js │ ├── tag │ │ └── tag.nvue │ ├── title │ │ └── title.vue │ ├── tooltip │ │ └── tooltip.vue │ └── transition │ │ └── transition.vue ├── tabBar │ ├── API │ │ └── API.nvue │ ├── component │ │ ├── component.nvue │ │ └── component.test.js │ ├── extUI │ │ ├── extUI.nvue │ │ └── extUI.test.js │ └── template │ │ └── template.nvue └── template │ ├── component-communication │ ├── bus.js │ ├── component-communication.vue │ ├── reciver.vue │ ├── sender-bus.vue │ └── sender.vue │ ├── crop │ └── crop.vue │ ├── global │ └── global.vue │ ├── list-with-badges │ └── list-with-badges.vue │ ├── list-with-collapses │ └── list-with-collapses.vue │ ├── list2detail-detail │ └── list2detail-detail.vue │ ├── list2detail-list │ └── list2detail-list.vue │ ├── nav-button │ └── nav-button.vue │ ├── nav-city-dropdown │ └── nav-city-dropdown.vue │ ├── nav-default │ └── nav-default.vue │ ├── nav-dot │ └── nav-dot.vue │ ├── nav-image │ └── nav-image.vue │ ├── nav-search-input │ ├── detail │ │ └── detail.vue │ └── nav-search-input.vue │ ├── nav-transparent │ └── nav-transparent.vue │ ├── pinia │ ├── pinia.test.js │ └── pinia.vue │ ├── renderjs │ ├── renderjs.test.js │ └── renderjs.vue │ ├── scheme │ └── scheme.vue │ ├── swiper-list-nvue │ ├── swiper-list-nvue.nvue │ └── swiper-page.nvue │ ├── swiper-list │ ├── swiper-list.nvue │ └── swiper-page.nvue │ ├── swiper-vertical │ └── swiper-vertical.nvue │ ├── tabbar │ ├── detail │ │ └── detail.vue │ ├── news-item.nvue │ └── tabbar.nvue │ ├── ucharts │ └── ucharts.vue │ ├── vant-button │ └── vant-button.vue │ ├── vuex-nvue │ └── vuex-nvue.nvue │ └── vuex-vue │ ├── vuex-vue.vue │ └── vuex.test.js ├── platforms └── app-plus │ ├── feedback │ └── feedback.vue │ ├── orientation │ └── orientation.vue │ ├── proximity │ └── proximity.vue │ ├── push │ └── push.vue │ ├── shake │ └── shake.vue │ └── speech │ └── speech.vue ├── static ├── 60x60.png ├── api.png ├── apiHL.png ├── apiIndex.png ├── app-plus │ ├── location@3x.png │ └── uni@2x.png ├── c1.png ├── c2.png ├── c3.png ├── c4.png ├── c5.png ├── c6.png ├── c7.png ├── c8.png ├── c9.png ├── compass.png ├── component.png ├── componentHL.png ├── componentIndex.png ├── customicons.css ├── customicons.ttf ├── extui.png ├── extuiHL.png ├── extuiIndex.png ├── font │ └── Pacifico-Regular.ttf ├── home-active.png ├── home.png ├── iconfont.css ├── iconfont.ttf ├── icons │ ├── badge.png │ ├── button.png │ ├── calendar.png │ ├── card.png │ ├── collapse.png │ ├── color.png │ ├── combox.png │ ├── countdown.png │ ├── data-checkbox.png │ ├── data-picker.png │ ├── dateformat.png │ ├── datetime-picker.png │ ├── drawer.png │ ├── easyinput.png │ ├── fab.png │ ├── fav.png │ ├── file-picker.png │ ├── font.png │ ├── forms.png │ ├── goods-nav.png │ ├── grid.png │ ├── group.png │ ├── icons.png │ ├── indexed-list.png │ ├── link.png │ ├── list.png │ ├── load-more.png │ ├── nav-bar.png │ ├── notice-bar.png │ ├── number-box.png │ ├── pagination.png │ ├── popup.png │ ├── radius.png │ ├── rate.png │ ├── row.png │ ├── search-bar.png │ ├── section.png │ ├── segmented-control.png │ ├── space.png │ ├── steps.png │ ├── swipe-action.png │ ├── swiper-dot.png │ ├── tag.png │ ├── title.png │ └── transition.png ├── image-active.png ├── image-resize-3.0.1.min.js ├── image.png ├── image │ ├── uniui-header-bg.png │ └── uniui-logo.png ├── location.png ├── logo.png ├── menu.png ├── nav.png ├── pause.png ├── play.png ├── plus.png ├── quill-1.3.7.min.js ├── record.png ├── shuijiao.jpg ├── star-active.png ├── star.png ├── stop.png ├── template.png ├── templateHL.png ├── templateIndex.png ├── trash.png ├── uni.png └── uni.ttf ├── store ├── counter.js └── index.js ├── template.h5.html ├── uni.scss ├── uni_modules ├── uni-badge │ ├── changelog.md │ ├── components │ │ └── uni-badge │ │ │ └── uni-badge.vue │ ├── package.json │ └── readme.md ├── uni-breadcrumb │ ├── changelog.md │ ├── components │ │ ├── uni-breadcrumb-item │ │ │ └── uni-breadcrumb-item.vue │ │ └── uni-breadcrumb │ │ │ └── uni-breadcrumb.vue │ ├── package.json │ └── readme.md ├── uni-calendar │ ├── changelog.md │ ├── components │ │ └── uni-calendar │ │ │ ├── calendar.js │ │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.js │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ │ ├── uni-calendar-item.vue │ │ │ ├── uni-calendar.vue │ │ │ └── util.js │ ├── package.json │ └── readme.md ├── uni-card │ ├── changelog.md │ ├── components │ │ └── uni-card │ │ │ └── uni-card.vue │ ├── package.json │ └── readme.md ├── uni-collapse │ ├── changelog.md │ ├── components │ │ ├── uni-collapse-item │ │ │ └── uni-collapse-item.vue │ │ └── uni-collapse │ │ │ └── uni-collapse.vue │ ├── package.json │ └── readme.md ├── uni-combox │ ├── changelog.md │ ├── components │ │ └── uni-combox │ │ │ └── uni-combox.vue │ ├── package.json │ └── readme.md ├── uni-config-center │ ├── changelog.md │ ├── package.json │ ├── readme.md │ └── uniCloud │ │ └── cloudfunctions │ │ └── common │ │ └── uni-config-center │ │ ├── index.js │ │ └── package.json ├── uni-countdown │ ├── changelog.md │ ├── components │ │ └── uni-countdown │ │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.js │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ │ └── uni-countdown.vue │ ├── package.json │ └── readme.md ├── uni-data-checkbox │ ├── changelog.md │ ├── components │ │ └── uni-data-checkbox │ │ │ ├── clientdb.js │ │ │ └── uni-data-checkbox.vue │ ├── package.json │ └── readme.md ├── uni-data-picker │ ├── changelog.md │ ├── components │ │ ├── uni-data-picker │ │ │ ├── keypress.js │ │ │ ├── uni-data-picker.uvue │ │ │ └── uni-data-picker.vue │ │ └── uni-data-pickerview │ │ │ ├── loading.uts │ │ │ ├── uni-data-picker.js │ │ │ ├── uni-data-picker.uts │ │ │ ├── uni-data-pickerview.css │ │ │ ├── uni-data-pickerview.uvue │ │ │ └── uni-data-pickerview.vue │ ├── package.json │ └── readme.md ├── uni-data-select │ ├── changelog.md │ ├── components │ │ └── uni-data-select │ │ │ └── uni-data-select.vue │ ├── package.json │ └── readme.md ├── uni-dateformat │ ├── changelog.md │ ├── components │ │ └── uni-dateformat │ │ │ ├── date-format.js │ │ │ └── uni-dateformat.vue │ ├── package.json │ └── readme.md ├── uni-datetime-picker │ ├── changelog.md │ ├── components │ │ └── uni-datetime-picker │ │ │ ├── calendar-item.vue │ │ │ ├── calendar.js │ │ │ ├── calendar.vue │ │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.js │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ │ ├── keypress.js │ │ │ ├── time-picker.vue │ │ │ ├── uni-datetime-picker.vue │ │ │ └── util.js │ ├── package.json │ └── readme.md ├── uni-drawer │ ├── changelog.md │ ├── components │ │ └── uni-drawer │ │ │ ├── keypress.js │ │ │ └── uni-drawer.vue │ ├── package.json │ └── readme.md ├── uni-easyinput │ ├── changelog.md │ ├── components │ │ └── uni-easyinput │ │ │ ├── common.js │ │ │ └── uni-easyinput.vue │ ├── package.json │ └── readme.md ├── uni-fab │ ├── changelog.md │ ├── components │ │ └── uni-fab │ │ │ ├── uni-fab.vue │ │ │ └── uni-fab.vue.bak │ ├── package.json │ └── readme.md ├── uni-fav │ ├── changelog.md │ ├── components │ │ └── uni-fav │ │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.js │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ │ └── uni-fav.vue │ ├── package.json │ └── readme.md ├── uni-file-picker │ ├── changelog.md │ ├── components │ │ └── uni-file-picker │ │ │ ├── choose-and-upload-file.js │ │ │ ├── uni-file-picker.vue │ │ │ ├── upload-file.vue │ │ │ ├── upload-image.vue │ │ │ └── utils.js │ ├── package.json │ └── readme.md ├── uni-forms │ ├── changelog.md │ ├── components │ │ ├── uni-forms-item │ │ │ └── uni-forms-item.vue │ │ └── uni-forms │ │ │ ├── uni-forms.vue │ │ │ ├── utils.js │ │ │ └── validate.js │ ├── package.json │ └── readme.md ├── uni-goods-nav │ ├── changelog.md │ ├── components │ │ └── uni-goods-nav │ │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.js │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ │ └── uni-goods-nav.vue │ ├── package.json │ └── readme.md ├── uni-grid │ ├── changelog.md │ ├── components │ │ ├── uni-grid-item │ │ │ └── uni-grid-item.vue │ │ └── uni-grid │ │ │ └── uni-grid.vue │ ├── package.json │ └── readme.md ├── uni-group │ ├── changelog.md │ ├── components │ │ └── uni-group │ │ │ └── uni-group.vue │ ├── package.json │ └── readme.md ├── uni-icons │ ├── changelog.md │ ├── components │ │ └── uni-icons │ │ │ ├── icons.js │ │ │ ├── uni-icons.uvue │ │ │ ├── uni-icons.vue │ │ │ ├── uni.ttf │ │ │ ├── uniicons.css │ │ │ ├── uniicons.ttf │ │ │ ├── uniicons_file.ts │ │ │ └── uniicons_file_vue.js │ ├── package.json │ └── readme.md ├── uni-id │ ├── changelog.md │ ├── package.json │ ├── readme.md │ └── uniCloud │ │ └── cloudfunctions │ │ └── common │ │ └── uni-id │ │ ├── LICENSE.md │ │ ├── index.js │ │ └── package.json ├── uni-indexed-list │ ├── changelog.md │ ├── components │ │ └── uni-indexed-list │ │ │ ├── uni-indexed-list-item.vue │ │ │ └── uni-indexed-list.vue │ ├── package.json │ └── readme.md ├── uni-installApk │ ├── changelog.md │ ├── package.json │ ├── readme.md │ └── utssdk │ │ ├── app-android │ │ ├── AndroidManifest.xml │ │ └── index.uts │ │ ├── app-ios │ │ └── index.uts │ │ ├── index.d.ts │ │ ├── interface.uts │ │ └── unierror.uts ├── uni-link │ ├── changelog.md │ ├── components │ │ └── uni-link │ │ │ └── uni-link.vue │ ├── package.json │ └── readme.md ├── uni-list │ ├── changelog.md │ ├── components │ │ ├── uni-list-ad │ │ │ └── uni-list-ad.vue │ │ ├── uni-list-chat │ │ │ ├── uni-list-chat.scss │ │ │ └── uni-list-chat.vue │ │ ├── uni-list-item │ │ │ └── uni-list-item.vue │ │ └── uni-list │ │ │ ├── uni-list - 副本.vue │ │ │ ├── uni-list.vue │ │ │ ├── uni-refresh.vue │ │ │ └── uni-refresh.wxs │ ├── package.json │ └── readme.md ├── uni-load-more │ ├── changelog.md │ ├── components │ │ └── uni-load-more │ │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.js │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ │ └── uni-load-more.vue │ ├── package.json │ └── readme.md ├── uni-nav-bar │ ├── changelog.md │ ├── components │ │ └── uni-nav-bar │ │ │ ├── uni-nav-bar.vue │ │ │ └── uni-status-bar.vue │ ├── package.json │ └── readme.md ├── uni-notice-bar │ ├── changelog.md │ ├── components │ │ └── uni-notice-bar │ │ │ └── uni-notice-bar.vue │ ├── package.json │ └── readme.md ├── uni-number-box │ ├── changelog.md │ ├── components │ │ └── uni-number-box │ │ │ └── uni-number-box.vue │ ├── package.json │ └── readme.md ├── uni-open-bridge-common │ ├── changelog.md │ ├── package.json │ ├── readme.md │ └── uniCloud │ │ ├── cloudfunctions │ │ └── common │ │ │ └── uni-open-bridge-common │ │ │ ├── bridge-error.js │ │ │ ├── config.js │ │ │ ├── consts.js │ │ │ ├── index.js │ │ │ ├── package.json │ │ │ ├── storage.js │ │ │ ├── uni-cloud-cache.js │ │ │ ├── validator.js │ │ │ └── weixin-server.js │ │ └── database │ │ └── opendb-open-data.schema.json ├── uni-pagination │ ├── changelog.md │ ├── components │ │ └── uni-pagination │ │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── es.json │ │ │ ├── fr.json │ │ │ ├── index.js │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ │ └── uni-pagination.vue │ ├── package.json │ └── readme.md ├── uni-popup │ ├── changelog.md │ ├── components │ │ ├── uni-popup-dialog │ │ │ ├── keypress.js │ │ │ └── uni-popup-dialog.vue │ │ ├── uni-popup-message │ │ │ └── uni-popup-message.vue │ │ ├── uni-popup-share │ │ │ └── uni-popup-share.vue │ │ └── uni-popup │ │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.js │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ │ ├── keypress.js │ │ │ ├── popup.js │ │ │ ├── uni-popup.uvue │ │ │ └── uni-popup.vue │ ├── package.json │ └── readme.md ├── uni-rate │ ├── changelog.md │ ├── components │ │ └── uni-rate │ │ │ └── uni-rate.vue │ ├── package.json │ └── readme.md ├── uni-row │ ├── changelog.md │ ├── components │ │ ├── uni-col │ │ │ └── uni-col.vue │ │ └── uni-row │ │ │ └── uni-row.vue │ ├── package.json │ └── readme.md ├── uni-scss │ ├── changelog.md │ ├── index.scss │ ├── package.json │ ├── readme.md │ ├── styles │ │ ├── index.scss │ │ ├── setting │ │ │ ├── _border.scss │ │ │ ├── _color.scss │ │ │ ├── _radius.scss │ │ │ ├── _space.scss │ │ │ ├── _styles.scss │ │ │ ├── _text.scss │ │ │ └── _variables.scss │ │ └── tools │ │ │ └── functions.scss │ ├── theme.scss │ └── variables.scss ├── uni-search-bar │ ├── changelog.md │ ├── components │ │ └── uni-search-bar │ │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.js │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ │ └── uni-search-bar.vue │ ├── package.json │ └── readme.md ├── uni-section │ ├── changelog.md │ ├── components │ │ └── uni-section │ │ │ └── uni-section.vue │ ├── package.json │ └── readme.md ├── uni-segmented-control │ ├── changelog.md │ ├── components │ │ └── uni-segmented-control │ │ │ └── uni-segmented-control.vue │ ├── package.json │ └── readme.md ├── uni-steps │ ├── changelog.md │ ├── components │ │ └── uni-steps │ │ │ └── uni-steps.vue │ ├── package.json │ └── readme.md ├── uni-swipe-action │ ├── changelog.md │ ├── components │ │ ├── uni-swipe-action-item │ │ │ ├── bindingx.js │ │ │ ├── index.wxs │ │ │ ├── isPC.js │ │ │ ├── mpalipay.js │ │ │ ├── mpother.js │ │ │ ├── mpwxs.js │ │ │ ├── render.js │ │ │ ├── uni-swipe-action-item.vue │ │ │ └── wx.wxs │ │ └── uni-swipe-action │ │ │ └── uni-swipe-action.vue │ ├── package.json │ └── readme.md ├── uni-swiper-dot │ ├── changelog.md │ ├── components │ │ └── uni-swiper-dot │ │ │ └── uni-swiper-dot.vue │ ├── package.json │ └── readme.md ├── uni-table │ ├── changelog.md │ ├── components │ │ ├── uni-table │ │ │ └── uni-table.vue │ │ ├── uni-tbody │ │ │ └── uni-tbody.vue │ │ ├── uni-td │ │ │ └── uni-td.vue │ │ ├── uni-th │ │ │ ├── filter-dropdown.vue │ │ │ └── uni-th.vue │ │ ├── uni-thead │ │ │ └── uni-thead.vue │ │ └── uni-tr │ │ │ ├── table-checkbox.vue │ │ │ └── uni-tr.vue │ ├── i18n │ │ ├── en.json │ │ ├── es.json │ │ ├── fr.json │ │ ├── index.js │ │ ├── zh-Hans.json │ │ └── zh-Hant.json │ ├── package.json │ └── readme.md ├── uni-tag │ ├── changelog.md │ ├── components │ │ └── uni-tag │ │ │ └── uni-tag.vue │ ├── package.json │ └── readme.md ├── uni-title │ ├── changelog.md │ ├── components │ │ └── uni-title │ │ │ └── uni-title.vue │ ├── package.json │ └── readme.md ├── uni-tooltip │ ├── changelog.md │ ├── components │ │ └── uni-tooltip │ │ │ └── uni-tooltip.vue │ ├── package.json │ └── readme.md ├── uni-transition │ ├── changelog.md │ ├── components │ │ └── uni-transition │ │ │ ├── createAnimation.js │ │ │ └── uni-transition.vue │ ├── package.json │ └── readme.md ├── uni-upgrade-center-app │ ├── changelog.md │ ├── components │ │ └── uni-upgrade-center-app │ │ │ └── uni-upgrade-center-app.uvue │ ├── images │ │ ├── app_update_close.png │ │ └── bg_top.png │ ├── package.json │ ├── pages │ │ └── upgrade-popup.vue │ ├── pages_init.json │ ├── readme.md │ ├── static │ │ ├── app_update_close.png │ │ └── bg_top.png │ ├── uniCloud │ │ ├── cloudfunctions │ │ │ ├── check-version │ │ │ │ ├── check-version.param.json │ │ │ │ └── index.js │ │ │ ├── checkVersion │ │ │ │ ├── checkVersion.param.json │ │ │ │ ├── index.obj.js │ │ │ │ └── package.json │ │ │ └── temp.png │ │ └── database │ │ │ └── db_init.json │ └── utils │ │ ├── call-check-version.js │ │ ├── call-check-version.ts │ │ ├── check-update-nvue.js │ │ ├── check-update.js │ │ ├── check-update.ts │ │ └── utils.uts └── uts-progressNotification │ ├── changelog.md │ ├── package.json │ ├── readme.md │ └── utssdk │ ├── app-android │ ├── AndroidManifest.xml │ ├── TransparentActivity.uts │ ├── callbacks.uts │ ├── config.json │ ├── constant.uts │ ├── index.uts │ └── res │ │ └── values │ │ └── notification_progress_styles.xml │ ├── interface.uts │ └── unierror.uts ├── windows ├── left-window.vue └── top-window.vue └── wxcomponents └── vant ├── button ├── index.d.ts ├── index.js ├── index.json ├── index.wxml └── index.wxss ├── common ├── color.d.ts ├── color.js ├── component.d.ts ├── component.js ├── index.wxss ├── style │ ├── clearfix.wxss │ ├── ellipsis.wxss │ ├── hairline.wxss │ ├── mixins │ │ ├── clearfix.wxss │ │ ├── ellipsis.wxss │ │ └── hairline.wxss │ ├── theme.wxss │ └── var.wxss ├── utils.d.ts └── utils.js ├── icon ├── index.d.ts ├── index.js ├── index.json ├── index.wxml └── index.wxss ├── info ├── index.d.ts ├── index.js ├── index.json ├── index.wxml └── index.wxss ├── loading ├── index.d.ts ├── index.js ├── index.json ├── index.wxml └── index.wxss ├── mixins ├── basic.d.ts ├── basic.js ├── button.d.ts ├── button.js ├── link.d.ts ├── link.js ├── observer │ ├── behavior.d.ts │ ├── behavior.js │ ├── index.d.ts │ └── index.js ├── open-type.d.ts ├── open-type.js ├── touch.d.ts ├── touch.js ├── transition.d.ts └── transition.js └── wxs ├── array.wxs ├── bem.wxs ├── memoize.wxs ├── object.wxs └── utils.wxs /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | # all files 6 | [*] 7 | charset = utf-8 8 | indent_style = tab 9 | indent_size = 4 10 | end_of_line = lf 11 | insert_final_newline = true 12 | trim_trailing_whitespace = true 13 | 14 | # md files 15 | [*.md] 16 | insert_final_newline = false 17 | trim_trailing_whitespace = false -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.nvue linguist-language=Vue -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .project 3 | unpackage/ 4 | .DS_Store 5 | wxcomponents/**/*.vue 6 | wxcomponents/**/*.css 7 | .hbuilderx/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 DCloud 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /components/marked/index.js: -------------------------------------------------------------------------------- 1 | export default './lib/marked' 2 | -------------------------------------------------------------------------------- /components/page-foot/page-foot.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 27 | 39 | -------------------------------------------------------------------------------- /components/page-head/page-head.vue: -------------------------------------------------------------------------------- 1 | 6 | 17 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | testTimeout: 20000, 3 | reporters: [ 4 | 'default' 5 | ], 6 | watchPathIgnorePatterns: ['/node_modules/', '/dist/', '/.git/'], 7 | moduleFileExtensions: ['js', 'json'], 8 | rootDir: __dirname, 9 | testMatch: ["/pages/**/*test.[jt]s?(x)"], 10 | testPathIgnorePatterns: ['/node_modules/'] 11 | } 12 | -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | import App from './App' 2 | import store from './store' 3 | 4 | // #ifndef VUE3 5 | import Vue from 'vue' 6 | Vue.config.productionTip = false 7 | Vue.prototype.$store = store 8 | Vue.prototype.$adpid = "1111111111" 9 | Vue.prototype.$backgroundAudioData = { 10 | playing: false, 11 | playTime: 0, 12 | formatedPlayTime: '00:00:00' 13 | } 14 | App.mpType = 'app' 15 | const app = new Vue({ 16 | store, 17 | ...App 18 | }) 19 | app.$mount() 20 | // #endif 21 | 22 | // #ifdef VUE3 23 | import { 24 | createSSRApp 25 | } from 'vue' 26 | import * as Pinia from 'pinia'; 27 | import Vuex from "vuex"; 28 | export function createApp() { 29 | const app = createSSRApp(App) 30 | app.use(store) 31 | app.use(Pinia.createPinia()); 32 | app.config.globalProperties.$adpid = "1111111111" 33 | app.config.globalProperties.$backgroundAudioData = { 34 | playing: false, 35 | playTime: 0, 36 | formatedPlayTime: '00:00:00' 37 | } 38 | return { 39 | app, 40 | Vuex, // 如果 nvue 使用 vuex 的各种map工具方法时,必须 return Vuex 41 | Pinia // 此处必须将 Pinia 返回 42 | } 43 | } 44 | // #endif 45 | -------------------------------------------------------------------------------- /pages/API/download-file/download-file.test.js: -------------------------------------------------------------------------------- 1 | const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase() 2 | describe('pages/API/download-file/download-file.vue', () => { 3 | let page; 4 | const versions = ['12.4', '13.7', '15.5', '17.4', '17.5_深色主题', '18.1']; 5 | const [platform, version] = platformInfo.split(' '); 6 | if (platform === 'ios_simulator' && versions.includes(version)) { 7 | it('skip', async () => { 8 | expect(1).toBe(1); 9 | }); 10 | return; 11 | } 12 | beforeAll(async () => { 13 | page = await program.reLaunch('/pages/API/download-file/download-file') 14 | await page.waitFor('view') 15 | }); 16 | it('check download url', async () => { 17 | expect.assertions(2); 18 | await page.callMethod('downloadImage') 19 | const waitTime = process.env.uniTestPlatformInfo.includes('firefox') ? 5000:2000 20 | const start = Date.now(); 21 | await page.waitFor(async () => { 22 | return await page.data('jest_result') === true || (Date.now() - start > waitTime) 23 | }) 24 | expect(await page.data('jest_result')).toBeTruthy(); 25 | expect(await page.data('imageSrc')).toBeTruthy(); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /pages/API/get-node-info/get-node-info.test.js: -------------------------------------------------------------------------------- 1 | describe('测试 css 变量', () => { 2 | let page 3 | const isApp = process.env.UNI_PLATFORM.includes('app'); 4 | beforeAll(async () => { 5 | // 重新reLaunch至首页,并获取首页page对象(其中 program 是uni-automator自动注入的全局对象) 6 | page = await program.reLaunch('/pages/API/get-node-info/get-node-info') 7 | await page.waitFor(1000) 8 | }) 9 | 10 | it('css var', async () => { 11 | 12 | if (isApp) { 13 | const element1 = await page.$('.box1') 14 | const size = await element1.size() 15 | expect(size.height > 0).toBe(true) 16 | 17 | const element2 = await page.$('.box2') 18 | const size2 = await element2.size() 19 | expect(size2.height === 0).toBe(true) 20 | 21 | const element3 = await page.$('.box3') 22 | const size3 = await element3.size() 23 | expect(size3.height === 0).toBe(true) 24 | 25 | const element4 = await page.$('.box4') 26 | const size4 = await element4.size() 27 | expect(size4.height > size.height).toBe(true) 28 | } else { 29 | expect(1).toBe(1) 30 | } 31 | }) 32 | }); 33 | -------------------------------------------------------------------------------- /pages/API/make-phone-call/make-phone-call.vue: -------------------------------------------------------------------------------- 1 | 13 | 41 | 42 | 51 | -------------------------------------------------------------------------------- /pages/API/modal/modal.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /pages/API/set-navigation-bar-title/set-navigation-bar-title.test.js: -------------------------------------------------------------------------------- 1 | describe('pages/API/set-navigation-bar-title/set-navigation-bar-title.vue', () => { 2 | let page 3 | beforeAll(async () => { 4 | // 重新reLaunch至首页,并获取首页page对象(其中 program 是uni-automator自动注入的全局对象) 5 | page = await program.reLaunch('/pages/API/set-navigation-bar-title/set-navigation-bar-title') 6 | const waitTime = process.env.UNI_PLATFORM === "mp-weixin" ? 10000 : 5000 7 | await page.waitFor(waitTime) 8 | page = await program.currentPage() 9 | }) 10 | it('set-navigation-bar-title 组件标题', async () => { 11 | let view = await page.$('.common-page-head-title') 12 | expect(await view.text()).toBe('nav-default') 13 | }) 14 | }) 15 | -------------------------------------------------------------------------------- /pages/API/set-navigation-bar-title/set-navigation-bar-title.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 42 | 43 | 45 | -------------------------------------------------------------------------------- /pages/API/show-loading/show-loading.vue: -------------------------------------------------------------------------------- 1 | 14 | 46 | 47 | 50 | -------------------------------------------------------------------------------- /pages/API/vibrate/vibrate.vue: -------------------------------------------------------------------------------- 1 | 16 | 42 | 43 | 60 | -------------------------------------------------------------------------------- /pages/component/audio/audio.vue: -------------------------------------------------------------------------------- 1 | 13 | 30 | -------------------------------------------------------------------------------- /pages/component/editor/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dcloudio/hello-uniapp/396be09a7b41a76e3dd9b52a56a6df645446c5c3/pages/component/editor/iconfont.ttf -------------------------------------------------------------------------------- /pages/component/image/image.vue: -------------------------------------------------------------------------------- 1 | 20 | 29 | 35 | -------------------------------------------------------------------------------- /pages/component/map/map.vue: -------------------------------------------------------------------------------- 1 | 12 | 47 | 53 | -------------------------------------------------------------------------------- /pages/component/navigator/navigate/navigate.vue: -------------------------------------------------------------------------------- 1 | 6 | 15 | -------------------------------------------------------------------------------- /pages/component/navigator/navigator.vue: -------------------------------------------------------------------------------- 1 | 19 | 34 | -------------------------------------------------------------------------------- /pages/component/navigator/redirect/redirect.vue: -------------------------------------------------------------------------------- 1 | 6 | 15 | -------------------------------------------------------------------------------- /pages/component/rich-text/rich-text.vue: -------------------------------------------------------------------------------- 1 | 24 | 45 | -------------------------------------------------------------------------------- /pages/component/slider/slider.vue: -------------------------------------------------------------------------------- 1 | 27 | 41 | -------------------------------------------------------------------------------- /pages/component/switch/switch.vue: -------------------------------------------------------------------------------- 1 | 30 | 47 | 48 | -------------------------------------------------------------------------------- /pages/component/textarea/textarea.vue: -------------------------------------------------------------------------------- 1 |