pds-dev-kit-web-test 0.2.36 → 0.2.38

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 (94) hide show
  1. package/README.md +2 -2
  2. package/dist/src/common/assets/icons/fill/LogoGoogle.d.ts +4 -0
  3. package/dist/src/common/assets/icons/fill/LogoGoogle.js +30 -0
  4. package/dist/src/common/assets/icons/fill/TypefaceSystem.d.ts +4 -0
  5. package/dist/src/common/assets/icons/fill/TypefaceSystem.js +30 -0
  6. package/dist/src/common/assets/icons/fill/index.d.ts +2 -0
  7. package/dist/src/common/assets/icons/fill/index.js +4 -0
  8. package/dist/src/common/assets/icons/line/LogoGoogle.d.ts +4 -0
  9. package/dist/src/common/assets/icons/line/LogoGoogle.js +30 -0
  10. package/dist/src/common/assets/icons/line/TypefaceSystem.d.ts +4 -0
  11. package/dist/src/common/assets/icons/line/TypefaceSystem.js +30 -0
  12. package/dist/src/common/assets/icons/line/index.d.ts +2 -0
  13. package/dist/src/common/assets/icons/line/index.js +4 -0
  14. package/dist/src/common/styles/colorSet/PaletteColor_Dark.json +2 -1
  15. package/dist/src/common/styles/colorSet/PaletteColor_light.json +2 -1
  16. package/dist/src/common/styles/colorSet/UIColor.json +3 -1
  17. package/dist/src/common/styles/colorSet/index.d.ts +349 -345
  18. package/dist/src/common/styles/colorSet/index.js +3 -3
  19. package/dist/src/common/styles/colorSet/ui-type.d.ts +2 -0
  20. package/dist/src/desktop/common/components/TextFieldBase/TextFieldBase.js +4 -1
  21. package/dist/src/desktop/components/BasicChatListItem/BasicChatListItem.d.ts +4 -2
  22. package/dist/src/desktop/components/BasicChatListItem/BasicChatListItem.js +46 -15
  23. package/dist/src/desktop/components/BasicChatListItem/Popup.d.ts +1 -0
  24. package/dist/src/desktop/components/ChatBubbleListItem/ChatBubbleListItem.d.ts +3 -1
  25. package/dist/src/desktop/components/ChatBubbleListItem/ChatBubbleListItem.js +19 -3
  26. package/dist/src/desktop/components/ChatBubbleListItem/Popup.d.ts +1 -0
  27. package/dist/src/mobile/common/components/TextFieldBase/TextFieldBase.js +4 -1
  28. package/dist/src/mobile/components/BasicChatListItem/BasicChatListItem.d.ts +4 -2
  29. package/dist/src/mobile/components/BasicChatListItem/BasicChatListItem.js +59 -10
  30. package/dist/src/mobile/components/BasicChatListItem/Popup.d.ts +1 -0
  31. package/dist/src/mobile/components/ChatBubbleListItem/ChatBubbleListItem.d.ts +3 -1
  32. package/dist/src/mobile/components/ChatBubbleListItem/ChatBubbleListItem.js +21 -3
  33. package/dist/src/mobile/components/ChatBubbleListItem/Popup.d.ts +1 -0
  34. package/dist/src/mobile/components/ChatList/Body.js +1 -1
  35. package/dist/src/mobile/components/MobileHeaderBar/MobileHeaderBar.d.ts +3 -1
  36. package/dist/src/mobile/components/MobileHeaderBar/MobileHeaderBar.js +13 -11
  37. package/dist/src/mobile/components/MobileHeaderBar/utils.d.ts +12 -0
  38. package/dist/src/mobile/components/MobileHeaderBar/utils.js +22 -0
  39. package/dist/src/sub/DynamicLayout/DynamicLayout.d.ts +1 -1
  40. package/dist/src/sub/DynamicLayout/DynamicLayout.js +2 -3
  41. package/dist/src/sub/DynamicLayout/components/ComponentBlocks/RichText/RichText.js +1 -1
  42. package/dist/src/sub/DynamicLayout/components/desktop/Item/Item.js +1 -1
  43. package/dist/src/sub/DynamicLayout/components/mobile/Item/Item.js +1 -1
  44. package/dist/src/sub/DynamicLayout/sections/CustomSection/CustomSection.js +12 -23
  45. package/dist/src/sub/DynamicLayout/sections/CustomSection/newUtils/textUtil.js +1 -1
  46. package/dist/src/sub/DynamicLayout/types.d.ts +0 -4
  47. package/dist/src/sub/GoogleFontkit/GoogleFontApplyExample.d.ts +3 -0
  48. package/dist/src/sub/GoogleFontkit/GoogleFontApplyExample.js +93 -0
  49. package/dist/src/sub/GoogleFontkit/GoogleFontsListExample.d.ts +3 -0
  50. package/dist/src/sub/GoogleFontkit/GoogleFontsListExample.js +57 -0
  51. package/dist/src/sub/GoogleFontkit/api/getGoogleFontCss.d.ts +10 -0
  52. package/dist/src/sub/GoogleFontkit/api/getGoogleFontCss.js +53 -0
  53. package/dist/src/sub/GoogleFontkit/api/getGoogleFontDefaultText.d.ts +2 -0
  54. package/dist/src/sub/GoogleFontkit/api/getGoogleFontDefaultText.js +55 -0
  55. package/dist/src/sub/GoogleFontkit/api/getGoogleWebFonts.d.ts +10 -0
  56. package/dist/src/sub/GoogleFontkit/api/getGoogleWebFonts.js +53 -0
  57. package/dist/src/sub/GoogleFontkit/constants.d.ts +7 -0
  58. package/dist/src/sub/GoogleFontkit/constants.js +42 -0
  59. package/dist/src/sub/GoogleFontkit/headless/GoogleFontItem.d.ts +13 -0
  60. package/dist/src/sub/GoogleFontkit/headless/GoogleFontItem.js +107 -0
  61. package/dist/src/sub/GoogleFontkit/headless/GoogleFontsList.d.ts +17 -0
  62. package/dist/src/sub/GoogleFontkit/headless/GoogleFontsList.js +145 -0
  63. package/dist/src/sub/GoogleFontkit/hooks/useDebounce.d.ts +1 -0
  64. package/dist/src/sub/GoogleFontkit/hooks/useDebounce.js +14 -0
  65. package/dist/src/sub/GoogleFontkit/hooks/useIntersectionObserver.d.ts +6 -0
  66. package/dist/src/sub/GoogleFontkit/hooks/useIntersectionObserver.js +29 -0
  67. package/dist/src/sub/GoogleFontkit/index.d.ts +2 -0
  68. package/dist/src/sub/GoogleFontkit/index.js +10 -0
  69. package/dist/src/sub/GoogleFontkit/types.d.ts +44 -0
  70. package/dist/src/sub/GoogleFontkit/types.js +14 -0
  71. package/dist/src/sub/GoogleFontkit/utils/applyActiveFont.d.ts +5 -0
  72. package/dist/src/sub/GoogleFontkit/utils/applyActiveFont.js +15 -0
  73. package/dist/src/sub/GoogleFontkit/utils/callGoogleFontCSSAndApply.d.ts +2 -0
  74. package/dist/src/sub/GoogleFontkit/utils/callGoogleFontCSSAndApply.js +83 -0
  75. package/dist/src/sub/GoogleFontkit/utils/createStyleSheet.d.ts +4 -0
  76. package/dist/src/sub/GoogleFontkit/utils/createStyleSheet.js +13 -0
  77. package/dist/src/sub/GoogleFontkit/utils/extractFontStyles.d.ts +1 -0
  78. package/dist/src/sub/GoogleFontkit/utils/extractFontStyles.js +26 -0
  79. package/dist/src/sub/GoogleFontkit/utils/fillStyleSheet.d.ts +4 -0
  80. package/dist/src/sub/GoogleFontkit/utils/fillStyleSheet.js +17 -0
  81. package/dist/src/sub/GoogleFontkit/utils/getActiveFontStylesheet.d.ts +4 -0
  82. package/dist/src/sub/GoogleFontkit/utils/getActiveFontStylesheet.js +16 -0
  83. package/dist/src/sub/GoogleFontkit/utils/getFontId.d.ts +4 -0
  84. package/dist/src/sub/GoogleFontkit/utils/getFontId.js +9 -0
  85. package/dist/src/sub/GoogleFontkit/utils/getMatches.d.ts +1 -0
  86. package/dist/src/sub/GoogleFontkit/utils/getMatches.js +14 -0
  87. package/dist/src/sub/GoogleFontkit/utils/isStyleSheetExists.d.ts +4 -0
  88. package/dist/src/sub/GoogleFontkit/utils/isStyleSheetExists.js +15 -0
  89. package/dist/src/sub/GoogleFontkit/utils/parseFontVariants.d.ts +4 -0
  90. package/dist/src/sub/GoogleFontkit/utils/parseFontVariants.js +18 -0
  91. package/dist/src/sub/GoogleFontkit/utils/setStyleSheetType.d.ts +4 -0
  92. package/dist/src/sub/GoogleFontkit/utils/setStyleSheetType.js +18 -0
  93. package/package.json +1 -1
  94. package/release-note.md +3 -7
