@genesislcap/pbc-notify-ui 14.486.1 → 14.486.2-alpha-686dcaf.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 (28) hide show
  1. package/dist/custom-elements.json +1181 -287
  2. package/dist/dts/components/foundation-inbox/inbox-base/inbox-base.d.ts +16 -0
  3. package/dist/dts/components/foundation-inbox/inbox-base/inbox-base.d.ts.map +1 -1
  4. package/dist/dts/components/foundation-inbox/inbox.styles.d.ts.map +1 -1
  5. package/dist/dts/components/foundation-inbox/inbox.template.d.ts.map +1 -1
  6. package/dist/dts/components/foundation-inbox/inbox.utils.d.ts +1 -0
  7. package/dist/dts/components/foundation-inbox/inbox.utils.d.ts.map +1 -1
  8. package/dist/dts/components/foundation-notification-dashboard/notification-dashboard.utils.d.ts.map +1 -1
  9. package/dist/dts/react.d.ts +19 -19
  10. package/dist/dts/services/notify-route.service.d.ts +27 -0
  11. package/dist/dts/services/notify-route.service.d.ts.map +1 -0
  12. package/dist/esm/components/foundation-inbox/inbox-base/inbox-base.js +183 -0
  13. package/dist/esm/components/foundation-inbox/inbox.styles.js +27 -0
  14. package/dist/esm/components/foundation-inbox/inbox.template.js +35 -3
  15. package/dist/esm/components/foundation-inbox/inbox.utils.js +7 -0
  16. package/dist/esm/components/foundation-notification-dashboard/notification-dashboard.utils.js +1 -0
  17. package/dist/esm/services/notify-route.service.js +107 -0
  18. package/dist/pbc-notify-ui.d.ts +45 -0
  19. package/dist/react.cjs +10 -10
  20. package/dist/react.mjs +8 -8
  21. package/dist/tsconfig.tsbuildinfo +1 -1
  22. package/package.json +23 -23
  23. package/src/components/foundation-inbox/inbox-base/inbox-base.ts +206 -0
  24. package/src/components/foundation-inbox/inbox.styles.ts +27 -0
  25. package/src/components/foundation-inbox/inbox.template.ts +48 -3
  26. package/src/components/foundation-inbox/inbox.utils.ts +8 -0
  27. package/src/components/foundation-notification-dashboard/notification-dashboard.utils.ts +1 -0
  28. package/src/services/notify-route.service.ts +164 -0
@@ -299,6 +299,26 @@
299
299
  }
300
300
  ]
301
301
  },
302
+ {
303
+ "kind": "javascript-module",
304
+ "path": "src/services/notify-route.service.ts",
305
+ "declarations": [
306
+ {
307
+ "kind": "variable",
308
+ "name": "NotifyRouteService"
309
+ }
310
+ ],
311
+ "exports": [
312
+ {
313
+ "kind": "js",
314
+ "name": "NotifyRouteService",
315
+ "declaration": {
316
+ "name": "NotifyRouteService",
317
+ "module": "src/services/notify-route.service.ts"
318
+ }
319
+ }
320
+ ]
321
+ },
302
322
  {
303
323
  "kind": "javascript-module",
304
324
  "path": "src/services/notify.service.ts",
@@ -379,27 +399,6 @@
379
399
  }
380
400
  ]
381
401
  },
382
- {
383
- "kind": "javascript-module",
384
- "path": "src/styles/scrollbar.styles.ts",
385
- "declarations": [
386
- {
387
- "kind": "variable",
388
- "name": "scrollbarStyles",
389
- "default": "css`\n ::-webkit-scrollbar {\n width: calc((var(--base-height-multiplier) + var(--design-unit)) * 1px);\n }\n\n ::-webkit-scrollbar-track {\n background: var(--neutral-layer-1);\n }\n\n ::-webkit-scrollbar-thumb {\n background: var(--neutral-fill-rest);\n }\n`"
390
- }
391
- ],
392
- "exports": [
393
- {
394
- "kind": "js",
395
- "name": "scrollbarStyles",
396
- "declaration": {
397
- "name": "scrollbarStyles",
398
- "module": "src/styles/scrollbar.styles.ts"
399
- }
400
- }
401
- ]
402
- },
403
402
  {
404
403
  "kind": "javascript-module",
405
404
  "path": "src/utils/eventDetail.ts",
@@ -721,6 +720,27 @@
721
720
  }
722
721
  ]
723
722
  },
