@opentiny/vue-docs 3.24.6 → 3.26.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 (249) hide show
  1. package/.stylelintrc.js +2 -2
  2. package/demos/apis/button.js +15 -0
  3. package/demos/apis/calendar-view.js +3 -2
  4. package/demos/apis/chart-demo.js +1 -1
  5. package/demos/apis/chart-docs.js +1 -1
  6. package/demos/apis/chart-events.js +1 -1
  7. package/demos/apis/chart-question.js +1 -1
  8. package/demos/apis/chart.js +1 -1
  9. package/demos/apis/form.js +3 -0
  10. package/demos/apis/grid.js +76 -16
  11. package/demos/apis/modal.js +1 -1
  12. package/demos/apis/numeric.js +3 -3
  13. package/demos/apis/search.js +28 -0
  14. package/demos/apis/slider-button.js +22 -0
  15. package/demos/apis/split.js +11 -0
  16. package/demos/apis/steps.js +3 -3
  17. package/demos/apis/tabs.js +12 -0
  18. package/demos/apis/time-line.js +20 -0
  19. package/demos/mobile-first/app/button/type.vue +1 -1
  20. package/demos/mobile-first/app/button/webdoc/button.js +2 -2
  21. package/demos/mobile-first/app/slider-button/basic-usage.vue +5 -5
  22. package/demos/mobile-first/app/slider-button/webdoc/slider-button.js +1 -1
  23. package/demos/mobile-first/app/steps/advanced-steps.vue +8 -1
  24. package/demos/mobile-first/menus.js +16 -9
  25. package/demos/pc/app/action-menu/basic-usage-composition-api.vue +1 -1
  26. package/demos/pc/app/action-menu/basic-usage.vue +1 -1
  27. package/demos/pc/app/action-menu/card-mode-composition-api.vue +1 -1
  28. package/demos/pc/app/action-menu/card-mode.vue +1 -1
  29. package/demos/pc/app/action-menu/disabled-composition-api.vue +2 -2
  30. package/demos/pc/app/action-menu/disabled.vue +2 -2
  31. package/demos/pc/app/action-menu/events-composition-api.vue +1 -1
  32. package/demos/pc/app/action-menu/events.vue +1 -1
  33. package/demos/pc/app/action-menu/icon-composition-api.vue +2 -2
  34. package/demos/pc/app/action-menu/icon.vue +2 -2
  35. package/demos/pc/app/action-menu/max-show-num-composition-api.vue +1 -1
  36. package/demos/pc/app/action-menu/max-show-num.vue +1 -1
  37. package/demos/pc/app/action-menu/more-text-composition-api.vue +1 -1
  38. package/demos/pc/app/action-menu/more-text.vue +1 -1
  39. package/demos/pc/app/action-menu/popper-class-composition-api.vue +1 -1
  40. package/demos/pc/app/action-menu/popper-class.vue +1 -1
  41. package/demos/pc/app/action-menu/slot-item-composition-api.vue +1 -1
  42. package/demos/pc/app/action-menu/slot-item.vue +1 -1
  43. package/demos/pc/app/action-menu/spacing-composition-api.vue +1 -1
  44. package/demos/pc/app/action-menu/spacing.vue +1 -1
  45. package/demos/pc/app/action-menu/text-field-composition-api.vue +1 -1
  46. package/demos/pc/app/action-menu/text-field.spec.ts +1 -1
  47. package/demos/pc/app/action-menu/text-field.vue +1 -1
  48. package/demos/pc/app/amount/custom-service.spec.js +4 -4
  49. package/demos/pc/app/base-select/slot-reference.spec.ts +1 -1
  50. package/demos/pc/app/button/icon-composition-api.vue +3 -1
  51. package/demos/pc/app/button/icon.vue +3 -1
  52. package/demos/pc/app/button/webdoc/button.js +3 -2
  53. package/demos/pc/app/calendar-view/calendar-mode-composition-api.vue +7 -1
  54. package/demos/pc/app/calendar-view/calendar-mode.spec.ts +3 -0
  55. package/demos/pc/app/calendar-view/calendar-mode.vue +7 -1
  56. package/demos/pc/app/carousel/webdoc/carousel.js +0 -18
  57. package/demos/pc/app/color-picker/alpha-composition-api.vue +1 -1
  58. package/demos/pc/app/color-picker/alpha.spec.ts +2 -2
  59. package/demos/pc/app/color-picker/alpha.vue +1 -1
  60. package/demos/pc/app/color-picker/base.spec.ts +2 -2
  61. package/demos/pc/app/color-picker/default-visible.spec.ts +1 -1
  62. package/demos/pc/app/color-picker/event-composition-api.vue +2 -2
  63. package/demos/pc/app/color-picker/event.spec.ts +4 -4
  64. package/demos/pc/app/color-picker/event.vue +1 -1
  65. package/demos/pc/app/color-picker/format.spec.ts +6 -6
  66. package/demos/pc/app/color-picker/history.spec.ts +1 -7
  67. package/demos/pc/app/color-picker/predefine.spec.ts +3 -10
  68. package/demos/pc/app/color-picker/size.spec.ts +4 -4
  69. package/demos/pc/app/color-select-panel/format.spec.ts +2 -8
  70. package/demos/pc/app/color-select-panel/history.spec.ts +0 -2
  71. package/demos/pc/app/color-select-panel/predefine.spec.ts +0 -3
  72. package/demos/pc/app/container/basic-usage-composition-api.vue +10 -10
  73. package/demos/pc/app/container/basic-usage.vue +10 -10
  74. package/demos/pc/app/container/custom-with-height-composition-api.vue +8 -8
  75. package/demos/pc/app/container/custom-with-height.vue +10 -10
  76. package/demos/pc/app/date-panel/custom-week.spec.ts +2 -2
  77. package/demos/pc/app/dialog-select/nest-grid-single.spec.ts +40 -0
  78. package/demos/pc/app/dialog-select/nest-tree-multi.spec.ts +53 -0
  79. package/demos/pc/app/dialog-select/nest-tree-single.spec.ts +25 -0
  80. package/demos/pc/app/dialog-select/set-selection.spec.ts +20 -0
  81. package/demos/pc/app/file-upload/before-upload-limit-composition-api.vue +1 -1
  82. package/demos/pc/app/file-upload/before-upload-limit.spec.ts +1 -1
  83. package/demos/pc/app/file-upload/before-upload-limit.vue +1 -1
  84. package/demos/pc/app/file-upload/custom-trigger-composition-api.vue +1 -1
  85. package/demos/pc/app/file-upload/custom-trigger.spec.ts +1 -1
  86. package/demos/pc/app/file-upload/custom-trigger.vue +1 -1
  87. package/demos/pc/app/file-upload/custom-upload-tip-composition-api.vue +1 -1
  88. package/demos/pc/app/file-upload/custom-upload-tip.vue +1 -1
  89. package/demos/pc/app/file-upload/form-validation-composition-api.vue +1 -1
  90. package/demos/pc/app/file-upload/form-validation.vue +1 -1
  91. package/demos/pc/app/file-upload/image-size-composition-api.vue +1 -1
  92. package/demos/pc/app/file-upload/image-size.spec.ts +1 -1
  93. package/demos/pc/app/file-upload/image-size.vue +1 -1
  94. package/demos/pc/app/file-upload/multiple-file-composition-api.vue +1 -1
  95. package/demos/pc/app/file-upload/multiple-file.spec.ts +1 -1
  96. package/demos/pc/app/file-upload/multiple-file.vue +1 -1
  97. package/demos/pc/app/file-upload/prevent-delete-file-composition-api.vue +1 -1
  98. package/demos/pc/app/file-upload/prevent-delete-file.vue +1 -1
  99. package/demos/pc/app/file-upload/upload-request-composition-api.vue +1 -1
  100. package/demos/pc/app/file-upload/upload-request.spec.ts +2 -2
  101. package/demos/pc/app/file-upload/upload-request.vue +1 -1
  102. package/demos/pc/app/grid/base/basic-usage-composition-api.vue +1 -17
  103. package/demos/pc/app/grid/custom/column-fixed.spec.js +2 -1
  104. package/demos/pc/app/grid/custom/page-size.spec.js +1 -1
  105. package/demos/pc/app/grid/data-source/auto-load.spec.js +0 -1
  106. package/demos/pc/app/grid/data-source/request-service.spec.js +1 -1
  107. package/demos/pc/app/grid/data-source/static-data.spec.js +1 -1
  108. package/demos/pc/app/grid/dynamically-columns/dynamically-columns.spec.js +2 -1
  109. package/demos/pc/app/grid/edit/scrollbar-not-blur-composition-api.vue +119 -0
  110. package/demos/pc/app/grid/edit/scrollbar-not-blur.spec.ts +28 -0
  111. package/demos/pc/app/grid/edit/scrollbar-not-blur.vue +129 -0
  112. package/demos/pc/app/grid/editor/custom-edit.spec.js +7 -2
  113. package/demos/pc/app/grid/empty/empty-data-iscenter.spec.js +1 -1
  114. package/demos/pc/app/grid/event/toolbar-button-click-event.spec.js +1 -1
  115. package/demos/pc/app/grid/expand/expand-trigger-slot-composition-api.vue +85 -0
  116. package/demos/pc/app/grid/expand/expand-trigger-slot.spec.ts +11 -0
  117. package/demos/pc/app/grid/expand/expand-trigger-slot.vue +95 -0
  118. package/demos/pc/app/grid/expand/set-row-expansion.spec.js +4 -0
  119. package/demos/pc/app/grid/filter/custom-filter.spec.js +3 -3
  120. package/demos/pc/app/grid/filter/default-filter-composition-api.vue +6 -0
  121. package/demos/pc/app/grid/filter/default-filter.vue +6 -0
  122. package/demos/pc/app/grid/filter/default-relation.spec.js +1 -1
  123. package/demos/pc/app/grid/filter/server-filter.spec.js +1 -1
  124. package/demos/pc/app/grid/filter/simple-filter.spec.ts +5 -4
  125. package/demos/pc/app/grid/fixed/right-fixed-composition-api.vue +4 -4
  126. package/demos/pc/app/grid/fixed/right-fixed.vue +4 -4
  127. package/demos/pc/app/grid/footer/footer-summation-empty.spec.js +0 -1
  128. package/demos/pc/app/grid/large-data/full-data-loading.spec.js +10 -3
  129. package/demos/pc/app/grid/large-data/virtual-rolling.spec.js +9 -2
  130. package/demos/pc/app/grid/mouse-keyboard/keyboard-navigation.spec.js +4 -1
  131. package/demos/pc/app/grid/renderer/inner-renderer-date-composition-api.vue +4 -3
  132. package/demos/pc/app/grid/renderer/inner-renderer-date.spec.js +2 -2
  133. package/demos/pc/app/grid/renderer/inner-renderer-date.vue +3 -3
  134. package/demos/pc/app/grid/renderer/inner-renderer.spec.js +4 -0
  135. package/demos/pc/app/grid/size/max-min-grid-height.spec.js +2 -2
  136. package/demos/pc/app/grid/slot/slot-conf-composition-api.vue +141 -0
  137. package/demos/pc/app/grid/slot/slot-conf.spec.js +12 -0
  138. package/demos/pc/app/grid/slot/slot-conf.vue +151 -0
  139. package/demos/pc/app/grid/sort/combinations-sort.spec.js +2 -2
  140. package/demos/pc/app/grid/webdoc/grid-edit.js +12 -0
  141. package/demos/pc/app/grid/webdoc/grid-empty.js +1 -1
  142. package/demos/pc/app/grid/webdoc/grid-expand.js +11 -0
  143. package/demos/pc/app/grid/webdoc/grid-slot.js +9 -0
  144. package/demos/pc/app/icon/iconGroups.js +8 -2
  145. package/demos/pc/app/input/basic-usage.spec.ts +1 -1
  146. package/demos/pc/app/loading/background.spec.ts +3 -1
  147. package/demos/pc/app/loading/custom-class.spec.ts +4 -2
  148. package/demos/pc/app/loading/fullscreen.spec.ts +6 -4
  149. package/demos/pc/app/loading/loading-tip-text.spec.ts +3 -1
  150. package/demos/pc/app/loading/size.spec.ts +5 -3
  151. package/demos/pc/app/locales/custom-service-composition-api.vue +3 -3
  152. package/demos/pc/app/locales/custom-service.spec.ts +1 -1
  153. package/demos/pc/app/locales/custom-service.vue +3 -3
  154. package/demos/pc/app/modal/basic-usage.spec.ts +2 -1
  155. package/demos/pc/app/modal/message-close.spec.ts +2 -2
  156. package/demos/pc/app/modal/message-id.spec.ts +2 -2
  157. package/demos/pc/app/modal/modal-fn-slots.spec.ts +5 -7
  158. package/demos/pc/app/modal/modal-header.spec.ts +2 -1
  159. package/demos/pc/app/numeric/input-event-composition-api.vue +26 -0
  160. package/demos/pc/app/numeric/input-event.spec.ts +15 -0
  161. package/demos/pc/app/numeric/input-event.vue +34 -0
  162. package/demos/pc/app/numeric/webdoc/numeric.js +12 -0
  163. package/demos/pc/app/pager/align-composition-api.vue +10 -13
  164. package/demos/pc/app/pager/align.spec.ts +8 -3
  165. package/demos/pc/app/pager/align.vue +11 -5
  166. package/demos/pc/app/pager/page-size-composition-api.vue +2 -2
  167. package/demos/pc/app/pager/page-size.spec.ts +1 -1
  168. package/demos/pc/app/pager/page-size.vue +2 -2
  169. package/demos/pc/app/pager/pager-in-grid-composition-api.vue +0 -1
  170. package/demos/pc/app/pager/pager-in-grid.vue +0 -1
  171. package/demos/pc/app/pager/popper-append-to-body-composition-api.vue +1 -7
  172. package/demos/pc/app/pager/popper-append-to-body.vue +1 -7
  173. package/demos/pc/app/pager/popper-class-composition-api.vue +1 -7
  174. package/demos/pc/app/pager/popper-class.vue +1 -7
  175. package/demos/pc/app/popeditor/conditions.spec.ts +1 -1
  176. package/demos/pc/app/popeditor/suggest.spec.ts +1 -1
  177. package/demos/pc/app/qr-code/icon-composition-api.vue +17 -3
  178. package/demos/pc/app/qr-code/icon.spec.ts +19 -0
  179. package/demos/pc/app/qr-code/icon.vue +25 -4
  180. package/demos/pc/app/qr-code/style-composition-api.vue +2 -9
  181. package/demos/pc/app/qr-code/style.spec.ts +18 -1
  182. package/demos/pc/app/qr-code/style.vue +11 -8
  183. package/demos/pc/app/query-builder/webdoc/query-builder.js +5 -3
  184. package/demos/pc/app/search/events.spec.ts +1 -1
  185. package/demos/pc/app/search/events.vue +9 -0
  186. package/demos/pc/app/search/slot-prefix-suffix.spec.ts +1 -1
  187. package/demos/pc/app/search/webdoc/search.js +12 -4
  188. package/demos/pc/app/select/nest-grid-remote.spec.ts +3 -3
  189. package/demos/pc/app/select/nest-grid.spec.ts +1 -1
  190. package/demos/pc/app/select/nest-radio-grid-much-data.spec.ts +5 -7
  191. package/demos/pc/app/tabs/basic-usage.spec.ts +2 -2
  192. package/demos/pc/app/tabs/header-only.vue +56 -0
  193. package/demos/pc/app/tabs/size.spec.ts +2 -2
  194. package/demos/pc/app/tabs/webdoc/tabs.js +12 -0
  195. package/demos/pc/app/time-line/slot-default-composition-api.vue +81 -0
  196. package/demos/pc/app/time-line/slot-default.spec.ts +13 -0
  197. package/demos/pc/app/time-line/slot-default.vue +95 -0
  198. package/demos/pc/app/time-line/webdoc/time-line.js +12 -0
  199. package/demos/pc/menus.js +20 -10
  200. package/demos/pc/webdoc/changelog-en.md +224 -197
  201. package/demos/pc/webdoc/changelog.md +167 -387
  202. package/demos/pc/webdoc/faq.md +14 -0
  203. package/demos/saas/menus.js +2 -14
  204. package/env/.env +3 -0
  205. package/package.json +25 -24
  206. package/playground/App.vue +2 -2
  207. package/postcss.config.cjs +1 -0
  208. package/src/App.vue +26 -59
  209. package/src/components/anchor.vue +5 -1
  210. package/src/components/demo.vue +18 -7
  211. package/src/components/design-token.vue +90 -0
  212. package/src/components/float-settings.vue +4 -23
  213. package/src/components/mcp-docs.vue +4 -26
  214. package/src/components/version-tip.vue +1 -1
  215. package/src/composable/useTinyRemoter.ts +176 -0
  216. package/src/composable/utils.ts +2 -166
  217. package/src/const.ts +6 -1
  218. package/src/i18n/en.json +2 -0
  219. package/src/i18n/es.json +47 -0
  220. package/src/i18n/index.js +24 -5
  221. package/src/i18n/pt.json +47 -0
  222. package/src/i18n/zh.json +2 -0
  223. package/src/main.js +17 -13
  224. package/src/{menus.jsx → menus.js} +0 -1
  225. package/src/router.js +3 -18
  226. package/src/tools/appData.js +6 -16
  227. package/src/tools/storage.js +5 -3
  228. package/src/tools/useApiMode.js +11 -3
  229. package/src/tools/useBulletin.jsx +9 -8
  230. package/src/tools/useStyleSettings.js +8 -0
  231. package/src/tools/useTemplateMode.js +5 -1
  232. package/src/tools/utils.js +32 -1
  233. package/src/views/components-doc/cmp-config.js +13 -1
  234. package/src/views/components-doc/common.vue +42 -15
  235. package/src/views/layout/layout.vue +5 -8
  236. package/src/views/overview.vue +1 -1
  237. package/tsconfig.node.json +2 -4
  238. package/src/components/MessageCard.vue +0 -117
  239. package/src/components/tiny-robot-chat.vue +0 -128
  240. package/src/composable/DifyModelProvider.ts +0 -65
  241. package/src/composable/useTinyRobot.ts +0 -167
  242. package/src/tools/useAllTaskFinish.ts +0 -0
  243. package/src/views/comprehensive/Demo.vue +0 -212
  244. package/src/views/comprehensive/index.vue +0 -380
  245. package/src/views/comprehensive/products.json +0 -98
  246. package/src/views/comprehensive/types/index.ts +0 -37
  247. package/src/views/remoter/index.vue +0 -63
  248. package/src/views/remoter/sound.vue +0 -349
  249. /package/demos/pc/app/grid/expand/{expand-config.spec.js → expand-config.spec.ts} +0 -0