@@ -6,12 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  /* eslint-disable import/order */
7
7
  var SemanticColor_json_1 = __importDefault(require("./SemanticColor.json"));
8
8
  var PaletteColor_light_json_1 = __importDefault(require("./PaletteColor_light.json"));
9
- var PaletteColor_Dark_json_1 = __importDefault(require("./PaletteColor_Dark.json"));
10
9
  var UIColor_json_1 = __importDefault(require("./UIColor.json"));
10
+ var PaletteColor_Dark_json_1 = __importDefault(require("./PaletteColor_Dark.json"));
11
11
  var colorSet = {
12
12
  SemanticColor: SemanticColor_json_1.default,
13
13
  PaletteColor_light: PaletteColor_light_json_1.default,
14
- PaletteColor_Dark: PaletteColor_Dark_json_1.default,
15
- UIColor: UIColor_json_1.default
14
+ UIColor: UIColor_json_1.default,
15
+ PaletteColor_Dark: PaletteColor_Dark_json_1.default
16
16
  };
17
17
  exports.default = colorSet;
@@ -835,4 +835,6 @@ export interface UITheme {
835
835
  ui_cpnt_modalwithtab_sidetab_hover: string;
836
836
  ui_cpnt_modalwithtab_sidetab_pressed: string;
837
837
  ui_107: string;
838
+ ui_cpnt_textlabel_sys_white_02: string;
839
+ ui_cpnt_headerbar_base_area_transparent: string;
838
840
  }
@@ -454,7 +454,7 @@ var inputInnerSpinButtonStyle = (0, styled_components_1.css)(templateObject_14 |
454
454
  var innerSpinButtonSize = _a.innerSpinButtonSize;
455
455
  return innerSpinButtonSize && "".concat(innerSpinButtonSize, "px");
456
456
  });