723
+ {
724
+ "kind": "javascript-module",
725
+ "path": "src/styles/scrollbar.styles.ts",
726
+ "declarations": [
727
+ {
728
+ "kind": "variable",
729
+ "name": "scrollbarStyles",
730
+ "default": "css`\n ::-webkit-scrollbar {\n width: calc((var(--base-height-multiplier) + var(--design-unit)) * 1px);\n }\n\n ::-webkit-scrollbar-track {\n background: var(--neutral-layer-1);\n }\n\n ::-webkit-scrollbar-thumb {\n background: var(--neutral-fill-rest);\n }\n`"
731
+ }
732
+ ],
733
+ "exports": [
734
+ {
735
+ "kind": "js",
736
+ "name": "scrollbarStyles",
737
+ "declaration": {
738
+ "name": "scrollbarStyles",
739
+ "module": "src/styles/scrollbar.styles.ts"
740
+ }
741
+ }
742
+ ]
743
+ },
724
744
  {
725
745
  "kind": "javascript-module",
726
746
  "path": "src/components/foundation-inbox/inbox.styles.ts",
@@ -748,7 +768,7 @@
748
768
  {
749
769
  "kind": "variable",
750
770
  "name": "ruleAndTemplate",
751
- "default": "css`\n .template {\n .template-row {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: calc(var(--design-unit) * 3px);\n }\n\n .template-details {\n flex: 1;\n min-width: 0;\n }\n\n .template-subscribe-toggle {\n flex-shrink: 0;\n margin-top: calc(var(--design-unit) * 1px);\n }\n\n .template-name {\n font-weight: 700;\n }\n\n .template-description {\n font-size: var(--type-ramp-minus-2-font-size);\n }\n\n .template-datetime {\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n }\n }\n\n .rule {\n cursor: pointer;\n\n .rule-name {\n font-weight: 700;\n }\n\n .rule-expression {\n font-size: var(--type-ramp-minus-2-font-size);\n }\n\n .rule-datetime {\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n }\n }\n\n .rule,\n .template {\n border-bottom: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n padding: calc(var(--design-unit) * 2px) calc(var(--design-unit) * 3px);\n }\n\n .template-subscribing {\n position: relative;\n z-index: 5;\n overflow: visible;\n padding-bottom: calc(var(--design-unit) * 24px);\n }\n\n .rule-status-actions {\n display: flex;\n flex-direction: row;\n gap: calc(var(--design-unit) * 2px);\n }\n\n .rule:hover {\n background-color: var(--neutral-layer-3);\n }\n\n .rule-actions {\n margin-left: auto;\n display: flex;\n gap: calc(var(--design-unit) * 3px);\n justify-content: space-between;\n visibility: hidden;\n }\n\n .rule:hover > .rule-status-actions > .rule-actions {\n visibility: visible;\n }\n\n .active {\n color: #7acc79;\n }\n\n .paused {\n color: #ffb660;\n }\n\n .rule-action-edit,\n .rule-action-enable-disable,\n .rule-action-delete {\n cursor: pointer;\n }\n\n .close-icon {\n position: absolute;\n right: calc(var(--design-unit) * 2px);\n cursor: pointer;\n }\n`"
771
+ "default": "css`\n .template {\n .template-row {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: calc(var(--design-unit) * 3px);\n }\n\n .template-details {\n flex: 1;\n min-width: 0;\n }\n\n .template-subscribe-toggle {\n flex-shrink: 0;\n margin-top: calc(var(--design-unit) * 1px);\n }\n\n .template-name {\n font-weight: 700;\n }\n\n .template-description {\n font-size: var(--type-ramp-minus-2-font-size);\n }\n\n .template-datetime {\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n }\n\n .channel-chip-row {\n display: flex;\n align-items: center;\n gap: calc(var(--design-unit) * 1px);\n margin-top: calc(var(--design-unit) * 1px);\n justify-content: flex-end;\n }\n\n .channel-chip {\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n border-radius: calc(var(--control-corner-radius) * 999px);\n font-size: var(--type-ramp-minus-2-font-size);\n\n &[appearance='selected'] {\n background-color: color-mix(in srgb, #7acc79, transparent 20%);\n color: #fff;\n border-color: transparent;\n }\n\n &[disabled] {\n opacity: 50%;\n background-color: var(--neutral-layer-3);\n color: var(--neutral-foreground-hint);\n cursor: not-allowed;\n }\n }\n }\n\n .rule {\n cursor: pointer;\n\n .rule-name {\n font-weight: 700;\n }\n\n .rule-expression {\n font-size: var(--type-ramp-minus-2-font-size);\n }\n\n .rule-datetime {\n font-size: var(--type-ramp-minus-1-font-size);\n color: var(--neutral-foreground-hint);\n }\n }\n\n .rule,\n .template {\n border-bottom: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n padding: calc(var(--design-unit) * 2px) calc(var(--design-unit) * 3px);\n }\n\n .template-subscribing {\n position: relative;\n z-index: 5;\n overflow: visible;\n padding-bottom: calc(var(--design-unit) * 24px);\n }\n\n .rule-status-actions {\n display: flex;\n flex-direction: row;\n gap: calc(var(--design-unit) * 2px);\n }\n\n .rule:hover {\n background-color: var(--neutral-layer-3);\n }\n\n .rule-actions {\n margin-left: auto;\n display: flex;\n gap: calc(var(--design-unit) * 3px);\n justify-content: space-between;\n visibility: hidden;\n }\n\n .rule:hover > .rule-status-actions > .rule-actions {\n visibility: visible;\n }\n\n .active {\n color: #7acc79;\n }\n\n .paused {\n color: #ffb660;\n }\n\n .rule-action-edit,\n .rule-action-enable-disable,\n .rule-action-delete {\n cursor: pointer;\n }\n\n .close-icon {\n position: absolute;\n right: calc(var(--design-unit) * 2px);\n cursor: pointer;\n }\n`"
752
772
  },
753
773
  {
754
774
  "kind": "variable",
@@ -815,7 +835,7 @@
815
835
  {
816
836
  "kind": "variable",
817
837
  "name": "FoundationInboxTemplate",
818
- "default": "html<FoundationInbox>`\n <div class=\"inbox-content\">\n <rapid-tabs ${ref('tabs')} appearance=\"secondary\" activeid=${(x) => InboxTab.ALERTS_NEW}>\n <rapid-tab\n slot=\"alert-log-tab\"\n id=${InboxTab.ALERTS_NEW}\n @click=${(x) => x.inboxTabChanged(InboxTab.ALERTS_NEW)}\n appearance=\"secondary\"\n >\n Alerts\n </rapid-tab>\n <rapid-tab\n slot=\"alert-log-tab\"\n id=${InboxTab.ALERT_HISTORY}\n @click=${(x) => x.inboxTabChanged(InboxTab.ALERT_HISTORY)}\n appearance=\"secondary\"\n >\n Alert History\n </rapid-tab>\n ${when(\n (x) => x.auth.currentUser?.hasPermission(NotifyPermission.NotificationRuleTemplateView),\n html`\n <rapid-tab\n slot=\"subscribe-tab\"\n id=${InboxTab.SUBSCRIBE}\n @click=${(x) => x.inboxTabChanged(InboxTab.SUBSCRIBE)}\n appearance=\"secondary\"\n >\n Subscribe\n </rapid-tab>\n `,\n )}\n\n <!-- Alerts -->\n ${(_) => alertsTab(InboxTab.ALERTS_NEW)} ${(_) => alertsTab(InboxTab.ALERT_HISTORY)}\n ${when(\n (x) => x.auth.currentUser?.hasPermission(NotifyPermission.NotificationRuleTemplateView),\n html`\n <rapid-tab-panel\n slot=\"subscribe-tab\"\n class=\"subscribe-tab-panel\"\n id=${InboxTab.SUBSCRIBE}\n style=${(x) => (x.selectedTab === InboxTab.SUBSCRIBE ? '' : 'display: none;')}\n >\n <div class=\"search\">\n <rapid-text-field\n class=\"search-input\"\n @input=${(x, c) => {\n x.searchSubscribe = (c.event.target as HTMLInputElement).value;\n x.filterSearchSubscribe();\n }}\n placeholder=\"Search Templates...\"\n autocomplete=\"off\"\n ></rapid-text-field>\n </div>\n <div class=\"subscribe-tab-content\">\n ${repeat(\n (x) => x.templatesFilter,\n html<RuleTemplate, FoundationInbox>`\n <div\n class=\"template ${(x, c) =>\n c.parent.pendingSubscribeTemplateId === x.ID ? 'template-subscribing' : ''}\"\n id=${(x) => x.ID}\n >\n <div class=\"template-row\">\n <div class=\"template-details\">\n <div class=\"template-name\">${(x) => x.NAME}</div>\n <div class=\"template-description\">${(x) => x.DESCRIPTION}</div>\n <div class=\"template-datetime\">\n ${(x, c) => getFormattedDate(x.DATETIME)}\n </div>\n </div>\n <rapid-switch\n class=\"template-subscribe-toggle\"\n :checked=${(x, c) => c.parent.isTemplateSubscribed(x)}\n @change=${(x, c) => c.parent.handleTemplateToggle(x, c.event as Event)}\n @click=${(_, c) => c.event.stopPropagation()}\n ></rapid-switch>\n </div>\n ${when(\n (x, c) => c.parent.pendingSubscribeTemplateId === x.ID,\n html`\n <inbox-subscription\n inline\n :template=${(x, c) => c.parent.ruleTemplateDetails}\n @templateSubscribed=${(x, c) =>\n c.parent.onTemplateSubscribed(eventDetail(c))}\n @subscribeCancelled=${(x, c) => c.parent.cancelPendingSubscribe()}\n ></inbox-subscription>\n `,\n )}\n </div>\n `,\n )}\n </div>\n </rapid-tab-panel>\n `,\n )}\n </rapid-tabs>\n </div>\n`",
838
+ "default": "html<FoundationInbox>`\n <div class=\"inbox-content\">\n <rapid-tabs ${ref('tabs')} appearance=\"secondary\" activeid=${(x) => InboxTab.ALERTS_NEW}>\n <rapid-tab\n slot=\"alert-log-tab\"\n id=${InboxTab.ALERTS_NEW}\n @click=${(x) => x.inboxTabChanged(InboxTab.ALERTS_NEW)}\n appearance=\"secondary\"\n >\n Alerts\n </rapid-tab>\n <rapid-tab\n slot=\"alert-log-tab\"\n id=${InboxTab.ALERT_HISTORY}\n @click=${(x) => x.inboxTabChanged(InboxTab.ALERT_HISTORY)}\n appearance=\"secondary\"\n >\n Alert History\n </rapid-tab>\n ${when(\n (x) => x.auth.currentUser?.hasPermission(NotifyPermission.NotificationRuleTemplateView),\n html`\n <rapid-tab\n slot=\"subscribe-tab\"\n id=${InboxTab.SUBSCRIBE}\n @click=${(x) => x.inboxTabChanged(InboxTab.SUBSCRIBE)}\n appearance=\"secondary\"\n >\n Subscribe\n </rapid-tab>\n `,\n )}\n\n <!-- Alerts -->\n ${(_) => alertsTab(InboxTab.ALERTS_NEW)} ${(_) => alertsTab(InboxTab.ALERT_HISTORY)}\n ${when(\n (x) => x.auth.currentUser?.hasPermission(NotifyPermission.NotificationRuleTemplateView),\n html`\n <rapid-tab-panel\n slot=\"subscribe-tab\"\n class=\"subscribe-tab-panel\"\n id=${InboxTab.SUBSCRIBE}\n style=${(x) => (x.selectedTab === InboxTab.SUBSCRIBE ? '' : 'display: none;')}\n >\n <div class=\"search\">\n <rapid-text-field\n class=\"search-input\"\n @input=${(x, c) => {\n x.searchSubscribe = (c.event.target as HTMLInputElement).value;\n x.filterSearchSubscribe();\n }}\n placeholder=\"Search Templates...\"\n autocomplete=\"off\"\n ></rapid-text-field>\n </div>\n <div class=\"subscribe-tab-content\">\n ${repeat(\n (x) => x.templatesFilter,\n html<RuleTemplate, FoundationInbox>`\n <div\n class=\"template ${(x, c) =>\n c.parent.pendingSubscribeTemplateId === x.ID ? 'template-subscribing' : ''}\"\n id=${(x) => x.ID}\n >\n <div class=\"template-row\">\n <div class=\"template-details\">\n <div class=\"template-name\">${(x) => x.NAME}</div>\n <div class=\"template-description\">${(x) => x.DESCRIPTION}</div>\n </div>\n <rapid-switch\n class=\"template-subscribe-toggle\"\n :checked=${(x, c) => c.parent.isTemplateSubscribed(x)}\n @change=${(x, c) => c.parent.handleTemplateToggle(x, c.event as Event)}\n @click=${(_, c) => c.event.stopPropagation()}\n ></rapid-switch>\n </div>\n ${when(\n (x, c) =>\n c.parent.auth.currentUser?.hasPermission(\n NotifyPermission.NotificationRouteView,\n ),\n html<RuleTemplate, FoundationInbox>`\n <div class=\"channel-chip-row\">\n ${when(\n (x, c) => c.parent.isChannelAvailable(x, 'popup'),\n html<RuleTemplate, FoundationInbox>`\n <rapid-button\n class=\"channel-chip\"\n appearance=${(x, c) =>\n c.parent.isChannelEnabled(x, 'popup') ? 'selected' : ''}\n ?disabled=${(x, c) =>\n !c.parent.isTemplateSubscribed(x) ||\n c.parent.isChannelTogglePending(x, 'popup')}\n @click=${(x, c) => {\n c.event.stopPropagation();\n c.parent.toggleChannel(x, 'popup');\n }}\n >\n Pop-up\n </rapid-button>\n `,\n )}\n ${when(\n (x, c) => c.parent.isChannelAvailable(x, 'email'),\n html<RuleTemplate, FoundationInbox>`\n <rapid-button\n class=\"channel-chip\"\n appearance=${(x, c) =>\n c.parent.isChannelEnabled(x, 'email') ? 'selected' : ''}\n ?disabled=${(x, c) =>\n !c.parent.isTemplateSubscribed(x) ||\n c.parent.isChannelTogglePending(x, 'email')}\n @click=${(x, c) => {\n c.event.stopPropagation();\n c.parent.toggleChannel(x, 'email');\n }}\n >\n Email\n </rapid-button>\n `,\n )}\n </div>\n `,\n )}\n ${when(\n (x, c) => c.parent.pendingSubscribeTemplateId === x.ID,\n html`\n <inbox-subscription\n inline\n :template=${(x, c) => c.parent.ruleTemplateDetails}\n @templateSubscribed=${(x, c) =>\n c.parent.onTemplateSubscribed(eventDetail(c))}\n @subscribeCancelled=${(x, c) => c.parent.cancelPendingSubscribe()}\n ></inbox-subscription>\n `,\n )}\n </div>\n `,\n )}\n </div>\n </rapid-tab-panel>\n `,\n )}\n </rapid-tabs>\n </div>\n`",
819
839
  "privacy": "public"
820
840
  }
821
841
  ],
@@ -996,6 +1016,66 @@
996
1016
  "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
997
1017
  }
998
1018
  },
