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.
- package/dist/assets/Google_Messages_logo.png +0 -0
- package/dist/components/ChatComponents/ChatBody/FeedPostComments.js +60 -0
- package/dist/components/ChatComponents/ChatBody/chatBody.js +69 -45
- package/dist/components/ChatComponents/ChatBody/chatBody.stories.js +9 -1
- package/dist/components/ChatComponents/ChatBody/sessionTimeline.js +44 -0
- package/dist/components/ProfileIcon/ProfileIcon.js +6 -0
- package/package.json +1 -1
- package/src/App.js +98 -4
- package/src/lib/assets/Google_Messages_logo.png +0 -0
- package/src/lib/components/ChatComponents/ChatBody/FeedPostComments.js +67 -0
- package/src/lib/components/ChatComponents/ChatBody/chatBody.js +24 -3
- package/src/lib/components/ChatComponents/ChatBody/chatBody.stories.js +9 -1
- package/src/lib/components/ChatComponents/ChatBody/sessionTimeline.js +29 -0
- package/src/lib/components/ProfileIcon/ProfileIcon.js +4 -0
|
Binary file
|
|
@@ -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:
|
|
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
|
-
|
|
98
|
-
|
|
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 (
|
|
124
|
-
var 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 (
|
|
133
|
-
var 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 (
|
|
142
|
-
var 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 (
|
|
151
|
-
var 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(
|
|
166
|
-
var state =
|
|
167
|
-
file =
|
|
168
|
-
src =
|
|
169
|
-
fileName =
|
|
170
|
-
onDownload =
|
|
171
|
-
link =
|
|
172
|
-
rest = _objectWithoutProperties(
|
|
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 (
|
|
188
|
-
var 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 (
|
|
197
|
-
var 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(
|
|
216
|
-
var state =
|
|
217
|
-
src =
|
|
218
|
-
fileName =
|
|
219
|
-
rest = _objectWithoutProperties(
|
|
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 (
|
|
241
|
-
var children =
|
|
242
|
-
state =
|
|
243
|
-
displayTime =
|
|
244
|
-
status =
|
|
245
|
-
session =
|
|
246
|
-
src =
|
|
247
|
-
file =
|
|
248
|
-
fileName =
|
|
249
|
-
sessionDetails =
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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,
|
|
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)),
|
|
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: "
|
|
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
package/src/App.js
CHANGED
|
@@ -1,11 +1,105 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
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
|
-
|
|
7
|
-
<
|
|
8
|
-
|
|
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
|
|
|
Binary file
|
|
@@ -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:
|
|
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
|
-
|
|
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="
|
|
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> </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
|
);
|