457
- var S_Input = styled_components_1.default.input(templateObject_15 || (templateObject_15 = __makeTemplateObject(["\n ", "\n flex: 1;\n line-height: ", ";\n position: relative;\n\n ::-webkit-inner-spin-button {\n ", "\n }\n ::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n"], ["\n ", "\n flex: 1;\n line-height: ", ";\n position: relative;\n\n ::-webkit-inner-spin-button {\n ", "\n }\n ::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n"])), basicStyle, function (_a) {
457
+ var S_Input = styled_components_1.default.input(templateObject_15 || (templateObject_15 = __makeTemplateObject(["\n ", "\n flex: 1;\n line-height: ", ";\n position: relative;\n\n ::-webkit-inner-spin-button {\n ", "\n }\n ::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-text-fill-color: ", " !important;\n transition: background-color 9999s ease-in-out 0s !important;\n }\n"], ["\n ", "\n flex: 1;\n line-height: ", ";\n position: relative;\n\n ::-webkit-inner-spin-button {\n ", "\n }\n ::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-text-fill-color: ", " !important;\n transition: background-color 9999s ease-in-out 0s !important;\n }\n"])), basicStyle, function (_a) {
458
458
  var theme = _a.theme;
459
459
  return theme.desktopLineHeight.singleLine;
460
460
  }, function (_a) {
@@ -462,6 +462,9 @@ var S_Input = styled_components_1.default.input(templateObject_15 || (templateOb
462
462
  return stepperMode === 'use' && type === 'number' && isFocused
463
463
  ? inputInnerSpinButtonStyle
464
464
  : '-webkit-appearance: none; margin: 0;';
465
+ }, function (_a) {
466
+ var theme = _a.theme;
467
+ return theme.ui_cpnt_textfield_text_typed;
465
468
  });
466
469
  var S_Auto = styled_components_1.default.textarea(templateObject_16 || (templateObject_16 = __makeTemplateObject(["\n ", "\n display: block;\n overflow-y: auto;\n resize: none;\n ", "\n ", ";\n"], ["\n ", "\n display: block;\n overflow-y: auto;\n resize: none;\n ", "\n ", ";\n"])), basicStyle, function (_a) {
467
470
  var autoMaxRows = _a.autoMaxRows, textSize = _a.textSize, fieldHeight = _a.fieldHeight;
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
+ import { PlacementTypes } from './Popup';
2
3
  import type { PDSTextType, PDSValueOption } from '../../../common';
3
4
  type Props = {
4
5
  titleText?: PDSTextType;
@@ -8,8 +9,9 @@ type Props = {
8
9
  hoverMode?: 'none' | 'use';
9
10
  contextMenuOptionArray?: PDSValueOption[];
10
11
  contextMenuState?: 'normal' | 'disabled';
11
- colorTheme?: 'seller' | 'subscriber' | 'seller_transparent' | 'subscriber_transparent';
12
+ colorTheme?: 'seller' | 'seller_transparent' | 'subscriber' | 'subscriber_transparent' | 'secondary_transparent_grey' | 'white_transparent_grey';
13
+ contextMenuPosition?: PlacementTypes;
12
14
  onClickContextMenuItem?: (option: PDSValueOption) => void;
13
15
  };
14
- declare function BasicChatListItem({ titleText, contentText, leftImageMode, imageSrc, hoverMode, contextMenuOptionArray, onClickContextMenuItem, contextMenuState, colorTheme }: Props): JSX.Element;
16
+ declare function BasicChatListItem({ titleText, contentText, leftImageMode, imageSrc, hoverMode, contextMenuOptionArray, contextMenuPosition, onClickContextMenuItem, contextMenuState, colorTheme }: Props): JSX.Element;
15
17
  export default BasicChatListItem;
@@ -29,34 +29,42 @@ var TextLabel_1 = require("../TextLabel");
29
29
  var Popup_1 = require("./Popup");
30
30
  var titleTextColors = {
31
31
  seller: 'usrTextBrandPrimary',
32
- subscriber: 'sysTextSecondary',
33
32
  seller_transparent: 'usrTextBrandPrimary',
34
- subscriber_transparent: 'sysTextWhite'
33
+ subscriber: 'sysTextSecondary',
34
+ subscriber_transparent: 'sysTextWhite',
35
+ secondary_transparent_grey: 'sysTextSecondary',
36
+ white_transparent_grey: 'sysTextWhite'
35
37
  };
36
38
  var backgroundColorTheme = {
37
39
  seller: 'ui_cpnt_list_base_area_seller',
38
- subscriber: 'ui_cpnt_list_base_area',
39
40
  seller_transparent: 'ui_cpnt_list_base_area_transparent_seller',
40
- subscriber_transparent: 'ui_cpnt_list_base_area_transparent'
41
+ subscriber: 'ui_cpnt_list_base_area',
42
+ subscriber_transparent: 'ui_cpnt_list_base_area_transparent',
43
+ secondary_transparent_grey: 'ui_cpnt_list_base_area',
44
+ white_transparent_grey: 'ui_cpnt_list_base_area_transparent'
41
45
  };
42
46
  function BasicChatListItem(_a) {
43
- var titleText = _a.titleText, contentText = _a.contentText, _b = _a.leftImageMode, leftImageMode = _b === void 0 ? 'none' : _b, imageSrc = _a.imageSrc, _c = _a.hoverMode, hoverMode = _c === void 0 ? 'use' : _c, contextMenuOptionArray = _a.contextMenuOptionArray, onClickContextMenuItem = _a.onClickContextMenuItem, _d = _a.contextMenuState, contextMenuState = _d === void 0 ? 'normal' : _d, _e = _a.colorTheme, colorTheme = _e === void 0 ? 'subscriber' : _e;
44
- var _f = (0, react_1.useState)(false), isContextMenuOpen = _f[0], setIsContextMenuOpen = _f[1];
47
+ var titleText = _a.titleText, contentText = _a.contentText, _b = _a.leftImageMode, leftImageMode = _b === void 0 ? 'none' : _b, imageSrc = _a.imageSrc, _c = _a.hoverMode, hoverMode = _c === void 0 ? 'use' : _c, contextMenuOptionArray = _a.contextMenuOptionArray, _d = _a.contextMenuPosition, contextMenuPosition = _d === void 0 ? 'v-auto' : _d, onClickContextMenuItem = _a.onClickContextMenuItem, _e = _a.contextMenuState, contextMenuState = _e === void 0 ? 'normal' : _e, _f = _a.colorTheme, colorTheme = _f === void 0 ? 'subscriber' : _f;
48
+ var _g = (0, react_1.useState)(false), isContextMenuOpen = _g[0], setIsContextMenuOpen = _g[1];
45
49
  var contextMenuRef = (0, react_1.useRef)(null);
46
50
  var chatBody = document.querySelector('#chatMessageBox');
47
51
  var chatBodyRect = chatBody === null || chatBody === void 0 ? void 0 : chatBody.getBoundingClientRect();
48
52
  /**
49
- * @when contextMenu가 열려 있을
50
- * @expected ChatList body의 스크롤을 숨기고, contextMenu 외부를 클릭하면 contextMenu가 닫히도록 합니다.
51
- * @clear document의 클릭 이벤트를 제거합니다.
53
+ * @when 스크롤, 이벤트 발생시
54
+ * @expected contextMenu 닫습니다.
55
+ * @clear 스크롤, 이벤트를 제거합니다.
52
56
  */
53
57
  (0, react_1.useEffect)(function () {
54
- // NOTE pop up 개념이 생기기 전까지의 임시 조치 방법입니다.
55
- if (!chatBody) {
56
- return;
58
+ function handleScrollEvent() {
59
+ setIsContextMenuOpen(false);
57
60
  }
58
- chatBody.style.overflowY = isContextMenuOpen ? 'hidden' : 'auto';
59
- }, [isContextMenuOpen, chatBody]);
61
+ window.addEventListener('scroll', handleScrollEvent);
62
+ window.addEventListener('wheel', handleScrollEvent);
63
+ return function () {
64
+ window.removeEventListener('scroll', handleScrollEvent);
65
+ window.removeEventListener('wheel', handleScrollEvent);
66
+ };
67
+ }, []);
60
68
  var handleMoreButtonClick = function (e) {
61
69
  e.stopPropagation();
62
70
  setIsContextMenuOpen(function (prev) { return !prev; });
@@ -67,7 +75,30 @@ function BasicChatListItem(_a) {
67
75
  }
68
76
  setIsContextMenuOpen(false);
69
77
  };
70
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(S_BasicChatListItem, __assign({ "x-pds-name": "BasicChatListItem", "x-pds-element-type": "component", "x-pds-device-type": "desktop", colorTheme: colorTheme }, { children: [leftImageMode === 'use' && ((0, jsx_runtime_1.jsx)(S_ImageViewWrapper, { children: (0, jsx_runtime_1.jsx)(hybrid_1.ImageView, { shapeType: "circular", ratio: "1_1", scaleType: "cover", src: imageSrc, width: "responsive" }) })), (0, jsx_runtime_1.jsx)(S_TitleTextWrapper, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: titleText, styleTheme: "caption1Bold", wordBreak: "break_all", colorTheme: titleTextColors[colorTheme] }) }), (0, jsx_runtime_1.jsx)(S_ContentTextWrapper, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: contentText, styleTheme: "caption1Regular", colorTheme: colorTheme === 'subscriber_transparent' ? 'sysTextWhite' : 'sysTextPrimary', wordBreak: "break_all" }) }), hoverMode === 'use' && ((0, jsx_runtime_1.jsx)(S_SeeMoreButton, __assign({ isContextMenuOpen: isContextMenuOpen, hoverMode: hoverMode, ref: contextMenuRef }, { children: (0, jsx_runtime_1.jsx)(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 }) }))), (0, jsx_runtime_1.jsx)(Popup_1.PopupProvider, { children: (0, jsx_runtime_1.jsx)(Popup_1.Popup, __assign({ targetRef: contextMenuRef, isOpen: isContextMenuOpen, placement: "v-auto", wrapperHeight: chatBodyRect === null || chatBodyRect === void 0 ? void 0 : chatBodyRect.height, onClickOutside: function () { return setIsContextMenuOpen(false); } }, { children: (0, jsx_runtime_1.jsx)(ContextMenu_1.ContextMenu, { children: contextMenuOptionArray === null || contextMenuOptionArray === void 0 ? void 0 : contextMenuOptionArray.map(function (el) { return ((0, jsx_runtime_1.jsx)(ContextMenuItem_1.ContextMenuItem, { option: el, onClick: handleContextMenuItemClick, state: contextMenuState }, el.value)); }) }) })) })] })) }));
78
+ var contentTextColorTheme = 'sysTextPrimary';
79
+ var contentTextColorOverride;
80
+ var iconColorKey;
81
+ switch (colorTheme) {
82
+ case 'subscriber_transparent': {
83
+ contentTextColorTheme = 'sysTextWhite';
84
+ iconColorKey = 'ui_cpnt_button_icon_white';
85
+ break;
86
+ }
87
+ case 'secondary_transparent_grey': {
88
+ contentTextColorTheme = 'sysTextSecondary';
89
+ break;
90
+ }
91
+ case 'white_transparent_grey': {
92
+ contentTextColorOverride = 'ui_cpnt_textlabel_sys_white_02';
93
+ iconColorKey = 'ui_cpnt_button_icon_white';
94
+ break;
95
+ }
96
+ default: {
97
+ contentTextColorTheme = 'sysTextPrimary';
98
+ iconColorKey = 'ui_cpnt_button_icon_enabled';
99
+ }
100
+ }
101
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(S_BasicChatListItem, __assign({ "x-pds-name": "BasicChatListItem", "x-pds-element-type": "component", "x-pds-device-type": "desktop", colorTheme: colorTheme }, { children: [leftImageMode === 'use' && ((0, jsx_runtime_1.jsx)(S_ImageViewWrapper, { children: (0, jsx_runtime_1.jsx)(hybrid_1.ImageView, { shapeType: "circular", ratio: "1_1", scaleType: "cover", src: imageSrc, width: "responsive" }) })), (0, jsx_runtime_1.jsx)(S_TitleTextWrapper, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: titleText, styleTheme: "caption1Bold", wordBreak: "break_all", colorTheme: titleTextColors[colorTheme] }) }), (0, jsx_runtime_1.jsx)(S_ContentTextWrapper, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: contentText, styleTheme: "caption1Regular", colorTheme: contentTextColorTheme, colorOverride: contentTextColorOverride, wordBreak: "break_all" }) }), hoverMode === 'use' && ((0, jsx_runtime_1.jsx)(S_SeeMoreButton, __assign({ isContextMenuOpen: isContextMenuOpen, hoverMode: hoverMode, ref: contextMenuRef }, { children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { fillType: "fill", baseSize: "xsmall", iconFillType: "fill", iconSize: 20, iconName: "ic_more", baseColorKey: "ui_cpnt_button_fill_base_transparent", iconColorKey: iconColorKey, onClick: handleMoreButtonClick }) }))), (0, jsx_runtime_1.jsx)(Popup_1.PopupProvider, { children: (0, jsx_runtime_1.jsx)(Popup_1.Popup, __assign({ targetRef: contextMenuRef, isOpen: isContextMenuOpen, placement: contextMenuPosition, wrapperHeight: chatBodyRect === null || chatBodyRect === void 0 ? void 0 : chatBodyRect.height, onClickOutside: function () { return setIsContextMenuOpen(false); } }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ onMouseLeave: function () { return setIsContextMenuOpen(false); } }, { children: (0, jsx_runtime_1.jsx)(ContextMenu_1.ContextMenu, { children: contextMenuOptionArray === null || contextMenuOptionArray === void 0 ? void 0 : contextMenuOptionArray.map(function (el) { return ((0, jsx_runtime_1.jsx)(ContextMenuItem_1.ContextMenuItem, { option: el, onClick: handleContextMenuItemClick, state: contextMenuState }, el.value)); }) }) })) })) })] })) }));
71
102
  }
72
103
  var S_BasicChatListItem = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background-color: ", ";\n display: flex;\n height: fit-content;\n max-width: 100%;\n min-height: 24px;\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n padding-top: ", ";\n"], ["\n background-color: ", ";\n display: flex;\n height: fit-content;\n max-width: 100%;\n min-height: 24px;\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n padding-top: ", ";\n"])), function (_a) {
73
104
  var colorTheme = _a.colorTheme, theme = _a.theme;
@@ -1,4 +1,5 @@
1
1
  import { MutableRefObject } from 'react';
