beem-component 1.6.9 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BmFeedPostComments = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
12
+ var _cards = _interopRequireDefault(require("../../Cards/cards"));
13
+
14
+ var _excluded = ["story", "state"];
15
+
16
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
21
+
22
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
23
+
24
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
25
+
26
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
27
+
28
+ var Image = _styledComponents.default.img(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n max-width: 30%;\n width: 30%;\n"])));
29
+
30
+ var LinkText = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n max-width: 70%;\n width: 70%;\n align-items: center;\n > * {\n word-wrap: break-word !important;\n word-break: break-word;\n }\n"])));
31
+
32
+ var Wrapper = _styledComponents.default.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row;\n word-wrap: break-word !important;\n word-break: break-word;\n > * {\n word-wrap: break-word !important;\n word-break: break-word !important;\n }\n"])));
33
+
34
+ var CardWrapper = _styledComponents.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n width: 50%;\n max-width: 50%;\n margin-left: ", ";\n"])), function (_ref) {
35
+ var state = _ref.state;
36
+
37
+ if (state) {
38
+ if (state === 'inbound') return '0rem';
39
+ if (state === 'outbound') return 'auto';
40
+ }
41
+
42
+ return '0rem';
43
+ });
44
+
45
+ var BmFeedPostComments = function BmFeedPostComments(_ref2) {
46
+ var story = _ref2.story,
47
+ state = _ref2.state,
48
+ rest = _objectWithoutProperties(_ref2, _excluded);
49
+
50
+ return story && /*#__PURE__*/_react.default.createElement(CardWrapper, _extends({
51
+ state: state
52
+ }, rest), /*#__PURE__*/_react.default.createElement(_cards.default, _extends({
53
+ state: state
54
+ }, rest), story.header && /*#__PURE__*/_react.default.createElement(_cards.default.Header, null, story.header), story.body && /*#__PURE__*/_react.default.createElement(_cards.default.Body, null, /*#__PURE__*/_react.default.createElement(Wrapper, null, /*#__PURE__*/_react.default.createElement(LinkText, null, story.body.link), story.body.image && /*#__PURE__*/_react.default.createElement(Image, {
55
+ src: story.body.image,
56
+ alt: "src"
57
+ }))), story.footer && /*#__PURE__*/_react.default.createElement(_cards.default.Footer, null, /*#__PURE__*/_react.default.createElement(Wrapper, null, story.footer))));
58
+ };
59
+
60
+ exports.BmFeedPostComments = BmFeedPostComments;
@@ -21,11 +21,15 @@ var _iconStyles = require("../../iconStyles");
21
21
 
22
22
  var _sessionDetails = require("./sessionDetails");
23
23
 
24
+ var _sessionTimeline = require("./sessionTimeline");
25
+
24
26
  var _colors = require("../../colors");
25
27
 
28
+ var _FeedPostComments = require("./FeedPostComments");
29
+
26
30
  var _excluded = ["state", "file", "src", "fileName", "onDownload", "link"],
27
31
  _excluded2 = ["state", "src", "fileName"],
28
- _excluded3 = ["children", "state", "displayTime", "status", "session", "src", "file", "fileName", "sessionDetails"];
32
+ _excluded3 = ["children", "state", "displayTime", "status", "session", "src", "file", "fileName", "sessionDetails", "sessionTimeline", "feedPostComments"];
29
33
 
30
34
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;
31
35
 
