hy-app 0.4.15 → 0.5.0

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 (206) hide show
  1. package/components/hy-action-sheet/hy-action-sheet.vue +155 -238
  2. package/components/hy-action-sheet/props.ts +68 -15
  3. package/components/hy-action-sheet/typing.d.ts +115 -115
  4. package/components/hy-address-picker/hy-address-picker.vue +185 -289
  5. package/components/hy-address-picker/props.ts +97 -21
  6. package/components/hy-address-picker/typing.d.ts +90 -89
  7. package/components/hy-avatar/hy-avatar.vue +121 -204
  8. package/components/hy-avatar/props.ts +76 -18
  9. package/components/hy-avatar/typing.d.ts +63 -62
  10. package/components/hy-back-top/hy-back-top.vue +65 -120
  11. package/components/hy-back-top/props.ts +57 -16
  12. package/components/hy-back-top/typing.d.ts +43 -42
  13. package/components/hy-badge/hy-badge.vue +66 -138
  14. package/components/hy-badge/props.ts +73 -17
  15. package/components/hy-badge/typing.d.ts +59 -58
  16. package/components/hy-button/hy-button.vue +226 -375
  17. package/components/hy-button/props.ts +129 -158
  18. package/components/hy-calendar/header.vue +48 -64
  19. package/components/hy-calendar/hy-calendar.vue +274 -438
  20. package/components/hy-calendar/month.vue +508 -516
  21. package/components/hy-calendar/props.ts +157 -35
  22. package/components/hy-calendar/typing.d.ts +129 -128
  23. package/components/hy-card/hy-card.vue +118 -240
  24. package/components/hy-card/index.scss +1 -2
  25. package/components/hy-card/props.ts +122 -27
  26. package/components/hy-card/typing.d.ts +119 -118
  27. package/components/hy-cell/hy-cell.vue +176 -258
  28. package/components/hy-cell/props.ts +71 -17
  29. package/components/hy-cell/typing.d.ts +87 -86
  30. package/components/hy-check-button/hy-check-button.vue +69 -139
  31. package/components/hy-check-button/props.ts +72 -18
  32. package/components/hy-check-button/typing.d.ts +74 -73
  33. package/components/hy-checkbox/hy-checkbox.vue +170 -263
  34. package/components/hy-checkbox/props.ts +94 -24
  35. package/components/hy-checkbox/typing.d.ts +72 -72
  36. package/components/hy-checkbox-group/hy-checkbox-group.vue +25 -100
  37. package/components/hy-checkbox-group/props.ts +80 -0
  38. package/components/hy-checkbox-group/typing.d.ts +65 -65
  39. package/components/hy-checkbox-item/hy-checkbox-item.vue +140 -177
  40. package/components/hy-checkbox-item/props.ts +24 -0
  41. package/components/hy-checkbox-item/typing.d.ts +4 -3
  42. package/components/hy-code-input/hy-code-input.vue +179 -262
  43. package/components/hy-code-input/props.ts +84 -18
  44. package/components/hy-code-input/typing.d.ts +71 -71
  45. package/components/hy-config-provider/hy-config-provider.vue +28 -50
  46. package/components/hy-config-provider/props.ts +26 -11
  47. package/components/hy-config-provider/typing.d.ts +20 -20
  48. package/components/hy-count-down/hy-count-down.vue +103 -131
  49. package/components/hy-count-down/props.ts +30 -8
  50. package/components/hy-count-down/typing.d.ts +25 -25
  51. package/components/hy-count-to/hy-count-to.vue +148 -213
  52. package/components/hy-count-to/props.ts +60 -15
  53. package/components/hy-count-to/typing.d.ts +46 -46
  54. package/components/hy-coupon/hy-coupon.vue +10 -5
  55. package/components/hy-coupon/index.scss +148 -64
  56. package/components/hy-coupon/props.ts +35 -50
  57. package/components/hy-coupon/typing.d.ts +10 -0
  58. package/components/hy-datetime-picker/hy-datetime-picker.vue +415 -580
  59. package/components/hy-datetime-picker/props.ts +142 -32
  60. package/components/hy-datetime-picker/typing.d.ts +132 -132
  61. package/components/hy-divider/hy-divider.vue +90 -169
  62. package/components/hy-divider/props.ts +78 -19
  63. package/components/hy-divider/typing.d.ts +60 -60
  64. package/components/hy-dropdown/hy-dropdown.vue +37 -71
  65. package/components/hy-dropdown/props.ts +38 -15
  66. package/components/hy-dropdown/typing.d.ts +44 -44
  67. package/components/hy-dropdown-item/hy-dropdown-item.vue +141 -173
  68. package/components/hy-dropdown-item/props.ts +19 -8
  69. package/components/hy-empty/hy-empty.vue +75 -129
  70. package/components/hy-empty/props.ts +57 -15
  71. package/components/hy-empty/typing.d.ts +84 -84
  72. package/components/hy-flex/hy-flex.vue +33 -88
  73. package/components/hy-flex/props.ts +58 -0
  74. package/components/hy-flex/typing.d.ts +14 -16
  75. package/components/hy-float-button/hy-float-button.vue +289 -406
  76. package/components/hy-float-button/props.ts +109 -25
  77. package/components/hy-folding-panel/hy-folding-panel.vue +74 -114
  78. package/components/hy-folding-panel/props.ts +42 -0
  79. package/components/hy-folding-panel/typing.d.ts +57 -57
  80. package/components/hy-folding-panel-item/hy-folding-panel-item.vue +139 -231
  81. package/components/hy-folding-panel-item/props.ts +81 -0
  82. package/components/hy-folding-panel-item/typing.d.ts +23 -23
  83. package/components/hy-form/hy-form.vue +172 -212
  84. package/components/hy-form/props.ts +37 -0
  85. package/components/hy-form/typing.d.ts +68 -61
  86. package/components/hy-form-group/typing.d.ts +74 -74
  87. package/components/hy-form-item/hy-form-item.vue +100 -129
  88. package/components/hy-form-item/props.ts +25 -0
  89. package/components/hy-form-item/typing.d.ts +40 -37
  90. package/components/hy-grid/hy-grid.vue +76 -132
  91. package/components/hy-grid/props.ts +58 -16
  92. package/components/hy-grid/typing.d.ts +66 -66
  93. package/components/hy-icon/hy-icon.vue +84 -161
  94. package/components/hy-icon/props.ts +76 -22
  95. package/components/hy-icon/typing.d.ts +83 -82
  96. package/components/hy-image/hy-image.vue +142 -272
  97. package/components/hy-image/props.ts +105 -23
  98. package/components/hy-image/typing.d.ts +84 -87
  99. package/components/hy-input/hy-input.vue +230 -421
  100. package/components/hy-input/props.ts +183 -35
  101. package/components/hy-input/typing.d.ts +169 -169
  102. package/components/hy-line/hy-line.vue +34 -72
  103. package/components/hy-line/props.ts +41 -10
  104. package/components/hy-line/typing.d.ts +29 -29
  105. package/components/hy-line-progress/hy-line-progress.vue +66 -101
  106. package/components/hy-line-progress/props.ts +31 -10
  107. package/components/hy-line-progress/typing.d.ts +29 -29
  108. package/components/hy-list/hy-list.vue +151 -220
  109. package/components/hy-list/props.ts +67 -16
  110. package/components/hy-list/typing.d.ts +52 -52
  111. package/components/hy-loading/hy-loading.vue +63 -119
  112. package/components/hy-loading/props.ts +63 -15
  113. package/components/hy-loading/typing.d.ts +49 -49
  114. package/components/hy-menu/hy-menu.vue +124 -166
  115. package/components/hy-menu/props.ts +42 -10
  116. package/components/hy-menu/typing.d.ts +60 -60
  117. package/components/hy-modal/hy-modal.vue +127 -218
  118. package/components/hy-modal/props.ts +89 -24
  119. package/components/hy-navbar/hy-navbar.vue +104 -177
  120. package/components/hy-navbar/props.ts +76 -22
  121. package/components/hy-navbar/typing.d.ts +81 -81
  122. package/components/hy-notice-bar/hy-notice-bar.vue +67 -144
  123. package/components/hy-notice-bar/props.ts +80 -19
  124. package/components/hy-notice-bar/typing.d.ts +62 -62
  125. package/components/hy-notify/hy-notify.vue +128 -177
  126. package/components/hy-notify/props.ts +49 -12
  127. package/components/hy-notify/typing.d.ts +45 -41
  128. package/components/hy-number-step/hy-number-step.vue +281 -394
  129. package/components/hy-number-step/props.ts +110 -27
  130. package/components/hy-number-step/typing.d.ts +120 -120
  131. package/components/hy-overlay/hy-overlay.vue +39 -66
  132. package/components/hy-overlay/props.ts +31 -8
  133. package/components/hy-pagination/hy-pagination.vue +100 -155
  134. package/components/hy-pagination/props.ts +53 -13
  135. package/components/hy-picker/hy-picker.vue +309 -430
  136. package/components/hy-picker/index.scss +8 -12
  137. package/components/hy-picker/props.ts +110 -26
  138. package/components/hy-popover/hy-popover.vue +190 -252
  139. package/components/hy-popover/props.ts +48 -10
  140. package/components/hy-popup/hy-popup.vue +162 -248
  141. package/components/hy-popup/props.ts +82 -18
  142. package/components/hy-price/hy-price.vue +45 -104
  143. package/components/hy-price/props.ts +52 -12
  144. package/components/hy-price/typing.d.ts +41 -36
  145. package/components/hy-qrcode/hy-qrcode.vue +115 -185
  146. package/components/hy-qrcode/props.ts +68 -18
  147. package/components/hy-qrcode/typing.d.ts +67 -66
  148. package/components/hy-radio/hy-radio.vue +161 -259
  149. package/components/hy-radio/props.ts +95 -25
  150. package/components/hy-radio/typing.d.ts +85 -84
  151. package/components/hy-rate/hy-rate.vue +185 -270
  152. package/components/hy-rate/props.ts +76 -18
  153. package/components/hy-rate/typing.d.ts +61 -60
  154. package/components/hy-read-more/hy-read-more.vue +93 -136
  155. package/components/hy-read-more/props.ts +43 -13
  156. package/components/hy-scroll-list/hy-scroll-list.vue +81 -102
  157. package/components/hy-scroll-list/props.ts +22 -11
  158. package/components/hy-search/hy-search.vue +155 -284
  159. package/components/hy-search/props.ts +130 -25
  160. package/components/hy-signature/hy-signature.vue +491 -635
  161. package/components/hy-signature/props.ts +115 -26
  162. package/components/hy-signature/typing.d.ts +138 -138
  163. package/components/hy-slider/hy-slider.vue +388 -477
  164. package/components/hy-slider/props.ts +75 -19
  165. package/components/hy-steps/hy-steps.vue +212 -279
  166. package/components/hy-steps/props.ts +47 -13
  167. package/components/hy-submit-bar/hy-submit-bar.vue +136 -221
  168. package/components/hy-submit-bar/props.ts +89 -20
  169. package/components/hy-submit-bar/typing.d.ts +87 -87
  170. package/components/hy-subsection/hy-subsection.vue +132 -185
  171. package/components/hy-subsection/props.ts +50 -17
  172. package/components/hy-subsection/typing.d.ts +52 -52
  173. package/components/hy-swipe-action/hy-swipe-action.vue +228 -283
  174. package/components/hy-swipe-action/props.ts +43 -18
  175. package/components/hy-swipe-action/typing.d.ts +46 -46
  176. package/components/hy-swiper/hy-swiper.vue +159 -286
  177. package/components/hy-swiper/props.ts +126 -28
  178. package/components/hy-swiper/typing.d.ts +115 -115
  179. package/components/hy-switch/hy-switch.vue +112 -176
  180. package/components/hy-switch/props.ts +60 -15
  181. package/components/hy-switch/typing.d.ts +63 -63
  182. package/components/hy-tabBar/hy-tabBar.vue +64 -60
  183. package/components/hy-tabs/hy-tabs.vue +277 -380
  184. package/components/hy-tabs/props.ts +75 -18
  185. package/components/hy-tag/hy-tag.vue +111 -204
  186. package/components/hy-tag/props.ts +81 -19
  187. package/components/hy-text/hy-text.vue +200 -322
  188. package/components/hy-text/props.ts +107 -28
  189. package/components/hy-textarea/hy-textarea.vue +147 -256
  190. package/components/hy-textarea/props.ts +112 -25
  191. package/components/hy-textarea/typing.d.ts +42 -42
  192. package/components/hy-toast/hy-toast.vue +135 -143
  193. package/components/hy-tooltip/hy-tooltip.vue +220 -306
  194. package/components/hy-tooltip/props.ts +79 -15
  195. package/components/hy-transition/hy-transition.vue +111 -138
  196. package/components/hy-transition/props.ts +30 -8
  197. package/components/hy-upload/hy-upload.vue +320 -469
  198. package/components/hy-upload/props.ts +130 -27
  199. package/components/hy-warn/hy-warn.vue +80 -129
  200. package/components/hy-warn/props.ts +47 -12
  201. package/components/hy-waterfall/hy-waterfall.vue +139 -163
  202. package/components/hy-waterfall/props.ts +19 -7
  203. package/components/hy-watermark/hy-watermark.vue +762 -870
  204. package/components/hy-watermark/props.ts +103 -22
  205. package/package.json +2 -2
  206. package/web-types.json +1 -1