2
+ export type PlacementTypes = 'v-auto' | 'h-auto' | 'v-center' | 'h-center' | 'top' | 'top-start' | 'top-end' | 'top-both' | 'top-center' | 'bottom' | 'bottom-start' | 'bottom-end' | 'bottom-both' | 'bottom-center' | 'left' | 'left-start' | 'left-end' | 'left-center' | 'right' | 'right-start' | 'right-end' | 'right-center';
2
3
  type Props = {
3
4
  targetRef: MutableRefObject<HTMLElement | null>;
4
5
  isOpen: boolean;
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
+ import { PlacementTypes } from './Popup';
2
3
  import type { PDSTextType, PDSValueOption } from '../../../common';
3
4
  type ColorThemeType = 'grey' | 'brand_primary' | 'translucent_white' | 'translucent_black';
4
5
  export type ChatBubbleListItemProps = {
@@ -11,8 +12,9 @@ export type ChatBubbleListItemProps = {
11
12
  timeText?: PDSTextType;
12
13
  contextMenuOptionArray?: PDSValueOption[];
13
14
  contextMenuState?: 'normal' | 'disabled';
15
+ contextMenuPosition?: PlacementTypes;
14
16
  children?: React.ReactNode;
15
17
  onClickContextMenuItem?: (option: PDSValueOption) => void;
16
18
  };
17
- declare function ChatBubbleListItem({ titleText, imageSrc, hoverMode, styleTheme, colorTheme, timeMode, timeText, contextMenuOptionArray, contextMenuState, children, onClickContextMenuItem }: ChatBubbleListItemProps): JSX.Element;
19
+ declare function ChatBubbleListItem({ titleText, imageSrc, hoverMode, styleTheme, colorTheme, timeMode, timeText, contextMenuOptionArray, contextMenuState, contextMenuPosition, children, onClickContextMenuItem }: ChatBubbleListItemProps): JSX.Element;
18
20
  export default ChatBubbleListItem;
@@ -67,9 +67,9 @@ var profileImageBorderColorTheme = {
67
67
  translucent_black: 'ui_avatar_border_translucent_black'
68
68
  };
69
69
  function ChatBubbleListItem(_a) {
70
- var titleText = _a.titleText, imageSrc = _a.imageSrc, _b = _a.hoverMode, hoverMode = _b === void 0 ? 'use' : _b, styleTheme = _a.styleTheme, _c = _a.colorTheme, colorTheme = _c === void 0 ? 'grey' : _c, _d = _a.timeMode, timeMode = _d === void 0 ? 'use' : _d, timeText = _a.timeText, contextMenuOptionArray = _a.contextMenuOptionArray, _e = _a.contextMenuState, contextMenuState = _e === void 0 ? 'normal' : _e, children = _a.children, onClickContextMenuItem = _a.onClickContextMenuItem;
70
+ var titleText = _a.titleText, imageSrc = _a.imageSrc, _b = _a.hoverMode, hoverMode = _b === void 0 ? 'use' : _b, styleTheme = _a.styleTheme, _c = _a.colorTheme, colorTheme = _c === void 0 ? 'grey' : _c, _d = _a.timeMode, timeMode = _d === void 0 ? 'use' : _d, timeText = _a.timeText, contextMenuOptionArray = _a.contextMenuOptionArray, _e = _a.contextMenuState, contextMenuState = _e === void 0 ? 'normal' : _e, _f = _a.contextMenuPosition, contextMenuPosition = _f === void 0 ? 'v-auto' : _f, children = _a.children, onClickContextMenuItem = _a.onClickContextMenuItem;
71
71
  var isMe = styleTheme.includes('me');
72
- var _f = (0, react_1.useState)(false), isContextMenuOpen = _f[0], setIsContextMenuOpen = _f[1];
72
+ var _g = (0, react_1.useState)(false), isContextMenuOpen = _g[0], setIsContextMenuOpen = _g[1];
73
73
  var contextMenuRef = (0, react_1.useRef)(null);
74
74
  var chatBody = document.querySelector('#chatMessageBox');
75
75
  var rect = chatBody === null || chatBody === void 0 ? void 0 : chatBody.getBoundingClientRect();
@@ -85,6 +85,22 @@ function ChatBubbleListItem(_a) {
85
85
  }
86
86
  chatBody.style.overflowY = isContextMenuOpen ? 'hidden' : 'auto';
87
87
  }, [isContextMenuOpen, chatBody]);
88
+ /**
89
+ * @when 스크롤, 휠 이벤트 발생시
90
+ * @expected contextMenu를 닫습니다.
91
+ * @clear 스크롤, 휠 이벤트를 제거합니다.
92
+ */
93
+ (0, react_1.useEffect)(function () {
94
+ function handleScrollEvent() {
95
+ setIsContextMenuOpen(false);
96
+ }
97
+ window.addEventListener('scroll', handleScrollEvent);
98
+ window.addEventListener('wheel', handleScrollEvent);
99
+ return function () {
100
+ window.removeEventListener('scroll', handleScrollEvent);
101
+ window.removeEventListener('wheel', handleScrollEvent);
102
+ };
103
+ }, []);
88
104
  var handleMoreButtonClick = function (e) {
89
105
  e.stopPropagation();
90
106
  setIsContextMenuOpen(function (prev) { return !prev; });
@@ -136,7 +152,7 @@ function ChatBubbleListItem(_a) {
136
152
  }
137
153
  return false;
138
154
  };
139
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(S_ChatBubbleListItem, __assign({ "x-pds-name": "ChatBubbleListItem", "x-pds-element-type": "component", "x-pds-device-type": "desktop", isMe: isMe }, { children: [isLeftSpacingChecker() ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: isShowProfileImage() ? ((0, jsx_runtime_1.jsx)(S_ImageViewWrapper, __assign({ isOtherAvatarImpact: styleTheme === 'other_avatar_impact', colorTheme: colorTheme }, { children: (0, jsx_runtime_1.jsx)(hybrid_1.ImageView, { shapeType: "circular", ratio: "1_1", scaleType: "cover", src: imageSrc, width: styleTheme === 'other_avatar_impact' ? 36 : 38 }) }))) : ((0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_g", spacingType: "width" })) })) : ((0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" })), (0, jsx_runtime_1.jsxs)(S_RightBox, { children: [isShowTitleText() && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: titleText, styleTheme: "caption1Bold", colorTheme: colorTheme && checkTextColorTheme() }), (0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_b" })] })), (0, jsx_runtime_1.jsxs)(S_ChatBubbleBox, { children: [(0, jsx_runtime_1.jsxs)(S_ChatBubbleWrapper, __assign({ isMe: isMe }, { children: [timeMode === 'use' && timeText && isMe && ((0, jsx_runtime_1.jsxs)(S_TimeWrapper, { children: [(0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: timeText, styleTheme: "caption2Regular", colorTheme: "sysTextTertiary", singleLineMode: "use" }), (0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" })] })), (0, jsx_runtime_1.jsx)(ChatBubble_1.default, __assign({ colorTheme: colorTheme, tailType: chatBubbleTailType[styleTheme] }, { children: children })), timeMode === 'use' && timeText && !isMe && ((0, jsx_runtime_1.jsxs)(S_TimeWrapper, { children: [(0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" }), (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: timeText, styleTheme: "caption2Regular", colorTheme: "sysTextTertiary", singleLineMode: "use" })] }))] })), hoverMode === 'use' && !isMe && ((0, jsx_runtime_1.jsx)(S_SeeMoreButton, __assign({ isContextMenuOpen: isContextMenuOpen, hoverMode: hoverMode, ref: contextMenuRef }, { children: (0, jsx_runtime_1.jsx)(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 }) })))] })] }), (0, jsx_runtime_1.jsx)(Popup_1.PopupProvider, { children: (0, jsx_runtime_1.jsx)(Popup_1.Popup, __assign({ targetRef: contextMenuRef, isOpen: isContextMenuOpen, placement: "v-auto", wrapperHeight: rect === null || rect === void 0 ? void 0 : rect.height, onClickOutside: function () { return setIsContextMenuOpen(false); } }, { children: (0, jsx_runtime_1.jsx)(ContextMenu_1.ContextMenu, { children: contextMenuOptionArray === null || contextMenuOptionArray === void 0 ? void 0 : contextMenuOptionArray.map(function (el) { return ((0, jsx_runtime_1.jsx)(ContextMenuItem_1.ContextMenuItem, { option: el, onClick: handleContextMenuItemClick, state: contextMenuState }, el.value)); }) }) })) })] })) }));
155
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(S_ChatBubbleListItem, __assign({ "x-pds-name": "ChatBubbleListItem", "x-pds-element-type": "component", "x-pds-device-type": "desktop", isMe: isMe }, { children: [isLeftSpacingChecker() ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: isShowProfileImage() ? ((0, jsx_runtime_1.jsx)(S_ImageViewWrapper, __assign({ isOtherAvatarImpact: styleTheme === 'other_avatar_impact', colorTheme: colorTheme }, { children: (0, jsx_runtime_1.jsx)(hybrid_1.ImageView, { shapeType: "circular", ratio: "1_1", scaleType: "cover", src: imageSrc, width: styleTheme === 'other_avatar_impact' ? 36 : 38 }) }))) : ((0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_g", spacingType: "width" })) })) : ((0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" })), (0, jsx_runtime_1.jsxs)(S_RightBox, { children: [isShowTitleText() && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: titleText, styleTheme: "caption1Bold", colorTheme: colorTheme && checkTextColorTheme() }), (0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_b" })] })), (0, jsx_runtime_1.jsxs)(S_ChatBubbleBox, { children: [(0, jsx_runtime_1.jsxs)(S_ChatBubbleWrapper, __assign({ isMe: isMe }, { children: [timeMode === 'use' && timeText && isMe && ((0, jsx_runtime_1.jsxs)(S_TimeWrapper, { children: [(0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: timeText, styleTheme: "caption2Regular", colorTheme: "sysTextTertiary", singleLineMode: "use" }), (0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" })] })), (0, jsx_runtime_1.jsx)(ChatBubble_1.default, __assign({ colorTheme: colorTheme, tailType: chatBubbleTailType[styleTheme] }, { children: children })), timeMode === 'use' && timeText && !isMe && ((0, jsx_runtime_1.jsxs)(S_TimeWrapper, { children: [(0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" }), (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: timeText, styleTheme: "caption2Regular", colorTheme: "sysTextTertiary", singleLineMode: "use" })] }))] })), hoverMode === 'use' && !isMe && ((0, jsx_runtime_1.jsx)(S_SeeMoreButton, __assign({ isContextMenuOpen: isContextMenuOpen, hoverMode: hoverMode, ref: contextMenuRef }, { children: (0, jsx_runtime_1.jsx)(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 }) })))] })] }), (0, jsx_runtime_1.jsx)(Popup_1.PopupProvider, { children: (0, jsx_runtime_1.jsx)(Popup_1.Popup, __assign({ targetRef: contextMenuRef, isOpen: isContextMenuOpen, placement: contextMenuPosition, wrapperHeight: rect === null || rect === void 0 ? void 0 : rect.height, onClickOutside: function () { return setIsContextMenuOpen(false); } }, { children: (0, jsx_runtime_1.jsx)(ContextMenu_1.ContextMenu, { children: contextMenuOptionArray === null || contextMenuOptionArray === void 0 ? void 0 : contextMenuOptionArray.map(function (el) { return ((0, jsx_runtime_1.jsx)(ContextMenuItem_1.ContextMenuItem, { option: el, onClick: handleContextMenuItemClick, state: contextMenuState }, el.value)); }) }) })) })] })) }));
140
156
  }
141
157
  var MyChatBubbleListItem = (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n margin-right: ", ";\n"], ["\n margin-right: ", ";\n"])), function (_a) {
142
158
  var theme = _a.theme;
@@ -1,4 +1,5 @@
1
1
  import { MutableRefObject } from 'react';
2
+ export type PlacementTypes = 'v-auto' | 'h-auto' | 'v-center' | 'h-center' | 'top' | 'top-start' | 'top-end' | 'top-both' | 'top-center' | 'bottom' | 'bottom-start' | 'bottom-end' | 'bottom-both' | 'bottom-center' | 'left' | 'left-start' | 'left-end' | 'left-center' | 'right' | 'right-start' | 'right-end' | 'right-center';
2
3
  type Props = {
3
4
  targetRef: MutableRefObject<HTMLElement | null>;
4
5
  isOpen: boolean;
@@ -436,7 +436,7 @@ var inputInnerSpinButtonStyle = (0, styled_components_1.css)(templateObject_14 |
436
436
  var innerSpinButtonSize = _a.innerSpinButtonSize;
437
437
  return innerSpinButtonSize && "".concat(innerSpinButtonSize, "px");
438
438
  });
439
- var S_Input = styled_components_1.default.input(templateObject_15 || (templateObject_15 = __makeTemplateObject(["\n ", "\n line-height: ", ";\n position: relative;\n\n ::-webkit-inner-spin-button {\n ", "\n }\n ::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n"], ["\n ", "\n line-height: ", ";\n position: relative;\n\n ::-webkit-inner-spin-button {\n ", "\n }\n ::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n"])), basicStyle, function (_a) {
439
+ var S_Input = styled_components_1.default.input(templateObject_15 || (templateObject_15 = __makeTemplateObject(["\n ", "\n line-height: ", ";\n position: relative;\n\n ::-webkit-inner-spin-button {\n ", "\n }\n ::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-text-fill-color: ", " !important;\n transition: background-color 9999s ease-in-out 0s !important;\n }\n"], ["\n ", "\n line-height: ", ";\n position: relative;\n\n ::-webkit-inner-spin-button {\n ", "\n }\n ::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-text-fill-color: ", " !important;\n transition: background-color 9999s ease-in-out 0s !important;\n }\n"])), basicStyle, function (_a) {
440
440
  var theme = _a.theme;
441
441
  return theme.desktopLineHeight.singleLine;
442
442
  }, function (_a) {
@@ -444,6 +444,9 @@ var S_Input = styled_components_1.default.input(templateObject_15 || (templateOb
444
444
  return stepperMode === 'use' && type === 'number' && isFocused
445
445
  ? inputInnerSpinButtonStyle
446
446
  : '-webkit-appearance: none; margin: 0;';
447
+ }, function (_a) {
448
+ var theme = _a.theme;
449
+ return theme.ui_cpnt_textfield_text_typed;
447
450
  });
448
451
  var S_Auto = styled_components_1.default.textarea(templateObject_16 || (templateObject_16 = __makeTemplateObject(["\n ", "\n display: block;\n overflow-y: auto;\n resize: none;\n ", "\n ", ";\n"], ["\n ", "\n display: block;\n overflow-y: auto;\n resize: none;\n ", "\n ", ";\n"])), basicStyle, function (_a) {
449
452
  var autoMaxRows = _a.autoMaxRows, textSize = _a.textSize, fieldHeight = _a.fieldHeight;
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
+ import { PlacementTypes } from './Popup';
2
3
  import type { PDSTextType, PDSValueOption } from '../../../common';
3
4
  type Props = {
4
5
  titleText?: PDSTextType;
@@ -8,8 +9,9 @@ type Props = {
8
9
  hoverMode?: 'none' | 'use';
9
10
  contextMenuOptionArray?: PDSValueOption[];
10
11
  contextMenuState?: 'normal' | 'disabled';
11
- colorTheme?: 'seller' | 'subscriber' | 'seller_transparent' | 'subscriber_transparent';
12
+ colorTheme?: 'seller' | 'seller_transparent' | 'subscriber' | 'subscriber_transparent' | 'secondary_transparent_grey' | 'white_transparent_grey';
13
+ contextMenuPosition?: PlacementTypes;
12
14
  onClickContextMenuItem?: (option: PDSValueOption) => void;
13
15
  };
14
- declare function BasicChatListItem({ titleText, contentText, leftImageMode, imageSrc, hoverMode, contextMenuOptionArray, onClickContextMenuItem, contextMenuState, colorTheme }: Props): JSX.Element;
16
+ declare function BasicChatListItem({ titleText, contentText, leftImageMode, imageSrc, hoverMode, contextMenuOptionArray, contextMenuPosition, onClickContextMenuItem, contextMenuState, colorTheme }: Props): JSX.Element;
15
17
  export default BasicChatListItem;
@@ -29,19 +29,23 @@ var TextLabel_1 = require("../TextLabel");
29
29
  var Popup_1 = require("./Popup");
30
30
  var titleTextColors = {
31
31
  seller: 'usrTextBrandPrimary',
32
- subscriber: 'sysTextSecondary',
33
32
  seller_transparent: 'usrTextBrandPrimary',
34
- subscriber_transparent: 'sysTextWhite'
33
+ subscriber: 'sysTextSecondary',
34
+ subscriber_transparent: 'sysTextWhite',
35
+ secondary_transparent_grey: 'sysTextSecondary',
36
+ white_transparent_grey: 'sysTextWhite'
35
37
  };
36
38
  var backgroundColorTheme = {
37
39
  seller: 'ui_cpnt_list_base_area_seller',
38
- subscriber: 'ui_cpnt_list_base_area',
39
40
  seller_transparent: 'ui_cpnt_list_base_area_transparent_seller',
40
- subscriber_transparent: 'ui_cpnt_list_base_area_transparent'
41
+ subscriber: 'ui_cpnt_list_base_area',
42
+ subscriber_transparent: 'ui_cpnt_list_base_area_transparent',
43
+ secondary_transparent_grey: 'ui_cpnt_list_base_area',
44
+ white_transparent_grey: 'ui_cpnt_list_base_area_transparent'
41
45
  };
42
46
  function BasicChatListItem(_a) {
43
- var titleText = _a.titleText, contentText = _a.contentText, _b = _a.leftImageMode, leftImageMode = _b === void 0 ? 'none' : _b, imageSrc = _a.imageSrc, _c = _a.hoverMode, hoverMode = _c === void 0 ? 'use' : _c, contextMenuOptionArray = _a.contextMenuOptionArray, onClickContextMenuItem = _a.onClickContextMenuItem, _d = _a.contextMenuState, contextMenuState = _d === void 0 ? 'normal' : _d, _e = _a.colorTheme, colorTheme = _e === void 0 ? 'subscriber' : _e;
44
- var _f = (0, react_1.useState)(false), isContextMenuOpen = _f[0], setIsContextMenuOpen = _f[1];
47
+ var titleText = _a.titleText, contentText = _a.contentText, _b = _a.leftImageMode, leftImageMode = _b === void 0 ? 'none' : _b, imageSrc = _a.imageSrc, _c = _a.hoverMode, hoverMode = _c === void 0 ? 'use' : _c, contextMenuOptionArray = _a.contextMenuOptionArray, _d = _a.contextMenuPosition, contextMenuPosition = _d === void 0 ? 'v-auto' : _d, onClickContextMenuItem = _a.onClickContextMenuItem, _e = _a.contextMenuState, contextMenuState = _e === void 0 ? 'normal' : _e, _f = _a.colorTheme, colorTheme = _f === void 0 ? 'subscriber' : _f;
48
+ var _g = (0, react_1.useState)(false), isContextMenuOpen = _g[0], setIsContextMenuOpen = _g[1];
45
49
  var contextMenuRef = (0, react_1.useRef)(null);
46
50
  var chatBody = document.querySelector('#chatMessageBox');
47
51
  var chatBodyRect = chatBody === null || chatBody === void 0 ? void 0 : chatBody.getBoundingClientRect();
@@ -57,6 +61,24 @@ function BasicChatListItem(_a) {
57
61
  }
58
62
  chatBody.style.overflowY = isContextMenuOpen ? 'hidden' : 'auto';
59
63
  }, [isContextMenuOpen, chatBody]);
64
+ /**
65
+ * @when contextMenu가 열려 있을 때
66
+ * @expected touchmove 이벤트 발생시 contextMenu를 닫습니다.
67
+ * @clear touchmove 이벤트를 제거합니다.
68
+ */
69
+ (0, react_1.useEffect)(function () {
70
+ function handleScrollEvent() {
71
+ setIsContextMenuOpen(false);
72
+ }
73
+ window.addEventListener('touchmove', handleScrollEvent);
74
+ window.addEventListener('scroll', handleScrollEvent);
75
+ window.addEventListener('wheel', handleScrollEvent);
76
+ return function () {
77
+ window.removeEventListener('touchmove', handleScrollEvent);
78
+ window.removeEventListener('scroll', handleScrollEvent);
79
+ window.removeEventListener('wheel', handleScrollEvent);
80
+ };
81
+ }, []);
60
82
  var handleMoreButtonClick = function (e) {
61
83
  e.stopPropagation();
62
84
  setIsContextMenuOpen(function (prev) { return !prev; });
@@ -67,7 +89,33 @@ function BasicChatListItem(_a) {
67
89
  }
68
90
  setIsContextMenuOpen(false);
69
91
  };
70
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(S_BasicChatListItem, __assign({ "x-pds-name": "BasicChatListItem", "x-pds-element-type": "component", "x-pds-device-type": "mobile", colorTheme: colorTheme }, { children: [leftImageMode === 'use' && ((0, jsx_runtime_1.jsx)(S_ImageViewWrapper, { children: (0, jsx_runtime_1.jsx)(hybrid_1.ImageView, { shapeType: "circular", ratio: "1_1", scaleType: "cover", src: imageSrc, width: "responsive" }) })), (0, jsx_runtime_1.jsx)(S_TitleTextWrapper, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: titleText, styleTheme: "caption1Bold", wordBreak: "break_all", colorTheme: titleTextColors[colorTheme] }) }), (0, jsx_runtime_1.jsx)(S_ContentTextWrapper, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: contentText, styleTheme: "caption1Regular", colorTheme: colorTheme === 'subscriber_transparent' ? 'sysTextWhite' : 'sysTextPrimary', wordBreak: "break_all" }) }), hoverMode === 'use' && ((0, jsx_runtime_1.jsx)(S_SeeMoreButton, __assign({ isContextMenuOpen: isContextMenuOpen, hoverMode: hoverMode, ref: contextMenuRef }, { children: (0, jsx_runtime_1.jsx)(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 }) }))), (0, jsx_runtime_1.jsx)(Popup_1.PopupProvider, { children: (0, jsx_runtime_1.jsx)(Popup_1.Popup, __assign({ targetRef: contextMenuRef, isOpen: isContextMenuOpen, placement: "v-auto", wrapperHeight: chatBodyRect === null || chatBodyRect === void 0 ? void 0 : chatBodyRect.height, onClickOutside: function () { return setIsContextMenuOpen(false); } }, { children: (0, jsx_runtime_1.jsx)(ContextMenu_1.ContextMenu, { children: contextMenuOptionArray === null || contextMenuOptionArray === void 0 ? void 0 : contextMenuOptionArray.map(function (el) { return ((0, jsx_runtime_1.jsx)(ContextMenuItem_1.ContextMenuItem, { option: el, onClick: handleContextMenuItemClick, state: contextMenuState }, el.value)); }) }) })) })] })) }));
92
+ var handleContextMenuOutsideClick = function () {
93
+ setIsContextMenuOpen(false);
94
+ };
95
+ var contentTextColorTheme;
96
+ var contentTextColorOverride;
97
+ var iconColorKey;
98
+ switch (colorTheme) {
99
+ case 'subscriber_transparent': {
100
+ contentTextColorTheme = 'sysTextWhite';
101
+ iconColorKey = 'ui_cpnt_button_icon_white';
102
+ break;
103
+ }
104
+ case 'secondary_transparent_grey': {
105
+ contentTextColorTheme = 'sysTextSecondary';
106
+ break;
107
+ }
108
+ case 'white_transparent_grey': {
109
+ contentTextColorOverride = 'ui_cpnt_textlabel_sys_white_02';
110
+ iconColorKey = 'ui_cpnt_button_icon_white';
111
+ break;
112
+ }
113
+ default: {
114
+ contentTextColorTheme = 'sysTextPrimary';
115
+ iconColorKey = 'ui_cpnt_button_icon_enabled';
116
+ }
117
+ }
118
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(S_BasicChatListItem, __assign({ "x-pds-name": "BasicChatListItem", "x-pds-element-type": "component", "x-pds-device-type": "mobile", colorTheme: colorTheme }, { children: [leftImageMode === 'use' && ((0, jsx_runtime_1.jsx)(S_ImageViewWrapper, { children: (0, jsx_runtime_1.jsx)(hybrid_1.ImageView, { shapeType: "circular", ratio: "1_1", scaleType: "cover", src: imageSrc, width: "responsive" }) })), (0, jsx_runtime_1.jsx)(S_TitleTextWrapper, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: titleText, styleTheme: "caption1Bold", wordBreak: "break_all", colorTheme: titleTextColors[colorTheme] }) }), (0, jsx_runtime_1.jsx)(S_ContentTextWrapper, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: contentText, styleTheme: "caption1Regular", colorTheme: contentTextColorTheme, colorOverride: contentTextColorOverride, wordBreak: "break_all" }) }), hoverMode === 'use' && ((0, jsx_runtime_1.jsx)(S_MoreButtonWrapper, { children: (0, jsx_runtime_1.jsx)(S_SeeMoreButton, __assign({ isContextMenuOpen: isContextMenuOpen, hoverMode: hoverMode, ref: contextMenuRef }, { children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { fillType: "fill", baseSize: "xsmall", iconFillType: "fill", iconSize: 20, iconName: "ic_more", baseColorKey: "ui_cpnt_button_fill_base_transparent", iconColorKey: iconColorKey, onClick: handleMoreButtonClick }) })) })), (0, jsx_runtime_1.jsx)(Popup_1.PopupProvider, { children: (0, jsx_runtime_1.jsx)(Popup_1.Popup, __assign({ targetRef: contextMenuRef, isOpen: isContextMenuOpen, placement: contextMenuPosition, wrapperHeight: chatBodyRect === null || chatBodyRect === void 0 ? void 0 : chatBodyRect.height, onClickOutside: handleContextMenuOutsideClick }, { children: (0, jsx_runtime_1.jsx)(ContextMenu_1.ContextMenu, { children: contextMenuOptionArray === null || contextMenuOptionArray === void 0 ? void 0 : contextMenuOptionArray.map(function (el) { return ((0, jsx_runtime_1.jsx)(ContextMenuItem_1.ContextMenuItem, { option: el, onClick: handleContextMenuItemClick, state: contextMenuState }, el.value)); }) }) })) })] })) }));
71
119
  }
