zouling 1 vuosi sitten
vanhempi
commit
e1073204be
100 muutettua tiedostoa jossa 1008 lisäystä ja 6138 poistoa
  1. 0 2
      uni_modules/uni-badge/changelog.md
  2. 3 3
      uni_modules/uni-badge/components/uni-badge/uni-badge.vue
  3. 1 1
      uni_modules/uni-badge/package.json
  4. 0 6
      uni_modules/uni-breadcrumb/changelog.md
  5. 0 121
      uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue
  6. 0 41
      uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue
  7. 0 88
      uni_modules/uni-breadcrumb/package.json
  8. 0 66
      uni_modules/uni-breadcrumb/readme.md
  9. 7 13
      uni_modules/uni-calendar/changelog.md
  10. 5 4
      uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue
  11. 47 26
      uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue
  12. 2 12
      uni_modules/uni-calendar/components/uni-calendar/util.js
  13. 1 1
      uni_modules/uni-calendar/package.json
  14. 3 3
      uni_modules/uni-calendar/readme.md
  15. 1 3
      uni_modules/uni-card/components/uni-card/uni-card.vue
  16. 0 36
      uni_modules/uni-collapse/changelog.md
  17. 0 402
      uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue
  18. 0 147
      uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue
  19. 0 89
      uni_modules/uni-collapse/package.json
  20. 0 12
      uni_modules/uni-collapse/readme.md
  21. 0 15
      uni_modules/uni-combox/changelog.md
  22. 0 294
      uni_modules/uni-combox/components/uni-combox/uni-combox.vue
  23. 0 90
      uni_modules/uni-combox/package.json
  24. 0 11
      uni_modules/uni-combox/readme.md
  25. 0 24
      uni_modules/uni-countdown/changelog.md
  26. 0 6
      uni_modules/uni-countdown/components/uni-countdown/i18n/en.json
  27. 0 8
      uni_modules/uni-countdown/components/uni-countdown/i18n/index.js
  28. 0 6
      uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json
  29. 0 6
      uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json
  30. 0 267
      uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue
  31. 0 86
      uni_modules/uni-countdown/package.json
  32. 0 10
      uni_modules/uni-countdown/readme.md
  33. 0 9
      uni_modules/uni-data-picker/changelog.md
  34. 6 10
      uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue
  35. 15 17
      uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue
  36. 1 1
      uni_modules/uni-data-picker/package.json
  37. 0 13
      uni_modules/uni-data-select/changelog.md
  38. 55 132
      uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue
  39. 1 1
      uni_modules/uni-data-select/package.json
  40. 0 10
      uni_modules/uni-dateformat/changelog.md
  41. 0 200
      uni_modules/uni-dateformat/components/uni-dateformat/date-format.js
  42. 0 88
      uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue
  43. 0 88
      uni_modules/uni-dateformat/package.json
  44. 0 11
      uni_modules/uni-dateformat/readme.md
  45. 33 63
      uni_modules/uni-datetime-picker/changelog.md
  46. 13 3
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue
  47. 125 129
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue
  48. 1 1
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json
  49. 1 1
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js
  50. 28 16
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue
  51. 303 333
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue
  52. 193 186
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js
  53. 1 1
      uni_modules/uni-datetime-picker/package.json
  54. 0 13
      uni_modules/uni-drawer/changelog.md
  55. 0 45
      uni_modules/uni-drawer/components/uni-drawer/keypress.js
  56. 0 183
      uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue
  57. 0 87
      uni_modules/uni-drawer/package.json
  58. 0 10
      uni_modules/uni-drawer/readme.md
  59. 1 12
      uni_modules/uni-easyinput/changelog.md
  60. 139 117
      uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue
  61. 1 1
      uni_modules/uni-easyinput/package.json
  62. 0 23
      uni_modules/uni-fab/changelog.md
  63. 0 491
      uni_modules/uni-fab/components/uni-fab/uni-fab.vue
  64. 0 84
      uni_modules/uni-fab/package.json
  65. 0 9
      uni_modules/uni-fab/readme.md
  66. 0 19
      uni_modules/uni-fav/changelog.md
  67. 0 4
      uni_modules/uni-fav/components/uni-fav/i18n/en.json
  68. 0 8
      uni_modules/uni-fav/components/uni-fav/i18n/index.js
  69. 0 4
      uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json
  70. 0 4
      uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json
  71. 0 161
      uni_modules/uni-fav/components/uni-fav/uni-fav.vue
  72. 0 89
      uni_modules/uni-fav/package.json
  73. 0 10
      uni_modules/uni-fav/readme.md
  74. 0 4
      uni_modules/uni-file-picker/changelog.md
  75. 2 2
      uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js
  76. 1 12
      uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue
  77. 7 4
      uni_modules/uni-file-picker/package.json
  78. 0 2
      uni_modules/uni-forms/changelog.md
  79. 10 3
      uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue
  80. 1 1
      uni_modules/uni-forms/package.json
  81. 0 18
      uni_modules/uni-goods-nav/changelog.md
  82. 0 6
      uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json
  83. 0 8
      uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js
  84. 0 6
      uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json
  85. 0 6
      uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json
  86. 0 229
      uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue
  87. 0 88
      uni_modules/uni-goods-nav/package.json
  88. 0 10
      uni_modules/uni-goods-nav/readme.md
  89. 0 13
      uni_modules/uni-grid/changelog.md
  90. 0 127
      uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue
  91. 0 142
      uni_modules/uni-grid/components/uni-grid/uni-grid.vue
  92. 0 86
      uni_modules/uni-grid/package.json
  93. 0 11
      uni_modules/uni-grid/readme.md
  94. 0 16
      uni_modules/uni-group/changelog.md
  95. 0 134
      uni_modules/uni-group/components/uni-group/uni-group.vue
  96. 0 87
      uni_modules/uni-group/package.json
  97. 0 9
      uni_modules/uni-group/readme.md
  98. 0 17
      uni_modules/uni-indexed-list/changelog.md
  99. 0 144
      uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue
  100. 0 367
      uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue

+ 0 - 2
uni_modules/uni-badge/changelog.md

@@ -1,5 +1,3 @@
-## 1.2.2(2023-01-28)
-- 修复 运行/打包 控制台警告问题
 ## 1.2.1(2022-09-05)
 - 修复 当 text 超过 max-num 时,badge 的宽度计算是根据 text 的长度计算,更改为 css 计算实际展示宽度,详见:[https://ask.dcloud.net.cn/question/150473](https://ask.dcloud.net.cn/question/150473)
 ## 1.2.0(2021-11-19)

+ 3 - 3
uni_modules/uni-badge/components/uni-badge/uni-badge.vue

@@ -21,7 +21,7 @@
 	 * 	@value error 红色
 	 * @property {String} inverted = [true|false] 是否无需背景颜色
 	 * @property {Number} maxNum 展示封顶的数字值,超过 99 显示 99+
-	 * @property {String} absolute = [rightTop|rightBottom|leftBottom|leftTop] 开启绝对定位, 角标将定位到其包裹的标签的四角上
+	 * @property {String} absolute = [rightTop|rightBottom|leftBottom|leftTop] 开启绝对定位, 角标将定位到其包裹的标签的四角上		
 	 * 	@value rightTop 右上
 	 * 	@value rightBottom 右下
 	 * 	@value leftTop 左上
@@ -192,12 +192,11 @@
 		display: flex;
 		overflow: hidden;
 		box-sizing: border-box;
-		font-feature-settings: "tnum";
-		min-width: 20px;
 		/* #endif */
 		justify-content: center;
 		flex-direction: row;
 		height: 20px;
+		min-width: 20px;
 		padding: 0 4px;
 		line-height: 18px;
 		color: #fff;
@@ -207,6 +206,7 @@
 		border: 1px solid #fff;
 		text-align: center;
 		font-family: 'Helvetica Neue', Helvetica, sans-serif;
+		font-feature-settings: "tnum";
 		font-size: $bage-size;
 		/* #ifdef H5 */
 		z-index: 999;

+ 1 - 1
uni_modules/uni-badge/package.json

@@ -1,7 +1,7 @@
 {
   "id": "uni-badge",
   "displayName": "uni-badge 数字角标",
-  "version": "1.2.2",
+  "version": "1.2.1",
   "description": "数字角标(徽章)组件,在元素周围展示消息提醒,一般用于列表、九宫格、按钮等地方。",
   "keywords": [
     "",

+ 0 - 6
uni_modules/uni-breadcrumb/changelog.md

@@ -1,6 +0,0 @@
-## 0.1.2(2022-06-08)
-- 修复 微信小程序 separator 不显示的Bug
-## 0.1.1(2022-06-02)
-- 新增 支持 uni.scss 修改颜色
-## 0.1.0(2022-04-21)
-- 初始化

+ 0 - 121
uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue

@@ -1,121 +0,0 @@
-<template>
-	<view class="uni-breadcrumb-item">
-		<view :class="{
-			'uni-breadcrumb-item--slot': true,
-			'uni-breadcrumb-item--slot-link': to && currentPage !== to
-			}" @click="navTo">
-			<slot />
-		</view>
-		<i v-if="separatorClass" class="uni-breadcrumb-item--separator" :class="separatorClass" />
-		<text v-else class="uni-breadcrumb-item--separator">{{ separator }}</text>
-	</view>
-</template>
-<script>
-	/**
-	 * BreadcrumbItem 面包屑导航子组件
-	 * @property {String/Object} to 路由跳转页面路径/对象
-	 * @property {Boolean} replace 在使用 to 进行路由跳转时,启用 replace 将不会向 history 添加新记录(仅 h5 支持)
-	 */
-	export default {
-		data() {
-			return {
-				currentPage: ""
-			}
-		},
-		options: {
-			virtualHost: true
-		},
-		props: {
-			to: {
-				type: String,
-				default: ''
-			},
-			replace:{
-				type: Boolean,
-				default: false
-			}
-		},
-		inject: {
-			uniBreadcrumb: {
-				from: "uniBreadcrumb",
-				default: null
-			}
-		},
-		created(){
-			const pages = getCurrentPages()
-			const page = pages[pages.length-1]
-
-			if(page){
-				this.currentPage = `/${page.route}`
-			}
-		},
-		computed: {
-			separator() {
-				return this.uniBreadcrumb.separator
-			},
-			separatorClass() {
-				return this.uniBreadcrumb.separatorClass
-			}
-		},
-		methods: {
-			navTo() {
-				const { to } = this
-
-				if (!to || this.currentPage === to){
-					return
-				}
-
-				if(this.replace){
-					uni.redirectTo({
-						url:to
-					})
-				}else{
-					uni.navigateTo({
-						url:to
-					})
-				}
-			}
-		}
-	}
-</script>
-<style lang="scss">
-	$uni-primary: #2979ff !default;
-	$uni-base-color: #6a6a6a !default;
-	$uni-main-color: #3a3a3a !default;
-	.uni-breadcrumb-item {
-		display: flex;
-		align-items: center;
-		white-space: nowrap;
-		font-size: 14px;
-
-		&--slot {
-			color: $uni-base-color;
-			padding: 0 10px;
-
-			&-link {
-				color: $uni-main-color;
-				font-weight: bold;
-				/* #ifndef APP-NVUE */
-				cursor: pointer;
-				/* #endif */
-
-				&:hover {
-					color: $uni-primary;
-				}
-			}
-		}
-
-		&--separator {
-			font-size: 12px;
-			color: $uni-base-color;
-		}
-
-		&:first-child &--slot {
-			padding-left: 0;
-		}
-		
-		&:last-child &--separator {
-			display: none;
-		}
-	}
-</style>

+ 0 - 41
uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue

@@ -1,41 +0,0 @@
-<template>
-	<view class="uni-breadcrumb">
-		<slot />
-	</view>
-</template>
-<script>
-	/**
-	 * Breadcrumb 面包屑导航父组件
-	 * @description 显示当前页面的路径,快速返回之前的任意页面
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=xxx
-	 * @property {String} separator 分隔符,默认为斜杠'/'
-	 * @property {String} separatorClass 图标分隔符 class
-	 */
-	export default {
-		options: {
-			virtualHost: true
-		},
-		props: {
-			separator: {
-				type: String,
-				default: '/'
-			},
-			separatorClass: {
-				type: String,
-				default: ''
-			}
-		},
-
-		provide() {
-			return {
-				uniBreadcrumb: this
-			}
-		}
-
-	}
-</script>
-<style lang="scss">
-	.uni-breadcrumb {
-		display: flex;
-	}
-</style>

+ 0 - 88
uni_modules/uni-breadcrumb/package.json

@@ -1,88 +0,0 @@
-{
-  "id": "uni-breadcrumb",
-  "displayName": "uni-breadcrumb 面包屑",
-  "version": "0.1.2",
-  "description": "Breadcrumb  面包屑",
-  "keywords": [
-    "uni-breadcrumb",
-    "breadcrumb",
-    "uni-ui",
-    "面包屑导航",
-    "面包屑"
-],
-  "repository": "",
-  "engines": {
-    "HBuilderX": "^3.1.0"
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-  "dcloudext": {
-    "category": [
-        "前端组件",
-        "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": ""
-  },
-  "uni_modules": {
-    "dependencies": [],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "Vue": {
-          "vue2": "y",
-          "vue3": "y"
-        },
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "n"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "u",
-          "百度": "u",
-          "字节跳动": "u",
-        "QQ": "u",
-        "京东": "u"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        }
-      }
-    }
-  }
-}

+ 0 - 66
uni_modules/uni-breadcrumb/readme.md

@@ -1,66 +0,0 @@
-
-## breadcrumb 面包屑导航
-> **组件名:uni-breadcrumb**
-> 代码块: `ubreadcrumb`
-
-显示当前页面的路径,快速返回之前的任意页面。
-
-### 安装方式
-
-本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。
-
-如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55)
-
-### 基本用法
-
-在 ``template`` 中使用组件
-
-```html
-<uni-breadcrumb separator="/">
-	<uni-breadcrumb-item v-for="(route,index) in routes" :key="index" :to="route.to">{{route.name}}</uni-breadcrumb-item>
-</uni-breadcrumb>
-```
-
-```js
-export default {
-		name: "uni-stat-breadcrumb",
-		data() {
-			return {
-				routes: [{
-					to: '/A',
-					name: 'A页面'
-				}, {
-					to: '/B',
-					name: 'B页面'
-				}, {
-					to: '/C',
-					name: 'C页面'
-				}]
-			};
-		}
-	}
-```
-
-
-## API
-
-### Breadcrumb Props
-
-|属性名			|类型	|默认值	|说明				|
-|:-:			|:-:	|:-:	|:-:				|
-|separator		|String	|斜杠'/' |分隔符				|
-|separatorClass	|String	|		|图标分隔符 class	    |
-
-### Breadcrumb Item Props
-
-|属性名	|类型			|默认值	|说明																			|
-|:-:	|:-:			|:-:	|:-:																			|
-|to		|String     	|		|路由跳转页面路径           														|
-|replace|Boolean		|		|在使用 to 进行路由跳转时,启用 replace 将不会向 history 添加新记录(仅 h5 支持)         |
-
-
-
-
-## 组件示例
-
-点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb](https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb)

+ 7 - 13
uni_modules/uni-calendar/changelog.md

@@ -1,26 +1,20 @@
-## 1.4.10(2023-04-10)
-- 修复 某些情况 monthSwitch 未触发的Bug
-## 1.4.9(2023-02-02)
-- 修复 某些情况切换月份错误的Bug
-## 1.4.8(2023-01-30)
-- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/161964)
 ## 1.4.7(2022-09-16)
-- 优化 支持使用 uni-scss 控制主题色
+- 可以使用 uni-scss 控制主题色
 ## 1.4.6(2022-09-08)
-- 修复 表头年月切换,导致改变当前日期为选择月1号,且未触发change事件的Bug
+- fix: 表头年月切换,导致改变当前日期为选择月1号,且未触发change事件
 ## 1.4.5(2022-02-25)
-- 修复 条件编译 nvue 不支持的 css 样式的Bug
+- 修复 条件编译 nvue 不支持的 css 样式
 ## 1.4.4(2022-02-25)
-- 修复 条件编译 nvue 不支持的 css 样式的Bug
+- 修复 条件编译 nvue 不支持的 css 样式
 ## 1.4.3(2021-09-22)
-- 修复 startDate、 endDate 属性失效的Bug
+- 修复 startDate、 endDate 属性失效的 bug
 ## 1.4.2(2021-08-24)
 - 新增 支持国际化
 ## 1.4.1(2021-08-05)
-- 修复 弹出层被 tabbar 遮盖的Bug
+- 修复 弹出层被 tabbar 遮盖 bug
 ## 1.4.0(2021-07-30)
 - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
 ## 1.3.16(2021-05-12)
 - 新增 组件示例地址
 ## 1.3.15(2021-02-04)
-- 调整为uni_modules目录规范
+- 调整为uni_modules目录规范 

+ 5 - 4
uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue

@@ -51,10 +51,11 @@
 </template>
 
 <script>