1019
+ {
1020
+ "kind": "field",
1021
+ "name": "routeService",
1022
+ "type": {
1023
+ "text": "NotifyRouteService"
1024
+ },
1025
+ "inheritedFrom": {
1026
+ "name": "FoundationInboxBase",
1027
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1028
+ }
1029
+ },
1030
+ {
1031
+ "kind": "field",
1032
+ "name": "channelAvailability",
1033
+ "type": {
1034
+ "text": "Record<string, Record<NotifyChannel, boolean>>"
1035
+ },
1036
+ "default": "{}",
1037
+ "inheritedFrom": {
1038
+ "name": "FoundationInboxBase",
1039
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1040
+ }
1041
+ },
1042
+ {
1043
+ "kind": "field",
1044
+ "name": "userChannelRoutes",
1045
+ "type": {
1046
+ "text": "Record<string, Record<NotifyChannel, NotifyRoute | null>>"
1047
+ },
1048
+ "default": "{}",
1049
+ "inheritedFrom": {
1050
+ "name": "FoundationInboxBase",
1051
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1052
+ }
1053
+ },
1054
+ {
1055
+ "kind": "field",
1056
+ "name": "channelTogglePending",
1057
+ "type": {
1058
+ "text": "Record<string, Partial<Record<NotifyChannel, boolean>>>"
1059
+ },
1060
+ "default": "{}",
1061
+ "inheritedFrom": {
1062
+ "name": "FoundationInboxBase",
1063
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1064
+ }
1065
+ },
1066
+ {
1067
+ "kind": "field",
1068
+ "name": "channelRoutesQueryId",
1069
+ "type": {
1070
+ "text": "number"
1071
+ },
1072
+ "privacy": "private",
1073
+ "default": "0",
1074
+ "inheritedFrom": {
1075
+ "name": "FoundationInboxBase",
1076
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1077
+ }
1078
+ },
999
1079
  {
1000
1080
  "kind": "field",
1001
1081
  "name": "searchAlertLog",
@@ -1327,6 +1407,43 @@
1327
1407
  "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1328
1408
  }
1329
1409
  },
1410
+ {
1411
+ "kind": "method",
1412
+ "name": "refreshChannelRoutes",
1413
+ "privacy": "private",
1414
+ "inheritedFrom": {
1415
+ "name": "FoundationInboxBase",
1416
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1417
+ }
1418
+ },
1419
+ {
1420
+ "kind": "method",
1421
+ "name": "isOwnRoute",
1422
+ "privacy": "private",
1423
+ "return": {
1424
+ "type": {
1425
+ "text": "boolean"
1426
+ }
1427
+ },
1428
+ "parameters": [
1429
+ {
1430
+ "name": "route",
1431
+ "type": {
1432
+ "text": "NotifyRoute"
1433
+ }
1434
+ },
1435
+ {
1436
+ "name": "username",
1437
+ "type": {
1438
+ "text": "string"
1439
+ }
1440
+ }
1441
+ ],
1442
+ "inheritedFrom": {
1443
+ "name": "FoundationInboxBase",
1444
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1445
+ }
1446
+ },
1330
1447
  {
1331
1448
  "kind": "method",
1332
1449
  "name": "findSubscribedRule",
@@ -1371,7 +1488,12 @@
1371
1488
  },
1372
1489
  {
1373
1490
  "kind": "method",
1374
- "name": "handleTemplateToggle",
1491
+ "name": "isChannelAvailable",
1492
+ "return": {
1493
+ "type": {
1494
+ "text": "boolean"
1495
+ }
1496
+ },
1375
1497
  "parameters": [
1376
1498
  {
1377
1499
  "name": "template",
@@ -1380,9 +1502,9 @@
1380
1502
  }
1381
1503
  },
1382
1504
  {
1383
- "name": "event",
1505
+ "name": "channel",
1384
1506
  "type": {
1385
- "text": "Event"
1507
+ "text": "NotifyChannel"
1386
1508
  }
1387
1509
  }
1388
1510
  ],
@@ -1393,13 +1515,23 @@
1393
1515
  },
1394
1516
  {
1395
1517
  "kind": "method",
1396
- "name": "onTemplateSubscribed",
1518
+ "name": "isChannelEnabled",
1519
+ "return": {
1520
+ "type": {
1521
+ "text": "boolean"
1522
+ }
1523
+ },
1397
1524
  "parameters": [
1398
1525
  {
1399
- "name": "templateId",
1400
- "optional": true,
1526
+ "name": "template",
1401
1527
  "type": {
1402
- "text": "string"
1528
+ "text": "RuleTemplate"
1529
+ }
1530
+ },
1531
+ {
1532
+ "name": "channel",
1533
+ "type": {
1534
+ "text": "NotifyChannel"
1403
1535
  }
1404
1536
  }
1405
1537
  ],
@@ -1410,7 +1542,27 @@
1410
1542
  },