72
120
  var S_BasicChatListItem = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background-color: ", ";\n display: flex;\n height: fit-content;\n max-width: 100%;\n min-height: 24px;\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n padding-top: ", ";\n"], ["\n background-color: ", ";\n display: flex;\n height: fit-content;\n max-width: 100%;\n min-height: 24px;\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n padding-top: ", ";\n"])), function (_a) {
73
121
  var colorTheme = _a.colorTheme, theme = _a.theme;
@@ -93,7 +141,8 @@ var S_ContentTextWrapper = styled_components_1.default.div(templateObject_3 || (
93
141
  var theme = _a.theme;
94
142
  return theme.spacing.spacingC;
95
143
  });
96
- var S_SeeMoreButton = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n margin-left: ", ";\n opacity: ", ";\n position: relative;\n\n ", ":hover & {\n opacity: ", ";\n }\n"], ["\n margin-left: ", ";\n opacity: ", ";\n position: relative;\n\n ", ":hover & {\n opacity: ", ";\n }\n"])), function (_a) {
144
+ var S_MoreButtonWrapper = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n height: 24px;\n width: 24px;\n"], ["\n height: 24px;\n width: 24px;\n"])));
145
+ var S_SeeMoreButton = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n margin-left: ", ";\n opacity: ", ";\n position: relative;\n\n ", ":hover & {\n opacity: ", ";\n }\n"], ["\n margin-left: ", ";\n opacity: ", ";\n position: relative;\n\n ", ":hover & {\n opacity: ", ";\n }\n"])), function (_a) {
97
146
  var theme = _a.theme;
