pds-dev-kit-web 1.4.33 → 1.4.36

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.
Files changed (59) hide show
  1. package/dist/index.d.ts +4 -4
  2. package/dist/index.js +5 -3
  3. package/dist/src/common/styles/colorSet/PaletteColor_Dark.json +2 -1
  4. package/dist/src/common/styles/colorSet/PaletteColor_light.json +2 -1
  5. package/dist/src/common/styles/colorSet/UIColor.json +14 -1
  6. package/dist/src/common/styles/colorSet/index.d.ts +77 -62
  7. package/dist/src/common/styles/colorSet/index.js +4 -4
  8. package/dist/src/common/styles/colorSet/ui-type.d.ts +13 -0
  9. package/dist/src/desktop/components/ChatBubbleListItem/ChatBubble.d.ts +8 -0
  10. package/dist/src/desktop/components/ChatBubbleListItem/ChatBubble.js +76 -0
  11. package/dist/src/desktop/components/ChatBubbleListItem/ChatBubbleListItem.d.ts +17 -0
  12. package/dist/src/desktop/components/ChatBubbleListItem/ChatBubbleListItem.js +160 -0
  13. package/dist/src/desktop/components/ChatBubbleListItem/Popup.d.ts +19 -0
  14. package/dist/src/desktop/components/ChatBubbleListItem/Popup.js +238 -0
  15. package/dist/src/desktop/components/ChatBubbleListItem/index.d.ts +1 -0
  16. package/dist/src/desktop/components/ChatBubbleListItem/index.js +8 -0
  17. package/dist/src/desktop/components/ChatList/Body.d.ts +2 -2
  18. package/dist/src/desktop/components/ChatList/Body.js +18 -8
  19. package/dist/src/desktop/components/ChatList/ChatList.d.ts +22 -1
  20. package/dist/src/desktop/components/ChatList/ChatList.js +5 -5
  21. package/dist/src/desktop/components/ChatList/ChatTextField.d.ts +22 -4
  22. package/dist/src/desktop/components/ChatList/ChatTextField.js +18 -2
  23. package/dist/src/desktop/components/ChatList/Footer.d.ts +21 -3
  24. package/dist/src/desktop/components/ChatList/Footer.js +2 -2
  25. package/dist/src/desktop/components/ChatList/Header.d.ts +2 -2
  26. package/dist/src/desktop/components/ChatList/Header.js +6 -3
  27. package/dist/src/desktop/components/Dropdown/Dropdown.js +1 -1
  28. package/dist/src/desktop/components/index.d.ts +2 -1
  29. package/dist/src/desktop/components/index.js +3 -1
  30. package/dist/src/desktop/index.d.ts +2 -2
  31. package/dist/src/desktop/index.js +3 -2
  32. package/dist/src/desktop/panels/DesktopBasicModal/DesktopBasicModal.js +7 -4
  33. package/dist/src/mobile/components/ChatBubbleListItem/ChatBubble.d.ts +8 -0
  34. package/dist/src/mobile/components/ChatBubbleListItem/ChatBubble.js +76 -0
  35. package/dist/src/mobile/components/ChatBubbleListItem/ChatBubbleListItem.d.ts +17 -0
  36. package/dist/src/mobile/components/ChatBubbleListItem/ChatBubbleListItem.js +160 -0
  37. package/dist/src/mobile/components/ChatBubbleListItem/Popup.d.ts +19 -0
  38. package/dist/src/mobile/components/ChatBubbleListItem/Popup.js +238 -0
  39. package/dist/src/mobile/components/ChatBubbleListItem/index.d.ts +1 -0
  40. package/dist/src/mobile/components/ChatBubbleListItem/index.js +8 -0
  41. package/dist/src/mobile/components/ChatList/Body.d.ts +2 -2
  42. package/dist/src/mobile/components/ChatList/Body.js +18 -8
  43. package/dist/src/mobile/components/ChatList/ChatList.d.ts +22 -1
  44. package/dist/src/mobile/components/ChatList/ChatList.js +5 -5
  45. package/dist/src/mobile/components/ChatList/ChatTextField.d.ts +22 -4
  46. package/dist/src/mobile/components/ChatList/ChatTextField.js +18 -2
  47. package/dist/src/mobile/components/ChatList/Footer.d.ts +21 -3
  48. package/dist/src/mobile/components/ChatList/Footer.js +2 -2
  49. package/dist/src/mobile/components/ChatList/Header.d.ts +2 -2
  50. package/dist/src/mobile/components/ChatList/Header.js +6 -3
  51. package/dist/src/mobile/components/Dropdown/Dropdown.js +1 -1
  52. package/dist/src/mobile/components/MobileHeaderBar/MobileHeaderBar.d.ts +2 -1
  53. package/dist/src/mobile/components/MobileHeaderBar/MobileHeaderBar.js +22 -12
  54. package/dist/src/mobile/components/index.d.ts +2 -1
  55. package/dist/src/mobile/components/index.js +3 -1
  56. package/dist/src/mobile/index.d.ts +2 -2
  57. package/dist/src/mobile/index.js +2 -1
  58. package/package.json +1 -1
  59. package/release-note.md +14 -3
@@ -9,7 +9,7 @@ import { LayoutWT } from './layout/LayoutWT';
9
9
  import { GlobalMenuContainer as WTGlobalMenuContainer } from './layout/LayoutWT/Containers';
10
10
  import { ContainersBox as WTContainersBox } from './layout/LayoutWT/ContainersBox';
11
11
  export { LayoutWT, WTGlobalMenuContainer, WTContainersBox };
