@nyaruka/temba-components 0.45.0 → 0.47.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 +15 -0
- package/dist/{0887303b.js → df04e47b.js} +225 -340
- package/dist/index.js +225 -340
- package/dist/sw.js +1 -1
- package/dist/sw.js.map +1 -1
- package/dist/templates/components-body.html +1 -1
- package/dist/templates/components-head.html +1 -1
- package/out-tsc/src/button/Button.js +10 -0
- package/out-tsc/src/button/Button.js.map +1 -1
- package/out-tsc/src/completion/Completion.js +3 -0
- package/out-tsc/src/completion/Completion.js.map +1 -1
- package/out-tsc/src/completion/helpers.js +3 -0
- package/out-tsc/src/completion/helpers.js.map +1 -1
- package/out-tsc/src/contacts/ContactChat.js +8 -201
- package/out-tsc/src/contacts/ContactChat.js.map +1 -1
- package/out-tsc/src/contacts/ContactFieldEditor.js +34 -8
- package/out-tsc/src/contacts/ContactFieldEditor.js.map +1 -1
- package/out-tsc/src/contacts/ContactFields.js +34 -21
- package/out-tsc/src/contacts/ContactFields.js.map +1 -1
- package/out-tsc/src/contacts/ContactHistory.js +5 -111
- package/out-tsc/src/contacts/ContactHistory.js.map +1 -1
- package/out-tsc/src/contacts/ContactTickets.js +99 -17
- package/out-tsc/src/contacts/ContactTickets.js.map +1 -1
- package/out-tsc/src/contacts/events.js +28 -46
- package/out-tsc/src/contacts/events.js.map +1 -1
- package/out-tsc/src/date/TembaDate.js +4 -1
- package/out-tsc/src/date/TembaDate.js.map +1 -1
- package/out-tsc/src/datepicker/DatePicker.js +15 -4
- package/out-tsc/src/datepicker/DatePicker.js.map +1 -1
- package/out-tsc/src/formfield/FormField.js +1 -1
- package/out-tsc/src/formfield/FormField.js.map +1 -1
- package/out-tsc/src/interfaces.js.map +1 -1
- package/out-tsc/src/list/TembaList.js +1 -2
- package/out-tsc/src/list/TembaList.js.map +1 -1
- package/out-tsc/src/options/Options.js +6 -2
- package/out-tsc/src/options/Options.js.map +1 -1
- package/out-tsc/src/store/StoreElement.js +8 -1
- package/out-tsc/src/store/StoreElement.js.map +1 -1
- package/out-tsc/src/utils/index.js +16 -6
- package/out-tsc/src/utils/index.js.map +1 -1
- package/out-tsc/src/vectoricon/index.js +1 -1
- package/out-tsc/src/vectoricon/index.js.map +1 -1
- package/out-tsc/test/temba-contact-chat.test.js +0 -105
- package/out-tsc/test/temba-contact-chat.test.js.map +1 -1
- package/package.json +1 -1
- package/screenshots/truth/contacts/badges.png +0 -0
- package/screenshots/truth/contacts/compose-attachments-no-text-failure.png +0 -0
- package/screenshots/truth/contacts/compose-attachments-no-text-success.png +0 -0
- package/screenshots/truth/contacts/compose-text-and-attachments-failure-attachments.png +0 -0
- package/screenshots/truth/contacts/compose-text-and-attachments-failure-generic.png +0 -0
- package/screenshots/truth/contacts/compose-text-and-attachments-failure-text-and-attachments.png +0 -0
- package/screenshots/truth/contacts/compose-text-and-attachments-failure-text.png +0 -0
- package/screenshots/truth/contacts/compose-text-and-attachments-success.png +0 -0
- package/screenshots/truth/contacts/compose-text-no-attachments-failure.png +0 -0
- package/screenshots/truth/contacts/compose-text-no-attachments-success.png +0 -0
- package/screenshots/truth/contacts/contact-active-default.png +0 -0
- package/screenshots/truth/contacts/contact-active-show-chatbox.png +0 -0
- package/screenshots/truth/contacts/contact-archived-hide-chatbox.png +0 -0
- package/screenshots/truth/contacts/contact-blocked-hide-chatbox.png +0 -0
- package/screenshots/truth/contacts/contact-stopped-hide-chatbox.png +0 -0
- package/screenshots/truth/contacts/fields-updated.png +0 -0
- package/screenshots/truth/contacts/fields.png +0 -0
- package/screenshots/truth/contacts/history.png +0 -0
- package/screenshots/truth/datepicker/datetime.png +0 -0
- package/screenshots/truth/datepicker/initial-timezone.png +0 -0
- package/screenshots/truth/datepicker/initial-value.png +0 -0
- package/screenshots/truth/datepicker/updated-keyboard.png +0 -0
- package/src/button/Button.ts +10 -0
- package/src/completion/Completion.ts +3 -0
- package/src/completion/helpers.ts +4 -0
- package/src/contacts/ContactChat.ts +8 -214
- package/src/contacts/ContactFieldEditor.ts +33 -8
- package/src/contacts/ContactFields.ts +31 -22
- package/src/contacts/ContactHistory.ts +7 -129
- package/src/contacts/ContactTickets.ts +99 -19
- package/src/contacts/events.ts +28 -47
- package/src/date/TembaDate.ts +7 -1
- package/src/datepicker/DatePicker.ts +15 -4
- package/src/formfield/FormField.ts +1 -1
- package/src/interfaces.ts +1 -1
- package/src/list/TembaList.ts +1 -3
- package/src/options/Options.ts +8 -2
- package/src/store/StoreElement.ts +7 -1
- package/src/utils/index.ts +14 -6
- package/src/vectoricon/index.ts +1 -1
- package/static/css/temba-components.css +2 -1
- package/test/temba-contact-chat.test.ts +0 -141
- package/screenshots/truth/contacts/contact-active-ticket-closed-show-reopen-button.png +0 -0
- package/screenshots/truth/contacts/contact-active-ticket-open-show-chatbox.png +0 -0
- package/screenshots/truth/contacts/contact-archived-ticket-closed-hide-chatbox.png +0 -0
|
@@ -2,8 +2,6 @@ import { useFakeTimers } from 'sinon';
|
|
|
2
2
|
import { Button } from '../src/button/Button';
|
|
3
3
|
import { Compose } from '../src/compose/Compose';
|
|
4
4
|
import { ContactChat } from '../src/contacts/ContactChat';
|
|
5
|
-
import { CustomEventType } from '../src/interfaces';
|
|
6
|
-
import { TicketList } from '../src/list/TicketList';
|
|
7
5
|
import {
|
|
8
6
|
assertScreenshot,
|
|
9
7
|
clearMockPosts,
|
|
@@ -42,25 +40,6 @@ const getContactChat = async (attrs: any = {}) => {
|
|
|
42
40
|
return chat;
|
|
43
41
|
};
|
|
44
42
|
|
|
45
|
-
const list_TAG = 'temba-list';
|
|
46
|
-
const getTicketList = async (attrs: any = {}) => {
|
|
47
|
-
const list = (await getComponent(list_TAG, attrs)) as TicketList;
|
|
48
|
-
|
|
49
|
-
if (!list.endpoint) {
|
|
50
|
-
return list;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return new Promise<TicketList>(resolve => {
|
|
54
|
-
list.addEventListener(
|
|
55
|
-
CustomEventType.FetchComplete,
|
|
56
|
-
async () => {
|
|
57
|
-
resolve(list);
|
|
58
|
-
},
|
|
59
|
-
{ once: true }
|
|
60
|
-
);
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
|
-
|
|
64
43
|
describe('temba-contact-chat - contact tests', () => {
|
|
65
44
|
// map requests for contact history to our static files
|
|
66
45
|
// we'll just us the same historylist for everybody for now
|
|
@@ -468,123 +447,3 @@ describe('temba-contact-chat - contact tests - handle send tests - text and atta
|
|
|
468
447
|
);
|
|
469
448
|
});
|
|
470
449
|
});
|
|
471
|
-
|
|
472
|
-
describe('temba-contact-chat - ticket tests', () => {
|
|
473
|
-
// map requests for contact history to our static files
|
|
474
|
-
// we'll just us the same history for everybody for now
|
|
475
|
-
beforeEach(() => {
|
|
476
|
-
mockGET(
|
|
477
|
-
/\/contact\/history\/contact-.*/,
|
|
478
|
-
'/test-assets/contacts/history.json'
|
|
479
|
-
);
|
|
480
|
-
|
|
481
|
-
mockGET(/\/api\/v2\/tickets\.json.*/, '/test-assets/tickets/empty.json');
|
|
482
|
-
clock = useFakeTimers();
|
|
483
|
-
});
|
|
484
|
-
|
|
485
|
-
afterEach(function () {
|
|
486
|
-
clock.restore();
|
|
487
|
-
});
|
|
488
|
-
|
|
489
|
-
it('show history and show chatbox if contact is active and ticket is open', async () => {
|
|
490
|
-
// we are a StoreElement, so load a store first
|
|
491
|
-
await loadStore();
|
|
492
|
-
const chat: ContactChat = await getContactChat({
|
|
493
|
-
contact: 'contact-carter-active',
|
|
494
|
-
});
|
|
495
|
-
|
|
496
|
-
const tickets: TicketList = await getTicketList({
|
|
497
|
-
endpoint: '/test-assets/tickets/ticket-carter-open.json',
|
|
498
|
-
});
|
|
499
|
-
|
|
500
|
-
chat.currentTicket = tickets.items[0];
|
|
501
|
-
chat.refresh();
|
|
502
|
-
await chat.httpComplete;
|
|
503
|
-
|
|
504
|
-
// we want to wait until our scroll is finished before taking our screenshot
|
|
505
|
-
// once we have two scrollTops that are the same, we'll assume we're ready
|
|
506
|
-
let lastScroll = 0;
|
|
507
|
-
await assertScreenshot(
|
|
508
|
-
'contacts/contact-active-ticket-open-show-chatbox',
|
|
509
|
-
getClip(chat),
|
|
510
|
-
{
|
|
511
|
-
clock: clock,
|
|
512
|
-
predicate: () => {
|
|
513
|
-
const currentScroll = chat
|
|
514
|
-
.getContactHistory()
|
|
515
|
-
.getEventsPane().scrollTop;
|
|
516
|
-
if (currentScroll !== 0 && currentScroll === lastScroll) {
|
|
517
|
-
return true;
|
|
518
|
-
}
|
|
519
|
-
lastScroll = currentScroll;
|
|
520
|
-
},
|
|
521
|
-
}
|
|
522
|
-
);
|
|
523
|
-
});
|
|
524
|
-
|
|
525
|
-
it('show history and show reopen button if contact is active and ticket is closed', async () => {
|
|
526
|
-
// we are a StoreElement, so load a store first
|
|
527
|
-
await loadStore();
|
|
528
|
-
const chat: ContactChat = await getContactChat({
|
|
529
|
-
contact: 'contact-carter-active',
|
|
530
|
-
});
|
|
531
|
-
|
|
532
|
-
const tickets: TicketList = await getTicketList({
|
|
533
|
-
endpoint: '/test-assets/tickets/ticket-carter-closed.json',
|
|
534
|
-
});
|
|
535
|
-
chat.currentTicket = tickets.items[0];
|
|
536
|
-
chat.refresh();
|
|
537
|
-
await chat.httpComplete;
|
|
538
|
-
|
|
539
|
-
let lastScroll = 0;
|
|
540
|
-
await assertScreenshot(
|
|
541
|
-
'contacts/contact-active-ticket-closed-show-reopen-button',
|
|
542
|
-
getClip(chat),
|
|
543
|
-
{
|
|
544
|
-
clock: clock,
|
|
545
|
-
predicate: () => {
|
|
546
|
-
const currentScroll = chat
|
|
547
|
-
.getContactHistory()
|
|
548
|
-
.getEventsPane().scrollTop;
|
|
549
|
-
if (currentScroll !== 0 && currentScroll === lastScroll) {
|
|
550
|
-
return true;
|
|
551
|
-
}
|
|
552
|
-
lastScroll = currentScroll;
|
|
553
|
-
},
|
|
554
|
-
}
|
|
555
|
-
);
|
|
556
|
-
});
|
|
557
|
-
|
|
558
|
-
it('show history and hide chatbox if contact is archived and ticket is closed', async () => {
|
|
559
|
-
// we are a StoreElement, so load a store first
|
|
560
|
-
await loadStore();
|
|
561
|
-
|
|
562
|
-
const chat: ContactChat = await getContactChat({
|
|
563
|
-
contact: 'contact-barack-archived',
|
|
564
|
-
});
|
|
565
|
-
|
|
566
|
-
const tickets: TicketList = await getTicketList({
|
|
567
|
-
endpoint: '/test-assets/tickets/ticket-barack-closed.json',
|
|
568
|
-
});
|
|
569
|
-
chat.currentTicket = tickets.items[0];
|
|
570
|
-
chat.refresh();
|
|
571
|
-
await chat.httpComplete;
|
|
572
|
-
let lastScroll = 0;
|
|
573
|
-
await assertScreenshot(
|
|
574
|
-
'contacts/contact-archived-ticket-closed-hide-chatbox',
|
|
575
|
-
getClip(chat),
|
|
576
|
-
{
|
|
577
|
-
clock: clock,
|
|
578
|
-
predicate: () => {
|
|
579
|
-
const currentScroll = chat
|
|
580
|
-
.getContactHistory()
|
|
581
|
-
.getEventsPane().scrollTop;
|
|
582
|
-
if (currentScroll !== 0 && currentScroll === lastScroll) {
|
|
583
|
-
return true;
|
|
584
|
-
}
|
|
585
|
-
lastScroll = currentScroll;
|
|
586
|
-
},
|
|
587
|
-
}
|
|
588
|
-
);
|
|
589
|
-
});
|
|
590
|
-
});
|
|
Binary file
|
|
Binary file
|