@nyaruka/temba-components 0.19.0 → 0.23.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 (68) hide show
  1. package/.eslintrc.js +1 -0
  2. package/CHANGELOG.md +28 -0
  3. package/dist/28f45617.js +356 -0
  4. package/dist/index.js +356 -1
  5. package/dist/static/icons/symbol-defs.svg +56 -20
  6. package/dist/sw.js +1 -1
  7. package/dist/sw.js.map +1 -1
  8. package/dist/templates/components-body.html +1 -1
  9. package/dist/templates/components-head.html +1 -1
  10. package/out-tsc/src/anchor/Anchor.js +25 -0
  11. package/out-tsc/src/anchor/Anchor.js.map +1 -0
  12. package/out-tsc/src/contacts/ContactDetails.js +9 -5
  13. package/out-tsc/src/contacts/ContactDetails.js.map +1 -1
  14. package/out-tsc/src/contacts/ContactHistory.js +1 -5
  15. package/out-tsc/src/contacts/ContactHistory.js.map +1 -1
  16. package/out-tsc/src/contacts/events.js +33 -7
  17. package/out-tsc/src/contacts/events.js.map +1 -1
  18. package/out-tsc/src/dialog/Modax.js +11 -2
  19. package/out-tsc/src/dialog/Modax.js.map +1 -1
  20. package/out-tsc/src/list/TembaMenu.js +384 -81
  21. package/out-tsc/src/list/TembaMenu.js.map +1 -1
  22. package/out-tsc/src/utils/index.js +13 -14
  23. package/out-tsc/src/utils/index.js.map +1 -1
  24. package/out-tsc/src/vectoricon/VectorIcon.js +2 -1
  25. package/out-tsc/src/vectoricon/VectorIcon.js.map +1 -1
  26. package/out-tsc/temba-modules.js +2 -0
  27. package/out-tsc/temba-modules.js.map +1 -1
  28. package/out-tsc/test/temba-menu.test.js +0 -13
  29. package/out-tsc/test/temba-menu.test.js.map +1 -1
  30. package/package.json +4 -4
  31. package/screenshots/truth/contacts/history-expanded.png +0 -0
  32. package/screenshots/truth/list/items-selected.png +0 -0
  33. package/screenshots/truth/list/items-updated.png +0 -0
  34. package/screenshots/truth/list/items.png +0 -0
  35. package/screenshots/truth/list/menu-submenu.png +0 -0
  36. package/src/anchor/Anchor.ts +26 -0
  37. package/src/contacts/ContactDetails.ts +9 -5
  38. package/src/contacts/ContactHistory.ts +0 -4
  39. package/src/contacts/events.ts +33 -7
  40. package/src/dialog/Modax.ts +11 -2
  41. package/src/list/TembaMenu.ts +424 -93
  42. package/src/utils/index.ts +17 -16
  43. package/src/vectoricon/VectorIcon.ts +2 -1
  44. package/static/icons/Read Me.txt +1 -1
  45. package/static/icons/SVG/channel.svg +5 -0
  46. package/static/icons/SVG/cloud1.svg +5 -0
  47. package/static/icons/SVG/codepen.svg +5 -0
  48. package/static/icons/SVG/codesandbox.svg +5 -0
  49. package/static/icons/SVG/git-pull-request.svg +5 -0
  50. package/static/icons/SVG/grid.svg +5 -0
  51. package/static/icons/SVG/hard-drive.svg +5 -0
  52. package/static/icons/SVG/layout.svg +5 -0
  53. package/static/icons/SVG/list.svg +5 -0
  54. package/static/icons/SVG/map-pin.svg +5 -0
  55. package/static/icons/SVG/menu.svg +5 -0
  56. package/static/icons/SVG/package.svg +5 -0
  57. package/static/icons/SVG/zapier.svg +5 -0
  58. package/static/icons/demo-external-svg.html +232 -172
  59. package/static/icons/demo-files/demo.css +4 -4
  60. package/static/icons/demo.html +288 -192
  61. package/static/icons/selection.json +646 -345
  62. package/static/icons/style.css +4 -4
  63. package/static/icons/symbol-defs.svg +56 -20
  64. package/temba-modules.ts +2 -0
  65. package/test/temba-menu.test.ts +0 -16
  66. package/test-assets/style.css +1 -1
  67. package/dist/b10b5805.js +0 -1
  68. package/static/icons/SVG/zendesk1.svg +0 -5
@@ -1,4 +1,3 @@
1
- /* eslint-disable @typescript-eslint/camelcase */
2
1
  import { css, property } from 'lit-element';
3
2
  import { html, TemplateResult } from 'lit-html';
4
3
  import { Contact, CustomEventType, Ticket } from '../interfaces';
@@ -898,7 +897,6 @@ export class ContactHistory extends RapidElement {
898
897
  body: ticket.body,
899
898
  ticketer: ticket.ticketer,
900
899
  },
901
- // eslint-disable-next-line @typescript-eslint/camelcase
902
900
  created_on: ticket.opened_on,
903
901
  };
904
902
 