@@ -1,91 +1,78 @@
1
1
  <template>
2
- <view
3
- class="hy-folding-panel-item"
4
- :class="{
5
- 'hy-folding-panel-item--disabled':
6
- groupConfig?.disabled?.value || disabled,
7
- 'is-active': isExpanded,
8
- 'hy-folding-panel-item--border': groupConfig?.border?.value,
9
- }"
10
- >
11
- <!-- 面板头部 -->
12
2
  <view
13
- :class="[
14
- 'hy-folding-panel-item__header',
15
- `hy-folding-panel-item--${groupConfig?.size?.value}`,
16
- ]"
17
- @click="handleClick"
3
+ class="hy-folding-panel-item"
4
+ :class="{
5
+ 'hy-folding-panel-item--disabled': groupConfig?.disabled?.value || disabled,
6
+ 'is-active': isExpanded,
7
+ 'hy-folding-panel-item--border': groupConfig?.border?.value
8
+ }"
18
9
  >
19
- <slot v-if="$slots.header" name="header"></slot>
20
- <template v-else>
21
- <view class="hy-folding-panel-item__left">
22
- <slot v-if="$slots.title" name="title"></slot>
23
- <template v-else>
24
- <!-- 图标 -->
25
- <view v-if="icon" class="hy-folding-panel-item__icon">
26
- <hy-icon
27
- v-if="icon"
28
- :src="icon"
29
- :color="iconColor"
30
- :size="iconSize"
31
- />
32
- </view>
33
- <!-- 标题 -->
34
- <text class="hy-folding-panel-item__title">{{ title }}</text>
35
- </template>
10
+ <!-- 面板头部 -->
11
+ <view
12
+ :class="[
13
+ 'hy-folding-panel-item__header',
14
+ `hy-folding-panel-item--${groupConfig?.size?.value}`
15
+ ]"
16
+ @click="handleClick"
17
+ >
18
+ <slot v-if="$slots.header" name="header"></slot>
19
+ <template v-else>
20
+ <view class="hy-folding-panel-item__left">
21
+ <slot v-if="$slots.title" name="title"></slot>
22
+ <template v-else>
23
+ <!-- 图标 -->
24
+ <view v-if="icon" class="hy-folding-panel-item__icon">
25
+ <hy-icon v-if="icon" :src="icon" :color="iconColor" :size="iconSize" />
26
+ </view>
27
+ <!-- 标题 -->
28
+ <text class="hy-folding-panel-item__title">{{ title }}</text>
29
+ </template>
30
+ </view>
31
+ <view class="hy-folding-panel-item__right">
32
+ <!-- 右侧值 -->
33
+ <text v-if="value" class="hy-folding-panel-item__value">{{ value }}</text>
34
+ <!-- 箭头 -->
35
+ <view
36
+ class="hy-folding-panel-item__arrow"
37
+ :class="{ 'hy-folding-panel-item__arrow--up': isExpanded }"
38
+ >
39
+ <hy-icon :name="IconConfig.DOWN"></hy-icon>
40
+ </view>
41
+ </view>
42
+ </template>
36
43
  </view>