12
- import { AdminList as D_AdminList, AdminListHeader as D_AdminListHeader, AdminListItem as D_AdminListItem, BasicChatListItem as D_BasicChatListItem, BasicFormGroup as D_BasicFormGroup, BasicList as D_BasicList, BasicListItem as D_BasicListItem, BlogTextField as D_BlogTextField, BodyTextGroup as D_BodyTextGroup, Card as D_Card, CardList as D_CardList, ChatList as D_ChatList, Checkbox as D_Checkbox, Chip as D_Chip, ContextMenu as D_ContextMenu, ContextMenuItem as D_ContextMenuItem, DesktopAlertDialog as D_DesktopAlertDialog, DesktopHeaderBar as D_DesktopHeaderBar, DesktopTabBar as D_DesktopTabBar, Dropdown as D_Dropdown, DynamicDesktopNavBar as D_DynamicDesktopNavBar, DynamicDesktopNavBarTemplates as D_DynamicDesktopNavBarTemplates, EditApplyTextField as D_EditApplyTextField, FilterBar as D_FilterBar, FloatingActionButton as D_FloatingActionButton, Hero as D_Hero, HorizontalFormGroup as D_HorizontalFormGroup, IconButton as D_IconButton, ImageSlide as D_ImageSlide, MainButton as D_MainButton, PageTitleTextGroup as D_PageTitleTextGroup, Radio as D_Radio, ReactionButton as D_ReactionButton, Select as D_Select, StatusBlock as D_StatusBlock, TextButton as D_TextButton, TextField as D_TextField, TextLabel as D_TextLabel, UploadIconButton as D_UploadIconButton, UploadMainButton as D_UploadMainButton, UploadTextButton as D_UploadTextButton, UserDesktopNavBar as D_UserDesktopNavBar, UserDesktopTabBar as D_UserDesktopTabBar, UserDesktopSideTab as D_UserDesktopSideTab } from './components';
13
- export { D_AdminList, D_AdminListHeader, D_AdminListItem, D_BasicChatListItem, D_BasicFormGroup, D_BasicList, D_BasicListItem, D_BlogTextField, D_BodyTextGroup, D_Card, D_CardList, D_ChatList, D_Checkbox, D_Chip, D_ContextMenu, D_ContextMenuItem, D_DesktopAlertDialog, D_DesktopHeaderBar, D_DesktopTabBar, D_Dropdown, D_DynamicDesktopNavBar, D_DynamicDesktopNavBarTemplates, D_EditApplyTextField, D_FilterBar, D_FloatingActionButton, D_Hero, D_HorizontalFormGroup, D_IconButton, D_ImageSlide, D_MainButton, D_PageTitleTextGroup, D_Radio, D_Select, D_ReactionButton, D_StatusBlock, D_TextButton, D_TextField, D_TextLabel, D_UploadIconButton, D_UploadMainButton, D_UploadTextButton, D_UserDesktopNavBar, D_UserDesktopTabBar, D_UserDesktopSideTab };
12
+ import { AdminList as D_AdminList, AdminListHeader as D_AdminListHeader, AdminListItem as D_AdminListItem, BasicChatListItem as D_BasicChatListItem, BasicFormGroup as D_BasicFormGroup, BasicList as D_BasicList, BasicListItem as D_BasicListItem, BlogTextField as D_BlogTextField, BodyTextGroup as D_BodyTextGroup, Card as D_Card, CardList as D_CardList, ChatBubbleListItem as D_ChatBubbleListItem, ChatList as D_ChatList, Checkbox as D_Checkbox, Chip as D_Chip, ContextMenu as D_ContextMenu, ContextMenuItem as D_ContextMenuItem, DesktopAlertDialog as D_DesktopAlertDialog, DesktopHeaderBar as D_DesktopHeaderBar, DesktopTabBar as D_DesktopTabBar, Dropdown as D_Dropdown, DynamicDesktopNavBar as D_DynamicDesktopNavBar, DynamicDesktopNavBarTemplates as D_DynamicDesktopNavBarTemplates, EditApplyTextField as D_EditApplyTextField, FilterBar as D_FilterBar, FloatingActionButton as D_FloatingActionButton, Hero as D_Hero, HorizontalFormGroup as D_HorizontalFormGroup, IconButton as D_IconButton, ImageSlide as D_ImageSlide, MainButton as D_MainButton, PageTitleTextGroup as D_PageTitleTextGroup, Radio as D_Radio, ReactionButton as D_ReactionButton, Select as D_Select, StatusBlock as D_StatusBlock, TextButton as D_TextButton, TextField as D_TextField, TextLabel as D_TextLabel, UploadIconButton as D_UploadIconButton, UploadMainButton as D_UploadMainButton, UploadTextButton as D_UploadTextButton, UserDesktopNavBar as D_UserDesktopNavBar, UserDesktopTabBar as D_UserDesktopTabBar, UserDesktopSideTab as D_UserDesktopSideTab } from './components';
13
+ export { D_AdminList, D_AdminListHeader, D_AdminListItem, D_BasicChatListItem, D_BasicFormGroup, D_BasicList, D_BasicListItem, D_BlogTextField, D_BodyTextGroup, D_Card, D_CardList, D_ChatBubbleListItem, D_ChatList, D_Checkbox, D_Chip, D_ContextMenu, D_ContextMenuItem, D_DesktopAlertDialog, D_DesktopHeaderBar, D_DesktopTabBar, D_Dropdown, D_DynamicDesktopNavBar, D_DynamicDesktopNavBarTemplates, D_EditApplyTextField, D_FilterBar, D_FloatingActionButton, D_Hero, D_HorizontalFormGroup, D_IconButton, D_ImageSlide, D_MainButton, D_PageTitleTextGroup, D_Radio, D_Select, D_ReactionButton, D_StatusBlock, D_TextButton, D_TextField, D_TextLabel, D_UploadIconButton, D_UploadMainButton, D_UploadTextButton, D_UserDesktopNavBar, D_UserDesktopTabBar, D_UserDesktopSideTab };
14
14
  import { DesktopBasicModal as D_DesktopBasicModal, DesktopHeadlessModal as D_DesktopHeadlessModal } from './panels';
15
15
  export { D_DesktopBasicModal, D_DesktopHeadlessModal };
@@ -2,8 +2,8 @@
2
2
  /* eslint-disable import/order */
