@zfqh/uniapp 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -11
- package/docs/api/utils/locale.md +68 -68
- package/docs/components/styles/base-styles.md +239 -239
- package/lib/apis/request.d.ts +2 -2
- package/lib/apis/request.js +5 -5
- package/lib/styles/bg.scss +1 -1
- package/lib/styles/flex.scss +8 -8
- package/lib/styles/index.scss +3 -3
- package/lib/styles/layout.scss +14 -14
- package/lib/styles/reset-vue.scss +2 -2
- package/lib/styles/text-nvue.scss +1 -1
- package/lib/styles/text.scss +1 -1
- package/package.json +3 -4
- package/LICENSE +0 -21
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
## [0.1.
|
|
6
|
+
## [0.1.5](http://10.10.10.16/caoben/front-end/compare/@zfqh/uniapp@0.1.4...@zfqh/uniapp@0.1.5) (2026-06-15)
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @zfqh/uniapp
|
|
9
9
|
|
|
@@ -11,14 +11,32 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
|
|
15
|
+
## [0.1.4](http://10.10.10.16/caoben/front-end/compare/@zfqh/uniapp@0.1.2...@zfqh/uniapp@0.1.4) (2026-06-02)
|
|
16
|
+
|
|
17
|
+
**Note:** Version bump only for package @zfqh/uniapp
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
## [0.1.2](http://10.10.10.16/caoben/front-end/compare/@zfqh/uniapp@0.1.1...@zfqh/uniapp@0.1.2) (2026-06-01)
|
|
25
|
+
|
|
26
|
+
**Note:** Version bump only for package @zfqh/uniapp
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
## 0.1.1 (2026-05-31)
|
|
33
|
+
|
|
34
|
+
**Note:** Version bump only for package @zfqh/uniapp
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
## [0.1.0](http://10.10.200.92:8090/gmcb/front-end/compare/@zfqh/uniapp@0.1.0) (2026-05-31)
|
|
41
|
+
|
|
24
42
|
**Note:** Version bump only for package @zfqh/uniapp
|
package/docs/api/utils/locale.md
CHANGED
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
# 多语言辅助
|
|
2
|
-
|
|
3
|
-
::: tip 工具模块
|
|
4
|
-
`@zfqh/uniapp/lib/utils/locale`
|
|
5
|
-
:::
|
|
6
|
-
|
|
7
|
-
提供当前语言、回退语言、vue-i18n 实例创建和 nvue 可用的简易文案读取方法。
|
|
8
|
-
|
|
9
|
-
## 平台兼容性
|
|
10
|
-
|
|
11
|
-
| App | H5 | 微信小程序 | 其他小程序 | WebView |
|
|
12
|
-
| --- | --- | --- | --- | --- |
|
|
13
|
-
| √ | √ | √ | 视平台 API 而定 | 视运行容器而定 |
|
|
14
|
-
|
|
15
|
-
## 基本使用
|
|
16
|
-
|
|
17
|
-
```ts
|
|
18
|
-
import { defaultLocale, fallbackLocale, createI18n, getLocaleMessage } from '@zfqh/uniapp';
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
具体方法、参数语义和返回值以发布包类型为准;下方表格按 `@zfqh/uniapp/lib/utils/locale` 的导出整理。
|
|
22
|
-
|
|
23
|
-
## 创建 vue-i18n 实例
|
|
24
|
-
|
|
25
|
-
在 `locale/index.js` 中调用 `createI18n` 创建实例并导出:
|
|
26
|
-
|
|
27
|
-
```js
|
|
28
|
-
import { createI18n, defaultLocale, fallbackLocale } from '@zfqh/uniapp';
|
|
29
|
-
import messages from './messages';
|
|
30
|
-
|
|
31
|
-
export const i18n = createI18n({
|
|
32
|
-
locale: defaultLocale,
|
|
33
|
-
fallbackLocale,
|
|
34
|
-
messages,
|
|
35
|
-
});
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
`messages.js` 按语言键组织翻译文件:
|
|
39
|
-
|
|
40
|
-
```js
|
|
41
|
-
import zhHans from './zh-Hans.json';
|
|
42
|
-
import en from './en.json';
|
|
43
|
-
|
|
44
|
-
export default {
|
|
45
|
-
'zh-Hans': zhHans,
|
|
46
|
-
en,
|
|
47
|
-
};
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
实例创建后可在 App 启动时注册:
|
|
51
|
-
|
|
52
|
-
```js
|
|
53
|
-
import { i18n } from './locale';
|
|
54
|
-
|
|
55
|
-
const app = createApp(App);
|
|
56
|
-
app.use(i18n);
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## API
|
|
60
|
-
|
|
61
|
-
发布路径:`@zfqh/uniapp/lib/utils/locale`
|
|
62
|
-
|
|
63
|
-
| 名称 | 签名/声明 | 说明 |
|
|
64
|
-
| --- | --- | --- |
|
|
65
|
-
| `defaultLocale` | `export const defaultLocale = uni.getLocale();` | 默认语言。 |
|
|
66
|
-
| `fallbackLocale` | `export const fallbackLocale = 'zh-Hans';` | 回退语言。 |
|
|
67
|
-
| `createI18n` | `export function createI18n(opts: I18nOptions)` | 创建 vue-i18n 实例,返回实例。 |
|
|
68
|
-
| `getLocaleMessage` | `export function getLocaleMessage(key: string): string` | 通过 key 获取当前语言文案,nvue 场景下的简易 i18n 文案读取。未匹配时返回 key 本身。 |
|
|
1
|
+
# 多语言辅助
|
|
2
|
+
|
|
3
|
+
::: tip 工具模块
|
|
4
|
+
`@zfqh/uniapp/lib/utils/locale`
|
|
5
|
+
:::
|
|
6
|
+
|
|
7
|
+
提供当前语言、回退语言、vue-i18n 实例创建和 nvue 可用的简易文案读取方法。
|
|
8
|
+
|
|
9
|
+
## 平台兼容性
|
|
10
|
+
|
|
11
|
+
| App | H5 | 微信小程序 | 其他小程序 | WebView |
|
|
12
|
+
| --- | --- | --- | --- | --- |
|
|
13
|
+
| √ | √ | √ | 视平台 API 而定 | 视运行容器而定 |
|
|
14
|
+
|
|
15
|
+
## 基本使用
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { defaultLocale, fallbackLocale, createI18n, getLocaleMessage } from '@zfqh/uniapp';
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
具体方法、参数语义和返回值以发布包类型为准;下方表格按 `@zfqh/uniapp/lib/utils/locale` 的导出整理。
|
|
22
|
+
|
|
23
|
+
## 创建 vue-i18n 实例
|
|
24
|
+
|
|
25
|
+
在 `locale/index.js` 中调用 `createI18n` 创建实例并导出:
|
|
26
|
+
|
|
27
|
+
```js
|
|
28
|
+
import { createI18n, defaultLocale, fallbackLocale } from '@zfqh/uniapp';
|
|
29
|
+
import messages from './messages';
|
|
30
|
+
|
|
31
|
+
export const i18n = createI18n({
|
|
32
|
+
locale: defaultLocale,
|
|
33
|
+
fallbackLocale,
|
|
34
|
+
messages,
|
|
35
|
+
});
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`messages.js` 按语言键组织翻译文件:
|
|
39
|
+
|
|
40
|
+
```js
|
|
41
|
+
import zhHans from './zh-Hans.json';
|
|
42
|
+
import en from './en.json';
|
|
43
|
+
|
|
44
|
+
export default {
|
|
45
|
+
'zh-Hans': zhHans,
|
|
46
|
+
en,
|
|
47
|
+
};
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
实例创建后可在 App 启动时注册:
|
|
51
|
+
|
|
52
|
+
```js
|
|
53
|
+
import { i18n } from './locale';
|
|
54
|
+
|
|
55
|
+
const app = createApp(App);
|
|
56
|
+
app.use(i18n);
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## API
|
|
60
|
+
|
|
61
|
+
发布路径:`@zfqh/uniapp/lib/utils/locale`
|
|
62
|
+
|
|
63
|
+
| 名称 | 签名/声明 | 说明 |
|
|
64
|
+
| --- | --- | --- |
|
|
65
|
+
| `defaultLocale` | `export const defaultLocale = uni.getLocale();` | 默认语言。 |
|
|
66
|
+
| `fallbackLocale` | `export const fallbackLocale = 'zh-Hans';` | 回退语言。 |
|
|
67
|
+
| `createI18n` | `export function createI18n(opts: I18nOptions)` | 创建 vue-i18n 实例,返回实例。 |
|
|
68
|
+
| `getLocaleMessage` | `export function getLocaleMessage(key: string): string` | 通过 key 获取当前语言文案,nvue 场景下的简易 i18n 文案读取。未匹配时返回 key 本身。 |
|
|
@@ -1,239 +1,239 @@
|
|
|
1
|
-
# 工具样式类
|
|
2
|
-
|
|
3
|
-
`@zfqh/uniapp` 内置一组静态 SCSS 工具类,仅覆盖 **平台差异类** 和 **使用 `$uv-*` SCSS 变量的语义色类**。间距、尺寸、字号、圆角、透明度、阴影等通用原子类需要配合 `@gmcb/vite` 提供的 unocss 插件在构建时动态生成,两者命名风格与 UnoCSS / Tailwind CSS 一致。
|
|
4
|
-
|
|
5
|
-
## 前置依赖
|
|
6
|
-
|
|
7
|
-
使用完整原子类能力前,需要在项目的 `vite.config.js` 中注册 unocss 插件,并传入 `blockList` 避免与内置静态类冲突:
|
|
8
|
-
|
|
9
|
-
```js
|
|
10
|
-
import { defineConfig } from '@gmcb/vite';
|
|
11
|
-
import { unocss } from '@gmcb/vite/lib/plugins';
|
|
12
|
-
import { blockList } from '@gmcb/vite/lib/unocss';
|
|
13
|
-
|
|
14
|
-
export default defineConfig({
|
|
15
|
-
plugins: [
|
|
16
|
-
uni(),
|
|
17
|
-
unocss({
|
|
18
|
-
blockList,
|
|
19
|
-
}),
|
|
20
|
-
],
|
|
21
|
-
});
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
`blockList` 已预置全部内置静态类名,unocss 插件不会为这些类名生成重复 CSS。
|
|
25
|
-
|
|
26
|
-
## 引入方式
|
|
27
|
-
|
|
28
|
-
在项目全局样式中导入一次即可。放在 `App.vue` 的 `<style>` 块:
|
|
29
|
-
|
|
30
|
-
```scss
|
|
31
|
-
@import '@zfqh/uniapp/lib/styles/index.scss';
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
此入口同时导入 `@gmcb/uv-ui/index.scss`,无需再单独导入 uv-ui 基础样式。
|
|
35
|
-
|
|
36
|
-
## 内置原子类
|
|
37
|
-
|
|
38
|
-
### Flex 布局
|
|
39
|
-
|
|
40
|
-
| 类名 | 效果 |
|
|
41
|
-
| --- | --- |
|
|
42
|
-
| `.flex` | flex 行布局 |
|
|
43
|
-
| `.flex-inline` | inline-flex 行布局 |
|
|
44
|
-
| `.flex-row` / `.flex-row-reverse` | 行方向 |
|
|
45
|
-
| `.flex-col` / `.flex-col-reverse` | 列方向 |
|
|
46
|
-
| `.flex-wrap` / `.flex-nowrap` / `.flex-wrap-reverse` | 换行控制 |
|
|
47
|
-
| `.flex-0` ~ `.flex-8` | `flex: 0` ~ `flex: 8` |
|
|
48
|
-
| `.flex-none` | `flex: 0` |
|
|
49
|
-
| `.items-start` / `.items-end` / `.items-center` / `.items-stretch` / `.items-baseline` | align-items |
|
|
50
|
-
| `.justify-start` / `.justify-end` / `.justify-center` / `.justify-between` / `.justify-around` | justify-content |
|
|
51
|
-
|
|
52
|
-
::: info 平台差异
|
|
53
|
-
- H5 平台下这些类包裹在 `page` 选择器内。
|
|
54
|
-
- `.flex` / `.flex-inline` 的 `display: flex` / `display: inline-flex` 仅在非 APP-NVUE 平台生效,nvue 端省略 display 属性(Weex 默认 flex 布局)。
|
|
55
|
-
:::
|
|
56
|
-
|
|
57
|
-
### 背景色
|
|
58
|
-
|
|
59
|
-
`.bg-{color}` 系列,颜色值读取 `$uv-*` SCSS 变量,跟随主题配置:
|
|
60
|
-
|
|
61
|
-
| 色组 | 可用类名 |
|
|
62
|
-
| --- | --- |
|
|
63
|
-
| primary | `.bg-primary`、`.bg-primary-dark`、`.bg-primary-light`、`.bg-primary-disabled` |
|
|
64
|
-
| warning | `.bg-warning`、`.bg-warning-dark`、`.bg-warning-light`、`.bg-warning-disabled` |
|
|
65
|
-
| success | `.bg-success`、`.bg-success-dark`、`.bg-success-light`、`.bg-success-disabled` |
|
|
66
|
-
| error | `.bg-error`、`.bg-error-dark`、`.bg-error-light`、`.bg-error-disabled` |
|
|
67
|
-
| info | `.bg-info`、`.bg-info-dark`、`.bg-info-light`、`.bg-info-disabled` |
|
|
68
|
-
|
|
69
|
-
基础背景:
|
|
70
|
-
|
|
71
|
-
| 类名 | SCSS 变量 | 说明 |
|
|
72
|
-
| --- | --- | --- |
|
|
73
|
-
| `.bg` | `$uv-bg-color` | 页面背景色 |
|
|
74
|
-
| `.bg-light` | `$uv-bg-light-color` | 浅色背景 |
|
|
75
|
-
| `.bg-disabled` | `$uv-disabled-color` | 禁用态背景 |
|
|
76
|
-
| `.bg-border` | `$uv-border-color` | 边框色背景 |
|
|
77
|
-
|
|
78
|
-
### 文字颜色
|
|
79
|
-
|
|
80
|
-
`.text-{color}` 系列,颜色值读取 `$uv-*` SCSS 变量:
|
|
81
|
-
|
|
82
|
-
| 色组 | 可用类名 |
|
|
83
|
-
| --- | --- |
|
|
84
|
-
| primary | `.text-primary`、`.text-primary-dark`、`.text-primary-light`、`.text-primary-disabled` |
|
|
85
|
-
| warning | `.text-warning`、`.text-warning-dark`、`.text-warning-light`、`.text-warning-disabled` |
|
|
86
|
-
| success | `.text-success`、`.text-success-dark`、`.text-success-light`、`.text-success-disabled` |
|
|
87
|
-
| error | `.text-error`、`.text-error-dark`、`.text-error-light`、`.text-error-disabled` |
|
|
88
|
-
| info | `.text-info`、`.text-info-dark`、`.text-info-light`、`.text-info-disabled` |
|
|
89
|
-
|
|
90
|
-
UI 语义色:
|
|
91
|
-
|
|
92
|
-
| 类名 | SCSS 变量 | 说明 |
|
|
93
|
-
| --- | --- | --- |
|
|
94
|
-
| `.text-main` | `$uv-main-color` | 主要文字 |
|
|
95
|
-
| `.text-content` | `$uv-content-color` | 正文文字 |
|
|
96
|
-
| `.text-tips` | `$uv-tips-color` | 辅助提示 |
|
|
97
|
-
| `.text-light` | `$uv-light-color` | 占位/水印 |
|
|
98
|
-
| `.text-border` | `$uv-border-color` | 边框色文字 |
|
|
99
|
-
| `.text-disabled` | `$uv-disabled-color` | 禁用态文字 |
|
|
100
|
-
|
|
101
|
-
### 边框
|
|
102
|
-
|
|
103
|
-
| 类名 | 效果 |
|
|
104
|
-
| --- | --- |
|
|
105
|
-
| `.border` | 1px solid 边框色(`$uv-border-color`) |
|
|
106
|
-
| `.border-half` | 0.5px solid 边框色 |
|
|
107
|
-
| `.border-t` / `.border-r` / `.border-b` / `.border-l` | 单边 1px solid 边框色 |
|
|
108
|
-
| `.border-x` / `.border-y` | 双轴 1px solid 边框色 |
|
|
109
|
-
|
|
110
|
-
语义色边框:
|
|
111
|
-
|
|
112
|
-
| 类名 | SCSS 变量 |
|
|
113
|
-
| --- | --- |
|
|
114
|
-
| `.border-primary` | `$uv-primary` |
|
|
115
|
-
| `.border-warning` | `$uv-warning` |
|
|
116
|
-
| `.border-success` | `$uv-success` |
|
|
117
|
-
| `.border-error` | `$uv-error` |
|
|
118
|
-
| `.border-info` | `$uv-info` |
|
|
119
|
-
|
|
120
|
-
### 定位
|
|
121
|
-
|
|
122
|
-
| 类名 | 效果 |
|
|
123
|
-
| --- | --- |
|
|
124
|
-
| `.relative` | position: relative |
|
|
125
|
-
| `.absolute` | position: absolute |
|
|
126
|
-
| `.fixed` | position: fixed |
|
|
127
|
-
| `.sticky` | position: sticky |
|
|
128
|
-
|
|
129
|
-
::: info 平台差异
|
|
130
|
-
H5 平台下这些类包裹在 `page` 选择器内,其他平台直接使用。
|
|
131
|
-
:::
|
|
132
|
-
|
|
133
|
-
### 文本截断
|
|
134
|
-
|
|
135
|
-
**非 nvue 平台**(`text-vue.scss`):
|
|
136
|
-
|
|
137
|
-
| 类名 | 效果 |
|
|
138
|
-
| --- | --- |
|
|
139
|
-
| `.truncate` | 单行截断(overflow ellipsis + nowrap) |
|
|
140
|
-
| `.line-clamp-1` ~ `.line-clamp-5` | 多行截断(`-webkit-line-clamp`) |
|
|
141
|
-
|
|
142
|
-
**nvue 平台**(`text-nvue.scss`):
|
|
143
|
-
|
|
144
|
-
| 类名 | 效果 |
|
|
145
|
-
| --- | --- |
|
|
146
|
-
| `.truncate` | 单行截断(Weex `lines: 1`) |
|
|
147
|
-
| `.line-clamp-1` ~ `.line-clamp-5` | 多行截断(Weex `lines: n`) |
|
|
148
|
-
|
|
149
|
-
### 全局重置
|
|
150
|
-
|
|
151
|
-
`reset-vue.scss` 在非 nvue 平台自动生效,不属于原子类,作用:
|
|
152
|
-
|
|
153
|
-
- 设置 `:root` 下的 `--window-bottom`、`--window-top`(非 H5)、`--window-height`、`--window-width` CSS 自定义属性。
|
|
154
|
-
- `page` 元素宽高 100%、`font-family: Microsoft YaHei`、颜色取 `$uv-main-color`、flex 列布局。
|
|
155
|
-
- `view`、`text`、`image` 设置 `box-sizing: border-box`。
|
|
156
|
-
- 修复 `.uni-scroll-view-refresher` 背景透明。
|
|
157
|
-
- 调整 `.ql-editor.ql-blank:before` 占位文字样式。
|
|
158
|
-
- 调整 `.uv-toast` 默认样式。
|
|
159
|
-
|
|
160
|
-
除上述内置类外,其余原子类(间距、尺寸、字号、字重、行高、对齐、基础背景色、边框宽度/样式、圆角、overflow、top/right/bottom/left/inset/z-index、透明度、阴影、transform-origin、transition 等)均由 `@gmcb/vite` 的 unocss 插件在构建时根据模板扫描动态生成,命名风格与 UnoCSS / Tailwind CSS 一致,支持 `px` 和 `rpx` 两种单位。
|
|
161
|
-
|
|
162
|
-
`blockList` 已预置全部内置静态类名,unocss 插件不会为这些类名生成重复 CSS。
|
|
163
|
-
|
|
164
|
-
## 常用组合示例
|
|
165
|
-
|
|
166
|
-
卡片布局:
|
|
167
|
-
|
|
168
|
-
```html
|
|
169
|
-
<view class="flex flex-col p-16px bg-white rounded-8px shadow-sm">
|
|
170
|
-
<text class="text-32px font-semibold text-main">标题</text>
|
|
171
|
-
<text class="text-24px text-tips mt-8px">描述内容</text>
|
|
172
|
-
</view>
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
居加载中状态:
|
|
176
|
-
|
|
177
|
-
```html
|
|
178
|
-
<view class="flex justify-center items-center h-200px">
|
|
179
|
-
<text class="text-28px text-tips">加载中...</text>
|
|
180
|
-
</view>
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
列表项(头像 + 文字):
|
|
184
|
-
|
|
185
|
-
```html
|
|
186
|
-
<view class="flex items-center px-16px py-12px">
|
|
187
|
-
<image class="w-80rpx h-80rpx rounded-full" :src="avatar" />
|
|
188
|
-
<view class="flex-1 ml-12px">
|
|
189
|
-
<text class="text-28px text-main truncate">用户名</text>
|
|
190
|
-
<text class="text-24px text-tips">副标题</text>
|
|
191
|
-
</view>
|
|
192
|
-
</view>
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
吸顶导航栏:
|
|
196
|
-
|
|
197
|
-
```html
|
|
198
|
-
<view class="sticky top-0 bg-light px-16px py-12px">
|
|
199
|
-
<text class="text-32px font-bold text-main">页面标题</text>
|
|
200
|
-
</view>
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
表单区域:
|
|
204
|
-
|
|
205
|
-
```html
|
|
206
|
-
<view class="flex flex-col px-16px py-12px bg-white mt-8px">
|
|
207
|
-
<view class="flex justify-between items-center py-12px border-b">
|
|
208
|
-
<text class="text-28px text-main">标签</text>
|
|
209
|
-
<text class="text-28px text-content">值</text>
|
|
210
|
-
</view>
|
|
211
|
-
</view>
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
两列等分布局:
|
|
215
|
-
|
|
216
|
-
```html
|
|
217
|
-
<view class="flex flex-wrap">
|
|
218
|
-
<view class="w-full flex" v-for="group in groups" :key="group.id">
|
|
219
|
-
<view class="flex-1 p-8px" v-for="item in group.items" :key="item.id">
|
|
220
|
-
<view class="bg-white rounded-8px p-16px">{{ item.name }}</view>
|
|
221
|
-
</view>
|
|
222
|
-
</view>
|
|
223
|
-
</view>
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
底部固定操作栏:
|
|
227
|
-
|
|
228
|
-
```html
|
|
229
|
-
<view class="fixed bottom-0 left-0 right-0 bg-white px-16px py-12px z-5">
|
|
230
|
-
<view class="flex">
|
|
231
|
-
<view class="flex-1 mr-8px bg-error rounded-8px py-12px text-center">
|
|
232
|
-
<text class="text-white text-28px font-medium">取消</text>
|
|
233
|
-
</view>
|
|
234
|
-
<view class="flex-1 bg-primary rounded-8px py-12px text-center">
|
|
235
|
-
<text class="text-white text-28px font-medium">确认</text>
|
|
236
|
-
</view>
|
|
237
|
-
</view>
|
|
238
|
-
</view>
|
|
239
|
-
```
|
|
1
|
+
# 工具样式类
|
|
2
|
+
|
|
3
|
+
`@zfqh/uniapp` 内置一组静态 SCSS 工具类,仅覆盖 **平台差异类** 和 **使用 `$uv-*` SCSS 变量的语义色类**。间距、尺寸、字号、圆角、透明度、阴影等通用原子类需要配合 `@gmcb/vite` 提供的 unocss 插件在构建时动态生成,两者命名风格与 UnoCSS / Tailwind CSS 一致。
|
|
4
|
+
|
|
5
|
+
## 前置依赖
|
|
6
|
+
|
|
7
|
+
使用完整原子类能力前,需要在项目的 `vite.config.js` 中注册 unocss 插件,并传入 `blockList` 避免与内置静态类冲突:
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import { defineConfig } from '@gmcb/vite';
|
|
11
|
+
import { unocss } from '@gmcb/vite/lib/plugins';
|
|
12
|
+
import { blockList } from '@gmcb/vite/lib/unocss';
|
|
13
|
+
|
|
14
|
+
export default defineConfig({
|
|
15
|
+
plugins: [
|
|
16
|
+
uni(),
|
|
17
|
+
unocss({
|
|
18
|
+
blockList,
|
|
19
|
+
}),
|
|
20
|
+
],
|
|
21
|
+
});
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`blockList` 已预置全部内置静态类名,unocss 插件不会为这些类名生成重复 CSS。
|
|
25
|
+
|
|
26
|
+
## 引入方式
|
|
27
|
+
|
|
28
|
+
在项目全局样式中导入一次即可。放在 `App.vue` 的 `<style>` 块:
|
|
29
|
+
|
|
30
|
+
```scss
|
|
31
|
+
@import '@zfqh/uniapp/lib/styles/index.scss';
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
此入口同时导入 `@gmcb/uv-ui/index.scss`,无需再单独导入 uv-ui 基础样式。
|
|
35
|
+
|
|
36
|
+
## 内置原子类
|
|
37
|
+
|
|
38
|
+
### Flex 布局
|
|
39
|
+
|
|
40
|
+
| 类名 | 效果 |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| `.flex` | flex 行布局 |
|
|
43
|
+
| `.flex-inline` | inline-flex 行布局 |
|
|
44
|
+
| `.flex-row` / `.flex-row-reverse` | 行方向 |
|
|
45
|
+
| `.flex-col` / `.flex-col-reverse` | 列方向 |
|
|
46
|
+
| `.flex-wrap` / `.flex-nowrap` / `.flex-wrap-reverse` | 换行控制 |
|
|
47
|
+
| `.flex-0` ~ `.flex-8` | `flex: 0` ~ `flex: 8` |
|
|
48
|
+
| `.flex-none` | `flex: 0` |
|
|
49
|
+
| `.items-start` / `.items-end` / `.items-center` / `.items-stretch` / `.items-baseline` | align-items |
|
|
50
|
+
| `.justify-start` / `.justify-end` / `.justify-center` / `.justify-between` / `.justify-around` | justify-content |
|
|
51
|
+
|
|
52
|
+
::: info 平台差异
|
|
53
|
+
- H5 平台下这些类包裹在 `page` 选择器内。
|
|
54
|
+
- `.flex` / `.flex-inline` 的 `display: flex` / `display: inline-flex` 仅在非 APP-NVUE 平台生效,nvue 端省略 display 属性(Weex 默认 flex 布局)。
|
|
55
|
+
:::
|
|
56
|
+
|
|
57
|
+
### 背景色
|
|
58
|
+
|
|
59
|
+
`.bg-{color}` 系列,颜色值读取 `$uv-*` SCSS 变量,跟随主题配置:
|
|
60
|
+
|
|
61
|
+
| 色组 | 可用类名 |
|
|
62
|
+
| --- | --- |
|
|
63
|
+
| primary | `.bg-primary`、`.bg-primary-dark`、`.bg-primary-light`、`.bg-primary-disabled` |
|
|
64
|
+
| warning | `.bg-warning`、`.bg-warning-dark`、`.bg-warning-light`、`.bg-warning-disabled` |
|
|
65
|
+
| success | `.bg-success`、`.bg-success-dark`、`.bg-success-light`、`.bg-success-disabled` |
|
|
66
|
+
| error | `.bg-error`、`.bg-error-dark`、`.bg-error-light`、`.bg-error-disabled` |
|
|
67
|
+
| info | `.bg-info`、`.bg-info-dark`、`.bg-info-light`、`.bg-info-disabled` |
|
|
68
|
+
|
|
69
|
+
基础背景:
|
|
70
|
+
|
|
71
|
+
| 类名 | SCSS 变量 | 说明 |
|
|
72
|
+
| --- | --- | --- |
|
|
73
|
+
| `.bg` | `$uv-bg-color` | 页面背景色 |
|
|
74
|
+
| `.bg-light` | `$uv-bg-light-color` | 浅色背景 |
|
|
75
|
+
| `.bg-disabled` | `$uv-disabled-color` | 禁用态背景 |
|
|
76
|
+
| `.bg-border` | `$uv-border-color` | 边框色背景 |
|
|
77
|
+
|
|
78
|
+
### 文字颜色
|
|
79
|
+
|
|
80
|
+
`.text-{color}` 系列,颜色值读取 `$uv-*` SCSS 变量:
|
|
81
|
+
|
|
82
|
+
| 色组 | 可用类名 |
|
|
83
|
+
| --- | --- |
|
|
84
|
+
| primary | `.text-primary`、`.text-primary-dark`、`.text-primary-light`、`.text-primary-disabled` |
|
|
85
|
+
| warning | `.text-warning`、`.text-warning-dark`、`.text-warning-light`、`.text-warning-disabled` |
|
|
86
|
+
| success | `.text-success`、`.text-success-dark`、`.text-success-light`、`.text-success-disabled` |
|
|
87
|
+
| error | `.text-error`、`.text-error-dark`、`.text-error-light`、`.text-error-disabled` |
|
|
88
|
+
| info | `.text-info`、`.text-info-dark`、`.text-info-light`、`.text-info-disabled` |
|
|
89
|
+
|
|
90
|
+
UI 语义色:
|
|
91
|
+
|
|
92
|
+
| 类名 | SCSS 变量 | 说明 |
|
|
93
|
+
| --- | --- | --- |
|
|
94
|
+
| `.text-main` | `$uv-main-color` | 主要文字 |
|
|
95
|
+
| `.text-content` | `$uv-content-color` | 正文文字 |
|
|
96
|
+
| `.text-tips` | `$uv-tips-color` | 辅助提示 |
|
|
97
|
+
| `.text-light` | `$uv-light-color` | 占位/水印 |
|
|
98
|
+
| `.text-border` | `$uv-border-color` | 边框色文字 |
|
|
99
|
+
| `.text-disabled` | `$uv-disabled-color` | 禁用态文字 |
|
|
100
|
+
|
|
101
|
+
### 边框
|
|
102
|
+
|
|
103
|
+
| 类名 | 效果 |
|
|
104
|
+
| --- | --- |
|
|
105
|
+
| `.border` | 1px solid 边框色(`$uv-border-color`) |
|
|
106
|
+
| `.border-half` | 0.5px solid 边框色 |
|
|
107
|
+
| `.border-t` / `.border-r` / `.border-b` / `.border-l` | 单边 1px solid 边框色 |
|
|
108
|
+
| `.border-x` / `.border-y` | 双轴 1px solid 边框色 |
|
|
109
|
+
|
|
110
|
+
语义色边框:
|
|
111
|
+
|
|
112
|
+
| 类名 | SCSS 变量 |
|
|
113
|
+
| --- | --- |
|
|
114
|
+
| `.border-primary` | `$uv-primary` |
|
|
115
|
+
| `.border-warning` | `$uv-warning` |
|
|
116
|
+
| `.border-success` | `$uv-success` |
|
|
117
|
+
| `.border-error` | `$uv-error` |
|
|
118
|
+
| `.border-info` | `$uv-info` |
|
|
119
|
+
|
|
120
|
+
### 定位
|
|
121
|
+
|
|
122
|
+
| 类名 | 效果 |
|
|
123
|
+
| --- | --- |
|
|
124
|
+
| `.relative` | position: relative |
|
|
125
|
+
| `.absolute` | position: absolute |
|
|
126
|
+
| `.fixed` | position: fixed |
|
|
127
|
+
| `.sticky` | position: sticky |
|
|
128
|
+
|
|
129
|
+
::: info 平台差异
|
|
130
|
+
H5 平台下这些类包裹在 `page` 选择器内,其他平台直接使用。
|
|
131
|
+
:::
|
|
132
|
+
|
|
133
|
+
### 文本截断
|
|
134
|
+
|
|
135
|
+
**非 nvue 平台**(`text-vue.scss`):
|
|
136
|
+
|
|
137
|
+
| 类名 | 效果 |
|
|
138
|
+
| --- | --- |
|
|
139
|
+
| `.truncate` | 单行截断(overflow ellipsis + nowrap) |
|
|
140
|
+
| `.line-clamp-1` ~ `.line-clamp-5` | 多行截断(`-webkit-line-clamp`) |
|
|
141
|
+
|
|
142
|
+
**nvue 平台**(`text-nvue.scss`):
|
|
143
|
+
|
|
144
|
+
| 类名 | 效果 |
|
|
145
|
+
| --- | --- |
|
|
146
|
+
| `.truncate` | 单行截断(Weex `lines: 1`) |
|
|
147
|
+
| `.line-clamp-1` ~ `.line-clamp-5` | 多行截断(Weex `lines: n`) |
|
|
148
|
+
|
|
149
|
+
### 全局重置
|
|
150
|
+
|
|
151
|
+
`reset-vue.scss` 在非 nvue 平台自动生效,不属于原子类,作用:
|
|
152
|
+
|
|
153
|
+
- 设置 `:root` 下的 `--window-bottom`、`--window-top`(非 H5)、`--window-height`、`--window-width` CSS 自定义属性。
|
|
154
|
+
- `page` 元素宽高 100%、`font-family: Microsoft YaHei`、颜色取 `$uv-main-color`、flex 列布局。
|
|
155
|
+
- `view`、`text`、`image` 设置 `box-sizing: border-box`。
|
|
156
|
+
- 修复 `.uni-scroll-view-refresher` 背景透明。
|
|
157
|
+
- 调整 `.ql-editor.ql-blank:before` 占位文字样式。
|
|
158
|
+
- 调整 `.uv-toast` 默认样式。
|
|
159
|
+
|
|
160
|
+
除上述内置类外,其余原子类(间距、尺寸、字号、字重、行高、对齐、基础背景色、边框宽度/样式、圆角、overflow、top/right/bottom/left/inset/z-index、透明度、阴影、transform-origin、transition 等)均由 `@gmcb/vite` 的 unocss 插件在构建时根据模板扫描动态生成,命名风格与 UnoCSS / Tailwind CSS 一致,支持 `px` 和 `rpx` 两种单位。
|
|
161
|
+
|
|
162
|
+
`blockList` 已预置全部内置静态类名,unocss 插件不会为这些类名生成重复 CSS。
|
|
163
|
+
|
|
164
|
+
## 常用组合示例
|
|
165
|
+
|
|
166
|
+
卡片布局:
|
|
167
|
+
|
|
168
|
+
```html
|
|
169
|
+
<view class="flex flex-col p-16px bg-white rounded-8px shadow-sm">
|
|
170
|
+
<text class="text-32px font-semibold text-main">标题</text>
|
|
171
|
+
<text class="text-24px text-tips mt-8px">描述内容</text>
|
|
172
|
+
</view>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
居加载中状态:
|
|
176
|
+
|
|
177
|
+
```html
|
|
178
|
+
<view class="flex justify-center items-center h-200px">
|
|
179
|
+
<text class="text-28px text-tips">加载中...</text>
|
|
180
|
+
</view>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
列表项(头像 + 文字):
|
|
184
|
+
|
|
185
|
+
```html
|
|
186
|
+
<view class="flex items-center px-16px py-12px">
|
|
187
|
+
<image class="w-80rpx h-80rpx rounded-full" :src="avatar" />
|
|
188
|
+
<view class="flex-1 ml-12px">
|
|
189
|
+
<text class="text-28px text-main truncate">用户名</text>
|
|
190
|
+
<text class="text-24px text-tips">副标题</text>
|
|
191
|
+
</view>
|
|
192
|
+
</view>
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
吸顶导航栏:
|
|
196
|
+
|
|
197
|
+
```html
|
|
198
|
+
<view class="sticky top-0 bg-light px-16px py-12px">
|
|
199
|
+
<text class="text-32px font-bold text-main">页面标题</text>
|
|
200
|
+
</view>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
表单区域:
|
|
204
|
+
|
|
205
|
+
```html
|
|
206
|
+
<view class="flex flex-col px-16px py-12px bg-white mt-8px">
|
|
207
|
+
<view class="flex justify-between items-center py-12px border-b">
|
|
208
|
+
<text class="text-28px text-main">标签</text>
|
|
209
|
+
<text class="text-28px text-content">值</text>
|
|
210
|
+
</view>
|
|
211
|
+
</view>
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
两列等分布局:
|
|
215
|
+
|
|
216
|
+
```html
|
|
217
|
+
<view class="flex flex-wrap">
|
|
218
|
+
<view class="w-full flex" v-for="group in groups" :key="group.id">
|
|
219
|
+
<view class="flex-1 p-8px" v-for="item in group.items" :key="item.id">
|
|
220
|
+
<view class="bg-white rounded-8px p-16px">{{ item.name }}</view>
|
|
221
|
+
</view>
|
|
222
|
+
</view>
|
|
223
|
+
</view>
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
底部固定操作栏:
|
|
227
|
+
|
|
228
|
+
```html
|
|
229
|
+
<view class="fixed bottom-0 left-0 right-0 bg-white px-16px py-12px z-5">
|
|
230
|
+
<view class="flex">
|
|
231
|
+
<view class="flex-1 mr-8px bg-error rounded-8px py-12px text-center">
|
|
232
|
+
<text class="text-white text-28px font-medium">取消</text>
|
|
233
|
+
</view>
|
|
234
|
+
<view class="flex-1 bg-primary rounded-8px py-12px text-center">
|
|
235
|
+
<text class="text-white text-28px font-medium">确认</text>
|
|
236
|
+
</view>
|
|
237
|
+
</view>
|
|
238
|
+
</view>
|
|
239
|
+
```
|
package/lib/apis/request.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import http from '@gmcb/uv-ui/libs/function/http';
|
|
2
2
|
declare const GET: (url: any, data?: {}, options?: {}) => any, POST: (url: any, data?: {}, options?: {}) => any, PUT: (url: any, data?: {}, options?: {}) => any, DELETE: (url: any, data?: {}, options?: {}) => any;
|
|
3
3
|
export { GET, POST, PUT, DELETE };
|
|
4
|
-
export default
|
|
4
|
+
export default http;
|
package/lib/apis/request.js
CHANGED
|
@@ -3,8 +3,8 @@ import app from '../configs/app';
|
|
|
3
3
|
import { createRequest, createInterceptors } from '../utils/request';
|
|
4
4
|
import { LANGUAGE } from '../utils/consts';
|
|
5
5
|
import query from '../utils/query';
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
import http from '@gmcb/uv-ui/libs/function/http';
|
|
7
|
+
http.interceptors.request.use((conf) => {
|
|
8
8
|
const store = uni.$store;
|
|
9
9
|
if (store) {
|
|
10
10
|
const { tenantId } = store.state.login?.info || {};
|
|
@@ -21,7 +21,7 @@ request.interceptors.request.use((conf) => {
|
|
|
21
21
|
}
|
|
22
22
|
return conf;
|
|
23
23
|
});
|
|
24
|
-
createInterceptors(
|
|
25
|
-
const { GET, POST, PUT, DELETE } = createRequest(
|
|
24
|
+
createInterceptors(http);
|
|
25
|
+
const { GET, POST, PUT, DELETE } = createRequest(http, { baseURL: api.baseUrl });
|
|
26
26
|
export { GET, POST, PUT, DELETE };
|
|
27
|
-
export default
|
|
27
|
+
export default http;
|
package/lib/styles/bg.scss
CHANGED
package/lib/styles/flex.scss
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
/* #ifdef H5 */
|
|
2
|
-
page {
|
|
1
|
+
/* #ifdef H5 */
|
|
2
|
+
page {
|
|
3
3
|
/* #endif */
|
|
4
|
-
.flex {
|
|
4
|
+
.flex {
|
|
5
5
|
/* #ifndef APP-NVUE */
|
|
6
|
-
display: flex;
|
|
6
|
+
display: flex;
|
|
7
7
|
/* #endif */
|
|
8
8
|
flex-direction: row;
|
|
9
9
|
}
|
|
10
|
-
.flex-inline {
|
|
10
|
+
.flex-inline {
|
|
11
11
|
/* #ifndef APP-NVUE */
|
|
12
|
-
display: inline-flex;
|
|
12
|
+
display: inline-flex;
|
|
13
13
|
/* #endif */
|
|
14
14
|
flex-direction: row;
|
|
15
15
|
}
|
|
@@ -72,7 +72,7 @@ page {
|
|
|
72
72
|
.justify-around {
|
|
73
73
|
justify-content: space-around;
|
|
74
74
|
}
|
|
75
|
-
/* #ifdef H5 */
|
|
76
|
-
}
|
|
75
|
+
/* #ifdef H5 */
|
|
76
|
+
}
|
|
77
77
|
/* #endif */
|
|
78
78
|
|
package/lib/styles/index.scss
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
@import '@gmcb/uv-ui/index.scss';
|
|
2
2
|
@import './border.scss';
|
|
3
3
|
@import './bg.scss';
|
|
4
|
-
@import './text.scss';
|
|
4
|
+
@import './text.scss';
|
|
5
5
|
@import './layout.scss';
|
|
6
6
|
@import './flex.scss';
|
|
7
7
|
/* #ifndef APP-NVUE */
|
|
8
|
-
@import './reset-vue.scss';
|
|
8
|
+
@import './reset-vue.scss';
|
|
9
9
|
@import './text-vue.scss';
|
|
10
10
|
/* #endif */
|
|
11
11
|
/* #ifdef APP-NVUE */
|
|
12
|
-
@import './text-nvue.scss';
|
|
12
|
+
@import './text-nvue.scss';
|
|
13
13
|
/* #endif */
|
package/lib/styles/layout.scss
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
/* #ifdef H5 */
|
|
2
|
-
page {
|
|
1
|
+
/* #ifdef H5 */
|
|
2
|
+
page {
|
|
3
3
|
/* #endif */
|
|
4
|
-
.relative {
|
|
5
|
-
position: relative;
|
|
6
|
-
}
|
|
7
|
-
.absolute {
|
|
8
|
-
position: absolute;
|
|
9
|
-
}
|
|
10
|
-
.fixed {
|
|
11
|
-
position: fixed;
|
|
12
|
-
}
|
|
13
|
-
.sticky {
|
|
14
|
-
position: sticky;
|
|
15
|
-
}
|
|
4
|
+
.relative {
|
|
5
|
+
position: relative;
|
|
6
|
+
}
|
|
7
|
+
.absolute {
|
|
8
|
+
position: absolute;
|
|
9
|
+
}
|
|
10
|
+
.fixed {
|
|
11
|
+
position: fixed;
|
|
12
|
+
}
|
|
13
|
+
.sticky {
|
|
14
|
+
position: sticky;
|
|
15
|
+
}
|
|
16
16
|
/* #ifdef H5 */
|
|
17
17
|
}
|
|
18
18
|
/* #endif */
|
package/lib/styles/text.scss
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zfqh/uniapp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "uniapp公共模块",
|
|
5
5
|
"author": "yinjiazeng@163.com",
|
|
6
6
|
"license": "MIT",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"README.md"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@gmcb/uv-ui": "0.3.
|
|
30
|
+
"@gmcb/uv-ui": "0.3.2",
|
|
31
31
|
"@tencentcloud/chat-uikit-engine": "^2.3.2",
|
|
32
32
|
"@tencentcloud/tui-core": "^2.3.2",
|
|
33
33
|
"crypto-js": "^4.2.0",
|
|
@@ -44,6 +44,5 @@
|
|
|
44
44
|
"@types/crypto-js": "^4.2.2",
|
|
45
45
|
"@types/qs": "^6.9.16",
|
|
46
46
|
"@types/url-parse": "^1.4.11"
|
|
47
|
-
}
|
|
48
|
-
"gitHead": "51d155379d352d8507622d2ccb89a6442892b2b2"
|
|
47
|
+
}
|
|
49
48
|
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2024 aniu
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|