quickblox-react-ui-kit 0.3.1-beta.4 → 0.3.1-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +324 -0
- package/dist/index-ui.js +19 -10
- package/dist/index-ui.js.map +1 -1
- package/package.json +5 -3
- package/src/Data/source/remote/RemoteDataSource.ts +6 -2
- package/src/Presentation/Views/DialogInfo/DialogInfo.tsx +2 -2
- package/src/Presentation/Views/InviteMembers/useInviteMembersViewModel.ts +4 -1
- package/src/Presentation/layouts/Desktop/QuickBloxUIKitDesktopLayout.tsx +25 -7
- package/src/Presentation/ui-components/Avatar/Avatar.scss +3 -0
- package/src/Presentation/ui-components/Toast/Toast.scss +5 -0
- package/src/Presentation/ui-components/Toast/ToastProvider.tsx +1 -0
- package/storybook-static/{Presentation-ui-components-TextField-TextField-stories.fd8caf6c.iframe.bundle.js → Presentation-ui-components-TextField-TextField-stories.33c5683e.iframe.bundle.js} +2 -2
- package/storybook-static/{Presentation-ui-components-TextField-TextField-stories.fd8caf6c.iframe.bundle.js.map → Presentation-ui-components-TextField-TextField-stories.33c5683e.iframe.bundle.js.map} +1 -1
- package/storybook-static/{Presentation-ui-components-Toast-Toast-stories.b903385b.iframe.bundle.js → Presentation-ui-components-Toast-Toast-stories.1b8758fc.iframe.bundle.js} +2 -2
- package/storybook-static/{Presentation-ui-components-Toast-Toast-stories.b903385b.iframe.bundle.js.map → Presentation-ui-components-Toast-Toast-stories.1b8758fc.iframe.bundle.js.map} +1 -1
- package/storybook-static/docs-Introduction-mdx.bcb06844.iframe.bundle.js +10 -0
- package/storybook-static/{docs-Introduction-mdx.60905ccd.iframe.bundle.js.map → docs-Introduction-mdx.bcb06844.iframe.bundle.js.map} +1 -1
- package/storybook-static/docs-Styling-mdx.1d6c1212.iframe.bundle.js +10 -0
- package/storybook-static/{docs-Styling-mdx.90b5ee43.iframe.bundle.js.map → docs-Styling-mdx.1d6c1212.iframe.bundle.js.map} +1 -1
- package/storybook-static/iframe.html +1 -1
- package/storybook-static/index.html +8 -4
- package/storybook-static/project.json +1 -1
- package/storybook-static/{runtime~main.cbb787ca.iframe.bundle.js → runtime~main.2f520e2d.iframe.bundle.js} +1 -1
- package/storybook-static/sb-addons/onboarding-7/manager-bundle.js +503 -0
- package/storybook-static/sb-addons/onboarding-7/manager-bundle.js.LEGAL.txt +48 -0
- package/storybook-static/static/css/Presentation-ui-components-Avatar-avatar-stories.7b228eb0.chunk.css +3 -0
- package/storybook-static/static/css/Presentation-ui-components-Avatar-avatar-stories.7b228eb0.chunk.css.map +1 -0
- package/storybook-static/static/css/{Presentation-ui-components-DialogItemPreview-DialogItemPreview-stories.bee082ca.chunk.css → Presentation-ui-components-DialogItemPreview-DialogItemPreview-stories.2a9e5bc3.chunk.css} +2 -2
- package/storybook-static/static/css/{Presentation-ui-components-DialogItemPreview-DialogItemPreview-stories.bee082ca.chunk.css.map → Presentation-ui-components-DialogItemPreview-DialogItemPreview-stories.2a9e5bc3.chunk.css.map} +1 -1
- package/storybook-static/static/css/{Presentation-ui-components-Header-Header-stories.cdc47631.chunk.css → Presentation-ui-components-Header-Header-stories.fb1001e7.chunk.css} +2 -2
- package/storybook-static/static/css/{Presentation-ui-components-Header-Header-stories.cdc47631.chunk.css.map → Presentation-ui-components-Header-Header-stories.fb1001e7.chunk.css.map} +1 -1
- package/storybook-static/static/css/{Presentation-ui-components-Message-Message-stories.0e129b10.chunk.css → Presentation-ui-components-Message-Message-stories.4c915c89.chunk.css} +2 -2
- package/storybook-static/static/css/Presentation-ui-components-Message-Message-stories.4c915c89.chunk.css.map +1 -0
- package/storybook-static/static/css/{Presentation-ui-components-SettingsItem-SettingsItem-stories.7b98a5d4.chunk.css → Presentation-ui-components-SettingsItem-SettingsItem-stories.b67b748b.chunk.css} +2 -2
- package/storybook-static/static/css/{Presentation-ui-components-SettingsItem-SettingsItem-stories.7b98a5d4.chunk.css.map → Presentation-ui-components-SettingsItem-SettingsItem-stories.b67b748b.chunk.css.map} +1 -1
- package/storybook-static/static/css/{Presentation-ui-components-Toast-Toast-stories.11d83296.chunk.css → Presentation-ui-components-Toast-Toast-stories.3c874f4c.chunk.css} +2 -2
- package/storybook-static/static/css/{Presentation-ui-components-Toast-Toast-stories.11d83296.chunk.css.map → Presentation-ui-components-Toast-Toast-stories.3c874f4c.chunk.css.map} +1 -1
- package/storybook-static/static/css/{Presentation-ui-components-UserListItem-UserListItem-stories.4d072348.chunk.css → Presentation-ui-components-UserListItem-UserListItem-stories.655aa6c1.chunk.css} +2 -2
- package/storybook-static/static/css/Presentation-ui-components-UserListItem-UserListItem-stories.655aa6c1.chunk.css.map +1 -0
- package/src/package_artan_react_ui.json +0 -91
- package/src/package_original.json +0 -115
- package/storybook-static/docs-Introduction-mdx.60905ccd.iframe.bundle.js +0 -10
- package/storybook-static/docs-Styling-mdx.90b5ee43.iframe.bundle.js +0 -10
- package/storybook-static/static/css/Presentation-ui-components-Avatar-avatar-stories.807573c8.chunk.css +0 -3
- package/storybook-static/static/css/Presentation-ui-components-Avatar-avatar-stories.807573c8.chunk.css.map +0 -1
- package/storybook-static/static/css/Presentation-ui-components-Message-Message-stories.0e129b10.chunk.css.map +0 -1
- package/storybook-static/static/css/Presentation-ui-components-UserListItem-UserListItem-stories.4d072348.chunk.css.map +0 -1
- package/tsconfig.buildlib.json +0 -33
- /package/storybook-static/sb-addons/{interactions-7 → interactions-8}/manager-bundle.js +0 -0
- /package/storybook-static/sb-addons/{interactions-7 → interactions-8}/manager-bundle.js.LEGAL.txt +0 -0
- /package/storybook-static/sb-addons/{viewport-8 → viewport-9}/manager-bundle.js +0 -0
- /package/storybook-static/sb-addons/{viewport-8 → viewport-9}/manager-bundle.js.LEGAL.txt +0 -0
package/README.md
CHANGED
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
<p>
|
|
4
|
+
<a href="https://discord.gg/c6bxq9BC"><img src="https://img.shields.io/discord/1042743094833065985?color=5865F2&logo=discord&logoColor=white&label=QuickBlox%20Discord%20server&style=for-the-badge" alt="Discord server" /></a>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
# Overview
|
|
10
|
+
|
|
11
|
+
The QuickBlox UIKit for React is a comprehensive user interface kit specifically designed for building chat applications. It provides a collection of pre-built components, modules, and utilities that simplify the process of creating chat applications.
|
|
12
|
+
|
|
13
|
+
The main goal of the QuickBlox UIKit for React is to offer developers a streamlined and efficient way to implement chat functionality within their React applications.
|
|
14
|
+
|
|
15
|
+
The QuickBlox UIKit for React offers modules that encapsulate complex chat functionalities, such as dialogs and chat management and real-time updates. These modules provide a simplified interface for integrating chat features into applications without the need for extensive knowledge of the underlying protocols or server-side infrastructure.
|
|
16
|
+
|
|
17
|
+
You can view and interact with the interface components of the UI Kit using Storybook. In fact, this provides an interactive environment showcasing different scenarios that UI components might encounter in a live application. To view these, visit our [documentation](https://quickblox.github.io/react-ui-kit/).
|
|
18
|
+
|
|
19
|
+
# Screenshots
|
|
20
|
+
|
|
21
|
+
Chat dashboard with list of dialogs and create new chat dialog;
|
|
22
|
+
|
|
23
|
+

|
|
24
|
+
|
|
25
|
+
## Features
|
|
26
|
+
|
|
27
|
+
QuickBlox UIKit for React provides next functionality:
|
|
28
|
+
- List of dialogs
|
|
29
|
+
- Create dialog(Private or Group)
|
|
30
|
+
- Dialog screen
|
|
31
|
+
- Send text, image, video, audio, file messages
|
|
32
|
+
- Dialog info screen
|
|
33
|
+
- List, invite, remove members
|
|
34
|
+
|
|
35
|
+
# Send your first message
|
|
36
|
+
|
|
37
|
+
The QuickBlox UIKit for React comprises a collection of pre-assembled UI components that enable effortless creation of an in-app chat equipped with all the necessary messaging functionalities. Our development kit encompasses light and dark themes, colors, and various other features. These components can be personalized to fashion an engaging messaging interface that reflects your brand's distinct identity.
|
|
38
|
+
|
|
39
|
+
The QuickBlox UIKit fully supports both private and group dialogs. To initiate the process of sending a message from the ground up using Java or Kotlin, please refer to the instructions provided in the guide below.
|
|
40
|
+
[Additional information with sample](https://docs.quickblox.com/docs/react-uikit-send-your-first-message)
|
|
41
|
+
## Requirements
|
|
42
|
+
|
|
43
|
+
The minimum requirements for QuickBlox UIKit for React are:
|
|
44
|
+
- JS QuickBlox SDK v2.15.5
|
|
45
|
+
- React v.18.0
|
|
46
|
+
- TypeScript v.4.9.3
|
|
47
|
+
|
|
48
|
+
# Before you begin
|
|
49
|
+
|
|
50
|
+
Register a new account following [this link](https://admin.quickblox.com/signup). Type in your email and password to sign in. You can also sign in with your Google or Github accounts.
|
|
51
|
+
Create the app clicking New app button.
|
|
52
|
+
Configure the app. Type in the information about your organization into corresponding fields and click Add button.
|
|
53
|
+
Go to Dashboard => YOUR_APP => Overview section and copy your Application ID, Authorization Key, Authorization Secret, and Account Key .
|
|
54
|
+
|
|
55
|
+
## Install QuickBlox SDK
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
npm install quickblox
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Install QuickBlox UIKit
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
npm install quickblox-react-ui-kit
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Init QuickBlox SDK
|
|
68
|
+
|
|
69
|
+
To init QuickBlox SDK you need to pass Application ID, Authorization Key, Authorization Secret, and Account Key to the init() method.
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
var APPLICATION_ID = 41;
|
|
73
|
+
var AUTH_KEY = "lkjdueksu7392kj";
|
|
74
|
+
var AUTH_SECRET = "iiohfdija792hj";
|
|
75
|
+
var ACCOUNT_KEY = "sdjfnksnlk2bk1k34kb";
|
|
76
|
+
var CONFIG = { debug: true };
|
|
77
|
+
|
|
78
|
+
QB.init(APPLICATION_ID, AUTH_KEY, AUTH_SECRET, ACCOUNT_KEY, CONFIG);
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Authentication
|
|
82
|
+
|
|
83
|
+
Before sending your first message you need to authenticate users in the QuickBlox system. You can read more about different ways of authentication by [this link](https://docs.quickblox.com/docs/js-authentication).
|
|
84
|
+
In our example we show how to authenticate user with login and password.
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
import * as QB from "quickblox/quickblox";
|
|
88
|
+
import {
|
|
89
|
+
QuickBloxUIKitProvider,
|
|
90
|
+
qbDataContext,
|
|
91
|
+
QuickBloxUIKitDesktopLayout,
|
|
92
|
+
LoginData,
|
|
93
|
+
AuthorizationData,
|
|
94
|
+
QBDataContextType,
|
|
95
|
+
} from 'quickblox-ui-kit-react/dist/index-ui';
|
|
96
|
+
|
|
97
|
+
var params = { login: "garry", password: "garry5santos" };
|
|
98
|
+
|
|
99
|
+
QB.login(params, function(error, result) {
|
|
100
|
+
if(error){
|
|
101
|
+
} else {
|
|
102
|
+
// Navigate User to the UIKit
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
const qbUIKitContext: QBDataContextType = React.useContext(qbDataContext);
|
|
106
|
+
```
|
|
107
|
+
To order to config quickblox ui kit provider if you use SDK without session token:
|
|
108
|
+
```
|
|
109
|
+
<QuickBloxUIKitProvider
|
|
110
|
+
maxFileSize={100 * 1000000} //set max size for attachments
|
|
111
|
+
accountData={{ ...QBConfig.credentials }}
|
|
112
|
+
loginData={{
|
|
113
|
+
login: params.login,
|
|
114
|
+
password: params.password,
|
|
115
|
+
}}
|
|
116
|
+
>
|
|
117
|
+
<QuickBloxUIKitDesktopLayout /> // container for DesktopLayout
|
|
118
|
+
</QuickBloxUIKitProvider>
|
|
119
|
+
```
|
|
120
|
+
To order to config quickblox ui kit provider if you use SDK with session token:
|
|
121
|
+
```
|
|
122
|
+
<QuickBloxUIKitProvider
|
|
123
|
+
maxFileSize={100 * 1000000} //set max size for attachments
|
|
124
|
+
accountData={{ ...QBConfig.credentials }} // sessionToken was used in QBConfig
|
|
125
|
+
>
|
|
126
|
+
<QuickBloxUIKitDesktopLayout /> // container for DesktopLayout
|
|
127
|
+
</QuickBloxUIKitProvider>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
# Customization
|
|
131
|
+
|
|
132
|
+
The QuickBlox UIKit for React allows you to create your own unique view of the UIKit.
|
|
133
|
+
|
|
134
|
+
## Default themes
|
|
135
|
+
The QuickBlox UIKit for React has 2 built in themes: Dark and Light.
|
|
136
|
+
Default theme for UIKit is Light.
|
|
137
|
+
To set theme you need to set value 'dark' to key data-theme in global styles (html[data-theme="dark”]).
|
|
138
|
+
For example, you can use pure JavaScript:
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
document.documentElement.setAttribute('data-theme', 'dark');
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Use your own theme
|
|
145
|
+
|
|
146
|
+
There are two options how you can create your own theme:
|
|
147
|
+
- Customize current theme using css
|
|
148
|
+
- Create your own theme to customize selected components
|
|
149
|
+
|
|
150
|
+
To customize the current theme you just need to set the new colors in css variables.
|
|
151
|
+
|
|
152
|
+
Or you can create your own theme. To do this you need to create a new class that implements the UiKitTheme interface.
|
|
153
|
+
|
|
154
|
+
To use your own theme using css you need to create _theme_colors_scheme.scss and set colors
|
|
155
|
+
```
|
|
156
|
+
$background-overlay-light: rgba(19, 29, 40, .80);
|
|
157
|
+
$background-overlay-dark: rgba(144, 151, 159, .80);
|
|
158
|
+
$primary-50: #E7EFFF;
|
|
159
|
+
$primary-100: #C4D7FE;
|
|
160
|
+
$primary-200: #9CBCFE;
|
|
161
|
+
$primary-300: #74A1FD;
|
|
162
|
+
$primary-400: #578CFC;
|
|
163
|
+
$primary-500: #3978FC;
|
|
164
|
+
$primary-600: #3370FC;
|
|
165
|
+
$primary-700: #2C65FB;
|
|
166
|
+
$primary-800: #245BFB;
|
|
167
|
+
$primary-900: #1748FA;
|
|
168
|
+
$primary-a-100: #FFFFFF;
|
|
169
|
+
$primary-a-200: #F7F9FF;
|
|
170
|
+
$primary-a-400: #C4CFFF;
|
|
171
|
+
$primary-a-700: #ABBAFF;
|
|
172
|
+
$secondary-50: #E4E6E8;
|
|
173
|
+
$secondary-100: #BCC1C5;
|
|
174
|
+
$secondary-200: #90979F;
|
|
175
|
+
$secondary-300: #636D78;
|
|
176
|
+
$secondary-400: #414E5B;
|
|
177
|
+
$secondary-500: #202F3E;
|
|
178
|
+
$secondary-600: #1C2A38;
|
|
179
|
+
$secondary-700: #182330;
|
|
180
|
+
$secondary-800: #131D28;
|
|
181
|
+
$secondary-900: #0B121B;
|
|
182
|
+
$secondary-a-100: #74A1FD;
|
|
183
|
+
$secondary-a-200: #3978FC;
|
|
184
|
+
$secondary-a-400: #245BFB;
|
|
185
|
+
$secondary-a-700: #0050DC;
|
|
186
|
+
$system-green-100: #C8F1D6;
|
|
187
|
+
$system-green-200: #A4E7BB;
|
|
188
|
+
$system-green-300: #80DDA0;
|
|
189
|
+
$system-green-400: #64D68B;
|
|
190
|
+
$system-green-500: #49CF77;
|
|
191
|
+
$error-100: #FFC4C1;
|
|
192
|
+
$error-200: #FF9D98;
|
|
193
|
+
$error-300: #FF766E;
|
|
194
|
+
$error-400: #FF584F;
|
|
195
|
+
$error-500: #FF3B30;
|
|
196
|
+
$information: #FDB0FF;
|
|
197
|
+
$highlight: #FFFDC1;
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
To use your own new theme colors create _theme_dark.scss and _theme_light.scss files and set color variable.
|
|
201
|
+
```
|
|
202
|
+
// _theme_dark.scss:
|
|
203
|
+
|
|
204
|
+
html[data-theme="dark"]{
|
|
205
|
+
--color-background-info: #{$primary-500};
|
|
206
|
+
--tertiary-elements: #{$background-overlay-dark};
|
|
207
|
+
--main-elements: #{$primary-300};
|
|
208
|
+
--secondary-elements: #{$primary-a-100};
|
|
209
|
+
--input-elements: #{$secondary-200};
|
|
210
|
+
--disabled-elements: #{$secondary-300};
|
|
211
|
+
--field-border: #{$secondary-200};
|
|
212
|
+
--main-text: #{$primary-a-100};
|
|
213
|
+
--secondary-text: #{$secondary-200};
|
|
214
|
+
--caption: #{$secondary-100};
|
|
215
|
+
--main-background: #{$secondary-500};
|
|
216
|
+
--secondary-background: #{$secondary-800};
|
|
217
|
+
--incoming-background: #{$secondary-400};
|
|
218
|
+
--outgoing-background: #{$primary-500};
|
|
219
|
+
--dropdown-background: #{$secondary-400};
|
|
220
|
+
--chat-input: #{$secondary-800};
|
|
221
|
+
--divider: #{$secondary-400};
|
|
222
|
+
--error: #{$error-300};
|
|
223
|
+
--hightlight: #{$highlight};
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// _theme_light.scss:
|
|
227
|
+
:root{
|
|
228
|
+
--color-background-info:#{$primary-100};
|
|
229
|
+
--tertiary-elements: #{$secondary-300};
|
|
230
|
+
--main-elements: #{$primary-500};
|
|
231
|
+
--secondary-elements: #{$secondary-500};
|
|
232
|
+
--input-elements: #{$secondary-500};
|
|
233
|
+
--disabled-elements: #{$secondary-100};
|
|
234
|
+
--field-border: #{$secondary-200};
|
|
235
|
+
--main-text: #{$secondary-900};
|
|
236
|
+
--secondary-text: #{$secondary-300};
|
|
237
|
+
--caption: #{$secondary-200};
|
|
238
|
+
--main-background: #{$primary-a-100};
|
|
239
|
+
--secondary-background: #{$primary-a-100};
|
|
240
|
+
--secondary-background-modal: #{$background-overlay-light};
|
|
241
|
+
--incoming-background: #{$secondary-50};
|
|
242
|
+
--outgoing-background: #{$primary-50};
|
|
243
|
+
--dropdown-background: #{$primary-a-100};
|
|
244
|
+
--chat-input: #{$primary-a-200};
|
|
245
|
+
--divider: #{$primary-50};
|
|
246
|
+
--error: #{$error-500};
|
|
247
|
+
--hightlight: #{$highlight};
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
To create your own theme to customize selected components you need to create a new class that implements the UiKitTheme interface.
|
|
251
|
+
```
|
|
252
|
+
//DefaultTheme implements UiKitTheme
|
|
253
|
+
export default class CustomTheme extends DefaultTheme {
|
|
254
|
+
divider = (): string => 'var(--divider)';
|
|
255
|
+
mainText = (): string => '#FFFFFF';
|
|
256
|
+
fontFamily = (): string => 'Roboto';
|
|
257
|
+
/*
|
|
258
|
+
The DefaultTheme contains other theme methods :
|
|
259
|
+
caption = (): string => 'var(--caption)';
|
|
260
|
+
chatInput = (): string => 'var(--chat-input)';
|
|
261
|
+
disabledElements = (): string => 'var(--disabled-elements)';
|
|
262
|
+
dropdownBackground = (): string => 'var(--dropdown-background)';
|
|
263
|
+
error = (): string => 'var(--error)';
|
|
264
|
+
fieldBorder = (): string => 'var(--field-border)';
|
|
265
|
+
hightlight = (): string => 'var(--hightlight)';
|
|
266
|
+
incomingBackground = (): string => 'var(--incoming-background)';
|
|
267
|
+
inputElements = (): string => 'var(--input-elements)';
|
|
268
|
+
mainBackground = (): string => 'var(--main-background)';
|
|
269
|
+
mainElements = (): string => 'var(--main-elements)';
|
|
270
|
+
outgoingBackground = (): string => 'var(--outgoing-background)';
|
|
271
|
+
secondaryBackground = (): string => 'var(--secondary-background)';
|
|
272
|
+
secondaryElements = (): string => 'var(--secondary-elements)';
|
|
273
|
+
secondaryText = (): string => 'var(--secondary-text)';
|
|
274
|
+
*/
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
and specify selected components:
|
|
278
|
+
- desktop layout container
|
|
279
|
+
```
|
|
280
|
+
<QuickBloxUIKitDesktopLayout theme={new CustomTheme()}>
|
|
281
|
+
```
|
|
282
|
+
- header of dialogs
|
|
283
|
+
```
|
|
284
|
+
<HeaderDialogs title="Dialog 2" theme={new CustomTheme()} />
|
|
285
|
+
```
|
|
286
|
+
- item of dialogs
|
|
287
|
+
```
|
|
288
|
+
<PreviewDialog
|
|
289
|
+
theme={{ selected: true, muted: true, colorTheme={new CustomTheme()} }}
|
|
290
|
+
title="Dialog with states"
|
|
291
|
+
unreadMessageCount={9}
|
|
292
|
+
message_date_time_sent="5 min ago"
|
|
293
|
+
/>
|
|
294
|
+
```
|
|
295
|
+
# Sample
|
|
296
|
+
The source code of the sample is available on GitHub:
|
|
297
|
+
https://github.com/QuickBlox/quickblox-javascript-sdk/tree/gh-pages/samples/react-chat-ui-kit-init-sample
|
|
298
|
+
You can view and interact with the interface components of the UI Kit using Storybook. In fact, this provides an interactive environment showcasing different scenarios that UI components might encounter in a live application. To view these, visit our [documentation](https://quickblox.github.io/react-ui-kit/).
|
|
299
|
+
|
|
300
|
+
## Video guide "How to use AI Feature"
|
|
301
|
+
[Youtube video about AI Assistant](https://youtu.be/BneMtDagOy4)
|
|
302
|
+
# License
|
|
303
|
+
[](#license)
|
|
304
|
+
MIT License [here](https://github.com/QuickBlox/react-ui-kit/blob/main/LICENSE.md).
|
|
305
|
+
|
|
306
|
+
Copyright © 2023 QuickBlox.
|
|
307
|
+
|
|
308
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
309
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
310
|
+
in the Software without restriction, including without limitation the rights
|
|
311
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
312
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
313
|
+
furnished to do so, subject to the following conditions:
|
|
314
|
+
|
|
315
|
+
The above copyright notice and this permission notice shall be included in all
|
|
316
|
+
copies or substantial portions of the Software.
|
|
317
|
+
|
|
318
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
319
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
320
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
321
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
322
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
323
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
324
|
+
SOFTWARE.
|
package/dist/index-ui.js
CHANGED
|
@@ -3805,7 +3805,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3805
3805
|
|
|
3806
3806
|
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
3807
3807
|
// Module
|
|
3808
|
-
___CSS_LOADER_EXPORT___.push([module.id, ".avatar {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n border-radius: 50%;\n background-color: var(--disabled-elements);\n color: var(--secondary-text);\n}\n.avatar,\n.avatar * {\n box-sizing: border-box;\n}\n.avatar svg {\n fill: var(--secondary-text);\n padding: 10px;\n}\n.avatar__image {\n object-fit: cover;\n width: 100%;\n height: 100%;\n}\n.avatar--xs {\n width: 32px;\n height: 32px;\n}\n.avatar--sm {\n width: 36px;\n height: 36px;\n}\n.avatar--md {\n width: 40px;\n height: 40px;\n}\n.avatar--lg {\n width: 56px;\n height: 56px;\n}\n.avatar--xl {\n width: 64px;\n height: 64px;\n}\n.avatar--xxl {\n width: 80px;\n height: 80px;\n}", "",{"version":3,"sources":["webpack://./src/Presentation/ui-components/Avatar/Avatar.scss","webpack://./src/Presentation/themes/styles/_mixins.scss"],"names":[],"mappings":"AAEA;EAEE,aAAA;EACA,cAAA;EACA,mBAAA;EACA,uBAAA;EAEA,gBAAA;EACA,kBAAA;EACA,0CAAA;EACA,4BAAA;AAHF;ACRE;;EAEE,sBAAA;ADUJ;AACE;EACE,
|
|
3808
|
+
___CSS_LOADER_EXPORT___.push([module.id, ".avatar {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n border-radius: 50%;\n background-color: var(--disabled-elements);\n color: var(--secondary-text);\n}\n.avatar,\n.avatar * {\n box-sizing: border-box;\n}\n.avatar svg {\n height: 100%;\n width: 100%;\n fill: var(--secondary-text);\n padding: 10px;\n}\n.avatar__image {\n object-fit: cover;\n width: 100%;\n height: 100%;\n}\n.avatar--xs {\n width: 32px;\n height: 32px;\n}\n.avatar--sm {\n width: 36px;\n height: 36px;\n}\n.avatar--md {\n width: 40px;\n height: 40px;\n}\n.avatar--lg {\n width: 56px;\n height: 56px;\n}\n.avatar--xl {\n width: 64px;\n height: 64px;\n}\n.avatar--xxl {\n width: 80px;\n height: 80px;\n}", "",{"version":3,"sources":["webpack://./src/Presentation/ui-components/Avatar/Avatar.scss","webpack://./src/Presentation/themes/styles/_mixins.scss"],"names":[],"mappings":"AAEA;EAEE,aAAA;EACA,cAAA;EACA,mBAAA;EACA,uBAAA;EAEA,gBAAA;EACA,kBAAA;EACA,0CAAA;EACA,4BAAA;AAHF;ACRE;;EAEE,sBAAA;ADUJ;AACE;EACE,YAAA;EACA,WAAA;EAEA,2BAAA;EACA,aAAA;AAAJ;AAGE;EACE,iBAAA;EACA,WAAA;EACA,YAAA;AADJ;AAIE;EACE,WAAA;EACA,YAAA;AAFJ;AAKE;EACE,WAAA;EACA,YAAA;AAHJ;AAME;EACE,WAAA;EACA,YAAA;AAJJ;AAOE;EACE,WAAA;EACA,YAAA;AALJ;AAQE;EACE,WAAA;EACA,YAAA;AANJ;AASE;EACE,WAAA;EACA,YAAA;AAPJ","sourcesContent":["@import '../../themes/styles/mixins';\n\n.avatar {\n @include applyBorderBox;\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n\n overflow: hidden;\n border-radius: 50%;\n background-color: var(--disabled-elements);\n color: var(--secondary-text);\n\n svg {\n height: 100%;\n width: 100%;\n \n fill: var(--secondary-text);\n padding: 10px;\n }\n\n &__image {\n object-fit: cover;\n width: 100%;\n height: 100%;\n }\n\n &--xs {\n width: 32px;\n height: 32px;\n }\n\n &--sm {\n width: 36px;\n height: 36px;\n }\n\n &--md {\n width: 40px;\n height: 40px;\n }\n\n &--lg {\n width: 56px;\n height: 56px;\n }\n\n &--xl {\n width: 64px;\n height: 64px;\n }\n\n &--xxl {\n width: 80px;\n height: 80px;\n }\n}\n","@mixin applyBorderBox {\n &,\n * {\n box-sizing: border-box;\n }\n}\n"],"sourceRoot":""}]);
|
|
3809
3809
|
// Exports
|
|
3810
3810
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
3811
3811
|
|
|
@@ -4561,7 +4561,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4561
4561
|
|
|
4562
4562
|
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
4563
4563
|
// Module
|
|
4564
|
-
___CSS_LOADER_EXPORT___.push([module.id, ".toast {\n min-height: 24px;\n padding: 4px 12px;\n opacity: 60% !important;\n border-radius: 4px;\n background-color: var(--toast-color);\n}\n.toast__body {\n padding: 0;\n font-family: \"Roboto\";\n font-weight: 500;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.5px;\n color: var(--main-background);\n}", "",{"version":3,"sources":["webpack://./src/Presentation/ui-components/Toast/Toast.scss"],"names":[],"mappings":"AAAA;EACE,gBAAA;EACA,iBAAA;EACA,uBAAA;EACA,kBAAA;EACA,oCAAA;AACF;AACE;EACE,UAAA;EACA,qBAAA;EACA,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,qBAAA;EACA,6BAAA;AACJ","sourcesContent":[".toast {\n min-height: 24px;\n padding: 4px 12px;\n opacity: 60% !important;\n border-radius: 4px;\n background-color: var(--toast-color);\n\n &__body {\n padding: 0;\n font-family: 'Roboto';\n font-weight: 500;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.5px;\n color: var(--main-background);\n }\n}\n"],"sourceRoot":""}]);
|
|
4564
|
+
___CSS_LOADER_EXPORT___.push([module.id, ".container {\n width: 100%;\n}\n\n.toast {\n min-height: 24px;\n padding: 4px 12px;\n opacity: 60% !important;\n border-radius: 4px;\n background-color: var(--toast-color);\n}\n.toast__body {\n padding: 0;\n font-family: \"Roboto\";\n font-weight: 500;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.5px;\n color: var(--main-background);\n text-align: center;\n}", "",{"version":3,"sources":["webpack://./src/Presentation/ui-components/Toast/Toast.scss"],"names":[],"mappings":"AAAA;EACE,WAAA;AACF;;AAEA;EACE,gBAAA;EACA,iBAAA;EACA,uBAAA;EACA,kBAAA;EACA,oCAAA;AACF;AACE;EACE,UAAA;EACA,qBAAA;EACA,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,qBAAA;EACA,6BAAA;EACA,kBAAA;AACJ","sourcesContent":[".container {\n width: 100%;\n}\n\n.toast {\n min-height: 24px;\n padding: 4px 12px;\n opacity: 60% !important;\n border-radius: 4px;\n background-color: var(--toast-color);\n\n &__body {\n padding: 0;\n font-family: 'Roboto';\n font-weight: 500;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.5px;\n color: var(--main-background);\n text-align: center;\n }\n}\n"],"sourceRoot":""}]);
|
|
4565
4565
|
// Exports
|
|
4566
4566
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
4567
4567
|
|
|
@@ -18247,7 +18247,8 @@ var RemoteDataSource = /** @class */ (function () {
|
|
|
18247
18247
|
console.log('EVENT: reconnect');
|
|
18248
18248
|
};
|
|
18249
18249
|
(quickblox_quickblox__WEBPACK_IMPORTED_MODULE_0___default().chat.onMessageErrorListener) = function (messageId, error) {
|
|
18250
|
-
console.log("EVENT: receive error
|
|
18250
|
+
console.log("EVENT: receive error message id: ".concat(messageId, ", error: ").concat((0,_utils_parse__WEBPACK_IMPORTED_MODULE_13__.stringifyError)(error), ", current auth status is: ").concat(_this.authProcessed ? 'true' : 'false'));
|
|
18251
|
+
_this.subscriptionOnSessionExpiredListener.informSubscribers(true, _Domain_entity_EventMessageType__WEBPACK_IMPORTED_MODULE_16__["default"].LocalMessage);
|
|
18251
18252
|
};
|
|
18252
18253
|
(quickblox_quickblox__WEBPACK_IMPORTED_MODULE_0___default().chat.onReadStatusListener) = function (messageId, dialogId, userId) {
|
|
18253
18254
|
console.log("EVENT: receive read message id: ".concat(messageId, ", dialogid: ").concat(dialogId, " userid: ").concat(userId));
|
|
@@ -24845,7 +24846,7 @@ var DialogInfo = function (_a) {
|
|
|
24845
24846
|
} }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components_containers_ColumnContainer_ColumnContainer__WEBPACK_IMPORTED_MODULE_5__["default"], { children: [useUpContent && upHeaderContent, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components_Header_Header__WEBPACK_IMPORTED_MODULE_19__["default"], __assign({ title: "Dialog information", className: "header-dialog-info" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_icons__WEBPACK_IMPORTED_MODULE_16__.CloseSvg, { onClick: onCloseDialogInformationHandler, className: "header-dialog-info-icon" }) })), useSubContent && subHeaderContent, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", __assign({ className: "dialog-information-profile" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", __assign({ className: "dialog-information-profile-avatar" }, { children: renderIconForTypeDialog((dialogViewModel === null || dialogViewModel === void 0 ? void 0 : dialogViewModel.entity) || dialog) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", __assign({ className: "dialog-information-profile-dialog-name" }, { children: ((_c = dialogViewModel === null || dialogViewModel === void 0 ? void 0 : dialogViewModel.entity) === null || _c === void 0 ? void 0 : _c.name) || (dialog === null || dialog === void 0 ? void 0 : dialog.name) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", __assign({ className: "dialog-information-profile-edit" }, { children: dialog.type !== _Domain_entity_DialogTypes__WEBPACK_IMPORTED_MODULE_8__.DialogType["private"] &&
|
|
24846
24847
|
dialog.ownerId === currentUserId ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", __assign({ className: classnames__WEBPACK_IMPORTED_MODULE_4___default()('dialog-information-profile-edit-button', {
|
|
24847
24848
|
'dialog-information-profile-edit-button--disable': disableAction,
|
|
24848
|
-
}) }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.Button, __assign({ variant: "text", onClick: editModal.toggleModal, disabled: disableAction }, { children: "Edit" })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.DialogWindow, __assign({ title: "Edit dialog", onClose: editModal.toggleModal, open: editModal.isOpen }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_EditDialog_EditDialog__WEBPACK_IMPORTED_MODULE_11__["default"], { disableActions: disableAction, nameDialog: (dialogViewModel === null || dialogViewModel === void 0 ? void 0 : dialogViewModel.entity.name) || dialog.name, typeDialog: (dialogViewModel === null || dialogViewModel === void 0 ? void 0 : dialogViewModel.entity.type) || dialog.type, ulrIcon: getUrlAvatar((dialogViewModel === null || dialogViewModel === void 0 ? void 0 : dialogViewModel.entity) || dialog), typeAddEditDialog: _EditDialog_EditDialog__WEBPACK_IMPORTED_MODULE_11__.TypeOpenDialog.edit, clickUpdatedHandler: getDialogUpdatedInfoHandler, clickCancelHandler: editModal.toggleModal }) }))] }))) : null }))] })), dialog.type !== _Domain_entity_DialogTypes__WEBPACK_IMPORTED_MODULE_8__.DialogType["private"] ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.SettingsItem, __assign({ icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_icons__WEBPACK_IMPORTED_MODULE_16__.GroupChatSvg, {}), title: "Members", rightSection: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.Badge, { mute: true, count: users.length, limit: 100 }), className: "dialog-info-members" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components_containers_ColumnContainer_ColumnContainer__WEBPACK_IMPORTED_MODULE_5__["default"], { children: [users && users.length > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", __assign({ className: "dialog-info-action-wrapper-settings no-padding" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UsersList_UsersList__WEBPACK_IMPORTED_MODULE_7__["default"], { maxHeight: 75, usersFirstPageToView: users, allUsers: users, usersInDialogCount: users.length }) }))), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", __assign({ className: "dialog-info-action-wrapper-settings" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.DialogWindow, __assign({ disableActions: disableAction, title: "Edit dialog", open: inviteMembersModal.isOpen, onClose: inviteMembersModal.toggleModal }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_InviteMembers_InviteMembers__WEBPACK_IMPORTED_MODULE_20__["default"], { participants: _Domain_entity_PublicDialogEntity__WEBPACK_IMPORTED_MODULE_12__.PublicDialogEntity.getParticipants((dialogViewModel === null || dialogViewModel === void 0 ? void 0 : dialogViewModel.entity) || dialog), applyInviteUsersHandler: applyInviteUsersHandler, cancelInviteMembersHandler: inviteMembersModal.toggleModal, typeAddEditDialog: _EditDialog_EditDialog__WEBPACK_IMPORTED_MODULE_11__.TypeOpenDialog.edit, typeDialog: dialog.type, idOwnerDialog: dialog.ownerId }) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.Button, __assign({ className: "dialog-info-action-wrapper-button", onClick: inviteMembersModal.toggleModal, variant: "outlined", disabled: dialog.ownerId !== currentUserId || disableAction }, { children: "Invite members" })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.Button, __assign({ className: "dialog-info-action-wrapper-button", onClick: function () { return onShowAllMemberClick(true); }, variant: "outlined", disabled: disableAction }, { children: "See all members" }))] }))] }) }))) : null, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.SettingsItem, { icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_icons__WEBPACK_IMPORTED_MODULE_16__.LeaveSvg, {}), title: "Leave dialog", onClick: !disableAction ? leaveModal.toggleModal : undefined, className: classnames__WEBPACK_IMPORTED_MODULE_4___default()('dialog-info-leave', {
|
|
24849
|
+
}) }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.Button, __assign({ variant: "text", onClick: editModal.toggleModal, disabled: disableAction }, { children: "Edit" })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.DialogWindow, __assign({ title: "Edit dialog", onClose: editModal.toggleModal, open: editModal.isOpen }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_EditDialog_EditDialog__WEBPACK_IMPORTED_MODULE_11__["default"], { disableActions: disableAction, nameDialog: (dialogViewModel === null || dialogViewModel === void 0 ? void 0 : dialogViewModel.entity.name) || (dialog === null || dialog === void 0 ? void 0 : dialog.name), typeDialog: (dialogViewModel === null || dialogViewModel === void 0 ? void 0 : dialogViewModel.entity.type) || (dialog === null || dialog === void 0 ? void 0 : dialog.type), ulrIcon: getUrlAvatar((dialogViewModel === null || dialogViewModel === void 0 ? void 0 : dialogViewModel.entity) || dialog), typeAddEditDialog: _EditDialog_EditDialog__WEBPACK_IMPORTED_MODULE_11__.TypeOpenDialog.edit, clickUpdatedHandler: getDialogUpdatedInfoHandler, clickCancelHandler: editModal.toggleModal }) }))] }))) : null }))] })), dialog.type !== _Domain_entity_DialogTypes__WEBPACK_IMPORTED_MODULE_8__.DialogType["private"] ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.SettingsItem, __assign({ icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_icons__WEBPACK_IMPORTED_MODULE_16__.GroupChatSvg, {}), title: "Members", rightSection: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.Badge, { mute: true, count: users.length, limit: 100 }), className: "dialog-info-members" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components_containers_ColumnContainer_ColumnContainer__WEBPACK_IMPORTED_MODULE_5__["default"], { children: [users && users.length > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", __assign({ className: "dialog-info-action-wrapper-settings no-padding" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UsersList_UsersList__WEBPACK_IMPORTED_MODULE_7__["default"], { maxHeight: 75, usersFirstPageToView: users, allUsers: users, usersInDialogCount: users.length }) }))), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", __assign({ className: "dialog-info-action-wrapper-settings" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.DialogWindow, __assign({ disableActions: disableAction, title: "Edit dialog", open: inviteMembersModal.isOpen, onClose: inviteMembersModal.toggleModal }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_InviteMembers_InviteMembers__WEBPACK_IMPORTED_MODULE_20__["default"], { participants: _Domain_entity_PublicDialogEntity__WEBPACK_IMPORTED_MODULE_12__.PublicDialogEntity.getParticipants((dialogViewModel === null || dialogViewModel === void 0 ? void 0 : dialogViewModel.entity) || dialog), applyInviteUsersHandler: applyInviteUsersHandler, cancelInviteMembersHandler: inviteMembersModal.toggleModal, typeAddEditDialog: _EditDialog_EditDialog__WEBPACK_IMPORTED_MODULE_11__.TypeOpenDialog.edit, typeDialog: dialog.type, idOwnerDialog: dialog.ownerId }) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.Button, __assign({ className: "dialog-info-action-wrapper-button", onClick: inviteMembersModal.toggleModal, variant: "outlined", disabled: dialog.ownerId !== currentUserId || disableAction }, { children: "Invite members" })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.Button, __assign({ className: "dialog-info-action-wrapper-button", onClick: function () { return onShowAllMemberClick(true); }, variant: "outlined", disabled: disableAction }, { children: "See all members" }))] }))] }) }))) : null, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.SettingsItem, { icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_icons__WEBPACK_IMPORTED_MODULE_16__.LeaveSvg, {}), title: "Leave dialog", onClick: !disableAction ? leaveModal.toggleModal : undefined, className: classnames__WEBPACK_IMPORTED_MODULE_4___default()('dialog-info-leave', {
|
|
24849
24850
|
'dialog-info-leave--disable': disableAction,
|
|
24850
24851
|
}) }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.DialogWindow, __assign({ open: leaveModal.isOpen, title: "Leave dialog?", onClose: leaveModal.toggleModal }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", __assign({ className: "dialog-leave-container" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.Button, __assign({ variant: "outlined", onClick: leaveModal.toggleModal }, { children: "Cancel" })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components__WEBPACK_IMPORTED_MODULE_17__.Button, __assign({ variant: "danger", onClick: leaveDialogHandler }, { children: "Leave" }))] })) }))] })] })));
|
|
24851
24852
|
};
|
|
@@ -26794,7 +26795,8 @@ function useInviteMembersViewModel() {
|
|
|
26794
26795
|
if (regexUserName && regexUserName.length > 0) {
|
|
26795
26796
|
// work
|
|
26796
26797
|
var filteredUsers = data.ResultData.reduce(function (userList, u) {
|
|
26797
|
-
|
|
26798
|
+
var nameUserForTest = u.full_name || u.login || u.email || u.id.toString();
|
|
26799
|
+
if (!regex || regex.test(nameUserForTest)) {
|
|
26798
26800
|
userList.push(u);
|
|
26799
26801
|
}
|
|
26800
26802
|
return userList;
|
|
@@ -29199,6 +29201,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
29199
29201
|
/* harmony import */ var _Views_Flow_CreateDialogFlow_CreateNewDialogFlow__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ../../Views/Flow/CreateDialogFlow/CreateNewDialogFlow */ "./src/Presentation/Views/Flow/CreateDialogFlow/CreateNewDialogFlow.tsx");
|
|
29200
29202
|
/* harmony import */ var _hooks_useModal__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ../../../hooks/useModal */ "./src/hooks/useModal.ts");
|
|
29201
29203
|
/* harmony import */ var _providers_QuickBloxUIKitProvider_useQBConnection__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ../../providers/QuickBloxUIKitProvider/useQBConnection */ "./src/Presentation/providers/QuickBloxUIKitProvider/useQBConnection.ts");
|
|
29204
|
+
/* harmony import */ var _Domain_entity_EventMessageType__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ../../../Domain/entity/EventMessageType */ "./src/Domain/entity/EventMessageType.ts");
|
|
29205
|
+
/* harmony import */ var _utils_formatFileSize__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ../../../utils/formatFileSize */ "./src/utils/formatFileSize.ts");
|
|
29202
29206
|
var __assign = (undefined && undefined.__assign) || function () {
|
|
29203
29207
|
__assign = Object.assign || function(t) {
|
|
29204
29208
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
@@ -29294,6 +29298,8 @@ var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from
|
|
|
29294
29298
|
|
|
29295
29299
|
|
|
29296
29300
|
|
|
29301
|
+
|
|
29302
|
+
|
|
29297
29303
|
|
|
29298
29304
|
|
|
29299
29305
|
|
|
@@ -29413,7 +29419,7 @@ var QuickBloxUIKitDesktopLayout = function (_a) {
|
|
|
29413
29419
|
setIsOnline(true);
|
|
29414
29420
|
else
|
|
29415
29421
|
setIsOnline(false);
|
|
29416
|
-
});
|
|
29422
|
+
}, _Domain_entity_EventMessageType__WEBPACK_IMPORTED_MODULE_42__["default"].LocalMessage, 'DESKTOP_LAYOUT');
|
|
29417
29423
|
var _z = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false), needRefresh = _z[0], setNeedRefresh = _z[1];
|
|
29418
29424
|
var toastConnectionErrorId = react__WEBPACK_IMPORTED_MODULE_1___default().useRef(null);
|
|
29419
29425
|
//
|
|
@@ -30015,11 +30021,15 @@ var QuickBloxUIKitDesktopLayout = function (_a) {
|
|
|
30015
30021
|
if (!resultOperation) {
|
|
30016
30022
|
(0,react_toastify__WEBPACK_IMPORTED_MODULE_4__.toast)("Incorrect data");
|
|
30017
30023
|
}
|
|
30024
|
+
})
|
|
30025
|
+
.finally(function () {
|
|
30026
|
+
setFileToSend(null);
|
|
30018
30027
|
});
|
|
30019
30028
|
}
|
|
30020
30029
|
}
|
|
30021
30030
|
else if (fileToSend) {
|
|
30022
|
-
(0,react_toastify__WEBPACK_IMPORTED_MODULE_4__.toast)("file size ".concat(fileToSend === null || fileToSend === void 0 ? void 0 : fileToSend.size, " must be less then ").concat(MAXSIZE_FOR_MESSAGE, " mb."));
|
|
30031
|
+
(0,react_toastify__WEBPACK_IMPORTED_MODULE_4__.toast)("file size ".concat((0,_utils_formatFileSize__WEBPACK_IMPORTED_MODULE_43__.formatFileSize)(fileToSend === null || fileToSend === void 0 ? void 0 : fileToSend.size), " must be less then ").concat(MAXSIZE_FOR_MESSAGE, " mb."));
|
|
30032
|
+
setFileToSend(null);
|
|
30023
30033
|
}
|
|
30024
30034
|
}, [fileToSend]);
|
|
30025
30035
|
(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {
|
|
@@ -30191,8 +30201,7 @@ var QuickBloxUIKitDesktopLayout = function (_a) {
|
|
|
30191
30201
|
}, users: userViewModel.users, rootStyles: {
|
|
30192
30202
|
minHeight: clientContainerHeight,
|
|
30193
30203
|
maxHeight: clientContainerHeight,
|
|
30194
|
-
},
|
|
30195
|
-
// subHeaderContent={<CompanyLogo />}
|
|
30204
|
+
}, subHeaderContent: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", { children: "v0.3.1-beta.5" }) }),
|
|
30196
30205
|
// upHeaderContent={<CompanyLogo />}
|
|
30197
30206
|
dialog: selectedDialog, dialogViewModel: dialogsViewModel, onCloseDialogInformationHandler: informationCloseHandler }))) }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components_DialogWindow_DialogWindow__WEBPACK_IMPORTED_MODULE_33__["default"], __assign({ open: isOpen, title: "Leave dialog?", onClose: handleDialogOnClick }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", __assign({ className: "dialog-leave-container" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components_Button_Button__WEBPACK_IMPORTED_MODULE_32__["default"], __assign({ variant: "outlined", onClick: handleDialogOnClick }, { children: "Cancel" })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components_Button_Button__WEBPACK_IMPORTED_MODULE_32__["default"], __assign({ variant: "danger", onClick: handleLeaveDialog }, { children: "Leave" }))] })) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ui_components_DialogWindow_DialogWindow__WEBPACK_IMPORTED_MODULE_33__["default"], __assign({ title: "New dialog", onClose: newModal.toggleModal, open: newModal.isOpen, className: isMobile
|
|
30198
30207
|
? 'dialog-list-new-dialog-mobile-container'
|
|
@@ -32413,7 +32422,7 @@ var __assign = (undefined && undefined.__assign) || function () {
|
|
|
32413
32422
|
var ToastContext = (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(undefined);
|
|
32414
32423
|
function ToastProvider(_a) {
|
|
32415
32424
|
var children = _a.children;
|
|
32416
|
-
return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(ToastContext.Provider, __assign({ value: undefined }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_toastify__WEBPACK_IMPORTED_MODULE_2__.ToastContainer, { position: "top-center", autoClose: 3000, bodyClassName: "toast__body", toastClassName: "toast", pauseOnHover: false, closeButton: false, hideProgressBar: true }), children] })));
|
|
32425
|
+
return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(ToastContext.Provider, __assign({ value: undefined }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_toastify__WEBPACK_IMPORTED_MODULE_2__.ToastContainer, { className: "container", position: "top-center", autoClose: 3000, bodyClassName: "toast__body", toastClassName: "toast", pauseOnHover: false, closeButton: false, hideProgressBar: true }), children] })));
|
|
32417
32426
|
}
|
|
32418
32427
|
|
|
32419
32428
|
|