Skip to content

Commit dc64f45

Browse files
committed
major rework
1 parent 74c2784 commit dc64f45

File tree

9 files changed

+237
-188
lines changed

9 files changed

+237
-188
lines changed

README.md

Lines changed: 75 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,46 +15,95 @@ or include `build/bundle.js`.
1515
```coffee
1616
# in your component
1717
components:
18-
"card": require("vue-card/card")
19-
"card-reveal": require("vue-card/card-reveal")
20-
"card-toggle": require("vue-card/card-toggle")
18+
"card": require("vue-card")
2119
# or, when using bundle.js
2220
components:
2321
"card": window.vueComps.card
24-
"card-reveal": window.vueComps.cardReveal
25-
"card-toggle": window.vueComps.cardToggle
2622
```
2723
```html
2824
<card>
29-
<card-toggle>
30-
// some image
31-
</cards-toggle>
32-
<div>
33-
<card-toggle>The title</card-toggle>
34-
some short content
35-
</div>
36-
<card-reveal>
37-
<card-toggle>The revealed title</card-toggle>
38-
The revealed content
39-
</card-reveal>
25+
<img slot="img" src="..."></img>
26+
<span slot="title">The title</span>
27+
<p>The content</p>
28+
<span slot="revealTitle">The revealed title</span>
29+
<p slot="reveal">The revealed content</p>
4030
</card>
4131
```
4232
For examples see [`dev/`](https://github.com/vue-comps/vue-card/tree/master/dev).
4333

4434
#### Props
45-
card
4635

47-
| Name | type | default | description |
48-
| ---:| --- | ---| --- |
49-
| class | Array or Object | ["card"] | class of the `div`|
36+
Name | type | default | description
37+
---:| --- | ---| ---
38+
z-index | Number | 50 | z-index of the `div`
39+
transition | String | - | name of a vue transition. [Detailed description](#transition)
40+
revealStyle | Object / String | {} | style which will be passed down to reavel `div`
41+
is-opened | Boolean | false | (two-way) set to open / close
5042

51-
card-reveal
43+
#### slots
5244

53-
| Name | type | default | description |
54-
| ---:| --- | ---| --- |
55-
| class | Array or Object | ["card-reveal"] | class of the `div`|
56-
| z-index | Number | 50 | z-index of the `div` |
57-
| transition | function | no animation | used to animate the `div`. Arguments: `{el,style,cb}` |
45+
Name | description
46+
---:| ---
47+
default | content
48+
title | will reveal on click
49+
img | above title. will reveal on click
50+
reveal | content of reveal
51+
revealTitle | title of reveal. If absent, reveal will be disabled.
52+
action | action div below
53+
54+
#### Events
55+
Name | description
56+
---:| ---
57+
before-enter | will be called before open animation
58+
after-enter | will be called when opened
59+
before-leave | will be called before close animation
60+
after-leave | will be called when closed
61+
toggled(isOpened:Boolean) | emitted when gets opened or closed. Alternative to use two-way `is-opened` prop
62+
63+
#### Transition
64+
65+
You can provide a vue transition like this:
66+
```js
67+
Vue.transition("fade",{
68+
// your transition
69+
})
70+
// or in the instance:
71+
transitions: {
72+
fade: {
73+
// your transition
74+
}
75+
}
76+
// usage:
77+
template: "<card transition='fade'></card>"
78+
```
79+
80+
You can write to the reveal style in your hooks (remeber it needs a tick to get applied):
81+
```js
82+
Velocity = require("velocity-animate")
83+
beforeEnter: function() {
84+
height = this.$el.clientHeight
85+
this.rStyle.top = height + "px"
86+
this.rStyle.opacity = 0
87+
// content of this.rStyle overwrites content of this.revealStyle
88+
},
89+
enter: function(el,done) {
90+
this.$nextTick(function(){
91+
Velocity(el, {top: 0, opacity: 1},{
92+
duration: 1000,
93+
easing: "easeOutQuart",
94+
queue: false,
95+
complete: done
96+
})
97+
})
98+
}
99+
```
100+
101+
## Changelog
102+
- 1.0.0
103+
now using vue transitions
104+
events are renamed after vue transitions
105+
only using a single component now, with multiple slots
106+
added unit tests
58107

59108
# Development
60109
Clone repository.

build/common.coffee

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
11
window.vueComps ?= {}
22
window.vueComps.card = require('../card.js')
3-
window.vueComps.cardToggle = require('../card-toggle.js')
4-
window.vueComps.cardReveal = require('../card-reveal.js')

dev/basic.vue

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,44 @@
1-
<template lang="jade">
1+
<template lang="pug">
22
.container
3-
card(style="display:inline-block")
4-
card-toggle
5-
img(src="http://materializecss.com/images/office.jpg",width=200)
6-
card-toggle(style="border:1px solid black") Title (click me)
7-
.card-content Some Content
8-
card-reveal(style="background-color:white")
9-
card-toggle(style="border:1px solid black") Title (click me)
10-
.card-content Significantly more Content
3+
card(transition="card",reveal-style="background-color:white",v-ref:card)
4+
img(slot="img" src="http://materializecss.com/images/office.jpg",width=200)
5+
span(slot="title") Title (click me)
6+
p Some Content
7+
span(slot="revealTitle") Title (click me)
8+
p(slot="reveal") Significantly more Content
119
p
1210
a(href="https://github.com/vue-comps/vue-card/blob/master/dev/basic.vue") source
1311
</template>
1412

1513
<script lang="coffee">
14+
Velocity = require("velocity-animate")
15+
cancel = (el) -> Velocity el, "stop"
1616
module.exports =
1717
components:
1818
"card" : require "../src/card.vue"
19-
"card-reveal" : require "../src/card-reveal.vue"
20-
"card-toggle" : require "../src/card-toggle.vue"
21-
19+
transitions:
20+
card:
21+
css: false
22+
leaveCancelled: cancel
23+
enterCancelled: cancel
24+
beforeEnter: ->
25+
height = @$el.clientHeight
26+
@rStyle.top = height + "px"
27+
@rStyle.opacity = 0
28+
enter: (el,done) ->
29+
@$nextTick ->
30+
Velocity el, {top: 0, opacity: 1},{
31+
duration: 1000
32+
easing: "easeOutQuart"
33+
queue: false
34+
complete: done
35+
}
36+
leave: (el,done) ->
37+
height = el.parentElement.clientHeight
38+
Velocity el, {top: height+"px", opacity: 0},{
39+
duration: 350
40+
easing: "easeOutQuart"
41+
queue: false
42+
complete: done
43+
}
2244
</script>

karma.conf.coffee

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ module.exports = (config) ->
2929
require("karma-chai-spies")
3030
require("karma-vue-component")
3131
]
32-
browsers: ["Chrome","Firefox"]
32+
browsers: ["Chromium","Firefox"]

package.json

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"email": "[email protected]"
99
},
1010
"license": "MIT",
11-
"main": "cards.js",
11+
"main": "card.js",
1212
"repository": {
1313
"type": "git",
1414
"url": "git://github.com/vue-comps/vue-card"
@@ -17,47 +17,35 @@
1717
"node": "*"
1818
},
1919
"dependencies": {
20-
"vue-filters": "^0.1.6"
20+
"vue-mixins": "^0.2.18"
2121
},
2222
"devDependencies": {
23-
"babel-core": "^6.7.7",
24-
"babel-loader": "^6.2.4",
25-
"babel-plugin-transform-runtime": "^6.7.5",
26-
"babel-preset-es2015": "^6.6.0",
27-
"babel-runtime": "^5.8.34",
2823
"chai": "^3.5.0",
2924
"chai-spies": "^0.7.1",
3025
"coffee-loader": "^0.7.2",
3126
"coffee-script": "^1.10.0",
32-
"css-loader": "^0.23.1",
3327
"gh-pages": "^0.11.0",
34-
"jade": "^1.11.0",
35-
"karma": "^0.13.22",
28+
"karma": "^1.3.0",
3629
"karma-chai": "^0.1.0",
3730
"karma-chai-dom": "^1.1.0",
3831
"karma-chai-spies": "^0.1.4",
39-
"karma-chrome-launcher": "^0.2.3",
40-
"karma-firefox-launcher": "^0.1.7",
41-
"karma-mocha": "^0.2.2",
32+
"karma-chrome-launcher": "^2.0.0",
33+
"karma-firefox-launcher": "^1.0.0",
34+
"karma-mocha": "^1.1.1",
4235
"karma-sourcemap-loader": "^0.3.7",
4336
"karma-spec-reporter": "^0.0.26",
4437
"karma-vue-component": "^0.1.0",
45-
"karma-webpack": "^1.7.0",
46-
"mocha": "^2.4.5",
47-
"parse5": "^2.1.5",
48-
"script-runner": "^0.1.4",
49-
"style-loader": "^0.13.1",
50-
"stylus-loader": "^2.0.0",
51-
"template-html-loader": "0.0.3",
52-
"vue": "^1.0.21",
53-
"vue-compiler": "^0.1.1",
38+
"karma-webpack": "^1.8.0",
39+
"mocha": "^3.0.2",
40+
"pug": "^2.0.0-beta6",
41+
"script-runner": "^0.1.5",
42+
"velocity-animate": "^1.2.3",
43+
"vue": "^1.0.26",
44+
"vue-compiler": "^0.3.0",
5445
"vue-dev-server": "^0.2.10",
55-
"vue-hot-reload-api": "^1.3.2",
56-
"vue-html-loader": "^1.2.2",
57-
"vue-loader": "^8.2.3",
58-
"vue-style-loader": "^1.0.0",
59-
"vueify-insert-css": "^1.0.0",
60-
"webpack": "^1.13.0"
46+
"vue-html-loader": "^1.2.3",
47+
"vue-loader": "^8.5.2",
48+
"webpack": "^1.13.2"
6149
},
6250
"keywords": [
6351
"card",
@@ -70,7 +58,7 @@
7058
"build:webpack": "webpack --config build/webpack.config.coffee",
7159
"build": "run-npm build:*",
7260
"dev": "vue-dev-server",
73-
"watch": "karma start --browsers Chrome --auto-watch --reporters spec",
61+
"watch": "karma start --browsers Chromium --auto-watch --reporters spec",
7462
"test": "karma start --single-run",
7563
"preversion": "npm test",
7664
"version": "npm run build && git add .",

src/card-reveal.vue

Lines changed: 0 additions & 76 deletions
This file was deleted.

src/card-toggle.vue

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)