@@ -3,14 +3,21 @@ 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('grid-large-data#large-data-full-data-loading')
6
- await page.locator('.tiny-grid__body').hover()
6
+ await page.setViewportSize({
7
+ width: 1400,
8
+ height: 2500
9
+ })
10
+ await page.waitForTimeout(1000)
11
+ await page.locator('.tiny-grid__body-wrapper').hover()
12
+ await page.locator('.tiny-grid__body-wrapper').click()
7
13
  // 先滚动 1000px
8
14
  await page.mouse.wheel(0, 1000)
9
15
  await expect(page.getByRole('cell', { name: '28' })).toBeVisible()
10
16
  await page.waitForTimeout(500)
11
- await page.locator('.tiny-grid__body').hover()
17
+ await page.locator('.tiny-grid__body-wrapper').hover()
18
+ await page.locator('.tiny-grid__body-wrapper').click()
12
19
  // 先滚动 4000px
13
20
  await page.mouse.wheel(0, 5000)
14
21
  await page.waitForTimeout(200)
15
- await expect(page.getByRole('cell', { name: '153' })).toBeVisible()
22
+ await expect(page.getByRole('cell', { name: '129' })).toBeVisible()
16
23
  })
@@ -3,12 +3,19 @@ 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('grid-large-data#large-data-virtual-rolling')
6
- await page.locator('.tiny-grid__body').hover()
6
+ await page.setViewportSize({
7
+ width: 1400,
8
+ height: 2500
9
+ })
10
+ await page.waitForTimeout(1000)
11
+ await page.locator('.tiny-grid__body-wrapper').hover()
12
+ await page.locator('.tiny-grid__body-wrapper').click()
7
13
  // 先滚动 1000px
