@opentiny/vue-docs 3.26.7 → 3.27.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 (169) hide show
  1. package/demos/apis/base-select.js +13 -0
  2. package/demos/apis/calendar-view.js +12 -0
  3. package/demos/apis/color-picker.js +16 -0
  4. package/demos/apis/color-select-panel.js +14 -0
  5. package/demos/apis/config-provider.js +2 -1
  6. package/demos/apis/date-picker.js +52 -0
  7. package/demos/apis/dialog-box.js +16 -4
  8. package/demos/apis/drawer.js +22 -0
  9. package/demos/apis/exception.js +43 -27
  10. package/demos/apis/grid.js +38 -3
  11. package/demos/apis/guide.js +14 -0
  12. package/demos/apis/pager.js +3 -3
  13. package/demos/apis/query-builder.js +346 -1
  14. package/demos/apis/select.js +41 -0
  15. package/demos/apis/space.js +99 -0
  16. package/demos/apis/steps.js +15 -0
  17. package/demos/apis/time-picker.js +28 -0
  18. package/demos/apis/time-select.js +30 -0
  19. package/demos/apis/tree-menu.js +14 -0
  20. package/demos/mobile-first/app/calendar-view/basic-usage.vue +1 -1
  21. package/demos/mobile-first/app/exception/webdoc/exception.js +4 -4
  22. package/demos/mobile-first/app/load-list/webdoc/load-list.en.md +1 -1
  23. package/demos/mobile-first/app/space/basic-usage-composition-api.vue +41 -0
  24. package/demos/mobile-first/app/space/basic-usage.spec.ts +37 -0
  25. package/demos/mobile-first/app/space/basic-usage.vue +37 -0
  26. package/demos/mobile-first/app/space/space-align-composition-api.vue +37 -0
  27. package/demos/mobile-first/app/space/space-align.spec.ts +24 -0
  28. package/demos/mobile-first/app/space/space-align.vue +37 -0
  29. package/demos/mobile-first/app/space/space-direction-composition-api.vue +32 -0
  30. package/demos/mobile-first/app/space/space-direction.spec.ts +17 -0
  31. package/demos/mobile-first/app/space/space-direction.vue +32 -0
  32. package/demos/mobile-first/app/space/space-justify-composition-api.vue +44 -0
  33. package/demos/mobile-first/app/space/space-justify.spec.ts +18 -0
  34. package/demos/mobile-first/app/space/space-justify.vue +39 -0
  35. package/demos/mobile-first/app/space/space-order-composition-api.vue +14 -0
  36. package/demos/mobile-first/app/space/space-order.spec.ts +13 -0
  37. package/demos/mobile-first/app/space/space-order.vue +14 -0
  38. package/demos/mobile-first/app/space/space-size-composition-api.vue +39 -0
  39. package/demos/mobile-first/app/space/space-size.spec.ts +37 -0
  40. package/demos/mobile-first/app/space/space-size.vue +39 -0
  41. package/demos/mobile-first/app/space/space-wrap-composition-api.vue +31 -0
  42. package/demos/mobile-first/app/space/space-wrap.spec.ts +25 -0
  43. package/demos/mobile-first/app/space/space-wrap.vue +31 -0
  44. package/demos/mobile-first/app/space/webdoc/space.cn.md +9 -0
  45. package/demos/mobile-first/app/space/webdoc/space.en.md +9 -0
  46. package/demos/mobile-first/app/space/webdoc/space.js +98 -0
  47. package/demos/mobile-first/menus.js +3 -1
  48. package/demos/pc/app/calendar-view/basic-usage-composition-api.vue +1 -1
  49. package/demos/pc/app/calendar-view/basic-usage.vue +1 -1
  50. package/demos/pc/app/carousel/webdoc/carousel.js +2 -1
  51. package/demos/pc/app/color-picker/linear-gradient-composition-api.vue +20 -0
  52. package/demos/pc/app/color-picker/linear-gradient.spec.ts +10 -0
  53. package/demos/pc/app/color-picker/linear-gradient.vue +28 -0
  54. package/demos/pc/app/color-picker/webdoc/color-picker.js +27 -0
  55. package/demos/pc/app/color-select-panel/linear-gradient-composition-api.vue +38 -0
  56. package/demos/pc/app/color-select-panel/linear-gradient.spec.ts +71 -0
  57. package/demos/pc/app/color-select-panel/linear-gradient.vue +45 -0
  58. package/demos/pc/app/color-select-panel/webdoc/color-select-panel.js +12 -0
  59. package/demos/pc/app/config-provider/webdoc/config-provider.js +2 -1
  60. package/demos/pc/app/date-panel/basic-usage.vue +19 -8
  61. package/demos/pc/app/date-panel/custom-weeks.vue +19 -9
  62. package/demos/pc/app/date-panel/disabled-date.vue +29 -19
  63. package/demos/pc/app/date-panel/event.vue +38 -31
  64. package/demos/pc/app/date-panel/format.vue +15 -5
  65. package/demos/pc/app/date-panel/readonly.vue +19 -8
  66. package/demos/pc/app/date-panel/shortcuts.vue +182 -176
  67. package/demos/pc/app/date-panel/unlink-panels.vue +15 -5
  68. package/demos/pc/app/date-picker/now-composition-api.vue +4 -1
  69. package/demos/pc/app/date-picker/now.vue +6 -2
  70. package/demos/pc/app/date-picker/slot-composition-api.vue +112 -0
  71. package/demos/pc/app/date-picker/slot.spec.ts +41 -0
  72. package/demos/pc/app/date-picker/slot.vue +119 -0
  73. package/demos/pc/app/date-picker/webdoc/date-picker.js +12 -0
  74. package/demos/pc/app/dialog-box/before-close-composition-api.vue +65 -0
  75. package/demos/pc/app/dialog-box/before-close.spec.ts +6 -0
  76. package/demos/pc/app/dialog-box/before-close.vue +71 -0
  77. package/demos/pc/app/dialog-box/webdoc/dialog-box.js +16 -0
  78. package/demos/pc/app/dialog-select/nest-tree-single.spec.ts +4 -7
  79. package/demos/pc/app/drawer/webdoc/drawer.js +2 -1
  80. package/demos/pc/app/exception/basic-usage-composition-api.vue +15 -0
  81. package/demos/pc/app/exception/basic-usage.vue +21 -0
  82. package/demos/pc/app/exception/button-text-composition-api.vue +13 -0
  83. package/demos/pc/app/exception/button-text.vue +21 -0
  84. package/demos/pc/app/exception/component-page-composition-api.vue +44 -0
  85. package/demos/pc/app/exception/component-page.vue +55 -0
  86. package/demos/pc/app/exception/page-empty-composition-api.vue +7 -0
  87. package/demos/pc/app/exception/page-empty.vue +13 -0
  88. package/demos/pc/app/exception/slot-composition-api.vue +29 -0
  89. package/demos/pc/app/exception/slot.vue +23 -0
  90. package/demos/pc/app/exception/sub-message-composition-api.vue +7 -0
  91. package/demos/pc/app/exception/sub-message.vue +13 -0
  92. package/demos/pc/app/exception/webdoc/exception.cn.md +5 -0
  93. package/demos/pc/app/exception/webdoc/exception.en.md +5 -0
  94. package/demos/pc/app/exception/webdoc/exception.js +84 -0
  95. package/demos/pc/app/grid/custom/default-customs-composition-api.vue +66 -0
  96. package/demos/pc/app/grid/custom/default-customs.spec.ts +9 -0
  97. package/demos/pc/app/grid/custom/default-customs.vue +75 -0
  98. package/demos/pc/app/grid/mouse-keyboard/mouse-config-hover-composition-api.vue +70 -0
  99. package/demos/pc/app/grid/mouse-keyboard/mouse-config-hover.vue +79 -0
  100. package/demos/pc/app/grid/validation/highlight-error-composition-api.vue +183 -0
  101. package/demos/pc/app/grid/validation/highlight-error.vue +192 -0
  102. package/demos/pc/app/grid/webdoc/grid-custom.js +11 -0
  103. package/demos/pc/app/grid/webdoc/grid-editor.js +2 -2
  104. package/demos/pc/app/grid/webdoc/grid-mouse-keyboard.js +9 -0
  105. package/demos/pc/app/grid/webdoc/grid-validation.js +9 -0
  106. package/demos/pc/app/guide/mask-composition-api.vue +31 -0
  107. package/demos/pc/app/guide/mask.spec.ts +13 -0
  108. package/demos/pc/app/guide/mask.vue +41 -0
  109. package/demos/pc/app/guide/webdoc/guide.js +12 -0
  110. package/demos/pc/app/input/resize.spec.ts +1 -1
  111. package/demos/pc/app/notify/manual-close-composition-api.vue +9 -11
  112. package/demos/pc/app/notify/manual-close.spec.ts +1 -1
  113. package/demos/pc/app/notify/manual-close.vue +9 -11
  114. package/demos/pc/app/notify/verticalOffset.spec.ts +3 -1
  115. package/demos/pc/app/query-builder/handle.vue +558 -0
  116. package/demos/pc/app/query-builder/limit.vue +555 -0
  117. package/demos/pc/app/query-builder/webdoc/query-builder.js +29 -1
  118. package/demos/pc/app/radio/dynamic-disable.vue +1 -1
  119. package/demos/pc/app/space/basic-usage-composition-api.vue +41 -0
  120. package/demos/pc/app/space/basic-usage.spec.ts +37 -0
  121. package/demos/pc/app/space/basic-usage.vue +37 -0
  122. package/demos/pc/app/space/space-align-composition-api.vue +37 -0
  123. package/demos/pc/app/space/space-align.spec.ts +24 -0
  124. package/demos/pc/app/space/space-align.vue +37 -0
  125. package/demos/pc/app/space/space-direction-composition-api.vue +32 -0
  126. package/demos/pc/app/space/space-direction.spec.ts +17 -0
  127. package/demos/pc/app/space/space-direction.vue +32 -0
  128. package/demos/pc/app/space/space-justify-composition-api.vue +44 -0
  129. package/demos/pc/app/space/space-justify.spec.ts +18 -0
  130. package/demos/pc/app/space/space-justify.vue +39 -0
  131. package/demos/pc/app/space/space-order-composition-api.vue +14 -0
  132. package/demos/pc/app/space/space-order.spec.ts +13 -0
  133. package/demos/pc/app/space/space-order.vue +14 -0
  134. package/demos/pc/app/space/space-size-composition-api.vue +39 -0
  135. package/demos/pc/app/space/space-size.spec.ts +37 -0
  136. package/demos/pc/app/space/space-size.vue +39 -0
  137. package/demos/pc/app/space/space-wrap-composition-api.vue +31 -0
  138. package/demos/pc/app/space/space-wrap.spec.ts +25 -0
  139. package/demos/pc/app/space/space-wrap.vue +31 -0
  140. package/demos/pc/app/space/webdoc/space.cn.md +9 -0
  141. package/demos/pc/app/space/webdoc/space.en.md +9 -0
  142. package/demos/pc/app/space/webdoc/space.js +98 -0
  143. package/demos/pc/app/steps/slot-icon-composition-api.vue +46 -0
  144. package/demos/pc/app/steps/slot-icon.vue +54 -0
  145. package/demos/pc/app/steps/webdoc/steps.js +12 -0
  146. package/demos/pc/app/tree-menu/events-composition-api.vue +4 -0
  147. package/demos/pc/app/tree-menu/events.vue +4 -0
  148. package/demos/pc/app/tree-menu/webdoc/tree-menu.js +2 -2
  149. package/demos/pc/app/tree-menu/with-icon-composition-api.vue +149 -24
  150. package/demos/pc/app/tree-menu/with-icon.spec.ts +1 -1
  151. package/demos/pc/app/tree-menu/with-icon.vue +149 -24
  152. package/demos/pc/menus.js +16 -0
  153. package/demos/pc/webdoc/changelog.md +209 -177
  154. package/env/.env.saas +1 -1
  155. package/env/.env.saaspages +9 -0
  156. package/package.json +20 -19
  157. package/playground/App.vue +2 -2
  158. package/src/App.vue +2 -1
  159. package/src/components/anchor.vue +20 -74
  160. package/src/const.ts +2 -0
  161. package/src/main.js +2 -5
  162. package/src/menus.js +2 -1
  163. package/src/tools/docsearch.js +3 -2
  164. package/src/tools/useTemplateMode.js +2 -1
  165. package/src/tools/useTheme.js +2 -2
  166. package/src/views/components-doc/cmp-config.js +2 -1
  167. package/src/views/components-doc/common.vue +76 -12
  168. /package/demos/pc/app/user/{nodata-text-composition-api.vue → no-data-text-composition-api.vue} +0 -0
  169. /package/demos/pc/app/user/{nodata-text.vue → no-data-text.vue} +0 -0