1411
1543
  {
1412
1544
  "kind": "method",
1413
- "name": "cancelPendingSubscribe",
1545
+ "name": "isLastEnabledChannel",
1546
+ "privacy": "private",
1547
+ "return": {
1548
+ "type": {
1549
+ "text": "boolean"
1550
+ }
1551
+ },
1552
+ "parameters": [
1553
+ {
1554
+ "name": "template",
1555
+ "type": {
1556
+ "text": "RuleTemplate"
1557
+ }
1558
+ },
1559
+ {
1560
+ "name": "channel",
1561
+ "type": {
1562
+ "text": "NotifyChannel"
1563
+ }
1564
+ }
1565
+ ],
1414
1566
  "inheritedFrom": {
1415
1567
  "name": "FoundationInboxBase",
1416
1568
  "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
@@ -1418,57 +1570,245 @@
1418
1570
  },
1419
1571
  {
1420
1572
  "kind": "method",
1421
- "name": "formatDateStrForMatchCriteria",
1573
+ "name": "isChannelTogglePending",
1574
+ "return": {
1575
+ "type": {
1576
+ "text": "boolean"
1577
+ }
1578
+ },
1422
1579
  "parameters": [
1423
1580
  {
1424
- "name": "date",
1425
- "optional": true,
1581
+ "name": "template",
1582
+ "type": {
1583
+ "text": "RuleTemplate"
1584
+ }
1585
+ },
1586
+ {
1587
+ "name": "channel",
1588
+ "type": {
1589
+ "text": "NotifyChannel"
1590
+ }
1591
+ }
1592
+ ],
1593
+ "inheritedFrom": {
1594
+ "name": "FoundationInboxBase",
1595
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1596
+ }
1597
+ },
1598
+ {
1599
+ "kind": "method",
1600
+ "name": "setChannelRoute",
1601
+ "privacy": "private",
1602
+ "parameters": [
1603
+ {
1604
+ "name": "templateId",
1426
1605
  "type": {
1427
1606
  "text": "string"
1428
1607
  }
1608
+ },
1609
+ {
1610
+ "name": "channel",
1611
+ "type": {
1612
+ "text": "NotifyChannel"
1613
+ }
1614
+ },
1615
+ {
1616
+ "name": "route",
1617
+ "type": {
1618
+ "text": "NotifyRoute | null"
1619
+ }
1429
1620
  }
1430
1621
  ],
1431
1622
  "inheritedFrom": {
1432
1623
  "name": "FoundationInboxBase",
1433
1624
  "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1434
1625
  }
1435
- }
1436
- ]
1437
- }
1438
- ],
1439
- "exports": [
1440
- {
1441
- "kind": "js",
1442
- "name": "FoundationInbox",
1443
- "declaration": {
1444
- "name": "FoundationInbox",
1445
- "module": "src/components/foundation-inbox/inbox.ts"
1446
- }
1447
- },
1448
- {
1449
- "kind": "custom-element-definition",
1450
- "name": "foundation-inbox",
1451
- "declaration": {
1452
- "name": "FoundationInbox",
1453
- "module": "src/components/foundation-inbox/inbox.ts"
1454
- }
1455
- }
1456
- ]
1457
- },
1458
- {
1459
- "kind": "javascript-module",
1460
- "path": "src/components/foundation-inbox/inbox.types.ts",
1461
- "declarations": [],
1462
- "exports": []
1463
- },
1464
- {
1465
- "kind": "javascript-module",
1466
- "path": "src/components/foundation-inbox/inbox.utils.ts",
1467
- "declarations": [
1468
- {
1469
- "kind": "function",
1470
- "name": "getFormattedDate",
1471
- "parameters": [
1626
+ },
1627
+ {
1628
+ "kind": "method",
1629
+ "name": "setChannelTogglePending",
1630
+ "privacy": "private",
1631
+ "parameters": [
1632
+ {
1633
+ "name": "templateId",
1634
+ "type": {
1635
+ "text": "string"
1636
+ }
1637
+ },
1638
+ {
1639
+ "name": "channel",
1640
+ "type": {
1641
+ "text": "NotifyChannel"
1642
+ }
1643
+ },
1644
+ {
1645
+ "name": "pending",
1646
+ "type": {
1647
+ "text": "boolean"
1648
+ }
1649
+ }
1650
+ ],
1651
+ "inheritedFrom": {
1652
+ "name": "FoundationInboxBase",
1653
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1654
+ }
1655
+ },
1656
+ {
1657
+ "kind": "method",
1658
+ "name": "toggleChannel",
1659
+ "parameters": [
1660
+ {
1661
+ "name": "template",
1662
+ "type": {
1663
+ "text": "RuleTemplate"
1664
+ }
1665
+ },
1666
+ {
1667
+ "name": "channel",
1668
+ "type": {
1669
+ "text": "NotifyChannel"
1670
+ }
1671
+ }
1672
+ ],
1673
+ "inheritedFrom": {
1674
+ "name": "FoundationInboxBase",
1675
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1676
+ }
1677
+ },
1678
+ {
1679
+ "kind": "method",
1680
+ "name": "handleTemplateToggle",
1681
+ "parameters": [
1682
+ {
1683
+ "name": "template",
1684
+ "type": {
1685
+ "text": "RuleTemplate"
1686
+ }
1687
+ },
1688
+ {
1689
+ "name": "event",
1690
+ "type": {
1691
+ "text": "Event"
1692
+ }
1693
+ }
1694
+ ],
1695
+ "inheritedFrom": {
1696
+ "name": "FoundationInboxBase",
1697
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1698
+ }
1699
+ },
1700
+ {
1701
+ "kind": "method",
1702
+ "name": "onTemplateSubscribed",
1703
+ "parameters": [
1704
+ {
1705
+ "name": "templateId",
1706
+ "optional": true,
1707
+ "type": {
1708
+ "text": "string"
1709
+ }
1710
+ }
1711
+ ],
1712
+ "inheritedFrom": {
1713
+ "name": "FoundationInboxBase",
1714
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1715
+ }
1716
+ },
1717
+ {
1718
+ "kind": "method",
1719
+ "name": "ensureDefaultChannel",
1720
+ "privacy": "private",
1721
+ "parameters": [
1722
+ {
1723
+ "name": "template",
1724
+ "type": {
1725
+ "text": "RuleTemplate"
1726
+ }
1727
+ }
1728
+ ],
1729
+ "inheritedFrom": {
1730
+ "name": "FoundationInboxBase",
1731
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1732
+ }
1733
+ },
1734
+ {
1735
+ "kind": "method",
1736
+ "name": "cancelPendingSubscribe",
1737
+ "inheritedFrom": {
1738
+ "name": "FoundationInboxBase",
1739
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1740
+ }
1741
+ },
1742
+ {
1743
+ "kind": "method",
1744
+ "name": "formatDateStrForMatchCriteria",
1745
+ "parameters": [
1746
+ {
1747
+ "name": "date",
1748
+ "optional": true,
1749
+ "type": {
1750
+ "text": "string"
1751
+ }
1752
+ }
1753
+ ],
1754
+ "inheritedFrom": {
1755
+ "name": "FoundationInboxBase",
1756
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
1757
+ }
1758
+ }
1759
+ ]
1760
+ }
1761
+ ],
1762
+ "exports": [
1763
+ {
1764
+ "kind": "js",
1765
+ "name": "FoundationInbox",
1766
+ "declaration": {
1767
+ "name": "FoundationInbox",
1768
+ "module": "src/components/foundation-inbox/inbox.ts"
1769
+ }
1770
+ },
1771
+ {
1772
+ "kind": "custom-element-definition",
1773
+ "name": "foundation-inbox",
1774
+ "declaration": {
1775
+ "name": "FoundationInbox",
1776
+ "module": "src/components/foundation-inbox/inbox.ts"
1777
+ }
1778
+ }
1779
+ ]
1780
+ },
1781
+ {
1782
+ "kind": "javascript-module",
1783
+ "path": "src/components/foundation-inbox/inbox.types.ts",
1784
+ "declarations": [],
1785
+ "exports": []
1786
+ },
1787
+ {
1788
+ "kind": "javascript-module",
1789
+ "path": "src/components/foundation-inbox/inbox.utils.ts",
1790
+ "declarations": [
1791
+ {
1792
+ "kind": "function",
1793
+ "name": "extractTopic",
1794
+ "return": {
1795
+ "type": {
1796
+ "text": "string | null"
1797
+ }
1798
+ },
1799
+ "parameters": [
1800
+ {
1801
+ "name": "resultExpression",
1802
+ "type": {
1803
+ "text": "string"
1804
+ }
1805
+ }
1806
+ ]
1807
+ },
1808
+ {
1809
+ "kind": "function",
1810
+ "name": "getFormattedDate",
1811
+ "parameters": [
1472
1812
  {
1473
1813
  "name": "dateTimeInMills"
1474
1814
  }
@@ -1488,6 +1828,14 @@
1488
1828
  }
1489
1829
  ],
1490
1830
  "exports": [
1831
+ {
1832
+ "kind": "js",
1833
+ "name": "extractTopic",
1834
+ "declaration": {
1835
+ "name": "extractTopic",
1836
+ "module": "src/components/foundation-inbox/inbox.utils.ts"
1837
+ }
1838
+ },
1491
1839
  {
1492
1840
  "kind": "js",
1493
1841
  "name": "getFormattedDate",
@@ -2204,6 +2552,46 @@
2204
2552
  },
2205
2553
  "default": "[]"
2206
2554
  },
2555
+ {
2556
+ "kind": "field",
2557
+ "name": "routeService",
2558
+ "type": {
2559
+ "text": "NotifyRouteService"
2560
+ }
2561
+ },
2562
+ {
2563
+ "kind": "field",
2564
+ "name": "channelAvailability",
2565
+ "type": {
2566
+ "text": "Record<string, Record<NotifyChannel, boolean>>"
2567
+ },
2568
+ "default": "{}"
2569
+ },
2570
+ {
2571
+ "kind": "field",
2572
+ "name": "userChannelRoutes",
2573
+ "type": {
2574
+ "text": "Record<string, Record<NotifyChannel, NotifyRoute | null>>"
2575
+ },
2576
+ "default": "{}"
2577
+ },
2578
+ {
2579
+ "kind": "field",
2580
+ "name": "channelTogglePending",
2581
+ "type": {
2582
+ "text": "Record<string, Partial<Record<NotifyChannel, boolean>>>"
2583
+ },
2584
+ "default": "{}"
2585
+ },
2586
+ {
2587
+ "kind": "field",
2588
+ "name": "channelRoutesQueryId",
2589
+ "type": {
2590
+ "text": "number"
2591
+ },
2592
+ "privacy": "private",
2593
+ "default": "0"
2594
+ },
2207
2595
  {
2208
2596
  "kind": "field",
2209
2597
  "name": "searchAlertLog",
@@ -2411,6 +2799,35 @@
2411
2799
  "kind": "method",
2412
2800
  "name": "refreshSubscribeData"
2413
2801
  },
2802
+ {
2803
+ "kind": "method",
2804
+ "name": "refreshChannelRoutes",
2805
+ "privacy": "private"
2806
+ },
2807
+ {
2808
+ "kind": "method",
2809
+ "name": "isOwnRoute",
2810
+ "privacy": "private",
2811
+ "return": {
2812
+ "type": {
2813
+ "text": "boolean"
2814
+ }
2815
+ },
2816
+ "parameters": [
2817
+ {
2818
+ "name": "route",
2819
+ "type": {
2820
+ "text": "NotifyRoute"
2821
+ }
2822
+ },
2823
+ {
2824
+ "name": "username",
2825
+ "type": {
2826
+ "text": "string"
2827
+ }
2828
+ }
2829
+ ]
2830
+ },
2414
2831
  {
2415
2832
  "kind": "method",
2416
2833
  "name": "findSubscribedRule",
@@ -2447,7 +2864,12 @@
2447
2864
  },
2448
2865
  {
2449
2866
  "kind": "method",
2450
- "name": "handleTemplateToggle",
2867
+ "name": "isChannelAvailable",
2868
+ "return": {
2869
+ "type": {
2870
+ "text": "boolean"
2871
+ }
2872
+ },
2451
2873
  "parameters": [
2452
2874
  {
2453
2875
  "name": "template",
@@ -2456,25 +2878,194 @@
2456
2878
  }
2457
2879
  },
2458
2880
  {
2459
- "name": "event",
2881
+ "name": "channel",
2460
2882
  "type": {
2461
- "text": "Event"
2883
+ "text": "NotifyChannel"
2462
2884
  }
2463
2885
  }
2464
2886
  ]
2465
2887
  },
2466
2888
  {
2467
2889
  "kind": "method",
2468
- "name": "onTemplateSubscribed",
2890
+ "name": "isChannelEnabled",
2891
+ "return": {
2892
+ "type": {
2893
+ "text": "boolean"
2894
+ }
2895
+ },
2469
2896
  "parameters": [
2470
2897
  {
2471
- "name": "templateId",
2472
- "optional": true,
2898
+ "name": "template",
2473
2899
  "type": {
2474
- "text": "string"
2900
+ "text": "RuleTemplate"
2475
2901
  }
2476
- }
2477
- ]
2902
+ },
2903
+ {
2904
+ "name": "channel",
2905
+ "type": {
2906
+ "text": "NotifyChannel"
2907
+ }
2908
+ }
2909
+ ]
2910
+ },
2911
+ {
2912
+ "kind": "method",
2913
+ "name": "isLastEnabledChannel",
2914
+ "privacy": "private",
2915
+ "return": {
2916
+ "type": {
2917
+ "text": "boolean"
2918
+ }
2919
+ },
2920
+ "parameters": [
2921
+ {
2922
+ "name": "template",
2923
+ "type": {
2924
+ "text": "RuleTemplate"
2925
+ }
2926
+ },
2927
+ {
2928
+ "name": "channel",
2929
+ "type": {
2930
+ "text": "NotifyChannel"
2931
+ }
2932
+ }
2933
+ ]
2934
+ },
2935
+ {
2936
+ "kind": "method",
2937
+ "name": "isChannelTogglePending",
2938
+ "return": {
2939
+ "type": {
2940
+ "text": "boolean"
2941
+ }
2942
+ },
2943
+ "parameters": [
2944
+ {
2945
+ "name": "template",
2946
+ "type": {
2947
+ "text": "RuleTemplate"
2948
+ }
2949
+ },
2950
+ {
2951
+ "name": "channel",
2952
+ "type": {
2953
+ "text": "NotifyChannel"
2954
+ }
2955
+ }
2956
+ ]
2957
+ },
2958
+ {
2959
+ "kind": "method",
2960
+ "name": "setChannelRoute",
2961
+ "privacy": "private",
2962
+ "parameters": [
2963
+ {
2964
+ "name": "templateId",
2965
+ "type": {
2966
+ "text": "string"
2967
+ }
2968
+ },
2969
+ {
2970
+ "name": "channel",
2971
+ "type": {
2972
+ "text": "NotifyChannel"
2973
+ }
2974
+ },
2975
+ {
2976
+ "name": "route",
2977
+ "type": {
2978
+ "text": "NotifyRoute | null"
2979
+ }
2980
+ }
2981
+ ]
2982
+ },
2983
+ {
2984
+ "kind": "method",
2985
+ "name": "setChannelTogglePending",
2986
+ "privacy": "private",
2987
+ "parameters": [
2988
+ {
2989
+ "name": "templateId",
2990
+ "type": {
2991
+ "text": "string"
2992
+ }
2993
+ },
2994
+ {
2995
+ "name": "channel",
2996
+ "type": {
2997
+ "text": "NotifyChannel"
2998
+ }
2999
+ },
3000
+ {
3001
+ "name": "pending",
3002
+ "type": {
3003
+ "text": "boolean"
3004
+ }
3005
+ }
3006
+ ]
3007
+ },
3008
+ {
3009
+ "kind": "method",
3010
+ "name": "toggleChannel",
3011
+ "parameters": [
3012
+ {
3013
+ "name": "template",
3014
+ "type": {
3015
+ "text": "RuleTemplate"
3016
+ }
3017
+ },
3018
+ {
3019
+ "name": "channel",
3020
+ "type": {
3021
+ "text": "NotifyChannel"
3022
+ }
3023
+ }
3024
+ ]
3025
+ },
3026
+ {
3027
+ "kind": "method",
3028
+ "name": "handleTemplateToggle",
3029
+ "parameters": [
3030
+ {
3031
+ "name": "template",
3032
+ "type": {
3033
+ "text": "RuleTemplate"
3034
+ }
3035
+ },
3036
+ {
3037
+ "name": "event",
3038
+ "type": {
3039
+ "text": "Event"
3040
+ }
3041
+ }
3042
+ ]
3043
+ },
3044
+ {
3045
+ "kind": "method",
3046
+ "name": "onTemplateSubscribed",
3047
+ "parameters": [
3048
+ {
3049
+ "name": "templateId",
3050
+ "optional": true,
3051
+ "type": {
3052
+ "text": "string"
3053
+ }
3054
+ }
3055
+ ]
3056
+ },
3057
+ {
3058
+ "kind": "method",
3059
+ "name": "ensureDefaultChannel",
3060
+ "privacy": "private",
3061
+ "parameters": [
3062
+ {
3063
+ "name": "template",
3064
+ "type": {
3065
+ "text": "RuleTemplate"
3066
+ }
3067
+ }
3068
+ ]
2478
3069
  },