8
14
  await page.mouse.wheel(0, 1000)
9
15
  await expect(page.getByRole('cell', { name: '24' })).toBeVisible()
10
16
  await page.waitForTimeout(500)
11
- await page.locator('.tiny-grid__body').hover()
17
+ await page.locator('.tiny-grid__body-wrapper').hover()
18
+ await page.locator('.tiny-grid__body-wrapper').click()
12
19
  // 先滚动 4000px
13
20
  await page.mouse.wheel(0, 5000)
14
21
  await expect(page.getByRole('cell', { name: '124' })).toBeVisible()
@@ -4,7 +4,10 @@ test('键盘导航测试', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  const demo = page.locator('#mouse-keyboard-keyboard-navigation')
6
6
  await page.goto('grid-mouse-keyboard#mouse-keyboard-keyboard-navigation')
7
-
7
+ await page.setViewportSize({
8
+ width: 1400,
9
+ height: 2500
10
+ })
8
11
  await page.getByText('GFD 科技 YX 公司').click()
9
12
  await page.waitForTimeout(300)
10
13
  await page.locator('body').press('ArrowDown')
@@ -7,19 +7,19 @@
7
7
  field="date3"
8
8
  title="日期3"
9
9
  format-text="date"
10
- :format-config="{ valueFormat: 'dd/MM/yyyy' }"
10
+ :format-config="{ dateFormat: 'dd/MM/yyyy' }"
11
11
  ></tiny-grid-column>
12
12
  <tiny-grid-column
13
13
  field="date4"
14
14
  title="日期4"
15
15
  format-text="date"
16
- :format-config="{ valueFormat: 'dd/MM/yyyy' }"
16
+ :format-config="{ dateFormat: 'dd/MM/yyyy' }"
17
17
  ></tiny-grid-column>
18
18
  <tiny-grid-column
19
19
  field="date5"
20
20
  title="日期5"
21
21
  format-text="date"
22
- :format-config="{ valueFormat: 'MM/dd/yyyy' }"
22
+ :format-config="{ dateFormat: 'MM/dd/yyyy' }"
23
23
  ></tiny-grid-column>
24
24
  </tiny-grid>
25
25
  </template>
@@ -27,6 +27,7 @@
27
27
  <script setup>
28
28
  import { ref } from 'vue'
29
29
  import { TinyGrid, TinyGridColumn } from '@opentiny/vue'
30
+
30
31
  const tableData = ref([
31
32
  {
32
33
  id: '1',
@@ -4,6 +4,6 @@ test('日期渲染器', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('grid-renderer#renderer-inner-renderer-date')
6
6
  await expect(page.getByText('-07-02').first()).toBeVisible()
7
- await expect(page.getByText('-02-15').first()).toBeVisible()
8
- await expect(page.getByText('-02-15').nth(1)).toBeVisible()
7
+ await expect(page.getByText('02/07/2024').first()).toBeVisible()
8
+ await expect(page.getByText('02/15/2024').first()).toBeVisible()
9
9
  })
@@ -7,19 +7,19 @@
7
7
  field="date3"
8
8
  title="日期3"
9
9
  format-text="date"
10
- :format-config="{ valueFormat: 'dd/MM/yyyy' }"
10
+ :format-config="{ dateFormat: 'dd/MM/yyyy' }"
11
11
  ></tiny-grid-column>
12
12
  <tiny-grid-column
13
13
  field="date4"
14
14
  title="日期4"
15
15
  format-text="date"
16
- :format-config="{ valueFormat: 'dd/MM/yyyy' }"
16
+ :format-config="{ dateFormat: 'dd/MM/yyyy' }"
17
17
  ></tiny-grid-column>
18
18
  <tiny-grid-column
19
19
  field="date5"
20
20
  title="日期5"
21
21
  format-text="date"
22
- :format-config="{ valueFormat: 'MM/dd/yyyy' }"
22
+ :format-config="{ dateFormat: 'MM/dd/yyyy' }"
23
23
  ></tiny-grid-column>
24
24
  </tiny-grid>
25
25
  </template>
@@ -3,6 +3,10 @@ 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('grid-renderer#renderer-inner-renderer')
6
+ await page.setViewportSize({
7
+ width: 1400,
8
+ height: 2500
9
+ })
6
10
  const cell = page.getByRole('cell', { name: '90.0%' }).locator('.tiny-grid__rate-chart')
7
11
  await expect(cell).toHaveCSS('background-color', 'rgb(92, 179, 0)')
8
12
  })
@@ -3,6 +3,6 @@ import { test, expect } from '@playwright/test'
3
3
  test('设置 maxHeight 最大高度', async ({ page }) => {
4
4
  page.on('pageerror', (exception) => expect(exception).toBeNull())
5
5
  await page.goto('grid-size#size-max-min-grid-height')
6
- await expect(page.locator('.tiny-grid__body-wrapper').nth(0)).toHaveCSS('max-height', '160px')
7
- await expect(page.locator('.tiny-grid__body-wrapper').nth(1)).toHaveCSS('min-height', '260px')
6
+ await expect(page.locator('.tiny-grid__body-wrapper').nth(0)).toHaveCSS('max-height', '200px')
7
+ await expect(page.locator('.tiny-grid__body-wrapper').nth(1)).toHaveCSS('min-height', '300px')
8
8
  })
@@ -0,0 +1,141 @@
1
+ <template>
2
+ <tiny-grid v-bind="op"></tiny-grid>
3
+ </template>
4
+
5
+ <script setup lang="jsx">
6
+ import { ref } from 'vue'
7
+ import { TinyGrid } from '@opentiny/vue'
8
+
9
+ const tableData = [
10
+ {
11
+ id: '1',
12
+ name: 'GFD 科技 YX 公司',
13
+ city: '福州',
14
+ employees: 800,
15
+ createdDate: '2014-04-30 00:56:00',
16
+ boole: false
17
+ },
18
+ {
19
+ id: '2',
20
+ name: 'WWW 科技 YX 公司',
21
+ city: '深圳',
22
+ employees: 300,
23
+ createdDate: '2016-07-08 12:36:22',
24
+ boole: true
25
+ },
26
+ {
27
+ id: '3',
28
+ name: 'RFV 有限责任公司',
29
+ city: '中山',
30
+ employees: 1300,
31
+ createdDate: '2014-02-14 14:14:14',
32
+ boole: false
33
+ },
34
+ {
35
+ id: '4',
36
+ name: 'TGB 科技 YX 公司',
37
+ city: '龙岩',
38
+ employees: 360,
39
+ createdDate: '2013-01-13 13:13:13',
40
+ boole: true
41
+ },
42
+ {
43
+ id: '5',
44
+ name: 'YHN 科技 YX 公司',
45
+ city: '韶关',
46
+ employees: 810,
47
+ createdDate: '2012-12-12 12:12:12',
48
+ boole: true
49
+ },
50
+ {
51
+ id: '6',
52
+ name: 'WSX 科技 YX 公司',
53
+ city: '黄冈',
54
+ employees: 800,
55
+ createdDate: '2011-11-11 11:11:11',
56
+ boole: true
57
+ },
58
+ {
59
+ id: '7',
60
+ name: 'KBG 物业 YX 公司',
61
+ city: '赤壁',
62
+ employees: 400,
63
+ createdDate: '2016-04-30 23:56:00',
64
+ boole: false
65
+ },
66
+ {
67
+ id: '8',
68
+ name: '深圳市福德宝网络技术 YX 公司',
69
+ boole: true,
70
+ city: '厦门',
71
+ createdDate: '2016-06-03 13:53:25',
72
+ employees: 540
73
+ }
74
+ ]
75
+
76
+ const op = ref({
77
+ editConfig: {
78
+ trigger: 'click',
79
+ mode: 'cell',
80
+ showStatus: true
81
+ },
82
+ columns: [
83
+ {
84
+ type: 'index',
85
+ width: 60
86
+ },
87
+ {
88
+ type: 'selection',
89
+ width: 60
90
+ },
91
+ {
92
+ field: 'employees',
93
+ title: '员工数'
94
+ },
95
+ {
96
+ field: 'createdDate',
97
+ title: '创建日期'
98
+ },
99
+ {
100
+ field: 'city',
101
+ title: '城市',
102
+ slots: {
103
+ default: ({ row }) => {
104
+ return (
105
+ <div class="city-slot" style={{ color: 'red' }}>
106
+ {row.city}
107
+ </div>
108
+ )
109
+ },
110
+ header: () => {
111
+ return (
112
+ <div class="city-header" style={{ color: 'blue' }}>
113
+ 城市
114
+ </div>
115
+ )
116
+ }
117
+ }
118
+ },
119
+ {
120
+ field: 'boole',
121
+ title: '布尔值',
122
+ align: 'center',
123
+ formatText: 'boole',
124
+ editor: checkboxEdit
125
+ }
126
+ ],
127
+ data: tableData
128
+ })
129
+
130
+ function checkboxEdit(h, { row }) {
131
+ return (
132
+ <input
133
+ type="checkbox"
134
+ checked={row.boole}
135
+ onChange={(event) => {
136
+ row.boole = event.target.checked
137
+ }}
138
+ />
139
+ )
140
+ }
141
+ </script>
@@ -0,0 +1,12 @@
1
+ import { test, expect } from '@playwright/test'
2
+
3
+ test('配置式表格插槽', async ({ page }) => {
4
+ page.on('pageerror', (exception) => expect(exception).toBeNull())
5
+ await page.goto('grid-slot#slot-conf-slot')
6
+
7
+ const dom = page.locator('#slot-conf-slot')
8
+ const citySlot = dom.locator('.city-slot').first()
9
+ await expect(citySlot).toHaveCSS('color', 'rgb(255, 0, 0)')
10
+ const cityHeader = dom.locator('.city-header').first()
11
+ await expect(cityHeader).toHaveCSS('color', 'rgb(0, 0, 255)')
12
+ })
@@ -0,0 +1,151 @@
1
+ <template>
2
+ <tiny-grid v-bind="op"></tiny-grid>
3
+ </template>
4
+
5
+ <script lang="jsx">
6
+ import { TinyGrid } from '@opentiny/vue'
7
+
8
+ export default {
9
+ components: {
10
+ TinyGrid
11
+ },
12
+ data() {
13
+ const tableData = [
14
+ {
15
+ id: '1',
16
+ name: 'GFD 科技 YX 公司',
17
+ city: '福州',
18
+ employees: 800,
19
+ createdDate: '2014-04-30 00:56:00',
20
+ boole: false
21
+ },
22
+ {
23
+ id: '2',
24
+ name: 'WWW 科技 YX 公司',
25
+ city: '深圳',
26
+ employees: 300,
27
+ createdDate: '2016-07-08 12:36:22',
28
+ boole: true
29
+ },
30
+ {
31
+ id: '3',
32
+ name: 'RFV 有限责任公司',
33
+ city: '中山',
34
+ employees: 1300,
35
+ createdDate: '2014-02-14 14:14:14',
36
+ boole: false
37
+ },
38
+ {
39
+ id: '4',
40
+ name: 'TGB 科技 YX 公司',
41
+ city: '龙岩',
42
+ employees: 360,
43
+ createdDate: '2013-01-13 13:13:13',
44
+ boole: true
45
+ },
46
+ {
47
+ id: '5',
48
+ name: 'YHN 科技 YX 公司',
49
+ city: '韶关',
50
+ employees: 810,
51
+ createdDate: '2012-12-12 12:12:12',
52
+ boole: true
53
+ },
54
+ {
55
+ id: '6',
56
+ name: 'WSX 科技 YX 公司',
57
+ city: '黄冈',
58
+ employees: 800,
59
+ createdDate: '2011-11-11 11:11:11',
60
+ boole: true
61
+ },
62
+ {
63
+ id: '7',
64
+ name: 'KBG 物业 YX 公司',
65
+ city: '赤壁',
66
+ employees: 400,
67
+ createdDate: '2016-04-30 23:56:00',
68
+ boole: false
69
+ },
70
+ {
71
+ id: '8',
72
+ name: '深圳市福德宝网络技术 YX 公司',
73
+ boole: true,
74
+ city: '厦门',
75
+ createdDate: '2016-06-03 13:53:25',
76
+ employees: 540
77
+ }
78
+ ]
79
+
80
+ return {
81
+ op: {
82
+ editConfig: {
83
+ trigger: 'click',
84
+ mode: 'cell',
85
+ showStatus: true
86
+ },
87
+ columns: [
88
+ {
89
+ type: 'index',
90
+ width: 60
91
+ },
92
+ {
93
+ type: 'selection',
94
+ width: 60
95
+ },
96
+ {
97
+ field: 'employees',
98
+ title: '员工数'
99
+ },
100
+ {
101
+ field: 'createdDate',
102
+ title: '创建日期'
103
+ },
104
+ {
105
+ field: 'city',
106
+ title: '城市',
107
+ slots: {
108
+ default: ({ row }) => {
109
+ return (
110
+ <div class="city-slot" style={{ color: 'red' }}>
111
+ {row.city}
112
+ </div>
113
+ )
114
+ },
115
+ header: () => {
116
+ return (
117
+ <div class="city-header" style={{ color: 'blue' }}>
118
+ 城市
119
+ </div>
120
+ )
121
+ }
122
+ }
123
+ },
124
+ {
125
+ field: 'boole',
126
+ title: '布尔值',
127
+ align: 'center',
128
+ formatText: 'boole',
129
+ editor: this.checkboxEdit
130
+ }
131
+ ],
132
+ data: tableData
133
+ },
134
+ tableData
135
+ }
136
+ },
137
+ methods: {
138
+ checkboxEdit(h, { row }) {
139
+ return (
140
+ <input
141
+ type="checkbox"
142
+ checked={row.boole}
143
+ onChange={(event) => {
144
+ row.boole = event.target.checked
145
+ }}
146
+ />
147
+ )
148
+ }
149
+ }
150
+ }
151
+ </script>
@@ -5,7 +5,7 @@ test('多字段组合排序', async ({ page }) => {
5
5
  await page.goto('grid-sort#sort-combinations-sort')
6
6
  await page.getByRole('cell', { name: '员工数(员工数和名称组合排序)' }).getByRole('img').click()
7
7
  // 员工数第一优先级排序
8
- await expect(page.locator('.tiny-grid-body__row').first()).toContainText('1300')
8
+ await expect(page.locator('.tiny-grid-body__row').first()).toContainText('300')
9
9
  // 公司名称第二优先级排序
10
- await expect(page.locator('.tiny-grid-body__row').nth(1)).toContainText('YHN 科技 YX 公司')
10
+ await expect(page.locator('.tiny-grid-body__row').nth(6)).toContainText('YHN 科技 YX 公司')
11
11
  })
@@ -100,6 +100,18 @@ export default {
100
100
  '<p>Table attribute setting<code>edit-config</code>Enable the editing mode, and then set <code>trigger</code> in the attribute object to modify the triggering mode. The options are as follows: <code>click trigger (click), double-click trigger (dblclick), and manual trigger (manual)</code>. The default value is <code>click trigger</code>. </p>\n'
101
101
  },
102
102
  codeFiles: ['edit/trigger-mode-for-editing.vue']
103
+ },
104
+ {
105
+ demoId: 'scrollbar-not-blur',
106
+ name: { 'zh-CN': '行编辑滚动不失焦', 'en-US': 'Scroll not blur' },
107
+ desc: {
108
+ 'zh-CN': `
109
+ <p>配置 <code>edit-config</code> 的<code>blurOutside</code>自定义编辑态的退出逻辑。</p>
110
+ `,
111
+ 'en-US':
112
+ '<p>Configure <code>blurOutside</code> of <code>edit-config</code> to customize the exit logic of the editing state. </p>\n'
113
+ },
114
+ codeFiles: ['edit/scrollbar-not-blur.vue']
103
115
  }