@@ -918,8 +916,6 @@ export class ContactHistory extends RapidElement {
918
916
  return html`
919
917
  ${this.ticket
920
918
  ? html`<div class="sticky-bin">${unfetchedTickets}</div>`
921
- : this.contact
922
- ? html`<div class="scroll-title">${this.contact.name}</div>`
923
919
  : null}
924
920
  ${this.fetching
925
921
  ? html`<temba-loading units="5" size="10"></temba-loading>`
@@ -686,7 +686,7 @@ export const renderAttachment = (attachment: string): TemplateResult => {
686
686
 
687
687
  let inner = null;
688
688
  if (mediaType === 'image') {
689
- inner = html`<a href="${url}"><img src="${url}" style="width:100%;height:auto;display:block"></img></a>`;
689
+ inner = html`<div class="linked" onclick="goto(event)" href="${url}"><img src="${url}" style="width:100%;height:auto;display:block"></img></a>`;
690
690
  } else if (ext === 'pdf') {
691
691
  return html`<div
692
692
  style="width:100%;height:300px;border-radius:var(--curvature);box-shadow:0px 0px 10px -1px rgb(160 160 160);overflow:hidden"
@@ -928,7 +928,13 @@ export const renderTicketAction = (
928
928
  <temba-icon name="${icon}"></temba-icon>
929
929
  <div class="description">
930
930
  ${getDisplayName(event.created_by)} ${action} a
931
- <a href="/tickets/all/open/${event.ticket.uuid}">ticket</a>
931
+ <span
932
+ onclick="goto(event)"
933
+ class="linked"
934
+ href="/ticket/all/open/${event.ticket.uuid}"
935
+ >
936
+ ticket
937
+ </span>
932
938
  </div>
933
939
  </div>`;
934
940
  }
@@ -976,7 +982,13 @@ export const renderTicketOpened = (
976
982
  <temba-icon name="${icon}"></temba-icon>
977
983
  <div class="description">
978
984
  ${event.ticket.topic.name}
979
- <a href="/tickets/all/open/${event.ticket.uuid}">ticket</a> was opened
985
+ <span
986
+ class="linked"
987
+ onclick="goto(event)"
988
+ href="/tickets/all/open/${event.ticket.uuid}"
989
+ >ticket</span
990
+ >
991
+ was opened
980
992
  </div>
981
993
  </div>`;
982
994
  } else {
@@ -1114,11 +1126,20 @@ export const renderCampaignFiredEvent = (
1114
1126
  return html`<temba-icon name="campaign"></temba-icon>
1115
1127
  <div class="description">
1116
1128
  Campaign
1117
- <a href="/campaign/read/${event.campaign.id}">${event.campaign.name}</a>
1129
+ <span
1130
+ class="linked"
1131
+ onclick="goto(event)"
1132
+ href="/campaign/read/${event.campaign.id}"
1133
+ >${event.campaign.name}</span
1134
+ >
1118
1135
  ${event.fired_result === 'S' ? 'skipped' : 'triggered'}
1119
- <a href="/campaignevent/read/${event.campaign_event.id}">
1136
+ <span
1137
+ class="linked"
1138
+ onclick="goto(event)"
1139
+ href="/campaignevent/read/${event.campaign_event.id}"
1140
+ >
1120
1141
  ${event.campaign_event.offset_display}
1121
- ${event.campaign_event.relative_to.name}</a
1142
+ ${event.campaign_event.relative_to.name}</span
1122
1143
  >
1123
1144
  </div>`;
1124
1145
  };
@@ -1138,7 +1159,12 @@ export const renderContactGroupsEvent = (
1138
1159
  ${oxfordFn(
1139
1160
  groups,
1140
1161
  (group: ObjectReference) =>
1141
- html`<a href="/contact/filter/${group.uuid}">${group.name}</a>`
1162
+ html`<span
1163
+ class="linked"
1164
+ onclick="goto(event)"
1165
+ href="/contact/filter/${group.uuid}"
1166
+ >${group.name}</span
1167
+ >`
1142
1168
  )}
1143
1169
  ${event.type === Events.FAILURE
1144
1170
  ? html`<div>Run ended prematurely, check the flow design.</div>`
@@ -106,6 +106,9 @@ export class Modax extends RapidElement {
106
106
  @property({ type: Boolean })
107
107
  noSubmit: boolean;
108
108
 
109
+ @property({ type: Object })
110
+ headers: any = {};
111
+
109
112
  @property({ type: String })
110
113
  body: any = this.getLoading();
111
114
 
@@ -222,12 +225,18 @@ export class Modax extends RapidElement {
222
225
  return !scriptOnly;
223
226
  }
224
227
 
228
+ public getHeaders(): any {
229
+ const headers = this.headers;
230
+ headers['X-PJAX'] = 1;
231
+ return headers;
232
+ }
233
+
225
234
  private fetchForm() {
226
235
  // const CancelToken = axios.CancelToken;
227
236
  // this.cancelToken = CancelToken.source();
228
237
  this.fetching = true;
229
238
  this.body = this.getLoading();
230
- this.httpComplete = getUrl(this.endpoint, null, true).then(
239
+ this.httpComplete = getUrl(this.endpoint, null, this.getHeaders()).then(
231
240
  (response: WebResponse) => {
232
241
  this.setBody(response.body);
233
242
  this.updatePrimaryButton();
@@ -249,7 +258,7 @@ export class Modax extends RapidElement {
249
258
  this.httpComplete = postUrl(
250
259
  this.endpoint,
251
260
  postData,
252
- true,
261
+ this.getHeaders(),
253
262
  'application/x-www-form-urlencoded'
254
263
  )
255
264
  .then((response: WebResponse) => {