37
- <view class="hy-folding-panel-item__right">
38
- <!-- 右侧值 -->
39
- <text v-if="value" class="hy-folding-panel-item__value">{{
40
- value
41
- }}</text>
42
- <!-- 箭头 -->
43
- <view
44
- class="hy-folding-panel-item__arrow"
45
- :class="{ 'hy-folding-panel-item__arrow--up': isExpanded }"
46
- >
47
- <hy-icon :name="IconConfig.DOWN"></hy-icon>
48
- </view>
49
- </view>
50
- </template>
51
- </view>
52
44
 
53
- <!-- 面板内容 -->
54
- <view
55
- class="hy-folding-panel-item__content"
56
- :style="[
57
- customStyle,
58
- {
59
- height: isExpanded
60
- ? contentHeight
61
- ? addUnit(contentHeight)
62
- : 'auto'
63
- : '0px',
64
- overflow: 'hidden',
65
- },
66
- ]"
67
- >
68
- <slot v-if="$slots.default"></slot>
69
- <text v-else>{{ content || "" }}</text>
45
+ <!-- 面板内容 -->
46
+ <view
47
+ class="hy-folding-panel-item__content"
48
+ :style="[
49
+ customStyle,
50
+ {
51
+ height: isExpanded ? (contentHeight ? addUnit(contentHeight) : 'auto') : '0px',
52
+ overflow: 'hidden'
53
+ }
54
+ ]"
55
+ >
56
+ <slot v-if="$slots.default"></slot>
57
+ <text v-else>{{ content || '' }}</text>
58
+ </view>
70
59
  </view>
