提交 b6ccf252 编写于 作者: fxy060608's avatar fxy060608

feat: icon

上级 f14d8d3c
......@@ -3,9 +3,6 @@
"name": "@dcloudio/uni-components",
"version": "3.0.0",
"description": "@dcloudio/uni-components",
"buildOptions": {
"bundler": "vite"
},
"repository": {
"type": "git",
"url": "git+https://github.com/dcloudio/uni-app.git",
......
import { computed, defineComponent } from 'vue'
import { PRIMARY_COLOR } from '@dcloudio/uni-shared'
import {
rpx2px,
createSvgIconVNode,
ICON_PATH_WARN,
ICON_PATH_INFO,
ICON_PATH_CLEAR,
ICON_PATH_CANCEL,
ICON_PATH_SEARCH,
ICON_PATH_SUCCESS,
ICON_PATH_WAITING,
ICON_PATH_DOWNLOAD,
ICON_PATH_SUCCESS_NO_CIRCLE,
} from '@dcloudio/uni-core'
const INFO_COLOR = '#10aeff'
const WARN_COLOR = '#f76260'
const GREY_COLOR = '#b2b2b2'
const CANCEL_COLOR = '#f43530'
const ICONS = {
success: {
d: ICON_PATH_SUCCESS,
c: PRIMARY_COLOR,
},
success_no_circle: {
d: ICON_PATH_SUCCESS_NO_CIRCLE,
c: PRIMARY_COLOR,
},
info: {
d: ICON_PATH_INFO,
c: INFO_COLOR,
},
warn: {
d: ICON_PATH_WARN,
c: WARN_COLOR,
},
waiting: {
d: ICON_PATH_WAITING,
c: INFO_COLOR,
},
cancel: {
d: ICON_PATH_CANCEL,
c: CANCEL_COLOR,
},
download: {
d: ICON_PATH_DOWNLOAD,
c: PRIMARY_COLOR,
},
search: {
d: ICON_PATH_SEARCH,
c: GREY_COLOR,
},
clear: {
d: ICON_PATH_CLEAR,
c: GREY_COLOR,
},
}
export default defineComponent({
name: 'Icon',
props: {
type: {
type: String,
required: true,
default: '',
},
size: {
type: [String, Number],
default: 23,
},
color: {
type: String,
default: '',
},
},
setup(props) {
const path = computed(() => ICONS[props.type as keyof typeof ICONS])
return () => (
<uni-icon>
{path.value.d &&
createSvgIconVNode(
path.value.d,
props.color || path.value.c,
rpx2px(props.size)
)}
</uni-icon>
)
},
})
<template>
<uni-icon v-bind="$attrs">
<i
:class="`uni-icon-${type}`"
:style="{'font-size': _converPx(size),'color': color}"
role="img"
/>
</uni-icon>
</template>
<script>
export default {
name: 'Icon',
props: {
type: {
type: String,
required: true,
default: ''
},
size: {
type: [String, Number],
default: 23
},
color: {
type: String,
default: ''
}
},
methods: {
_converPx(value) {
if (/^-?\d+[ur]px$/i.test(value)) {
return value.replace(/(^-?\d+)[ur]px$/i, (text, num) => {
return `${uni.upx2px(parseFloat(num))}px`
})
// eslint-disable-next-line no-useless-escape
} else if (/^-?[\d\.]+$/.test(value)) {
return `${value}px`
}
return value || ''
}
}
}
</script>
<style>
uni-icon {
display: inline-block;
font-size: 0;
box-sizing: border-box;
}
uni-icon[hidden] {
display: none;
}
uni-icon > i {
font: normal normal normal 14px/1 'weui';
}
uni-icon > i:before {
margin: 0;
box-sizing: border-box;
}
@font-face {
font-weight: normal;
font-style: normal;
font-family: 'weui';
src: url('data:application/octet-stream;base64,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')
format('truetype');
}
.uni-icon-success:before {
content: '\EA06';
}
.uni-icon-success_circle:before {
content: '\EA07';
}
.uni-icon-success_no_circle:before {
content: '\EA08';
}
.uni-icon-safe_success:before {
content: '\EA04';
}
.uni-icon-safe_warn:before {
content: '\EA05';
}
.uni-icon-info:before {
content: '\EA03';
}
.uni-icon-info_circle:before {
content: '\EA0C';
}
.uni-icon-warn:before {
content: '\EA0B';
}
.uni-icon-waiting:before {
content: '\EA09';
}
.uni-icon-waiting_circle:before {
content: '\EA0A';
}
.uni-icon-circle:before {
content: '\EA01';
}
.uni-icon-cancel:before {
content: '\EA0D';
}
.uni-icon-download:before {
content: '\EA02';
}
.uni-icon-search:before {
content: '\EA0E';
}
.uni-icon-clear:before {
content: '\EA0F';
}
.uni-icon-success {
color: #007aff;
}
.uni-icon-success_circle {
color: #007aff;
}
.uni-icon-success_no_circle {
color: #007aff;
}
.uni-icon-safe_success {
color: #007aff;
}
.uni-icon-safe_warn {
color: #ffbe00;
}
.uni-icon-info {
color: #10aeff;
}
.uni-icon-info_circle {
color: #007aff;
}
.uni-icon-warn {
color: #f76260;
}
.uni-icon-waiting {
color: #10aeff;
}
.uni-icon-waiting_circle {
color: #10aeff;
}
.uni-icon-circle {
color: #c9c9c9;
}
.uni-icon-cancel {
color: #f43530;
}
.uni-icon-download {
color: #007aff;
}
.uni-icon-search {
color: #b2b2b2;
}
.uni-icon-clear {
color: #b2b2b2;
}
</style>
......@@ -5,7 +5,7 @@ import Checkbox from './checkbox/index.vue'
import CheckboxGroup from './checkbox-group/index.vue'
import Editor from './editor/index.vue'
import Form from './form/index.vue'
import Icon from './icon/index.vue'
import Icon from './icon/index'
import Image from './image/index.vue'
import Input from './input/index.vue'
import Label from './label/index.vue'
......
......@@ -3,21 +3,30 @@
<div ref="wrap" class="uni-scroll-view">
<div
ref="main"
:style="{'overflow-x': scrollX?'auto':'hidden','overflow-y': scrollY?'auto':'hidden'}"
:style="{
'overflow-x': scrollX ? 'auto' : 'hidden',
'overflow-y': scrollY ? 'auto' : 'hidden',
}"
class="uni-scroll-view"
>
<div ref="content" class="uni-scroll-view-content">
<div
v-if="refresherEnabled"
ref="refresherinner"
:style="{'background-color': refresherBackground, 'height': refresherHeight + 'px'}"
:style="{
'background-color': refresherBackground,
height: refresherHeight + 'px',
}"
class="uni-scroll-view-refresher"
>
<div v-if="refresherDefaultStyle !== 'none'" class="uni-scroll-view-refresh">
<div
v-if="refresherDefaultStyle !== 'none'"
class="uni-scroll-view-refresh"
>
<div class="uni-scroll-view-refresh-inner">
<svg
v-if="refreshState=='pulling'"
:style="{'transform': 'rotate('+ refreshRotate +'deg)'}"
v-if="refreshState == 'pulling'"
:style="{ transform: 'rotate(' + refreshRotate + 'deg)' }"
fill="#2BD009"
class="uni-scroll-view-refresh__icon"
width="24"
......@@ -30,7 +39,7 @@
<path d="M0 0h24v24H0z" fill="none" />
</svg>
<svg
v-if="refreshState=='refreshing'"
v-if="refreshState == 'refreshing'"
class="uni-scroll-view-refresh__spinner"
width="24"
height="24"
......@@ -41,13 +50,13 @@
cy="50"
r="20"
fill="none"
style="color: #2BD009;"
style="color: #2bd009"
stroke-width="3"
/>
</svg>
</div>
</div>
<slot v-if="refresherDefaultStyle=='none'" name="refresher" />
<slot v-if="refresherDefaultStyle == 'none'" name="refresher" />
</div>
<slot />
</div>
......@@ -57,9 +66,9 @@
</template>
<script>
import scroller from '../../mixins/scroller/index'
import {passiveOptions} from '../../helpers/index'
import {disableScrollBounce} from '../../helpers/disable-scroll-bounce'
import { disableScrollBounce } from '../../helpers/disable-scroll-bounce'
const passiveOptions = { passive: true }
// const PULLING = 'pulling'
// const REFRESHING = 'refreshing'
......@@ -69,62 +78,62 @@ export default {
props: {
scrollX: {
type: [Boolean, String],
default: false
default: false,
},
scrollY: {
type: [Boolean, String],
default: false
default: false,
},
upperThreshold: {
type: [Number, String],
default: 50
default: 50,
},
lowerThreshold: {
type: [Number, String],
default: 50
default: 50,
},
scrollTop: {
type: [Number, String],
default: 0
default: 0,
},
scrollLeft: {
type: [Number, String],
default: 0
default: 0,
},
scrollIntoView: {
type: String,
default: ''
default: '',
},
scrollWithAnimation: {
type: [Boolean, String],
default: false
default: false,
},
enableBackToTop: {
type: [Boolean, String],
default: false
default: false,
},
refresherEnabled: {
type: [Boolean, String],
default: false
default: false,
},
refresherThreshold: {
type: Number,
default: 45
default: 45,
},
refresherDefaultStyle: {
type: String,
default: 'back'
default: 'back',
},
refresherBackground: {
type: String,
default: '#fff'
default: '#fff',
},
refresherTriggered: {
type: [Boolean, String],
default: false
}
default: false,
},
},
data () {
data() {
return {
lastScrollTop: this.scrollTopNumber,
lastScrollLeft: this.scrollLeftNumber,
......@@ -132,45 +141,45 @@ export default {
lastScrollToLowerTime: 0,
refresherHeight: 0,
refreshRotate: 0,
refreshState: ''
refreshState: '',
}
},
computed: {
upperThresholdNumber () {
upperThresholdNumber() {
var val = Number(this.upperThreshold)
return isNaN(val) ? 50 : val
},
lowerThresholdNumber () {
lowerThresholdNumber() {
var val = Number(this.lowerThreshold)
return isNaN(val) ? 50 : val
},
scrollTopNumber () {
scrollTopNumber() {
return Number(this.scrollTop) || 0
},
scrollLeftNumber () {
scrollLeftNumber() {
return Number(this.scrollLeft) || 0
}
},
},
watch: {
scrollTopNumber (val) {
scrollTopNumber(val) {
this._scrollTopChanged(val)
},
scrollLeftNumber (val) {
scrollLeftNumber(val) {
this._scrollLeftChanged(val)
},
scrollIntoView (val) {
scrollIntoView(val) {
this._scrollIntoViewChanged(val)
},
refresherTriggered (val) {
refresherTriggered(val) {
// TODO
if (val === true) {
this._setRefreshState('refreshing')
} else if (val === false) {
this._setRefreshState('restore')
}
}
},
},
mounted () {
mounted() {
var self = this
this._attached = true
this._scrollTopChanged(this.scrollTopNumber)
......@@ -194,7 +203,10 @@ export default {
if (main.scrollLeft === 0 && x > touchStart.x) {
needStop = false
return
} else if (main.scrollWidth === main.offsetWidth + main.scrollLeft && x < touchStart.x) {
} else if (
main.scrollWidth === main.offsetWidth + main.scrollLeft &&
x < touchStart.x
) {
needStop = false
return
}
......@@ -208,7 +220,10 @@ export default {
if (main.scrollTop === 0 && y > touchStart.y) {
needStop = false
return
} else if (main.scrollHeight === main.offsetHeight + main.scrollTop && y < touchStart.y) {
} else if (
main.scrollHeight === main.offsetHeight + main.scrollTop &&
y < touchStart.y
) {
needStop = false
return
}
......@@ -235,7 +250,7 @@ export default {
self.refreshRotate = rotate
self.$trigger('refresherpulling', event, {
deltaY: dy
deltaY: dy,
})
}
}
......@@ -243,14 +258,18 @@ export default {
this.__handleTouchStart = function (event) {
if (event.touches.length === 1) {
disableScrollBounce({
disable: true
disable: true,
})
needStop = null
touchStart = {
x: event.touches[0].pageX,
y: event.touches[0].pageY
y: event.touches[0].pageY,
}
if (self.refresherEnabled && self.refreshState !== 'refreshing' && self.$refs.main.scrollTop === 0) {
if (
self.refresherEnabled &&
self.refreshState !== 'refreshing' &&
self.$refs.main.scrollTop === 0
) {
self.refreshState = 'pulling'
}
}
......@@ -258,7 +277,7 @@ export default {
this.__handleTouchEnd = function (event) {
touchStart = null
disableScrollBounce({
disable: false
disable: false,
})
if (self.refresherHeight >= self.refresherThreshold) {
self._setRefreshState('refreshing')
......@@ -267,47 +286,89 @@ export default {
self.$trigger('refresherabort', event, {})
}
}
this.$refs.main.addEventListener('touchstart', this.__handleTouchStart, passiveOptions)
this.$refs.main.addEventListener('touchmove', this.__handleTouchMove, passiveOptions)
this.$refs.main.addEventListener('scroll', this.__handleScroll, supportsPassive ? {
passive: false
} : false)
this.$refs.main.addEventListener('touchend', this.__handleTouchEnd, passiveOptions)
this.$refs.main.addEventListener(
'touchstart',
this.__handleTouchStart,
passiveOptions
)
this.$refs.main.addEventListener(
'touchmove',
this.__handleTouchMove,
passiveOptions
)
this.$refs.main.addEventListener('scroll', this.__handleScroll, {
passive: false,
})
this.$refs.main.addEventListener(
'touchend',
this.__handleTouchEnd,
passiveOptions
)
},
activated () {
activated() {
// 还原 scroll-view 滚动位置
this.scrollY && (this.$refs.main.scrollTop = this.lastScrollTop)
this.scrollX && (this.$refs.main.scrollLeft = this.lastScrollLeft)
},
beforeDestroy () {
this.$refs.main.removeEventListener('touchstart', this.__handleTouchStart, passiveOptions)
this.$refs.main.removeEventListener('touchmove', this.__handleTouchMove, passiveOptions)
this.$refs.main.removeEventListener('scroll', this.__handleScroll, supportsPassive ? {
passive: false
} : false)
this.$refs.main.removeEventListener('touchend', this.__handleTouchEnd, passiveOptions)
beforeDestroy() {
this.$refs.main.removeEventListener(
'touchstart',
this.__handleTouchStart,
passiveOptions
)
this.$refs.main.removeEventListener(
'touchmove',
this.__handleTouchMove,
passiveOptions
)
this.$refs.main.removeEventListener('scroll', this.__handleScroll, {
passive: false,
})
this.$refs.main.removeEventListener(
'touchend',
this.__handleTouchEnd,
passiveOptions
)
},
methods: {
scrollTo: function (t, n) {
var i = this.$refs.main
t < 0 ? t = 0 : n === 'x' && t > i.scrollWidth - i.offsetWidth ? t = i.scrollWidth - i.offsetWidth
: n === 'y' && t > i.scrollHeight - i.offsetHeight && (t = i.scrollHeight - i.offsetHeight)
t < 0
? (t = 0)
: n === 'x' && t > i.scrollWidth - i.offsetWidth
? (t = i.scrollWidth - i.offsetWidth)
: n === 'y' &&
t > i.scrollHeight - i.offsetHeight &&
(t = i.scrollHeight - i.offsetHeight)
var r = 0
var o = ''
n === 'x' ? r = i.scrollLeft - t : n === 'y' && (r = i.scrollTop - t)
n === 'x' ? (r = i.scrollLeft - t) : n === 'y' && (r = i.scrollTop - t)
if (r !== 0) {
this.$refs.content.style.transition = 'transform .3s ease-out'
this.$refs.content.style.webkitTransition = '-webkit-transform .3s ease-out'
this.$refs.content.style.webkitTransition =
'-webkit-transform .3s ease-out'
if (n === 'x') {
o = 'translateX(' + r + 'px) translateZ(0)'
} else {
n === 'y' && (o = 'translateY(' + r + 'px) translateZ(0)')
}
this.$refs.content.removeEventListener('transitionend', this.__transitionEnd)
this.$refs.content.removeEventListener('webkitTransitionEnd', this.__transitionEnd)
this.$refs.content.removeEventListener(
'transitionend',
this.__transitionEnd
)
this.$refs.content.removeEventListener(
'webkitTransitionEnd',
this.__transitionEnd
)
this.__transitionEnd = this._transitionEnd.bind(this, t, n)
this.$refs.content.addEventListener('transitionend', this.__transitionEnd)
this.$refs.content.addEventListener('webkitTransitionEnd', this.__transitionEnd)
this.$refs.content.addEventListener(
'transitionend',
this.__transitionEnd
)
this.$refs.content.addEventListener(
'webkitTransitionEnd',
this.__transitionEnd
)
if (n === 'x') {
// if (e !== 'ios') {
i.style.overflowX = 'hidden'
......@@ -331,14 +392,22 @@ export default {
this._noBubble = false
}
if (this._noBubble === null && this.scrollY) {
if (Math.abs(this._y - $event.detail.y) / Math.abs(this._x - $event.detail.x) > 1) {
if (
Math.abs(this._y - $event.detail.y) /
Math.abs(this._x - $event.detail.x) >
1
) {
this._noBubble = true
} else {
this._noBubble = false
}
}
if (this._noBubble === null && this.scrollX) {
if (Math.abs(this._x - $event.detail.x) / Math.abs(this._y - $event.detail.y) > 1) {
if (
Math.abs(this._x - $event.detail.x) /
Math.abs(this._y - $event.detail.y) >
1
) {
this._noBubble = true
} else {
this._noBubble = false
......@@ -360,32 +429,54 @@ export default {
scrollHeight: target.scrollHeight,
scrollWidth: target.scrollWidth,
deltaX: this.lastScrollLeft - target.scrollLeft,
deltaY: this.lastScrollTop - target.scrollTop
deltaY: this.lastScrollTop - target.scrollTop,
})
if (this.scrollY) {
if (target.scrollTop <= this.upperThresholdNumber && this.lastScrollTop - target.scrollTop > 0 && $event.timeStamp - this.lastScrollToUpperTime > 200) {
if (
target.scrollTop <= this.upperThresholdNumber &&
this.lastScrollTop - target.scrollTop > 0 &&
$event.timeStamp - this.lastScrollToUpperTime > 200
) {
this.$trigger('scrolltoupper', $event, {
direction: 'top'
direction: 'top',
})
this.lastScrollToUpperTime = $event.timeStamp
}
if (target.scrollTop + target.offsetHeight + this.lowerThresholdNumber >= target.scrollHeight && this.lastScrollTop - target.scrollTop < 0 && $event.timeStamp - this.lastScrollToLowerTime > 200) {
if (
target.scrollTop +
target.offsetHeight +
this.lowerThresholdNumber >=
target.scrollHeight &&
this.lastScrollTop - target.scrollTop < 0 &&
$event.timeStamp - this.lastScrollToLowerTime > 200
) {
this.$trigger('scrolltolower', $event, {
direction: 'bottom'
direction: 'bottom',
})
this.lastScrollToLowerTime = $event.timeStamp
}
}
if (this.scrollX) {
if (target.scrollLeft <= this.upperThresholdNumber && this.lastScrollLeft - target.scrollLeft > 0 && $event.timeStamp - this.lastScrollToUpperTime > 200) {
if (
target.scrollLeft <= this.upperThresholdNumber &&
this.lastScrollLeft - target.scrollLeft > 0 &&
$event.timeStamp - this.lastScrollToUpperTime > 200
) {
this.$trigger('scrolltoupper', $event, {
direction: 'left'
direction: 'left',
})
this.lastScrollToUpperTime = $event.timeStamp
}
if (target.scrollLeft + target.offsetWidth + this.lowerThresholdNumber >= target.scrollWidth && this.lastScrollLeft - target.scrollLeft < 0 && $event.timeStamp - this.lastScrollToLowerTime > 200) {
if (
target.scrollLeft +
target.offsetWidth +
this.lowerThresholdNumber >=
target.scrollWidth &&
this.lastScrollLeft - target.scrollLeft < 0 &&
$event.timeStamp - this.lastScrollToLowerTime > 200
) {
this.$trigger('scrolltolower', $event, {
direction: 'right'
direction: 'right',
})
this.lastScrollToLowerTime = $event.timeStamp
}
......@@ -468,10 +559,16 @@ export default {
main.style.overflowY = this.scrollY ? 'auto' : 'hidden'
main.scrollTop = val
}
this.$refs.content.removeEventListener('transitionend', this.__transitionEnd)
this.$refs.content.removeEventListener('webkitTransitionEnd', this.__transitionEnd)
this.$refs.content.removeEventListener(
'transitionend',
this.__transitionEnd
)
this.$refs.content.removeEventListener(
'webkitTransitionEnd',
this.__transitionEnd
)
},
_setRefreshState (state) {
_setRefreshState(state) {
switch (state) {
case 'refreshing':
this.refresherHeight = this.refresherThreshold
......@@ -484,14 +581,14 @@ export default {
}
this.refreshState = state
},
getScrollPosition () {
getScrollPosition() {
const main = this.$refs.main
return {
scrollLeft: main.scrollLeft,
scrollTop: main.scrollTop
scrollTop: main.scrollTop,
}
}
}
},
},
}
</script>
<style>
......
export let supportsPassive = false
try {
const opts = {}
Object.defineProperty(opts, 'passive', {
get() {
/* istanbul ignore next */
supportsPassive = true
},
}) // https://github.com/facebook/flow/issues/285
window.addEventListener('test-passive' as any, null as any, opts)
} catch (e) {}
export const passiveOptions = supportsPassive ? { passive: true } : false
export * from './components'
export { createSvgIconVNode, ICON_PATH_SEARCH } from './helpers/icon'
import { supportsPassive } from '../helpers/index'
const passiveOptions = supportsPassive
? {
passive: true,
capture: true
}
: true
const passiveOptions = {
passive: true,
capture: true,
}
const vms = []
let userInteract = 0
let inited
......@@ -17,13 +13,13 @@ function addInteractListener(vm) {
'touchmove',
'touchend',
'mousedown',
'mouseup'
'mouseup',
]
eventNames.forEach(eventName => {
eventNames.forEach((eventName) => {
document.addEventListener(
eventName,
function() {
vms.forEach(vm => {
function () {
vms.forEach((vm) => {
vm.userInteract = true
userInteract++
setTimeout(() => {
......@@ -53,7 +49,7 @@ export default {
/**
* 是否用户交互行为
*/
userInteract: false
userInteract: false,
}
},
mounted() {
......@@ -61,5 +57,5 @@ export default {
},
beforeDestroy() {
removeInteractListener(this)
}
},
}
import path from 'path'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { isCustomElement } from '../uni-shared'
export default defineConfig({
root: '.',
define: {
__TEST__: false,
__PLATFORM__: JSON.stringify('h5'),
},
plugins: [
vue({
template: {
compilerOptions: {
isCustomElement,
},
},
}),
],
build: {
minify: false,
assetsDir: '.',
rollupOptions: {
input: path.resolve(__dirname, 'src/index.ts'),
external: ['vue', '@vue/shared', '@dcloudio/uni-shared'],
preserveEntrySignatures: 'strict',
output: {
dir: path.resolve(__dirname, 'dist'),
format: 'es',
manualChunks: undefined,
entryFileNames: 'uni-components.esm.js',
assetFileNames(assetInfo) {
if (assetInfo.name === 'style.css') {
return 'uni-components.css'
}
return 'assets/[name]-[hash][extname]'
},
},
},
// emitAssets: false,
},
})
......@@ -20,6 +20,18 @@ export const ICON_PATH_SAFE_WARN =
'M16.032 0.16q-2.72 0.608-5.44 1.376-2.112 0.576-4.64 1.376 5.6-1.76-4.096 1.312v10.88q0 4.544 2.272 8.288 1.984 3.232 5.44 5.536 3.008 2.016 6.464 2.912 3.456-0.896 6.432-2.912 3.488-2.304 5.44-5.536 2.304-3.744 2.304-8.288v-10.88q-9.696-3.072-4.096-1.312-2.528-0.8-4.64-1.376-2.72-0.768-5.44-1.376zM23.968 11.328l-9.568 9.44q-0.128 0.096-0.256 0l-4.416-4.576q-0.096-0.128 0-0.256l0.576-0.8q0.032-0.064 0.112-0.064t0.112 0.032l3.616 2.752q0.032 0.064 0.112 0.048t0.144-0.048l8.768-7.328q0.064-0.032 0.144-0.032t0.112 0.064l0.544 0.512q0.128 0.128 0 0.256z'
export const ICON_PATH_SEARCH =
'M20.928 22.688q-1.696 1.376-3.744 2.112-2.112 0.768-4.384 0.768-3.488 0-6.464-1.728-2.88-1.696-4.576-4.608-1.76-2.976-1.76-6.464t1.76-6.464q1.696-2.88 4.576-4.576 2.976-1.76 6.464-1.76t6.464 1.76q2.912 1.696 4.608 4.576 1.728 2.976 1.728 6.464 0 2.272-0.768 4.384-0.736 2.048-2.112 3.744l9.312 9.28-1.824 1.824-9.28-9.312zM12.8 23.008q2.784 0 5.184-1.376 2.304-1.376 3.68-3.68 1.376-2.4 1.376-5.184t-1.376-5.152q-1.376-2.336-3.68-3.68-2.4-1.408-5.184-1.408t-5.152 1.408q-2.336 1.344-3.68 3.68-1.408 2.368-1.408 5.152t1.408 5.184q1.344 2.304 3.68 3.68 2.368 1.376 5.152 1.376zM12.8 23.008v0z'
export const ICON_PATH_SUCCESS_CIRCLE =
'M16.032 1.888q-3.84 0-7.136 1.92-3.2 1.888-5.088 5.088-1.92 3.296-1.92 7.136t1.92 7.136q1.888 3.168 5.088 5.056 3.296 1.92 7.136 1.92t7.104-1.92q3.2-1.888 5.088-5.056 1.92-3.296 1.92-7.136t-1.92-7.136q-1.888-3.2-5.088-5.088-3.264-1.92-7.104-1.92zM16.032 29.056q-3.52 0-6.528-1.76-2.912-1.696-4.64-4.608-1.76-3.008-1.76-6.512t1.76-6.512q1.728-2.944 4.64-4.64 3.008-1.76 6.512-1.76t6.512 1.76q2.912 1.696 4.64 4.64 1.76 3.008 1.76 6.512t-1.76 6.512q-1.728 2.912-4.64 4.608-3.008 1.76-6.496 1.76zM22.88 11.456l-8.512 7.072q-0.192 0.16-0.48 0.176t-0.48-0.144l-3.072-2.336q-0.192-0.16-0.432-0.128t-0.4 0.224l-0.096 0.128q-0.16 0.224-0.144 0.496t0.208 0.464l4 4.096q0.16 0.192 0.416 0.192t0.448-0.16l9.376-9.248q0.16-0.16 0.176-0.4t-0.16-0.416-0.432-0.176-0.416 0.16zM23.712 11.424q0 0 0.032 0.032l-0.032-0.032z'
export const ICON_PATH_SUCCESS_NO_CIRCLE =
'M1.952 18.080q-0.32-0.352-0.416-0.88t0.128-0.976l0.16-0.352q0.224-0.416 0.64-0.528t0.8 0.176l6.496 4.704q0.384 0.288 0.912 0.272t0.88-0.336l17.312-14.272q0.352-0.288 0.848-0.256t0.848 0.352l-0.416-0.416q0.32 0.352 0.32 0.816t-0.32 0.816l-18.656 18.912q-0.32 0.352-0.8 0.352t-0.8-0.32l-7.936-8.064z'
export const ICON_PATH_SUCCESS =
'M15.808 0.16q-4.224 0-7.872 2.176-3.552 2.112-5.632 5.728-2.144 3.744-2.144 8.128 0 4.192 2.144 7.872 2.112 3.52 5.632 5.632 3.68 2.144 7.872 2.144 4.384 0 8.128-2.144 3.616-2.080 5.728-5.632 2.176-3.648 2.176-7.872 0-4.384-2.176-8.128-2.112-3.616-5.728-5.728-3.744-2.176-8.128-2.176zM24.832 11.328l-11.264 11.104q-0.032 0.032-0.112 0.032t-0.112-0.032l-5.216-5.376q-0.096-0.128 0-0.288l0.704-0.96q0.032-0.064 0.112-0.064t0.112 0.032l4.256 3.264q0.064 0.032 0.144 0.032t0.112-0.032l10.336-8.608q0.064-0.064 0.144-0.064t0.112 0.064l0.672 0.672q0.128 0.128 0 0.224z'
export const ICON_PATH_WAITING_CIRCLE =
'M23.712 11.424q0 0 0.032 0.032l-0.032-0.032zM16.032 1.888q-3.84 0-7.136 1.92-3.2 1.888-5.088 5.088-1.92 3.296-1.92 7.136t1.92 7.136q1.888 3.168 5.088 5.056 3.296 1.92 7.136 1.92t7.104-1.92q3.2-1.888 5.088-5.056 1.92-3.296 1.92-7.136t-1.92-7.136q-1.888-3.2-5.088-5.088-3.264-1.92-7.104-1.92zM16.032 29.056q-3.52 0-6.528-1.76-2.912-1.696-4.64-4.608-1.76-3.008-1.76-6.512t1.76-6.512q1.728-2.944 4.64-4.64 3.008-1.76 6.512-1.76t6.512 1.76q2.912 1.696 4.64 4.64 1.76 3.008 1.76 6.512t-1.76 6.512q-1.728 2.912-4.64 4.608-3.008 1.76-6.496 1.76zM14.56 11.104h-1.152v8.096h8.096v-1.152h-6.944v-6.944z'
export const ICON_PATH_WAITING =
'M15.84 0.096q-4.224 0-7.872 2.176-3.552 2.112-5.632 5.728-2.144 3.744-2.144 8.128 0 4.192 2.144 7.872 2.112 3.52 5.632 5.632 3.68 2.144 7.872 2.144 4.384 0 8.128-2.144 3.616-2.080 5.728-5.632 2.176-3.648 2.176-7.872 0-4.384-2.176-8.128-2.112-3.616-5.728-5.728-3.744-2.176-8.128-2.176zM23.008 21.92l-0.512 0.896q-0.096 0.128-0.224 0.064l-8-3.808q-0.096-0.064-0.16-0.128-0.128-0.096-0.128-0.288l0.512-12.096q0-0.064 0.048-0.112t0.112-0.048h1.376q0.064 0 0.112 0.048t0.048 0.112l0.448 10.848 6.304 4.256q0.064 0.064 0.080 0.128t-0.016 0.128z'
export const ICON_PATH_WARN =
'M15.808 0.16q-4.224 0-7.872 2.176-3.552 2.112-5.632 5.728-2.144 3.744-2.144 8.128 0 4.192 2.144 7.872 2.112 3.52 5.632 5.632 3.68 2.144 7.872 2.144 4.384 0 8.128-2.144 3.616-2.080 5.728-5.632 2.176-3.648 2.176-7.872 0-4.384-2.176-8.128-2.112-3.616-5.728-5.728-3.744-2.176-8.128-2.176zM15.136 8.672h1.728q0.128 0 0.224 0.096t0.096 0.256l-0.384 10.24q0 0.064-0.048 0.112t-0.112 0.048h-1.248q-0.096 0-0.144-0.048t-0.048-0.112l-0.384-10.24q0-0.16 0.096-0.256t0.224-0.096zM16 23.328q-0.48 0-0.832-0.352t-0.352-0.848 0.352-0.848 0.832-0.352 0.832 0.352 0.352 0.848-0.352 0.848-0.832 0.352z'
export function createSvgIconVNode(
path: string,
......
export * from './util'
export * from './icon'
export * from './getRealRoute'
......@@ -414,119 +414,6 @@ uni-checkbox-group[hidden] {
uni-icon {
display: inline-block;
font-size: 0;
box-sizing: border-box;
}
uni-icon[hidden] {
display: none;
}
uni-icon > i {
font: normal normal normal 14px/1 'weui';
}
uni-icon > i:before {
margin: 0;
box-sizing: border-box;
}
@font-face {
font-weight: normal;
font-style: normal;
font-family: 'weui';
src: url('data:application/octet-stream;base64,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')
format('truetype');
}
.uni-icon-success:before {
content: '\EA06';
}
.uni-icon-success_circle:before {
content: '\EA07';
}
.uni-icon-success_no_circle:before {
content: '\EA08';
}
.uni-icon-safe_success:before {
content: '\EA04';
}
.uni-icon-safe_warn:before {
content: '\EA05';
}
.uni-icon-info:before {
content: '\EA03';
}
.uni-icon-info_circle:before {
content: '\EA0C';
}
.uni-icon-warn:before {
content: '\EA0B';
}
.uni-icon-waiting:before {
content: '\EA09';
}
.uni-icon-waiting_circle:before {
content: '\EA0A';
}
.uni-icon-circle:before {
content: '\EA01';
}
.uni-icon-cancel:before {
content: '\EA0D';
}
.uni-icon-download:before {
content: '\EA02';
}
.uni-icon-search:before {
content: '\EA0E';
}
.uni-icon-clear:before {
content: '\EA0F';
}
.uni-icon-success {
color: #007aff;
}
.uni-icon-success_circle {
color: #007aff;
}
.uni-icon-success_no_circle {
color: #007aff;
}
.uni-icon-safe_success {
color: #007aff;
}
.uni-icon-safe_warn {
color: #ffbe00;
}
.uni-icon-info {
color: #10aeff;
}
.uni-icon-info_circle {
color: #007aff;
}
.uni-icon-warn {
color: #f76260;
}
.uni-icon-waiting {
color: #10aeff;
}
.uni-icon-waiting_circle {
color: #10aeff;
}
.uni-icon-circle {
color: #c9c9c9;
}
.uni-icon-cancel {
color: #f43530;
}
.uni-icon-download {
color: #007aff;
}
.uni-icon-search {
color: #b2b2b2;
}
.uni-icon-clear {
color: #b2b2b2;
}
uni-image {
width: 320px;
height: 240px;
......
此差异已折叠。
import { computed, defineComponent, Ref, ref } from 'vue'
import { isArray } from '@vue/shared'
import {
Input,
ICON_PATH_SEARCH,
createSvgIconVNode,
} from '@dcloudio/uni-components'
import { Input } from '@dcloudio/uni-components'
import { ICON_PATH_SEARCH, createSvgIconVNode } from '@dcloudio/uni-core'
import { usePageMeta } from '../../plugin/provide'
import {
usePageHeadTransparent,
......
uni-icon {
display: inline-block;
font-size: 0;
box-sizing: border-box;
}
uni-icon[hidden] {
display: none;
}
......@@ -7,7 +7,8 @@ var shared = require('@vue/shared');
const NAVBAR_HEIGHT = 44;
const TABBAR_HEIGHT = 50;
const RESPONSIVE_MIN_WIDTH = 768;
const COMPONENT_NAME_PREFIX = 'VUni';
const COMPONENT_NAME_PREFIX = 'VUni';
const PRIMARY_COLOR = '#007aff';
function debounce(fn, delay) {
let timeout;
......@@ -130,6 +131,7 @@ exports.BUILT_IN_TAGS = BUILT_IN_TAGS;
exports.COMPONENT_NAME_PREFIX = COMPONENT_NAME_PREFIX;
exports.COMPONENT_PREFIX = COMPONENT_PREFIX;
exports.NAVBAR_HEIGHT = NAVBAR_HEIGHT;
exports.PRIMARY_COLOR = PRIMARY_COLOR;
exports.RESPONSIVE_MIN_WIDTH = RESPONSIVE_MIN_WIDTH;
exports.TABBAR_HEIGHT = TABBAR_HEIGHT;
exports.TAGS = TAGS;
......
......@@ -20,6 +20,8 @@ export declare const NAVBAR_HEIGHT = 44;
export declare function plusReady(callback: () => void): void;
export declare const PRIMARY_COLOR = "#007aff";
export declare const RESPONSIVE_MIN_WIDTH = 768;
export declare function stringifyQuery(obj?: Record<string, any>, encodeStr?: typeof encodeURIComponent): string;
......
......@@ -3,7 +3,8 @@ import { isPlainObject, isHTMLTag, isSVGTag } from '@vue/shared';
const NAVBAR_HEIGHT = 44;
const TABBAR_HEIGHT = 50;
const RESPONSIVE_MIN_WIDTH = 768;
const COMPONENT_NAME_PREFIX = 'VUni';
const COMPONENT_NAME_PREFIX = 'VUni';
const PRIMARY_COLOR = '#007aff';
function debounce(fn, delay) {
let timeout;
......@@ -122,4 +123,4 @@ function isNativeTag(tag) {
}
const COMPONENT_PREFIX = 'v-uni-';
export { BUILT_IN_TAGS, COMPONENT_NAME_PREFIX, COMPONENT_PREFIX, NAVBAR_HEIGHT, RESPONSIVE_MIN_WIDTH, TABBAR_HEIGHT, TAGS, debounce, isBuiltInComponent, isCustomElement, isNativeTag, plusReady, stringifyQuery };
export { BUILT_IN_TAGS, COMPONENT_NAME_PREFIX, COMPONENT_PREFIX, NAVBAR_HEIGHT, PRIMARY_COLOR, RESPONSIVE_MIN_WIDTH, TABBAR_HEIGHT, TAGS, debounce, isBuiltInComponent, isCustomElement, isNativeTag, plusReady, stringifyQuery };
......@@ -3,3 +3,5 @@ export const TABBAR_HEIGHT = 50
export const RESPONSIVE_MIN_WIDTH = 768
export const COMPONENT_NAME_PREFIX = 'VUni'
export const PRIMARY_COLOR = '#007aff'
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册