From b6df4bb62f5350459432e34477e08bd2a765bdbd Mon Sep 17 00:00:00 2001 From: renguanyu111 <80379958+renguanyu111@users.noreply.github.com> Date: Mon, 14 Feb 2022 13:21:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E6=9C=BA=E7=89=88=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .hbuilderx/launch.json | 16 + App.vue | 19 + LICENSE | 21 + README.md | 101 ++ common/api.js | 3 + common/config.js | 3 + common/demo.scss | 45 + common/mixin.js | 7 + common/props.js | 2 + components/page-nav/page-nav.vue | 113 ++ main.js | 35 + manifest.json | 153 ++ package.json | 11 + pages.json | 432 ++++++ pages/componentsA/backtop/backtop.nvue | 132 ++ pages/componentsA/button/button.nvue | 330 ++++ pages/componentsA/cell/cell.nvue | 201 +++ pages/componentsA/checkbox/checkbox.nvue | 329 ++++ pages/componentsA/divider/divider.nvue | 82 + pages/componentsA/empty/empty.nvue | 143 ++ pages/componentsA/gap/gap.nvue | 42 + pages/componentsA/grid/grid.nvue | 193 +++ pages/componentsA/icon/icon.nvue | 664 ++++++++ pages/componentsA/image/image.nvue | 76 + pages/componentsA/line/line.nvue | 74 + pages/componentsA/link/link.nvue | 75 + .../loading-icon/loading-icon.nvue | 79 + .../loading-page/loading-page.nvue | 130 ++ pages/componentsA/overlay/overlay.nvue | 103 ++ pages/componentsA/popup/popup.nvue | 182 +++ pages/componentsA/radio/radio.nvue | 330 ++++ pages/componentsA/rate/rate.nvue | 138 ++ pages/componentsA/sticky/sticky.nvue | 57 + .../componentsA/swipeAction/swipeAction.nvue | 228 +++ pages/componentsA/test/test.vue | 5 + pages/componentsA/transition/transition.nvue | 164 ++ .../componentsB/actionSheet/actionSheet.nvue | 188 +++ pages/componentsB/alert/alert.nvue | 146 ++ pages/componentsB/badge/badge.nvue | 163 ++ pages/componentsB/code/code.nvue | 157 ++ pages/componentsB/collapse/collapse.nvue | 180 +++ pages/componentsB/color/color.nvue | 291 ++++ pages/componentsB/countDown/countDown.nvue | 240 +++ pages/componentsB/countTo/countTo.nvue | 176 +++ pages/componentsB/dropdown/dropdown.nvue | 31 + pages/componentsB/keyboard/keyboard.nvue | 131 ++ pages/componentsB/noticeBar/noticeBar.nvue | 102 ++ pages/componentsB/notify/notify.nvue | 146 ++ pages/componentsB/numberBox/numberBox.nvue | 250 +++ pages/componentsB/parse/content.js | 203 +++ pages/componentsB/parse/jump.vue | 12 + pages/componentsB/parse/parse.nvue | 51 + pages/componentsB/progress/progress.nvue | 155 ++ pages/componentsB/search/search.nvue | 202 +++ pages/componentsB/slider/slider.nvue | 81 + pages/componentsB/switch/switch.nvue | 177 +++ pages/componentsB/tabbar/tabbar.nvue | 274 ++++ pages/componentsB/tag/tag.nvue | 335 ++++ pages/componentsB/toast/toast.nvue | 113 ++ pages/componentsB/upload/upload.nvue | 180 +++ pages/componentsC/album/album.nvue | 218 +++ pages/componentsC/avatar/avatar.nvue | 182 +++ pages/componentsC/calendar/calendar.nvue | 169 +++ pages/componentsC/codeInput/codeInput.nvue | 153 ++ .../datetimePicker/datetimePicker.nvue | 233 +++ pages/componentsC/form/form.nvue | 425 ++++++ pages/componentsC/indexList/indexList.nvue | 126 ++ pages/componentsC/input/input.nvue | 180 +++ pages/componentsC/layout/layout.nvue | 156 ++ pages/componentsC/list/list.nvue | 67 + pages/componentsC/loadmore/loadmore.nvue | 82 + pages/componentsC/modal/modal.nvue | 195 +++ pages/componentsC/navbar/navbar.nvue | 121 ++ pages/componentsC/noNetwork/noNetwork.nvue | 68 + pages/componentsC/picker/picker.nvue | 203 +++ pages/componentsC/readMore/readMore.nvue | 49 + pages/componentsC/scrollList/scrollList.nvue | 249 +++ pages/componentsC/skeleton/skeleton.nvue | 157 ++ pages/componentsC/steps/steps.vue | 216 +++ pages/componentsC/subsection/subsection.nvue | 99 ++ pages/componentsC/swiper/swiper.nvue | 213 +++ pages/componentsC/table/table.nvue | 26 + pages/componentsC/tabs/tabs.nvue | 209 +++ pages/componentsC/text/text.nvue | 173 +++ pages/componentsC/textarea/textarea.nvue | 77 + pages/componentsC/tooltip/tooltip.vue | 86 ++ pages/example/components.config.js | 418 +++++ pages/example/components.nvue | 71 + pages/index/detail/detail.vue | 22 + pages/index/index - 副本.vue | 256 ++++ pages/index/index.vue | 294 ++++ pages/index/news-item.nvue | 211 +++ pages/index/tabControl-tag.vue | 224 +++ static/app-plus/mp-html/js/handler.js | 224 +++ static/app-plus/mp-html/js/uni.webview.min.js | 19 + static/app-plus/mp-html/local.html | 1 + static/common/js/touch-emulator.js | 363 +++++ static/uview/common/favicon.ico | Bin 0 -> 4286 bytes static/uview/common/gray-logo.png | Bin 0 -> 10255 bytes static/uview/common/logo.png | Bin 0 -> 15558 bytes static/uview/example/component.png | Bin 0 -> 1026 bytes static/uview/example/component_select.png | Bin 0 -> 1005 bytes static/uview/example/js.png | Bin 0 -> 1966 bytes static/uview/example/js_bak.png | Bin 0 -> 3212 bytes static/uview/example/js_select.png | Bin 0 -> 2097 bytes static/uview/example/template.png | Bin 0 -> 1148 bytes static/uview/example/template_select.png | Bin 0 -> 1164 bytes store/index.js | 17 + template.h5.html | 42 + uni.scss | 6 + uni_modules/uview-ui/LICENSE | 21 + uni_modules/uview-ui/README.md | 110 ++ uni_modules/uview-ui/changelog.md | 154 ++ .../uview-ui/components/u--form/u--form.vue | 78 + .../uview-ui/components/u--image/u--image.vue | 40 + .../uview-ui/components/u--input/u--input.vue | 72 + .../uview-ui/components/u--text/u--text.vue | 43 + .../components/u--textarea/u--textarea.vue | 47 + .../components/u-action-sheet/props.js | 54 + .../u-action-sheet/u-action-sheet.vue | 275 ++++ .../uview-ui/components/u-album/props.js | 59 + .../uview-ui/components/u-album/u-album.vue | 259 ++++ .../uview-ui/components/u-alert/props.js | 44 + .../uview-ui/components/u-alert/u-alert.vue | 243 +++ .../components/u-avatar-group/props.js | 52 + .../u-avatar-group/u-avatar-group.vue | 103 ++ .../uview-ui/components/u-avatar/props.js | 78 + .../uview-ui/components/u-avatar/u-avatar.vue | 168 +++ .../uview-ui/components/u-back-top/props.js | 54 + .../components/u-back-top/u-back-top.vue | 137 ++ .../uview-ui/components/u-badge/props.js | 72 + .../uview-ui/components/u-badge/u-badge.vue | 171 +++ .../uview-ui/components/u-button/nvue.scss | 46 + .../uview-ui/components/u-button/props.js | 161 ++ .../uview-ui/components/u-button/u-button.vue | 490 ++++++ .../uview-ui/components/u-button/vue.scss | 80 + .../uview-ui/components/u-calendar/header.vue | 99 ++ .../uview-ui/components/u-calendar/month.vue | 577 +++++++ .../uview-ui/components/u-calendar/props.js | 139 ++ .../components/u-calendar/u-calendar.vue | 289 ++++ .../uview-ui/components/u-calendar/util.js | 85 ++ .../components/u-car-keyboard/props.js | 14 + .../u-car-keyboard/u-car-keyboard.vue | 311 ++++ .../uview-ui/components/u-cell-group/props.js | 14 + .../components/u-cell-group/u-cell-group.vue | 61 + .../uview-ui/components/u-cell/props.js | 109 ++ .../uview-ui/components/u-cell/u-cell.vue | 224 +++ .../components/u-checkbox-group/props.js | 82 + .../u-checkbox-group/u-checkbox-group.vue | 103 ++ .../uview-ui/components/u-checkbox/props.js | 69 + .../components/u-checkbox/u-checkbox.vue | 344 +++++ .../components/u-circle-progress/props.js | 8 + .../u-circle-progress/u-circle-progress.vue | 198 +++ .../uview-ui/components/u-code-input/props.js | 74 + .../components/u-code-input/u-code-input.vue | 213 +++ .../uview-ui/components/u-code/props.js | 34 + .../uview-ui/components/u-code/u-code.vue | 129 ++ .../uview-ui/components/u-col/props.js | 29 + .../uview-ui/components/u-col/u-col.vue | 159 ++ .../components/u-collapse-item/props.js | 59 + .../u-collapse-item/u-collapse-item.vue | 229 +++ .../uview-ui/components/u-collapse/props.js | 19 + .../components/u-collapse/u-collapse.vue | 90 ++ .../components/u-column-notice/props.js | 55 + .../u-column-notice/u-column-notice.vue | 156 ++ .../uview-ui/components/u-count-down/props.js | 24 + .../components/u-count-down/u-count-down.vue | 162 ++ .../uview-ui/components/u-count-down/utils.js | 62 + .../uview-ui/components/u-count-to/props.js | 59 + .../components/u-count-to/u-count-to.vue | 184 +++ .../components/u-datetime-picker/props.js | 116 ++ .../u-datetime-picker/u-datetime-picker.vue | 341 +++++ .../uview-ui/components/u-divider/props.js | 44 + .../components/u-divider/u-divider.vue | 115 ++ .../components/u-dropdown-item/props.js | 36 + .../u-dropdown-item/u-dropdown-item.vue | 146 ++ .../uview-ui/components/u-dropdown/props.js | 65 + .../components/u-dropdown/u-dropdown.vue | 127 ++ .../uview-ui/components/u-empty/props.js | 59 + .../uview-ui/components/u-empty/u-empty.vue | 128 ++ .../uview-ui/components/u-form-item/props.js | 39 + .../components/u-form-item/u-form-item.vue | 228 +++ .../uview-ui/components/u-form/props.js | 45 + .../uview-ui/components/u-form/u-form.vue | 205 +++ .../uview-ui/components/u-gap/props.js | 24 + .../uview-ui/components/u-gap/u-gap.vue | 38 + .../uview-ui/components/u-grid-item/props.js | 14 + .../components/u-grid-item/u-grid-item.vue | 196 +++ .../uview-ui/components/u-grid/props.js | 19 + .../uview-ui/components/u-grid/u-grid.vue | 99 ++ .../uview-ui/components/u-icon/icons.js | 214 +++ .../uview-ui/components/u-icon/props.js | 89 ++ .../uview-ui/components/u-icon/u-icon.vue | 234 +++ .../uview-ui/components/u-image/props.js | 84 ++ .../uview-ui/components/u-image/u-image.vue | 219 +++ .../components/u-index-anchor/props.js | 29 + .../u-index-anchor/u-index-anchor.vue | 91 ++ .../uview-ui/components/u-index-item/props.js | 5 + .../components/u-index-item/u-index-item.vue | 87 ++ .../uview-ui/components/u-index-list/props.js | 29 + .../components/u-index-list/u-index-list.vue | 438 ++++++ .../uview-ui/components/u-input/props.js | 182 +++ .../uview-ui/components/u-input/u-input.vue | 350 +++++ .../uview-ui/components/u-keyboard/props.js | 84 ++ .../components/u-keyboard/u-keyboard.vue | 164 ++ .../components/u-line-progress/props.js | 28 + .../u-line-progress/u-line-progress.vue | 144 ++ .../uview-ui/components/u-line/props.js | 33 + .../uview-ui/components/u-line/u-line.vue | 62 + .../uview-ui/components/u-link/props.js | 39 + .../uview-ui/components/u-link/u-link.vue | 83 + .../uview-ui/components/u-list-item/props.js | 9 + .../components/u-list-item/u-list-item.vue | 116 ++ .../uview-ui/components/u-list/props.js | 76 + .../uview-ui/components/u-list/u-list.vue | 159 ++ .../components/u-loading-icon/props.js | 59 + .../u-loading-icon/u-loading-icon.vue | 343 +++++ .../components/u-loading-page/props.js | 44 + .../u-loading-page/u-loading-page.vue | 110 ++ .../uview-ui/components/u-loadmore/props.js | 80 + .../components/u-loadmore/u-loadmore.vue | 145 ++ .../uview-ui/components/u-modal/props.js | 84 ++ .../uview-ui/components/u-modal/u-modal.vue | 227 +++ .../uview-ui/components/u-navbar/props.js | 69 + .../uview-ui/components/u-navbar/u-navbar.vue | 173 +++ .../uview-ui/components/u-no-network/props.js | 19 + .../components/u-no-network/u-no-network.vue | 219 +++ .../uview-ui/components/u-notice-bar/props.js | 70 + .../components/u-notice-bar/u-notice-bar.vue | 101 ++ .../uview-ui/components/u-notify/props.js | 49 + .../uview-ui/components/u-notify/u-notify.vue | 211 +++ .../uview-ui/components/u-number-box/props.js | 109 ++ .../components/u-number-box/u-number-box.vue | 417 +++++ .../components/u-number-keyboard/props.js | 19 + .../u-number-keyboard/u-number-keyboard.vue | 196 +++ .../uview-ui/components/u-overlay/props.js | 24 + .../components/u-overlay/u-overlay.vue | 68 + .../uview-ui/components/u-parse/node/node.vue | 499 ++++++ .../uview-ui/components/u-parse/parser.js | 1075 +++++++++++++ .../uview-ui/components/u-parse/props.js | 45 + .../uview-ui/components/u-parse/u-parse.vue | 366 +++++ .../components/u-picker-column/props.js | 5 + .../u-picker-column/u-picker-column.vue | 27 + .../uview-ui/components/u-picker/props.js | 79 + .../uview-ui/components/u-picker/u-picker.vue | 281 ++++ .../uview-ui/components/u-popup/props.js | 79 + .../uview-ui/components/u-popup/u-popup.vue | 301 ++++ .../components/u-radio-group/props.js | 85 ++ .../u-radio-group/u-radio-group.vue | 108 ++ .../uview-ui/components/u-radio/props.js | 64 + .../uview-ui/components/u-radio/u-radio.vue | 337 +++++ .../uview-ui/components/u-rate/props.js | 64 + .../uview-ui/components/u-rate/u-rate.vue | 303 ++++ .../uview-ui/components/u-read-more/props.js | 61 + .../components/u-read-more/u-read-more.vue | 157 ++ .../uview-ui/components/u-row-notice/props.js | 39 + .../components/u-row-notice/u-row-notice.vue | 306 ++++ .../uview-ui/components/u-row/props.js | 19 + .../uview-ui/components/u-row/u-row.vue | 93 ++ .../components/u-safe-bottom/props.js | 5 + .../u-safe-bottom/u-safe-bottom.vue | 56 + .../uview-ui/components/u-scroll-list/nvue.js | 28 + .../components/u-scroll-list/other.js | 0 .../components/u-scroll-list/props.js | 34 + .../components/u-scroll-list/scrollWxs.wxs | 50 + .../u-scroll-list/u-scroll-list.vue | 226 +++ .../uview-ui/components/u-search/props.js | 114 ++ .../uview-ui/components/u-search/u-search.vue | 296 ++++ .../uview-ui/components/u-skeleton/props.js | 59 + .../components/u-skeleton/u-skeleton.vue | 244 +++ .../uview-ui/components/u-slider/mpother.js | 113 ++ .../uview-ui/components/u-slider/mpwxs.js | 42 + .../uview-ui/components/u-slider/mpwxs.wxs | 121 ++ .../components/u-slider/nvue - 副本.js | 180 +++ .../uview-ui/components/u-slider/nvue.js | 193 +++ .../uview-ui/components/u-slider/props.js | 49 + .../uview-ui/components/u-slider/u-slider.vue | 54 + .../uview-ui/components/u-status-bar/props.js | 8 + .../components/u-status-bar/u-status-bar.vue | 43 + .../uview-ui/components/u-steps-item/props.js | 24 + .../components/u-steps-item/u-steps-item.vue | 316 ++++ .../uview-ui/components/u-steps/props.js | 39 + .../uview-ui/components/u-steps/u-steps.vue | 80 + .../uview-ui/components/u-sticky/props.js | 40 + .../uview-ui/components/u-sticky/u-sticky.vue | 218 +++ .../uview-ui/components/u-subsection/props.js | 49 + .../components/u-subsection/u-subsection.vue | 299 ++++ .../u-swipe-action-item/index - backup.wxs | 256 ++++ .../components/u-swipe-action-item/index.wxs | 225 +++ .../u-swipe-action-item/nvue - backup.js | 270 ++++ .../components/u-swipe-action-item/nvue.js | 173 +++ .../components/u-swipe-action-item/props.js | 41 + .../u-swipe-action-item.vue | 190 +++ .../components/u-swipe-action-item/wxs.js | 15 + .../components/u-swipe-action/props.js | 9 + .../u-swipe-action/u-swipe-action.vue | 67 + .../components/u-swiper-indicator/props.js | 29 + .../u-swiper-indicator/u-swiper-indicator.vue | 110 ++ .../uview-ui/components/u-swiper/props.js | 125 ++ .../uview-ui/components/u-swiper/u-swiper.vue | 240 +++ .../uview-ui/components/u-switch/props.js | 54 + .../uview-ui/components/u-switch/u-switch.vue | 173 +++ .../components/u-tabbar-item/props.js | 35 + .../u-tabbar-item/u-tabbar-item.vue | 142 ++ .../uview-ui/components/u-tabbar/props.js | 44 + .../uview-ui/components/u-tabbar/u-tabbar.vue | 140 ++ .../uview-ui/components/u-table/props.js | 5 + .../uview-ui/components/u-table/u-table.vue | 29 + .../uview-ui/components/u-tabs-item/props.js | 5 + .../components/u-tabs-item/u-tabs-item.vue | 29 + .../uview-ui/components/u-tabs/props.js | 59 + .../uview-ui/components/u-tabs/u-tabs.vue | 361 +++++ .../uview-ui/components/u-tag/props.js | 84 ++ .../uview-ui/components/u-tag/u-tag.vue | 358 +++++ uni_modules/uview-ui/components/u-td/props.js | 5 + uni_modules/uview-ui/components/u-td/u-td.vue | 31 + .../uview-ui/components/u-text/props.js | 110 ++ .../uview-ui/components/u-text/u-text.vue | 220 +++ .../uview-ui/components/u-text/value.js | 85 ++ .../uview-ui/components/u-textarea/props.js | 114 ++ .../components/u-textarea/u-textarea.vue | 237 +++ .../uview-ui/components/u-toast/u-toast.vue | 291 ++++ .../uview-ui/components/u-toolbar/props.js | 34 + .../components/u-toolbar/u-toolbar.vue | 102 ++ .../components/u-tooltip/clipboard.min.js | 58 + .../uview-ui/components/u-tooltip/props.js | 59 + .../components/u-tooltip/u-tooltip.vue | 367 +++++ uni_modules/uview-ui/components/u-tr/props.js | 5 + uni_modules/uview-ui/components/u-tr/u-tr.vue | 31 + .../components/u-transition/nvue.ani-map.js | 68 + .../uview-ui/components/u-transition/props.js | 24 + .../components/u-transition/transition.js | 155 ++ .../components/u-transition/u-transition.vue | 92 ++ .../u-transition/vue.ani-style.scss | 113 ++ .../uview-ui/components/u-upload/mixin.js | 21 + .../uview-ui/components/u-upload/props.js | 124 ++ .../uview-ui/components/u-upload/u-upload.vue | 547 +++++++ .../uview-ui/components/u-upload/utils.js | 118 ++ .../uview-ui/components/uview-ui/uview-ui.vue | 15 + uni_modules/uview-ui/index.js | 79 + uni_modules/uview-ui/index.scss | 23 + uni_modules/uview-ui/libs/config/color.js | 17 + uni_modules/uview-ui/libs/config/config.js | 29 + uni_modules/uview-ui/libs/config/props.js | 190 +++ .../uview-ui/libs/config/props/actionSheet.js | 25 + .../uview-ui/libs/config/props/album.js | 25 + .../uview-ui/libs/config/props/alert.js | 22 + .../uview-ui/libs/config/props/avatar.js | 28 + .../uview-ui/libs/config/props/avatarGroup.js | 23 + .../uview-ui/libs/config/props/backtop.js | 27 + .../uview-ui/libs/config/props/badge.js | 27 + .../uview-ui/libs/config/props/button.js | 42 + .../uview-ui/libs/config/props/calendar.js | 41 + .../uview-ui/libs/config/props/carKeyboard.js | 15 + .../uview-ui/libs/config/props/cell.js | 35 + .../uview-ui/libs/config/props/cellGroup.js | 17 + .../uview-ui/libs/config/props/checkbox.js | 27 + .../libs/config/props/checkboxGroup.js | 29 + .../libs/config/props/circleProgress.js | 15 + .../uview-ui/libs/config/props/code.js | 21 + .../uview-ui/libs/config/props/codeInput.js | 28 + uni_modules/uview-ui/libs/config/props/col.js | 19 + .../uview-ui/libs/config/props/collapse.js | 17 + .../libs/config/props/collapseItem.js | 25 + .../libs/config/props/columnNotice.js | 24 + .../uview-ui/libs/config/props/countDown.js | 18 + .../uview-ui/libs/config/props/countTo.js | 25 + .../libs/config/props/datetimePicker.js | 36 + .../uview-ui/libs/config/props/divider.js | 23 + .../uview-ui/libs/config/props/empty.js | 26 + .../uview-ui/libs/config/props/form.js | 22 + .../uview-ui/libs/config/props/formItem.js | 21 + uni_modules/uview-ui/libs/config/props/gap.js | 19 + .../uview-ui/libs/config/props/grid.js | 17 + .../uview-ui/libs/config/props/gridItem.js | 16 + .../uview-ui/libs/config/props/icon.js | 36 + .../uview-ui/libs/config/props/image.js | 30 + .../uview-ui/libs/config/props/indexAnchor.js | 19 + .../uview-ui/libs/config/props/indexList.js | 19 + .../uview-ui/libs/config/props/input.js | 48 + .../uview-ui/libs/config/props/keyboard.js | 30 + .../uview-ui/libs/config/props/line.js | 20 + .../libs/config/props/lineProgress.js | 19 + .../uview-ui/libs/config/props/link.js | 26 + .../uview-ui/libs/config/props/list.js | 28 + .../uview-ui/libs/config/props/listItem.js | 15 + .../uview-ui/libs/config/props/loadingIcon.js | 30 + .../uview-ui/libs/config/props/loadingPage.js | 22 + .../uview-ui/libs/config/props/loadmore.js | 29 + .../uview-ui/libs/config/props/modal.js | 30 + .../uview-ui/libs/config/props/navbar.js | 28 + .../uview-ui/libs/config/props/noNetwork.js | 18 + .../uview-ui/libs/config/props/noticeBar.js | 27 + .../uview-ui/libs/config/props/notify.js | 22 + .../uview-ui/libs/config/props/numberBox.js | 35 + .../libs/config/props/numberKeyboard.js | 17 + .../uview-ui/libs/config/props/overlay.js | 18 + .../uview-ui/libs/config/props/parse.js | 22 + .../uview-ui/libs/config/props/picker.js | 29 + .../uview-ui/libs/config/props/popup.js | 29 + .../uview-ui/libs/config/props/radio.js | 27 + .../uview-ui/libs/config/props/radioGroup.js | 30 + .../uview-ui/libs/config/props/rate.js | 26 + .../uview-ui/libs/config/props/readMore.js | 22 + uni_modules/uview-ui/libs/config/props/row.js | 17 + .../uview-ui/libs/config/props/rowNotice.js | 21 + .../uview-ui/libs/config/props/scrollList.js | 20 + .../uview-ui/libs/config/props/search.js | 36 + .../uview-ui/libs/config/props/section.js | 24 + .../uview-ui/libs/config/props/skeleton.js | 25 + .../uview-ui/libs/config/props/slider.js | 24 + .../uview-ui/libs/config/props/statusBar.js | 15 + .../uview-ui/libs/config/props/steps.js | 21 + .../uview-ui/libs/config/props/stepsItem.js | 18 + .../uview-ui/libs/config/props/sticky.js | 20 + .../uview-ui/libs/config/props/subsection.js | 23 + .../uview-ui/libs/config/props/swipeAction.js | 15 + .../libs/config/props/swipeActionItem.js | 21 + .../uview-ui/libs/config/props/swiper.js | 39 + .../libs/config/props/swipterIndicator.js | 19 + .../uview-ui/libs/config/props/switch.js | 24 + .../uview-ui/libs/config/props/tabbar.js | 22 + .../uview-ui/libs/config/props/tabbarItem.js | 20 + .../uview-ui/libs/config/props/tabs.js | 31 + uni_modules/uview-ui/libs/config/props/tag.js | 29 + .../uview-ui/libs/config/props/text.js | 38 + .../uview-ui/libs/config/props/textarea.js | 36 + .../uview-ui/libs/config/props/toast.js | 30 + .../uview-ui/libs/config/props/toolbar.js | 21 + .../uview-ui/libs/config/props/tooltip.js | 25 + .../uview-ui/libs/config/props/transition.js | 18 + .../uview-ui/libs/config/props/upload.js | 36 + uni_modules/uview-ui/libs/config/zIndex.js | 20 + uni_modules/uview-ui/libs/css/color.scss | 155 ++ uni_modules/uview-ui/libs/css/common.scss | 98 ++ uni_modules/uview-ui/libs/css/components.scss | 15 + uni_modules/uview-ui/libs/css/flex.scss | 257 ++++ uni_modules/uview-ui/libs/css/h5.scss | 0 uni_modules/uview-ui/libs/css/mixin.scss | 8 + uni_modules/uview-ui/libs/css/mp.scss | 0 uni_modules/uview-ui/libs/css/nvue.scss | 0 uni_modules/uview-ui/libs/css/vue.scss | 27 + .../uview-ui/libs/function/colorGradient.js | 134 ++ .../uview-ui/libs/function/debounce.js | 29 + uni_modules/uview-ui/libs/function/index.js | 656 ++++++++ .../uview-ui/libs/function/platform.js | 75 + uni_modules/uview-ui/libs/function/test.js | 287 ++++ .../uview-ui/libs/function/throttle.js | 30 + .../libs/luch-request/adapters/index.js | 97 ++ .../luch-request/core/InterceptorManager.js | 50 + .../libs/luch-request/core/Request.js | 198 +++ .../libs/luch-request/core/buildFullPath.js | 20 + .../libs/luch-request/core/defaults.js | 29 + .../libs/luch-request/core/dispatchRequest.js | 3 + .../libs/luch-request/core/mergeConfig.js | 103 ++ .../uview-ui/libs/luch-request/core/settle.js | 16 + .../libs/luch-request/helpers/buildURL.js | 69 + .../libs/luch-request/helpers/combineURLs.js | 14 + .../luch-request/helpers/isAbsoluteURL.js | 14 + .../uview-ui/libs/luch-request/index.d.ts | 116 ++ .../uview-ui/libs/luch-request/index.js | 3 + .../uview-ui/libs/luch-request/utils.js | 131 ++ .../uview-ui/libs/luch-request/utils/clone.js | 264 ++++ uni_modules/uview-ui/libs/mixin/button.js | 13 + uni_modules/uview-ui/libs/mixin/mixin.js | 145 ++ uni_modules/uview-ui/libs/mixin/mpMixin.js | 8 + uni_modules/uview-ui/libs/mixin/mpShare.js | 13 + uni_modules/uview-ui/libs/mixin/openType.js | 25 + uni_modules/uview-ui/libs/mixin/style.js | 228 +++ uni_modules/uview-ui/libs/mixin/touch.js | 59 + .../uview-ui/libs/util/async-validator.js | 1343 +++++++++++++++++ uni_modules/uview-ui/libs/util/calendar.js | 546 +++++++ uni_modules/uview-ui/libs/util/dayjs.js | 308 ++++ uni_modules/uview-ui/libs/util/emitter.js | 51 + uni_modules/uview-ui/libs/util/route.js | 124 ++ uni_modules/uview-ui/package.json | 87 ++ uni_modules/uview-ui/theme.scss | 44 + util/request/index.js | 13 + util/request/requestInterceptors.js | 14 + util/request/responseInterceptors.js | 27 + vue.config.js | 10 + 481 files changed, 52719 insertions(+) create mode 100644 .hbuilderx/launch.json create mode 100644 App.vue create mode 100644 LICENSE create mode 100644 README.md create mode 100644 common/api.js create mode 100644 common/config.js create mode 100644 common/demo.scss create mode 100644 common/mixin.js create mode 100644 common/props.js create mode 100644 components/page-nav/page-nav.vue create mode 100644 main.js create mode 100644 manifest.json create mode 100644 package.json create mode 100644 pages.json create mode 100644 pages/componentsA/backtop/backtop.nvue create mode 100644 pages/componentsA/button/button.nvue create mode 100644 pages/componentsA/cell/cell.nvue create mode 100644 pages/componentsA/checkbox/checkbox.nvue create mode 100644 pages/componentsA/divider/divider.nvue create mode 100644 pages/componentsA/empty/empty.nvue create mode 100644 pages/componentsA/gap/gap.nvue create mode 100644 pages/componentsA/grid/grid.nvue create mode 100644 pages/componentsA/icon/icon.nvue create mode 100644 pages/componentsA/image/image.nvue create mode 100644 pages/componentsA/line/line.nvue create mode 100644 pages/componentsA/link/link.nvue create mode 100644 pages/componentsA/loading-icon/loading-icon.nvue create mode 100644 pages/componentsA/loading-page/loading-page.nvue create mode 100644 pages/componentsA/overlay/overlay.nvue create mode 100644 pages/componentsA/popup/popup.nvue create mode 100644 pages/componentsA/radio/radio.nvue create mode 100644 pages/componentsA/rate/rate.nvue create mode 100644 pages/componentsA/sticky/sticky.nvue create mode 100644 pages/componentsA/swipeAction/swipeAction.nvue create mode 100644 pages/componentsA/test/test.vue create mode 100644 pages/componentsA/transition/transition.nvue create mode 100644 pages/componentsB/actionSheet/actionSheet.nvue create mode 100644 pages/componentsB/alert/alert.nvue create mode 100644 pages/componentsB/badge/badge.nvue create mode 100644 pages/componentsB/code/code.nvue create mode 100644 pages/componentsB/collapse/collapse.nvue create mode 100644 pages/componentsB/color/color.nvue create mode 100644 pages/componentsB/countDown/countDown.nvue create mode 100644 pages/componentsB/countTo/countTo.nvue create mode 100644 pages/componentsB/dropdown/dropdown.nvue create mode 100644 pages/componentsB/keyboard/keyboard.nvue create mode 100644 pages/componentsB/noticeBar/noticeBar.nvue create mode 100644 pages/componentsB/notify/notify.nvue create mode 100644 pages/componentsB/numberBox/numberBox.nvue create mode 100644 pages/componentsB/parse/content.js create mode 100644 pages/componentsB/parse/jump.vue create mode 100644 pages/componentsB/parse/parse.nvue create mode 100644 pages/componentsB/progress/progress.nvue create mode 100644 pages/componentsB/search/search.nvue create mode 100644 pages/componentsB/slider/slider.nvue create mode 100644 pages/componentsB/switch/switch.nvue create mode 100644 pages/componentsB/tabbar/tabbar.nvue create mode 100644 pages/componentsB/tag/tag.nvue create mode 100644 pages/componentsB/toast/toast.nvue create mode 100644 pages/componentsB/upload/upload.nvue create mode 100644 pages/componentsC/album/album.nvue create mode 100644 pages/componentsC/avatar/avatar.nvue create mode 100644 pages/componentsC/calendar/calendar.nvue create mode 100644 pages/componentsC/codeInput/codeInput.nvue create mode 100644 pages/componentsC/datetimePicker/datetimePicker.nvue create mode 100644 pages/componentsC/form/form.nvue create mode 100644 pages/componentsC/indexList/indexList.nvue create mode 100644 pages/componentsC/input/input.nvue create mode 100644 pages/componentsC/layout/layout.nvue create mode 100644 pages/componentsC/list/list.nvue create mode 100644 pages/componentsC/loadmore/loadmore.nvue create mode 100644 pages/componentsC/modal/modal.nvue create mode 100644 pages/componentsC/navbar/navbar.nvue create mode 100644 pages/componentsC/noNetwork/noNetwork.nvue create mode 100644 pages/componentsC/picker/picker.nvue create mode 100644 pages/componentsC/readMore/readMore.nvue create mode 100644 pages/componentsC/scrollList/scrollList.nvue create mode 100644 pages/componentsC/skeleton/skeleton.nvue create mode 100644 pages/componentsC/steps/steps.vue create mode 100644 pages/componentsC/subsection/subsection.nvue create mode 100644 pages/componentsC/swiper/swiper.nvue create mode 100644 pages/componentsC/table/table.nvue create mode 100644 pages/componentsC/tabs/tabs.nvue create mode 100644 pages/componentsC/text/text.nvue create mode 100644 pages/componentsC/textarea/textarea.nvue create mode 100644 pages/componentsC/tooltip/tooltip.vue create mode 100644 pages/example/components.config.js create mode 100644 pages/example/components.nvue create mode 100644 pages/index/detail/detail.vue create mode 100644 pages/index/index - 副本.vue create mode 100644 pages/index/index.vue create mode 100644 pages/index/news-item.nvue create mode 100644 pages/index/tabControl-tag.vue create mode 100644 static/app-plus/mp-html/js/handler.js create mode 100644 static/app-plus/mp-html/js/uni.webview.min.js create mode 100644 static/app-plus/mp-html/local.html create mode 100644 static/common/js/touch-emulator.js create mode 100644 static/uview/common/favicon.ico create mode 100644 static/uview/common/gray-logo.png create mode 100644 static/uview/common/logo.png create mode 100644 static/uview/example/component.png create mode 100644 static/uview/example/component_select.png create mode 100644 static/uview/example/js.png create mode 100644 static/uview/example/js_bak.png create mode 100644 static/uview/example/js_select.png create mode 100644 static/uview/example/template.png create mode 100644 static/uview/example/template_select.png create mode 100644 store/index.js create mode 100644 template.h5.html create mode 100644 uni.scss create mode 100644 uni_modules/uview-ui/LICENSE create mode 100644 uni_modules/uview-ui/README.md create mode 100644 uni_modules/uview-ui/changelog.md create mode 100644 uni_modules/uview-ui/components/u--form/u--form.vue create mode 100644 uni_modules/uview-ui/components/u--image/u--image.vue create mode 100644 uni_modules/uview-ui/components/u--input/u--input.vue create mode 100644 uni_modules/uview-ui/components/u--text/u--text.vue create mode 100644 uni_modules/uview-ui/components/u--textarea/u--textarea.vue create mode 100644 uni_modules/uview-ui/components/u-action-sheet/props.js create mode 100644 uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue create mode 100644 uni_modules/uview-ui/components/u-album/props.js create mode 100644 uni_modules/uview-ui/components/u-album/u-album.vue create mode 100644 uni_modules/uview-ui/components/u-alert/props.js create mode 100644 uni_modules/uview-ui/components/u-alert/u-alert.vue create mode 100644 uni_modules/uview-ui/components/u-avatar-group/props.js create mode 100644 uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue create mode 100644 uni_modules/uview-ui/components/u-avatar/props.js create mode 100644 uni_modules/uview-ui/components/u-avatar/u-avatar.vue create mode 100644 uni_modules/uview-ui/components/u-back-top/props.js create mode 100644 uni_modules/uview-ui/components/u-back-top/u-back-top.vue create mode 100644 uni_modules/uview-ui/components/u-badge/props.js create mode 100644 uni_modules/uview-ui/components/u-badge/u-badge.vue create mode 100644 uni_modules/uview-ui/components/u-button/nvue.scss create mode 100644 uni_modules/uview-ui/components/u-button/props.js create mode 100644 uni_modules/uview-ui/components/u-button/u-button.vue create mode 100644 uni_modules/uview-ui/components/u-button/vue.scss create mode 100644 uni_modules/uview-ui/components/u-calendar/header.vue create mode 100644 uni_modules/uview-ui/components/u-calendar/month.vue create mode 100644 uni_modules/uview-ui/components/u-calendar/props.js create mode 100644 uni_modules/uview-ui/components/u-calendar/u-calendar.vue create mode 100644 uni_modules/uview-ui/components/u-calendar/util.js create mode 100644 uni_modules/uview-ui/components/u-car-keyboard/props.js create mode 100644 uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue create mode 100644 uni_modules/uview-ui/components/u-cell-group/props.js create mode 100644 uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue create mode 100644 uni_modules/uview-ui/components/u-cell/props.js create mode 100644 uni_modules/uview-ui/components/u-cell/u-cell.vue create mode 100644 uni_modules/uview-ui/components/u-checkbox-group/props.js create mode 100644 uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue create mode 100644 uni_modules/uview-ui/components/u-checkbox/props.js create mode 100644 uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue create mode 100644 uni_modules/uview-ui/components/u-circle-progress/props.js create mode 100644 uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue create mode 100644 uni_modules/uview-ui/components/u-code-input/props.js create mode 100644 uni_modules/uview-ui/components/u-code-input/u-code-input.vue create mode 100644 uni_modules/uview-ui/components/u-code/props.js create mode 100644 uni_modules/uview-ui/components/u-code/u-code.vue create mode 100644 uni_modules/uview-ui/components/u-col/props.js create mode 100644 uni_modules/uview-ui/components/u-col/u-col.vue create mode 100644 uni_modules/uview-ui/components/u-collapse-item/props.js create mode 100644 uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue create mode 100644 uni_modules/uview-ui/components/u-collapse/props.js create mode 100644 uni_modules/uview-ui/components/u-collapse/u-collapse.vue create mode 100644 uni_modules/uview-ui/components/u-column-notice/props.js create mode 100644 uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue create mode 100644 uni_modules/uview-ui/components/u-count-down/props.js create mode 100644 uni_modules/uview-ui/components/u-count-down/u-count-down.vue create mode 100644 uni_modules/uview-ui/components/u-count-down/utils.js create mode 100644 uni_modules/uview-ui/components/u-count-to/props.js create mode 100644 uni_modules/uview-ui/components/u-count-to/u-count-to.vue create mode 100644 uni_modules/uview-ui/components/u-datetime-picker/props.js create mode 100644 uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue create mode 100644 uni_modules/uview-ui/components/u-divider/props.js create mode 100644 uni_modules/uview-ui/components/u-divider/u-divider.vue create mode 100644 uni_modules/uview-ui/components/u-dropdown-item/props.js create mode 100644 uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue create mode 100644 uni_modules/uview-ui/components/u-dropdown/props.js create mode 100644 uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue create mode 100644 uni_modules/uview-ui/components/u-empty/props.js create mode 100644 uni_modules/uview-ui/components/u-empty/u-empty.vue create mode 100644 uni_modules/uview-ui/components/u-form-item/props.js create mode 100644 uni_modules/uview-ui/components/u-form-item/u-form-item.vue create mode 100644 uni_modules/uview-ui/components/u-form/props.js create mode 100644 uni_modules/uview-ui/components/u-form/u-form.vue create mode 100644 uni_modules/uview-ui/components/u-gap/props.js create mode 100644 uni_modules/uview-ui/components/u-gap/u-gap.vue create mode 100644 uni_modules/uview-ui/components/u-grid-item/props.js create mode 100644 uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue create mode 100644 uni_modules/uview-ui/components/u-grid/props.js create mode 100644 uni_modules/uview-ui/components/u-grid/u-grid.vue create mode 100644 uni_modules/uview-ui/components/u-icon/icons.js create mode 100644 uni_modules/uview-ui/components/u-icon/props.js create mode 100644 uni_modules/uview-ui/components/u-icon/u-icon.vue create mode 100644 uni_modules/uview-ui/components/u-image/props.js create mode 100644 uni_modules/uview-ui/components/u-image/u-image.vue create mode 100644 uni_modules/uview-ui/components/u-index-anchor/props.js create mode 100644 uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue create mode 100644 uni_modules/uview-ui/components/u-index-item/props.js create mode 100644 uni_modules/uview-ui/components/u-index-item/u-index-item.vue create mode 100644 uni_modules/uview-ui/components/u-index-list/props.js create mode 100644 uni_modules/uview-ui/components/u-index-list/u-index-list.vue create mode 100644 uni_modules/uview-ui/components/u-input/props.js create mode 100644 uni_modules/uview-ui/components/u-input/u-input.vue create mode 100644 uni_modules/uview-ui/components/u-keyboard/props.js create mode 100644 uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue create mode 100644 uni_modules/uview-ui/components/u-line-progress/props.js create mode 100644 uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue create mode 100644 uni_modules/uview-ui/components/u-line/props.js create mode 100644 uni_modules/uview-ui/components/u-line/u-line.vue create mode 100644 uni_modules/uview-ui/components/u-link/props.js create mode 100644 uni_modules/uview-ui/components/u-link/u-link.vue create mode 100644 uni_modules/uview-ui/components/u-list-item/props.js create mode 100644 uni_modules/uview-ui/components/u-list-item/u-list-item.vue create mode 100644 uni_modules/uview-ui/components/u-list/props.js create mode 100644 uni_modules/uview-ui/components/u-list/u-list.vue create mode 100644 uni_modules/uview-ui/components/u-loading-icon/props.js create mode 100644 uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue create mode 100644 uni_modules/uview-ui/components/u-loading-page/props.js create mode 100644 uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue create mode 100644 uni_modules/uview-ui/components/u-loadmore/props.js create mode 100644 uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue create mode 100644 uni_modules/uview-ui/components/u-modal/props.js create mode 100644 uni_modules/uview-ui/components/u-modal/u-modal.vue create mode 100644 uni_modules/uview-ui/components/u-navbar/props.js create mode 100644 uni_modules/uview-ui/components/u-navbar/u-navbar.vue create mode 100644 uni_modules/uview-ui/components/u-no-network/props.js create mode 100644 uni_modules/uview-ui/components/u-no-network/u-no-network.vue create mode 100644 uni_modules/uview-ui/components/u-notice-bar/props.js create mode 100644 uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue create mode 100644 uni_modules/uview-ui/components/u-notify/props.js create mode 100644 uni_modules/uview-ui/components/u-notify/u-notify.vue create mode 100644 uni_modules/uview-ui/components/u-number-box/props.js create mode 100644 uni_modules/uview-ui/components/u-number-box/u-number-box.vue create mode 100644 uni_modules/uview-ui/components/u-number-keyboard/props.js create mode 100644 uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue create mode 100644 uni_modules/uview-ui/components/u-overlay/props.js create mode 100644 uni_modules/uview-ui/components/u-overlay/u-overlay.vue create mode 100644 uni_modules/uview-ui/components/u-parse/node/node.vue create mode 100644 uni_modules/uview-ui/components/u-parse/parser.js create mode 100644 uni_modules/uview-ui/components/u-parse/props.js create mode 100644 uni_modules/uview-ui/components/u-parse/u-parse.vue create mode 100644 uni_modules/uview-ui/components/u-picker-column/props.js create mode 100644 uni_modules/uview-ui/components/u-picker-column/u-picker-column.vue create mode 100644 uni_modules/uview-ui/components/u-picker/props.js create mode 100644 uni_modules/uview-ui/components/u-picker/u-picker.vue create mode 100644 uni_modules/uview-ui/components/u-popup/props.js create mode 100644 uni_modules/uview-ui/components/u-popup/u-popup.vue create mode 100644 uni_modules/uview-ui/components/u-radio-group/props.js create mode 100644 uni_modules/uview-ui/components/u-radio-group/u-radio-group.vue create mode 100644 uni_modules/uview-ui/components/u-radio/props.js create mode 100644 uni_modules/uview-ui/components/u-radio/u-radio.vue create mode 100644 uni_modules/uview-ui/components/u-rate/props.js create mode 100644 uni_modules/uview-ui/components/u-rate/u-rate.vue create mode 100644 uni_modules/uview-ui/components/u-read-more/props.js create mode 100644 uni_modules/uview-ui/components/u-read-more/u-read-more.vue create mode 100644 uni_modules/uview-ui/components/u-row-notice/props.js create mode 100644 uni_modules/uview-ui/components/u-row-notice/u-row-notice.vue create mode 100644 uni_modules/uview-ui/components/u-row/props.js create mode 100644 uni_modules/uview-ui/components/u-row/u-row.vue create mode 100644 uni_modules/uview-ui/components/u-safe-bottom/props.js create mode 100644 uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.vue create mode 100644 uni_modules/uview-ui/components/u-scroll-list/nvue.js create mode 100644 uni_modules/uview-ui/components/u-scroll-list/other.js create mode 100644 uni_modules/uview-ui/components/u-scroll-list/props.js create mode 100644 uni_modules/uview-ui/components/u-scroll-list/scrollWxs.wxs create mode 100644 uni_modules/uview-ui/components/u-scroll-list/u-scroll-list.vue create mode 100644 uni_modules/uview-ui/components/u-search/props.js create mode 100644 uni_modules/uview-ui/components/u-search/u-search.vue create mode 100644 uni_modules/uview-ui/components/u-skeleton/props.js create mode 100644 uni_modules/uview-ui/components/u-skeleton/u-skeleton.vue create mode 100644 uni_modules/uview-ui/components/u-slider/mpother.js create mode 100644 uni_modules/uview-ui/components/u-slider/mpwxs.js create mode 100644 uni_modules/uview-ui/components/u-slider/mpwxs.wxs create mode 100644 uni_modules/uview-ui/components/u-slider/nvue - 副本.js create mode 100644 uni_modules/uview-ui/components/u-slider/nvue.js create mode 100644 uni_modules/uview-ui/components/u-slider/props.js create mode 100644 uni_modules/uview-ui/components/u-slider/u-slider.vue create mode 100644 uni_modules/uview-ui/components/u-status-bar/props.js create mode 100644 uni_modules/uview-ui/components/u-status-bar/u-status-bar.vue create mode 100644 uni_modules/uview-ui/components/u-steps-item/props.js create mode 100644 uni_modules/uview-ui/components/u-steps-item/u-steps-item.vue create mode 100644 uni_modules/uview-ui/components/u-steps/props.js create mode 100644 uni_modules/uview-ui/components/u-steps/u-steps.vue create mode 100644 uni_modules/uview-ui/components/u-sticky/props.js create mode 100644 uni_modules/uview-ui/components/u-sticky/u-sticky.vue create mode 100644 uni_modules/uview-ui/components/u-subsection/props.js create mode 100644 uni_modules/uview-ui/components/u-subsection/u-subsection.vue create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/index - backup.wxs create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/index.wxs create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/nvue - backup.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/nvue.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/props.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/u-swipe-action-item.vue create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/wxs.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action/props.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action/u-swipe-action.vue create mode 100644 uni_modules/uview-ui/components/u-swiper-indicator/props.js create mode 100644 uni_modules/uview-ui/components/u-swiper-indicator/u-swiper-indicator.vue create mode 100644 uni_modules/uview-ui/components/u-swiper/props.js create mode 100644 uni_modules/uview-ui/components/u-swiper/u-swiper.vue create mode 100644 uni_modules/uview-ui/components/u-switch/props.js create mode 100644 uni_modules/uview-ui/components/u-switch/u-switch.vue create mode 100644 uni_modules/uview-ui/components/u-tabbar-item/props.js create mode 100644 uni_modules/uview-ui/components/u-tabbar-item/u-tabbar-item.vue create mode 100644 uni_modules/uview-ui/components/u-tabbar/props.js create mode 100644 uni_modules/uview-ui/components/u-tabbar/u-tabbar.vue create mode 100644 uni_modules/uview-ui/components/u-table/props.js create mode 100644 uni_modules/uview-ui/components/u-table/u-table.vue create mode 100644 uni_modules/uview-ui/components/u-tabs-item/props.js create mode 100644 uni_modules/uview-ui/components/u-tabs-item/u-tabs-item.vue create mode 100644 uni_modules/uview-ui/components/u-tabs/props.js create mode 100644 uni_modules/uview-ui/components/u-tabs/u-tabs.vue create mode 100644 uni_modules/uview-ui/components/u-tag/props.js create mode 100644 uni_modules/uview-ui/components/u-tag/u-tag.vue create mode 100644 uni_modules/uview-ui/components/u-td/props.js create mode 100644 uni_modules/uview-ui/components/u-td/u-td.vue create mode 100644 uni_modules/uview-ui/components/u-text/props.js create mode 100644 uni_modules/uview-ui/components/u-text/u-text.vue create mode 100644 uni_modules/uview-ui/components/u-text/value.js create mode 100644 uni_modules/uview-ui/components/u-textarea/props.js create mode 100644 uni_modules/uview-ui/components/u-textarea/u-textarea.vue create mode 100644 uni_modules/uview-ui/components/u-toast/u-toast.vue create mode 100644 uni_modules/uview-ui/components/u-toolbar/props.js create mode 100644 uni_modules/uview-ui/components/u-toolbar/u-toolbar.vue create mode 100644 uni_modules/uview-ui/components/u-tooltip/clipboard.min.js create mode 100644 uni_modules/uview-ui/components/u-tooltip/props.js create mode 100644 uni_modules/uview-ui/components/u-tooltip/u-tooltip.vue create mode 100644 uni_modules/uview-ui/components/u-tr/props.js create mode 100644 uni_modules/uview-ui/components/u-tr/u-tr.vue create mode 100644 uni_modules/uview-ui/components/u-transition/nvue.ani-map.js create mode 100644 uni_modules/uview-ui/components/u-transition/props.js create mode 100644 uni_modules/uview-ui/components/u-transition/transition.js create mode 100644 uni_modules/uview-ui/components/u-transition/u-transition.vue create mode 100644 uni_modules/uview-ui/components/u-transition/vue.ani-style.scss create mode 100644 uni_modules/uview-ui/components/u-upload/mixin.js create mode 100644 uni_modules/uview-ui/components/u-upload/props.js create mode 100644 uni_modules/uview-ui/components/u-upload/u-upload.vue create mode 100644 uni_modules/uview-ui/components/u-upload/utils.js create mode 100644 uni_modules/uview-ui/components/uview-ui/uview-ui.vue create mode 100644 uni_modules/uview-ui/index.js create mode 100644 uni_modules/uview-ui/index.scss create mode 100644 uni_modules/uview-ui/libs/config/color.js create mode 100644 uni_modules/uview-ui/libs/config/config.js create mode 100644 uni_modules/uview-ui/libs/config/props.js create mode 100644 uni_modules/uview-ui/libs/config/props/actionSheet.js create mode 100644 uni_modules/uview-ui/libs/config/props/album.js create mode 100644 uni_modules/uview-ui/libs/config/props/alert.js create mode 100644 uni_modules/uview-ui/libs/config/props/avatar.js create mode 100644 uni_modules/uview-ui/libs/config/props/avatarGroup.js create mode 100644 uni_modules/uview-ui/libs/config/props/backtop.js create mode 100644 uni_modules/uview-ui/libs/config/props/badge.js create mode 100644 uni_modules/uview-ui/libs/config/props/button.js create mode 100644 uni_modules/uview-ui/libs/config/props/calendar.js create mode 100644 uni_modules/uview-ui/libs/config/props/carKeyboard.js create mode 100644 uni_modules/uview-ui/libs/config/props/cell.js create mode 100644 uni_modules/uview-ui/libs/config/props/cellGroup.js create mode 100644 uni_modules/uview-ui/libs/config/props/checkbox.js create mode 100644 uni_modules/uview-ui/libs/config/props/checkboxGroup.js create mode 100644 uni_modules/uview-ui/libs/config/props/circleProgress.js create mode 100644 uni_modules/uview-ui/libs/config/props/code.js create mode 100644 uni_modules/uview-ui/libs/config/props/codeInput.js create mode 100644 uni_modules/uview-ui/libs/config/props/col.js create mode 100644 uni_modules/uview-ui/libs/config/props/collapse.js create mode 100644 uni_modules/uview-ui/libs/config/props/collapseItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/columnNotice.js create mode 100644 uni_modules/uview-ui/libs/config/props/countDown.js create mode 100644 uni_modules/uview-ui/libs/config/props/countTo.js create mode 100644 uni_modules/uview-ui/libs/config/props/datetimePicker.js create mode 100644 uni_modules/uview-ui/libs/config/props/divider.js create mode 100644 uni_modules/uview-ui/libs/config/props/empty.js create mode 100644 uni_modules/uview-ui/libs/config/props/form.js create mode 100644 uni_modules/uview-ui/libs/config/props/formItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/gap.js create mode 100644 uni_modules/uview-ui/libs/config/props/grid.js create mode 100644 uni_modules/uview-ui/libs/config/props/gridItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/icon.js create mode 100644 uni_modules/uview-ui/libs/config/props/image.js create mode 100644 uni_modules/uview-ui/libs/config/props/indexAnchor.js create mode 100644 uni_modules/uview-ui/libs/config/props/indexList.js create mode 100644 uni_modules/uview-ui/libs/config/props/input.js create mode 100644 uni_modules/uview-ui/libs/config/props/keyboard.js create mode 100644 uni_modules/uview-ui/libs/config/props/line.js create mode 100644 uni_modules/uview-ui/libs/config/props/lineProgress.js create mode 100644 uni_modules/uview-ui/libs/config/props/link.js create mode 100644 uni_modules/uview-ui/libs/config/props/list.js create mode 100644 uni_modules/uview-ui/libs/config/props/listItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/loadingIcon.js create mode 100644 uni_modules/uview-ui/libs/config/props/loadingPage.js create mode 100644 uni_modules/uview-ui/libs/config/props/loadmore.js create mode 100644 uni_modules/uview-ui/libs/config/props/modal.js create mode 100644 uni_modules/uview-ui/libs/config/props/navbar.js create mode 100644 uni_modules/uview-ui/libs/config/props/noNetwork.js create mode 100644 uni_modules/uview-ui/libs/config/props/noticeBar.js create mode 100644 uni_modules/uview-ui/libs/config/props/notify.js create mode 100644 uni_modules/uview-ui/libs/config/props/numberBox.js create mode 100644 uni_modules/uview-ui/libs/config/props/numberKeyboard.js create mode 100644 uni_modules/uview-ui/libs/config/props/overlay.js create mode 100644 uni_modules/uview-ui/libs/config/props/parse.js create mode 100644 uni_modules/uview-ui/libs/config/props/picker.js create mode 100644 uni_modules/uview-ui/libs/config/props/popup.js create mode 100644 uni_modules/uview-ui/libs/config/props/radio.js create mode 100644 uni_modules/uview-ui/libs/config/props/radioGroup.js create mode 100644 uni_modules/uview-ui/libs/config/props/rate.js create mode 100644 uni_modules/uview-ui/libs/config/props/readMore.js create mode 100644 uni_modules/uview-ui/libs/config/props/row.js create mode 100644 uni_modules/uview-ui/libs/config/props/rowNotice.js create mode 100644 uni_modules/uview-ui/libs/config/props/scrollList.js create mode 100644 uni_modules/uview-ui/libs/config/props/search.js create mode 100644 uni_modules/uview-ui/libs/config/props/section.js create mode 100644 uni_modules/uview-ui/libs/config/props/skeleton.js create mode 100644 uni_modules/uview-ui/libs/config/props/slider.js create mode 100644 uni_modules/uview-ui/libs/config/props/statusBar.js create mode 100644 uni_modules/uview-ui/libs/config/props/steps.js create mode 100644 uni_modules/uview-ui/libs/config/props/stepsItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/sticky.js create mode 100644 uni_modules/uview-ui/libs/config/props/subsection.js create mode 100644 uni_modules/uview-ui/libs/config/props/swipeAction.js create mode 100644 uni_modules/uview-ui/libs/config/props/swipeActionItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/swiper.js create mode 100644 uni_modules/uview-ui/libs/config/props/swipterIndicator.js create mode 100644 uni_modules/uview-ui/libs/config/props/switch.js create mode 100644 uni_modules/uview-ui/libs/config/props/tabbar.js create mode 100644 uni_modules/uview-ui/libs/config/props/tabbarItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/tabs.js create mode 100644 uni_modules/uview-ui/libs/config/props/tag.js create mode 100644 uni_modules/uview-ui/libs/config/props/text.js create mode 100644 uni_modules/uview-ui/libs/config/props/textarea.js create mode 100644 uni_modules/uview-ui/libs/config/props/toast.js create mode 100644 uni_modules/uview-ui/libs/config/props/toolbar.js create mode 100644 uni_modules/uview-ui/libs/config/props/tooltip.js create mode 100644 uni_modules/uview-ui/libs/config/props/transition.js create mode 100644 uni_modules/uview-ui/libs/config/props/upload.js create mode 100644 uni_modules/uview-ui/libs/config/zIndex.js create mode 100644 uni_modules/uview-ui/libs/css/color.scss create mode 100644 uni_modules/uview-ui/libs/css/common.scss create mode 100644 uni_modules/uview-ui/libs/css/components.scss create mode 100644 uni_modules/uview-ui/libs/css/flex.scss create mode 100644 uni_modules/uview-ui/libs/css/h5.scss create mode 100644 uni_modules/uview-ui/libs/css/mixin.scss create mode 100644 uni_modules/uview-ui/libs/css/mp.scss create mode 100644 uni_modules/uview-ui/libs/css/nvue.scss create mode 100644 uni_modules/uview-ui/libs/css/vue.scss create mode 100644 uni_modules/uview-ui/libs/function/colorGradient.js create mode 100644 uni_modules/uview-ui/libs/function/debounce.js create mode 100644 uni_modules/uview-ui/libs/function/index.js create mode 100644 uni_modules/uview-ui/libs/function/platform.js create mode 100644 uni_modules/uview-ui/libs/function/test.js create mode 100644 uni_modules/uview-ui/libs/function/throttle.js create mode 100644 uni_modules/uview-ui/libs/luch-request/adapters/index.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/InterceptorManager.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/Request.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/buildFullPath.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/defaults.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/dispatchRequest.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/mergeConfig.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/settle.js create mode 100644 uni_modules/uview-ui/libs/luch-request/helpers/buildURL.js create mode 100644 uni_modules/uview-ui/libs/luch-request/helpers/combineURLs.js create mode 100644 uni_modules/uview-ui/libs/luch-request/helpers/isAbsoluteURL.js create mode 100644 uni_modules/uview-ui/libs/luch-request/index.d.ts create mode 100644 uni_modules/uview-ui/libs/luch-request/index.js create mode 100644 uni_modules/uview-ui/libs/luch-request/utils.js create mode 100644 uni_modules/uview-ui/libs/luch-request/utils/clone.js create mode 100644 uni_modules/uview-ui/libs/mixin/button.js create mode 100644 uni_modules/uview-ui/libs/mixin/mixin.js create mode 100644 uni_modules/uview-ui/libs/mixin/mpMixin.js create mode 100644 uni_modules/uview-ui/libs/mixin/mpShare.js create mode 100644 uni_modules/uview-ui/libs/mixin/openType.js create mode 100644 uni_modules/uview-ui/libs/mixin/style.js create mode 100644 uni_modules/uview-ui/libs/mixin/touch.js create mode 100644 uni_modules/uview-ui/libs/util/async-validator.js create mode 100644 uni_modules/uview-ui/libs/util/calendar.js create mode 100644 uni_modules/uview-ui/libs/util/dayjs.js create mode 100644 uni_modules/uview-ui/libs/util/emitter.js create mode 100644 uni_modules/uview-ui/libs/util/route.js create mode 100644 uni_modules/uview-ui/package.json create mode 100644 uni_modules/uview-ui/theme.scss create mode 100644 util/request/index.js create mode 100644 util/request/requestInterceptors.js create mode 100644 util/request/responseInterceptors.js create mode 100644 vue.config.js diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json new file mode 100644 index 0000000..07c1d5f --- /dev/null +++ b/.hbuilderx/launch.json @@ -0,0 +1,16 @@ +{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version": "0.0", + "configurations": [{ + "default" : + { + "launchtype" : "local" + }, + "h5" : + { + "launchtype" : "local" + }, + "type" : "uniCloud" + } + ] +} diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..cdbdd5b --- /dev/null +++ b/App.vue @@ -0,0 +1,19 @@ + + + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1b98f13 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 www.uviewui.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..f451fce --- /dev/null +++ b/README.md @@ -0,0 +1,101 @@ +

+ logo +

+

uView 2.0

+

多平台快速开发的UI框架

+ +[![stars](https://img.shields.io/github/stars/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0) +[![forks](https://img.shields.io/github/forks/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0) +[![issues](https://img.shields.io/github/issues/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0/issues) +[![Website](https://img.shields.io/badge/uView-up-blue?style=flat-square)](https://uviewui.com) +[![release](https://img.shields.io/github/v/release/umicro/uView2.0?style=flat-square)](https://gitee.com/umicro/uView2.0/releases) +[![license](https://img.shields.io/github/license/umicro/uView2.0?style=flat-square)](https://en.wikipedia.org/wiki/MIT_License) + +## 一起推动uView发展 + +uView正在参与开源中国的“年度最佳项目”评选,目前投票进入了最后一个阶段(之前投过票的现在也可以投票), +我们不分昼夜的努力,恳请同学们能为我们投一票,uView来源于社区,也希望社区能一起推动它的发展,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +## 说明 + +uView UI,是[uni-app](https://uniapp.dcloud.io/)全面兼容nvue的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水 + +## [官方文档:https://uviewui.com](https://uviewui.com) + +### 官方1群:1042987248(已满) +### 官方2群:249718512(已满) +### 官方3群:1129077272(已满) +### 官方4群:1084514613(已满) +### 官方5群:863820668(已满) +### 官方6群:745721078(已满) +### 官方7群:627867855(已满) +### 官方8群:496409492(已满) +### 官方9群:828504448(已满) +### 官方10群:232041042(已满) +### [点击加11群交流反馈:364463526](https://jq.qq.com/?_wv=1027&k=mCxS3TGY) + +## 特性 + +- 全面兼容nvue,原生渲染,高性能 +- 兼容安卓,iOS,微信小程序,H5,QQ小程序,百度小程序,支付宝小程序,头条小程序 +- 60+精选组件,功能丰富,多端兼容,让您快速集成,开箱即用 +- 众多贴心的JS利器,让您飞镖在手,召之即来,百步穿杨 +- 众多的常用页面和布局,让您专注逻辑,事半功倍 +- 详尽的文档支持,现代化的演示效果 +- 按需引入,精简打包体积 + + +## 预览 + +您可以通过**微信**扫码,查看最佳的演示效果。 +
+
+ + + +## 链接 + +- [官方文档](https://www.uviewui.com/) +- [更新日志](https://www.uviewui.com/components/changelog.html) +- [升级指南](https://www.uviewui.com/components/changeGuide.html) +- [关于我们](https://www.uviewui.com/cooperation/about.html) + +## 交流反馈 + +欢迎加入我们的QQ群交流反馈:[点此跳转](https://www.uviewui.com/components/addQQGroup.html) + +## 关于PR + +> 我们非常乐意接受各位的优质PR,但在此之前我希望您了解uView2.0是一个需要兼容多个平台的(小程序、h5、ios app、android app)包括nvue页面、vue页面。 +> 所以希望在您修复bug并提交之前尽可能的去这些平台测试一下兼容性。最好能携带测试截图以方便审核。非常感谢! + +## 安装 + +#### **下载地址** —— [https://ext.dcloud.net.cn/plugin?id=1593](https://ext.dcloud.net.cn/plugin?id=1593) + +## 快速上手 + +请通过[官网安装文档](https://v2.uviewui.com/components/install.html)了解更详细的内容 + +## 使用方法 +配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。 + +```html + +``` + +请通过[快速上手](https://v2.uviewui.com/components/quickstart.html)了解更详细的内容 + + +## 捐赠uView的研发 + +uView文档内容和框架源码全部开源免费,如果您认为uView帮到了您的开发工作,您可以捐赠uView的研发工作,捐赠无门槛,哪怕是一杯可乐也好(相信这比打赏主播更有意义)。 + + + + +## 版权信息 +uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。 + diff --git a/common/api.js b/common/api.js new file mode 100644 index 0000000..92fd182 --- /dev/null +++ b/common/api.js @@ -0,0 +1,3 @@ +const { http } = uni.$u +// 获取菜单 +export const fetchMenu = (params, config = {}) => http.post('/ebapi/public_api/index', params, config) diff --git a/common/config.js b/common/config.js new file mode 100644 index 0000000..b17c3c9 --- /dev/null +++ b/common/config.js @@ -0,0 +1,3 @@ +module.exports = { + baseUrl: 'https://api.youzixy.com' +} diff --git a/common/demo.scss b/common/demo.scss new file mode 100644 index 0000000..a885219 --- /dev/null +++ b/common/demo.scss @@ -0,0 +1,45 @@ +.u-block{ + padding: 14px; + &__section{ + margin-bottom:10px; + } + &__title { + margin-top:10px; + font-size: 15px; + color: $u-content-color; + margin-bottom:10px; + } + &__flex{ + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + } +} + +// 使用了cell组件的icon图片样式 +.u-cell-icon { + width: 36rpx; + height: 36rpx; + margin-right: 8rpx; +} + +.u-page { + padding: 15px 15px 40px 15px; +} + +.u-demo-block { + flex: 1; + margin-bottom: 23px; + + &__content { + @include flex(column); + } + + &__title { + font-size: 14px; + color: rgb(143, 156, 162); + margin-bottom: 8px; + @include flex; + } +} + diff --git a/common/mixin.js b/common/mixin.js new file mode 100644 index 0000000..b6a4eee --- /dev/null +++ b/common/mixin.js @@ -0,0 +1,7 @@ +export default { + data() { + return { + + } + } +} diff --git a/common/props.js b/common/props.js new file mode 100644 index 0000000..9c1ef07 --- /dev/null +++ b/common/props.js @@ -0,0 +1,2 @@ +uni.$u.props.gap.bgColor = '#f3f4f6' +uni.$u.props.gap.height = '10' diff --git a/components/page-nav/page-nav.vue b/components/page-nav/page-nav.vue new file mode 100644 index 0000000..70ee75c --- /dev/null +++ b/components/page-nav/page-nav.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..2f0640c --- /dev/null +++ b/main.js @@ -0,0 +1,35 @@ +import Vue from 'vue' +import App from './App' + +// vuex +import store from './store' + +// 引入全局uView +import uView from '@/uni_modules/uview-ui' + +import mixin from './common/mixin' + +Vue.prototype.$store = store + +Vue.config.productionTip = false + +App.mpType = 'app' +Vue.use(uView) + +// #ifdef MP +// 引入uView对小程序分享的mixin封装 +const mpShare = require('@/uni_modules/uview-ui/libs/mixin/mpShare.js') +Vue.mixin(mpShare) +// #endif + +Vue.mixin(mixin) + +const app = new Vue({ + store, + ...App +}) + +// 引入请求封装 +require('./util/request/index')(app) + +app.$mount() diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..f24953c --- /dev/null +++ b/manifest.json @@ -0,0 +1,153 @@ +{ + "name" : "auditDetails", + "appid" : "", + "description": "多平台快速开发的UI框架", + "versionName": "1.0.0", + "versionCode": 1, + "transformPx": false, + "app-plus": { + "optimization": { + "subPackages": true + }, + "safearea": { + "bottom": { + "offset": "none" + } + }, + "splashscreen": { + "alwaysShowBeforeRender": true, + "waiting": true, + "autoclose": true, + "delay": 0 + }, + "usingComponents": true, + "nvueCompiler": "uni-app", + "compilerVersion": 3, + "modules": { + "Webview-x5": {} + }, + "distribute": { + "android": { + "permissions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "abiFilters": [ + "armeabi-v7a", + "arm64-v8a" + ] + }, + "ios": { + "idfa": false + }, + "sdkConfigs": { + "ad": {} + }, + "icons": { + "android": { + "hdpi": "unpackage/res/icons/72x72.png", + "xhdpi": "unpackage/res/icons/96x96.png", + "xxhdpi": "unpackage/res/icons/144x144.png", + "xxxhdpi": "unpackage/res/icons/192x192.png" + }, + "ios": { + "appstore": "unpackage/res/icons/1024x1024.png", + "ipad": { + "app": "unpackage/res/icons/76x76.png", + "app@2x": "unpackage/res/icons/152x152.png", + "notification": "unpackage/res/icons/20x20.png", + "notification@2x": "unpackage/res/icons/40x40.png", + "proapp@2x": "unpackage/res/icons/167x167.png", + "settings": "unpackage/res/icons/29x29.png", + "settings@2x": "unpackage/res/icons/58x58.png", + "spotlight": "unpackage/res/icons/40x40.png", + "spotlight@2x": "unpackage/res/icons/80x80.png" + }, + "iphone": { + "app@2x": "unpackage/res/icons/120x120.png", + "app@3x": "unpackage/res/icons/180x180.png", + "notification@2x": "unpackage/res/icons/40x40.png", + "notification@3x": "unpackage/res/icons/60x60.png", + "settings@2x": "unpackage/res/icons/58x58.png", + "settings@3x": "unpackage/res/icons/87x87.png", + "spotlight@2x": "unpackage/res/icons/80x80.png", + "spotlight@3x": "unpackage/res/icons/120x120.png" + } + } + } + } + }, + "quickapp": {}, + "mp-weixin": { + "appid": "", + "setting": { + "urlCheck": false, + "es6": false, + "minified": false, + "postcss": false + }, + "optimization": { + "subPackages": true + }, + "usingComponents": true + }, + "mp-alipay": { + "usingComponents": true, + "component2": true + }, + "mp-qq": { + "optimization": { + "subPackages": true + }, + "appid": "15646153" + }, + "mp-baidu": { + "usingComponents": true, + "appid": "" + }, + "mp-toutiao": { + "usingComponents": true, + "appid": "" + }, + "h5": { + "template": "template.h5.html", + "router": { + "mode": "history", + "base": "" + }, + "optimization": { + "treeShaking": { + "enable": false + } + }, + "title": "uView UI", + "sdkConfigs": { + "maps": { + "qqmap": { + "key": "" + } + } + }, + "domain": "" + } +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..a590a42 --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "id": "uview-ui", + "scripts": { + "test": "eslint . --fix" + }, + "dependencies": {}, + "devDependencies": { + "eslint": "^8.2.0", + "eslint-config-airbnb": "^19.0.0" + } +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..af6e76a --- /dev/null +++ b/pages.json @@ -0,0 +1,432 @@ +{ + // "condition": { //模式配置,仅开发期间生效 + // "current": 0, //当前激活的模式(list 的索引项) + // "list": [{ + // "name": "test", //模式名称 + // "path": "pages/componentsA/test/test", //启动页面,必选 + // "query": "" //启动参数,在页面的onLoad函数里面得到 + // }] + // }, + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/index/index" + }, + { + "path": "pages/index/tabControl-tag" + } + + ], + "subPackages": [{ + "root": "pages/componentsA", + "pages": [ + // 过渡动画 + { + "path": "transition/transition", + "style": { + "navigationBarTitleText": "过渡动画" + } + }, + { + "path": "test/test", + "style": { + "navigationBarTitleText": "测试" + } + }, + { + "path": "icon/icon", + "style": { + "navigationBarTitleText": "图标" + } + }, + { + "path": "cell/cell", + "style": { + "navigationBarTitleText": "单元格" + } + }, + { + "path": "line/line", + "style": { + "navigationBarTitleText": "线条" + } + }, + { + "path": "image/image", + "style": { + "navigationBarTitleText": "图片" + } + }, + { + "path": "link/link", + "style": { + "navigationBarTitleText": "超链接" + } + }, + { + "path": "button/button", + "style": { + "navigationBarTitleText": "按钮" + } + }, + { + "path": "loading-icon/loading-icon", + "style": { + "navigationBarTitleText": "加载中图标" + } + }, + { + "path": "overlay/overlay", + "style": { + "navigationBarTitleText": "遮罩层", + "navigationStyle": "custom" + } + }, + { + "path": "loading-page/loading-page", + "style": { + "navigationBarTitleText": "加载页", + "navigationStyle": "custom" + } + }, + { + "path": "popup/popup", + "style": { + "navigationBarTitleText": "弹窗", + "navigationStyle": "custom" + } + }, + { + "path": "swipeAction/swipeAction", + "style": { + "navigationBarTitleText": "滑动单元格" + } + }, + { + "path": "sticky/sticky", + "style": { + "navigationBarTitleText": "吸顶" + } + }, + { + "path": "radio/radio", + "style": { + "navigationBarTitleText": "单选框" + } + }, + { + "path": "checkbox/checkbox", + "style": { + "navigationBarTitleText": "复选框" + } + }, + { + "path": "empty/empty", + "style": { + "navigationBarTitleText": "内容为空" + } + }, + { + "path": "backtop/backtop", + "style": { + "navigationBarTitleText": "返回顶部" + } + }, + { + "path": "divider/divider", + "style": { + "navigationBarTitleText": "分割线" + } + }, + { + "path": "rate/rate", + "style": { + "navigationBarTitleText": "评分" + } + }, + { + "path": "gap/gap", + "style": { + "navigationBarTitleText": "间隔槽" + } + }, + { + "path": "grid/grid", + "style": { + "navigationBarTitleText": "宫格" + } + } + ] + }, { + "root": "pages/componentsB", + "pages": [{ + "path": "dropdown/dropdown", + "style": { + "navigationBarTitleText": "下拉菜单" + } + }, { + "path": "actionSheet/actionSheet", + "style": { + "navigationBarTitleText": "上拉菜单", + "navigationStyle": "custom" + } + }, { + "path": "parse/parse", + "style": { + "navigationBarTitleText": "富文本解析器" + } + }, { + "path": "parse/jump", + "style": { + "navigationBarTitleText": "内部链接" + } + }, { + "path": "toast/toast", + "style": { + "navigationBarTitleText": "提示消息" + } + }, { + "path": "keyboard/keyboard", + "style": { + "navigationBarTitleText": "键盘", + "navigationStyle": "custom" + } + }, { + "path": "slider/slider", + "style": { + "navigationBarTitleText": "滑动选择器" + } + }, { + "path": "upload/upload", + "style": { + "navigationBarTitleText": "上传" + } + }, { + "path": "notify/notify", + "style": { + "navigationBarTitleText": "消息提示" + } + }, { + "path": "countDown/countDown", + "style": { + "navigationBarTitleText": "倒计时" + } + }, { + "path": "color/color", + "style": { + "navigationBarTitleText": "色彩" + } + }, { + "path": "numberBox/numberBox", + "style": { + "navigationBarTitleText": "步进器" + } + }, { + "path": "countTo/countTo", + "style": { + "navigationBarTitleText": "数字滚动" + } + }, { + "path": "search/search", + "style": { + "navigationBarTitleText": "搜索" + } + }, { + "path": "badge/badge", + "style": { + "navigationBarTitleText": "徽标数" + } + }, { + "path": "tag/tag", + "style": { + "navigationBarTitleText": "标签" + } + }, { + "path": "alert/alert", + "style": { + "navigationBarTitleText": "警告" + } + }, { + "path": "switch/switch", + "style": { + "navigationBarTitleText": "开关" + } + }, { + "path": "collapse/collapse", + "style": { + "navigationBarTitleText": "折叠面板" + } + }, { + "path": "code/code", + "style": { + "navigationBarTitleText": "验证码" + } + }, { + "path": "noticeBar/noticeBar", + "style": { + "navigationBarTitleText": "滚动通知" + } + }, { + "path": "progress/progress", + "style": { + "navigationBarTitleText": "进度条" + } + }, { + "path": "tabbar/tabbar", + "style": { + "navigationBarTitleText": "Tabbar" + } + }] + }, { + "root": "pages/componentsC", + "pages": [{ + "path": "table/table", + "style": { + "navigationBarTitleText": "表格" + } + }, { + "path": "form/form", + "style": { + "navigationBarTitleText": "表单", + "navigationStyle": "custom" + } + }, { + "path": "textarea/textarea", + "style": { + "navigationBarTitleText": "文本域" + } + }, { + "path": "noNetwork/noNetwork", + "style": { + "navigationBarTitleText": "无网络提示" + } + }, { + "path": "loadmore/loadmore", + "style": { + "navigationBarTitleText": "加载更多" + } + }, { + "path": "text/text", + "style": { + "navigationBarTitleText": "文本" + } + }, { + "path": "steps/steps", + "style": { + "navigationBarTitleText": "步骤条" + } + }, { + "path": "navbar/navbar", + "style": { + "navigationBarTitleText": "导航栏", + "navigationStyle": "custom" + } + }, { + "path": "skeleton/skeleton", + "style": { + "navigationBarTitleText": "骨架屏" + } + }, { + "path": "input/input", + "style": { + "navigationBarTitleText": "输入框" + } + }, { + "path": "album/album", + "style": { + "navigationBarTitleText": "相册" + } + }, { + "path": "avatar/avatar", + "style": { + "navigationBarTitleText": "头像" + } + }, { + "path": "readMore/readMore", + "style": { + "navigationBarTitleText": "阅读更多" + } + }, { + "path": "layout/layout", + "style": { + "navigationBarTitleText": "布局" + } + }, { + "path": "indexList/indexList", + "style": { + "navigationBarTitleText": "索引列表" + } + }, { + "path": "tooltip/tooltip", + "style": { + "navigationBarTitleText": "长按提示" + } + }, { + "path": "tabs/tabs", + "style": { + "navigationBarTitleText": "标签" + } + }, { + "path": "list/list", + "style": { + "navigationBarTitleText": "列表" + } + }, { + "path": "swiper/swiper", + "style": { + "navigationBarTitleText": "轮播" + } + }, { + "path": "scrollList/scrollList", + "style": { + "navigationBarTitleText": "横向滚动列表" + } + }, { + "path": "codeInput/codeInput", + "style": { + "navigationBarTitleText": "验证码输入" + } + }, { + "path": "modal/modal", + "style": { + "navigationBarTitleText": "模态框", + "navigationStyle": "custom" + } + }, { + "path": "picker/picker", + "style": { + "navigationBarTitleText": "选择器", + "navigationStyle": "custom" + } + }, { + "path": "calendar/calendar", + "style": { + "navigationBarTitleText": "日历", + "navigationStyle": "custom" + } + }, { + "path": "datetimePicker/datetimePicker", + "style": { + "navigationBarTitleText": "时间选择", + "navigationStyle": "custom" + } + }, { + "path": "subsection/subsection", + "style": { + "navigationBarTitleText": "分段器" + } + }] + }], + "preloadRule": { + "pages/example/components": { + "network": "all", + "packages": ["pages/componentsA", "pages/componentsB"] + } + }, + "globalStyle": { + "navigationStyle": "custom", + "navigationBarTextStyle": "black", + "navigationBarTitleText": "考核详情", + "navigationBarBackgroundColor": "#FFFFFF", + "backgroundColor": "#FFFFFF" + } +} diff --git a/pages/componentsA/backtop/backtop.nvue b/pages/componentsA/backtop/backtop.nvue new file mode 100644 index 0000000..6410194 --- /dev/null +++ b/pages/componentsA/backtop/backtop.nvue @@ -0,0 +1,132 @@ + + + + + diff --git a/pages/componentsA/button/button.nvue b/pages/componentsA/button/button.nvue new file mode 100644 index 0000000..6916152 --- /dev/null +++ b/pages/componentsA/button/button.nvue @@ -0,0 +1,330 @@ + + + + + diff --git a/pages/componentsA/cell/cell.nvue b/pages/componentsA/cell/cell.nvue new file mode 100644 index 0000000..a1f2bb2 --- /dev/null +++ b/pages/componentsA/cell/cell.nvue @@ -0,0 +1,201 @@ + + + + diff --git a/pages/componentsA/checkbox/checkbox.nvue b/pages/componentsA/checkbox/checkbox.nvue new file mode 100644 index 0000000..916d3d7 --- /dev/null +++ b/pages/componentsA/checkbox/checkbox.nvue @@ -0,0 +1,329 @@ + + + + + diff --git a/pages/componentsA/divider/divider.nvue b/pages/componentsA/divider/divider.nvue new file mode 100644 index 0000000..7a23112 --- /dev/null +++ b/pages/componentsA/divider/divider.nvue @@ -0,0 +1,82 @@ + + + + + diff --git a/pages/componentsA/empty/empty.nvue b/pages/componentsA/empty/empty.nvue new file mode 100644 index 0000000..9871033 --- /dev/null +++ b/pages/componentsA/empty/empty.nvue @@ -0,0 +1,143 @@ + + + + + diff --git a/pages/componentsA/gap/gap.nvue b/pages/componentsA/gap/gap.nvue new file mode 100644 index 0000000..9c28ba1 --- /dev/null +++ b/pages/componentsA/gap/gap.nvue @@ -0,0 +1,42 @@ + + + + + diff --git a/pages/componentsA/grid/grid.nvue b/pages/componentsA/grid/grid.nvue new file mode 100644 index 0000000..2b9aaea --- /dev/null +++ b/pages/componentsA/grid/grid.nvue @@ -0,0 +1,193 @@ + + + + + diff --git a/pages/componentsA/icon/icon.nvue b/pages/componentsA/icon/icon.nvue new file mode 100644 index 0000000..77f52b0 --- /dev/null +++ b/pages/componentsA/icon/icon.nvue @@ -0,0 +1,664 @@ + + + + + diff --git a/pages/componentsA/image/image.nvue b/pages/componentsA/image/image.nvue new file mode 100644 index 0000000..a6a9dae --- /dev/null +++ b/pages/componentsA/image/image.nvue @@ -0,0 +1,76 @@ + + + + + diff --git a/pages/componentsA/line/line.nvue b/pages/componentsA/line/line.nvue new file mode 100644 index 0000000..a6da0d1 --- /dev/null +++ b/pages/componentsA/line/line.nvue @@ -0,0 +1,74 @@ + + + + + diff --git a/pages/componentsA/link/link.nvue b/pages/componentsA/link/link.nvue new file mode 100644 index 0000000..5079c5a --- /dev/null +++ b/pages/componentsA/link/link.nvue @@ -0,0 +1,75 @@ + + + + + diff --git a/pages/componentsA/loading-icon/loading-icon.nvue b/pages/componentsA/loading-icon/loading-icon.nvue new file mode 100644 index 0000000..46a147c --- /dev/null +++ b/pages/componentsA/loading-icon/loading-icon.nvue @@ -0,0 +1,79 @@ + + + + + diff --git a/pages/componentsA/loading-page/loading-page.nvue b/pages/componentsA/loading-page/loading-page.nvue new file mode 100644 index 0000000..0f45a19 --- /dev/null +++ b/pages/componentsA/loading-page/loading-page.nvue @@ -0,0 +1,130 @@ + + + + + diff --git a/pages/componentsA/overlay/overlay.nvue b/pages/componentsA/overlay/overlay.nvue new file mode 100644 index 0000000..c0198b5 --- /dev/null +++ b/pages/componentsA/overlay/overlay.nvue @@ -0,0 +1,103 @@ + + + + + diff --git a/pages/componentsA/popup/popup.nvue b/pages/componentsA/popup/popup.nvue new file mode 100644 index 0000000..939c2bb --- /dev/null +++ b/pages/componentsA/popup/popup.nvue @@ -0,0 +1,182 @@ + + + + + diff --git a/pages/componentsA/radio/radio.nvue b/pages/componentsA/radio/radio.nvue new file mode 100644 index 0000000..12d4107 --- /dev/null +++ b/pages/componentsA/radio/radio.nvue @@ -0,0 +1,330 @@ + + + + + diff --git a/pages/componentsA/rate/rate.nvue b/pages/componentsA/rate/rate.nvue new file mode 100644 index 0000000..bf009dc --- /dev/null +++ b/pages/componentsA/rate/rate.nvue @@ -0,0 +1,138 @@ + + + + + diff --git a/pages/componentsA/sticky/sticky.nvue b/pages/componentsA/sticky/sticky.nvue new file mode 100644 index 0000000..7ea368e --- /dev/null +++ b/pages/componentsA/sticky/sticky.nvue @@ -0,0 +1,57 @@ + + + + + diff --git a/pages/componentsA/swipeAction/swipeAction.nvue b/pages/componentsA/swipeAction/swipeAction.nvue new file mode 100644 index 0000000..d5a797a --- /dev/null +++ b/pages/componentsA/swipeAction/swipeAction.nvue @@ -0,0 +1,228 @@ + + + + + diff --git a/pages/componentsA/test/test.vue b/pages/componentsA/test/test.vue new file mode 100644 index 0000000..0a389cd --- /dev/null +++ b/pages/componentsA/test/test.vue @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/pages/componentsA/transition/transition.nvue b/pages/componentsA/transition/transition.nvue new file mode 100644 index 0000000..47e6207 --- /dev/null +++ b/pages/componentsA/transition/transition.nvue @@ -0,0 +1,164 @@ + + + + + diff --git a/pages/componentsB/actionSheet/actionSheet.nvue b/pages/componentsB/actionSheet/actionSheet.nvue new file mode 100644 index 0000000..8be730c --- /dev/null +++ b/pages/componentsB/actionSheet/actionSheet.nvue @@ -0,0 +1,188 @@ + + + + diff --git a/pages/componentsB/alert/alert.nvue b/pages/componentsB/alert/alert.nvue new file mode 100644 index 0000000..20a08d6 --- /dev/null +++ b/pages/componentsB/alert/alert.nvue @@ -0,0 +1,146 @@ + + + + + diff --git a/pages/componentsB/badge/badge.nvue b/pages/componentsB/badge/badge.nvue new file mode 100644 index 0000000..4e895e6 --- /dev/null +++ b/pages/componentsB/badge/badge.nvue @@ -0,0 +1,163 @@ + + + + + diff --git a/pages/componentsB/code/code.nvue b/pages/componentsB/code/code.nvue new file mode 100644 index 0000000..2800959 --- /dev/null +++ b/pages/componentsB/code/code.nvue @@ -0,0 +1,157 @@ + + + + + diff --git a/pages/componentsB/collapse/collapse.nvue b/pages/componentsB/collapse/collapse.nvue new file mode 100644 index 0000000..a8701d2 --- /dev/null +++ b/pages/componentsB/collapse/collapse.nvue @@ -0,0 +1,180 @@ + + + + + diff --git a/pages/componentsB/color/color.nvue b/pages/componentsB/color/color.nvue new file mode 100644 index 0000000..d32811a --- /dev/null +++ b/pages/componentsB/color/color.nvue @@ -0,0 +1,291 @@ + + + diff --git a/pages/componentsB/countDown/countDown.nvue b/pages/componentsB/countDown/countDown.nvue new file mode 100644 index 0000000..3bbf6c2 --- /dev/null +++ b/pages/componentsB/countDown/countDown.nvue @@ -0,0 +1,240 @@ + + + + + diff --git a/pages/componentsB/countTo/countTo.nvue b/pages/componentsB/countTo/countTo.nvue new file mode 100644 index 0000000..e289bc9 --- /dev/null +++ b/pages/componentsB/countTo/countTo.nvue @@ -0,0 +1,176 @@ + + + + + diff --git a/pages/componentsB/dropdown/dropdown.nvue b/pages/componentsB/dropdown/dropdown.nvue new file mode 100644 index 0000000..d0fbecf --- /dev/null +++ b/pages/componentsB/dropdown/dropdown.nvue @@ -0,0 +1,31 @@ + + + + + diff --git a/pages/componentsB/keyboard/keyboard.nvue b/pages/componentsB/keyboard/keyboard.nvue new file mode 100644 index 0000000..7e3bb3f --- /dev/null +++ b/pages/componentsB/keyboard/keyboard.nvue @@ -0,0 +1,131 @@ + + + + + diff --git a/pages/componentsB/noticeBar/noticeBar.nvue b/pages/componentsB/noticeBar/noticeBar.nvue new file mode 100644 index 0000000..be9503c --- /dev/null +++ b/pages/componentsB/noticeBar/noticeBar.nvue @@ -0,0 +1,102 @@ + + + + + diff --git a/pages/componentsB/notify/notify.nvue b/pages/componentsB/notify/notify.nvue new file mode 100644 index 0000000..2dd7318 --- /dev/null +++ b/pages/componentsB/notify/notify.nvue @@ -0,0 +1,146 @@ + + + + + diff --git a/pages/componentsB/numberBox/numberBox.nvue b/pages/componentsB/numberBox/numberBox.nvue new file mode 100644 index 0000000..aed2cf5 --- /dev/null +++ b/pages/componentsB/numberBox/numberBox.nvue @@ -0,0 +1,250 @@ + + + + + diff --git a/pages/componentsB/parse/content.js b/pages/componentsB/parse/content.js new file mode 100644 index 0000000..e3898cf --- /dev/null +++ b/pages/componentsB/parse/content.js @@ -0,0 +1,203 @@ +/** + * @fileoverview 用于测试的 html 内容 + */ +module.exports = `富文本示例 +
+
+
+ 表格 +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
标题 1标题 2
内容 1内容 2
内容 3链接
内容 5内容 6
+
普通表格
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
标题 1标题 2标题 3标题 4标题 5
内容 1内容 2内容 3内容 4内容 5
链接内容 7内容 8内容 9内容 10
内容 11内容 12内容 13内容 14内容 15
+
长表格,可以单独横向滚动
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
标题 1标题 2标题 3
内容 1内容 2
内容 3内容 4
内容 5
内容 6内容 7链接
+
含有合并单元格的表格
+
+
+
+ 列表 +
+
+
+
    +
  1. 这是第一条列表项
  2. +
  3. 这是第二条列表项
  4. +
  5. 这是第三条 链接
  6. +
+
    +
  1. 这是第一条列表项
  2. +
  3. 这是第二条列表项
  4. +
  5. 这是第三条 链接
  6. +
+
    +
  1. 这是第一条列表项
  2. +
  3. 这是第二条列表项
  4. +
  5. 这是第三条 链接
  6. +
+
    +
  • 第一级无序列表
  • +
  • 第一级无序列表 +
      +
    • 第二级无序列表
    • +
    • 第二级无序列表 +
        +
      • 第三级无序列表
      • +
      • 第三级 链接
      • +
      +
    • +
    +
  • +
+
+
+
+ 文本 +
+
+
+

+ + 拼(pin) + 音(yin) + +   斜体 +   粗体 +   上标1 +   下标2 +

+

+ 上划线 +   中划线 +   下划线 +

+

+ 大一号 +   正常 +   小一号 +

+

大标题

+

中标题

+

小标题

+
+
+
+ 链接 +
+
+
+ 跳转到顶部   跳转到列表 +
锚点链接,将滚动到对应位置
+
+
+ 外部链接 +
外部链接,将复制链接
+
+
+ 内部链接 +
内部链接,将跳转页面
+
+
+
+ 图片 +
+
+
+ +
点击预览高清图
+
+
+ + + + + +
svg 动画
+
+
` diff --git a/pages/componentsB/parse/jump.vue b/pages/componentsB/parse/jump.vue new file mode 100644 index 0000000..4ff3e29 --- /dev/null +++ b/pages/componentsB/parse/jump.vue @@ -0,0 +1,12 @@ + + + + + diff --git a/pages/componentsB/parse/parse.nvue b/pages/componentsB/parse/parse.nvue new file mode 100644 index 0000000..b7fd3f3 --- /dev/null +++ b/pages/componentsB/parse/parse.nvue @@ -0,0 +1,51 @@ + + + + + diff --git a/pages/componentsB/progress/progress.nvue b/pages/componentsB/progress/progress.nvue new file mode 100644 index 0000000..b0c90db --- /dev/null +++ b/pages/componentsB/progress/progress.nvue @@ -0,0 +1,155 @@ + + + + + diff --git a/pages/componentsB/search/search.nvue b/pages/componentsB/search/search.nvue new file mode 100644 index 0000000..754a266 --- /dev/null +++ b/pages/componentsB/search/search.nvue @@ -0,0 +1,202 @@ + + + + + diff --git a/pages/componentsB/slider/slider.nvue b/pages/componentsB/slider/slider.nvue new file mode 100644 index 0000000..65461d7 --- /dev/null +++ b/pages/componentsB/slider/slider.nvue @@ -0,0 +1,81 @@ + + + + + diff --git a/pages/componentsB/switch/switch.nvue b/pages/componentsB/switch/switch.nvue new file mode 100644 index 0000000..7feb9b9 --- /dev/null +++ b/pages/componentsB/switch/switch.nvue @@ -0,0 +1,177 @@ + + + + + diff --git a/pages/componentsB/tabbar/tabbar.nvue b/pages/componentsB/tabbar/tabbar.nvue new file mode 100644 index 0000000..5c8e536 --- /dev/null +++ b/pages/componentsB/tabbar/tabbar.nvue @@ -0,0 +1,274 @@ + + + + + diff --git a/pages/componentsB/tag/tag.nvue b/pages/componentsB/tag/tag.nvue new file mode 100644 index 0000000..a56cfb7 --- /dev/null +++ b/pages/componentsB/tag/tag.nvue @@ -0,0 +1,335 @@ + + + + + diff --git a/pages/componentsB/toast/toast.nvue b/pages/componentsB/toast/toast.nvue new file mode 100644 index 0000000..409a02a --- /dev/null +++ b/pages/componentsB/toast/toast.nvue @@ -0,0 +1,113 @@ + + + + + diff --git a/pages/componentsB/upload/upload.nvue b/pages/componentsB/upload/upload.nvue new file mode 100644 index 0000000..0c50d1c --- /dev/null +++ b/pages/componentsB/upload/upload.nvue @@ -0,0 +1,180 @@ + + + + + diff --git a/pages/componentsC/album/album.nvue b/pages/componentsC/album/album.nvue new file mode 100644 index 0000000..3cc858b --- /dev/null +++ b/pages/componentsC/album/album.nvue @@ -0,0 +1,218 @@ + + + + + diff --git a/pages/componentsC/avatar/avatar.nvue b/pages/componentsC/avatar/avatar.nvue new file mode 100644 index 0000000..67edc8b --- /dev/null +++ b/pages/componentsC/avatar/avatar.nvue @@ -0,0 +1,182 @@ + + + + + diff --git a/pages/componentsC/calendar/calendar.nvue b/pages/componentsC/calendar/calendar.nvue new file mode 100644 index 0000000..d82682d --- /dev/null +++ b/pages/componentsC/calendar/calendar.nvue @@ -0,0 +1,169 @@ + + + + diff --git a/pages/componentsC/codeInput/codeInput.nvue b/pages/componentsC/codeInput/codeInput.nvue new file mode 100644 index 0000000..cdb0b8f --- /dev/null +++ b/pages/componentsC/codeInput/codeInput.nvue @@ -0,0 +1,153 @@ + + + + + diff --git a/pages/componentsC/datetimePicker/datetimePicker.nvue b/pages/componentsC/datetimePicker/datetimePicker.nvue new file mode 100644 index 0000000..54c69b6 --- /dev/null +++ b/pages/componentsC/datetimePicker/datetimePicker.nvue @@ -0,0 +1,233 @@ + + + + diff --git a/pages/componentsC/form/form.nvue b/pages/componentsC/form/form.nvue new file mode 100644 index 0000000..4145af7 --- /dev/null +++ b/pages/componentsC/form/form.nvue @@ -0,0 +1,425 @@ + + + + + diff --git a/pages/componentsC/indexList/indexList.nvue b/pages/componentsC/indexList/indexList.nvue new file mode 100644 index 0000000..c29f2bc --- /dev/null +++ b/pages/componentsC/indexList/indexList.nvue @@ -0,0 +1,126 @@ + + + + + diff --git a/pages/componentsC/input/input.nvue b/pages/componentsC/input/input.nvue new file mode 100644 index 0000000..47578cf --- /dev/null +++ b/pages/componentsC/input/input.nvue @@ -0,0 +1,180 @@ + + + + + diff --git a/pages/componentsC/layout/layout.nvue b/pages/componentsC/layout/layout.nvue new file mode 100644 index 0000000..665b760 --- /dev/null +++ b/pages/componentsC/layout/layout.nvue @@ -0,0 +1,156 @@ + + + + + diff --git a/pages/componentsC/list/list.nvue b/pages/componentsC/list/list.nvue new file mode 100644 index 0000000..c2791a5 --- /dev/null +++ b/pages/componentsC/list/list.nvue @@ -0,0 +1,67 @@ + + + + + diff --git a/pages/componentsC/loadmore/loadmore.nvue b/pages/componentsC/loadmore/loadmore.nvue new file mode 100644 index 0000000..0956d41 --- /dev/null +++ b/pages/componentsC/loadmore/loadmore.nvue @@ -0,0 +1,82 @@ + + + + + diff --git a/pages/componentsC/modal/modal.nvue b/pages/componentsC/modal/modal.nvue new file mode 100644 index 0000000..967cc12 --- /dev/null +++ b/pages/componentsC/modal/modal.nvue @@ -0,0 +1,195 @@ + + + + + diff --git a/pages/componentsC/navbar/navbar.nvue b/pages/componentsC/navbar/navbar.nvue new file mode 100644 index 0000000..cf282b5 --- /dev/null +++ b/pages/componentsC/navbar/navbar.nvue @@ -0,0 +1,121 @@ + + + + + diff --git a/pages/componentsC/noNetwork/noNetwork.nvue b/pages/componentsC/noNetwork/noNetwork.nvue new file mode 100644 index 0000000..c32536f --- /dev/null +++ b/pages/componentsC/noNetwork/noNetwork.nvue @@ -0,0 +1,68 @@ + + + + + diff --git a/pages/componentsC/picker/picker.nvue b/pages/componentsC/picker/picker.nvue new file mode 100644 index 0000000..d814c39 --- /dev/null +++ b/pages/componentsC/picker/picker.nvue @@ -0,0 +1,203 @@ + + + + + diff --git a/pages/componentsC/readMore/readMore.nvue b/pages/componentsC/readMore/readMore.nvue new file mode 100644 index 0000000..e9a53c8 --- /dev/null +++ b/pages/componentsC/readMore/readMore.nvue @@ -0,0 +1,49 @@ + + + + + diff --git a/pages/componentsC/scrollList/scrollList.nvue b/pages/componentsC/scrollList/scrollList.nvue new file mode 100644 index 0000000..1146080 --- /dev/null +++ b/pages/componentsC/scrollList/scrollList.nvue @@ -0,0 +1,249 @@ + + + + + diff --git a/pages/componentsC/skeleton/skeleton.nvue b/pages/componentsC/skeleton/skeleton.nvue new file mode 100644 index 0000000..6e01809 --- /dev/null +++ b/pages/componentsC/skeleton/skeleton.nvue @@ -0,0 +1,157 @@ + + + + + diff --git a/pages/componentsC/steps/steps.vue b/pages/componentsC/steps/steps.vue new file mode 100644 index 0000000..35452ee --- /dev/null +++ b/pages/componentsC/steps/steps.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/pages/componentsC/subsection/subsection.nvue b/pages/componentsC/subsection/subsection.nvue new file mode 100644 index 0000000..4204cd5 --- /dev/null +++ b/pages/componentsC/subsection/subsection.nvue @@ -0,0 +1,99 @@ + + + + + diff --git a/pages/componentsC/swiper/swiper.nvue b/pages/componentsC/swiper/swiper.nvue new file mode 100644 index 0000000..8bb931d --- /dev/null +++ b/pages/componentsC/swiper/swiper.nvue @@ -0,0 +1,213 @@ + + + + + diff --git a/pages/componentsC/table/table.nvue b/pages/componentsC/table/table.nvue new file mode 100644 index 0000000..84754d0 --- /dev/null +++ b/pages/componentsC/table/table.nvue @@ -0,0 +1,26 @@ + + + + + diff --git a/pages/componentsC/tabs/tabs.nvue b/pages/componentsC/tabs/tabs.nvue new file mode 100644 index 0000000..fbabcec --- /dev/null +++ b/pages/componentsC/tabs/tabs.nvue @@ -0,0 +1,209 @@ + + + + + diff --git a/pages/componentsC/text/text.nvue b/pages/componentsC/text/text.nvue new file mode 100644 index 0000000..e5b41da --- /dev/null +++ b/pages/componentsC/text/text.nvue @@ -0,0 +1,173 @@ + + + + + diff --git a/pages/componentsC/textarea/textarea.nvue b/pages/componentsC/textarea/textarea.nvue new file mode 100644 index 0000000..f158864 --- /dev/null +++ b/pages/componentsC/textarea/textarea.nvue @@ -0,0 +1,77 @@ + + + + + diff --git a/pages/componentsC/tooltip/tooltip.vue b/pages/componentsC/tooltip/tooltip.vue new file mode 100644 index 0000000..8487851 --- /dev/null +++ b/pages/componentsC/tooltip/tooltip.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/pages/example/components.config.js b/pages/example/components.config.js new file mode 100644 index 0000000..6a08bc8 --- /dev/null +++ b/pages/example/components.config.js @@ -0,0 +1,418 @@ +export default [{ + groupName: '基础组件', + groupName_en: 'Basic components', + list: [{ + path: '/pages/componentsB/color/color', + icon: 'color', + title: 'Color 色彩', + title_en: 'Color' + }, { + path: '/pages/componentsA/icon/icon', + icon: 'icon', + title: 'Icon 图标', + title_en: 'Icon' + }, { + path: '/pages/componentsA/image/image', + icon: 'image', + title: 'Image 图片', + title_en: 'Image' + }, { + path: '/pages/componentsA/button/button', + icon: 'button', + title: 'Button 按钮', + title_en: 'Button' + }, { + path: '/pages/componentsC/text/text', + icon: 'text', + title: 'Text 文本', + title_en: 'Text' + }, { + path: '/pages/componentsC/layout/layout', + icon: 'layout', + title: 'Layout 布局', + title_en: 'Layout' + }, { + path: '/pages/componentsA/cell/cell', + icon: 'cell', + title: 'Cell 单元格', + title_en: 'Cell' + }, { + path: '/pages/componentsB/badge/badge', + icon: 'badge', + title: 'Badge 徽标数', + title_en: 'Badge' + }, { + path: '/pages/componentsB/tag/tag', + icon: 'tag', + title: 'Tag 标签', + title_en: 'Tag' + }, { + path: '/pages/componentsA/loading-icon/loading-icon', + icon: 'loading', + title: 'Loading 加载动画', + title_en: 'loading Icon' + }, { + path: '/pages/componentsA/loading-page/loading-page', + icon: 'loading-page', + title: 'Loading page 加载页', + title_en: 'Loading Page' + }] +}, +{ + groupName: '表单组件', + groupName_en: 'Form components', + list: [{ + path: '/pages/componentsC/form/form', + icon: 'form', + title: 'Form 表单', + title_en: 'Form' + }, { + path: '/pages/componentsC/calendar/calendar', + icon: 'calendar', + title: 'Calendar 日历', + title_en: 'Calendar' + }, { + path: '/pages/componentsB/keyboard/keyboard', + icon: 'keyboard', + title: 'Keyboard 键盘', + title_en: 'Keyboard' + }, { + path: '/pages/componentsC/picker/picker', + icon: 'picker', + title: 'Picker 选择器', + title_en: 'Picker' + }, { + path: '/pages/componentsC/datetimePicker/datetimePicker', + icon: 'datetimePicker', + title: 'DatetimePicker 时间选择器', + title_en: 'Picker' + }, { + path: '/pages/componentsA/rate/rate', + icon: 'rate', + title: 'Rate 评分', + title_en: 'Rate' + }, { + path: '/pages/componentsB/search/search', + icon: 'search', + title: 'Search 搜索', + title_en: 'Search' + }, { + path: '/pages/componentsB/numberBox/numberBox', + icon: 'numberBox', + title: 'NumberBox 步进器', + title_en: 'NumberBox' + }, { + path: '/pages/componentsB/upload/upload', + icon: 'upload', + title: 'Upload 上传', + title_en: 'Upload' + }, { + path: '/pages/componentsB/code/code', + icon: 'code', + title: 'Code 验证码倒计时', + title_en: 'VerificationCode' + }, { + path: '/pages/componentsC/input/input', + icon: 'field', + title: 'Input 输入框', + title_en: 'Input' + }, { + path: '/pages/componentsC/textarea/textarea', + icon: 'textarea', + title: 'Textarea 文本域', + title_en: 'Textarea' + }, { + path: '/pages/componentsA/checkbox/checkbox', + icon: 'checkbox', + title: 'Checkbox 复选框', + title_en: 'Checkbox' + }, { + path: '/pages/componentsA/radio/radio', + icon: 'radio', + title: 'Radio 单选框', + title_en: 'Radio' + }, { + path: '/pages/componentsB/switch/switch', + icon: 'switch', + title: 'Switch 开关选择器', + title_en: 'Switch' + }, { + path: '/pages/componentsB/slider/slider', + icon: 'slider', + title: 'Slider 滑动选择器', + title_en: 'Slider' + }, { + path: '/pages/componentsC/album/album', + icon: 'album', + title: 'Album 相册', + title_en: 'Album' + }] +}, { + groupName: '数据组件', + groupName_en: 'Data components', + list: [{ + path: '/pages/componentsC/list/list', + icon: 'list', + title: 'List 列表', + title_en: 'List' + }, { + path: '/pages/componentsB/progress/progress', + icon: 'progress', + title: 'Progress 进度条', + title_en: 'Progress' + }, + // { + // path: '/pages/componentsC/table/table', + // icon: 'table', + // title: 'Table 表格(暂无)', + // title_en: 'Table', + // }, + { + path: '/pages/componentsB/countDown/countDown', + icon: 'countDown', + title: 'CountDown 倒计时', + title_en: 'CountDown' + }, { + path: '/pages/componentsB/countTo/countTo', + icon: 'countTo', + title: 'CountTo 数字滚动', + title_en: 'CountTo' + }] +}, { + groupName: '反馈组件', + groupName_en: 'Feedback components', + list: [{ + path: '/pages/componentsC/tooltip/tooltip', + icon: 'tooltip', + title: 'Tooltip 长按提示', + title_en: 'ActionSheet' + }, { + path: '/pages/componentsB/actionSheet/actionSheet', + icon: 'actionSheet', + title: 'ActionSheet 上拉菜单', + title_en: 'ActionSheet' + }, { + path: '/pages/componentsB/alert/alert', + icon: 'alert', + title: 'Alert 警告提示', + title_en: 'Alert' + }, { + path: '/pages/componentsB/toast/toast', + icon: 'toast', + title: 'Toast 消息提示', + title_en: 'Toast' + }, { + path: '/pages/componentsB/noticeBar/noticeBar', + icon: 'noticeBar', + title: 'NoticeBar 滚动通知', + title_en: 'NoticeBar' + }, { + path: '/pages/componentsB/notify/notify', + icon: 'notify', + title: 'Notify 消息提示', + title_en: 'Notify' + }, { + path: '/pages/componentsA/swipeAction/swipeAction', + icon: 'swipeAction', + title: 'SwipeAction 滑动单元格', + title_en: 'SwipeAction' + }, { + path: '/pages/componentsB/collapse/collapse', + icon: 'collapse', + title: 'Collapse 折叠面板', + title_en: 'Collapse' + }, { + path: '/pages/componentsA/popup/popup', + icon: 'popup', + title: 'Popup 弹出层', + title_en: 'Popup' + }, { + path: '/pages/componentsC/modal/modal', + icon: 'modal', + title: 'Modal 模态框', + title_en: 'Modal' + } + // { + // path: '/pages/componentsA/fullScreen/fullScreen', + // icon: 'pressingScreen', + // title: 'fullScreen 压窗屏(暂无)', + // title_en: 'fullScreen', + // }, + ] +}, { + groupName: '布局组件', + groupName_en: 'Layout components', + list: [{ + path: '/pages/componentsC/scrollList/scrollList', + icon: 'scrollList', + title: 'ScrollList 横向滚动列表', + title_en: 'ScrollList' + }, { + path: '/pages/componentsA/line/line', + icon: 'line', + title: 'Line 线条', + title_en: 'Line' + }, { + path: '/pages/componentsA/overlay/overlay', + icon: 'mask', + title: 'Overlay 遮罩层', + title_en: 'Overlay' + }, + // #ifndef MP-TOUTIAO + { + path: '/pages/componentsC/noNetwork/noNetwork', + icon: 'noNetwork', + title: 'NoNetwork 无网络提示', + title_en: 'NoNetwork' + }, + // #endif + { + path: '/pages/componentsA/grid/grid', + icon: 'grid', + title: 'Grid 宫格布局', + title_en: 'Grid' + }, { + path: '/pages/componentsC/swiper/swiper', + icon: 'swiper', + title: 'Swiper 轮播图', + title_en: 'Swiper' + }, { + path: '/pages/componentsC/skeleton/skeleton', + icon: 'skeleton', + title: 'Skeleton 骨架屏', + title_en: 'Skeleton' + }, { + path: '/pages/componentsA/sticky/sticky', + icon: 'sticky', + title: 'Sticky 吸顶', + title_en: 'Sticky' + }, + { + path: '/pages/componentsA/divider/divider', + icon: 'divider', + title: 'Divider 分割线', + title_en: 'Divider' + } + ] +}, +{ + groupName: '导航组件', + groupName_en: 'Navigation components', + list: [ + // { + // path: '/pages/componentsB/dropdown/dropdown', + // icon: 'dropdown', + // title: 'Dropdown 下拉菜单', + // title_en: 'Dropdown', + // }, + { + path: '/pages/componentsB/tabbar/tabbar', + icon: 'tabbar', + title: 'Tabbar 底部导航栏', + title_en: 'Tabbar' + }, { + path: '/pages/componentsA/backtop/backtop', + icon: 'backTop', + title: 'BackTop 返回顶部', + title_en: 'BackTop' + }, { + path: '/pages/componentsC/navbar/navbar', + icon: 'navbar', + title: 'Navbar 导航栏', + title_en: 'Navbar' + }, { + path: '/pages/componentsC/tabs/tabs', + icon: 'tabs', + title: 'Tabs 标签', + title_en: 'Tabs' + }, + // // #ifndef MP-ALIPAY + // { + // path: '/pages/template/order/order', + // icon: 'tabsSwiper', + // title: 'TabsSwiper 全屏选项卡(暂无)', + // title_en: 'TabsSwiper', + // }, + // // #endif + { + path: '/pages/componentsC/subsection/subsection', + icon: 'subsection', + title: 'Subsection 分段器', + title_en: 'Subsection' + }, { + path: '/pages/componentsC/indexList/indexList', + icon: 'indexList', + title: 'IndexList 索引列表', + title_en: 'IndexList' + }, { + path: '/pages/componentsC/steps/steps', + icon: 'steps', + title: 'Steps 步骤条', + title_en: 'Steps' + }, { + path: '/pages/componentsA/empty/empty', + icon: 'empty', + title: 'Empty 内容为空', + title_en: 'Empty' + } + ] +}, { + groupName: '其他组件', + groupName_en: 'Other components', + list: [{ + path: '/pages/componentsB/parse/parse', + icon: 'parse', + title: 'Parse 富文本解析器', + title_en: 'Parse' + }, { + path: '/pages/componentsC/codeInput/codeInput', + icon: 'messageInput', + title: 'CodeInput 验证码输入', + title_en: 'CodeInput' + }, + // { + // path: '/pages/componentsC/avatarCropper/avatarCropper', + // icon: 'avatarCropper', + // title: 'AvatarCropper 头像裁剪(暂无)', + // title_en: 'AvatarCropper', + // }, + { + path: '/pages/componentsC/loadmore/loadmore', + icon: 'loadmore', + title: 'Loadmore 加载更多', + title_en: 'Loadmore' + }, { + path: '/pages/componentsC/readMore/readMore', + icon: 'readMore', + title: 'ReadMore 展开阅读更多', + title_en: 'ReadMore' + }, + // { + // path: '/pages/componentsA/lazyLoad/lazyLoad', + // icon: 'lazyLoad', + // title: 'LazyLoad 懒加载(暂无)', + // title_en: 'LazyLoad', + // }, + { + path: '/pages/componentsA/gap/gap', + icon: 'gap', + title: 'Gap 间隔槽', + title_en: 'Gap' + }, { + path: '/pages/componentsC/avatar/avatar', + icon: 'avatar', + title: 'Avatar 头像', + title_en: 'Avatar' + }, { + path: '/pages/componentsA/link/link', + icon: 'link', + title: 'Link 超链接', + title_en: 'Link' + }, { + path: '/pages/componentsA/transition/transition', + icon: 'transition', + title: 'transition 动画', + title_en: '动画' + }] +} +] diff --git a/pages/example/components.nvue b/pages/example/components.nvue new file mode 100644 index 0000000..92243bc --- /dev/null +++ b/pages/example/components.nvue @@ -0,0 +1,71 @@ + + + + + + + diff --git a/pages/index/detail/detail.vue b/pages/index/detail/detail.vue new file mode 100644 index 0000000..7025348 --- /dev/null +++ b/pages/index/detail/detail.vue @@ -0,0 +1,22 @@ + + + diff --git a/pages/index/index - 副本.vue b/pages/index/index - 副本.vue new file mode 100644 index 0000000..78855b4 --- /dev/null +++ b/pages/index/index - 副本.vue @@ -0,0 +1,256 @@ + + + + + diff --git a/pages/index/index.vue b/pages/index/index.vue new file mode 100644 index 0000000..e157a3c --- /dev/null +++ b/pages/index/index.vue @@ -0,0 +1,294 @@ + + + + + diff --git a/pages/index/news-item.nvue b/pages/index/news-item.nvue new file mode 100644 index 0000000..5102b51 --- /dev/null +++ b/pages/index/news-item.nvue @@ -0,0 +1,211 @@ + + + + + diff --git a/pages/index/tabControl-tag.vue b/pages/index/tabControl-tag.vue new file mode 100644 index 0000000..01dc57c --- /dev/null +++ b/pages/index/tabControl-tag.vue @@ -0,0 +1,224 @@ + + + + + diff --git a/static/app-plus/mp-html/js/handler.js b/static/app-plus/mp-html/js/handler.js new file mode 100644 index 0000000..9283832 --- /dev/null +++ b/static/app-plus/mp-html/js/handler.js @@ -0,0 +1,224 @@ +'use strict' + +// 等待初始化完毕 +document.addEventListener('UniAppJSBridgeReady', () => { + document.body.onclick = function () { + return uni.postMessage({ + data: { + action: 'onClick' + } + }) + } + + uni.postMessage({ + data: { + action: 'onJSBridgeReady' + } + }) +}) +let options +let medias = [] +/** + * @description 获取标签的所有属性 + * @param {Element} ele + */ + +function getAttrs(ele) { + const attrs = Object.create(null) + + for (let i = ele.attributes.length; i--;) { + attrs[ele.attributes[i].name] = ele.attributes[i].value + } + + return attrs +} +/** + * @description 图片加载出错 + */ + +function onImgError() { + if (options[1]) { + this.src = options[1] + this.onerror = null + } // 取消监听点击 + + this.onclick = null + this.ontouchstart = null + uni.postMessage({ + data: { + action: 'onError', + source: 'img', + attrs: getAttrs(this) + } + }) +} +/** + * @description 创建 dom 结构 + * @param {object[]} nodes 节点数组 + * @param {Element} parent 父节点 + * @param {string} namespace 命名空间 + */ + +function createDom(nodes, parent, namespace) { + const _loop = function _loop(i) { + const node = nodes[i] + let ele = void 0 + + if (!node.type || node.type == 'node') { + let { name } = node // svg 需要设置 namespace + + if (name == 'svg') namespace = 'http://www.w3.org/2000/svg' + if (name == 'html' || name == 'body') name = 'div' // 创建标签 + + if (!namespace) ele = document.createElement(name); else ele = document.createElementNS(namespace, name) // 设置属性 + + for (const item in node.attrs) { + ele.setAttribute(item, node.attrs[item]) + } // 递归创建子节点 + + if (node.children) createDom(node.children, ele, namespace) // 处理图片 + + if (name == 'img') { + if (!ele.src && ele.getAttribute('data-src')) ele.src = ele.getAttribute('data-src') + + if (!node.attrs.ignore) { + // 监听图片点击事件 + ele.onclick = function (e) { + e.stopPropagation() + uni.postMessage({ + data: { + action: 'onImgTap', + attrs: getAttrs(this) + } + }) + } + } + + if (options[2]) { + image = new Image() + image.src = ele.src + ele.src = options[2] + + image.onload = function () { + ele.src = this.src + } + + image.onerror = function () { + ele.onerror() + } + } + + ele.onerror = onImgError + } // 处理链接 + else if (name == 'a') { + ele.addEventListener('click', function (e) { + e.stopPropagation() + e.preventDefault() // 阻止默认跳转 + + const href = this.getAttribute('href') + let offset + if (href && href[0] == '#') offset = (document.getElementById(href.substr(1)) || {}).offsetTop + uni.postMessage({ + data: { + action: 'onLinkTap', + attrs: getAttrs(this), + offset + } + }) + }, true) + } // 处理音视频 + else if (name == 'video' || name == 'audio') { + medias.push(ele) + + if (!node.attrs.autoplay) { + if (!node.attrs.controls) ele.setAttribute('controls', 'true') // 空白图占位 + + if (!node.attrs.poster) ele.setAttribute('poster', "data:image/svg+xml;utf8,") + } + + if (options[3]) { + ele.onplay = function () { + for (let _i = 0; _i < medias.length; _i++) { + if (medias[_i] != this) medias[_i].pause() + } + } + } + + ele.onerror = function () { + uni.postMessage({ + data: { + action: 'onError', + source: name, + attrs: getAttrs(this) + } + }) + } + } // 处理表格 + else if (name == 'table' && options[4] && !ele.style.cssText.includes('inline')) { + const div = document.createElement('div') + div.style.overflow = 'auto' + div.appendChild(ele) + ele = div + } else if (name == 'svg') namespace = void 0 + } else ele = document.createTextNode(node.text.replace(/&/g, '&')) + + parent.appendChild(ele) + } + + for (let i = 0; i < nodes.length; i++) { + var image + + _loop(i) + } +} // 设置 html 内容 + +window.setContent = function (nodes, opts, append) { + const ele = document.getElementById('content') // 背景颜色 + + if (opts[0]) document.body.bgColor = opts[0] // 长按复制 + + if (!opts[5]) ele.style.userSelect = 'none' + + if (!append) { + ele.innerHTML = '' // 不追加则先清空 + + medias = [] + } + + options = opts + const fragment = document.createDocumentFragment() + createDom(nodes, fragment) + ele.appendChild(fragment) // 触发事件 + + let height = ele.scrollHeight + uni.postMessage({ + data: { + action: 'onLoad', + height + } + }) + clearInterval(window.timer) + let ready = false + window.timer = setInterval(() => { + if (ele.scrollHeight != height) { + height = ele.scrollHeight + uni.postMessage({ + data: { + action: 'onHeightChange', + height + } + }) + } else if (!ready) { + ready = true + uni.postMessage({ + data: { + action: 'onReady' + } + }) + } + }, 350) +} // 回收计时器 + +window.onunload = function () { + clearInterval(window.timer) +} diff --git a/static/app-plus/mp-html/js/uni.webview.min.js b/static/app-plus/mp-html/js/uni.webview.min.js new file mode 100644 index 0000000..518332d --- /dev/null +++ b/static/app-plus/mp-html/js/uni.webview.min.js @@ -0,0 +1,19 @@ +!(function (e, n) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = n() : typeof define === 'function' && define.amd ? define(n) : (e = e || self).uni = n() }(this, (() => { + 'use strict' + + try { const e = {}; Object.defineProperty(e, 'passive', { get() { !0 } }), window.addEventListener('test-passive', null, e) } catch (e) {} const n = Object.prototype.hasOwnProperty; function t(e, t) { return n.call(e, t) } const i = []; const a = function (e, n) { const t = { options: { timestamp: +new Date() }, name: e, arg: n }; if (window.__dcloud_weex_postMessage || window.__dcloud_weex_) { if (e === 'postMessage') { const a = { data: [n] }; return window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessage(a) : window.__dcloud_weex_.postMessage(JSON.stringify(a)) } const o = { type: 'WEB_INVOKE_APPSERVICE', args: { data: t, webviewIds: i } }; window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessageToService(o) : window.__dcloud_weex_.postMessageToService(JSON.stringify(o)) } if (!window.plus) return window.parent.postMessage({ type: 'WEB_INVOKE_APPSERVICE', data: t, pageId: '' }, '*'); if (i.length === 0) { const r = plus.webview.currentWebview(); if (!r) throw new Error('plus.webview.currentWebview() is undefined'); const d = r.parent(); let s = ''; s = d ? d.id : r.id, i.push(s) } if (plus.webview.getWebviewById('__uniapp__service'))plus.webview.postMessageToUniNView({ type: 'WEB_INVOKE_APPSERVICE', args: { data: t, webviewIds: i } }, '__uniapp__service'); else { const w = JSON.stringify(t); plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat('WEB_INVOKE_APPSERVICE', '",').concat(w, ',').concat(JSON.stringify(i), ');')) } }; const o = { + navigateTo() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('navigateTo', { url: encodeURI(n) }) }, navigateBack() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.delta; a('navigateBack', { delta: parseInt(n) || 1 }) }, switchTab() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('switchTab', { url: encodeURI(n) }) }, reLaunch() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('reLaunch', { url: encodeURI(n) }) }, redirectTo() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('redirectTo', { url: encodeURI(n) }) }, getEnv(e) { window.plus ? e({ plus: !0 }) : e({ h5: !0 }) }, postMessage() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; a('postMessage', e.data || {}) } + }; const r = /uni-app/i.test(navigator.userAgent); const d = /Html5Plus/i.test(navigator.userAgent); const s = /complete|loaded|interactive/; const w = window.my && navigator.userAgent.indexOf('AlipayClient') > -1; const u = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent); const c = window.qq && window.qq.miniProgram && /QQ/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); const g = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent); const v = window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); const p = window.qa && /quickapp/i.test(navigator.userAgent); for (var l, _ = function () { window.UniAppJSBridge = !0, document.dispatchEvent(new CustomEvent('UniAppJSBridgeReady', { bubbles: !0, cancelable: !0 })) }, f = [function (e) { if (r || d) return window.__dcloud_weex_postMessage || window.__dcloud_weex_ ? document.addEventListener('DOMContentLoaded', e) : window.plus && s.test(document.readyState) ? setTimeout(e, 0) : document.addEventListener('plusready', e), o }, function (e) { if (v) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('WeixinJSBridgeReady', e), window.wx.miniProgram }, function (e) { if (c) return window.QQJSBridge && window.QQJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('QQJSBridgeReady', e), window.qq.miniProgram }, function (e) { + if (w) { + document.addEventListener('DOMContentLoaded', e); const n = window.my; return { + navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv + } + } + }, function (e) { if (u) return document.addEventListener('DOMContentLoaded', e), window.swan.webView }, function (e) { if (g) return document.addEventListener('DOMContentLoaded', e), window.tt.miniProgram }, function (e) { + if (p) { + window.QaJSBridge && window.QaJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('QaJSBridgeReady', e); const n = window.qa; return { + navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv + } + } + }, function (e) { return document.addEventListener('DOMContentLoaded', e), o }], m = 0; m < f.length && !(l = f[m](_)); m++);l || (l = {}); const E = typeof uni !== 'undefined' ? uni : {}; if (!E.navigateTo) for (const b in l)t(l, b) && (E[b] = l[b]); return E.webView = l, E +}))) diff --git a/static/app-plus/mp-html/local.html b/static/app-plus/mp-html/local.html new file mode 100644 index 0000000..f78d703 --- /dev/null +++ b/static/app-plus/mp-html/local.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/static/common/js/touch-emulator.js b/static/common/js/touch-emulator.js new file mode 100644 index 0000000..b90c8ac --- /dev/null +++ b/static/common/js/touch-emulator.js @@ -0,0 +1,363 @@ +(function (window, document, exportName, undefined) { + "use strict"; + + var isMultiTouch = false; + var multiTouchStartPos; + var eventTarget; + var touchElements = {}; + + // polyfills + if (!document.createTouch) { + document.createTouch = function (view, target, identifier, pageX, pageY, screenX, screenY, clientX, clientY) { + // auto set + if (clientX == undefined || clientY == undefined) { + clientX = pageX - window.pageXOffset; + clientY = pageY - window.pageYOffset; + } + + return new Touch(target, identifier, { + pageX: pageX, + pageY: pageY, + screenX: screenX, + screenY: screenY, + clientX: clientX, + clientY: clientY + }); + }; + } + + if (!document.createTouchList) { + document.createTouchList = function () { + var touchList = new TouchList(); + for (var i = 0; i < arguments.length; i++) { + touchList[i] = arguments[i]; + } + touchList.length = arguments.length; + return touchList; + }; + } + + /** + * create an touch point + * @constructor + * @param target + * @param identifier + * @param pos + * @param deltaX + * @param deltaY + * @returns {Object} touchPoint + */ + function Touch(target, identifier, pos, deltaX, deltaY) { + deltaX = deltaX || 0; + deltaY = deltaY || 0; + + this.identifier = identifier; + this.target = target; + this.clientX = pos.clientX + deltaX; + this.clientY = pos.clientY + deltaY; + this.screenX = pos.screenX + deltaX; + this.screenY = pos.screenY + deltaY; + this.pageX = pos.pageX + deltaX; + this.pageY = pos.pageY + deltaY; + } + + /** + * create empty touchlist with the methods + * @constructor + * @returns touchList + */ + function TouchList() { + var touchList = []; + + touchList.item = function (index) { + return this[index] || null; + }; + + // specified by Mozilla + touchList.identifiedTouch = function (id) { + return this[id + 1] || null; + }; + + return touchList; + } + + + /** + * Simple trick to fake touch event support + * this is enough for most libraries like Modernizr and Hammer + */ + function fakeTouchSupport() { + var objs = [window, document.documentElement]; + var props = ['ontouchstart', 'ontouchmove', 'ontouchcancel', 'ontouchend']; + + for (var o = 0; o < objs.length; o++) { + for (var p = 0; p < props.length; p++) { + if (objs[o] && objs[o][props[p]] == undefined) { + objs[o][props[p]] = null; + } + } + } + } + + /** + * we don't have to emulate on a touch device + * @returns {boolean} + */ + function hasTouchSupport() { + return ("ontouchstart" in window) || // touch events + (window.Modernizr && window.Modernizr.touch) || // modernizr + (navigator.msMaxTouchPoints || navigator.maxTouchPoints) > 2; // pointer events + } + + /** + * disable mouseevents on the page + * @param ev + */ + function preventMouseEvents(ev) { + // 注释启用默认事件 + // ev.preventDefault(); + // ev.stopPropagation(); + } + + /** + * only trigger touches when the left mousebutton has been pressed + * @param touchType + * @returns {Function} + */ + function onMouse(touchType) { + return function (ev) { + // prevent mouse events + preventMouseEvents(ev); + + if (ev.which !== 1) { + return; + } + + // The EventTarget on which the touch point started when it was first placed on the surface, + // even if the touch point has since moved outside the interactive area of that element. + // also, when the target doesnt exist anymore, we update it + if (ev.type == 'mousedown' || !eventTarget || (eventTarget && !eventTarget.dispatchEvent)) { + eventTarget = ev.target; + } + + // shiftKey has been lost, so trigger a touchend + if (isMultiTouch && !ev.shiftKey) { + triggerTouch('touchend', ev); + isMultiTouch = false; + } + + triggerTouch(touchType, ev); + + // we're entering the multi-touch mode! + if (!isMultiTouch && ev.shiftKey) { + isMultiTouch = true; + multiTouchStartPos = { + pageX: ev.pageX, + pageY: ev.pageY, + clientX: ev.clientX, + clientY: ev.clientY, + screenX: ev.screenX, + screenY: ev.screenY + }; + triggerTouch('touchstart', ev); + } + + // reset + if (ev.type == 'mouseup') { + multiTouchStartPos = null; + isMultiTouch = false; + eventTarget = null; + } + } + } + + /** + * trigger a touch event + * @param eventName + * @param mouseEv + */ + function triggerTouch(eventName, mouseEv) { + var touchEvent = document.createEvent('Event'); + touchEvent.initEvent(eventName, true, true); + + touchEvent.altKey = mouseEv.altKey; + touchEvent.ctrlKey = mouseEv.ctrlKey; + touchEvent.metaKey = mouseEv.metaKey; + touchEvent.shiftKey = mouseEv.shiftKey; + + touchEvent.touches = getActiveTouches(mouseEv, eventName); + touchEvent.targetTouches = getActiveTouches(mouseEv, eventName); + touchEvent.changedTouches = getChangedTouches(mouseEv, eventName); + + eventTarget.dispatchEvent(touchEvent); + } + + /** + * create a touchList based on the mouse event + * @param mouseEv + * @returns {TouchList} + */ + function createTouchList(mouseEv) { + var touchList = new TouchList(); + + if (isMultiTouch) { + var f = TouchEmulator.multiTouchOffset; + var deltaX = multiTouchStartPos.pageX - mouseEv.pageX; + var deltaY = multiTouchStartPos.pageY - mouseEv.pageY; + + touchList.push(new Touch(eventTarget, 1, multiTouchStartPos, (deltaX * -1) - f, (deltaY * -1) + f)); + touchList.push(new Touch(eventTarget, 2, multiTouchStartPos, deltaX + f, deltaY - f)); + } else { + touchList.push(new Touch(eventTarget, 1, mouseEv, 0, 0)); + } + + return touchList; + } + + /** + * receive all active touches + * @param mouseEv + * @returns {TouchList} + */ + function getActiveTouches(mouseEv, eventName) { + // empty list + if (mouseEv.type == 'mouseup') { + return new TouchList(); + } + + var touchList = createTouchList(mouseEv); + if (isMultiTouch && mouseEv.type != 'mouseup' && eventName == 'touchend') { + touchList.splice(1, 1); + } + return touchList; + } + + /** + * receive a filtered set of touches with only the changed pointers + * @param mouseEv + * @param eventName + * @returns {TouchList} + */ + function getChangedTouches(mouseEv, eventName) { + var touchList = createTouchList(mouseEv); + + // we only want to return the added/removed item on multitouch + // which is the second pointer, so remove the first pointer from the touchList + // + // but when the mouseEv.type is mouseup, we want to send all touches because then + // no new input will be possible + if (isMultiTouch && mouseEv.type != 'mouseup' && + (eventName == 'touchstart' || eventName == 'touchend')) { + touchList.splice(0, 1); + } + + return touchList; + } + + /** + * show the touchpoints on the screen + */ + function showTouches(ev) { + var touch, i, el, styles; + + // first all visible touches + for (i = 0; i < ev.touches.length; i++) { + touch = ev.touches[i]; + el = touchElements[touch.identifier]; + if (!el) { + el = touchElements[touch.identifier] = document.createElement("div"); + document.body.appendChild(el); + } + + styles = TouchEmulator.template(touch); + for (var prop in styles) { + el.style[prop] = styles[prop]; + } + } + + // remove all ended touches + if (ev.type == 'touchend' || ev.type == 'touchcancel') { + for (i = 0; i < ev.changedTouches.length; i++) { + touch = ev.changedTouches[i]; + el = touchElements[touch.identifier]; + if (el) { + el.parentNode.removeChild(el); + delete touchElements[touch.identifier]; + } + } + } + } + + /** + * TouchEmulator initializer + */ + function TouchEmulator() { + if (hasTouchSupport()) { + return; + } + + fakeTouchSupport(); + + window.addEventListener("mousedown", onMouse('touchstart'), true); + window.addEventListener("mousemove", onMouse('touchmove'), true); + window.addEventListener("mouseup", onMouse('touchend'), true); + + window.addEventListener("mouseenter", preventMouseEvents, true); + window.addEventListener("mouseleave", preventMouseEvents, true); + window.addEventListener("mouseout", preventMouseEvents, true); + window.addEventListener("mouseover", preventMouseEvents, true); + + // it uses itself! + window.addEventListener("touchstart", showTouches, true); + window.addEventListener("touchmove", showTouches, true); + window.addEventListener("touchend", showTouches, true); + window.addEventListener("touchcancel", showTouches, true); + } + + // start distance when entering the multitouch mode + TouchEmulator.multiTouchOffset = 75; + + /** + * css template for the touch rendering + * @param touch + * @returns object + */ + TouchEmulator.template = function (touch) { + var size = 0; + var transform = 'translate(' + (touch.clientX - (size / 2)) + 'px, ' + (touch.clientY - (size / 2)) + 'px)'; + return { + position: 'fixed', + left: 0, + top: 0, + background: '#fff', + border: 'solid 1px #999', + opacity: .6, + borderRadius: '100%', + height: size + 'px', + width: size + 'px', + padding: 0, + margin: 0, + display: 'block', + overflow: 'hidden', + pointerEvents: 'none', + webkitUserSelect: 'none', + mozUserSelect: 'none', + userSelect: 'none', + webkitTransform: transform, + mozTransform: transform, + transform: transform, + zIndex: 100 + } + }; + + // export + if (typeof define == "function" && define.amd) { + define(function () { + return TouchEmulator; + }); + } else if (typeof module != "undefined" && module.exports) { + module.exports = TouchEmulator; + } else { + window[exportName] = TouchEmulator; + } +})(window, document, "TouchEmulator"); \ No newline at end of file diff --git a/static/uview/common/favicon.ico b/static/uview/common/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e0af36815787f184eea5e88e44602b9e47ab9994 GIT binary patch literal 4286 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 CUq5XC literal 0 HcmV?d00001 diff --git a/static/uview/common/gray-logo.png b/static/uview/common/gray-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..21a69949dcce4c4f89fa494083f0d00988487cb3 GIT binary patch literal 10255 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 literal 0 HcmV?d00001 diff --git a/static/uview/example/component_select.png b/static/uview/example/component_select.png new file mode 100644 index 0000000000000000000000000000000000000000..79efb5b52182da5a98d8677db5f646d4146ffdc7 GIT binary patch literal 1005 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^uz(rC1}St4blLz^9`5Pl7*fIb zHrl^i*ihuWcevm-b^C?|;jH|142}T-Hr0Y<-O()n=lo&$`rzv9FPm29^;d_9iTq)S zV=3?Fs$=*b6qsUt{=1R&+mcykWjS%TW;EVa)A#&bw||dk+NAizI?Ofg;HvZ<(wtGx0&fQw^z-p1zauKuVng6$!9+YQP7I$!5W>R*3{cH8P)*q@v zjAp)i^YG<*`%TZan%P$b_+N`ybF`ZMjUMwsAKPD-j@PnT@G?y=lwGIIIPb53VgiT6 z$61nh7be;yo?3Bk$JKnlX$;4l7M}fHE;?;vVC2{+qTR zgY^O9>Z^jY*G3(8x8q?o`K9+;C_a<$e5DpI-B>aTAHvedY68g=s;4z4h#CDtl~CZ`z)! zZxO%d`+mFBr%LWpzh-S;C%bi#ZrU3Wn;&{nEqVzpb2%>DPP>0E)N)f%^UMve?~2KM zSm>Ja<4ysGak9C8Q%%xh2D=^6u0hQkq|UG$7dUV{RD4!}@RlmU&u9H+`0Vu?xjS-O3l2YDxFkmBY5SJ6P3$-B<-TOzxi8qiv+>A*O~wW_3pHe>2Bm%3 zCY4&(&M9$;&-2>@CmB zm2DNAohI7Bt!8R2NUN=VUI36yagNypUfvYMx>pUXO@geCwx CX`$Bu literal 0 HcmV?d00001 diff --git a/static/uview/example/js.png b/static/uview/example/js.png new file mode 100644 index 0000000000000000000000000000000000000000..beb0dc7b2cf53a3029c06844144a47f02b62d390 GIT binary patch literal 1966 zcmV;f2T}NmP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuD7)eAyRCodHn`>wsRTRgwyLs3| zNvt*v)!618Y4A}kiVrGPDbdoR#`;2QKB>^EeId3|F;FVhV!;nZ5GxieMf1T1qtw_I zF$#f7Y*WlTm=qe5q7gNcG!K6#>~5x$J9j3N*~w5pK1T)D87sl44@yc(UNzFZN;fw*A3)b@CVhXTrKK&;%ggIE(H&)j zj-(VqfZqoBGVo!sP2JtyOB6+BMC$75%E7st6-pLj%XS6b5lPtt@N^!PmGWd+X`ws5 z!E>vMPr1E3XH`76H0mnj*=bS!Y%mzyYr#vR+yM5pFg!cWGM71^wY7CE!c{!Cn*|dg zj}sbk)b669qM8Vvr~{Z>_5*xtgptTGPB?%Qw&IZSi8%o9JLd~{Y1px`vDaC_c1b!w zx6g;rOgcpf^C(4-oFdp|2&|FZd<-~XO)@`Aoq%V;7(z~-NXVdU zD3US8$o@zEl94vkG<7ATBVDD3`ef(%uYs3_e3~JzOd@lWD9uoE!$g$-ker;nB|ksE zk@QGJmWlHy=?#&*F-GyjrKP3yM%ql%)VC774HkN8*nK`0;UO35=;*jjw&|qrkI)ry zhB&}70QeU+537k)t@#xNRSxLQ$jJEFQmIP@OV=4D>+=A*QK6#NNW)&~5vP$|%_QGI zY`L$|ZiOkh#{zs3jyX&vpBXDA{Wmk~#@yUo83LXL*6kte*@!)VnG}D4EgzX^6Io3HXkM}-RvSmrMjS?pxZ3#Ri0sWg7v$Mu3bT$6Q@DI zOHZ^6*wn;X!J2Q$fq}>Kh> z6J!*V)&cZ@a%SHTdwYAeD@9aW93{kNhUY;rJgPG*fRK!3yC8$8iE(FKYwgO+8XwTo zU}Ze1c1CC?K|^6tv;xHjQeq^vLm)9A>QP*AfZjie&%M$E62Fc02%WA1dMz%wvYjRz zXUkp7hUGNd*565o*uCXIm($-m9^GlqWzCbtobCfAOL&w5{FfY@w(H*N06vwC*h#9q z$D?YesF{r(Aa`*uv#0-fiZuoT;8OtqIi#3@m+E|V0Ifbo7q0;PF$2~qNx&xq{s@e9 zQ|ij5>|hdo5}gBfvQGHEH~?VZ zW3cLCHEJU=vME>^B`6Yre~V%C9?q2O`BMs!X_I_$0ERc(S%!n;tSztTlmUJf;G-9u zILnipXI~ruqCO=m6A?$fVIr@^u%$rW$myHm{E^=xVPLK`I5mtn>@K{$C#W9N*21?#^h>lujIto>? z7`sA6*U@y~!{wBp=je2*c)mD*mRcn(sxrV04SgY=2i%l3m+{2`RC+DXDs$y-^Ek7d zvN>+c8_W6P0EWP)9DD1G6}wH-^0Hsp?Y6wRT+AH+_#;egmBeG_%H8B?{mnRFrJJ&< zGO>0*HQ-s59w$HmAEJaRv96bIPK+vzj&J@uw22XtL(YU<;})-UCeqebuKy?rgyYMLN6y?Pwcs!=$r^%Uy7dM^O#5Mz7Sz7-v!ujvEZ7p9kUjB z=2=?2J~K0OZB9;(_Vbwb_Vzot_LdJSW*xkE-75$DNw=>6y!Q1u-Ts!5k&)xnYxxzr z80Ba1WD=zHKe7A60_*p3nI8bR&`*GNb$Q|dCaN}FMf|&@gfagea*j`hI(=U9JQ)JC zY>|~ww0r@x{R#Mstz>4C?nw^-K&AYp#S8@6GFtv5^d)9qyySzl-i&V*=-OGdaviOG zH)%PngqZNwv!4G%IyYXxn(Ywm0X8E27KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0l7&;K~#9!?Ayz2!!Qg0P_f4@RRP&3gLI<;&Qv|M%rz}yhkuaL0g!kcoDl#8=fD{N(BK+S5da-J4=Mm?=6T2(;R%2SjsIl? z2w4C;dJY-Ky{!U>7_#PdSOK8-T=jy`0<2DE)b&dNQe<%!?coAs3tXCOfCK=O2Cf_tg1b`L- z4i>>u0NVB8Gytz4$azC`0Cm#T01eOp4bT7$&;Sk401eOpApqRsb0hNbRNoaGu;`fMB)N`WvB@2;Aq4tZ#(G!Wn!0-xOd2a4Ut3fm;Bq91Wu3 z?g7AU5c_LxufVMVB1VJD^;hl}pf=RJ*S!I(5L^TI2GBx;Ev^x}#=KsQoBXpx?i<8R yfv*6tfG|(0dh6`M&C^tfQ*NH7AS~HFe;)wH8Bd=UA;Q=I0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuDn@L1LRCodHTWg3_RTN%ppF55@ zPU+O>VELFLEF83lQuM&G!Uv{=Iz64oRmwsuMpgRwhX*ca@3q!mdwpxa*4}4dqF(-RD)@`5 zorxb2IvrvEe)9!$x^^s3NEQ>LE@|zW{t}0PwaE3(ZfTBv#U8`4s*9|Ksy;)L8 zOLdyV6>>Ye{ZWkR3{B`Q4_1#>GWhOLgv|L^$9olc-N?GZS!6zj08i{Kt!~FDCQl5Z z^@rOTiSp<&&BD}d;bmbNG%Wd!B=bdNT001-r&tKKO234fI2w7LkMSUz3E9k8-to;e zECdi)jslv&{B0=23x^G*gXNENTTHgNBC-k2D~#o>Z$xHKRhRHyD=pPD0-N}bztR0I9!~TfcMr6i0087is zoPP9!T|Cu%_Fy`E<^=zN(R-U+7aU%1rTxDbIZ(b^CNwq@oaP+YxQ4=tc|}6-sI4kY z8?YhSXssB-y7E9|M%LcEAjk`X@r}sYYz~tlWv8( z1J4wR+d*3GX6ykRyN?z`S6iDKQe`WPxP6(iD(I@|#Wj-E)M~B-xOr|idO9Fln7IYJ zCOsc?7bj!^cmbC9K5pPO&vg!HFAPOccwc+I2PItRfF6X?5z2K3IJ%~nFs}E2UeeHx zF#W9pj>S`CTn=G(BEGLDMF$Xi|B2PcK=hV}6X0>!#7sjl=DeFrv3gzHUmOrXMR6*a zzr8O(&yt5qO+YdM~rv!5HoE`@dopJ(p1zqv` zSL99jZit>>#AERmbh&0j!(di=7j{F}k5q^8t(+ip9~ zf!jaQ*m=q1(-R4rleqQWzn@CP)HZx;w=I2y3_J zXY(wt_#d}E`g%E~s9J8tZ4{gjn48f0p7LJ$?EK)*1eqIfvEpf*`dqSCX3gWK`NO#K zQjdu4I~icTt_NLvdH!gcepXzj@ecBTj2>Q*}f?M`Ug3D zp!H{Z-66nu9!+hs6W|?hp?5CacK@>M8rT)W*3CgWpgZZ(*ww%+T8AL! z_wHnP5VmT}8oSb=t6}i77`xU#Lj+Mrm(`)MYRnpYbQ!ED=6(2h`2+^Vi7sn(V1@xB zutqUMCyv)Up4aN6|Aq7PDlQn$0AnPUur3p`cUYNx3f=uQ*7{?5%=gQp&ps{WbIEJz bp(XwU>{f7MvQ-`Q00000NkvXXu0mjf;X1>} literal 0 HcmV?d00001 diff --git a/static/uview/example/template.png b/static/uview/example/template.png new file mode 100644 index 0000000000000000000000000000000000000000..ff895b86cea5bdba1003c988cbbc601f87bfe6eb GIT binary patch literal 1148 zcmV-?1cUpDP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAu9=1D|BRCodHTTN&aK@`rWiRmF8 z5^2RlF_@-FDfQ?@K`0(QR0KiLQ>r&Tc@t3tZ=Nb%N_$c770*)jEP_xf`5_@8g+jm- z=^j$CiQg-!hTS*o#7wi<$qo#=`}Vyz@B7}%c4wy(2#k0$j_|kJZKF^qEa5tf^En)& zNB1;2nucL)0n6IV%*-mz+l1?ofJ&uuW`BSG4S+9b0@e`*z;8q%kz0vGVkbzMA0_a_ z3?;gQ*)a0?{2d5Z94XWECMw}>2-vbBd{9^m27|B1$HzCPrluMqy~+ zTDOs45yq^M%jNa}!1llc_-pBO`t2}+>oq1+`65VIXY9McS$1%6aFL6jB>?5} zbbEXI6ldT?8DSwzT)F@K^XZ8aC``Y z+F$5j(dirEcXY>wCoiouorThQ^pvCWklYj!05G3Jp-?uNO#asgQv7+n0UygC6p;!tVndpIQBg-UD{R;qWZL|F9bLa$PJIFXOfP0|x%H3T?HI z$Kxj_Cnrs-T=jLmUXL~!jXkSh(KFytzu;-0R4Vlehj-RNyRUb5ckfe%x@D@*$v=(5 z`DH6$Y;0@}!GGfndX?c-^a%oZ+^gN7^w|oSo}MnK3IM-0*16HbOCY?Y|EJsEQSClHIpmXC8L zNLeEPG!BQ@0L(77Ejt;aZ6+|F zZ~A?;YPA{znOB{h48vr|wkm_HW$_BT=oI+B?!iYG;9uhCxHLAX$q-hcUNAA6L1ch7 z6WSUAUk3@Rw7ezzOn?n-zC4G19kyR^ebeUHA{f+U2+LykEJM>Qackta%^97ny~lCE z%8<_2$o>XarLWLWpiSFINuV>}Zfu0LgZb~Wb*B=Rpg2;Sr@M(6$@AalwV)Rjckm+s O0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAu9_DMuRRCodHTRmu0K@gr<5)pDK zj0CX?5hMnQV55bCD3*fSTxEXF(|`(Ab|MBLomE7O;N=pcO&Y~o{Hav52m}Q!0#>OM zSFxE^zne<=x-QyZ7!bgyYTb?9TViyuI6*EI^w#Ea4|2OwGbIOOytJqX3jB z^+n?o^MLTxAZD^-@DveAa1{v{pQnTC|L7SIor?xo4-|-R_IBcx>0w+k;`z1$FWj)B z1+!qsu`FG;)=qnH7Rhd7%y>ufop*tU1~P`syh*@PCW*gYhP9+Py+A!S4?`C1Fj+`z zMhbQu$=IB>;W0axXH)o6Qw*Doqx=#_`3tArm^T`D@qARk3uwV2n4APqf(dXo345nB z+!8lTIsyF7ha0ZbdfCUEQUH~Jux)r6uu7R5CY69n47nUV*$ z=4ijB5Js6`5louxZUpq^HtF5S9G%dV!Xy(6f`tj_)$HbkNTHY=RXYJKcYfyt>Jn#) zLzNNYbZ-x*{DwH|J3v6HqXlz^2D~KOQXC|L!ICUApGCJa0uO^-neotzOm|E`WL#M% zkhYJ29XCO)oNY3(i^XpNfL~rD^JZxfu#b1(WBj#q*lT<%^t%$k#lz41m*$kRnoRUE zel$Z#PPtF51-&CrZC9Zy^%LEu`$>{3w?4O<3zW#`qzF{r)IEU1_+F#nWtr?%e9s@R z%9kvE%CEw0@ld(6xlb~`tfS4Uz5@Irf6xZkBjfV(q6N6@-yoP$aJMd~`F(T?RD zTj0{v2o-789DEH7o6+f=a-|+2Zcs6f+P(zDZiPsRXpFwLTaY6W{}>p_(#| zfKa*12V>(1@PX7&O{xA8+*JetABF;d1rl8_<>yIIoGJ6mI+|kxC!i${LmE@Q$y)I+ z#1TK$F)a<8)-x=Bj6XFC8@k + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + + + + + + + + + + + + +
+ + + + diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..3375ee1 --- /dev/null +++ b/uni.scss @@ -0,0 +1,6 @@ +/** + * 下方引入的为uView UI的集成样式文件,为scss预处理器,其中包含了一些"u-"开头的自定义变量 + * 使用的时候,请将下面的一行复制到您的uniapp项目根目录的uni.scss中即可 + * uView自定义的css类名和scss变量,均以"u-"开头,不会造成冲突,请放心使用 + */ +@import '@/uni_modules/uview-ui/theme.scss'; diff --git a/uni_modules/uview-ui/LICENSE b/uni_modules/uview-ui/LICENSE new file mode 100644 index 0000000..8e39ead --- /dev/null +++ b/uni_modules/uview-ui/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 www.uviewui.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/uni_modules/uview-ui/README.md b/uni_modules/uview-ui/README.md new file mode 100644 index 0000000..c3cadd0 --- /dev/null +++ b/uni_modules/uview-ui/README.md @@ -0,0 +1,110 @@ +

+ logo +

+

uView

+

多平台快速开发的UI框架

+ +## 一起推动uView发展 + +uView正在参与开源中国的“年度最佳项目”评选,目前投票进入了最后一个阶段(之前投过票的现在也可以投票), +我们不分昼夜的努力,恳请同学们能为我们投一票,uView来源于社区,也希望社区能一起推动它的发展,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + + +## 说明 + +uView UI,是[uni-app](https://uniapp.dcloud.io/)生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水 + +## 特性 + +- 兼容安卓,iOS,微信小程序,H5,QQ小程序,百度小程序,支付宝小程序,头条小程序 +- 60+精选组件,功能丰富,多端兼容,让您快速集成,开箱即用 +- 众多贴心的JS利器,让您飞镖在手,召之即来,百步穿杨 +- 众多的常用页面和布局,让您专注逻辑,事半功倍 +- 详尽的文档支持,现代化的演示效果 +- 按需引入,精简打包体积 + + +## 安装 + +```bash +# npm方式安装 +npm i uview-ui +``` + +## 快速上手 + +1. `main.js`引入uView库 +```js +// main.js +import uView from 'uview-ui'; +Vue.use(uView); +``` + +2. `App.vue`引入基础样式(注意style标签需声明scss属性支持) +```css +/* App.vue */ + +``` + +3. `uni.scss`引入全局scss变量文件 +```css +/* uni.scss */ +@import "uview-ui/theme.scss"; +``` + +4. `pages.json`配置easycom规则(按需引入) + +```js +// pages.json +{ + "easycom": { + // npm安装的方式不需要前面的"@/",下载安装的方式需要"@/" + // npm安装方式 + "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" + // 下载安装方式 + // "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue" + }, + // 此为本身已有的内容 + "pages": [ + // ...... + ] +} +``` + +请通过[快速上手](https://www.uviewui.com/components/quickstart.html)了解更详细的内容 + +## 使用方法 +配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。 + +```html + +``` + +请通过[快速上手](https://www.uviewui.com/components/quickstart.html)了解更详细的内容 + +## 链接 + +- [官方文档](https://www.uviewui.com/) +- [更新日志](https://www.www.uviewui.com/components/changelog.html) +- [升级指南](https://www.uviewui.com/components/changelog.html) +- [关于我们](https://www.uviewui.com/cooperation/about.html) + +## 预览 + +您可以通过**微信**扫码,查看最佳的演示效果。 +
+
+ + +## 捐赠uView的研发 + +uView文档和源码全部开源免费,如果您认为uView帮到了您的开发工作,您可以捐赠uView的研发工作,捐赠无门槛,哪怕是一杯可乐也好(相信这比打赏主播更有意义)。 + + + +## 版权信息 +uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。 diff --git a/uni_modules/uview-ui/changelog.md b/uni_modules/uview-ui/changelog.md new file mode 100644 index 0000000..b49f80b --- /dev/null +++ b/uni_modules/uview-ui/changelog.md @@ -0,0 +1,154 @@ +## 2.0.15(2021-12-21) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复Cell单元格titleWidth无效 +2. 修复cheakbox组件ischecked不更新 +3. 修复keyboard是否显示"."按键默认值问题 +4. 修复number-keyboard是否显示键盘的"."符号问题 +5. 修复Input输入框 readonly无效 +6. 修复u-avatar 导致打包app、H5时候报错问题 +7. 修复Upload上传deletable无效 +8. 修复upload当设置maxSize时无效的问题 +9. 修复tabs lineWidth传入带单位的字符串的时候偏移量计算错误问题 +10. 修复rate组件在有padding的view内,显示的星星位置和可触摸区域不匹配,无法正常选中星星 +## 2.0.13(2021-12-14) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复配置默认单位为rpx可能会导致自定义导航栏高度异常的问题 +## 2.0.12(2021-12-14) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复tabs组件在vue环境下划线消失的问题 +2. 修复upload组件在安卓小程序无法选择视频的问题 +3. 添加uni.$u.config.unit配置,用于配置参数默认单位,详见:[默认单位配置](https://www.uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE) +4. 修复textarea组件在没绑定v-model时,字符统计不生效问题 +5. 修复nvue下控制是否出现滚动条失效问题 +## 2.0.11(2021-12-13) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. text组件align参数无效的问题 +2. subsection组件添加keyName参数 +3. upload组件无法判断[Object file]类型的问题 +4. 处理notify层级过低问题 +5. codeInput组件添加disabledDot参数 +6. 处理actionSheet组件round参数无效的问题 +7. calendar组件添加round参数用于控制圆角值 +8. 处理swipeAction组件在vue环境下默认被打开的问题 +9. button组件的throttleTime节流参数无效的问题 +10. 解决u-notify手动关闭方法close()无效的问题 +11. input组件readonly不生效问题 +12. tag组件type参数为info不生效问题 +## 2.0.10(2021-12-08) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复button sendMessagePath属性不生效 +2. 修复DatetimePicker选择器title无效 +3. 修复u-toast设置loading=true不生效 +4. 修复u-text金额模式传0报错 +5. 修复u-toast组件的icon属性配置不生效 +6. button的icon在特殊场景下的颜色优化 +7. IndexList优化,增加# +## 2.0.9(2021-12-01) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化swiper的height支持100%值(仅vue有效),修复嵌入视频时click事件无法触发的问题 +2. 优化tabs组件对list值为空的判断,或者动态变化list时重新计算相关尺寸的问题 +3. 优化datetime-picker组件逻辑,让其后续打开的默认值为上一次的选中值,需要通过v-model绑定值才有效 +4. 修复upload内嵌在其他组件中,选择图片可能不会换行的问题 +## 2.0.8(2021-12-01) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复toast的position参数无效问题 +2. 处理input在ios nvue上无法获得焦点的问题 +3. avatar-group组件添加extraValue参数,让剩余展示数量可手动控制 +4. tabs组件添加keyName参数用于配置从对象中读取的键名 +5. 处理text组件名字脱敏默认配置无效的问题 +6. 处理picker组件item文本太长换行问题 +## 2.0.7(2021-11-30) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复radio和checkbox动态改变v-model无效的问题。 +2. 优化form规则validator在微信小程序用法 +3. 修复backtop组件mode参数在微信小程序无效的问题 +4. 处理Album的previewFullImage属性无效的问题 +5. 处理u-datetime-picker组件mode='time'在选择改变时间时,控制台报错的问题 +## 2.0.6(2021-11-27) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 处理tag组件在vue下边框无效的问题。 +2. 处理popup组件圆角参数可能无效的问题。 +3. 处理tabs组件lineColor参数可能无效的问题。 +4. propgress组件在值很小时,显示异常的问题。 +## 2.0.5(2021-11-25) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. calendar在vue下显示异常问题。 +2. form组件labelPosition和errorType参数无效的问题 +3. input组件inputAlign无效的问题 +4. 其他一些修复 +## 2.0.4(2021-11-23) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +0. input组件缺失@confirm事件,以及subfix和prefix无效问题 +1. component.scss文件样式在vue下干扰全局布局问题 +2. 修复subsection在vue环境下表现异常的问题 +3. tag组件的bgColor等参数无效的问题 +4. upload组件不换行的问题 +5. 其他的一些修复处理 +## 2.0.3(2021-11-16) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 处理modal的confirm回调事件拼写错误问题 +6. 处理input组件@input事件参数错误问题 +7. 其他一些修复 +## 2.0.2(2021-11-16) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 修复input组件formatter参数缺失问题 +6. 优化loading-icon组件的scss写法问题,防止不兼容新版本scss +## 2.0.0(2020-11-15) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 修复input组件formatter参数缺失问题 + + diff --git a/uni_modules/uview-ui/components/u--form/u--form.vue b/uni_modules/uview-ui/components/u--form/u--form.vue new file mode 100644 index 0000000..fdfc212 --- /dev/null +++ b/uni_modules/uview-ui/components/u--form/u--form.vue @@ -0,0 +1,78 @@ + + + diff --git a/uni_modules/uview-ui/components/u--image/u--image.vue b/uni_modules/uview-ui/components/u--image/u--image.vue new file mode 100644 index 0000000..50c4d57 --- /dev/null +++ b/uni_modules/uview-ui/components/u--image/u--image.vue @@ -0,0 +1,40 @@ + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u--input/u--input.vue b/uni_modules/uview-ui/components/u--input/u--input.vue new file mode 100644 index 0000000..2887e4c --- /dev/null +++ b/uni_modules/uview-ui/components/u--input/u--input.vue @@ -0,0 +1,72 @@ + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u--text/u--text.vue b/uni_modules/uview-ui/components/u--text/u--text.vue new file mode 100644 index 0000000..a2a235a --- /dev/null +++ b/uni_modules/uview-ui/components/u--text/u--text.vue @@ -0,0 +1,43 @@ + + + diff --git a/uni_modules/uview-ui/components/u--textarea/u--textarea.vue b/uni_modules/uview-ui/components/u--textarea/u--textarea.vue new file mode 100644 index 0000000..9dbcfbb --- /dev/null +++ b/uni_modules/uview-ui/components/u--textarea/u--textarea.vue @@ -0,0 +1,47 @@ + + + diff --git a/uni_modules/uview-ui/components/u-action-sheet/props.js b/uni_modules/uview-ui/components/u-action-sheet/props.js new file mode 100644 index 0000000..e96e04f --- /dev/null +++ b/uni_modules/uview-ui/components/u-action-sheet/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 操作菜单是否展示 (默认false) + show: { + type: Boolean, + default: uni.$u.props.actionSheet.show + }, + // 标题 + title: { + type: String, + default: uni.$u.props.actionSheet.title + }, + // 选项上方的描述信息 + description: { + type: String, + default: uni.$u.props.actionSheet.description + }, + // 数据 + actions: { + type: Array, + default: uni.$u.props.actionSheet.actions + }, + // 取消按钮的文字,不为空时显示按钮 + cancelText: { + type: String, + default: uni.$u.props.actionSheet.cancelText + }, + // 点击某个菜单项时是否关闭弹窗 + closeOnClickAction: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickAction + }, + // 处理底部安全区(默认true) + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.actionSheet.safeAreaInsetBottom + }, + // 小程序的打开方式 + openType: { + type: String, + default: uni.$u.props.actionSheet.openType + }, + // 点击遮罩是否允许关闭 (默认true) + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickOverlay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.actionSheet.round + } + } +} diff --git a/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue new file mode 100644 index 0000000..e9edf06 --- /dev/null +++ b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue @@ -0,0 +1,275 @@ + + + + + + diff --git a/uni_modules/uview-ui/components/u-album/props.js b/uni_modules/uview-ui/components/u-album/props.js new file mode 100644 index 0000000..75cdb37 --- /dev/null +++ b/uni_modules/uview-ui/components/u-album/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 图片地址,Array|Array形式 + urls: { + type: Array, + default: uni.$u.props.album.urls + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.album.keyName + }, + // 单图时,图片长边的长度 + singleSize: { + type: [String, Number], + default: uni.$u.props.album.singleSize + }, + // 多图时,图片边长 + multipleSize: { + type: [String, Number], + default: uni.$u.props.album.multipleSize + }, + // 多图时,图片水平和垂直之间的间隔 + space: { + type: [String, Number], + default: uni.$u.props.album.space + }, + // 单图时,图片缩放裁剪的模式 + singleMode: { + type: String, + default: uni.$u.props.album.singleMode + }, + // 多图时,图片缩放裁剪的模式 + multipleMode: { + type: String, + default: uni.$u.props.album.multipleMode + }, + // 最多展示的图片数量,超出时最后一个位置将会显示剩余图片数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.album.maxCount + }, + // 是否可以预览图片 + previewFullImage: { + type: Boolean, + default: uni.$u.props.album.previewFullImage + }, + // 每行展示图片数量,如设置,singleSize和multipleSize将会无效 + rowCount: { + type: [String, Number], + default: uni.$u.props.album.rowCount + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.album.showMore + } + } +} diff --git a/uni_modules/uview-ui/components/u-album/u-album.vue b/uni_modules/uview-ui/components/u-album/u-album.vue new file mode 100644 index 0000000..334af68 --- /dev/null +++ b/uni_modules/uview-ui/components/u-album/u-album.vue @@ -0,0 +1,259 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u-alert/props.js b/uni_modules/uview-ui/components/u-alert/props.js new file mode 100644 index 0000000..4297e2c --- /dev/null +++ b/uni_modules/uview-ui/components/u-alert/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 显示文字 + title: { + type: String, + default: uni.$u.props.alert.title + }, + // 主题,success/warning/info/error + type: { + type: String, + default: uni.$u.props.alert.type + }, + // 辅助性文字 + description: { + type: String, + default: uni.$u.props.alert.description + }, + // 是否可关闭 + closable: { + type: Boolean, + default: uni.$u.props.alert.closable + }, + // 是否显示图标 + showIcon: { + type: Boolean, + default: uni.$u.props.alert.showIcon + }, + // 浅或深色调,light-浅色,dark-深色 + effect: { + type: String, + default: uni.$u.props.alert.effect + }, + // 文字是否居中 + center: { + type: Boolean, + default: uni.$u.props.alert.center + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.alert.fontSize + } + } +} diff --git a/uni_modules/uview-ui/components/u-alert/u-alert.vue b/uni_modules/uview-ui/components/u-alert/u-alert.vue new file mode 100644 index 0000000..81f7d43 --- /dev/null +++ b/uni_modules/uview-ui/components/u-alert/u-alert.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-avatar-group/props.js b/uni_modules/uview-ui/components/u-avatar-group/props.js new file mode 100644 index 0000000..58b42ac --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar-group/props.js @@ -0,0 +1,52 @@ +export default { + props: { + // 头像图片组 + urls: { + type: Array, + default: uni.$u.props.avatarGroup.urls + }, + // 最多展示的头像数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.avatarGroup.maxCount + }, + // 头像形状 + shape: { + type: String, + default: uni.$u.props.avatarGroup.shape + }, + // 图片裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatarGroup.mode + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.avatarGroup.showMore + }, + // 头像大小 + size: { + type: [String, Number], + default: uni.$u.props.avatarGroup.size + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.avatarGroup.keyName + }, + // 头像之间的遮挡比例 + gap: { + type: [String, Number], + validator(value) { + return value >= 0 && value <= 1 + }, + default: uni.$u.props.avatarGroup.gap + }, + // 需额外显示的值 + extraValue: { + type: [Number, String], + default: uni.$u.props.avatarGroup.extraValue + } + } +} diff --git a/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue new file mode 100644 index 0000000..7e996d7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-avatar/props.js b/uni_modules/uview-ui/components/u-avatar/props.js new file mode 100644 index 0000000..34ca0f2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar/props.js @@ -0,0 +1,78 @@ +export default { + props: { + // 头像图片路径(不能为相对路径) + src: { + type: String, + default: uni.$u.props.avatar.src + }, + // 头像形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.avatar.shape + }, + // 头像尺寸 + size: { + type: [String, Number], + default: uni.$u.props.avatar.size + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatar.mode + }, + // 显示的文字 + text: { + type: String, + default: uni.$u.props.avatar.text + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.avatar.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.avatar.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.avatar.fontSize + }, + // 显示的图标 + icon: { + type: String, + default: uni.$u.props.avatar.icon + }, + // 显示小程序头像,只对百度,微信,QQ小程序有效 + mpAvatar: { + type: Boolean, + default: uni.$u.props.avatar.mpAvatar + }, + // 是否使用随机背景色 + randomBgColor: { + type: Boolean, + default: uni.$u.props.avatar.randomBgColor + }, + // 加载失败的默认头像(组件有内置默认图片) + defaultUrl: { + type: String, + default: uni.$u.props.avatar.defaultUrl + }, + // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间 + colorIndex: { + type: [String, Number], + // 校验参数规则,索引在0-19之间 + validator(n) { + return uni.$u.test.range(n, [0, 19]) || n === '' + }, + default: uni.$u.props.avatar.colorIndex + }, + // 组件标识符 + name: { + type: String, + default: uni.$u.props.avatar.name + } + } +} diff --git a/uni_modules/uview-ui/components/u-avatar/u-avatar.vue b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue new file mode 100644 index 0000000..cd4ea0f --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-back-top/props.js b/uni_modules/uview-ui/components/u-back-top/props.js new file mode 100644 index 0000000..6c702c2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-back-top/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 返回顶部的形状,circle-圆形,square-方形 + mode: { + type: String, + default: uni.$u.props.backtop.mode + }, + // 自定义图标 + icon: { + type: String, + default: uni.$u.props.backtop.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.backtop.text + }, + // 返回顶部滚动时间 + duration: { + type: [String, Number], + default: uni.$u.props.backtop.duration + }, + // 滚动距离 + scrollTop: { + type: [String, Number], + default: uni.$u.props.backtop.scrollTop + }, + // 距离顶部多少距离显示,单位px + top: { + type: [String, Number], + default: uni.$u.props.backtop.top + }, + // 返回顶部按钮到底部的距离,单位px + bottom: { + type: [String, Number], + default: uni.$u.props.backtop.bottom + }, + // 返回顶部按钮到右边的距离,单位px + right: { + type: [String, Number], + default: uni.$u.props.backtop.right + }, + // 层级 + zIndex: { + type: [String, Number], + default: uni.$u.props.backtop.zIndex + }, + // 图标的样式,对象形式 + iconStyle: { + type: Object, + default: uni.$u.props.backtop.iconStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-back-top/u-back-top.vue b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue new file mode 100644 index 0000000..3188ba2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-badge/props.js b/uni_modules/uview-ui/components/u-badge/props.js new file mode 100644 index 0000000..74c032c --- /dev/null +++ b/uni_modules/uview-ui/components/u-badge/props.js @@ -0,0 +1,72 @@ +export default { + props: { + // 是否显示圆点 + isDot: { + type: Boolean, + default: uni.$u.props.badge.isDot + }, + // 显示的内容 + value: { + type: [Number, String], + default: uni.$u.props.badge.value + }, + // 是否显示 + show: { + type: Boolean, + default: uni.$u.props.badge.show + }, + // 最大值,超过最大值会显示 '{max}+' + max: { + type: [Number, String], + default: uni.$u.props.badge.max + }, + // 主题类型,error|warning|success|primary + type: { + type: String, + default: uni.$u.props.badge.type + }, + // 当数值为 0 时,是否展示 Badge + showZero: { + type: Boolean, + default: uni.$u.props.badge.showZero + }, + // 背景颜色,优先级比type高,如设置,type参数会失效 + bgColor: { + type: [String, null], + default: uni.$u.props.badge.bgColor + }, + // 字体颜色 + color: { + type: [String, null], + default: uni.$u.props.badge.color + }, + // 徽标形状,circle-四角均为圆角,horn-左下角为直角 + shape: { + type: String, + default: uni.$u.props.badge.shape + }, + // 设置数字的显示方式,overflow|ellipsis|limit + // overflow会根据max字段判断,超出显示`${max}+` + // ellipsis会根据max判断,超出显示`${max}...` + // limit会依据1000作为判断条件,超出1000,显示`${value/1000}K`,比如2.2k、3.34w,最多保留2位小数 + numberType: { + type: String, + default: uni.$u.props.badge.numberType + }, + // 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效 + offset: { + type: Array, + default: uni.$u.props.badge.offset + }, + // 是否反转背景和字体颜色 + inverted: { + type: Boolean, + default: uni.$u.props.badge.inverted + }, + // 是否绝对定位 + absolute: { + type: Boolean, + default: uni.$u.props.badge.absolute + } + } +} diff --git a/uni_modules/uview-ui/components/u-badge/u-badge.vue b/uni_modules/uview-ui/components/u-badge/u-badge.vue new file mode 100644 index 0000000..53cfc81 --- /dev/null +++ b/uni_modules/uview-ui/components/u-badge/u-badge.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-button/nvue.scss b/uni_modules/uview-ui/components/u-button/nvue.scss new file mode 100644 index 0000000..490db7d --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/nvue.scss @@ -0,0 +1,46 @@ +$u-button-active-opacity:0.75 !default; +$u-button-loading-text-margin-left:4px !default; +$u-button-text-color: #FFFFFF !default; +$u-button-text-plain-error-color:$u-error !default; +$u-button-text-plain-warning-color:$u-warning !default; +$u-button-text-plain-success-color:$u-success !default; +$u-button-text-plain-info-color:$u-info !default; +$u-button-text-plain-primary-color:$u-primary !default; +.u-button { + &--active { + opacity: $u-button-active-opacity; + } + + &--active--plain { + background-color: rgb(217, 217, 217); + } + + &__loading-text { + margin-left:$u-button-loading-text-margin-left; + } + + &__text, + &__loading-text { + color:$u-button-text-color; + } + + &__text--plain--error { + color:$u-button-text-plain-error-color; + } + + &__text--plain--warning { + color:$u-button-text-plain-warning-color; + } + + &__text--plain--success{ + color:$u-button-text-plain-success-color; + } + + &__text--plain--info { + color:$u-button-text-plain-info-color; + } + + &__text--plain--primary { + color:$u-button-text-plain-primary-color; + } +} \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u-button/props.js b/uni_modules/uview-ui/components/u-button/props.js new file mode 100644 index 0000000..07fd844 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/props.js @@ -0,0 +1,161 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-16 10:04:04 + * @LastAuthor : LQ + * @lastTime : 2021-08-16 10:04:24 + * @FilePath : /u-view2.0/uview-ui/components/u-button/props.js + */ +export default { + props: { + // 是否细边框 + hairline: { + type: Boolean, + default: uni.$u.props.button.hairline + }, + // 按钮的预置样式,info,primary,error,warning,success + type: { + type: String, + default: uni.$u.props.button.type + }, + // 按钮尺寸,large,normal,small,mini + size: { + type: String, + default: uni.$u.props.button.size + }, + // 按钮形状,circle(两边为半圆),square(带圆角) + shape: { + type: String, + default: uni.$u.props.button.shape + }, + // 按钮是否镂空 + plain: { + type: Boolean, + default: uni.$u.props.button.plain + }, + // 是否禁止状态 + disabled: { + type: Boolean, + default: uni.$u.props.button.disabled + }, + // 是否加载中 + loading: { + type: Boolean, + default: uni.$u.props.button.loading + }, + // 加载中提示文字 + loadingText: { + type: [String, Number], + default: uni.$u.props.button.loadingText + }, + // 加载状态图标类型 + loadingMode: { + type: String, + default: uni.$u.props.button.loadingMode + }, + // 加载图标大小 + loadingSize: { + type: [String, Number], + default: uni.$u.props.button.loadingSize + }, + // 开放能力,具体请看uniapp稳定关于button组件部分说明 + // https://uniapp.dcloud.io/component/button + openType: { + type: String, + default: uni.$u.props.button.openType + }, + // 用于
组件,点击分别会触发 组件的 submit/reset 事件 + // 取值为submit(提交表单),reset(重置表单) + formType: { + type: String, + default: uni.$u.props.button.formType + }, + // 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 + // 只微信小程序、QQ小程序有效 + appParameter: { + type: String, + default: uni.$u.props.button.appParameter + }, + // 指定是否阻止本节点的祖先节点出现点击态,微信小程序有效 + hoverStopPropagation: { + type: Boolean, + default: uni.$u.props.button.hoverStopPropagation + }, + // 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。只微信小程序有效 + lang: { + type: String, + default: uni.$u.props.button.lang + }, + // 会话来源,open-type="contact"时有效。只微信小程序有效 + sessionFrom: { + type: String, + default: uni.$u.props.button.sessionFrom + }, + // 会话内消息卡片标题,open-type="contact"时有效 + // 默认当前标题,只微信小程序有效 + sendMessageTitle: { + type: String, + default: uni.$u.props.button.sendMessageTitle + }, + // 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效 + // 默认当前分享路径,只微信小程序有效 + sendMessagePath: { + type: String, + default: uni.$u.props.button.sendMessagePath + }, + // 会话内消息卡片图片,open-type="contact"时有效 + // 默认当前页面截图,只微信小程序有效 + sendMessageImg: { + type: String, + default: uni.$u.props.button.sendMessageImg + }, + // 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示, + // 用户点击后可以快速发送小程序消息,open-type="contact"时有效 + showMessageCard: { + type: Boolean, + default: uni.$u.props.button.showMessageCard + }, + // 额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取 + dataName: { + type: String, + default: uni.$u.props.button.dataName + }, + // 节流,一定时间内只能触发一次 + throttleTime: { + type: [String, Number], + default: uni.$u.props.button.throttleTime + }, + // 按住后多久出现点击态,单位毫秒 + hoverStartTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStartTime + }, + // 手指松开后点击态保留时间,单位毫秒 + hoverStayTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStayTime + }, + // 按钮文字,之所以通过props传入,是因为slot传入的话 + // nvue中无法控制文字的样式 + text: { + type: [String, Number], + default: uni.$u.props.button.text + }, + // 按钮图标 + icon: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮图标 + iconColor: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮颜色,支持传入linear-gradient渐变色 + color: { + type: String, + default: uni.$u.props.button.color + } + } +} diff --git a/uni_modules/uview-ui/components/u-button/u-button.vue b/uni_modules/uview-ui/components/u-button/u-button.vue new file mode 100644 index 0000000..f130aeb --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/u-button.vue @@ -0,0 +1,490 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-button/vue.scss b/uni_modules/uview-ui/components/u-button/vue.scss new file mode 100644 index 0000000..32019b2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/vue.scss @@ -0,0 +1,80 @@ +// nvue下hover-class无效 +$u-button-before-top:50% !default; +$u-button-before-left:50% !default; +$u-button-before-width:100% !default; +$u-button-before-height:100% !default; +$u-button-before-transform:translate(-50%, -50%) !default; +$u-button-before-opacity:0 !default; +$u-button-before-background-color:#000 !default; +$u-button-before-border-color:#000 !default; +$u-button-active-before-opacity:.15 !default; +$u-button-icon-margin-left:4px !default; +$u-button-plain-u-button-info-color:$u-info; +$u-button-plain-u-button-success-color:$u-success; +$u-button-plain-u-button-error-color:$u-error; +$u-button-plain-u-button-warning-color:$u-error; + +.u-button { + width: 100%; + + &__text { + white-space: nowrap; + line-height: 1; + } + + &:before { + position: absolute; + top:$u-button-before-top; + left:$u-button-before-left; + width:$u-button-before-width; + height:$u-button-before-height; + border: inherit; + border-radius: inherit; + transform:$u-button-before-transform; + opacity:$u-button-before-opacity; + content: " "; + background-color:$u-button-before-background-color; + border-color:$u-button-before-border-color; + } + + &--active { + &:before { + opacity: .15 + } + } + + &__icon+&__text:not(:empty), + &__loading-text { + margin-left:$u-button-icon-margin-left; + } + + &--plain { + &.u-button--primary { + color: $u-primary; + } + } + + &--plain { + &.u-button--info { + color:$u-button-plain-u-button-info-color; + } + } + + &--plain { + &.u-button--success { + color:$u-button-plain-u-button-success-color; + } + } + + &--plain { + &.u-button--error { + color:$u-button-plain-u-button-error-color; + } + } + + &--plain { + &.u-button--warning { + color:$u-button-plain-u-button-warning-color; + } + } +} diff --git a/uni_modules/uview-ui/components/u-calendar/header.vue b/uni_modules/uview-ui/components/u-calendar/header.vue new file mode 100644 index 0000000..dc4f7d0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/header.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/month.vue b/uni_modules/uview-ui/components/u-calendar/month.vue new file mode 100644 index 0000000..a46388d --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/month.vue @@ -0,0 +1,577 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/props.js b/uni_modules/uview-ui/components/u-calendar/props.js new file mode 100644 index 0000000..ca05a77 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/props.js @@ -0,0 +1,139 @@ +export default { + props: { + // 日历顶部标题 + title: { + type: String, + default: uni.$u.props.calendar.title + }, + // 是否显示标题 + showTitle: { + type: Boolean, + default: uni.$u.props.calendar.showTitle + }, + // 是否显示副标题 + showSubtitle: { + type: Boolean, + default: uni.$u.props.calendar.showSubtitle + }, + // 日期类型选择,single-选择单个日期,multiple-可以选择多个日期,range-选择日期范围 + mode: { + type: String, + default: uni.$u.props.calendar.mode + }, + // mode=range时,第一个日期底部的提示文字 + startText: { + type: String, + default: uni.$u.props.calendar.startText + }, + // mode=range时,最后一个日期底部的提示文字 + endText: { + type: String, + default: uni.$u.props.calendar.endText + }, + // 自定义列表 + customList: { + type: Array, + default: uni.$u.props.calendar.customList + }, + // 主题色,对底部按钮和选中日期有效 + color: { + type: String, + default: uni.$u.props.calendar.color + }, + // 最小的可选日期 + minDate: { + type: [String, Number], + default: uni.$u.props.calendar.minDate + }, + // 最大可选日期 + maxDate: { + type: [String, Number], + default: uni.$u.props.calendar.maxDate + }, + // 默认选中的日期,mode为multiple或range是必须为数组格式 + defaultDate: { + type: [Array, String, Date, null], + default: uni.$u.props.calendar.defaultDate + }, + // mode=multiple时,最多可选多少个日期 + maxCount: { + type: [String, Number], + default: uni.$u.props.calendar.maxCount + }, + // 日期行高 + rowHeight: { + type: [String, Number], + default: uni.$u.props.calendar.rowHeight + }, + // 日期格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.calendar.formatter + }, + // 是否显示农历 + showLunar: { + type: Boolean, + default: uni.$u.props.calendar.showLunar + }, + // 是否显示月份背景色 + showMark: { + type: Boolean, + default: uni.$u.props.calendar.showMark + }, + // 确定按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.calendar.confirmText + }, + // 确认按钮处于禁用状态时的文字 + confirmDisabledText: { + type: String, + default: uni.$u.props.calendar.confirmDisabledText + }, + // 是否显示日历弹窗 + show: { + type: Boolean, + default: uni.$u.props.calendar.show + }, + // 是否允许点击遮罩关闭日历 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.calendar.closeOnClickOverlay + }, + // 是否为只读状态,只读状态下禁止选择日期 + readonly: { + type: Boolean, + default: uni.$u.props.calendar.readonly + }, + // 是否展示确认按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.calendar.showConfirm + }, + // 日期区间最多可选天数,默认无限制,mode = range时有效 + maxRange: { + type: [Number, String], + default: uni.$u.props.calendar.maxRange + }, + // 范围选择超过最多可选天数时的提示文案,mode = range时有效 + rangePrompt: { + type: String, + default: uni.$u.props.calendar.rangePrompt + }, + // 范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效 + showRangePrompt: { + type: Boolean, + default: uni.$u.props.calendar.showRangePrompt + }, + // 是否允许日期范围的起止时间为同一天,mode = range时有效 + allowSameDay: { + type: Boolean, + default: uni.$u.props.calendar.allowSameDay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.calendar.round + } + } +} diff --git a/uni_modules/uview-ui/components/u-calendar/u-calendar.vue b/uni_modules/uview-ui/components/u-calendar/u-calendar.vue new file mode 100644 index 0000000..df73f02 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/u-calendar.vue @@ -0,0 +1,289 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/util.js b/uni_modules/uview-ui/components/u-calendar/util.js new file mode 100644 index 0000000..ca4736b --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/util.js @@ -0,0 +1,85 @@ +export default { + methods: { + // 设置月份数据 + setMonth() { + // 月初是周几 + const day = dayjs(this.date).date(1).day() + const start = day == 0 ? 6 : day - 1 + + // 本月天数 + const days = dayjs(this.date).endOf('month').format('D') + + // 上个月天数 + const prevDays = dayjs(this.date).endOf('month').subtract(1, 'month').format('D') + + // 日期数据 + const arr = [] + // 清空表格 + this.month = [] + + // 添加上月数据 + arr.push( + ...new Array(start).fill(1).map((e, i) => { + const day = prevDays - start + i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).subtract(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加本月数据 + arr.push( + ...new Array(days - 0).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + date: dayjs(this.date).date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加下个月 + arr.push( + ...new Array(42 - days - start).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).add(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 分割数组 + for (let n = 0; n < arr.length; n += 7) { + this.month.push( + arr.slice(n, n + 7).map((e, i) => { + e.index = i + n + + // 自定义信息 + const custom = this.customList.find((c) => c.date == e.date) + + // 农历 + if (this.lunar) { + const { + IDayCn, + IMonthCn + } = this.getLunar(e.date) + e.lunar = IDayCn == '初一' ? IMonthCn : IDayCn + } + + return { + ...e, + ...custom + } + }) + ) + } + } + } +} diff --git a/uni_modules/uview-ui/components/u-car-keyboard/props.js b/uni_modules/uview-ui/components/u-car-keyboard/props.js new file mode 100644 index 0000000..3553647 --- /dev/null +++ b/uni_modules/uview-ui/components/u-car-keyboard/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: false + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: false + } + } +} diff --git a/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue b/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue new file mode 100644 index 0000000..7852fab --- /dev/null +++ b/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-cell-group/props.js b/uni_modules/uview-ui/components/u-cell-group/props.js new file mode 100644 index 0000000..350ef40 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell-group/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 分组标题 + title: { + type: String, + default: uni.$u.props.cellGroup.title + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.cellGroup.border + } + } +} diff --git a/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue b/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue new file mode 100644 index 0000000..a9508c0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue @@ -0,0 +1,61 @@ + + + + + + diff --git a/uni_modules/uview-ui/components/u-cell/props.js b/uni_modules/uview-ui/components/u-cell/props.js new file mode 100644 index 0000000..3c19543 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell/props.js @@ -0,0 +1,109 @@ +export default { + props: { + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.cell.title + }, + // 标题下方的描述信息 + label: { + type: [String, Number], + default: uni.$u.props.cell.label + }, + // 右侧的内容 + value: { + type: [String, Number], + default: uni.$u.props.cell.value + }, + // 左侧图标名称,或者图片链接(本地文件建议使用绝对地址) + icon: { + type: String, + default: uni.$u.props.cell.icon + }, + // 标题的宽度,单位任意,数值默认为px单位 + titleWidth: { + type: [String, Number], + default: uni.$u.props.cell.titleWidth + }, + // 是否禁用cell + disabled: { + type: Boolean, + default: uni.$u.props.cell.disabled + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.cell.border + }, + // 内容是否垂直居中(主要是针对右侧的value部分) + center: { + type: Boolean, + default: uni.$u.props.cell.center + }, + // 点击后跳转的URL地址 + url: { + type: String, + default: uni.$u.props.cell.url + }, + // 链接跳转的方式,内部使用的是uView封装的route方法,可能会进行拦截操作 + linkType: { + type: String, + default: uni.$u.props.cell.linkType + }, + // 是否开启点击反馈(表现为点击时加上灰色背景) + clickable: { + type: Boolean, + default: uni.$u.props.cell.clickable + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.cell.isLink + }, + // 是否显示表单状态下的必填星号(此组件可能会内嵌入input组件) + required: { + type: Boolean, + default: uni.$u.props.cell.required + }, + // 右侧的图标箭头 + rightIcon: { + type: String, + default: uni.$u.props.cell.rightIcon + }, + // 右侧箭头的方向,可选值为:left,up,down + arrowDirection: { + type: String, + default: uni.$u.props.cell.arrowDirection + }, + // 左侧图标样式 + iconStyle: { + type: Object, + default: () => {} + }, + // 右侧箭头图标的样式 + rightIconStyle: { + type: Object, + default: () => uni.$u.props.cell.rightIconStyle + }, + // 标题的样式 + titleStyle: { + type: Object, + default: () => uni.$u.props.cell.titleStyle + }, + // 单位元的大小,可选值为large + size: { + type: String, + default: uni.$u.props.cell.size + }, + // 点击cell是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.cell.stop + }, + // 标识符,cell被点击时返回 + name: { + type: [Number, String], + default: uni.$u.props.cell.name + } + } +} diff --git a/uni_modules/uview-ui/components/u-cell/u-cell.vue b/uni_modules/uview-ui/components/u-cell/u-cell.vue new file mode 100644 index 0000000..196c5e7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell/u-cell.vue @@ -0,0 +1,224 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-checkbox-group/props.js b/uni_modules/uview-ui/components/u-checkbox-group/props.js new file mode 100644 index 0000000..2f818a1 --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox-group/props.js @@ -0,0 +1,82 @@ +export default { + props: { + // 标识符 + name: { + type: String, + default: uni.$u.props.checkboxGroup.name + }, + // 绑定的值 + value: { + type: Array, + default: uni.$u.props.checkboxGroup.value + }, + // 形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.checkboxGroup.shape + }, + // 是否禁用全部checkbox + disabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.disabled + }, + + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkboxGroup.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkboxGroup.inactiveColor + }, + + // 整个组件的尺寸,默认px + size: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.size + }, + // 布局方式,row-横向,column-纵向 + placement: { + type: String, + default: uni.$u.props.checkboxGroup.placement + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.labelSize + }, + // label的字体颜色 + labelColor: { + type: [String], + default: uni.$u.props.checkboxGroup.labelColor + }, + // 是否禁止点击文本操作 + labelDisabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.labelDisabled + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkboxGroup.iconColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.iconSize + }, + // 勾选图标的对齐方式,left-左边,right-右边 + iconPlacement: { + type: String, + default: uni.$u.props.checkboxGroup.iconPlacement + }, + // 竖向配列时,是否显示下划线 + borderBottom: { + type: Boolean, + default: uni.$u.props.checkboxGroup.borderBottom + } + + } +} diff --git a/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue b/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue new file mode 100644 index 0000000..7a6b4fa --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-checkbox/props.js b/uni_modules/uview-ui/components/u-checkbox/props.js new file mode 100644 index 0000000..93f4fd9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox/props.js @@ -0,0 +1,69 @@ +export default { + props: { + // checkbox的名称 + name: { + type: [String, Number, Boolean], + default: uni.$u.props.checkbox.name + }, + // 形状,square为方形,circle为圆型 + shape: { + type: String, + default: uni.$u.props.checkbox.shape + }, + // 整体的大小 + size: { + type: [String, Number], + default: uni.$u.props.checkbox.size + }, + // 是否默认选中 + checked: { + type: Boolean, + default: uni.$u.props.checkbox.checked + }, + // 是否禁用 + disabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.disabled + }, + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkbox.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkbox.inactiveColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkbox.iconSize + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkbox.iconColor + }, + // label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式 + label: { + type: [String, Number], + default: uni.$u.props.checkbox.label + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkbox.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.checkbox.labelColor + }, + // 是否禁止点击提示语选中复选框 + labelDisabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.labelDisabled + } + } +} diff --git a/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue b/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue new file mode 100644 index 0000000..6429cca --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-circle-progress/props.js b/uni_modules/uview-ui/components/u-circle-progress/props.js new file mode 100644 index 0000000..d776cfb --- /dev/null +++ b/uni_modules/uview-ui/components/u-circle-progress/props.js @@ -0,0 +1,8 @@ +export default { + props: { + percentage: { + type: [String, Number], + default: uni.$u.props.circleProgress.percentage + } + } +} diff --git a/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue b/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue new file mode 100644 index 0000000..d1ee286 --- /dev/null +++ b/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-code-input/props.js b/uni_modules/uview-ui/components/u-code-input/props.js new file mode 100644 index 0000000..eeb58a0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-code-input/props.js @@ -0,0 +1,74 @@ +export default { + props: { + // 最大输入长度 + maxlength: { + type: [String, Number], + default: uni.$u.props.codeInput.maxlength + }, + // 是否用圆点填充 + dot: { + type: Boolean, + default: uni.$u.props.codeInput.dot + }, + // 显示模式,box-盒子模式,line-底部横线模式 + mode: { + type: String, + default: uni.$u.props.codeInput.mode + }, + // 是否细边框 + hairline: { + type: Boolean, + default: uni.$u.props.codeInput.hairline + }, + // 字符间的距离 + space: { + type: [String, Number], + default: uni.$u.props.codeInput.space + }, + // 预置值 + value: { + type: [String, Number], + default: uni.$u.props.codeInput.value + }, + // 是否自动获取焦点 + focus: { + type: Boolean, + default: uni.$u.props.codeInput.focus + }, + // 字体是否加粗 + bold: { + type: Boolean, + default: uni.$u.props.codeInput.bold + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.codeInput.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.codeInput.fontSize + }, + // 输入框的大小,宽等于高 + size: { + type: [String, Number], + default: uni.$u.props.codeInput.size + }, + // 是否隐藏原生键盘,如果想用自定义键盘的话,需设置此参数为true + disabledKeyboard: { + type: Boolean, + default: uni.$u.props.codeInput.disabledKeyboard + }, + // 边框和线条颜色 + borderColor: { + type: String, + default: uni.$u.props.codeInput.borderColor + }, + // 是否禁止输入"."符号 + disabledDot: { + type: Boolean, + default: uni.$u.props.codeInput.disabledDot + } + } +} diff --git a/uni_modules/uview-ui/components/u-code-input/u-code-input.vue b/uni_modules/uview-ui/components/u-code-input/u-code-input.vue new file mode 100644 index 0000000..a8a6857 --- /dev/null +++ b/uni_modules/uview-ui/components/u-code-input/u-code-input.vue @@ -0,0 +1,213 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-code/props.js b/uni_modules/uview-ui/components/u-code/props.js new file mode 100644 index 0000000..eaf80d0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-code/props.js @@ -0,0 +1,34 @@ +export default { + props: { + // 倒计时总秒数 + seconds: { + type: [String, Number], + default: uni.$u.props.code.seconds + }, + // 尚未开始时提示 + startText: { + type: String, + default: uni.$u.props.code.startText + }, + // 正在倒计时中的提示 + changeText: { + type: String, + default: uni.$u.props.code.changeText + }, + // 倒计时结束时的提示 + endText: { + type: String, + default: uni.$u.props.code.endText + }, + // 是否在H5刷新或各端返回再进入时继续倒计时 + keepRunning: { + type: Boolean, + default: uni.$u.props.code.keepRunning + }, + // 为了区分多个页面,或者一个页面多个倒计时组件本地存储的继续倒计时变了 + uniqueKey: { + type: String, + default: uni.$u.props.code.uniqueKey + } + } +} diff --git a/uni_modules/uview-ui/components/u-code/u-code.vue b/uni_modules/uview-ui/components/u-code/u-code.vue new file mode 100644 index 0000000..cdf9f82 --- /dev/null +++ b/uni_modules/uview-ui/components/u-code/u-code.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-col/props.js b/uni_modules/uview-ui/components/u-col/props.js new file mode 100644 index 0000000..0622251 --- /dev/null +++ b/uni_modules/uview-ui/components/u-col/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 占父容器宽度的多少等分,总分为12份 + span: { + type: [String, Number], + default: uni.$u.props.col.span + }, + // 指定栅格左侧的间隔数(总12栏) + offset: { + type: [String, Number], + default: uni.$u.props.col.offset + }, + // 水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`) + justify: { + type: String, + default: uni.$u.props.col.justify + }, + // 垂直对齐方式,可选值为top、center、bottom、stretch + align: { + type: String, + default: uni.$u.props.col.align + }, + // 文字对齐方式 + textAlign: { + type: String, + default: uni.$u.props.col.textAlign + } + } +} diff --git a/uni_modules/uview-ui/components/u-col/u-col.vue b/uni_modules/uview-ui/components/u-col/u-col.vue new file mode 100644 index 0000000..329eff3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-col/u-col.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-collapse-item/props.js b/uni_modules/uview-ui/components/u-collapse-item/props.js new file mode 100644 index 0000000..bd5749b --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse-item/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 标题 + title: { + type: String, + default: uni.$u.props.collapseItem.title + }, + // 标题右侧内容 + value: { + type: String, + default: uni.$u.props.collapseItem.value + }, + // 标题下方的描述信息 + label: { + type: String, + default: uni.$u.props.collapseItem.label + }, + // 是否禁用折叠面板 + disabled: { + type: Boolean, + default: uni.$u.props.collapseItem.disabled + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.collapseItem.isLink + }, + // 是否开启点击反馈 + clickable: { + type: Boolean, + default: uni.$u.props.collapseItem.clickable + }, + // 是否显示内边框 + border: { + type: Boolean, + default: uni.$u.props.collapseItem.border + }, + // 标题的对齐方式 + align: { + type: String, + default: uni.$u.props.collapseItem.align + }, + // 唯一标识符 + name: { + type: [String, Number], + default: uni.$u.props.collapseItem.name + }, + // 标题左侧图片,可为绝对路径的图片或内置图标 + icon: { + type: String, + default: uni.$u.props.collapseItem.icon + }, + // 面板展开收起的过渡时间,单位ms + duration: { + type: Number, + default: uni.$u.props.collapseItem.duration + } + } +} diff --git a/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue b/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue new file mode 100644 index 0000000..347f39b --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-collapse/props.js b/uni_modules/uview-ui/components/u-collapse/props.js new file mode 100644 index 0000000..7ee6d31 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 当前展开面板的name,非手风琴模式:[],手风琴模式:string | number + value: { + type: [String, Number, Array, null], + default: uni.$u.props.collapse.value + }, + // 是否手风琴模式 + accordion: { + type: Boolean, + default: uni.$u.props.collapse.accordion + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.collapse.border + } + } +} diff --git a/uni_modules/uview-ui/components/u-collapse/u-collapse.vue b/uni_modules/uview-ui/components/u-collapse/u-collapse.vue new file mode 100644 index 0000000..fc188a2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse/u-collapse.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-column-notice/props.js b/uni_modules/uview-ui/components/u-column-notice/props.js new file mode 100644 index 0000000..4809154 --- /dev/null +++ b/uni_modules/uview-ui/components/u-column-notice/props.js @@ -0,0 +1,55 @@ +export default { + props: { + // 显示的内容,字符串 + text: { + type: [Array], + default: uni.$u.props.columnNotice.text + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.columnNotice.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.columnNotice.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.columnNotice.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.columnNotice.bgColor + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.columnNotice.fontSize + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.columnNotice.speed + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.columnNotice.step + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.columnNotice.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.columnNotice.disableTouch + } + } +} diff --git a/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue b/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue new file mode 100644 index 0000000..2640dc4 --- /dev/null +++ b/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-count-down/props.js b/uni_modules/uview-ui/components/u-count-down/props.js new file mode 100644 index 0000000..d62f025 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 倒计时时长,单位ms + time: { + type: [String, Number], + default: uni.$u.props.countDown.time + }, + // 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 + format: { + type: String, + default: uni.$u.props.countDown.format + }, + // 是否自动开始倒计时 + autoStart: { + type: Boolean, + default: uni.$u.props.countDown.autoStart + }, + // 是否展示毫秒倒计时 + millisecond: { + type: Boolean, + default: uni.$u.props.countDown.millisecond + } + } +} diff --git a/uni_modules/uview-ui/components/u-count-down/u-count-down.vue b/uni_modules/uview-ui/components/u-count-down/u-count-down.vue new file mode 100644 index 0000000..f18365c --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/u-count-down.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-count-down/utils.js b/uni_modules/uview-ui/components/u-count-down/utils.js new file mode 100644 index 0000000..8c75005 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/utils.js @@ -0,0 +1,62 @@ +// 补0,如1 -> 01 +function padZero(num, targetLength = 2) { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} +const SECOND = 1000 +const MINUTE = 60 * SECOND +const HOUR = 60 * MINUTE +const DAY = 24 * HOUR +export function parseTimeData(time) { + const days = Math.floor(time / DAY) + const hours = Math.floor((time % DAY) / HOUR) + const minutes = Math.floor((time % HOUR) / MINUTE) + const seconds = Math.floor((time % MINUTE) / SECOND) + const milliseconds = Math.floor(time % SECOND) + return { + days, + hours, + minutes, + seconds, + milliseconds + } +} +export function parseFormat(format, timeData) { + let { + days, + hours, + minutes, + seconds, + milliseconds + } = timeData + // 如果格式化字符串中不存在DD(天),则将天的时间转为小时中去 + if (format.indexOf('DD') === -1) { + hours += days * 24 + } else { + // 对天补0 + format = format.replace('DD', padZero(days)) + } + // 其他同理于DD的格式化处理方式 + if (format.indexOf('HH') === -1) { + minutes += hours * 60 + } else { + format = format.replace('HH', padZero(hours)) + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60 + } else { + format = format.replace('mm', padZero(minutes)) + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000 + } else { + format = format.replace('ss', padZero(seconds)) + } + return format.replace('SSS', padZero(milliseconds, 3)) +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} diff --git a/uni_modules/uview-ui/components/u-count-to/props.js b/uni_modules/uview-ui/components/u-count-to/props.js new file mode 100644 index 0000000..86873c1 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-to/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 开始的数值,默认从0增长到某一个数 + startVal: { + type: [String, Number], + default: uni.$u.props.countTo.startVal + }, + // 要滚动的目标数值,必须 + endVal: { + type: [String, Number], + default: uni.$u.props.countTo.endVal + }, + // 滚动到目标数值的动画持续时间,单位为毫秒(ms) + duration: { + type: [String, Number], + default: uni.$u.props.countTo.duration + }, + // 设置数值后是否自动开始滚动 + autoplay: { + type: Boolean, + default: uni.$u.props.countTo.autoplay + }, + // 要显示的小数位数 + decimals: { + type: [String, Number], + default: uni.$u.props.countTo.decimals + }, + // 是否在即将到达目标数值的时候,使用缓慢滚动的效果 + useEasing: { + type: Boolean, + default: uni.$u.props.countTo.useEasing + }, + // 十进制分割 + decimal: { + type: [String, Number], + default: uni.$u.props.countTo.decimal + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.countTo.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.countTo.fontSize + }, + // 是否加粗字体 + bold: { + type: Boolean, + default: uni.$u.props.countTo.bold + }, + // 千位分隔符,类似金额的分割(¥23,321.05中的",") + separator: { + type: String, + default: uni.$u.props.countTo.separator + } + } +} diff --git a/uni_modules/uview-ui/components/u-count-to/u-count-to.vue b/uni_modules/uview-ui/components/u-count-to/u-count-to.vue new file mode 100644 index 0000000..417b732 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-to/u-count-to.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-datetime-picker/props.js b/uni_modules/uview-ui/components/u-datetime-picker/props.js new file mode 100644 index 0000000..f44c0f9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker/props.js @@ -0,0 +1,116 @@ +export default { + props: { + // 是否打开组件 + show: { + type: Boolean, + default: uni.$u.props.datetimePicker.show + }, + // 是否展示顶部的操作栏 + showToolbar: { + type: Boolean, + default: uni.$u.props.datetimePicker.showToolbar + }, + // 绑定值 + value: { + type: [String, Number], + default: uni.$u.props.datetimePicker.value + }, + // 顶部标题 + title: { + type: String, + default: uni.$u.props.datetimePicker.title + }, + // 展示格式,mode=date为日期选择,mode=time为时间选择,mode=year-month为年月选择,mode=datetime为日期时间选择 + mode: { + type: String, + default: uni.$u.props.datetimePicker.mode + }, + // 可选的最大时间 + maxDate: { + type: Number, + // 最大默认值为后10年 + default: uni.$u.props.datetimePicker.maxDate + }, + // 可选的最小时间 + minDate: { + type: Number, + // 最小默认值为前10年 + default: uni.$u.props.datetimePicker.minDate + }, + // 可选的最小小时,仅mode=time有效 + minHour: { + type: Number, + default: uni.$u.props.datetimePicker.minHour + }, + // 可选的最大小时,仅mode=time有效 + maxHour: { + type: Number, + default: uni.$u.props.datetimePicker.maxHour + }, + // 可选的最小分钟,仅mode=time有效 + minMinute: { + type: Number, + default: uni.$u.props.datetimePicker.minMinute + }, + // 可选的最大分钟,仅mode=time有效 + maxMinute: { + type: Number, + default: uni.$u.props.datetimePicker.maxMinute + }, + // 选项过滤函数 + filter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.filter + }, + // 选项格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.formatter + }, + // 是否显示加载中状态 + loading: { + type: Boolean, + default: uni.$u.props.datetimePicker.loading + }, + // 各列中,单个选项的高度 + itemHeight: { + type: [String, Number], + default: uni.$u.props.datetimePicker.itemHeight + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.datetimePicker.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.datetimePicker.confirmText + }, + // 取消按钮的颜色 + cancelColor: { + type: String, + default: uni.$u.props.datetimePicker.cancelColor + }, + // 确认按钮的颜色 + confirmColor: { + type: String, + default: uni.$u.props.datetimePicker.confirmColor + }, + // 每列中可见选项的数量 + visibleItemCount: { + type: [String, Number], + default: uni.$u.props.datetimePicker.visibleItemCount + }, + // 是否允许点击遮罩关闭选择器 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.datetimePicker.closeOnClickOverlay + }, + // 各列的默认索引 + defaultIndex: { + type: Array, + default: uni.$u.props.datetimePicker.defaultIndex + } + } +} diff --git a/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue b/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue new file mode 100644 index 0000000..0db507a --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue @@ -0,0 +1,341 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-divider/props.js b/uni_modules/uview-ui/components/u-divider/props.js new file mode 100644 index 0000000..1fa8359 --- /dev/null +++ b/uni_modules/uview-ui/components/u-divider/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 是否虚线 + dashed: { + type: Boolean, + default: uni.$u.props.divider.dashed + }, + // 是否细线 + hairline: { + type: Boolean, + default: uni.$u.props.divider.hairline + }, + // 是否以点替代文字,优先于text字段起作用 + dot: { + type: Boolean, + default: uni.$u.props.divider.dot + }, + // 内容文本的位置,left-左边,center-中间,right-右边 + textPosition: { + type: String, + default: uni.$u.props.divider.textPosition + }, + // 文本内容 + text: { + type: [String, Number], + default: uni.$u.props.divider.text + }, + // 文本大小 + textSize: { + type: [String, Number], + default: uni.$u.props.divider.textSize + }, + // 文本颜色 + textColor: { + type: String, + default: uni.$u.props.divider.textColor + }, + // 线条颜色 + lineColor: { + type: String, + default: uni.$u.props.divider.lineColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-divider/u-divider.vue b/uni_modules/uview-ui/components/u-divider/u-divider.vue new file mode 100644 index 0000000..4f92255 --- /dev/null +++ b/uni_modules/uview-ui/components/u-divider/u-divider.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-dropdown-item/props.js b/uni_modules/uview-ui/components/u-dropdown-item/props.js new file mode 100644 index 0000000..501a1f0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown-item/props.js @@ -0,0 +1,36 @@ +export default { + props: { + // 当前选中项的value值 + value: { + type: [Number, String, Array], + default: '' + }, + // 菜单项标题 + title: { + type: [String, Number], + default: '' + }, + // 选项数据,如果传入了默认slot,此参数无效 + options: { + type: Array, + default() { + return [] + } + }, + // 是否禁用此菜单项 + disabled: { + type: Boolean, + default: false + }, + // 下拉弹窗的高度 + height: { + type: [Number, String], + default: 'auto' + }, + // 点击遮罩是否可以收起弹窗 + closeOnClickOverlay: { + type: Boolean, + default: true + } + } +} diff --git a/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue b/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue new file mode 100644 index 0000000..07de583 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-dropdown/props.js b/uni_modules/uview-ui/components/u-dropdown/props.js new file mode 100644 index 0000000..5f8465e --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown/props.js @@ -0,0 +1,65 @@ +export default { + props: { + // 标题选中时的样式 + activeStyle: { + type: [String, Object], + default: () => ({ + color: '#2979ff', + fontSize: '14px' + }) + }, + // 标题未选中时的样式 + inactiveStyle: { + type: [String, Object], + default: () => ({ + color: '#606266', + fontSize: '14px' + }) + }, + // 点击遮罩是否关闭菜单 + closeOnClickMask: { + type: Boolean, + default: true + }, + // 点击当前激活项标题是否关闭菜单 + closeOnClickSelf: { + type: Boolean, + default: true + }, + // 过渡时间 + duration: { + type: [Number, String], + default: 300 + }, + // 标题菜单的高度 + height: { + type: [Number, String], + default: 40 + }, + // 是否显示下边框 + borderBottom: { + type: Boolean, + default: false + }, + // 标题的字体大小 + titleSize: { + type: [Number, String], + default: 14 + }, + // 下拉出来的内容部分的圆角值 + borderRadius: { + type: [Number, String], + default: 0 + }, + // 菜单右侧的icon图标 + menuIcon: { + type: String, + default: 'arrow-down' + }, + // 菜单右侧图标的大小 + menuIconSize: { + type: [Number, String], + default: 14 + } + } +} diff --git a/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue b/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue new file mode 100644 index 0000000..9c50bfe --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-empty/props.js b/uni_modules/uview-ui/components/u-empty/props.js new file mode 100644 index 0000000..78662f8 --- /dev/null +++ b/uni_modules/uview-ui/components/u-empty/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 内置图标名称,或图片路径,建议绝对路径 + icon: { + type: String, + default: uni.$u.props.empty.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.empty.text + }, + // 文字颜色 + textColor: { + type: String, + default: uni.$u.props.empty.textColor + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.empty.textSize + }, + // 图标的颜色 + iconColor: { + type: String, + default: uni.$u.props.empty.iconColor + }, + // 图标的大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.empty.iconSize + }, + // 选择预置的图标类型 + mode: { + type: String, + default: uni.$u.props.empty.mode + }, + // 图标宽度,单位px + width: { + type: [String, Number], + default: uni.$u.props.empty.width + }, + // 图标高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.empty.height + }, + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.empty.show + }, + // 组件距离上一个元素之间的距离,默认px单位 + marginTop: { + type: [String, Number], + default: uni.$u.props.empty.marginTop + } + } +} diff --git a/uni_modules/uview-ui/components/u-empty/u-empty.vue b/uni_modules/uview-ui/components/u-empty/u-empty.vue new file mode 100644 index 0000000..03d6a27 --- /dev/null +++ b/uni_modules/uview-ui/components/u-empty/u-empty.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-form-item/props.js b/uni_modules/uview-ui/components/u-form-item/props.js new file mode 100644 index 0000000..affaa1a --- /dev/null +++ b/uni_modules/uview-ui/components/u-form-item/props.js @@ -0,0 +1,39 @@ +export default { + props: { + // input的label提示语 + label: { + type: String, + default: uni.$u.props.formItem.label + }, + // 绑定的值 + prop: { + type: String, + default: uni.$u.props.formItem.prop + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: [String, Boolean], + default: uni.$u.props.formItem.borderBottom + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: uni.$u.props.formItem.labelWidth + }, + // 右侧图标 + rightIcon: { + type: String, + default: uni.$u.props.formItem.rightIcon + }, + // 左侧图标 + leftIcon: { + type: String, + default: uni.$u.props.formItem.leftIcon + }, + // 是否显示左边的必填星号,只作显示用,具体校验必填的逻辑,请在rules中配置 + required: { + type: Boolean, + default: uni.$u.props.formItem.required + } + } +} diff --git a/uni_modules/uview-ui/components/u-form-item/u-form-item.vue b/uni_modules/uview-ui/components/u-form-item/u-form-item.vue new file mode 100644 index 0000000..af97715 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form-item/u-form-item.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-form/props.js b/uni_modules/uview-ui/components/u-form/props.js new file mode 100644 index 0000000..f2a629c --- /dev/null +++ b/uni_modules/uview-ui/components/u-form/props.js @@ -0,0 +1,45 @@ +export default { + props: { + // 当前form的需要验证字段的集合 + model: { + type: Object, + default: uni.$u.props.form.model + }, + // 验证规则 + rules: { + type: [Object, Function, Array], + default: uni.$u.props.form.rules + }, + // 有错误时的提示方式,message-提示信息,toast-进行toast提示 + // border-bottom-下边框呈现红色,none-无提示 + errorType: { + type: String, + default: uni.$u.props.form.errorType + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: Boolean, + default: uni.$u.props.form.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: uni.$u.props.form.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: uni.$u.props.form.labelWidth + }, + // lable字体的对齐方式 + labelAlign: { + type: String, + default: uni.$u.props.form.labelAlign + }, + // lable的样式,对象形式 + labelStyle: { + type: Object, + default: uni.$u.props.form.labelStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-form/u-form.vue b/uni_modules/uview-ui/components/u-form/u-form.vue new file mode 100644 index 0000000..52e09cf --- /dev/null +++ b/uni_modules/uview-ui/components/u-form/u-form.vue @@ -0,0 +1,205 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-gap/props.js b/uni_modules/uview-ui/components/u-gap/props.js new file mode 100644 index 0000000..89953e3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-gap/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 背景颜色(默认transparent) + bgColor: { + type: String, + default: uni.$u.props.gap.bgColor + }, + // 分割槽高度,单位px(默认30) + height: { + type: [String, Number], + default: uni.$u.props.gap.height + }, + // 与上一个组件的距离 + marginTop: { + type: [String, Number], + default: uni.$u.props.gap.marginTop + }, + // 与下一个组件的距离 + marginBottom: { + type: [String, Number], + default: uni.$u.props.gap.marginBottom + } + } +} diff --git a/uni_modules/uview-ui/components/u-gap/u-gap.vue b/uni_modules/uview-ui/components/u-gap/u-gap.vue new file mode 100644 index 0000000..e4429f0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-gap/u-gap.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-grid-item/props.js b/uni_modules/uview-ui/components/u-grid-item/props.js new file mode 100644 index 0000000..06c3c66 --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid-item/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 宫格的name + name: { + type: [String, Number, null], + default: uni.$u.props.gridItem.name + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.gridItem.bgColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue b/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue new file mode 100644 index 0000000..14e8053 --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-grid/props.js b/uni_modules/uview-ui/components/u-grid/props.js new file mode 100644 index 0000000..87b0f6a --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 分成几列 + col: { + type: [String, Number], + default: uni.$u.props.grid.col + }, + // 是否显示边框 + border: { + type: Boolean, + default: uni.$u.props.grid.border + }, + // 宫格对齐方式,表现为数量少的时候,靠左,居中,还是靠右 + align: { + type: String, + default: uni.$u.props.grid.align + } + } +} diff --git a/uni_modules/uview-ui/components/u-grid/u-grid.vue b/uni_modules/uview-ui/components/u-grid/u-grid.vue new file mode 100644 index 0000000..5ac878f --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid/u-grid.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-icon/icons.js b/uni_modules/uview-ui/components/u-icon/icons.js new file mode 100644 index 0000000..f4d0fe2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/icons.js @@ -0,0 +1,214 @@ +export default { + 'uicon-level': '\ue693', + 'uicon-column-line': '\ue68e', + 'uicon-checkbox-mark': '\ue807', + 'uicon-folder': '\ue7f5', + 'uicon-movie': '\ue7f6', + 'uicon-star-fill': '\ue669', + 'uicon-star': '\ue65f', + 'uicon-phone-fill': '\ue64f', + 'uicon-phone': '\ue622', + 'uicon-apple-fill': '\ue881', + 'uicon-chrome-circle-fill': '\ue885', + 'uicon-backspace': '\ue67b', + 'uicon-attach': '\ue632', + 'uicon-cut': '\ue948', + 'uicon-empty-car': '\ue602', + 'uicon-empty-coupon': '\ue682', + 'uicon-empty-address': '\ue646', + 'uicon-empty-favor': '\ue67c', + 'uicon-empty-permission': '\ue686', + 'uicon-empty-news': '\ue687', + 'uicon-empty-search': '\ue664', + 'uicon-github-circle-fill': '\ue887', + 'uicon-rmb': '\ue608', + 'uicon-person-delete-fill': '\ue66a', + 'uicon-reload': '\ue788', + 'uicon-order': '\ue68f', + 'uicon-server-man': '\ue6bc', + 'uicon-search': '\ue62a', + 'uicon-fingerprint': '\ue955', + 'uicon-more-dot-fill': '\ue630', + 'uicon-scan': '\ue662', + 'uicon-share-square': '\ue60b', + 'uicon-map': '\ue61d', + 'uicon-map-fill': '\ue64e', + 'uicon-tags': '\ue629', + 'uicon-tags-fill': '\ue651', + 'uicon-bookmark-fill': '\ue63b', + 'uicon-bookmark': '\ue60a', + 'uicon-eye': '\ue613', + 'uicon-eye-fill': '\ue641', + 'uicon-mic': '\ue64a', + 'uicon-mic-off': '\ue649', + 'uicon-calendar': '\ue66e', + 'uicon-calendar-fill': '\ue634', + 'uicon-trash': '\ue623', + 'uicon-trash-fill': '\ue658', + 'uicon-play-left': '\ue66d', + 'uicon-play-right': '\ue610', + 'uicon-minus': '\ue618', + 'uicon-plus': '\ue62d', + 'uicon-info': '\ue653', + 'uicon-info-circle': '\ue7d2', + 'uicon-info-circle-fill': '\ue64b', + 'uicon-question': '\ue715', + 'uicon-error': '\ue6d3', + 'uicon-close': '\ue685', + 'uicon-checkmark': '\ue6a8', + 'uicon-android-circle-fill': '\ue67e', + 'uicon-android-fill': '\ue67d', + 'uicon-ie': '\ue87b', + 'uicon-IE-circle-fill': '\ue889', + 'uicon-google': '\ue87a', + 'uicon-google-circle-fill': '\ue88a', + 'uicon-setting-fill': '\ue872', + 'uicon-setting': '\ue61f', + 'uicon-minus-square-fill': '\ue855', + 'uicon-plus-square-fill': '\ue856', + 'uicon-heart': '\ue7df', + 'uicon-heart-fill': '\ue851', + 'uicon-camera': '\ue7d7', + 'uicon-camera-fill': '\ue870', + 'uicon-more-circle': '\ue63e', + 'uicon-more-circle-fill': '\ue645', + 'uicon-chat': '\ue620', + 'uicon-chat-fill': '\ue61e', + 'uicon-bag-fill': '\ue617', + 'uicon-bag': '\ue619', + 'uicon-error-circle-fill': '\ue62c', + 'uicon-error-circle': '\ue624', + 'uicon-close-circle': '\ue63f', + 'uicon-close-circle-fill': '\ue637', + 'uicon-checkmark-circle': '\ue63d', + 'uicon-checkmark-circle-fill': '\ue635', + 'uicon-question-circle-fill': '\ue666', + 'uicon-question-circle': '\ue625', + 'uicon-share': '\ue631', + 'uicon-share-fill': '\ue65e', + 'uicon-shopping-cart': '\ue621', + 'uicon-shopping-cart-fill': '\ue65d', + 'uicon-bell': '\ue609', + 'uicon-bell-fill': '\ue640', + 'uicon-list': '\ue650', + 'uicon-list-dot': '\ue616', + 'uicon-zhihu': '\ue6ba', + 'uicon-zhihu-circle-fill': '\ue709', + 'uicon-zhifubao': '\ue6b9', + 'uicon-zhifubao-circle-fill': '\ue6b8', + 'uicon-weixin-circle-fill': '\ue6b1', + 'uicon-weixin-fill': '\ue6b2', + 'uicon-twitter-circle-fill': '\ue6ab', + 'uicon-twitter': '\ue6aa', + 'uicon-taobao-circle-fill': '\ue6a7', + 'uicon-taobao': '\ue6a6', + 'uicon-weibo-circle-fill': '\ue6a5', + 'uicon-weibo': '\ue6a4', + 'uicon-qq-fill': '\ue6a1', + 'uicon-qq-circle-fill': '\ue6a0', + 'uicon-moments-circel-fill': '\ue69a', + 'uicon-moments': '\ue69b', + 'uicon-qzone': '\ue695', + 'uicon-qzone-circle-fill': '\ue696', + 'uicon-baidu-circle-fill': '\ue680', + 'uicon-baidu': '\ue681', + 'uicon-facebook-circle-fill': '\ue68a', + 'uicon-facebook': '\ue689', + 'uicon-car': '\ue60c', + 'uicon-car-fill': '\ue636', + 'uicon-warning-fill': '\ue64d', + 'uicon-warning': '\ue694', + 'uicon-clock-fill': '\ue638', + 'uicon-clock': '\ue60f', + 'uicon-edit-pen': '\ue612', + 'uicon-edit-pen-fill': '\ue66b', + 'uicon-email': '\ue611', + 'uicon-email-fill': '\ue642', + 'uicon-minus-circle': '\ue61b', + 'uicon-minus-circle-fill': '\ue652', + 'uicon-plus-circle': '\ue62e', + 'uicon-plus-circle-fill': '\ue661', + 'uicon-file-text': '\ue663', + 'uicon-file-text-fill': '\ue665', + 'uicon-pushpin': '\ue7e3', + 'uicon-pushpin-fill': '\ue86e', + 'uicon-grid': '\ue673', + 'uicon-grid-fill': '\ue678', + 'uicon-play-circle': '\ue647', + 'uicon-play-circle-fill': '\ue655', + 'uicon-pause-circle-fill': '\ue654', + 'uicon-pause': '\ue8fa', + 'uicon-pause-circle': '\ue643', + 'uicon-eye-off': '\ue648', + 'uicon-eye-off-outline': '\ue62b', + 'uicon-gift-fill': '\ue65c', + 'uicon-gift': '\ue65b', + 'uicon-rmb-circle-fill': '\ue657', + 'uicon-rmb-circle': '\ue677', + 'uicon-kefu-ermai': '\ue656', + 'uicon-server-fill': '\ue751', + 'uicon-coupon-fill': '\ue8c4', + 'uicon-coupon': '\ue8ae', + 'uicon-integral': '\ue704', + 'uicon-integral-fill': '\ue703', + 'uicon-home-fill': '\ue964', + 'uicon-home': '\ue965', + 'uicon-hourglass-half-fill': '\ue966', + 'uicon-hourglass': '\ue967', + 'uicon-account': '\ue628', + 'uicon-plus-people-fill': '\ue626', + 'uicon-minus-people-fill': '\ue615', + 'uicon-account-fill': '\ue614', + 'uicon-thumb-down-fill': '\ue726', + 'uicon-thumb-down': '\ue727', + 'uicon-thumb-up': '\ue733', + 'uicon-thumb-up-fill': '\ue72f', + 'uicon-lock-fill': '\ue979', + 'uicon-lock-open': '\ue973', + 'uicon-lock-opened-fill': '\ue974', + 'uicon-lock': '\ue97a', + 'uicon-red-packet-fill': '\ue690', + 'uicon-photo-fill': '\ue98b', + 'uicon-photo': '\ue98d', + 'uicon-volume-off-fill': '\ue659', + 'uicon-volume-off': '\ue644', + 'uicon-volume-fill': '\ue670', + 'uicon-volume': '\ue633', + 'uicon-red-packet': '\ue691', + 'uicon-download': '\ue63c', + 'uicon-arrow-up-fill': '\ue6b0', + 'uicon-arrow-down-fill': '\ue600', + 'uicon-play-left-fill': '\ue675', + 'uicon-play-right-fill': '\ue676', + 'uicon-rewind-left-fill': '\ue679', + 'uicon-rewind-right-fill': '\ue67a', + 'uicon-arrow-downward': '\ue604', + 'uicon-arrow-leftward': '\ue601', + 'uicon-arrow-rightward': '\ue603', + 'uicon-arrow-upward': '\ue607', + 'uicon-arrow-down': '\ue60d', + 'uicon-arrow-right': '\ue605', + 'uicon-arrow-left': '\ue60e', + 'uicon-arrow-up': '\ue606', + 'uicon-skip-back-left': '\ue674', + 'uicon-skip-forward-right': '\ue672', + 'uicon-rewind-right': '\ue66f', + 'uicon-rewind-left': '\ue671', + 'uicon-arrow-right-double': '\ue68d', + 'uicon-arrow-left-double': '\ue68c', + 'uicon-wifi-off': '\ue668', + 'uicon-wifi': '\ue667', + 'uicon-empty-data': '\ue62f', + 'uicon-empty-history': '\ue684', + 'uicon-empty-list': '\ue68b', + 'uicon-empty-page': '\ue627', + 'uicon-empty-order': '\ue639', + 'uicon-man': '\ue697', + 'uicon-woman': '\ue69c', + 'uicon-man-add': '\ue61c', + 'uicon-man-add-fill': '\ue64c', + 'uicon-man-delete': '\ue61a', + 'uicon-man-delete-fill': '\ue66a', + 'uicon-zh': '\ue70a', + 'uicon-en': '\ue692' +} diff --git a/uni_modules/uview-ui/components/u-icon/props.js b/uni_modules/uview-ui/components/u-icon/props.js new file mode 100644 index 0000000..71845b7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/props.js @@ -0,0 +1,89 @@ +export default { + props: { + // 图标类名 + name: { + type: String, + default: uni.$u.props.icon.name + }, + // 图标颜色,可接受主题色 + color: { + type: String, + default: uni.$u.props.icon.color + }, + // 字体大小,单位px + size: { + type: [String, Number], + default: uni.$u.props.icon.size + }, + // 是否显示粗体 + bold: { + type: Boolean, + default: uni.$u.props.icon.bold + }, + // 点击图标的时候传递事件出去的index(用于区分点击了哪一个) + index: { + type: [String, Number], + default: uni.$u.props.icon.index + }, + // 触摸图标时的类名 + hoverClass: { + type: String, + default: uni.$u.props.icon.hoverClass + }, + // 自定义扩展前缀,方便用户扩展自己的图标库 + customPrefix: { + type: String, + default: uni.$u.props.icon.customPrefix + }, + // 图标右边或者下面的文字 + label: { + type: [String, Number], + default: uni.$u.props.icon.label + }, + // label的位置,只能右边或者下边 + labelPos: { + type: String, + default: uni.$u.props.icon.labelPos + }, + // label的大小 + labelSize: { + type: [String, Number], + default: uni.$u.props.icon.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.icon.labelColor + }, + // label与图标的距离 + space: { + type: [String, Number], + default: uni.$u.props.icon.space + }, + // 图片的mode + imgMode: { + type: String, + default: uni.$u.props.icon.imgMode + }, + // 用于显示图片小图标时,图片的宽度 + width: { + type: [String, Number], + default: uni.$u.props.icon.width + }, + // 用于显示图片小图标时,图片的高度 + height: { + type: [String, Number], + default: uni.$u.props.icon.height + }, + // 用于解决某些情况下,让图标垂直居中的用途 + top: { + type: [String, Number], + default: uni.$u.props.icon.top + }, + // 是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.icon.stop + } + } +} diff --git a/uni_modules/uview-ui/components/u-icon/u-icon.vue b/uni_modules/uview-ui/components/u-icon/u-icon.vue new file mode 100644 index 0000000..fb12051 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/u-icon.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-image/props.js b/uni_modules/uview-ui/components/u-image/props.js new file mode 100644 index 0000000..2eabb74 --- /dev/null +++ b/uni_modules/uview-ui/components/u-image/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 图片地址 + src: { + type: String, + default: uni.$u.props.image.src + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.image.mode + }, + // 宽度,单位任意 + width: { + type: [String, Number], + default: uni.$u.props.image.width + }, + // 高度,单位任意 + height: { + type: [String, Number], + default: uni.$u.props.image.height + }, + // 图片形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.image.shape + }, + // 圆角,单位任意 + radius: { + type: [String, Number], + default: uni.$u.props.image.radius + }, + // 是否懒加载,微信小程序、App、百度小程序、字节跳动小程序 + lazyLoad: { + type: Boolean, + default: uni.$u.props.image.lazyLoad + }, + // 开启长按图片显示识别微信小程序码菜单 + showMenuByLongpress: { + type: Boolean, + default: uni.$u.props.image.showMenuByLongpress + }, + // 加载中的图标,或者小图片 + loadingIcon: { + type: String, + default: uni.$u.props.image.loadingIcon + }, + // 加载失败的图标,或者小图片 + errorIcon: { + type: String, + default: uni.$u.props.image.errorIcon + }, + // 是否显示加载中的图标或者自定义的slot + showLoading: { + type: Boolean, + default: uni.$u.props.image.showLoading + }, + // 是否显示加载错误的图标或者自定义的slot + showError: { + type: Boolean, + default: uni.$u.props.image.showError + }, + // 是否需要淡入效果 + fade: { + type: Boolean, + default: uni.$u.props.image.fade + }, + // 只支持网络资源,只对微信小程序有效 + webp: { + type: Boolean, + default: uni.$u.props.image.webp + }, + // 过渡时间,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.image.duration + }, + // 背景颜色,用于深色页面加载图片时,为了和背景色融合 + bgColor: { + type: String, + default: uni.$u.props.image.bgColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-image/u-image.vue b/uni_modules/uview-ui/components/u-image/u-image.vue new file mode 100644 index 0000000..9828505 --- /dev/null +++ b/uni_modules/uview-ui/components/u-image/u-image.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-anchor/props.js b/uni_modules/uview-ui/components/u-index-anchor/props.js new file mode 100644 index 0000000..6d8b59a --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-anchor/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 列表锚点文本内容 + text: { + type: [String, Number], + default: uni.$u.props.indexAnchor.text + }, + // 列表锚点文字颜色 + color: { + type: String, + default: uni.$u.props.indexAnchor.color + }, + // 列表锚点文字大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.indexAnchor.size + }, + // 列表锚点背景颜色 + bgColor: { + type: String, + default: uni.$u.props.indexAnchor.bgColor + }, + // 列表锚点高度,单位默认px + height: { + type: [String, Number], + default: uni.$u.props.indexAnchor.height + } + } +} diff --git a/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue b/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue new file mode 100644 index 0000000..b95ddef --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-item/props.js b/uni_modules/uview-ui/components/u-index-item/props.js new file mode 100644 index 0000000..7c11331 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-item/props.js @@ -0,0 +1,5 @@ +export default { + props: { + + } +} diff --git a/uni_modules/uview-ui/components/u-index-item/u-index-item.vue b/uni_modules/uview-ui/components/u-index-item/u-index-item.vue new file mode 100644 index 0000000..0bc7fb3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-item/u-index-item.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-list/props.js b/uni_modules/uview-ui/components/u-index-list/props.js new file mode 100644 index 0000000..354d459 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-list/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 右边锚点非激活的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.indexList.inactiveColor + }, + // 右边锚点激活的颜色 + activeColor: { + type: String, + default: uni.$u.props.indexList.activeColor + }, + // 索引字符列表,数组形式 + indexList: { + type: Array, + default: uni.$u.props.indexList.indexList + }, + // 是否开启锚点自动吸顶 + sticky: { + type: Boolean, + default: uni.$u.props.indexList.sticky + }, + // 自定义导航栏的高度 + customNavHeight: { + type: [String, Number], + default: uni.$u.props.indexList.customNavHeight + } + } +} diff --git a/uni_modules/uview-ui/components/u-index-list/u-index-list.vue b/uni_modules/uview-ui/components/u-index-list/u-index-list.vue new file mode 100644 index 0000000..49676d8 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-list/u-index-list.vue @@ -0,0 +1,438 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-input/props.js b/uni_modules/uview-ui/components/u-input/props.js new file mode 100644 index 0000000..88917c3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-input/props.js @@ -0,0 +1,182 @@ +export default { + props: { + // 输入的值 + value: { + type: [String, Number], + default: uni.$u.props.input.value + }, + // 输入框类型 + // number-数字输入键盘,app-vue下可以输入浮点数,app-nvue和小程序平台下只能输入整数 + // idcard-身份证输入键盘,微信、支付宝、百度、QQ小程序 + // digit-带小数点的数字键盘,App的nvue页面、微信、支付宝、百度、头条、QQ小程序 + // text-文本输入键盘 + type: { + type: String, + default: uni.$u.props.input.type + }, + // 如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true, + // 兼容性:微信小程序、百度小程序、字节跳动小程序、QQ小程序 + fixed: { + type: Boolean, + default: uni.$u.props.input.fixed + }, + // 是否禁用输入框 + disabled: { + type: Boolean, + default: uni.$u.props.input.disabled + }, + // 禁用状态时的背景色 + disabledColor: { + type: String, + default: uni.$u.props.input.disabledColor + }, + // 是否显示清除控件 + clearable: { + type: Boolean, + default: uni.$u.props.input.clearable + }, + // 是否密码类型 + password: { + type: Boolean, + default: uni.$u.props.input.password + }, + // 最大输入长度,设置为 -1 的时候不限制最大长度 + maxlength: { + type: [String, Number], + default: uni.$u.props.input.maxlength + }, + // 输入框为空时的占位符 + placeholder: { + type: String, + default: uni.$u.props.input.placeholder + }, + // 指定placeholder的样式类,注意页面或组件的style中写了scoped时,需要在类名前写/deep/ + placeholderClass: { + type: String, + default: uni.$u.props.input.placeholderClass + }, + // 指定placeholder的样式 + placeholderStyle: { + type: [String, Object], + default: uni.$u.props.input.placeholderStyle + }, + // 是否显示输入字数统计,只在 type ="text"或type ="textarea"时有效 + showWordLimit: { + type: Boolean, + default: uni.$u.props.input.showWordLimit + }, + // 设置右下角按钮的文字,有效值:send|search|next|go|done,兼容性详见uni-app文档 + // https://uniapp.dcloud.io/component/input + // https://uniapp.dcloud.io/component/textarea + confirmType: { + type: String, + default: uni.$u.props.input.confirmType + }, + // 点击键盘右下角按钮时是否保持键盘不收起,H5无效 + confirmHold: { + type: Boolean, + default: uni.$u.props.input.confirmHold + }, + // focus时,点击页面的时候不收起键盘,微信小程序有效 + holdKeyboard: { + type: Boolean, + default: uni.$u.props.input.holdKeyboard + }, + // 自动获取焦点 + // 在 H5 平台能否聚焦以及软键盘是否跟随弹出,取决于当前浏览器本身的实现。nvue 页面不支持,需使用组件的 focus()、blur() 方法控制焦点 + focus: { + type: Boolean, + default: uni.$u.props.input.focus + }, + // 键盘收起时,是否自动失去焦点,目前仅App3.0.0+有效 + autoBlur: { + type: Boolean, + default: uni.$u.props.input.autoBlur + }, + // 是否去掉 iOS 下的默认内边距,仅微信小程序,且type=textarea时有效 + disableDefaultPadding: { + type: Boolean, + default: uni.$u.props.input.disableDefaultPadding + }, + // 指定focus时光标的位置 + cursor: { + type: [String, Number], + default: uni.$u.props.input.cursor + }, + // 输入框聚焦时底部与键盘的距离 + cursorSpacing: { + type: [String, Number], + default: uni.$u.props.input.cursorSpacing + }, + // 光标起始位置,自动聚集时有效,需与selection-end搭配使用 + selectionStart: { + type: [String, Number], + default: uni.$u.props.input.selectionStart + }, + // 光标结束位置,自动聚集时有效,需与selection-start搭配使用 + selectionEnd: { + type: [String, Number], + default: uni.$u.props.input.selectionEnd + }, + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: uni.$u.props.input.adjustPosition + }, + // 输入框内容对齐方式,可选值为:left|center|right + inputAlign: { + type: String, + default: uni.$u.props.input.inputAlign + }, + // 输入框字体的大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.input.fontSize + }, + // 输入框字体颜色 + color: { + type: String, + default: uni.$u.props.input.color + }, + // 输入框前置图标 + prefixIcon: { + type: String, + default: uni.$u.props.input.prefixIcon + }, + // 前置图标样式,对象或字符串 + prefixIconStyle: { + type: [String, Object], + default: uni.$u.props.input.prefixIconStyle + }, + // 输入框后置图标 + suffixIcon: { + type: String, + default: uni.$u.props.input.suffixIcon + }, + // 后置图标样式,对象或字符串 + suffixIconStyle: { + type: [String, Object], + default: uni.$u.props.input.suffixIconStyle + }, + // 边框类型,surround-四周边框,bottom-底部边框,none-无边框 + border: { + type: String, + default: uni.$u.props.input.border + }, + // 是否只读,与disabled不同之处在于disabled会置灰组件,而readonly则不会 + readonly: { + type: Boolean, + default: uni.$u.props.input.readonly + }, + // 输入框形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.input.shape + }, + // 用于处理或者过滤输入框内容的方法 + formatter: { + type: [Function, null], + default: uni.$u.props.input.formatter + } + } +} diff --git a/uni_modules/uview-ui/components/u-input/u-input.vue b/uni_modules/uview-ui/components/u-input/u-input.vue new file mode 100644 index 0000000..235fbec --- /dev/null +++ b/uni_modules/uview-ui/components/u-input/u-input.vue @@ -0,0 +1,350 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-keyboard/props.js b/uni_modules/uview-ui/components/u-keyboard/props.js new file mode 100644 index 0000000..cfdb00a --- /dev/null +++ b/uni_modules/uview-ui/components/u-keyboard/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘,car-车牌号键盘 + mode: { + type: String, + default: uni.$u.props.keyboard.mode + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.keyboard.dotDisabled + }, + // 是否显示顶部工具条 + tooltip: { + type: Boolean, + default: uni.$u.props.keyboard.tooltip + }, + // 是否显示工具条中间的提示 + showTips: { + type: Boolean, + default: uni.$u.props.keyboard.showTips + }, + // 工具条中间的提示文字 + tips: { + type: String, + default: uni.$u.props.keyboard.tips + }, + // 是否显示工具条左边的"取消"按钮 + showCancel: { + type: Boolean, + default: uni.$u.props.keyboard.showCancel + }, + // 是否显示工具条右边的"完成"按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.keyboard.showConfirm + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.keyboard.random + }, + // 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距 + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.keyboard.safeAreaInsetBottom + }, + // 是否允许通过点击遮罩关闭键盘 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.keyboard.closeOnClickOverlay + }, + // 控制键盘的弹出与收起 + show: { + type: Boolean, + default: uni.$u.props.keyboard.show + }, + // 是否显示遮罩,某些时候数字键盘时,用户希望看到自己的数值,所以可能不想要遮罩 + overlay: { + type: Boolean, + default: uni.$u.props.keyboard.overlay + }, + // z-index值 + zIndex: { + type: [String, Number], + default: uni.$u.props.keyboard.zIndex + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.keyboard.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.keyboard.confirmText + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: uni.$u.props.keyboard.autoChange + } + } +} diff --git a/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue b/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue new file mode 100644 index 0000000..14228cb --- /dev/null +++ b/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-line-progress/props.js b/uni_modules/uview-ui/components/u-line-progress/props.js new file mode 100644 index 0000000..a4210bd --- /dev/null +++ b/uni_modules/uview-ui/components/u-line-progress/props.js @@ -0,0 +1,28 @@ +export default { + props: { + // 激活部分的颜色 + activeColor: { + type: String, + default: uni.$u.props.lineProgress.activeColor + }, + inactiveColor: { + type: String, + default: uni.$u.props.lineProgress.color + }, + // 进度百分比,数值 + percentage: { + type: [String, Number], + default: uni.$u.props.lineProgress.inactiveColor + }, + // 是否在进度条内部显示百分比的值 + showText: { + type: Boolean, + default: uni.$u.props.lineProgress.showText + }, + // 进度条的高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.lineProgress.height + } + } +} diff --git a/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue b/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue new file mode 100644 index 0000000..4e27931 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-line/props.js b/uni_modules/uview-ui/components/u-line/props.js new file mode 100644 index 0000000..866bade --- /dev/null +++ b/uni_modules/uview-ui/components/u-line/props.js @@ -0,0 +1,33 @@ +export default { + props: { + color: { + type: String, + default: uni.$u.props.line.color + }, + // 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 + length: { + type: [String, Number], + default: uni.$u.props.line.length + }, + // 线条方向,col-竖向,row-横向 + direction: { + type: String, + default: uni.$u.props.line.direction + }, + // 是否显示细边框 + hairline: { + type: Boolean, + default: uni.$u.props.line.hairline + }, + // 线条与上下左右元素的间距,字符串形式,如"30px"、"20px 30px" + margin: { + type: [String, Number], + default: uni.$u.props.line.margin + }, + // 是否虚线,true-实线,false-虚线 + dashed: { + type: Boolean, + default: uni.$u.props.line.dashed + } + } +} diff --git a/uni_modules/uview-ui/components/u-line/u-line.vue b/uni_modules/uview-ui/components/u-line/u-line.vue new file mode 100644 index 0000000..eaa39e2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line/u-line.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-link/props.js b/uni_modules/uview-ui/components/u-link/props.js new file mode 100644 index 0000000..d39353f --- /dev/null +++ b/uni_modules/uview-ui/components/u-link/props.js @@ -0,0 +1,39 @@ +export default { + props: { + // 文字颜色 + color: { + type: String, + default: uni.$u.props.link.color + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.link.fontSize + }, + // 是否显示下划线 + underLine: { + type: Boolean, + default: uni.$u.props.link.underLine + }, + // 要跳转的链接 + href: { + type: String, + default: uni.$u.props.link.href + }, + // 小程序中复制到粘贴板的提示语 + mpTips: { + type: String, + default: uni.$u.props.link.mpTips + }, + // 下划线颜色 + lineColor: { + type: String, + default: uni.$u.props.link.lineColor + }, + // 超链接的问题,不使用slot形式传入,是因为nvue下无法修改颜色 + text: { + type: String, + default: uni.$u.props.link.text + } + } +} diff --git a/uni_modules/uview-ui/components/u-link/u-link.vue b/uni_modules/uview-ui/components/u-link/u-link.vue new file mode 100644 index 0000000..c6802a5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-link/u-link.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-list-item/props.js b/uni_modules/uview-ui/components/u-list-item/props.js new file mode 100644 index 0000000..58ddc49 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list-item/props.js @@ -0,0 +1,9 @@ +export default { + props: { + // 用于滚动到指定item + anchor: { + type: [String, Number], + default: uni.$u.props.listItem.anchor + } + } +} diff --git a/uni_modules/uview-ui/components/u-list-item/u-list-item.vue b/uni_modules/uview-ui/components/u-list-item/u-list-item.vue new file mode 100644 index 0000000..1a25db6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list-item/u-list-item.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-list/props.js b/uni_modules/uview-ui/components/u-list/props.js new file mode 100644 index 0000000..25406f4 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list/props.js @@ -0,0 +1,76 @@ +export default { + props: { + // 控制是否出现滚动条,仅nvue有效 + showScrollbar: { + type: Boolean, + default: uni.$u.props.list.showScrollbar + }, + // 距底部多少时触发scrolltolower事件 + lowerThreshold: { + type: [String, Number], + default: uni.$u.props.list.lowerThreshold + }, + // 距顶部多少时触发scrolltoupper事件,非nvue有效 + upperThreshold: { + type: [String, Number], + default: uni.$u.props.list.upperThreshold + }, + // 设置竖向滚动条位置 + scrollTop: { + type: [String, Number], + default: uni.$u.props.list.scrollTop + }, + // 控制 onscroll 事件触发的频率,仅nvue有效 + offsetAccuracy: { + type: [String, Number], + default: uni.$u.props.list.offsetAccuracy + }, + // 启用 flexbox 布局。开启后,当前节点声明了display: flex就会成为flex container,并作用于其孩子节点,仅微信小程序有效 + enableFlex: { + type: Boolean, + default: uni.$u.props.list.enableFlex + }, + // 是否按分页模式显示List,默认值false + pagingEnabled: { + type: Boolean, + default: uni.$u.props.list.pagingEnabled + }, + // 是否允许List滚动 + scrollable: { + type: Boolean, + default: uni.$u.props.list.scrollable + }, + // 值应为某子元素id(id不能以数字开头) + scrollIntoView: { + type: String, + default: uni.$u.props.list.scrollIntoView + }, + // 在设置滚动条位置时使用动画过渡 + scrollWithAnimation: { + type: Boolean, + default: uni.$u.props.list.scrollWithAnimation + }, + // iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只对微信小程序有效 + enableBackToTop: { + type: Boolean, + default: uni.$u.props.list.enableBackToTop + }, + // 列表的高度 + height: { + type: [String, Number], + default: uni.$u.props.list.height + }, + // 列表宽度 + width: { + type: [String, Number], + default: uni.$u.props.list.width + }, + // 列表前后预渲染的屏数,1代表一个屏幕的高度,1.5代表1个半屏幕高度 + preLoadScreen: { + type: [String, Number], + default: uni.$u.props.list.preLoadScreen + } + // vue下,是否开启虚拟列表 + + } +} diff --git a/uni_modules/uview-ui/components/u-list/u-list.vue b/uni_modules/uview-ui/components/u-list/u-list.vue new file mode 100644 index 0000000..b31b352 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list/u-list.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loading-icon/props.js b/uni_modules/uview-ui/components/u-loading-icon/props.js new file mode 100644 index 0000000..c35524e --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-icon/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.loadingIcon.show + }, + // 颜色 + color: { + type: String, + default: uni.$u.props.loadingIcon.color + }, + // 提示文字颜色 + textColor: { + type: String, + default: uni.$u.props.loadingIcon.textColor + }, + // 文字和图标是否垂直排列 + vertical: { + type: Boolean, + default: uni.$u.props.loadingIcon.vertical + }, + // 模式选择,circle-圆形,spinner-花朵形,semicircle-半圆形 + mode: { + type: String, + default: uni.$u.props.loadingIcon.mode + }, + // 图标大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.loadingIcon.size + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.loadingIcon.textSize + }, + // 文字内容 + text: { + type: [String, Number], + default: uni.$u.props.loadingIcon.text + }, + // 动画模式 + timingFunction: { + type: String, + default: uni.$u.props.loadingIcon.timingFunction + }, + // 动画执行周期时间 + duration: { + type: [String, Number], + default: uni.$u.props.loadingIcon.duration + }, + // mode=circle时的暗边颜色 + inactiveColor: { + type: String, + default: uni.$u.props.loadingIcon.inactiveColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue b/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue new file mode 100644 index 0000000..2ede5c3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loading-page/props.js b/uni_modules/uview-ui/components/u-loading-page/props.js new file mode 100644 index 0000000..438ab64 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-page/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 提示内容 + loadingText: { + type: [String, Number], + default: uni.$u.props.loadingPage.loadingText + }, + // 文字上方用于替换loading动画的图片 + image: { + type: String, + default: uni.$u.props.loadingPage.image + }, + // 加载动画的模式,circle-圆形,spinner-花朵形,semicircle-半圆形 + loadingMode: { + type: String, + default: uni.$u.props.loadingPage.loadingMode + }, + // 是否加载中 + loading: { + type: Boolean, + default: uni.$u.props.loadingPage.loading + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.loadingPage.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.loadingPage.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.loadingPage.fontSize + }, + // 加载中图标的颜色,只能rgb或者十六进制颜色值 + loadingColor: { + type: String, + default: uni.$u.props.loadingPage.loadingColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue b/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue new file mode 100644 index 0000000..c6b51b9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loadmore/props.js b/uni_modules/uview-ui/components/u-loadmore/props.js new file mode 100644 index 0000000..125ad3e --- /dev/null +++ b/uni_modules/uview-ui/components/u-loadmore/props.js @@ -0,0 +1,80 @@ +export default { + props: { + // 组件状态,loadmore-加载前的状态,loading-加载中的状态,nomore-没有更多的状态 + status: { + type: String, + default: uni.$u.props.loadmore.status + }, + // 组件背景色 + bgColor: { + type: String, + default: uni.$u.props.loadmore.bgColor + }, + // 是否显示加载中的图标 + icon: { + type: Boolean, + default: uni.$u.props.loadmore.icon + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.loadmore.fontSize + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.loadmore.color + }, + + // 加载中状态的图标,spinner-花朵状图标,circle-圆圈状,semicircle-半圆 + loadingIcon: { + type: String, + default: uni.$u.props.loadmore.loadingIcon + }, + // 加载前的提示语 + loadmoreText: { + type: String, + default: uni.$u.props.loadmore.loadmoreText + }, + // 加载中提示语 + loadingText: { + type: String, + default: uni.$u.props.loadmore.loadingText + }, + // 没有更多的提示语 + nomoreText: { + type: String, + default: uni.$u.props.loadmore.nomoreText + }, + // 在“没有更多”状态下,是否显示粗点 + isDot: { + type: Boolean, + default: uni.$u.props.loadmore.isDot + }, + // 加载中图标的颜色 + iconColor: { + type: String, + default: uni.$u.props.loadmore.iconColor + }, + // 上边距 + marginTop: { + type: [String, Number], + default: uni.$u.props.loadmore.marginTop + }, + // 下边距 + marginBottom: { + type: [String, Number], + default: uni.$u.props.loadmore.marginBottom + }, + // 高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.loadmore.height + }, + // 是否显示左边分割线 + line: { + type: Boolean, + default: uni.$u.props.loadmore.line + } + } +} diff --git a/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue b/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue new file mode 100644 index 0000000..740ca16 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-modal/props.js b/uni_modules/uview-ui/components/u-modal/props.js new file mode 100644 index 0000000..f76672c --- /dev/null +++ b/uni_modules/uview-ui/components/u-modal/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 是否展示modal + show: { + type: Boolean, + default: uni.$u.props.modal.show + }, + // 标题 + title: { + type: [String], + default: uni.$u.props.modal.title + }, + // 弹窗内容 + content: { + type: String, + default: uni.$u.props.modal.content + }, + // 确认文案 + confirmText: { + type: String, + default: uni.$u.props.modal.confirmText + }, + // 取消文案 + cancelText: { + type: String, + default: uni.$u.props.modal.cancelText + }, + // 是否显示确认按钮 + showConfirmButton: { + type: Boolean, + default: uni.$u.props.modal.showConfirmButton + }, + // 是否显示取消按钮 + showCancelButton: { + type: Boolean, + default: uni.$u.props.modal.showCancelButton + }, + // 确认按钮颜色 + confirmColor: { + type: String, + default: uni.$u.props.modal.confirmColor + }, + // 取消文字颜色 + cancelColor: { + type: String, + default: uni.$u.props.modal.cancelColor + }, + // 对调确认和取消的位置 + buttonReverse: { + type: Boolean, + default: uni.$u.props.modal.buttonReverse + }, + // 是否开启缩放效果 + zoom: { + type: Boolean, + default: uni.$u.props.modal.zoom + }, + // 是否异步关闭,只对确定按钮有效 + asyncClose: { + type: Boolean, + default: uni.$u.props.modal.asyncClose + }, + // 是否允许点击遮罩关闭modal + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.modal.closeOnClickOverlay + }, + // 给一个负的margin-top,往上偏移,避免和键盘重合的情况 + negativeTop: { + type: [String, Number], + default: uni.$u.props.modal.negativeTop + }, + // modal宽度,不支持百分比,可以数值,px,rpx单位 + width: { + type: [String, Number], + default: uni.$u.props.modal.width + }, + // 确认按钮的样式,circle-圆形,square-方形,如设置,将不会显示取消按钮 + confirmButtonShape: { + type: String, + default: uni.$u.props.modal.confirmButtonShape + } + } +} diff --git a/uni_modules/uview-ui/components/u-modal/u-modal.vue b/uni_modules/uview-ui/components/u-modal/u-modal.vue new file mode 100644 index 0000000..4c37ae2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-modal/u-modal.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-navbar/props.js b/uni_modules/uview-ui/components/u-navbar/props.js new file mode 100644 index 0000000..4921c4d --- /dev/null +++ b/uni_modules/uview-ui/components/u-navbar/props.js @@ -0,0 +1,69 @@ +export default { + props: { + // 是否开启顶部安全区适配 + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.navbar.safeAreaInsetTop + }, + // 固定在顶部时,是否生成一个等高元素,以防止塌陷 + placeholder: { + type: Boolean, + default: uni.$u.props.navbar.placeholder + }, + // 是否固定在顶部 + fixed: { + type: Boolean, + default: uni.$u.props.navbar.fixed + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.navbar.border + }, + // 左边的图标 + leftIcon: { + type: String, + default: uni.$u.props.navbar.leftIcon + }, + // 左边的提示文字 + leftText: { + type: String, + default: uni.$u.props.navbar.leftText + }, + // 左右的提示文字 + rightText: { + type: String, + default: uni.$u.props.navbar.rightText + }, + // 右边的图标 + rightIcon: { + type: String, + default: uni.$u.props.navbar.rightIcon + }, + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.navbar.title + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.navbar.bgColor + }, + // 标题的宽度 + titleWidth: { + type: [String, Number], + default: uni.$u.props.navbar.titleWidth + }, + // 导航栏高度 + height: { + type: [String, Number], + default: uni.$u.props.navbar.height + }, + // 左侧返回图标的大小 + leftIconSize: { + type: [String, Number], + default: uni.$u.props.navbar.leftIconSize + } + } +} diff --git a/uni_modules/uview-ui/components/u-navbar/u-navbar.vue b/uni_modules/uview-ui/components/u-navbar/u-navbar.vue new file mode 100644 index 0000000..50e7578 --- /dev/null +++ b/uni_modules/uview-ui/components/u-navbar/u-navbar.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-no-network/props.js b/uni_modules/uview-ui/components/u-no-network/props.js new file mode 100644 index 0000000..9f3af62 --- /dev/null +++ b/uni_modules/uview-ui/components/u-no-network/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 页面文字提示 + tips: { + type: String, + default: uni.$u.props.noNetwork.tips + }, + // 一个z-index值,用于设置没有网络这个组件的层次,因为页面可能会有其他定位的元素层级过高,导致此组件被覆盖 + zIndex: { + type: [String, Number], + default: uni.$u.props.noNetwork.zIndex + }, + // image 没有网络的图片提示 + image: { + type: String, + default: uni.$u.props.noNetwork.image + } + } +} diff --git a/uni_modules/uview-ui/components/u-no-network/u-no-network.vue b/uni_modules/uview-ui/components/u-no-network/u-no-network.vue new file mode 100644 index 0000000..53db905 --- /dev/null +++ b/uni_modules/uview-ui/components/u-no-network/u-no-network.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-notice-bar/props.js b/uni_modules/uview-ui/components/u-notice-bar/props.js new file mode 100644 index 0000000..7040c29 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notice-bar/props.js @@ -0,0 +1,70 @@ +export default { + props: { + // 显示的内容,数组 + text: { + type: [Array, String], + default: uni.$u.props.noticeBar.text + }, + // 通告滚动模式,row-横向滚动,column-竖向滚动 + direction: { + type: String, + default: uni.$u.props.noticeBar.direction + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.noticeBar.step + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.noticeBar.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.noticeBar.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.noticeBar.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.noticeBar.bgColor + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.noticeBar.speed + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.noticeBar.fontSize + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.noticeBar.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.noticeBar.disableTouch + }, + // 跳转的页面路径 + url: { + type: String, + default: uni.$u.props.noticeBar.url + }, + // 页面跳转的类型 + linkType: { + type: String, + default: uni.$u.props.noticeBar.linkType + } + } +} diff --git a/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue b/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue new file mode 100644 index 0000000..a06eb39 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue @@ -0,0 +1,101 @@ + + + + diff --git a/uni_modules/uview-ui/components/u-notify/props.js b/uni_modules/uview-ui/components/u-notify/props.js new file mode 100644 index 0000000..57a9d71 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notify/props.js @@ -0,0 +1,49 @@ +export default { + props: { + // 到顶部的距离 + top: { + type: [String, Number], + default: uni.$u.props.notify.top + }, + // 是否展示组件 + // show: { + // type: Boolean, + // default: uni.$u.props.notify.show + // }, + // type主题,primary,success,warning,error + type: { + type: String, + default: uni.$u.props.notify.type + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.notify.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.notify.bgColor + }, + // 展示的文字内容 + message: { + type: String, + default: uni.$u.props.notify.message + }, + // 展示时长,为0时不消失,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.notify.duration + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.notify.fontSize + }, + // 是否留出顶部安全距离(状态栏高度) + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.notify.safeAreaInsetTop + } + } +} diff --git a/uni_modules/uview-ui/components/u-notify/u-notify.vue b/uni_modules/uview-ui/components/u-notify/u-notify.vue new file mode 100644 index 0000000..f011e0f --- /dev/null +++ b/uni_modules/uview-ui/components/u-notify/u-notify.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-number-box/props.js b/uni_modules/uview-ui/components/u-number-box/props.js new file mode 100644 index 0000000..fb0fa94 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-box/props.js @@ -0,0 +1,109 @@ +export default { + props: { + // 步进器标识符,在change回调返回 + name: { + type: [String, Number], + default: uni.$u.props.numberBox.name + }, + // 用于双向绑定的值,初始化时设置设为默认min值(最小值) + value: { + type: [String, Number], + default: uni.$u.props.numberBox.value + }, + // 最小值 + min: { + type: [String, Number], + default: uni.$u.props.numberBox.min + }, + // 最大值 + max: { + type: [String, Number], + default: uni.$u.props.numberBox.max + }, + // 加减的步长,可为小数 + step: { + type: [String, Number], + default: uni.$u.props.numberBox.step + }, + // 是否只允许输入整数 + integer: { + type: Boolean, + default: uni.$u.props.numberBox.integer + }, + // 是否禁用,包括输入框,加减按钮 + disabled: { + type: Boolean, + default: uni.$u.props.numberBox.disabled + }, + // 是否禁用输入框 + disabledInput: { + type: Boolean, + default: uni.$u.props.numberBox.disabledInput + }, + // 是否开启异步变更,开启后需要手动控制输入值 + asyncChange: { + type: Boolean, + default: uni.$u.props.numberBox.asyncChange + }, + // 输入框宽度,单位为px + inputWidth: { + type: [String, Number], + default: uni.$u.props.numberBox.inputWidth + }, + // 是否显示减少按钮 + showMinus: { + type: Boolean, + default: uni.$u.props.numberBox.showMinus + }, + // 是否显示增加按钮 + showPlus: { + type: Boolean, + default: uni.$u.props.numberBox.showPlus + }, + // 显示的小数位数 + decimalLength: { + type: [String, Number, null], + default: uni.$u.props.numberBox.decimalLength + }, + // 是否开启长按加减手势 + longPress: { + type: Boolean, + default: uni.$u.props.numberBox.longPress + }, + // 输入框文字和加减按钮图标的颜色 + color: { + type: String, + default: uni.$u.props.numberBox.color + }, + // 按钮大小,宽高等于此值,单位px,输入框高度和此值保持一致 + buttonSize: { + type: [String, Number], + default: uni.$u.props.numberBox.buttonSize + }, + // 输入框和按钮的背景颜色 + bgColor: { + type: String, + default: uni.$u.props.numberBox.bgColor + }, + // 指定光标于键盘的距离,避免键盘遮挡输入框,单位px + cursorSpacing: { + type: [String, Number], + default: uni.$u.props.numberBox.cursorSpacing + }, + // 是否禁用增加按钮 + disablePlus: { + type: Boolean, + default: uni.$u.props.numberBox.disablePlus + }, + // 是否禁用减少按钮 + disableMinus: { + type: Boolean, + default: uni.$u.props.numberBox.disableMinus + }, + // 加减按钮图标的样式 + iconStyle: { + type: [Object, String], + default: uni.$u.props.numberBox.iconStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-number-box/u-number-box.vue b/uni_modules/uview-ui/components/u-number-box/u-number-box.vue new file mode 100644 index 0000000..90d1865 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-box/u-number-box.vue @@ -0,0 +1,417 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-number-keyboard/props.js b/uni_modules/uview-ui/components/u-number-keyboard/props.js new file mode 100644 index 0000000..5e3bf55 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-keyboard/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘 + mode: { + type: String, + default: uni.$u.props.numberKeyboard.value + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.numberKeyboard.dotDisabled + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.numberKeyboard.random + } + } +} diff --git a/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue b/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue new file mode 100644 index 0000000..c582444 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-overlay/props.js b/uni_modules/uview-ui/components/u-overlay/props.js new file mode 100644 index 0000000..e6974df --- /dev/null +++ b/uni_modules/uview-ui/components/u-overlay/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 是否显示遮罩 + show: { + type: Boolean, + default: uni.$u.props.overlay.show + }, + // 层级z-index + zIndex: { + type: [String, Number], + default: uni.$u.props.overlay.zIndex + }, + // 遮罩的过渡时间,单位为ms + duration: { + type: [String, Number], + default: uni.$u.props.overlay.duration + }, + // 不透明度值,当做rgba的第四个参数 + opacity: { + type: [String, Number], + default: uni.$u.props.overlay.opacity + } + } +} diff --git a/uni_modules/uview-ui/components/u-overlay/u-overlay.vue b/uni_modules/uview-ui/components/u-overlay/u-overlay.vue new file mode 100644 index 0000000..92de4e9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-overlay/u-overlay.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-parse/node/node.vue b/uni_modules/uview-ui/components/u-parse/node/node.vue new file mode 100644 index 0000000..e2a9f7b --- /dev/null +++ b/uni_modules/uview-ui/components/u-parse/node/node.vue @@ -0,0 +1,499 @@ +