@phill-component/icons 1.10.3 → 1.10.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-attachment/attachment.png +0 -0
- package/dist/mobile/uvue/{icon-edit/icon-edit.uvue → icon-attachment/icon-attachment.uvue} +2 -2
- package/dist/mobile/uvue/icon-brush/brush.png +0 -0
- package/dist/mobile/vue/{icon-filter.vue → icon-attachment.vue} +2 -2
- package/dist/web/vue/{Copy.vue → Attachment.vue} +1 -1
- package/dist/web/vue/index.js +2 -16
- package/package.json +23 -21
- package/scripts/build.js +1 -1
- package/dist/mobile/uvue/icon-calendar/calendar.png +0 -0
- package/dist/mobile/uvue/icon-calendar/icon-calendar.uvue +0 -75
- package/dist/mobile/uvue/icon-copy/copy.png +0 -0
- package/dist/mobile/uvue/icon-copy/icon-copy.uvue +0 -75
- package/dist/mobile/uvue/icon-edit/edit.png +0 -0
- package/dist/mobile/uvue/icon-file-fold/file_fold.png +0 -0
- package/dist/mobile/uvue/icon-file-fold/icon-file-fold.uvue +0 -75
- package/dist/mobile/uvue/icon-filter/filter.png +0 -0
- package/dist/mobile/uvue/icon-filter/icon-filter.uvue +0 -75
- package/dist/mobile/uvue/icon-find-replace/find-replace.png +0 -0
- package/dist/mobile/uvue/icon-find-replace/icon-find-replace.uvue +0 -75
- package/dist/mobile/uvue/icon-h6/h6.png +0 -0
- package/dist/mobile/uvue/icon-h6/icon-h6.uvue +0 -75
- package/dist/mobile/uvue/icon-highlight/highlight.png +0 -0
- package/dist/mobile/uvue/icon-highlight/icon-highlight.uvue +0 -75
- package/dist/mobile/uvue/icon-home/home.png +0 -0
- package/dist/mobile/uvue/icon-home/icon-home.uvue +0 -75
- package/dist/mobile/uvue/icon-oblique-line/icon-oblique-line.uvue +0 -75
- package/dist/mobile/uvue/icon-oblique-line/oblique-line.png +0 -0
- package/dist/mobile/uvue/icon-original-size/icon-original-size.uvue +0 -75
- package/dist/mobile/uvue/icon-original-size/original-size.png +0 -0
- package/dist/mobile/uvue/icon-setting/icon-setting.uvue +0 -75
- package/dist/mobile/uvue/icon-setting/setting.png +0 -0
- package/dist/mobile/uvue/icon-task/icon-task.uvue +0 -75
- package/dist/mobile/uvue/icon-task/task.png +0 -0
- package/dist/mobile/uvue/icon-to-landscape/icon-to-landscape.uvue +0 -75
- package/dist/mobile/uvue/icon-to-landscape/to_landscape.png +0 -0
- package/dist/mobile/uvue/icon-zoom-in/icon-zoom-in.uvue +0 -75
- package/dist/mobile/uvue/icon-zoom-in/zoom-in.png +0 -0
- package/dist/mobile/vue/icon-calendar.vue +0 -58
- package/dist/mobile/vue/icon-copy.vue +0 -58
- package/dist/mobile/vue/icon-edit.vue +0 -58
- package/dist/mobile/vue/icon-file-fold.vue +0 -58
- package/dist/mobile/vue/icon-find-replace.vue +0 -58
- package/dist/mobile/vue/icon-h6.vue +0 -58
- package/dist/mobile/vue/icon-highlight.vue +0 -58
- package/dist/mobile/vue/icon-home.vue +0 -58
- package/dist/mobile/vue/icon-oblique-line.vue +0 -58
- package/dist/mobile/vue/icon-original-size.vue +0 -58
- package/dist/mobile/vue/icon-setting.vue +0 -58
- package/dist/mobile/vue/icon-task.vue +0 -58
- package/dist/mobile/vue/icon-to-landscape.vue +0 -58
- package/dist/mobile/vue/icon-zoom-in.vue +0 -58
- package/dist/web/vue/Calendar.vue +0 -53
- package/dist/web/vue/Edit.vue +0 -53
- package/dist/web/vue/FileFold.vue +0 -53
- package/dist/web/vue/Filter.vue +0 -53
- package/dist/web/vue/FindReplace.vue +0 -53
- package/dist/web/vue/H6.vue +0 -53
- package/dist/web/vue/Highlight.vue +0 -53
- package/dist/web/vue/Home.vue +0 -53
- package/dist/web/vue/ObliqueLine.vue +0 -53
- package/dist/web/vue/OriginalSize.vue +0 -53
- package/dist/web/vue/Setting.vue +0 -53
- package/dist/web/vue/Task.vue +0 -53
- package/dist/web/vue/ToLandscape.vue +0 -53
- package/dist/web/vue/ZoomIn.vue +0 -53
- package/scripts/fetch.js +0 -47
- package/scripts/jenkins-server.js +0 -198
- package/scripts/publish.js +0 -155
- package/scripts/sync.js +0 -201
|
Binary file
|
|
@@ -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="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
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-attachment/attachment.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="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
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-attachment/attachment.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="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
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,16 +1,2 @@
|
|
|
1
|
-
export { default as
|
|
2
|
-
export { default as
|
|
3
|
-
export { default as IconCopy } from './Copy.vue';
|
|
4
|
-
export { default as IconEdit } from './Edit.vue';
|
|
5
|
-
export { default as IconFileFold } from './FileFold.vue';
|
|
6
|
-
export { default as IconFilter } from './Filter.vue';
|
|
7
|
-
export { default as IconFindReplace } from './FindReplace.vue';
|
|
8
|
-
export { default as IconH6 } from './H6.vue';
|
|
9
|
-
export { default as IconHighlight } from './Highlight.vue';
|
|
10
|
-
export { default as IconHome } from './Home.vue';
|
|
11
|
-
export { default as IconObliqueLine } from './ObliqueLine.vue';
|
|
12
|
-
export { default as IconOriginalSize } from './OriginalSize.vue';
|
|
13
|
-
export { default as IconSetting } from './Setting.vue';
|
|
14
|
-
export { default as IconTask } from './Task.vue';
|
|
15
|
-
export { default as IconToLandscape } from './ToLandscape.vue';
|
|
16
|
-
export { default as IconZoomIn } from './ZoomIn.vue';
|
|
1
|
+
export { default as IconAttachment } from './Attachment.vue';
|
|
2
|
+
export { default as IconBrush } from './Brush.vue';
|
package/package.json
CHANGED
|
@@ -1,38 +1,40 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@phill-component/icons",
|
|
3
|
-
"version": "1.10.
|
|
4
|
-
"description": "
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"
|
|
3
|
+
"version": "1.10.6",
|
|
4
|
+
"description": "Phill Component Icons",
|
|
5
|
+
"main": "dist/web/vue/index.js",
|
|
6
|
+
"types": "dist/web/vue/index.d.ts",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist",
|
|
9
9
|
"scripts"
|
|
10
10
|
],
|
|
11
|
-
"sideEffects": false,
|
|
12
11
|
"bin": {
|
|
13
|
-
"icons": "scripts/install.js"
|
|
12
|
+
"phill-icons": "./scripts/install.js"
|
|
14
13
|
},
|
|
15
14
|
"scripts": {
|
|
16
15
|
"build": "node scripts/build.js",
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"release": "node scripts/publish.js",
|
|
20
|
-
"jenkins": "node scripts/jenkins-server.js"
|
|
16
|
+
"build:svg": "node scripts/build.js",
|
|
17
|
+
"publish": "npm publish --access public"
|
|
21
18
|
},
|
|
22
|
-
"keywords": [
|
|
23
|
-
"icons",
|
|
24
|
-
"vue",
|
|
25
|
-
"uniapp"
|
|
26
|
-
],
|
|
27
|
-
"author": "",
|
|
28
|
-
"license": "MIT",
|
|
29
19
|
"publishConfig": {
|
|
30
20
|
"registry": "https://registry.npmjs.org/"
|
|
31
21
|
},
|
|
32
|
-
"
|
|
22
|
+
"dependencies": {
|
|
33
23
|
"case": "^1.6.3",
|
|
34
|
-
"svgo": "^
|
|
35
|
-
|
|
24
|
+
"svgo": "^3.0.0"
|
|
25
|
+
},
|
|
26
|
+
"optionalDependencies": {
|
|
27
|
+
"sharp": "^0.32.0"
|
|
36
28
|
},
|
|
37
|
-
"
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/node": "^25.5.0"
|
|
31
|
+
},
|
|
32
|
+
"keywords": [
|
|
33
|
+
"icons",
|
|
34
|
+
"svg",
|
|
35
|
+
"vue",
|
|
36
|
+
"uni-app"
|
|
37
|
+
],
|
|
38
|
+
"author": "Phill",
|
|
39
|
+
"license": "MIT"
|
|
38
40
|
}
|
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 =
|
|
7
|
+
const srcDir = rootDir;
|
|
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" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="currentColor" d="M6.5 6.25a1.625 1.625 0 0 0 3.25 0V4.125h4.625v2a1.625 1.625 0 1 0 3.25 0v-2H19.5a2 2 0 0 1 2 2v7.166a3.07 3.07 0 0 0-2.088-.818 3.097 3.097 0 0 0-3.092 3.102c0 .76.273 1.455.725 1.994-2.167.837-3.08 2.83-3.068 4.056H4.5a2 2 0 0 1-2-2v-13.5a2 2 0 0 1 2-2h2z"/><path fill="currentColor" d="M7.557 14.718c.394 0 .714.32.714.715v1.228c0 .395-.32.714-.714.714H6.34a.714.714 0 0 1-.715-.714v-1.228c0-.395.32-.715.715-.715zm5.054 0c.395 0 .715.32.715.715v1.228c0 .395-.32.714-.715.714h-1.216a.714.714 0 0 1-.715-.714v-1.228c0-.395.32-.715.715-.715zm-5.054-4.593c.394 0 .714.32.714.715v1.228c0 .395-.32.714-.714.714H6.34a.714.714 0 0 1-.715-.714V10.84c0-.395.32-.715.715-.715zm5.054 0c.395 0 .715.32.715.715v1.228c0 .395-.32.714-.715.714h-1.216a.714.714 0 0 1-.715-.714V10.84c0-.395.32-.715.715-.715zm5.047 0c.395 0 .715.32.715.715v1.228c0 .395-.32.714-.715.714h-1.217a.714.714 0 0 1-.714-.714V10.84c0-.395.32-.715.714-.715z"/><rect width="2" height="4.752" x="7.125" y="2.5" fill="currentColor" rx="1"/><rect width="2" height="4.752" x="15" y="2.375" fill="currentColor" rx="1"/><path fill="currentColor" d="M19.652 18.436c3.333 0 4 2.006 4 2.675 0 .668-.665.67-.667.67H16.32s-.666-.001-.667-.67c0-.669.667-2.675 4-2.675m0-4.683c.53 0 1.04.211 1.414.588a2.01 2.01 0 0 1 0 2.838 1.997 1.997 0 0 1-2.828 0 2.01 2.01 0 0 1 0-2.838 2 2 0 0 1 1.414-.588"/></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-calendar/calendar.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
|
|
@@ -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="M20 6h18a2 2 0 0 1 2 2v22"/><path stroke="currentColor" stroke-width="2" d="M8 40V16a2 2 0 0 1 2-2h20c1.105 0 2 .892 2 1.997v24.011A1.99 1.99 0 0 1 30.003 42H9.996A1.996 1.996 0 0 1 8 40z"/></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-copy/copy.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,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" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><g filter="url(#a)"><path fill="currentColor" d="M4.5 3.6a3 3 0 0 1 3-3h7.366a3 3 0 0 1 2.266 1.034l3.433 3.958a3 3 0 0 1 .734 1.966V20.4a3 3 0 0 1-3 3H7.5a3 3 0 0 1-3-3z"/><path fill="currentColor" fill-opacity=".4" d="M4.5 3.6a3 3 0 0 1 3-3h7.366a3 3 0 0 1 2.266 1.034l3.433 3.958a3 3 0 0 1 .734 1.966V20.4a3 3 0 0 1-3 3H7.5a3 3 0 0 1-3-3z"/><path fill="currentColor" fill-opacity=".96" d="M4.5 3.6a3 3 0 0 1 3-3h7.366a3 3 0 0 1 2.266 1.034l3.433 3.958a3 3 0 0 1 .734 1.966V20.4a3 3 0 0 1-3 3H7.5a3 3 0 0 1-3-3z"/></g><path fill="currentColor" fill-opacity=".129" fill-rule="evenodd" d="M18.3 22.56H7.5a2.16 2.16 0 0 1-2.16-2.16V3.6A2.16 2.16 0 0 1 7.5 1.44h7.366q.317 0 .614.09v1.776a2.82 2.82 0 0 0 1.83 2.64l3.103 1.164q.046.22.046.448V20.4a2.16 2.16 0 0 1-2.16 2.16m1.49-16.58-3.293-3.796a2 2 0 0 0-.177-.181v1.303a1.98 1.98 0 0 0 1.285 1.854zM4.5 3.6a3 3 0 0 1 3-3h7.366a3 3 0 0 1 2.266 1.034l3.433 3.958a3 3 0 0 1 .734 1.966V20.4a3 3 0 0 1-3 3H7.5a3 3 0 0 1-3-3z" clip-rule="evenodd"/><g filter="url(#e)"><path fill="currentColor" d="M2.7 9a3 3 0 0 1 3-3h8.4a3 3 0 0 1 3 3v8.4a3 3 0 0 1-3 3H5.7a3 3 0 0 1-3-3z"/></g><path fill="currentColor" fill-opacity=".129" fill-rule="evenodd" d="M14.1 6.72H5.7A2.28 2.28 0 0 0 3.42 9v8.4a2.28 2.28 0 0 0 2.28 2.28h8.4a2.28 2.28 0 0 0 2.28-2.28V9a2.28 2.28 0 0 0-2.28-2.28M5.7 6a3 3 0 0 0-3 3v8.4a3 3 0 0 0 3 3h8.4a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3z" clip-rule="evenodd"/><path fill="currentColor" d="M8.356 8.326h1.287c.142 0 .257-.103.257-.229V6.95c0-.127-.115-.229-.257-.229H8.356c-.142 0-.256.102-.256.229v1.148c0 .126.114.229.256.229m3.087 0h-1.287c-.142 0-.256.102-.256.229v1.148c0 .127.114.229.256.229h1.287c.142 0 .257-.103.257-.229V8.555c0-.127-.115-.23-.257-.23m-3.087 3.212h1.287c.142 0 .257-.103.257-.229v-1.148c0-.127-.115-.23-.257-.23H8.356c-.142 0-.256.103-.256.23v1.148c0 .126.114.229.256.229m3.087 0h-1.287c-.142 0-.256.102-.256.228v1.149c0 .126.114.229.256.229h1.287c.142 0 .257-.103.257-.229v-1.149c0-.126-.115-.228-.257-.228m-.373 2.492H8.656c-.307 0-.556.223-.556.497v2.497c0 .274.249.496.556.496h2.414c.308 0 .557-.222.557-.496v-2.497c0-.274-.25-.497-.557-.497m-.088 2.644c0 .22-.2.398-.447.398H9.192c-.247 0-.447-.178-.447-.398v-.44c0-.22.2-.399.447-.399h1.342c.247 0 .448.179.448.4z"/><defs><linearGradient id="b" x1="12.677" x2="12.677" y1=".6" y2="23.4" gradientUnits="userSpaceOnUse"><stop stop-color="currentColor"/><stop offset="1" stop-color="currentColor" stop-opacity=".9"/><stop offset="1" stop-color="currentColor" stop-opacity=".9"/></linearGradient><linearGradient id="c" x1="12.677" x2="12.677" y1=".6" y2="23.4" gradientUnits="userSpaceOnUse"><stop stop-color="currentColor" stop-opacity=".4"/><stop offset="1" stop-color="currentColor"/></linearGradient><linearGradient id="d" x1="12.677" x2="12.677" y1=".6" y2="23.4" gradientUnits="userSpaceOnUse"><stop stop-color="currentColor"/><stop offset="1" stop-color="currentColor" stop-opacity=".9"/></linearGradient><filter id="a" width="16.8" height="23.28" x="4.5" y=".12" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="-.48"/><feGaussianBlur stdDeviation=".24"/><feComposite in2="hardAlpha" k2="-1" k3="1" operator="arithmetic"/><feColorMatrix values="0 0 0 0 0.00784314 0 0 0 0 0.0235294 0 0 0 0 0.168627 0 0 0 0.04 0"/><feBlend in2="shape" result="effect1_innerShadow_16434_6563"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="-.72"/><feGaussianBlur stdDeviation=".06"/><feComposite in2="hardAlpha" k2="-1" k3="1" operator="arithmetic"/><feColorMatrix values="0 0 0 0 0.00784314 0 0 0 0 0.0235294 0 0 0 0 0.168627 0 0 0 0.02 0"/><feBlend in2="effect1_innerShadow_16434_6563" result="effect2_innerShadow_16434_6563"/></filter><filter id="e" width="18" height="18" x="2.1" y="4.8" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dx="1.2" dy=".6"/><feGaussianBlur stdDeviation=".9"/><feComposite in2="hardAlpha" operator="out"/><feColorMatrix values="0 0 0 0 0.698039 0 0 0 0 0.388235 0 0 0 0 0.988235 0 0 0 0.1 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_16434_6563"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_16434_6563" result="shape"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dx="-.6" dy="-.6"/><feGaussianBlur stdDeviation="1.2"/><feComposite in2="hardAlpha" k2="-1" k3="1" operator="arithmetic"/><feColorMatrix values="0 0 0 0 0.336198 0 0 0 0 0.336198 0 0 0 0 0.336198 0 0 0 0.25 0"/><feBlend in2="shape" result="effect2_innerShadow_16434_6563"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dx=".6" dy="1.2"/><feGaussianBlur stdDeviation="1.8"/><feComposite in2="hardAlpha" k2="-1" k3="1" operator="arithmetic"/><feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.3 0"/><feBlend in2="effect2_innerShadow_16434_6563" result="effect3_innerShadow_16434_6563"/></filter></defs></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-file-fold/file_fold.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
|
|
@@ -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="M30 42V22.549a1 1 0 0 1 .463-.844l10.074-6.41A1 1 0 0 0 41 14.45V8a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v6.451a1 1 0 0 0 .463.844l10.074 6.41a1 1 0 0 1 .463.844V37"/></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-filter/filter.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
|
|
@@ -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="M42.354 40.854 36.01 34.51m0 0a9 9 0 0 1-15.364-6.364c0-5 4-9 9-9s9 4 9 9a8.97 8.97 0 0 1-2.636 6.364zm5.636-26.365h-36m10 16h-10m10 16h-10"/></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-find-replace/find-replace.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
|
|
@@ -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="M6 6v18m0 0v18m0-18h20m0 0V6m0 18v18m6-7.5c0 3.038 2.239 5.5 5 5.5s5-2.462 5-5.5-2.239-5.5-5-5.5-5 2.462-5 5.5zm0 0v-5.73c0-4.444 3.867-7.677 8-7.263.437.044.736.08.952.115"/></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-h6/h6.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
|