aboutsummaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
authortaehoon <th.dev91@gmail.com>2019-04-06 13:14:43 -0400
committertaehoon <th.dev91@gmail.com>2019-04-17 11:32:49 -0400
commit468aec0de1b7e25a66eb9e6ef44cf9787d0c6d86 (patch)
tree1f9a18befcfc9af06a22636392e1da8b70b24cda /src/components
parentac9ddfb1e2948968b6f08c68b689888ed56b9779 (diff)
rewrite checkbox component as non-functional
Diffstat (limited to 'src/components')
-rw-r--r--src/components/checkbox/checkbox.js44
-rw-r--r--src/components/checkbox/checkbox.vue (renamed from src/components/checkbox/checkbox.scss)16
2 files changed, 15 insertions, 45 deletions
diff --git a/src/components/checkbox/checkbox.js b/src/components/checkbox/checkbox.js
deleted file mode 100644
index 76e7e4f4..00000000
--- a/src/components/checkbox/checkbox.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// TODO: Template-based functional component is supported in vue-loader 13.3.0+.
-// Also, somehow, props are not provided through 'context' even though they are defined.
-// Need to upgrade vue-loader
-
-import './checkbox.scss'
-
-export default {
- functional: true,
- name: 'Checkbox',
- model: {
- prop: 'checked',
- event: 'change'
- },
- render (createElement, { data, children }) {
- const { props = {}, attrs = {}, on = {}, ...rest } = data
- const { name, checked, disabled, readonly, ...restAttrs } = attrs
- const { change, ...restListeners } = on
- const wrapperProps = {
- attrs: restAttrs,
- on: restListeners,
- ...rest
- }
- const inputProps = {
- attrs: {
- name,
- checked,
- disabled,
- readonly,
- ...props
- },
- on: {}
- }
- if (change) {
- inputProps.on.change = e => change(e.target.checked)
- }
- return (
- <label class="checkbox" {...wrapperProps}>
- <input type="checkbox" {...inputProps} />
- <i class="checkbox-indicator" />
- {children && <span>{children}</span>}
- </label>
- )
- }
-}
diff --git a/src/components/checkbox/checkbox.scss b/src/components/checkbox/checkbox.vue
index 42556d89..5f55c5bf 100644
--- a/src/components/checkbox/checkbox.scss
+++ b/src/components/checkbox/checkbox.vue
@@ -1,5 +1,18 @@
-@import '../../_variables.scss';
+<template>
+ <label class="checkbox">
+ <input type="checkbox" :checked="value" @change="$emit('input', $event.target.checked)">
+ <i class="checkbox-indicator" />
+ <span><slot></slot></span>
+ </label>
+</template>
+<script>
+export default {
+ props: ['value']
+}
+</script>
+
+<style lang="scss">
.checkbox {
position: relative;
display: inline-block;
@@ -47,3 +60,4 @@
margin-left: .5em;
}
}
+</style>