2479
3070
  {
2480
3071
  "kind": "method",
@@ -3582,6 +4173,66 @@
3582
4173
  "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
3583
4174
  }
3584
4175
  },
4176
+ {
4177
+ "kind": "field",
4178
+ "name": "routeService",
4179
+ "type": {
4180
+ "text": "NotifyRouteService"
4181
+ },
4182
+ "inheritedFrom": {
4183
+ "name": "FoundationInboxBase",
4184
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4185
+ }
4186
+ },
4187
+ {
4188
+ "kind": "field",
4189
+ "name": "channelAvailability",
4190
+ "type": {
4191
+ "text": "Record<string, Record<NotifyChannel, boolean>>"
4192
+ },
4193
+ "default": "{}",
4194
+ "inheritedFrom": {
4195
+ "name": "FoundationInboxBase",
4196
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4197
+ }
4198
+ },
4199
+ {
4200
+ "kind": "field",
4201
+ "name": "userChannelRoutes",
4202
+ "type": {
4203
+ "text": "Record<string, Record<NotifyChannel, NotifyRoute | null>>"
4204
+ },
4205
+ "default": "{}",
4206
+ "inheritedFrom": {
4207
+ "name": "FoundationInboxBase",
4208
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4209
+ }
4210
+ },
4211
+ {
4212
+ "kind": "field",
4213
+ "name": "channelTogglePending",
4214
+ "type": {
4215
+ "text": "Record<string, Partial<Record<NotifyChannel, boolean>>>"
4216
+ },
4217
+ "default": "{}",
4218
+ "inheritedFrom": {
4219
+ "name": "FoundationInboxBase",
4220
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4221
+ }
4222
+ },
4223
+ {
4224
+ "kind": "field",
4225
+ "name": "channelRoutesQueryId",
4226
+ "type": {
4227
+ "text": "number"
4228
+ },
4229
+ "privacy": "private",
4230
+ "default": "0",
4231
+ "inheritedFrom": {
4232
+ "name": "FoundationInboxBase",
4233
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4234
+ }
4235
+ },
3585
4236
  {
3586
4237
  "kind": "field",
3587
4238
  "name": "searchAlertLog",
@@ -3913,6 +4564,43 @@
3913
4564
  "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
3914
4565
  }
3915
4566
  },
4567
+ {
4568
+ "kind": "method",
4569
+ "name": "refreshChannelRoutes",
4570
+ "privacy": "private",
4571
+ "inheritedFrom": {
4572
+ "name": "FoundationInboxBase",
4573
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4574
+ }
4575
+ },
4576
+ {
4577
+ "kind": "method",
4578
+ "name": "isOwnRoute",
4579
+ "privacy": "private",
4580
+ "return": {
4581
+ "type": {
4582
+ "text": "boolean"
4583
+ }
4584
+ },
4585
+ "parameters": [
4586
+ {
4587
+ "name": "route",
4588
+ "type": {
4589
+ "text": "NotifyRoute"
4590
+ }
4591
+ },
4592
+ {
4593
+ "name": "username",
4594
+ "type": {
4595
+ "text": "string"
4596
+ }
4597
+ }
4598
+ ],
4599
+ "inheritedFrom": {
4600
+ "name": "FoundationInboxBase",
4601
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4602
+ }
4603
+ },
3916
4604
  {
3917
4605
  "kind": "method",
3918
4606
  "name": "findSubscribedRule",
@@ -3957,7 +4645,12 @@
3957
4645
  },
3958
4646
  {
3959
4647
  "kind": "method",
3960
- "name": "handleTemplateToggle",
4648
+ "name": "isChannelAvailable",
4649
+ "return": {
4650
+ "type": {
4651
+ "text": "boolean"
4652
+ }
4653
+ },
3961
4654
  "parameters": [
3962
4655
  {
3963
4656
  "name": "template",
@@ -3966,9 +4659,9 @@
3966
4659
  }
3967
4660
  },
3968
4661
  {
3969
- "name": "event",
4662
+ "name": "channel",
3970
4663
  "type": {
3971
- "text": "Event"
4664
+ "text": "NotifyChannel"
3972
4665
  }
3973
4666
  }
3974
4667
  ],
@@ -3979,13 +4672,23 @@
3979
4672
  },
3980
4673
  {
3981
4674
  "kind": "method",
3982
- "name": "onTemplateSubscribed",
4675
+ "name": "isChannelEnabled",
4676
+ "return": {
4677
+ "type": {
4678
+ "text": "boolean"
4679
+ }
4680
+ },
3983
4681
  "parameters": [
3984
4682
  {
3985
- "name": "templateId",
3986
- "optional": true,
4683
+ "name": "template",
3987
4684
  "type": {
3988
- "text": "string"
4685
+ "text": "RuleTemplate"
4686
+ }
4687
+ },
4688
+ {
4689
+ "name": "channel",
4690
+ "type": {
4691
+ "text": "NotifyChannel"
3989
4692
  }
3990
4693
  }
3991
4694
  ],
@@ -3996,11 +4699,202 @@
3996
4699
  },
3997
4700
  {
3998
4701
  "kind": "method",
3999
- "name": "cancelPendingSubscribe",
4000
- "inheritedFrom": {
4001
- "name": "FoundationInboxBase",
4002
- "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4003
- }
4702
+ "name": "isLastEnabledChannel",
4703
+ "privacy": "private",
4704
+ "return": {
4705
+ "type": {
4706
+ "text": "boolean"
4707
+ }
4708
+ },
4709
+ "parameters": [
4710
+ {
4711
+ "name": "template",
4712
+ "type": {
4713
+ "text": "RuleTemplate"
4714
+ }
4715
+ },
4716
+ {
4717
+ "name": "channel",
4718
+ "type": {
4719
+ "text": "NotifyChannel"
4720
+ }
4721
+ }
4722
+ ],
4723
+ "inheritedFrom": {
4724
+ "name": "FoundationInboxBase",
4725
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4726
+ }
4727
+ },
4728
+ {
4729
+ "kind": "method",
4730
+ "name": "isChannelTogglePending",
4731
+ "return": {
4732
+ "type": {
4733
+ "text": "boolean"
4734
+ }
4735
+ },
4736
+ "parameters": [
4737
+ {
4738
+ "name": "template",
4739
+ "type": {
4740
+ "text": "RuleTemplate"
4741
+ }
4742
+ },
4743
+ {
4744
+ "name": "channel",
4745
+ "type": {
4746
+ "text": "NotifyChannel"
4747
+ }
4748
+ }
4749
+ ],
4750
+ "inheritedFrom": {
4751
+ "name": "FoundationInboxBase",
4752
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4753
+ }
4754
+ },
4755
+ {
4756
+ "kind": "method",
4757
+ "name": "setChannelRoute",
4758
+ "privacy": "private",
4759
+ "parameters": [
4760
+ {
4761
+ "name": "templateId",
4762
+ "type": {
4763
+ "text": "string"
4764
+ }
4765
+ },
4766
+ {
4767
+ "name": "channel",
4768
+ "type": {
4769
+ "text": "NotifyChannel"
4770
+ }
4771
+ },
4772
+ {
4773
+ "name": "route",
4774
+ "type": {
4775
+ "text": "NotifyRoute | null"
4776
+ }
4777
+ }
4778
+ ],
4779
+ "inheritedFrom": {
4780
+ "name": "FoundationInboxBase",
4781
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4782
+ }
4783
+ },
4784
+ {
4785
+ "kind": "method",
4786
+ "name": "setChannelTogglePending",
4787
+ "privacy": "private",
4788
+ "parameters": [
4789
+ {
4790
+ "name": "templateId",
4791
+ "type": {
4792
+ "text": "string"
4793
+ }
4794
+ },
4795
+ {
4796
+ "name": "channel",
4797
+ "type": {
4798
+ "text": "NotifyChannel"
4799
+ }
4800
+ },
4801
+ {
4802
+ "name": "pending",
4803
+ "type": {
4804
+ "text": "boolean"
4805
+ }
4806
+ }
4807
+ ],
4808
+ "inheritedFrom": {
4809
+ "name": "FoundationInboxBase",
4810
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4811
+ }
4812
+ },
4813
+ {
4814
+ "kind": "method",
4815
+ "name": "toggleChannel",
4816
+ "parameters": [
4817
+ {
4818
+ "name": "template",
4819
+ "type": {
4820
+ "text": "RuleTemplate"
4821
+ }
4822
+ },
4823
+ {
4824
+ "name": "channel",
4825
+ "type": {
4826
+ "text": "NotifyChannel"
4827
+ }
4828
+ }
4829
+ ],
4830
+ "inheritedFrom": {
4831
+ "name": "FoundationInboxBase",
4832
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4833
+ }
4834
+ },
4835
+ {
4836
+ "kind": "method",
4837
+ "name": "handleTemplateToggle",
4838
+ "parameters": [
4839
+ {
4840
+ "name": "template",
4841
+ "type": {
4842
+ "text": "RuleTemplate"
4843
+ }
4844
+ },
4845
+ {
4846
+ "name": "event",
4847
+ "type": {
4848
+ "text": "Event"
4849
+ }
4850
+ }
4851
+ ],
4852
+ "inheritedFrom": {
4853
+ "name": "FoundationInboxBase",
4854
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4855
+ }
4856
+ },
4857
+ {
4858
+ "kind": "method",
4859
+ "name": "onTemplateSubscribed",
4860
+ "parameters": [
4861
+ {
4862
+ "name": "templateId",
4863
+ "optional": true,
4864
+ "type": {
4865
+ "text": "string"
4866
+ }
4867
+ }
4868
+ ],
4869
+ "inheritedFrom": {
4870
+ "name": "FoundationInboxBase",
4871
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4872
+ }
4873
+ },
4874
+ {
4875
+ "kind": "method",
4876
+ "name": "ensureDefaultChannel",
4877
+ "privacy": "private",
4878
+ "parameters": [
4879
+ {
4880
+ "name": "template",
4881
+ "type": {
4882
+ "text": "RuleTemplate"
4883
+ }
4884
+ }
4885
+ ],
4886
+ "inheritedFrom": {
4887
+ "name": "FoundationInboxBase",
4888
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4889
+ }
4890
+ },
4891
+ {
4892
+ "kind": "method",
4893
+ "name": "cancelPendingSubscribe",
4894
+ "inheritedFrom": {
4895
+ "name": "FoundationInboxBase",
4896
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
4897
+ }
4004
4898
  },