104
116
  ],
105
117
  apis: [{ name: 'grid-edit', 'type': 'component', 'props': [], 'events': [], 'slots': [] }]
@@ -27,7 +27,7 @@ export default {
27
27
  name: { 'zh-CN': '固定居中', 'en-US': 'Fix Center' },
28
28
  desc: {
29
29
  'zh-CN':
30
- '<p>配置 <code>is-center-empty</code> 为 <code>true</code> 时,拖动横向滚动条可以保持空数据提示使终相对表格宽度居中显示。</p>\n',
30
+ '<p>(从3.25.0版本开始默认固定居中)配置 <code>is-center-empty</code> 为 <code>true</code> 时,拖动横向滚动条可以保持空数据提示使终相对表格宽度居中显示。</p>\n',
31
31
  'en-US':
32
32
  '<p>When <code>is-center-empty</code> is set to <code>true</code>, drag the horizontal scroll bar to keep the empty data prompt so that the final data is displayed in the center of the table width</p>\n'
33
33
  },
@@ -15,6 +15,17 @@ export default {
15
15
  },
16
16
  codeFiles: ['expand/has-row-expand.vue']
17
17
  },
18
+ {
19
+ demoId: 'expand-trigger-slot',
20
+ name: { 'zh-CN': '展开行触发器插槽', 'en-US': 'Expand row trigger slot' },
21
+ desc: {
22
+ 'zh-CN': `
23
+ <p>通过 <code>expand-trigger</code> 插槽可以自定义展开行图标。</p>
24
+ `,
25
+ 'en-US': '<p>You can customize the expand row icon through the <code>expand-trigger</code> slot. </p>\n'
26
+ },
27
+ codeFiles: ['expand/expand-trigger-slot.vue']
28
+ },
18
29
  {
19
30
  demoId: 'expand-expand-config',
20
31
  name: { 'zh-CN': '展开行配置项', 'en-US': 'Basic Usage' },
@@ -11,6 +11,15 @@ export default {
11
11
  },
12
12
  codeFiles: ['slot/default-slot.vue']
13
13
  },