71
- </view>
72
60
  </template>
73
61
 
74
62
  <script lang="ts">
75
63
  export default {
76
- name: "hy-folding-panel-item",
77
- };
64
+ name: 'hy-folding-panel-item'
65
+ }
78
66
  </script>
79
67
 
80
68
  <script setup lang="ts">
81
- import { ref, computed, inject, onMounted } from "vue";
82
- import type { CSSProperties, PropType } from "vue";
83
- import type { HyFoldingPanelItemEmits } from "./typing";
84
- import type { HyFoldingPanelGroupConfig } from "../hy-folding-panel/typing";
85
- import { addUnit, IconConfig } from "../../libs";
86
-
69
+ import { ref, computed, inject, onMounted } from 'vue'
70
+ import type { HyFoldingPanelItemEmits } from './typing'
71
+ import type { HyFoldingPanelGroupConfig } from '../hy-folding-panel/typing'
72
+ import { addUnit, IconConfig } from '../../libs'
73
+ import foldingPanelItemProps from './props'
87
74
  // 组件
88
- import HyIcon from "../hy-icon/hy-icon.vue";
75
+ import HyIcon from '../hy-icon/hy-icon.vue'
89
76
 
90
77
  /**
91
78
  * 折叠面板项组件
@@ -93,186 +80,107 @@ import HyIcon from "../hy-icon/hy-icon.vue";
93
80
  * @displayName hy-folding-panel-item
94
81
  */
