Skip to content

Commit eb4a433

Browse files
committed
refactor(mono): 提取公共utils以及细节调整(changelog-needed)
affects: @ued-plus/components, @ued-plus/utils ISSUES CLOSED: none
1 parent ea3efaf commit eb4a433

File tree

54 files changed

+426
-333
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+426
-333
lines changed

.eslintrc.cjs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ module.exports = defineConfig({
1717
},
1818
},
1919
// 启用的规则
20-
extends: ['plugin:vue/vue3-recommended', 'plugin:@typescript-eslint/recommended', 'standard'],
20+
extends: [
21+
'plugin:vue/vue3-recommended',
22+
'plugin:@typescript-eslint/recommended',
23+
'standard',
24+
],
2125
rules: {
2226
quotes: ['error', 'single'],
2327
'@typescript-eslint/ban-ts-ignore': 'off',
@@ -46,6 +50,7 @@ module.exports = defineConfig({
4650
},
4751
],
4852
'no-tabs': 'off',
53+
'no-mixed-spaces-and-tabs': 'off',
4954
indent: 'off',
5055
'vue/custom-event-name-casing': 'off',
5156
'vue/html-indent': 'off',
@@ -56,4 +61,4 @@ module.exports = defineConfig({
5661
'space-before-function-paren': 'off',
5762
'comma-dangle': 'off',
5863
},
59-
})
64+
})

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,5 +94,9 @@
9494
"**/*.{css,less,scss}": [
9595
"stylelint --fix \"**/*.{css,less}\""
9696
]
97+
},
98+
"dependencies": {
99+
"@ued-plus/components": "workspace:^",
100+
"@ued-plus/utils": "workspace:^"
97101
}
98102
}

packages/components/src/button/button.vue

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,9 @@
1818
</template>
1919

