├── .gitignore
├── .storybook
├── addons.js
└── config.js
├── README.md
├── components
├── JTable
│ ├── JTable.stories.js
│ ├── JTable.vue
│ └── package.json
└── JTableRow
│ ├── JTableRow.stories.js
│ ├── JTableRow.vue
│ └── package.json
├── lerna.json
├── package-lock.json
└── package.json
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | storybook-static
3 | npm-debug.log*
4 | lerna-debug.log*
5 |
--------------------------------------------------------------------------------
/.storybook/addons.js:
--------------------------------------------------------------------------------
1 | import '@storybook/addon-actions/register';
2 | import '@storybook/addon-links/register';
3 |
--------------------------------------------------------------------------------
/.storybook/config.js:
--------------------------------------------------------------------------------
1 | import { configure } from '@storybook/vue';
2 |
3 | // automatically import all files ending in *.stories.js
4 | const req = require.context('../components', true, /\.stories\.js$/);
5 | function loadStories() {
6 | req.keys().forEach(filename => req(filename));
7 | }
8 |
9 | configure(loadStories, module);
10 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # medium-reusable-vue-components
2 | Sharing reusable Vue.js components with Lerna, Storybook, and npm
3 |
4 |
5 | ## Project setup
6 | ``` bash
7 | npm install
8 | lerna bootstrap # if installed globally
9 | ./node_modules/lerna/cli.js bootstrap # if installed locally
10 | ```
11 |
12 | ## Available Commands
13 | ``` bash
14 | npm run storybook # Compiles and hot-reloads for development
15 | npm run build-storybook # Compiles and minifies for production
16 | ```
17 |
18 | ## Deployed on [Netlify](https://medium-reusable-vue-components.netlify.com)
19 | [](https://app.netlify.com/sites/medium-reusable-vue-components/deploys)
20 |
--------------------------------------------------------------------------------
/components/JTable/JTable.stories.js:
--------------------------------------------------------------------------------
1 | import { storiesOf } from '@storybook/vue'
2 | import JTable from './JTable'
3 |
4 | var items = [
5 | [ 'Yair Lamb', 'yair.lamb@email.com' ],
6 | [ 'Leonardo Payne', 'leonardo.payne@email.com' ],
7 | [ 'Carl Henson', 'carl.henson@email.com' ],
8 | [ 'Jensen Combs', 'jensen.combs@email.com' ],
9 | [ 'Amiah Burton', 'amiah.burton@email.com' ],
10 | [ 'Yaretzi Mayo', 'yaretzi.mayo@email.com' ],
11 | [ 'Kamren Huffman', 'kamren.huffman@email.com' ]
12 | ]
13 |
14 | storiesOf('JTable', module)
15 | .add('with 7 items', () => ({
16 | components: { JTable },
17 | template:
18 | `
19 |
22 | `,
23 | data: () => ({
24 | items
25 | })
26 | }))
27 | .add('with 7 items + header', () => ({
28 | components: { JTable },
29 | template:
30 | `
31 |
35 | `,
36 | data: () => ({
37 | header: [
38 | 'Name',
39 | 'Email'
40 | ],
41 | items
42 | })
43 | }))
44 |
--------------------------------------------------------------------------------
/components/JTable/JTable.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 | {{ label }}
10 | |
11 |
12 |
17 |
18 |
19 |
20 |
38 |
39 |
47 |
--------------------------------------------------------------------------------
/components/JTable/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@jsilva-pt/j-table",
3 | "version": "0.2.1",
4 | "publishConfig": {
5 | "access": "public"
6 | },
7 | "dependencies": {
8 | "@jsilva-pt/j-table-row": "^0.1.0"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/components/JTableRow/JTableRow.stories.js:
--------------------------------------------------------------------------------
1 | import { storiesOf } from '@storybook/vue'
2 | import JTableRow from './JTableRow'
3 |
4 | storiesOf('JTableRow', module)
5 | .add('normal', () => ({
6 | components: { JTableRow },
7 | template:
8 | `
9 |
12 | `,
13 | data: () => ({
14 | values: [
15 | 'José Silva',
16 | 'email@email.com'
17 | ]
18 | })
19 | }))
20 |
--------------------------------------------------------------------------------
/components/JTableRow/JTableRow.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ value }}
6 | |
7 |
8 |
9 |
10 |
21 |
22 |
32 |
--------------------------------------------------------------------------------
/components/JTableRow/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@jsilva-pt/j-table-row",
3 | "version": "0.1.0",
4 | "publishConfig": {
5 | "access": "public"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/lerna.json:
--------------------------------------------------------------------------------
1 | {
2 | "packages": [
3 | "components/*"
4 | ],
5 | "version": "independent"
6 | }
7 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "root",
3 | "private": true,
4 | "devDependencies": {
5 | "@babel/core": "^7.6.4",
6 | "@storybook/addon-actions": "^5.2.5",
7 | "@storybook/addon-links": "^5.2.5",
8 | "@storybook/addons": "^5.2.5",
9 | "@storybook/vue": "^5.2.5",
10 | "babel-loader": "^8.0.6",
11 | "babel-preset-vue": "^2.0.2",
12 | "lerna": "^3.18.3",
13 | "vue-loader": "^15.7.2",
14 | "vue-template-compiler": "^2.6.10"
15 | },
16 | "dependencies": {
17 | "vue": "^2.6.10"
18 | },
19 | "scripts": {
20 | "storybook": "start-storybook -p 6006",
21 | "build-storybook": "build-storybook"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------