95
82
 
96
- const props = defineProps({
97
- /**
98
- * 面板索引(由父组件自动设置)
99
- */
100
- index: {
101
- type: [Number, String],
102
- default: -1,
103
- required: true,
104
- },
105
- /**
106
- * 面板标题
107
- */
108
- title: {
109
- type: String,
110
- default: "",
111
- },
112
- /**
113
- * 右侧显示的值
114
- */
115
- value: {
116
- type: String,
117
- default: "",
118
- },
119
- /**
120
- * 左侧图标
121
- */
122
- icon: {
123
- type: String,
124
- default: "",
125
- },
126
- /**
127
- * 左侧图标颜色
128
- */
129
- iconColor: {
130
- type: String,
131
- default: "",
132
- },
133
- /**
134
- * 左侧图标大小
135
- */
136
- iconSize: {
137
- type: [Number, String],
138
- default: "",
139
- },
140
- /**
141
- * 面板内容
142
- */
143
- content: {
144
- type: String,
145
- default: "",
146
- },
147
- /**
148
- * 是否禁用
149
- */
150
- disabled: {
151
- type: Boolean,
152
- default: false,
153
- },
154
- /**
155
- * 默认是否展开
156
- */
157
- defaultOpen: {
158
- type: Boolean,
159
- default: false,
160
- },
161
- /**
162
- * 内容区域最大高度
163
- */
164
- contentHeight: {
165
- type: [Number, String],
166
- default: 150,
167
- },
168
- /**
169
- * 自定义样式
170
- */
171
- customStyle: {
172
- type: Object as PropType<CSSProperties>,
173
- default: () => ({}),
174
- },
175
- });
83
+ const props = defineProps(foldingPanelItemProps)
176
84
 
177
85
  // 事件定义
178
- const emit = defineEmits<HyFoldingPanelItemEmits>();
86
+ const emit = defineEmits<IFoldingPanelItemEmits>()
179
87
 
180
88
  // 尝试从父组件注入配置
181
- const groupConfig = inject<HyFoldingPanelGroupConfig>("hy-folding-panel");
89
+ const groupConfig = inject<HyFoldingPanelGroupConfig>('hy-folding-panel')
182
90
 
