@opentiny/vue-docs 3.28.1 → 3.30.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 (285) hide show
  1. package/demos/apis/action-menu.js +22 -0
  2. package/demos/apis/alert.js +19 -22
  3. package/demos/apis/button-group.js +15 -0
  4. package/demos/apis/calendar-view.js +5 -5
  5. package/demos/apis/cascader-view.js +5 -5
  6. package/demos/apis/dialog-box.js +39 -38
  7. package/demos/apis/drawer.js +31 -0
  8. package/demos/apis/dropdown.js +39 -1
  9. package/demos/apis/filter-panel.js +21 -1
  10. package/demos/apis/fluent-editor.js +30 -0
  11. package/demos/apis/form.js +11 -0
  12. package/demos/apis/fullscreen.js +10 -11
  13. package/demos/apis/grid.js +131 -16
  14. package/demos/apis/guide.js +14 -0
  15. package/demos/apis/link.js +11 -0
  16. package/demos/apis/message.js +48 -22
  17. package/demos/apis/modal.js +34 -31
  18. package/demos/apis/notify.js +13 -13
  19. package/demos/apis/rate.js +15 -0
  20. package/demos/apis/search-box.js +343 -0
  21. package/demos/apis/select.js +14 -2
  22. package/demos/apis/tag-input.js +182 -0
  23. package/demos/apis/tree.js +23 -23
  24. package/demos/mobile-first/app/button-group/display-mode.vue +31 -0
  25. package/demos/mobile-first/app/button-group/webdoc/button-group.js +13 -0
  26. package/demos/mobile-first/app/calendar-view/webdoc/calendar-view.js +5 -4
  27. package/demos/mobile-first/app/modal/webdoc/modal.js +2 -1
  28. package/demos/pc/app/alert/center.spec.ts +8 -0
  29. package/demos/pc/app/alert/custom-close.spec.ts +39 -9
  30. package/demos/pc/app/alert/icon.spec.ts +18 -7
  31. package/demos/pc/app/alert/show-icon.spec.ts +1 -1
  32. package/demos/pc/app/anchor/webdoc/anchor.js +1 -0
  33. package/demos/pc/app/base-select/copy-multi.spec.ts +1 -1
  34. package/demos/pc/app/button-group/display-mode-composition-api.vue +23 -0
  35. package/demos/pc/app/button-group/display-mode.spec.ts +0 -0
  36. package/demos/pc/app/button-group/display-mode.vue +31 -0
  37. package/demos/pc/app/button-group/sup-composition-api.vue +1 -0
  38. package/demos/pc/app/button-group/sup.vue +1 -0
  39. package/demos/pc/app/button-group/webdoc/button-group.js +14 -0
  40. package/demos/pc/app/calendar-view/calendar-event.spec.ts +1 -1
  41. package/demos/pc/app/calendar-view/custom-day-bg-color.vue +10 -0
  42. package/demos/pc/app/calendar-view/webdoc/calendar-view.js +4 -4
  43. package/demos/pc/app/cascader/filter-mode-composition-api.vue +2 -3
  44. package/demos/pc/app/checkbox/checked-composition-api.vue +3 -3
  45. package/demos/pc/app/checkbox/checked.vue +3 -3
  46. package/demos/pc/app/date-picker/align.spec.ts +10 -13
  47. package/demos/pc/app/date-picker/clear.spec.ts +3 -3
  48. package/demos/pc/app/date-picker/default-value.spec.ts +4 -4
  49. package/demos/pc/app/date-picker/events.spec.ts +2 -2
  50. package/demos/pc/app/date-picker/format.spec.ts +3 -3
  51. package/demos/pc/app/date-picker/now.spec.ts +4 -4
  52. package/demos/pc/app/date-picker/shortcuts.spec.ts +1 -1
  53. package/demos/pc/app/date-picker/slot.spec.ts +5 -5
  54. package/demos/pc/app/dialog-box/basic-usage.spec.ts +5 -5
  55. package/demos/pc/app/dialog-box/form-in-dialog.spec.ts +1 -2
  56. package/demos/pc/app/drawer/basic-usage.spec.ts +4 -3
  57. package/demos/pc/app/drawer/close-on-press-escape.spec.ts +4 -2
  58. package/demos/pc/app/drawer/placement.spec.ts +4 -4
  59. package/demos/pc/app/drawer/show-header.spec.ts +3 -2
  60. package/demos/pc/app/drawer/webdoc/drawer.js +3 -2
  61. package/demos/pc/app/dropdown/show-icon-composition-api.vue +1 -1
  62. package/demos/pc/app/dropdown/show-icon.vue +1 -1
  63. package/demos/pc/app/dropdown/tip-composition-api.vue +5 -2
  64. package/demos/pc/app/dropdown/tip.vue +5 -2
  65. package/demos/pc/app/dropdown/webdoc/dropdown.js +2 -2
  66. package/demos/pc/app/filter-panel/size-composition-api.vue +58 -0
  67. package/demos/pc/app/filter-panel/size.spec.ts +23 -0
  68. package/demos/pc/app/filter-panel/size.vue +68 -0
  69. package/demos/pc/app/filter-panel/webdoc/filter-panel.js +13 -0
  70. package/demos/pc/app/flowchart/basic-usage-composition-api.vue +10 -260
  71. package/demos/pc/app/flowchart/basic-usage.spec.ts +2 -1
  72. package/demos/pc/app/flowchart/basic-usage.vue +4 -249
  73. package/demos/pc/app/flowchart/slots-composition-api.vue +182 -0
  74. package/demos/pc/app/flowchart/slots.spec.ts +24 -0
  75. package/demos/pc/app/flowchart/slots.vue +193 -0
  76. package/demos/pc/app/flowchart/webdoc/flowchart.js +14 -2
  77. package/demos/pc/app/form/basic-usage.spec.ts +6 -4
  78. package/demos/pc/app/form/custom-validation-string-length-composition-api.vue +38 -0
  79. package/demos/pc/app/form/custom-validation-string-length.spec.ts +18 -0
  80. package/demos/pc/app/form/custom-validation-string-length.vue +28 -13
  81. package/demos/pc/app/form/group-form-composition-api.vue +2 -2
  82. package/demos/pc/app/form/group-form.vue +2 -2
  83. package/demos/pc/app/grid/filter/advanced-filter-composition-api.vue +1 -1
  84. package/demos/pc/app/grid/filter/advanced-filter.spec.js +1 -0
  85. package/demos/pc/app/grid/filter/advanced-filter.vue +1 -1
  86. package/demos/pc/app/grid/filter/custom-filter-composition-api.vue +46 -23
  87. package/demos/pc/app/grid/filter/custom-filter.spec.js +1 -1
  88. package/demos/pc/app/grid/filter/custom-filter.vue +47 -24
  89. package/demos/pc/app/grid/filter/default-filter-composition-api.vue +5 -1
  90. package/demos/pc/app/grid/filter/default-filter.spec.ts +1 -0
  91. package/demos/pc/app/grid/filter/default-filter.vue +4 -1
  92. package/demos/pc/app/grid/filter/filter-label-value-composition-api.vue +71 -0
  93. package/demos/pc/app/grid/filter/filter-label-value.spec.ts +27 -0
  94. package/demos/pc/app/grid/filter/filter-label-value.vue +78 -0
  95. package/demos/pc/app/grid/filter/input-filter-custom-component-composition-api.vue +116 -0
  96. package/demos/pc/app/grid/filter/input-filter-custom-component.spec.ts +20 -0
  97. package/demos/pc/app/grid/filter/input-filter-custom-component.vue +126 -0
  98. package/demos/pc/app/grid/filter/layout-order-filter-composition-api.vue +114 -0
  99. package/demos/pc/app/grid/filter/layout-order-filter.spec.ts +31 -0
  100. package/demos/pc/app/grid/filter/layout-order-filter.vue +123 -0
  101. package/demos/pc/app/grid/toolbar/custom-toolbar.spec.js +1 -1
  102. package/demos/pc/app/grid/webdoc/grid-filter.js +89 -40
  103. package/demos/pc/app/guide/show-close-composition-api.vue +77 -0
  104. package/demos/pc/app/guide/show-close.spec.ts +37 -0
  105. package/demos/pc/app/guide/show-close.vue +84 -0
  106. package/demos/pc/app/guide/webdoc/guide.js +12 -0
  107. package/demos/pc/app/icon/advance-icons.js +108 -2
  108. package/demos/pc/app/icon/advance-usage-composition-api.vue +26 -1
  109. package/demos/pc/app/icon/advance-usage.vue +27 -1
  110. package/demos/pc/app/icon/webdoc/icon.js +5 -3
  111. package/demos/pc/app/input/resize.spec.ts +2 -2
  112. package/demos/pc/app/link/custom-icon-composition-api.vue +1 -1
  113. package/demos/pc/app/link/custom-icon.vue +1 -1
  114. package/demos/pc/app/link/target-composition-api.vue +24 -0
  115. package/demos/pc/app/link/target.spec.ts +41 -0
  116. package/demos/pc/app/link/target.vue +30 -0
  117. package/demos/pc/app/link/webdoc/link.js +14 -0
  118. package/demos/pc/app/message/basic-usage-composition-api.vue +48 -0
  119. package/demos/pc/app/message/basic-usage.spec.ts +27 -0
  120. package/demos/pc/app/message/basic-usage.vue +50 -0
  121. package/demos/pc/app/message/message-close-composition-api.vue +25 -0
  122. package/demos/pc/app/message/message-close.spec.ts +9 -0
  123. package/demos/pc/app/message/message-close.vue +32 -0
  124. package/demos/pc/app/message/message-duration-composition-api.vue +25 -0
  125. package/demos/pc/app/message/message-duration.spec.ts +9 -0
  126. package/demos/pc/app/message/message-duration.vue +32 -0
  127. package/demos/pc/app/message/prevent-duplicate-composition-api.vue +25 -0
  128. package/demos/pc/app/message/prevent-duplicate.spec.ts +9 -0
  129. package/demos/pc/app/message/prevent-duplicate.vue +32 -0
  130. package/demos/pc/app/message/webdoc/message.cn.md +7 -0
  131. package/demos/pc/app/message/webdoc/message.en.md +7 -0
  132. package/demos/pc/app/message/webdoc/message.js +56 -0
  133. package/demos/pc/app/modal/basic-usage.spec.ts +3 -3
  134. package/demos/pc/app/modal/modal-footer-composition-api.vue +3 -3
  135. package/demos/pc/app/modal/modal-footer.spec.ts +9 -4
  136. package/demos/pc/app/modal/modal-footer.vue +3 -3
  137. package/demos/pc/app/modal/modal-header.spec.ts +2 -2
  138. package/demos/pc/app/modal/modal-size.spec.ts +2 -2
  139. package/demos/pc/app/modal/status.spec.ts +22 -15
  140. package/demos/pc/app/nav-menu/overflow.spec.ts +1 -1
  141. package/demos/pc/app/popconfirm/custom-class.spec.ts +0 -1
  142. package/demos/pc/app/popconfirm/slot-message.spec.ts +10 -2
  143. package/demos/pc/app/popconfirm/trigger.spec.ts +16 -12
  144. package/demos/pc/app/popover/basic-usage.spec.js +3 -8
  145. package/demos/pc/app/popover/custom-popper.spec.js +2 -2
  146. package/demos/pc/app/popover/delay.spec.js +2 -2
  147. package/demos/pc/app/popover/disabled.spec.js +2 -2
  148. package/demos/pc/app/popover/events.spec.js +1 -1
  149. package/demos/pc/app/popover/ignore-boundaries.spec.js +2 -3
  150. package/demos/pc/app/popover/offset.spec.js +17 -31
  151. package/demos/pc/app/radio/dynamic-disable-composition-api.vue +3 -3
  152. package/demos/pc/app/radio/dynamic-disable.vue +2 -2
  153. package/demos/pc/app/rate/clearable-composition-api.vue +20 -0
  154. package/demos/pc/app/rate/clearable.spec.js +74 -0
  155. package/demos/pc/app/rate/clearable.vue +28 -0
  156. package/demos/pc/app/rate/webdoc/rate.js +12 -0
  157. package/demos/pc/app/search/events.spec.ts +1 -1
  158. package/demos/pc/app/search-box/append-to-body-composition-api.vue +300 -0
  159. package/demos/pc/app/search-box/append-to-body.vue +308 -0
  160. package/demos/pc/app/search-box/auto-match-composition-api.vue +162 -0
  161. package/demos/pc/app/search-box/auto-match.vue +170 -0
  162. package/demos/pc/app/search-box/basic-usage-composition-api.vue +269 -0
  163. package/demos/pc/app/search-box/basic-usage.vue +277 -0
  164. package/demos/pc/app/search-box/custom-panel-composition-api.vue +63 -0
  165. package/demos/pc/app/search-box/custom-panel.vue +72 -0
  166. package/demos/pc/app/search-box/default-field-composition-api.vue +163 -0
  167. package/demos/pc/app/search-box/default-field.vue +171 -0
  168. package/demos/pc/app/search-box/editable-composition-api.vue +311 -0
  169. package/demos/pc/app/search-box/editable.vue +320 -0
  170. package/demos/pc/app/search-box/empty-placeholder-composition-api.vue +162 -0
  171. package/demos/pc/app/search-box/empty-placeholder.vue +170 -0
  172. package/demos/pc/app/search-box/events-composition-api.vue +169 -0
  173. package/demos/pc/app/search-box/events.vue +173 -0
  174. package/demos/pc/app/search-box/group-key-composition-api.vue +257 -0
  175. package/demos/pc/app/search-box/group-key.vue +266 -0
  176. package/demos/pc/app/search-box/help-composition-api.vue +166 -0
  177. package/demos/pc/app/search-box/help.vue +175 -0
  178. package/demos/pc/app/search-box/id-map-key-composition-api.vue +131 -0
  179. package/demos/pc/app/search-box/id-map-key.vue +140 -0
  180. package/demos/pc/app/search-box/item-placeholder-composition-api.vue +119 -0
  181. package/demos/pc/app/search-box/item-placeholder.vue +127 -0
  182. package/demos/pc/app/search-box/max-length-composition-api.vue +29 -0
  183. package/demos/pc/app/search-box/max-length.vue +38 -0
  184. package/demos/pc/app/search-box/max-time-length-composition-api.vue +53 -0
  185. package/demos/pc/app/search-box/max-time-length.vue +62 -0
  186. package/demos/pc/app/search-box/merge-tag-composition-api.vue +59 -0
  187. package/demos/pc/app/search-box/merge-tag.vue +68 -0
  188. package/demos/pc/app/search-box/panel-max-height-composition-api.vue +162 -0
  189. package/demos/pc/app/search-box/panel-max-height.vue +170 -0
  190. package/demos/pc/app/search-box/potential-match-composition-api.vue +193 -0
  191. package/demos/pc/app/search-box/potential-match.vue +201 -0
  192. package/demos/pc/app/search-box/settings-composition-api.vue +163 -0
  193. package/demos/pc/app/search-box/settings.vue +171 -0
  194. package/demos/pc/app/search-box/size-composition-api.vue +162 -0
  195. package/demos/pc/app/search-box/size.vue +170 -0
  196. package/demos/pc/app/search-box/split-input-value-composition-api.vue +162 -0
  197. package/demos/pc/app/search-box/split-input-value.vue +170 -0
  198. package/demos/pc/app/search-box/suffix-icon-composition-api.vue +209 -0
  199. package/demos/pc/app/search-box/suffix-icon.vue +219 -0
  200. package/demos/pc/app/search-box/v-model-composition-api.vue +174 -0
  201. package/demos/pc/app/search-box/v-model.vue +182 -0
  202. package/demos/pc/app/search-box/webdoc/search-box.cn.md +7 -0
  203. package/demos/pc/app/search-box/webdoc/search-box.en.md +7 -0
  204. package/demos/pc/app/search-box/webdoc/search-box.js +257 -0
  205. package/demos/pc/app/select/copy-multi.spec.ts +1 -1
  206. package/demos/pc/app/select-wrapper/copy-multi.spec.ts +2 -1
  207. package/demos/pc/app/tabs/basic-usage.spec.ts +2 -2
  208. package/demos/pc/app/tabs/more-show-all.spec.ts +2 -1
  209. package/demos/pc/app/tabs/tabs-events-close-composition-api.vue +8 -2
  210. package/demos/pc/app/tabs/tabs-events-close.vue +8 -2
  211. package/demos/pc/app/tag/basic-usage.spec.ts +1 -1
  212. package/demos/pc/app/tag/color-border.spec.ts +2 -2
  213. package/demos/pc/app/tag/max-width.spec.ts +1 -1
  214. package/demos/pc/app/tag/size.spec.ts +3 -3
  215. package/demos/pc/app/tag/slot-default.spec.ts +3 -3
  216. package/demos/pc/app/tag-group/basic-usage.spec.js +5 -5
  217. package/demos/pc/app/tag-group/tag-group-effect.spec.js +10 -10
  218. package/demos/pc/app/tag-group/tag-group-event.spec.js +1 -1
  219. package/demos/pc/app/tag-input/basic-usage-composition-api.vue +29 -0
  220. package/demos/pc/app/tag-input/basic-usage.spec.ts +0 -0
  221. package/demos/pc/app/tag-input/basic-usage.vue +38 -0
  222. package/demos/pc/app/tag-input/clearable-tag-composition-api.vue +20 -0
  223. package/demos/pc/app/tag-input/clearable-tag.vue +27 -0
  224. package/demos/pc/app/tag-input/collapsed-tag-composition-api.vue +20 -0
  225. package/demos/pc/app/tag-input/collapsed-tag.vue +28 -0
  226. package/demos/pc/app/tag-input/disabled-readonly-composition-api.vue +20 -0
  227. package/demos/pc/app/tag-input/disabled-readonly.vue +29 -0
  228. package/demos/pc/app/tag-input/draggable-tag-composition-api.vue +12 -0
  229. package/demos/pc/app/tag-input/draggable-tag.spec.ts +0 -0
  230. package/demos/pc/app/tag-input/draggable-tag.vue +20 -0
  231. package/demos/pc/app/tag-input/max-composition-api.vue +20 -0
  232. package/demos/pc/app/tag-input/max.vue +28 -0
  233. package/demos/pc/app/tag-input/prefix-suffix-composition-api.vue +26 -0
  234. package/demos/pc/app/tag-input/prefix-suffix.vue +34 -0
  235. package/demos/pc/app/tag-input/separator-tag-composition-api.vue +20 -0
  236. package/demos/pc/app/tag-input/separator-tag.vue +28 -0
  237. package/demos/pc/app/tag-input/webdoc/tag-input.cn.md +7 -0
  238. package/demos/pc/app/tag-input/webdoc/tag-input.en.md +7 -0
  239. package/demos/pc/app/tag-input/webdoc/tag-input.js +107 -0
  240. package/demos/pc/app/time-picker/basic-usage.spec.ts +5 -4
  241. package/demos/pc/app/time-picker/clearable.spec.ts +5 -4
  242. package/demos/pc/app/time-picker/default-value.spec.ts +2 -2
  243. package/demos/pc/app/time-picker/disabled.spec.ts +4 -3
  244. package/demos/pc/app/time-picker/format.spec.ts +8 -11
  245. package/demos/pc/app/time-picker/is-range.spec.ts +4 -3
  246. package/demos/pc/app/time-picker/name.spec.ts +1 -1
  247. package/demos/pc/app/time-picker/placeholder.spec.ts +3 -3
  248. package/demos/pc/app/time-picker/popper-class.spec.ts +1 -1
  249. package/demos/pc/app/time-picker/size.spec.ts +2 -1
  250. package/demos/pc/app/time-select/basic-usage.spec.ts +1 -1
  251. package/demos/pc/app/time-select/clear-icon.spec.ts +1 -2
  252. package/demos/pc/app/time-select/focus.spec.ts +1 -1
  253. package/demos/pc/app/time-select/picker-options.spec.ts +2 -1
  254. package/demos/pc/app/time-select/range-placeholder.spec.ts +2 -2
  255. package/demos/pc/app/time-select/size-medium.spec.ts +3 -3
  256. package/demos/pc/app/tooltip/delay.spec.js +7 -9
  257. package/demos/pc/app/tooltip/offset.spec.js +0 -2
  258. package/demos/pc/app/tooltip/popper-options.spec.js +2 -1
  259. package/demos/pc/menus.js +6 -4
  260. package/demos/pc/webdoc/changelog-en.md +209 -86
  261. package/demos/pc/webdoc/changelog.md +176 -257
  262. package/demos/pc/webdoc/develop-demo-en.md +13 -13
  263. package/demos/pc/webdoc/import-components.md +1 -1
  264. package/demos/pc/webdoc/introduce.md +2 -0
  265. package/demos/pc/webdoc/skills-en.md +107 -0
  266. package/demos/pc/webdoc/skills.md +107 -0
  267. package/demos/pc/webdoc/theme-en.md +82 -79
  268. package/demos/pc/webdoc/v3.28.0-release-article.md +943 -0
  269. package/demos/saas/menus.js +1 -0
  270. package/package.json +21 -20
  271. package/playground/App.vue +6 -4
  272. package/playground/shims/vue-search-box.mjs +154 -0
  273. package/public/static/css/mobile-dark-theme.css +1 -0
  274. package/src/i18n/index.js +1 -2
  275. package/src/main.js +8 -5
  276. package/src/style.css +5 -0
  277. package/src/views/components-doc/common.vue +0 -25
  278. package/src/views/components-doc/mobile.vue +49 -2
  279. package/vite.config.ts +3 -2
  280. package/vite.extend.ts +65 -0
  281. package/demos/pc/app/grid/webdoc/grid-ai-agent.js +0 -23
  282. package/demos/pc/webdoc/mcp-en.md +0 -101
  283. package/demos/pc/webdoc/mcp.md +0 -101
  284. package/src/components/mcp-docs.vue +0 -33
  285. package/src/composable/useTinyRemoter.ts +0 -176
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <tiny-checkbox-group v-model="checkedData">
3
- <tiny-checkbox label="复选框 1" name="name1"></tiny-checkbox>
4
- <tiny-checkbox label="复选框 2" name="name2" checked></tiny-checkbox>
5
- <tiny-checkbox label="复选框 3" name="name3"></tiny-checkbox>
3
+ <tiny-checkbox label="复选框 1" name="name1" style="margin-bottom: 8px"></tiny-checkbox>
4
+ <tiny-checkbox label="复选框 2" name="name2" checked style="margin-bottom: 8px"></tiny-checkbox>
5
+ <tiny-checkbox label="复选框 3" name="name3" style="margin-bottom: 8px"></tiny-checkbox>
6
6
  </tiny-checkbox-group>
