Skip to content
This repository was archived by the owner on Apr 16, 2021. It is now read-only.

Commit 70513c1

Browse files
committed
🎉 bump version to 1.0.0
1 parent e5b7820 commit 70513c1

19 files changed

+306
-15
lines changed

.npmignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
docs
22
src
3+
lib
4+
test
35
dist/index.docs.css
46
dist/index.docs.js
57
.babelrc
68
.eslintrc.js
9+
.travis.yml
710
webpack.config.js
811
yarn.lock
912
index.html

.travis.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
language: node_js
2+
node_js:
3+
- '9'
4+
script:
5+
- yarn run lint
6+
- yarn run test

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
Office UI Fabric implementation for Vue.js, build with [office-ui-fabric-js](https://github.com/OfficeDev/office-ui-fabric-js)
66

7+
## Dependencies
8+
9+
- vue.js 2.2.0+
10+
711
## Installation
812

913
```
@@ -44,6 +48,10 @@ $ yarn run server
4448
4549
$ yarn run bundle
4650
51+
// runing the test
52+
53+
$ yarn run test
54+
4755
```
4856

4957

dist/index.docs.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "office-ui-fabric-vue",
3-
"version": "0.1.0",
3+
"version": "1.0.0",
44
"description": "Office UI Fabric implementation for Vue.js",
55
"main": "dist/index.js",
66
"author": "aidewoode <aidewoode@gmail.com>",
@@ -22,7 +22,8 @@
2222
"server": "./node_modules/.bin/webpack-dev-server --inline --hot --env.development",
2323
"bundle": "./node_modules/.bin/webpack --env.production",
2424
"bundleLib": "./node_modules/.bin/webpack --env.production --env.lib",
25-
"test": "./node_modules/.bin/jest"
25+
"test": "./node_modules/.bin/jest",
26+
"lint": "./node_modules/.bin/eslint --ext .js,.vue src"
2627
},
2728
"devDependencies": {
2829
"babel-core": "^6.24.1",

src/components/pivot/Pivot.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
};
4242
}
4343
},
44+
4445
created() {
4546
this.eventHub.$on('addPivotItem', this.addPivotItem);
4647
},

src/components/table/Table.vue

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@
1717
<script>
1818
// Note: The Selectable Table haven't create
1919
import type from '../../mixins/props/type';
20+
import eventHub from '../../mixins/eventHub';
2021
2122
export default {
2223
name: 'ou-table',
2324
24-
mixins: [type('fixed')],
25+
mixins: [type('fixed'), eventHub],
2526
2627
props: {
2728
data: {
@@ -47,6 +48,20 @@
4748
[`ms-Table--${this.type}`]: !!this.type
4849
};
4950
}
51+
},
52+
53+
created() {
54+
this.eventHub.$on('addTableColumnItems', this.addTableColumnItems);
55+
},
56+
57+
beforeDestroy() {
58+
this.eventHub.$off('addTableColumnItems', this.tableColumnItems);
59+
},
60+
61+
methods: {
62+
addTableColumnItems(value) {
63+
this.tableColumnItems.push(value);
64+
}
5065
}
5166
};
5267
</script>

src/components/table/TableColumn.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
export default {
88
name: 'ou-table-column',
99
10+
inject: ['eventHub'],
11+
1012
props: {
1113
prop: {
1214
type: String,
@@ -15,7 +17,7 @@
1517
},
1618
1719
beforeMount() {
18-
this.$parent.tableColumnItems.push(this.prop);
20+
this.eventHub.$emit('addTableColumnItems', this.prop);
1921
}
2022
};
2123
</script>

src/components/toggle/Toggle.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
{{ description }}
55
</span>
66
<input type='checkbox' class='ms-Toggle-input'/>
7-
<span @click='toggle'>
7+
<span class='ms-Toggle-trigger' @click='toggle'>
88
<label
99
class='ms-Toggle-field'
1010
tabindex='0'

test/date_picker.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ describe('DatePicker', () => {
3232

3333
wrapper.vm.$on('input', inputEvent);
3434
wrapper.setProps({ value: '2018-01-01'});
35-
wrapper.vm.$el.querySelector('.ms-DatePicker-table tbody tr:first-child td:last-child div').click();
35+
wrapper.element.querySelector('.ms-DatePicker-table tbody tr:first-child td:last-child div').click();
3636

3737
expect(inputEvent).toBeCalledWith('2018-01-06');
3838
});

test/dialog.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ describe('Dialog', () => {
5151

5252
wrapper.vm.$on('input', inputEvent);
5353
wrapper.setProps({ value: true });
54-
wrapper.vm.$el.parentElement.querySelector('.ms-Overlay').click();
54+
wrapper.element.parentElement.querySelector('.ms-Overlay').click();
5555

5656
expect(inputEvent).toBeCalledWith(false);
5757
});
@@ -62,7 +62,7 @@ describe('Dialog', () => {
6262

6363
expect(wrapper.find('.ms-Dialog').classes()).toContain('is-open');
6464

65-
wrapper.vm.$el.parentElement.querySelector('.ms-Overlay').click();
65+
wrapper.element.parentElement.querySelector('.ms-Overlay').click();
6666
expect(wrapper.find('.ms-Dialog').classes()).toContain('is-open');
6767
});
6868
});

