diff --git a/addon/components/bf-chat-item.js b/addon/components/bf-chat-item.js
new file mode 100644
index 0000000..cf1ed3c
--- /dev/null
+++ b/addon/components/bf-chat-item.js
@@ -0,0 +1,28 @@
+import Ember from 'ember';
+import layout from '../templates/components/bf-chat-item';
+
+export default Ember.Component.extend({
+ layout: layout,
+ tagName: 'div',
+ nameAlign: Ember.computed('user.id', 'currentUser.id', function() {
+ if (this.get('user.id') == this.get('currentUser.id')) {
+ return 'pull-right';
+ } else {
+ return 'pull-left';
+ }
+ }),
+ timeStampAlign: Ember.computed('user.id', 'currentUser.id', function() {
+ if (this.get('user.id') == this.get('currentUser.id')) {
+ return 'pull-left';
+ } else {
+ return 'pull-right';
+ }
+ }),
+ messageAlign: Ember.computed('user.id', 'currentUser.id', function() {
+ if (this.get('user.id') == this.get('currentUser.id')) {
+ return 'right';
+ } else {
+ return '';
+ }
+ })
+});
diff --git a/addon/components/bf-chat.js b/addon/components/bf-chat.js
new file mode 100644
index 0000000..36a8f5b
--- /dev/null
+++ b/addon/components/bf-chat.js
@@ -0,0 +1,17 @@
+import Ember from 'ember';
+import layout from '../templates/components/bf-chat';
+
+export default Ember.Component.extend({
+ layout: layout,
+ label: Ember.computed('chats.@each', function() {
+ return this.get('chats').length + ' messages';
+ }),
+ numberOfChatMessages: Ember.computed('chats.@each', function() {
+ return this.get('chats').length;
+ }),
+ actions: {
+ sendMessage: function() {
+ this.sendAction('action', this);
+ }
+ }
+});
diff --git a/addon/templates/components/bf-chat-item.hbs b/addon/templates/components/bf-chat-item.hbs
new file mode 100644
index 0000000..1c5df53
--- /dev/null
+++ b/addon/templates/components/bf-chat-item.hbs
@@ -0,0 +1,14 @@
+
+
+
+ {{user.name}}
+
+
+ {{moment timestamp}}
+
+
+

+
{{message}}
+
+
+{{yield}}
diff --git a/addon/templates/components/bf-chat.hbs b/addon/templates/components/bf-chat.hbs
new file mode 100644
index 0000000..a4a346d
--- /dev/null
+++ b/addon/templates/components/bf-chat.hbs
@@ -0,0 +1,22 @@
+{{#bf-box title="Direct Chat" label=label color="warning"}}
+
+
+ {{#each chat in chats}}
+ {{bf-chat-item message=chat.message user=chat.user currentUser=currentUser}}
+ {{/each}}
+
+
+
+{{/bf-box}}
+
+{{yield}}
+
diff --git a/app/components/bf-chat-item.js b/app/components/bf-chat-item.js
new file mode 100644
index 0000000..c177450
--- /dev/null
+++ b/app/components/bf-chat-item.js
@@ -0,0 +1,3 @@
+import bfChatItem from 'bf-chat/components/bf-chat-item';
+
+export default bfChatItem;
diff --git a/app/components/bf-chat.js b/app/components/bf-chat.js
new file mode 100644
index 0000000..367eacb
--- /dev/null
+++ b/app/components/bf-chat.js
@@ -0,0 +1,3 @@
+import bfChat from 'bf-chat/components/bf-chat';
+
+export default bfChat;
diff --git a/package.json b/package.json
index f61bc0b..a3c7c51 100644
--- a/package.json
+++ b/package.json
@@ -37,9 +37,10 @@
"ember-addon"
],
"dependencies": {
- "ember-cli-babel": "^5.0.0"
+ "ember-cli-babel": "^5.0.0",
+ "ember-cli-htmlbars": "0.7.4"
},
"ember-addon": {
"configPath": "tests/dummy/config"
}
-}
\ No newline at end of file
+}
diff --git a/tests/unit/components/bf-chat-item-test.js b/tests/unit/components/bf-chat-item-test.js
new file mode 100644
index 0000000..81eeebf
--- /dev/null
+++ b/tests/unit/components/bf-chat-item-test.js
@@ -0,0 +1,21 @@
+import {
+ moduleForComponent,
+ test
+} from 'ember-qunit';
+
+moduleForComponent('bf-chat-item', {
+ // Specify the other units that are required for this test
+ // needs: ['component:foo', 'helper:bar']
+});
+
+test('it renders', function(assert) {
+ assert.expect(2);
+
+ // Creates the component instance
+ var component = this.subject();
+ assert.equal(component._state, 'preRender');
+
+ // Renders the component to the page
+ this.render();
+ assert.equal(component._state, 'inDOM');
+});
diff --git a/tests/unit/components/bf-chat-test.js b/tests/unit/components/bf-chat-test.js
new file mode 100644
index 0000000..1bac16e
--- /dev/null
+++ b/tests/unit/components/bf-chat-test.js
@@ -0,0 +1,21 @@
+import {
+ moduleForComponent,
+ test
+} from 'ember-qunit';
+
+moduleForComponent('bf-chat', {
+ // Specify the other units that are required for this test
+ // needs: ['component:foo', 'helper:bar']
+});
+
+test('it renders', function(assert) {
+ assert.expect(2);
+
+ // Creates the component instance
+ var component = this.subject();
+ assert.equal(component._state, 'preRender');
+
+ // Renders the component to the page
+ this.render();
+ assert.equal(component._state, 'inDOM');
+});