14
+ {
15
+ demoId: 'slot-conf-slot',
16
+ name: { 'zh-CN': '配置式表格插槽', 'en-US': 'Config slot' },
17
+ desc: {
18
+ 'zh-CN': `<p>通过 <code>column.slots</code> 添加表格列的插槽。</p>`,
19
+ 'en-US': 'For details, see the following example.'
20
+ },
21
+ codeFiles: ['slot/slot-conf.vue']
22
+ },
14
23
  {
15
24
  demoId: 'slot-buttons-slot',
16
25
  name: { 'zh-CN': '工具栏插槽', 'en-US': 'Toolbar slot' },
@@ -71,7 +71,8 @@ export const iconGroups = {
71
71
  'IconUp',
72
72
  'IconUpdate',
73
73
  'IconUpO',
74
- 'IconUpWard'
74
+ 'IconUpWard',
75
+ 'IconTriangleUp'
75
76
  ],
76
77
  Downward: [
77
78
  'IconArrowBottom',
@@ -291,6 +292,7 @@ export const iconGroups = {
291
292
  'IconTabletView',
292
293
  'IconUnlock',
293
294
  'IconUser',
295
+ 'IconDelegatedProcessing',
294
296
  'IconVersiontree',
295
297
  'IconWebPlus',
296
298
  'IconJs',
@@ -387,7 +389,11 @@ export const iconGroups = {
387
389
  'IconSmile',
388
390
  'IconStarActive',
389
391
  'IconStarDisable',
390
- 'IconStarO'
392
+ 'IconStarO',
393
+ 'IconBadgeHotCn',
394
+ 'IconBadgeHotEn',
395
+ 'IconBadgeNewCn',
396
+ 'IconBadgeNewEn'
391
397
  ],
392
398
  Tool: [
393
399
  'IconConfig',
@@ -3,7 +3,7 @@ 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('input#basic-usage')
6
- const input = page.locator('.demo-input > .tiny-input > .tiny-input-display-only > input')
6
+ const input = page.locator('#basic-usage .demo-input > .tiny-input > .tiny-input-display-only > input')
7
7
 
8
8
  await expect(input).toBeVisible()
9
9
  await expect(input).toHaveAttribute('placeholder', 'Please input')
@@ -3,6 +3,8 @@ 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('loading#background')
6
- const loadingBg = page.locator('.tiny-loading__mask')
6
+
7
+ const demo = page.locator('#background')
8
+ const loadingBg = demo.locator('.tiny-loading__mask')
7
9
  await expect(loadingBg).toHaveCSS('background-color', 'rgba(0, 0, 0, 0.2)')
8
10
  })
@@ -3,8 +3,10 @@ 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('loading#custom-class')
6
- const loadingBg = page.locator('.tiny-loading__mask')
7
- const loadingText = page.locator('.new-loading')
6
+
7
+ const demo = page.locator('#custom-class')
8
+ const loadingBg = demo.locator('.tiny-loading__mask')
9
+ const loadingText = demo.locator('.new-loading')
8
10
  await expect(loadingBg).toHaveCSS('background-color', 'rgb(89, 89, 89)')
9
11
  await expect(loadingText).toBeVisible()
10
12
  })
