Skip to content

Commit

Permalink
fix(h5): wxs removeClass
Browse files Browse the repository at this point in the history
  • Loading branch information
fxy060608 committed Aug 24, 2019
1 parent 87052e8 commit 2b52666
Show file tree
Hide file tree
Showing 13 changed files with 132 additions and 36 deletions.
19 changes: 16 additions & 3 deletions packages/vue-cli-plugin-uni/packages/h5-vue/dist/vue.common.dev.js
Original file line number Diff line number Diff line change
Expand Up @@ -6795,7 +6795,8 @@ function updateClass (oldVnode, vnode) {
isUndef(oldData.class)
)
) &&
isUndef(el.__wxsClass) // fixed by xxxxxx __wxsClass
isUndef(el.__wxsAddClass) &&
isUndef(el.__wxsRemoveClass) // fixed by xxxxxx __wxsClass
) {
return
}
Expand All @@ -6809,8 +6810,20 @@ function updateClass (oldVnode, vnode) {
}

// fixed by xxxxxx __wxsClass
if(el.__wxsClass){
cls = concat(cls, el.__wxsClass);
if(Array.isArray(el.__wxsRemoveClass) && el.__wxsRemoveClass.length){
var clsArr = cls.split(/\s+/);
el.__wxsRemoveClass.forEach(function (removeCls){
var clsIndex = clsArr.findIndex(function (cls) { return cls === removeCls; });
if (clsIndex !== -1) {
clsArr.splice(clsIndex, 1);
}
});
cls = clsArr.join(' ');
el.__wxsRemoveClass.length = 0;
}

if(el.__wxsAddClass){
cls = concat(cls, el.__wxsAddClass);
}

// set the class
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -6823,7 +6823,8 @@ function updateClass (oldVnode, vnode) {
isUndef(oldData.class)
)
) &&
isUndef(el.__wxsClass) // fixed by xxxxxx __wxsClass
isUndef(el.__wxsAddClass) &&
isUndef(el.__wxsRemoveClass) // fixed by xxxxxx __wxsClass
) {
return
}
Expand All @@ -6837,8 +6838,20 @@ function updateClass (oldVnode, vnode) {
}

// fixed by xxxxxx __wxsClass
if(el.__wxsClass){
cls = concat(cls, el.__wxsClass);
if(Array.isArray(el.__wxsRemoveClass) && el.__wxsRemoveClass.length){
const clsArr = cls.split(/\s+/);
el.__wxsRemoveClass.forEach(removeCls=>{
const clsIndex = clsArr.findIndex(cls => cls === removeCls);
if (clsIndex !== -1) {
clsArr.splice(clsIndex, 1);
}
});
cls = clsArr.join(' ');
el.__wxsRemoveClass.length = 0;
}

if(el.__wxsAddClass){
cls = concat(cls, el.__wxsAddClass);
}

// set the class
Expand Down

Large diffs are not rendered by default.

19 changes: 16 additions & 3 deletions packages/vue-cli-plugin-uni/packages/h5-vue/dist/vue.esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -6817,7 +6817,8 @@ function updateClass (oldVnode, vnode) {
isUndef(oldData.class)
)
) &&
isUndef(el.__wxsClass) // fixed by xxxxxx __wxsClass
isUndef(el.__wxsAddClass) &&
isUndef(el.__wxsRemoveClass) // fixed by xxxxxx __wxsClass
) {
return
}
Expand All @@ -6831,8 +6832,20 @@ function updateClass (oldVnode, vnode) {
}

