sard-uniapp 1.1.0-beta.1 → 1.1.0-rc.2

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/README.md CHANGED
@@ -7,8 +7,12 @@
7
7
  <p align="center">sard-uniapp 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库。</p>
8
8
 
9
9
  <p align="center">
10
- 📖 <a href="http://sutras.gitee.io/sard-uniapp-docs">文档网站</a>&nbsp;&nbsp;&nbsp;&nbsp;
11
- 🧑🏻‍🏫 <a href="http://sutras.gitee.io/sard-uniapp-docs/mobile/">案例演示</a>
10
+ 📖 <a href="http://sutras.gitee.io/sard-uniapp-docs">文档网站 (国内站)</a>&nbsp;&nbsp;&nbsp;&nbsp;
11
+ 🧑🏻‍🏫 <a href="http://sutras.gitee.io/sard-uniapp-docs/mobile/">案例演示 (国内站)</a>&nbsp;&nbsp;&nbsp;&nbsp;
12
+ </p>
13
+ <p align="center">
14
+ 📖 <a href="http://sutras.github.io/sard-uniapp-docs">文档网站 (国外站)</a>&nbsp;&nbsp;&nbsp;&nbsp;
15
+ 🧑🏻‍🏫 <a href="http://sutras.github.io/sard-uniapp-docs/mobile/">案例演示 (国外站)</a>&nbsp;&nbsp;&nbsp;&nbsp;
12
16
  </p>
13
17
 
14
18
  ---