@@ -9,13 +9,23 @@
9
9
  </div>
10
10
  </template>
11
11
 
12
- <script setup>
13
- import { ref } from 'vue'
12
+ <script>
14
13
  import { TinyDatePanel, TinyDateRange, TinyMonthRange } from '@opentiny/vue'
15
14
 
16
- const value = ref('2025/01/15')
17
- const value1 = ref(['2025/01/15', '2025/02/15'])
18
- const value2 = ref(['2024/03', '2025/02'])
15
+ export default {
16
+ components: {
17
+ TinyDatePanel,
18
+ TinyDateRange,
19
+ TinyMonthRange
20
+ },
21
+ data() {
22
+ return {
23
+ value: '2025/01/15',
24
+ value1: ['2025/01/15', '2025/02/15'],
25
+ value2: ['2024/03', '2025/02']
26
+ }
27
+ }
28
+ }
19
29
  </script>
20
30
 
21
31
  <style scoped lang="less">
@@ -15,16 +15,27 @@
15
15
  </div>
16
16
  </template>
17
17
 
18
- <script setup>
19
- import { ref } from 'vue'
18
+ <script>
20
19
  import { TinyDatePanel, TinyDateRange, TinyMonthRange, TinyYearRange } from '@opentiny/vue'
21
20
 