// fixed by xxxxxx __wxsClass
if(el.__wxsClass){
cls = concat(cls, el.__wxsClass);
if(Array.isArray(el.__wxsRemoveClass) && el.__wxsRemoveClass.length){
var clsArr = cls.split(/\s+/);
el.__wxsRemoveClass.forEach(function (removeCls){
var clsIndex = clsArr.findIndex(function (cls) { return cls === removeCls; });
if (clsIndex !== -1) {
clsArr.splice(clsIndex, 1);
}
});
cls = clsArr.join(' ');
el.__wxsRemoveClass.length = 0;
}

if(el.__wxsAddClass){
cls = concat(cls, el.__wxsAddClass);
}

// set the class
Expand Down
19 changes: 16 additions & 3 deletions packages/vue-cli-plugin-uni/packages/h5-vue/dist/vue.js
Original file line number Diff line number Diff line change
Expand Up @@ -6799,7 +6799,8 @@
isUndef(oldData.class)
)
) &&
isUndef(el.__wxsClass) // fixed by xxxxxx __wxsClass
isUndef(el.__wxsAddClass) &&
isUndef(el.__wxsRemoveClass) // fixed by xxxxxx __wxsClass
) {
return
}
Expand All @@ -6813,8 +6814,20 @@
}

// fixed by xxxxxx __wxsClass
if(el.__wxsClass){
cls = concat(cls, el.__wxsClass);
if(Array.isArray(el.__wxsRemoveClass) && el.__wxsRemoveClass.length){
var clsArr = cls.split(/\s+/);
el.__wxsRemoveClass.forEach(function (removeCls){
var clsIndex = clsArr.findIndex(function (cls) { return cls === removeCls; });
if (clsIndex !== -1) {
clsArr.splice(clsIndex, 1);
}
});
cls = clsArr.join(' ');
el.__wxsRemoveClass.length = 0;
}

if(el.__wxsAddClass){
cls = concat(cls, el.__wxsAddClass);
}

// set the class
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -6784,7 +6784,8 @@ function updateClass (oldVnode, vnode) {
isUndef(oldData.class)
)
) &&
isUndef(el.__wxsClass) // fixed by xxxxxx __wxsClass
isUndef(el.__wxsAddClass) &&
isUndef(el.__wxsRemoveClass) // fixed by xxxxxx __wxsClass
) {
return
}
Expand All @@ -6798,8 +6799,20 @@ function updateClass (oldVnode, vnode) {
}

// fixed by xxxxxx __wxsClass
if(el.__wxsClass){
cls = concat(cls, el.__wxsClass);
if(Array.isArray(el.__wxsRemoveClass) && el.__wxsRemoveClass.length){
var clsArr = cls.split(/\s+/);
el.__wxsRemoveClass.forEach(function (removeCls){
var clsIndex = clsArr.findIndex(function (cls) { return cls === removeCls; });
if (clsIndex !== -1) {
clsArr.splice(clsIndex, 1);
}
});
cls = clsArr.join(' ');
el.__wxsRemoveClass.length = 0;
}

if(el.__wxsAddClass){
cls = concat(cls, el.__wxsAddClass);
}

// set the class
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -6806,7 +6806,8 @@ function updateClass (oldVnode, vnode) {
isUndef(oldData.class)
)
) &&
isUndef(el.__wxsClass) // fixed by xxxxxx __wxsClass
isUndef(el.__wxsAddClass) &&
isUndef(el.__wxsRemoveClass) // fixed by xxxxxx __wxsClass
) {
return
}
Expand All @@ -6820,8 +6821,20 @@ function updateClass (oldVnode, vnode) {
}

// fixed by xxxxxx __wxsClass
if(el.__wxsClass){
cls = concat(cls, el.__wxsClass);
if(Array.isArray(el.__wxsRemoveClass) && el.__wxsRemoveClass.length){
var clsArr = cls.split(/\s+/);
el.__wxsRemoveClass.forEach(function (removeCls){
var clsIndex = clsArr.findIndex(function (cls) { return cls === removeCls; });
if (clsIndex !== -1) {
clsArr.splice(clsIndex, 1);
}
});
cls = clsArr.join(' ');
el.__wxsRemoveClass.length = 0;
}

if(el.__wxsAddClass){
cls = concat(cls, el.__wxsAddClass);
}

// set the class
Expand Down
19 changes: 16 additions & 3 deletions packages/vue-cli-plugin-uni/packages/h5-vue/dist/vue.runtime.js
Original file line number Diff line number Diff line change
Expand Up @@ -6788,7 +6788,8 @@
isUndef(oldData.class)
)
) &&
isUndef(el.__wxsClass) // fixed by xxxxxx __wxsClass
isUndef(el.__wxsAddClass) &&
isUndef(el.__wxsRemoveClass) // fixed by xxxxxx __wxsClass
) {
return
}
Expand All @@ -6802,8 +6803,20 @@
}