3
3
  /* eslint-disable import/first */
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.D_UserDesktopNavBar = exports.D_UploadTextButton = exports.D_UploadMainButton = exports.D_UploadIconButton = exports.D_TextLabel = exports.D_TextField = exports.D_TextButton = exports.D_StatusBlock = exports.D_ReactionButton = exports.D_Select = exports.D_Radio = exports.D_PageTitleTextGroup = exports.D_MainButton = exports.D_ImageSlide = exports.D_IconButton = exports.D_HorizontalFormGroup = exports.D_Hero = exports.D_FloatingActionButton = exports.D_FilterBar = exports.D_EditApplyTextField = exports.D_DynamicDesktopNavBarTemplates = exports.D_DynamicDesktopNavBar = exports.D_Dropdown = exports.D_DesktopTabBar = exports.D_DesktopHeaderBar = exports.D_DesktopAlertDialog = exports.D_ContextMenuItem = exports.D_ContextMenu = exports.D_Chip = exports.D_Checkbox = exports.D_ChatList = exports.D_CardList = exports.D_Card = exports.D_BodyTextGroup = exports.D_BlogTextField = exports.D_BasicListItem = exports.D_BasicList = exports.D_BasicFormGroup = exports.D_BasicChatListItem = exports.D_AdminListItem = exports.D_AdminListHeader = exports.D_AdminList = exports.WTContainersBox = exports.WTGlobalMenuContainer = exports.LayoutWT = exports.WSContainersBox = exports.WSGlobalMenuContainer = exports.LayoutWS = exports.WFContainersBox = exports.LayoutWF = void 0;
6
- exports.D_DesktopHeadlessModal = exports.D_DesktopBasicModal = exports.D_UserDesktopSideTab = exports.D_UserDesktopTabBar = void 0;
5
+ exports.D_UploadTextButton = exports.D_UploadMainButton = exports.D_UploadIconButton = exports.D_TextLabel = exports.D_TextField = exports.D_TextButton = exports.D_StatusBlock = exports.D_ReactionButton = exports.D_Select = exports.D_Radio = exports.D_PageTitleTextGroup = exports.D_MainButton = exports.D_ImageSlide = exports.D_IconButton = exports.D_HorizontalFormGroup = exports.D_Hero = exports.D_FloatingActionButton = exports.D_FilterBar = exports.D_EditApplyTextField = exports.D_DynamicDesktopNavBarTemplates = exports.D_DynamicDesktopNavBar = exports.D_Dropdown = exports.D_DesktopTabBar = exports.D_DesktopHeaderBar = exports.D_DesktopAlertDialog = exports.D_ContextMenuItem = exports.D_ContextMenu = exports.D_Chip = exports.D_Checkbox = exports.D_ChatList = exports.D_ChatBubbleListItem = exports.D_CardList = exports.D_Card = exports.D_BodyTextGroup = exports.D_BlogTextField = exports.D_BasicListItem = exports.D_BasicList = exports.D_BasicFormGroup = exports.D_BasicChatListItem = exports.D_AdminListItem = exports.D_AdminListHeader = exports.D_AdminList = exports.WTContainersBox = exports.WTGlobalMenuContainer = exports.LayoutWT = exports.WSContainersBox = exports.WSGlobalMenuContainer = exports.LayoutWS = exports.WFContainersBox = exports.LayoutWF = void 0;
6
+ exports.D_DesktopHeadlessModal = exports.D_DesktopBasicModal = exports.D_UserDesktopSideTab = exports.D_UserDesktopTabBar = exports.D_UserDesktopNavBar = void 0;
7
7
  // layoutWF
8
8
  var LayoutWF_1 = require("./layout/LayoutWF");