-	import { initVueI18n } from '@dcloudio/uni-i18n'
-	import i18nMessages from './i18n/index.js'
-	const {	t	} = initVueI18n(i18nMessages)
-
+	import {
+	initVueI18n
+	} from '@dcloudio/uni-i18n'
+	import messages from './i18n/index.js'
+	const {	t	} = initVueI18n(messages)
 	export default {
 		emits:['change'],
 		props: {

+ 47 - 26
uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue

@@ -6,6 +6,7 @@
 				<view class="uni-calendar__header-btn-box" @click="close">
 					<text class="uni-calendar__header-text uni-calendar--fixed-width">{{cancelText}}</text>
 				</view>
+				<view>{{tit}}</view>
 				<view class="uni-calendar__header-btn-box" @click="confirm">
 					<text class="uni-calendar__header-text uni-calendar--fixed-width">{{okText}}</text>
 				</view>
@@ -20,7 +21,7 @@
 				<view class="uni-calendar__header-btn-box" @click.stop="next">
 					<view class="uni-calendar__header-btn uni-calendar--right"></view>
 				</view>
-				<text class="uni-calendar__backtoday" @click="backToday">{{todayText}}</text>
+				<text class="uni-calendar__backtoday" @click="backtoday">{{todayText}}</text>
 
 			</view>
 			<view class="uni-calendar__box">
@@ -62,12 +63,12 @@
 
 <script>
 	import Calendar from './util.js';
-	import CalendarItem from './uni-calendar-item.vue'
-
-	import { initVueI18n } from '@dcloudio/uni-i18n'
-	import i18nMessages from './i18n/index.js'
-	const {	t	} = initVueI18n(i18nMessages)
-
+	import calendarItem from './uni-calendar-item.vue'
+	import {
+	initVueI18n
+	} from '@dcloudio/uni-i18n'
+	import messages from './i18n/index.js'
+	const {	t	} = initVueI18n(messages)
 	/**
 	 * Calendar 日历
 	 * @description 日历组件可以查看日期,选择任意范围内的日期,打点操作。常用场景如:酒店日期预订、火车机票选择购买日期、上下班打卡等
@@ -90,7 +91,7 @@
 	 */
 	export default {
 		components: {
-			CalendarItem
+			calendarItem
 		},
 		emits:['close','confirm','change','monthSwitch'],
 		props: {
@@ -131,6 +132,14 @@
 			clearDate: {
 				type: Boolean,
 				default: true
+			},
+			weekdata:{
+				type: String,
+				default: ''
+			},
+			tit:{
+				type: String,
+				default: ''
 			}
 		},
 		data() {
@@ -139,7 +148,8 @@
 				weeks: [],
 				calendar: {},
 				nowDate: '',
-				aniMaskShow: false
+				aniMaskShow: false,
+				choseflag:true
 			}
 		},
 		computed:{
@@ -199,26 +209,26 @@
 			}
 		},
 		created() {
+			// 获取日历方法实例
 			this.cale = new Calendar({
+				// date: new Date(),
 				selected: this.selected,
 				startDate: this.startDate,
 				endDate: this.endDate,
 				range: this.range,
 			})
+			// 选中某一天
+			// this.cale.setDate(this.date)
 			this.init(this.date)
+			// this.setDay
 		},
 		methods: {
 			// 取消穿透
 			clean() {},
 			bindDateChange(e) {
 				const value = e.detail.value + '-1'
+				console.log(this.cale.getDate(value));
 				this.setDate(value)
-
-				const { year,month } = this.cale.getDate(value)
-        this.$emit('monthSwitch', {
-            year,
-            month
-        })
 			},
 			/**
 			 * 初始化日期显示
@@ -262,8 +272,11 @@
 			 * 确认按钮
 			 */
 			confirm() {
+				// 判断日期是否相同
 				this.setEmit('confirm')
-				this.close()
+				if(this.choseflag){
+					this.close()
+				}
 			},
 			/**
 			 * 变化触发
@@ -298,6 +311,18 @@
 					lunar,
 					extraInfo
 				} = this.calendar
+				if(name=='confirm'){
+					var week=lunar.nWeek
+					if(week!=this.weekdata){
+						this.choseflag=false;
+						uni.showToast({
+							title:"您选择的日期不正确,请选择相同的周几",
+							icon:'none'
+						})
+						return
+					}
+				}
+				this.choseflag=true;
 				this.$emit(name, {
 					range: this.cale.multipleStatus,
 					year,
@@ -323,16 +348,11 @@
 			/**
 			 * 回到今天
 			 */
-			backToday() {
-				const nowYearMonth = `${this.nowDate.year}-${this.nowDate.month}`
-				const date = this.cale.getDate(new Date())
-        const todayYearMonth = `${date.year}-${date.month}`
-
-        if(nowYearMonth !== todayYearMonth) {
-          this.monthSwitch()
-        }
-
-				this.init(date.fullDate)
+			backtoday() {
+				console.log(this.cale.getDate(new Date()).fullDate);
+				let date = this.cale.getDate(new Date()).fullDate
+				// this.cale.setDate(date)
+				this.init(date)
 				this.change()
 			},
 			/**
@@ -451,6 +471,7 @@
 
 	.uni-calendar--fixed-width {
 		width: 50px;
+		// padding: 0 15px;
 	}
 
 	.uni-calendar__backtoday {

+ 2 - 12
uni_modules/uni-calendar/components/uni-calendar/util.js

@@ -76,20 +76,10 @@ class Calendar {
 				dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
 				break
 			case 'month':
-				if (dd.getDate() === 31 && AddDayCount>0) {
+				if (dd.getDate() === 31) {
 					dd.setDate(dd.getDate() + AddDayCount)
 				} else {
-					const preMonth = dd.getMonth()
-					dd.setMonth(preMonth + AddDayCount) // 获取AddDayCount天后的日期
-					const nextMonth = dd.getMonth()
-					// 处理 pre 切换月份目标月份为2月没有当前日(30 31) 切换错误问题
-					if(AddDayCount<0 && preMonth!==0 && nextMonth-preMonth>AddDayCount){
-						dd.setMonth(nextMonth+(nextMonth-preMonth+AddDayCount))
-					}
-					// 处理 next 切换月份目标月份为2月没有当前日(30 31) 切换错误问题
-					if(AddDayCount>0 && nextMonth-preMonth>AddDayCount){
-						dd.setMonth(nextMonth-(nextMonth-preMonth-AddDayCount))
-					}
+					dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期
 				}
 				break
 			case 'year':

+ 1 - 1
uni_modules/uni-calendar/package.json

@@ -1,7 +1,7 @@
 {
   "id": "uni-calendar",
   "displayName": "uni-calendar 日历",
-  "version": "1.4.10",
+  "version": "1.4.7",
   "description": "日历组件",
   "keywords": [
     "uni-ui",

+ 3 - 3
uni_modules/uni-calendar/readme.md

@@ -77,7 +77,7 @@ export default {
 ### Calendar Props
 
 |  属性名	|    类型	| 默认值| 说明																													|
-| -	| -	| - | - |
+| 		| 																													|
 | date		| String	|-		| 自定义当前时间,默认为今天																							|
 | lunar		| Boolean	| false	| 显示农历																												|
 | startDate	| String	|-		| 日期选择范围-开始日期																									|
@@ -91,7 +91,7 @@ export default {
 ### Calendar Events
 
 |  事件名		| 说明								|返回值|
-| -	|	-	| -	|
+| 								|		| 									|
 | open	| 弹出日历组件,`insert :false` 时生效|- 	|
 
 
@@ -100,4 +100,4 @@ export default {
 
 ## 组件示例
 
-点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar](https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar)
+点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar](https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar)

+ 1 - 3
uni_modules/uni-card/components/uni-card/uni-card.vue

@@ -21,9 +21,7 @@
 					</view>
 				</view>
 				<view class="uni-card__header-extra" @click="onClick('extra')">
-					<slot name="extra">
-						<text class="uni-card__header-extra-text">{{ extra }}</text>
-					</slot>
+					<text class="uni-card__header-extra-text">{{ extra }}</text>
 				</view>
 			</view>
 		</slot>

+ 0 - 36
uni_modules/uni-collapse/changelog.md

@@ -1,36 +0,0 @@
-## 1.4.3(2022-01-25)
-- 修复 初始化的时候 ,open 属性失效的bug
-## 1.4.2(2022-01-21)
-- 修复 微信小程序resize后组件收起的bug
-## 1.4.1(2021-11-22)
-- 修复 vue3中个别scss变量无法找到的问题
-## 1.4.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-collapse](https://uniapp.dcloud.io/component/uniui/uni-collapse)
-## 1.3.3(2021-08-17)
-- 优化 show-arrow 属性默认为true
-## 1.3.2(2021-08-17)
-- 新增 show-arrow 属性,控制是否显示右侧箭头
-## 1.3.1(2021-07-30)
-- 优化 vue3下小程序事件警告的问题
-## 1.3.0(2021-07-30)
-- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
-## 1.2.2(2021-07-21)
-- 修复 由1.2.0版本引起的 change 事件返回 undefined 的Bug
-## 1.2.1(2021-07-21)
-- 优化 组件示例
-## 1.2.0(2021-07-21)
-- 新增 组件折叠动画
-- 新增 value\v-model 属性 ,动态修改面板折叠状态
-- 新增 title 插槽 ,可定义面板标题
-- 新增 border 属性 ,显示隐藏面板内容分隔线
-- 新增 title-border 属性 ,显示隐藏面板标题分隔线
-- 修复 resize 方法失效的Bug
-- 修复 change 事件返回参数不正确的Bug
-- 优化 H5、App 平台自动更具内容更新高度,无需调用 reszie() 方法
-## 1.1.7(2021-05-12)
-- 新增 组件示例地址
-## 1.1.6(2021-02-05)
-- 优化 组件引用关系,通过uni_modules引用组件
-## 1.1.5(2021-02-05)
-- 调整为uni_modules目录规范

+ 0 - 402
uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue

@@ -1,402 +0,0 @@
-<template>
-	<view class="uni-collapse-item">
-		<!-- onClick(!isOpen) -->
-		<view @click="onClick(!isOpen)" class="uni-collapse-item__title"
-			:class="{'is-open':isOpen &&titleBorder === 'auto' ,'uni-collapse-item-border':titleBorder !== 'none'}">
-			<view class="uni-collapse-item__title-wrap">
-				<slot name="title">
-					<view class="uni-collapse-item__title-box" :class="{'is-disabled':disabled}">
-						<image v-if="thumb" :src="thumb" class="uni-collapse-item__title-img" />
-						<text class="uni-collapse-item__title-text">{{ title }}</text>
-					</view>
-				</slot>
-			</view>
-			<view v-if="showArrow"
-				:class="{ 'uni-collapse-item__title-arrow-active': isOpen, 'uni-collapse-item--animation': showAnimation === true }"
-				class="uni-collapse-item__title-arrow">
-				<uni-icons :color="disabled?'#ddd':'#bbb'" size="14" type="bottom" />
-			</view>
-		</view>
-		<view class="uni-collapse-item__wrap" :class="{'is--transition':showAnimation}"
-			:style="{height: (isOpen?height:0) +'px'}">
-			<view :id="elId" ref="collapse--hook" class="uni-collapse-item__wrap-content"
-				:class="{open:isheight,'uni-collapse-item--border':border&&isOpen}">
-				<slot></slot>
-			</view>
-		</view>
-
-	</view>
-</template>
-
-<script>
-	// #ifdef APP-NVUE
-	const dom = weex.requireModule('dom')
-	// #endif
-	/**
-	 * CollapseItem 折叠面板子组件
-	 * @description 折叠面板子组件
-	 * @property {String} title 标题文字
-	 * @property {String} thumb 标题左侧缩略图
-	 * @property {String} name 唯一标志符
-	 * @property {Boolean} open = [true|false] 是否展开组件
-	 * @property {Boolean} titleBorder = [true|false] 是否显示标题分隔线
-	 * @property {Boolean} border = [true|false] 是否显示分隔线
-	 * @property {Boolean} disabled = [true|false] 是否展开面板
-	 * @property {Boolean} showAnimation = [true|false] 开启动画
-	 * @property {Boolean} showArrow = [true|false] 是否显示右侧箭头
-	 */
-	export default {
-		name: 'uniCollapseItem',
-		props: {
-			// 列表标题
-			title: {
-				type: String,
-				default: ''
-			},
-			name: {
-				type: [Number, String],
-				default: ''
-			},
-			// 是否禁用
-			disabled: {
-				type: Boolean,
-				default: false
-			},
-			// #ifdef APP-PLUS
-			// 是否显示动画,app 端默认不开启动画,卡顿严重
-			showAnimation: {
-				type: Boolean,
-				default: false
-			},
-			// #endif
-			// #ifndef APP-PLUS
-			// 是否显示动画
-			showAnimation: {
-				type: Boolean,
-				default: true
-			},
-			// #endif
-			// 是否展开
-			open: {
-				type: Boolean,
-				default: false
-			},
-			// 缩略图
-			thumb: {
-				type: String,
-				default: ''
-			},
-			// 标题分隔线显示类型
-			titleBorder: {
-				type: String,
-				default: 'auto'
-			},
-			border: {
-				type: Boolean,
-				default: true
-			},
-			showArrow: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data() {
-			// TODO 随机生生元素ID,解决百度小程序获取同一个元素位置信息的bug
-			const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
-			return {
-				isOpen: false,
-				isheight: null,
-				height: 0,
-				elId,
-				nameSync: 0
-			}
-		},
-		watch: {
-			open(val) {
-				this.isOpen = val
-				this.onClick(val, 'init')
-			}
-		},
-		updated(e) {
-			this.$nextTick(() => {
-				this.init(true)
-			})
-		},
-		created() {
-			this.collapse = this.getCollapse()
-			this.oldHeight = 0
-			this.onClick(this.open, 'init')
-		},
-		// #ifndef VUE3
-		// TODO vue2
-		destroyed() {
-			if (this.__isUnmounted) return
-			this.uninstall()
-		},
-		// #endif
-		// #ifdef VUE3
-		// TODO vue3
-		unmounted() {
-			this.__isUnmounted = true
-			this.uninstall()
-		},
-		// #endif
-		mounted() {
-			if (!this.collapse) return
-			if (this.name !== '') {
-				this.nameSync = this.name
-			} else {
-				this.nameSync = this.collapse.childrens.length + ''
-			}
-			if (this.collapse.names.indexOf(this.nameSync) === -1) {
-				this.collapse.names.push(this.nameSync)
-			} else {
-				console.warn(`name 值 ${this.nameSync} 重复`);
-			}
-			if (this.collapse.childrens.indexOf(this) === -1) {
-				this.collapse.childrens.push(this)
-			}
-			this.init()
-		},
-		methods: {
-			init(type) {
-				// #ifndef APP-NVUE
-				this.getCollapseHeight(type)
-				// #endif
-				// #ifdef APP-NVUE
-				this.getNvueHwight(type)
-				// #endif
-			},
-			uninstall() {
-				if (this.collapse) {
-					this.collapse.childrens.forEach((item, index) => {
-						if (item === this) {
-							this.collapse.childrens.splice(index, 1)
-						}
-					})
-					this.collapse.names.forEach((item, index) => {
-						if (item === this.nameSync) {
-							this.collapse.names.splice(index, 1)
-						}
-					})
-				}
-			},
-			onClick(isOpen, type) {
-				if (this.disabled) return
-				this.isOpen = isOpen
-				if (this.isOpen && this.collapse) {
-					this.collapse.setAccordion(this)
-				}
-				if (type !== 'init') {
-					this.collapse.onChange(isOpen, this)
-				}
-			},
-			getCollapseHeight(type, index = 0) {
-				const views = uni.createSelectorQuery().in(this)
-				views
-					.select(`#${this.elId}`)
-					.fields({
-						size: true
-					}, data => {
-						// TODO 百度中可能获取不到节点信息 ,需要循环获取
-						if (index >= 10) return
-						if (!data) {
-							index++
-							this.getCollapseHeight(false, index)
-							return
-						}
-						// #ifdef APP-NVUE
-						this.height = data.height + 1
-						// #endif
-						// #ifndef APP-NVUE
-						this.height = data.height
-						// #endif
-						this.isheight = true
-						if (type) return
-						this.onClick(this.isOpen, 'init')
-					})
-					.exec()
-			},
-			getNvueHwight(type) {
-				const result = dom.getComponentRect(this.$refs['collapse--hook'], option => {
-					if (option && option.result && option.size) {
-						// #ifdef APP-NVUE
-						this.height = option.size.height + 1
-						// #endif
-						// #ifndef APP-NVUE
-						this.height = option.size.height
-						// #endif
-						this.isheight = true
-						if (type) return
-						this.onClick(this.open, 'init')
-					}
-				})
-			},
-			/**
-			 * 获取父元素实例
-			 */
-			getCollapse(name = 'uniCollapse') {
-				let parent = this.$parent;
-				let parentName = parent.$options.name;
-				while (parentName !== name) {
-					parent = parent.$parent;
-					if (!parent) return false;
-					parentName = parent.$options.name;
-				}
-				return parent;
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.uni-collapse-item {
-		/* #ifndef APP-NVUE */
-		box-sizing: border-box;
-
-		/* #endif */
-		&__title {
-			/* #ifndef APP-NVUE */
-			display: flex;
-			width: 100%;
-			box-sizing: border-box;
-			/* #endif */
-			flex-direction: row;
-			align-items: center;
-			transition: border-bottom-color .3s;
-
-			// transition-property: border-bottom-color;
-			// transition-duration: 5s;
-			&-wrap {
-				width: 100%;
-				flex: 1;
-
-			}
-
-			&-box {
-				padding: 0 15px;
-				/* #ifndef APP-NVUE */
-				display: flex;
-				width: 100%;
-				box-sizing: border-box;
-				/* #endif */
-				flex-direction: row;
-				justify-content: space-between;
-				align-items: center;
-				height: 48px;
-				line-height: 48px;
-				background-color: #fff;
-				color: #303133;
-				font-size: 13px;
-				font-weight: 500;
-				/* #ifdef H5 */
-				cursor: pointer;
-				outline: none;
-
-				/* #endif */
-				&.is-disabled {
-					.uni-collapse-item__title-text {
-						color: #999;
-					}
-				}
-
-			}
-
-			&.uni-collapse-item-border {
-				border-bottom: 1px solid #ebeef5;
-			}
-
-			&.is-open {
-				border-bottom-color: transparent;
-			}
-
-			&-img {
-				height: 22px;
-				width: 22px;
-				margin-right: 10px;
-			}
-
-			&-text {
-				flex: 1;
-				font-size: 14px;
-				/* #ifndef APP-NVUE */
-				white-space: nowrap;
-				color: inherit;
-				/* #endif */
-				/* #ifdef APP-NVUE */
-				lines: 1;
-				/* #endif */
-				overflow: hidden;
-				text-overflow: ellipsis;
-			}
-
-			&-arrow {
-				/* #ifndef APP-NVUE */
-				display: flex;
-				box-sizing: border-box;
-				/* #endif */
-				align-items: center;
-				justify-content: center;
-				width: 20px;
-				height: 20px;
-				margin-right: 10px;
-				transform: rotate(0deg);
-
-				&-active {
-					transform: rotate(-180deg);
-				}
-			}
-
-
-		}
-
-		&__wrap {
-			/* #ifndef APP-NVUE */
-			will-change: height;
-			box-sizing: border-box;
-			/* #endif */
-			background-color: #fff;
-			overflow: hidden;
-			position: relative;
-			height: 0;
-
-			&.is--transition {
-				// transition: all 0.3s;
-				transition-property: height, border-bottom-width;
-				transition-duration: 0.3s;
-				/* #ifndef APP-NVUE */
-				will-change: height;
-				/* #endif */
-			}
-
-
-
-			&-content {
-				position: absolute;
-				font-size: 13px;
-				color: #303133;
-				// transition: height 0.3s;
-				border-bottom-color: transparent;
-				border-bottom-style: solid;
-				border-bottom-width: 0;
-
-				&.uni-collapse-item--border {
-					border-bottom-width: 1px;
-					border-bottom-color: red;
-					border-bottom-color: #ebeef5;
-				}
-
-				&.open {
-					position: relative;
-				}
-			}
-		}
-
-		&--animation {
-			transition-property: transform;
-			transition-duration: 0.3s;
-			transition-timing-function: ease;
-		}
-
-	}
-</style>

+ 0 - 147
uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue

@@ -1,147 +0,0 @@
-<template>
-	<view class="uni-collapse">
-		<slot />
-	</view>
-</template>
-<script>
-	/**
-	 * Collapse 折叠面板
-	 * @description 展示可以折叠 / 展开的内容区域
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=23
-	 * @property {String|Array} value 当前激活面板改变时触发(如果是手风琴模式,参数类型为string,否则为array)
-	 * @property {Boolean} accordion = [true|false] 是否开启手风琴效果是否开启手风琴效果
-	 * @event {Function} change 切换面板时触发,如果是手风琴模式,返回类型为string,否则为array
-	 */
-	export default {
-		name: 'uniCollapse',
-		emits:['change','activeItem','input','update:modelValue'],
-		props: {
-			value: {
-				type: [String, Array],
-				default: ''
-			},
-			modelValue: {
-				type: [String, Array],
-				default: ''
-			},
-			accordion: {
-				// 是否开启手风琴效果
-				type: [Boolean, String],
-				default: false
-			},
-		},
-		data() {
-			return {}
-		},
-		computed: {
-			// TODO 兼容 vue2 和 vue3
-			dataValue() {
-				let value = (typeof this.value === 'string' && this.value === '') ||
-					(Array.isArray(this.value) && this.value.length === 0)
-				let modelValue = (typeof this.modelValue === 'string' && this.modelValue === '') ||
-					(Array.isArray(this.modelValue) && this.modelValue.length === 0)
-				if (value) {
-					return this.modelValue
-				}
-				if (modelValue) {
-					return this.value
-				}
-
-				return this.value
-			}
-		},
-		watch: {
-			dataValue(val) {
-				this.setOpen(val)
-			}
-		},
-		created() {
-			this.childrens = []
-			this.names = []
-		},
-		mounted() {
-			this.$nextTick(()=>{
-				this.setOpen(this.dataValue)
-			})
-		},
-		methods: {
-			setOpen(val) {
-				let str = typeof val === 'string'
-				let arr = Array.isArray(val)
-				this.childrens.forEach((vm, index) => {
-					if (str) {
-						if (val === vm.nameSync) {
-							if (!this.accordion) {
-								console.warn('accordion 属性为 false ,v-model 类型应该为 array')
-								return
-							}
-							vm.isOpen = true
-						}
-					}
-					if (arr) {
-						val.forEach(v => {
-							if (v === vm.nameSync) {
-								if (this.accordion) {
-									console.warn('accordion 属性为 true ,v-model 类型应该为 string')
-									return
-								}
-								vm.isOpen = true
-							}
-						})
-					}
-				})
-				this.emit(val)
-			},
-			setAccordion(self) {
-				if (!this.accordion) return
-				this.childrens.forEach((vm, index) => {
-					if (self !== vm) {
-						vm.isOpen = false
-					}
-				})
-			},
-			resize() {
-				this.childrens.forEach((vm, index) => {
-					// #ifndef APP-NVUE
-					vm.getCollapseHeight()
-					// #endif
-					// #ifdef APP-NVUE
-					vm.getNvueHwight()
-					// #endif
-				})
-			},
-			onChange(isOpen, self) {
-				let activeItem = []
-
-				if (this.accordion) {
-					activeItem = isOpen ? self.nameSync : ''
-				} else {
-					this.childrens.forEach((vm, index) => {
-						if (vm.isOpen) {
-							activeItem.push(vm.nameSync)
-						}
-					})
-				}
-				this.$emit('change', activeItem)
-				this.emit(activeItem)
-			},
-			emit(val){
-				this.$emit('input', val)
-				this.$emit('update:modelValue', val)
-			}
-		}
-	}
-</script>
-<style lang="scss" >
-	.uni-collapse {
-		/* #ifndef APP-NVUE */
-		width: 100%;
-		display: flex;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		flex: 1;
-		/* #endif */
-		flex-direction: column;
-		background-color: #fff;
-	}
-</style>

+ 0 - 89
uni_modules/uni-collapse/package.json

@@ -1,89 +0,0 @@
-{
-  "id": "uni-collapse",
-  "displayName": "uni-collapse 折叠面板",
-  "version": "1.4.3",
-  "description": "Collapse 组件,可以折叠 / 展开的内容区域。",
-  "keywords": [
-    "uni-ui",
-    "折叠",
-    "折叠面板",
-    "手风琴"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-  "dcloudext": {
-    "category": [
-      "前端组件",
-      "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
-  },
-  "uni_modules": {
-    "dependencies": [
-			"uni-scss",
-      "uni-icons"
-    ],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 12
uni_modules/uni-collapse/readme.md

@@ -1,12 +0,0 @@
-
-
-## Collapse 折叠面板
-> **组件名:uni-collapse**
-> 代码块: `uCollapse`
-> 关联组件:`uni-collapse-item`、`uni-icons`。
-
-
-折叠面板用来折叠/显示过长的内容或者是列表。通常是在多内容分类项使用,折叠不重要的内容,显示重要内容。点击可以展开折叠部分。
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-collapse)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 0 - 15
uni_modules/uni-combox/changelog.md

@@ -1,15 +0,0 @@
-## 1.0.1(2021-11-23)
-- 优化 label、label-width 属性
-## 1.0.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-combox](https://uniapp.dcloud.io/component/uniui/uni-combox)
-## 0.1.0(2021-07-30)
-- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
-## 0.0.6(2021-05-12)
-- 新增 组件示例地址
-## 0.0.5(2021-04-21)
-- 优化 添加依赖 uni-icons, 导入后自动下载依赖
-## 0.0.4(2021-02-05)
-- 优化 组件引用关系,通过uni_modules引用组件
-## 0.0.3(2021-02-04)
-- 调整为uni_modules目录规范

+ 0 - 294
uni_modules/uni-combox/components/uni-combox/uni-combox.vue

@@ -1,294 +0,0 @@
-<template>
-	<view class="uni-combox" :class="border ? '' : 'uni-combox__no-border'">
-		<view v-if="label" class="uni-combox__label" :style="labelStyle">
-			<text>{{label}}</text>
-		</view>
-		<view class="uni-combox__input-box">
-			<input class="uni-combox__input" type="text" :placeholder="placeholder"
-				placeholder-class="uni-combox__input-plac" v-model="inputVal" @input="onInput" @focus="onFocus" @blur="onBlur" />
-			<uni-icons :type="showSelector? 'top' : 'bottom'" size="14" color="#999" @click="toggleSelector">
-			</uni-icons>
-		</view>
-		<view class="uni-combox__selector" v-if="showSelector">
-			<view class="uni-popper__arrow"></view>
-			<scroll-view scroll-y="true" class="uni-combox__selector-scroll" @scroll="onScroll">
-				<view class="uni-combox__selector-empty" v-if="filterCandidatesLength === 0">
-					<text>{{emptyTips}}</text>
-				</view>
-				<view class="uni-combox__selector-item" v-for="(item,index) in filterCandidates" :key="index" @click="onSelectorClick(index)">
-					<text>{{item}}</text>
-				</view>
-			</scroll-view>
-		</view>
-		<!-- 新增蒙层,点击蒙层时关闭选项显示 -->
-		<view class="uni-combox__mask" v-show="showSelector" @click="showSelector = false"></view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * Combox 组合输入框
-	 * @description 组合输入框一般用于既可以输入也可以选择的场景
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=1261
-	 * @property {String} label 左侧文字
-	 * @property {String} labelWidth 左侧内容宽度
-	 * @property {String} placeholder 输入框占位符
-	 * @property {Array} candidates 候选项列表
-	 * @property {String} emptyTips 筛选结果为空时显示的文字
-	 * @property {String} value 组合框的值
-	 */
-	export default {
-		name: 'uniCombox',
-		emits: ['input', 'update:modelValue'],
-		props: {
-			border: {
-				type: Boolean,
-				default: true
-			},
-			label: {
-				type: String,
-				default: ''
-			},
-			labelWidth: {
-				type: String,
-				default: 'auto'
-			},
-			placeholder: {
-				type: String,
-				default: ''
-			},
-			candidates: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			emptyTips: {
-				type: String,
-				default: '无匹配项'
-			},
-			// #ifndef VUE3
-			value: {
-				type: [String, Number],
-				default: ''
-			},
-			// #endif
-			// #ifdef VUE3
-			modelValue: {
-				type: [String, Number],
-				default: ''
-			},
-			// #endif
-		},
-		data() {
-			return {
-				showSelector: false,
-				inputVal: '',
-				blurTimer:null,
-			}
-		},
-		computed: {
-			labelStyle() {
-				if (this.labelWidth === 'auto') {
-					return ""
-				}
-				return `width: ${this.labelWidth}`
-			},
-			filterCandidates() {
-				if (this.inputVal !== 0 && !this.inputVal) {
-					return this.candidates
-				}
-				return this.candidates.filter((item) => {
-					return item.toString().indexOf(this.inputVal) > -1
-				})
-			},
-			filterCandidatesLength() {
-				return this.filterCandidates.length
-			}
-		},
-		watch: {
-			// #ifndef VUE3
-			value: {
-				handler(newVal) {
-					this.inputVal = newVal
-				},
-				immediate: true
-			},
-			// #endif
-			// #ifdef VUE3
-			modelValue: {
-				handler(newVal) {
-					this.inputVal = newVal
-				},
-				immediate: true
-			},
-			// #endif
-		},
-		methods: {
-			toggleSelector() {
-				this.showSelector = !this.showSelector
-			},
-			onFocus() {
-				this.showSelector = true
-			},
-			onBlur() {
-				this.blurTimer = setTimeout(() => {
-					this.showSelector = false
-				}, 153)
-			},
-			onScroll(){ // 滚动时将blur的定时器关掉
-				if(this.blurTimer) {
-					clearTimeout(this.blurTimer)
-					this.blurTimer = null
-				}
-			},
-			onSelectorClick(index) {
-				this.inputVal = this.filterCandidates[index]
-				this.showSelector = false
-				this.$emit('input', this.inputVal)
-				this.$emit('update:modelValue', this.inputVal)
-			},
-			onInput() {
-				setTimeout(() => {
-					this.$emit('input', this.inputVal)
-					this.$emit('update:modelValue', this.inputVal)
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.uni-combox {
-		font-size: 14px;
-		border: 1px solid #DCDFE6;
-		border-radius: 4px;
-		padding: 6px 10px;
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		// height: 40px;
-		flex-direction: row;
-		align-items: center;
-		// border-bottom: solid 1px #DDDDDD;
-	}
-
-	.uni-combox__label {
-		font-size: 16px;
-		line-height: 22px;
-		padding-right: 10px;
-		color: #999999;
-	}
-
-	.uni-combox__input-box {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: row;
-		align-items: center;
-	}
-
-	.uni-combox__input {
-		flex: 1;
-		font-size: 14px;
-		height: 22px;
-		line-height: 22px;
-	}
-
-	.uni-combox__input-plac {
-		font-size: 14px;
-		color: #999;
-	}
-
-	.uni-combox__selector {
-		/* #ifndef APP-NVUE */
-		box-sizing: border-box;
-		/* #endif */
-		position: absolute;
-		top: calc(100% + 12px);
-		left: 0;
-		width: 100%;
-		background-color: #FFFFFF;
-		border: 1px solid #EBEEF5;
-		border-radius: 6px;
-		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
-		z-index: 3;
-		padding: 4px 0;
-	}
-
-	.uni-combox__selector-scroll {
-		/* #ifndef APP-NVUE */
-		max-height: 200px;
-		box-sizing: border-box;
-		/* #endif */
-	}
-
-	.uni-combox__selector-empty,
-	.uni-combox__selector-item {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		cursor: pointer;
-		/* #endif */
-		line-height: 36px;
-		font-size: 14px;
-		text-align: center;
-		// border-bottom: solid 1px #DDDDDD;
-		padding: 0px 10px;
-	}
-
-	.uni-combox__selector-item:hover {
-		background-color: #f9f9f9;
-	}
-
-	.uni-combox__selector-empty:last-child,
-	.uni-combox__selector-item:last-child {
-		/* #ifndef APP-NVUE */
-		border-bottom: none;
-		/* #endif */
-	}
-
-	// picker 弹出层通用的指示小三角
-	.uni-popper__arrow,
-	.uni-popper__arrow::after {
-		position: absolute;
-		display: block;
-		width: 0;
-		height: 0;
-		border-color: transparent;
-		border-style: solid;
-		border-width: 6px;
-	}
-
-	.uni-popper__arrow {
-		filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
-		top: -6px;
-		left: 10%;
-		margin-right: 3px;
-		border-top-width: 0;
-		border-bottom-color: #EBEEF5;
-	}
-
-	.uni-popper__arrow::after {
-		content: " ";
-		top: 1px;
-		margin-left: -6px;
-		border-top-width: 0;
-		border-bottom-color: #fff;
-	}
-
-	.uni-combox__no-border {
-		border: none;
-	}
-
-	.uni-combox__mask {
-		width:100%;
-		height:100%;
-		position: fixed;
-		top: 0;
-		left: 0;
-    z-index: 1;
-	}
-</style>

+ 0 - 90
uni_modules/uni-combox/package.json

@@ -1,90 +0,0 @@
-{
-  "id": "uni-combox",
-  "displayName": "uni-combox 组合框",
-  "version": "1.0.1",
-  "description": "可以选择也可以输入的表单项 ",
-  "keywords": [
-    "uni-ui",
-    "uniui",
-    "combox",
-    "组合框",
-    "select"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-  "dcloudext": {
-    "category": [
-      "前端组件",
-      "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
-  },
-  "uni_modules": {
-    "dependencies": [
-			"uni-scss",
-			"uni-icons"
-		],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "n"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 11
uni_modules/uni-combox/readme.md

@@ -1,11 +0,0 @@
-
-
-## Combox 组合框
-> **组件名:uni-combox**
-> 代码块: `uCombox`
-
-
-组合框组件。
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-combox)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 0 - 24
uni_modules/uni-countdown/changelog.md

@@ -1,24 +0,0 @@
-## 1.2.2(2022-01-19)
-- 修复 在微信小程序中样式不生效的bug
-## 1.2.1(2022-01-18)
-- 新增 update 方法 ,在动态更新时间后,刷新组件
-## 1.2.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-countdown](https://uniapp.dcloud.io/component/uniui/uni-countdown)
-## 1.1.3(2021-10-18)
-- 重构
-- 新增 font-size 支持自定义字体大小
-## 1.1.2(2021-08-24)
-- 新增 支持国际化
-## 1.1.1(2021-07-30)
-- 优化 vue3下小程序事件警告的问题
-## 1.1.0(2021-07-30)
-- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
-## 1.0.5(2021-06-18)
-- 修复 uni-countdown 重复赋值跳两秒的 bug
-## 1.0.4(2021-05-12)
-- 新增 组件示例地址
-## 1.0.3(2021-05-08)
-- 修复 uni-countdown 不能控制倒计时的 bug
-## 1.0.2(2021-02-04)
-- 调整为uni_modules目录规范

+ 0 - 6
uni_modules/uni-countdown/components/uni-countdown/i18n/en.json

@@ -1,6 +0,0 @@
-{
-	"uni-countdown.day": "day",
-	"uni-countdown.h": "h",
-	"uni-countdown.m": "m",
-	"uni-countdown.s": "s"
-}

+ 0 - 8
uni_modules/uni-countdown/components/uni-countdown/i18n/index.js

@@ -1,8 +0,0 @@
-import en from './en.json'
-import zhHans from './zh-Hans.json'
-import zhHant from './zh-Hant.json'
-export default {
-	en,
-	'zh-Hans': zhHans,
-	'zh-Hant': zhHant
-}

+ 0 - 6
uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json

@@ -1,6 +0,0 @@
-{
-	"uni-countdown.day": "天",
-	"uni-countdown.h": "时",
-	"uni-countdown.m": "分",
-	"uni-countdown.s": "秒"
-}

+ 0 - 6
uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json

@@ -1,6 +0,0 @@
-{
-	"uni-countdown.day": "天",
-	"uni-countdown.h": "時",
-	"uni-countdown.m": "分",
-	"uni-countdown.s": "秒"
-}

+ 0 - 267
uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue

@@ -1,267 +0,0 @@
-<template>
-	<view class="uni-countdown">
-		<text v-if="showDay" :style="[timeStyle]" class="uni-countdown__number">{{ d }}</text>
-		<text v-if="showDay" :style="[splitorStyle]" class="uni-countdown__splitor">{{dayText}}</text>
-		<text :style="[timeStyle]" class="uni-countdown__number">{{ h }}</text>
-		<text :style="[splitorStyle]" class="uni-countdown__splitor">{{ showColon ? ':' : hourText }}</text>
-		<text :style="[timeStyle]" class="uni-countdown__number">{{ i }}</text>
-		<text :style="[splitorStyle]" class="uni-countdown__splitor">{{ showColon ? ':' : minuteText }}</text>
-		<text :style="[timeStyle]" class="uni-countdown__number">{{ s }}</text>
-		<text v-if="!showColon" :style="[splitorStyle]" class="uni-countdown__splitor">{{secondText}}</text>
-	</view>
-</template>
-<script>
-	import {
-		initVueI18n
-	} from '@dcloudio/uni-i18n'
-	import messages from './i18n/index.js'
-	const {
-		t
-	} = initVueI18n(messages)
-	/**
-	 * Countdown 倒计时
-	 * @description 倒计时组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=25
-	 * @property {String} backgroundColor 背景色
-	 * @property {String} color 文字颜色
-	 * @property {Number} day 天数
-	 * @property {Number} hour 小时
-	 * @property {Number} minute 分钟
-	 * @property {Number} second 秒
-	 * @property {Number} timestamp 时间戳
-	 * @property {Boolean} showDay = [true|false] 是否显示天数
-	 * @property {Boolean} show-colon = [true|false] 是否以冒号为分隔符
-	 * @property {String} splitorColor 分割符号颜色
-	 * @event {Function} timeup 倒计时时间到触发事件
-	 * @example <uni-countdown :day="1" :hour="1" :minute="12" :second="40"></uni-countdown>
-	 */
-	export default {
-		name: 'UniCountdown',
-		emits: ['timeup'],
-		props: {
-			showDay: {
-				type: Boolean,
-				default: true
-			},
-			showColon: {
-				type: Boolean,
-				default: true
-			},
-			start: {
-				type: Boolean,
-				default: true
-			},
-			backgroundColor: {
-				type: String,
-				default: ''
-			},
-			color: {
-				type: String,
-				default: '#333'
-			},
-			fontSize: {
-				type: Number,
-				default: 14
-			},
-			splitorColor: {
-				type: String,
-				default: '#333'
-			},
-			day: {
-				type: Number,
-				default: 0
-			},
-			hour: {
-				type: Number,
-				default: 0
-			},
-			minute: {
-				type: Number,
-				default: 0
-			},
-			second: {
-				type: Number,
-				default: 0
-			},
-			timestamp: {
-				type: Number,
-				default: 0
-			},
-      zeroPad: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data() {
-			return {
-				timer: null,
-				syncFlag: false,
-				d: '00',
-				h: '00',
-				i: '00',
-				s: '00',
-				leftTime: 0,
-				seconds: 0
-			}
-		},
-		computed: {
-			dayText() {
-				return t("uni-countdown.day")
-			},
-			hourText(val) {
-				return t("uni-countdown.h")
-			},
-			minuteText(val) {
-				return t("uni-countdown.m")
-			},
-			secondText(val) {
-				return t("uni-countdown.s")
-			},
-			timeStyle() {
-				const {
-					color,
-					backgroundColor,
-					fontSize
-				} = this
-				return {
-					color,
-					backgroundColor,
-					fontSize: `${fontSize}px`,
-					width: `${fontSize * 22 / 14}px`, // 按字体大小为 14px 时的比例缩放
- 					lineHeight: `${fontSize * 20 / 14}px`,
-					borderRadius: `${fontSize * 3 / 14}px`,
-				}
-			},
-			splitorStyle() {
-				const { splitorColor, fontSize, backgroundColor } = this
-				return {
-					color: splitorColor,
-					fontSize: `${fontSize * 12 / 14}px`,
-					margin: backgroundColor ? `${fontSize * 4 / 14}px` : ''
-				}
-			}
-		},
-		watch: {
-			day(val) {
-				this.changeFlag()
-			},
-			hour(val) {
-				this.changeFlag()
-			},
-			minute(val) {
-				this.changeFlag()
-			},
-			second(val) {
-				this.changeFlag()
-			},
-			start: {
-				immediate: true,
-				handler(newVal, oldVal) {
-					if (newVal) {
-						this.startData();
-					} else {
-						if (!oldVal) return
-						clearInterval(this.timer)
-					}
-				}
-
-			}
-		},
-		created: function(e) {
-			this.seconds = this.toSeconds(this.timestamp, this.day, this.hour, this.minute, this.second)
-			this.countDown()
-		},
-		// #ifndef VUE3
-		destroyed() {
-			clearInterval(this.timer)
-		},
-		// #endif
-		// #ifdef VUE3
-		unmounted() {
-			clearInterval(this.timer)
-		},
-		// #endif
-		methods: {
-			toSeconds(timestamp, day, hours, minutes, seconds) {
-				if (timestamp) {
-					return timestamp - parseInt(new Date().getTime() / 1000, 10)
-				}
-				return day * 60 * 60 * 24 + hours * 60 * 60 + minutes * 60 + seconds
-			},
-			timeUp() {
-				clearInterval(this.timer)
-				this.$emit('timeup')
-			},
-			countDown() {
-				let seconds = this.seconds
-				let [day, hour, minute, second] = [0, 0, 0, 0]
-				if (seconds > 0) {
-					day = Math.floor(seconds / (60 * 60 * 24))
-					hour = Math.floor(seconds / (60 * 60)) - (day * 24)
-					minute = Math.floor(seconds / 60) - (day * 24 * 60) - (hour * 60)
-					second = Math.floor(seconds) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60)
-				} else {
-					this.timeUp()
-				}
-        day = (day < 10 && this.zeroPad) ? `0${day}` : day
-				hour = (hour < 10 && this.zeroPad) ? `0${hour}` : hour
-				minute = (minute < 10 && this.zeroPad) ? `0${minute}` : minute
-				second = (second < 10 && this.zeroPad) ? `0${second}` : second
-				this.d = day
-				this.h = hour
-				this.i = minute
-				this.s = second
-			},
-			startData() {
-				this.seconds = this.toSeconds(this.timestamp, this.day, this.hour, this.minute, this.second)
-				if (this.seconds <= 0) {
-					this.seconds = this.toSeconds(0, 0, 0, 0, 0)
-					this.countDown()
-					return
-				}
-				clearInterval(this.timer)
-				this.countDown()
-				this.timer = setInterval(() => {
-					this.seconds--
-					if (this.seconds < 0) {
-						this.timeUp()
-						return
-					}
-					this.countDown()
-				}, 1000)
-			},
-			update(){
-				this.startData();
-			},
-			changeFlag() {
-				if (!this.syncFlag) {
-					this.seconds = this.toSeconds(this.timestamp, this.day, this.hour, this.minute, this.second)
-					this.startData();
-					this.syncFlag = true;
-				}
-			}
-		}
-	}
-</script>
-<style lang="scss" scoped>
-	$font-size: 14px;
-
-	.uni-countdown {
-		display: flex;
-		flex-direction: row;
-		justify-content: flex-start;
-		align-items: center;
-
-		&__splitor {
-			margin: 0 2px;
-			font-size: $font-size;
-			color: #333;
-		}
-
-		&__number {
-			border-radius: 3px;
-			text-align: center;
-			font-size: $font-size;
-		}
-	}
-</style>

+ 0 - 86
uni_modules/uni-countdown/package.json

@@ -1,86 +0,0 @@
-{
-  "id": "uni-countdown",
-  "displayName": "uni-countdown 倒计时",
-  "version": "1.2.2",
-  "description": "CountDown 倒计时组件",
-  "keywords": [
-    "uni-ui",
-    "uniui",
-    "countdown",
-    "倒计时"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-  "dcloudext": {
-    "category": [
-      "前端组件",
-      "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
-  },
-  "uni_modules": {
-    "dependencies": ["uni-scss"],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 10
uni_modules/uni-countdown/readme.md

@@ -1,10 +0,0 @@
-
-
-## CountDown 倒计时
-> **组件名:uni-countdown**
-> 代码块: `uCountDown`
-
-倒计时组件。
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-countdown)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 0 - 9
uni_modules/uni-data-picker/changelog.md

@@ -1,12 +1,3 @@
-## 1.1.2(2023-04-11)
-- 修复 更改 modelValue 报错的 bug
-- 修复 v-for 未使用 key 值控制台 warning
-## 1.1.1(2023-02-21)
-- 修复代码合并时引发 value 属性为空时不渲染数据的问题
-## 1.1.0(2023-02-15)
-- 修复 localdata 不支持动态更新的bug
-## 1.0.9(2023-02-15)
-- 修复 localdata 不支持动态更新的bug
 ## 1.0.8(2022-09-16)
 - 可以使用 uni-scss 控制主题色
 ## 1.0.7(2022-07-06)

+ 6 - 10
uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue

@@ -75,7 +75,7 @@
    */
   export default {
     name: 'UniDataPicker',
-    emits: ['popupopened', 'popupclosed', 'nodeclick', 'input', 'change', 'update:modelValue','inputclick'],
+    emits: ['popupopened', 'popupclosed', 'nodeclick', 'input', 'change', 'update:modelValue'],
     mixins: [dataPicker],
     components: {
       DataPickerView
@@ -131,16 +131,9 @@
         this.load();
       })
     },
-    watch: {
-			localdata: {
-				handler() {
-					this.load()
-				},
-        deep: true
-			},
-    },
     methods: {
       clear() {
+        this.modelValue = null;
         this._dispatchEvent([]);
       },
       onPropsChange() {
@@ -155,6 +148,10 @@
           return;
         }
 
+        if (!this.hasValue) {
+          return;
+        }
+
         // 回显本地数据
         if (this.isLocalData) {
           this.loadData();
@@ -187,7 +184,6 @@
       },
       handleInput() {
         if (this.readonly) {
-					this.$emit('inputclick')
           return
         }
         this.show()

+ 15 - 17
uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue

@@ -2,27 +2,25 @@
   <view class="uni-data-pickerview">
     <scroll-view v-if="!isCloudDataList" class="selected-area" scroll-x="true">
       <view class="selected-list">
-          <view 
-            class="selected-item"
-            v-for="(item,index) in selected"
-            :key="index"
-            :class="{
-              'selected-item-active':index == selectedIndex
-            }"
-            @click="handleSelect(index)"
-          >
-            <text>{{item.text || ''}}</text>
+        <template v-for="(item,index) in selected">
+          <view class="selected-item"
+            :class="{'selected-item-active':index==selectedIndex}"
+            v-if="item.text" @click="handleSelect(index)">
+            <text>{{item.text}}</text>
           </view>
+        </template>
       </view>
     </scroll-view>
     <view class="tab-c">
-      <scroll-view class="list" :scroll-y="true">
-        <view class="item" :class="{'is-disabled': !!item.disable}" v-for="(item, j) in dataList[selectedIndex]" :key="j"
-          @click="handleNodeClick(item, selectedIndex, j)">
-          <text class="item-text">{{item[map.text]}}</text>
-          <view class="check" v-if="selected.length > selectedIndex && item[map.value] == selected[selectedIndex].value"></view>
-        </view>
-      </scroll-view>
+      <template v-for="(child, i) in dataList">
+        <scroll-view class="list" :key="i" v-if="i==selectedIndex" :scroll-y="true">
+          <view class="item" :class="{'is-disabled': !!item.disable}" v-for="(item, j) in child"
+            @click="handleNodeClick(item, i, j)">
+            <text class="item-text">{{item[map.text]}}</text>
+            <view class="check" v-if="selected.length > i && item[map.value] == selected[i].value"></view>
+          </view>
+        </scroll-view>
+      </template>
 
       <view class="loading-cover" v-if="loading">
         <uni-load-more class="load-more" :contentText="loadMore" status="loading"></uni-load-more>

+ 1 - 1
uni_modules/uni-data-picker/package.json

@@ -1,7 +1,7 @@
 {
   "id": "uni-data-picker",
   "displayName": "uni-data-picker 数据驱动的picker选择器",
-  "version": "1.1.2",
+  "version": "1.0.8",
   "description": "单列、多列级联选择器,常用于省市区城市选择、公司部门选择、多级分类等场景",
   "keywords": [
     "uni-ui",

+ 0 - 13
uni_modules/uni-data-select/changelog.md

@@ -1,16 +1,3 @@
-## 1.0.6(2023-04-12)
-- 修复 微信小程序点击时会改变背景颜色的 bug
-## 1.0.5(2023-02-03)
-- 修复 禁用时会显示清空按钮
-## 1.0.4(2023-02-02)
-- 优化 查询条件短期内多次变更只查询最后一次变更后的结果
-- 调整 内部缓存键名调整为 uni-data-select-lastSelectedValue
-## 1.0.3(2023-01-16)
-- 修复 不关联服务空间报错的问题
-## 1.0.2(2023-01-14)
-- 新增  属性 `format` 可用于格式化显示选项内容
-## 1.0.1(2022-12-06)
-- 修复  当where变化时,数据不会自动更新的问题
 ## 0.1.9(2022-09-05)
 - 修复 微信小程序下拉框出现后选择会点击到蒙板后面的输入框
 ## 0.1.8(2022-08-29)

+ 55 - 132
uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue

@@ -2,16 +2,12 @@
 	<view class="uni-stat__select">
 		<span v-if="label" class="uni-label-text hide-on-phone">{{label + ':'}}</span>
 		<view class="uni-stat-box" :class="{'uni-stat__actived': current}">
-			<view class="uni-select" :class="{'uni-select--disabled':disabled}">
+			<view class="uni-select"  :class="{'uni-select--disabled':disabled}">
 				<view class="uni-select__input-box" @click="toggleSelector">
 					<view v-if="current" class="uni-select__input-text">{{current}}</view>
 					<view v-else class="uni-select__input-text uni-select__input-placeholder">{{typePlaceholder}}</view>
-					<view v-if="current && clear && !disabled" @click.stop="clearVal" >
-						<uni-icons type="clear" color="#c0c4cc" size="24"/>
-					</view>
-					<view v-else>
-						<uni-icons :type="showSelector? 'top' : 'bottom'" size="14" color="#999" />
-					</view>
+					<uni-icons v-if="current && clear" type="clear" color="#c0c4cc" size="24" @click="clearVal" />
+					<uni-icons v-else :type="showSelector? 'top' : 'bottom'" size="14" color="#999" />
 				</view>
 				<view class="uni-select--mask" v-if="showSelector" @click="toggleSelector" />
 				<view class="uni-select__selector" v-if="showSelector">
@@ -20,9 +16,10 @@
 						<view class="uni-select__selector-empty" v-if="mixinDatacomResData.length === 0">
 							<text>{{emptyTips}}</text>
 						</view>
-						<view v-else class="uni-select__selector-item" v-for="(item,index) in mixinDatacomResData" :key="index"
-							@click="change(item)">
-							<text :class="{'uni-select__selector__disabled': item.disable}">{{formatItemName(item)}}</text>
+						<view v-else class="uni-select__selector-item" v-for="(item,index) in mixinDatacomResData"
+							:key="index" @click="change(item)">
+							<text
+								:class="{'uni-select__selector__disabled': item.disable}">{{formatItemName(item)}}</text>
 						</view>
 					</scroll-view>
 				</view>
@@ -47,8 +44,17 @@
 	 */
 
 	export default {
-		name: "uni-data-select",
+		name: "uni-stat-select",
 		mixins: [uniCloud.mixinDatacom || {}],
+		data() {
+			return {
+				showSelector: false,
+				current: '',
+				mixinDatacomResData: [],
+				apps: [],
+				channels: []
+			};
+		},
 		props: {
 			localdata: {
 				type: Array,
@@ -84,32 +90,15 @@
 				type: Number,
 				default: 0
 			},
-			disabled: {
+      disabled: {
 				type: Boolean,
 				default: false
-			},
-			// 格式化输出 用法 field="_id as value, version as text, uni_platform as label" format="{label} - {text}"
-			format: {
-				type: String,
-				default: ''
-			},
-		},
-		data() {
-			return {
-				showSelector: false,
-				current: '',
-				mixinDatacomResData: [],
-				apps: [],
-				channels: [],
-				cacheKey: "uni-data-select-lastSelectedValue",
-			};
+			}
 		},
 		created() {
-			this.debounceGet = this.debounce(() => {
-				this.query();
-			}, 300);
+			this.last = `${this.collection}_last_selected_option_value`
 			if (this.collection && !this.localdata.length) {
-				this.debounceGet();
+				this.mixinDatacomEasyGet()
 			}
 		},
 		computed: {
@@ -124,14 +113,6 @@
 				return placeholder ?
 					common + placeholder :
 					common
-			},
-			valueCom(){
-				// #ifdef VUE3
-				return this.modelValue;
-				// #endif
-				// #ifndef VUE3
-				return this.value;
-				// #endif
 			}
 		},
 		watch: {
@@ -143,9 +124,16 @@
 					}
 				}
 			},
-			valueCom(val, old) {
+			// #ifndef VUE3
+			value() {
+				this.initDefVal()
+			},
+			// #endif
+			// #ifdef VUE3
+			modelValue() {
 				this.initDefVal()
 			},
+			// #endif
 			mixinDatacomResData: {
 				immediate: true,
 				handler(val) {
@@ -156,46 +144,27 @@
 			}
 		},
 		methods: {
-			debounce(fn, time = 100){
-				let timer = null
-				return function(...args) {
-					if (timer) clearTimeout(timer)
-					timer = setTimeout(() => {
-						fn.apply(this, args)
-					}, time)
-				}
-			},
-			// 执行数据库查询
-			query(){
-				this.mixinDatacomEasyGet();
-			},
-			// 监听查询条件变更事件
-			onMixinDatacomPropsChange(){
-				if (this.collection) {
-					this.debounceGet();
-				}
-			},
 			initDefVal() {
 				let defValue = ''
-				if ((this.valueCom || this.valueCom === 0) && !this.isDisabled(this.valueCom)) {
-					defValue = this.valueCom
+				if ((this.value || this.value === 0) && !this.isDisabled(this.value)) {
+					defValue = this.value
+				} else if ((this.modelValue || this.modelValue === 0) && !this.isDisabled(this.modelValue)) {
+					defValue = this.modelValue
 				} else {
 					let strogeValue
 					if (this.collection) {
-						strogeValue = this.getCache()
+						strogeValue = uni.getStorageSync(this.last)
 					}
 					if (strogeValue || strogeValue === 0) {
 						defValue = strogeValue
 					} else {
 						let defItem = ''
-						if (this.defItem > 0 && this.defItem <= this.mixinDatacomResData.length) {
+						if (this.defItem > 0 && this.defItem < this.mixinDatacomResData.length) {
 							defItem = this.mixinDatacomResData[this.defItem - 1].value
 						}
 						defValue = defItem
 					}
-          if (defValue || defValue === 0) {
-					  this.emit(defValue)
-          }
+					this.emit(defValue)
 				}
 				const def = this.mixinDatacomResData.find(item => item.value === defValue)
 				this.current = def ? this.formatItemName(def) : ''
@@ -220,7 +189,7 @@
 			clearVal() {
 				this.emit('')
 				if (this.collection) {
-					this.removeCache()
+					uni.removeStorageSync(this.last)
 				}
 			},
 			change(item) {
@@ -231,17 +200,18 @@
 				}
 			},
 			emit(val) {
+				this.$emit('change', val)
 				this.$emit('input', val)
 				this.$emit('update:modelValue', val)
-				this.$emit('change', val)
 				if (this.collection) {
-					this.setCache(val);
+					uni.setStorageSync(this.last, val)
 				}
 			},
+
 			toggleSelector() {
-				if (this.disabled) {
-					return
-				}
+        if(this.disabled){
+          return
+        }
 
 				this.showSelector = !this.showSelector
 			},
@@ -252,50 +222,14 @@
 					channel_code
 				} = item
 				channel_code = channel_code ? `(${channel_code})` : ''
-
-				if (this.format) {
-					// 格式化输出
-					let str = "";
-					str = this.format;
-					for (let key in item) {
-						str = str.replace(new RegExp(`{${key}}`,"g"),item[key]);
-					}
-					return str;
-				} else {
-					return this.collection.indexOf('app-list') > 0 ?
-						`${text}(${value})` :
-						(
-							text ?
-							text :
-							`未命名${channel_code}`
-						)
-				}
-			},
-			// 获取当前加载的数据
-			getLoadData(){
-				return this.mixinDatacomResData;
-			},
-			// 获取当前缓存key
-			getCurrentCacheKey(){
-				return this.collection;
-			},
-			// 获取缓存
-			getCache(name=this.getCurrentCacheKey()){
-				let cacheData = uni.getStorageSync(this.cacheKey) || {};
-				return cacheData[name];
-			},
-			// 设置缓存
-			setCache(value, name=this.getCurrentCacheKey()){
-				let cacheData = uni.getStorageSync(this.cacheKey) || {};
-				cacheData[name] = value;
-				uni.setStorageSync(this.cacheKey, cacheData);
-			},
-			// 删除缓存
-			removeCache(name=this.getCurrentCacheKey()){
-				let cacheData = uni.getStorageSync(this.cacheKey) || {};
-				delete cacheData[name];
-				uni.setStorageSync(this.cacheKey, cacheData);
-			},
+				return this.collection.indexOf('app-list') > 0 ?
+					`${text}(${value})` :
+					(
+						text ?
+						text :
+						`未命名${channel_code}`
+					)
+			}
 		}
 	}
 </script>
@@ -319,9 +253,7 @@
 		display: flex;
 		align-items: center;
 		// padding: 15px;
-		/* #ifdef H5 */
 		cursor: pointer;
-		/* #endif */
 		width: 100%;
 		flex: 1;
 		box-sizing: border-box;
@@ -365,10 +297,10 @@
 		flex: 1;
 		height: 35px;
 
-		&--disabled {
-			background-color: #f5f7fa;
-			cursor: not-allowed;
-		}
+    &--disabled{
+      background-color: #f5f7fa;
+      cursor: not-allowed;
+    }
 	}
 
 	.uni-select__label {
@@ -425,14 +357,6 @@
 		/* #endif */
 	}
 
-	/* #ifdef H5 */
-	@media (min-width: 768px) {
-		.uni-select__selector-scroll {
-			max-height: 600px;
-		}
-	}
-	/* #endif */
-
 	.uni-select__selector-empty,
 	.uni-select__selector-item {
 		/* #ifndef APP-NVUE */
@@ -512,6 +436,5 @@
 		bottom: 0;
 		right: 0;
 		left: 0;
-		z-index: 2;
 	}
 </style>

+ 1 - 1
uni_modules/uni-data-select/package.json

@@ -1,7 +1,7 @@
 {
   "id": "uni-data-select",
   "displayName": "uni-data-select 下拉框选择器",
-  "version": "1.0.6",
+  "version": "0.1.9",
   "description": "通过数据驱动的下拉框选择器",
   "keywords": [
     "uni-ui",

+ 0 - 10
uni_modules/uni-dateformat/changelog.md

@@ -1,10 +0,0 @@
-## 1.0.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-dateformat](https://uniapp.dcloud.io/component/uniui/uni-dateformat)
-## 0.0.5(2021-07-08)
-- 调整 默认时间不再是当前时间,而是显示'-'字符
-## 0.0.4(2021-05-12)
-- 新增 组件示例地址
-## 0.0.3(2021-02-04)
-- 调整为uni_modules目录规范
-- 修复 iOS 平台日期格式化出错的问题

+ 0 - 200
uni_modules/uni-dateformat/components/uni-dateformat/date-format.js

@@ -1,200 +0,0 @@
-// yyyy-MM-dd hh:mm:ss.SSS 所有支持的类型
-function pad(str, length = 2) {
-	str += ''
-	while (str.length < length) {
-		str = '0' + str
-	}
-	return str.slice(-length)
-}
-
-const parser = {
-	yyyy: (dateObj) => {
-		return pad(dateObj.year, 4)
-	},
-	yy: (dateObj) => {
-		return pad(dateObj.year)
-	},
-	MM: (dateObj) => {
-		return pad(dateObj.month)
-	},
-	M: (dateObj) => {
-		return dateObj.month
-	},
-	dd: (dateObj) => {
-		return pad(dateObj.day)
-	},
-	d: (dateObj) => {
-		return dateObj.day
-	},
-	hh: (dateObj) => {
-		return pad(dateObj.hour)
-	},
-	h: (dateObj) => {
-		return dateObj.hour
-	},
-	mm: (dateObj) => {
-		return pad(dateObj.minute)
-	},
-	m: (dateObj) => {
-		return dateObj.minute
-	},
-	ss: (dateObj) => {
-		return pad(dateObj.second)
-	},
-	s: (dateObj) => {
-		return dateObj.second
-	},
-	SSS: (dateObj) => {
-		return pad(dateObj.millisecond, 3)
-	},
-	S: (dateObj) => {
-		return dateObj.millisecond
-	},
-}
-
-// 这都n年了iOS依然不认识2020-12-12,需要转换为2020/12/12
-function getDate(time) {
-	if (time instanceof Date) {
-		return time
-	}
-	switch (typeof time) {
-		case 'string':
-			{
-				// 2020-12-12T12:12:12.000Z、2020-12-12T12:12:12.000
-				if (time.indexOf('T') > -1) {
-					return new Date(time)
-				}
-				return new Date(time.replace(/-/g, '/'))
-			}
-		default:
-			return new Date(time)
-	}
-}
-
-export function formatDate(date, format = 'yyyy/MM/dd hh:mm:ss') {
-	if (!date && date !== 0) {
-		return ''
-	}
-	date = getDate(date)
-	const dateObj = {
-		year: date.getFullYear(),
-		month: date.getMonth() + 1,
-		day: date.getDate(),
-		hour: date.getHours(),
-		minute: date.getMinutes(),
-		second: date.getSeconds(),
-		millisecond: date.getMilliseconds()
-	}
-	const tokenRegExp = /yyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S/
-	let flag = true
-	let result = format
-	while (flag) {
-		flag = false
-		result = result.replace(tokenRegExp, function(matched) {
-			flag = true
-			return parser[matched](dateObj)
-		})
-	}
-	return result
-}
-
-export function friendlyDate(time, {
-	locale = 'zh',
-	threshold = [60000, 3600000],
-	format = 'yyyy/MM/dd hh:mm:ss'
-}) {
-	if (time === '-') {
-		return time
-	}
-	if (!time && time !== 0) {
-		return ''
-	}
-	const localeText = {
-		zh: {
-			year: '年',
-			month: '月',
-			day: '天',
-			hour: '小时',
-			minute: '分钟',
-			second: '秒',
-			ago: '前',
-			later: '后',
-			justNow: '刚刚',
-			soon: '马上',
-			template: '{num}{unit}{suffix}'
-		},
-		en: {
-			year: 'year',
-			month: 'month',
-			day: 'day',
-			hour: 'hour',
-			minute: 'minute',
-			second: 'second',
-			ago: 'ago',
-			later: 'later',
-			justNow: 'just now',
-			soon: 'soon',
-			template: '{num} {unit} {suffix}'
-		}
-	}
-	const text = localeText[locale] || localeText.zh
-	let date = getDate(time)
-	let ms = date.getTime() - Date.now()
-	let absMs = Math.abs(ms)
-	if (absMs < threshold[0]) {
-		return ms < 0 ? text.justNow : text.soon
-	}
-	if (absMs >= threshold[1]) {
-		return formatDate(date, format)
-	}
-	let num
-	let unit
-	let suffix = text.later
-	if (ms < 0) {
-		suffix = text.ago
-		ms = -ms
-	}
-	const seconds = Math.floor((ms) / 1000)
-	const minutes = Math.floor(seconds / 60)
-	const hours = Math.floor(minutes / 60)
-	const days = Math.floor(hours / 24)
-	const months = Math.floor(days / 30)
-	const years = Math.floor(months / 12)
-	switch (true) {
-		case years > 0:
-			num = years
-			unit = text.year
-			break
-		case months > 0:
-			num = months
-			unit = text.month
-			break
-		case days > 0:
-			num = days
-			unit = text.day
-			break
-		case hours > 0:
-			num = hours
-			unit = text.hour
-			break
-		case minutes > 0:
-			num = minutes
-			unit = text.minute
-			break
-		default:
-			num = seconds
-			unit = text.second
-			break
-	}
-
-	if (locale === 'en') {
-		if (num === 1) {
-			num = 'a'
-		} else {
-			unit += 's'
-		}
-	}
-
-	return text.template.replace(/{\s*num\s*}/g, num + '').replace(/{\s*unit\s*}/g, unit).replace(/{\s*suffix\s*}/g,
-		suffix)
-}

+ 0 - 88
uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue

@@ -1,88 +0,0 @@
-<template>
-	<text>{{dateShow}}</text>
-</template>
-
-<script>
-	import {friendlyDate} from './date-format.js'
-	/**
-	 * Dateformat 日期格式化
-	 * @description 日期格式化组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=3279
-	 * @property {Object|String|Number} date 日期对象/日期字符串/时间戳
-	 * @property {String} locale 格式化使用的语言
-	 * 	@value zh 中文
-	 * 	@value en 英文
-	 * @property {Array} threshold 应用不同类型格式化的阈值
-	 * @property {String} format 输出日期字符串时的格式
-	 */
-	export default {
-		name: 'uniDateformat',
-		props: {
-			date: {
-				type: [Object, String, Number],
-				default () {
-					return '-'
-				}
-			},
-			locale: {
-				type: String,
-				default: 'zh',
-			},
-			threshold: {
-				type: Array,
-				default () {
-					return [0, 0]
-				}
-			},
-			format: {
-				type: String,
-				default: 'yyyy/MM/dd hh:mm:ss'
-			},
-			// refreshRate使用不当可能导致性能问题,谨慎使用
-			refreshRate: {
-				type: [Number, String],
-				default: 0
-			}
-		},
-		data() {
-			return {
-				refreshMark: 0
-			}
-		},
-		computed: {
-			dateShow() {
-				this.refreshMark
-				return friendlyDate(this.date, {
-					locale: this.locale,
-					threshold: this.threshold,
-					format: this.format
-				})
-			}
-		},
-		watch: {
-			refreshRate: {
-				handler() {
-					this.setAutoRefresh()
-				},
-				immediate: true
-			}
-		},
-		methods: {
-			refresh() {
-				this.refreshMark++
-			},
-			setAutoRefresh() {
-				clearInterval(this.refreshInterval)
-				if (this.refreshRate) {
-					this.refreshInterval = setInterval(() => {
-						this.refresh()
-					}, parseInt(this.refreshRate))
-				}
-			}
-		}
-	}
-</script>
-
-<style>
-
-</style>

+ 0 - 88
uni_modules/uni-dateformat/package.json

@@ -1,88 +0,0 @@
-{
-  "id": "uni-dateformat",
-  "displayName": "uni-dateformat 日期格式化",
-  "version": "1.0.0",
-  "description": "日期格式化组件,可以将日期格式化为1分钟前、刚刚等形式",
-  "keywords": [
-    "uni-ui",
-    "uniui",
-    "日期格式化",
-    "时间格式化",
-    "格式化时间",
-    ""
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-  "dcloudext": {
-    "category": [
-      "前端组件",
-      "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
-  },
-  "uni_modules": {
-    "dependencies": ["uni-scss"],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "y",
-          "联盟": "y"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 11
uni_modules/uni-dateformat/readme.md

@@ -1,11 +0,0 @@
-
-
-### DateFormat 日期格式化
-> **组件名:uni-dateformat**
-> 代码块: `uDateformat`
-
-
-日期格式化组件。
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-dateformat)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 33 - 63
uni_modules/uni-datetime-picker/changelog.md

@@ -1,71 +1,41 @@
-## 2.2.22(2023-03-30)
-- 修复 日历 picker 修改年月后,自动选中当月1日 [详情](https://ask.dcloud.net.cn/question/165937)
-- 修复 小程序端 低版本 ios NaN [详情](https://ask.dcloud.net.cn/question/162979)
-## 2.2.21(2023-02-20)
-- 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362)
-## 2.2.20(2023-02-17)
-- 优化 值为空依然选中当天问题
-- 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间
-- 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间
-- 优化 字节小程序日期时间范围选择,底部日期换行问题
-## 2.2.19(2023-02-09)
-- 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686)
-## 2.2.18(2023-02-08)
-- 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684)
-- 优化 PC端输入日期格式错误时返回当前日期时间
-- 优化 PC端输入日期时间超出 start、end 限制的Bug
-- 优化 移动端日期时间范围用法时间展示不完整问题
-## 2.2.17(2023-02-04)
-- 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679)
-- 修复 vue3 time-picker 无法显示绑定时分秒的Bug
-## 2.2.16(2023-02-02)
-- 修复 字节小程序报错的Bug
-## 2.2.15(2023-02-02)
-- 修复 某些情况切换月份错误的Bug
-## 2.2.14(2023-01-30)
-- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/162033)
-## 2.2.13(2023-01-10)
-- 修复 多次加载组件造成内存占用的Bug
-## 2.2.12(2022-12-01)
-- 修复 vue3 下 i18n 国际化初始值不正确的Bug
 ## 2.2.11(2022-09-19)
-- 修复 支付宝小程序样式错乱的Bug [详情](https://github.com/dcloudio/uni-app/issues/3861)
+- 修复,支付宝小程序样式错乱,[详情](https://github.com/dcloudio/uni-app/issues/3861)
 ## 2.2.10(2022-09-19)
-- 修复 反向选择日期范围,日期显示异常的Bug [详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false)
+- 修复,反向选择日期范围,日期显示异常,[详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false)
 ## 2.2.9(2022-09-16)
 - 可以使用 uni-scss 控制主题色
 ## 2.2.8(2022-09-08)
-- 修复 close事件无效的Bug
+- 修复 close事件无效的 bug
 ## 2.2.7(2022-09-05)
-- 修复 移动端 maskClick 无效的Bug [详情](https://ask.dcloud.net.cn/question/140824)
+- 修复 移动端 maskClick 无效的 bug,详见:[https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false](https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false)
 ## 2.2.6(2022-06-30)
 - 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致
 ## 2.2.5(2022-06-24)
-- 修复 日历顶部年月及底部确认未国际化的Bug
+- 修复 日历顶部年月及底部确认未国际化 bug
 ## 2.2.4(2022-03-31)
-- 修复 Vue3 下动态赋值,单选类型未响应的Bug
+- 修复 Vue3 下动态赋值,单选类型未响应的 bug
 ## 2.2.3(2022-03-28)
-- 修复 Vue3 下动态赋值未响应的Bug
+- 修复 Vue3 下动态赋值未响应的 bug
 ## 2.2.2(2021-12-10)
-- 修复 clear-icon 属性在小程序平台不生效的Bug
+- 修复 clear-icon 属性在小程序平台不生效的 bug
 ## 2.2.1(2021-12-10)
-- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的Bug
+- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的 bug
 ## 2.2.0(2021-11-19)
-- 优化 组件UI,并提供设计资源 [详情](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移 [https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker)
-## 2.1.5(2021-11-09)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker)
+## 2.1.5(2021-11-09) 
 - 新增 提供组件设计资源,组件样式调整
 ## 2.1.4(2021-09-10)
-- 修复 hide-second 在移动端的Bug
-- 修复 单选赋默认值时,赋值日期未高亮的Bug
-- 修复 赋默认值时,移动端未正确显示时间的Bug
+- 修复 hide-second 在移动端的 bug
+- 修复 单选赋默认值时,赋值日期未高亮的 bug
+- 修复 赋默认值时,移动端未正确显示时间的 bug
 ## 2.1.3(2021-09-09)
 - 新增 hide-second 属性,支持只使用时分,隐藏秒
 ## 2.1.2(2021-09-03)
 - 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次
 - 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法
 - 优化 调整字号大小,美化日历界面
-- 修复 因国际化导致的 placeholder 失效的Bug
+- 修复 因国际化导致的 placeholder 失效的 bug
 ## 2.1.1(2021-08-24)
 - 新增 支持国际化
 - 优化 范围选择器在 pc 端过宽的问题
@@ -73,50 +43,50 @@
 - 新增 适配 vue3
 ## 2.0.19(2021-08-09)
 - 新增 支持作为 uni-forms 子组件相关功能
-- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的Bug
+- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug
 ## 2.0.18(2021-08-05)
-- 修复 type 属性动态赋值无效的Bug
+- 修复 type 属性动态赋值无效的 bug
 - 修复 ‘确认’按钮被 tabbar 遮盖 bug
-- 修复 组件未赋值时范围选左、右日历相同的Bug
+- 修复 组件未赋值时范围选左、右日历相同的 bug
 ## 2.0.17(2021-08-04)
-- 修复 范围选未正确显示当前值的Bug
-- 修复 h5 平台(移动端)报错 'cale' of undefined 的Bug
+- 修复 范围选未正确显示当前值的 bug
+- 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug
 ## 2.0.16(2021-07-21)
 - 新增 return-type 属性支持返回 date 日期对象
 ## 2.0.15(2021-07-14)
-- 修复 单选日期类型,初始赋值后不在当前日历的Bug
+- 修复 单选日期类型,初始赋值后不在当前日历的 bug
 - 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效)
 - 优化 移动端移除显示框的清空按钮,无实际用途
 ## 2.0.14(2021-07-14)
-- 修复 组件赋值为空,界面未更新的Bug
-- 修复 start 和 end 不能动态赋值的Bug
-- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的Bug
+- 修复 组件赋值为空,界面未更新的 bug
+- 修复 start 和 end 不能动态赋值的 bug
+- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的 bug
 ## 2.0.13(2021-07-08)
-- 修复 范围选择不能动态赋值的Bug
+- 修复 范围选择不能动态赋值的 bug
 ## 2.0.12(2021-07-08)
 - 修复 范围选择的初始时间在一个月内时,造成无法选择的bug
 ## 2.0.11(2021-07-08)
 - 优化 弹出层在超出视窗边缘定位不准确的问题
 ## 2.0.10(2021-07-08)
-- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的Bug
+- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的 bug
 - 优化 弹出层在超出视窗边缘被遮盖的问题
 ## 2.0.9(2021-07-07)
 - 新增 maskClick 事件
-- 修复 特殊情况日历 rpx 布局错误的Bug,rpx -> px
+- 修复 特殊情况日历 rpx 布局错误的 bug,rpx -> px
 - 修复 范围选择时清空返回值不合理的bug,['', ''] -> []
 ## 2.0.8(2021-07-07)
 - 新增 日期时间显示框支持插槽
 ## 2.0.7(2021-07-01)
 - 优化 添加 uni-icons 依赖
 ## 2.0.6(2021-05-22)
-- 修复 图标在小程序上不显示的Bug
+- 修复 图标在小程序上不显示的 bug
 - 优化 重命名引用组件,避免潜在组件命名冲突
 ## 2.0.5(2021-05-20)
 - 优化 代码目录扁平化
 ## 2.0.4(2021-05-12)
 - 新增 组件示例地址
 ## 2.0.3(2021-05-10)
-- 修复 ios 下不识别 '-' 日期格式的Bug
+- 修复 ios 下不识别 '-' 日期格式的 bug
 - 优化 pc 下弹出层添加边框和阴影
 ## 2.0.2(2021-05-08)
 - 修复 在 admin 中获取弹出层定位错误的bug
@@ -127,7 +97,7 @@
  > 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)
 ## 1.0.6(2021-03-18)
 - 新增 hide-second 属性,时间支持仅选择时、分
-- 修复 选择跟显示的日期不一样的Bug
-- 修复 chang事件触发2次的Bug
-- 修复 分、秒 end 范围错误的Bug
+- 修复 选择跟显示的日期不一样的 bug
+- 修复 chang事件触发2次的 bug
+- 修复 分、秒 end 范围错误的 bug
 - 优化 更好的 nvue 适配

+ 13 - 3
uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue

@@ -13,10 +13,10 @@
 				'uni-calendar-item--after-checked':weeks.afterMultiple,
 				'uni-calendar-item--disable':weeks.disable,
 				}">
-			<text v-if="selected && weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"></text>
+			<text v-if="selected&&weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"></text>
 			<text class="uni-calendar-item__weeks-box-text uni-calendar-item__weeks-box-text-disable uni-calendar-item--checked-text">{{weeks.date}}</text>
 		</view>
-		<view :class="{'uni-calendar-item--today': weeks.isToday}"></view>
+		<view :class="{'uni-calendar-item--isDay': weeks.isDay}"></view>
 	</view>
 </template>
 
@@ -41,6 +41,10 @@
 					return []
 				}
 			},
+			lunar: {
+				type: Boolean,
+				default: false
+			},
 			checkHover: {
 				type: Boolean,
 				default: false
@@ -79,6 +83,11 @@
 		color: darken($color: $uni-primary, $amount: 40%);
 	}
 
+	.uni-calendar-item__weeks-lunar-text {
+		font-size: 12px;
+		color: #333;
+	}
+
 	.uni-calendar-item__weeks-box-item {
 		position: relative;
 		/* #ifndef APP-NVUE */
@@ -107,6 +116,7 @@
 	}
 
 	.uni-calendar-item__weeks-box .uni-calendar-item--disable {
+		// background-color: rgba(249, 249, 249, $uni-opacity-disabled);
 		cursor: default;
 	}
 
@@ -114,7 +124,7 @@
 		color: #D1D1D1;
 	}
 
-	.uni-calendar-item--today {
+	.uni-calendar-item--isDay {
 		position: absolute;
 		top: 10px;
 		right: 17%;

+ 125 - 129
uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue

@@ -1,37 +1,31 @@
 <template>
 	<view class="uni-calendar" @mouseleave="leaveCale">
-
-		<view v-if="!insert && show" class="uni-calendar__mask" :class="{'uni-calendar--mask-show':aniMaskShow}"
-			@click="maskClick"></view>
-
+		<view v-if="!insert&&show" class="uni-calendar__mask" :class="{'uni-calendar--mask-show':aniMaskShow}"
+			@click="clean();maskClick()"></view>
 		<view v-if="insert || show" class="uni-calendar__content"
 			:class="{'uni-calendar--fixed':!insert,'uni-calendar--ani-show':aniMaskShow, 'uni-calendar__content-mobile': aniMaskShow}">
 			<view class="uni-calendar__header" :class="{'uni-calendar__header-mobile' :!insert}">
-
-				<view class="uni-calendar__header-btn-box" @click.stop="changeMonth('pre')">
+				<view v-if="left" class="uni-calendar__header-btn-box" @click.stop="pre">
 					<view class="uni-calendar__header-btn uni-calendar--left"></view>
 				</view>
-
 				<picker mode="date" :value="date" fields="month" @change="bindDateChange">
 					<text
 						class="uni-calendar__header-text">{{ (nowDate.year||'') + yearText + ( nowDate.month||'') + monthText}}</text>
 				</picker>
-
-				<view class="uni-calendar__header-btn-box" @click.stop="changeMonth('next')">
+				<view v-if="right" class="uni-calendar__header-btn-box" @click.stop="next">
 					<view class="uni-calendar__header-btn uni-calendar--right"></view>
 				</view>
-
-				<view v-if="!insert" class="dialog-close" @click="close">
+				<view v-if="!insert" class="dialog-close" @click="clean">
 					<view class="dialog-close-plus" data-id="close"></view>
 					<view class="dialog-close-plus dialog-close-rotate" data-id="close"></view>
 				</view>
+
+				<!-- <text class="uni-calendar__backtoday" @click="backtoday">回到今天</text> -->
 			</view>
 			<view class="uni-calendar__box">
-
 				<view v-if="showMonth" class="uni-calendar__box-bg">
 					<text class="uni-calendar__box-bg-text">{{nowDate.month}}</text>
 				</view>
-
 				<view class="uni-calendar__weeks" style="padding-bottom: 7px;">
 					<view class="uni-calendar__weeks-day">
 						<text class="uni-calendar__weeks-day-text">{{SUNText}}</text>
@@ -55,30 +49,28 @@
 						<text class="uni-calendar__weeks-day-text">{{SATText}}</text>
 					</view>
 				</view>
-
 				<view class="uni-calendar__weeks" v-for="(item,weekIndex) in weeks" :key="weekIndex">
 					<view class="uni-calendar__weeks-item" v-for="(weeks,weeksIndex) in item" :key="weeksIndex">
 						<calendar-item class="uni-calendar-item--hook" :weeks="weeks" :calendar="calendar"
-							:selected="selected" :checkHover="range" @change="choiceDate"
+							:selected="selected" :lunar="lunar" :checkHover="range" @change="choiceDate"
 							@handleMouse="handleMouse">
 						</calendar-item>
 					</view>
 				</view>
 			</view>
-
-			<view v-if="!insert && !range && hasTime" class="uni-date-changed uni-calendar--fixed-top"
+			<view v-if="!insert && !range && typeHasTime" class="uni-date-changed uni-calendar--fixed-top"
 				style="padding: 0 80px;">
 				<view class="uni-date-changed--time-date">{{tempSingleDate ? tempSingleDate : selectDateText}}</view>
-				<time-picker type="time" :start="timepickerStartTime" :end="timepickerEndTime" v-model="time"
+				<time-picker type="time" :start="reactStartTime" :end="reactEndTime" v-model="time"
 					:disabled="!tempSingleDate" :border="false" :hide-second="hideSecond" class="time-picker-style">
 				</time-picker>
 			</view>
 
-			<view v-if="!insert && range && hasTime" class="uni-date-changed uni-calendar--fixed-top">
+			<view v-if="!insert && range && typeHasTime" class="uni-date-changed uni-calendar--fixed-top">
 				<view class="uni-date-changed--time-start">
 					<view class="uni-date-changed--time-date">{{tempRange.before ? tempRange.before : startDateText}}
 					</view>
-					<time-picker type="time" :start="timepickerStartTime" v-model="timeRange.startTime" :border="false"
+					<time-picker type="time" :start="reactStartTime" v-model="timeRange.startTime" :border="false"
 						:hide-second="hideSecond" :disabled="!tempRange.before" class="time-picker-style">
 					</time-picker>
 				</view>
@@ -87,13 +79,15 @@
 				</view>
 				<view class="uni-date-changed--time-end">
 					<view class="uni-date-changed--time-date">{{tempRange.after ? tempRange.after : endDateText}}</view>
-					<time-picker type="time" :end="timepickerEndTime" v-model="timeRange.endTime" :border="false"
+					<time-picker type="time" :end="reactEndTime" v-model="timeRange.endTime" :border="false"
 						:hide-second="hideSecond" :disabled="!tempRange.after" class="time-picker-style">
 					</time-picker>
 				</view>
 			</view>
-
 			<view v-if="!insert" class="uni-date-changed uni-date-btn--ok">
+				<!-- <view class="uni-calendar__header-btn-box">
+					<text class="uni-calendar__button-text uni-calendar--fixed-width">{{okText}}</text>
+				</view> -->
 				<view class="uni-datetime-picker--btn" @click="confirm">{{confirmText}}</view>
 			</view>
 		</view>
@@ -101,19 +95,22 @@
 </template>
 
 <script>
-	import { Calendar, getDate, getTime } from './util.js';
+	import Calendar from './util.js';
 	import calendarItem from './calendar-item.vue'
 	import timePicker from './time-picker.vue'
-
-	import { initVueI18n } from '@dcloudio/uni-i18n'
-	import i18nMessages from './i18n/index.js'
-	const { t } = initVueI18n(i18nMessages)
-
+	import {
+		initVueI18n
+	} from '@dcloudio/uni-i18n'
+	import messages from './i18n/index.js'
+	const {
+		t
+	} = initVueI18n(messages)
 	/**
 	 * Calendar 日历
 	 * @description 日历组件可以查看日期,选择任意范围内的日期,打点操作。常用场景如:酒店日期预订、火车机票选择购买日期、上下班打卡等
 	 * @tutorial https://ext.dcloud.net.cn/plugin?id=56
 	 * @property {String} date 自定义当前时间,默认为今天
+	 * @property {Boolean} lunar 显示农历
 	 * @property {String} startDate 日期选择范围-开始日期
 	 * @property {String} endDate 日期选择范围-结束日期
 	 * @property {Boolean} range 范围选择
@@ -123,11 +120,10 @@
 	 * @property {Boolean} clearDate = [true|false] 弹窗模式是否清空上次选择内容
 	 * @property {Array} selected 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}]
 	 * @property {Boolean} showMonth 是否选择月份为背景
-	 * @property {[String} defaultValue 选择器打开时默认显示的时间
 	 * @event {Function} change 日期改变,`insert :ture` 时生效
 	 * @event {Function} confirm 确认选择`insert :false` 时生效
 	 * @event {Function} monthSwitch 切换月份时触发
-	 * @example <uni-calendar :insert="true" :start-date="'2019-3-2'":end-date="'2019-5-20'"@change="change" />
+	 * @example <uni-calendar :insert="true":lunar="true" :start-date="'2019-3-2'":end-date="'2019-5-20'"@change="change" />
 	 */
 	export default {
 		components: {
@@ -155,6 +151,10 @@
 					return []
 				}
 			},
+			lunar: {
+				type: Boolean,
+				default: false
+			},
 			startDate: {
 				type: String,
 				default: ''
@@ -163,19 +163,11 @@
 				type: String,
 				default: ''
 			},
-      startPlaceholder: {
-        type: String,
-				default: ''
-			},
-			endPlaceholder: {
-				type: String,
-				default: ''
-			},
 			range: {
 				type: Boolean,
 				default: false
 			},
-			hasTime: {
+			typeHasTime: {
 				type: Boolean,
 				default: false
 			},
@@ -191,6 +183,14 @@
 				type: Boolean,
 				default: true
 			},
+			left: {
+				type: Boolean,
+				default: true
+			},
+			right: {
+				type: Boolean,
+				default: true
+			},
 			checkHover: {
 				type: Boolean,
 				default: true
@@ -209,18 +209,14 @@
 						fulldate: ''
 					}
 				}
-			},
-      defaultValue: {
-        type: [String, Object, Array],
-        default: ''
-      }
+			}
 		},
 		data() {
 			return {
 				show: false,
 				weeks: [],
 				calendar: {},
-				nowDate: {},
+				nowDate: '',
 				aniMaskShow: false,
 				firstEnter: true,
 				time: '',
@@ -238,7 +234,7 @@
 		watch: {
 			date: {
 				immediate: true,
-				handler(newVal) {
+				handler(newVal, oldVal) {
 					if (!this.range) {
 						this.tempSingleDate = newVal
 						setTimeout(() => {
@@ -249,44 +245,33 @@
 			},
 			defTime: {
 				immediate: true,
-				handler(newVal) {
+				handler(newVal, oldVal) {
 					if (!this.range) {
 						this.time = newVal
 					} else {
+						// console.log('-----', newVal);
 						this.timeRange.startTime = newVal.start
 						this.timeRange.endTime = newVal.end
 					}
 				}
 			},
 			startDate(val) {
-				// 字节小程序 watch 早于 created
-				if(!this.cale){
-					return
-				}
-				this.cale.setStartDate(val)
+				this.cale.resetSatrtDate(val)
 				this.cale.setDate(this.nowDate.fullDate)
 				this.weeks = this.cale.weeks
 			},
 			endDate(val) {
-				// 字节小程序 watch 早于 created
-				if(!this.cale){
-					return
-				}
-				this.cale.setEndDate(val)
+				this.cale.resetEndDate(val)
 				this.cale.setDate(this.nowDate.fullDate)
 				this.weeks = this.cale.weeks
 			},
 			selected(newVal) {
-				// 字节小程序 watch 早于 created
-				if(!this.cale){
-					return
-				}
 				this.cale.setSelectInfo(this.nowDate.fullDate, newVal)
 				this.weeks = this.cale.weeks
 			},
 			pleStatus: {
 				immediate: true,
-				handler(newVal) {
+				handler(newVal, oldVal) {
 					const {
 						before,
 						after,
@@ -309,16 +294,11 @@
 								this.cale.lastHover = false
 							}
 						} else {
-              // 字节小程序 watch 早于 created
-              if(!this.cale){
-                return
-              }
-
 							this.cale.setDefaultMultiple(before, after)
-							if (which === 'left' && before) {
+							if (which === 'left') {
 								this.setDate(before)
 								this.weeks = this.cale.weeks
-							} else if(after) {
+							} else {
 								this.setDate(after)
 								this.weeks = this.cale.weeks
 							}
@@ -329,13 +309,15 @@
 			}
 		},
 		computed: {
-			timepickerStartTime() {
+			reactStartTime() {
 				const activeDate = this.range ? this.tempRange.before : this.calendar.fullDate
-				return activeDate === this.startDate ? this.selectableTimes.start : ''
+				const res = activeDate === this.startDate ? this.selectableTimes.start : ''
+				return res
 			},
-			timepickerEndTime() {
+			reactEndTime() {
 				const activeDate = this.range ? this.tempRange.after : this.calendar.fullDate
-				return activeDate === this.endDate ? this.selectableTimes.end : ''
+				const res = activeDate === this.endDate ? this.selectableTimes.end : ''
+				return res
 			},
 			/**
 			 * for i18n
@@ -386,13 +368,17 @@
 		created() {
 			// 获取日历方法实例
 			this.cale = new Calendar({
+				// date: new Date(),
 				selected: this.selected,
 				startDate: this.startDate,
 				endDate: this.endDate,
 				range: this.range,
+				// multipleStatus: this.pleStatus
 			})
 			// 选中某一天
+			// this.cale.setDate(this.date)
 			this.init(this.date)
+			// this.setDay
 		},
 		methods: {
 			leaveCale() {
@@ -421,9 +407,14 @@
 				const [yearB, monthB] = B.split('-')
 				return yearA === yearB && monthA === monthB
 			},
+
+			// 取消穿透
+			clean() {
+				this.close()
+			},
+
 			// 蒙版点击事件
 			maskClick() {
-        this.close()
 				this.$emit('maskClose')
 			},
 
@@ -442,49 +433,33 @@
 					this.tempSingleDate = ''
 				}
 				this.calendar.fullDate = ''
-				this.setDate(new Date())
+				this.setDate()
 			},
 
 			bindDateChange(e) {
 				const value = e.detail.value + '-1'
-				this.setDate(value)
+				this.init(value)
 			},
 			/**
 			 * 初始化日期显示
 			 * @param {Object} date
 			 */
 			init(date) {
-        // 字节小程序 watch 早于 created
-				if(!this.cale){
-					return
-				}
-				this.cale.setDate(date || new Date())
+				this.cale.setDate(date)
 				this.weeks = this.cale.weeks
-				this.nowDate = this.cale.getInfo(date)
-        this.calendar = {...this.nowDate}
-        if(!date){
-          // 优化date为空默认不选中今天
-          this.calendar.fullDate = ''
-          if(this.defaultValue && !this.range){
-            // 暂时只支持移动端非范围选择
-            const defaultDate = new Date(this.defaultValue)
-            const fullDate = getDate(defaultDate)
-            const year = defaultDate.getFullYear()
-            const month = defaultDate.getMonth()+1
-            const date = defaultDate.getDate()
-            const day = defaultDate.getDay()
-            this.calendar = {
-              fullDate,
-              year,
-              month,
-              date,
-              day
-            },
-            this.tempSingleDate = fullDate
-            this.time = getTime(defaultDate, this.hideSecond)
-          }
-        }
-			},
+				this.nowDate = this.calendar = this.cale.getInfo(date)
+			},
+			// choiceDate(weeks) {
+			// 	if (weeks.disable) return
+			// 	this.calendar = weeks
+			// 	// 设置多选
+			// 	this.cale.setMultiple(this.calendar.fullDate, true)
+			// 	this.weeks = this.cale.weeks
+			// 	this.tempSingleDate = this.calendar.fullDate
+			// 	this.tempRange.before = this.cale.multipleStatus.before
+			// 	this.tempRange.after = this.cale.multipleStatus.after
+			// 	this.change()
+			// },
 			/**
 			 * 打开日历弹窗
 			 */
@@ -492,6 +467,7 @@
 				// 弹窗模式并且清理数据
 				if (this.clearDate && !this.insert) {
 					this.cale.cleanMultipleStatus()
+					// this.cale.setDate(this.date)
 					this.init(this.date)
 				}
 				this.show = true
@@ -545,20 +521,12 @@
 			 * @param {Object} name
 			 */
 			setEmit(name) {
-        if(!this.range){
-					if(!this.calendar.fullDate){
-					  this.calendar = this.cale.getInfo(new Date())
-					  this.tempSingleDate = this.calendar.fullDate
-					}
-					if(this.hasTime && !this.time) {
-					  this.time = getTime(new Date(), this.hideSecond)
-					}
-				}
 				let {
 					year,
 					month,
 					date,
 					fullDate,
+					lunar,
 					extraInfo
 				} = this.calendar
 				this.$emit(name, {
@@ -569,6 +537,7 @@
 					time: this.time,
 					timeRange: this.timeRange,
 					fulldate: fullDate,
+					lunar,
 					extraInfo: extraInfo || {}
 				})
 			},
@@ -584,6 +553,7 @@
 				this.cale.setMultiple(this.calendar.fullDate, true)
 				this.weeks = this.cale.weeks
 				this.tempSingleDate = this.calendar.fullDate
+				const beforeStatus = this.cale.multipleStatus.before
 				const beforeDate = new Date(this.cale.multipleStatus.before).getTime()
 				const afterDate = new Date(this.cale.multipleStatus.after).getTime()
 				if (beforeDate > afterDate && afterDate) {
@@ -595,17 +565,46 @@
 				}
 				this.change()
 			},
-      changeMonth(type) {
-        let newDate
-        if(type === 'pre') {
-          newDate = this.cale.getPreMonthObj(this.nowDate.fullDate).fullDate
-        } else if(type === 'next') {
-          newDate = this.cale.getNextMonthObj(this.nowDate.fullDate).fullDate
-        }
+			/**
+			 * 回到今天
+			 */
+			backtoday() {
+				let date = this.cale.getDate(new Date()).fullDate
+				// this.cale.setDate(date)
+				this.init(date)
+				this.change()
+			},
+			/**
+			 * 比较时间大小
+			 */
+			dateCompare(startDate, endDate) {
+				// 计算截止时间
+				startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
+				// 计算详细项的截止时间
+				endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
+				if (startDate <= endDate) {
+					return true
+				} else {
+					return false
+				}
+			},
+			/**
+			 * 上个月
+			 */
+			pre() {
+				const preDate = this.cale.getDate(this.nowDate.fullDate, -1, 'month').fullDate
+				this.setDate(preDate)
+				this.monthSwitch()
 
-        this.setDate(newDate)
+			},
+			/**
+			 * 下个月
+			 */
+			next() {
+				const nextDate = this.cale.getDate(this.nowDate.fullDate, +1, 'month').fullDate
+				this.setDate(nextDate)
 				this.monthSwitch()
-      },
+			},
 			/**
 			 * 设置日期
 			 * @param {Object} date
@@ -855,17 +854,14 @@
 
 	.uni-date-changed--time-end {
 		/* #ifndef APP-NVUE */
-    display: flex;
+		display: flex;
 		/* #endif */
 		align-items: center;
 	}
 
 	.uni-date-changed--time-date {
-    color: #999;
+		color: #999;
 		line-height: 50px;
-    /* #ifdef MP-TOUTIAO */
-    font-size: 16px;
-    /* #endif */
 		margin-right: 5px;
 		// opacity: 0.6;
 	}

+ 1 - 1
uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json

@@ -1,7 +1,7 @@
 {
 	"uni-datetime-picker.selectDate": "select date",
 	"uni-datetime-picker.selectTime": "select time",
-	"uni-datetime-picker.selectDateTime": "select date and time",
+	"uni-datetime-picker.selectDateTime": "select datetime",
 	"uni-datetime-picker.startDate": "start date",
 	"uni-datetime-picker.endDate": "end date",
 	"uni-datetime-picker.startTime": "start time",

+ 1 - 1
uni_modules/uni-popup/components/uni-popup-dialog/keypress.js → uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js

@@ -42,4 +42,4 @@ export default {
   },
 	render: () => {}
 }
-// #endif
+// #endif

+ 28 - 16
uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue

@@ -77,14 +77,21 @@
 				</view>
 			</view>
 		</view>
+		<!-- #ifdef H5 -->
+		<!-- <keypress v-if="visible" @esc="tiggerTimePicker" @enter="setTime" /> -->
+		<!-- #endif -->
 	</view>
 </template>
 
 <script>
-	import { initVueI18n } from '@dcloudio/uni-i18n'
-	import i18nMessages from './i18n/index.js'
-	const {	t	} = initVueI18n(i18nMessages)
-  import { fixIosDateFormat } from './util'
+	// #ifdef H5
+	import keypress from './keypress'
+	// #endif
+	import {
+		initVueI18n
+	} from '@dcloudio/uni-i18n'
+	import messages from './i18n/index.js'
+	const {	t	} = initVueI18n(messages)
 
 	/**
 	 * DatetimePicker 时间选择器
@@ -101,6 +108,11 @@
 
 	export default {
 		name: 'UniDatetimePicker',
+		components: {
+			// #ifdef H5
+			keypress
+			// #endif
+		},
 		data() {
 			return {
 				indicatorStyle: `height: 50px;`,
@@ -175,12 +187,12 @@
 		watch: {
 			// #ifndef VUE3
 			value: {
-				handler(newVal) {
-          if (newVal) {
-            this.parseValue(fixIosDateFormat(newVal))
+				handler(newVal, oldVal) {
+					if (newVal) {
+						this.parseValue(this.fixIosDateFormat(newVal)) //兼容 iOS、safari 日期格式
 						this.initTime(false)
 					} else {
-            this.time = ''
+						this.time = ''
 						this.parseValue(Date.now())
 					}
 				},
@@ -189,9 +201,9 @@
 			// #endif
 			// #ifdef VUE3
 			modelValue: {
-        handler(newVal) {
-          if (newVal) {
-						this.parseValue(fixIosDateFormat(newVal))
+				handler(newVal, oldVal) {
+					if (newVal) {
+						this.parseValue(this.fixIosDateFormat(newVal)) //兼容 iOS、safari 日期格式
 						this.initTime(false)
 					} else {
 						this.time = ''
@@ -221,13 +233,13 @@
 			},
 			start: {
 				handler(newVal) {
-					this.parseDatetimeRange(fixIosDateFormat(newVal), 'start')
+					this.parseDatetimeRange(this.fixIosDateFormat(newVal), 'start') //兼容 iOS、safari 日期格式
 				},
 				immediate: true
 			},
 			end: {
 				handler(newVal) {
-					this.parseDatetimeRange(fixIosDateFormat(newVal), 'end')
+					this.parseDatetimeRange(this.fixIosDateFormat(newVal), 'end') //兼容 iOS、safari 日期格式
 				},
 				immediate: true
 			},
@@ -531,7 +543,7 @@
 					const day = now.getDate()
 					dateBase = year + '/' + month + '/' + day + ' '
 				}
-				if (Number(value)) {
+				if (Number(value) && typeof value !== NaN) {
 					value = parseInt(value)
 					dateBase = 0
 				}
@@ -602,7 +614,7 @@
 						pointType === 'start' ? this.startYear = this.year - 60 : this.endYear = this.year + 60
 						return
 					}
-					if (Number(point)) {
+					if (Number(point) && Number(point) !== NaN) {
 						point = parseInt(point)
 					}
 					// datetime 的 end 没有时分秒, 则不限制
@@ -740,7 +752,7 @@
 			 */
 			initTimePicker() {
 				if (this.disabled) return
-				const value = fixIosDateFormat(this.time)
+				const value = this.fixIosDateFormat(this.value)
 				this.initPickerValue(value)
 				this.visible = !this.visible
 			},

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 303 - 333
uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue


+ 193 - 186
uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js

@@ -1,24 +1,27 @@
 class Calendar {
 	constructor({
+		date,
 		selected,
 		startDate,
 		endDate,
 		range,
+		// multipleStatus
 	} = {}) {
 		// 当前日期
-		this.date = this.getDateObj(new Date()) // 当前初入日期
+		this.date = this.getDate(new Date()) // 当前初入日期
 		// 打点信息
 		this.selected = selected || [];
-		// 起始时间
+		// 范围开始
 		this.startDate = startDate
-		// 终止时间
+		// 范围结束
 		this.endDate = endDate
-    // 是否范围选择
 		this.range = range
 		// 多选状态
 		this.cleanMultipleStatus()
 		// 每周日期
 		this.weeks = {}
+		// this._getWeek(this.date.fullDate)
+		// this.multipleStatus = multipleStatus
 		this.lastHover = false
 	}
 	/**
@@ -26,8 +29,8 @@ class Calendar {
 	 * @param {Object} date
 	 */
 	setDate(date) {
-		const selectDate = this.getDateObj(date)
-		this.getWeeks(selectDate.fullDate)
+		this.selectDate = this.getDate(date)
+		this._getWeek(this.selectDate.fullDate)
 	}
 
 	/**
@@ -41,82 +44,93 @@ class Calendar {
 		}
 	}
 
-	setStartDate(startDate) {
+	/**
+	 * 重置开始日期
+	 */
+	resetSatrtDate(startDate) {
+		// 范围开始
 		this.startDate = startDate
+
 	}
 
-	setEndDate(endDate) {
+	/**
+	 * 重置结束日期
+	 */
+	resetEndDate(endDate) {
+		// 范围结束
 		this.endDate = endDate
 	}
 
-  getPreMonthObj(date){
-    date = fixIosDateFormat(date)
-    date = new Date(date)
-
-    const oldMonth = date.getMonth()
-    date.setMonth(oldMonth - 1)
-    const newMonth = date.getMonth()
-    if(oldMonth !== 0 && newMonth - oldMonth === 0){
-      date.setMonth(newMonth - 1)
-    }
-    return this.getDateObj(date)
-  }
-  getNextMonthObj(date){
-    date = fixIosDateFormat(date)
-    date = new Date(date)
-
-    const oldMonth = date.getMonth()
-    date.setMonth(oldMonth + 1)
-    const newMonth = date.getMonth()
-    if(newMonth - oldMonth > 1){
-      date.setMonth(newMonth - 1)
-    }
-    return this.getDateObj(date)
-  }
-
 	/**
-	 * 获取指定格式Date对象
+	 * 获取任意时间
 	 */
-	getDateObj(date) {
-    date = fixIosDateFormat(date)
-    date = new Date(date)
-
+	getDate(date, AddDayCount = 0, str = 'day') {
+		if (!date) {
+			date = new Date()
+		}
+		if (typeof date !== 'object') {
+			date = date.replace(/-/g, '/')
+		}
+		const dd = new Date(date)
+		switch (str) {
+			case 'day':
+				dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
+				break
+			case 'month':
+				if (dd.getDate() === 31) {
+					dd.setDate(dd.getDate() + AddDayCount)
+				} else {
+					dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期
+				}
+				break
+			case 'year':
+				dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期
+				break
+		}
+		const y = dd.getFullYear()
+		const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
+		const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
 		return {
-			fullDate: getDate(date),
-      year: date.getFullYear(),
-      month: addZero(date.getMonth() + 1),
-      date: addZero(date.getDate()),
-      day: date.getDay()
+			fullDate: y + '-' + m + '-' + d,
+			year: y,
+			month: m,
+			date: d,
+			day: dd.getDay()
 		}
 	}
 
+
 	/**
-	 * 获取上一个月日期集合
+	 * 获取上月剩余天数
 	 */
-	getPreMonthDays(amount, dateObj) {
-		const result = []
-		for (let i = amount - 1; i >= 0; i--) {
-      const month = dateObj.month - 1
-			result.push({
-				date: new Date(dateObj.year, month, -i).getDate(),
-				month,
+	_getLastMonthDays(firstDay, full) {
+		let dateArr = []
+		for (let i = firstDay; i > 0; i--) {
+			const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate()
+			dateArr.push({
+				date: beforeDate,
+				month: full.month - 1,
 				disable: true
 			})
 		}
-		return result
+		return dateArr
 	}
 	/**
-	 * 获取本月日期集合
+	 * 获取本月天数
 	 */
-	getCurrentMonthDays(amount, dateObj) {
-		const result = []
-		const fullDate = this.date.fullDate
-		for (let i = 1; i <= amount; i++) {
-			const currentDate = `${dateObj.year}-${dateObj.month}-${addZero(i)}`
-			const isToday = fullDate === currentDate
+	_currentMonthDys(dateData, full) {
+		let dateArr = []
+		let fullDate = this.date.fullDate
+		for (let i = 1; i <= dateData; i++) {
+			let isinfo = false
+			let nowDate = full.year + '-' + (full.month < 10 ?
+				full.month : full.month) + '-' + (i < 10 ?
+				'0' + i : i)
+			// 是否今天
+			let isDay = fullDate === nowDate
 			// 获取打点信息
-			const info = this.selected && this.selected.find((item) => {
-				if (this.dateEqual(currentDate, item.date)) {
+			let info = this.selected && this.selected.find((item) => {
+				if (this.dateEqual(nowDate, item.date)) {
 					return item
 				}
 			})
@@ -125,52 +139,62 @@ class Calendar {
 			let disableBefore = true
 			let disableAfter = true
 			if (this.startDate) {
-				disableBefore = dateCompare(this.startDate, currentDate)
+				// let dateCompBefore = this.dateCompare(this.startDate, fullDate)
+				// disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate)
+				disableBefore = this.dateCompare(this.startDate, nowDate)
 			}
 
 			if (this.endDate) {
-				disableAfter = dateCompare(currentDate, this.endDate)
+				// let dateCompAfter = this.dateCompare(fullDate, this.endDate)
+				// disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate)
+				disableAfter = this.dateCompare(nowDate, this.endDate)
 			}
-
 			let multiples = this.multipleStatus.data
+			let checked = false
 			let multiplesStatus = -1
-			if (this.range && multiples) {
-        multiplesStatus = multiples.findIndex((item) => {
-          return this.dateEqual(item, currentDate)
-        })
+			if (this.range) {
+				if (multiples) {
+					multiplesStatus = multiples.findIndex((item) => {
+						return this.dateEqual(item, nowDate)
+					})
+				}
+				if (multiplesStatus !== -1) {
+					checked = true
+				}
 			}
-      const checked = multiplesStatus !== -1
-
-			result.push({
-				fullDate: currentDate,
-				year: dateObj.year,
+			let data = {
+				fullDate: nowDate,
+				year: full.year,
 				date: i,
 				multiple: this.range ? checked : false,
-				beforeMultiple: this.isLogicBefore(currentDate, this.multipleStatus.before, this.multipleStatus.after),
-				afterMultiple: this.isLogicAfter(currentDate, this.multipleStatus.before, this.multipleStatus.after),
-				month: dateObj.month,
-				disable: (this.startDate && !dateCompare(this.startDate, currentDate)) || (this.endDate && !dateCompare(currentDate,this.endDate)),
-				isToday,
-				userChecked: false,
-        extraInfo: info
-			})
+				beforeMultiple: this.isLogicBefore(nowDate, this.multipleStatus.before, this.multipleStatus.after),
+				afterMultiple: this.isLogicAfter(nowDate, this.multipleStatus.before, this.multipleStatus.after),
+				month: full.month,
+				disable: !(disableBefore && disableAfter),
+				isDay,
+				userChecked: false
+			}
+			if (info) {
+				data.extraInfo = info
+			}
+
+			dateArr.push(data)
 		}
-		return result
+		return dateArr
 	}
 	/**
-	 * 获取下一个月日期集合
+	 * 获取下月天数
 	 */
-	_getNextMonthDays(amount, dateObj) {
-		const result = []
-    const month = dateObj.month + 1
-		for (let i = 1; i <= amount; i++) {
-			result.push({
+	_getNextMonthDays(surplus, full) {
+		let dateArr = []
+		for (let i = 1; i < surplus + 1; i++) {
+			dateArr.push({
 				date: i,
-				month,
+				month: Number(full.month) + 1,
 				disable: true
 			})
 		}
-		return result
+		return dateArr
 	}
 
 	/**
@@ -181,37 +205,58 @@ class Calendar {
 		if (!date) {
 			date = new Date()
 		}
+		const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate)
+		return dateInfo
+	}
 
-		return this.calendar.find(item => item.fullDate === this.getDateObj(date).fullDate)
+	/**
+	 * 比较时间大小
+	 */
+	dateCompare(startDate, endDate) {
+		// 计算截止时间
+		startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
+		// 计算详细项的截止时间
+		endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
+		if (startDate <= endDate) {
+			return true
+		} else {
+			return false
+		}
 	}
 
 	/**
 	 * 比较时间是否相等
 	 */
 	dateEqual(before, after) {
-		before = new Date(fixIosDateFormat(before))
-		after = new Date(fixIosDateFormat(after))
-		return before.valueOf() === after.valueOf()
+		// 计算截止时间
+		before = new Date(before.replace('-', '/').replace('-', '/'))
+		// 计算详细项的截止时间
+		after = new Date(after.replace('-', '/').replace('-', '/'))
+		if (before.getTime() - after.getTime() === 0) {
+			return true
+		} else {
+			return false
+		}
 	}
 
 	/**
 	 *  比较真实起始日期
 	 */
 
-	isLogicBefore(currentDate, before, after) {
+	isLogicBefore(currentDay, before, after) {
 		let logicBefore = before
 		if (before && after) {
-			logicBefore = dateCompare(before, after) ? before : after
+			logicBefore = this.dateCompare(before, after) ? before : after
 		}
-		return this.dateEqual(logicBefore, currentDate)
+		return this.dateEqual(logicBefore, currentDay)
 	}
 
-	isLogicAfter(currentDate, before, after) {
+	isLogicAfter(currentDay, before, after) {
 		let logicAfter = after
 		if (before && after) {
-			logicAfter = dateCompare(before, after) ? after : before
+			logicAfter = this.dateCompare(before, after) ? after : before
 		}
-		return this.dateEqual(logicAfter, currentDate)
+		return this.dateEqual(logicAfter, currentDay)
 	}
 
 	/**
@@ -231,7 +276,7 @@ class Calendar {
 		var unixDe = de.getTime() - 24 * 60 * 60 * 1000
 		for (var k = unixDb; k <= unixDe;) {
 			k = k + 24 * 60 * 60 * 1000
-			arr.push(this.getDateObj(new Date(parseInt(k))).fullDate)
+			arr.push(this.getDate(new Date(parseInt(k))).fullDate)
 		}
 		return arr
 	}
@@ -240,12 +285,11 @@ class Calendar {
 	 *  获取多选状态
 	 */
 	setMultiple(fullDate) {
-    if (!this.range) return
-
 		let {
 			before,
 			after
 		} = this.multipleStatus
+		if (!this.range) return
 		if (before && after) {
 			if (!this.lastHover) {
 				this.lastHover = true
@@ -262,7 +306,7 @@ class Calendar {
 				this.lastHover = false
 			} else {
 				this.multipleStatus.after = fullDate
-				if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
+				if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
 					this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus
 						.after);
 				} else {
@@ -272,28 +316,32 @@ class Calendar {
 				this.lastHover = true
 			}
 		}
-		this.getWeeks(fullDate)
+		this._getWeek(fullDate)
 	}
 
 	/**
 	 *  鼠标 hover 更新多选状态
 	 */
 	setHoverMultiple(fullDate) {
-    if (!this.range || this.lastHover) return
+		let {
+			before,
+			after
+		} = this.multipleStatus
 
-		const { before } = this.multipleStatus
+		if (!this.range) return
+		if (this.lastHover) return
 
 		if (!before) {
 			this.multipleStatus.before = fullDate
 		} else {
 			this.multipleStatus.after = fullDate
-			if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
+			if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
 				this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
 			} else {
 				this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
 			}
 		}
-		this.getWeeks(fullDate)
+		this._getWeek(fullDate)
 	}
 
 	/**
@@ -303,12 +351,12 @@ class Calendar {
 		this.multipleStatus.before = before
 		this.multipleStatus.after = after
 		if (before && after) {
-			if (dateCompare(before, after)) {
+			if (this.dateCompare(before, after)) {
 				this.multipleStatus.data = this.geDateAll(before, after);
-				this.getWeeks(after)
+				this._getWeek(after)
 			} else {
 				this.multipleStatus.data = this.geDateAll(after, before);
-				this.getWeeks(before)
+				this._getWeek(before)
 			}
 		}
 	}
@@ -317,87 +365,46 @@ class Calendar {
 	 * 获取每周数据
 	 * @param {Object} dateData
 	 */
-	getWeeks(dateData) {
+	_getWeek(dateData) {
 		const {
+			fullDate,
 			year,
 			month,
-		} = this.getDateObj(dateData)
-
-		const preMonthDayAmount = new Date(year, month - 1, 1).getDay()
-    const preMonthDays = this.getPreMonthDays(preMonthDayAmount, this.getDateObj(dateData))
-
-		const currentMonthDayAmount = new Date(year, month, 0).getDate()
-    const currentMonthDays = this.getCurrentMonthDays(currentMonthDayAmount, this.getDateObj(dateData))
-
-    const nextMonthDayAmount = 42 - preMonthDayAmount - currentMonthDayAmount
-    const nextMonthDays = this._getNextMonthDays(nextMonthDayAmount, this.getDateObj(dateData))
-
-		const calendarDays = [...preMonthDays, ...currentMonthDays, ...nextMonthDays]
-
-		const weeks = new Array(6)
-		for (let i = 0; i < calendarDays.length; i++) {
-      const index = Math.floor(i / 7)
-      if(!weeks[index]){
-        weeks[index] = new Array(7)
-      }
-			weeks[index][i % 7] = calendarDays[i]
+			date,
+			day
+		} = this.getDate(dateData)
+		let firstDay = new Date(year, month - 1, 1).getDay()
+		let currentDay = new Date(year, month, 0).getDate()
+		let dates = {
+			lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
+			currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
+			nextMonthDays: [], // 下个月开始几天
+			weeks: []
 		}
-
-		this.calendar = calendarDays
+		let canlender = []
+		const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length)
+		dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData))
+		canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays)
+		let weeks = {}
+		// 拼接数组  上个月开始几天 + 本月天数+ 下个月开始几天
+		for (let i = 0; i < canlender.length; i++) {
+			if (i % 7 === 0) {
+				weeks[parseInt(i / 7)] = new Array(7)
+			}
+			weeks[parseInt(i / 7)][i % 7] = canlender[i]
+		}
+		this.canlender = canlender
 		this.weeks = weeks
 	}
-}
-
-function getDateTime(date, hideSecond){
-  return `${getDate(date)} ${getTime(date, hideSecond)}`
-}
-
-function getDate(date) {
-  date = fixIosDateFormat(date)
-  date = new Date(date)
-  const year = date.getFullYear()
-  const month = date.getMonth()+1
-  const day = date.getDate()
-  return `${year}-${addZero(month)}-${addZero(day)}`
-}
-
-function getTime(date, hideSecond){
-  date = fixIosDateFormat(date)
-  date = new Date(date)
-  const hour = date.getHours()
-  const minute = date.getMinutes()
-  const second = date.getSeconds()
-  return hideSecond ? `${addZero(hour)}:${addZero(minute)}` : `${addZero(hour)}:${addZero(minute)}:${addZero(second)}`
-}
 
-function addZero(num) {
-  if(num < 10){
-    num = `0${num}`
-  }
-  return num
+	//静态方法
+	// static init(date) {
+	// 	if (!this.instance) {
+	// 		this.instance = new Calendar(date);
+	// 	}
+	// 	return this.instance;
+	// }
 }
 
-function getDefaultSecond(hideSecond) {
-  return hideSecond ? '00:00' : '00:00:00'
-}
-
-function dateCompare(startDate, endDate) {
-  startDate = new Date(fixIosDateFormat(startDate))
-  endDate = new Date(fixIosDateFormat(endDate))
-  return startDate <= endDate
-}
-
-function checkDate(date){
-  const dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g
-  return date.match(dateReg)
-}
-
-const dateTimeReg = /^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])( [0-5][0-9]:[0-5][0-9]:[0-5][0-9])?$/
-function fixIosDateFormat(value) {
-  if (typeof value === 'string' && dateTimeReg.test(value)) {
-    value = value.replace(/-/g, '/')
-  }
-  return value
-}
 
-export {Calendar, getDateTime, getDate, getTime, addZero, getDefaultSecond, dateCompare, checkDate, fixIosDateFormat}
+export default Calendar

+ 1 - 1
uni_modules/uni-datetime-picker/package.json

@@ -1,7 +1,7 @@
 {
   "id": "uni-datetime-picker",
   "displayName": "uni-datetime-picker 日期选择器",
-  "version": "2.2.22",
+  "version": "2.2.11",
   "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择",
   "keywords": [
     "uni-datetime-picker",

+ 0 - 13
uni_modules/uni-drawer/changelog.md

@@ -1,13 +0,0 @@
-## 1.2.1(2021-11-22)
-- 修复 vue3中个别scss变量无法找到的问题
-## 1.2.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-drawer](https://uniapp.dcloud.io/component/uniui/uni-drawer)
-## 1.1.1(2021-07-30)
-- 优化 vue3下事件警告的问题
-## 1.1.0(2021-07-13)
-- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
-## 1.0.7(2021-05-12)
-- 新增 组件示例地址
-## 1.0.6(2021-02-04)
-- 调整为uni_modules目录规范

+ 0 - 45
uni_modules/uni-drawer/components/uni-drawer/keypress.js

@@ -1,45 +0,0 @@
-// #ifdef H5
-export default {
-  name: 'Keypress',
-  props: {
-    disable: {
-      type: Boolean,
-      default: false
-    }
-  },
-  mounted () {
-    const keyNames = {
-      esc: ['Esc', 'Escape'],
-      tab: 'Tab',
-      enter: 'Enter',
-      space: [' ', 'Spacebar'],
-      up: ['Up', 'ArrowUp'],
-      left: ['Left', 'ArrowLeft'],
-      right: ['Right', 'ArrowRight'],
-      down: ['Down', 'ArrowDown'],
-      delete: ['Backspace', 'Delete', 'Del']
-    }
-    const listener = ($event) => {
-      if (this.disable) {
-        return
-      }
-      const keyName = Object.keys(keyNames).find(key => {
-        const keyName = $event.key
-        const value = keyNames[key]
-        return value === keyName || (Array.isArray(value) && value.includes(keyName))
-      })
-      if (keyName) {
-        // 避免和其他按键事件冲突
-        setTimeout(() => {
-          this.$emit(keyName, {})
-        }, 0)
-      }
-    }
-    document.addEventListener('keyup', listener)
-    // this.$once('hook:beforeDestroy', () => {
-    //   document.removeEventListener('keyup', listener)
-    // })
-  },
-	render: () => {}
-}
-// #endif

+ 0 - 183
uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue

@@ -1,183 +0,0 @@
-<template>
-	<view v-if="visibleSync" :class="{ 'uni-drawer--visible': showDrawer }" class="uni-drawer" @touchmove.stop.prevent="clear">
-		<view class="uni-drawer__mask" :class="{ 'uni-drawer__mask--visible': showDrawer && mask }" @tap="close('mask')" />
-		<view class="uni-drawer__content" :class="{'uni-drawer--right': rightMode,'uni-drawer--left': !rightMode, 'uni-drawer__content--visible': showDrawer}" :style="{width:drawerWidth+'px'}">
-			<slot />
-		</view>
-		<!-- #ifdef H5 -->
-		<keypress @esc="close('mask')" />
-		<!-- #endif -->
-	</view>
-</template>
-
-<script>
-	// #ifdef H5
-	import keypress from './keypress.js'
-	// #endif
-	/**
-	 * Drawer 抽屉
-	 * @description 抽屉侧滑菜单
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=26
-	 * @property {Boolean} mask = [true | false] 是否显示遮罩
-	 * @property {Boolean} maskClick = [true | false] 点击遮罩是否关闭
-	 * @property {Boolean} mode = [left | right] Drawer 滑出位置
-	 * 	@value left 从左侧滑出
-	 * 	@value right 从右侧侧滑出
-	 * @property {Number} width 抽屉的宽度 ,仅 vue 页面生效
-	 * @event {Function} close 组件关闭时触发事件
-	 */
-	export default {
-		name: 'UniDrawer',
-		components: {
-			// #ifdef H5
-			keypress
-			// #endif
-		},
-		emits:['change'],
-		props: {
-			/**
-			 * 显示模式(左、右),只在初始化生效
-			 */
-			mode: {
-				type: String,
-				default: ''
-			},
-			/**
-			 * 蒙层显示状态
-			 */
-			mask: {
-				type: Boolean,
-				default: true
-			},
-			/**
-			 * 遮罩是否可点击关闭
-			 */
-			maskClick:{
-				type: Boolean,
-				default: true
-			},
-			/**
-			 * 抽屉宽度
-			 */
-			width: {
-				type: Number,
-				default: 220
-			}
-		},
-		data() {
-			return {
-				visibleSync: false,
-				showDrawer: false,
-				rightMode: false,
-				watchTimer: null,
-				drawerWidth: 220
-			}
-		},
-		created() {
-			// #ifndef APP-NVUE
-			this.drawerWidth = this.width
-			// #endif
-			this.rightMode = this.mode === 'right'
-		},
-		methods: {
-			clear(){},
-			close(type) {
-				// fixed by mehaotian 抽屉尚未完全关闭或遮罩禁止点击时不触发以下逻辑
-				if((type === 'mask' && !this.maskClick) || !this.visibleSync) return
-				this._change('showDrawer', 'visibleSync', false)
-			},
-			open() {
-				// fixed by mehaotian 处理重复点击打开的事件
-				if(this.visibleSync) return
-				this._change('visibleSync', 'showDrawer', true)
-			},
-			_change(param1, param2, status) {
-				this[param1] = status
-				if (this.watchTimer) {
-					clearTimeout(this.watchTimer)
-				}
-				this.watchTimer = setTimeout(() => {
-					this[param2] = status
-					this.$emit('change',status)
-				}, status ? 50 : 300)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	$uni-mask: rgba($color: #000000, $alpha: 0.4) ;
-	// 抽屉宽度
-	$drawer-width: 220px;
-
-	.uni-drawer {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		position: fixed;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-		overflow: hidden;
-		z-index: 999;
-	}
-
-	.uni-drawer__content {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		position: absolute;
-		top: 0;
-		width: $drawer-width;
-		bottom: 0;
-		background-color: $uni-bg-color;
-		transition: transform 0.3s ease;
-	}
-
-	.uni-drawer--left {
-		left: 0;
-		/* #ifdef APP-NVUE */
-		transform: translateX(-$drawer-width);
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		transform: translateX(-100%);
-		/* #endif */
-	}
-
-	.uni-drawer--right {
-		right: 0;
-		/* #ifdef APP-NVUE */
-		transform: translateX($drawer-width);
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		transform: translateX(100%);
-		/* #endif */
-	}
-
-	.uni-drawer__content--visible {
-		transform: translateX(0px);
-	}
-
-
-	.uni-drawer__mask {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		opacity: 0;
-		position: absolute;
-		top: 0;
-		left: 0;
-		bottom: 0;
-		right: 0;
-		background-color: $uni-mask;
-		transition: opacity 0.3s;
-	}
-
-	.uni-drawer__mask--visible {
-		/* #ifndef APP-NVUE */
-		display: block;
-		/* #endif */
-		opacity: 1;
-	}
-</style>

+ 0 - 87
uni_modules/uni-drawer/package.json

@@ -1,87 +0,0 @@
-{
-  "id": "uni-drawer",
-  "displayName": "uni-drawer 抽屉",
-  "version": "1.2.1",
-  "description": "抽屉式导航,用于展示侧滑菜单,侧滑导航。",
-  "keywords": [
-    "uni-ui",
-    "uniui",
-    "drawer",
-    "抽屉",
-    "侧滑导航"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-  "dcloudext": {
-    "category": [
-      "前端组件",
-      "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
-  },
-  "uni_modules": {
-    "dependencies": ["uni-scss"],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 10
uni_modules/uni-drawer/readme.md

@@ -1,10 +0,0 @@
-
-
-## Drawer 抽屉
-> **组件名:uni-drawer**
-> 代码块: `uDrawer`
-
-抽屉侧滑菜单。
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-drawer)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 1 - 12
uni_modules/uni-easyinput/changelog.md

@@ -1,21 +1,10 @@
-## 1.1.9(2023-04-11)
-- 修复 vue3 下 keyboardheightchange 事件报错的bug
-## 1.1.8(2023-03-29)
-- 优化 trim 属性默认值
-## 1.1.7(2023-03-29)
-- 新增 cursor-spacing 属性
-## 1.1.6(2023-01-28)
-- 新增 keyboardheightchange 事件,可监听键盘高度变化
-## 1.1.5(2022-11-29)
-- 优化 主题样式
-## 1.1.4(2022-10-27)
-- 修复 props 中背景颜色无默认值的bug
 ## 1.1.0(2022-06-30)
 
 - 新增 在 uni-forms 1.4.0 中使用可以在 blur 时校验内容
 - 新增 clear 事件,点击右侧叉号图标触发
 - 新增 change 事件 ,仅在输入框失去焦点或用户按下回车时触发
 - 优化 组件样式,组件获取焦点时高亮显示,图标颜色调整等
+-
 
 ## 1.0.5(2022-06-07)
 

+ 139 - 117
uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue

@@ -1,7 +1,24 @@
 <template>
-	<view class="uni-easyinput" :class="{ 'uni-easyinput-error': msg }" :style="boxStyle">
-		<view class="uni-easyinput__content" :class="inputContentClass" :style="inputContentStyle">
-			<uni-icons v-if="prefixIcon" class="content-clear-icon" :type="prefixIcon" color="#c0c4cc" @click="onClickIcon('prefix')" size="22"></uni-icons>
+	<view
+		class="uni-easyinput"
+		:class="{ 'uni-easyinput-error': msg }"
+		:style="boxStyle"
+	>
+		<view
+			class="uni-easyinput__content"
+			:class="inputContentClass"
+			:style="inputContentStyle"
+		>
+			<slot name="prefixIcon">
+				<uni-icons
+					v-if="prefixIcon"
+					class="content-clear-icon"
+					:type="prefixIcon"
+					color="#c0c4cc"
+					@click="onClickIcon('prefix')"
+					size="22"
+				></uni-icons>
+			</slot>
 			<textarea
 				v-if="type === 'textarea'"
 				class="uni-easyinput__content-textarea"
@@ -15,12 +32,10 @@
 				:maxlength="inputMaxlength"
 				:focus="focused"
 				:autoHeight="autoHeight"
-				:cursor-spacing="cursorSpacing"
 				@input="onInput"
 				@blur="_Blur"
 				@focus="_Focus"
 				@confirm="onConfirm"
-        @keyboardheightchange="onkeyboardheightchange"
 			></textarea>
 			<input
 				v-else
@@ -37,12 +52,10 @@
 				:maxlength="inputMaxlength"
 				:focus="focused"
 				:confirmType="confirmType"
-				:cursor-spacing="cursorSpacing"
 				@focus="_Focus"
 				@blur="_Blur"
 				@input="onInput"
 				@confirm="onConfirm"
-        @keyboardheightchange="onkeyboardheightchange"
 			/>
 			<template v-if="type === 'password' && passwordIcon">
 				<!-- 开启密码时显示小眼睛 -->
@@ -54,10 +67,20 @@
 					:size="22"
 					:color="focusShow ? primaryColor : '#c0c4cc'"
 					@click="onEyes"
-				></uni-icons>
+				>
+				</uni-icons>
 			</template>
-			<template v-else-if="suffixIcon">
-				<uni-icons v-if="suffixIcon" class="content-clear-icon" :type="suffixIcon" color="#c0c4cc" @click="onClickIcon('suffix')" size="22"></uni-icons>
+			<template v-else-if="suffixIcon || $slots.suffixIcon">
+				<slot name="suffixIcon">
+					<uni-icons
+						v-if="suffixIcon"
+						class="content-clear-icon"
+						:type="suffixIcon"
+						color="#c0c4cc"
+						@click="onClickIcon('suffix')"
+						size="22"
+					></uni-icons>
+				</slot>
 			</template>
 			<template v-else>
 				<uni-icons
@@ -101,7 +124,6 @@
  * @property {String}	suffixIcon	输入框尾部图标
  * @property {String}	primaryColor	设置主题色(默认#2979ff)
  * @property {Boolean}	trim	是否自动去除两端的空格
- * @property {Boolean}	cursorSpacing	指定光标与键盘的距离,单位 px
  * @value both	去除两端空格
  * @value left	去除左侧空格
  * @value right	去除右侧空格
@@ -117,10 +139,12 @@
  * @event {Function}	blur	输入框失去焦点时触发
  * @event {Function}	confirm	点击完成按钮时触发
  * @event {Function}	iconClick	点击图标时触发
+ * @slot prefixIcon 输入框头部插槽
+ * @slot suffixIcon 输入框尾部插槽
  * @example <uni-easyinput v-model="mobile"></uni-easyinput>
  */
 function obj2strClass(obj) {
-	let classess = '';
+	let classess = "";
 	for (let key in obj) {
 		const val = obj[key];
 		if (val) {
@@ -131,7 +155,7 @@ function obj2strClass(obj) {
 }
 
 function obj2strStyle(obj) {
-	let style = '';
+	let style = "";
 	for (let key in obj) {
 		const val = obj[key];
 		style += `${key}:${val};`;
@@ -139,24 +163,35 @@ function obj2strStyle(obj) {
 	return style;
 }
 export default {
-	name: 'uni-easyinput',
-	emits: ['click', 'iconClick', 'update:modelValue', 'input', 'focus', 'blur', 'confirm', 'clear', 'eyes', 'change', 'keyboardheightchange'],
+	name: "uni-easyinput",
+	emits: [
+		"click",
+		"iconClick",
+		"update:modelValue",
+		"input",
+		"focus",
+		"blur",
+		"confirm",
+		"clear",
+		"eyes",
+		"change",
+	],
 	model: {
-		prop: 'modelValue',
-		event: 'update:modelValue'
+		prop: "modelValue",
+		event: "update:modelValue",
 	},
 	options: {
-		virtualHost: true
+		virtualHost: true,
 	},
 	inject: {
 		form: {
-			from: 'uniForm',
-			default: null
+			from: "uniForm",
+			default: null,
 		},
 		formItem: {
-			from: 'uniFormItem',
-			default: null
-		}
+			from: "uniFormItem",
+			default: null,
+		},
 	},
 	props: {
 		name: String,
@@ -164,97 +199,91 @@ export default {
 		modelValue: [Number, String],
 		type: {
 			type: String,
-			default: 'text'
+			default: "text",
 		},
 		clearable: {
 			type: Boolean,
-			default: true
+			default: true,
 		},
 		autoHeight: {
 			type: Boolean,
-			default: false
+			default: false,
 		},
 		placeholder: {
 			type: String,
-			default: ' '
+			default: " ",
 		},
 		placeholderStyle: String,
 		focus: {
 			type: Boolean,
-			default: false
+			default: false,
 		},
 		disabled: {
 			type: Boolean,
-			default: false
+			default: false,
 		},
 		maxlength: {
 			type: [Number, String],
-			default: 140
+			default: 140,
 		},
 		confirmType: {
 			type: String,
-			default: 'done'
+			default: "done",
 		},
 		clearSize: {
 			type: [Number, String],
-			default: 24
+			default: 24,
 		},
 		inputBorder: {
 			type: Boolean,
-			default: true
+			default: true,
 		},
 		prefixIcon: {
 			type: String,
-			default: ''
+			default: "",
 		},
 		suffixIcon: {
 			type: String,
-			default: ''
+			default: "",
 		},
 		trim: {
 			type: [Boolean, String],
-			default: false
-		},
-		cursorSpacing: {
-			type: Number,
-			default: 0
+			default: true,
 		},
 		passwordIcon: {
 			type: Boolean,
-			default: true
+			default: true,
 		},
 		primaryColor: {
 			type: String,
-			default: '#2979ff'
+			default: "#2979ff",
 		},
 		styles: {
 			type: Object,
 			default() {
 				return {
-					color: '#333',
-					backgroundColor: '#fff',
-					disableColor: '#F7F6F6',
-					borderColor: '#e5e5e5'
+					color: "#333",
+					disableColor: "#F7F6F6",
+					borderColor: "#e5e5e5",
 				};
-			}
+			},
 		},
 		errorMessage: {
 			type: [String, Boolean],
-			default: ''
-		}
+			default: "",
+		},
 	},
 	data() {
 		return {
 			focused: false,
-			val: '',
-			showMsg: '',
+			val: "",
+			showMsg: "",
 			border: false,
 			isFirstBorder: false,
 			showClearIcon: false,
 			showPassword: false,
 			focusShow: false,
-			localMsg: '',
-			isEnter: false // 用于判断当前是否是使用回车操作
+			localMsg: "",
 		};
 	},
 	computed: {
@@ -283,34 +312,42 @@ export default {
 
 		// 处理外层样式的style
 		boxStyle() {
-			return `color:${this.inputBorder && this.msg ? '#e43d33' : this.styles.color};`;
+			return `color:${
+				this.inputBorder && this.msg ? "#e43d33" : this.styles.color
+			};`;
 		},
 		// input 内容的类和样式处理
 		inputContentClass() {
 			return obj2strClass({
-				'is-input-border': this.inputBorder,
-				'is-input-error-border': this.inputBorder && this.msg,
-				'is-textarea': this.type === 'textarea',
-				'is-disabled': this.disabled,
-				'is-focused': this.focusShow
+				"is-input-border": this.inputBorder,
+				"is-input-error-border": this.inputBorder && this.msg,
+				"is-textarea": this.type === "textarea",
+				"is-disabled": this.disabled,
 			});
 		},
 		inputContentStyle() {
-			const focusColor = this.focusShow ? this.primaryColor : this.styles.borderColor;
-			const borderColor = this.inputBorder && this.msg ? '#dd524d' : focusColor;
+			const focusColor = this.focusShow
+				? this.primaryColor
+				: this.styles.borderColor;
+			const borderColor = this.inputBorder && this.msg ? "#dd524d" : focusColor;
 			return obj2strStyle({
-				'border-color': borderColor || '#e5e5e5',
-				'background-color': this.disabled ? this.styles.disableColor : this.styles.backgroundColor
+				"border-color": borderColor || "#e5e5e5",
+				"background-color": this.disabled
+					? this.styles.disableColor
+					: this.styles.backgroundColor,
 			});
 		},
 		// input右侧样式
 		inputStyle() {
-			const paddingRight = this.type === 'password' || this.clearable || this.prefixIcon ? '' : '10px';
+			const paddingRight =
+				this.type === "password" || this.clearable || this.prefixIcon
+					? ""
+					: "10px";
 			return obj2strStyle({
-				'padding-right': paddingRight,
-				'padding-left': this.prefixIcon ? '' : '10px'
+				"padding-right": paddingRight,
+				"padding-left": this.prefixIcon ? "" : "10px",
 			});
-		}
+		},
 	},
 	watch: {
 		value(newVal) {
@@ -324,13 +361,13 @@ export default {
 				this.focused = this.focus;
 				this.focusShow = this.focus;
 			});
-		}
+		},
 	},
 	created() {
 		this.init();
 		// TODO 处理头条vue3 computed 不监听 inject 更改的问题(formItem.errMsg)
 		if (this.form && this.formItem) {
-			this.$watch('formItem.errMsg', newVal => {
+			this.$watch("formItem.errMsg", (newVal) => {
 				this.localMsg = newVal;
 			});
 		}
@@ -348,7 +385,7 @@ export default {
 		init() {
 			if (this.value || this.value === 0) {
 				this.val = this.value;
-			} else if (this.modelValue || this.modelValue === 0 || this.modelValue === '') {
+			} else if (this.modelValue || this.modelValue === 0) {
 				this.val = this.modelValue;
 			} else {
 				this.val = null;
@@ -360,7 +397,7 @@ export default {
 		 * @param {Object} type
 		 */
 		onClickIcon(type) {
-			this.$emit('iconClick', type);
+			this.$emit("iconClick", type);
 		},
 
 		/**
@@ -368,7 +405,7 @@ export default {
 		 */
 		onEyes() {
 			this.showPassword = !this.showPassword;
-			this.$emit('eyes', this.showPassword);
+			this.$emit("eyes", this.showPassword);
 		},
 
 		/**
@@ -379,19 +416,19 @@ export default {
 			let value = event.detail.value;
 			// 判断是否去除空格
 			if (this.trim) {
-				if (typeof this.trim === 'boolean' && this.trim) {
+				if (typeof this.trim === "boolean" && this.trim) {
 					value = this.trimStr(value);
 				}
-				if (typeof this.trim === 'string') {
+				if (typeof this.trim === "string") {
 					value = this.trimStr(value, this.trim);
 				}
 			}
-			if (this.errMsg) this.errMsg = '';
+			if (this.errMsg) this.errMsg = "";
 			this.val = value;
 			// TODO 兼容 vue2
-			this.$emit('input', value);
+			this.$emit("input", value);
 			// TODO 兼容 vue3
-			this.$emit('update:modelValue', value);
+			this.$emit("update:modelValue", value);
 		},
 
 		/**
@@ -403,12 +440,12 @@ export default {
 			this.$nextTick(() => {
 				this.focused = true;
 			});
-			this.$emit('focus', null);
+			this.$emit("focus", null);
 		},
 
 		_Focus(event) {
 			this.focusShow = true;
-			this.$emit('focus', event);
+			this.$emit("focus", event);
 		},
 
 		/**
@@ -418,20 +455,18 @@ export default {
 		 */
 		onBlur() {
 			this.focused = false;
-			this.$emit('focus', null);
+			this.$emit("focus", null);
 		},
 		_Blur(event) {
 			let value = event.detail.value;
 			this.focusShow = false;
-			this.$emit('blur', event);
+			this.$emit("blur", event);
 			// 根据类型返回值,在event中获取的值理论上讲都是string
-			if (this.isEnter === false) {
-				this.$emit('change', this.val);
-			}
+			this.$emit("change", this.val);
 			// 失去焦点时参与表单校验
 			if (this.form && this.formItem) {
 				const { validateTrigger } = this.form;
-				if (validateTrigger === 'blur') {
+				if (validateTrigger === "blur") {
 					this.formItem.onFieldChange();
 				}
 			}
@@ -442,12 +477,8 @@ export default {
 		 * @param {Object} e
 		 */
 		onConfirm(e) {
-			this.$emit('confirm', this.val);
-			this.isEnter = true;
-			this.$emit('change', this.val);
-			this.$nextTick(() => {
-				this.isEnter = false;
-			});
+			this.$emit("confirm", this.val);
+			this.$emit("change", this.val);
 		},
 
 		/**
@@ -455,47 +486,38 @@ export default {
 		 * @param {Object} event
 		 */
 		onClear(event) {
-			this.val = '';
+			this.val = "";
 			// TODO 兼容 vue2
-			this.$emit('input', '');
+			this.$emit("input", "");
 			// TODO 兼容 vue2
 			// TODO 兼容 vue3
-			this.$emit('update:modelValue', '');
+			this.$emit("update:modelValue", "");
 			// 点击叉号触发
-			this.$emit('clear');
+			this.$emit("clear");
 		},
 
-    /**
-     * 键盘高度发生变化的时候触发此事件
-     * 兼容性:微信小程序2.7.0+、App 3.1.0+
-     * @param {Object} event
-     */
-    onkeyboardheightchange(event) {
-      this.$emit("keyboardheightchange",event);
-    },
-
 		/**
 		 * 去除空格
 		 */
-		trimStr(str, pos = 'both') {
-			if (pos === 'both') {
+		trimStr(str, pos = "both") {
+			if (pos === "both") {
 				return str.trim();
-			} else if (pos === 'left') {
+			} else if (pos === "left") {
 				return str.trimLeft();
-			} else if (pos === 'right') {
+			} else if (pos === "right") {
 				return str.trimRight();
-			} else if (pos === 'start') {
+			} else if (pos === "start") {
 				return str.trimStart();
-			} else if (pos === 'end') {
+			} else if (pos === "end") {
 				return str.trimEnd();
-			} else if (pos === 'all') {
-				return str.replace(/\s+/g, '');
-			} else if (pos === 'none') {
+			} else if (pos === "all") {
+				return str.replace(/\s+/g, "");
+			} else if (pos === "none") {
 				return str;
 			}
 			return str;
-		}
-	}
+		},
+	},
 };
 </script>
 
@@ -544,7 +566,7 @@ $uni-border-1: #dcdfe6 !default;
 }
 
 .uni-easyinput__placeholder-class {
-	color: #999;
+	color: #aaa;
 	font-size: 12px;
 	// font-weight: 200;
 }
@@ -650,7 +672,7 @@ $uni-border-1: #dcdfe6 !default;
 	color: #d5d5d5;
 
 	.uni-easyinput__placeholder-class {
-		color: #d5d5d5;
+		color: #aaa;
 		font-size: 12px;
 	}
 }

+ 1 - 1
uni_modules/uni-easyinput/package.json

@@ -1,7 +1,7 @@
 {
   "id": "uni-easyinput",
   "displayName": "uni-easyinput 增强输入框",
-  "version": "1.1.9",
+  "version": "1.1.3",
   "description": "Easyinput 组件是对原生input组件的增强",
   "keywords": [
     "uni-ui",

+ 0 - 23
uni_modules/uni-fab/changelog.md

@@ -1,23 +0,0 @@
-## 1.2.5(2023-03-29)
-- 新增 pattern.icon 属性,可自定义图标
-## 1.2.4(2022-09-07)
-小程序端由于 style 使用了对象导致报错,[详情](https://ask.dcloud.net.cn/question/152790?item_id=211778&rf=false)
-## 1.2.3(2022-09-05)
-- 修复 nvue 环境下,具有 tabBar 时,fab 组件下部位置无法正常获取 --window-bottom 的bug,详见:[https://ask.dcloud.net.cn/question/110638?notification_id=826310](https://ask.dcloud.net.cn/question/110638?notification_id=826310)
-## 1.2.2(2021-12-29)
-- 更新 组件依赖
-## 1.2.1(2021-11-19)
-- 修复 阴影颜色不正确的bug
-## 1.2.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fab](https://uniapp.dcloud.io/component/uniui/uni-fab)
-## 1.1.1(2021-11-09) 
-- 新增 提供组件设计资源,组件样式调整
-## 1.1.0(2021-07-30)
-- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
-## 1.0.7(2021-05-12)
-- 新增 组件示例地址
-## 1.0.6(2021-02-05)
-- 调整为uni_modules目录规范
-- 优化 按钮背景色调整
-- 优化 兼容pc端

+ 0 - 491
uni_modules/uni-fab/components/uni-fab/uni-fab.vue

@@ -1,491 +0,0 @@
-<template>
-	<view class="uni-cursor-point">
-		<view v-if="popMenu && (leftBottom||rightBottom||leftTop||rightTop) && content.length > 0" :class="{
-        'uni-fab--leftBottom': leftBottom,
-        'uni-fab--rightBottom': rightBottom,
-        'uni-fab--leftTop': leftTop,
-        'uni-fab--rightTop': rightTop
-      }" class="uni-fab"
-				:style="nvueBottom"
-			>
-			<view :class="{
-          'uni-fab__content--left': horizontal === 'left',
-          'uni-fab__content--right': horizontal === 'right',
-          'uni-fab__content--flexDirection': direction === 'vertical',
-          'uni-fab__content--flexDirectionStart': flexDirectionStart,
-          'uni-fab__content--flexDirectionEnd': flexDirectionEnd,
-		  'uni-fab__content--other-platform': !isAndroidNvue
-        }" :style="{ width: boxWidth, height: boxHeight, backgroundColor: styles.backgroundColor }"
-				class="uni-fab__content" elevation="5">
-				<view v-if="flexDirectionStart || horizontalLeft" class="uni-fab__item uni-fab__item--first" />
-				<view v-for="(item, index) in content" :key="index" :class="{ 'uni-fab__item--active': isShow }"
-					class="uni-fab__item" @click="_onItemClick(index, item)">
-					<image :src="item.active ? item.selectedIconPath : item.iconPath" class="uni-fab__item-image"
-						mode="aspectFit" />
-					<text class="uni-fab__item-text"
-						:style="{ color: item.active ? styles.selectedColor : styles.color }">{{ item.text }}</text>
-				</view>
-				<view v-if="flexDirectionEnd || horizontalRight" class="uni-fab__item uni-fab__item--first" />
-			</view>
-		</view>
-		<view :class="{
-		  'uni-fab__circle--leftBottom': leftBottom,
-		  'uni-fab__circle--rightBottom': rightBottom,
-		  'uni-fab__circle--leftTop': leftTop,
-		  'uni-fab__circle--rightTop': rightTop,
-		  'uni-fab__content--other-platform': !isAndroidNvue
-		}" class="uni-fab__circle uni-fab__plus" :style="{ 'background-color': styles.buttonColor, 'bottom': nvueBottom }" @click="_onClick">
-			<uni-icons class="fab-circle-icon" :type="styles.icon" :color="styles.iconColor" size="32"
-				:class="{'uni-fab__plus--active': isShow && content.length > 0}"></uni-icons>
-			<!-- <view class="fab-circle-v"  :class="{'uni-fab__plus--active': isShow && content.length > 0}"></view>
-			<view class="fab-circle-h" :class="{'uni-fab__plus--active': isShow  && content.length > 0}"></view> -->
-		</view>
-	</view>
-</template>
-
-<script>
-	let platform = 'other'
-	// #ifdef APP-NVUE
-	platform = uni.getSystemInfoSync().platform
-	// #endif
-
-	/**
-	 * Fab 悬浮按钮
-	 * @description 点击可展开一个图形按钮菜单
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=144
-	 * @property {Object} pattern 可选样式配置项
-	 * @property {Object} horizontal = [left | right] 水平对齐方式
-	 * 	@value left 左对齐
-	 * 	@value right 右对齐
-	 * @property {Object} vertical = [bottom | top] 垂直对齐方式
-	 * 	@value bottom 下对齐
-	 * 	@value top 上对齐
-	 * @property {Object} direction = [horizontal | vertical] 展开菜单显示方式
-	 * 	@value horizontal 水平显示
-	 * 	@value vertical 垂直显示
-	 * @property {Array} content 展开菜单内容配置项
-	 * @property {Boolean} popMenu 是否使用弹出菜单
-	 * @event {Function} trigger 展开菜单点击事件,返回点击信息
-	 * @event {Function} fabClick 悬浮按钮点击事件
-	 */
-	export default {
-		name: 'UniFab',
-		emits: ['fabClick', 'trigger'],
-		props: {
-			pattern: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			horizontal: {
-				type: String,
-				default: 'left'
-			},
-			vertical: {
-				type: String,
-				default: 'bottom'
-			},
-			direction: {
-				type: String,
-				default: 'horizontal'
-			},
-			content: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			show: {
-				type: Boolean,
-				default: false
-			},
-			popMenu: {
-				type: Boolean,
-				default: true
-			}
-		},
-		data() {
-			return {
-				fabShow: false,
-				isShow: false,
-				isAndroidNvue: platform === 'android',
-				styles: {
-					color: '#3c3e49',
-					selectedColor: '#007AFF',
-					backgroundColor: '#fff',
-					buttonColor: '#007AFF',
-					iconColor: '#fff',
-					icon: 'plusempty'
-				}
-			}
-		},
-		computed: {
-			contentWidth(e) {
-				return (this.content.length + 1) * 55 + 15 + 'px'
-			},
-			contentWidthMin() {
-				return '55px'
-			},
-			// 动态计算宽度
-			boxWidth() {
-				return this.getPosition(3, 'horizontal')
-			},
-			// 动态计算高度
-			boxHeight() {
-				return this.getPosition(3, 'vertical')
-			},
-			// 计算左下位置
-			leftBottom() {
-				return this.getPosition(0, 'left', 'bottom')
-			},
-			// 计算右下位置
-			rightBottom() {
-				return this.getPosition(0, 'right', 'bottom')
-			},
-			// 计算左上位置
-			leftTop() {
-				return this.getPosition(0, 'left', 'top')
-			},
-			rightTop() {
-				return this.getPosition(0, 'right', 'top')
-			},
-			flexDirectionStart() {
-				return this.getPosition(1, 'vertical', 'top')
-			},
-			flexDirectionEnd() {
-				return this.getPosition(1, 'vertical', 'bottom')
-			},
-			horizontalLeft() {
-				return this.getPosition(2, 'horizontal', 'left')
-			},
-			horizontalRight() {
-				return this.getPosition(2, 'horizontal', 'right')
-			},
-			// 计算 nvue bottom
-			nvueBottom() {
-				const safeBottom = uni.getSystemInfoSync().windowBottom;
-				// #ifdef APP-NVUE
-				return 30 + safeBottom
-				// #endif
-				// #ifndef APP-NVUE
-				return 30
-				// #endif
-			}
-		},
-		watch: {
-			pattern: {
-				handler(val, oldVal) {
-					this.styles = Object.assign({}, this.styles, val)
-				},
-				deep: true
-			}
-		},
-		created() {
-			this.isShow = this.show
-			if (this.top === 0) {
-				this.fabShow = true
-			}
-			// 初始化样式
-			this.styles = Object.assign({}, this.styles, this.pattern)
-		},
-		methods: {
-			_onClick() {
-				this.$emit('fabClick')
-				if (!this.popMenu) {
-					return
-				}
-				this.isShow = !this.isShow
-			},
-			open() {
-				this.isShow = true
-			},
-			close() {
-				this.isShow = false
-			},
-			/**
-			 * 按钮点击事件
-			 */
-			_onItemClick(index, item) {
-				if (!this.isShow) {
-					return
-				}
-				this.$emit('trigger', {
-					index,
-					item
-				})
-			},
-			/**
-			 * 获取 位置信息
-			 */
-			getPosition(types, paramA, paramB) {
-				if (types === 0) {
-					return this.horizontal === paramA && this.vertical === paramB
-				} else if (types === 1) {
-					return this.direction === paramA && this.vertical === paramB
-				} else if (types === 2) {
-					return this.direction === paramA && this.horizontal === paramB
-				} else {
-					return this.isShow && this.direction === paramA ? this.contentWidth : this.contentWidthMin
-				}
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	$uni-shadow-base:0 1px 5px 2px rgba($color: #000000, $alpha: 0.3) !default;
-
-	.uni-fab {
-		position: fixed;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center;
-		z-index: 10;
-		border-radius: 45px;
-		box-shadow: $uni-shadow-base;
-	}
-
-	.uni-cursor-point {
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-fab--active {
-		opacity: 1;
-	}
-
-	.uni-fab--leftBottom {
-		left: 15px;
-		bottom: 30px;
-		/* #ifdef H5 */
-		left: calc(15px + var(--window-left));
-		bottom: calc(30px + var(--window-bottom));
-		/* #endif */
-		// padding: 10px;
-	}
-
-	.uni-fab--leftTop {
-		left: 15px;
-		top: 30px;
-		/* #ifdef H5 */
-		left: calc(15px + var(--window-left));
-		top: calc(30px + var(--window-top));
-		/* #endif */
-		// padding: 10px;
-	}
-
-	.uni-fab--rightBottom {
-		right: 15px;
-		bottom: 30px;
-		/* #ifdef H5 */
-		right: calc(15px + var(--window-right));
-		bottom: calc(30px + var(--window-bottom));
-		/* #endif */
-		// padding: 10px;
-	}
-
-	.uni-fab--rightTop {
-		right: 15px;
-		top: 30px;
-		/* #ifdef H5 */
-		right: calc(15px + var(--window-right));
-		top: calc(30px + var(--window-top));
-		/* #endif */
-		// padding: 10px;
-	}
-
-	.uni-fab__circle {
-		position: fixed;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center;
-		width: 55px;
-		height: 55px;
-		background-color: #3c3e49;
-		border-radius: 45px;
-		z-index: 11;
-		// box-shadow: $uni-shadow-base;
-	}
-
-	.uni-fab__circle--leftBottom {
-		left: 15px;
-		bottom: 30px;
-		/* #ifdef H5 */
-		left: calc(15px + var(--window-left));
-		bottom: calc(30px + var(--window-bottom));
-		/* #endif */
-	}
-
-	.uni-fab__circle--leftTop {
-		left: 15px;
-		top: 30px;
-		/* #ifdef H5 */
-		left: calc(15px + var(--window-left));
-		top: calc(30px + var(--window-top));
-		/* #endif */
-	}
-
-	.uni-fab__circle--rightBottom {
-		right: 15px;
-		bottom: 30px;
-		/* #ifdef H5 */
-		right: calc(15px + var(--window-right));
-		bottom: calc(30px + var(--window-bottom));
-		/* #endif */
-	}
-
-	.uni-fab__circle--rightTop {
-		right: 15px;
-		top: 30px;
-		/* #ifdef H5 */
-		right: calc(15px + var(--window-right));
-		top: calc(30px + var(--window-top));
-		/* #endif */
-	}
-
-	.uni-fab__circle--left {
-		left: 0;
-	}
-
-	.uni-fab__circle--right {
-		right: 0;
-	}
-
-	.uni-fab__circle--top {
-		top: 0;
-	}
-
-	.uni-fab__circle--bottom {
-		bottom: 0;
-	}
-
-	.uni-fab__plus {
-		font-weight: bold;
-	}
-
-	// .fab-circle-v {
-	// 	position: absolute;
-	// 	width: 2px;
-	// 	height: 24px;
-	// 	left: 0;
-	// 	top: 0;
-	// 	right: 0;
-	// 	bottom: 0;
-	// 	/* #ifndef APP-NVUE */
-	// 	margin: auto;
-	// 	/* #endif */
-	// 	background-color: white;
-	// 	transform: rotate(0deg);
-	// 	transition: transform 0.3s;
-	// }
-
-	// .fab-circle-h {
-	// 	position: absolute;
-	// 	width: 24px;
-	// 	height: 2px;
-	// 	left: 0;
-	// 	top: 0;
-	// 	right: 0;
-	// 	bottom: 0;
-	// 	/* #ifndef APP-NVUE */
-	// 	margin: auto;
-	// 	/* #endif */
-	// 	background-color: white;
-	// 	transform: rotate(0deg);
-	// 	transition: transform 0.3s;
-	// }
-
-	.fab-circle-icon {
-		transform: rotate(0deg);
-		transition: transform 0.3s;
-		font-weight: 200;
-	}
-
-	.uni-fab__plus--active {
-		transform: rotate(135deg);
-	}
-
-	.uni-fab__content {
-		/* #ifndef APP-NVUE */
-		box-sizing: border-box;
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		border-radius: 55px;
-		overflow: hidden;
-		transition-property: width, height;
-		transition-duration: 0.2s;
-		width: 55px;
-		border-color: #DDDDDD;
-		border-width: 1rpx;
-		border-style: solid;
-	}
-
-	.uni-fab__content--other-platform {
-		border-width: 0px;
-		box-shadow: $uni-shadow-base;
-	}
-
-	.uni-fab__content--left {
-		justify-content: flex-start;
-	}
-
-	.uni-fab__content--right {
-		justify-content: flex-end;
-	}
-
-	.uni-fab__content--flexDirection {
-		flex-direction: column;
-		justify-content: flex-end;
-	}
-
-	.uni-fab__content--flexDirectionStart {
-		flex-direction: column;
-		justify-content: flex-start;
-	}
-
-	.uni-fab__content--flexDirectionEnd {
-		flex-direction: column;
-		justify-content: flex-end;
-	}
-
-	.uni-fab__item {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		width: 55px;
-		height: 55px;
-		opacity: 0;
-		transition: opacity 0.2s;
-	}
-
-	.uni-fab__item--active {
-		opacity: 1;
-	}
-
-	.uni-fab__item-image {
-		width: 20px;
-		height: 20px;
-		margin-bottom: 4px;
-	}
-
-	.uni-fab__item-text {
-		color: #FFFFFF;
-		font-size: 12px;
-		line-height: 12px;
-		margin-top: 2px;
-	}
-
-	.uni-fab__item--first {
-		width: 55px;
-	}
-</style>

+ 0 - 84
uni_modules/uni-fab/package.json

@@ -1,84 +0,0 @@
-{
-  "id": "uni-fab",
-  "displayName": "uni-fab 悬浮按钮",
-  "version": "1.2.5",
-  "description": "悬浮按钮 fab button ,点击可展开一个图标按钮菜单。",
-  "keywords": [
-    "uni-ui",
-    "uniui",
-    "按钮",
-    "悬浮按钮",
-    "fab"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-"dcloudext": {
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
-    "type": "component-vue"
-  },
-  "uni_modules": {
-    "dependencies": ["uni-scss","uni-icons"],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 9
uni_modules/uni-fab/readme.md

@@ -1,9 +0,0 @@
-## Fab 悬浮按钮
-> **组件名:uni-fab**
-> 代码块: `uFab`
-
-
-点击可展开一个图形按钮菜单
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fab)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 0 - 19
uni_modules/uni-fav/changelog.md

@@ -1,19 +0,0 @@
-## 1.2.1(2022-05-30)
-- 新增 stat 属性 ,是否开启uni统计功能
-## 1.2.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fav](https://uniapp.dcloud.io/component/uniui/uni-fav)
-## 1.1.1(2021-08-24)
-- 新增 支持国际化
-## 1.1.0(2021-07-13)
-- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
-## 1.0.6(2021-05-12)
-- 新增 组件示例地址
-## 1.0.5(2021-04-21)
-- 优化 添加依赖 uni-icons, 导入后自动下载依赖
-## 1.0.4(2021-02-05)
-- 优化 组件引用关系,通过uni_modules引用组件
-## 1.0.3(2021-02-05)
-- 优化 组件引用关系,通过uni_modules引用组件
-## 1.0.2(2021-02-05)
-- 调整为uni_modules目录规范

+ 0 - 4
uni_modules/uni-fav/components/uni-fav/i18n/en.json

@@ -1,4 +0,0 @@
-{
-	"uni-fav.collect": "collect",
-	"uni-fav.collected": "collected"
-}

+ 0 - 8
uni_modules/uni-fav/components/uni-fav/i18n/index.js

@@ -1,8 +0,0 @@
-import en from './en.json'
-import zhHans from './zh-Hans.json'
-import zhHant from './zh-Hant.json'
-export default {
-	en,
-	'zh-Hans': zhHans,
-	'zh-Hant': zhHant
-}

+ 0 - 4
uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json

@@ -1,4 +0,0 @@
-{
-	"uni-fav.collect": "收藏",
-	"uni-fav.collected": "已收藏"
-}

+ 0 - 4
uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json

@@ -1,4 +0,0 @@
-{
-	"uni-fav.collect": "收藏",
-	"uni-fav.collected": "已收藏"
-}

+ 0 - 161
uni_modules/uni-fav/components/uni-fav/uni-fav.vue

@@ -1,161 +0,0 @@
-<template>
-	<view :class="[circle === true || circle === 'true' ? 'uni-fav--circle' : '']" :style="[{ backgroundColor: checked ? bgColorChecked : bgColor }]"
-	 @click="onClick" class="uni-fav">
-		<!-- #ifdef MP-ALIPAY -->
-		<view class="uni-fav-star" v-if="!checked && (star === true || star === 'true')">
-			<uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" size="14" type="star-filled" />
-		</view>
-		<!-- #endif -->
-		<!-- #ifndef MP-ALIPAY -->
-		<uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-star" size="14" type="star-filled"
-		 v-if="!checked && (star === true || star === 'true')" />
-		<!-- #endif -->
-		<text :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-text">{{ checked ? contentFav : contentDefault }}</text>
-	</view>
-</template>
-
-<script>
-
-	/**
-	 * Fav 收藏按钮
-	 * @description 用于收藏功能,可点击切换选中、不选中的状态
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=864
-	 * @property {Boolean} star = [true|false] 按钮是否带星星
-	 * @property {String} bgColor 未收藏时的背景色
-	 * @property {String} bgColorChecked 已收藏时的背景色
-	 * @property {String} fgColor 未收藏时的文字颜色
-	 * @property {String} fgColorChecked 已收藏时的文字颜色
-	 * @property {Boolean} circle = [true|false] 是否为圆角
-	 * @property {Boolean} checked = [true|false] 是否为已收藏
-	 * @property {Object} contentText = [true|false] 收藏按钮文字
-	 * @property {Boolean} stat 是否开启统计功能
-	 * @event {Function} click 点击 fav按钮触发事件
-	 * @example <uni-fav :checked="true"/>
-	 */
-
-	import {
-		initVueI18n
-	} from '@dcloudio/uni-i18n'
-	import messages from './i18n/index.js'
-	const {	t	} = initVueI18n(messages)
-
-	export default {
-		name: "UniFav",
-		// TODO 兼容 vue3,需要注册事件
-		emits: ['click'],
-		props: {
-			star: {
-				type: [Boolean, String],
-				default: true
-			},
-			bgColor: {
-				type: String,
-				default: "#eeeeee"
-			},
-			fgColor: {
-				type: String,
-				default: "#666666"
-			},
-			bgColorChecked: {
-				type: String,
-				default: "#007aff"
-			},
-			fgColorChecked: {
-				type: String,
-				default: "#FFFFFF"
-			},
-			circle: {
-				type: [Boolean, String],
-				default: false
-			},
-			checked: {
-				type: Boolean,
-				default: false
-			},
-			contentText: {
-				type: Object,
-				default () {
-					return {
-						contentDefault: "",
-						contentFav: ""
-					};
-				}
-			},
-			stat:{
-				type: Boolean,
-				default: false
-			}
-		},
-		computed: {
-			contentDefault() {
-				return this.contentText.contentDefault || t("uni-fav.collect")
-			},
-			contentFav() {
-				return this.contentText.contentFav || t("uni-fav.collected")
-			},
-		},
-		watch: {
-			checked() {
-				if (uni.report && this.stat) {
-					if (this.checked) {
-						uni.report("收藏", "收藏");
-					} else {
-						uni.report("取消收藏", "取消收藏");
-					}
-				}
-			}
-		},
-		methods: {
-			onClick() {
-				this.$emit("click");
-			}
-		}
-	};
-</script>
-
-<style lang="scss" >
-	$fav-height: 25px;
-
-	.uni-fav {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		justify-content: center;
-		width: 60px;
-		height: $fav-height;
-		line-height: $fav-height;
-		text-align: center;
-		border-radius: 3px;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-fav--circle {
-		border-radius: 30px;
-	}
-
-	.uni-fav-star {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		height: $fav-height;
-		line-height: 24px;
-		margin-right: 3px;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.uni-fav-text {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		height: $fav-height;
-		line-height: $fav-height;
-		align-items: center;
-		justify-content: center;
-		font-size: 12px;
-	}
-</style>

+ 0 - 89
uni_modules/uni-fav/package.json

@@ -1,89 +0,0 @@
-{
-  "id": "uni-fav",
-  "displayName": "uni-fav 收藏按钮",
-  "version": "1.2.1",
-  "description": " Fav 收藏组件,可自定义颜色、大小。",
-  "keywords": [
-    "fav",
-    "uni-ui",
-    "uniui",
-    "收藏"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-  "dcloudext": {
-    "category": [
-      "前端组件",
-      "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
-  },
-  "uni_modules": {
-    "dependencies": [
-			"uni-scss",
-			"uni-icons"
-		],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 10
uni_modules/uni-fav/readme.md

@@ -1,10 +0,0 @@
-
-
-## Fav 收藏按钮
-> **组件名:uni-fav**
-> 代码块: `uFav`
-
-用于收藏功能,可点击切换选中、不选中的状态。
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fav)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 0 - 4
uni_modules/uni-file-picker/changelog.md

@@ -1,7 +1,3 @@
-## 1.0.4(2023-03-29)
-- 修复 手动上传删除一个文件后不能再上传的bug
-## 1.0.3(2022-12-19)
-- 新增 sourceType 属性, 可以自定义图片和视频选择的来源
 ## 1.0.2(2022-07-04)
 - 修复 在uni-forms下样式不生效的bug
 ## 1.0.1(2021-11-23)

+ 2 - 2
uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js

@@ -7,7 +7,7 @@ function chooseImage(opts) {
 	const {
 		count,
 		sizeType = ['original', 'compressed'],
-		sourceType,
+		sourceType = ['album', 'camera'],
 		extension
 	} = opts
 	return new Promise((resolve, reject) => {
@@ -33,7 +33,7 @@ function chooseVideo(opts) {
 		camera,
 		compressed,
 		maxDuration,
-		sourceType,
+		sourceType = ['album', 'camera'],
 		extension
 	} = opts;
 	return new Promise((resolve, reject) => {

+ 1 - 12
uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue

@@ -185,12 +185,6 @@
 				default () {
 					return ['original', 'compressed']
 				}
-			},
-			sourceType: {
-				type: Array,
-				default () {
-					return  ['album', 'camera']
-				}
 			}
 		},
 		data() {
@@ -355,7 +349,6 @@
 						type: this.fileMediatype,
 						compressed: false,
 						sizeType: this.sizeType,
-						sourceType: this.sourceType,
 						// TODO 如果为空,video 有问题
 						extension: _extname.length > 0 ? _extname : undefined,
 						count: this.limitLength - this.files.length, //默认9
@@ -583,11 +576,7 @@
 						path: v.path,
 						size: v.size,
 						fileID:v.fileID,
-						url: v.url,
-						// 修改删除一个文件后不能再上传的bug, #694
-            uuid: v.uuid,
-            status: v.status,
-            cloudPath: v.cloudPath
+						url: v.url
 					})
 				})
 				return newFilesData

+ 7 - 4
uni_modules/uni-file-picker/package.json

@@ -1,7 +1,7 @@
 {
   "id": "uni-file-picker",
   "displayName": "uni-file-picker 文件选择上传",
-  "version": "1.0.4",
+  "version": "1.0.2",
   "description": "文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间",
   "keywords": [
     "uni-ui",
@@ -16,7 +16,11 @@
   "directories": {
     "example": "../../temps/example_temps"
   },
-"dcloudext": {
+  "dcloudext": {
+    "category": [
+      "前端组件",
+      "通用组件"
+    ],
     "sale": {
       "regular": {
         "price": "0.00"
@@ -33,8 +37,7 @@
       "data": "无",
       "permissions": "无"
     },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
-    "type": "component-vue"
+    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
   },
   "uni_modules": {
     "dependencies": ["uni-scss"],

+ 0 - 2
uni_modules/uni-forms/changelog.md

@@ -1,5 +1,3 @@
-## 1.4.9(2023-02-10)
-- 修复 required 参数无法动态绑定
 ## 1.4.8(2022-08-23)
 - 优化 根据 rules 自动添加 required 的问题
 ## 1.4.7(2022-08-22)

+ 10 - 3
uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue

@@ -2,9 +2,9 @@
 	<view class="uni-forms-item"
 		:class="['is-direction-' + localLabelPos ,border?'uni-forms-item--border':'' ,border && isFirstBorder?'is-first-border':'']">
 		<slot name="label">
-			<view class="uni-forms-item__label" :class="{'no-label':!label && !required}"
+			<view class="uni-forms-item__label" :class="{'no-label':!label && !isRequired}"
 				:style="{width:localLabelWidth,justifyContent: localLabelAlign}">
-				<text v-if="required" class="is-required">*</text>
+				<text v-if="isRequired" class="is-required">*</text>
 				<text>{{label}}</text>
 			</view>
 		</slot>
@@ -126,6 +126,7 @@
 		data() {
 			return {
 				errMsg: '',
+				isRequired: false,
 				userRules: null,
 				localLabelAlign: 'left',
 				localLabelWidth: '65px',
@@ -314,6 +315,7 @@
 				this.localLabelWidth = this._labelWidthUnit(labelWidth)
 				// 标签位置
 				this.localLabelPos = this._labelPosition()
+				this.isRequired = this.required
 				// 将需要校验的子组件加入form 队列
 				this.form && type && childrens.push(this)
 
@@ -349,6 +351,8 @@
 				this.validator = validator
 				// 默认值赋予
 				this.itemSetValue(_getDataValue(this.name, localData))
+				this.isRequired = this._isRequired()
+
 			},
 			unInit() {
 				if (this.form) {
@@ -478,6 +482,7 @@
 			color: #606266;
 			height: 36px;
 			padding: 0 12px 0 0;
+			position: relative;
 			/* #ifndef APP-NVUE */
 			vertical-align: middle;
 			flex-shrink: 0;
@@ -572,8 +577,10 @@
 
 		.is-required {
 			// color: $uni-color-error;
-			color: #dd524d;
+			// color: #dd524d;
 			font-weight: bold;
+			position: absolute;right: 6rpx;color: #F10C31;
+			// margin-top: 16rpx;
 		}
 	}
 

+ 1 - 1
uni_modules/uni-forms/package.json

@@ -1,7 +1,7 @@
 {
   "id": "uni-forms",
   "displayName": "uni-forms 表单",
-  "version": "1.4.9",
+  "version": "1.4.8",
   "description": "由输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据",
   "keywords": [
     "uni-ui",

+ 0 - 18
uni_modules/uni-goods-nav/changelog.md

@@ -1,18 +0,0 @@
-## 1.2.1(2022-05-30)
-- 新增 stat属性,是否开启uni统计功能
-## 1.2.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-goods-nav](https://uniapp.dcloud.io/component/uniui/uni-goods-nav)
-## 1.1.1(2021-08-24)
-- 新增 支持国际化
-## 1.1.0(2021-07-13)
-- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
-## 1.0.7(2021-05-12)
-- 新增 组件示例地址
-## 1.0.6(2021-04-21)
-- 优化 添加依赖 uni-icons, 导入后自动下载依赖
-## 1.0.5(2021-02-05)
-- 优化 组件引用关系,通过uni_modules引用组件
-
-## 1.0.4(2021-02-05)
-- 调整为uni_modules目录规范

+ 0 - 6
uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json

@@ -1,6 +0,0 @@
-{
-	"uni-goods-nav.options.shop": "shop",
-	"uni-goods-nav.options.cart": "cart",
-	"uni-goods-nav.buttonGroup.addToCart": "add to cart",
-	"uni-goods-nav.buttonGroup.buyNow": "buy now"
-}

+ 0 - 8
uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js

@@ -1,8 +0,0 @@
-import en from './en.json'
-import zhHans from './zh-Hans.json'
-import zhHant from './zh-Hant.json'
-export default {
-	en,
-	'zh-Hans': zhHans,
-	'zh-Hant': zhHant
-}

+ 0 - 6
uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json

@@ -1,6 +0,0 @@
-{
-	"uni-goods-nav.options.shop": "店铺",
-	"uni-goods-nav.options.cart": "购物车",
-	"uni-goods-nav.buttonGroup.addToCart": "加入购物车",
-	"uni-goods-nav.buttonGroup.buyNow": "立即购买"
-}

+ 0 - 6
uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json

@@ -1,6 +0,0 @@
-{
-	"uni-goods-nav.options.shop": "店鋪",
-	"uni-goods-nav.options.cart": "購物車",
-	"uni-goods-nav.buttonGroup.addToCart": "加入購物車",
-	"uni-goods-nav.buttonGroup.buyNow": "立即購買"
-}

+ 0 - 229
uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue

@@ -1,229 +0,0 @@
-<template>
-	<view class="uni-goods-nav">
-		<!-- 底部占位 -->
-		<view class="uni-tab__seat" />
-		<view class="uni-tab__cart-box flex">
-			<view class="flex uni-tab__cart-sub-left">
-				<view v-for="(item,index) in options" :key="index" class="flex uni-tab__cart-button-left uni-tab__shop-cart" @click="onClick(index,item)">
-					<view class="uni-tab__icon">
-						<uni-icons :type="item.icon" size="20" color="#646566"></uni-icons>
-						<!-- <image class="image" :src="item.icon" mode="widthFix" /> -->
-					</view>
-					<text class="uni-tab__text">{{ item.text }}</text>
-					<view class="flex uni-tab__dot-box">
-						<text v-if="item.info" :class="{ 'uni-tab__dots': item.info > 9 }" class="uni-tab__dot " :style="{'backgroundColor':item.infoBackgroundColor?item.infoBackgroundColor:'#ff0000',
-						color:item.infoColor?item.infoColor:'#fff'
-						}">{{ item.info }}</text>
-					</view>
-				</view>
-			</view>
-			<view :class="{'uni-tab__right':fill}" class="flex uni-tab__cart-sub-right ">
-				<view v-for="(item,index) in buttonGroup" :key="index" :style="{background:item.backgroundColor,color:item.color}"
-				 class="flex uni-tab__cart-button-right" @click="buttonClick(index,item)"><text :style="{color:item.color}" class="uni-tab__cart-button-right-text">{{ item.text }}</text></view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import {
-	initVueI18n
-	} from '@dcloudio/uni-i18n'
-	import messages from './i18n/index.js'
-	const {	t	} = initVueI18n(messages)
-	/**
-	 * GoodsNav 商品导航
-	 * @description 商品加入购物车、立即购买等
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=865
-	 * @property {Array} options 组件参数
-	 * @property {Array} buttonGroup 组件按钮组参数
-	 * @property {Boolean} fill = [true | false] 组件按钮组参数
-	 * @property {Boolean} stat 是否开启统计功能
-	 * @event {Function} click 左侧点击事件
-	 * @event {Function} buttonClick 右侧按钮组点击事件
-	 * @example <uni-goods-nav :fill="true"  options="" buttonGroup="buttonGroup"  @click="" @buttonClick="" />
-	 */
-	export default {
-		name: 'UniGoodsNav',
-		emits:['click','buttonClick'],
-		props: {
-			options: {
-				type: Array,
-				default () {
-					return [{
-						icon: 'shop',
-						text: t("uni-goods-nav.options.shop"),
-					}, {
-						icon: 'cart',
-						text: t("uni-goods-nav.options.cart")
-					}]
-				}
-			},
-			buttonGroup: {
-				type: Array,
-				default () {
-					return [{
-							text: t("uni-goods-nav.buttonGroup.addToCart"),
-							backgroundColor: 'linear-gradient(90deg, #FFCD1E, #FF8A18)',
-							color: '#fff'
-						},
-						{
-							text: t("uni-goods-nav.buttonGroup.buyNow"),
-							backgroundColor: 'linear-gradient(90deg, #FE6035, #EF1224)',
-							color: '#fff'
-						}
-					]
-				}
-			},
-			fill: {
-				type: Boolean,
-				default: false
-			},
-			stat:{
-				type: Boolean,
-				default: false
-			}
-		},
-		methods: {
-			onClick(index, item) {
-				this.$emit('click', {
-					index,
-					content: item,
-				})
-			},
-			buttonClick(index, item) {
-				if (uni.report && this.stat) {
-					uni.report(item.text, item.text)
-				}
-				this.$emit('buttonClick', {
-					index,
-					content: item
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	.flex {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-goods-nav {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: row;
-	}
-
-	.uni-tab__cart-box {
-		flex: 1;
-		height: 50px;
-		background-color: #fff;
-		z-index: 900;
-	}
-
-	.uni-tab__cart-sub-left {
-		padding: 0 5px;
-	}
-
-	.uni-tab__cart-sub-right {
-		flex: 1;
-	}
-
-	.uni-tab__right {
-		margin: 5px 0;
-		margin-right: 10px;
-		border-radius: 100px;
-		overflow: hidden;
-	}
-
-	.uni-tab__cart-button-left {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		// flex: 1;
-		position: relative;
-		justify-content: center;
-		align-items: center;
-		flex-direction: column;
-		margin: 0 10px;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-tab__icon {
-		width: 18px;
-		height: 18px;
-	}
-
-	.image {
-		width: 18px;
-		height: 18px;
-	}
-
-	.uni-tab__text {
-		margin-top: 3px;
-		font-size: 12px;
-		color: #646566;
-	}
-
-	.uni-tab__cart-button-right {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		flex-direction: column;
-		/* #endif */
-		flex: 1;
-		justify-content: center;
-		align-items: center;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-tab__cart-button-right-text {
-		font-size: 14px;
-		color: #fff;
-	}
-
-	.uni-tab__cart-button-right:active {
-		opacity: 0.7;
-	}
-
-	.uni-tab__dot-box {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		flex-direction: column;
-		/* #endif */
-		position: absolute;
-		right: -2px;
-		top: 2px;
-		justify-content: center;
-		align-items: center;
-		// width: 0;
-		// height: 0;
-	}
-
-	.uni-tab__dot {
-		// width: 30rpx;
-		// height: 30rpx;
-		padding: 0 4px;
-		line-height: 15px;
-		color: #ffffff;
-		text-align: center;
-		font-size: 12px;
-		background-color: #ff0000;
-		border-radius: 15px;
-	}
-
-	.uni-tab__dots {
-		padding: 0 4px;
-		// width: auto;
-		border-radius: 15px;
-	}
-</style>

+ 0 - 88
uni_modules/uni-goods-nav/package.json

@@ -1,88 +0,0 @@
-{
-  "id": "uni-goods-nav",
-  "displayName": "uni-goods-nav 商品导航",
-  "version": "1.2.1",
-  "description": "商品导航组件主要用于电商类应用底部导航,可自定义加入购物车,购买等操作",
-  "keywords": [
-    "uni-ui",
-    "uniui",
-    "商品导航"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-  "dcloudext": {
-    "category": [
-      "前端组件",
-      "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
-  },
-  "uni_modules": {
-    "dependencies": [
-			"uni-scss",
-			"uni-icons"
-		],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 10
uni_modules/uni-goods-nav/readme.md

@@ -1,10 +0,0 @@
-
-
-## GoodsNav 商品导航
-> **组件名:uni-goods-nav**
-> 代码块: `uGoodsNav`
-
-商品加入购物车,立即购买等。
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-goods-nav)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 0 - 13
uni_modules/uni-grid/changelog.md

@@ -1,13 +0,0 @@
-## 1.4.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-grid](https://uniapp.dcloud.io/component/uniui/uni-grid)
-## 1.3.2(2021-11-09) 
-- 新增 提供组件设计资源,组件样式调整
-## 1.3.1(2021-07-30)
-- 优化 vue3下事件警告的问题
-## 1.3.0(2021-07-13)
-- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
-## 1.2.4(2021-05-12)
-- 新增 组件示例地址
-## 1.2.3(2021-02-05)
-- 调整为uni_modules目录规范

+ 0 - 127
uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue

@@ -1,127 +0,0 @@
-<template>
-	<view v-if="width" :style="'width:'+width+';'+(square?'height:'+width:'')" class="uni-grid-item">
-		<view :class="{ 'uni-grid-item--border': showBorder,  'uni-grid-item--border-top': showBorder && index < column, 'uni-highlight': highlight }"
-		 :style="{'border-right-color': borderColor ,'border-bottom-color': borderColor ,'border-top-color': borderColor }"
-		 class="uni-grid-item__box" @click="_onClick">
-			<slot />
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * GridItem 宫格
-	 * @description 宫格组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=27
-	 * @property {Number} index 子组件的唯一标识 ,点击gird会返回当前的标识
-	 */
-	export default {
-		name: 'UniGridItem',
-		inject: ['grid'],
-		props: {
-			index: {
-				type: Number,
-				default: 0
-			}
-		},
-		data() {
-			return {
-				column: 0,
-				showBorder: true,
-				square: true,
-				highlight: true,
-				left: 0,
-				top: 0,
-				openNum: 2,
-				width: 0,
-				borderColor: '#e5e5e5'
-			}
-		},
-		created() {
-			this.column = this.grid.column
-			this.showBorder = this.grid.showBorder
-			this.square = this.grid.square
-			this.highlight = this.grid.highlight
-			this.top = this.hor === 0 ? this.grid.hor : this.hor
-			this.left = this.ver === 0 ? this.grid.ver : this.ver
-			this.borderColor = this.grid.borderColor
-			this.grid.children.push(this)
-			// this.grid.init()
-			this.width = this.grid.width
-		},
-		beforeDestroy() {
-			this.grid.children.forEach((item, index) => {
-				if (item === this) {
-					this.grid.children.splice(index, 1)
-				}
-			})
-		},
-		methods: {
-			_onClick() {
-				this.grid.change({
-					detail: {
-						index: this.index
-					}
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	.uni-grid-item {
-		/* #ifndef APP-NVUE */
-		height: 100%;
-		display: flex;
-		/* #endif */
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-grid-item__box {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		width: 100%;
-		/* #endif */
-		position: relative;
-		flex: 1;
-		flex-direction: column;
-		// justify-content: center;
-		// align-items: center;
-	}
-
-	.uni-grid-item--border {
-		position: relative;
-		/* #ifdef APP-NVUE */
-		border-bottom-color: #D2D2D2;
-		border-bottom-style: solid;
-		border-bottom-width: 0.5px;
-		border-right-color: #D2D2D2;
-		border-right-style: solid;
-		border-right-width: 0.5px;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		z-index: 0;
-		border-bottom: 1px #D2D2D2 solid;
-		border-right: 1px #D2D2D2 solid;
-		/* #endif */
-	}
-	.uni-grid-item--border-top {
-		position: relative;
-		/* #ifdef APP-NVUE */
-		border-top-color: #D2D2D2;
-		border-top-style: solid;
-		border-top-width: 0.5px;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		border-top: 1px #D2D2D2 solid;
-		z-index: 0;
-		/* #endif */
-	}
-
-
-	.uni-highlight:active {
-		background-color: #f1f1f1;
-	}
-</style>

+ 0 - 142
uni_modules/uni-grid/components/uni-grid/uni-grid.vue

@@ -1,142 +0,0 @@
-<template>
-	<view class="uni-grid-wrap">
-		<view :id="elId" ref="uni-grid" class="uni-grid" :class="{ 'uni-grid--border': showBorder }" :style="{ 'border-left-color':borderColor}">
-			<slot />
-		</view>
-	</view>
-</template>
-
-<script>
-	// #ifdef APP-NVUE
-	const dom = uni.requireNativePlugin('dom');
-	// #endif
-
-	/**
-	 * Grid 宫格
-	 * @description 宫格组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=27
-	 * @property {Number} column 每列显示个数
-	 * @property {String} borderColor 边框颜色
-	 * @property {Boolean} showBorder 是否显示边框
-	 * @property {Boolean} square 是否方形显示
-	 * @property {Boolean} Boolean 点击背景是否高亮
-	 * @event {Function} change 点击 grid 触发,e={detail:{index:0}},index 为当前点击 gird 下标
-	 */
-	export default {
-		name: 'UniGrid',
-		emits:['change'],
-		props: {
-			// 每列显示个数
-			column: {
-				type: Number,
-				default: 3
-			},
-			// 是否显示边框
-			showBorder: {
-				type: Boolean,
-				default: true
-			},
-			// 边框颜色
-			borderColor: {
-				type: String,
-				default: '#D2D2D2'
-			},
-			// 是否正方形显示,默认为 true
-			square: {
-				type: Boolean,
-				default: true
-			},
-			highlight: {
-				type: Boolean,
-				default: true
-			}
-		},
-		provide() {
-			return {
-				grid: this
-			}
-		},
-		data() {
-			const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
-			return {
-				elId,
-				width: 0
-			}
-		},
-		created() {
-			this.children = []
-		},
-		mounted() {
-			this.$nextTick(()=>{
-				this.init()
-			})
-		},
-		methods: {
-			init() {
-				setTimeout(() => {
-					this._getSize((width) => {
-						this.children.forEach((item, index) => {
-							item.width = width
-						})
-					})
-				}, 50)
-			},
-			change(e) {
-				this.$emit('change', e)
-			},
-			_getSize(fn) {
-				// #ifndef APP-NVUE
-				uni.createSelectorQuery()
-					.in(this)
-					.select(`#${this.elId}`)
-					.boundingClientRect()
-					.exec(ret => {
-						this.width = parseInt((ret[0].width - 1) / this.column) + 'px'
-						fn(this.width)
-					})
-				// #endif
-				// #ifdef APP-NVUE
-				dom.getComponentRect(this.$refs['uni-grid'], (ret) => {
-					this.width = parseInt((ret.size.width - 1) / this.column) + 'px'
-					fn(this.width)
-				})
-				// #endif
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	.uni-grid-wrap {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: column;
-		/* #ifdef H5 */
-		width: 100%;
-		/* #endif */
-	}
-
-	.uni-grid {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		// flex: 1;
-		flex-direction: row;
-		flex-wrap: wrap;
-	}
-
-	.uni-grid--border {
-		position: relative;
-		/* #ifdef APP-NVUE */
-		border-left-color: #D2D2D2;
-		border-left-style: solid;
-		border-left-width: 0.5px;
-		/* #endif */
-		/* #ifndef APP-NVUE */
-		z-index: 1;
-		border-left: 1px #D2D2D2 solid;
-		/* #endif */
-	}
-</style>

+ 0 - 86
uni_modules/uni-grid/package.json

@@ -1,86 +0,0 @@
-{
-  "id": "uni-grid",
-  "displayName": "uni-grid 宫格",
-  "version": "1.4.0",
-  "description": "Grid 宫格组件,提供移动端常见的宫格布局,如九宫格。",
-  "keywords": [
-    "uni-ui",
-    "uniui",
-    "九宫格",
-    "表格"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-  "dcloudext": {
-    "category": [
-      "前端组件",
-      "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
-  },
-  "uni_modules": {
-    "dependencies": ["uni-scss","uni-icons"],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 11
uni_modules/uni-grid/readme.md

@@ -1,11 +0,0 @@
-
-
-## Grid 宫格
-> **组件名:uni-grid**
-> 代码块: `uGrid`
-
-
-宫格组件。
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-grid)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 0 - 16
uni_modules/uni-group/changelog.md

@@ -1,16 +0,0 @@
-## 1.2.2(2022-05-30)
-- 新增 stat属性,是否开启uni统计功能
-## 1.2.1(2021-11-22)
-- 修复 vue3中某些scss变量无法找到的问题
-## 1.2.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-group](https://uniapp.dcloud.io/component/uniui/uni-group)
-## 1.1.7(2021-11-08)
-## 1.1.0(2021-07-30)
-- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
-- 优化 组件文档
-## 1.0.3(2021-05-12)
-- 新增 组件示例地址
-## 1.0.2(2021-02-05)
-- 调整为uni_modules目录规范
-- 优化 兼容 nvue 页面

+ 0 - 134
uni_modules/uni-group/components/uni-group/uni-group.vue

@@ -1,134 +0,0 @@
-<template>
-	<view class="uni-group" :class="['uni-group--'+mode ,margin?'group-margin':'']" :style="{marginTop: `${top}px` }">
-		<slot name="title">
-			<view v-if="title" class="uni-group__title" :style="{'padding-left':border?'30px':'15px'}">
-				<text class="uni-group__title-text">{{ title }}</text>
-			</view>
-		</slot>
-		<view class="uni-group__content" :class="{'group-conent-padding':border}">
-			<slot />
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * Group 分组
-	 * @description 表单字段分组
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=3281
-	 * @property {String} title 主标题
-	 * @property {Number} top 分组间隔
-	 * @property {Number} mode 模式
-	 */
-	export default {
-		name: 'uniGroup',
-		emits:['click'],
-		props: {
-			title: {
-				type: String,
-				default: ''
-			},
-			top: {
-				type: [Number, String],
-				default: 10
-			},
-			mode: {
-				type: String,
-				default: 'default'
-			},
-			stat:{
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-				margin: false,
-				border: false
-			}
-		},
-		watch: {
-			title(newVal) {
-				if (uni.report && this.stat && newVal !== '') {
-					uni.report('title', newVal)
-				}
-			}
-		},
-		created() {
-			this.form = this.getForm()
-			if (this.form) {
-				this.margin = true
-				this.border = this.form.border
-			}
-		},
-		methods: {
-			/**
-			 * 获取父元素实例
-			 */
-			getForm() {
-				let parent = this.$parent;
-				let parentName = parent.$options.name;
-				while (parentName !== 'uniForms') {
-					parent = parent.$parent;
-					if (!parent) return false
-					parentName = parent.$options.name;
-				}
-				return parent;
-			},
-			onClick() {
-				this.$emit('click')
-			}
-		}
-	}
-</script>
-<style lang="scss" >
-	.uni-group {
-		background: #fff;
-		margin-top: 10px;
-		// border: 1px red solid;
-	}
-
-	.group-margin {
-		// margin: 0 -15px;
-	}
-
-	.uni-group__title {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		padding-left: 15px;
-		height: 40px;
-		background-color: #eee;
-		font-weight: normal;
-		color: #666;
-	}
-
-	.uni-group__content {
-		padding: 15px;
-		// padding-bottom: 5px;
-		// background-color: #FFF;
-	}
-
-	.group-conent-padding {
-		padding: 0 15px;
-	}
-
-	.uni-group__title-text {
-		font-size: 14px;
-		color: #666;
-	}
-
-	.distraction {
-		flex-direction: row;
-		align-items: center;
-	}
-
-	.uni-group--card {
-		margin: 10px;
-		border-radius: 5px;
-		overflow: hidden;
-		box-shadow: 0 0 5px 1px rgba($color: #000000, $alpha: 0.08);
-	}
-</style>

+ 0 - 87
uni_modules/uni-group/package.json

@@ -1,87 +0,0 @@
-{
-  "id": "uni-group",
-  "displayName": "uni-group 分组",
-  "version": "1.2.2",
-  "description": "分组组件可用于将组件用于分组,添加间隔,以产生明显的区块",
-  "keywords": [
-    "uni-ui",
-    "uniui",
-    "group",
-    "分组",
-    ""
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-  "dcloudext": {
-    "category": [
-      "前端组件",
-      "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
-  },
-  "uni_modules": {
-    "dependencies": ["uni-scss"],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 9
uni_modules/uni-group/readme.md

@@ -1,9 +0,0 @@
-
-## Group 分组
-> **组件名:uni-group**
-> 代码块: `uGroup`
-
-分组组件可用于将组件分组,添加间隔,以产生明显的区块。
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-group)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 0 - 17
uni_modules/uni-indexed-list/changelog.md

@@ -1,17 +0,0 @@
-## 1.2.1(2021-11-22)
-- 修复 vue3中某些scss变量无法找到的问题
-## 1.2.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-indexed-list](https://uniapp.dcloud.io/component/uniui/uni-indexed-list)
-## 1.1.0(2021-07-30)
-- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
-## 1.0.11(2021-05-12)
-- 新增 组件示例地址
-## 1.0.10(2021-04-21)
-- 优化 添加依赖 uni-icons, 导入后自动下载依赖
-## 1.0.9(2021-02-05)
-- 优化 组件引用关系,通过uni_modules引用组件
-
-## 1.0.8(2021-02-05)
-- 调整为uni_modules目录规范
-- 新增 支持 PC 端

+ 0 - 144
uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue

@@ -1,144 +0,0 @@
-<template>
-	<view>
-		<view v-if="loaded || list.itemIndex < 15" class="uni-indexed-list__title-wrapper">
-			<text v-if="list.items && list.items.length > 0" class="uni-indexed-list__title">{{ list.key }}</text>
-		</view>
-		<view v-if="(loaded || list.itemIndex < 15) && list.items && list.items.length > 0" class="uni-indexed-list__list">
-			<view v-for="(item, index) in list.items" :key="index" class="uni-indexed-list__item" hover-class="uni-indexed-list__item--hover">
-				<view class="uni-indexed-list__item-container" @click="onClick(idx, index)">
-					<view class="uni-indexed-list__item-border" :class="{'uni-indexed-list__item-border--last':index===list.items.length-1}">
-						<view v-if="showSelect" style="margin-right: 20rpx;">
-							<uni-icons :type="item.checked ? 'checkbox-filled' : 'circle'" :color="item.checked ? '#007aff' : '#C0C0C0'" size="24" />
-						</view>
-						<text class="uni-indexed-list__item-content">{{ item.name }}</text>
-					</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'UniIndexedList',
-		emits:['itemClick'],
-		props: {
-			loaded: {
-				type: Boolean,
-				default: false
-			},
-			idx: {
-				type: Number,
-				default: 0
-			},
-			list: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			showSelect: {
-				type: Boolean,
-				default: false
-			}
-		},
-		methods: {
-			onClick(idx, index) {
-				this.$emit("itemClick", {
-					idx,
-					index
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	.uni-indexed-list__list {
-		background-color: $uni-bg-color;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		border-top-style: solid;
-		border-top-width: 1px;
-		border-top-color: #DEDEDE;
-	}
-
-	.uni-indexed-list__item {
-		font-size: 14px;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: row;
-		justify-content: space-between;
-		align-items: center;
-	}
-
-	.uni-indexed-list__item-container {
-		padding-left: 15px;
-		flex: 1;
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		box-sizing: border-box;
-		/* #endif */
-		flex-direction: row;
-		justify-content: space-between;
-		align-items: center;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-indexed-list__item-border {
-		flex: 1;
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		box-sizing: border-box;
-		/* #endif */
-		flex-direction: row;
-		justify-content: space-between;
-		align-items: center;
-		height: 50px;
-		padding: 25px;
-		padding-left: 0;
-		border-bottom-style: solid;
-		border-bottom-width: 1px;
-		border-bottom-color:  #DEDEDE;
-	}
-
-	.uni-indexed-list__item-border--last {
-		border-bottom-width: 0px;
-	}
-
-	.uni-indexed-list__item-content {
-		flex: 1;
-		font-size: 14px;
-		color: #191919;
-	}
-
-	.uni-indexed-list {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-indexed-list__title-wrapper {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		width: 100%;
-		/* #endif */
-		background-color: #f7f7f7;
-	}
-
-	.uni-indexed-list__title {
-		padding: 6px 12px;
-		line-height: 24px;
-		font-size: 16px;
-		font-weight: 500;
-	}
-</style>

+ 0 - 367
uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue

@@ -1,367 +0,0 @@
-<template>
-	<view class="uni-indexed-list" ref="list" id="list">
-		<!-- #ifdef APP-NVUE -->
-		<list class="uni-indexed-list__scroll" scrollable="true" show-scrollbar="false">
-			<cell v-for="(list, idx) in lists" :key="idx" :ref="'uni-indexed-list-' + idx">
-				<!-- #endif -->
-				<!-- #ifndef APP-NVUE -->
-				<scroll-view :scroll-into-view="scrollViewId" class="uni-indexed-list__scroll" scroll-y>
-					<view v-for="(list, idx) in lists" :key="idx" :id="'uni-indexed-list-' + idx">
-						<!-- #endif -->
-						<indexed-list-item :list="list" :loaded="loaded" :idx="idx" :showSelect="showSelect"
-							@itemClick="onClick"></indexed-list-item>
-						<!-- #ifndef APP-NVUE -->
-					</view>
-				</scroll-view>
-				<!-- #endif -->
-				<!-- #ifdef APP-NVUE -->
-			</cell>
-		</list>
-		<!-- #endif -->
-		<view class="uni-indexed-list__menu" @touchstart="touchStart" @touchmove.stop.prevent="touchMove"
-			@touchend="touchEnd" @mousedown.stop="mousedown" @mousemove.stop.prevent="mousemove"
-			@mouseleave.stop="mouseleave">
-			<view v-for="(list, key) in lists" :key="key" class="uni-indexed-list__menu-item"
-				:class="touchmoveIndex == key ? 'uni-indexed-list__menu--active' : ''">
-				<text class="uni-indexed-list__menu-text"
-					:class="touchmoveIndex == key ? 'uni-indexed-list__menu-text--active' : ''">{{ list.key }}</text>
-			</view>
-		</view>
-		<view v-if="touchmove" class="uni-indexed-list__alert-wrapper">
-			<text class="uni-indexed-list__alert">{{ lists[touchmoveIndex].key }}</text>
-		</view>
-	</view>
-</template>
-<script>
-	import indexedListItem from './uni-indexed-list-item.vue'
-	// #ifdef APP-NVUE
-	const dom = weex.requireModule('dom');
-	// #endif
-	// #ifdef APP-PLUS
-	function throttle(func, delay) {
-		var prev = Date.now();
-		return function() {
-			var context = this;
-			var args = arguments;
-			var now = Date.now();
-			if (now - prev >= delay) {
-				func.apply(context, args);
-				prev = Date.now();
-			}
-		}
-	}
-
-	function touchMove(e) {
-		let pageY = e.touches[0].pageY
-		let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight)
-		if (this.touchmoveIndex === index) {
-			return false
-		}
-		let item = this.lists[index]
-		if (item) {
-			// #ifndef APP-NVUE
-			this.scrollViewId = 'uni-indexed-list-' + index
-			this.touchmoveIndex = index
-			// #endif
-			// #ifdef APP-NVUE
-			dom.scrollToElement(this.$refs['uni-indexed-list-' + index][0], {
-				animated: false
-			})
-			this.touchmoveIndex = index
-			// #endif
-		}
-	}
-	const throttleTouchMove = throttle(touchMove, 40)
-	// #endif
-
-	/**
-	 * IndexedList 索引列表
-	 * @description 用于展示索引列表
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=375
-	 * @property {Boolean} showSelect = [true|false] 展示模式
-	 * 	@value true 展示模式
-	 * 	@value false 选择模式
-	 * @property {Object} options 索引列表需要的数据对象
-	 * @event {Function} click 点击列表事件 ,返回当前选择项的事件对象
-	 * @example <uni-indexed-list options="" showSelect="false" @click=""></uni-indexed-list>
-	 */
-	export default {
-		name: 'UniIndexedList',
-		components: {
-			indexedListItem
-		},
-		emits: ['click'],
-		props: {
-			options: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			showSelect: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-				lists: [],
-				winHeight: 0,
-				itemHeight: 0,
-				winOffsetY: 0,
-				touchmove: false,
-				touchmoveIndex: -1,
-				scrollViewId: '',
-				touchmovable: true,
-				loaded: false,
-				isPC: false
-			}
-		},
-		watch: {
-			options: {
-				handler: function() {
-					this.setList()
-				},
-				deep: true
-			}
-		},
-		mounted() {
-			// #ifdef H5
-			this.isPC = this.IsPC()
-			// #endif
-			setTimeout(() => {
-				this.setList()
-			}, 50)
-			setTimeout(() => {
-				this.loaded = true
-			}, 300);
-		},
-		methods: {
-			setList() {
-				let index = 0;
-				this.lists = []
-				this.options.forEach((value) => {
-					if (value.data.length === 0) {
-						return
-					}
-					let indexBefore = index
-					let items = value.data.map(item => {
-						let obj = {}
-						obj['key'] = value.letter
-						obj['name'] = item
-						obj['itemIndex'] = index
-						index++
-						obj.checked = item.checked ? item.checked : false
-						return obj
-					})
-					this.lists.push({
-						title: value.letter,
-						key: value.letter,
-						items: items,
-						itemIndex: indexBefore
-					})
-				})
-				// #ifndef APP-NVUE
-				uni.createSelectorQuery()
-					.in(this)
-					.select('#list')
-					.boundingClientRect()
-					.exec(ret => {
-						this.winOffsetY = ret[0].top
-						this.winHeight = ret[0].height
-						this.itemHeight = this.winHeight / this.lists.length
-					})
-				// #endif
-				// #ifdef APP-NVUE
-				dom.getComponentRect(this.$refs['list'], (res) => {
-					this.winOffsetY = res.size.top
-					this.winHeight = res.size.height
-					this.itemHeight = this.winHeight / this.lists.length
-				})
-				// #endif
-			},
-			touchStart(e) {
-				this.touchmove = true
-				let pageY = this.isPC ? e.pageY : e.touches[0].pageY
-				let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight)
-				let item = this.lists[index]
-				if (item) {
-					this.scrollViewId = 'uni-indexed-list-' + index
-					this.touchmoveIndex = index
-					// #ifdef APP-NVUE
-					dom.scrollToElement(this.$refs['uni-indexed-list-' + index][0], {
-						animated: false
-					})
-					// #endif
-				}
-			},
-			touchMove(e) {
-				// #ifndef APP-PLUS
-				let pageY = this.isPC ? e.pageY : e.touches[0].pageY
-				let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight)
-				if (this.touchmoveIndex === index) {
-					return false
-				}
-				let item = this.lists[index]
-				if (item) {
-					this.scrollViewId = 'uni-indexed-list-' + index
-					this.touchmoveIndex = index
-				}
-				// #endif
-				// #ifdef APP-PLUS
-				throttleTouchMove.call(this, e)
-				// #endif
-			},
-			touchEnd() {
-				this.touchmove = false
-				// this.touchmoveIndex = -1
-			},
-
-			/**
-			 * 兼容 PC @tian
-			 */
-
-			mousedown(e) {
-				if (!this.isPC) return
-				this.touchStart(e)
-			},
-			mousemove(e) {
-				if (!this.isPC) return
-				this.touchMove(e)
-			},
-			mouseleave(e) {
-				if (!this.isPC) return
-				this.touchEnd(e)
-			},
-
-			// #ifdef H5
-			IsPC() {
-				var userAgentInfo = navigator.userAgent;
-				var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
-				var flag = true;
-				for (let v = 0; v < Agents.length - 1; v++) {
-					if (userAgentInfo.indexOf(Agents[v]) > 0) {
-						flag = false;
-						break;
-					}
-				}
-				return flag;
-			},
-			// #endif
-
-
-			onClick(e) {
-				let {
-					idx,
-					index
-				} = e
-				let obj = {}
-				for (let key in this.lists[idx].items[index]) {
-					obj[key] = this.lists[idx].items[index][key]
-				}
-				let select = []
-				if (this.showSelect) {
-					this.lists[idx].items[index].checked = !this.lists[idx].items[index].checked
-					this.lists.forEach((value, idx) => {
-						value.items.forEach((item, index) => {
-							if (item.checked) {
-								let obj = {}
-								for (let key in this.lists[idx].items[index]) {
-									obj[key] = this.lists[idx].items[index][key]
-								}
-								select.push(obj)
-							}
-						})
-					})
-				}
-				this.$emit('click', {
-					item: obj,
-					select: select
-				})
-			}
-		}
-	}
-</script>
-<style lang="scss" >
-	.uni-indexed-list {
-		position: absolute;
-		left: 0;
-		top: 0;
-		right: 0;
-		bottom: 0;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-indexed-list__scroll {
-		flex: 1;
-	}
-
-	.uni-indexed-list__menu {
-		width: 24px;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-	}
-
-	.uni-indexed-list__menu-item {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		align-items: center;
-		justify-content: center;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-indexed-list__menu-text {
-		font-size: 12px;
-		text-align: center;
-		color: #aaa;
-	}
-
-	.uni-indexed-list__menu--active {
-		// background-color: rgb(200, 200, 200);
-	}
-
-	.uni-indexed-list__menu--active {}
-
-	.uni-indexed-list__menu-text--active {
-		border-radius: 16px;
-		width: 16px;
-		height: 16px;
-		line-height: 16px;
-		background-color: #007aff;
-		color: #fff;
-	}
-
-	.uni-indexed-list__alert-wrapper {
-		position: absolute;
-		left: 0;
-		top: 0;
-		right: 0;
-		bottom: 0;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		justify-content: center;
-	}
-
-	.uni-indexed-list__alert {
-		width: 80px;
-		height: 80px;
-		border-radius: 80px;
-		text-align: center;
-		line-height: 80px;
-		font-size: 35px;
-		color: #fff;
-		background-color: rgba(0, 0, 0, 0.5);
-	}
-</style>

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä