uniapp-dyckui 4.1.1

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.
Files changed (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +104 -0
  3. package/dist/assets/style.BFlsbpSj.css +1472 -0
  4. package/dist/index.cjs.js +1380 -0
  5. package/dist/index.cjs.js.map +1 -0
  6. package/dist/index.es.js +1380 -0
  7. package/dist/index.es.js.map +1 -0
  8. package/dist/src/components/MyComs/Button/index.d.ts +3 -0
  9. package/dist/src/components/MyComs/Button/index.vue.d.ts +93 -0
  10. package/dist/src/components/MyComs/Dialog/index.d.ts +3 -0
  11. package/dist/src/components/MyComs/Dialog/index.vue.d.ts +65 -0
  12. package/dist/src/components/MyComs/Divider/index.d.ts +3 -0
  13. package/dist/src/components/MyComs/Divider/index.vue.d.ts +53 -0
  14. package/dist/src/components/MyComs/DropdownSelect/dropdownSelect.d.ts +10 -0
  15. package/dist/src/components/MyComs/DropdownSelect/index.d.ts +4 -0
  16. package/dist/src/components/MyComs/DropdownSelect/index.vue.d.ts +26 -0
  17. package/dist/src/components/MyComs/DropdownSelect/type.d.ts +13 -0
  18. package/dist/src/components/MyComs/DropdownWithBadge/dropdownWithBadge.d.ts +5 -0
  19. package/dist/src/components/MyComs/DropdownWithBadge/index.d.ts +4 -0
  20. package/dist/src/components/MyComs/DropdownWithBadge/index.vue.d.ts +26 -0
  21. package/dist/src/components/MyComs/DropdownWithBadge/type.d.ts +9 -0
  22. package/dist/src/components/MyComs/FilterDrawer/hasBadge.d.ts +8 -0
  23. package/dist/src/components/MyComs/FilterDrawer/index.d.ts +5 -0
  24. package/dist/src/components/MyComs/FilterDrawer/index.vue.d.ts +26 -0
  25. package/dist/src/components/MyComs/FilterDrawer/type.d.ts +8 -0
  26. package/dist/src/components/MyComs/FilterDrawer/useFilterDrawer.d.ts +10 -0
  27. package/dist/src/components/MyComs/InfiniteScroll/index.d.ts +3 -0
  28. package/dist/src/components/MyComs/InfiniteScroll/index.vue.d.ts +65 -0
  29. package/dist/src/components/MyComs/Popup/index.d.ts +3 -0
  30. package/dist/src/components/MyComs/Popup/index.vue.d.ts +119 -0
  31. package/dist/src/components/MyComs/PullRefresh/index.d.ts +3 -0
  32. package/dist/src/components/MyComs/PullRefresh/index.vue.d.ts +117 -0
  33. package/dist/src/components/MyComs/Swiper/index.d.ts +3 -0
  34. package/dist/src/components/MyComs/Swiper/index.vue.d.ts +79 -0
  35. package/dist/src/components/MyComs/Toast/index.d.ts +3 -0
  36. package/dist/src/components/MyComs/Toast/index.vue.d.ts +108 -0
  37. package/dist/src/components/MyComs/index.d.ts +20 -0
  38. package/package.json +218 -0
  39. package/src/components/MyComs/Button/README.md +235 -0
  40. package/src/components/MyComs/Button/index.ts +3 -0
  41. package/src/components/MyComs/Button/index.vue +413 -0
  42. package/src/components/MyComs/Dialog/README.md +160 -0
  43. package/src/components/MyComs/Dialog/index.ts +2 -0
  44. package/src/components/MyComs/Dialog/index.vue +275 -0
  45. package/src/components/MyComs/Divider/README.md +0 -0
  46. package/src/components/MyComs/Divider/index.ts +2 -0
  47. package/src/components/MyComs/Divider/index.vue +106 -0
  48. package/src/components/MyComs/DropdownSelect/README.md +112 -0
  49. package/src/components/MyComs/DropdownSelect/dropdownSelect.less +75 -0
  50. package/src/components/MyComs/DropdownSelect/dropdownSelect.ts +59 -0
  51. package/src/components/MyComs/DropdownSelect/index.ts +4 -0
  52. package/src/components/MyComs/DropdownSelect/index.vue +88 -0
  53. package/src/components/MyComs/DropdownSelect/type.ts +15 -0
  54. package/src/components/MyComs/DropdownWithBadge/README.md +77 -0
  55. package/src/components/MyComs/DropdownWithBadge/dropdownWithBadge.less +11 -0
  56. package/src/components/MyComs/DropdownWithBadge/dropdownWithBadge.ts +10 -0
  57. package/src/components/MyComs/DropdownWithBadge/index.ts +4 -0
  58. package/src/components/MyComs/DropdownWithBadge/index.vue +39 -0
  59. package/src/components/MyComs/DropdownWithBadge/type.ts +12 -0
  60. package/src/components/MyComs/FilterDrawer/filterDrawer.less +117 -0
  61. package/src/components/MyComs/FilterDrawer/hasBadge.ts +41 -0
  62. package/src/components/MyComs/FilterDrawer/index.ts +5 -0
  63. package/src/components/MyComs/FilterDrawer/index.vue +53 -0
  64. package/src/components/MyComs/FilterDrawer/type.ts +9 -0
  65. package/src/components/MyComs/FilterDrawer/useFilterDrawer.ts +38 -0
  66. package/src/components/MyComs/InfiniteScroll/index.ts +2 -0
  67. package/src/components/MyComs/InfiniteScroll/index.vue +171 -0
  68. package/src/components/MyComs/Popup/README.md +684 -0
  69. package/src/components/MyComs/Popup/index.ts +2 -0
  70. package/src/components/MyComs/Popup/index.vue +835 -0
  71. package/src/components/MyComs/PullRefresh/README.md +600 -0
  72. package/src/components/MyComs/PullRefresh/index.ts +2 -0
  73. package/src/components/MyComs/PullRefresh/index.vue +599 -0
  74. package/src/components/MyComs/Swiper/README.md +202 -0
  75. package/src/components/MyComs/Swiper/index.ts +2 -0
  76. package/src/components/MyComs/Swiper/index.vue +245 -0
  77. package/src/components/MyComs/Toast/README.md +604 -0
  78. package/src/components/MyComs/Toast/index.ts +2 -0
  79. package/src/components/MyComs/Toast/index.vue +372 -0
  80. package/src/components/MyComs/index.ts +33 -0
@@ -0,0 +1,171 @@
1
+ <template>
2
+ <view
3
+ ref="scrollContainer"
4
+ class="sw-infinite-scroll"
5
+ :style="containerStyle"
6
+ @scroll="handleScroll"
7
+ >
8
+ <!-- 内容区域 -->
9
+ <view class="sw-infinite-scroll__content">
10
+ <slot />
11
+ </view>
12
+
13
+ <!-- 加载状态 -->
14
+ <view v-if="loading" class="sw-infinite-scroll__loading">
15
+ <view class="loading-spinner" />
16
+ <text>{{ loadingText }}</text>
17
+ </view>
18
+
19
+ <!-- 无更多数据 -->
20
+ <view v-if="finished && !loading" class="sw-infinite-scroll__finished">
21
+ {{ finishedText }}
22
+ </view>
23
+ </view>
24
+ </template>
25
+
26
+ <script setup lang="ts">
27
+ import { computed, onMounted, onUnmounted, ref } from 'vue'
28
+
29
+ // 定义组件属性
30
+ interface Props {
31
+ // 是否正在加载
32
+ loading?: boolean
33
+ // 是否已加载完成
34
+ finished?: boolean
35
+ // 触发加载的距离阈值 (px)
36
+ offset?: number
37
+ // 加载提示文字
38
+ loadingText?: string
39
+ // 加载完成提示文字
40
+ finishedText?: string
41
+ // 是否禁用滚动加载
42
+ disabled?: boolean
43
+ // 容器高度
44
+ height?: string | number
45
+ }
46
+
47
+ // 设置默认属性
48
+ const props = withDefaults(defineProps<Props>(), {
49
+ loading: false,
50
+ finished: false,
51
+ offset: 100,
52
+ loadingText: '加载中...',
53
+ finishedText: '没有更多了',
54
+ disabled: false,
55
+ height: 'auto',
56
+ })
57
+
58
+ // 定义组件事件
59
+ const emit = defineEmits<{
60
+ // 触发加载事件
61
+ (e: 'load'): void
62
+ }>()
63
+
64
+ // 容器引用
65
+ const scrollContainer = ref<any>(null)
66
+
67
+ // 容器样式
68
+ const containerStyle = computed(() => {
69
+ return {
70
+ height: typeof props.height === 'number' ? `${props.height}px` : props.height,
71
+ }
72
+ })
73
+
74
+ // 处理滚动事件
75
+ function handleScroll() {
76
+ if (!scrollContainer.value || props.loading || props.finished || props.disabled) {
77
+ return
78
+ }
79
+
80
+ const { scrollTop, scrollHeight, clientHeight } = scrollContainer.value
81
+
82
+ // 当滚动到底部附近时触发加载
83
+ if (scrollHeight - scrollTop - clientHeight <= props.offset) {
84
+ emit('load')
85
+ }
86
+ }
87
+
88
+ // 监听窗口大小变化
89
+ let resizeTimeout: number | null = null
90
+
91
+ function handleResize() {
92
+ if (resizeTimeout) {
93
+ clearTimeout(resizeTimeout)
94
+ }
95
+ // 使用标准setTimeout确保跨平台兼容
96
+ resizeTimeout = setTimeout(() => {
97
+ handleScroll()
98
+ }, 100) as unknown as number
99
+ }
100
+
101
+ onMounted(() => {
102
+ // 初始化检查是否已滚动到底部
103
+ handleScroll()
104
+
105
+ // #ifdef H5
106
+ // 只有H5平台支持window对象
107
+ window.addEventListener('resize', handleResize)
108
+ // #endif
109
+ })
110
+
111
+ onUnmounted(() => {
112
+ // #ifdef H5
113
+ // 只有H5平台支持window对象
114
+ window.removeEventListener('resize', handleResize)
115
+ // #endif
116
+ if (resizeTimeout) {
117
+ clearTimeout(resizeTimeout)
118
+ }
119
+ })
120
+ </script>
121
+
122
+ <style lang="less" scoped>
123
+ // 基础样式
124
+ .sw-infinite-scroll {
125
+ overflow-y: auto;
126
+ position: relative;
127
+
128
+ // 内容区域
129
+ &__content {
130
+ min-height: 100%;
131
+ }
132
+
133
+ // 加载状态
134
+ &__loading {
135
+ display: flex;
136
+ align-items: center;
137
+ justify-content: center;
138
+ padding: 40rpx 0;
139
+ color: #909399;
140
+ font-size: 28rpx;
141
+
142
+ .loading-spinner {
143
+ width: 32rpx;
144
+ height: 32rpx;
145
+ border: 4rpx solid #d9d9d9;
146
+ border-top-color: #409eff;
147
+ border-radius: 50%;
148
+ animation: spin 0.8s linear infinite;
149
+ margin-right: 16rpx;
150
+ }
151
+ }
152
+
153
+ // 无更多数据
154
+ &__finished {
155
+ text-align: center;
156
+ padding: 40rpx 0;
157
+ color: #909399;
158
+ font-size: 28rpx;
159
+ }
160
+ }
161
+
162
+ // 加载动画
163
+ @keyframes spin {
164
+ 0% {
165
+ transform: rotate(0deg);
166
+ }
167
+ 100% {
168
+ transform: rotate(360deg);
169
+ }
170
+ }
171
+ </style>