@@ -3,11 +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('loading#fullscreen')
6
- await page.getByRole('button', { name: '指令方式加载全屏 Loading' }).click()
7
- const vLoading = page.locator('.circular')
6
+
7
+ const demo = page.locator('#fullscreen')
8
+ await demo.getByRole('button', { name: '指令方式加载全屏 Loading' }).click()
9
+ const vLoading = page.locator('.tiny-loading.tiny-loading__mask.is-fullscreen')
8
10
  await expect(vLoading).toBeVisible()
9
11
 
10
- await page.getByRole('button', { name: '静态方法加载全屏 Loading' }).click()
11
- const sLoading = page.getByText('正在提交...', { exact: true })
12
+ await demo.getByRole('button', { name: '静态方法加载全屏 Loading' }).click()
13
+ const sLoading = vLoading.getByText('正在提交...', { exact: true })
12
14
  await expect(sLoading).toBeVisible()
13
15
  })
@@ -3,6 +3,8 @@ 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('loading#loading-tip-text')
6
- const loadingText = page.locator('.tiny-loading__text')
6
+
7
+ const demo = page.locator('#loading-tip-text')
8
+ const loadingText = demo.locator('.tiny-loading__text')
7
9
  await expect(loadingText).toContainText('加载中')
8
10
  })