2020
<script lang="ts" setup>
21-
import { UedIcon } from '../icon'
22-
import { Loading } from '../icon/icon'
23-
import { computed, ComponentCustomProps, useSlots, ref, inject } from 'vue'
2421
import './styles/index.scss'
25-
26-
const buttonType = inject('type', undefined)
27-
const buttonSize = inject('size', undefined)
22+
import { UedIcon, Loading } from '@ued-plus/components'
23+
import { computed, ComponentCustomProps, useSlots, ref, inject } from 'vue'
2824
2925
defineOptions({ name: 'UedButton' })
3026
@@ -46,6 +42,9 @@ type ButtonProps = {
4642
4743
const buttonProps = defineProps<ButtonProps>()
4844
45+
const buttonType = inject('type', undefined)
46+
const buttonSize = inject('size', undefined)
47+
4948
const $slots = useSlots()
5049
5150
const buttonRef = ref()

packages/components/src/container/components/aside/index.vue

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<script lang="ts" setup>
88
import '../../styles/aside.scss'
99
import { computed } from 'vue'
10+
import { handleStringOrNumberPx } from '@ued-plus/utils'
1011
1112
defineOptions({ name: 'UedAside' })
1213
@@ -17,12 +18,8 @@ type AsideProps = {
1718
const asideProps = defineProps<AsideProps>()
1819
1920
const asideStyle = computed(() => {
20-
const width =
21-
typeof asideProps.width === 'string'
22-
? asideProps.width.split('px')[0]
23-
: asideProps.width
2421
return {
25-
width: Number.isNaN(Number(width)) ? undefined : Number(width) + 'px',
22+
width: handleStringOrNumberPx(asideProps.width),
2623
}
2724
})
2825
</script>

packages/components/src/container/components/footer/index.vue

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<script lang="ts" setup>
88
import '../../styles/footer.scss'
99
import { computed } from 'vue'
10+
import { handleStringOrNumberPx } from '@ued-plus/utils'
1011
1112
defineOptions({ name: 'UedFooter' })
1213
@@ -17,12 +18,8 @@ type FooterProps = {
1718
const footerProps = defineProps<FooterProps>()
1819
1920
const footerStyle = computed(() => {
20-
const height =
21-
typeof footerProps.height === 'string'
22-
? footerProps.height.split('px')[0]
23-
: footerProps.height
2421
return {
25-
height: Number.isNaN(Number(height)) ? undefined : Number(height) + 'px',
22+
height: handleStringOrNumberPx(footerProps.height),
2623
}
2724
})
2825
</script>

packages/components/src/container/components/header/index.vue

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<script lang="ts" setup>
88
import '../../styles/header.scss'
99
import { computed } from 'vue'
10+
import { handleStringOrNumberPx } from '@ued-plus/utils'
1011
1112
defineOptions({ name: 'UedHeader' })
1213
@@ -17,12 +18,8 @@ type HeaderProps = {
1718
const headerProps = defineProps<HeaderProps>()
1819
1920
const headerStyle = computed(() => {
20-
const height =
21-
typeof headerProps.height === 'string'
22-
? headerProps.height.split('px')[0]
23-
: headerProps.height
2421
return {
25-
height: Number.isNaN(Number(height)) ? undefined : Number(height) + 'px',
22+
height: handleStringOrNumberPx(headerProps.height),
2623
}
2724
})
2825
</script>

packages/components/src/icon/icon.vue

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,13 @@
55
</component>
66
</template>
77
<script lang="ts" setup>
8-
import { computed, onMounted } from 'vue'
98
import './styles/index.scss'
10-
9+
import { computed, onMounted } from 'vue'
10+
import { isNumber } from '@ued-plus/utils'
1111
import Common from './components/common/index.vue'
1212
1313
defineOptions({ name: 'UedIcon' })
1414
15-
onMounted(() => {
16-
// 引入字体图标文件
17-
import('./font/iconfont.js' as any)
18-
})
19-
2015
type IconProps = {
2116
name?: string
2217
size?: number
@@ -33,8 +28,7 @@ const iconName = computed(() => {
3328
3429
const iconStyle = computed(() => {
3530
return {
36-
fontSize:
37-
typeof iconProps.size === 'number' ? iconProps.size + 'px' : undefined,
31+
fontSize: isNumber(iconProps.size) ? `${iconProps.size}px` : undefined,
3832
color: iconProps.color,
3933
}
4034
})
@@ -45,13 +39,18 @@ const iconClass = computed(() => {
4539
}
4640
})
4741
const badge = computed(() => {
48-
return typeof iconProps.badge === 'number'
49-
? iconProps.badge >= 100
42+
return isNumber(iconProps.badge)
43+
? iconProps.badge && iconProps.badge >= 100
5044
? '99+'
5145
: iconProps.badge
5246
: ''
5347
})
5448
const icon = computed(() => {
5549
return iconProps.name ? Common : 'i'
5650
})
51+
52+
onMounted(() => {
53+
// 引入字体图标文件
54+
import('./font/iconfont.js' as any)
55+
})
5756
</script>

packages/components/src/layout/col.vue

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@
77
<script lang="ts" setup>
88
import './styles/col.scss'
99
import { computed, inject, PropType } from 'vue'
10+
import { isPositiveNumber } from '@ued-plus/utils'
1011
1112
defineOptions({ name: 'UedCol' })
1213
13-
const rowGutter = inject('row-gutter', undefined)
14-
1514
type ColProps = {
1615
span?: number
1716
offset?: number
@@ -62,24 +61,22 @@ const colProps = defineProps({
6261
},
6362
})
6463
65-
const judgeNumber = (num: number | undefined) => {
66-
return typeof num === 'number' && num > 0
67-
}
64+
const rowGutter = inject('row-gutter', undefined)
6865
6966
const handleBootstrap = (size: number | ColProps, sizeType: string) => {
70-
if (typeof size === 'number') {
67+
if (typeof size === 'object') {
7168
return {
72-
[`ued-col-${sizeType}-${size}`]: judgeNumber(size),
73-
}
74-
} else if (typeof size === 'object') {
75-
return {
76-
[`ued-col-${sizeType}-${size.span}`]: judgeNumber(size.span),
77-
[`ued-col-offset-${sizeType}-${size.offset}`]: judgeNumber(size.offset),
78-
[`ued-col-offset-${sizeType}-${size.pull}`]: judgeNumber(size.pull),
79-
[`ued-col-offset-${sizeType}-${size.push}`]: judgeNumber(size.push),
69+
[`ued-col-${sizeType}-${size.span}`]: isPositiveNumber(size.span),
70+
[`ued-col-offset-${sizeType}-${size.offset}`]: isPositiveNumber(
71+
size.offset
72+
),
73+
[`ued-col-offset-${sizeType}-${size.pull}`]: isPositiveNumber(size.pull),
74+
[`ued-col-offset-${sizeType}-${size.push}`]: isPositiveNumber(size.push),
8075
}
8176
}
82-
return {}
77+
return {
78+
[`ued-col-${sizeType}-${size}`]: isPositiveNumber(size),
79+
}
8380
}
8481
8582
const colClass = computed(() => {
@@ -90,10 +87,10 @@ const colClass = computed(() => {
9087
const xlSize = colProps.xl && handleBootstrap(colProps.xl, 'xl')
9188
9289
return {
93-
[`ued-col-${colProps.span}`]: judgeNumber(colProps.span),
94-
[`ued-col-offset-${colProps.offset}`]: judgeNumber(colProps.offset),
95-
[`ued-col-pull-${colProps.pull}`]: judgeNumber(colProps.pull),
96-
[`ued-col-push-${colProps.push}`]: judgeNumber(colProps.push),
90+
[`ued-col-${colProps.span}`]: isPositiveNumber(colProps.span),
91+
[`ued-col-offset-${colProps.offset}`]: isPositiveNumber(colProps.offset),
92+
[`ued-col-pull-${colProps.pull}`]: isPositiveNumber(colProps.pull),
93+
[`ued-col-push-${colProps.push}`]: isPositiveNumber(colProps.push),
9794
'is-guttered': rowGutter,
9895
...xsSize,
9996
...smSize,

packages/components/src/layout/row.vue

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<script lang="ts" setup>
88
import './styles/row.scss'
99
import { computed, provide } from 'vue'
10+
import { isPositiveNumber } from '@ued-plus/utils'
1011
1112
defineOptions({ name: 'UedRow' })
1213
@@ -31,9 +32,7 @@ const rowProps = defineProps({
3132
3233
provide(
3334
'row-gutter',
34-
typeof rowProps.gutter === 'number' && rowProps.gutter > 0
35-
? Math.floor(rowProps.gutter)
36-
: undefined
35+
isPositiveNumber(rowProps.gutter) ? Math.floor(rowProps.gutter) : undefined
3736
)
3837
3938
const rowClass = computed(() => {
@@ -44,10 +43,9 @@ const rowClass = computed(() => {
4443
})
4544
4645
const rowStyle = computed(() => {
47-
const marginNum =
48-
typeof rowProps.gutter === 'number' && rowProps.gutter > 0
49-
? `-${Math.floor(rowProps.gutter) / 2}px`
50-
: undefined
46+
const marginNum = isPositiveNumber(rowProps.gutter)
47+
? `-${Math.floor(rowProps.gutter) / 2}px`
48+
: undefined
5149
return {
5250
'margin-left': marginNum,
5351
'margin-right': marginNum,

packages/components/src/link/link.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ import { computed, ComponentCustomProps, PropType, useSlots } from 'vue'
1717
1818
defineOptions({ name: 'UedLink' })
1919
20-
const $slots = useSlots()
21-
2220
const linkProps = defineProps({
2321
type: {
2422
type: String,
@@ -38,6 +36,8 @@ const linkProps = defineProps({
3836
},
3937
})
4038
39+
const $slots = useSlots()
40+
4141
const linkClass = computed(() => {
4242
return {
4343
[`ued-link--${linkProps.type}`]: linkProps.type,

0 commit comments

Comments
 (0)