98
147
  return theme.spacing.spacingA;
99
148
  }, function (_a) {
@@ -103,6 +152,6 @@ var S_SeeMoreButton = styled_components_1.default.div(templateObject_4 || (templ
103
152
  var hoverMode = _a.hoverMode;
104
153
  return hoverMode === 'use' && '1';
105
154
  });
106
- var S_TitleTextWrapper = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n max-width: 120px;\n min-width: 56px;\n"], ["\n max-width: 120px;\n min-width: 56px;\n"])));
155
+ var S_TitleTextWrapper = styled_components_1.default.div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n max-width: 120px;\n min-width: 56px;\n"], ["\n max-width: 120px;\n min-width: 56px;\n"])));
107
156
  exports.default = BasicChatListItem;
108
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
157
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
@@ -1,4 +1,5 @@
1
1
  import { MutableRefObject } from 'react';
2
+ export type PlacementTypes = 'v-auto' | 'h-auto' | 'v-center' | 'h-center' | 'top' | 'top-start' | 'top-end' | 'top-both' | 'top-center' | 'bottom' | 'bottom-start' | 'bottom-end' | 'bottom-both' | 'bottom-center' | 'left' | 'left-start' | 'left-end' | 'left-center' | 'right' | 'right-start' | 'right-end' | 'right-center';
2
3
  type Props = {
3
4
  targetRef: MutableRefObject<HTMLElement | null>;
4
5
  isOpen: boolean;
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
+ import { PlacementTypes } from './Popup';
2
3
  import type { PDSTextType, PDSValueOption } from '../../../common';
3
4
  type ColorThemeType = 'grey' | 'brand_primary' | 'translucent_white' | 'translucent_black';
4
5
  export type ChatBubbleListItemProps = {
@@ -11,8 +12,9 @@ export type ChatBubbleListItemProps = {
11
12
  timeText?: PDSTextType;
12
13
  contextMenuOptionArray?: PDSValueOption[];
13
14
  contextMenuState?: 'normal' | 'disabled';
15
+ contextMenuPosition?: PlacementTypes;
14
16
  children?: React.ReactNode;
15
17
  onClickContextMenuItem?: (option: PDSValueOption) => void;
16
18
  };
17
- declare function ChatBubbleListItem({ titleText, imageSrc, hoverMode, styleTheme, colorTheme, timeMode, timeText, contextMenuOptionArray, contextMenuState, children, onClickContextMenuItem }: ChatBubbleListItemProps): JSX.Element;
19
+ declare function ChatBubbleListItem({ titleText, imageSrc, hoverMode, styleTheme, colorTheme, timeMode, timeText, contextMenuOptionArray, contextMenuState, contextMenuPosition, children, onClickContextMenuItem }: ChatBubbleListItemProps): JSX.Element;
18
20
  export default ChatBubbleListItem;
@@ -67,9 +67,9 @@ var profileImageBorderColorTheme = {
67
67
  translucent_black: 'ui_avatar_border_translucent_black'
68
68
  };
69
69
  function ChatBubbleListItem(_a) {
70
- var titleText = _a.titleText, imageSrc = _a.imageSrc, _b = _a.hoverMode, hoverMode = _b === void 0 ? 'use' : _b, styleTheme = _a.styleTheme, _c = _a.colorTheme, colorTheme = _c === void 0 ? 'grey' : _c, _d = _a.timeMode, timeMode = _d === void 0 ? 'use' : _d, timeText = _a.timeText, contextMenuOptionArray = _a.contextMenuOptionArray, _e = _a.contextMenuState, contextMenuState = _e === void 0 ? 'normal' : _e, children = _a.children, onClickContextMenuItem = _a.onClickContextMenuItem;
70
+ var titleText = _a.titleText, imageSrc = _a.imageSrc, _b = _a.hoverMode, hoverMode = _b === void 0 ? 'use' : _b, styleTheme = _a.styleTheme, _c = _a.colorTheme, colorTheme = _c === void 0 ? 'grey' : _c, _d = _a.timeMode, timeMode = _d === void 0 ? 'use' : _d, timeText = _a.timeText, contextMenuOptionArray = _a.contextMenuOptionArray, _e = _a.contextMenuState, contextMenuState = _e === void 0 ? 'normal' : _e, _f = _a.contextMenuPosition, contextMenuPosition = _f === void 0 ? 'v-auto' : _f, children = _a.children, onClickContextMenuItem = _a.onClickContextMenuItem;
71
71
  var isMe = styleTheme.includes('me');
72
- var _f = (0, react_1.useState)(false), isContextMenuOpen = _f[0], setIsContextMenuOpen = _f[1];
72
+ var _g = (0, react_1.useState)(false), isContextMenuOpen = _g[0], setIsContextMenuOpen = _g[1];
73
73
  var contextMenuRef = (0, react_1.useRef)(null);
74
74
  var chatBody = document.querySelector('#chatMessageBox');
75
75
  var rect = chatBody === null || chatBody === void 0 ? void 0 : chatBody.getBoundingClientRect();
@@ -85,6 +85,24 @@ function ChatBubbleListItem(_a) {
85
85
  }
86
86
  chatBody.style.overflowY = isContextMenuOpen ? 'hidden' : 'auto';
87
87
  }, [isContextMenuOpen, chatBody]);
88
+ /**
89
+ * @when contextMenu가 열려 있을 때
90
+ * @expected touchmove 이벤트 발생시 contextMenu를 닫습니다.
91
+ * @clear touchmove 이벤트를 제거합니다.
92
+ */
93
+ (0, react_1.useEffect)(function () {
94
+ function handleScrollEvent() {
95
+ setIsContextMenuOpen(false);
96
+ }
97
+ window.addEventListener('touchmove', handleScrollEvent);
98
+ window.addEventListener('scroll', handleScrollEvent);
99
+ window.addEventListener('wheel', handleScrollEvent);
100
+ return function () {
101
+ window.removeEventListener('touchmove', handleScrollEvent);
102
+ window.removeEventListener('scroll', handleScrollEvent);
103
+ window.removeEventListener('wheel', handleScrollEvent);
104
+ };
105
+ }, []);
88
106
  var handleMoreButtonClick = function (e) {
89
107
  e.stopPropagation();
90
108
  setIsContextMenuOpen(function (prev) { return !prev; });
@@ -136,7 +154,7 @@ function ChatBubbleListItem(_a) {
136
154
  }
137
155
  return false;
138
156
  };
139
- return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(S_ChatBubbleListItem, __assign({ "x-pds-name": "ChatBubbleListItem", "x-pds-element-type": "component", "x-pds-device-type": "mobile", isMe: isMe }, { children: [isLeftSpacingChecker() ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: isShowProfileImage() ? ((0, jsx_runtime_1.jsx)(S_ImageViewWrapper, __assign({ isOtherAvatarImpact: styleTheme === 'other_avatar_impact', colorTheme: colorTheme }, { children: (0, jsx_runtime_1.jsx)(hybrid_1.ImageView, { shapeType: "circular", ratio: "1_1", scaleType: "cover", src: imageSrc, width: styleTheme === 'other_avatar_impact' ? 36 : 38 }) }))) : ((0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_g", spacingType: "width" })) })) : ((0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" })), (0, jsx_runtime_1.jsxs)(S_RightBox, { children: [isShowTitleText() && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: titleText, styleTheme: "caption1Bold", colorTheme: colorTheme && checkTextColorTheme() }), (0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_b" })] })), (0, jsx_runtime_1.jsxs)(S_ChatBubbleBox, { children: [(0, jsx_runtime_1.jsxs)(S_ChatBubbleWrapper, __assign({ isMe: isMe }, { children: [timeMode === 'use' && timeText && isMe && ((0, jsx_runtime_1.jsxs)(S_TimeWrapper, { children: [(0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: timeText, styleTheme: "caption2Regular", colorTheme: "sysTextTertiary", singleLineMode: "use" }), (0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" })] })), (0, jsx_runtime_1.jsx)(ChatBubble_1.default, __assign({ colorTheme: colorTheme, tailType: chatBubbleTailType[styleTheme] }, { children: children })), timeMode === 'use' && timeText && !isMe && ((0, jsx_runtime_1.jsxs)(S_TimeWrapper, { children: [(0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" }), (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: timeText, styleTheme: "caption2Regular", colorTheme: "sysTextTertiary", singleLineMode: "use" })] }))] })), hoverMode === 'use' && !isMe && ((0, jsx_runtime_1.jsx)(S_SeeMoreButton, __assign({ isContextMenuOpen: isContextMenuOpen, hoverMode: hoverMode, ref: contextMenuRef }, { children: (0, jsx_runtime_1.jsx)(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 }) })))] })] }), (0, jsx_runtime_1.jsx)(Popup_1.PopupProvider, { children: (0, jsx_runtime_1.jsx)(Popup_1.Popup, __assign({ targetRef: contextMenuRef, isOpen: isContextMenuOpen, placement: "v-auto", wrapperHeight: rect === null || rect === void 0 ? void 0 : rect.height, onClickOutside: function () { return setIsContextMenuOpen(false); } }, { children: (0, jsx_runtime_1.jsx)(ContextMenu_1.ContextMenu, { children: contextMenuOptionArray === null || contextMenuOptionArray === void 0 ? void 0 : contextMenuOptionArray.map(function (el) { return ((0, jsx_runtime_1.jsx)(ContextMenuItem_1.ContextMenuItem, { option: el, onClick: handleContextMenuItemClick, state: contextMenuState }, el.value)); }) }) })) })] })) }));
157
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(S_ChatBubbleListItem, __assign({ "x-pds-name": "ChatBubbleListItem", "x-pds-element-type": "component", "x-pds-device-type": "mobile", isMe: isMe }, { children: [isLeftSpacingChecker() ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: isShowProfileImage() ? ((0, jsx_runtime_1.jsx)(S_ImageViewWrapper, __assign({ isOtherAvatarImpact: styleTheme === 'other_avatar_impact', colorTheme: colorTheme }, { children: (0, jsx_runtime_1.jsx)(hybrid_1.ImageView, { shapeType: "circular", ratio: "1_1", scaleType: "cover", src: imageSrc, width: styleTheme === 'other_avatar_impact' ? 36 : 38 }) }))) : ((0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_g", spacingType: "width" })) })) : ((0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" })), (0, jsx_runtime_1.jsxs)(S_RightBox, { children: [isShowTitleText() && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: titleText, styleTheme: "caption1Bold", colorTheme: colorTheme && checkTextColorTheme() }), (0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_b" })] })), (0, jsx_runtime_1.jsxs)(S_ChatBubbleBox, { children: [(0, jsx_runtime_1.jsxs)(S_ChatBubbleWrapper, __assign({ isMe: isMe }, { children: [timeMode === 'use' && timeText && isMe && ((0, jsx_runtime_1.jsxs)(S_TimeWrapper, { children: [(0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: timeText, styleTheme: "caption2Regular", colorTheme: "sysTextTertiary", singleLineMode: "use" }), (0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" })] })), (0, jsx_runtime_1.jsx)(ChatBubble_1.default, __assign({ colorTheme: colorTheme, tailType: chatBubbleTailType[styleTheme] }, { children: children })), timeMode === 'use' && timeText && !isMe && ((0, jsx_runtime_1.jsxs)(S_TimeWrapper, { children: [(0, jsx_runtime_1.jsx)(hybrid_1.Spacing, { size: "spacing_a", spacingType: "width" }), (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: timeText, styleTheme: "caption2Regular", colorTheme: "sysTextTertiary", singleLineMode: "use" })] }))] })), hoverMode === 'use' && !isMe && ((0, jsx_runtime_1.jsx)(S_SeeMoreButton, __assign({ isContextMenuOpen: isContextMenuOpen, hoverMode: hoverMode, ref: contextMenuRef }, { children: (0, jsx_runtime_1.jsx)(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 }) })))] })] }), (0, jsx_runtime_1.jsx)(Popup_1.PopupProvider, { children: (0, jsx_runtime_1.jsx)(Popup_1.Popup, __assign({ targetRef: contextMenuRef, isOpen: isContextMenuOpen, placement: contextMenuPosition, wrapperHeight: rect === null || rect === void 0 ? void 0 : rect.height, onClickOutside: function () { return setIsContextMenuOpen(false); } }, { children: (0, jsx_runtime_1.jsx)(ContextMenu_1.ContextMenu, { children: contextMenuOptionArray === null || contextMenuOptionArray === void 0 ? void 0 : contextMenuOptionArray.map(function (el) { return ((0, jsx_runtime_1.jsx)(ContextMenuItem_1.ContextMenuItem, { option: el, onClick: handleContextMenuItemClick, state: contextMenuState }, el.value)); }) }) })) })] })) }));
140
158
  }