@@ -3,9 +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('loading#size')
6
- const smallLoading = page.locator('.tiny-loading__spinner-small')
7
- const mediumLoading = page.locator('.tiny-loading__spinner-medium')
8
- const largeLoading = page.locator('.tiny-loading__spinner-large')
6
+
7
+ const demo = page.locator('#size')
8
+ const smallLoading = demo.locator('.tiny-loading__spinner-small')
9
+ const mediumLoading = demo.locator('.tiny-loading__spinner-medium')
10
+ const largeLoading = demo.locator('.tiny-loading__spinner-large')
9
11
  await expect(smallLoading).toBeVisible()
10
12
  await expect(mediumLoading).toBeVisible()
11
13
  await expect(largeLoading).toBeVisible()
@@ -11,15 +11,15 @@ import { TinyLocales } from '@opentiny/vue'
11
11
 
12
12
  function getLocale() {
13
13
  // resolve 出来的必须是国际化的 key
14
- return Promise.resolve(['zh_CN', 'en_US', 'zh_TW'])
14
+ return Promise.resolve(['zhCN', 'enUS', 'zhTW'])
15
15
  }
16
16
 
17
17
  function getCurrentLocale() {
18
- return Promise.resolve(['zh_CN'])
18
+ return Promise.resolve(['zhCN'])
19
19
  }
20
20
 
21
21
  function getChangeLocaleUrl(targetLocale) {
22
- if (targetLocale === 'en_US') {
22
+ if (targetLocale === 'enUS') {
23
23
  return Promise.resolve(`${window.location.origin}/#/webenglish/en-US/component/locales/custom-service`)
24
24
  } else {
25
25
  return Promise.resolve(`${window.location.origin}/#/zh-CN/component/custom-service`)