@idooel/components 0.0.2-beta.23 → 0.0.2-beta.25

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idooel/components",
3
- "version": "0.0.2-beta.23",
3
+ "version": "0.0.2-beta.25",
4
4
  "description": "",
5
5
  "private": false,
6
6
  "main": "dist/@idooel/components.umd.js",
@@ -10,6 +10,9 @@
10
10
  },
11
11
  "author": "Ruster <protagonisths@gmail.com> (https://github.com/Protagonistss)",
12
12
  "scripts": {
13
+ "dev": "rollup --config scripts/rollup.esm.config.js --watch",
14
+ "dev:umd": "rollup --config scripts/rollup.umd.config.js --watch",
15
+ "dev:esm": "rollup --config scripts/rollup.esm.config.js --watch",
13
16
  "build": "pnpm build:umd && pnpm build:esm",
14
17
  "build:umd": "rollup --config scripts/rollup.umd.config.js",
15
18
  "build:esm": "rollup --config scripts/rollup.esm.config.js",
@@ -4,7 +4,7 @@
4
4
  <a-row :gutter="24">
5
5
  <template v-for="ele in elements">
6
6
  <a-col v-if="executeExpression(ele._show)" :span="ele.span" :key="ele.name">
7
- <template v-if="ele.type == 'Input'">
7
+ <template v-if="ele.type == 'ele-input' || ele.type == 'Input'">
8
8
  <a-form-item :label="`${ele.label}:`">
9
9
  <ele-input
10
10
  @change="onChange($event, ele)"
@@ -15,7 +15,7 @@
15
15
  </ele-input>
16
16
  </a-form-item>
17
17
  </template>
18
- <template v-else-if="ele.type == 'Textarea'">
18
+ <template v-else-if="ele.type == 'ele-textarea' || ele.type == 'Textarea'">
19
19
  <a-form-item :label="`${ele.label}:`">
20
20
  <ele-textarea
21
21
  @change="onChange($event, ele)"
@@ -29,7 +29,7 @@
29
29
  </ele-textarea>
30
30
  </a-form-item>
31
31
  </template>
32
- <template v-else-if="ele.type == 'Select'">
32
+ <template v-else-if="ele.type == 'ele-select' || ele.type == 'Select'">
33
33
  <a-form-item :label="`${ele.label}:`">
34
34
  <ele-select
35
35
  :data-source="ele.optionList"
@@ -84,7 +84,7 @@
84
84
  </ele-date>
85
85
  </a-form-item>
86
86
  </template>
87
- <template v-else-if="ele.type == 'SelectEntity'">
87
+ <template v-else-if="ele.type == 'ele-select-entity' || ele.type == 'SelectEntity'">
88
88
  <a-form-item :label="`${ele.label}:`">
89
89
  <ele-select-entity
90
90
  v-decorator="[ele.name, { rules: rebuildRules(ele.rules) }]"
@@ -104,7 +104,7 @@
104
104
  </ele-input-number>
105
105
  </a-form-item>
106
106
  </template>
107
- <template v-else-if="ele.type == 'Checkbox'">
107
+ <template v-else-if="ele.type == 'ele-Checkbox' || ele.type == 'Checkbox'">
108
108
  <a-form-item :label="`${ele.label}:`">
109
109
  <ele-checkbox
110
110
  :data-source="ele.optionList"
@@ -114,7 +114,7 @@
114
114
  </ele-checkbox>
115
115
  </a-form-item>
116
116
  </template>
117
- <template v-else-if="ele.type == 'Radio'">
117
+ <template v-else-if="ele.type == 'ele-radio' || ele.type == 'Radio'">
118
118
  <a-form-item :label="`${ele.label}:`">
119
119
  <ele-radio
120
120
  @change="onChange($event, ele)"
@@ -212,7 +212,7 @@ export default {
212
212
  return this.executeExpression(this.disabled)
213
213
  },
214
214
  form () {
215
- const ref = this.$form.createForm(this, { name: this.formName })
215
+ const ref = this.$form.createForm(this, { name: this.formName, onFieldsChange: this.onFieldsChange })
216
216
  return ref
217
217
  },
218
218
  exposedMethods () {
@@ -226,6 +226,29 @@ export default {
226
226
  this.setDefaultValues()
227
227
  },
228
228
  methods: {
229
+ onFieldsChange () {
230
+ this.executeOptionListExpression()
231
+ },
232
+ executeOptionListExpression () {
233
+ this.elements.forEach(ele => {
234
+ if (ele.optionList) {
235
+ const optionList = this.evalOptionListExpression(ele.optionList)
236
+ this.$set(ele, 'optionList', optionList)
237
+ }
238
+ })
239
+ },
240
+ evalOptionListExpression (optionList = []) {
241
+ const executeExpression = (expression) => {
242
+ if (type.isBool(expression)) return expression
243
+ if (type.isEmpty(expression)) return true
244
+ const ret = parse(expression, { ...this.formModel, ...this.getFieldsValue(), _route: this.$route.query, _routeMeta: this.$route.meta })
245
+ return ret
246
+ }
247
+ return optionList.map(item => {
248
+ const { show } = item
249
+ return { ...item, _show: executeExpression(show) }
250
+ })
251
+ },
229
252
  setFormModel (props = {}) {
230
253
  this.formModel = props
231
254
  this.dispatchExpression()
package/packages/index.js CHANGED
@@ -27,6 +27,7 @@ import EleTextEditor from './text-editor/index.js'
27
27
  import EleTextarea from './textarea/index.js'
28
28
  import EleLoading from './loading/index.js'
29
29
  import EleTreeSelect from './tree-select/index.js'
30
+ import ElePagination from './pagination/index.js'
30
31
 
31
32
  import EleSearchArea from './composite-components/search-area/index.js'
32
33
  import EleButtonGroup from './composite-components/button-group/index.js'
@@ -98,6 +99,7 @@ const components = [
98
99
  EleTextarea,
99
100
  EleLoading,
100
101
  EleTreeSelect,
102
+ ElePagination,
101
103
  ...compositeComponents,
102
104
  ...businessComponents,
103
105
  ...models,
@@ -153,5 +155,6 @@ export {
153
155
  EleLoading,
154
156
  EleTabsSubCenter,
155
157
  EleFormImgCrop,
156
- EleSelectEntityModalTable
158
+ EleSelectEntityModalTable,
159
+ ElePagination
157
160
  }
@@ -44,6 +44,7 @@
44
44
  :pageSize="pageSize"
45
45
  :pageSizeOptions="pageSizeOptions"
46
46
  :data-source="tableData"
47
+ :mode="mode"
47
48
  @change-page="onChangePage"
48
49
  ></ele-table>
49
50
  </section>
@@ -322,6 +323,10 @@ export default {
322
323
  const { page = {} } = this.tableMeta
323
324
  return page.pageSize || 10
324
325
  },
326
+ mode () {
327
+ const { page = {} } = this.tableMeta
328
+ return page.mode
329
+ },
325
330
  pageSizeOptions () {
326
331
  const { page = {} } = this.tableMeta
327
332
  return page.pageSizeOptions || ['10', '20', '30', '40']
@@ -447,6 +452,14 @@ export default {
447
452
  } else {
448
453
  this.tableData = await this.requestTableData(initQuerys)
449
454
  }
455
+ } else {
456
+ const { params = {}, fieldMap = {} } = this.tableMeta
457
+ const currentRowData = this.getCurrentRowData()
458
+ const ctx = {
459
+ _route: this.$route.query,
460
+ currentRowData: currentRowData
461
+ }
462
+ this.tableQuerys = Object.assign({}, params, parseFieldMap(fieldMap, ctx))
450
463
  }
451
464
  },
452
465
  methods: {
@@ -675,7 +688,7 @@ export default {
675
688
  },
676
689
  async requestTableData (props = {}) {
677
690
  const { url, requestType = 'GET', page = {} } = this.tableMeta
678
- this.tableQuerys = Object.assign(this.tableQuerys, { currentPage: this.tableQuerys.currentPage || 1, pageSize: this.tableQuerys.pageSize || 10 }, props)
691
+ this.tableQuerys = Object.assign(this.tableQuerys, { currentPage: this.tableQuerys.currentPage || 1, pageSize: this.tableQuerys.pageSize || page.pageSize || 10 }, props)
679
692
  this.$emit(RESERVE_EVENT_NAMES.WATCH, { ...this.exposed })
680
693
  this.loading = true
681
694
  const ret = await net[requestType.toLowerCase()](
@@ -0,0 +1,5 @@
1
+ import ElePagination from './src/index.vue'
2
+
3
+ ElePagination.install = Vue => Vue.component(ElePagination.name, ElePagination)
4
+
5
+ export default ElePagination
@@ -0,0 +1,372 @@
1
+ <template>
2
+ <div class="ele-page--wrapper">
3
+ <section class="ele-page--panel">
4
+ <div class="total">
5
+
6
+ <span v-if="!currentTotalLoading">{{ currentTotal }}</span>
7
+ <a-icon v-else type="loading" />
8
+
9
+ </div>
10
+ <div class="page">
11
+ <div class="home" @click="handleClickHome">首页</div>
12
+ <div :class="['page--prev', loading && 'page-disabled', disabledPrev && 'page-disabled']" @click="handleClickPrev">
13
+ <a-icon type="left"></a-icon>
14
+ </div>
15
+ <div class="page--current">
16
+ {{ currentPage }}
17
+ </div>
18
+ <div :class="['page--next', loading && 'page-disabled', disabledNext && 'page-disabled']" @click="handleClickNext">
19
+ <a-icon type="right"></a-icon>
20
+ </div>
21
+ </div>
22
+ <div class="size">
23
+ <a-select v-model="currentPageSize" @change="handleChangePageSize">
24
+ <a-select-option v-for="item in innerPageSizeOptions" :value="item" :key="item">
25
+ {{ item }} 条/页
26
+ </a-select-option>
27
+ </a-select>
28
+ </div>
29
+ </section>
30
+ </div>
31
+ </template>
32
+
33
+ <script>
34
+ import { util } from '@idooel/shared'
35
+ const { toNumber } = util
36
+ export default {
37
+ name: 'ele-pagination',
38
+ props: {
39
+ query: {
40
+ type: Object,
41
+ default: () => ({})
42
+ },
43
+ data: {
44
+ type: Array,
45
+ default: () => ([])
46
+ },
47
+ loading: {
48
+ type: Boolean,
49
+ default: false
50
+ },
51
+ total: {
52
+ type: [String, Number],
53
+ default: 0
54
+ },
55
+ pageSizeOptions: {
56
+ type: Array,
57
+ default: () => ([50, 100, 500, 1000])
58
+ },
59
+ current: {
60
+ type: [Number, String],
61
+ default: 1
62
+ },
63
+ pageSize: {
64
+ type: [Number, String],
65
+ default: 10
66
+ },
67
+ disabledNextButton: {
68
+ type: Boolean,
69
+ default: false
70
+ }
71
+ },
72
+ data () {
73
+ return {
74
+ currentPage: 1,
75
+ currentPageSize: 0,
76
+ disabledPrev: false,
77
+ disabledNext: false,
78
+ currentTotal: 0,
79
+ currentTotalLoading: true,
80
+ cacheQuery: []
81
+ }
82
+ },
83
+ computed: {
84
+ innerPageSizeOptions () {
85
+ const normalized = this.pageSizeOptions
86
+ .map(item => toNumber(item))
87
+ .filter(n => typeof n === 'number' && Number.isFinite(n) && n > 0)
88
+
89
+ // 兜底:避免 a-select option 出现 undefined/空数组
90
+ return normalized.length ? normalized : [10]
91
+ },
92
+ pageQuery () {
93
+ const { currentPage, pageSize } = this.query
94
+ return { currentPage, pageSize }
95
+ }
96
+ },
97
+ watch: {
98
+ current: {
99
+ handler (current) {
100
+ this.syncCurrentFromProps(current)
101
+ },
102
+ immediate: true
103
+ },
104
+ total: {
105
+ handler (total) {
106
+ this.currentTotalLoading = true
107
+ if (typeof total === 'number') {
108
+ this.currentTotal = total
109
+ this.currentTotalLoading = false
110
+ }
111
+ },
112
+ immediate: true
113
+ },
114
+ query: {
115
+ handler (newQuery, oldQuery) {
116
+ // 1s内多次请求合并
117
+ // clearTimeout(this.timer)
118
+ // this.timer = setTimeout(() => {
119
+ // this.requestHandler(this.total, { ...newQuery, ...this.pageQuery })
120
+ // }, 1000)
121
+ }
122
+ },
123
+ data: {
124
+ handler (data) {
125
+ if (!this.currentPageSize) return
126
+ if (data.length != this.currentPageSize) {
127
+ this.disabledNext = true
128
+ } else {
129
+ this.disabledNext = false
130
+ }
131
+ },
132
+ immediate: true
133
+ },
134
+ disabledNextButton: {
135
+ handler (status) {
136
+ this.disabledNext = status
137
+ },
138
+ immediate: true
139
+ },
140
+ pageSize: {
141
+ handler (size) {
142
+ this.syncPageSizeFromProps(size)
143
+ },
144
+ immediate: true
145
+ }
146
+ },
147
+ methods: {
148
+ handleChangePageSize (value) {
149
+ const nextSize = this.normalizePageSize(value, this.currentPageSize || 10)
150
+ if (!nextSize) return
151
+
152
+ this.currentPageSize = nextSize
153
+ // pageSize 变化建议回到第一页,避免页码越界
154
+ this.currentPage = 1
155
+ this.setDisabledPrev(this.currentPage)
156
+
157
+ // 仅用户交互时触发
158
+ this.$emit('showSizeChange', this.currentPage, this.currentPageSize)
159
+ },
160
+ setDisabledNext (status) {
161
+ this.disabledNext = status
162
+ },
163
+ handleClickHome () {
164
+ this.currentPage = 1
165
+ this.setDisabledPrev(this.currentPage)
166
+ // 仅用户交互时触发
167
+ this.$emit('change', this.currentPage, this.currentPageSize)
168
+ },
169
+ setDisabledPrev (currentPage) {
170
+ if (currentPage > 1) {
171
+ this.disabledPrev = false
172
+ } else {
173
+ this.disabledPrev = true
174
+ }
175
+ },
176
+ handleClickPrev () {
177
+ if (this.currentPage > 1) {
178
+ this.currentPage -= 1
179
+ this.setDisabledPrev(this.currentPage)
180
+ // 仅用户交互时触发
181
+ this.$emit('change', this.currentPage, this.currentPageSize)
182
+ }
183
+ },
184
+ handleClickNext () {
185
+ if (this.disabledNext) return
186
+ this.currentPage += 1
187
+ this.setDisabledPrev(this.currentPage)
188
+ // 仅用户交互时触发
189
+ this.$emit('change', this.currentPage, this.currentPageSize)
190
+ },
191
+ normalizePage (value, fallback = 1) {
192
+ const n = toNumber(value)
193
+ if (typeof n !== 'number' || !Number.isFinite(n)) return fallback
194
+ const page = Math.floor(n)
195
+ return page >= 1 ? page : fallback
196
+ },
197
+ normalizePageSize (value, fallback = 10) {
198
+ const n = toNumber(value)
199
+ if (typeof n !== 'number' || !Number.isFinite(n)) return fallback
200
+ const size = Math.floor(n)
201
+ return size >= 1 ? size : fallback
202
+ },
203
+ // props 同步:只更新内部 state,不触发 emit
204
+ syncCurrentFromProps (current) {
205
+ this.currentPage = this.normalizePage(current, 1)
206
+ this.setDisabledPrev(this.currentPage)
207
+ },
208
+ // props 同步:只更新内部 state,不触发 emit
209
+ syncPageSizeFromProps (size) {
210
+ this.currentPageSize = this.normalizePageSize(size, this.currentPageSize || 10)
211
+ }
212
+ },
213
+ destroyed () {
214
+ this.cacheQuery = []
215
+ }
216
+ }
217
+ </script>
218
+ <style lang="scss" scoped>
219
+ @keyframes ani-load-loop {
220
+ 0% {
221
+ transform: rotate(0);
222
+ }
223
+ 50% {
224
+ transform: rotate(180deg);
225
+ }
226
+ 100% {
227
+ transform: rotate(1turn);
228
+ }
229
+ }
230
+ .ele-page--wrapper {
231
+ width: 100%;
232
+ height: 100%;
233
+ background: transparent;
234
+ border-top: unset;
235
+ padding: 0px 16px 16px 16px;
236
+ box-sizing: border-box;
237
+ display: flex;
238
+ flex-direction: row;
239
+ align-items: center;
240
+ justify-content: end;
241
+ /* margin-left: 16px;
242
+ margin-right: 16px; */
243
+ .ele-page--panel {
244
+ width: auto;
245
+ height: 32px;
246
+ display: flex;
247
+ flex-direction: row;
248
+ align-items: center;
249
+ .total {
250
+ .ivu-load-loop {
251
+ color: #409EFF;
252
+ animation: ani-load-loop 1s linear infinite;
253
+ }
254
+ color: rgba(0, 0, 0, 0.88);
255
+ font-family: 'AlibabaPuHuiTi_2_55_Regular';
256
+ font-size: 14px;
257
+ font-weight: 400;
258
+ }
259
+ .page {
260
+ margin-left: 12px;
261
+ display: flex;
262
+ flex-direction: row;
263
+ .home {
264
+ height: auto;
265
+ width: auto;
266
+ color: rgba(0, 0, 0, 0.88);
267
+ padding: 5px 4px 5px 4px;
268
+ text-align: center;
269
+ font-family: 'AlibabaPuHuiTi_2_55_Regular';
270
+ font-size: 14px;
271
+ font-weight: 400;
272
+ border-radius: 2px;
273
+ border: 1px solid rgba(0, 0, 0, 0.16);
274
+ background: #FFF;
275
+ box-sizing: border-box;
276
+ cursor: pointer;
277
+ }
278
+ .page--prev {
279
+ margin-left: 12px;
280
+ cursor: pointer;
281
+ height: 32px;
282
+ width: 32px;
283
+ color: rgba(0, 0, 0, 0.88);
284
+ font-family: 'AlibabaPuHuiTi_2_55_Regular';
285
+ font-size: 14px;
286
+ font-weight: 400;
287
+ border-radius: 2px;
288
+ border: 1px solid rgba(0, 0, 0, 0.16);
289
+ background: #FFF;
290
+ box-sizing: border-box;
291
+ display: flex;
292
+ flex-direction: row;
293
+ align-items: center;
294
+ justify-content: center;
295
+ .ivu-icon-ios-arrow-left {
296
+ font-size: 16px;
297
+ }
298
+ }
299
+ .page--current {
300
+ margin-left: 12px;
301
+ height: 32px;
302
+ width: 32px;
303
+ color: rgba(0, 0, 0, 0.88);
304
+ font-family: 'AlibabaPuHuiTi_2_55_Regular';
305
+ font-size: 14px;
306
+ font-weight: 400;
307
+ border-radius: 2px;
308
+ background: #409EFF;
309
+ box-sizing: border-box;
310
+ display: flex;
311
+ flex-direction: row;
312
+ align-items: center;
313
+ justify-content: center;
314
+ color: #FFF;
315
+ }
316
+ .page--next {
317
+ margin-left: 12px;
318
+ cursor: pointer;
319
+ height: 32px;
320
+ width: 32px;
321
+ color: rgba(0, 0, 0, 0.88);
322
+ font-family: 'AlibabaPuHuiTi_2_55_Regular';
323
+ font-size: 14px;
324
+ font-weight: 400;
325
+ border-radius: 2px;
326
+ border: 1px solid rgba(0, 0, 0, 0.16);
327
+ background: #FFF;
328
+ box-sizing: border-box;
329
+ display: flex;
330
+ flex-direction: row;
331
+ align-items: center;
332
+ justify-content: center;
333
+ .ivu-icon-ios-arrow-right {
334
+ font-size: 16px;
335
+ }
336
+ }
337
+ .page--prev, .page--next {
338
+ &.page-disabled {
339
+ margin-left: 12px;
340
+ height: 32px;
341
+ width: 32px;
342
+ color: rgba(0, 0, 0, 0.88);
343
+ font-family: 'AlibabaPuHuiTi_2_55_Regular';
344
+ font-size: 14px;
345
+ font-weight: 400;
346
+ border-radius: 2px;
347
+ border: 1px solid rgba(0, 0, 0, 0.16);
348
+ background: rgba(0, 0, 0, 0.04);
349
+ box-sizing: border-box;
350
+ display: flex;
351
+ flex-direction: row;
352
+ align-items: center;
353
+ justify-content: center;
354
+ cursor: not-allowed;
355
+ }
356
+ }
357
+ }
358
+ .size {
359
+ width: auto;
360
+ display: flex;
361
+ flex-direction: row;
362
+ margin-left: 12px;
363
+ .ant-select {
364
+ min-width: 91px;
365
+ flex-basis: 91px;
366
+ /* flex-shrink: 0; */
367
+ flex-grow: 1;
368
+ }
369
+ }
370
+ }
371
+ }
372
+ </style>
@@ -1,8 +1,13 @@
1
1
  <template>
2
2
  <a-select :disabled="disabled" :mode="getMode" :value="value" style="width: 100%" @change="onChange">
3
- <a-select-option v-for="item in innerDataSource" :key="item.value" :value="item.value">
4
- {{ item.label }}
5
- </a-select-option>
3
+ <template v-for="item in innerDataSource">
4
+ <a-select-option v-if="item._show" :key="item.value" :value="item.value">
5
+ {{ item.label }}
6
+ </a-select-option>
7
+ <a-select-option v-if="isUndefined(item._show)" :key="item.value" :value="item.value">
8
+ {{ item.label }}
9
+ </a-select-option>
10
+ </template>
6
11
  </a-select>
7
12
  </template>
8
13
 
@@ -82,6 +87,9 @@ export default {
82
87
  this.isInitRequest && this.fetchDataSourceByUrl()
83
88
  },
84
89
  methods: {
90
+ isUndefined (arg) {
91
+ return type.isUndefined(arg)
92
+ },
85
93
  fetchDataSourceByUrl () {
86
94
  net.get(this.url, { code: this.code, ...this.params }).then(resp => {
87
95
  const { data } = resp
@@ -18,6 +18,7 @@
18
18
  <div class="g-table__pagination">
19
19
  <a-pagination
20
20
  :show-total="all => `共 ${all} 条数据`"
21
+ v-if="mode === 'default'"
21
22
  show-size-changer
22
23
  show-quick-jumper
23
24
  :pageSize="innerPageSize"
@@ -27,6 +28,15 @@
27
28
  @showSizeChange="onShowSizeChange"
28
29
  :total="total">
29
30
  </a-pagination>
31
+ <ele-pagination
32
+ v-else
33
+ :pageSize="innerPageSize"
34
+ :current="innerCurrentPage"
35
+ :pageSizeOptions="pageSizeOptions"
36
+ @change="onChangePagination"
37
+ @showSizeChange="onShowSizeChange"
38
+ :total="total"
39
+ ></ele-pagination>
30
40
  </div>
31
41
  </div>
32
42
  </template>
@@ -39,6 +49,13 @@ export default {
39
49
  Actions
40
50
  },
41
51
  props: {
52
+ mode: {
53
+ type: String,
54
+ default: 'default',
55
+ validator: (value) => {
56
+ return ['default', 'next-cursor'].includes(value)
57
+ }
58
+ },
42
59
  // ant table wrapper
43
60
  height: {
44
61
  type: Number
@@ -81,7 +98,7 @@ export default {
81
98
  default: () => []
82
99
  },
83
100
  pageSize: {
84
- type: Number,
101
+ type: [Number, String],
85
102
  default: 10
86
103
  },
87
104
  pageSizeOptions: {
@@ -165,6 +182,8 @@ export default {
165
182
  },
166
183
  methods: {
167
184
  onShowSizeChange (current, pageSize) {
185
+ console.log('onShowSizeChangecurrent', current)
186
+ console.log(' onShowSizeChangepageSize', pageSize)
168
187
  this.innerCurrentPage = current
169
188
  this.innerPageSize = pageSize
170
189
  this.$emit('change-page', current, pageSize)
@@ -193,6 +212,7 @@ export default {
193
212
  return idx % 2 === 0 ? 'g-table__row--even' : 'g-table__row--odd'
194
213
  },
195
214
  onChangePagination (page, pageSize) {
215
+ console.log('page', page)
196
216
  this.innerCurrentPage = page
197
217
  this.innerPageSize = pageSize
198
218
  this.$emit('change-page', page, pageSize)
package/vitest.config.js CHANGED
@@ -1,17 +1,17 @@
1
- import { defineConfig } from 'vitest/config'
2
- import vue from '@vitejs/plugin-vue2'
3
- import path from 'path'
4
-
5
- export default defineConfig({
6
- plugins: [vue()],
7
- resolve: {
8
- alias: {
9
- '@': path.resolve(__dirname, 'packages')
10
- }
11
- },
12
- test: {
13
- environment: 'jsdom',
14
- globals: true,
15
- setupFiles: ['__tests__/setup.js']
16
- }
17
- })
1
+ import { defineConfig } from 'vitest/config'
2
+ import vue from '@vitejs/plugin-vue2'
3
+ import path from 'path'
4
+
5
+ export default defineConfig({
6
+ plugins: [vue()],
7
+ resolve: {
8
+ alias: {
9
+ '@': path.resolve(__dirname, 'packages')
10
+ }
11
+ },
12
+ test: {
13
+ environment: 'jsdom',
14
+ globals: true,
15
+ setupFiles: ['__tests__/setup.js']
16
+ }
17
+ })
File without changes