141
159
  var MyChatBubbleListItem = (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n margin-right: ", ";\n"], ["\n margin-right: ", ";\n"])), function (_a) {
142
160
  var theme = _a.theme;
@@ -1,4 +1,5 @@
1
1
  import { MutableRefObject } from 'react';
2
+ export type PlacementTypes = 'v-auto' | 'h-auto' | 'v-center' | 'h-center' | 'top' | 'top-start' | 'top-end' | 'top-both' | 'top-center' | 'bottom' | 'bottom-start' | 'bottom-end' | 'bottom-both' | 'bottom-center' | 'left' | 'left-start' | 'left-end' | 'left-center' | 'right' | 'right-start' | 'right-end' | 'right-center';
2
3
  type Props = {
3
4
  targetRef: MutableRefObject<HTMLElement | null>;
4
5
  isOpen: boolean;
@@ -86,7 +86,7 @@ var Body = react_1.default.forwardRef(function (_a, ref) {
86
86
  }
87
87
  setIsButtonShow(true);
88
88
  };
89
- return ((0, jsx_runtime_1.jsxs)(S_Body, __assign({ bodySpacingMode: bodySpacingMode }, { children: [(0, jsx_runtime_1.jsxs)(S_ChatMessageBox, __assign({ onScroll: handleScroll, ref: ref, scrollVisibleType: scrollVisibleType }, { children: [children, (0, jsx_runtime_1.jsx)(EndOfList, {})] })), bodyChildren, isButtonShow && ((0, jsx_runtime_1.jsx)(S_BottomButtonWrapper, { children: (0, jsx_runtime_1.jsx)(MainButton_1.MainButton, { text: bodyMBtnText, size: "small", onClick: handleClickMBtn }) }))] })));
89
+ return ((0, jsx_runtime_1.jsxs)(S_Body, __assign({ bodySpacingMode: bodySpacingMode }, { children: [(0, jsx_runtime_1.jsxs)(S_ChatMessageBox, __assign({ id: "chatMessageBox", onScroll: handleScroll, ref: ref, scrollVisibleType: scrollVisibleType }, { children: [children, (0, jsx_runtime_1.jsx)(EndOfList, {})] })), bodyChildren, isButtonShow && ((0, jsx_runtime_1.jsx)(S_BottomButtonWrapper, { children: (0, jsx_runtime_1.jsx)(MainButton_1.MainButton, { text: bodyMBtnText, size: "small", onClick: handleClickMBtn }) }))] })));
90
90
  });