test/dropdown.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ describe('Dropdown', () => {
4545
});
4646

4747
test('should return a value when selected', () => {
48-
const rootElement = wrapper.vm.$el;
48+
const rootElement = wrapper.element;
4949
const inputEvent = jest.fn();
5050

5151
wrapper.vm.$on('input', inputEvent);
@@ -57,9 +57,9 @@ describe('Dropdown', () => {
5757

5858
test('should can set selected status by value', () => {
5959
wrapper.setProps({ value: '1' });
60-
const dropdownItems = wrapper.vm.$el.querySelectorAll('.ms-Dropdown-item');
60+
const dropdownItems = wrapper.element.querySelectorAll('.ms-Dropdown-item');
6161

62-
expect(wrapper.vm.$el.querySelector('.ms-Dropdown-title').textContent).toBe('1');
62+
expect(wrapper.element.querySelector('.ms-Dropdown-title').textContent).toBe('1');
6363
expect(dropdownItems[1].classList.contains('is-selected')).toBeTruthy();
6464
expect(dropdownItems[0].classList.contains('is-selected')).toBeFalsy();
6565
expect(dropdownItems[2].classList.contains('is-selected')).toBeFalsy();

test/panel.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ describe('Panel', () => {
4848

4949
wrapper.vm.$on('input', inputEvent);
5050
wrapper.setProps({ value: true });
51-
wrapper.vm.$el.parentElement.querySelector('.ms-Overlay').click();
51+
wrapper.element.parentElement.querySelector('.ms-Overlay').click();
5252

5353
expect(inputEvent).toBeCalledWith(false);
5454
});

test/search_box.test.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { mount } from 'vue-test-utils';
2+
3+
import fabric from '../lib/office-ui-fabric';
4+
import SearchBox from '../src/components/search_box/SearchBox.vue';
5+
6+
describe('SearchBox', () => {
7+
let wrapper;
8+
9+
beforeEach(() => {
10+
wrapper = mount(SearchBox, {
11+
propsData: {
12+
placeholder: 'placeholder'
13+
},
14+
15+
mocks: {
16+
$fabric: fabric
17+
}
18+
});
19+
});
20+
21+
afterEach(() => {
22+
wrapper.destroy();
23+
});
24+
25+
test('should render correct', () => {
26+
expect(wrapper.contains('.ms-SearchBox')).toBeTruthy();
27+
expect(wrapper.contains('.ms-SearchBox-field')).toBeTruthy();
28+
expect(wrapper.find('.ms-SearchBox-text').text()).toBe('placeholder');
29+
});
30+
31+
test('should return value when input text', () => {
32+
const inputEvent = jest.fn();
33+
34+
wrapper.vm.$on('input', inputEvent);
35+
wrapper.find('.ms-SearchBox-field').element.value = 'input';
36+
wrapper.find('.ms-SearchBox-field').trigger('input');
37+
38+
expect(inputEvent).toBeCalledWith('input');
39+
});
40+
41+
test('should can set input text by value', () => {
42+
wrapper.setProps({ value: 'input' });
43+
44+
expect(wrapper.find('.ms-SearchBox-field').element.value).toBe('input');
45+
});
46+
});

test/spinner.test.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { mount } from 'vue-test-utils';
2+
3+
import fabric from '../lib/office-ui-fabric';
4+
import Spinner from '../src/components/spinner/Spinner.vue';
5+
6+
describe('Spinner', () => {
7+
let wrapper;
8+
9+
beforeEach(() => {
10+
wrapper = mount(Spinner, {
11+
propsData: {
12+
label: 'label'
13+
},
14+
15+
mocks: {
16+
$fabric: fabric
17+
}
18+
});
19+
});
20+
21+
afterEach(() => {
22+
wrapper.destroy();
23+
});
24+
25+
test('should render correct', () => {
26+
expect(wrapper.contains('.ms-Spinner')).toBeTruthy();
27+
expect(wrapper.find('.ms-Spinner-label').text()).toBe('label');
28+
});
29+
});

test/table.test.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import { mount, createLocalVue } from 'vue-test-utils';
2+
3+
import Table from '../src/components/table/Table.vue';
4+
import TableColumn from '../src/components/table/TableColumn.vue';
5+
6+
describe('Table', () => {
7+
const defaultSlot = [
8+
"<table-column prop='name'>Name</table-column>",
9+
"<table-column prop='age'>Age</table-column>",
10+
];
11+
12+
const tableData = [
13+
{ name: 'Ed', age: '24' },
14+
{ name: 'Jack', age: '30' },
15+
{ name: 'Blues', age: '51' },
16+
];
17+
18+
let wrapper;
19+
20+
beforeEach(() => {
21+
const localVue = createLocalVue();
22+
23+
localVue.component('table-column', TableColumn);
24+
25+
wrapper = mount(Table, {
26+
propsData: {
27+
data: tableData
28+
},
29+
30+
slots: {
31+
default: defaultSlot,
32+
},
33+
34+
localVue
35+
});
36+
});
37+
38+
afterEach(() => {
39+
wrapper.destroy();
40+
});
41+
42+
test('should render correct', () => {
43+
const tableColumnProps = ['name', 'age']
44+
45+
expect(wrapper.contains('.ms-Table')).toBeTruthy();
46+
expect(wrapper.findAll('th').length).toBe(defaultSlot.length);
47+
expect(wrapper.findAll('tbody tr').length).toBe(tableData.length);
48+
expect(wrapper.findAll('th').at(0).text()).toBe('Name');
49+
expect(wrapper.findAll('th').at(1).text()).toBe('Age');
50+
51+
wrapper.element.querySelectorAll('tbody tr').forEach((trElement, trIndex) => {
52+
trElement.childNodes.forEach((tdElement, tdIndex) => {
53+
expect(tdElement.textContent.trim()).toBe(tableData[trIndex][tableColumnProps[tdIndex]]);
54+
});
55+
});
56+
});
57+
});

test/text_field.test.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { mount } from 'vue-test-utils';
2+
3+
import fabric from '../lib/office-ui-fabric';
4+
import TextField from '../src/components/text_field/TextField.vue';
5+
6+
describe('TextField', () => {
7+
let wrapper;
8+
9+
beforeEach(() => {
10+
wrapper = mount(TextField, {
11+
propsData: {
12+
label: 'label'
13+
},
14+
15+
mocks: {
16+
$fabric: fabric
17+
}
18+
});
19+
});
20+
21+
afterEach(() => {
22+
wrapper.destroy();
23+
});
24+
25+
test('should render correct', () => {
26+
expect(wrapper.contains('.ms-TextField')).toBeTruthy();
27+
expect(wrapper.contains('input')).toBeTruthy();
28+
expect(wrapper.find('.ms-Label').text()).toBe('label');
29+
});
30+
31+
test('should be textarea when type is multiline ', () => {
32+
wrapper.setProps({ type: 'multiline' });
33+
34+
expect(wrapper.contains('input')).toBeFalsy();
35+
expect(wrapper.contains('textarea')).toBeTruthy();
36+
});
37+
38+
test('should return value when input text', () => {
39+
const inputEvent = jest.fn();
40+
41+
wrapper.vm.$on('input', inputEvent);
42+
wrapper.find('.ms-TextField-field').element.value = 'input';
43+
wrapper.find('.ms-TextField-field').trigger('input');
44+
45+
expect(inputEvent).toBeCalledWith('input');
46+
});
47+
48+
test('should can set input text by value', () => {
49+
wrapper.setProps({ value: 'input' });
50+
51+
expect(wrapper.find('.ms-TextField-field').element.value).toBe('input');
52+
});
53+
});

0 commit comments

Comments
 (0)