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
561ec67b
Commit
561ec67b
authored
Dec 04, 2019
by
Junling Bu
Browse files
feat[litemall-wx]: 采用vant-weapp tag组件
parent
52c0f60d
Changes
54
Hide whitespace changes
Inline
Side-by-side
litemall-wx/lib/vant-weapp/mixins/link.d.ts
0 → 100644
View file @
561ec67b
export
declare
const
link
:
string
;
litemall-wx/lib/vant-weapp/mixins/link.js
0 → 100644
View file @
561ec67b
export
const
link
=
Behavior
({
properties
:
{
url
:
String
,
linkType
:
{
type
:
String
,
value
:
'
navigateTo
'
}
},
methods
:
{
jumpLink
(
urlKey
=
'
url
'
)
{
const
url
=
this
.
data
[
urlKey
];
if
(
url
)
{
wx
[
this
.
data
.
linkType
]({
url
});
}
}
}
});
litemall-wx/lib/vant-weapp/mixins/observer/behavior.d.ts
0 → 100644
View file @
561ec67b
export
declare
const
behavior
:
string
;
litemall-wx/lib/vant-weapp/mixins/observer/behavior.js
0 → 100644
View file @
561ec67b
export
const
behavior
=
Behavior
({
methods
:
{
set
(
data
,
callback
)
{
return
new
Promise
(
resolve
=>
{
this
.
setData
(
data
,
()
=>
{
if
(
callback
&&
typeof
callback
===
'
function
'
)
{
callback
.
call
(
this
);
}
resolve
();
});
});
}
}
});
litemall-wx/lib/vant-weapp/mixins/observer/index.d.ts
0 → 100644
View file @
561ec67b
export
declare
function
observe
(
vantOptions
:
any
,
options
:
any
):
void
;
litemall-wx/lib/vant-weapp/mixins/observer/index.js
0 → 100644
View file @
561ec67b
import
{
behavior
}
from
'
./behavior
'
;
export
function
observe
(
vantOptions
,
options
)
{
const
{
watch
}
=
vantOptions
;
options
.
behaviors
.
push
(
behavior
);
if
(
watch
)
{
const
props
=
options
.
properties
||
{};
Object
.
keys
(
watch
).
forEach
(
key
=>
{
if
(
key
in
props
)
{
let
prop
=
props
[
key
];
if
(
prop
===
null
||
!
(
'
type
'
in
prop
))
{
prop
=
{
type
:
prop
};
}
prop
.
observer
=
watch
[
key
];
props
[
key
]
=
prop
;
}
});
options
.
properties
=
props
;
}
}
litemall-wx/lib/vant-weapp/mixins/open-type.d.ts
0 → 100644
View file @
561ec67b
export
declare
const
openType
:
string
;
litemall-wx/lib/vant-weapp/mixins/open-type.js
0 → 100644
View file @
561ec67b
export
const
openType
=
Behavior
({
properties
:
{
openType
:
String
},
methods
:
{
bindGetUserInfo
(
event
)
{
this
.
$emit
(
'
getuserinfo
'
,
event
.
detail
);
},
bindContact
(
event
)
{
this
.
$emit
(
'
contact
'
,
event
.
detail
);
},
bindGetPhoneNumber
(
event
)
{
this
.
$emit
(
'
getphonenumber
'
,
event
.
detail
);
},
bindError
(
event
)
{
this
.
$emit
(
'
error
'
,
event
.
detail
);
},
bindLaunchApp
(
event
)
{
this
.
$emit
(
'
launchapp
'
,
event
.
detail
);
},
bindOpenSetting
(
event
)
{
this
.
$emit
(
'
opensetting
'
,
event
.
detail
);
},
}
});
litemall-wx/lib/vant-weapp/mixins/touch.d.ts
0 → 100644
View file @
561ec67b
export
declare
const
touch
:
string
;
litemall-wx/lib/vant-weapp/mixins/touch.js
0 → 100644
View file @
561ec67b
const
MIN_DISTANCE
=
10
;
function
getDirection
(
x
,
y
)
{
if
(
x
>
y
&&
x
>
MIN_DISTANCE
)
{
return
'
horizontal
'
;
}
if
(
y
>
x
&&
y
>
MIN_DISTANCE
)
{
return
'
vertical
'
;
}
return
''
;
}
export
const
touch
=
Behavior
({
methods
:
{
resetTouchStatus
()
{
this
.
direction
=
''
;
this
.
deltaX
=
0
;
this
.
deltaY
=
0
;
this
.
offsetX
=
0
;
this
.
offsetY
=
0
;
},
touchStart
(
event
)
{
this
.
resetTouchStatus
();
const
touch
=
event
.
touches
[
0
];
this
.
startX
=
touch
.
clientX
;
this
.
startY
=
touch
.
clientY
;
},
touchMove
(
event
)
{
const
touch
=
event
.
touches
[
0
];
this
.
deltaX
=
touch
.
clientX
-
this
.
startX
;
this
.
deltaY
=
touch
.
clientY
-
this
.
startY
;
this
.
offsetX
=
Math
.
abs
(
this
.
deltaX
);
this
.
offsetY
=
Math
.
abs
(
this
.
deltaY
);
this
.
direction
=
this
.
direction
||
getDirection
(
this
.
offsetX
,
this
.
offsetY
);
}
}
});
litemall-wx/lib/vant-weapp/mixins/transition.d.ts
0 → 100644
View file @
561ec67b
export
declare
const
transition
:
(
showDefaultValue
:
boolean
)
=>
any
;
litemall-wx/lib/vant-weapp/mixins/transition.js
0 → 100644
View file @
561ec67b
import
{
isObj
}
from
'
../common/utils
'
;
const
getClassNames
=
(
name
)
=>
({
enter
:
`van-
${
name
}
-enter van-
${
name
}
-enter-active enter-class enter-active-class`
,
'
enter-to
'
:
`van-
${
name
}
-enter-to van-
${
name
}
-enter-active enter-to-class enter-active-class`
,
leave
:
`van-
${
name
}
-leave van-
${
name
}
-leave-active leave-class leave-active-class`
,
'
leave-to
'
:
`van-
${
name
}
-leave-to van-
${
name
}
-leave-active leave-to-class leave-active-class`
});
const
nextTick
=
()
=>
new
Promise
(
resolve
=>
setTimeout
(
resolve
,
1000
/
30
));
export
const
transition
=
function
(
showDefaultValue
)
{
return
Behavior
({
properties
:
{
customStyle
:
String
,
// @ts-ignore
show
:
{
type
:
Boolean
,
value
:
showDefaultValue
,
observer
:
'
observeShow
'
},
// @ts-ignore
duration
:
{
type
:
null
,
value
:
300
,
observer
:
'
observeDuration
'
},
name
:
{
type
:
String
,
value
:
'
fade
'
}
},
data
:
{
type
:
''
,
inited
:
false
,
display
:
false
},
attached
()
{
if
(
this
.
data
.
show
)
{
this
.
enter
();
}
},
methods
:
{
observeShow
(
value
)
{
value
?
this
.
enter
()
:
this
.
leave
();
},
enter
()
{
const
{
duration
,
name
}
=
this
.
data
;
const
classNames
=
getClassNames
(
name
);
const
currentDuration
=
isObj
(
duration
)
?
duration
.
enter
:
duration
;
this
.
status
=
'
enter
'
;
this
.
$emit
(
'
before-enter
'
);
Promise
.
resolve
()
.
then
(
nextTick
)
.
then
(()
=>
{
this
.
checkStatus
(
'
enter
'
);
this
.
$emit
(
'
enter
'
);
this
.
setData
({
inited
:
true
,
display
:
true
,
classes
:
classNames
.
enter
,
currentDuration
});
})
.
then
(
nextTick
)
.
then
(()
=>
{
this
.
checkStatus
(
'
enter
'
);
this
.
transitionEnded
=
false
;
this
.
setData
({
classes
:
classNames
[
'
enter-to
'
]
});
})
.
catch
(()
=>
{
});
},
leave
()
{
if
(
!
this
.
data
.
display
)
{
return
;
}
const
{
duration
,
name
}
=
this
.
data
;
const
classNames
=
getClassNames
(
name
);
const
currentDuration
=
isObj
(
duration
)
?
duration
.
leave
:
duration
;
this
.
status
=
'
leave
'
;
this
.
$emit
(
'
before-leave
'
);
Promise
.
resolve
()
.
then
(
nextTick
)
.
then
(()
=>
{
this
.
checkStatus
(
'
leave
'
);
this
.
$emit
(
'
leave
'
);
this
.
setData
({
classes
:
classNames
.
leave
,
currentDuration
});
})
.
then
(
nextTick
)
.
then
(()
=>
{
this
.
checkStatus
(
'
leave
'
);
this
.
transitionEnded
=
false
;
setTimeout
(()
=>
this
.
onTransitionEnd
(),
currentDuration
);
this
.
setData
({
classes
:
classNames
[
'
leave-to
'
]
});
})
.
catch
(()
=>
{
});
},
checkStatus
(
status
)
{
if
(
status
!==
this
.
status
)
{
throw
new
Error
(
`incongruent status:
${
status
}
`
);
}
},
onTransitionEnd
()
{
if
(
this
.
transitionEnded
)
{
return
;
}
this
.
transitionEnded
=
true
;
this
.
$emit
(
`after-
${
this
.
status
}
`
);
const
{
show
,
display
}
=
this
.
data
;
if
(
!
show
&&
display
)
{
this
.
setData
({
display
:
false
});
}
}
}
});
};
litemall-wx/lib/vant-weapp/tag/index.d.ts
0 → 100644
View file @
561ec67b
export
{};
litemall-wx/lib/vant-weapp/tag/index.js
0 → 100644
View file @
561ec67b
import
{
VantComponent
}
from
'
../common/component
'
;
VantComponent
({
props
:
{
size
:
String
,
mark
:
Boolean
,
color
:
String
,
plain
:
Boolean
,
round
:
Boolean
,
textColor
:
String
,
type
:
{
type
:
String
,
value
:
'
default
'
},
closeable
:
Boolean
},
methods
:
{
onClose
()
{
this
.
$emit
(
'
close
'
);
}
}
});
litemall-wx/lib/
z
an
ui
-weapp/
capsule
/index.json
→
litemall-wx/lib/
v
an
t
-weapp/
tag
/index.json
View file @
561ec67b
{
"component"
:
true
}
}
\ No newline at end of file
litemall-wx/lib/vant-weapp/tag/index.wxml
0 → 100644
View file @
561ec67b
<wxs src="../wxs/utils.wxs" module="utils" />
<view
class="custom-class {{ utils.bem('tag', [type, size, { mark, plain, round }]) }} {{ plain ? 'van-hairline--surround' : '' }}"
style="{{ color && !plain ? 'background-color: ' + color + ';' : '' }}{{ textColor || (color && plain) ? 'color: ' + (textColor || color) : '' }}"
>
<slot />
<van-icon
wx:if="{{ closeable }}"
name="cross"
custom-class="van-tag__close"
bind:click="onClose"
/>
</view>
litemall-wx/lib/vant-weapp/tag/index.wxss
0 → 100644
View file @
561ec67b
@import '../common/index.wxss';.van-tag{display:-webkit-inline-flex;display:inline-flex;-webkit-align-items:center;align-items:center;line-height:normal;padding:.2em .5em;padding:var(--tag-padding,.2em .5em);color:#fff;color:var(--tag-text-color,#fff);font-size:10px;font-size:var(--tag-font-size,10px);border-radius:.2em;border-radius:var(--tag-border-radius,.2em)}.van-tag:after{border-color:currentColor;border-radius:.2em * 2;border-radius:var(--tag-border-radius,.2em) * 2}.van-tag--default{background-color:#969799;background-color:var(--tag-default-color,#969799)}.van-tag--default.van-tag--plain{color:#969799;color:var(--tag-default-color,#969799)}.van-tag--danger{background-color:#ee0a24;background-color:var(--tag-dander-color,#ee0a24)}.van-tag--danger.van-tag--plain{color:#ee0a24;color:var(--tag-dander-color,#ee0a24)}.van-tag--primary{background-color:#1989fa;background-color:var(--tag-primary-color,#1989fa)}.van-tag--primary.van-tag--plain{color:#1989fa;color:var(--tag-primary-color,#1989fa)}.van-tag--success{background-color:#07c160;background-color:var(--tag-success-color,#07c160)}.van-tag--success.van-tag--plain{color:#07c160;color:var(--tag-success-color,#07c160)}.van-tag--warning{background-color:#ff976a;background-color:var(--tag-warning-color,#ff976a)}.van-tag--warning.van-tag--plain{color:#ff976a;color:var(--tag-warning-color,#ff976a)}.van-tag--plain{background-color:#fff;background-color:var(--tag-plain-background-color,#fff)}.van-tag--mark{padding-right:.7em}.van-tag--mark,.van-tag--mark:after{border-radius:0 999px 999px 0;border-radius:0 var(--tag-round-border-radius,999px) var(--tag-round-border-radius,999px) 0}.van-tag--round,.van-tag--round:after{border-radius:999px;border-radius:var(--tag-round-border-radius,999px)}.van-tag--medium{font-size:12px;font-size:var(--tag-medium-font-size,12px)}.van-tag--large{font-size:14px;font-size:var(--tag-large-font-size,14px)}.van-tag__close{margin-left:2px}
\ No newline at end of file
litemall-wx/lib/vant-weapp/wxs/array.wxs
0 → 100644
View file @
561ec67b
function isArray(array) {
return array && array.constructor === 'Array';
}
module.exports.isArray = isArray;
litemall-wx/lib/vant-weapp/wxs/bem.wxs
0 → 100644
View file @
561ec67b
var array = require('./array.wxs');
var object = require('./object.wxs');
var PREFIX = 'van-';
function join(name, mods) {
name = PREFIX + name;
mods = mods.map(function(mod) {
return name + '--' + mod;
});
mods.unshift(name);
return mods.join(' ');
}
function traversing(mods, conf) {
if (!conf) {
return;
}
if (typeof conf === 'string' || typeof conf === 'number') {
mods.push(conf);
} else if (array.isArray(conf)) {
conf.forEach(function(item) {
traversing(mods, item);
});
} else if (typeof conf === 'object') {
object.keys(conf).forEach(function(key) {
conf[key] && mods.push(key);
});
}
}
function bem(name, conf) {
var mods = [];
traversing(mods, conf);
return join(name, mods);
}
module.exports.bem = bem;
litemall-wx/lib/vant-weapp/wxs/memoize.wxs
0 → 100644
View file @
561ec67b
/**
* Simple memoize
* wxs doesn't support fn.apply, so this memoize only support up to 2 args
*/
function isPrimitive(value) {
var type = typeof value;
return (
type === 'boolean' ||
type === 'number' ||
type === 'string' ||
type === 'undefined' ||
value === null
);
}
// mock simple fn.call in wxs
function call(fn, args) {
if (args.length === 2) {
return fn(args[0], args[1]);
}
if (args.length === 1) {
return fn(args[0]);
}
return fn();
}
function serializer(args) {
if (args.length === 1 && isPrimitive(args[0])) {
return args[0];
}
var obj = {};
for (var i = 0; i < args.length; i++) {
obj['key' + i] = args[i];
}
return JSON.stringify(obj);
}
function memoize(fn) {
var cache = {};
return function() {
var key = serializer(arguments);
if (cache[key] === undefined) {
cache[key] = call(fn, arguments);
}
return cache[key];
};
}
module.exports.memoize = memoize;
Prev
1
2
3
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