183
91
  // 内部展开状态
184
- const expanded = ref(props.defaultOpen);
92
+ const expanded = ref(props.defaultOpen)
185
93
 
186
94
  // 计算当前是否展开
187
95
  const isExpanded = computed(() => {
188
- if (groupConfig?.accordion?.value) {
189
- console.log(groupConfig.activeIndex.value, props.index);
190
- // 如果在group中,根据group的activeIndex判断
191
- return groupConfig.activeIndex.value === props.index;
192
- }
193
- // 独立使用时,使用内部状态
194
- return expanded.value;
195
- });
96
+ if (groupConfig?.accordion?.value) {
97
+ console.log(groupConfig.activeIndex.value, props.index)
98
+ // 如果在group中,根据group的activeIndex判断
99
+ return groupConfig.activeIndex.value === props.index
100
+ }
101
+ // 独立使用时,使用内部状态
102
+ return expanded.value
103
+ })
196
104
 
197
105
  // 处理点击事件
198
106
  const handleClick = () => {
199
- if (props.disabled) return;
200
- console.log(groupConfig?.accordion?.value);
201
-
202
- if (groupConfig?.accordion?.value) {
203
- // 在group中时,通知group更新激活索引
204
- groupConfig.updateActiveIndex(props.index);
205
- emit("child-click", props.index);
206
- } else {
207
- // 独立使用时,切换内部状态
208
- expanded.value = !expanded.value;
209
- }
210
-
211
- // 触发事件
212
- emit("click", props.index);
213
- if (isExpanded.value) {
214
- emit("close", props.index);
215
- } else {
216
- emit("open", props.index);
217
- }
218
- emit("change", !isExpanded.value, props.index);
219
- };
107
+ if (props.disabled) return
108
+ console.log(groupConfig?.accordion?.value)
220
109
 
221
- // 对外暴露的方法
222
- defineExpose({
223
- /**
224
- * 打开面板
225
- */
226
- open: () => {
227
- if (props.disabled) return;
228
-
229
- if (groupConfig) {
230
- groupConfig.activeIndex.value = props.index;
110
+ if (groupConfig?.accordion?.value) {
111
+ // 在group中时,通知group更新激活索引
112
+ groupConfig.updateActiveIndex(props.index)
113
+ emit('child-click', props.index)
231
114
  } else {
232
- expanded.value = true;
115
+ // 独立使用时,切换内部状态
116
+ expanded.value = !expanded.value
233
117
  }
234
- emit("open", props.index);
235
- emit("change", true, props.index);
236
- },
237
118
 
238
- /**
239
- * 关闭面板
240
- */
241
- close: () => {
242
- if (groupConfig) {
243
- if (groupConfig?.accordion?.value) {
244
- groupConfig.activeIndex.value = -1;
245
- }
119
+ // 触发事件
120
+ emit('click', props.index)
121
+ if (isExpanded.value) {
122
+ emit('close', props.index)
246
123
  } else {
247
- expanded.value = false;
124
+ emit('open', props.index)
248
125
  }
249
- emit("close", props.index);
250
- emit("change", false, props.index);
251
- },
252
-
253
- /**
254
- * 切换面板状态
255
- */
256
- toggle: () => {
257
- handleClick();
258
- },
126
+ emit('change', !isExpanded.value, props.index)
127
+ }
259
128
 
260
- /**
261
- * 获取当前展开状态
262
- */
263
- getExpanded: () => {
264
- return isExpanded.value;
265
- },
266
- });
129
+ // 对外暴露的方法
130
+ defineExpose({
131
+ /**
132
+ * 打开面板
133
+ */
134
+ open: () => {
135
+ if (props.disabled) return
136
+
137
+ if (groupConfig) {
138
+ groupConfig.activeIndex.value = props.index
139
+ } else {
140
+ expanded.value = true
141
+ }
142
+ emit('open', props.index)
143
+ emit('change', true, props.index)
144
+ },
145
+
146
+ /**
147
+ * 关闭面板
148
+ */
149
+ close: () => {
150
+ if (groupConfig) {
151
+ if (groupConfig?.accordion?.value) {
152
+ groupConfig.activeIndex.value = -1
153
+ }
154
+ } else {
155
+ expanded.value = false
156
+ }
157
+ emit('close', props.index)
158
+ emit('change', false, props.index)
159
+ },
160
+
161
+ /**
162
+ * 切换面板状态
163
+ */
164
+ toggle: () => {
165
+ handleClick()
166
+ },
167
+
168
+ /**
169
+ * 获取当前展开状态
170
+ */
171
+ getExpanded: () => {
172
+ return isExpanded.value
173
+ }
174
+ })
267
175
 
268
176
  // 初始化时如果默认打开且在group中,通知group
269
177
  onMounted(() => {
270
- if (props.defaultOpen && groupConfig && props.index !== -1) {
271
- groupConfig.updateActiveIndex(props.index);
272
- }
273
- });
178
+ if (props.defaultOpen && groupConfig && props.index !== -1) {
179
+ groupConfig.updateActiveIndex(props.index)
180
+ }
181
+ })
274
182
  </script>