91
91
  var bodySpacing = (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n box-sizing: border-box;\n padding-left: ", ";\n padding-right: ", ";\n"], ["\n box-sizing: border-box;\n padding-left: ", ";\n padding-right: ", ";\n"])), function (_a) {
92
92
  var theme = _a.theme;
@@ -18,9 +18,11 @@ type Props = {
18
18
  iBtn1Type?: 'submit' | 'reset' | 'button';
19
19
  iBtn2State?: 'normal' | 'disabled';
20
20
  iBtn2Type?: 'submit' | 'reset' | 'button';
21
+ colorTheme?: ColorTheme;
21
22
  onClickLeftBtn?: (e: React.MouseEvent<HTMLButtonElement>) => void;
22
23
  onClickIBtn1?: (e: React.MouseEvent<HTMLButtonElement>) => void;
23
24
  onClickIBtn2?: (e: React.MouseEvent<HTMLButtonElement>) => void;
24
25
  };
25
- declare function MobileHeaderBar({ titleType, titleText, captionText, leftBtnMode, displayType, iBtn1IconName, iBtn1IconFillType, iBtn1IconColorKey, iBtn2IconName, iBtn2IconFillType, iBtn2IconColorKey, dividerMode, imageSrc, iBtn1State, iBtn1Type, iBtn2State, iBtn2Type, onClickLeftBtn, onClickIBtn1, onClickIBtn2 }: Props): JSX.Element;
26
+ export type ColorTheme = 'none' | 'transparent_white';
27
+ declare function MobileHeaderBar({ titleType, titleText, captionText, leftBtnMode, displayType, iBtn1IconName, iBtn1IconFillType, iBtn1IconColorKey, iBtn2IconName, iBtn2IconFillType, iBtn2IconColorKey, dividerMode, imageSrc, iBtn1State, iBtn1Type, iBtn2State, iBtn2Type, colorTheme, onClickLeftBtn, onClickIBtn1, onClickIBtn2 }: Props): JSX.Element;
26
28
  export default MobileHeaderBar;