4005
4899
  {
4006
4900
  "kind": "method",
@@ -4263,70 +5157,70 @@
4263
5157
  },
4264
5158
  {
4265
5159
  "kind": "javascript-module",
4266
- "path": "src/components/foundation-notification-dashboard/components/notify-audit/notify-audit-management.ts",
5160
+ "path": "src/components/foundation-notification-dashboard/components/routes/route-management.ts",
4267
5161
  "declarations": [
4268
5162
  {
4269
5163
  "kind": "class",
4270
5164
  "description": "",
4271
- "name": "NotifyAuditManagement",
5165
+ "name": "RouteManagement",
4272
5166
  "superclass": {
4273
5167
  "name": "GenesisElement",
4274
5168
  "package": "@genesislcap/web-core"
4275
5169
  },
4276
- "tagName": "notify-audit-management",
5170
+ "tagName": "route-management",
4277
5171
  "customElement": true
4278
5172
  }
4279
5173
  ],
4280
5174
  "exports": [
4281
5175
  {
4282
5176
  "kind": "js",
4283
- "name": "NotifyAuditManagement",
5177
+ "name": "RouteManagement",
4284
5178
  "declaration": {
4285
- "name": "NotifyAuditManagement",
4286
- "module": "src/components/foundation-notification-dashboard/components/notify-audit/notify-audit-management.ts"
5179
+ "name": "RouteManagement",
5180
+ "module": "src/components/foundation-notification-dashboard/components/routes/route-management.ts"
4287
5181
  }
4288
5182
  },
4289
5183
  {
4290
5184
  "kind": "custom-element-definition",
4291
- "name": "notify-audit-management",
5185
+ "name": "route-management",
4292
5186
  "declaration": {
4293
- "name": "NotifyAuditManagement",
4294
- "module": "src/components/foundation-notification-dashboard/components/notify-audit/notify-audit-management.ts"
5187
+ "name": "RouteManagement",
5188
+ "module": "src/components/foundation-notification-dashboard/components/routes/route-management.ts"
4295
5189
  }
4296
5190
  }
4297
5191
  ]
4298
5192
  },
4299
5193
  {
4300
5194
  "kind": "javascript-module",
4301
- "path": "src/components/foundation-notification-dashboard/components/routes/route-management.ts",
5195
+ "path": "src/components/foundation-notification-dashboard/components/notify-audit/notify-audit-management.ts",
4302
5196
  "declarations": [
4303
5197
  {
4304
5198
  "kind": "class",
4305
5199
  "description": "",
4306
- "name": "RouteManagement",
5200
+ "name": "NotifyAuditManagement",
4307
5201
  "superclass": {
4308
5202
  "name": "GenesisElement",
4309
5203
  "package": "@genesislcap/web-core"
4310
5204
  },
4311
- "tagName": "route-management",
5205
+ "tagName": "notify-audit-management",
4312
5206
  "customElement": true
4313
5207
  }
4314
5208
  ],
4315
5209
  "exports": [
4316
5210
  {
4317
5211
  "kind": "js",
4318
- "name": "RouteManagement",
5212
+ "name": "NotifyAuditManagement",
4319
5213
  "declaration": {
4320
- "name": "RouteManagement",
4321
- "module": "src/components/foundation-notification-dashboard/components/routes/route-management.ts"
5214
+ "name": "NotifyAuditManagement",
5215
+ "module": "src/components/foundation-notification-dashboard/components/notify-audit/notify-audit-management.ts"
4322
5216
  }
4323
5217
  },
4324
5218
  {
4325
5219
  "kind": "custom-element-definition",
4326
- "name": "route-management",
5220
+ "name": "notify-audit-management",
4327
5221
  "declaration": {
4328
- "name": "RouteManagement",
4329
- "module": "src/components/foundation-notification-dashboard/components/routes/route-management.ts"
5222
+ "name": "NotifyAuditManagement",
5223
+ "module": "src/components/foundation-notification-dashboard/components/notify-audit/notify-audit-management.ts"
4330
5224
  }
4331
5225
  }
4332
5226
  ]
@@ -5668,39 +6562,39 @@
5668
6562
  },
5669
6563
  {
5670
6564
  "kind": "javascript-module",
5671
- "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.template.ts",
6565
+ "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.template.ts",
5672
6566
  "declarations": [
5673
6567
  {
5674
6568
  "kind": "variable",
5675
- "name": "RuleConditionGroupTemplate",
5676
- "default": "html<RuleConditionGroup>`\n ${when(\n (x) => !x.isFirst,\n html`\n <div class=\"join-toggle-row\">\n <div class=\"join-toggle\">\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'AND'])}\"\n @click=${(x) => (x.joinOperator = 'AND')}\n >\n AND\n </span>\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'OR'])}\"\n @click=${(x) => (x.joinOperator = 'OR')}\n >\n OR\n </span>\n </div>\n </div>\n `,\n )}\n <div class=\"condition-group-row\">\n <div class=\"condition-group-box\">\n ${repeat(\n (x) => x.groupChildren,\n html<ConditionNode, RuleConditionGroup>`\n ${when(\n (x) => isGroup(x),\n html<ConditionNode>`\n <rule-condition-group\n :fields=${(x, c) => c.parent.fields}\n :node=${(x) => x}\n :isFirst=${(x, c) => c.index === 0}\n @edit=${(x, c) => c.parent.editChild(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteChild(eventDetail(c))}\n ></rule-condition-group>\n `,\n )}\n ${when(\n (x) => !isGroup(x),\n html<ConditionNode>`\n <rule-condition-builder\n :fields=${(x, c) => c.parent.fields}\n :condition=${(x) => x}\n :isFirst=${(x, c) => c.index === 0}\n @edit=${(x, c) => c.parent.editChild(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteChild(eventDetail(c))}\n ></rule-condition-builder>\n `,\n )}\n `,\n { positioning: true },\n )}\n\n <div class=\"content-row\">\n <rapid-button appearance=\"lightweight\" @click=${(x) => x.newCondition()}>\n + Condition\n </rapid-button>\n <rapid-button appearance=\"lightweight\" @click=${(x) => x.newGroup()}>+ Group</rapid-button>\n <rapid-button appearance=\"icon\" class=\"delete-group\" @click=${(x) => x.deleteSelf()}>\n <rapid-icon variant=\"regular\" name=\"trash-alt\" size=\"lg\" part=\"icon\"></rapid-icon>\n </rapid-button>\n </div>\n </div>\n </div>\n`"
6569
+ "name": "RuleConditionBuilderTemplate",
6570
+ "default": "html<RuleConditionBuilder>`\n ${when(\n (x) => !x.isFirst,\n html`\n <div class=\"join-toggle-row\">\n <div class=\"join-toggle\">\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'AND'])}\"\n @click=${(x) => (x.joinOperator = 'AND')}\n >\n AND\n </span>\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'OR'])}\"\n @click=${(x) => (x.joinOperator = 'OR')}\n >\n OR\n </span>\n </div>\n </div>\n `,\n )}\n <div class=\"condition-builder\">\n <rapid-select\n :value=${sync((x) => x.leftValue)}\n :initialValue=${sync((x) => x.leftValue)}\n title=${(x) => (x.leftValue ? JSON.parse(x.leftValue).FIELD_NAME : '')}\n class=\"left-value\"\n >\n ${repeat(\n (x) => x.getAllFields(),\n html`\n <rapid-option value=${(x) => JSON.stringify(x)} title=${(x) => x.FIELD_NAME}>\n ${(x) => x.FIELD_NAME}\n </rapid-option>\n `,\n )}\n </rapid-select>\n\n <rapid-select\n class=\"logical-operator${(x) =>\n classNames([\n '-null-and-blank',\n nullAndBlankLogicalOperatorValues.includes(LogicalOperator[x.logicalOperator]),\n ])}\"\n :value=${sync((x) => x.logicalOperator)}\n title=${(x) => x.logicalOperator}\n >\n ${repeat(\n (x) => x.getLogicalOperators(),\n html`\n <rapid-option value=${(x) => x.operator} title=${(x) => x}>\n ${(x) => x.label}\n </rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => !nullAndBlankLogicalOperatorValues.includes(LogicalOperator[x.logicalOperator]),\n html`\n <rapid-select\n class=\"right-criteria\"\n :value=${sync((x) => x.rightCriteria)}\n title=${(x) => x.rightCriteria}\n >\n ${repeat(\n (x) => x.getRightCriteria(),\n html`\n <rapid-option value=${(x) => x} title=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => x.rightCriteria === RightCriteria.VALUE,\n html`\n ${whenElse(\n (x) => JSON.parse(x.leftValue ?? '{}').FIELD_TYPE === FieldTypeEnum.BOOLEAN,\n html`\n <rapid-select class=\"right-criteria-select\" :value=${sync((x) => x.rightValueText)}>\n <rapid-option value=\"true\">true</rapid-option>\n <rapid-option value=\"false\">false</rapid-option>\n </rapid-select>\n `,\n html`\n ${whenElse(\n (x) => JSON.parse(x.leftValue ?? '{}').FIELD_TYPE === 'ENUM',\n html`\n <rapid-multiselect\n class=\"right-criteria-select\"\n :selectedOptions=${(x) => x.rightValueMultiSelect}\n @selectionChange=${(x, c) => {\n x.rightValueMultiSelect = (c.event as CustomEvent).detail;\n }}\n search=\"true\"\n all=\"false\"\n >\n <multiselect-datasource\n value-field=\"value\"\n label-field=\"value\"\n :data=${(x) => x.getEnumValues().map((value) => ({ value }))}\n ></multiselect-datasource>\n </rapid-multiselect>\n `,\n html`\n ${whenElse(\n (x) => JSON.parse(x.leftValue ?? '{}').FIELD_TYPE === FieldTypeEnum.DATE,\n html`\n <rapid-text-field\n class=\"right-criteria-text\"\n :value=${sync((x) => x.rightValueText)}\n type=\"date\"\n ></rapid-text-field>\n `,\n html`\n ${whenElse(\n (x) =>\n JSON.parse(x.leftValue ?? '{}').FIELD_TYPE === FieldTypeEnum.DATETIME,\n html`\n <rapid-text-field\n class=\"right-criteria-text\"\n :value=${sync((x) => x.rightValueText)}\n type=\"datetime-local\"\n ></rapid-text-field>\n `,\n html`\n <rapid-text-field\n class=\"right-criteria-text\"\n :value=${sync((x) => x.rightValueText)}\n placeholder=\"Value (comma-separate for multiple)\"\n autocomplete=\"off\"\n ></rapid-text-field>\n `,\n )}\n `,\n )}\n `,\n )}\n `,\n )}\n `,\n )}\n ${when(\n (x) => x.rightCriteria === RightCriteria.FIELD,\n html`\n <rapid-select\n class=\"right-criteria-select\"\n :value=${sync((x) => x.rightValueSelect)}\n title=${(x) => x.rightValueSelect}\n >\n ${repeat(\n (x) => x.getApplicableFields(),\n html`\n <rapid-option value=${(x) => x.FIELD_NAME} title=${(x) => x.FIELD_NAME}>\n ${(x) => x.FIELD_NAME}\n </rapid-option>\n `,\n )}\n </rapid-select>\n `,\n )}\n `,\n )}\n\n <rapid-button appearance=\"icon\" class=\"delete\" @click=${(x) => x.deleteCondition()}>\n <rapid-icon\n style=\"opacity: 0.5\"\n variant=\"regular\"\n name=\"trash-alt\"\n size=\"lg\"\n part=\"icon\"\n ></rapid-icon>\n </rapid-button>\n </div>\n`"
5677
6571
  }
5678
6572
  ],
5679
6573
  "exports": [
5680
6574
  {
5681
6575
  "kind": "js",
5682
- "name": "RuleConditionGroupTemplate",
6576
+ "name": "RuleConditionBuilderTemplate",
5683
6577
  "declaration": {
5684
- "name": "RuleConditionGroupTemplate",
5685
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.template.ts"
6578
+ "name": "RuleConditionBuilderTemplate",
6579
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.template.ts"
5686
6580
  }
5687
6581
  }
5688
6582
  ]
5689
6583
  },