275
183
 
276
184
  <style lang="scss" scoped>
277
- @import "./index.scss";
185
+ @import './index.scss';
278
186
  </style>
@@ -0,0 +1,81 @@
1
+ import type { CSSProperties, PropType } from 'vue'
2
+
3
+ const foldingPanelItemProps = {
4
+ /**
5
+ * 面板索引(由父组件自动设置)
6
+ */
7
+ index: {
8
+ type: [Number, String],
9
+ default: -1,
10
+ required: true
11
+ },
12
+ /**
13
+ * 面板标题
14
+ */
15
+ title: {
16
+ type: String,
17
+ default: ''
18
+ },
19
+ /**
20
+ * 右侧显示的值
21
+ */
22
+ value: {
23
+ type: String,
24
+ default: ''
25
+ },
26
+ /**
27
+ * 左侧图标
28
+ */
29
+ icon: {
30
+ type: String,
31
+ default: ''
32
+ },
33
+ /**
34
+ * 左侧图标颜色
35
+ */
36
+ iconColor: {
37
+ type: String,
38
+ default: ''
39
+ },
40
+ /**
41
+ * 左侧图标大小
42
+ */
43
+ iconSize: {
44
+ type: [Number, String],
45
+ default: ''
46
+ },
47
+ /**
48
+ * 面板内容
49
+ */
50
+ content: {
51
+ type: String,
52
+ default: ''
53
+ },
54
+ /**
55
+ * 是否禁用
56
+ */
57
+ disabled: {
58
+ type: Boolean,
59
+ default: false
60
+ },
61
+ /**
62
+ * 默认是否展开
63
+ */
64
+ defaultOpen: {
65
+ type: Boolean,
66
+ default: false
67
+ },
68
+ /**
69
+ * 内容区域最大高度
70
+ */
71
+ contentHeight: {
72
+ type: [Number, String],
73
+ default: 150
74
+ },
75
+ /**
76
+ * 自定义样式
77
+ */
78
+ customStyle: Object as PropType<CSSProperties>
79
+ }
80
+
81
+ export default foldingPanelItemProps
@@ -1,23 +1,23 @@
1
- // 折叠面板项组件的事件接口
2
- export interface HyFoldingPanelItemEmits {
3
- /**
4
- * 点击面板时触发
5
- */
6
- (e: "click", index: number | string): void;
7
- /**
8
- * 面板打开时触发
9
- */
10
- (e: "open", index: number | string): void;
11
- /**
12
- * 面板关闭时触发
13
- */
14
- (e: "close", index: number | string): void;
15
- /**
16
- * 面板状态改变时触发
17
- */
18
- (e: "change", expanded: boolean, index: number | string): void;
19
- /**
20
- * 子项点击时通知父组件
21
- */
22
- (e: "child-click", index: number | string): void;
23
- }
1
+ // 折叠面板项组件的事件接口
2
+ export interface IFoldingPanelItemEmits {
3
+ /**
4
+ * 点击面板时触发
5
+ */
6
+ (e: 'click', index: number | string): void
7
+ /**
8
+ * 面板打开时触发
9
+ */
10
+ (e: 'open', index: number | string): void
11
+ /**
12
+ * 面板关闭时触发
13
+ */
14
+ (e: 'close', index: number | string): void
15
+ /**
16
+ * 面板状态改变时触发
17
+ */
18
+ (e: 'change', expanded: boolean, index: number | string): void
19
+ /**
20
+ * 子项点击时通知父组件
21
+ */
22
+ (e: 'child-click', index: number | string): void
23
+ }