22
- const value = ref('2025-01-15')
23
- const month = ref('2025-01')
24
- const year = ref('2025')
25
- const value1 = ref(['2025-01-15', '2025-02-15'])
26
- const value2 = ref(['2024-03', '2025-02'])
27
- const value3 = ref(['2024', '2028'])
21
+ export default {
22
+ components: {
23
+ TinyDatePanel,
24
+ TinyDateRange,
25
+ TinyMonthRange,
26
+ TinyYearRange
27
+ },
28
+ data() {
29
+ return {
30
+ value: '2025-01-15',
31
+ month: '2025-01',
32
+ year: '2025',
33
+ value1: ['2025-01-15', '2025-02-15'],
34
+ value2: ['2024-03', '2025-02'],
35
+ value3: ['2024', '2028']
36
+ }
37
+ }
38
+ }
28
39
  </script>
29
40
 
30
41
  <style scoped lang="less">
@@ -15,187 +15,193 @@
15
15
  </div>
16
16
  </template>
17
17
 
18
- <script setup>
19
- import { ref } from 'vue'
18
+ <script>
20
19
  import { TinyDatePanel, TinyDateRange, TinyMonthRange, TinyYearRange } from '@opentiny/vue'
21
20
 
22
- const value = ref('2025-01-15')
23
- const month = ref('2025-01')
24
- const year = ref('2025')
25
- const value1 = ref(['2025-01-15', '2025-02-15'])
26
- const value2 = ref(['2024-03', '2025-02'])
27
- const value3 = ref(['2024', '2028'])
28
- const shortcuts = [
29
- {
30
- text: '今天',
31
- onClick(picker) {
32
- const date = new Date()
33
- picker.$emit('pick', date)
34
- }
35
- },
36
- {
37
- text: '昨天',
38
- onClick(picker) {
39
- const date = new Date()
40
- date.setTime(date.getTime() - 3600 * 1000 * 24)
41
- picker.$emit('pick', date)
42
- }
43
- },
44
- {
45
- text: '一周前',
46
- onClick(picker) {
47
- const date = new Date()
48
- date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
49
- picker.$emit('pick', date)
50
- }
51
- }
52
- ]
53
-
54
- const shortcutsMonth = [
55
- {
56
- text: '一个月前',
57
- onClick(picker) {
58
- const date = new Date()
59
- date.setMonth(date.getMonth() - 1)
60
- picker.$emit('pick', date)
61
- }
62
- },
63
- {
64
- text: '三个月前',
65
- onClick(picker) {
66
- const date = new Date()
67
- date.setMonth(date.getMonth() - 3)
68
- picker.$emit('pick', date)
69
- }
21
+ export default {
22
+ components: {
23
+ TinyDatePanel,
24
+ TinyDateRange,
25
+ TinyMonthRange,
26
+ TinyYearRange
70
27
  },
71
- {
72
- text: '六个月前',
73
- onClick(picker) {
74
- const date = new Date()
75
- date.setMonth(date.getMonth() - 6)
76
- picker.$emit('pick', date)
28
+ data() {
29
+ return {
30
+ value: '2025-01-15',
31
+ month: '2025-01',
32
+ year: '2025',
33
+ value1: ['2025-01-15', '2025-02-15'],
34
+ value2: ['2024-03', '2025-02'],
35
+ value3: ['2024', '2028'],
36
+ shortcuts: [
37
+ {
38
+ text: '今天',
39
+ onClick(picker) {
40
+ const date = new Date()
41
+ picker.$emit('pick', date)
42
+ }
43
+ },
44
+ {
45
+ text: '昨天',
46
+ onClick(picker) {
47
+ const date = new Date()
48
+ date.setTime(date.getTime() - 3600 * 1000 * 24)
49
+ picker.$emit('pick', date)
50
+ }
51
+ },
52
+ {
53
+ text: '一周前',
54
+ onClick(picker) {
55
+ const date = new Date()
56
+ date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
57
+ picker.$emit('pick', date)
58
+ }
59
+ }
60
+ ],
61
+ shortcutsMonth: [
62
+ {
63
+ text: '一个月前',
64
+ onClick(picker) {
65
+ const date = new Date()
66
+ date.setMonth(date.getMonth() - 1)
67
+ picker.$emit('pick', date)
68
+ }
69
+ },
70
+ {
71
+ text: '三个月前',
72
+ onClick(picker) {
73
+ const date = new Date()
74
+ date.setMonth(date.getMonth() - 3)
75
+ picker.$emit('pick', date)
76
+ }
77
+ },
78
+ {
79
+ text: '六个月前',
80
+ onClick(picker) {
81
+ const date = new Date()
82
+ date.setMonth(date.getMonth() - 6)
83
+ picker.$emit('pick', date)
84
+ }
85
+ }
86
+ ],
87
+ shortcutsYear: [
88
+ {
89
+ text: '一年前',
90
+ onClick(picker) {
91
+ const date = new Date()
92
+ date.setFullYear(date.getFullYear() - 1)
93
+ picker.$emit('pick', date)
94
+ }
95
+ },
96
+ {
97
+ text: '五年前',
98
+ onClick(picker) {
99
+ const date = new Date()
100
+ date.setFullYear(date.getFullYear() - 5)
101
+ picker.$emit('pick', date)
102
+ }
103
+ },
104
+ {
105
+ text: '十年前',
106
+ onClick(picker) {
107
+ const date = new Date()
108
+ date.setFullYear(date.getFullYear() - 10)
109
+ picker.$emit('pick', date)
110
+ }
111
+ }
112
+ ],
113
+ shortcuts1: [
114
+ {
115
+ text: '最近一周',
116
+ onClick(picker) {
117
+ const end = new Date()
118
+ const start = new Date()
119
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
120
+ picker.$emit('pick', [start, end])
121
+ }
122
+ },
123
+ {
124
+ text: '最近一个月',
125
+ onClick(picker) {
126
+ const end = new Date()
127
+ const start = new Date()
128
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
129
+ picker.$emit('pick', [start, end])
130
+ }
131
+ },
132
+ {
133
+ text: '最近三个月',
134
+ onClick(picker) {
135
+ const end = new Date()
136
+ const start = new Date()
137
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
138
+ picker.$emit('pick', [start, end])
139
+ }
140
+ }
141
+ ],
142
+ shortcuts2: [
143
+ {
144
+ text: '本月',
145
+ onClick(picker) {
146
+ const date = new Date()
147
+ const tmp = new Date(date.getFullYear(), date.getMonth() + 1, 1, 0, 0, 0)
148
+ const start = new Date(date.getFullYear(), date.getMonth(), 1, 0, 0, 0)
149
+ const end = new Date(tmp.getTime() - 1)
150
+ picker.$emit('pick', [start, end])
151
+ }
152
+ },
153
+ {
154
+ text: '今年至今',
155
+ onClick(picker) {
156
+ const date = new Date()
157
+ const start = new Date(date.getFullYear(), 0)
158
+ const end = new Date()
159
+ picker.$emit('pick', [start, end])
160
+ }
161
+ },
162
+ {
163
+ text: '最近六个月',
164
+ onClick(picker) {
165
+ const end = new Date()
166
+ const start = new Date()
167
+ start.setMonth(start.getMonth() - 6)
168
+ picker.$emit('pick', [start, end])
169
+ }
170
+ }
171
+ ],
172
+ shortcuts3: [
173
+ {
174
+ text: '本年',
175
+ onClick(picker) {
176
+ const date = new Date()
177
+ const tmp = new Date(date.getFullYear(), 0, 2)
178
+ const start = new Date(date.getFullYear(), 0, 2)
179
+ const end = new Date(tmp.getTime() - 1)
180
+ picker.$emit('pick', [start, end])
181
+ }
182
+ },
183
+ {
184
+ text: '近五年',
185
+ onClick(picker) {
186
+ const date = new Date()
187
+ const start = new Date(date.getFullYear() - 5, 0, 2)
188
+ const end = date
189
+ picker.$emit('pick', [start, end])
190
+ }
191
+ },
192
+ {
193
+ text: '近十年',
194
+ onClick(picker) {
195
+ const date = new Date()
196
+ const start = new Date(date.getFullYear() - 10, 0, 2)
197
+ const end = new Date()
198
+ picker.$emit('pick', [start, end])
199
+ }
200
+ }
201
+ ]
77
202
  }
78
203
  }
79
- ]
80
-
81
- const shortcutsYear = [
82
- {
83
- text: '一年前',
84
- onClick(picker) {
85
- const date = new Date()
86
- date.setFullYear(date.getFullYear() - 1)
87
- picker.$emit('pick', date)
88
- }
89
- },
90
- {
91
- text: '五年前',
92
- onClick(picker) {
93
- const date = new Date()
94
- date.setFullYear(date.getFullYear() - 5)
95
- picker.$emit('pick', date)
96
- }
97
- },
98
- {
99
- text: '十年前',
100
- onClick(picker) {
101
- const date = new Date()
102
- date.setFullYear(date.getFullYear() - 10)
103
- picker.$emit('pick', date)
104
- }
105
- }
106
- ]
107
-
108
- const shortcuts1 = [
109
- {
110
- text: '最近一周',
111
- onClick(picker) {
112
- const end = new Date()
113
- const start = new Date()
114
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
115
- picker.$emit('pick', [start, end])
116
- }
117
- },
118
- {
119
- text: '最近一个月',
120
- onClick(picker) {
121
- const end = new Date()
122
- const start = new Date()
123
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
124
- picker.$emit('pick', [start, end])
125
- }
126
- },
127
- {
128
- text: '最近三个月',
129
- onClick(picker) {
130
- const end = new Date()
131
- const start = new Date()
132
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
133
- picker.$emit('pick', [start, end])
134
- }
135
- }
136
- ]
137
-
138
- const shortcuts2 = [
139
- {
140
- text: '本月',
141
- onClick(picker) {
142
- const date = new Date()
143
- const tmp = new Date(date.getFullYear(), date.getMonth() + 1, 1, 0, 0, 0)
144
- const start = new Date(date.getFullYear(), date.getMonth(), 1, 0, 0, 0)
145
- const end = new Date(tmp.getTime() - 1)
146
- picker.$emit('pick', [start, end])
147
- }
148
- },
149
- {
150
- text: '今年至今',
151
- onClick(picker) {
152
- const date = new Date()
153
- const start = new Date(date.getFullYear(), 0)
154
- const end = new Date()
155
- picker.$emit('pick', [start, end])
156
- }
157
- },
158
- {
159
- text: '最近六个月',
160
- onClick(picker) {
161
- const end = new Date()
162
- const start = new Date()
163
- start.setMonth(start.getMonth() - 6)
164
- picker.$emit('pick', [start, end])
165
- }
166
- }
167
- ]
168
-
169
- const shortcuts3 = [
170
- {
171
- text: '本年',
172
- onClick(picker) {
173
- const date = new Date()
174
- const tmp = new Date(date.getFullYear(), 0, 2)
175
- const start = new Date(date.getFullYear(), 0, 2)
176
- const end = new Date(tmp.getTime() - 1)
177
- picker.$emit('pick', [start, end])
178
- }
179
- },
180
- {
181
- text: '近五年',
182
- onClick(picker) {
183
- const date = new Date()
184
- const start = new Date(date.getFullYear() - 5, 0, 2)
185
- const end = date
186
- picker.$emit('pick', [start, end])
187
- }
188
- },
189
- {
190
- text: '近十年',
191
- onClick(picker) {
192
- const date = new Date()
193
- const start = new Date(date.getFullYear() - 10, 0, 2)
194
- const end = new Date()
195
- picker.$emit('pick', [start, end])
196
- }
197
- }
198
- ]
204
+ }
199
205
  </script>
200
206
 
201
207
  <style scoped lang="less">
@@ -18,13 +18,23 @@
18
18
  </div>
19
19
  </template>
20
20
 
21
- <script setup>
22
- import { ref } from 'vue'
21
+ <script>
23
22
  import { TinyDateRange, TinyMonthRange, TinyYearRange } from '@opentiny/vue'
24
23
 
25
- const value = ref(['2025-01-15', '2025-02-15'])
26
- const value1 = ref(['2024-03', '2025-02'])
27
- const value2 = ref(['2024', '2028'])
24
+ export default {
25
+ components: {
26
+ TinyDateRange,
27
+ TinyMonthRange,
28
+ TinyYearRange
29
+ },
30
+ data() {
31
+ return {
32
+ value: ['2025-01-15', '2025-02-15'],
33
+ value1: ['2024-03', '2025-02'],
34
+ value2: ['2024', '2028']
35
+ }
36
+ }
37
+ }
28
38
  </script>
29
39
 
30
40
  <style scoped lang="less">
@@ -6,6 +6,9 @@
6
6
  <template #now>
7
7
  <div class="nowclass" @click="now">此刻(服务器时间)</div>
8
8
  </template>
9
+ <template #confirm="{ confirm }">
10
+ <tiny-button type="primary" @click="confirm">确定</tiny-button>
11
+ </template>
9
12
  </tiny-date-picker>
10
13
  </div>
11
14
 
@@ -18,7 +21,7 @@
18
21
 
19
22
  <script setup>
20
23
  import { ref } from 'vue'
21
- import { TinyDatePicker } from '@opentiny/vue'
24
+ import { TinyDatePicker, TinyButton } from '@opentiny/vue'
22
25
 
23
26
  const value1 = ref('2020-11-11 10:10:11')
24
27
  const value2 = ref('2020-11-11 10:10:11')
@@ -6,6 +6,9 @@
6
6
  <template #now>
7
7
  <div class="nowclass" @click="now">此刻(服务器时间)</div>
8
8
  </template>
9
+ <template #confirm="{ confirm }">
10
+ <tiny-button type="primary" @click="confirm">确定</tiny-button>
11
+ </template>
9
12
  </tiny-date-picker>
10
13
  </div>
11
14
 
@@ -17,11 +20,12 @@
17
20
  </template>
18
21
 
19
22
  <script>
20
- import { TinyDatePicker } from '@opentiny/vue'
23
+ import { TinyDatePicker, TinyButton } from '@opentiny/vue'
21
24
 
22
25
  export default {
23
26
  components: {
24
- TinyDatePicker
27
+ TinyDatePicker,
28
+ TinyButton
25
29
  },
26
30
  data() {
27
31
  return {
@@ -0,0 +1,112 @@
1
+ <template>
2
+ <div class="demo-footer-slot">
3
+ <tiny-date-picker v-model="value" type="date" placeholder="请选择日期">
4
+ <template #footer="{ confirm }">
5
+ <div class="custom-footer end">
6
+ <tiny-button type="primary" @click="confirm">自定义按钮</tiny-button>
7
+ </div>
8
+ </template>
9
+ </tiny-date-picker>
10
+ <tiny-date-picker v-model="dateTimeValue" type="datetime" placeholder="请选择日期时间">
11
+ <template #footer="{ confirm, changeToNow }">
12
+ <div class="custom-footer">
13
+ <tiny-button type="default" @click="changeToNow">自定义此刻</tiny-button>
14
+ <tiny-button type="primary" @click="confirm">自定义按钮</tiny-button>
15
+ </div>
16
+ </template>
17
+ </tiny-date-picker>
18
+ <tiny-date-picker v-model="weekValue" type="week" placeholder="请选择周">
19
+ <template #footer="{ confirm }">
20
+ <div class="custom-footer end">
21
+ <tiny-button type="primary" @click="confirm">自定义按钮</tiny-button>
22
+ </div>
23
+ </template>
24
+ </tiny-date-picker>
25
+ <tiny-date-picker v-model="monthValue" type="month" placeholder="请选择月份">
26
+ <template #footer="{ confirm }">
27
+ <div class="custom-footer end">
28
+ <tiny-button type="primary" @click="confirm">自定义按钮</tiny-button>
29
+ </div>
30
+ </template>
31
+ </tiny-date-picker>
32
+ <tiny-date-picker v-model="yearValue" type="year" placeholder="请选择年份">
33
+ <template #footer="{ confirm }">
34
+ <div class="custom-footer end">
35
+ <tiny-button type="primary" @click="confirm">自定义按钮</tiny-button>
36
+ </div>
37
+ </template>
38
+ </tiny-date-picker>
39
+ <tiny-date-picker v-model="valueRange" type="daterange" start-placeholder="开始日期" end-placeholder="结束日期">
40
+ <template #footer="{ confirm, clear }">
41
+ <div class="custom-footer">
42
+ <tiny-button type="default" @click="clear">自定义清空</tiny-button>
43
+ <tiny-button type="primary" @click="confirm">自定义按钮</tiny-button>
44
+ </div>
45
+ </template>
46
+ </tiny-date-picker>
47
+ <tiny-date-picker
48
+ v-model="valueDateTimeRange"
49
+ type="datetimerange"
50
+ start-placeholder="开始日期时间"
51
+ end-placeholder="结束日期时间"
52
+ >
53
+ <template #footer="{ confirm, clear }">
54
+ <div class="custom-footer">
55
+ <tiny-button type="default" @click="clear">自定义清空</tiny-button>
56
+ <tiny-button type="primary" @click="confirm">自定义按钮</tiny-button>
57
+ </div>
58
+ </template>
59
+ </tiny-date-picker>
60
+ <tiny-date-picker
61
+ v-model="valueMonthRange"
62
+ type="monthrange"
63
+ start-placeholder="开始月份"
64
+ end-placeholder="结束月份"
65
+ >
66
+ <template #footer>
67
+ <div class="custom-footer end">
68
+ <tiny-button type="primary">自定义按钮</tiny-button>
69
+ </div>
70
+ </template>
71
+ </tiny-date-picker>
72
+ <tiny-date-picker v-model="valueYearRange" type="yearrange" start-placeholder="开始年份" end-placeholder="结束年份">
73
+ <template #footer>
74
+ <div class="custom-footer end">
75
+ <tiny-button type="primary">自定义按钮</tiny-button>
76
+ </div>
77
+ </template>
78
+ </tiny-date-picker>
79
+ </div>
80
+ </template>
81
+
82
+ <script setup>
83
+ import { ref } from 'vue'
84
+ import { TinyDatePicker, TinyButton } from '@opentiny/vue'
85
+
86
+ const value = ref('')
87
+ const dateTimeValue = ref('')
88
+ const weekValue = ref('')
89
+ const monthValue = ref('')
90
+ const yearValue = ref('')
91
+ const valueRange = ref([])
92
+ const valueDateTimeRange = ref([])
93
+ const valueMonthRange = ref([])
94
+ const valueYearRange = ref([])
95
+ </script>
96
+
97
+ <style scoped lang="less">
98
+ .demo-footer-slot {
99
+ width: 360px;
100
+ gap: 10px;
101
+ display: flex;
102
+ flex-direction: column;
103
+ }
104
+ .custom-footer {
105
+ display: flex;
106
+ width: 100%;
107
+ justify-content: space-between;
108
+ }
109
+ .end {
110
+ justify-content: flex-end;
111
+ }
112
+ </style>
@@ -0,0 +1,41 @@
1
+ import { expect, test } from '@playwright/test'
2
+
3
+ test('[DatePicker] 测试尺寸设置', async ({ page }) => {
4
+ page.on('pageerror', (exception) => expect(exception).toBeNull())
5
+ await page.goto('date-picker#slot')
6
+
7
+ let btn = page.getByRole('button', { name: '自定义按钮' })
8
+ let nowBtn = page.getByRole('button', { name: '自定义此刻' })
9
+
10
+ await page.locator('#slot').getByRole('textbox', { name: '请选择日期', exact: true }).click()
11
+ await page.waitForTimeout(200)
12
+ await expect(btn).toBeVisible()
13
+
14
+ await page.getByRole('textbox', { name: '请选择日期时间' }).click()
15
+ await page.waitForTimeout(200)
16
+ await expect(nowBtn).toBeVisible()
17
+
18
+ await page.locator('#slot').getByRole('textbox', { name: '请选择周' }).click()
19
+ await page.waitForTimeout(200)
20
+ await expect(btn.first()).toBeVisible()
21
+
22
+ await page.locator('#slot').getByRole('textbox', { name: '请选择月份' }).click()
23
+ await page.waitForTimeout(200)
24
+ await expect(btn.first()).toBeVisible()
25
+
26
+ await page.locator('#slot').getByRole('textbox', { name: '请选择年份' }).click()
27
+ await page.waitForTimeout(200)
28
+ await expect(btn.first()).toBeVisible()
29
+
30
+ await page.getByPlaceholder('开始日期时间').click()
31
+ await page.waitForTimeout(200)
32
+ await expect(btn.first()).toBeVisible()
33
+
34
+ await page.locator('#slot').getByPlaceholder('开始月份').click()
35
+ await page.waitForTimeout(200)
36
+ await expect(btn.first()).toBeVisible()
37
+
38
+ await page.locator('#slot').getByPlaceholder('开始年份').click()
39
+ await page.waitForTimeout(200)
40
+ await expect(btn.first()).toBeVisible()
41
+ })