7
7
  </template>
8
8
 
@@ -6,38 +6,35 @@ test.use({
6
6
  test('[DatePicker] 测试对齐方式', async ({ page }) => {
7
7
  page.on('pageerror', (exception) => expect(exception).toBeNull())
8
8
  await page.goto('date-picker#align')
9
- await page.locator('.settings-btn').first().click()
10
- await page.locator('label').filter({ hasText: '单示例' }).click()
11
- await page.waitForSelector('.demo-date-picker-wrap', { state: 'visible' })
12
-
9
+ const demo = page.locator('#align')
13
10
  // 左对齐
14
- const leftDateInputDom = page.getByRole('textbox').nth(1)
15
- const leftDatePanelDom = page.locator('.tiny-picker-panel').nth(2)
11
+ const leftDateInputDom = demo.locator('.tiny-input__inner').nth(0)
12
+ const leftDatePanelDom = page.locator('body > .tiny-picker-panel').nth(0)
16
13
  const leftClosePanel = page.getByText('左对齐:')
17
14
  await page.waitForTimeout(200)
18
15
 
19
16
  await leftDateInputDom.click()
20
17
  await page.waitForTimeout(200)
21
- await expect(leftDatePanelDom).toHaveAttribute('x-placement', /bottom-start|top-start/)
18
+ await expect(leftDatePanelDom).toHaveAttribute('x-placement', 'bottom-start')
22
19
  await leftClosePanel.click()
23
20
 
24
21
  // 居中对齐
25
- const centerDateInputDom = page.getByRole('textbox').nth(2)
26
- const centerDatePanelDom = page.locator('.tiny-picker-panel').nth(2)
22
+ const centerDateInputDom = demo.locator('.tiny-input__inner').nth(1)
23
+ const centerDatePanelDom = page.locator('body > .tiny-picker-panel').nth(1)
27
24
  const centerClosePanel = page.getByText('居中对齐:')
28
25
 
29
26
  await centerDateInputDom.click()
30
27
  await page.waitForTimeout(200)
31
- await expect(centerDatePanelDom).toHaveAttribute('x-placement', /bottom|top/)
28
+ await expect(centerDatePanelDom).toHaveAttribute('x-placement', /bottom/)
32
29
  await centerClosePanel.click()
33
30
 
34
31
  // 右对齐
35
- const rightDateInputDom = page.getByRole('textbox').nth(3)
36
- const rightDatePanelDom = page.locator('.tiny-picker-panel').nth(2)
32
+ const rightDateInputDom = demo.locator('.tiny-input__inner').nth(2)
33
+ const rightDatePanelDom = page.locator('body > .tiny-picker-panel').nth(2)
37
34
  const rightClosePanel = page.getByText('右对齐:')
38
35
 
39
36
  await rightDateInputDom.click()
40
37
  await page.waitForTimeout(200)
41
- await expect(rightDatePanelDom).toHaveAttribute('x-placement', /bottom-end|top-end/)
38
+ await expect(rightDatePanelDom).toHaveAttribute('x-placement', /bottom-end/)
42
39
  await rightClosePanel.click()
43
40
  })
@@ -6,9 +6,9 @@ test('[DatePicker] 测试清除输入', async ({ page }) => {
6
6
 
7
7
  const demo = page.locator('#clear')
8
8
 
9
- const datePickerDefaultClearIcon = demo.getByRole('textbox').nth(0)
10
- const datePickerHideClearIcon = demo.getByRole('textbox').nth(1)
11
- const datePickerCustomClearIcon = demo.getByRole('textbox').nth(2)
9
+ const datePickerDefaultClearIcon = demo.getByRole('combobox').nth(0)
10
+ const datePickerHideClearIcon = demo.getByRole('combobox').nth(1)
11
+ const datePickerCustomClearIcon = demo.getByRole('combobox').nth(2)
12
12
  const clearIcon = demo.locator('.tiny-date-editor .tiny-input__icon-container .baseClearicon')
13
13
 
14
14
  // 默认显示清除按钮
@@ -7,20 +7,20 @@ test('[DatePicker] 测试选择器打开时默认时间设置', async ({ page })
7
7
  await page.locator('label').filter({ hasText: '单示例' }).click()
8
8
 
9
9
  // default-value: 打开日期面板,默认显示的日期
10
- await page.getByRole('textbox').nth(1).click()
10
+ await page.getByRole('combobox').nth(0).click()
11
11
  await expect(page.getByRole('button', { name: '2000 年' })).toBeVisible()
12
12
  await expect(page.getByRole('button', { name: '11 月' })).toBeVisible()
13
13
 
14
14
  // default-time: 日期时间 (范围),选择日期之后默认显示的时间 (范围)
15
- const dateInputDefaultTime = page.getByRole('textbox').nth(2)
15
+ const dateInputDefaultTime = page.getByRole('combobox').nth(1)
16
16
  await dateInputDefaultTime.fill('2023-05-20 09:00:00')
17
17
  await dateInputDefaultTime.press('Enter')
18
18
 
19
- await page.getByRole('textbox', { name: '2023-05-20 09:00:00' }).click()
19
+ await page.getByRole('combobox', { name: '2023-05-20 09:00:00' }).click()
20
20
  await page.getByRole('cell', { name: '15' }).getByText('15').last().click()
21
21
  await expect(page.getByRole('textbox', { name: '选择时间' })).toHaveValue('09:00:00')
22
22
 
23
- await page.getByRole('textbox').nth(3).click()
23
+ await page.getByRole('combobox').nth(2).click()
24
24
  await page.getByRole('cell', { name: '10' }).getByText('10').last().click()
25
25
  await page.getByRole('cell', { name: '10' }).getByText('10').nth(1).click()
26
26
  await expect(page.getByRole('textbox', { name: '开始时间' })).toHaveValue('09:00:00')
@@ -19,7 +19,7 @@ test('[DatePicker] 测试事件', async ({ page }) => {
19
19
  await page
20
20
  .locator('div')
21
21
  .filter({ hasText: /^blur:$/ })
22
- .getByRole('textbox')
22
+ .getByRole('combobox')
23
23
  .click()
24
24
  await page.getByRole('cell', { name: '15' }).getByText('15').last().click()
25
25
  const blurEventMessageDom = page.locator('div').filter({ hasText: '触发 blur 事件' }).nth(1)
@@ -33,7 +33,7 @@ test('[DatePicker] 测试事件', async ({ page }) => {
33
33
  await page
34
34
  .locator('div')
35
35
  .filter({ hasText: /^change:$/ })
36
- .getByRole('textbox')
36
+ .getByRole('combobox')
37
37
  .click()
38
38
  await page.getByRole('cell', { name: '15' }).getByText('15').last().click()
39
39
  const changeEventMessageDom = page.locator('div').filter({ hasText: '触发 change 事件,组件绑定值为:' }).nth(1)
@@ -5,13 +5,13 @@ test('[DatePicker] 测试日期格式化', async ({ page }) => {
5
5
  await page.goto('date-picker#format')
6
6
 
7
7
  // format: 日期输入框中显示的格式
8
- await page.getByRole('textbox', { name: '2023 年 05 月 24 日' }).first().click()
8
+ await page.getByRole('combobox', { name: '2023 年 05 月 24 日' }).first().click()
9
9
  await page.getByRole('cell', { name: '20' }).getByText('20').last().click()
10
- await expect(page.getByRole('textbox', { name: '2023 年 05 月 20 日' }).first()).toBeVisible()
10
+ await expect(page.getByRole('combobox', { name: '2023 年 05 月 20 日' }).first()).toBeVisible()
11
11
 
12
12
  // time-format: 时间输入框中显示的格式
13
13
  await page.locator('.tiny-date-editor input').nth(1).click()
14
- await page.getByRole('cell', { name: '24' }).locator('span').click();
14
+ await page.getByRole('cell', { name: '24' }).locator('span').click()
15
15
  await page.getByRole('button', { name: '确定' }).click()
16
16
  await expect(page.locator('.tiny-date-editor input').nth(1)).toHaveValue('2023 年 05 月 24 日 08 时 00 分 00 秒')
17
17
 
@@ -3,11 +3,11 @@ import { test, expect } from '@playwright/test'
3
3
  test('“此刻”逻辑定制', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('date-picker#now')
6
- await page.getByRole('textbox', { name: '-11-11 10:10:11' }).first().click()
6
+ await page.getByRole('combobox', { name: '-11-11 10:10:11' }).first().click()
7
7
  await page.getByText('此刻(服务器时间)').click()
8
8
  await page.getByRole('button', { name: '确定' }).click()
9
- await expect(page.getByRole('textbox', { name: '-12-11 18:18:18' })).toBeVisible()
10
- await page.getByRole('textbox', { name: '-11-11 10:10:11' }).click()
9
+ await expect(page.getByRole('combobox', { name: '-12-11 18:18:18' })).toBeVisible()
10
+ await page.getByRole('combobox', { name: '-11-11 10:10:11' }).click()
11
11
  await page.getByRole('button', { name: '此刻' }).click()
12
- await expect(page.getByRole('textbox', { name: '-10-08 18:18:18' })).toBeVisible()
12
+ await expect(page.getByRole('combobox', { name: '-10-08 18:18:18' })).toBeVisible()
13
13
  })
@@ -5,7 +5,7 @@ test('[DatePicker] 测试选择快捷选项日期:今天/昨天/一周前', as
5
5
  await page.goto('date-picker#shortcuts')
6
6
 
7
7
  // 日期选择:今天/昨天/一周前
8
- const datePickerDom = page.getByRole('textbox', { name: '请选择日期' })
8
+ const datePickerDom = page.getByRole('combobox', { name: '请选择日期' })
9
9
  await datePickerDom.click()
10
10
  await page.getByRole('button', { name: '今天' }).click()
11
11
  await page.locator('.tiny-date-editor input').first().click()
@@ -7,23 +7,23 @@ test('[DatePicker] 测试尺寸设置', async ({ page }) => {
7
7
  let btn = page.getByRole('button', { name: '自定义按钮' })
8
8
  let nowBtn = page.getByRole('button', { name: '自定义此刻' })
9
9
 
10
- await page.locator('#slot').getByRole('textbox', { name: '请选择日期', exact: true }).click()
10
+ await page.locator('#slot').getByRole('combobox', { name: '请选择日期', exact: true }).click()
11
11
  await page.waitForTimeout(200)
12
12
  await expect(btn).toBeVisible()
13
13
 
14
- await page.getByRole('textbox', { name: '请选择日期时间' }).click()
14
+ await page.getByRole('combobox', { name: '请选择日期时间' }).click()
15
15
  await page.waitForTimeout(200)
16
16
  await expect(nowBtn).toBeVisible()
17
17
 
18
- await page.locator('#slot').getByRole('textbox', { name: '请选择周' }).click()
18
+ await page.locator('#slot').getByRole('combobox', { name: '请选择周' }).click()
19
19
  await page.waitForTimeout(200)
20
20
  await expect(btn.first()).toBeVisible()
21
21
 
22
- await page.locator('#slot').getByRole('textbox', { name: '请选择月份' }).click()
22
+ await page.locator('#slot').getByRole('combobox', { name: '请选择月份' }).click()
23
23
  await page.waitForTimeout(200)
24
24
  await expect(btn.first()).toBeVisible()
25
25
 
26
- await page.locator('#slot').getByRole('textbox', { name: '请选择年份' }).click()
26
+ await page.locator('#slot').getByRole('combobox', { name: '请选择年份' }).click()
27
27
  await page.waitForTimeout(200)
28
28
  await expect(btn.first()).toBeVisible()
29
29
 
@@ -5,22 +5,22 @@ test('dialogBox 基础用法', async ({ page }) => {
5
5
  await page.goto('dialog-box#basic-usage')
6
6
  const demo = page.locator('#basic-usage')
7
7
 
8
- await page.getByRole('button', { name: /Dialog/ }).click()
8
+ await demo.getByRole('button', { name: /Dialog/ }).click()
9
9
  await demo.getByRole('button', { name: '确 定' }).click()
10
10
 
11
- await page.getByRole('button', { name: /Dialog/ }).click()
11
+ await demo.getByRole('button', { name: /Dialog/ }).click()
12
12
  await demo.getByRole('button', { name: '取 消' }).click()
13
13
 
14
14
  // 点击 x 图标
15
- await page.getByRole('button', { name: /Dialog/ }).click()
15
+ await demo.getByRole('button', { name: /Dialog/ }).click()
16
16
  await demo.getByLabel('Close').click()
17
17
 
18
18
  // 点击遮罩时,关闭 dialogBox
19
- await page.getByRole('button', { name: /Dialog/ }).click()
19
+ await demo.getByRole('button', { name: /Dialog/ }).click()
20
20
  await demo.locator('.tiny-dialog-box__wrapper').click()
21
21
 
22
22
  // 按 ESC 键,关闭 dialogBox
23
- await page.getByRole('button', { name: /Dialog/ }).click()
23
+ await demo.getByRole('button', { name: /Dialog/ }).click()
24
24
  await page.locator('body').press('Escape')
25
25
  expect(demo.locator('.tiny-dialog-box.is-center > .tiny-dialog-box__header')).toBeHidden()
26
26
  })
@@ -4,7 +4,7 @@ test('弹窗表单', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('dialog-box#form-in-dialog')
6
6
  const demo = page.locator('#form-in-dialog')
7
- const dialogBox = page.locator('.tiny-dialog-box')
7
+ const dialogBox = demo.locator('.tiny-dialog-box')
8
8
  await page.getByRole('button', { name: '弹出表单' }).click()
9
9
  await expect(dialogBox.locator('.tiny-form')).toBeVisible()
10
10
  await demo.getByRole('textbox').first().click()
@@ -17,6 +17,5 @@ test('弹窗表单', async ({ page }) => {
17
17
 
18
18
  // 验证下拉选择校验提示不会异常
19
19
  await demo.locator('.tiny-select__tags-group').click()
20
- await page.waitForTimeout(200)
21
20
  await expect(page.locator('.tiny-form__valid.tiny-tooltip')).not.toBeVisible()
22
21
  })
@@ -3,12 +3,13 @@ import { test, expect } from '@playwright/test'
3
3
  test('基本用法', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('drawer#basic-usage')
6
+ const demo = page.locator('#basic-usage')
6
7
 
7
- const drawer = page.locator('.tiny-drawer__main')
8
- await page.getByRole('button', { name: '抽屉组件' }).click()
8
+ const drawer = demo.locator('.tiny-drawer__main')
9
+ await demo.getByRole('button', { name: '抽屉组件' }).click()
9
10
  await expect(drawer).toBeVisible()
10
11
  await expect(drawer.locator('.tiny-drawer__header')).toHaveText('标题')
11
12
  await expect(drawer.locator('.tiny-drawer__body')).toHaveText('内容区域')
12
13
  await drawer.getByRole('button', { name: 'Close' }).click()
13
- await expect(page.locator('.tiny-drawer__main')).not.toBeVisible()
14
+ await expect(demo.locator('.tiny-drawer__main')).not.toBeVisible()
14
15
  })
@@ -5,10 +5,12 @@ test('按 Esc 键关闭 Drawer(close-on-press-escape)', async ({ page }) =>
5
5
 
6
6
  await page.goto('drawer#close-on-press-escape')
7
7
 
8
- const drawer = page.locator('.tiny-drawer__main')
8
+ const demo = page.locator('#close-on-press-escape')
9
+
10
+ const drawer = demo.locator('.tiny-drawer__main')
9
11
 
10
12
  // 打开 Drawer(用文本更稳定)
11
- await page.getByText('抽屉组件').click()
13
+ await demo.getByText('抽屉组件').click()
12
14
  await expect(drawer).toBeVisible()
13
15
 
14
16
  // 按 Esc
@@ -6,19 +6,19 @@ test('抽屉方向', async ({ page }) => {
6
6
  const demo = page.locator('#placement')
7
7
  const drawer = demo.locator('.tiny-drawer__main')
8
8
 
9
- await page.getByRole('button', { name: 'left' }).click()
9
+ await demo.getByRole('button', { name: 'left' }).click()
10
10
  await expect(drawer).toHaveCSS('left', '0px')
11
11
  await page.locator('.tiny-drawer__mask').click()
12
12
 
13
- await page.getByRole('button', { name: 'right' }).click()
13
+ await demo.getByRole('button', { name: 'right' }).click()
14
14
  await expect(drawer).toHaveCSS('right', '0px')
15
15
  await page.locator('.tiny-drawer__mask').click()
16
16
 
17
- await page.getByRole('button', { name: 'top' }).click()
17
+ await demo.getByRole('button', { name: 'top' }).click()
18
18
  await expect(drawer).toHaveCSS('top', '0px')
19
19
  await page.locator('.tiny-drawer__mask').click()
20
20
 
21
- await page.getByRole('button', { name: 'bottom' }).click()
21
+ await demo.getByRole('button', { name: 'bottom' }).click()
22
22
  await expect(drawer).toHaveCSS('bottom', '0px')
23
23
  await page.locator('.tiny-drawer__mask').click()
24
24
  })
@@ -4,8 +4,9 @@ test('头部显示', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('drawer#show-header')
6
6
 
7
- const drawerHeader = page.locator('.tiny-drawer__header')
7
+ const demo = page.locator('#show-header')
8
+ const drawerHeader = demo.locator('.tiny-drawer__header')
8
9
 
9
- await page.getByRole('button', { name: '隐藏头部' }).click()
10
+ await demo.getByRole('button', { name: '隐藏头部' }).click()
10
11
  await expect(drawerHeader).not.toBeVisible()
11
12
  })
@@ -227,6 +227,7 @@ export default {
227
227
  'zh-CN': `
228
228
  <p><code>open</code>:当抽屉打开时触发;</p>
229
229
  <p><code>confirm</code>:当抽屉底部确定按钮点击时触发,该按钮仅当设置 <code>show-footer</code> 属性为 true 时可见;</p>
230
+ <p><code>closed</code>:当抽屉关闭动画结束时触发;</p>
230
231
  <p><code>close</code>:当抽屉关闭时触发。关闭抽屉的途径有:</p>
231
232
  <ul>
232
233
  <li>点击右上角关闭按钮;</li>
@@ -416,11 +417,11 @@ export default {
416
417
  support: {
417
418
  value: true
418
419
  },
419
- description: '支持 open、confirm、close 等事件。',
420
+ description: '支持 open、confirm、close、closed 等事件。',
420
421
  cloud: {
421
422
  value: true
422
423
  },
423
- apis: ['open', 'confirm', 'close'],
424
+ apis: ['open', 'confirm', 'close', 'closed'],
424
425
  demos: ['events']
425
426
  }
426
427
  ]
@@ -64,7 +64,7 @@ p {
64
64
  .tiny-svg {
65
65
  fill: var(--tv-color-icon-control);
66
66
  &:hover {
67
- fill: var(--tv-color-icon-control);
67
+ fill: var(--tv-color-info-icon);
68
68
  }
69
69
  }
70
70
  }
@@ -74,7 +74,7 @@ p {
74
74
  .tiny-svg {
75
75
  fill: var(--tv-color-icon-control);
76
76
  &:hover {
77
- fill: var(--tv-color-icon-control);
77
+ fill: var(--tv-color-info-icon);
78
78
  }
79
79
  }
80
80
  }
@@ -6,12 +6,14 @@
6
6
  <tiny-dropdown-menu :options="options"> </tiny-dropdown-menu>
7
7
  </template>
8
8
  </tiny-dropdown>
9
- <p>场景 2:使用 tip 和 tip-position 属性设置提示信息</p>
9
+ <p>场景 2:使用 tip、tip-position 和 tip-effect 属性设置提示信息</p>
10
10
  <tiny-dropdown>
11
11
  <template #dropdown>
12
12
  <tiny-dropdown-menu popper-class="my-class">
13
13
  <tiny-dropdown-item label="老友粉" tip="老友粉"></tiny-dropdown-item>
14
14
  <tiny-dropdown-item tip="黄金糕" tip-position="top">黄金糕</tiny-dropdown-item>
15
+ <tiny-dropdown-item tip="深色主题提示" tip-position="right" tip-effect="dark">深色主题</tiny-dropdown-item>
16
+ <tiny-dropdown-item tip="浅色主题提示" tip-position="left" tip-effect="light">浅色主题</tiny-dropdown-item>
15
17
  <tiny-dropdown-item>狮子头</tiny-dropdown-item>
16
18
  <tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
17
19
  <tiny-dropdown-item disabled>双皮奶</tiny-dropdown-item>
@@ -36,7 +38,8 @@ const options = ref([
36
38
  label: '狮子头',
37
39
  divided: true,
38
40
  tip: '很好',
39
- tipPosition: 'left'
41
+ tipPosition: 'left',
42
+ tipEffect: 'light'
40
43
  },
41
44
  {
42
45
  label: '黄金糕',
@@ -6,12 +6,14 @@
6
6
  <tiny-dropdown-menu :options="options"> </tiny-dropdown-menu>
7
7
  </template>
8
8
  </tiny-dropdown>
9
- <p>场景 2:使用 tip 和 tip-position 属性设置提示信息</p>
9
+ <p>场景 2:使用 tip、tip-position 和 tip-effect 属性设置提示信息</p>
10
10
  <tiny-dropdown>
11
11
  <template #dropdown>
12
12
  <tiny-dropdown-menu popper-class="my-class">
13
13
  <tiny-dropdown-item label="老友粉" tip="老友粉"></tiny-dropdown-item>
14
14
  <tiny-dropdown-item tip="黄金糕" tip-position="top">黄金糕</tiny-dropdown-item>
15
+ <tiny-dropdown-item tip="深色主题提示" tip-position="right" tip-effect="dark">深色主题</tiny-dropdown-item>
16
+ <tiny-dropdown-item tip="浅色主题提示" tip-position="left" tip-effect="light">浅色主题</tiny-dropdown-item>
15
17
  <tiny-dropdown-item>狮子头</tiny-dropdown-item>
16
18
  <tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
17
19
  <tiny-dropdown-item disabled>双皮奶</tiny-dropdown-item>
@@ -43,7 +45,8 @@ export default {
43
45
  label: '狮子头',
44
46
  divided: true,
45
47
  tip: '很好',
46
- tipPosition: 'left'
48
+ tipPosition: 'left',
49
+ tipEffect: 'light'
47
50
  },
48
51
  {
49
52
  label: '黄金糕',
@@ -119,9 +119,9 @@ export default {
119
119
  'en-US': 'Prompt'
120
120
  },
121
121
  desc: {
122
- 'zh-CN': '通过 <p><code>tip</code> 属性设置提示信息,<code>tip-position</code> 属性设置提示信息的位置。</p>\n',
122
+ 'zh-CN': '<p>通过 <code>tip</code> 属性设置提示信息,<code>tip-position</code> 属性设置提示信息的位置,<code>tip-effect</code> 属性设置提示信息的主题(light/dark)。</p>\n',
123
123
  'en-US':
124
- '<p>Set the prompt information through the <code>tip</code> attribute, and set the position of the prompt information through the <code>tip-position</code> attribute.</p>\n'
124
+ '<p>Set the prompt information through the <code>tip</code> attribute, set the position of the prompt information through the <code>tip-position</code> attribute, and set the theme of the prompt information (light/dark) through the <code>tip-effect</code> attribute.</p>\n'
125
125
  },
126
126
  codeFiles: ['tip.vue']
127
127
  },
@@ -0,0 +1,58 @@
1
+ <template>
2
+ <div>
3
+ <div class="mb10">
4
+ <span class="label">选择尺寸:</span>
5
+ <tiny-radio-group v-model="currentSize">
6
+ <tiny-radio label="">默认 (default)</tiny-radio>
7
+ <tiny-radio label="medium">中等 (medium)</tiny-radio>
8
+ </tiny-radio-group>
9
+ </div>
10
+ <div class="box">
11
+ <tiny-filter-panel
12
+ ref="filterPanel"
13
+ label="物品数量"
14
+ :value="value"
15
+ :size="currentSize"
16
+ @handle-clear="handleClear"
17
+ >
18
+ <tiny-radio-group v-model="radioVal" size="mini">
19
+ <tiny-radio label="大于">大于</tiny-radio>
20
+ <tiny-radio label="等于">等于</tiny-radio>
21
+ <tiny-radio label="小于">小于</tiny-radio>
22
+ </tiny-radio-group>
23
+ <tiny-input type="text" v-model="inputVal" style="margin-top: 20px"></tiny-input>
24
+ </tiny-filter-panel>
25
+ </div>
26
+ </div>
27
+ </template>
28
+
29
+ <script setup>
30
+ import { ref, computed } from 'vue'
31
+ import { TinyFilterPanel, TinyRadio, TinyRadioGroup, TinyInput } from '@opentiny/vue'
32
+
33
+ // 表单数据
34
+ const inputVal = ref('')
35
+ const radioVal = ref('')
36
+ const currentSize = ref('') // 默认尺寸
37
+
38
+ // 计算显示的值
39
+ const value = computed(() => {
40
+ return radioVal.value + inputVal.value
41
+ })
42
+
43
+ // 清空处理
44
+ const handleClear = () => {
45
+ radioVal.value = ''
46
+ inputVal.value = ''
47
+ }
48
+ </script>
49
+
50
+ <style scoped>
51
+ .box {
52
+ display: flex;
53
+ }
54
+ .label {
55
+ margin-right: 10px;
56
+ font-weight: bold;
57
+ }
58
+ </style>
@@ -0,0 +1,23 @@
1
+ import { test, expect } from '@playwright/test'
2
+
3
+ test('测试过滤器面板尺寸', async ({ page }) => {
4
+ page.on('pageerror', (exception) => expect(exception).toBeNull())
5
+ await page.goto('filter-panel#size')
6
+
7
+ const demo = page.locator('#size')
8
+ const filterBox = demo.locator('.tiny-filter-box')
9
+
10
+ // 测试默认尺寸(不包含 medium class)
11
+ await expect(filterBox).toHaveClass(/tiny-filter-box/)
12
+ await expect(filterBox).not.toHaveClass(/tiny-filter-box--medium/)
13
+
14
+ // 测试 medium 尺寸
15
+ await demo.getByText('中等 (medium)').click()
16
+ await page.waitForTimeout(200)
17
+ await expect(filterBox).toHaveClass(/tiny-filter-box--medium/)
18
+
19
+ // 切换回默认尺寸
20
+ await demo.getByText('默认 (default)').click()
21
+ await page.waitForTimeout(200)
22
+ await expect(filterBox).not.toHaveClass(/tiny-filter-box--medium/)
23
+ })
@@ -0,0 +1,68 @@
1
+ <template>
2
+ <div>
3
+ <div class="mb10">
4
+ <span class="label">选择尺寸:</span>
5
+ <tiny-radio-group v-model="currentSize">
6
+ <tiny-radio label="">默认 (default)</tiny-radio>
7
+ <tiny-radio label="medium">中等 (medium)</tiny-radio>
8
+ </tiny-radio-group>
9
+ </div>
10
+ <div class="box">
11
+ <tiny-filter-panel
12
+ ref="filterPanel"
13
+ label="物品数量"
14
+ :value="value"
15
+ :size="currentSize"
16
+ @handle-clear="handleClear"
17
+ >
18
+ <tiny-radio-group v-model="radioVal" size="mini">
19
+ <tiny-radio label="大于">大于</tiny-radio>
20
+ <tiny-radio label="等于">等于</tiny-radio>
21
+ <tiny-radio label="小于">小于</tiny-radio>
22
+ </tiny-radio-group>
23
+ <tiny-input type="text" v-model="inputVal" style="margin-top: 20px"></tiny-input>
24
+ </tiny-filter-panel>
25
+ </div>
26
+ </div>
27
+ </template>
28
+
29
+ <script>
30
+ import { TinyFilterPanel, TinyRadio, TinyRadioGroup, TinyInput } from '@opentiny/vue'
31
+
32
+ export default {
33
+ components: {
34
+ TinyRadio,
35
+ TinyRadioGroup,
36
+ TinyFilterPanel,
37
+ TinyInput
38
+ },
39
+ data() {
40
+ return {
41
+ inputVal: '',
42
+ radioVal: '',
43
+ currentSize: '' // 默认尺寸
44
+ }
45
+ },
46
+ computed: {
47
+ value() {
48
+ return this.radioVal + this.inputVal
49
+ }
50
+ },
51
+ methods: {
52
+ handleClear() {
53
+ this.radioVal = ''
54
+ this.inputVal = ''
55
+ }
56
+ }
57
+ }
58
+ </script>
59
+
60
+ <style scoped>
61
+ .box {
62
+ display: flex;
63
+ }
64
+ .label {
65
+ margin-right: 10px;
66
+ font-weight: bold;
67
+ }
68
+ </style>
@@ -46,6 +46,19 @@ export default {
46
46
  },
47
47
  codeFiles: ['tip.vue']
48
48
  },
49
+ {
50
+ demoId: 'size',
51
+ name: {
52
+ 'zh-CN': '尺寸',
53
+ 'en-US': 'Size'
54
+ },
55
+ desc: {
56
+ 'zh-CN': '通过 <code>size</code> 设置过滤器面板的尺寸。支持 <code>medium</code> 中等尺寸,不设置则为默认尺寸。',
57
+ 'en-US':
58
+ 'Set the size of the filter panel through <code>size</code>. Supports <code>medium</code> size. If not set, the default size is used.'
59
+ },
60
+ codeFiles: ['size.vue']
61
+ },
49
62
  {
50
63
  demoId: 'manual-hide',
51
64
  name: {