@phill-component/icons 1.11.3 → 1.11.6
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/dist/mobile/uvue/{icon-undo/icon-undo.uvue → icon-underline/icon-underline.uvue} +2 -2
- package/dist/mobile/uvue/icon-underline/underline.png +0 -0
- package/dist/mobile/vue/{icon-undo.vue → icon-underline.vue} +2 -2
- package/dist/web/vue/{Undo.vue → Underline.vue} +1 -1
- package/dist/web/vue/index.js +1 -3
- package/package.json +1 -1
- package/scripts/build.js +1 -1
- package/dist/mobile/uvue/icon-attachment/attachment.png +0 -0
- package/dist/mobile/uvue/icon-attachment/icon-attachment.uvue +0 -75
- package/dist/mobile/uvue/icon-link/icon-link.uvue +0 -75
- package/dist/mobile/uvue/icon-link/link.png +0 -0
- package/dist/mobile/uvue/icon-undo/undo.png +0 -0
- package/dist/mobile/vue/icon-attachment.vue +0 -58
- package/dist/mobile/vue/icon-link.vue +0 -58
- package/dist/web/vue/Attachment.vue +0 -53
- package/dist/web/vue/Link.vue +0 -53
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<view class="icon" @tap="onTap" :hover-class="hoverClass" :style="rootStyle">
|
|
3
3
|
<!-- #ifdef H5 -->
|
|
4
|
-
<svg v-bind="$attrs" :style="iconStyle" :width="iconW" :height="iconH" fill="none" viewBox="0 0 48 48"><path stroke="currentColor" stroke-width="2" d="
|
|
4
|
+
<svg v-bind="$attrs" :style="iconStyle" :width="iconW" :height="iconH" fill="none" viewBox="0 0 48 48"><path stroke="currentColor" stroke-width="2" d="M9 41h30M13 5v17.5C13 27 15.5 33 24 33s11-5 11-10.5V5"/></svg>
|
|
5
5
|
<!-- #endif -->
|
|
6
6
|
<!-- #ifndef H5 -->
|
|
7
7
|
<image :src="imgSrc" :style="iconBoxStyle" />
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
</template>
|
|
12
12
|
<script setup lang="uts">
|
|
13
13
|
import { computed } from 'vue'
|
|
14
|
-
import imgSrc from '@/uni_modules/@phill-component/icons/mobile/uvue/icon-
|
|
14
|
+
import imgSrc from '@/uni_modules/@phill-component/icons/mobile/uvue/icon-underline/underline.png'
|
|
15
15
|
const props = defineProps({
|
|
16
16
|
size: { type: [String, Number], default: '1em' },
|
|
17
17
|
color: { type: String, default: 'var(--tsm-color-primary)' },
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<view class="icon" @tap="onTap" :hover-class="hoverClass" :style="[wrapStyle, iconStyle]">
|
|
3
3
|
<!-- #ifdef H5 -->
|
|
4
|
-
<svg v-bind="$attrs" :style="iconStyle" :width="iconW" :height="iconH" fill="none" viewBox="0 0 48 48"><path stroke="currentColor" stroke-width="2" d="
|
|
4
|
+
<svg v-bind="$attrs" :style="iconStyle" :width="iconW" :height="iconH" fill="none" viewBox="0 0 48 48"><path stroke="currentColor" stroke-width="2" d="M9 41h30M13 5v17.5C13 27 15.5 33 24 33s11-5 11-10.5V5"/></svg>
|
|
5
5
|
<!-- #endif -->
|
|
6
6
|
<!-- #ifndef H5 -->
|
|
7
7
|
<image :src="imgSrc" :style="iconBoxStyle" />
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
</template>
|
|
12
12
|
<script setup>
|
|
13
13
|
import { computed } from 'vue'
|
|
14
|
-
import imgSrc from '@/uni_modules/@phill-component/icons/mobile/uvue/icon-
|
|
14
|
+
import imgSrc from '@/uni_modules/@phill-component/icons/mobile/uvue/icon-underline/underline.png'
|
|
15
15
|
const props = defineProps({
|
|
16
16
|
size: { type: [String, Number], default: '1em' },
|
|
17
17
|
color: { type: String, default: 'var(--tsm-color-primary)' },
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<view class="icon" @tap="onTap" :hover-class="hoverClass" :style="[wrapStyle, iconStyle]">
|
|
3
|
-
<svg v-bind="$attrs" :style="iconStyle" :width="iconW" :height="iconH" fill="none" viewBox="0 0 48 48"><path stroke="currentColor" stroke-width="2" d="
|
|
3
|
+
<svg v-bind="$attrs" :style="iconStyle" :width="iconW" :height="iconH" fill="none" viewBox="0 0 48 48"><path stroke="currentColor" stroke-width="2" d="M9 41h30M13 5v17.5C13 27 15.5 33 24 33s11-5 11-10.5V5"/></svg>
|
|
4
4
|
<text v-if="label !== ''" class="icon__label" :style="labelStyle">{{ label }}</text>
|
|
5
5
|
</view>
|
|
6
6
|
</template>
|
package/dist/web/vue/index.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
export { default as IconAttachment } from './Attachment.vue';
|
|
2
1
|
export { default as IconBrush } from './Brush.vue';
|
|
3
2
|
export { default as IconEdit } from './Edit.vue';
|
|
4
3
|
export { default as IconFire } from './Fire.vue';
|
|
5
|
-
export { default as IconLink } from './Link.vue';
|
|
6
4
|
export { default as IconMenu } from './Menu.vue';
|
|
7
5
|
export { default as IconSort } from './Sort.vue';
|
|
8
|
-
export { default as
|
|
6
|
+
export { default as IconUnderline } from './Underline.vue';
|
package/package.json
CHANGED
package/scripts/build.js
CHANGED
|
@@ -4,7 +4,7 @@ const { optimize } = require('svgo');
|
|
|
4
4
|
const Case = require('case');
|
|
5
5
|
|
|
6
6
|
const rootDir = path.resolve(__dirname, '..');
|
|
7
|
-
const srcDir = rootDir;
|
|
7
|
+
const srcDir = path.resolve(rootDir, 'resource');
|
|
8
8
|
const distDir = path.resolve(rootDir, 'dist');
|
|
9
9
|
// web: 仅供 PC/Web 使用(始终内联 SVG)
|
|
10
10
|
const webDir = path.resolve(distDir, 'web');
|
|
Binary file
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<view class="icon" @tap="onTap" :hover-class="hoverClass" :style="rootStyle">
|
|
3
|
-
<!-- #ifdef H5 -->
|
|
4
|
-
<svg v-bind="$attrs" :style="iconStyle" :width="iconW" :height="iconH" fill="none" viewBox="0 0 48 48"><path stroke="currentColor" stroke-width="2" d="M29.037 15.236s-9.174 9.267-11.48 11.594c-2.305 2.327-1.646 4.987-.329 6.316 1.317 1.33 3.994 1.953 6.258-.332L37.32 18.851c3.623-3.657 2.092-8.492 0-10.639s-6.916-3.657-10.54 0L11.3 23.838c-3.623 3.657-3.953 10.638.329 14.96s11.115 4.105 14.821.333 8.74-8.822 11.224-11.33"/></svg>
|
|
5
|
-
<!-- #endif -->
|
|
6
|
-
<!-- #ifndef H5 -->
|
|
7
|
-
<image :src="imgSrc" :style="iconBoxStyle" />
|
|
8
|
-
<!-- #endif -->
|
|
9
|
-
<text v-if="label != ''" class="icon__label" :style="labelStyle">{{ label }}</text>
|
|
10
|
-
</view>
|
|
11
|
-
</template>
|
|
12
|
-
<script setup lang="uts">
|
|
13
|
-
import { computed } from 'vue'
|
|
14
|
-
import imgSrc from '@/uni_modules/@phill-component/icons/mobile/uvue/icon-attachment/attachment.png'
|
|
15
|
-
const props = defineProps({
|
|
16
|
-
size: { type: [String, Number], default: '1em' },
|
|
17
|
-
color: { type: String, default: 'var(--tsm-color-primary)' },
|
|
18
|
-
label: { type: [String, Number], default: '' },
|
|
19
|
-
labelPos: { type: String, default: 'right' },
|
|
20
|
-
labelSize: { type: [String, Number], default: '15px' },
|
|
21
|
-
labelColor: { type: String, default: '' },
|
|
22
|
-
space: { type: [String, Number], default: '3px' },
|
|
23
|
-
width: { type: [String, Number], default: '' },
|
|
24
|
-
height: { type: [String, Number], default: '' },
|
|
25
|
-
hoverClass: { type: String, default: '' },
|
|
26
|
-
index: { type: [String, Number], default: '' },
|
|
27
|
-
stop: { type: Boolean, default: false }
|
|
28
|
-
})
|
|
29
|
-
const emit = defineEmits(['click'])
|
|
30
|
-
function toPx(v: any): string {
|
|
31
|
-
if (typeof v === 'number') return (v as number).toString() + 'px'
|
|
32
|
-
const s = (v as string)
|
|
33
|
-
return s != '' ? s : ''
|
|
34
|
-
}
|
|
35
|
-
const iconW = computed((): string => (props.width != '' ? toPx(props.width) : toPx(props.size)))
|
|
36
|
-
const iconH = computed((): string => (props.height != '' ? toPx(props.height) : toPx(props.size)))
|
|
37
|
-
const iconStyle = computed((): UTSJSONObject => {
|
|
38
|
-
return { 'color': props.color != '' ? props.color : 'inherit' } as UTSJSONObject
|
|
39
|
-
})
|
|
40
|
-
const iconBoxStyle = computed((): UTSJSONObject => ({ width: iconW.value, height: iconH.value } as UTSJSONObject))
|
|
41
|
-
const wrapStyle = computed((): UTSJSONObject => {
|
|
42
|
-
const map = { right: 'row', left: 'row-reverse', top: 'column-reverse', bottom: 'column' } as UTSJSONObject
|
|
43
|
-
let dir: string = 'row'
|
|
44
|
-
const cand = map[props.labelPos] as string | null
|
|
45
|
-
if (cand != null && cand.length > 0) {
|
|
46
|
-
dir = cand
|
|
47
|
-
}
|
|
48
|
-
return { display: 'flex', alignItems: 'center', flexDirection: dir } as UTSJSONObject
|
|
49
|
-
})
|
|
50
|
-
const rootStyle = computed((): UTSJSONObject => {
|
|
51
|
-
const s = wrapStyle.value
|
|
52
|
-
const i = iconStyle.value
|
|
53
|
-
for (const key in i) {
|
|
54
|
-
s[key] = i[key]
|
|
55
|
-
}
|
|
56
|
-
return s
|
|
57
|
-
})
|
|
58
|
-
const labelStyle = computed((): UTSJSONObject => {
|
|
59
|
-
const out = {} as UTSJSONObject
|
|
60
|
-
if (props.labelColor != '') out['color'] = props.labelColor
|
|
61
|
-
out['fontSize'] = toPx(props.labelSize)
|
|
62
|
-
out['marginLeft'] = props.labelPos == 'right' ? toPx(props.space) : 0
|
|
63
|
-
out['marginTop'] = props.labelPos == 'bottom' ? toPx(props.space) : 0
|
|
64
|
-
out['marginRight'] = props.labelPos == 'left' ? toPx(props.space) : 0
|
|
65
|
-
out['marginBottom'] = props.labelPos == 'top' ? toPx(props.space) : 0
|
|
66
|
-
return out
|
|
67
|
-
})
|
|
68
|
-
function onTap(e: UniPointerEvent) {
|
|
69
|
-
emit('click', props.index)
|
|
70
|
-
if (props.stop) e.stopPropagation()
|
|
71
|
-
}
|
|
72
|
-
</script>
|
|
73
|
-
<style scoped>
|
|
74
|
-
.icon__label { line-height: 1; }
|
|
75
|
-
</style>
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<view class="icon" @tap="onTap" :hover-class="hoverClass" :style="rootStyle">
|
|
3
|
-
<!-- #ifdef H5 -->
|
|
4
|
-
<svg v-bind="$attrs" :style="iconStyle" :width="iconW" :height="iconH" fill="none" viewBox="0 0 48 48"><path stroke="currentColor" stroke-width="2" d="m14.1 25.414-4.95 4.95a6 6 0 0 0 8.486 8.485l8.485-8.485a6 6 0 0 0 0-8.485"/><path stroke="currentColor" stroke-width="2" d="M21.879 26.121a6 6 0 0 1 0-8.485l8.485-8.485a6 6 0 1 1 8.485 8.485L33.5 23"/></svg>
|
|
5
|
-
<!-- #endif -->
|
|
6
|
-
<!-- #ifndef H5 -->
|
|
7
|
-
<image :src="imgSrc" :style="iconBoxStyle" />
|
|
8
|
-
<!-- #endif -->
|
|
9
|
-
<text v-if="label != ''" class="icon__label" :style="labelStyle">{{ label }}</text>
|
|
10
|
-
</view>
|
|
11
|
-
</template>
|
|
12
|
-
<script setup lang="uts">
|
|
13
|
-
import { computed } from 'vue'
|
|
14
|
-
import imgSrc from '@/uni_modules/@phill-component/icons/mobile/uvue/icon-link/link.png'
|
|
15
|
-
const props = defineProps({
|
|
16
|
-
size: { type: [String, Number], default: '1em' },
|
|
17
|
-
color: { type: String, default: 'var(--tsm-color-primary)' },
|
|
18
|
-
label: { type: [String, Number], default: '' },
|
|
19
|
-
labelPos: { type: String, default: 'right' },
|
|
20
|
-
labelSize: { type: [String, Number], default: '15px' },
|
|
21
|
-
labelColor: { type: String, default: '' },
|
|
22
|
-
space: { type: [String, Number], default: '3px' },
|
|
23
|
-
width: { type: [String, Number], default: '' },
|
|
24
|
-
height: { type: [String, Number], default: '' },
|
|
25
|
-
hoverClass: { type: String, default: '' },
|
|
26
|
-
index: { type: [String, Number], default: '' },
|
|
27
|
-
stop: { type: Boolean, default: false }
|
|
28
|
-
})
|
|
29
|
-
const emit = defineEmits(['click'])
|
|
30
|
-
function toPx(v: any): string {
|
|
31
|
-
if (typeof v === 'number') return (v as number).toString() + 'px'
|
|
32
|
-
const s = (v as string)
|
|
33
|
-
return s != '' ? s : ''
|
|
34
|
-
}
|
|
35
|
-
const iconW = computed((): string => (props.width != '' ? toPx(props.width) : toPx(props.size)))
|
|
36
|
-
const iconH = computed((): string => (props.height != '' ? toPx(props.height) : toPx(props.size)))
|
|
37
|
-
const iconStyle = computed((): UTSJSONObject => {
|
|
38
|
-
return { 'color': props.color != '' ? props.color : 'inherit' } as UTSJSONObject
|
|
39
|
-
})
|
|
40
|
-
const iconBoxStyle = computed((): UTSJSONObject => ({ width: iconW.value, height: iconH.value } as UTSJSONObject))
|
|
41
|
-
const wrapStyle = computed((): UTSJSONObject => {
|
|
42
|
-
const map = { right: 'row', left: 'row-reverse', top: 'column-reverse', bottom: 'column' } as UTSJSONObject
|
|
43
|
-
let dir: string = 'row'
|
|
44
|
-
const cand = map[props.labelPos] as string | null
|
|
45
|
-
if (cand != null && cand.length > 0) {
|
|
46
|
-
dir = cand
|
|
47
|
-
}
|
|
48
|
-
return { display: 'flex', alignItems: 'center', flexDirection: dir } as UTSJSONObject
|
|
49
|
-
})
|
|
50
|
-
const rootStyle = computed((): UTSJSONObject => {
|
|
51
|
-
const s = wrapStyle.value
|
|
52
|
-
const i = iconStyle.value
|
|
53
|
-
for (const key in i) {
|
|
54
|
-
s[key] = i[key]
|
|
55
|
-
}
|
|
56
|
-
return s
|
|
57
|
-
})
|
|
58
|
-
const labelStyle = computed((): UTSJSONObject => {
|
|
59
|
-
const out = {} as UTSJSONObject
|
|
60
|
-
if (props.labelColor != '') out['color'] = props.labelColor
|
|
61
|
-
out['fontSize'] = toPx(props.labelSize)
|
|
62
|
-
out['marginLeft'] = props.labelPos == 'right' ? toPx(props.space) : 0
|
|
63
|
-
out['marginTop'] = props.labelPos == 'bottom' ? toPx(props.space) : 0
|
|
64
|
-
out['marginRight'] = props.labelPos == 'left' ? toPx(props.space) : 0
|
|
65
|
-
out['marginBottom'] = props.labelPos == 'top' ? toPx(props.space) : 0
|
|
66
|
-
return out
|
|
67
|
-
})
|
|
68
|
-
function onTap(e: UniPointerEvent) {
|
|
69
|
-
emit('click', props.index)
|
|
70
|
-
if (props.stop) e.stopPropagation()
|
|
71
|
-
}
|
|
72
|
-
</script>
|
|
73
|
-
<style scoped>
|
|
74
|
-
.icon__label { line-height: 1; }
|
|
75
|
-
</style>
|
|
Binary file
|
|
Binary file
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<view class="icon" @tap="onTap" :hover-class="hoverClass" :style="[wrapStyle, iconStyle]">
|
|
3
|
-
<!-- #ifdef H5 -->
|
|
4
|
-
<svg v-bind="$attrs" :style="iconStyle" :width="iconW" :height="iconH" fill="none" viewBox="0 0 48 48"><path stroke="currentColor" stroke-width="2" d="M29.037 15.236s-9.174 9.267-11.48 11.594c-2.305 2.327-1.646 4.987-.329 6.316 1.317 1.33 3.994 1.953 6.258-.332L37.32 18.851c3.623-3.657 2.092-8.492 0-10.639s-6.916-3.657-10.54 0L11.3 23.838c-3.623 3.657-3.953 10.638.329 14.96s11.115 4.105 14.821.333 8.74-8.822 11.224-11.33"/></svg>
|
|
5
|
-
<!-- #endif -->
|
|
6
|
-
<!-- #ifndef H5 -->
|
|
7
|
-
<image :src="imgSrc" :style="iconBoxStyle" />
|
|
8
|
-
<!-- #endif -->
|
|
9
|
-
<text v-if="label !== ''" class="icon__label" :style="labelStyle">{{ label }}</text>
|
|
10
|
-
</view>
|
|
11
|
-
</template>
|
|
12
|
-
<script setup>
|
|
13
|
-
import { computed } from 'vue'
|
|
14
|
-
import imgSrc from '@/uni_modules/@phill-component/icons/mobile/uvue/icon-attachment/attachment.png'
|
|
15
|
-
const props = defineProps({
|
|
16
|
-
size: { type: [String, Number], default: '1em' },
|
|
17
|
-
color: { type: String, default: 'var(--tsm-color-primary)' },
|
|
18
|
-
label: { type: [String, Number], default: '' },
|
|
19
|
-
labelPos: { type: String, default: 'right' },
|
|
20
|
-
labelSize: { type: [String, Number], default: '15px' },
|
|
21
|
-
labelColor: { type: String, default: '' },
|
|
22
|
-
space: { type: [String, Number], default: '3px' },
|
|
23
|
-
width: { type: [String, Number], default: '' },
|
|
24
|
-
height: { type: [String, Number], default: '' },
|
|
25
|
-
hoverClass: { type: String, default: '' },
|
|
26
|
-
index: { type: [String, Number], default: '' },
|
|
27
|
-
stop: { type: Boolean, default: false }
|
|
28
|
-
})
|
|
29
|
-
const emit = defineEmits(['click'])
|
|
30
|
-
const toPx = (v) => typeof v === 'number' ? (v + 'px') : (String(v||''));
|
|
31
|
-
const iconW = computed(() => props.width ? toPx(props.width) : toPx(props.size))
|
|
32
|
-
const iconH = computed(() => props.height ? toPx(props.height) : toPx(props.size))
|
|
33
|
-
const iconBoxStyle = computed(() => ({ width: iconW.value, height: iconH.value }))
|
|
34
|
-
const iconStyle = computed(() => {
|
|
35
|
-
return { color: props.color || 'inherit' }
|
|
36
|
-
})
|
|
37
|
-
const wrapStyle = computed(() => {
|
|
38
|
-
const dirMap = { right: 'row', left: 'row-reverse', top: 'column-reverse', bottom: 'column' }
|
|
39
|
-
return { display: 'flex', alignItems: 'center', flexDirection: dirMap[props.labelPos] || 'row' }
|
|
40
|
-
})
|
|
41
|
-
const labelStyle = computed(() => {
|
|
42
|
-
return {
|
|
43
|
-
color: props.labelColor || '',
|
|
44
|
-
fontSize: toPx(props.labelSize),
|
|
45
|
-
marginLeft: props.labelPos === 'right' ? toPx(props.space) : 0,
|
|
46
|
-
marginTop: props.labelPos === 'bottom' ? toPx(props.space) : 0,
|
|
47
|
-
marginRight: props.labelPos === 'left' ? toPx(props.space) : 0,
|
|
48
|
-
marginBottom: props.labelPos === 'top' ? toPx(props.space) : 0
|
|
49
|
-
}
|
|
50
|
-
})
|
|
51
|
-
function onTap(e) {
|
|
52
|
-
emit('click', props.index)
|
|
53
|
-
if (props.stop && e && e.stopPropagation) e.stopPropagation()
|
|
54
|
-
}
|
|
55
|
-
</script>
|
|
56
|
-
<style scoped>
|
|
57
|
-
.icon__label { line-height: 1; }
|
|
58
|
-
</style>
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<view class="icon" @tap="onTap" :hover-class="hoverClass" :style="[wrapStyle, iconStyle]">
|
|
3
|
-
<!-- #ifdef H5 -->
|
|
4
|
-
<svg v-bind="$attrs" :style="iconStyle" :width="iconW" :height="iconH" fill="none" viewBox="0 0 48 48"><path stroke="currentColor" stroke-width="2" d="m14.1 25.414-4.95 4.95a6 6 0 0 0 8.486 8.485l8.485-8.485a6 6 0 0 0 0-8.485"/><path stroke="currentColor" stroke-width="2" d="M21.879 26.121a6 6 0 0 1 0-8.485l8.485-8.485a6 6 0 1 1 8.485 8.485L33.5 23"/></svg>
|
|
5
|
-
<!-- #endif -->
|
|
6
|
-
<!-- #ifndef H5 -->
|
|
7
|
-
<image :src="imgSrc" :style="iconBoxStyle" />
|
|
8
|
-
<!-- #endif -->
|
|
9
|
-
<text v-if="label !== ''" class="icon__label" :style="labelStyle">{{ label }}</text>
|
|
10
|
-
</view>
|
|
11
|
-
</template>
|
|
12
|
-
<script setup>
|
|
13
|
-
import { computed } from 'vue'
|
|
14
|
-
import imgSrc from '@/uni_modules/@phill-component/icons/mobile/uvue/icon-link/link.png'
|
|
15
|
-
const props = defineProps({
|
|
16
|
-
size: { type: [String, Number], default: '1em' },
|
|
17
|
-
color: { type: String, default: 'var(--tsm-color-primary)' },
|
|
18
|
-
label: { type: [String, Number], default: '' },
|
|
19
|
-
labelPos: { type: String, default: 'right' },
|
|
20
|
-
labelSize: { type: [String, Number], default: '15px' },
|
|
21
|
-
labelColor: { type: String, default: '' },
|
|
22
|
-
space: { type: [String, Number], default: '3px' },
|
|
23
|
-
width: { type: [String, Number], default: '' },
|
|
24
|
-
height: { type: [String, Number], default: '' },
|
|
25
|
-
hoverClass: { type: String, default: '' },
|
|
26
|
-
index: { type: [String, Number], default: '' },
|
|
27
|
-
stop: { type: Boolean, default: false }
|
|
28
|
-
})
|
|
29
|
-
const emit = defineEmits(['click'])
|
|
30
|
-
const toPx = (v) => typeof v === 'number' ? (v + 'px') : (String(v||''));
|
|
31
|
-
const iconW = computed(() => props.width ? toPx(props.width) : toPx(props.size))
|
|
32
|
-
const iconH = computed(() => props.height ? toPx(props.height) : toPx(props.size))
|
|
33
|
-
const iconBoxStyle = computed(() => ({ width: iconW.value, height: iconH.value }))
|
|
34
|
-
const iconStyle = computed(() => {
|
|
35
|
-
return { color: props.color || 'inherit' }
|
|
36
|
-
})
|
|
37
|
-
const wrapStyle = computed(() => {
|
|
38
|
-
const dirMap = { right: 'row', left: 'row-reverse', top: 'column-reverse', bottom: 'column' }
|
|
39
|
-
return { display: 'flex', alignItems: 'center', flexDirection: dirMap[props.labelPos] || 'row' }
|
|
40
|
-
})
|
|
41
|
-
const labelStyle = computed(() => {
|
|
42
|
-
return {
|
|
43
|
-
color: props.labelColor || '',
|
|
44
|
-
fontSize: toPx(props.labelSize),
|
|
45
|
-
marginLeft: props.labelPos === 'right' ? toPx(props.space) : 0,
|
|
46
|
-
marginTop: props.labelPos === 'bottom' ? toPx(props.space) : 0,
|
|
47
|
-
marginRight: props.labelPos === 'left' ? toPx(props.space) : 0,
|
|
48
|
-
marginBottom: props.labelPos === 'top' ? toPx(props.space) : 0
|
|
49
|
-
}
|
|
50
|
-
})
|
|
51
|
-
function onTap(e) {
|
|
52
|
-
emit('click', props.index)
|
|
53
|
-
if (props.stop && e && e.stopPropagation) e.stopPropagation()
|
|
54
|
-
}
|
|
55
|
-
</script>
|
|
56
|
-
<style scoped>
|
|
57
|
-
.icon__label { line-height: 1; }
|
|
58
|
-
</style>
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<view class="icon" @tap="onTap" :hover-class="hoverClass" :style="[wrapStyle, iconStyle]">
|
|
3
|
-
<svg v-bind="$attrs" :style="iconStyle" :width="iconW" :height="iconH" fill="none" viewBox="0 0 48 48"><path stroke="currentColor" stroke-width="2" d="M29.037 15.236s-9.174 9.267-11.48 11.594c-2.305 2.327-1.646 4.987-.329 6.316 1.317 1.33 3.994 1.953 6.258-.332L37.32 18.851c3.623-3.657 2.092-8.492 0-10.639s-6.916-3.657-10.54 0L11.3 23.838c-3.623 3.657-3.953 10.638.329 14.96s11.115 4.105 14.821.333 8.74-8.822 11.224-11.33"/></svg>
|
|
4
|
-
<text v-if="label !== ''" class="icon__label" :style="labelStyle">{{ label }}</text>
|
|
5
|
-
</view>
|
|
6
|
-
</template>
|
|
7
|
-
<script setup>
|
|
8
|
-
import { computed } from 'vue'
|
|
9
|
-
const props = defineProps({
|
|
10
|
-
size: { type: [String, Number], default: '1em' },
|
|
11
|
-
color: { type: String, default: 'inherit' },
|
|
12
|
-
label: { type: [String, Number], default: '' },
|
|
13
|
-
labelPos: { type: String, default: 'right' },
|
|
14
|
-
labelSize: { type: [String, Number], default: '15px' },
|
|
15
|
-
labelColor: { type: String, default: '' },
|
|
16
|
-
space: { type: [String, Number], default: '3px' },
|
|
17
|
-
width: { type: [String, Number], default: '' },
|
|
18
|
-
height: { type: [String, Number], default: '' },
|
|
19
|
-
hoverClass: { type: String, default: '' },
|
|
20
|
-
index: { type: [String, Number], default: '' },
|
|
21
|
-
stop: { type: Boolean, default: false }
|
|
22
|
-
})
|
|
23
|
-
const emit = defineEmits(['click'])
|
|
24
|
-
const toPx = (v) => typeof v === 'number' ? (v + 'px') : (String(v||''));
|
|
25
|
-
const iconW = computed(() => props.width ? toPx(props.width) : toPx(props.size))
|
|
26
|
-
const iconH = computed(() => props.height ? toPx(props.height) : toPx(props.size))
|
|
27
|
-
const iconBoxStyle = computed(() => ({ width: iconW.value, height: iconH.value }))
|
|
28
|
-
const iconStyle = computed(() => {
|
|
29
|
-
return { color: props.color || 'inherit' }
|
|
30
|
-
})
|
|
31
|
-
const wrapStyle = computed(() => {
|
|
32
|
-
const dirMap = { right: 'row', left: 'row-reverse', top: 'column-reverse', bottom: 'column' }
|
|
33
|
-
return { display: 'flex', alignItems: 'center', flexDirection: dirMap[props.labelPos] || 'row' }
|
|
34
|
-
})
|
|
35
|
-
const labelStyle = computed(() => {
|
|
36
|
-
return {
|
|
37
|
-
color: props.labelColor || '',
|
|
38
|
-
fontSize: toPx(props.labelSize),
|
|
39
|
-
marginLeft: props.labelPos === 'right' ? toPx(props.space) : 0,
|
|
40
|
-
marginTop: props.labelPos === 'bottom' ? toPx(props.space) : 0,
|
|
41
|
-
marginRight: props.labelPos === 'left' ? toPx(props.space) : 0,
|
|
42
|
-
marginBottom: props.labelPos === 'top' ? toPx(props.space) : 0
|
|
43
|
-
}
|
|
44
|
-
})
|
|
45
|
-
const imgSrc = '__IMG_SRC__'
|
|
46
|
-
function onTap(e) {
|
|
47
|
-
emit('click', props.index)
|
|
48
|
-
if (props.stop && e && e.stopPropagation) e.stopPropagation()
|
|
49
|
-
}
|
|
50
|
-
</script>
|
|
51
|
-
<style scoped>
|
|
52
|
-
.icon__label { line-height: 1; }
|
|
53
|
-
</style>
|
package/dist/web/vue/Link.vue
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<view class="icon" @tap="onTap" :hover-class="hoverClass" :style="[wrapStyle, iconStyle]">
|
|
3
|
-
<svg v-bind="$attrs" :style="iconStyle" :width="iconW" :height="iconH" fill="none" viewBox="0 0 48 48"><path stroke="currentColor" stroke-width="2" d="m14.1 25.414-4.95 4.95a6 6 0 0 0 8.486 8.485l8.485-8.485a6 6 0 0 0 0-8.485"/><path stroke="currentColor" stroke-width="2" d="M21.879 26.121a6 6 0 0 1 0-8.485l8.485-8.485a6 6 0 1 1 8.485 8.485L33.5 23"/></svg>
|
|
4
|
-
<text v-if="label !== ''" class="icon__label" :style="labelStyle">{{ label }}</text>
|
|
5
|
-
</view>
|
|
6
|
-
</template>
|
|
7
|
-
<script setup>
|
|
8
|
-
import { computed } from 'vue'
|
|
9
|
-
const props = defineProps({
|
|
10
|
-
size: { type: [String, Number], default: '1em' },
|
|
11
|
-
color: { type: String, default: 'inherit' },
|
|
12
|
-
label: { type: [String, Number], default: '' },
|
|
13
|
-
labelPos: { type: String, default: 'right' },
|
|
14
|
-
labelSize: { type: [String, Number], default: '15px' },
|
|
15
|
-
labelColor: { type: String, default: '' },
|
|
16
|
-
space: { type: [String, Number], default: '3px' },
|
|
17
|
-
width: { type: [String, Number], default: '' },
|
|
18
|
-
height: { type: [String, Number], default: '' },
|
|
19
|
-
hoverClass: { type: String, default: '' },
|
|
20
|
-
index: { type: [String, Number], default: '' },
|
|
21
|
-
stop: { type: Boolean, default: false }
|
|
22
|
-
})
|
|
23
|
-
const emit = defineEmits(['click'])
|
|
24
|
-
const toPx = (v) => typeof v === 'number' ? (v + 'px') : (String(v||''));
|
|
25
|
-
const iconW = computed(() => props.width ? toPx(props.width) : toPx(props.size))
|
|
26
|
-
const iconH = computed(() => props.height ? toPx(props.height) : toPx(props.size))
|
|
27
|
-
const iconBoxStyle = computed(() => ({ width: iconW.value, height: iconH.value }))
|
|
28
|
-
const iconStyle = computed(() => {
|
|
29
|
-
return { color: props.color || 'inherit' }
|
|
30
|
-
})
|
|
31
|
-
const wrapStyle = computed(() => {
|
|
32
|
-
const dirMap = { right: 'row', left: 'row-reverse', top: 'column-reverse', bottom: 'column' }
|
|
33
|
-
return { display: 'flex', alignItems: 'center', flexDirection: dirMap[props.labelPos] || 'row' }
|
|
34
|
-
})
|
|
35
|
-
const labelStyle = computed(() => {
|
|
36
|
-
return {
|
|
37
|
-
color: props.labelColor || '',
|
|
38
|
-
fontSize: toPx(props.labelSize),
|
|
39
|
-
marginLeft: props.labelPos === 'right' ? toPx(props.space) : 0,
|
|
40
|
-
marginTop: props.labelPos === 'bottom' ? toPx(props.space) : 0,
|
|
41
|
-
marginRight: props.labelPos === 'left' ? toPx(props.space) : 0,
|
|
42
|
-
marginBottom: props.labelPos === 'top' ? toPx(props.space) : 0
|
|
43
|
-
}
|
|
44
|
-
})
|
|
45
|
-
const imgSrc = '__IMG_SRC__'
|
|
46
|
-
function onTap(e) {
|
|
47
|
-
emit('click', props.index)
|
|
48
|
-
if (props.stop && e && e.stopPropagation) e.stopPropagation()
|
|
49
|
-
}
|
|
50
|
-
</script>
|
|
51
|
-
<style scoped>
|
|
52
|
-
.icon__label { line-height: 1; }
|
|
53
|
-
</style>
|