Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Litemall
Commits
b1af78f9
Commit
b1af78f9
authored
Dec 14, 2019
by
Junling Bu
Browse files
chore[litemall-wx]: 使用vant-weapp 1.0
parent
07351378
Changes
311
Show whitespace changes
Inline
Side-by-side
litemall-wx/lib/vant-weapp/cell/index.d.ts
0 → 100644
View file @
b1af78f9
export
{};
litemall-wx/lib/vant-weapp/cell/index.js
0 → 100644
View file @
b1af78f9
import
{
link
}
from
'
../mixins/link
'
;
import
{
VantComponent
}
from
'
../common/component
'
;
VantComponent
({
classes
:
[
'
title-class
'
,
'
label-class
'
,
'
value-class
'
,
'
right-icon-class
'
,
'
hover-class
'
],
mixins
:
[
link
],
props
:
{
title
:
null
,
value
:
null
,
icon
:
String
,
size
:
String
,
label
:
String
,
center
:
Boolean
,
isLink
:
Boolean
,
required
:
Boolean
,
clickable
:
Boolean
,
titleWidth
:
String
,
customStyle
:
String
,
arrowDirection
:
String
,
useLabelSlot
:
Boolean
,
border
:
{
type
:
Boolean
,
value
:
true
}
},
methods
:
{
onClick
(
event
)
{
this
.
$emit
(
'
click
'
,
event
.
detail
);
this
.
jumpLink
();
}
}
});
litemall-wx/lib/vant-weapp/cell/index.json
0 → 100644
View file @
b1af78f9
{
"component"
:
true
,
"usingComponents"
:
{
"van-icon"
:
"../icon/index"
}
}
\ No newline at end of file
litemall-wx/lib/vant-weapp/cell/index.wxml
0 → 100644
View file @
b1af78f9
<wxs src="../wxs/utils.wxs" module="utils" />
<view
class="custom-class {{ utils.bem('cell', [size, { center, required, borderless: !border, clickable: isLink || clickable }]) }}"
hover-class="van-cell--hover hover-class"
hover-stay-time="70"
style="{{ customStyle }}"
bind:tap="onClick"
>
<van-icon
wx:if="{{ icon }}"
name="{{ icon }}"
class="van-cell__left-icon-wrap"
custom-class="van-cell__left-icon"
/>
<slot wx:else name="icon" />
<view
style="{{ titleWidth ? 'max-width:' + titleWidth + ';min-width:' + titleWidth : '' }}"
class="van-cell__title title-class"
>
<block wx:if="{{ title }}">{{ title }}</block>
<slot wx:else name="title" />
<view wx:if="{{ label || useLabelSlot }}" class="van-cell__label label-class">
<slot wx:if="{{ useLabelSlot }}" name="label" />
<block wx:elif="{{ label }}">{{ label }}</block>
</view>
</view>
<view class="van-cell__value value-class">
<block wx:if="{{ value || value === 0 }}">{{ value }}</block>
<slot wx:else />
</view>
<van-icon
wx:if="{{ isLink }}"
name="{{ arrowDirection ? 'arrow' + '-' + arrowDirection : 'arrow' }}"
class="van-cell__right-icon-wrap right-icon-class"
custom-class="van-cell__right-icon"
/>
<slot wx:else name="right-icon" />
<slot name="extra" />
</view>
litemall-wx/lib/vant-weapp/cell/index.wxss
0 → 100644
View file @
b1af78f9
@import '../common/index.wxss';.van-cell{position:relative;display:-webkit-flex;display:flex;box-sizing:border-box;width:100%;padding:10px 16px;padding:var(--cell-vertical-padding,10px) var(--cell-horizontal-padding,16px);font-size:14px;font-size:var(--cell-font-size,14px);line-height:24px;line-height:var(--cell-line-height,24px);color:#323233;color:var(--cell-text-color,#323233);background-color:#fff;background-color:var(--cell-background-color,#fff)}.van-cell:after{position:absolute;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;content:" ";pointer-events:none;top:auto;right:0;bottom:0;left:16px;border-bottom:1px solid #ebedf0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.van-cell--borderless:after{display:none}.van-cell-group{background-color:#fff;background-color:var(--cell-background-color,#fff)}.van-cell__label{margin-top:3px;margin-top:var(--cell-label-margin-top,3px);font-size:12px;font-size:var(--cell-label-font-size,12px);line-height:18px;line-height:var(--cell-label-line-height,18px);color:#969799;color:var(--cell-label-color,#969799)}.van-cell__value{overflow:hidden;text-align:right;vertical-align:middle;color:#969799;color:var(--cell-value-color,#969799)}.van-cell__title,.van-cell__value{-webkit-flex:1;flex:1}.van-cell__title:empty,.van-cell__value:empty{display:none}.van-cell__left-icon-wrap,.van-cell__right-icon-wrap{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;height:24px;height:var(--cell-line-height,24px);font-size:16px;font-size:var(--cell-icon-size,16px)}.van-cell__left-icon-wrap{margin-right:5px}.van-cell__right-icon-wrap{margin-left:5px;color:#969799;color:var(--cell-right-icon-color,#969799)}.van-cell__left-icon{vertical-align:middle}.van-cell__left-icon,.van-cell__right-icon{line-height:24px;line-height:var(--cell-line-height,24px)}.van-cell--clickable.van-cell--hover{background-color:#f2f3f5;background-color:var(--cell-active-color,#f2f3f5)}.van-cell--required{overflow:visible}.van-cell--required:before{position:absolute;content:"*";left:8px;left:var(--padding-xs,8px);font-size:14px;font-size:var(--cell-font-size,14px);color:#ee0a24;color:var(--cell-required-color,#ee0a24)}.van-cell--center{-webkit-align-items:center;align-items:center}.van-cell--large{padding-top:12px;padding-top:var(--cell-large-vertical-padding,12px);padding-bottom:12px;padding-bottom:var(--cell-large-vertical-padding,12px)}.van-cell--large .van-cell__title{font-size:16px;font-size:var(--cell-large-title-font-size,16px)}.van-cell--large .van-cell__label{font-size:14px;font-size:var(--cell-large-label-font-size,14px)}
\ No newline at end of file
litemall-wx/lib/vant-weapp/checkbox-group/index.d.ts
0 → 100644
View file @
b1af78f9
export
{};
litemall-wx/lib/vant-weapp/checkbox-group/index.js
0 → 100644
View file @
b1af78f9
import
{
VantComponent
}
from
'
../common/component
'
;
VantComponent
({
field
:
true
,
relation
:
{
name
:
'
checkbox
'
,
type
:
'
descendant
'
,
linked
(
target
)
{
this
.
children
=
this
.
children
||
[];
this
.
children
.
push
(
target
);
this
.
updateChild
(
target
);
},
unlinked
(
target
)
{
this
.
children
=
this
.
children
.
filter
((
child
)
=>
child
!==
target
);
}
},
props
:
{
max
:
Number
,
value
:
{
type
:
Array
,
observer
:
'
updateChildren
'
},
disabled
:
{
type
:
Boolean
,
observer
:
'
updateChildren
'
}
},
methods
:
{
updateChildren
()
{
(
this
.
children
||
[]).
forEach
((
child
)
=>
this
.
updateChild
(
child
));
},
updateChild
(
child
)
{
const
{
value
,
disabled
}
=
this
.
data
;
child
.
setData
({
value
:
value
.
indexOf
(
child
.
data
.
name
)
!==
-
1
,
disabled
:
disabled
||
child
.
data
.
disabled
});
}
}
});
litemall-wx/lib/vant-weapp/checkbox-group/index.json
0 → 100644
View file @
b1af78f9
{
"component"
:
true
}
litemall-wx/lib/vant-weapp/checkbox-group/index.wxml
0 → 100644
View file @
b1af78f9
<slot />
litemall-wx/lib/vant-weapp/checkbox-group/index.wxss
0 → 100644
View file @
b1af78f9
@import '../common/index.wxss';
\ No newline at end of file
litemall-wx/lib/vant-weapp/checkbox/index.d.ts
0 → 100644
View file @
b1af78f9
export
{};
litemall-wx/lib/vant-weapp/checkbox/index.js
0 → 100644
View file @
b1af78f9
import
{
VantComponent
}
from
'
../common/component
'
;
import
{
addUnit
}
from
'
../common/utils
'
;
function
emit
(
target
,
value
)
{
target
.
$emit
(
'
input
'
,
value
);
target
.
$emit
(
'
change
'
,
value
);
}
VantComponent
({
field
:
true
,
relation
:
{
name
:
'
checkbox-group
'
,
type
:
'
ancestor
'
,
linked
(
target
)
{
this
.
parent
=
target
;
},
unlinked
()
{
this
.
parent
=
null
;
}
},
classes
:
[
'
icon-class
'
,
'
label-class
'
],
props
:
{
value
:
Boolean
,
disabled
:
Boolean
,
useIconSlot
:
Boolean
,
checkedColor
:
String
,
labelPosition
:
String
,
labelDisabled
:
Boolean
,
shape
:
{
type
:
String
,
value
:
'
round
'
},
iconSize
:
{
type
:
null
,
observer
:
'
setSizeWithUnit
'
}
},
data
:
{
sizeWithUnit
:
'
20px
'
},
methods
:
{
emitChange
(
value
)
{
if
(
this
.
parent
)
{
this
.
setParentValue
(
this
.
parent
,
value
);
}
else
{
emit
(
this
,
value
);
}
},
toggle
()
{
const
{
disabled
,
value
}
=
this
.
data
;
if
(
!
disabled
)
{
this
.
emitChange
(
!
value
);
}
},
onClickLabel
()
{
const
{
labelDisabled
,
disabled
,
value
}
=
this
.
data
;
if
(
!
disabled
&&
!
labelDisabled
)
{
this
.
emitChange
(
!
value
);
}
},
setParentValue
(
parent
,
value
)
{
const
parentValue
=
parent
.
data
.
value
.
slice
();
const
{
name
}
=
this
.
data
;
const
{
max
}
=
parent
.
data
;
if
(
value
)
{
if
(
max
&&
parentValue
.
length
>=
max
)
{
return
;
}
if
(
parentValue
.
indexOf
(
name
)
===
-
1
)
{
parentValue
.
push
(
name
);
emit
(
parent
,
parentValue
);
}
}
else
{
const
index
=
parentValue
.
indexOf
(
name
);
if
(
index
!==
-
1
)
{
parentValue
.
splice
(
index
,
1
);
emit
(
parent
,
parentValue
);
}
}
},
setSizeWithUnit
(
size
)
{
this
.
set
({
sizeWithUnit
:
addUnit
(
size
)
});
},
}
});
litemall-wx/lib/vant-weapp/checkbox/index.json
0 → 100644
View file @
b1af78f9
{
"component"
:
true
,
"usingComponents"
:
{
"van-icon"
:
"../icon/index"
}
}
litemall-wx/lib/vant-weapp/checkbox/index.wxml
0 → 100644
View file @
b1af78f9
<wxs src="../wxs/utils.wxs" module="utils" />
<view class="van-checkbox custom-class">
<view class="van-checkbox__icon-wrap" bindtap="toggle">
<slot wx:if="{{ useIconSlot }}" name="icon" />
<van-icon
wx:else
name="success"
size="0.8em"
class="{{ utils.bem('checkbox__icon', [shape, { disabled, checked: value }]) }}"
style="font-size: {{ sizeWithUnit }};{{ checkedColor && value && !disabled ? 'border-color:' + checkedColor + '; background-color:' + checkedColor : '' }}"
custom-class="icon-class"
custom-style="line-height: 1.25em;"
/>
</view>
<view class="label-class {{ utils.bem('checkbox__label', [labelPosition, { disabled }]) }}" bindtap="onClickLabel">
<slot />
</view>
</view>
litemall-wx/lib/vant-weapp/checkbox/index.wxss
0 → 100644
View file @
b1af78f9
@import '../common/index.wxss';.van-checkbox{display:-webkit-flex;display:flex;overflow:hidden;-webkit-user-select:none;user-select:none}.van-checkbox__icon-wrap,.van-checkbox__label{line-height:20px;line-height:var(--checkbox-size,20px)}.van-checkbox__icon-wrap{-webkit-flex:none;flex:none}.van-checkbox__icon{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;width:1em;height:1em;color:transparent;text-align:center;transition-property:color,border-color,background-color;font-size:20px;font-size:var(--checkbox-size,20px);border:1px solid #c8c9cc;border:1px solid var(--checkbox-border-color,#c8c9cc);transition-duration:.2s;transition-duration:var(--checkbox-transition-duration,.2s)}.van-checkbox__icon--round{border-radius:100%}.van-checkbox__icon--checked{color:#fff;color:var(--white,#fff);background-color:#1989fa;background-color:var(--checkbox-checked-icon-color,#1989fa);border-color:#1989fa;border-color:var(--checkbox-checked-icon-color,#1989fa)}.van-checkbox__icon--disabled{background-color:#ebedf0;background-color:var(--checkbox-disabled-background-color,#ebedf0);border-color:#c8c9cc;border-color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__icon--disabled.van-checkbox__icon--checked{color:#c8c9cc;color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__label{word-wrap:break-word;margin-left:10px;margin-left:var(--checkbox-label-margin,10px);color:#323233;color:var(--checkbox-label-color,#323233)}.van-checkbox__label--left{float:left;margin:0 10px 0 0;margin:0 var(--checkbox-label-margin,10px) 0 0}.van-checkbox__label--disabled{color:#c8c9cc;color:var(--checkbox-disabled-label-color,#c8c9cc)}.van-checkbox__label:empty{margin:0}
\ No newline at end of file
litemall-wx/lib/vant-weapp/circle/index.d.ts
0 → 100644
View file @
b1af78f9
export
{};
litemall-wx/lib/vant-weapp/circle/index.js
0 → 100644
View file @
b1af78f9
import
{
VantComponent
}
from
'
../common/component
'
;
import
{
isObj
}
from
'
../common/utils
'
;
import
{
BLUE
,
WHITE
}
from
'
../common/color
'
;
function
format
(
rate
)
{
return
Math
.
min
(
Math
.
max
(
rate
,
0
),
100
);
}
const
PERIMETER
=
2
*
Math
.
PI
;
const
BEGIN_ANGLE
=
-
Math
.
PI
/
2
;
const
STEP
=
1
;
VantComponent
({
props
:
{
text
:
String
,
lineCap
:
{
type
:
String
,
value
:
'
round
'
},
value
:
{
type
:
Number
,
value
:
0
,
observer
:
'
reRender
'
},
speed
:
{
type
:
Number
,
value
:
50
},
size
:
{
type
:
Number
,
value
:
100
,
observer
:
'
setStyle
'
},
fill
:
String
,
layerColor
:
{
type
:
String
,
value
:
WHITE
},
color
:
{
type
:
[
String
,
Object
],
value
:
BLUE
,
observer
:
'
setHoverColor
'
},
strokeWidth
:
{
type
:
Number
,
value
:
4
},
clockwise
:
{
type
:
Boolean
,
value
:
true
}
},
data
:
{
style
:
'
width: 100px; height: 100px;
'
,
hoverColor
:
BLUE
},
methods
:
{
getContext
()
{
if
(
!
this
.
ctx
)
{
this
.
ctx
=
wx
.
createCanvasContext
(
'
van-circle
'
,
this
);
}
return
this
.
ctx
;
},
setHoverColor
()
{
const
context
=
this
.
getContext
();
const
{
color
,
size
}
=
this
.
data
;
let
hoverColor
=
color
;
if
(
isObj
(
color
))
{
const
LinearColor
=
context
.
createLinearGradient
(
size
,
0
,
0
,
0
);
Object
.
keys
(
color
)
.
sort
((
a
,
b
)
=>
parseFloat
(
a
)
-
parseFloat
(
b
))
.
map
(
key
=>
LinearColor
.
addColorStop
(
parseFloat
(
key
)
/
100
,
color
[
key
]));
hoverColor
=
LinearColor
;
}
this
.
setData
({
hoverColor
});
},
setStyle
()
{
const
{
size
}
=
this
.
data
;
const
style
=
`width:
${
size
}
px; height:
${
size
}
px;`
;
this
.
setData
({
style
});
},
presetCanvas
(
context
,
strokeStyle
,
beginAngle
,
endAngle
,
fill
)
{
const
{
strokeWidth
,
lineCap
,
clockwise
,
size
}
=
this
.
data
;
const
position
=
size
/
2
;
const
radius
=
position
-
strokeWidth
/
2
;
context
.
setStrokeStyle
(
strokeStyle
);
context
.
setLineWidth
(
strokeWidth
);
context
.
setLineCap
(
lineCap
);
context
.
beginPath
();
context
.
arc
(
position
,
position
,
radius
,
beginAngle
,
endAngle
,
!
clockwise
);
context
.
stroke
();
if
(
fill
)
{
context
.
setFillStyle
(
fill
);
context
.
fill
();
}
},
renderLayerCircle
(
context
)
{
const
{
layerColor
,
fill
}
=
this
.
data
;
this
.
presetCanvas
(
context
,
layerColor
,
0
,
PERIMETER
,
fill
);
},
renderHoverCircle
(
context
,
formatValue
)
{
const
{
clockwise
,
hoverColor
}
=
this
.
data
;
// 结束角度
const
progress
=
PERIMETER
*
(
formatValue
/
100
);
const
endAngle
=
clockwise
?
BEGIN_ANGLE
+
progress
:
3
*
Math
.
PI
-
(
BEGIN_ANGLE
+
progress
);
this
.
presetCanvas
(
context
,
hoverColor
,
BEGIN_ANGLE
,
endAngle
);
},
drawCircle
(
currentValue
)
{
const
context
=
this
.
getContext
();
const
{
size
}
=
this
.
data
;
context
.
clearRect
(
0
,
0
,
size
,
size
);
this
.
renderLayerCircle
(
context
);
const
formatValue
=
format
(
currentValue
);
if
(
formatValue
!==
0
)
{
this
.
renderHoverCircle
(
context
,
formatValue
);
}
context
.
draw
();
},
reRender
()
{
// tofector 动画暂时没有想到好的解决方案
const
{
value
,
speed
}
=
this
.
data
;
if
(
speed
<=
0
||
speed
>
1000
)
{
this
.
drawCircle
(
value
);
return
;
}
this
.
clearInterval
();
this
.
currentValue
=
this
.
currentValue
||
0
;
this
.
interval
=
setInterval
(()
=>
{
if
(
this
.
currentValue
!==
value
)
{
if
(
this
.
currentValue
<
value
)
{
this
.
currentValue
+=
STEP
;
}
else
{
this
.
currentValue
-=
STEP
;
}
this
.
drawCircle
(
this
.
currentValue
);
}
else
{
this
.
clearInterval
();
}
},
1000
/
speed
);
},
clearInterval
()
{
if
(
this
.
interval
)
{
clearInterval
(
this
.
interval
);
this
.
interval
=
null
;
}
}
},
created
()
{
const
{
value
}
=
this
.
data
;
this
.
currentValue
=
value
;
this
.
drawCircle
(
value
);
},
destroyed
()
{
this
.
ctx
=
null
;
this
.
clearInterval
();
}
});
litemall-wx/lib/vant-weapp/circle/index.json
0 → 100644
View file @
b1af78f9
{
"component"
:
true
}
litemall-wx/lib/vant-weapp/circle/index.wxml
0 → 100644
View file @
b1af78f9
<view class="van-circle">
<canvas class="van-circle__canvas" style="{{ style }}" canvas-id="van-circle"></canvas>
<view wx:if="{{ !text }}" class="van-circle__text">
<slot></slot>
</view>
<cover-view wx:else class="van-circle__text">{{ text }}</cover-view>
</view>
\ No newline at end of file
litemall-wx/lib/vant-weapp/circle/index.wxss
0 → 100644
View file @
b1af78f9
@import '../common/index.wxss';.van-circle{position:relative;display:inline-block;text-align:center}.van-circle__text{position:absolute;top:50%;left:0;width:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%);color:#323233;color:var(--circle-text-color,#323233)}
\ No newline at end of file
Prev
1
2
3
4
5
6
…
16
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment