@steroidsjs/bootstrap 3.0.0-beta.98 → 3.0.0

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 (189) hide show
  1. package/content/Calendar/CalendarView.js +9 -4
  2. package/content/Calendar/CaptionElement.js +6 -3
  3. package/content/CalendarSystem/AsideCalendars/AsideCalendars.d.ts +12 -0
  4. package/content/CalendarSystem/AsideCalendars/AsideCalendars.js +43 -0
  5. package/content/CalendarSystem/AsideCalendars/AsideCalendars.scss +107 -0
  6. package/content/CalendarSystem/AsideCalendars/index.d.ts +2 -0
  7. package/content/CalendarSystem/AsideCalendars/index.js +7 -0
  8. package/content/CalendarSystem/AsideHeader/AsideHeader.d.ts +9 -0
  9. package/content/CalendarSystem/AsideHeader/AsideHeader.js +40 -0
  10. package/content/CalendarSystem/AsideHeader/AsideHeader.scss +41 -0
  11. package/content/CalendarSystem/AsideHeader/index.d.ts +2 -0
  12. package/content/CalendarSystem/AsideHeader/index.js +7 -0
  13. package/content/CalendarSystem/CalendarSystemEventGroupModalView.d.ts +2 -0
  14. package/content/CalendarSystem/CalendarSystemEventGroupModalView.js +25 -0
  15. package/content/CalendarSystem/CalendarSystemEventGroupModalView.scss +53 -0
  16. package/content/CalendarSystem/CalendarSystemModalView.d.ts +2 -0
  17. package/content/CalendarSystem/CalendarSystemModalView.js +54 -0
  18. package/content/CalendarSystem/CalendarSystemModalView.scss +84 -0
  19. package/content/CalendarSystem/CalendarSystemView.d.ts +2 -0
  20. package/content/CalendarSystem/CalendarSystemView.js +44 -0
  21. package/content/CalendarSystem/CalendarSystemView.scss +50 -0
  22. package/content/CalendarSystem/ContentHeader/ContentHeader.d.ts +10 -0
  23. package/content/CalendarSystem/ContentHeader/ContentHeader.js +26 -0
  24. package/content/CalendarSystem/ContentHeader/ContentHeader.scss +57 -0
  25. package/content/CalendarSystem/ContentHeader/index.d.ts +2 -0
  26. package/content/CalendarSystem/ContentHeader/index.js +7 -0
  27. package/content/CalendarSystem/MonthGrid/MonthGrid.d.ts +14 -0
  28. package/content/CalendarSystem/MonthGrid/MonthGrid.js +39 -0
  29. package/content/CalendarSystem/MonthGrid/MonthGrid.scss +41 -0
  30. package/content/CalendarSystem/MonthGrid/index.d.ts +2 -0
  31. package/content/CalendarSystem/MonthGrid/index.js +7 -0
  32. package/content/CalendarSystem/MonthGrid/views/MonthDay/MonthDay.d.ts +11 -0
  33. package/content/CalendarSystem/MonthGrid/views/MonthDay/MonthDay.js +73 -0
  34. package/content/CalendarSystem/MonthGrid/views/MonthDay/MonthDay.scss +126 -0
  35. package/content/CalendarSystem/MonthGrid/views/MonthDay/index.d.ts +2 -0
  36. package/content/CalendarSystem/MonthGrid/views/MonthDay/index.js +7 -0
  37. package/content/CalendarSystem/WeekGrid/WeekGrid.d.ts +14 -0
  38. package/content/CalendarSystem/WeekGrid/WeekGrid.js +25 -0
  39. package/content/CalendarSystem/WeekGrid/WeekGrid.scss +154 -0
  40. package/content/CalendarSystem/WeekGrid/index.d.ts +2 -0
  41. package/content/CalendarSystem/WeekGrid/index.js +7 -0
  42. package/content/CalendarSystem/WeekGrid/views/WeekHour/WeekHour.d.ts +12 -0
  43. package/content/CalendarSystem/WeekGrid/views/WeekHour/WeekHour.js +79 -0
  44. package/content/CalendarSystem/WeekGrid/views/WeekHour/WeekHour.scss +108 -0
  45. package/content/CalendarSystem/WeekGrid/views/WeekHour/index.d.ts +2 -0
  46. package/content/CalendarSystem/WeekGrid/views/WeekHour/index.js +7 -0
  47. package/content/Chart/ChartView.js +12 -2
  48. package/content/Chart/ChartView.scss +35 -4
  49. package/content/Chat/ChatView.d.ts +2 -0
  50. package/content/Chat/ChatView.js +62 -0
  51. package/content/Chat/ChatView.scss +59 -0
  52. package/content/Chat/index.d.ts +2 -0
  53. package/content/Chat/index.js +7 -0
  54. package/content/Chat/views/BubbleMessage/BubbleMessageView.d.ts +17 -0
  55. package/content/Chat/views/BubbleMessage/BubbleMessageView.js +72 -0
  56. package/content/Chat/views/BubbleMessage/BubbleMessageView.scss +195 -0
  57. package/content/Chat/views/BubbleMessage/index.d.ts +2 -0
  58. package/content/Chat/views/BubbleMessage/index.js +7 -0
  59. package/content/Chat/views/BubblesDateGroup/BubblesDateGroup.d.ts +12 -0
  60. package/content/Chat/views/BubblesDateGroup/BubblesDateGroup.js +48 -0
  61. package/content/Chat/views/BubblesDateGroup/BubblesDateGroup.scss +78 -0
  62. package/content/Chat/views/BubblesDateGroup/index.d.ts +2 -0
  63. package/content/Chat/views/BubblesDateGroup/index.js +7 -0
  64. package/content/Chat/views/ChatFileItem/ChatFileItemView.d.ts +9 -0
  65. package/content/Chat/views/ChatFileItem/ChatFileItemView.js +50 -0
  66. package/content/Chat/views/ChatFileItem/ChatFileItemView.scss +184 -0
  67. package/content/Chat/views/ChatFileItem/index.d.ts +2 -0
  68. package/content/Chat/views/ChatFileItem/index.js +7 -0
  69. package/content/Chat/views/ChatInput/ChatInputView.d.ts +3 -0
  70. package/content/Chat/views/ChatInput/ChatInputView.js +64 -0
  71. package/content/Chat/views/ChatInput/ChatInputView.scss +82 -0
  72. package/content/Chat/views/ChatInput/index.d.ts +2 -0
  73. package/content/Chat/views/ChatInput/index.js +7 -0
  74. package/content/Dashboard/DashboardItemView.d.ts +2 -0
  75. package/content/Dashboard/DashboardItemView.js +18 -0
  76. package/content/Dashboard/DashboardItemView.scss +47 -0
  77. package/content/DropDown/DropDownView.js +12 -12
  78. package/content/DropDown/DropDownView.scss +34 -175
  79. package/content/Icon/IconView.js +18 -2
  80. package/content/Kanban/KanbanView.d.ts +2 -0
  81. package/content/Kanban/KanbanView.js +29 -0
  82. package/content/Kanban/KanbanView.scss +12 -0
  83. package/content/Kanban/views/KanbanColumn/KanbanColumnView.d.ts +2 -0
  84. package/content/Kanban/views/KanbanColumn/KanbanColumnView.js +36 -0
  85. package/content/Kanban/views/KanbanColumn/KanbanColumnView.scss +75 -0
  86. package/content/Kanban/views/KanbanColumn/index.d.ts +2 -0
  87. package/content/Kanban/views/KanbanColumn/index.js +7 -0
  88. package/content/Kanban/views/KanbanModal/KanbanModalView.d.ts +2 -0
  89. package/content/Kanban/views/KanbanModal/KanbanModalView.js +57 -0
  90. package/content/Kanban/views/KanbanModal/KanbanModalView.scss +210 -0
  91. package/content/Kanban/views/KanbanModal/index.d.ts +2 -0
  92. package/content/Kanban/views/KanbanModal/index.js +7 -0
  93. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/CreateOrEditTaskModalContentView.d.ts +2 -0
  94. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/CreateOrEditTaskModalContentView.js +95 -0
  95. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/index.d.ts +2 -0
  96. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/index.js +7 -0
  97. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/Label/Label.d.ts +6 -0
  98. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/Label/Label.js +11 -0
  99. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/Label/index.d.ts +2 -0
  100. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/Label/index.js +7 -0
  101. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/TagsSelector/TagsSelector.d.ts +8 -0
  102. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/TagsSelector/TagsSelector.js +49 -0
  103. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/TagsSelector/TagsSelector.scss +30 -0
  104. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/TagsSelector/index.d.ts +2 -0
  105. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/TagsSelector/index.js +7 -0
  106. package/content/Kanban/views/KanbanModal/views/TaskDetailsModalContent/TaskDetailsModalContentView.d.ts +2 -0
  107. package/content/Kanban/views/KanbanModal/views/TaskDetailsModalContent/TaskDetailsModalContentView.js +53 -0
  108. package/content/Kanban/views/KanbanModal/views/TaskDetailsModalContent/index.d.ts +2 -0
  109. package/content/Kanban/views/KanbanModal/views/TaskDetailsModalContent/index.js +7 -0
  110. package/content/Kanban/views/KanbanTask/KanbanTaskView.d.ts +5 -0
  111. package/content/Kanban/views/KanbanTask/KanbanTaskView.js +66 -0
  112. package/content/Kanban/views/KanbanTask/KanbanTaskView.scss +110 -0
  113. package/content/Kanban/views/KanbanTask/index.d.ts +2 -0
  114. package/content/Kanban/views/KanbanTask/index.js +7 -0
  115. package/content/Kanban/views/TaskTags/TaskTags.d.ts +9 -0
  116. package/content/Kanban/views/TaskTags/TaskTags.js +14 -0
  117. package/content/Kanban/views/TaskTags/TaskTags.scss +7 -0
  118. package/content/Kanban/views/TaskTags/index.d.ts +2 -0
  119. package/content/Kanban/views/TaskTags/index.js +7 -0
  120. package/content/Menu/MenuItemView.js +4 -1
  121. package/content/Slider/SliderView.js +3 -1
  122. package/form/CheckboxField/CheckboxFieldView.js +5 -2
  123. package/form/CheckboxField/CheckboxFieldView.scss +27 -0
  124. package/form/CheckboxListField/CheckboxListFieldView.js +2 -1
  125. package/form/CheckboxTreeField/CheckboxTreeFieldView.d.ts +2 -0
  126. package/form/CheckboxTreeField/CheckboxTreeFieldView.js +30 -0
  127. package/form/CheckboxTreeField/CheckboxTreeFieldView.scss +5 -0
  128. package/form/CheckboxTreeField/index.d.ts +2 -0
  129. package/form/CheckboxTreeField/index.js +7 -0
  130. package/form/DateRangeField/DateRangeFieldView.js +2 -2
  131. package/form/DateTimeField/DateTimeFieldView.js +1 -1
  132. package/form/DateTimeRangeField/DateTimeRangeFieldView.js +2 -2
  133. package/form/DropDownField/DropDownFieldView.js +4 -3
  134. package/form/DropDownField/DropDownFieldView.scss +12 -2
  135. package/form/DropDownFieldItem/DropDownFieldItemView.js +1 -1
  136. package/form/Form/FormView.js +1 -0
  137. package/form/ImageField/ImageFieldModalView.js +3 -1
  138. package/form/InputField/InputFieldView.js +2 -2
  139. package/form/NumberField/NumberFieldView.js +5 -16
  140. package/form/PasswordField/PasswordFieldView.js +1 -1
  141. package/form/SliderField/SliderFieldView.js +3 -1
  142. package/form/WizardForm/WizardFormView.d.ts +2 -0
  143. package/form/WizardForm/WizardFormView.js +33 -0
  144. package/form/WizardForm/WizardFormView.scss +30 -0
  145. package/icons/index.js +3 -0
  146. package/icons/svgs/add_16x16.svg +4 -0
  147. package/icons/svgs/done-all.svg +4 -0
  148. package/icons/svgs/send.svg +3 -0
  149. package/icons/svgs/view.svg +1 -0
  150. package/icons/svgs/warning_16x16.svg +2 -0
  151. package/index.d.ts +36 -0
  152. package/index.js +36 -0
  153. package/index.scss +15 -0
  154. package/layout/ProgressBar/CircleProgressBarView.js +4 -1
  155. package/layout/ProgressBar/LineProgressBarView.js +4 -1
  156. package/layout/Skeleton/SkeletonView.js +4 -1
  157. package/layout/Tooltip/TooltipView.js +3 -3
  158. package/layout/Tooltip/TooltipView.scss +10 -77
  159. package/list/FlexGrid/FlexGridView.scss +6 -13
  160. package/list/Grid/GridView.scss +8 -10
  161. package/list/Grid/views/TreeColumnView/TreeColumnView.d.ts +2 -0
  162. package/list/Grid/views/TreeColumnView/TreeColumnView.js +27 -0
  163. package/list/Grid/views/TreeColumnView/TreeColumnView.scss +6 -0
  164. package/list/Steps/StepItemView.js +21 -10
  165. package/list/Steps/StepItemView.scss +113 -83
  166. package/list/Steps/StepsView.js +4 -24
  167. package/list/Steps/StepsView.scss +6 -15
  168. package/nav/Controls/ControlsView.scss +3 -3
  169. package/nav/Tree/TreeView.js +3 -9
  170. package/nav/Tree/TreeView.scss +10 -47
  171. package/nav/TreeItem/TreeItemView.d.ts +2 -0
  172. package/nav/TreeItem/TreeItemView.js +69 -0
  173. package/nav/TreeItem/TreeItemView.scss +60 -0
  174. package/package.json +3 -3
  175. package/scss/bootstrap-classes/flex.scss +42 -0
  176. package/scss/bootstrap-classes/index.scss +4 -0
  177. package/scss/bootstrap-classes/layout.scss +72 -0
  178. package/scss/bootstrap-classes/spacing.scss +181 -0
  179. package/scss/bootstrap-classes/typography.scss +25 -0
  180. package/scss/mixins/button.scss +24 -8
  181. package/scss/mixins/index.scss +1 -0
  182. package/scss/mixins/scroll.scss +6 -0
  183. package/scss/mixins/tooltip.scss +113 -0
  184. package/scss/variables/common/colors.scss +5 -2
  185. package/scss/variables/common/flex.scss +5 -0
  186. package/scss/variables/common/typography.scss +13 -0
  187. package/scss/variables/index.scss +1 -0
  188. package/utils/getFormattedExpandLabel.d.ts +1 -0
  189. package/utils/getFormattedExpandLabel.js +5 -0
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ exports.__esModule = true;
40
+ var react_1 = __importStar(require("react"));
41
+ var react_use_1 = require("react-use");
42
+ var isEmpty_1 = __importDefault(require("lodash-es/isEmpty"));
43
+ var useBem_1 = __importDefault(require("@steroidsjs/core/hooks/useBem"));
44
+ var Avatar_1 = require("@steroidsjs/core/ui/content/Avatar");
45
+ var typography_1 = require("@steroidsjs/core/ui/typography");
46
+ var Title_1 = __importDefault(require("@steroidsjs/core/ui/typography/Title"));
47
+ var Icon_1 = __importDefault(require("@steroidsjs/core/ui/content/Icon"));
48
+ var timeTemplatesAndUnits_1 = require("@steroidsjs/core/ui/content/Chat/constants/timeTemplatesAndUnits");
49
+ var utils_1 = require("@steroidsjs/core/ui/content/Chat/utils");
50
+ require("./BubbleMessageView.scss");
51
+ var ChatFileItem_1 = __importDefault(require("../ChatFileItem"));
52
+ function BubbleMessageView(props) {
53
+ var _a, _b;
54
+ var bem = (0, useBem_1["default"])('BubbleMessageView');
55
+ var isMessageByAnotherUser = !props.isCurrentUser;
56
+ var _c = (0, react_1.useState)(props.timeAgo), timeAgo = _c[0], setTimeAgo = _c[1];
57
+ (0, react_use_1.useInterval)(function () { return setTimeAgo((0, utils_1.calculateMessageTimeAgo)(props.timestamp)); }, props.isTodayMessage ? timeTemplatesAndUnits_1.SECONDS_IN_MINUTE_VALUE : null);
58
+ return (react_1["default"].createElement("div", { className: bem.block({
59
+ 'another-user': isMessageByAnotherUser,
60
+ 'last-message': !!props.isLastMessage
61
+ }) },
62
+ react_1["default"].createElement("div", { className: bem.element('user-message') },
63
+ !props.isCurrentUser && props.isFirstMessage && (react_1["default"].createElement(Title_1["default"], { className: bem.element('username'), type: 'h4', tag: 'h4', content: "".concat(props.user.firstName, " ").concat(props.user.lastName) })),
64
+ react_1["default"].createElement(typography_1.Text, { className: bem.element('text'), type: "body", content: props.text }),
65
+ !(0, isEmpty_1["default"])(props.files) && (react_1["default"].createElement("div", { className: bem.element('files') }, props.files.map(function (file) { return (react_1["default"].createElement(ChatFileItem_1["default"], __assign({ key: file.uid, isFileByAnotherUser: isMessageByAnotherUser, isFileFromMessage: true }, file))); }))),
66
+ react_1["default"].createElement("div", { className: bem.element('indicators') },
67
+ react_1["default"].createElement(typography_1.Text, { className: bem.element('time'), type: "body3", content: timeAgo }),
68
+ props.isCurrentUser && (react_1["default"].createElement(Icon_1["default"], { className: bem.element('check'), name: "done-all" })))),
69
+ props.user && (react_1["default"].createElement("div", { className: bem.element('avatar') },
70
+ react_1["default"].createElement(Avatar_1.Avatar, { src: (_a = props.user.avatar) === null || _a === void 0 ? void 0 : _a.src, title: "".concat(props.user.firstName, " ").concat(props.user.lastName), status: (_b = props.user.avatar) === null || _b === void 0 ? void 0 : _b.status, size: 'sm' })))));
71
+ }
72
+ exports["default"] = (0, react_1.memo)(BubbleMessageView);
@@ -0,0 +1,195 @@
1
+ @use "../../../../scss/variables";
2
+
3
+ :root {
4
+ --bubble-background-color: #6b76ad;
5
+ --bubble-border-color: #6b76ad;
6
+ --username-text-color: #fff;
7
+ --message-text-color: #fff;
8
+ --message-time-color: #fff;
9
+
10
+ --another-user-bubble-background-color: #f8f8f8;
11
+ --another-user-bubble-border-color: #f1f5f7;
12
+ --another-user-username-text-color: #fff;
13
+ --another-user-message-text-color: #323232;
14
+ --another-user-message-time-color: rgba(0, 0, 0, 0.30);
15
+ }
16
+
17
+ html[data-theme="dark"] {
18
+ --bubble-background-color: #727EB7;
19
+ --bubble-border-color: #727EB7;
20
+ --message-text-color: #fff;
21
+ --message-time-color: #fff;
22
+
23
+ --another-user-bubble-background-color: #333646;
24
+ --another-user-bubble-border-color: #333646;
25
+ --another-user-message-text-color: #fff;
26
+ --another-user-message-time-color: rgba(255, 255, 255, 0.30);
27
+ }
28
+
29
+ $bubble-background-color: var(--bubble-background-color);
30
+ $bubble-border-color: var(--bubble-border-color);
31
+ $message-text-color: var(--message-text-color);
32
+ $message-time-color: var(--message-time-color);
33
+
34
+ $another-user-bubble-background-color: var(--another-user-bubble-background-color);
35
+ $another-user-bubble-border-color: var(--another-user-bubble-border-color);
36
+ $another-user-message-text-color: var(--another-user-message-text-color);
37
+ $another-user-message-time-color: var(--another-user-message-time-color);
38
+
39
+ @mixin svg-color($color) {
40
+ svg {
41
+ path {
42
+ stroke: $color;
43
+ }
44
+
45
+ circle {
46
+ fill: $color;
47
+ }
48
+ }
49
+ }
50
+
51
+ .BubbleMessageView {
52
+ $root: &;
53
+
54
+ display: flex;
55
+ flex-flow: row nowrap;
56
+ justify-content: flex-end;
57
+ align-items: flex-end;
58
+ align-self: flex-end;
59
+ gap: 8px;
60
+ max-width: 548px;
61
+ width: 100%;
62
+ margin-bottom: 4px;
63
+
64
+ &_another-user {
65
+ justify-content: flex-start;
66
+ align-self: flex-start;
67
+
68
+ #{$root}__avatar {
69
+ order: -1;
70
+ }
71
+
72
+ #{$root}__username {
73
+ color: $another-user-message-text-color;
74
+ }
75
+
76
+ #{$root}__user-message {
77
+ border: 1px solid $another-user-bubble-border-color;
78
+ background: $another-user-bubble-background-color;
79
+ color: $another-user-message-text-color;
80
+ }
81
+
82
+ #{$root}__text {
83
+ text-align: left;
84
+ color: $another-user-message-text-color;
85
+ }
86
+
87
+ #{$root}__files {
88
+ @include svg-color($another-user-message-text-color);
89
+
90
+ .TextView {
91
+ color: $another-user-message-text-color;
92
+ }
93
+ }
94
+
95
+ #{$root}__time {
96
+ color: $another-user-message-time-color;
97
+ }
98
+
99
+ &#{$root}_last-message {
100
+ #{$root}__user-message {
101
+ border-radius: 16px 16px 16px 0;
102
+ }
103
+
104
+ #{$root}__avatar {
105
+ visibility: visible;
106
+ }
107
+
108
+ #{$root}__username {
109
+ color: $another-user-message-text-color;
110
+ }
111
+ }
112
+ }
113
+
114
+ &_last-message {
115
+ margin-bottom: 8px;
116
+
117
+ #{$root}__user-message {
118
+ border-radius: 16px 16px 0 16px;
119
+ }
120
+
121
+ #{$root}__avatar {
122
+ visibility: visible;
123
+ }
124
+ }
125
+
126
+ &__avatar {
127
+ display: flex;
128
+ align-items: center;
129
+ justify-content: center;
130
+ min-width: 36px;
131
+ min-height: 36px;
132
+ visibility: hidden;
133
+ }
134
+
135
+ &__username {
136
+ align-self: flex-start;
137
+ margin-bottom: 0;
138
+ color: $message-text-color;
139
+ }
140
+
141
+ &__user-message {
142
+ display: flex;
143
+ padding: 12px;
144
+ flex-flow: column nowrap;
145
+ justify-content: flex-end;
146
+ align-items: flex-end;
147
+ gap: 4px;
148
+ border-radius: 16px;
149
+
150
+ border: 1px solid $bubble-border-color;
151
+ background: $bubble-background-color;
152
+ color: $message-text-color;
153
+ }
154
+
155
+ &__text {
156
+ margin-bottom: 0;
157
+ white-space: break-spaces;
158
+ width: 100%;
159
+ text-align: left;
160
+ color: $message-text-color;
161
+ }
162
+
163
+ &__files {
164
+ @include svg-color($message-text-color);
165
+
166
+ display: flex;
167
+ flex-flow: column nowrap;
168
+ gap: 8px;
169
+ width: 100%;
170
+ padding: 8px 0;
171
+
172
+ .TextView {
173
+ color: $message-text-color;
174
+ }
175
+ }
176
+
177
+ &__indicators {
178
+ display: flex;
179
+ flex-flow: row nowrap;
180
+ }
181
+
182
+ &__time {
183
+ margin-bottom: 0;
184
+ font-weight: 500;
185
+ color: $message-time-color;
186
+ }
187
+
188
+ &__check {
189
+ margin-left: 4px;
190
+ }
191
+
192
+ .ChatFileItemView {
193
+ width: 100%;
194
+ }
195
+ }
@@ -0,0 +1,2 @@
1
+ import BubbleMessageView from './BubbleMessageView';
2
+ export default BubbleMessageView;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ var BubbleMessageView_1 = __importDefault(require("./BubbleMessageView"));
7
+ exports["default"] = BubbleMessageView_1["default"];
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { IGroupedMessage } from '@steroidsjs/core/ui/content/Chat/hooks/useChat';
3
+ import { IChatUser } from '@steroidsjs/core/ui/content/Chat/Chat';
4
+ import './BubblesDateGroup.scss';
5
+ interface IBubblesDateGroupProps {
6
+ date: string;
7
+ groupedMessages: IGroupedMessage[][];
8
+ currentUser: IChatUser;
9
+ }
10
+ declare function BubblesDateGroup(props: IBubblesDateGroupProps): JSX.Element;
11
+ declare const _default: React.MemoExoticComponent<typeof BubblesDateGroup>;
12
+ export default _default;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
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
+ exports.__esModule = true;
29
+ var react_1 = __importStar(require("react"));
30
+ var useBem_1 = __importDefault(require("@steroidsjs/core/hooks/useBem"));
31
+ var utils_1 = require("@steroidsjs/core/ui/content/Chat/utils");
32
+ var BubbleMessage_1 = __importDefault(require("../BubbleMessage"));
33
+ require("./BubblesDateGroup.scss");
34
+ function BubblesDateGroup(props) {
35
+ var _a;
36
+ var bem = (0, useBem_1["default"])('BubblesDateGroup');
37
+ var toBubbles = (0, react_1.useCallback)(function (groupedMessages) { return (react_1["default"].createElement("div", { className: bem.element('bubbles') }, groupedMessages.map(function (bubbleMessage) { return (react_1["default"].createElement(BubbleMessage_1["default"], { key: bubbleMessage.id, user: bubbleMessage.user, text: bubbleMessage.text, files: bubbleMessage.files, timestamp: bubbleMessage.timestamp, timeAgo: (0, utils_1.calculateMessageTimeAgo)(bubbleMessage.timestamp), isTodayMessage: (0, utils_1.isTodayMessage)(bubbleMessage.timestamp), isCurrentUser: bubbleMessage.user.id === props.currentUser.id, isFirstMessage: bubbleMessage.isFirstMessage, isLastMessage: bubbleMessage.isLastMessage })); }))); }, [bem, props.currentUser.id]);
38
+ var renderDate = (0, react_1.useCallback)(function () { return (react_1["default"].createElement(react_1["default"].Fragment, null,
39
+ react_1["default"].createElement("div", { className: bem.element('date') },
40
+ react_1["default"].createElement("div", { className: bem.element('date-wrapper') },
41
+ react_1["default"].createElement("span", { className: bem.element('date-text') }, props.date))),
42
+ react_1["default"].createElement("div", { className: bem.element('date', 'invisible-date') },
43
+ react_1["default"].createElement("div", { className: bem.element('date-wrapper', 'invisible-date') }, props.date)))); }, [bem, props.date]);
44
+ return (react_1["default"].createElement("div", { className: bem.block() },
45
+ renderDate(), (_a = props.groupedMessages) === null || _a === void 0 ? void 0 :
46
+ _a.map(toBubbles)));
47
+ }
48
+ exports["default"] = (0, react_1.memo)(BubblesDateGroup);
@@ -0,0 +1,78 @@
1
+ @use "../../../../scss/variables";
2
+
3
+ :root {
4
+ --date-text-color: #191b1f;
5
+ --date-background-color: #f1f5f7;
6
+ --decorative-line-color: rgba(0, 0, 0, 0.10);
7
+ }
8
+
9
+ html[data-theme="dark"] {
10
+ --date-text-color: #fff;
11
+ --date-background-color: #272a37;
12
+ --decorative-line-color: rgba(255, 255, 255, 0.10);
13
+ }
14
+
15
+ $date-text-color: var(--date-text-color);
16
+ $date-background-color: var(--date-background-color);
17
+ $decorative-line-color: var(--decorative-line-color);
18
+
19
+ .BubblesDateGroup {
20
+ display: flex;
21
+ flex-flow: column nowrap;
22
+ position: relative;
23
+
24
+ &__date {
25
+ display: flex;
26
+ justify-content: center;
27
+ position: sticky;
28
+ top: 10px;
29
+ width: 100%;
30
+ text-align: center;
31
+ font-size: 12px;
32
+ line-height: 16px;
33
+ margin: 8px 0 16px 0;
34
+
35
+ &_invisible-date {
36
+ position: absolute;
37
+ top: 0;
38
+
39
+ &::before,
40
+ &::after {
41
+ content: "";
42
+ flex: 1 1;
43
+ border-bottom: 1px solid;
44
+ margin: auto;
45
+ color: $decorative-line-color;
46
+ }
47
+
48
+ &::before {
49
+ margin-right: 10px
50
+ }
51
+
52
+ &::after {
53
+ margin-left: 10px
54
+ }
55
+ }
56
+ }
57
+
58
+ &__date-wrapper {
59
+ padding: 8px;
60
+ border-radius: 16px;
61
+ background: $date-background-color;
62
+
63
+ &_invisible-date {
64
+ opacity: 0;
65
+ }
66
+ }
67
+
68
+ &__date-text {
69
+ font-weight: 700;
70
+ color: $date-text-color;
71
+ opacity: 0.4;
72
+ }
73
+
74
+ &__bubbles {
75
+ display: flex;
76
+ flex-flow: column nowrap;
77
+ }
78
+ }
@@ -0,0 +1,2 @@
1
+ import BubblesDateGroup from './BubblesDateGroup';
2
+ export default BubblesDateGroup;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ var BubblesDateGroup_1 = __importDefault(require("./BubblesDateGroup"));
7
+ exports["default"] = BubblesDateGroup_1["default"];
@@ -0,0 +1,9 @@
1
+ import { IFileFieldItemViewProps } from '@steroidsjs/core/ui/form/FileField/FileField';
2
+ import { IMessageFile } from '@steroidsjs/core/ui/content/Chat/Chat';
3
+ import './ChatFileItemView.scss';
4
+ interface IChatFileItemViewProps extends IFileFieldItemViewProps, IMessageFile {
5
+ isFileFromMessage?: boolean;
6
+ isFileByAnotherUser?: boolean;
7
+ }
8
+ export default function ChatFileItemView(props: IChatFileItemViewProps): JSX.Element;
9
+ export {};
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ var react_1 = __importDefault(require("react"));
7
+ var hooks_1 = require("@steroidsjs/core/hooks");
8
+ var Icon_1 = __importDefault(require("@steroidsjs/core/ui/content/Icon"));
9
+ var typography_1 = require("@steroidsjs/core/ui/typography");
10
+ var format_1 = require("@steroidsjs/core/ui/format");
11
+ require("./ChatFileItemView.scss");
12
+ function ChatFileItemView(props) {
13
+ var _a, _b;
14
+ var bem = (0, hooks_1.useBem)('ChatFileItemView');
15
+ var isLoading = props.progress && props.progress.percent !== 100;
16
+ var renderLink = react_1["default"].useCallback(function () {
17
+ var _a;
18
+ return (react_1["default"].createElement("a", { className: bem.element('link'), title: props.title, href: props.error ? '#' : (props.url || ((_a = props.item) === null || _a === void 0 ? void 0 : _a.url)), target: 'blank' }, props.title));
19
+ }, [bem, props.title, props.error, props.url, (_a = props.item) === null || _a === void 0 ? void 0 : _a.url]);
20
+ var renderProgressBar = react_1["default"].useCallback(function () { return (react_1["default"].createElement("div", { className: bem.element('progress-track') },
21
+ react_1["default"].createElement("div", { className: bem.element('progress-bar'), style: { width: "".concat(props.progress.percent, "%") } }))); }, [bem, props.progress]);
22
+ var renderLoadingState = react_1["default"].useCallback(function () { return (react_1["default"].createElement("div", { className: bem.element('left') },
23
+ react_1["default"].createElement("div", { className: bem.element('icon-wrapper', 'loading') },
24
+ react_1["default"].createElement(Icon_1["default"], { className: bem.element('icon-loading'), name: 'loading_default' })),
25
+ react_1["default"].createElement("div", { className: bem.element('content') },
26
+ react_1["default"].createElement("span", { className: bem.element('title', 'loading') }, props.title),
27
+ renderProgressBar()))); }, [bem, props.title, renderProgressBar]);
28
+ var renderFileItem = react_1["default"].useCallback(function () {
29
+ var _a;
30
+ return (react_1["default"].createElement("div", { className: bem.element('left') },
31
+ react_1["default"].createElement("div", { className: bem.element('icon-wrapper') },
32
+ react_1["default"].createElement(Icon_1["default"], { className: bem.element('icon'), name: (((_a = props.item) === null || _a === void 0 ? void 0 : _a.fullHeight) || props.fullHeight) ? 'img_box' : 'file_dock' })),
33
+ react_1["default"].createElement("div", { className: bem.element('content') },
34
+ react_1["default"].createElement(typography_1.Text, { type: 'boldSpan', content: props.title, className: bem.element('title') }),
35
+ renderLink(),
36
+ react_1["default"].createElement(typography_1.Text, { type: 'body2', className: bem.element('size'), color: 'light' },
37
+ react_1["default"].createElement(format_1.FileSize, { value: props.size, showZero: true })))));
38
+ }, [bem, props.fullHeight, (_b = props.item) === null || _b === void 0 ? void 0 : _b.fullHeight, props.size, props.title, renderLink]);
39
+ return (react_1["default"].createElement("div", { className: bem.block({
40
+ error: !props.isFileFromMessage && !!props.error,
41
+ isFileFromMessage: props.isFileFromMessage,
42
+ isFileForUploading: !props.isFileFromMessage,
43
+ 'another-user': !!props.isFileByAnotherUser
44
+ }) },
45
+ isLoading
46
+ ? renderLoadingState()
47
+ : renderFileItem(),
48
+ props.isFileFromMessage ? (react_1["default"].createElement(Icon_1["default"], { name: 'import', className: bem.element('download'), onClick: function () { return window.open(props.downloadUrl || props.url); } })) : (react_1["default"].createElement(Icon_1["default"], { name: props.customRemoveIcon || 'cross_8x8', className: bem.element('remove', { isLoading: isLoading }), onClick: props.onRemove }))));
49
+ }
50
+ exports["default"] = ChatFileItemView;
@@ -0,0 +1,184 @@
1
+ @use "../../../../scss/variables";
2
+ @use "../../../../scss/mixins";
3
+ @use "../../../../scss/animations" as anim;
4
+
5
+ :root {
6
+ --file-size-color: rgba(255, 255, 255, 0.60);
7
+ --file-icon-color: rgb(0, 0, 0);
8
+ --another-user-file-size-color: rgba(0, 0, 0, 0.60);
9
+ }
10
+
11
+ html[data-theme="dark"] {
12
+ --file-size-color: rgba(255, 255, 255, 0.60);
13
+ --file-icon-color: #fff;
14
+ --another-user-file-size-color: rgba(255, 255, 255, 0.60);
15
+ }
16
+
17
+ $file-size-color: var(--file-size-color);
18
+ $file-icon-color: var(--file-icon-color);
19
+ $another-user-file-size-color: var(--another-user-file-size-color);
20
+
21
+ @mixin svg-color($color) {
22
+ svg {
23
+ path {
24
+ stroke: $color;
25
+ }
26
+
27
+ circle {
28
+ fill: $color;
29
+ }
30
+ }
31
+ }
32
+
33
+ @mixin textEllipsis {
34
+ max-width: 100%;
35
+ text-overflow: ellipsis;
36
+ overflow: hidden;
37
+ display: -webkit-box;
38
+ -webkit-line-clamp: 1;
39
+ -webkit-box-orient: vertical;
40
+ }
41
+
42
+ @mixin text {
43
+ font-size: 14px;
44
+ font-style: normal;
45
+ font-weight: 700;
46
+ line-height: 18px;
47
+ }
48
+
49
+ .ChatFileItemView {
50
+ $root: &;
51
+
52
+ position: relative;
53
+ display: flex;
54
+ justify-content: space-between;
55
+ align-items: center;
56
+ column-gap: 8px;
57
+ padding: 8px;
58
+ border: 1px solid variables.$gray;
59
+ border-radius: 12px;
60
+ min-width: 320px;
61
+ width: 320px;
62
+
63
+ &_isFileFromMessage {
64
+ padding: 0;
65
+ border: none;
66
+ width: 100%;
67
+ }
68
+
69
+ &_isFileForUploading {
70
+ @include svg-color($file-icon-color);
71
+ }
72
+
73
+ &__icon-wrapper {
74
+ min-width: 24px;
75
+ min-height: 24px;
76
+ width: 24px;
77
+ height: 24px;
78
+ }
79
+
80
+ &__left {
81
+ display: flex;
82
+ align-items: center;
83
+ column-gap: 8px;
84
+ width: 100%;
85
+ }
86
+
87
+ &__content {
88
+ display: flex;
89
+ flex-flow: column nowrap;
90
+ //width: 100%;
91
+ }
92
+
93
+ &__title {
94
+ @include text;
95
+ @include textEllipsis;
96
+
97
+ display: none;
98
+
99
+ &_loading {
100
+ display: block;
101
+ }
102
+ }
103
+
104
+ &__link {
105
+ @include text;
106
+ @include textEllipsis;
107
+
108
+ &:hover {
109
+ text-decoration: underline;
110
+ }
111
+ }
112
+
113
+ &__title,
114
+ &__size {
115
+ margin-bottom: 0;
116
+ }
117
+
118
+ &__size {
119
+ font-size: 12px;
120
+ font-weight: 400;
121
+ line-height: 16px;
122
+ color: $another-user-file-size-color;
123
+ }
124
+
125
+ &_another-user {
126
+ #{$root}__size {
127
+ color: $another-user-file-size-color !important;
128
+ }
129
+ }
130
+
131
+ &_error {
132
+ @include mixins.svg-color(variables.$danger);
133
+
134
+ #{$root}__icon {
135
+ circle {
136
+ fill: variables.$danger;
137
+ }
138
+ }
139
+
140
+ #{$root}__title,
141
+ #{$root}__size {
142
+ color: variables.$danger;
143
+ }
144
+
145
+ a,
146
+ a:hover {
147
+ color: variables.$danger;
148
+ cursor: default;
149
+ pointer-events: none;
150
+ }
151
+ }
152
+
153
+ &__remove,
154
+ &__download {
155
+ cursor: pointer;
156
+ z-index: 3;
157
+ height: 25px;
158
+
159
+ svg {
160
+ min-width: 24px;
161
+ min-height: 24px;
162
+ }
163
+ }
164
+
165
+ &__icon-loading {
166
+ @include anim.loadingAnimation;
167
+ display: block;
168
+ width: 24px;
169
+ height: 24px;
170
+ }
171
+
172
+ &__progress-track {
173
+ margin-top: 4px;
174
+ height: 4px;
175
+ background-color: variables.$gray;
176
+ border-radius: 4px;
177
+ }
178
+
179
+ &__progress-bar {
180
+ height: inherit;
181
+ background-color: variables.$primary;
182
+ border-radius: 4px;
183
+ }
184
+ }
@@ -0,0 +1,2 @@
1
+ import ChatFileItemView from './ChatFileItemView';
2
+ export default ChatFileItemView;