9
9
  Object.defineProperty(exports, "LayoutWF", { enumerable: true, get: function () { return LayoutWF_1.LayoutWF; } });
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "D_BlogTextField", { enumerable: true, get: funct
36
36
  Object.defineProperty(exports, "D_BodyTextGroup", { enumerable: true, get: function () { return components_1.BodyTextGroup; } });
37
37
  Object.defineProperty(exports, "D_Card", { enumerable: true, get: function () { return components_1.Card; } });
38
38
  Object.defineProperty(exports, "D_CardList", { enumerable: true, get: function () { return components_1.CardList; } });
39
+ Object.defineProperty(exports, "D_ChatBubbleListItem", { enumerable: true, get: function () { return components_1.ChatBubbleListItem; } });
39
40
  Object.defineProperty(exports, "D_ChatList", { enumerable: true, get: function () { return components_1.ChatList; } });
40
41
  Object.defineProperty(exports, "D_Checkbox", { enumerable: true, get: function () { return components_1.Checkbox; } });
41
42
  Object.defineProperty(exports, "D_Chip", { enumerable: true, get: function () { return components_1.Chip; } });
@@ -101,7 +101,10 @@ var S_Btn2Wrapper = styled_components_1.default.div(templateObject_4 || (templat
101
101
  return theme.spacing.spacingB;
102
102
  });
103
103
  var S_Right = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: flex;\n"], ["\n display: flex;\n"])));
104
- var S_Header = styled_components_1.default.div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n margin: 0 ", ";\n margin-bottom: ", ";\n margin-top: ", ";\n"], ["\n margin: 0 ", ";\n margin-bottom: ", ";\n margin-top: ", ";\n"])), function (_a) {
104
+ var S_Header = styled_components_1.default.div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n padding-left: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-top: ", ";\n"], ["\n padding-left: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-top: ", ";\n"])), function (_a) {
105
+ var theme = _a.theme;
106
+ return theme.spacing.spacingE;
107
+ }, function (_a) {
105
108
  var theme = _a.theme;
106
109
  return theme.spacing.spacingE;
107
110
  }, function (_a) {
@@ -111,7 +114,7 @@ var S_Header = styled_components_1.default.div(templateObject_6 || (templateObje
111
114
  var theme = _a.theme;
112
115
  return theme.spacing.spacingE;
113
116
  });
114
- var S_Body = styled_components_1.default.div(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n flex: 1;\n max-height: 50vh;\n margin-bottom: ", ";\n margin-left: ", ";\n margin-right: ", ";\n margin-top: ", ";\n overflow: ", ";\n\n ", "\n"], ["\n flex: 1;\n max-height: 50vh;\n margin-bottom: ", ";\n margin-left: ", ";\n margin-right: ", ";\n margin-top: ", ";\n overflow: ", ";\n\n ", "\n"])), function (_a) {
117
+ var S_Body = styled_components_1.default.div(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n flex: 1;\n max-height: 50vh;\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n padding-top: ", ";\n overflow: ", ";\n\n ", "\n"], ["\n flex: 1;\n max-height: 50vh;\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n padding-top: ", ";\n overflow: ", ";\n\n ", "\n"])), function (_a) {
115
118
  var theme = _a.theme;
116
119
  return theme.spacing.spacingF;
117
120
  }, function (_a) {
@@ -128,9 +131,9 @@ var S_Body = styled_components_1.default.div(templateObject_8 || (templateObject
128
131
  return bodyOverflowType;
129
132
  }, function (_a) {
130
133
  var bodySpacingMode = _a.bodySpacingMode;
131
- return bodySpacingMode === 'none' && (0, styled_components_1.css)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n margin-bottom: 0;\n margin-left: 0;\n margin-right: 0;\n "], ["\n margin-bottom: 0;\n margin-left: 0;\n margin-right: 0;\n "])));
134
+ return bodySpacingMode === 'none' && (0, styled_components_1.css)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n padding-bottom: 0;\n padding-left: 0;\n padding-right: 0;\n "], ["\n padding-bottom: 0;\n padding-left: 0;\n padding-right: 0;\n "])));
132
135
  });
133
- var S_Footer = styled_components_1.default.div(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n display: flex;\n justify-content: space-between;\n margin-bottom: ", ";\n margin-left: ", ";\n margin-right: ", ";\n margin-top: ", ";\n"], ["\n display: flex;\n justify-content: space-between;\n margin-bottom: ", ";\n margin-left: ", ";\n margin-right: ", ";\n margin-top: ", ";\n"])), function (_a) {
136
+ var S_Footer = styled_components_1.default.div(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n display: flex;\n justify-content: space-between;\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n padding-top: ", ";\n"], ["\n display: flex;\n justify-content: space-between;\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n padding-top: ", ";\n"])), function (_a) {
134
137
  var theme = _a.theme;
135
138
  return theme.spacing.spacingD;
136
139
  }, function (_a) {
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export declare type ChatBubbleProps = {
3
+ colorTheme?: 'my' | 'seller' | 'subscriber';
4
+ tailType?: 'none' | 'left_top' | 'right_top';
5
+ children?: React.ReactNode;
6
+ };
7
+ declare function ChatBubble({ colorTheme, tailType, children }: ChatBubbleProps): JSX.Element;
8
+ export default ChatBubble;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ var react_1 = __importDefault(require("react"));
30
+ var styled_components_1 = __importStar(require("styled-components"));
31
+ var backgroundColorTheme = {
32
+ my: 'ui_cpnt_list_chatbubble_base_area_my',
33
+ seller: 'ui_cpnt_list_chatbubble_base_area_seller',
34
+ subscriber: 'ui_cpnt_list_chatbubble_base_area_subscriber'
35
+ };
36
+ function ChatBubble(_a) {
37
+ var _b = _a.colorTheme, colorTheme = _b === void 0 ? 'seller' : _b, _c = _a.tailType, tailType = _c === void 0 ? 'left_top' : _c, children = _a.children;
38
+ return (react_1.default.createElement(S_ChatBubbleWrapper, null,
39
+ react_1.default.createElement(S_Tail, { width: "8", height: "11", viewBox: "0 0 8 11", tailType: tailType, colorTheme: colorTheme },
40
+ react_1.default.createElement("path", { d: "M1107,336.800385 C1107,341.257979 1107.46413,342.87441 1108.33566,344.50404 C1108.99708,345.740772 1109.89313,346.775532 1110.99903,347.583527 L1111,347.618755 L1110.99894,347.618755 C1108.35845,347.618755 1105.83748,347.107028 1103.52979,346.177337 C1104.54074,345.507794 1105.3496,344.61519 1105.93147,343.527194 C1106.6287,342.22349 1107,340.8866 1107,337.582996 L1107,337.582996 Z", transform: "rotate(180 555.765 173.81)" })),
41
+ react_1.default.createElement(S_ChatBubble, { colorTheme: colorTheme }, children)));
42
+ }
43
+ var none = (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: none;\n"], ["\n display: none;\n"])));
44
+ var left_top = (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n left: -4px;\n top: 0;\n"], ["\n left: -4px;\n top: 0;\n"])));
45
+ var right_top = (0, styled_components_1.css)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n transform: scaleX(-1);\n right: -4px;\n top: 0;\n"], ["\n transform: scaleX(-1);\n right: -4px;\n top: 0;\n"])));
46
+ var S_ChatBubbleWrapper = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: inline-block;\n position: relative;\n"], ["\n display: inline-block;\n position: relative;\n"])));
47
+ var S_ChatBubble = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n box-sizing: border-box;\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n\n background-color: ", ";\n border-radius: 8px;\n position: relative;\n max-width: 960px;\n min-width: 32px;\n"], ["\n box-sizing: border-box;\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n\n background-color: ", ";\n border-radius: 8px;\n position: relative;\n max-width: 960px;\n min-width: 32px;\n"])), function (_a) {
48
+ var theme = _a.theme;
49
+ return theme.spacing.spacingB;
50
+ }, function (_a) {
51
+ var theme = _a.theme;
52
+ return theme.spacing.spacingC;
53
+ }, function (_a) {
54
+ var theme = _a.theme;
55
+ return theme.spacing.spacingB;
56
+ }, function (_a) {
57
+ var theme = _a.theme;
58
+ return theme.spacing.spacingC;
59
+ }, function (_a) {
60
+ var colorTheme = _a.colorTheme, theme = _a.theme;
61
+ return colorTheme && theme[backgroundColorTheme[colorTheme]];
62
+ });
63
+ var S_Tail = styled_components_1.default.svg(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n position: absolute;\n fill: ", ";\n\n ", ";\n"], ["\n position: absolute;\n fill: ", ";\n\n ", ";\n"])), function (_a) {
64
+ var colorTheme = _a.colorTheme, theme = _a.theme;
65
+ return colorTheme && theme[backgroundColorTheme[colorTheme]];
66
+ }, function (_a) {
67
+ var tailType = _a.tailType;
68
+ return tailType &&
69
+ {
70
+ none: none,
71
+ left_top: left_top,
72
+ right_top: right_top
73
+ }[tailType];
74
+ });
75
+ exports.default = ChatBubble;
76
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { PDSTextType, PDSValueOption } from '../../../common';
3
+ export declare type ChatBubbleListItemProps = {
4
+ titleText?: PDSTextType;
5
+ imageMode?: 'none' | 'use';
6
+ imageSrc?: string;
7
+ hoverMode?: 'none' | 'use';
8
+ styleTheme?: 'seller_tail' | 'seller' | 'subscriber_tail' | 'subscriber' | 'my_tail' | 'my';
9
+ timeMode?: 'none' | 'use';
10
+ timeText?: PDSTextType;
11
+ contextMenuOptionArray?: PDSValueOption[];
12
+ contextMenuState?: 'normal' | 'disabled';
13
+ children?: React.ReactNode;
14
+ onClickContextMenuItem?: (option: PDSValueOption) => void;
15
+ };
16
+ declare function ChatBubbleListItem({ titleText, imageMode, imageSrc, hoverMode, styleTheme, timeMode, timeText, contextMenuOptionArray, contextMenuState, children, onClickContextMenuItem }: ChatBubbleListItemProps): JSX.Element;
17
+ export default ChatBubbleListItem;
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ var react_1 = __importStar(require("react"));
30
+ var styled_components_1 = __importStar(require("styled-components"));
31
+ var hybrid_1 = require("../../../hybrid");
32
+ var ContextMenu_1 = require("../ContextMenu");
33
+ var ContextMenuItem_1 = require("../ContextMenuItem");
34
+ var IconButton_1 = require("../IconButton");
35
+ var TextLabel_1 = require("../TextLabel");
36
+ var ChatBubble_1 = __importDefault(require("./ChatBubble"));
37
+ var Popup_1 = require("./Popup");
38
+ var ChatBubbleColorTheme = {
39
+ seller_tail: 'seller',
40
+ seller: 'seller',
41
+ subscriber_tail: 'subscriber',
42
+ subscriber: 'subscriber',
43
+ my_tail: 'my',
44
+ my: 'my'
45
+ };
46
+ var ChatBubbleTailType = {
47
+ seller_tail: 'left_top',
48
+ seller: 'none',
49
+ subscriber_tail: 'left_top',
50
+ subscriber: 'none',
51
+ my_tail: 'right_top',
52
+ my: 'none'
53
+ };
54
+ function ChatBubbleListItem(_a) {
55
+ var titleText = _a.titleText, _b = _a.imageMode, imageMode = _b === void 0 ? 'use' : _b, imageSrc = _a.imageSrc, _c = _a.hoverMode, hoverMode = _c === void 0 ? 'use' : _c, _d = _a.styleTheme, styleTheme = _d === void 0 ? 'seller_tail' : _d, _e = _a.timeMode, timeMode = _e === void 0 ? 'use' : _e, timeText = _a.timeText, contextMenuOptionArray = _a.contextMenuOptionArray, _f = _a.contextMenuState, contextMenuState = _f === void 0 ? 'normal' : _f, children = _a.children, onClickContextMenuItem = _a.onClickContextMenuItem;
56
+ var isMy = styleTheme.includes('my');
57
+ var isSeller = styleTheme.includes('seller');
58
+ var isTail = styleTheme.includes('tail');
59
+ var _g = (0, react_1.useState)(false), isContextMenuOpen = _g[0], setIsContextMenuOpen = _g[1];
60
+ var contextMenuRef = (0, react_1.useRef)(null);
61
+ var chatBody = document.querySelector('#chatMessageBox');
62
+ var rect = chatBody === null || chatBody === void 0 ? void 0 : chatBody.getBoundingClientRect();
63
+ /**
64
+ * @when contextMenu가 열려 있을 때
65
+ * @expected ChatList body의 스크롤을 숨기고, contextMenu의 외부를 클릭하면 contextMenu가 닫히도록 합니다.
66
+ * @clear document의 클릭 이벤트를 제거합니다.
67
+ */
68
+ (0, react_1.useEffect)(function () {
69
+ // NOTE pop up 개념이 생기기 전까지의 임시 조치 방법입니다.
70
+ if (!chatBody) {
71
+ return;
72
+ }
73
+ chatBody.style.overflowY = isContextMenuOpen ? 'hidden' : 'auto';
74
+ }, [isContextMenuOpen, chatBody]);
75
+ var handleMoreButtonClick = function (e) {
76
+ e.stopPropagation();
77
+ setIsContextMenuOpen(function (prev) { return !prev; });
78
+ };
79
+ var handleContextMenuItemClick = function (option) {
80
+ if (onClickContextMenuItem) {
81
+ onClickContextMenuItem(option);
82
+ }
83
+ setIsContextMenuOpen(false);
84
+ };
85
+ return (react_1.default.createElement(react_1.default.Fragment, null,
86
+ react_1.default.createElement(S_ChatBubbleListItem, { hoverMode: hoverMode, isMy: isMy, imageMode: imageMode },
87
+ imageMode === 'use' && (react_1.default.createElement(react_1.default.Fragment, null, isTail && !isMy ? (react_1.default.createElement(S_ImageViewWrapper, { isSeller: isSeller },
88
+ react_1.default.createElement(hybrid_1.ImageView, { shapeType: "circular", ratio: "1_1", scaleType: "cover", src: imageSrc, width: 40 }))) : (react_1.default.createElement(hybrid_1.Spacing, { size: "spacing_g", spacingType: "width" })))),
89
+ react_1.default.createElement(S_RightBox, null,
90
+ isTail && !isMy && (react_1.default.createElement(react_1.default.Fragment, null,
91
+ react_1.default.createElement(TextLabel_1.TextLabel, { text: titleText, styleTheme: "caption1Bold", colorTheme: isSeller ? 'usrTextBrandPrimary' : 'sysTextPrimary' }),
92
+ react_1.default.createElement(hybrid_1.Spacing, { size: "spacing_b" }))),
93
+ react_1.default.createElement(S_ChatBubbleBox, null,
94
+ react_1.default.createElement(S_ChatBubbleWrapper, { isMy: isMy },
95
+ timeMode === 'use' && timeText && isMy && (react_1.default.createElement(S_TimeWrapper, null,
96
+ react_1.default.createElement(TextLabel_1.TextLabel, { text: timeText, styleTheme: "caption2Regular", colorTheme: "sysTextTertiary", singleLineMode: "use" }),
97
+ react_1.default.createElement(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" }))),
98
+ react_1.default.createElement(ChatBubble_1.default, { colorTheme: ChatBubbleColorTheme[styleTheme], tailType: ChatBubbleTailType[styleTheme] }, children),
99
+ timeMode === 'use' && timeText && !isMy && (react_1.default.createElement(S_TimeWrapper, null,
100
+ react_1.default.createElement(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" }),
101
+ react_1.default.createElement(TextLabel_1.TextLabel, { text: timeText, styleTheme: "caption2Regular", colorTheme: "sysTextTertiary", singleLineMode: "use" })))),
102
+ hoverMode === 'use' && !isMy && (react_1.default.createElement(S_SeeMoreButton, { isContextMenuOpen: isContextMenuOpen, ref: contextMenuRef },
103
+ react_1.default.createElement(IconButton_1.IconButton, { fillType: "fill", baseSize: "xsmall", iconFillType: "fill", iconSize: 20, iconName: "ic_more", baseColorKey: "ui_cpnt_button_fill_base_transparent", iconColorKey: "ui_cpnt_button_icon_enabled", onClick: handleMoreButtonClick }))))),
104
+ react_1.default.createElement(Popup_1.PopupProvider, null,
105
+ react_1.default.createElement(Popup_1.Popup, { targetRef: contextMenuRef, isOpen: isContextMenuOpen, placement: "v-auto", wrapperHeight: rect === null || rect === void 0 ? void 0 : rect.height, onClickOutside: function () { return setIsContextMenuOpen(false); } },
106
+ react_1.default.createElement(ContextMenu_1.ContextMenu, null, contextMenuOptionArray === null || contextMenuOptionArray === void 0 ? void 0 : contextMenuOptionArray.map(function (el) { return (react_1.default.createElement(ContextMenuItem_1.ContextMenuItem, { key: el.value, option: el, onClick: handleContextMenuItemClick, state: contextMenuState })); })))))));
107
+ }
108
+ var S_SeeMoreButton = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n box-sizing: border-box;\n width: 48px;\n height: 24px;\n min-width: 48px;\n padding-right: ", ";\n margin-top: ", ";\n position: relative;\n visibility: ", ";\n display: flex;\n justify-content: right;\n"], ["\n box-sizing: border-box;\n width: 48px;\n height: 24px;\n min-width: 48px;\n padding-right: ", ";\n margin-top: ", ";\n position: relative;\n visibility: ", ";\n display: flex;\n justify-content: right;\n"])), function (_a) {
109
+ var theme = _a.theme;
110
+ return theme.spacing.spacingB;
111
+ }, function (_a) {
112
+ var theme = _a.theme;
113
+ return theme.spacing.spacingB;
114
+ }, function (_a) {
115
+ var isContextMenuOpen = _a.isContextMenuOpen;
116
+ return (isContextMenuOpen ? 'visible' : 'hidden');
117
+ });
118
+ var MyChatBubbleListItem = (0, styled_components_1.css)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n margin-right: ", ";\n"], ["\n margin-right: ", ";\n"])), function (_a) {
119
+ var theme = _a.theme;
120
+ return theme.spacing.spacingA;
121
+ });
122
+ var NoImageChatBubbleListItem = (0, styled_components_1.css)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n margin-left: ", ";\n"], ["\n margin-left: ", ";\n"])), function (_a) {
123
+ var theme = _a.theme;
124
+ return theme.spacing.spacingA;
125
+ });
126
+ var S_ChatBubbleListItem = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: flex;\n height: fit-content;\n max-width: 100%;\n\n :hover {\n ", " {\n visibility: ", ";\n }\n }\n\n ", ";\n ", ";\n"], ["\n display: flex;\n height: fit-content;\n max-width: 100%;\n\n :hover {\n ", " {\n visibility: ", ";\n }\n }\n\n ", ";\n ", ";\n"])), S_SeeMoreButton, function (_a) {
127
+ var hoverMode = _a.hoverMode;
128
+ return hoverMode === 'use' && 'visible';
129
+ }, function (_a) {
130
+ var isMy = _a.isMy;
131
+ return isMy && MyChatBubbleListItem;
132
+ }, function (_a) {
133
+ var imageMode = _a.imageMode;
134
+ return imageMode === 'none' && NoImageChatBubbleListItem;
135
+ });
136
+ var ImageViewSeller = (0, styled_components_1.css)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n box-shadow: 0 0 0 2px ", " inset;\n"], ["\n box-shadow: 0 0 0 2px ", " inset;\n"])), function (_a) {
137
+ var theme = _a.theme;
138
+ return theme.ui_profile_image_border_brandprimary;
139
+ });
140
+ var ImageViewDefault = (0, styled_components_1.css)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n box-shadow: 0 0 0 1px ", " inset;\n"], ["\n box-shadow: 0 0 0 1px ", " inset;\n"])), function (_a) {
141
+ var theme = _a.theme;
142
+ return theme.ui_profile_image_border;
143
+ });
144
+ var S_ImageViewWrapper = styled_components_1.default.div(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n border-radius: 50%;\n height: fit-content;\n min-width: fit-content;\n width: fit-content;\n margin-right: ", ";\n position: relative;\n\n &::after {\n content: '';\n box-sizing: border-box;\n border-radius: 50%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n ", ";\n }\n"], ["\n border-radius: 50%;\n height: fit-content;\n min-width: fit-content;\n width: fit-content;\n margin-right: ", ";\n position: relative;\n\n &::after {\n content: '';\n box-sizing: border-box;\n border-radius: 50%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n ", ";\n }\n"])), function (_a) {
145
+ var theme = _a.theme;
146
+ return theme.spacing.spacingB;
147
+ }, function (_a) {
148
+ var isSeller = _a.isSeller;
149
+ return (isSeller ? ImageViewSeller : ImageViewDefault);
150
+ });
151
+ var S_RightBox = styled_components_1.default.div(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n flex: 1;\n"], ["\n flex: 1;\n"])));
152
+ var S_ChatBubbleBox = styled_components_1.default.div(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n display: flex;\n justify-content: space-between;\n"], ["\n display: flex;\n justify-content: space-between;\n"])));
153
+ var MyChatBubble = (0, styled_components_1.css)(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n justify-content: end;\n"], ["\n justify-content: end;\n"])));
154
+ var S_ChatBubbleWrapper = styled_components_1.default.div(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n flex: 1;\n display: flex;\n\n ", ";\n"], ["\n flex: 1;\n display: flex;\n\n ", ";\n"])), function (_a) {
155
+ var isMy = _a.isMy;
156
+ return isMy && MyChatBubble;
157
+ });
158
+ var S_TimeWrapper = styled_components_1.default.div(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n align-self: end;\n display: flex;\n"], ["\n align-self: end;\n display: flex;\n"])));
159
+ exports.default = ChatBubbleListItem;
160
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12;
@@ -0,0 +1,19 @@
1
+ import React, { MutableRefObject } from 'react';
2
+ declare type Props = {
3
+ targetRef: MutableRefObject<HTMLElement | null>;
4
+ isOpen: boolean;
5
+ onClickOutside?: () => void;
6
+ onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
7
+ placement: string;
8
+ wrapperHeight?: number;
9
+ children: React.ReactNode;
10
+ };
11
+ declare function Popup({ targetRef, isOpen, onClickOutside, onClick, placement, wrapperHeight, children }: Props): JSX.Element;
12
+ /**
13
+ * 팝업 루트 프로바이더
14
+ * 팝업을 사용하기 위해서는 팝업 프로바이더가 상위 컴포넌트로 있어야 합니다.
15
+ */
16
+ declare function PopupProvider({ children }: {
17
+ children: React.ReactNode;
18
+ }): JSX.Element;
19
+ export { PopupProvider, Popup };
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.Popup = exports.PopupProvider = void 0;
30
+ var react_1 = __importStar(require("react"));
31
+ var react_dom_1 = require("react-dom");
32
+ var styled_components_1 = __importDefault(require("styled-components"));
33
+ var PopupContext = (0, react_1.createContext)({
34
+ current: null
35
+ });
36
+ function getHAutoPlacement(_a) {
37
+ var targetRect = _a.targetRect, popupRect = _a.popupRect;
38
+ var leftSpaced = targetRect.right + popupRect.width > window.innerWidth;
39
+ var topSpaced = targetRect.bottom + popupRect.height > window.innerHeight;
40
+ return (leftSpaced ? 'left' : 'right') + "-" + (topSpaced ? 'end' : 'start');
41
+ }
42
+ function getVAutoPlacement(_a) {
43
+ var targetRect = _a.targetRect, popupRect = _a.popupRect, wrapperHeight = _a.wrapperHeight;
44
+ var leftSpaced = targetRect.right + popupRect.width > window.innerWidth;
45
+ var topSpaced = targetRect.bottom + popupRect.height > (wrapperHeight || window.innerWidth);
46
+ return (topSpaced ? 'top' : 'bottom') + "-" + (leftSpaced ? 'end' : 'start');
47
+ }
48
+ function getVCenterPlacement(_a) {
49
+ var targetRect = _a.targetRect, popupRect = _a.popupRect;
50
+ var leftSpaced = targetRect.right + popupRect.width > window.innerWidth;
51
+ return leftSpaced ? 'left-center' : 'right-center';
52
+ }
53
+ function getHCenterPlacement(_a) {
54
+ var targetRect = _a.targetRect, popupRect = _a.popupRect;
55
+ var topSpaced = targetRect.bottom + popupRect.height > window.innerHeight;
56
+ return topSpaced ? 'top-center' : 'bottom-center';
57
+ }
58
+ /**
59
+ * 위치 정규화
60
+ */
61
+ function getNormalizedPlacement(_a) {
62
+ var placement = _a.placement, targetRect = _a.targetRect, popupRect = _a.popupRect, wrapperHeight = _a.wrapperHeight;
63
+ switch (placement) {
64
+ case 'v-auto':
65
+ return getVAutoPlacement({ targetRect: targetRect, popupRect: popupRect, wrapperHeight: wrapperHeight });
66
+ case 'h-auto':
67
+ return getHAutoPlacement({ targetRect: targetRect, popupRect: popupRect, wrapperHeight: wrapperHeight });
68
+ case 'v-center':
69
+ return getVCenterPlacement({ targetRect: targetRect, popupRect: popupRect, wrapperHeight: wrapperHeight });
70
+ case 'h-center':
71
+ return getHCenterPlacement({ targetRect: targetRect, popupRect: popupRect, wrapperHeight: wrapperHeight });
72
+ default:
73
+ return placement;
74
+ }
75
+ }
76
+ function updatePosition(_a) {
77
+ var targetElem = _a.targetElem, popupElem = _a.popupElem, placement = _a.placement, wrapperHeight = _a.wrapperHeight;
78
+ var targetRect = targetElem.getBoundingClientRect();
79
+ var popupRect = popupElem.getBoundingClientRect();
80
+ var normPlacement = getNormalizedPlacement({ placement: placement, targetRect: targetRect, popupRect: popupRect, wrapperHeight: wrapperHeight });
81
+ switch (normPlacement) {
82
+ case 'top':
83
+ popupElem.style.top = targetRect.top - popupRect.height + "px";
84
+ popupElem.style.left = targetRect.left - (popupRect.width - targetRect.width) / 2 + "px";
85
+ popupElem.style.width = 'auto';
86
+ break;
87
+ case 'top-start':
88
+ popupElem.style.top = targetRect.top - popupRect.height + "px";
89
+ popupElem.style.left = targetRect.left + "px";
90
+ popupElem.style.width = 'auto';
91
+ break;
92
+ case 'top-end':
93
+ popupElem.style.top = targetRect.top - popupRect.height + "px";
94
+ popupElem.style.left = targetRect.left + targetRect.width - popupRect.width + "px";
95
+ popupElem.style.width = 'auto';
96
+ break;
97
+ case 'top-both':
98
+ popupElem.style.top = targetRect.top - popupRect.height + "px";
99
+ popupElem.style.left = targetRect.left + "px";
100
+ popupElem.style.width = targetRect.width + "px";
101
+ break;
102
+ case 'top-center':
103
+ popupElem.style.top = targetRect.top - popupRect.height + "px";
104
+ popupElem.style.left = targetRect.left - (popupRect.width - targetRect.width) / 2 + "px";
105
+ popupElem.style.width = 'auto';
106
+ break;
107
+ case 'bottom':
108
+ popupElem.style.top = targetRect.bottom + "px";
109
+ popupElem.style.left = targetRect.left - (popupRect.width - targetRect.width) / 2 + "px";
110
+ popupElem.style.width = 'auto';
111
+ break;
112
+ case 'bottom-start':
113
+ popupElem.style.top = targetRect.bottom + "px";
114
+ popupElem.style.left = targetRect.left + "px";
115
+ popupElem.style.width = 'auto';
116
+ break;
117
+ case 'bottom-end':
118
+ popupElem.style.top = targetRect.bottom + "px";
119
+ popupElem.style.left = targetRect.right - popupRect.width + "px";
120
+ popupElem.style.width = 'auto';
121
+ break;
122
+ case 'bottom-both':
123
+ popupElem.style.top = targetRect.bottom + "px";
124
+ popupElem.style.left = targetRect.left + "px";
125
+ popupElem.style.width = targetRect.width + "px";
126
+ break;
127
+ case 'bottom-center':
128
+ popupElem.style.top = targetRect.bottom + "px";
129
+ popupElem.style.left = targetRect.left - (popupRect.width - targetRect.width) / 2 + "px";
130
+ popupElem.style.width = 'auto';
131
+ break;
132
+ case 'left':
133
+ popupElem.style.top = targetRect.top - (popupRect.height - targetRect.height) / 2 + "px";
134
+ popupElem.style.left = targetRect.left - popupRect.width + "px";
135
+ popupElem.style.width = 'auto';
136
+ break;
137
+ case 'left-start':
138
+ popupElem.style.top = targetRect.top + "px";
139
+ popupElem.style.left = targetRect.left - popupRect.width + "px";
140
+ popupElem.style.width = 'auto';
141
+ break;
142
+ case 'left-end':
143
+ popupElem.style.top = targetRect.top - (popupRect.height - targetRect.height) + "px";
144
+ popupElem.style.left = targetRect.left - popupRect.width + "px";
145
+ popupElem.style.width = 'auto';
146
+ break;
147
+ case 'left-center':
148
+ popupElem.style.top = targetRect.top - (popupRect.height - targetRect.height) / 2 + "px";
149
+ popupElem.style.left = targetRect.left - popupRect.width + "px";
150
+ popupElem.style.width = 'auto';
151
+ break;
152
+ case 'right':
153
+ popupElem.style.top = targetRect.top - (popupRect.height - targetRect.height) / 2 + "px";
154
+ popupElem.style.left = targetRect.left + targetRect.width + "px";
155
+ popupElem.style.width = 'auto';
156
+ break;
157
+ case 'right-start':
158
+ popupElem.style.top = targetRect.top + "px";
159
+ popupElem.style.left = targetRect.left + targetRect.width + "px";
160
+ popupElem.style.width = 'auto';
161
+ break;
162
+ case 'right-end':
163
+ popupElem.style.top = targetRect.top - (popupRect.height - targetRect.height) + "px";
164
+ popupElem.style.left = targetRect.left + targetRect.width + "px";
165
+ popupElem.style.width = 'auto';
166
+ break;
167
+ case 'right-center':
168
+ popupElem.style.top = targetRect.top - (popupRect.height - targetRect.height) / 2 + "px";
169
+ popupElem.style.left = targetRect.left + targetRect.width + "px";
170
+ popupElem.style.width = 'auto';
171
+ break;
172
+ default:
173
+ break;
174
+ }
175
+ return normPlacement;
176
+ }
177
+ function Popup(_a) {
178
+ var targetRef = _a.targetRef, _b = _a.isOpen, isOpen = _b === void 0 ? false : _b, onClickOutside = _a.onClickOutside, onClick = _a.onClick, _c = _a.placement, placement = _c === void 0 ? 'bottom-start' : _c, wrapperHeight = _a.wrapperHeight, children = _a.children;
179
+ var popupRootRef = (0, react_1.useContext)(PopupContext);
180
+ var _d = (0, react_1.useState)('bottom'), normPlacement = _d[0], setNormPlacement = _d[1];
181
+ var popupRef = (0, react_1.useRef)(null);
182
+ /**
183
+ * 팝업 외의 다른 요소 클릭시 팝업이 닫히도록 합니다.
184
+ */
185
+ (0, react_1.useEffect)(function () {
186
+ function handleClickOutside(e) {
187
+ if (popupRootRef.current && !popupRootRef.current.contains(e.target)) {
188
+ if (onClickOutside) {
189
+ onClickOutside();
190
+ }
191
+ }
192
+ }
193
+ window.document.addEventListener('mousedown', handleClickOutside);
194
+ return function () {
195
+ window.document.removeEventListener('mousedown', handleClickOutside);
196
+ };
197
+ }, [popupRootRef, onClickOutside]);
198
+ /**
199
+ * 전체 UI 렌더링이 한 프레임 완료된 후에 팝업 위치를 결정합니다.
200
+ */
201
+ (0, react_1.useEffect)(function () {
202
+ window.requestAnimationFrame(function () {
203
+ if (!targetRef.current || !popupRef.current) {
204
+ return;
205
+ }
206
+ var targetElem = targetRef.current;
207
+ var popupElem = popupRef.current;
208
+ var updatedPlacement = updatePosition({ targetElem: targetElem, popupElem: popupElem, placement: placement, wrapperHeight: wrapperHeight });
209
+ setNormPlacement(updatedPlacement);
210
+ });
211
+ }, [isOpen, placement, wrapperHeight, targetRef, popupRef]);
212
+ function handlePopupClick(e) {
213
+ e.stopPropagation();
214
+ if (onClick) {
215
+ onClick(e);
216
+ }
217
+ }
218
+ if (!popupRootRef || !popupRootRef.current || !isOpen) {
219
+ return react_1.default.createElement(react_1.default.Fragment, null);
220
+ }
221
+ var popupComponent = (react_1.default.createElement(S_Popup, { ref: popupRef, onClick: function (e) { return handlePopupClick(e); } }, typeof children === 'function' ? children(normPlacement) : children));
222
+ return (0, react_dom_1.createPortal)(popupComponent, popupRootRef.current);
223
+ }
224
+ exports.Popup = Popup;
225
+ var S_Popup = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n left: -1000px;\n position: fixed;\n top: -1000px;\n z-index: 1000;\n"], ["\n left: -1000px;\n position: fixed;\n top: -1000px;\n z-index: 1000;\n"])));
226
+ /**
227
+ * 팝업 루트 프로바이더
228
+ * 팝업을 사용하기 위해서는 팝업 프로바이더가 상위 컴포넌트로 있어야 합니다.
229
+ */
230
+ function PopupProvider(_a) {
231
+ var children = _a.children;
232
+ var ref = (0, react_1.useRef)();
233
+ return (react_1.default.createElement(react_1.default.Fragment, null,
234
+ react_1.default.createElement(PopupContext.Provider, { value: ref }, children),
235
+ react_1.default.createElement("div", { ref: ref })));
236
+ }
237
+ exports.PopupProvider = PopupProvider;
238
+ var templateObject_1;
@@ -0,0 +1 @@
1
+ export { default as ChatBubbleListItem } from './ChatBubbleListItem';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ChatBubbleListItem = void 0;
7
+ var ChatBubbleListItem_1 = require("./ChatBubbleListItem");
8
+ Object.defineProperty(exports, "ChatBubbleListItem", { enumerable: true, get: function () { return __importDefault(ChatBubbleListItem_1).default; } });
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import type { Props as ChatListProps } from './ChatList';
3
- declare type Props = Pick<ChatListProps, 'scrollVisibleType' | 'children' | 'bodyMBtnText'> & {
3
+ declare type Props = Pick<ChatListProps, 'scrollVisibleType' | 'children' | 'bodyMBtnText' | 'bodySpacingMode'> & {
4
4
  isSubmitted: boolean;
5
5
  };
6
- declare function Body({ scrollVisibleType, children, isSubmitted, bodyMBtnText }: Props): JSX.Element;
6
+ declare function Body({ scrollVisibleType, children, isSubmitted, bodyMBtnText, bodySpacingMode }: Props): JSX.Element;
7
7
  export default Body;