package/changelog.md CHANGED
@@ -1,5 +1,20 @@
1
+ ## 1.1.0-rc.2 (2024-04-27)
2
+
3
+ * docs: 添加github文档和演示链接 ([3b1c445](https://github.com/sutras/sard-uniapp/commit/3b1c445))
4
+ * docs: close #16 ([e33dfa7](https://github.com/sutras/sard-uniapp/commit/e33dfa7)), closes [#16](https://github.com/sutras/sard-uniapp/issues/16)
5
+ * dropdown-item点击变化值后,没有回传 ([3f21060](https://github.com/sutras/sard-uniapp/commit/3f21060))
6
+
7
+
8
+
9
+ ## 1.1.0-rc.1 (2024-04-08)
10
+
11
+ * feat: 新增load-more组件, stepper组件新增size属性 ([f1e1c79](https://github.com/sutras/sard-uniapp/commit/f1e1c79))
12
+
13
+
14
+
1
15
  ## 1.1.0-beta.1 (2024-04-06)
2
16
 
17
+ * feat: 新增pull-down-refresh组件, slider组件新增时间, 重构loading组件, 其他优化 ([802816a](https://github.com/sutras/sard-uniapp/commit/802816a))
3
18
  * docs: update quickstart.md ([fa280f6](https://github.com/sutras/sard-uniapp/commit/fa280f6))
4
19
  * build: 新增changelog构建流程 ([e1e862d](https://github.com/sutras/sard-uniapp/commit/e1e862d))
5
20
 
@@ -17,7 +17,7 @@ const __default__ = {
17
17
  };
18
18
  export default /* @__PURE__ */ _defineComponent({
19
19
  ...__default__,
20
- __name: "index",
20
+ __name: "_template",
21
21
  props: _templateProps,
22
22
  emits: ["click"],
23
23
  setup(__props, { expose: __expose }) {
@@ -173,6 +173,12 @@ export declare const defaultConfig: {
173
173
  percent: number;
174
174
  thickness: number;
175
175
  };
176
+ pullDownRefresh: {
177
+ threshold: number;
178
+ headerHeight: number;
179
+ transitionDuration: number;
180
+ doneDuration: number;
181
+ };
176
182
  radioGroup: {
177
183
  direction: string;
178
184
  validateEvent: boolean;
@@ -212,6 +218,7 @@ export declare const defaultConfig: {
212
218
  pressTime: number;
213
219
  interval: number;
214
220
  validateEvent: boolean;
221
+ size: string;
215
222
  };
216
223
  steps: {
217
224
  current: number;
@@ -478,6 +485,12 @@ export declare function useConfigContext(): DeepPartial<{
478
485
  percent: number;
479
486
  thickness: number;
480
487
  };
488
+ pullDownRefresh: {
489
+ threshold: number;
490
+ headerHeight: number;
491
+ transitionDuration: number;
492
+ doneDuration: number;
493
+ };
481
494
  radioGroup: {
482
495
  direction: string;
483
496
  validateEvent: boolean;
@@ -517,6 +530,7 @@ export declare function useConfigContext(): DeepPartial<{
517
530
  pressTime: number;
518
531
  interval: number;
519
532
  validateEvent: boolean;
533
+ size: string;
520
534
  };
521
535
  steps: {
522
536
  current: number;
@@ -174,6 +174,12 @@ export const defaultConfig = {
174
174
  percent: 0,
175
175
  thickness: 4,
176
176
  },
177
+ pullDownRefresh: {
178
+ threshold: 50,
179
+ headerHeight: 50,
180
+ transitionDuration: 300,
181
+ doneDuration: 0,
182
+ },
177
183
  radioGroup: {
178
184
  direction: 'vertical',
179
185
  validateEvent: true,
@@ -213,6 +219,7 @@ export const defaultConfig = {
213
219
  pressTime: 350,
214
220
  interval: 150,
215
221
  validateEvent: true,
222
+ size: 'medium',
216
223
  },
217
224
  steps: {
218
225
  current: 0,
@@ -199,6 +199,7 @@ export default /* @__PURE__ */ _defineComponent({
199
199
  const onOptionClick = (item) => {
200
200
  if (item.value !== innerValue.value) {
201
201
  innerValue.value = item.value;
202
+ emit("update:model-value", item.value);
202
203
  }
203
204
  setInnerVisible(false);
204
205
  };
@@ -0,0 +1,33 @@
1
+ import { type PropType, type StyleValue } from 'vue';
2
+ export type LoadMoreStatus = 'incomplete' | 'loading' | 'complete' | 'error';
3
+ export interface LoadMoreProps {
4
+ rootStyle?: StyleValue;
5
+ rootClass?: string;
6
+ status?: LoadMoreStatus;
7
+ incompleteText?: string;
8
+ loadingText?: string;
9
+ completeText?: string;
10
+ errorText?: string;
11
+ }
12
+ export declare const loadMoreProps: {
13
+ rootStyle: PropType<StyleValue>;
14
+ rootClass: StringConstructor;
15
+ status: {
16
+ type: PropType<LoadMoreStatus>;
17
+ default: string;
18
+ };
19
+ incompleteText: StringConstructor;
20
+ loadingText: StringConstructor;
21
+ completeText: StringConstructor;
22
+ errorText: StringConstructor;
23
+ };
24
+ export interface LoadMoreSlots {
25
+ incomplete(props: Record<string, never>): any;
26
+ loading(props: Record<string, never>): any;
27
+ complete(props: Record<string, never>): any;
28
+ error(props: Record<string, never>): any;
29
+ }
30
+ export interface LoadMoreEmits {
31
+ (e: 'load-more'): void;
32
+ (e: 'reload'): void;
33
+ }
@@ -0,0 +1,12 @@
1
+ export const loadMoreProps = {
2
+ rootStyle: [String, Object, Array],
3
+ rootClass: String,
4
+ status: {
5
+ type: String,
6
+ default: 'incomplete',
7
+ },
8
+ incompleteText: String,
9
+ loadingText: String,
10
+ completeText: String,
11
+ errorText: String,
12
+ };
@@ -0,0 +1 @@
1
+ export type { LoadMoreStatus, LoadMoreProps, LoadMoreSlots, LoadMoreEmits, } from './common';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ @use '../style/base' as *;
2
+
3
+ @include bem(load-more) {
4
+ @include b() {
5
+ @include universal;
6
+ flex-direction: row;
7
+ align-items: center;
8
+ justify-content: center;
9
+ height: var(--sar-load-more-height);
10
+ font-size: var(--sar-load-more-font-size);
11
+ color: var(--sar-load-more-color);
12
+
13
+ @include m(incomplete, error) {
14
+ cursor: pointer;
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,65 @@
1
+ <template>
2
+ <view :class="loadMoreClass" :style="loadMoreStyle" @click="onClick">
3
+ <slot v-if="status === 'incomplete'" name="incomplete">
4
+ {{ incompleteText || t('incompleteText') }}
5
+ </slot>
6
+ <slot v-else-if="status === 'loading'" name="loading">
7
+ <sar-loading>
8
+ {{ loadingText || t('loadingText') }}
9
+ </sar-loading>
10
+ </slot>
11
+ <slot v-else-if="status === 'complete'" name="complete">
12
+ {{ completeText || t('completeText') }}
13
+ </slot>
14
+ <slot v-else-if="status === 'error'" name="error">
15
+ {{ errorText || t('errorText') }}
16
+ </slot>
17
+ </view>
18
+ </template>
19
+
20
+ <script lang="ts">
21
+ import { defineComponent as _defineComponent } from "vue";
22
+ import { computed } from "vue";
23
+ import { classNames, stringifyStyle, createBem } from "../../utils";
24
+ import { loadMoreProps } from "./common";
25
+ import { useTranslate } from "../locale";
26
+ import SarLoading from "../loading/loading.vue";
27
+ const __default__ = {
28
+ options: {
29
+ virtualHost: true,
30
+ styleIsolation: "shared"
31
+ }
32
+ };
33
+ export default /* @__PURE__ */ _defineComponent({
34
+ ...__default__,
35
+ __name: "load-more",
36
+ props: loadMoreProps,
37
+ emits: ["load-more", "reload"],
38
+ setup(__props, { expose: __expose, emit: __emit }) {
39
+ __expose();
40
+ const props = __props;
41
+ const emit = __emit;
42
+ const bem = createBem("load-more");
43
+ const { t } = useTranslate("loadMore");
44
+ const onClick = () => {
45
+ if (props.status === "incomplete") {
46
+ emit("load-more");
47
+ } else if (props.status === "error") {
48
+ emit("reload");
49
+ }
50
+ };
51
+ const loadMoreClass = computed(() => {
52
+ return classNames(bem.b(), bem.m(props.status), props.rootClass);
53
+ });
54
+ const loadMoreStyle = computed(() => {
55
+ return stringifyStyle(props.rootStyle);
56
+ });
57
+ const __returned__ = { props, emit, bem, t, onClick, loadMoreClass, loadMoreStyle, SarLoading };
58
+ return __returned__;
59
+ }
60
+ });
61
+ </script>
62
+
63
+ <style lang="scss">
64
+ @import './index.scss';
65
+ </style>
@@ -0,0 +1,7 @@
1
+ // #variables
2
+ page {
3
+ --sar-load-more-height: 100rpx;
4
+ --sar-load-more-font-size: var(--sar-text-sm);
5
+ --sar-load-more-color: var(--sar-tertiary-color);
6
+ }
7
+ // #endvariables
@@ -82,6 +82,12 @@ declare const _default: {
82
82
  };
83
83
  };
84
84
  };
85
+ loadMore: {
86
+ incompleteText: string;
87
+ loadingText: string;
88
+ completeText: string;
89
+ errorText: string;
90
+ };
85
91
  pagination: {
86
92
  previous: string;
87
93
  next: string;
@@ -83,6 +83,12 @@ export default {
83
83
  },
84
84
  },
85
85
  },
86
+ loadMore: {
87
+ incompleteText: '加载更多',
88
+ loadingText: '加载中...',
89
+ completeText: '没有更多了',
90
+ errorText: '请求失败,点击重新加载',
91
+ },
86
92
  pagination: {
87
93
  previous: '上一页',
88
94
  next: '下一页',
@@ -8,6 +8,7 @@ export interface PullDownRefreshProps {
8
8
  loading?: boolean;
9
9
  transitionDuration?: number;
10
10
  doneDuration?: number;
11
+ disabled?: number;
11
12
  }
12
13
  export declare const pullDownRefreshProps: {
13
14
  rootStyle: PropType<StyleValue>;
@@ -32,6 +33,10 @@ export declare const pullDownRefreshProps: {
32
33
  type: NumberConstructor;
33
34
  default: number;
34
35
  };
36
+ disabled: {
37
+ type: BooleanConstructor;
38
+ default: boolean;
39
+ };
35
40
  };
36
41
  export interface PullDownRefreshSlots {
37
42
  default(props: Record<string, never>): any;
@@ -1,20 +1,22 @@
1
+ import { defaultConfig } from '../config';
1
2
  // const props = withDefaults(defineProps<PullDownRefreshProps>(), {
2
3
  // threshold: 50,
3
4
  // headerHeight: 50,
4
5
  // loading: false,
5
6
  // transitionDuration: 300,
6
7
  // doneDuration: 0,
8
+ // disabled: false,
7
9
  // })
8
10
  export const pullDownRefreshProps = {
9
11
  rootStyle: [String, Object, Array],
10
12
  rootClass: String,
11
13
  threshold: {
12
14
  type: Number,
13
- default: 50,
15
+ default: defaultConfig.pullDownRefresh.threshold,
14
16
  },
15
17
  headerHeight: {
16
18
  type: Number,
17
- default: 50,
19
+ default: defaultConfig.pullDownRefresh.headerHeight,
18
20
  },
19
21
  loading: {
20
22
  type: Boolean,
@@ -22,10 +24,14 @@ export const pullDownRefreshProps = {
22
24
  },
23
25
  transitionDuration: {
24
26
  type: Number,
25
- default: 300,
27
+ default: defaultConfig.pullDownRefresh.transitionDuration,
26
28
  },
27
29
  doneDuration: {
28
30
  type: Number,
29
- default: 0,
31
+ default: defaultConfig.pullDownRefresh.doneDuration,
32
+ },
33
+ disabled: {
34
+ type: Boolean,
35
+ default: false,
30
36
  },
31
37
  };
@@ -40,6 +40,7 @@
40
40
  :data-threshold="threshold"
41
41
  :data-headerheight="headerHeight"
42
42
  :data-duration="transitionDuration"
43
+ :data-disabled="disabled"
43
44
  @touchstart="wxsswipe.onTouchStart"
44
45
  @touchmove="wxsswipe.onTouchMove"
45
46
  @touchend="wxsswipe.onTouchEnd"
@@ -143,7 +144,7 @@ export default {
143
144
  let lockDirection = "";
144
145
  const isDragging = ref(false);
145
146
  const onTouchStart = (event) => {
146
- if (status.value !== "initial" || scrollTop.value !== 0) {
147
+ if (props.disabled || status.value !== "initial" || scrollTop.value !== 0) {
147
148
  return;
148
149
  }
149
150
  startX = event.touches[0].clientX;
@@ -12,7 +12,11 @@ function setStyle(instance, offsetY, duration) {
12
12
 
13
13
  function onTouchStart(event) {
14
14
  var dataset = event.instance.getDataset()
15
- if (dataset.status !== 'initial' || dataset.scrolltop !== 0) {
15
+ if (
16
+ dataset.disabled ||
17
+ dataset.status !== 'initial' ||
18
+ dataset.scrolltop !== 0
19
+ ) {
16
20
  return
17
21
  }
18
22
  startX = event.touches[0].clientX
@@ -17,6 +17,7 @@ export interface StepperProps {
17
17
  pressTime?: number;
18
18
  interval?: number;
19
19
  validateEvent?: boolean;
20
+ size?: 'small' | 'medium';
20
21
  }
21
22
  export declare const stepperProps: {
22
23
  rootStyle: PropType<StyleValue>;
@@ -60,6 +61,10 @@ export declare const stepperProps: {
60
61
  type: BooleanConstructor;
61
62
  default: boolean;
62
63
  };
64
+ size: {
65
+ type: StringConstructor;
66
+ default: string;
67
+ };
63
68
  };
64
69
  export interface StepperEmits {
65
70
  (e: 'update:model-value', value: number | string | undefined): void;
@@ -8,6 +8,7 @@ import { defaultConfig } from '../config';
8
8
  // pressTime: 350,
9
9
  // interval: 150,
10
10
  // validateEvent: true,
11
+ // size: 'medium',
11
12
  // })
12
13
  export const stepperProps = {
13
14
  rootStyle: [String, Object, Array],
@@ -51,4 +52,8 @@ export const stepperProps = {
51
52
  type: Boolean,
52
53
  default: defaultConfig.stepper.validateEvent,
53
54
  },
55
+ size: {
56
+ type: String,
57
+ default: defaultConfig.stepper.size,
58
+ },
54
59
  };
@@ -15,7 +15,7 @@
15
15
  flex: none;
16
16
  justify-content: center;
17
17
  align-items: center;
18
- width: var(--sar-stepper-button-width);
18
+ width: var(--sar-stepper-height);
19
19
  font-size: var(--sar-stepper-button-font-size);
20
20
  background-color: var(--sar-stepper-bg);
21
21
 
@@ -72,4 +72,18 @@
72
72
  color: var(--sar-stepper-input-disabled-color);
73
73
  }
74
74
  }
75
+
76
+ @include m(small) {
77
+ height: var(--sar-stepper-height-sm);
78
+
79
+ @include e(input) {
80
+ width: var(--sar-stepper-input-width-sm);
81
+ font-size: var(--sar-stepper-input-font-size-sm);
82
+ }
83
+
84
+ @include e(button) {
85
+ width: var(--sar-stepper-height-sm);
86
+ font-size: var(--sar-stepper-button-font-size-sm);
87
+ }
88
+ }
75
89
  }
@@ -24,7 +24,7 @@
24
24
  :placeholder-class="bem.e('placeholder')"
25
25
  :value="inputValue"
26
26
  :disabled="isDisabled || isReadonly"
27
- :stype="inputStyle"
27
+ :style="inputStyle"
28
28
  @input="onInput"
29
29
  @blur="onBlur"
30
30
  @focus="onFocus"
@@ -192,6 +192,7 @@ export default /* @__PURE__ */ _defineComponent({
192
192
  const stepperClass = computed(() => {
193
193
  return classNames(
194
194
  bem.b(),
195
+ bem.m(props.size),
195
196
  bem.m("disabled", isDisabled.value),
196
197
  bem.m("readonly", isReadonly.value),
197
198
  props.rootClass
@@ -1,18 +1,22 @@
1
1
  // #variables
2
2
  page {
3
- --sar-stepper-height: 72rpx;
3
+ --sar-stepper-height: 64rpx;
4
4
  --sar-stepper-gap: 8rpx;
5
5
  --sar-stepper-bg: var(--sar-secondary-bg);
6
6
 
7
- --sar-stepper-input-width: 100rpx;
7
+ --sar-stepper-input-width: 80rpx;
8
8
  --sar-stepper-input-padding-x: 10rpx;
9
9
  --sar-stepper-input-font-size: var(--sar-text-base);
10
10
  --sar-stepper-input-disabled-color: var(--sar-disabled-color);
11
11
  --sar-stepper-placeholder-color: var(--sar-quaternary-color);
12
12
 
13
- --sar-stepper-button-width: var(--sar-stepper-height);
14
- --sar-stepper-button-font-size: 36rpx;
13
+ --sar-stepper-button-font-size: var(--sar-text-lg);
15
14
  --sar-stepper-button-border-radius: var(--sar-rounded-sm);
16
15
  --sar-stepper-button-active-bg: var(--sar-active-deep-bg);
16
+
17
+ --sar-stepper-height-sm: 56rpx;
18
+ --sar-stepper-input-width-sm: 64rpx;
19
+ --sar-stepper-input-font-size-sm: var(--sar-text-sm);
20
+ --sar-stepper-button-font-size-sm: var(--sar-text-base);
17
21
  }
18
22
  // #endvariables
package/global.d.ts CHANGED
@@ -35,6 +35,7 @@ import SarKeyboard from './components/keyboard/keyboard.vue'
35
35
  import SarList from './components/list/list.vue'
36
36
  import SarListItem from './components/list-item/list-item.vue'
37
37
  import SarLoading from './components/loading/loading.vue'
38
+ import SarLoadMore from './components/load-more/load-more.vue'
38
39
  import SarMenu from './components/menu/menu.vue'
39
40
  import SarNavbar from './components/navbar/navbar.vue'
40
41
  import SarNavbarItem from './components/navbar-item/navbar-item.vue'
@@ -118,6 +119,7 @@ declare module '@vue/runtime-core' {
118
119
  SarList: typeof SarList
119
120
  SarListItem: typeof SarListItem
120
121
  SarLoading: typeof SarLoading
122
+ SarLoadMore: typeof SarLoadMore
121
123
  SarMenu: typeof SarMenu
122
124
  SarNavbar: typeof SarNavbar
123
125
  SarNavbarItem: typeof SarNavbarItem
package/index.d.ts CHANGED
@@ -27,6 +27,7 @@ export * from './components/keyboard';
27
27
  export * from './components/layout';
28
28
  export * from './components/list';
29
29
  export * from './components/loading';
30
+ export * from './components/load-more';
30
31
  export * from './components/locale';
31
32
  export * from './components/menu';
32
33
  export * from './components/navbar';
package/index.js CHANGED
@@ -27,6 +27,7 @@ export * from './components/keyboard';
27
27
  export * from './components/layout';
28
28
  export * from './components/list';
29
29
  export * from './components/loading';
30
+ export * from './components/load-more';
30
31
  export * from './components/locale';
31
32
  export * from './components/menu';
32
33
  export * from './components/navbar';
package/index.scss CHANGED
@@ -20,6 +20,7 @@
20
20
  @use './components/keyboard/variables.scss' as *;
21
21
  @use './components/list/variables.scss' as *;
22
22
  @use './components/loading/variables.scss' as *;
23
+ @use './components/load-more/variables.scss' as *;
23
24
  @use './components/menu/variables.scss' as *;
24
25
  @use './components/navbar/variables.scss' as *;
25
26
  @use './components/notice-bar/variables.scss' as *;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "id": "sard-uniapp",
3
3
  "name": "sard-uniapp",
4
4
  "displayName": "sard-uniapp",
5
- "version": "1.1.0-beta.1",
5
+ "version": "1.1.0-rc.2",
6
6
  "description": "sard-uniapp 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库",
7
7
  "keywords": [
8
8
  "uniapp",