// fixed by xxxxxx __wxsClass
if(el.__wxsClass){
cls = concat(cls, el.__wxsClass);
if(Array.isArray(el.__wxsRemoveClass) && el.__wxsRemoveClass.length){
var clsArr = cls.split(/\s+/);
el.__wxsRemoveClass.forEach(function (removeCls){
var clsIndex = clsArr.findIndex(function (cls) { return cls === removeCls; });
if (clsIndex !== -1) {
clsArr.splice(clsIndex, 1);
}
});
cls = clsArr.join(' ');
el.__wxsRemoveClass.length = 0;
}

if(el.__wxsAddClass){
cls = concat(cls, el.__wxsAddClass);
}

// set the class
Expand Down

Large diffs are not rendered by default.

25 changes: 15 additions & 10 deletions src/core/view/plugins/wxs/component-descriptor.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ class ComponentDescriptor {
style = parseStyleText(style)
}
if (isPlainObject(style)) {
this.$el.__wxsStyle = style
this.$el.__wxsStyle = style
this.$vm.$forceUpdate()
}
return this
Expand All @@ -87,8 +87,8 @@ class ComponentDescriptor {

const wxsClsArr = getWxsClsArr(clsArr, this.$el.classList, true)
if (wxsClsArr.length) {
const wxsClass = this.$el.__wxsClass || ''
this.$el.__wxsClass = wxsClass + (wxsClass ? ' ' : '') + wxsClsArr.join(' ')
const wxsClass = this.$el.__wxsAddClass || ''
this.$el.__wxsAddClass = wxsClass + (wxsClass ? ' ' : '') + wxsClsArr.join(' ')
this.$vm.$forceUpdate()
}

Expand All @@ -99,16 +99,21 @@ class ComponentDescriptor {
if (!this.$el || !clsArr.length) {
return this
}
const oldWxsClsArr = (this.$el.__wxsClass || '').split(WXS_CLASS_RE)
const wxsClsArr = getWxsClsArr(clsArr, this.$el.classList, false)
const classList = this.$el.classList
const addWxsClsArr = this.$el.__wxsAddClass ? this.$el.__wxsAddClass.split(WXS_CLASS_RE) : []
const wxsClsArr = getWxsClsArr(clsArr, classList, false)
if (wxsClsArr.length) {
oldWxsClsArr.length && wxsClsArr.forEach(cls => {
const clsIndex = oldWxsClsArr.findIndex(oldCls => oldCls === cls)
if (clsIndex !== -1) {
oldWxsClsArr.splice(clsIndex, 1)
const removeWxsClsArr = []
addWxsClsArr.length && wxsClsArr.forEach(cls => {
const clsIndex = addWxsClsArr.findIndex(oldCls => oldCls === cls)
if (clsIndex !== -1) { // 在 addWxsClass 中
addWxsClsArr.splice(clsIndex, 1)
} else { // 在 classList 中
removeWxsClsArr.push(cls)
}
})
this.$el.__wxsClass = oldWxsClsArr.join(' ')
this.$el.__wxsRemoveClsArr = removeWxsClsArr
this.$el.__wxsAddClass = addWxsClsArr.join(' ')
this.$vm.$forceUpdate()
}

Expand Down

0 comments on commit 2b52666

Please sign in to comment.