@nyaruka/temba-components 0.157.0 → 0.158.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.
- package/CHANGELOG.md +16 -0
- package/dist/temba-components.js +1617 -1590
- package/dist/temba-components.js.map +1 -1
- package/orca/setup.sh +81 -0
- package/orca.yaml +3 -0
- package/package.json +1 -1
- package/src/display/Button.ts +102 -121
- package/src/display/Chat.ts +60 -9
- package/src/display/Dropdown.ts +11 -0
- package/src/display/Label.ts +1 -3
- package/src/display/LeafletMap.ts +4 -3
- package/src/display/TembaUser.ts +9 -3
- package/src/events/eventRenderers.ts +151 -71
- package/src/flow/AutoTranslate.ts +2 -2
- package/src/flow/CanvasNode.ts +14 -6
- package/src/flow/DragManager.ts +4 -2
- package/src/flow/Editor.ts +4 -4
- package/src/flow/NodeEditor.ts +2 -2
- package/src/flow/NodeTypeSelector.ts +0 -5
- package/src/flow/actions/set_contact_language.ts +5 -4
- package/src/flow/nodes/split_by_llm_categorize.ts +1 -6
- package/src/flow/utils.ts +2 -20
- package/src/form/ColorPicker.ts +5 -3
- package/src/form/DatePicker.ts +2 -1
- package/src/form/select/Omnibox.ts +1 -3
- package/src/form/select/Select.ts +5 -4
- package/src/interfaces.ts +1 -0
- package/src/languages.ts +56 -0
- package/src/layout/Dialog.ts +1 -3
- package/src/layout/Tab.ts +0 -15
- package/src/layout/TabPane.ts +73 -163
- package/src/list/ContentMenu.ts +1 -2
- package/src/list/SortableList.ts +1 -4
- package/src/list/TembaMenu.ts +159 -113
- package/src/live/ContactBadges.ts +2 -1
- package/src/live/ContactChat.ts +22 -3
- package/src/live/ContactDetails.ts +42 -36
- package/src/live/ContactFieldEditor.ts +35 -57
- package/src/live/ContactFields.ts +1 -2
- package/src/live/ContactNotepad.ts +9 -1
- package/src/live/ContactPending.ts +1 -0
- package/src/store/AppState.ts +3 -21
- package/src/store/Store.ts +0 -29
- package/src/styles/designTokens.ts +33 -18
- package/src/styles/pillVariants.ts +24 -13
- package/static/css/temba-components.css +84 -55
- package/web-dev-server.config.mjs +0 -1
- package/web-test-runner.config.mjs +0 -1
package/src/list/TembaMenu.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { Dropdown } from '../display/Dropdown';
|
|
|
8
8
|
import { NotificationList } from './NotificationList';
|
|
9
9
|
import { ResizeElement } from '../ResizeElement';
|
|
10
10
|
import { Store } from '../store/Store';
|
|
11
|
+
import { designTokens } from '../styles/designTokens';
|
|
11
12
|
|
|
12
13
|
export interface MenuItem {
|
|
13
14
|
id?: string;
|
|
@@ -61,11 +62,17 @@ const findItem = (
|
|
|
61
62
|
export class TembaMenu extends ResizeElement {
|
|
62
63
|
static get styles() {
|
|
63
64
|
return css`
|
|
65
|
+
${designTokens}
|
|
66
|
+
|
|
64
67
|
:host {
|
|
65
68
|
width: 100%;
|
|
66
69
|
display: block;
|
|
70
|
+
font-family: var(--font);
|
|
71
|
+
color: var(--text-1);
|
|
67
72
|
--color-widget-bg-focused: transparent;
|
|
68
73
|
--options-block-shadow: none;
|
|
74
|
+
--menu-rail: var(--accent-400);
|
|
75
|
+
--menu-rail-selected: rgba(0, 0, 0, 0.15);
|
|
69
76
|
}
|
|
70
77
|
|
|
71
78
|
.bubble {
|
|
@@ -92,9 +99,9 @@ export class TembaMenu extends ResizeElement {
|
|
|
92
99
|
}
|
|
93
100
|
|
|
94
101
|
.section {
|
|
95
|
-
font-size:
|
|
96
|
-
|
|
97
|
-
color: var(--
|
|
102
|
+
font-size: 15px;
|
|
103
|
+
font-weight: var(--w-medium);
|
|
104
|
+
color: var(--text-1);
|
|
98
105
|
}
|
|
99
106
|
|
|
100
107
|
.collapse-toggle {
|
|
@@ -107,7 +114,7 @@ export class TembaMenu extends ResizeElement {
|
|
|
107
114
|
}
|
|
108
115
|
|
|
109
116
|
.collapse-toggle:hover {
|
|
110
|
-
background:
|
|
117
|
+
background: rgba(0, 0, 0, 0.04);
|
|
111
118
|
}
|
|
112
119
|
|
|
113
120
|
.item {
|
|
@@ -115,14 +122,29 @@ export class TembaMenu extends ResizeElement {
|
|
|
115
122
|
user-select: none;
|
|
116
123
|
-webkit-user-select: none;
|
|
117
124
|
display: flex;
|
|
118
|
-
|
|
125
|
+
align-items: center;
|
|
126
|
+
gap: 10px;
|
|
127
|
+
color: var(--text-2);
|
|
128
|
+
font-weight: var(--w-regular);
|
|
129
|
+
--icon-color: var(--text-2);
|
|
130
|
+
transition:
|
|
131
|
+
background-color 120ms ease,
|
|
132
|
+
color 120ms ease;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.item:hover {
|
|
136
|
+
background: var(--sunken);
|
|
137
|
+
color: var(--text-1);
|
|
138
|
+
--icon-color: var(--text-1);
|
|
119
139
|
}
|
|
120
140
|
|
|
121
141
|
.item.selected,
|
|
122
|
-
.item.pressed
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
142
|
+
.item.pressed,
|
|
143
|
+
.item.selected:hover,
|
|
144
|
+
.item.pressed:hover {
|
|
145
|
+
background: var(--focus-50);
|
|
146
|
+
color: var(--focus-700);
|
|
147
|
+
--icon-color: var(--focus-600);
|
|
126
148
|
}
|
|
127
149
|
|
|
128
150
|
.root {
|
|
@@ -140,40 +162,40 @@ export class TembaMenu extends ResizeElement {
|
|
|
140
162
|
display: none;
|
|
141
163
|
}
|
|
142
164
|
|
|
143
|
-
.popup {
|
|
144
|
-
--icon-color: rgba(255, 255, 255, 0.7);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
165
|
.level-0 > .item,
|
|
148
|
-
.level-0 > temba-dropdown > div[slot='toggle'] > .avatar
|
|
166
|
+
.level-0 > temba-dropdown > div[slot='toggle'] > .avatar,
|
|
167
|
+
.level-0 > temba-dropdown > div[slot='toggle'] > .item {
|
|
149
168
|
padding: 0px;
|
|
150
|
-
|
|
169
|
+
color: rgba(255, 255, 255, 0.92);
|
|
170
|
+
--icon-color: rgba(255, 255, 255, 0.92);
|
|
151
171
|
flex-direction: column;
|
|
152
|
-
|
|
153
|
-
|
|
172
|
+
justify-content: center;
|
|
173
|
+
border: 0px solid transparent;
|
|
174
|
+
width: 36px;
|
|
175
|
+
height: 36px;
|
|
176
|
+
margin: 4px 8px;
|
|
177
|
+
box-sizing: border-box;
|
|
178
|
+
border-radius: var(--r);
|
|
154
179
|
display: flex;
|
|
155
180
|
align-items: center;
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
.level-0 > .item.selected::before,
|
|
159
|
-
.level-0 > .item.selected::after {
|
|
160
|
-
content: ' ';
|
|
161
|
-
height: var(--curvature);
|
|
162
|
-
background: var(--color-primary-dark);
|
|
163
|
-
display: block;
|
|
164
|
-
width: 100%;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
.level-0 > .item.selected::before {
|
|
168
|
-
border-bottom-right-radius: var(--curvature);
|
|
181
|
+
position: relative;
|
|
169
182
|
}
|
|
170
183
|
|
|
171
184
|
.level-0 .item > temba-tip {
|
|
172
|
-
padding: 0
|
|
185
|
+
padding: 0;
|
|
173
186
|
}
|
|
174
187
|
|
|
175
|
-
.level-0 > .item.selected::after
|
|
176
|
-
|
|
188
|
+
.level-0 > .item.selected::after,
|
|
189
|
+
.level-0 > temba-dropdown > div[slot='toggle'] > .item.selected::after {
|
|
190
|
+
content: '';
|
|
191
|
+
position: absolute;
|
|
192
|
+
left: -8px;
|
|
193
|
+
top: 50%;
|
|
194
|
+
width: 3px;
|
|
195
|
+
height: 22px;
|
|
196
|
+
background: #fff;
|
|
197
|
+
border-radius: 0 2px 2px 0;
|
|
198
|
+
transform: translateY(-50%);
|
|
177
199
|
}
|
|
178
200
|
|
|
179
201
|
.level-0 {
|
|
@@ -181,14 +203,14 @@ export class TembaMenu extends ResizeElement {
|
|
|
181
203
|
}
|
|
182
204
|
|
|
183
205
|
.level-0 > .empty {
|
|
184
|
-
background: var(--
|
|
206
|
+
background: var(--menu-rail);
|
|
185
207
|
align-self: stretch;
|
|
186
208
|
flex-grow: 1;
|
|
187
209
|
}
|
|
188
210
|
|
|
189
211
|
.level-0 > .bottom {
|
|
190
212
|
height: 1em;
|
|
191
|
-
background: var(--
|
|
213
|
+
background: var(--menu-rail);
|
|
192
214
|
}
|
|
193
215
|
|
|
194
216
|
.level-0 > temba-dropdown.open > div[slot='toggle'] > .avatar {
|
|
@@ -196,13 +218,19 @@ export class TembaMenu extends ResizeElement {
|
|
|
196
218
|
}
|
|
197
219
|
|
|
198
220
|
.level-0 {
|
|
199
|
-
background: var(--
|
|
221
|
+
background: var(--menu-rail);
|
|
200
222
|
}
|
|
201
223
|
|
|
202
224
|
temba-dropdown {
|
|
203
225
|
margin: 0 0.25em;
|
|
204
226
|
}
|
|
205
227
|
|
|
228
|
+
.level-0 > temba-dropdown {
|
|
229
|
+
margin: 0;
|
|
230
|
+
display: block;
|
|
231
|
+
width: 100%;
|
|
232
|
+
}
|
|
233
|
+
|
|
206
234
|
temba-dropdown > div[slot='dropdown'] {
|
|
207
235
|
width: 300px;
|
|
208
236
|
overflow: hidden;
|
|
@@ -237,17 +265,21 @@ export class TembaMenu extends ResizeElement {
|
|
|
237
265
|
background: inherit;
|
|
238
266
|
}
|
|
239
267
|
|
|
240
|
-
.level-0 > .item.selected
|
|
241
|
-
|
|
242
|
-
|
|
268
|
+
.level-0 > .item.selected,
|
|
269
|
+
.level-0 > temba-dropdown > div[slot='toggle'] > .item.selected {
|
|
270
|
+
background: var(--menu-rail-selected);
|
|
271
|
+
color: #fff;
|
|
272
|
+
--icon-color: #fff;
|
|
243
273
|
}
|
|
244
274
|
|
|
245
275
|
.level {
|
|
246
|
-
padding:
|
|
276
|
+
padding: 8px;
|
|
277
|
+
gap: 1px;
|
|
247
278
|
}
|
|
248
279
|
|
|
249
280
|
.level-0 {
|
|
250
281
|
padding: 0px;
|
|
282
|
+
gap: 0;
|
|
251
283
|
}
|
|
252
284
|
|
|
253
285
|
.top {
|
|
@@ -257,16 +289,14 @@ export class TembaMenu extends ResizeElement {
|
|
|
257
289
|
}
|
|
258
290
|
|
|
259
291
|
.item {
|
|
260
|
-
padding: 0
|
|
261
|
-
|
|
262
|
-
|
|
292
|
+
padding: 0 8px;
|
|
293
|
+
height: 28px;
|
|
294
|
+
flex-shrink: 0;
|
|
295
|
+
border-radius: var(--r-sm);
|
|
263
296
|
display: flex;
|
|
264
297
|
min-width: 12em;
|
|
265
298
|
position: relative;
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
.item > temba-icon {
|
|
269
|
-
margin-right: 0.5em;
|
|
299
|
+
font-size: 13.5px;
|
|
270
300
|
}
|
|
271
301
|
|
|
272
302
|
.item > .details > .name {
|
|
@@ -277,58 +307,62 @@ export class TembaMenu extends ResizeElement {
|
|
|
277
307
|
width: 0;
|
|
278
308
|
}
|
|
279
309
|
|
|
280
|
-
.level-0 .item
|
|
310
|
+
.level-0 > .item,
|
|
311
|
+
.level-0 > temba-dropdown > div[slot='toggle'] > .item {
|
|
281
312
|
margin-top: 0em;
|
|
282
|
-
border-radius: 0px;
|
|
283
313
|
min-width: inherit;
|
|
284
314
|
max-width: inherit;
|
|
315
|
+
color: rgba(255, 255, 255, 0.92);
|
|
285
316
|
}
|
|
286
317
|
|
|
287
|
-
.popup:hover {
|
|
318
|
+
.level-0 > temba-dropdown > div[slot='toggle'] > .item.popup:hover {
|
|
288
319
|
--icon-color: #fff;
|
|
289
320
|
}
|
|
290
321
|
|
|
291
|
-
.level-0 > .item > temba-icon {
|
|
292
|
-
margin-right: 0px;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
322
|
.level-0 > .item > .name {
|
|
296
323
|
min-width: 0px;
|
|
297
324
|
}
|
|
298
325
|
|
|
299
326
|
.count {
|
|
300
327
|
align-self: center;
|
|
301
|
-
margin-left:
|
|
302
|
-
font-size:
|
|
303
|
-
font-weight:
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
328
|
+
margin-left: 10px;
|
|
329
|
+
font-size: 11.5px;
|
|
330
|
+
font-weight: var(--w-regular);
|
|
331
|
+
color: var(--text-3);
|
|
332
|
+
background: var(--sunken);
|
|
333
|
+
padding: 1px 6px;
|
|
334
|
+
border-radius: 999px;
|
|
335
|
+
font-variant-numeric: tabular-nums;
|
|
309
336
|
}
|
|
310
337
|
|
|
311
|
-
.
|
|
312
|
-
|
|
313
|
-
min-height: var(--curvature);
|
|
338
|
+
.count:empty {
|
|
339
|
+
display: none;
|
|
314
340
|
}
|
|
315
341
|
|
|
316
|
-
.
|
|
317
|
-
|
|
342
|
+
.item.selected .count,
|
|
343
|
+
.item.pressed .count {
|
|
344
|
+
background: var(--focus-200);
|
|
345
|
+
color: var(--focus-700);
|
|
318
346
|
}
|
|
319
347
|
|
|
320
|
-
.level-0 > .item-top
|
|
321
|
-
|
|
348
|
+
.level-0 > .item-top,
|
|
349
|
+
.level-0 > .item-bottom {
|
|
350
|
+
background: var(--menu-rail);
|
|
351
|
+
min-height: var(--r);
|
|
322
352
|
}
|
|
323
353
|
|
|
324
|
-
.level-0 > .item:hover
|
|
325
|
-
|
|
354
|
+
.level-0 > .item:hover,
|
|
355
|
+
.level-0 > temba-dropdown > div[slot='toggle'] > .item:hover {
|
|
356
|
+
background: rgba(255, 255, 255, 0.12);
|
|
357
|
+
color: #fff;
|
|
326
358
|
--icon-color: #fff;
|
|
327
359
|
}
|
|
328
360
|
|
|
329
|
-
.level-0 > .item.selected:hover
|
|
330
|
-
|
|
331
|
-
|
|
361
|
+
.level-0 > .item.selected:hover,
|
|
362
|
+
.level-0 > temba-dropdown > div[slot='toggle'] > .item.selected:hover {
|
|
363
|
+
background: var(--menu-rail-selected);
|
|
364
|
+
color: #fff;
|
|
365
|
+
--icon-color: #fff;
|
|
332
366
|
cursor: default;
|
|
333
367
|
}
|
|
334
368
|
|
|
@@ -338,14 +372,16 @@ export class TembaMenu extends ResizeElement {
|
|
|
338
372
|
|
|
339
373
|
.level-1,
|
|
340
374
|
.level-2 {
|
|
341
|
-
border-right: 1px solid
|
|
342
|
-
box-shadow:
|
|
375
|
+
border-right: 1px solid var(--border);
|
|
376
|
+
box-shadow: var(--shadow-2);
|
|
343
377
|
}
|
|
344
378
|
|
|
345
379
|
.level-1 {
|
|
346
380
|
transition:
|
|
347
381
|
opacity 100ms linear,
|
|
348
|
-
|
|
382
|
+
width 200ms linear,
|
|
383
|
+
min-width 200ms linear,
|
|
384
|
+
max-width 200ms linear;
|
|
349
385
|
overflow-y: scroll;
|
|
350
386
|
}
|
|
351
387
|
|
|
@@ -444,8 +480,12 @@ export class TembaMenu extends ResizeElement {
|
|
|
444
480
|
transform: none;
|
|
445
481
|
}
|
|
446
482
|
|
|
483
|
+
.level-1 {
|
|
484
|
+
background: var(--surface);
|
|
485
|
+
}
|
|
486
|
+
|
|
447
487
|
.level-2 {
|
|
448
|
-
background:
|
|
488
|
+
background: var(--bg);
|
|
449
489
|
overflow-y: auto;
|
|
450
490
|
}
|
|
451
491
|
|
|
@@ -454,16 +494,14 @@ export class TembaMenu extends ResizeElement {
|
|
|
454
494
|
}
|
|
455
495
|
|
|
456
496
|
.level-2 .item {
|
|
457
|
-
min-width:
|
|
458
|
-
max-width:
|
|
497
|
+
min-width: 16em;
|
|
498
|
+
max-width: 16em;
|
|
459
499
|
}
|
|
460
500
|
|
|
461
501
|
.level-1 .item {
|
|
462
502
|
overflow: hidden;
|
|
463
|
-
max-width:
|
|
464
|
-
min-width:
|
|
465
|
-
min-height: 1.5em;
|
|
466
|
-
max-height: 1.5em;
|
|
503
|
+
max-width: 16em;
|
|
504
|
+
min-width: 16em;
|
|
467
505
|
transition: min-width var(--transition-speed) !important;
|
|
468
506
|
}
|
|
469
507
|
|
|
@@ -499,7 +537,7 @@ export class TembaMenu extends ResizeElement {
|
|
|
499
537
|
}
|
|
500
538
|
|
|
501
539
|
.section {
|
|
502
|
-
max-width:
|
|
540
|
+
max-width: 16em;
|
|
503
541
|
}
|
|
504
542
|
|
|
505
543
|
.collapsed .section {
|
|
@@ -511,10 +549,15 @@ export class TembaMenu extends ResizeElement {
|
|
|
511
549
|
.collapsed.level-1 {
|
|
512
550
|
overflow: hidden;
|
|
513
551
|
padding: 0.5em;
|
|
514
|
-
--icon-color:
|
|
552
|
+
--icon-color: var(--text-3);
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
.item .right {
|
|
556
|
+
display: none;
|
|
515
557
|
}
|
|
516
558
|
|
|
517
559
|
.collapsed .item .right {
|
|
560
|
+
display: block;
|
|
518
561
|
flex-grow: 1;
|
|
519
562
|
}
|
|
520
563
|
|
|
@@ -523,7 +566,7 @@ export class TembaMenu extends ResizeElement {
|
|
|
523
566
|
}
|
|
524
567
|
|
|
525
568
|
.collapsed .collapse-icon {
|
|
526
|
-
--icon-color:
|
|
569
|
+
--icon-color: var(--text-4);
|
|
527
570
|
display: block;
|
|
528
571
|
}
|
|
529
572
|
|
|
@@ -536,9 +579,10 @@ export class TembaMenu extends ResizeElement {
|
|
|
536
579
|
|
|
537
580
|
.divider {
|
|
538
581
|
height: 1px;
|
|
539
|
-
background:
|
|
540
|
-
margin: 0.5em
|
|
582
|
+
background: var(--border);
|
|
583
|
+
margin: 0.5em var(--pad);
|
|
541
584
|
min-height: 1px;
|
|
585
|
+
flex-shrink: 0;
|
|
542
586
|
}
|
|
543
587
|
|
|
544
588
|
.space {
|
|
@@ -553,28 +597,26 @@ export class TembaMenu extends ResizeElement {
|
|
|
553
597
|
}
|
|
554
598
|
|
|
555
599
|
.sub-section {
|
|
556
|
-
font-size:
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
600
|
+
font-size: 11px;
|
|
601
|
+
font-weight: var(--w-semibold);
|
|
602
|
+
text-transform: uppercase;
|
|
603
|
+
letter-spacing: 0.06em;
|
|
604
|
+
color: var(--text-3);
|
|
605
|
+
padding: 14px 10px 4px;
|
|
606
|
+
flex-shrink: 0;
|
|
560
607
|
}
|
|
561
608
|
|
|
562
609
|
.fully-collapsed .level-1 {
|
|
563
|
-
|
|
610
|
+
width: 0;
|
|
611
|
+
min-width: 0;
|
|
612
|
+
max-width: 0;
|
|
613
|
+
padding: 0;
|
|
564
614
|
pointer-events: none;
|
|
565
615
|
border: none;
|
|
616
|
+
box-shadow: none;
|
|
566
617
|
overflow: hidden;
|
|
567
618
|
}
|
|
568
619
|
|
|
569
|
-
.fully-collapsed .level-1 > * {
|
|
570
|
-
opacity: 0;
|
|
571
|
-
}
|
|
572
|
-
|
|
573
|
-
.fully-collapsed .level-1 .item,
|
|
574
|
-
.fully-collapsed .level-1 .divider {
|
|
575
|
-
opacity: 0;
|
|
576
|
-
}
|
|
577
|
-
|
|
578
620
|
.fully-collapsed .level-2,
|
|
579
621
|
.fully-collapsed .level-3 {
|
|
580
622
|
display: none;
|
|
@@ -585,11 +627,12 @@ export class TembaMenu extends ResizeElement {
|
|
|
585
627
|
margin-bottom: 0.2em;
|
|
586
628
|
margin-left: 0.75em;
|
|
587
629
|
margin-right: 0.75em;
|
|
630
|
+
--button-justify: flex-start;
|
|
588
631
|
}
|
|
589
632
|
|
|
590
633
|
.expand-icon {
|
|
591
634
|
transform: rotate(180deg);
|
|
592
|
-
--icon-color: rgba(255, 255, 255, 0.
|
|
635
|
+
--icon-color: rgba(255, 255, 255, 0.6);
|
|
593
636
|
cursor: pointer;
|
|
594
637
|
max-height: 0px;
|
|
595
638
|
overflow: hidden;
|
|
@@ -610,6 +653,10 @@ export class TembaMenu extends ResizeElement {
|
|
|
610
653
|
.section-header {
|
|
611
654
|
display: flex;
|
|
612
655
|
align-items: center;
|
|
656
|
+
flex-shrink: 0;
|
|
657
|
+
margin: -8px -8px 8px;
|
|
658
|
+
padding: 8px 8px 8px 16px;
|
|
659
|
+
border-bottom: 1px solid var(--border);
|
|
613
660
|
}
|
|
614
661
|
|
|
615
662
|
.section-header .section {
|
|
@@ -617,19 +664,19 @@ export class TembaMenu extends ResizeElement {
|
|
|
617
664
|
}
|
|
618
665
|
|
|
619
666
|
.section-header temba-icon {
|
|
620
|
-
--icon-color:
|
|
667
|
+
--icon-color: var(--border-strong);
|
|
621
668
|
cursor: pointer;
|
|
622
|
-
padding
|
|
623
|
-
|
|
669
|
+
padding: 4px;
|
|
670
|
+
transition: --icon-color 120ms ease;
|
|
624
671
|
}
|
|
625
672
|
|
|
626
673
|
.section-header temba-icon:hover {
|
|
627
|
-
--icon-color: var(--
|
|
674
|
+
--icon-color: var(--accent);
|
|
628
675
|
}
|
|
629
676
|
|
|
630
677
|
a {
|
|
631
678
|
text-decoration: none;
|
|
632
|
-
color:
|
|
679
|
+
color: inherit;
|
|
633
680
|
}
|
|
634
681
|
|
|
635
682
|
slot[name='header'] {
|
|
@@ -642,7 +689,6 @@ export class TembaMenu extends ResizeElement {
|
|
|
642
689
|
|
|
643
690
|
.icon-wrapper {
|
|
644
691
|
position: relative;
|
|
645
|
-
padding: 0.2em 0.4em 0.2em 0em;
|
|
646
692
|
}
|
|
647
693
|
|
|
648
694
|
.level-0 .icon-wrapper {
|
|
@@ -1126,7 +1172,7 @@ export class TembaMenu extends ResizeElement {
|
|
|
1126
1172
|
let icon = menuItem.icon
|
|
1127
1173
|
? html`<div class="icon-wrapper">
|
|
1128
1174
|
<temba-icon
|
|
1129
|
-
size="${menuItem.level === 0 ? '1.
|
|
1175
|
+
size="${menuItem.level === 0 ? '1.35' : '1'}"
|
|
1130
1176
|
name="${menuItem.icon}"
|
|
1131
1177
|
></temba-icon
|
|
1132
1178
|
>${menuItem.bubble && !menuItem.count
|
|
@@ -1140,7 +1186,7 @@ export class TembaMenu extends ResizeElement {
|
|
|
1140
1186
|
|
|
1141
1187
|
const collapsedIcon = menuItem.collapsed_icon
|
|
1142
1188
|
? html`<temba-icon
|
|
1143
|
-
size="${menuItem.level === 0 ? '1.
|
|
1189
|
+
size="${menuItem.level === 0 ? '1.35' : '1'}"
|
|
1144
1190
|
name="${menuItem.collapsed_icon}"
|
|
1145
1191
|
class="collapse-icon"
|
|
1146
1192
|
></temba-icon>`
|
|
@@ -1341,7 +1387,7 @@ export class TembaMenu extends ResizeElement {
|
|
|
1341
1387
|
${index == 0 && !this.collapsed
|
|
1342
1388
|
? html`<temba-icon
|
|
1343
1389
|
name=${collapseIcon}
|
|
1344
|
-
size="1
|
|
1390
|
+
size="1"
|
|
1345
1391
|
@click=${this.handleCollapse}
|
|
1346
1392
|
></temba-icon>`
|
|
1347
1393
|
: null}
|
|
@@ -3,6 +3,7 @@ import { property } from 'lit/decorators.js';
|
|
|
3
3
|
import { Group } from '../interfaces';
|
|
4
4
|
import { debounce, getClasses } from '../utils';
|
|
5
5
|
import { Icon } from '../Icons';
|
|
6
|
+
import { getLanguageName } from '../languages';
|
|
6
7
|
import { ContactStoreElement } from './ContactStoreElement';
|
|
7
8
|
|
|
8
9
|
const STATUS = {
|
|
@@ -166,7 +167,7 @@ export class ContactBadges extends ContactStoreElement {
|
|
|
166
167
|
primary
|
|
167
168
|
shadow
|
|
168
169
|
>
|
|
169
|
-
${
|
|
170
|
+
${getLanguageName(this.data.language)}
|
|
170
171
|
</temba-label>
|
|
171
172
|
`
|
|
172
173
|
: null}
|
package/src/live/ContactChat.ts
CHANGED
|
@@ -64,11 +64,11 @@ export class ContactChat extends ContactStoreElement {
|
|
|
64
64
|
display: flex;
|
|
65
65
|
flex-direction: row;
|
|
66
66
|
min-height: 0;
|
|
67
|
+
margin-top: var(--gap);
|
|
67
68
|
--compose-shadow: none;
|
|
68
69
|
--compose-border: none;
|
|
69
70
|
--compose-padding: 3px;
|
|
70
71
|
--compose-curvature: none;
|
|
71
|
-
border-top: 1px inset rgba(0, 0, 0, 0.05);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
.chat-wrapper {
|
|
@@ -76,7 +76,11 @@ export class ContactChat extends ContactStoreElement {
|
|
|
76
76
|
flex-grow: 1;
|
|
77
77
|
flex-direction: column;
|
|
78
78
|
min-height: 0;
|
|
79
|
-
background:
|
|
79
|
+
background: var(--surface);
|
|
80
|
+
border: 1px solid var(--border-strong);
|
|
81
|
+
border-radius: var(--r-sm);
|
|
82
|
+
box-shadow: var(--shadow-2);
|
|
83
|
+
overflow: hidden;
|
|
80
84
|
}
|
|
81
85
|
|
|
82
86
|
temba-contact-history {
|
|
@@ -396,6 +400,18 @@ export class ContactChat extends ContactStoreElement {
|
|
|
396
400
|
background: rgba(0, 0, 0, 0.03);
|
|
397
401
|
}
|
|
398
402
|
|
|
403
|
+
/* Keep the assignment + topic controls the same height as the
|
|
404
|
+
Close button so the row reads as one strip. Shrink the user
|
|
405
|
+
avatars (--temba-scale) so they fit in the smaller box. */
|
|
406
|
+
.in-ticket temba-user-select,
|
|
407
|
+
.in-ticket temba-select {
|
|
408
|
+
--temba-select-min-height: 28px;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
.in-ticket temba-user-select {
|
|
412
|
+
--temba-scale: 0.75;
|
|
413
|
+
}
|
|
414
|
+
|
|
399
415
|
temba-user {
|
|
400
416
|
border: 1px solid #ddd;
|
|
401
417
|
padding: 0.2em 0.5em;
|
|
@@ -1010,8 +1026,11 @@ export class ContactChat extends ContactStoreElement {
|
|
|
1010
1026
|
if (
|
|
1011
1027
|
event.type === 'msg_created' ||
|
|
1012
1028
|
event.type === 'msg_received' ||
|
|
1013
|
-
event.type === 'ivr_created'
|
|
1029
|
+
event.type === 'ivr_created' ||
|
|
1030
|
+
event.type === 'ticket_note_added'
|
|
1014
1031
|
) {
|
|
1032
|
+
// Notes render as chat-style bubbles (see Chat.ts), so push them
|
|
1033
|
+
// through directly rather than prerendering into an inline event.
|
|
1015
1034
|
messages.push(event);
|
|
1016
1035
|
} else {
|
|
1017
1036
|
this.prerender(event);
|