@@ -63,7 +67,7 @@ var Details = _styledComponents.default.div(_templateObject3 || (_templateObject
63
67
 
64
68
  var MessageDetails = _styledComponents.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n max-width: 70%;\n > * {\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n }\n"])));
65
69
 
66
- var Messages = _styledComponents.default.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0.5rem;\n background: ", ";\n color: ", ";\n border-radius: ", ";\n border: 0.071rem solid ", ";\n word-break: keep-all;\n margin: 0rem;\n"])), function (_ref2) {
70
+ var Messages = _styledComponents.default.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 0.5rem;\n background: ", ";\n color: ", ";\n border-radius: ", ";\n border: 0.071rem solid ", ";\n word-break: break-word;\n margin: 0rem;\n"])), function (_ref2) {
67
71
  var state = _ref2.state;
68
72
 
69
73
  if (state) {
@@ -92,10 +96,19 @@ var Messages = _styledComponents.default.div(_templateObject5 || (_templateObjec
92
96
  return "".concat(_colors.BmPrimaryWhite);
93
97
  }, _colors.BmGrey200);
94
98
 
95
- var MessagesSubDetails = _styledComponents.default.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row;\n align-items: center;\n > *:not(:last-child) {\n margin-right: 0.5rem;\n }\n margin-top: 0.5rem;\n"])));
99
+ var MessagesSubDetails = _styledComponents.default.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row;\n align-items: center;\n > *:not(:last-child) {\n margin-right: 0.5rem;\n }\n margin-left: ", ";\n margin-top: 0.5rem;\n"])), function (_ref5) {
100
+ var state = _ref5.state;
96
101
 
97
- var handleState = function handleState(_ref5) {
98
- var session = _ref5.session;
102
+ if (state) {
103
+ if (state === 'inbound') return '0px';
104
+ if (state === 'outbound') return 'auto';
105
+ }
106
+
107
+ return "".concat(_colors.BmPrimaryWhite);
108
+ });
109
+
110
+ var handleState = function handleState(_ref6) {
111
+ var session = _ref6.session;
99
112
 
100
113
  if (session === 'bot') {
101
114
  return /*#__PURE__*/_react.default.createElement(_avatars.default, {
@@ -120,8 +133,8 @@ var handleState = function handleState(_ref5) {
120
133
  }; // Start of File Attachment
121
134
 
122
135
 
123
- var FileAttachmentWrapper = _styledComponents.default.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n display: flex;\n cursor: pointer;\n flex-direction: row;\n padding: 1rem;\n background: ", ";\n color: ", ";\n border-radius: ", ";\n border: 0.071rem solid ", ";\n > * {\n &:last-child {\n margin-left: auto;\n }\n :not(:last-child) {\n margin-right: 0.5rem;\n }\n }\n &&& > * {\n align-items: center;\n color: ", ";\n }\n ", "\n ", "\n"])), function (_ref6) {
124
- var state = _ref6.state;
136
+ var FileAttachmentWrapper = _styledComponents.default.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n display: flex;\n cursor: pointer;\n flex-direction: row;\n padding: 1rem;\n background: ", ";\n color: ", ";\n border-radius: ", ";\n border: 0.071rem solid ", ";\n > * {\n &:last-child {\n margin-left: auto;\n }\n :not(:last-child) {\n margin-right: 0.5rem;\n }\n }\n &&& > * {\n align-items: center;\n color: ", ";\n }\n ", "\n ", "\n"])), function (_ref7) {
137
+ var state = _ref7.state;
125
138
 
126
139
  if (state) {
127
140
  if (state === 'inbound') return "".concat(_colors.BmPrimaryWhite);
@@ -129,8 +142,8 @@ var FileAttachmentWrapper = _styledComponents.default.div(_templateObject7 || (_
129
142
  }
130
143
 
131
144
  return "".concat(_colors.BmPrimaryWhite);
132
- }, function (_ref7) {
133
- var state = _ref7.state;
145
+ }, function (_ref8) {
146
+ var state = _ref8.state;
134
147
 
135
148
  if (state) {
136
149
  if (state === 'inbound') return "".concat(_colors.BmPrimaryBlack);
@@ -138,8 +151,8 @@ var FileAttachmentWrapper = _styledComponents.default.div(_templateObject7 || (_
138
151
  }
139
152
 
140
153
  return "".concat(_colors.BmPrimaryWhite);
141
- }, function (_ref8) {
142
- var state = _ref8.state;
154
+ }, function (_ref9) {
155
+ var state = _ref9.state;
143
156
 
144
157
  if (state) {
145
158
  if (state === 'inbound') return '0.21875rem 0.21875rem 0.21875rem 0rem';
@@ -147,8 +160,8 @@ var FileAttachmentWrapper = _styledComponents.default.div(_templateObject7 || (_
147
160
  }
148
161
 
149
162
  return "".concat(_colors.BmPrimaryWhite);
150
- }, _colors.BmGrey200, function (_ref9) {
151
- var state = _ref9.state;
163
+ }, _colors.BmGrey200, function (_ref10) {
164
+ var state = _ref10.state;
152
165
 
153
166
  if (state) {
154
167
  if (state === 'inbound') return "".concat(_colors.BmPrimaryBlue);
@@ -162,14 +175,14 @@ var FileAttachmentWrapper = _styledComponents.default.div(_templateObject7 || (_
162
175
  /* max-height: 100%; */
163
176
  );
164
177
 
165
- var BmFileAttachment = function BmFileAttachment(_ref10) {
166
- var state = _ref10.state,
167
- file = _ref10.file,
168
- src = _ref10.src,
169
- fileName = _ref10.fileName,
170
- onDownload = _ref10.onDownload,
171
- link = _ref10.link,
172
- rest = _objectWithoutProperties(_ref10, _excluded);
178
+ var BmFileAttachment = function BmFileAttachment(_ref11) {
179
+ var state = _ref11.state,
180
+ file = _ref11.file,
181
+ src = _ref11.src,
182
+ fileName = _ref11.fileName,
183
+ onDownload = _ref11.onDownload,
184
+ link = _ref11.link,
185
+ rest = _objectWithoutProperties(_ref11, _excluded);
173
186
 
174
187
  return /*#__PURE__*/_react.default.createElement(FileAttachmentWrapper, _extends({
175
188
  state: state
@@ -184,8 +197,8 @@ var BmFileAttachment = function BmFileAttachment(_ref10) {
184
197
  }; // Start of Component for Images
185
198
 
186
199
 
187
- var BmImageWrapper = _styledComponents.default.div(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n color: ", ";\n border-radius: ", ";\n border: 0.071rem solid ", ";\n"])), function (_ref11) {
188
- var state = _ref11.state;
200
+ var BmImageWrapper = _styledComponents.default.div(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n color: ", ";\n border-radius: ", ";\n border: 0.071rem solid ", ";\n"])), function (_ref12) {
201
+ var state = _ref12.state;
189
202
 
190
203
  if (state) {
191
204
  if (state === 'inbound') return "".concat(_colors.BmPrimaryBlack);
@@ -193,8 +206,8 @@ var BmImageWrapper = _styledComponents.default.div(_templateObject8 || (_templat
193
206
  }
194
207
 
195
208
  return "".concat(_colors.BmPrimaryWhite);
196
- }, function (_ref12) {
197
- var state = _ref12.state;
209
+ }, function (_ref13) {
210
+ var state = _ref13.state;
198
211
 
199
212
  if (state) {
200
213
  if (state === 'inbound') return '0.21875rem 0.21875rem 0.21875rem 0rem';
@@ -212,11 +225,11 @@ var BmImage = _styledComponents.default.img(_templateObject9 || (_templateObject
212
225
 
213
226
  exports.BmImage = BmImage;
214
227
 
215
- var BmImageChat = function BmImageChat(_ref13) {
216
- var state = _ref13.state,
217
- src = _ref13.src,
218
- fileName = _ref13.fileName,
219
- rest = _objectWithoutProperties(_ref13, _excluded2);
228
+ var BmImageChat = function BmImageChat(_ref14) {
229
+ var state = _ref14.state,
230
+ src = _ref14.src,
231
+ fileName = _ref14.fileName,
232
+ rest = _objectWithoutProperties(_ref14, _excluded2);
220
233
 
221
234
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(BmImageWrapper, _extends({
222
235
  state: state
@@ -237,19 +250,23 @@ var MessageState = _styledComponents.default.div(_templateObject10 || (_template
237
250
 
238
251
  exports.MessageState = MessageState;
239
252
 
240
- BmChat.Details = function (_ref14) {
241
- var children = _ref14.children,
242
- state = _ref14.state,
243
- displayTime = _ref14.displayTime,
244
- status = _ref14.status,
245
- session = _ref14.session,
246
- src = _ref14.src,
247
- file = _ref14.file,
248
- fileName = _ref14.fileName,
249
- sessionDetails = _ref14.sessionDetails,
250
- rest = _objectWithoutProperties(_ref14, _excluded3);
251
-
252
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, sessionDetails && /*#__PURE__*/_react.default.createElement(_sessionDetails.SessionDetails, _extends({
253
+ BmChat.Details = function (_ref15) {
254
+ var children = _ref15.children,
255
+ state = _ref15.state,
256
+ displayTime = _ref15.displayTime,
257
+ status = _ref15.status,
258
+ session = _ref15.session,
259
+ src = _ref15.src,
260
+ file = _ref15.file,
261
+ fileName = _ref15.fileName,
262
+ sessionDetails = _ref15.sessionDetails,
263
+ sessionTimeline = _ref15.sessionTimeline,
264
+ feedPostComments = _ref15.feedPostComments,
265
+ rest = _objectWithoutProperties(_ref15, _excluded3);
266
+
267
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, sessionTimeline && /*#__PURE__*/_react.default.createElement(_sessionTimeline.SessionTimeline, _extends({
268
+ message: sessionTimeline.message
269
+ }, rest)), sessionDetails && /*#__PURE__*/_react.default.createElement(_sessionDetails.SessionDetails, _extends({
253
270
  time: sessionDetails.time,
254
271
  message: sessionDetails.message
255
272
  }, rest)), /*#__PURE__*/_react.default.createElement(Details, _extends({
@@ -257,7 +274,9 @@ BmChat.Details = function (_ref14) {
257
274
  }, rest), /*#__PURE__*/_react.default.createElement(MessageState, null, state === 'inbound' && session && handleState({
258
275
  state: state,
259
276
  session: session
260
- })), /*#__PURE__*/_react.default.createElement(MessageDetails, null, src && /*#__PURE__*/_react.default.createElement(BmImageChat, _extends({
277
+ })), /*#__PURE__*/_react.default.createElement(MessageDetails, {
278
+ feedPostComments: feedPostComments
279
+ }, src && /*#__PURE__*/_react.default.createElement(BmImageChat, _extends({
261
280
  state: state,
262
281
  src: src,
263
282
  fileName: fileName
@@ -267,7 +286,12 @@ BmChat.Details = function (_ref14) {
267
286
  file: file,
268
287
  fileName: fileName,
269
288
  state: state
270
- }, rest)), /*#__PURE__*/_react.default.createElement(MessagesSubDetails, null, displayTime && displayTime, status === 'sent' && /*#__PURE__*/_react.default.createElement(_iconStyles.BmIcons, {
289
+ }, rest)), feedPostComments && /*#__PURE__*/_react.default.createElement(_FeedPostComments.BmFeedPostComments, _extends({
290
+ state: state,
291
+ story: feedPostComments
292
+ }, rest)), /*#__PURE__*/_react.default.createElement(MessagesSubDetails, {
293
+ state: state
294
+ }, displayTime && displayTime, status === 'sent' && /*#__PURE__*/_react.default.createElement(_iconStyles.BmIcons, {
271
295
  icon: /*#__PURE__*/_react.default.createElement(_icons.DoneAll, null),
272
296
  color: "".concat(_colors.BmSecondaryDarkGreen),
273
297
  size: "small"
@@ -35,13 +35,21 @@ exports.default = _default;
35
35
 
36
36
  var ChatBody = function ChatBody() {
37
37
  return /*#__PURE__*/_react.default.createElement(_chatBody.default, null, /*#__PURE__*/_react.default.createElement(_chatBody.default.Body, null, /*#__PURE__*/_react.default.createElement(_chatBody.default.Details, {
38
- state: "inbound",
38
+ state: "outbound",
39
39
  session: "sms",
40
40
  displayTime: /*#__PURE__*/_react.default.createElement("p", null, "12:00pm"),
41
41
  status: "sent",
42
42
  sessionDetails: {
43
43
  message: /*#__PURE__*/_react.default.createElement("h3", null, "Session Message"),
44
44
  time: /*#__PURE__*/_react.default.createElement("p", null, "12:00pm")
45
+ },
46
+ feedPostComments: {
47
+ header: /*#__PURE__*/_react.default.createElement("p", null, "hello"),
48
+ body: {
49
+ link: /*#__PURE__*/_react.default.createElement("p", null, "This is a text"),
50
+ image: _chartImg.default
51
+ },
52
+ footer: /*#__PURE__*/_react.default.createElement("p", null, "This is a Footer")
45
53
  }
46
54
  }, /*#__PURE__*/_react.default.createElement("p", null, "Inbound Text Message")), /*#__PURE__*/_react.default.createElement(_chatBody.default.Details, {
47
55
  state: "inbound",
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SessionTimeline = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
12
+ var _colors = require("../../colors");
13
+
14
+ var _excluded = ["message", "time"];
15
+
16
+ var _templateObject, _templateObject2;
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
21
+
22
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
23
+
24
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
25
+
26
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
27
+
28
+ var SessionTimelineWrapper = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n text-align: center;\n"])));
29
+
30
+ var container = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n border-radius: 0.714rem 0.714rem 0.714rem 0.714rem;\n border: 0.071rem solid ", ";\n padding: 0.5rem;\n background-color: ", ";\n"])), _colors.BmBgGreyBlue, _colors.BmSecondaryBlue12);
31
+
32
+ SessionTimelineWrapper.Container = container;
33
+
34
+ var SessionTimeline = function SessionTimeline(_ref) {
35
+ var message = _ref.message,
36
+ time = _ref.time,
37
+ rest = _objectWithoutProperties(_ref, _excluded);
38
+
39
+ return /*#__PURE__*/_react.default.createElement(SessionTimelineWrapper, _extends({
40
+ message: message
41
+ }, rest), /*#__PURE__*/_react.default.createElement(SessionTimelineWrapper.Container, null, message || /*#__PURE__*/_react.default.createElement("p", null, "\xA0")));
42
+ };
43
+
44
+ exports.SessionTimeline = SessionTimeline;
@@ -17,6 +17,8 @@ var _fb = _interopRequireDefault(require("../../assets/fb.png"));
17
17
 
18
18
  var _insta = _interopRequireDefault(require("../../assets/insta.png"));
19
19
 
20
+ var _Google_Messages_logo = _interopRequireDefault(require("../../assets/Google_Messages_logo.png"));
21
+
20
22
  var _excluded = ["img", "content", "channel", "size"];
21
23
 
22
24
  var _templateObject, _templateObject2, _templateObject3, _templateObject4;
@@ -95,6 +97,10 @@ var BmProfileIcon = function BmProfileIcon(_ref) {
95
97
  size: size,
96
98
  src: _insta.default,
97
99
  alt: "icon"
100
+ }), channel && channel === 'google_business_messaging' && /*#__PURE__*/_react.default.createElement(Dot, {
101
+ size: size,
102
+ src: _Google_Messages_logo.default,
103
+ alt: "icon"
98
104
  })));
99
105
  };
100
106
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "beem-component",
3
- "version": "1.6.9",
3
+ "version": "1.7.2",
4
4
  "private": false,
5
5
  "main": "dist/components/index.js",
6
6
  "scripts": {
package/src/App.js CHANGED
@@ -1,11 +1,105 @@
1
1
  import React from 'react';
2
- import { BmTag } from './lib/components';
2
+
3
+ import AttachFileIcon from '@mui/icons-material/AttachFile';
4
+ import EmojiEmotionsIcon from '@mui/icons-material/EmojiEmotions';
5
+ import SendIcon from '@mui/icons-material/Send';
6
+ import QuickreplyIcon from '@mui/icons-material/Quickreply';
7
+ import {
8
+ BmChat,
9
+ BmInput,
10
+ BmIcons,
11
+ GlobalStyle,
12
+ BmProfileIcon,
13
+ } from './lib/components';
3
14
 
4
15
  const Chat = () => {
16
+ const image =
17
+ 'https://scontent.fnbo1-1.fna.fbcdn.net/v/t39.30808-6/298879098_10161724947807542_5252175668064009159_n.jpg?stp=dst-jpg_p720x720&_nc_cat=100&ccb=1-7&_nc_sid=9e2e56&_nc_ohc=9uDHII_ETpUAX_KNS3Y&_nc_ht=scontent.fnbo1-1.fna&edm=APCh5TUEAAAA&oh=00_AT8sOJmRGYwgXF48_GPOCWx1soil0yK8V3AiEPkce9WJIw&oe=6304120B';
5
18
  return (
6
- <BmTag bgColor="red" variant="primary" color="white">
7
- <p>Hello</p>
8
- </BmTag>
19
+ <>
20
+ <GlobalStyle />
21
+ <BmProfileIcon channel="google_business_messaging" />
22
+ <BmChat>
23
+ <BmChat.Body>
24
+ <BmChat.Details
25
+ state="outbound"
26
+ session="sms"
27
+ displayTime={<p>12:00pm</p>}
28
+ status="sent"
29
+ sessionTimeline={{
30
+ message: <p>2022-07-28</p>,
31
+ // time: <p>12:00pm</p>,
32
+ }}
33
+ feedPostComments={{
34
+ header: <p>hello</p>,
35
+ body: {
36
+ link: <p>This is a body</p>,
37
+ image,
38
+ },
39
+ footer: <p>This is a footer</p>,
40
+ }}
41
+ />
42
+
43
+ <BmChat.Details
44
+ state="inbound"
45
+ session="live"
46
+ displayTime={<p>12:00pm</p>}
47
+ status="sent"
48
+ fileName={<p>chat.png</p>}
49
+ src={image}
50
+ sessionDetails={{
51
+ message: <h3>Session Message</h3>,
52
+ time: <p>12:00pm</p>,
53
+ }}
54
+ />
55
+ <BmChat.Details
56
+ state="inbound"
57
+ session="live"
58
+ displayTime={<p>10:00am</p>}
59
+ status="failed"
60
+ fileName={<p>file.csv</p>}
61
+ file={image}
62
+ />
63
+ <BmChat.Details
64
+ state="outbound"
65
+ session="bot"
66
+ displayTime={<p>12:00pm</p>}
67
+ status="sent"
68
+ >
69
+ <p>Outbound Text Message</p>
70
+ </BmChat.Details>
71
+ <BmChat.Details
72
+ state="outbound"
73
+ session="live"
74
+ displayTime={<p>12:00pm</p>}
75
+ status="sent"
76
+ fileName={<p>chat.png</p>}
77
+ src={image}
78
+ />
79
+ <BmChat.Details
80
+ state="outbound"
81
+ session="live"
82
+ displayTime={<p>10:00am</p>}
83
+ status="failed"
84
+ fileName={<p>file.csv</p>}
85
+ file={image}
86
+ link={image}
87
+ onDownload={() => {
88
+ alert('hello');
89
+ }}
90
+ />
91
+ </BmChat.Body>
92
+ <BmChat.Footer>
93
+ <div className="chat-footer">
94
+ <BmIcons icon={<EmojiEmotionsIcon />} size="xlarge" />
95
+ <BmIcons icon={<AttachFileIcon />} size="xlarge" />
96
+ <BmIcons icon={<QuickreplyIcon />} size="xlarge" />
97
+ <BmInput placeholder="Enter Message" style={{ flex: '1' }} />
98
+ <BmIcons icon={<SendIcon />} size="xlarge" />
99
+ </div>
100
+ </BmChat.Footer>
101
+ </BmChat>
102
+ </>
9
103
  );
10
104
  };
11
105
 
@@ -0,0 +1,67 @@
1
+ import React from 'react';
2
+ import styled from 'styled-components';
3
+ import BmCard from '../../Cards/cards';
4
+
5
+ const Image = styled.img`
6
+ max-width: 30%;
7
+ width: 30%;
8
+ `;
9
+ const LinkText = styled.div`
10
+ display: flex;
11
+ max-width: 70%;
12
+ width: 70%;
13
+ align-items: center;
14
+ > * {
15
+ word-wrap: break-word !important;
16
+ word-break: break-word;
17
+ }
18
+ `;
19
+
20
+ const Wrapper = styled.div`
21
+ display: flex;
22
+ flex-direction: row;
23
+ word-wrap: break-word !important;
24
+ word-break: break-word;
25
+ > * {
26
+ word-wrap: break-word !important;
27
+ word-break: break-word !important;
28
+ }
29
+ `;
30
+
31
+ const CardWrapper = styled.div`
32
+ display: flex;
33
+ width: 50%;
34
+ max-width: 50%;
35
+ margin-left: ${({ state }) => {
36
+ if (state) {
37
+ if (state === 'inbound') return '0rem';
38
+ if (state === 'outbound') return 'auto';
39
+ }
40
+ return '0rem';
41
+ }};
42
+ `;
43
+
44
+ export const BmFeedPostComments = ({ story, state, ...rest }) => {
45
+ return (
46
+ story && (
47
+ <CardWrapper state={state} {...rest}>
48
+ <BmCard state={state} {...rest}>
49
+ {story.header && <BmCard.Header>{story.header}</BmCard.Header>}
50
+ {story.body && (
51
+ <BmCard.Body>
52
+ <Wrapper>
53
+ <LinkText>{story.body.link}</LinkText>
54
+ {story.body.image && <Image src={story.body.image} alt="src" />}
55
+ </Wrapper>
56
+ </BmCard.Body>
57
+ )}
58
+ {story.footer && (
59
+ <BmCard.Footer>
60
+ <Wrapper>{story.footer}</Wrapper>
61
+ </BmCard.Footer>
62
+ )}
63
+ </BmCard>
64
+ </CardWrapper>
65
+ )
66
+ );
67
+ };
@@ -7,6 +7,7 @@ import styled from 'styled-components';
7
7
  import BmAvatar from '../../Avatars/avatars';
8
8
  import { BmIcons } from '../../iconStyles';
9
9
  import { SessionDetails } from './sessionDetails';
10
+ import { SessionTimeline } from './sessionTimeline';
10
11
  import {
11
12
  BmPrimaryWhite,
12
13
  BmPrimaryBlue,
@@ -14,6 +15,7 @@ import {
14
15
  BmSecondaryDarkGreen,
15
16
  BmGrey200,
16
17
  } from '../../colors';
18
+ import { BmFeedPostComments } from './FeedPostComments';
17
19
 
18
20
  const BmChat = styled.div`
19
21
  display: flex;
@@ -90,7 +92,7 @@ const Messages = styled.div`
90
92
  return `${BmPrimaryWhite}`;
91
93
  }};
92
94
  border: 0.071rem solid ${BmGrey200};
93
- word-break: keep-all;
95
+ word-break: break-word;
94
96
  margin: 0rem;
95
97
  `;
96
98
 
@@ -101,6 +103,13 @@ const MessagesSubDetails = styled.div`
101
103
  > *:not(:last-child) {
102
104
  margin-right: 0.5rem;
103
105
  }
106
+ margin-left: ${({ state }) => {
107
+ if (state) {
108
+ if (state === 'inbound') return '0px';
109
+ if (state === 'outbound') return 'auto';
110
+ }
111
+ return `${BmPrimaryWhite}`;
112
+ }};
104
113
  margin-top: 0.5rem;
105
114
  `;
106
115
 
@@ -250,10 +259,15 @@ BmChat.Details = ({
250
259
  file,
251
260
  fileName,
252
261
  sessionDetails,
262
+ sessionTimeline,
263
+ feedPostComments,
253
264
  ...rest
254
265
  }) => {
255
266
  return (
256
267
  <>
268
+ {sessionTimeline && (
269
+ <SessionTimeline message={sessionTimeline.message} {...rest} />
270
+ )}
257
271
  {sessionDetails && (
258
272
  <SessionDetails
259
273
  time={sessionDetails.time}
@@ -266,7 +280,7 @@ BmChat.Details = ({
266
280
  <MessageState>
267
281
  {state === 'inbound' && session && handleState({ state, session })}
268
282
  </MessageState>
269
- <MessageDetails>
283
+ <MessageDetails feedPostComments={feedPostComments}>
270
284
  {/* For Images */}
271
285
  {src && (
272
286
  <BmImageChat
@@ -287,7 +301,14 @@ BmChat.Details = ({
287
301
  {...rest}
288
302
  />
289
303
  )}
290
- <MessagesSubDetails>
304
+ {feedPostComments && (
305
+ <BmFeedPostComments
306
+ state={state}
307
+ story={feedPostComments}
308
+ {...rest}
309
+ />
310
+ )}
311
+ <MessagesSubDetails state={state}>
291
312
  {displayTime && displayTime}
292
313
  {status === 'sent' && (
293
314
  <BmIcons
@@ -19,7 +19,7 @@ export const ChatBody = () => {
19
19
  <BmChat>
20
20
  <BmChat.Body>
21
21
  <BmChat.Details
22
- state="inbound"
22
+ state="outbound"
23
23
  session="sms"
24
24
  displayTime={<p>12:00pm</p>}
25
25
  status="sent"
@@ -27,6 +27,14 @@ export const ChatBody = () => {
27
27
  message: <h3>Session Message</h3>,
28
28
  time: <p>12:00pm</p>,
29
29
  }}
30
+ feedPostComments={{
31
+ header: <p>hello</p>,
32
+ body: {
33
+ link: <p>This is a text</p>,
34
+ image,
35
+ },
36
+ footer: <p>This is a Footer</p>,
37
+ }}
30
38
  >
31
39
  <p>Inbound Text Message</p>
32
40
  </BmChat.Details>
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import styled from 'styled-components';
3
+ import { BmSecondaryBlue12, BmBgGreyBlue } from '../../colors';
4
+
5
+ const SessionTimelineWrapper = styled.div`
6
+ display: flex;
7
+ flex-direction: row;
8
+ justify-content: center;
9
+ align-items: center;
10
+ text-align: center;
11
+ `;
12
+
13
+ const container = styled.div`
14
+ border-radius: 0.714rem 0.714rem 0.714rem 0.714rem;
15
+ border: 0.071rem solid ${BmBgGreyBlue};
16
+ padding: 0.5rem;
17
+ background-color: ${BmSecondaryBlue12};
18
+ `;
19
+ SessionTimelineWrapper.Container = container;
20
+
21
+ export const SessionTimeline = ({ message, time, ...rest }) => {
22
+ return (
23
+ <SessionTimelineWrapper message={message} {...rest}>
24
+ <SessionTimelineWrapper.Container>
25
+ {message || <p>&nbsp;</p>}
26
+ </SessionTimelineWrapper.Container>
27
+ </SessionTimelineWrapper>
28
+ );
29
+ };
@@ -4,6 +4,7 @@ import { BmSecondaryBlue12, BmBgLightBlue } from '../colors';
4
4
  import wa from '../../assets/wa.png';
5
5
  import fb from '../../assets/fb.png';
6
6
  import insta from '../../assets/insta.png';
7
+ import gbm from '../../assets/Google_Messages_logo.png';
7
8
 
8
9
  const handleSize = (size) => {
9
10
  if (size) {
@@ -76,6 +77,9 @@ export const BmProfileIcon = ({ img, content, channel, size, ...rest }) => {
76
77
  {channel && channel === 'instagram' && (
77
78
  <Dot size={size} src={insta} alt="icon" />
78
79
  )}
80
+ {channel && channel === 'google_business_messaging' && (
81
+ <Dot size={size} src={gbm} alt="icon" />
82
+ )}
79
83
  </Profile>
80
84
  </>
81
85
  );