diff --git a/packages/actionsheet/index.js b/packages/actionsheet/index.js
new file mode 100644
index 000000000..e9a1fbbf9
--- /dev/null
+++ b/packages/actionsheet/index.js
@@ -0,0 +1,97 @@
+import create from '../utils/create';
+import createBem from '../utils/bem';
+import Popup from '../mixins/popup';
+
+const bem = createBem('van-actionsheet');
+
+export default create({
+ name: 'actionsheet',
+
+ mixins: [Popup],
+
+ props: {
+ title: String,
+ value: Boolean,
+ actions: Array,
+ cancelText: String,
+ overlay: {
+ type: Boolean,
+ default: true
+ },
+ closeOnClickOverlay: {
+ type: Boolean,
+ default: true
+ }
+ },
+
+ methods: {
+ onSelect(item, event) {
+ event.stopPropagation();
+
+ if (!item.disabled && !item.loading) {
+ if (item.callback) {
+ item.callback(item);
+ }
+
+ this.$emit('select', item);
+ }
+ },
+
+ onCancel() {
+ this.$emit('input', false);
+ this.$emit('cancel');
+ }
+ },
+
+ render(h) {
+ if (!this.shouldRender) {
+ return;
+ }
+
+ const { title, cancelText, onCancel } = this;
+
+ const Header = () => (
+
+ );
+
+ const Option = item => (
+
+ {item.loading ? (
+
+ ) : (
+ [
+ {item.name},
+ item.subname && {item.subname}
+ ]
+ )}
+
+ );
+
+ const Footer = cancelText ? (
+
+ {cancelText}
+
+ ) : (
+ {this.$slots.default}
+ );
+
+ return (
+
+
+ {title ? Header() : this.actions.map(Option)}
+ {Footer}
+
+
+ );
+ }
+});
diff --git a/packages/actionsheet/index.vue b/packages/actionsheet/index.vue
deleted file mode 100644
index 6bcac06f8..000000000
--- a/packages/actionsheet/index.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
-
-
-
-
diff --git a/packages/actionsheet/test/__snapshots__/index.spec.js.snap b/packages/actionsheet/test/__snapshots__/index.spec.js.snap
index f1ebcd5bb..0227cc076 100644
--- a/packages/actionsheet/test/__snapshots__/index.spec.js.snap
+++ b/packages/actionsheet/test/__snapshots__/index.spec.js.snap
@@ -2,14 +2,8 @@
exports[`callback events 1`] = `
-
- - Option
-
-
- - Option
-
-
-
-
Cancel
+
Option
+
Option
+
Cancel
`;
diff --git a/packages/actionsheet/test/index.spec.js b/packages/actionsheet/test/index.spec.js
index 4ac7fa2e0..b51ff3792 100644
--- a/packages/actionsheet/test/index.spec.js
+++ b/packages/actionsheet/test/index.spec.js
@@ -14,7 +14,7 @@ test('callback events', () => {
}
});
- const options = wrapper.findAll('li');
+ const options = wrapper.findAll('.van-actionsheet__item');
options.at(0).trigger('click');
options.at(1).trigger('click');
wrapper.find('.van-actionsheet__cancel').trigger('click');
diff --git a/packages/badge-group/index.js b/packages/badge-group/index.js
index 1d8abd498..bee6085ba 100644
--- a/packages/badge-group/index.js
+++ b/packages/badge-group/index.js
@@ -1,4 +1,7 @@
import create from '../utils/create';
+import createBem from '../utils/bem';
+
+const bem = createBem('van-badge-group');
export default create({
name: 'badge-group',
@@ -24,7 +27,7 @@ export default create({
render(h) {
return (
-
+
{this.$slots.default}
);
diff --git a/packages/badge/index.js b/packages/badge/index.js
index 628b94bc8..28810ebd8 100644
--- a/packages/badge/index.js
+++ b/packages/badge/index.js
@@ -1,5 +1,8 @@
import Info from '../info';
import create from '../utils/create';
+import createBem from '../utils/bem';
+
+const bem = createBem('van-badge');
export default create({
name: 'badge',
@@ -45,12 +48,12 @@ export default create({
return (
-