5690
6584
  {
5691
6585
  "kind": "javascript-module",
5692
- "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts",
6586
+ "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.ts",
5693
6587
  "declarations": [
5694
6588
  {
5695
6589
  "kind": "class",
5696
- "description": "Parenthesized group of conditions/nested groups for notification rule\ncriteria, joined to the previous sibling via AND/OR like a single\ncondition row - but bracketing its own children off from the rest of the\nlist, so e.g. \"(A && B) || C\" can be expressed without the AND silently\nspanning more than intended.",
5697
- "name": "RuleConditionGroup",
6590
+ "description": "Condition builder for notification rule criteria.",
6591
+ "name": "RuleConditionBuilder",
5698
6592
  "members": [
5699
6593
  {
5700
6594
  "kind": "field",
5701
- "name": "node",
6595
+ "name": "condition",
5702
6596
  "type": {
5703
- "text": "ConditionGroupEntity"
6597
+ "text": "ConditionBuilderEntity"
5704
6598
  }
5705
6599
  },
5706
6600
  {
@@ -5728,177 +6622,27 @@
5728
6622
  },
5729
6623
  {
5730
6624
  "kind": "field",
5731
- "name": "groupChildren",
6625
+ "name": "leftValue",
5732
6626
  "type": {
5733
- "text": "ConditionNode[]"
6627
+ "text": "string"
6628
+ },
6629
+ "default": "null"
6630
+ },
6631
+ {
6632
+ "kind": "field",
6633
+ "name": "leftValueItems",
6634
+ "type": {
6635
+ "text": "Array<any>"
5734
6636
  },
5735
6637
  "default": "[]"
5736
6638
  },
5737
6639
  {
5738
- "kind": "method",
5739
- "name": "nodeChanged"
5740
- },
5741
- {
5742
- "kind": "method",
5743
- "name": "joinOperatorChanged"
5744
- },
5745
- {
5746
- "kind": "method",
5747
- "name": "newCondition"
5748
- },
5749
- {
5750
- "kind": "method",
5751
- "name": "newGroup"
5752
- },
5753
- {
5754
- "kind": "method",
5755
- "name": "editChild",
5756
- "parameters": [
5757
- {
5758
- "name": "_editedChild",
5759
- "type": {
5760
- "text": "ConditionNode"
5761
- }
5762
- }
5763
- ]
5764
- },
5765
- {
5766
- "kind": "method",
5767
- "name": "deleteChild",
5768
- "parameters": [
5769
- {
5770
- "name": "deletedChild",
5771
- "type": {
5772
- "text": "ConditionNode"
5773
- }
5774
- }
5775
- ]
5776
- },
5777
- {
5778
- "kind": "method",
5779
- "name": "deleteSelf"
5780
- }
5781
- ],
5782
- "events": [
5783
- {
5784
- "description": "Fired when this whole group should be removed",
5785
- "name": "delete"
5786
- },
5787
- {
5788
- "description": "Fired when anything inside this group changes",
5789
- "name": "edit"
5790
- }
5791
- ],
5792
- "superclass": {
5793
- "name": "GenesisElement",
5794
- "package": "@genesislcap/web-core"
5795
- },
5796
- "tagName": "rule-condition-group",
5797
- "customElement": true
5798
- }
5799
- ],
5800
- "exports": [
5801
- {
5802
- "kind": "js",
5803
- "name": "RuleConditionGroup",
5804
- "declaration": {
5805
- "name": "RuleConditionGroup",
5806
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts"
5807
- }
5808
- },
5809
- {
5810
- "kind": "custom-element-definition",
5811
- "name": "rule-condition-group",
5812
- "declaration": {
5813
- "name": "RuleConditionGroup",
5814
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts"
5815
- }
5816
- }
5817
- ]
5818
- },
5819
- {
5820
- "kind": "javascript-module",
5821
- "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.template.ts",
5822
- "declarations": [
5823
- {
5824
- "kind": "variable",
5825
- "name": "RuleConditionBuilderTemplate",
5826
- "default": "html<RuleConditionBuilder>`\n ${when(\n (x) => !x.isFirst,\n html`\n <div class=\"join-toggle-row\">\n <div class=\"join-toggle\">\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'AND'])}\"\n @click=${(x) => (x.joinOperator = 'AND')}\n >\n AND\n </span>\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'OR'])}\"\n @click=${(x) => (x.joinOperator = 'OR')}\n >\n OR\n </span>\n </div>\n </div>\n `,\n )}\n <div class=\"condition-builder\">\n <rapid-select\n :value=${sync((x) => x.leftValue)}\n :initialValue=${sync((x) => x.leftValue)}\n title=${(x) => (x.leftValue ? JSON.parse(x.leftValue).FIELD_NAME : '')}\n class=\"left-value\"\n >\n ${repeat(\n (x) => x.getAllFields(),\n html`\n <rapid-option value=${(x) => JSON.stringify(x)} title=${(x) => x.FIELD_NAME}>\n ${(x) => x.FIELD_NAME}\n </rapid-option>\n `,\n )}\n </rapid-select>\n\n <rapid-select\n class=\"logical-operator${(x) =>\n classNames([\n '-null-and-blank',\n nullAndBlankLogicalOperatorValues.includes(LogicalOperator[x.logicalOperator]),\n ])}\"\n :value=${sync((x) => x.logicalOperator)}\n title=${(x) => x.logicalOperator}\n >\n ${repeat(\n (x) => x.getLogicalOperators(),\n html`\n <rapid-option value=${(x) => x.operator} title=${(x) => x}>\n ${(x) => x.label}\n </rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => !nullAndBlankLogicalOperatorValues.includes(LogicalOperator[x.logicalOperator]),\n html`\n <rapid-select\n class=\"right-criteria\"\n :value=${sync((x) => x.rightCriteria)}\n title=${(x) => x.rightCriteria}\n >\n ${repeat(\n (x) => x.getRightCriteria(),\n html`\n <rapid-option value=${(x) => x} title=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => x.rightCriteria === RightCriteria.VALUE,\n html`\n ${whenElse(\n (x) => JSON.parse(x.leftValue ?? '{}').FIELD_TYPE === FieldTypeEnum.BOOLEAN,\n html`\n <rapid-select class=\"right-criteria-select\" :value=${sync((x) => x.rightValueText)}>\n <rapid-option value=\"true\">true</rapid-option>\n <rapid-option value=\"false\">false</rapid-option>\n </rapid-select>\n `,\n html`\n ${whenElse(\n (x) => JSON.parse(x.leftValue ?? '{}').FIELD_TYPE === 'ENUM',\n html`\n <rapid-multiselect\n class=\"right-criteria-select\"\n :selectedOptions=${(x) => x.rightValueMultiSelect}\n @selectionChange=${(x, c) => {\n x.rightValueMultiSelect = (c.event as CustomEvent).detail;\n }}\n search=\"true\"\n all=\"false\"\n >\n <multiselect-datasource\n value-field=\"value\"\n label-field=\"value\"\n :data=${(x) => x.getEnumValues().map((value) => ({ value }))}\n ></multiselect-datasource>\n </rapid-multiselect>\n `,\n html`\n ${whenElse(\n (x) => JSON.parse(x.leftValue ?? '{}').FIELD_TYPE === FieldTypeEnum.DATE,\n html`\n <rapid-text-field\n class=\"right-criteria-text\"\n :value=${sync((x) => x.rightValueText)}\n type=\"date\"\n ></rapid-text-field>\n `,\n html`\n ${whenElse(\n (x) =>\n JSON.parse(x.leftValue ?? '{}').FIELD_TYPE === FieldTypeEnum.DATETIME,\n html`\n <rapid-text-field\n class=\"right-criteria-text\"\n :value=${sync((x) => x.rightValueText)}\n type=\"datetime-local\"\n ></rapid-text-field>\n `,\n html`\n <rapid-text-field\n class=\"right-criteria-text\"\n :value=${sync((x) => x.rightValueText)}\n placeholder=\"Value (comma-separate for multiple)\"\n autocomplete=\"off\"\n ></rapid-text-field>\n `,\n )}\n `,\n )}\n `,\n )}\n `,\n )}\n `,\n )}\n ${when(\n (x) => x.rightCriteria === RightCriteria.FIELD,\n html`\n <rapid-select\n class=\"right-criteria-select\"\n :value=${sync((x) => x.rightValueSelect)}\n title=${(x) => x.rightValueSelect}\n >\n ${repeat(\n (x) => x.getApplicableFields(),\n html`\n <rapid-option value=${(x) => x.FIELD_NAME} title=${(x) => x.FIELD_NAME}>\n ${(x) => x.FIELD_NAME}\n </rapid-option>\n `,\n )}\n </rapid-select>\n `,\n )}\n `,\n )}\n\n <rapid-button appearance=\"icon\" class=\"delete\" @click=${(x) => x.deleteCondition()}>\n <rapid-icon\n style=\"opacity: 0.5\"\n variant=\"regular\"\n name=\"trash-alt\"\n size=\"lg\"\n part=\"icon\"\n ></rapid-icon>\n </rapid-button>\n </div>\n`"
5827
- }
5828
- ],
5829
- "exports": [
5830
- {
5831
- "kind": "js",
5832
- "name": "RuleConditionBuilderTemplate",
5833
- "declaration": {
5834
- "name": "RuleConditionBuilderTemplate",
5835
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.template.ts"
5836
- }
5837
- }
5838
- ]
5839
- },
5840
- {
5841
- "kind": "javascript-module",
5842
- "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.ts",
5843
- "declarations": [
5844
- {
5845
- "kind": "class",
5846
- "description": "Condition builder for notification rule criteria.",
5847
- "name": "RuleConditionBuilder",
5848
- "members": [
5849
- {
5850
- "kind": "field",
5851
- "name": "condition",
5852
- "type": {
5853
- "text": "ConditionBuilderEntity"
5854
- }
5855
- },
5856
- {
5857
- "kind": "field",
5858
- "name": "fields",
5859
- "type": {
5860
- "text": "Field[]"
5861
- },
5862
- "default": "[]"
5863
- },
5864
- {
5865
- "kind": "field",
5866
- "name": "isFirst",
5867
- "type": {
5868
- "text": "boolean"
5869
- },
5870
- "default": "false"
5871
- },
5872
- {
5873
- "kind": "field",
5874
- "name": "joinOperator",
5875
- "type": {
5876
- "text": "string"
5877
- }
5878
- },
5879
- {
5880
- "kind": "field",
5881
- "name": "leftValue",
5882
- "type": {
5883
- "text": "string"
5884
- },
5885
- "default": "null"
5886
- },
5887
- {
5888
- "kind": "field",
5889
- "name": "leftValueItems",
5890
- "type": {
5891
- "text": "Array<any>"
5892
- },
5893
- "default": "[]"
5894
- },
5895
- {
5896
- "kind": "field",
5897
- "name": "logicalOperator",
5898
- "type": {
5899
- "text": "string"
5900
- },
5901
- "default": "null"
6640
+ "kind": "field",
6641
+ "name": "logicalOperator",
6642
+ "type": {
6643
+ "text": "string"
6644
+ },
6645
+ "default": "null"
5902
6646
  },
5903
6647
  {
5904
6648
  "kind": "field",
@@ -6100,6 +6844,156 @@
6100
6844
  "declarations": [],
6101
6845
  "exports": []
6102
6846
  },
6847
+ {
6848
+ "kind": "javascript-module",
6849
+ "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.template.ts",
6850
+ "declarations": [
6851
+ {
6852
+ "kind": "variable",
6853
+ "name": "RuleConditionGroupTemplate",
6854
+ "default": "html<RuleConditionGroup>`\n ${when(\n (x) => !x.isFirst,\n html`\n <div class=\"join-toggle-row\">\n <div class=\"join-toggle\">\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'AND'])}\"\n @click=${(x) => (x.joinOperator = 'AND')}\n >\n AND\n </span>\n <span\n class=\"join-text${(x) => classNames(['active', x.joinOperator === 'OR'])}\"\n @click=${(x) => (x.joinOperator = 'OR')}\n >\n OR\n </span>\n </div>\n </div>\n `,\n )}\n <div class=\"condition-group-row\">\n <div class=\"condition-group-box\">\n ${repeat(\n (x) => x.groupChildren,\n html<ConditionNode, RuleConditionGroup>`\n ${when(\n (x) => isGroup(x),\n html<ConditionNode>`\n <rule-condition-group\n :fields=${(x, c) => c.parent.fields}\n :node=${(x) => x}\n :isFirst=${(x, c) => c.index === 0}\n @edit=${(x, c) => c.parent.editChild(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteChild(eventDetail(c))}\n ></rule-condition-group>\n `,\n )}\n ${when(\n (x) => !isGroup(x),\n html<ConditionNode>`\n <rule-condition-builder\n :fields=${(x, c) => c.parent.fields}\n :condition=${(x) => x}\n :isFirst=${(x, c) => c.index === 0}\n @edit=${(x, c) => c.parent.editChild(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteChild(eventDetail(c))}\n ></rule-condition-builder>\n `,\n )}\n `,\n { positioning: true },\n )}\n\n <div class=\"content-row\">\n <rapid-button appearance=\"lightweight\" @click=${(x) => x.newCondition()}>\n + Condition\n </rapid-button>\n <rapid-button appearance=\"lightweight\" @click=${(x) => x.newGroup()}>+ Group</rapid-button>\n <rapid-button appearance=\"icon\" class=\"delete-group\" @click=${(x) => x.deleteSelf()}>\n <rapid-icon variant=\"regular\" name=\"trash-alt\" size=\"lg\" part=\"icon\"></rapid-icon>\n </rapid-button>\n </div>\n </div>\n </div>\n`"
6855
+ }
6856
+ ],
6857
+ "exports": [
6858
+ {
6859
+ "kind": "js",
6860
+ "name": "RuleConditionGroupTemplate",
6861
+ "declaration": {
6862
+ "name": "RuleConditionGroupTemplate",
6863
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.template.ts"
6864
+ }
6865
+ }
6866
+ ]
6867
+ },
6868
+ {
6869
+ "kind": "javascript-module",
6870
+ "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts",
6871
+ "declarations": [
6872
+ {
6873
+ "kind": "class",
6874
+ "description": "Parenthesized group of conditions/nested groups for notification rule\ncriteria, joined to the previous sibling via AND/OR like a single\ncondition row - but bracketing its own children off from the rest of the\nlist, so e.g. \"(A && B) || C\" can be expressed without the AND silently\nspanning more than intended.",
6875
+ "name": "RuleConditionGroup",
6876
+ "members": [
6877
+ {
6878
+ "kind": "field",
6879
+ "name": "node",
6880
+ "type": {
6881
+ "text": "ConditionGroupEntity"
6882
+ }
6883
+ },
6884
+ {
6885
+ "kind": "field",
6886
+ "name": "fields",
6887
+ "type": {
6888
+ "text": "Field[]"
6889
+ },
6890
+ "default": "[]"
6891
+ },
6892
+ {
6893
+ "kind": "field",
6894
+ "name": "isFirst",
6895
+ "type": {
6896
+ "text": "boolean"
6897
+ },
6898
+ "default": "false"
6899
+ },
6900
+ {
6901
+ "kind": "field",
6902
+ "name": "joinOperator",
6903
+ "type": {
6904
+ "text": "string"
6905
+ }
6906
+ },
6907
+ {
6908
+ "kind": "field",
6909
+ "name": "groupChildren",
6910
+ "type": {
6911
+ "text": "ConditionNode[]"
6912
+ },
6913
+ "default": "[]"
6914
+ },
6915
+ {
6916
+ "kind": "method",
6917
+ "name": "nodeChanged"
6918
+ },
6919
+ {
6920
+ "kind": "method",
6921
+ "name": "joinOperatorChanged"
6922
+ },
6923
+ {
6924
+ "kind": "method",
6925
+ "name": "newCondition"
6926
+ },
6927
+ {
6928
+ "kind": "method",
6929
+ "name": "newGroup"
6930
+ },
6931
+ {
6932
+ "kind": "method",
6933
+ "name": "editChild",
6934
+ "parameters": [
6935
+ {
6936
+ "name": "_editedChild",
6937
+ "type": {
6938
+ "text": "ConditionNode"
6939
+ }
6940
+ }
6941
+ ]
6942
+ },
6943
+ {
6944
+ "kind": "method",
6945
+ "name": "deleteChild",
6946
+ "parameters": [
6947
+ {
6948
+ "name": "deletedChild",
6949
+ "type": {
6950
+ "text": "ConditionNode"
6951
+ }
6952
+ }
6953
+ ]
6954
+ },
6955
+ {
6956
+ "kind": "method",
6957
+ "name": "deleteSelf"
6958
+ }
6959
+ ],
6960
+ "events": [
6961
+ {
6962
+ "description": "Fired when this whole group should be removed",
6963
+ "name": "delete"
6964
+ },
6965
+ {
6966
+ "description": "Fired when anything inside this group changes",
6967
+ "name": "edit"
6968
+ }
6969
+ ],
6970
+ "superclass": {
6971
+ "name": "GenesisElement",
6972
+ "package": "@genesislcap/web-core"
6973
+ },
6974
+ "tagName": "rule-condition-group",
6975
+ "customElement": true
6976
+ }
6977
+ ],
6978
+ "exports": [
6979
+ {
6980
+ "kind": "js",
6981
+ "name": "RuleConditionGroup",
6982
+ "declaration": {
6983
+ "name": "RuleConditionGroup",
6984
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts"
6985
+ }
6986
+ },
6987
+ {
6988
+ "kind": "custom-element-definition",
6989
+ "name": "rule-condition-group",
6990
+ "declaration": {
6991
+ "name": "RuleConditionGroup",
6992
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts"
6993
+ }
6994
+ }
6995
+ ]
6996
+ },
6103
6997
  {
6104
6998
  "kind": "javascript-module",
6105
6999
  "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.styles.ts",