@genesislcap/pbc-notify-ui 15.7.1 → 15.7.2

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.
@@ -417,480 +417,159 @@
417
417
  },
418
418
  {
419
419
  "kind": "javascript-module",
420
- "path": "src/utils/eventDetail.ts",
420
+ "path": "src/styles/scrollbar.styles.ts",
421
421
  "declarations": [
422
422
  {
423
- "kind": "function",
424
- "name": "eventDetail",
425
- "parameters": [
426
- {
427
- "name": "ctx",
428
- "type": {
429
- "text": "ExecutionContext"
430
- }
431
- }
432
- ]
423
+ "kind": "variable",
424
+ "name": "scrollbarStyles",
425
+ "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`"
433
426
  }
434
427
  ],
435
428
  "exports": [
436
429
  {
437
430
  "kind": "js",
438
- "name": "eventDetail",
431
+ "name": "scrollbarStyles",
439
432
  "declaration": {
440
- "name": "eventDetail",
441
- "module": "src/utils/eventDetail.ts"
433
+ "name": "scrollbarStyles",
434
+ "module": "src/styles/scrollbar.styles.ts"
442
435
  }
443
436
  }
444
437
  ]
445
438
  },
446
439
  {
447
440
  "kind": "javascript-module",
448
- "path": "src/utils/gridConfig.ts",
441
+ "path": "src/components/foundation-inbox/inbox.styles.ts",
449
442
  "declarations": [
450
443
  {
451
444
  "kind": "variable",
452
- "name": "hideColumn",
453
- "type": {
454
- "text": "object"
455
- },
456
- "default": "{\n hide: true,\n}"
445
+ "name": "inboxHeader",
446
+ "default": "css`\n .inbox-header {\n display: flex;\n flex: 0;\n align-items: center;\n justify-content: space-between;\n padding: calc(var(--design-unit) * 3px) calc(var(--design-unit) * 3px);\n border-bottom: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n }\n\n .inbox-header-title {\n font-size: calc(var(--design-unit) * 4px);\n font-weight: 700;\n padding: 0;\n margin: 0 auto 0 0;\n }\n\n .inbox-header-close {\n text-align: center;\n min-width: 30px;\n height: 30px;\n }\n\n .inbox-header-close::part(control) {\n padding: 0;\n margin: 0;\n }\n\n .inbox-header-close::part(start) {\n margin-inline-end: 0;\n }\n`"
457
447
  },
458
448
  {
459
449
  "kind": "variable",
460
- "name": "suppressColumn",
461
- "type": {
462
- "text": "object"
463
- },
464
- "default": "{\n ...hideColumn,\n suppressColumnsToolPanel: true,\n}"
450
+ "name": "alertsNewAndAlertsHistory",
451
+ "default": "css`\n .alert-log-tab-panel {\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1;\n }\n\n .alert-log-tab-content {\n flex: 1;\n overflow: auto;\n }\n\n .toast {\n display: flex;\n flex-direction: row;\n border-bottom: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n }\n\n .toast-severity {\n width: calc(var(--design-unit) * 1px);\n background-color: white;\n margin: calc(var(--design-unit) * 2px) calc(var(--design-unit) * 0px)\n calc(var(--design-unit) * 2px) calc(var(--design-unit) * 2px);\n }\n\n .toast-header {\n font-weight: bold;\n }\n\n .toast-message {\n font-size: var(--type-ramp-minus-2-font-size);\n overflow-wrap: anywhere;\n }\n\n .toast-bottom {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .toast-content {\n display: flex;\n position: relative;\n flex-direction: column;\n width: 100%;\n margin: calc(var(--design-unit) * 2px) calc(var(--design-unit) * 0px)\n calc(var(--design-unit) * 2px) calc(var(--design-unit) * 2px);\n }\n\n .toast-date {\n color: var(--neutral-foreground-hint);\n font-size: calc(var(--design-unit) * 3px);\n }\n\n .no-row-container {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n color: var(--neutral-stroke-rest);\n }\n\n .load-more-container {\n display: flex;\n justify-content: center;\n padding: calc(var(--design-unit) * 2px);\n }\n\n .loading-indicator {\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-fill-input-rest);\n background: var(--neutral-layer-3);\n color: var(--neutral-foreground-rest);\n padding: calc(var(--design-unit) * 2px);\n border-radius: calc(var(--control-corner-radius) * 1px);\n font-size: var(--type-ramp-minus-1-font-size);\n }\n`"
465
452
  },
466
453
  {
467
- "kind": "function",
468
- "name": "hideColumns",
469
- "parameters": [
470
- {
471
- "name": "fieldsToSuppress",
472
- "type": {
473
- "text": "any"
474
- }
475
- }
476
- ]
477
- }
478
- ],
479
- "exports": [
480
- {
481
- "kind": "js",
482
- "name": "hideColumn",
483
- "declaration": {
484
- "name": "hideColumn",
485
- "module": "src/utils/gridConfig.ts"
486
- }
454
+ "kind": "variable",
455
+ "name": "subscriptions",
456
+ "default": "css`\n .my-alerts-tab-panel {\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1;\n }\n\n .my-alerts-tab-content {\n flex: 1;\n overflow: auto;\n }\n`"
487
457
  },
488
458
  {
489
- "kind": "js",
490
- "name": "suppressColumn",
491
- "declaration": {
492
- "name": "suppressColumn",
493
- "module": "src/utils/gridConfig.ts"
494
- }
459
+ "kind": "variable",
460
+ "name": "subscribe",
461
+ "default": "css`\n .subscribe-tab-panel {\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1;\n }\n\n .subscribe-tab-content {\n flex: 1;\n overflow: auto;\n }\n`"
495
462
  },
496
- {
497
- "kind": "js",
498
- "name": "hideColumns",
499
- "declaration": {
500
- "name": "hideColumns",
501
- "module": "src/utils/gridConfig.ts"
502
- }
503
- }
504
- ]
505
- },
506
- {
507
- "kind": "javascript-module",
508
- "path": "src/utils/humanize.ts",
509
- "declarations": [
510
- {
511
- "kind": "function",
512
- "name": "humanize",
513
- "parameters": [
514
- {
515
- "name": "s",
516
- "type": {
517
- "text": "string"
518
- }
519
- }
520
- ]
521
- }
522
- ],
523
- "exports": [
524
- {
525
- "kind": "js",
526
- "name": "humanize",
527
- "declaration": {
528
- "name": "humanize",
529
- "module": "src/utils/humanize.ts"
530
- }
531
- }
532
- ]
533
- },
534
- {
535
- "kind": "javascript-module",
536
- "path": "src/utils/icons.ts",
537
- "declarations": [
538
463
  {
539
464
  "kind": "variable",
540
- "name": "editIcon",
541
- "default": "html`\n <rapid-icon\n style=\"pointer-events: none; opacity: 0.5\"\n class=\"icon-button\"\n variant=\"solid\"\n name=\"pen\"\n size=\"lg\"\n ></rapid-icon>\n`"
465
+ "name": "ruleAndTemplate",
466
+ "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`"
542
467
  },
543
468
  {
544
469
  "kind": "variable",
545
- "name": "deleteIcon",
546
- "default": "html`\n <rapid-icon style=\"opacity: 0.5\" variant=\"regular\" name=\"trash-alt\" size=\"lg\"></rapid-icon>\n`"
470
+ "name": "FoundationInboxStyles",
471
+ "default": "css`\n ${scrollbarStyles}\n\n :host {\n display: flex;\n min-height: 0;\n height: 100%;\n width: 100%;\n }\n\n ${tabs}\n ${search}\n ${inboxHeader}\n ${alertsNewAndAlertsHistory}\n\n .inbox-content {\n flex: 1;\n display: flex;\n min-height: 0;\n }\n\n ${alertsNewAndAlertsHistory}\n ${subscriptions}\n ${subscribe}\n ${ruleAndTemplate}\n`",
472
+ "privacy": "public"
547
473
  }
548
474
  ],
549
475
  "exports": [
550
476
  {
551
477
  "kind": "js",
552
- "name": "editIcon",
553
- "declaration": {
554
- "name": "editIcon",
555
- "module": "src/utils/icons.ts"
556
- }
557
- },
558
- {
559
- "kind": "js",
560
- "name": "deleteIcon",
561
- "declaration": {
562
- "name": "deleteIcon",
563
- "module": "src/utils/icons.ts"
564
- }
565
- }
566
- ]
567
- },
568
- {
569
- "kind": "javascript-module",
570
- "path": "src/utils/index.ts",
571
- "declarations": [],
572
- "exports": [
573
- {
574
- "kind": "js",
575
- "name": "*",
478
+ "name": "inboxHeader",
576
479
  "declaration": {
577
- "name": "*",
578
- "package": "./logger"
480
+ "name": "inboxHeader",
481
+ "module": "src/components/foundation-inbox/inbox.styles.ts"
579
482
  }
580
483
  },
581
484
  {
582
485
  "kind": "js",
583
- "name": "*",
486
+ "name": "alertsNewAndAlertsHistory",
584
487
  "declaration": {
585
- "name": "*",
586
- "package": "./humanize"
488
+ "name": "alertsNewAndAlertsHistory",
489
+ "module": "src/components/foundation-inbox/inbox.styles.ts"
587
490
  }
588
491
  },
589
492
  {
590
493
  "kind": "js",
591
- "name": "*",
494
+ "name": "subscriptions",
592
495
  "declaration": {
593
- "name": "*",
594
- "package": "./updateArray"
496
+ "name": "subscriptions",
497
+ "module": "src/components/foundation-inbox/inbox.styles.ts"
595
498
  }
596
499
  },
597
500
  {
598
501
  "kind": "js",
599
- "name": "*",
502
+ "name": "subscribe",
600
503
  "declaration": {
601
- "name": "*",
602
- "package": "./eventDetail"
504
+ "name": "subscribe",
505
+ "module": "src/components/foundation-inbox/inbox.styles.ts"
603
506
  }
604
507
  },
605
508
  {
606
509
  "kind": "js",
607
- "name": "*",
510
+ "name": "ruleAndTemplate",
608
511
  "declaration": {
609
- "name": "*",
610
- "package": "./icons"
512
+ "name": "ruleAndTemplate",
513
+ "module": "src/components/foundation-inbox/inbox.styles.ts"
611
514
  }
612
515
  },
613
516
  {
614
517
  "kind": "js",
615
- "name": "*",
518
+ "name": "FoundationInboxStyles",
616
519
  "declaration": {
617
- "name": "*",
618
- "package": "./gridConfig"
520
+ "name": "FoundationInboxStyles",
521
+ "module": "src/components/foundation-inbox/inbox.styles.ts"
619
522
  }
620
523
  }
621
524
  ]
622
525
  },
623
526
  {
624
527
  "kind": "javascript-module",
625
- "path": "src/utils/logger.ts",
528
+ "path": "src/components/foundation-inbox/inbox.template.ts",
626
529
  "declarations": [
627
530
  {
628
531
  "kind": "variable",
629
- "name": "logger"
532
+ "name": "FoundationInboxTemplate",
533
+ "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`",
534
+ "privacy": "public"
630
535
  }
631
536
  ],
632
537
  "exports": [
633
538
  {
634
539
  "kind": "js",
635
- "name": "logger",
540
+ "name": "FoundationInboxTemplate",
636
541
  "declaration": {
637
- "name": "logger",
638
- "module": "src/utils/logger.ts"
542
+ "name": "FoundationInboxTemplate",
543
+ "module": "src/components/foundation-inbox/inbox.template.ts"
639
544
  }
640
545
  }
641
546
  ]
642
547
  },
643
548
  {
644
549
  "kind": "javascript-module",
645
- "path": "src/utils/notifyPermissions.ts",
550
+ "path": "src/components/foundation-inbox/inbox.ts",
646
551
  "declarations": [
647
552
  {
648
- "kind": "variable",
649
- "name": "NotifyPermission",
650
- "type": {
651
- "text": "object"
553
+ "kind": "class",
554
+ "description": "Foundation inbox component for displaying notifies list.\nAllow searching, filtering and deleting notifies",
555
+ "name": "FoundationInbox",
556
+ "superclass": {
557
+ "name": "FoundationInboxBase",
558
+ "module": "/src/components/foundation-inbox/inbox-base/inbox-base"
652
559
  },
653
- "default": "{\n NotificationRuleView: 'NotificationRuleView',\n NotificationRuleTemplateView: 'NotificationRuleTemplateView',\n NotificationRouteView: 'NotificationRouteView',\n NotificationAuditView: 'NotificationAuditView',\n}"
654
- }
655
- ],
656
- "exports": [
657
- {
658
- "kind": "js",
659
- "name": "NotifyPermission",
660
- "declaration": {
661
- "name": "NotifyPermission",
662
- "module": "src/utils/notifyPermissions.ts"
663
- }
664
- }
665
- ]
666
- },
667
- {
668
- "kind": "javascript-module",
669
- "path": "src/utils/toBoolean.ts",
670
- "declarations": [
671
- {
672
- "kind": "function",
673
- "name": "toBoolean",
674
- "parameters": [
560
+ "tagName": "foundation-inbox",
561
+ "customElement": true,
562
+ "attributes": [
675
563
  {
676
- "name": "s",
677
564
  "type": {
678
- "text": "string"
679
- }
680
- }
681
- ]
682
- }
683
- ],
684
- "exports": [
685
- {
686
- "kind": "js",
687
- "name": "toBoolean",
688
- "declaration": {
689
- "name": "toBoolean",
690
- "module": "src/utils/toBoolean.ts"
691
- }
692
- }
693
- ]
694
- },
695
- {
696
- "kind": "javascript-module",
697
- "path": "src/utils/updateArray.ts",
698
- "declarations": [
699
- {
700
- "kind": "function",
701
- "name": "updateArray",
702
- "return": {
703
- "type": {
704
- "text": "Array<any>"
705
- }
706
- },
707
- "parameters": [
708
- {
709
- "name": "newData",
710
- "type": {
711
- "text": "Array<any>"
712
- }
713
- },
714
- {
715
- "name": "oldData",
716
- "type": {
717
- "text": "Array<any>"
718
- }
719
- },
720
- {
721
- "name": "append",
722
- "default": "false"
723
- }
724
- ],
725
- "description": "Merges streamed data server rows into the existing list.\n\nNew INSERT rows are prepended by default so real-time alerts surface at the\ntop. When append is set (e.g. for `getMoreRows` pagination batches),\nrows are appended instead so they continue the existing order at the bottom."
726
- }
727
- ],
728
- "exports": [
729
- {
730
- "kind": "js",
731
- "name": "updateArray",
732
- "declaration": {
733
- "name": "updateArray",
734
- "module": "src/utils/updateArray.ts"
735
- }
736
- }
737
- ]
738
- },
739
- {
740
- "kind": "javascript-module",
741
- "path": "src/styles/scrollbar.styles.ts",
742
- "declarations": [
743
- {
744
- "kind": "variable",
745
- "name": "scrollbarStyles",
746
- "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`"
747
- }
748
- ],
749
- "exports": [
750
- {
751
- "kind": "js",
752
- "name": "scrollbarStyles",
753
- "declaration": {
754
- "name": "scrollbarStyles",
755
- "module": "src/styles/scrollbar.styles.ts"
756
- }
757
- }
758
- ]
759
- },
760
- {
761
- "kind": "javascript-module",
762
- "path": "src/components/foundation-inbox/inbox.styles.ts",
763
- "declarations": [
764
- {
765
- "kind": "variable",
766
- "name": "inboxHeader",
767
- "default": "css`\n .inbox-header {\n display: flex;\n flex: 0;\n align-items: center;\n justify-content: space-between;\n padding: calc(var(--design-unit) * 3px) calc(var(--design-unit) * 3px);\n border-bottom: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n }\n\n .inbox-header-title {\n font-size: calc(var(--design-unit) * 4px);\n font-weight: 700;\n padding: 0;\n margin: 0 auto 0 0;\n }\n\n .inbox-header-close {\n text-align: center;\n min-width: 30px;\n height: 30px;\n }\n\n .inbox-header-close::part(control) {\n padding: 0;\n margin: 0;\n }\n\n .inbox-header-close::part(start) {\n margin-inline-end: 0;\n }\n`"
768
- },
769
- {
770
- "kind": "variable",
771
- "name": "alertsNewAndAlertsHistory",
772
- "default": "css`\n .alert-log-tab-panel {\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1;\n }\n\n .alert-log-tab-content {\n flex: 1;\n overflow: auto;\n }\n\n .toast {\n display: flex;\n flex-direction: row;\n border-bottom: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n }\n\n .toast-severity {\n width: calc(var(--design-unit) * 1px);\n background-color: white;\n margin: calc(var(--design-unit) * 2px) calc(var(--design-unit) * 0px)\n calc(var(--design-unit) * 2px) calc(var(--design-unit) * 2px);\n }\n\n .toast-header {\n font-weight: bold;\n }\n\n .toast-message {\n font-size: var(--type-ramp-minus-2-font-size);\n overflow-wrap: anywhere;\n }\n\n .toast-bottom {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .toast-content {\n display: flex;\n position: relative;\n flex-direction: column;\n width: 100%;\n margin: calc(var(--design-unit) * 2px) calc(var(--design-unit) * 0px)\n calc(var(--design-unit) * 2px) calc(var(--design-unit) * 2px);\n }\n\n .toast-date {\n color: var(--neutral-foreground-hint);\n font-size: calc(var(--design-unit) * 3px);\n }\n\n .no-row-container {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n color: var(--neutral-stroke-rest);\n }\n\n .load-more-container {\n display: flex;\n justify-content: center;\n padding: calc(var(--design-unit) * 2px);\n }\n\n .loading-indicator {\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-fill-input-rest);\n background: var(--neutral-layer-3);\n color: var(--neutral-foreground-rest);\n padding: calc(var(--design-unit) * 2px);\n border-radius: calc(var(--control-corner-radius) * 1px);\n font-size: var(--type-ramp-minus-1-font-size);\n }\n`"
773
- },
774
- {
775
- "kind": "variable",
776
- "name": "subscriptions",
777
- "default": "css`\n .my-alerts-tab-panel {\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1;\n }\n\n .my-alerts-tab-content {\n flex: 1;\n overflow: auto;\n }\n`"
778
- },
779
- {
780
- "kind": "variable",
781
- "name": "subscribe",
782
- "default": "css`\n .subscribe-tab-panel {\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1;\n }\n\n .subscribe-tab-content {\n flex: 1;\n overflow: auto;\n }\n`"
783
- },
784
- {
785
- "kind": "variable",
786
- "name": "ruleAndTemplate",
787
- "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`"
788
- },
789
- {
790
- "kind": "variable",
791
- "name": "FoundationInboxStyles",
792
- "default": "css`\n ${scrollbarStyles}\n\n :host {\n display: flex;\n min-height: 0;\n height: 100%;\n width: 100%;\n }\n\n ${tabs}\n ${search}\n ${inboxHeader}\n ${alertsNewAndAlertsHistory}\n\n .inbox-content {\n flex: 1;\n display: flex;\n min-height: 0;\n }\n\n ${alertsNewAndAlertsHistory}\n ${subscriptions}\n ${subscribe}\n ${ruleAndTemplate}\n`",
793
- "privacy": "public"
794
- }
795
- ],
796
- "exports": [
797
- {
798
- "kind": "js",
799
- "name": "inboxHeader",
800
- "declaration": {
801
- "name": "inboxHeader",
802
- "module": "src/components/foundation-inbox/inbox.styles.ts"
803
- }
804
- },
805
- {
806
- "kind": "js",
807
- "name": "alertsNewAndAlertsHistory",
808
- "declaration": {
809
- "name": "alertsNewAndAlertsHistory",
810
- "module": "src/components/foundation-inbox/inbox.styles.ts"
811
- }
812
- },
813
- {
814
- "kind": "js",
815
- "name": "subscriptions",
816
- "declaration": {
817
- "name": "subscriptions",
818
- "module": "src/components/foundation-inbox/inbox.styles.ts"
819
- }
820
- },
821
- {
822
- "kind": "js",
823
- "name": "subscribe",
824
- "declaration": {
825
- "name": "subscribe",
826
- "module": "src/components/foundation-inbox/inbox.styles.ts"
827
- }
828
- },
829
- {
830
- "kind": "js",
831
- "name": "ruleAndTemplate",
832
- "declaration": {
833
- "name": "ruleAndTemplate",
834
- "module": "src/components/foundation-inbox/inbox.styles.ts"
835
- }
836
- },
837
- {
838
- "kind": "js",
839
- "name": "FoundationInboxStyles",
840
- "declaration": {
841
- "name": "FoundationInboxStyles",
842
- "module": "src/components/foundation-inbox/inbox.styles.ts"
843
- }
844
- }
845
- ]
846
- },
847
- {
848
- "kind": "javascript-module",
849
- "path": "src/components/foundation-inbox/inbox.template.ts",
850
- "declarations": [
851
- {
852
- "kind": "variable",
853
- "name": "FoundationInboxTemplate",
854
- "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`",
855
- "privacy": "public"
856
- }
857
- ],
858
- "exports": [
859
- {
860
- "kind": "js",
861
- "name": "FoundationInboxTemplate",
862
- "declaration": {
863
- "name": "FoundationInboxTemplate",
864
- "module": "src/components/foundation-inbox/inbox.template.ts"
865
- }
866
- }
867
- ]
868
- },
869
- {
870
- "kind": "javascript-module",
871
- "path": "src/components/foundation-inbox/inbox.ts",
872
- "declarations": [
873
- {
874
- "kind": "class",
875
- "description": "Foundation inbox component for displaying notifies list.\nAllow searching, filtering and deleting notifies",
876
- "name": "FoundationInbox",
877
- "superclass": {
878
- "name": "FoundationInboxBase",
879
- "module": "/src/components/foundation-inbox/inbox-base/inbox-base"
880
- },
881
- "tagName": "foundation-inbox",
882
- "customElement": true,
883
- "attributes": [
884
- {
885
- "type": {
886
- "text": "boolean"
887
- },
888
- "default": "false",
889
- "description": "Hide the Severity filter block in the search bar. Set via the `hide-severity-filter`\nattribute or property. @public",
890
- "fieldName": "hideSeverityFilter",
891
- "inheritedFrom": {
892
- "name": "FoundationInboxBase",
893
- "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
565
+ "text": "boolean"
566
+ },
567
+ "default": "false",
568
+ "description": "Hide the Severity filter block in the search bar. Set via the `hide-severity-filter`\nattribute or property. @public",
569
+ "fieldName": "hideSeverityFilter",
570
+ "inheritedFrom": {
571
+ "name": "FoundationInboxBase",
572
+ "module": "src/components/foundation-inbox/inbox-base/inbox-base.ts"
894
573
  }
895
574
  }
896
575
  ],
@@ -1965,37 +1644,358 @@
1965
1644
  },
1966
1645
  {
1967
1646
  "kind": "javascript-module",
1968
- "path": "src/components/foundation-notification-dashboard/index.ts",
1969
- "declarations": [],
1647
+ "path": "src/utils/eventDetail.ts",
1648
+ "declarations": [
1649
+ {
1650
+ "kind": "function",
1651
+ "name": "eventDetail",
1652
+ "parameters": [
1653
+ {
1654
+ "name": "ctx",
1655
+ "type": {
1656
+ "text": "ExecutionContext"
1657
+ }
1658
+ }
1659
+ ]
1660
+ }
1661
+ ],
1970
1662
  "exports": [
1971
1663
  {
1972
1664
  "kind": "js",
1973
- "name": "*",
1665
+ "name": "eventDetail",
1974
1666
  "declaration": {
1975
- "name": "*",
1976
- "package": "./notification-dashboard"
1667
+ "name": "eventDetail",
1668
+ "module": "src/utils/eventDetail.ts"
1977
1669
  }
1978
1670
  }
1979
1671
  ]
1980
1672
  },
1981
1673
  {
1982
1674
  "kind": "javascript-module",
1983
- "path": "src/components/foundation-notification-dashboard/notification-dashboard.styles.ts",
1675
+ "path": "src/utils/gridConfig.ts",
1984
1676
  "declarations": [
1985
1677
  {
1986
1678
  "kind": "variable",
1987
- "name": "FoundationNotificationDashboardStyles",
1988
- "default": "css`\n .notification-dashboard,\n rapid-tabs,\n rapid-tab-panel {\n height: 100%;\n }\n\n .no-permissions {\n font-family: var(--body-font);\n color: var(--neutral-foreground-rest);\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n`",
1989
- "privacy": "public"
1679
+ "name": "hideColumn",
1680
+ "type": {
1681
+ "text": "object"
1682
+ },
1683
+ "default": "{\n hide: true,\n}"
1684
+ },
1685
+ {
1686
+ "kind": "variable",
1687
+ "name": "suppressColumn",
1688
+ "type": {
1689
+ "text": "object"
1690
+ },
1691
+ "default": "{\n ...hideColumn,\n suppressColumnsToolPanel: true,\n}"
1692
+ },
1693
+ {
1694
+ "kind": "function",
1695
+ "name": "hideColumns",
1696
+ "parameters": [
1697
+ {
1698
+ "name": "fieldsToSuppress",
1699
+ "type": {
1700
+ "text": "any"
1701
+ }
1702
+ }
1703
+ ]
1990
1704
  }
1991
1705
  ],
1992
1706
  "exports": [
1993
1707
  {
1994
1708
  "kind": "js",
1995
- "name": "FoundationNotificationDashboardStyles",
1709
+ "name": "hideColumn",
1996
1710
  "declaration": {
1997
- "name": "FoundationNotificationDashboardStyles",
1998
- "module": "src/components/foundation-notification-dashboard/notification-dashboard.styles.ts"
1711
+ "name": "hideColumn",
1712
+ "module": "src/utils/gridConfig.ts"
1713
+ }
1714
+ },
1715
+ {
1716
+ "kind": "js",
1717
+ "name": "suppressColumn",
1718
+ "declaration": {
1719
+ "name": "suppressColumn",
1720
+ "module": "src/utils/gridConfig.ts"
1721
+ }
1722
+ },
1723
+ {
1724
+ "kind": "js",
1725
+ "name": "hideColumns",
1726
+ "declaration": {
1727
+ "name": "hideColumns",
1728
+ "module": "src/utils/gridConfig.ts"
1729
+ }
1730
+ }
1731
+ ]
1732
+ },
1733
+ {
1734
+ "kind": "javascript-module",
1735
+ "path": "src/utils/humanize.ts",
1736
+ "declarations": [
1737
+ {
1738
+ "kind": "function",
1739
+ "name": "humanize",
1740
+ "parameters": [
1741
+ {
1742
+ "name": "s",
1743
+ "type": {
1744
+ "text": "string"
1745
+ }
1746
+ }
1747
+ ]
1748
+ }
1749
+ ],
1750
+ "exports": [
1751
+ {
1752
+ "kind": "js",
1753
+ "name": "humanize",
1754
+ "declaration": {
1755
+ "name": "humanize",
1756
+ "module": "src/utils/humanize.ts"
1757
+ }
1758
+ }
1759
+ ]
1760
+ },
1761
+ {
1762
+ "kind": "javascript-module",
1763
+ "path": "src/utils/icons.ts",
1764
+ "declarations": [
1765
+ {
1766
+ "kind": "variable",
1767
+ "name": "editIcon",
1768
+ "default": "html`\n <rapid-icon\n style=\"pointer-events: none; opacity: 0.5\"\n class=\"icon-button\"\n variant=\"solid\"\n name=\"pen\"\n size=\"lg\"\n ></rapid-icon>\n`"
1769
+ },
1770
+ {
1771
+ "kind": "variable",
1772
+ "name": "deleteIcon",
1773
+ "default": "html`\n <rapid-icon style=\"opacity: 0.5\" variant=\"regular\" name=\"trash-alt\" size=\"lg\"></rapid-icon>\n`"
1774
+ }
1775
+ ],
1776
+ "exports": [
1777
+ {
1778
+ "kind": "js",
1779
+ "name": "editIcon",
1780
+ "declaration": {
1781
+ "name": "editIcon",
1782
+ "module": "src/utils/icons.ts"
1783
+ }
1784
+ },
1785
+ {
1786
+ "kind": "js",
1787
+ "name": "deleteIcon",
1788
+ "declaration": {
1789
+ "name": "deleteIcon",
1790
+ "module": "src/utils/icons.ts"
1791
+ }
1792
+ }
1793
+ ]
1794
+ },
1795
+ {
1796
+ "kind": "javascript-module",
1797
+ "path": "src/utils/index.ts",
1798
+ "declarations": [],
1799
+ "exports": [
1800
+ {
1801
+ "kind": "js",
1802
+ "name": "*",
1803
+ "declaration": {
1804
+ "name": "*",
1805
+ "package": "./logger"
1806
+ }
1807
+ },
1808
+ {
1809
+ "kind": "js",
1810
+ "name": "*",
1811
+ "declaration": {
1812
+ "name": "*",
1813
+ "package": "./humanize"
1814
+ }
1815
+ },
1816
+ {
1817
+ "kind": "js",
1818
+ "name": "*",
1819
+ "declaration": {
1820
+ "name": "*",
1821
+ "package": "./updateArray"
1822
+ }
1823
+ },
1824
+ {
1825
+ "kind": "js",
1826
+ "name": "*",
1827
+ "declaration": {
1828
+ "name": "*",
1829
+ "package": "./eventDetail"
1830
+ }
1831
+ },
1832
+ {
1833
+ "kind": "js",
1834
+ "name": "*",
1835
+ "declaration": {
1836
+ "name": "*",
1837
+ "package": "./icons"
1838
+ }
1839
+ },
1840
+ {
1841
+ "kind": "js",
1842
+ "name": "*",
1843
+ "declaration": {
1844
+ "name": "*",
1845
+ "package": "./gridConfig"
1846
+ }
1847
+ }
1848
+ ]
1849
+ },
1850
+ {
1851
+ "kind": "javascript-module",
1852
+ "path": "src/utils/logger.ts",
1853
+ "declarations": [
1854
+ {
1855
+ "kind": "variable",
1856
+ "name": "logger"
1857
+ }
1858
+ ],
1859
+ "exports": [
1860
+ {
1861
+ "kind": "js",
1862
+ "name": "logger",
1863
+ "declaration": {
1864
+ "name": "logger",
1865
+ "module": "src/utils/logger.ts"
1866
+ }
1867
+ }
1868
+ ]
1869
+ },
1870
+ {
1871
+ "kind": "javascript-module",
1872
+ "path": "src/utils/notifyPermissions.ts",
1873
+ "declarations": [
1874
+ {
1875
+ "kind": "variable",
1876
+ "name": "NotifyPermission",
1877
+ "type": {
1878
+ "text": "object"
1879
+ },
1880
+ "default": "{\n NotificationRuleView: 'NotificationRuleView',\n NotificationRuleTemplateView: 'NotificationRuleTemplateView',\n NotificationRouteView: 'NotificationRouteView',\n NotificationAuditView: 'NotificationAuditView',\n}"
1881
+ }
1882
+ ],
1883
+ "exports": [
1884
+ {
1885
+ "kind": "js",
1886
+ "name": "NotifyPermission",
1887
+ "declaration": {
1888
+ "name": "NotifyPermission",
1889
+ "module": "src/utils/notifyPermissions.ts"
1890
+ }
1891
+ }
1892
+ ]
1893
+ },
1894
+ {
1895
+ "kind": "javascript-module",
1896
+ "path": "src/utils/toBoolean.ts",
1897
+ "declarations": [
1898
+ {
1899
+ "kind": "function",
1900
+ "name": "toBoolean",
1901
+ "parameters": [
1902
+ {
1903
+ "name": "s",
1904
+ "type": {
1905
+ "text": "string"
1906
+ }
1907
+ }
1908
+ ]
1909
+ }
1910
+ ],
1911
+ "exports": [
1912
+ {
1913
+ "kind": "js",
1914
+ "name": "toBoolean",
1915
+ "declaration": {
1916
+ "name": "toBoolean",
1917
+ "module": "src/utils/toBoolean.ts"
1918
+ }
1919
+ }
1920
+ ]
1921
+ },
1922
+ {
1923
+ "kind": "javascript-module",
1924
+ "path": "src/utils/updateArray.ts",
1925
+ "declarations": [
1926
+ {
1927
+ "kind": "function",
1928
+ "name": "updateArray",
1929
+ "return": {
1930
+ "type": {
1931
+ "text": "Array<any>"
1932
+ }
1933
+ },
1934
+ "parameters": [
1935
+ {
1936
+ "name": "newData",
1937
+ "type": {
1938
+ "text": "Array<any>"
1939
+ }
1940
+ },
1941
+ {
1942
+ "name": "oldData",
1943
+ "type": {
1944
+ "text": "Array<any>"
1945
+ }
1946
+ },
1947
+ {
1948
+ "name": "append",
1949
+ "default": "false"
1950
+ }
1951
+ ],
1952
+ "description": "Merges streamed data server rows into the existing list.\n\nNew INSERT rows are prepended by default so real-time alerts surface at the\ntop. When append is set (e.g. for `getMoreRows` pagination batches),\nrows are appended instead so they continue the existing order at the bottom."
1953
+ }
1954
+ ],
1955
+ "exports": [
1956
+ {
1957
+ "kind": "js",
1958
+ "name": "updateArray",
1959
+ "declaration": {
1960
+ "name": "updateArray",
1961
+ "module": "src/utils/updateArray.ts"
1962
+ }
1963
+ }
1964
+ ]
1965
+ },
1966
+ {
1967
+ "kind": "javascript-module",
1968
+ "path": "src/components/foundation-notification-dashboard/index.ts",
1969
+ "declarations": [],
1970
+ "exports": [
1971
+ {
1972
+ "kind": "js",
1973
+ "name": "*",
1974
+ "declaration": {
1975
+ "name": "*",
1976
+ "package": "./notification-dashboard"
1977
+ }
1978
+ }
1979
+ ]
1980
+ },
1981
+ {
1982
+ "kind": "javascript-module",
1983
+ "path": "src/components/foundation-notification-dashboard/notification-dashboard.styles.ts",
1984
+ "declarations": [
1985
+ {
1986
+ "kind": "variable",
1987
+ "name": "FoundationNotificationDashboardStyles",
1988
+ "default": "css`\n .notification-dashboard,\n rapid-tabs,\n rapid-tab-panel {\n height: 100%;\n }\n\n .no-permissions {\n font-family: var(--body-font);\n color: var(--neutral-foreground-rest);\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n`",
1989
+ "privacy": "public"
1990
+ }
1991
+ ],
1992
+ "exports": [
1993
+ {
1994
+ "kind": "js",
1995
+ "name": "FoundationNotificationDashboardStyles",
1996
+ "declaration": {
1997
+ "name": "FoundationNotificationDashboardStyles",
1998
+ "module": "src/components/foundation-notification-dashboard/notification-dashboard.styles.ts"
1999
1999
  }
2000
2000
  }
2001
2001
  ]
@@ -3300,6 +3300,95 @@
3300
3300
  }
3301
3301
  ]
3302
3302
  },
3303
+ {
3304
+ "kind": "javascript-module",
3305
+ "path": "src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts",
3306
+ "declarations": [
3307
+ {
3308
+ "kind": "variable",
3309
+ "name": "ConditionBuilderStyles",
3310
+ "default": "css`\n .condition-builder {\n display: flex;\n gap: calc(var(--design-unit) * 2px);\n align-items: center;\n margin-bottom: calc(var(--design-unit) * 2px);\n }\n\n rapid-button {\n margin: 0;\n }\n\n /* The AND/OR toggle sits on its own row ABOVE the condition it joins,\n rendered as a pair of small text links rather than buttons - reads like\n a sentence connector (\"... and ...\") instead of a UI control competing\n with the row's fields for attention. */\n .join-toggle-row {\n display: flex;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .join-toggle {\n display: flex;\n gap: calc(var(--design-unit) * 1.5px);\n }\n\n .join-text {\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.02em;\n color: var(--accent-fill-rest);\n cursor: pointer;\n text-decoration: underline dotted;\n text-underline-offset: 3px;\n opacity: 40%;\n }\n\n .join-text:hover {\n opacity: 70%;\n }\n\n .join-text.active {\n opacity: 100%;\n text-decoration: underline solid;\n }\n\n .join-text.active:hover {\n opacity: 100%;\n }\n\n .delete {\n margin: 0;\n display: flex;\n justify-content: center;\n height: calc(var(--design-unit) * 9px);\n }\n\n .delete:hover {\n background-color: color-mix(in srgb, var(--neutral-foreground-rest), transparent 89%);\n }\n\n rapid-text-field {\n width: 100%;\n margin-bottom: 0;\n }\n\n rapid-text-field::part(root) {\n height: calc(var(--design-unit) * 9px);\n }\n\n rapid-select {\n min-width: auto;\n }\n\n rapid-select.left-value::part(control) {\n width: 250px;\n }\n\n rapid-select.logical-operator::part(control) {\n width: 160px;\n }\n\n .logical-operator-null-and-blank {\n width: 100%;\n }\n\n rapid-select.right-criteria::part(control) {\n width: 135px;\n }\n\n rapid-select.right-criteria-user-entry {\n width: 100%;\n }\n\n rapid-select.right-criteria-select {\n width: 100%;\n min-width: 0;\n }\n\n rapid-select::part(listbox) {\n max-height: 160px;\n }\n`"
3311
+ },
3312
+ {
3313
+ "kind": "variable",
3314
+ "name": "ConditionGroupStyles",
3315
+ "default": "css`\n .condition-group-row {\n margin-bottom: calc(var(--design-unit) * 2px);\n }\n\n /* The AND/OR toggle sits on its own row ABOVE the group it joins - see\n ConditionBuilderStyles' .join-toggle-row/.join-text for why it's a pair\n of text links rather than buttons. */\n .join-toggle-row {\n display: flex;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .join-toggle {\n display: flex;\n gap: calc(var(--design-unit) * 1.5px);\n }\n\n .join-text {\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.02em;\n color: var(--accent-fill-rest);\n cursor: pointer;\n text-decoration: underline dotted;\n text-underline-offset: 3px;\n opacity: 40%;\n }\n\n .join-text:hover {\n opacity: 70%;\n }\n\n .join-text.active {\n opacity: 100%;\n text-decoration: underline solid;\n }\n\n .join-text.active:hover {\n opacity: 100%;\n }\n\n /* A full bordered box reads as \"this is one parenthesized unit\" more\n literally than a left rail - it nests naturally too, a group inside a\n group just gets a second box drawn inside the first, like actual nested\n parens would look. */\n .condition-group-box {\n flex: 1;\n min-width: 0;\n border: calc(var(--design-unit) * 0.5px) solid\n color-mix(in srgb, var(--accent-fill-rest), transparent 25%);\n border-radius: calc(var(--design-unit) * 1px);\n padding: calc(var(--design-unit) * 2px);\n background-color: color-mix(in srgb, var(--accent-fill-rest), transparent 96%);\n }\n\n .condition-group-box > .content-row {\n display: flex;\n gap: calc(var(--design-unit) * 2px);\n align-items: center;\n margin-top: calc(var(--design-unit) * 1px);\n }\n\n .condition-group-box > .content-row rapid-button {\n font-size: 12px;\n }\n\n rule-condition-builder,\n rule-condition-group,\n template-condition-builder,\n template-condition-group {\n display: block;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .delete-group {\n margin: 0;\n opacity: 60%;\n }\n\n .delete-group:hover {\n opacity: 100%;\n }\n`"
3316
+ }
3317
+ ],
3318
+ "exports": [
3319
+ {
3320
+ "kind": "js",
3321
+ "name": "ConditionBuilderStyles",
3322
+ "declaration": {
3323
+ "name": "ConditionBuilderStyles",
3324
+ "module": "src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts"
3325
+ }
3326
+ },
3327
+ {
3328
+ "kind": "js",
3329
+ "name": "ConditionGroupStyles",
3330
+ "declaration": {
3331
+ "name": "ConditionGroupStyles",
3332
+ "module": "src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts"
3333
+ }
3334
+ }
3335
+ ]
3336
+ },
3337
+ {
3338
+ "kind": "javascript-module",
3339
+ "path": "src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts",
3340
+ "declarations": [
3341
+ {
3342
+ "kind": "variable",
3343
+ "name": "DynamicRuleManagementStyles",
3344
+ "default": "css`\n .container {\n display: flex;\n height: 100%;\n flex-direction: column;\n }\n\n .header {\n display: flex;\n flex-direction: row-reverse;\n }\n\n .grid {\n height: 100%;\n }\n`"
3345
+ },
3346
+ {
3347
+ "kind": "variable",
3348
+ "name": "DynamicRuleDialogStyles",
3349
+ "default": "css`\n ${scrollbarStyles}\n ${top}\n ${bottom}\n\n rapid-modal::part(dialog) {\n padding: 0;\n background: var(--neutral-layer-4);\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n }\n\n .dialog-content {\n display: flex;\n flex-direction: column;\n width: ${String(modalWidthPx)}px;\n max-height: 500px;\n overflow-y: scroll;\n gap: calc(var(--design-unit) * 3px);\n padding: calc(var(--design-unit) * 4px);\n }\n\n .content-row {\n display: flex;\n gap: calc(var(--design-unit) * 3px);\n }\n\n .control {\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: calc(var(--design-unit) * 2px);\n }\n\n .items {\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n border-radius: calc(var(--control-corner-radius) * 1px);\n display: flex;\n padding: calc(var(--design-unit) * 2px);\n flex-direction: column;\n }\n\n .item {\n gap: 0;\n flex-direction: column;\n margin-bottom: 0;\n }\n\n ${textField}\n ${select}\n\n rapid-button {\n margin: 0;\n }\n\n rapid-select {\n min-width: 0;\n }\n\n rapid-select::part(listbox) {\n max-height: 160px;\n }\n\n .horizontal {\n flex-direction: row;\n }\n\n .destination {\n align-self: center;\n }\n\n .topic {\n min-width: revert-layer;\n }\n\n .expression-preview {\n width: 100%;\n margin-top: calc(var(--design-unit) * 2px);\n }\n\n .expression-preview::part(control) {\n font-family: var(--body-font, monospace);\n font-size: 12px;\n color: var(--neutral-foreground-hint);\n min-height: calc(var(--design-unit) * 12px);\n resize: vertical;\n }\n`"
3350
+ }
3351
+ ],
3352
+ "exports": [
3353
+ {
3354
+ "kind": "js",
3355
+ "name": "DynamicRuleManagementStyles",
3356
+ "declaration": {
3357
+ "name": "DynamicRuleManagementStyles",
3358
+ "module": "src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts"
3359
+ }
3360
+ },
3361
+ {
3362
+ "kind": "js",
3363
+ "name": "DynamicRuleDialogStyles",
3364
+ "declaration": {
3365
+ "name": "DynamicRuleDialogStyles",
3366
+ "module": "src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts"
3367
+ }
3368
+ }
3369
+ ]
3370
+ },
3371
+ {
3372
+ "kind": "javascript-module",
3373
+ "path": "src/components/foundation-notification-dashboard/styles/management.styles.ts",
3374
+ "declarations": [
3375
+ {
3376
+ "kind": "variable",
3377
+ "name": "managementGridStyles",
3378
+ "default": "css`\n :host {\n height: 100%;\n }\n\n .container {\n display: flex;\n height: 100%;\n flex-direction: column;\n }\n\n .header {\n display: flex;\n }\n\n .grid {\n height: 100%;\n }\n`"
3379
+ }
3380
+ ],
3381
+ "exports": [
3382
+ {
3383
+ "kind": "js",
3384
+ "name": "managementGridStyles",
3385
+ "declaration": {
3386
+ "name": "managementGridStyles",
3387
+ "module": "src/components/foundation-notification-dashboard/styles/management.styles.ts"
3388
+ }
3389
+ }
3390
+ ]
3391
+ },
3303
3392
  {
3304
3393
  "kind": "javascript-module",
3305
3394
  "path": "src/components/foundation-notification-dashboard/types/expression-type.ts",
@@ -3862,272 +3951,40 @@
3862
3951
  "kind": "js",
3863
3952
  "name": "SEVERITY_INFORMATION",
3864
3953
  "declaration": {
3865
- "name": "SEVERITY_INFORMATION",
3866
- "module": "src/components/foundation-notification-dashboard/types/severity.ts"
3867
- }
3868
- },
3869
- {
3870
- "kind": "js",
3871
- "name": "SEVERITY_CRITICAL",
3872
- "declaration": {
3873
- "name": "SEVERITY_CRITICAL",
3874
- "module": "src/components/foundation-notification-dashboard/types/severity.ts"
3875
- }
3876
- },
3877
- {
3878
- "kind": "js",
3879
- "name": "SEVERITY_SERIOUS",
3880
- "declaration": {
3881
- "name": "SEVERITY_SERIOUS",
3882
- "module": "src/components/foundation-notification-dashboard/types/severity.ts"
3883
- }
3884
- },
3885
- {
3886
- "kind": "js",
3887
- "name": "SEVERITY_WARNING",
3888
- "declaration": {
3889
- "name": "SEVERITY_WARNING",
3890
- "module": "src/components/foundation-notification-dashboard/types/severity.ts"
3891
- }
3892
- },
3893
- {
3894
- "kind": "js",
3895
- "name": "ALL_SEVERITIES",
3896
- "declaration": {
3897
- "name": "ALL_SEVERITIES",
3898
- "module": "src/components/foundation-notification-dashboard/types/severity.ts"
3899
- }
3900
- }
3901
- ]
3902
- },
3903
- {
3904
- "kind": "javascript-module",
3905
- "path": "src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts",
3906
- "declarations": [
3907
- {
3908
- "kind": "variable",
3909
- "name": "ConditionBuilderStyles",
3910
- "default": "css`\n .condition-builder {\n display: flex;\n gap: calc(var(--design-unit) * 2px);\n align-items: center;\n margin-bottom: calc(var(--design-unit) * 2px);\n }\n\n rapid-button {\n margin: 0;\n }\n\n /* The AND/OR toggle sits on its own row ABOVE the condition it joins,\n rendered as a pair of small text links rather than buttons - reads like\n a sentence connector (\"... and ...\") instead of a UI control competing\n with the row's fields for attention. */\n .join-toggle-row {\n display: flex;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .join-toggle {\n display: flex;\n gap: calc(var(--design-unit) * 1.5px);\n }\n\n .join-text {\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.02em;\n color: var(--accent-fill-rest);\n cursor: pointer;\n text-decoration: underline dotted;\n text-underline-offset: 3px;\n opacity: 40%;\n }\n\n .join-text:hover {\n opacity: 70%;\n }\n\n .join-text.active {\n opacity: 100%;\n text-decoration: underline solid;\n }\n\n .join-text.active:hover {\n opacity: 100%;\n }\n\n .delete {\n margin: 0;\n display: flex;\n justify-content: center;\n height: calc(var(--design-unit) * 9px);\n }\n\n .delete:hover {\n background-color: color-mix(in srgb, var(--neutral-foreground-rest), transparent 89%);\n }\n\n rapid-text-field {\n width: 100%;\n margin-bottom: 0;\n }\n\n rapid-text-field::part(root) {\n height: calc(var(--design-unit) * 9px);\n }\n\n rapid-select {\n min-width: auto;\n }\n\n rapid-select.left-value::part(control) {\n width: 250px;\n }\n\n rapid-select.logical-operator::part(control) {\n width: 160px;\n }\n\n .logical-operator-null-and-blank {\n width: 100%;\n }\n\n rapid-select.right-criteria::part(control) {\n width: 135px;\n }\n\n rapid-select.right-criteria-user-entry {\n width: 100%;\n }\n\n rapid-select.right-criteria-select {\n width: 100%;\n min-width: 0;\n }\n\n rapid-select::part(listbox) {\n max-height: 160px;\n }\n`"
3911
- },
3912
- {
3913
- "kind": "variable",
3914
- "name": "ConditionGroupStyles",
3915
- "default": "css`\n .condition-group-row {\n margin-bottom: calc(var(--design-unit) * 2px);\n }\n\n /* The AND/OR toggle sits on its own row ABOVE the group it joins - see\n ConditionBuilderStyles' .join-toggle-row/.join-text for why it's a pair\n of text links rather than buttons. */\n .join-toggle-row {\n display: flex;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .join-toggle {\n display: flex;\n gap: calc(var(--design-unit) * 1.5px);\n }\n\n .join-text {\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.02em;\n color: var(--accent-fill-rest);\n cursor: pointer;\n text-decoration: underline dotted;\n text-underline-offset: 3px;\n opacity: 40%;\n }\n\n .join-text:hover {\n opacity: 70%;\n }\n\n .join-text.active {\n opacity: 100%;\n text-decoration: underline solid;\n }\n\n .join-text.active:hover {\n opacity: 100%;\n }\n\n /* A full bordered box reads as \"this is one parenthesized unit\" more\n literally than a left rail - it nests naturally too, a group inside a\n group just gets a second box drawn inside the first, like actual nested\n parens would look. */\n .condition-group-box {\n flex: 1;\n min-width: 0;\n border: calc(var(--design-unit) * 0.5px) solid\n color-mix(in srgb, var(--accent-fill-rest), transparent 25%);\n border-radius: calc(var(--design-unit) * 1px);\n padding: calc(var(--design-unit) * 2px);\n background-color: color-mix(in srgb, var(--accent-fill-rest), transparent 96%);\n }\n\n .condition-group-box > .content-row {\n display: flex;\n gap: calc(var(--design-unit) * 2px);\n align-items: center;\n margin-top: calc(var(--design-unit) * 1px);\n }\n\n .condition-group-box > .content-row rapid-button {\n font-size: 12px;\n }\n\n rule-condition-builder,\n rule-condition-group,\n template-condition-builder,\n template-condition-group {\n display: block;\n margin-bottom: calc(var(--design-unit) * 1px);\n }\n\n .delete-group {\n margin: 0;\n opacity: 60%;\n }\n\n .delete-group:hover {\n opacity: 100%;\n }\n`"
3916
- }
3917
- ],
3918
- "exports": [
3919
- {
3920
- "kind": "js",
3921
- "name": "ConditionBuilderStyles",
3922
- "declaration": {
3923
- "name": "ConditionBuilderStyles",
3924
- "module": "src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts"
3925
- }
3926
- },
3927
- {
3928
- "kind": "js",
3929
- "name": "ConditionGroupStyles",
3930
- "declaration": {
3931
- "name": "ConditionGroupStyles",
3932
- "module": "src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts"
3933
- }
3934
- }
3935
- ]
3936
- },
3937
- {
3938
- "kind": "javascript-module",
3939
- "path": "src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts",
3940
- "declarations": [
3941
- {
3942
- "kind": "variable",
3943
- "name": "DynamicRuleManagementStyles",
3944
- "default": "css`\n .container {\n display: flex;\n height: 100%;\n flex-direction: column;\n }\n\n .header {\n display: flex;\n flex-direction: row-reverse;\n }\n\n .grid {\n height: 100%;\n }\n`"
3945
- },
3946
- {
3947
- "kind": "variable",
3948
- "name": "DynamicRuleDialogStyles",
3949
- "default": "css`\n ${scrollbarStyles}\n ${top}\n ${bottom}\n\n rapid-modal::part(dialog) {\n padding: 0;\n background: var(--neutral-layer-4);\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n }\n\n .dialog-content {\n display: flex;\n flex-direction: column;\n width: ${String(modalWidthPx)}px;\n max-height: 500px;\n overflow-y: scroll;\n gap: calc(var(--design-unit) * 3px);\n padding: calc(var(--design-unit) * 4px);\n }\n\n .content-row {\n display: flex;\n gap: calc(var(--design-unit) * 3px);\n }\n\n .control {\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: calc(var(--design-unit) * 2px);\n }\n\n .items {\n border: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);\n border-radius: calc(var(--control-corner-radius) * 1px);\n display: flex;\n padding: calc(var(--design-unit) * 2px);\n flex-direction: column;\n }\n\n .item {\n gap: 0;\n flex-direction: column;\n margin-bottom: 0;\n }\n\n ${textField}\n ${select}\n\n rapid-button {\n margin: 0;\n }\n\n rapid-select {\n min-width: 0;\n }\n\n rapid-select::part(listbox) {\n max-height: 160px;\n }\n\n .horizontal {\n flex-direction: row;\n }\n\n .destination {\n align-self: center;\n }\n\n .topic {\n min-width: revert-layer;\n }\n\n .expression-preview {\n width: 100%;\n margin-top: calc(var(--design-unit) * 2px);\n }\n\n .expression-preview::part(control) {\n font-family: var(--body-font, monospace);\n font-size: 12px;\n color: var(--neutral-foreground-hint);\n min-height: calc(var(--design-unit) * 12px);\n resize: vertical;\n }\n`"
3950
- }
3951
- ],
3952
- "exports": [
3953
- {
3954
- "kind": "js",
3955
- "name": "DynamicRuleManagementStyles",
3956
- "declaration": {
3957
- "name": "DynamicRuleManagementStyles",
3958
- "module": "src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts"
3959
- }
3960
- },
3961
- {
3962
- "kind": "js",
3963
- "name": "DynamicRuleDialogStyles",
3964
- "declaration": {
3965
- "name": "DynamicRuleDialogStyles",
3966
- "module": "src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts"
3967
- }
3968
- }
3969
- ]
3970
- },
3971
- {
3972
- "kind": "javascript-module",
3973
- "path": "src/components/foundation-notification-dashboard/styles/management.styles.ts",
3974
- "declarations": [
3975
- {
3976
- "kind": "variable",
3977
- "name": "managementGridStyles",
3978
- "default": "css`\n :host {\n height: 100%;\n }\n\n .container {\n display: flex;\n height: 100%;\n flex-direction: column;\n }\n\n .header {\n display: flex;\n }\n\n .grid {\n height: 100%;\n }\n`"
3979
- }
3980
- ],
3981
- "exports": [
3982
- {
3983
- "kind": "js",
3984
- "name": "managementGridStyles",
3985
- "declaration": {
3986
- "name": "managementGridStyles",
3987
- "module": "src/components/foundation-notification-dashboard/styles/management.styles.ts"
3988
- }
3989
- }
3990
- ]
3991
- },
3992
- {
3993
- "kind": "javascript-module",
3994
- "path": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.styles.ts",
3995
- "declarations": [
3996
- {
3997
- "kind": "variable",
3998
- "name": "noItemsClass",
3999
- "type": {
4000
- "text": "string"
4001
- },
4002
- "default": "'no-items'",
4003
- "description": "Class to use when there are no items"
4004
- },
4005
- {
4006
- "kind": "variable",
4007
- "name": "FoundationInboxCounterStyles",
4008
- "default": "css`\n :host {\n display: inline-block;\n min-width: 16px;\n height: 16px;\n border-radius: 9px;\n text-align: center;\n color: #fff;\n line-height: 16px;\n font-size: 9px;\n font-weight: 700;\n background: ${BACKGROUND_COLOR};\n pointer-events: none;\n }\n\n .hidden {\n visibility: hidden;\n }\n\n :host(.${noItemsClass}) {\n display: none;\n }\n`"
4009
- }
4010
- ],
4011
- "exports": [
4012
- {
4013
- "kind": "js",
4014
- "name": "noItemsClass",
4015
- "declaration": {
4016
- "name": "noItemsClass",
4017
- "module": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.styles.ts"
3954
+ "name": "SEVERITY_INFORMATION",
3955
+ "module": "src/components/foundation-notification-dashboard/types/severity.ts"
4018
3956
  }
4019
3957
  },
4020
3958
  {
4021
3959
  "kind": "js",
4022
- "name": "FoundationInboxCounterStyles",
3960
+ "name": "SEVERITY_CRITICAL",
4023
3961
  "declaration": {
4024
- "name": "FoundationInboxCounterStyles",
4025
- "module": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.styles.ts"
3962
+ "name": "SEVERITY_CRITICAL",
3963
+ "module": "src/components/foundation-notification-dashboard/types/severity.ts"
4026
3964
  }
4027
- }
4028
- ]
4029
- },
4030
- {
4031
- "kind": "javascript-module",
4032
- "path": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.template.ts",
4033
- "declarations": [
4034
- {
4035
- "kind": "variable",
4036
- "name": "FoundationInboxCounterTemplate",
4037
- "default": "html<FoundationInboxCounter>`\n <template class=\"${(x) => classNames([noItemsClass, x.value < 1])}\">\n ${when(\n (x) => x.value > 0,\n html`\n ${(x) => (x.value > MAX_NUMBER_TO_DISPLAY ? `${MAX_NUMBER_TO_DISPLAY}+` : x.value)}\n `,\n )}\n </template>\n`"
4038
- }
4039
- ],
4040
- "exports": [
3965
+ },
4041
3966
  {
4042
3967
  "kind": "js",
4043
- "name": "FoundationInboxCounterTemplate",
3968
+ "name": "SEVERITY_SERIOUS",
4044
3969
  "declaration": {
4045
- "name": "FoundationInboxCounterTemplate",
4046
- "module": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.template.ts"
3970
+ "name": "SEVERITY_SERIOUS",
3971
+ "module": "src/components/foundation-notification-dashboard/types/severity.ts"
4047
3972
  }
4048
- }
4049
- ]
4050
- },
4051
- {
4052
- "kind": "javascript-module",
4053
- "path": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.ts",
4054
- "declarations": [
4055
- {
4056
- "kind": "class",
4057
- "description": "",
4058
- "name": "FoundationInboxCounter",
4059
- "members": [
4060
- {
4061
- "kind": "field",
4062
- "name": "value",
4063
- "type": {
4064
- "text": "number"
4065
- },
4066
- "default": "0"
4067
- },
4068
- {
4069
- "kind": "field",
4070
- "name": "connect",
4071
- "type": {
4072
- "text": "Connect"
4073
- }
4074
- },
4075
- {
4076
- "kind": "field",
4077
- "name": "inboxService",
4078
- "type": {
4079
- "text": "FoundationInboxService"
4080
- }
4081
- },
4082
- {
4083
- "kind": "field",
4084
- "name": "connectionSub",
4085
- "type": {
4086
- "text": "Subscription"
4087
- },
4088
- "privacy": "private"
4089
- },
4090
- {
4091
- "kind": "method",
4092
- "name": "subscribeToAlerts",
4093
- "privacy": "private",
4094
- "return": {
4095
- "type": {
4096
- "text": "Promise<void>"
4097
- }
4098
- },
4099
- "description": "Subscribes to alerts from the inbox service"
4100
- },
4101
- {
4102
- "kind": "field",
4103
- "name": "subscriptionHandler",
4104
- "privacy": "private",
4105
- "description": "Handles subscription updates from the inbox service"
4106
- }
4107
- ],
4108
- "superclass": {
4109
- "name": "GenesisElement",
4110
- "package": "@genesislcap/web-core"
4111
- },
4112
- "tagName": "foundation-inbox-counter",
4113
- "customElement": true
4114
- }
4115
- ],
4116
- "exports": [
3973
+ },
4117
3974
  {
4118
3975
  "kind": "js",
4119
- "name": "FoundationInboxCounter",
3976
+ "name": "SEVERITY_WARNING",
4120
3977
  "declaration": {
4121
- "name": "FoundationInboxCounter",
4122
- "module": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.ts"
3978
+ "name": "SEVERITY_WARNING",
3979
+ "module": "src/components/foundation-notification-dashboard/types/severity.ts"
4123
3980
  }
4124
3981
  },
4125
3982
  {
4126
- "kind": "custom-element-definition",
4127
- "name": "foundation-inbox-counter",
3983
+ "kind": "js",
3984
+ "name": "ALL_SEVERITIES",
4128
3985
  "declaration": {
4129
- "name": "FoundationInboxCounter",
4130
- "module": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.ts"
3986
+ "name": "ALL_SEVERITIES",
3987
+ "module": "src/components/foundation-notification-dashboard/types/severity.ts"
4131
3988
  }
4132
3989
  }
4133
3990
  ]
@@ -5423,25 +5280,168 @@
5423
5280
  "name": "GenesisElement",
5424
5281
  "package": "@genesislcap/web-core"
5425
5282
  },
5426
- "tagName": "inbox-subscription",
5283
+ "tagName": "inbox-subscription",
5284
+ "customElement": true
5285
+ }
5286
+ ],
5287
+ "exports": [
5288
+ {
5289
+ "kind": "js",
5290
+ "name": "InboxSubscription",
5291
+ "declaration": {
5292
+ "name": "InboxSubscription",
5293
+ "module": "src/components/foundation-inbox/components/inbox-subscription/inbox-subscription.ts"
5294
+ }
5295
+ },
5296
+ {
5297
+ "kind": "custom-element-definition",
5298
+ "name": "inbox-subscription",
5299
+ "declaration": {
5300
+ "name": "InboxSubscription",
5301
+ "module": "src/components/foundation-inbox/components/inbox-subscription/inbox-subscription.ts"
5302
+ }
5303
+ }
5304
+ ]
5305
+ },
5306
+ {
5307
+ "kind": "javascript-module",
5308
+ "path": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.styles.ts",
5309
+ "declarations": [
5310
+ {
5311
+ "kind": "variable",
5312
+ "name": "noItemsClass",
5313
+ "type": {
5314
+ "text": "string"
5315
+ },
5316
+ "default": "'no-items'",
5317
+ "description": "Class to use when there are no items"
5318
+ },
5319
+ {
5320
+ "kind": "variable",
5321
+ "name": "FoundationInboxCounterStyles",
5322
+ "default": "css`\n :host {\n display: inline-block;\n min-width: 16px;\n height: 16px;\n border-radius: 9px;\n text-align: center;\n color: #fff;\n line-height: 16px;\n font-size: 9px;\n font-weight: 700;\n background: ${BACKGROUND_COLOR};\n pointer-events: none;\n }\n\n .hidden {\n visibility: hidden;\n }\n\n :host(.${noItemsClass}) {\n display: none;\n }\n`"
5323
+ }
5324
+ ],
5325
+ "exports": [
5326
+ {
5327
+ "kind": "js",
5328
+ "name": "noItemsClass",
5329
+ "declaration": {
5330
+ "name": "noItemsClass",
5331
+ "module": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.styles.ts"
5332
+ }
5333
+ },
5334
+ {
5335
+ "kind": "js",
5336
+ "name": "FoundationInboxCounterStyles",
5337
+ "declaration": {
5338
+ "name": "FoundationInboxCounterStyles",
5339
+ "module": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.styles.ts"
5340
+ }
5341
+ }
5342
+ ]
5343
+ },
5344
+ {
5345
+ "kind": "javascript-module",
5346
+ "path": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.template.ts",
5347
+ "declarations": [
5348
+ {
5349
+ "kind": "variable",
5350
+ "name": "FoundationInboxCounterTemplate",
5351
+ "default": "html<FoundationInboxCounter>`\n <template class=\"${(x) => classNames([noItemsClass, x.value < 1])}\">\n ${when(\n (x) => x.value > 0,\n html`\n ${(x) => (x.value > MAX_NUMBER_TO_DISPLAY ? `${MAX_NUMBER_TO_DISPLAY}+` : x.value)}\n `,\n )}\n </template>\n`"
5352
+ }
5353
+ ],
5354
+ "exports": [
5355
+ {
5356
+ "kind": "js",
5357
+ "name": "FoundationInboxCounterTemplate",
5358
+ "declaration": {
5359
+ "name": "FoundationInboxCounterTemplate",
5360
+ "module": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.template.ts"
5361
+ }
5362
+ }
5363
+ ]
5364
+ },
5365
+ {
5366
+ "kind": "javascript-module",
5367
+ "path": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.ts",
5368
+ "declarations": [
5369
+ {
5370
+ "kind": "class",
5371
+ "description": "",
5372
+ "name": "FoundationInboxCounter",
5373
+ "members": [
5374
+ {
5375
+ "kind": "field",
5376
+ "name": "value",
5377
+ "type": {
5378
+ "text": "number"
5379
+ },
5380
+ "default": "0"
5381
+ },
5382
+ {
5383
+ "kind": "field",
5384
+ "name": "connect",
5385
+ "type": {
5386
+ "text": "Connect"
5387
+ }
5388
+ },
5389
+ {
5390
+ "kind": "field",
5391
+ "name": "inboxService",
5392
+ "type": {
5393
+ "text": "FoundationInboxService"
5394
+ }
5395
+ },
5396
+ {
5397
+ "kind": "field",
5398
+ "name": "connectionSub",
5399
+ "type": {
5400
+ "text": "Subscription"
5401
+ },
5402
+ "privacy": "private"
5403
+ },
5404
+ {
5405
+ "kind": "method",
5406
+ "name": "subscribeToAlerts",
5407
+ "privacy": "private",
5408
+ "return": {
5409
+ "type": {
5410
+ "text": "Promise<void>"
5411
+ }
5412
+ },
5413
+ "description": "Subscribes to alerts from the inbox service"
5414
+ },
5415
+ {
5416
+ "kind": "field",
5417
+ "name": "subscriptionHandler",
5418
+ "privacy": "private",
5419
+ "description": "Handles subscription updates from the inbox service"
5420
+ }
5421
+ ],
5422
+ "superclass": {
5423
+ "name": "GenesisElement",
5424
+ "package": "@genesislcap/web-core"
5425
+ },
5426
+ "tagName": "foundation-inbox-counter",
5427
5427
  "customElement": true
5428
5428
  }
5429
5429
  ],
5430
5430
  "exports": [
5431
5431
  {
5432
5432
  "kind": "js",
5433
- "name": "InboxSubscription",
5433
+ "name": "FoundationInboxCounter",
5434
5434
  "declaration": {
5435
- "name": "InboxSubscription",
5436
- "module": "src/components/foundation-inbox/components/inbox-subscription/inbox-subscription.ts"
5435
+ "name": "FoundationInboxCounter",
5436
+ "module": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.ts"
5437
5437
  }
5438
5438
  },
5439
5439
  {
5440
5440
  "kind": "custom-element-definition",
5441
- "name": "inbox-subscription",
5441
+ "name": "foundation-inbox-counter",
5442
5442
  "declaration": {
5443
- "name": "InboxSubscription",
5444
- "module": "src/components/foundation-inbox/components/inbox-subscription/inbox-subscription.ts"
5443
+ "name": "FoundationInboxCounter",
5444
+ "module": "src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.ts"
5445
5445
  }
5446
5446
  }
5447
5447
  ]
@@ -6065,99 +6065,461 @@
6065
6065
  "name": "GenesisElement",
6066
6066
  "package": "@genesislcap/web-core"
6067
6067
  },
6068
- "tagName": "screen-route-management",
6068
+ "tagName": "screen-route-management",
6069
+ "customElement": true
6070
+ }
6071
+ ],
6072
+ "exports": [
6073
+ {
6074
+ "kind": "js",
6075
+ "name": "ScreenRouteManagement",
6076
+ "declaration": {
6077
+ "name": "ScreenRouteManagement",
6078
+ "module": "src/components/foundation-notification-dashboard/components/routes/tabs/screen-route-management.ts"
6079
+ }
6080
+ },
6081
+ {
6082
+ "kind": "custom-element-definition",
6083
+ "name": "screen-route-management",
6084
+ "declaration": {
6085
+ "name": "ScreenRouteManagement",
6086
+ "module": "src/components/foundation-notification-dashboard/components/routes/tabs/screen-route-management.ts"
6087
+ }
6088
+ }
6089
+ ]
6090
+ },
6091
+ {
6092
+ "kind": "javascript-module",
6093
+ "path": "src/components/foundation-notification-dashboard/components/routes/tabs/slack-route-management.ts",
6094
+ "declarations": [
6095
+ {
6096
+ "kind": "class",
6097
+ "description": "",
6098
+ "name": "SlackRouteManagement",
6099
+ "superclass": {
6100
+ "name": "GenesisElement",
6101
+ "package": "@genesislcap/web-core"
6102
+ },
6103
+ "tagName": "slack-route-management",
6104
+ "customElement": true
6105
+ }
6106
+ ],
6107
+ "exports": [
6108
+ {
6109
+ "kind": "js",
6110
+ "name": "SlackRouteManagement",
6111
+ "declaration": {
6112
+ "name": "SlackRouteManagement",
6113
+ "module": "src/components/foundation-notification-dashboard/components/routes/tabs/slack-route-management.ts"
6114
+ }
6115
+ },
6116
+ {
6117
+ "kind": "custom-element-definition",
6118
+ "name": "slack-route-management",
6119
+ "declaration": {
6120
+ "name": "SlackRouteManagement",
6121
+ "module": "src/components/foundation-notification-dashboard/components/routes/tabs/slack-route-management.ts"
6122
+ }
6123
+ }
6124
+ ]
6125
+ },
6126
+ {
6127
+ "kind": "javascript-module",
6128
+ "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.template.ts",
6129
+ "declarations": [
6130
+ {
6131
+ "kind": "variable",
6132
+ "name": "RuleDialogTemplate",
6133
+ "default": "html<RuleDialog>`\n <rapid-modal ${ref('dialog')} class=\"dialog\" :onCloseCallback=${(x) => () => x.close()}>\n <div slot=\"top\" class=\"dialog-top\">${(x) => x.ruleDialogTitle}</div>\n\n <div class=\"dialog-content\">\n <div class=\"content-row\">\n <div class=\"control\">\n <rapid-text-field\n :value=${sync((x) => x.name)}\n @change=\"${(x) => x.validateRequiredFields()}\"\n autofocus\n autocomplete=\"off\"\n required\n >\n Name\n </rapid-text-field>\n </div>\n\n <div class=\"control\">\n <rapid-text-field\n :value=${sync((x) => x.description)}\n @change=\"${(x) => x.validateRequiredFields()}\"\n autocomplete=\"off\"\n required\n >\n Description\n </rapid-text-field>\n </div>\n </div>\n\n <div class=\"content-row\">\n <div class=\"control\">\n <label>Resource</label>\n <rapid-select\n :value=${sync((x) => x.resource)}\n title=${(x) => x.resource}\n position=\"below\"\n >\n ${repeat(\n (x) => x.resources,\n html`\n <rapid-option value=${(x) => x} title=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n </div>\n\n <div class=\"control\">\n <label>Topic</label>\n <rapid-combobox\n autocomplete=\"both\"\n :value=${sync((x) => x.topic)}\n title=${(x) => x.topic}\n >\n ${repeat(\n (x) => x.topics,\n html`\n <rapid-option value=${(x) => x} title=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-combobox>\n </div>\n\n <div class=\"control\">\n <label>Severity</label>\n <rapid-select :value=${sync((x) => x.severity)}>\n <options-datasource\n value-field=\"value\"\n label-field=\"value\"\n option-element=\"rapid-option\"\n :data=${(_) => Object.values(Severity).map((value) => ({ value }))}\n ></options-datasource>\n </rapid-select>\n </div>\n\n <div class=\"control\">\n <label>Update Type</label>\n <rapid-multiselect\n :selectedOptions=${(x) => x.updateType}\n @selectionChange=${(x, c) => {\n x.updateType = (c.event as CustomEvent).detail;\n }}\n search=\"false\"\n all=\"false\"\n >\n <multiselect-datasource\n value-field=\"value\"\n label-field=\"value\"\n :data=${() => Object.values(UpdateType).map((value) => ({ value, label: value }))}\n ></multiselect-datasource>\n </rapid-multiselect>\n </div>\n </div>\n\n <div class=\"content-row\">\n <div class=\"control\">\n <rapid-text-field\n required\n :value=${sync((x) => x.header)}\n @change=\"${(x) => x.validateRequiredFields()}\"\n autocomplete=\"off\"\n >\n Header\n </rapid-text-field>\n </div>\n\n <div class=\"control\">\n <rapid-text-field\n required\n :value=${sync((x) => x.message)}\n @change=\"${(x) => x.validateRequiredFields()}\"\n autocomplete=\"off\"\n >\n Message\n </rapid-text-field>\n </div>\n </div>\n\n <div class=\"control\">\n <label>Condition(s)</label>\n <div class=\"items\">\n <div class=\"content-row item\">\n ${repeat(\n (x) => x.conditions,\n html<ConditionNode, RuleDialog>`\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.editCondition(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteCondition(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.editCondition(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteCondition(eventDetail(c))}\n ></rule-condition-builder>\n `,\n )}\n `,\n { positioning: true },\n )}\n </div>\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()}>\n + Group\n </rapid-button>\n </div>\n </div>\n <rapid-text-area\n class=\"expression-preview\"\n readonly\n :value=${(x) => x.rawExpressionPreview}\n >\n Compiled expression\n </rapid-text-area>\n </div>\n </div>\n\n <div slot=\"bottom\" class=\"dialog-bottom\">\n <rapid-button\n appearance=\"primary\"\n @click=${(x) => x.submit()}\n ?disabled=${(x) => x.submitDisabled}\n >\n Submit\n </rapid-button>\n </div>\n </rapid-modal>\n`"
6134
+ }
6135
+ ],
6136
+ "exports": [
6137
+ {
6138
+ "kind": "js",
6139
+ "name": "RuleDialogTemplate",
6140
+ "declaration": {
6141
+ "name": "RuleDialogTemplate",
6142
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.template.ts"
6143
+ }
6144
+ }
6145
+ ]
6146
+ },
6147
+ {
6148
+ "kind": "javascript-module",
6149
+ "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.ts",
6150
+ "declarations": [
6151
+ {
6152
+ "kind": "class",
6153
+ "description": "Dialog for creating or editing notification rules.",
6154
+ "name": "RuleDialog",
6155
+ "members": [
6156
+ {
6157
+ "kind": "field",
6158
+ "name": "ruleService",
6159
+ "type": {
6160
+ "text": "RuleService"
6161
+ }
6162
+ },
6163
+ {
6164
+ "kind": "field",
6165
+ "name": "systemService",
6166
+ "type": {
6167
+ "text": "SystemService"
6168
+ }
6169
+ },
6170
+ {
6171
+ "kind": "field",
6172
+ "name": "notifyService",
6173
+ "type": {
6174
+ "text": "NotifyService"
6175
+ }
6176
+ },
6177
+ {
6178
+ "kind": "field",
6179
+ "name": "dialog",
6180
+ "type": {
6181
+ "text": "Modal"
6182
+ }
6183
+ },
6184
+ {
6185
+ "kind": "field",
6186
+ "name": "ruleDialogMode",
6187
+ "type": {
6188
+ "text": "(typeof RuleDialogMode)[keyof typeof RuleDialogMode]"
6189
+ }
6190
+ },
6191
+ {
6192
+ "kind": "field",
6193
+ "name": "ruleId",
6194
+ "type": {
6195
+ "text": "string"
6196
+ },
6197
+ "privacy": "private",
6198
+ "default": "null"
6199
+ },
6200
+ {
6201
+ "kind": "field",
6202
+ "name": "name",
6203
+ "type": {
6204
+ "text": "string"
6205
+ },
6206
+ "default": "''"
6207
+ },
6208
+ {
6209
+ "kind": "field",
6210
+ "name": "description",
6211
+ "type": {
6212
+ "text": "string"
6213
+ },
6214
+ "default": "''"
6215
+ },
6216
+ {
6217
+ "kind": "field",
6218
+ "name": "resource",
6219
+ "type": {
6220
+ "text": "string"
6221
+ },
6222
+ "default": "''"
6223
+ },
6224
+ {
6225
+ "kind": "field",
6226
+ "name": "topic",
6227
+ "type": {
6228
+ "text": "string"
6229
+ },
6230
+ "default": "''"
6231
+ },
6232
+ {
6233
+ "kind": "field",
6234
+ "name": "severity",
6235
+ "type": {
6236
+ "text": "string"
6237
+ },
6238
+ "default": "''"
6239
+ },
6240
+ {
6241
+ "kind": "field",
6242
+ "name": "updateType",
6243
+ "type": {
6244
+ "text": "UpdateType[]"
6245
+ },
6246
+ "default": "defaultUpdateType"
6247
+ },
6248
+ {
6249
+ "kind": "field",
6250
+ "name": "header",
6251
+ "type": {
6252
+ "text": "string"
6253
+ },
6254
+ "default": "''"
6255
+ },
6256
+ {
6257
+ "kind": "field",
6258
+ "name": "message",
6259
+ "type": {
6260
+ "text": "string"
6261
+ },
6262
+ "default": "''"
6263
+ },
6264
+ {
6265
+ "kind": "field",
6266
+ "name": "conditions",
6267
+ "type": {
6268
+ "text": "Array<ConditionNode>"
6269
+ },
6270
+ "default": "[]"
6271
+ },
6272
+ {
6273
+ "kind": "field",
6274
+ "name": "submitDisabled",
6275
+ "type": {
6276
+ "text": "boolean"
6277
+ }
6278
+ },
6279
+ {
6280
+ "kind": "field",
6281
+ "name": "rawExpressionPreview",
6282
+ "type": {
6283
+ "text": "string"
6284
+ },
6285
+ "default": "''"
6286
+ },
6287
+ {
6288
+ "kind": "field",
6289
+ "name": "resources",
6290
+ "type": {
6291
+ "text": "Array<string>"
6292
+ },
6293
+ "default": "[]"
6294
+ },
6295
+ {
6296
+ "kind": "field",
6297
+ "name": "fields",
6298
+ "type": {
6299
+ "text": "Array<Field>"
6300
+ },
6301
+ "default": "[]"
6302
+ },
6303
+ {
6304
+ "kind": "field",
6305
+ "name": "topics",
6306
+ "type": {
6307
+ "text": "string[]"
6308
+ },
6309
+ "default": "[]"
6310
+ },
6311
+ {
6312
+ "kind": "method",
6313
+ "name": "openDialog",
6314
+ "privacy": "public",
6315
+ "parameters": [
6316
+ {
6317
+ "name": "params",
6318
+ "type": {
6319
+ "text": "RuleDialogParams"
6320
+ }
6321
+ }
6322
+ ]
6323
+ },
6324
+ {
6325
+ "kind": "method",
6326
+ "name": "close"
6327
+ },
6328
+ {
6329
+ "kind": "method",
6330
+ "name": "createRule",
6331
+ "privacy": "private"
6332
+ },
6333
+ {
6334
+ "kind": "method",
6335
+ "name": "editRule",
6336
+ "privacy": "private",
6337
+ "parameters": [
6338
+ {
6339
+ "name": "data"
6340
+ }
6341
+ ]
6342
+ },
6343
+ {
6344
+ "kind": "method",
6345
+ "name": "refreshExpressionPreview",
6346
+ "privacy": "private"
6347
+ },
6348
+ {
6349
+ "kind": "method",
6350
+ "name": "attributeAssignments",
6351
+ "privacy": "private",
6352
+ "parameters": [
6353
+ {
6354
+ "name": "assignments"
6355
+ }
6356
+ ]
6357
+ },
6358
+ {
6359
+ "kind": "field",
6360
+ "name": "ruleDialogTitle",
6361
+ "type": {
6362
+ "text": "string"
6363
+ },
6364
+ "readonly": true
6365
+ },
6366
+ {
6367
+ "kind": "method",
6368
+ "name": "submit"
6369
+ },
6370
+ {
6371
+ "kind": "method",
6372
+ "name": "createRuleObject",
6373
+ "privacy": "private",
6374
+ "return": {
6375
+ "type": {
6376
+ "text": "Rule"
6377
+ }
6378
+ }
6379
+ },
6380
+ {
6381
+ "kind": "method",
6382
+ "name": "validateResponse",
6383
+ "parameters": [
6384
+ {
6385
+ "name": "response"
6386
+ }
6387
+ ]
6388
+ },
6389
+ {
6390
+ "kind": "method",
6391
+ "name": "resourceChanged"
6392
+ },
6393
+ {
6394
+ "kind": "method",
6395
+ "name": "newCondition"
6396
+ },
6397
+ {
6398
+ "kind": "method",
6399
+ "name": "newGroup"
6400
+ },
6401
+ {
6402
+ "kind": "method",
6403
+ "name": "editCondition",
6404
+ "parameters": [
6405
+ {
6406
+ "name": "editedCondition",
6407
+ "type": {
6408
+ "text": "ConditionNode"
6409
+ }
6410
+ }
6411
+ ]
6412
+ },
6413
+ {
6414
+ "kind": "method",
6415
+ "name": "deleteCondition",
6416
+ "parameters": [
6417
+ {
6418
+ "name": "deletedCondition",
6419
+ "type": {
6420
+ "text": "ConditionNode"
6421
+ }
6422
+ }
6423
+ ]
6424
+ },
6425
+ {
6426
+ "kind": "method",
6427
+ "name": "validateRequiredFields",
6428
+ "privacy": "public"
6429
+ }
6430
+ ],
6431
+ "events": [
6432
+ {
6433
+ "description": "Fired when the dialog should close",
6434
+ "name": "close"
6435
+ }
6436
+ ],
6437
+ "superclass": {
6438
+ "name": "GenesisElement",
6439
+ "package": "@genesislcap/web-core"
6440
+ },
6441
+ "tagName": "rule-dialog",
6069
6442
  "customElement": true
6070
6443
  }
6071
6444
  ],
6072
6445
  "exports": [
6073
6446
  {
6074
6447
  "kind": "js",
6075
- "name": "ScreenRouteManagement",
6448
+ "name": "RuleDialog",
6076
6449
  "declaration": {
6077
- "name": "ScreenRouteManagement",
6078
- "module": "src/components/foundation-notification-dashboard/components/routes/tabs/screen-route-management.ts"
6450
+ "name": "RuleDialog",
6451
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.ts"
6079
6452
  }
6080
6453
  },
6081
6454
  {
6082
6455
  "kind": "custom-element-definition",
6083
- "name": "screen-route-management",
6456
+ "name": "rule-dialog",
6084
6457
  "declaration": {
6085
- "name": "ScreenRouteManagement",
6086
- "module": "src/components/foundation-notification-dashboard/components/routes/tabs/screen-route-management.ts"
6458
+ "name": "RuleDialog",
6459
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.ts"
6087
6460
  }
6088
6461
  }
6089
6462
  ]
6090
6463
  },
6091
6464
  {
6092
6465
  "kind": "javascript-module",
6093
- "path": "src/components/foundation-notification-dashboard/components/routes/tabs/slack-route-management.ts",
6466
+ "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.types.ts",
6094
6467
  "declarations": [
6095
6468
  {
6096
- "kind": "class",
6097
- "description": "",
6098
- "name": "SlackRouteManagement",
6099
- "superclass": {
6100
- "name": "GenesisElement",
6101
- "package": "@genesislcap/web-core"
6469
+ "kind": "variable",
6470
+ "name": "RuleDialogMode",
6471
+ "type": {
6472
+ "text": "{\n CREATE: 'create',\n EDIT: 'edit',\n}"
6102
6473
  },
6103
- "tagName": "slack-route-management",
6104
- "customElement": true
6474
+ "default": "{\n CREATE: 'create',\n EDIT: 'edit',\n}"
6105
6475
  }
6106
6476
  ],
6107
6477
  "exports": [
6108
6478
  {
6109
6479
  "kind": "js",
6110
- "name": "SlackRouteManagement",
6111
- "declaration": {
6112
- "name": "SlackRouteManagement",
6113
- "module": "src/components/foundation-notification-dashboard/components/routes/tabs/slack-route-management.ts"
6114
- }
6115
- },
6116
- {
6117
- "kind": "custom-element-definition",
6118
- "name": "slack-route-management",
6480
+ "name": "RuleDialogMode",
6119
6481
  "declaration": {
6120
- "name": "SlackRouteManagement",
6121
- "module": "src/components/foundation-notification-dashboard/components/routes/tabs/slack-route-management.ts"
6482
+ "name": "RuleDialogMode",
6483
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.types.ts"
6122
6484
  }
6123
6485
  }
6124
6486
  ]
6125
6487
  },
6126
6488
  {
6127
6489
  "kind": "javascript-module",
6128
- "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.template.ts",
6490
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.template.ts",
6129
6491
  "declarations": [
6130
6492
  {
6131
6493
  "kind": "variable",
6132
- "name": "RuleDialogTemplate",
6133
- "default": "html<RuleDialog>`\n <rapid-modal ${ref('dialog')} class=\"dialog\" :onCloseCallback=${(x) => () => x.close()}>\n <div slot=\"top\" class=\"dialog-top\">${(x) => x.ruleDialogTitle}</div>\n\n <div class=\"dialog-content\">\n <div class=\"content-row\">\n <div class=\"control\">\n <rapid-text-field\n :value=${sync((x) => x.name)}\n @change=\"${(x) => x.validateRequiredFields()}\"\n autofocus\n autocomplete=\"off\"\n required\n >\n Name\n </rapid-text-field>\n </div>\n\n <div class=\"control\">\n <rapid-text-field\n :value=${sync((x) => x.description)}\n @change=\"${(x) => x.validateRequiredFields()}\"\n autocomplete=\"off\"\n required\n >\n Description\n </rapid-text-field>\n </div>\n </div>\n\n <div class=\"content-row\">\n <div class=\"control\">\n <label>Resource</label>\n <rapid-select\n :value=${sync((x) => x.resource)}\n title=${(x) => x.resource}\n position=\"below\"\n >\n ${repeat(\n (x) => x.resources,\n html`\n <rapid-option value=${(x) => x} title=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n </div>\n\n <div class=\"control\">\n <label>Topic</label>\n <rapid-combobox\n autocomplete=\"both\"\n :value=${sync((x) => x.topic)}\n title=${(x) => x.topic}\n >\n ${repeat(\n (x) => x.topics,\n html`\n <rapid-option value=${(x) => x} title=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-combobox>\n </div>\n\n <div class=\"control\">\n <label>Severity</label>\n <rapid-select :value=${sync((x) => x.severity)}>\n <options-datasource\n value-field=\"value\"\n label-field=\"value\"\n option-element=\"rapid-option\"\n :data=${(_) => Object.values(Severity).map((value) => ({ value }))}\n ></options-datasource>\n </rapid-select>\n </div>\n\n <div class=\"control\">\n <label>Update Type</label>\n <rapid-multiselect\n :selectedOptions=${(x) => x.updateType}\n @selectionChange=${(x, c) => {\n x.updateType = (c.event as CustomEvent).detail;\n }}\n search=\"false\"\n all=\"false\"\n >\n <multiselect-datasource\n value-field=\"value\"\n label-field=\"value\"\n :data=${() => Object.values(UpdateType).map((value) => ({ value, label: value }))}\n ></multiselect-datasource>\n </rapid-multiselect>\n </div>\n </div>\n\n <div class=\"content-row\">\n <div class=\"control\">\n <rapid-text-field\n required\n :value=${sync((x) => x.header)}\n @change=\"${(x) => x.validateRequiredFields()}\"\n autocomplete=\"off\"\n >\n Header\n </rapid-text-field>\n </div>\n\n <div class=\"control\">\n <rapid-text-field\n required\n :value=${sync((x) => x.message)}\n @change=\"${(x) => x.validateRequiredFields()}\"\n autocomplete=\"off\"\n >\n Message\n </rapid-text-field>\n </div>\n </div>\n\n <div class=\"control\">\n <label>Condition(s)</label>\n <div class=\"items\">\n <div class=\"content-row item\">\n ${repeat(\n (x) => x.conditions,\n html<ConditionNode, RuleDialog>`\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.editCondition(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteCondition(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.editCondition(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteCondition(eventDetail(c))}\n ></rule-condition-builder>\n `,\n )}\n `,\n { positioning: true },\n )}\n </div>\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()}>\n + Group\n </rapid-button>\n </div>\n </div>\n <rapid-text-area\n class=\"expression-preview\"\n readonly\n :value=${(x) => x.rawExpressionPreview}\n >\n Compiled expression\n </rapid-text-area>\n </div>\n </div>\n\n <div slot=\"bottom\" class=\"dialog-bottom\">\n <rapid-button\n appearance=\"primary\"\n @click=${(x) => x.submit()}\n ?disabled=${(x) => x.submitDisabled}\n >\n Submit\n </rapid-button>\n </div>\n </rapid-modal>\n`"
6494
+ "name": "TemplateDialogTemplate",
6495
+ "default": "html<TemplateDialog>`\n <rapid-modal ${ref('dialog')} class=\"dialog\" :onCloseCallback=${(x) => () => x.close()}>\n <div slot=\"top\" class=\"dialog-top\">${(x) => x.templateDialogTitle}</div>\n\n <div class=\"dialog-content\">\n <div class=\"content-row\">\n <div class=\"control\">\n <rapid-text-field :value=${sync((x) => x.name)} autofocus>Name</rapid-text-field>\n </div>\n\n <div class=\"control\">\n <rapid-text-field :value=${sync((x) => x.description)}>Description</rapid-text-field>\n </div>\n </div>\n\n <div class=\"content-row\">\n <div class=\"control\">\n <label>Resource</label>\n <rapid-select :value=${sync((x) => x.resource)} position=\"below\">\n ${repeat(\n (x) => x.resources,\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n </div>\n\n <div class=\"control\">\n <label>Topic</label>\n <rapid-select :value=${sync((x) => x.topic)}>\n ${repeat(\n (x) => x.topics,\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n </div>\n\n <div class=\"control\">\n <label>Severity</label>\n <rapid-select :value=${sync((x) => x.severity)}>\n <options-datasource\n value-field=\"value\"\n label-field=\"value\"\n option-element=\"rapid-option\"\n :data=${(_) => Object.values(Severity).map((value) => ({ value }))}\n ></options-datasource>\n </rapid-select>\n </div>\n\n <div class=\"control\">\n <label>Update Type</label>\n <rapid-multiselect\n :selectedOptions=${(x) => x.updateType}\n @selectionChange=${(x, c) => {\n x.updateType = (c.event as CustomEvent).detail;\n }}\n search=\"false\"\n all=\"false\"\n >\n <multiselect-datasource\n value-field=\"value\"\n label-field=\"value\"\n :data=${() => Object.values(UpdateType).map((value) => ({ value, label: value }))}\n ></multiselect-datasource>\n </rapid-multiselect>\n </div>\n </div>\n\n <div class=\"content-row\">\n <div class=\"control\">\n <rapid-text-field :value=${sync((x) => x.header)}>Header</rapid-text-field>\n </div>\n\n <div class=\"control\">\n <rapid-text-field :value=${sync((x) => x.message)}>Message</rapid-text-field>\n </div>\n </div>\n\n <div class=\"control\">\n <label>Parameter(s)</label>\n <div class=\"items\">\n <div class=\"content-row item\">\n ${repeat(\n (x) => x.parameters,\n html`\n <parameter-builder\n :parameter=${(x) => x}\n @edit=${(x, c) => c.parent.editParameter(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteParameter(eventDetail(c))}\n ></parameter-builder>\n `,\n )}\n </div>\n\n <div class=\"content-row\">\n <rapid-button @click=${(x) => x.newParameter()}>+ Parameter</rapid-button>\n </div>\n </div>\n </div>\n\n <div class=\"control\">\n <label>Condition(s)</label>\n <div class=\"items\">\n <div class=\"content-row item\">\n ${repeat(\n (x) => x.conditions,\n html<ConditionNode, TemplateDialog>`\n ${when(\n (x) => isGroup(x),\n html<ConditionNode>`\n <template-condition-group\n :fields=${(x, c) => c.parent.fields}\n :parameters=${(x, c) => c.parent.parameters}\n :node=${(x) => x}\n :isFirst=${(x, c) => c.index === 0}\n @edit=${(x, c) => c.parent.editCondition(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteCondition(eventDetail(c))}\n ></template-condition-group>\n `,\n )}\n ${when(\n (x) => !isGroup(x),\n html<ConditionNode>`\n <template-condition-builder\n :fields=${(x, c) => c.parent.fields}\n :parameters=${(x, c) => c.parent.parameters}\n :condition=${(x) => x}\n :isFirst=${(x, c) => c.index === 0}\n @edit=${(x, c) => c.parent.editCondition(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteCondition(eventDetail(c))}\n ></template-condition-builder>\n `,\n )}\n `,\n { positioning: true },\n )}\n </div>\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()}>\n + Group\n </rapid-button>\n </div>\n </div>\n <rapid-text-area\n class=\"expression-preview\"\n readonly\n :value=${(x) => x.rawExpressionPreview}\n >\n Compiled expression\n </rapid-text-area>\n </div>\n </div>\n\n <div slot=\"bottom\" class=\"dialog-bottom\">\n <rapid-button appearance=\"primary\" @click=${(x) => x.submit()}>Submit</rapid-button>\n </div>\n </rapid-modal>\n`"
6134
6496
  }
6135
6497
  ],
6136
6498
  "exports": [
6137
6499
  {
6138
6500
  "kind": "js",
6139
- "name": "RuleDialogTemplate",
6501
+ "name": "TemplateDialogTemplate",
6140
6502
  "declaration": {
6141
- "name": "RuleDialogTemplate",
6142
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.template.ts"
6503
+ "name": "TemplateDialogTemplate",
6504
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.template.ts"
6143
6505
  }
6144
6506
  }
6145
6507
  ]
6146
6508
  },
6147
6509
  {
6148
6510
  "kind": "javascript-module",
6149
- "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.ts",
6511
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.ts",
6150
6512
  "declarations": [
6151
6513
  {
6152
6514
  "kind": "class",
6153
- "description": "Dialog for creating or editing notification rules.",
6154
- "name": "RuleDialog",
6515
+ "description": "Dialog for creating or editing notification templates.",
6516
+ "name": "TemplateDialog",
6155
6517
  "members": [
6156
6518
  {
6157
6519
  "kind": "field",
6158
- "name": "ruleService",
6520
+ "name": "templateService",
6159
6521
  "type": {
6160
- "text": "RuleService"
6522
+ "text": "TemplateService"
6161
6523
  }
6162
6524
  },
6163
6525
  {
@@ -6183,14 +6545,15 @@
6183
6545
  },
6184
6546
  {
6185
6547
  "kind": "field",
6186
- "name": "ruleDialogMode",
6548
+ "name": "templateDialogMode",
6187
6549
  "type": {
6188
- "text": "(typeof RuleDialogMode)[keyof typeof RuleDialogMode]"
6189
- }
6550
+ "text": "(typeof TemplateDialogMode)[keyof typeof TemplateDialogMode]"
6551
+ },
6552
+ "default": "null"
6190
6553
  },
6191
6554
  {
6192
6555
  "kind": "field",
6193
- "name": "ruleId",
6556
+ "name": "templateId",
6194
6557
  "type": {
6195
6558
  "text": "string"
6196
6559
  },
@@ -6203,7 +6566,7 @@
6203
6566
  "type": {
6204
6567
  "text": "string"
6205
6568
  },
6206
- "default": "''"
6569
+ "default": "null"
6207
6570
  },
6208
6571
  {
6209
6572
  "kind": "field",
@@ -6211,7 +6574,23 @@
6211
6574
  "type": {
6212
6575
  "text": "string"
6213
6576
  },
6214
- "default": "''"
6577
+ "default": "null"
6578
+ },
6579
+ {
6580
+ "kind": "field",
6581
+ "name": "header",
6582
+ "type": {
6583
+ "text": "null"
6584
+ },
6585
+ "default": "null"
6586
+ },
6587
+ {
6588
+ "kind": "field",
6589
+ "name": "message",
6590
+ "type": {
6591
+ "text": "null"
6592
+ },
6593
+ "default": "null"
6215
6594
  },
6216
6595
  {
6217
6596
  "kind": "field",
@@ -6247,19 +6626,11 @@
6247
6626
  },
6248
6627
  {
6249
6628
  "kind": "field",
6250
- "name": "header",
6251
- "type": {
6252
- "text": "string"
6253
- },
6254
- "default": "''"
6255
- },
6256
- {
6257
- "kind": "field",
6258
- "name": "message",
6629
+ "name": "parameters",
6259
6630
  "type": {
6260
- "text": "string"
6631
+ "text": "Array<ParameterBuilderEntity>"
6261
6632
  },
6262
- "default": "''"
6633
+ "default": "[]"
6263
6634
  },
6264
6635
  {
6265
6636
  "kind": "field",
@@ -6269,13 +6640,6 @@
6269
6640
  },
6270
6641
  "default": "[]"
6271
6642
  },
6272
- {
6273
- "kind": "field",
6274
- "name": "submitDisabled",
6275
- "type": {
6276
- "text": "boolean"
6277
- }
6278
- },
6279
6643
  {
6280
6644
  "kind": "field",
6281
6645
  "name": "rawExpressionPreview",
@@ -6304,10 +6668,15 @@
6304
6668
  "kind": "field",
6305
6669
  "name": "topics",
6306
6670
  "type": {
6307
- "text": "string[]"
6671
+ "text": "Array<string>"
6308
6672
  },
6309
6673
  "default": "[]"
6310
6674
  },
6675
+ {
6676
+ "kind": "field",
6677
+ "name": "requiredFields",
6678
+ "privacy": "private"
6679
+ },
6311
6680
  {
6312
6681
  "kind": "method",
6313
6682
  "name": "openDialog",
@@ -6316,7 +6685,7 @@
6316
6685
  {
6317
6686
  "name": "params",
6318
6687
  "type": {
6319
- "text": "RuleDialogParams"
6688
+ "text": "any"
6320
6689
  }
6321
6690
  }
6322
6691
  ]
@@ -6327,12 +6696,12 @@
6327
6696
  },
6328
6697
  {
6329
6698
  "kind": "method",
6330
- "name": "createRule",
6699
+ "name": "createTemplate",
6331
6700
  "privacy": "private"
6332
6701
  },
6333
6702
  {
6334
6703
  "kind": "method",
6335
- "name": "editRule",
6704
+ "name": "editTemplate",
6336
6705
  "privacy": "private",
6337
6706
  "parameters": [
6338
6707
  {
@@ -6357,7 +6726,7 @@
6357
6726
  },
6358
6727
  {
6359
6728
  "kind": "field",
6360
- "name": "ruleDialogTitle",
6729
+ "name": "templateDialogTitle",
6361
6730
  "type": {
6362
6731
  "text": "string"
6363
6732
  },
@@ -6369,11 +6738,11 @@
6369
6738
  },
6370
6739
  {
6371
6740
  "kind": "method",
6372
- "name": "createRuleObject",
6741
+ "name": "createTemplateObject",
6373
6742
  "privacy": "private",
6374
6743
  "return": {
6375
6744
  "type": {
6376
- "text": "Rule"
6745
+ "text": "Template"
6377
6746
  }
6378
6747
  }
6379
6748
  },
@@ -6424,8 +6793,40 @@
6424
6793
  },
6425
6794
  {
6426
6795
  "kind": "method",
6796
+ "name": "newParameter"
6797
+ },
6798
+ {
6799
+ "kind": "method",
6800
+ "name": "editParameter",
6801
+ "parameters": [
6802
+ {
6803
+ "name": "editedParameter",
6804
+ "type": {
6805
+ "text": "ParameterBuilderEntity"
6806
+ }
6807
+ }
6808
+ ]
6809
+ },
6810
+ {
6811
+ "kind": "method",
6812
+ "name": "deleteParameter",
6813
+ "parameters": [
6814
+ {
6815
+ "name": "deletedParameter",
6816
+ "type": {
6817
+ "text": "ParameterBuilderEntity"
6818
+ }
6819
+ }
6820
+ ]
6821
+ },
6822
+ {
6823
+ "kind": "field",
6427
6824
  "name": "validateRequiredFields",
6428
- "privacy": "public"
6825
+ "type": {
6826
+ "text": "boolean"
6827
+ },
6828
+ "privacy": "public",
6829
+ "readonly": true
6429
6830
  }
6430
6831
  ],
6431
6832
  "events": [
@@ -6438,36 +6839,36 @@
6438
6839
  "name": "GenesisElement",
6439
6840
  "package": "@genesislcap/web-core"
6440
6841
  },
6441
- "tagName": "rule-dialog",
6842
+ "tagName": "template-dialog",
6442
6843
  "customElement": true
6443
6844
  }
6444
6845
  ],
6445
6846
  "exports": [
6446
6847
  {
6447
6848
  "kind": "js",
6448
- "name": "RuleDialog",
6849
+ "name": "TemplateDialog",
6449
6850
  "declaration": {
6450
- "name": "RuleDialog",
6451
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.ts"
6851
+ "name": "TemplateDialog",
6852
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.ts"
6452
6853
  }
6453
6854
  },
6454
6855
  {
6455
6856
  "kind": "custom-element-definition",
6456
- "name": "rule-dialog",
6857
+ "name": "template-dialog",
6457
6858
  "declaration": {
6458
- "name": "RuleDialog",
6459
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.ts"
6859
+ "name": "TemplateDialog",
6860
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.ts"
6460
6861
  }
6461
6862
  }
6462
6863
  ]
6463
6864
  },
6464
6865
  {
6465
6866
  "kind": "javascript-module",
6466
- "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.types.ts",
6867
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.types.ts",
6467
6868
  "declarations": [
6468
6869
  {
6469
6870
  "kind": "variable",
6470
- "name": "RuleDialogMode",
6871
+ "name": "TemplateDialogMode",
6471
6872
  "type": {
6472
6873
  "text": "{\n CREATE: 'create',\n EDIT: 'edit',\n}"
6473
6874
  },
@@ -6477,100 +6878,77 @@
6477
6878
  "exports": [
6478
6879
  {
6479
6880
  "kind": "js",
6480
- "name": "RuleDialogMode",
6881
+ "name": "TemplateDialogMode",
6481
6882
  "declaration": {
6482
- "name": "RuleDialogMode",
6483
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.types.ts"
6883
+ "name": "TemplateDialogMode",
6884
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.types.ts"
6484
6885
  }
6485
6886
  }
6486
6887
  ]
6487
6888
  },
6488
6889
  {
6489
6890
  "kind": "javascript-module",
6490
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.template.ts",
6891
+ "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.template.ts",
6491
6892
  "declarations": [
6492
6893
  {
6493
6894
  "kind": "variable",
6494
- "name": "TemplateDialogTemplate",
6495
- "default": "html<TemplateDialog>`\n <rapid-modal ${ref('dialog')} class=\"dialog\" :onCloseCallback=${(x) => () => x.close()}>\n <div slot=\"top\" class=\"dialog-top\">${(x) => x.templateDialogTitle}</div>\n\n <div class=\"dialog-content\">\n <div class=\"content-row\">\n <div class=\"control\">\n <rapid-text-field :value=${sync((x) => x.name)} autofocus>Name</rapid-text-field>\n </div>\n\n <div class=\"control\">\n <rapid-text-field :value=${sync((x) => x.description)}>Description</rapid-text-field>\n </div>\n </div>\n\n <div class=\"content-row\">\n <div class=\"control\">\n <label>Resource</label>\n <rapid-select :value=${sync((x) => x.resource)} position=\"below\">\n ${repeat(\n (x) => x.resources,\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n </div>\n\n <div class=\"control\">\n <label>Topic</label>\n <rapid-select :value=${sync((x) => x.topic)}>\n ${repeat(\n (x) => x.topics,\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n </div>\n\n <div class=\"control\">\n <label>Severity</label>\n <rapid-select :value=${sync((x) => x.severity)}>\n <options-datasource\n value-field=\"value\"\n label-field=\"value\"\n option-element=\"rapid-option\"\n :data=${(_) => Object.values(Severity).map((value) => ({ value }))}\n ></options-datasource>\n </rapid-select>\n </div>\n\n <div class=\"control\">\n <label>Update Type</label>\n <rapid-multiselect\n :selectedOptions=${(x) => x.updateType}\n @selectionChange=${(x, c) => {\n x.updateType = (c.event as CustomEvent).detail;\n }}\n search=\"false\"\n all=\"false\"\n >\n <multiselect-datasource\n value-field=\"value\"\n label-field=\"value\"\n :data=${() => Object.values(UpdateType).map((value) => ({ value, label: value }))}\n ></multiselect-datasource>\n </rapid-multiselect>\n </div>\n </div>\n\n <div class=\"content-row\">\n <div class=\"control\">\n <rapid-text-field :value=${sync((x) => x.header)}>Header</rapid-text-field>\n </div>\n\n <div class=\"control\">\n <rapid-text-field :value=${sync((x) => x.message)}>Message</rapid-text-field>\n </div>\n </div>\n\n <div class=\"control\">\n <label>Parameter(s)</label>\n <div class=\"items\">\n <div class=\"content-row item\">\n ${repeat(\n (x) => x.parameters,\n html`\n <parameter-builder\n :parameter=${(x) => x}\n @edit=${(x, c) => c.parent.editParameter(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteParameter(eventDetail(c))}\n ></parameter-builder>\n `,\n )}\n </div>\n\n <div class=\"content-row\">\n <rapid-button @click=${(x) => x.newParameter()}>+ Parameter</rapid-button>\n </div>\n </div>\n </div>\n\n <div class=\"control\">\n <label>Condition(s)</label>\n <div class=\"items\">\n <div class=\"content-row item\">\n ${repeat(\n (x) => x.conditions,\n html<ConditionNode, TemplateDialog>`\n ${when(\n (x) => isGroup(x),\n html<ConditionNode>`\n <template-condition-group\n :fields=${(x, c) => c.parent.fields}\n :parameters=${(x, c) => c.parent.parameters}\n :node=${(x) => x}\n :isFirst=${(x, c) => c.index === 0}\n @edit=${(x, c) => c.parent.editCondition(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteCondition(eventDetail(c))}\n ></template-condition-group>\n `,\n )}\n ${when(\n (x) => !isGroup(x),\n html<ConditionNode>`\n <template-condition-builder\n :fields=${(x, c) => c.parent.fields}\n :parameters=${(x, c) => c.parent.parameters}\n :condition=${(x) => x}\n :isFirst=${(x, c) => c.index === 0}\n @edit=${(x, c) => c.parent.editCondition(eventDetail(c))}\n @delete=${(x, c) => c.parent.deleteCondition(eventDetail(c))}\n ></template-condition-builder>\n `,\n )}\n `,\n { positioning: true },\n )}\n </div>\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()}>\n + Group\n </rapid-button>\n </div>\n </div>\n <rapid-text-area\n class=\"expression-preview\"\n readonly\n :value=${(x) => x.rawExpressionPreview}\n >\n Compiled expression\n </rapid-text-area>\n </div>\n </div>\n\n <div slot=\"bottom\" class=\"dialog-bottom\">\n <rapid-button appearance=\"primary\" @click=${(x) => x.submit()}>Submit</rapid-button>\n </div>\n </rapid-modal>\n`"
6895
+ "name": "RuleConditionBuilderTemplate",
6896
+ "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`"
6496
6897
  }
6497
6898
  ],
6498
6899
  "exports": [
6499
6900
  {
6500
6901
  "kind": "js",
6501
- "name": "TemplateDialogTemplate",
6902
+ "name": "RuleConditionBuilderTemplate",
6502
6903
  "declaration": {
6503
- "name": "TemplateDialogTemplate",
6504
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.template.ts"
6904
+ "name": "RuleConditionBuilderTemplate",
6905
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.template.ts"
6505
6906
  }
6506
6907
  }
6507
6908
  ]
6508
6909
  },
6509
6910
  {
6510
6911
  "kind": "javascript-module",
6511
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.ts",
6912
+ "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.ts",
6512
6913
  "declarations": [
6513
6914
  {
6514
6915
  "kind": "class",
6515
- "description": "Dialog for creating or editing notification templates.",
6516
- "name": "TemplateDialog",
6916
+ "description": "Condition builder for notification rule criteria.",
6917
+ "name": "RuleConditionBuilder",
6517
6918
  "members": [
6518
6919
  {
6519
6920
  "kind": "field",
6520
- "name": "templateService",
6521
- "type": {
6522
- "text": "TemplateService"
6523
- }
6524
- },
6525
- {
6526
- "kind": "field",
6527
- "name": "systemService",
6528
- "type": {
6529
- "text": "SystemService"
6530
- }
6531
- },
6532
- {
6533
- "kind": "field",
6534
- "name": "notifyService",
6535
- "type": {
6536
- "text": "NotifyService"
6537
- }
6538
- },
6539
- {
6540
- "kind": "field",
6541
- "name": "dialog",
6921
+ "name": "condition",
6542
6922
  "type": {
6543
- "text": "Modal"
6923
+ "text": "ConditionBuilderEntity"
6544
6924
  }
6545
6925
  },
6546
6926
  {
6547
6927
  "kind": "field",
6548
- "name": "templateDialogMode",
6928
+ "name": "fields",
6549
6929
  "type": {
6550
- "text": "(typeof TemplateDialogMode)[keyof typeof TemplateDialogMode]"
6930
+ "text": "Field[]"
6551
6931
  },
6552
- "default": "null"
6932
+ "default": "[]"
6553
6933
  },
6554
6934
  {
6555
6935
  "kind": "field",
6556
- "name": "templateId",
6936
+ "name": "isFirst",
6557
6937
  "type": {
6558
- "text": "string"
6938
+ "text": "boolean"
6559
6939
  },
6560
- "privacy": "private",
6561
- "default": "null"
6940
+ "default": "false"
6562
6941
  },
6563
6942
  {
6564
6943
  "kind": "field",
6565
- "name": "name",
6944
+ "name": "joinOperator",
6566
6945
  "type": {
6567
6946
  "text": "string"
6568
- },
6569
- "default": "null"
6947
+ }
6570
6948
  },
6571
6949
  {
6572
6950
  "kind": "field",
6573
- "name": "description",
6951
+ "name": "leftValue",
6574
6952
  "type": {
6575
6953
  "text": "string"
6576
6954
  },
@@ -6578,343 +6956,399 @@
6578
6956
  },
6579
6957
  {
6580
6958
  "kind": "field",
6581
- "name": "header",
6582
- "type": {
6583
- "text": "null"
6584
- },
6585
- "default": "null"
6586
- },
6587
- {
6588
- "kind": "field",
6589
- "name": "message",
6959
+ "name": "leftValueItems",
6590
6960
  "type": {
6591
- "text": "null"
6961
+ "text": "Array<any>"
6592
6962
  },
6593
- "default": "null"
6963
+ "default": "[]"
6594
6964
  },
6595
6965
  {
6596
6966
  "kind": "field",
6597
- "name": "resource",
6967
+ "name": "logicalOperator",
6598
6968
  "type": {
6599
6969
  "text": "string"
6600
6970
  },
6601
- "default": "''"
6971
+ "default": "null"
6602
6972
  },
6603
6973
  {
6604
6974
  "kind": "field",
6605
- "name": "topic",
6975
+ "name": "rightCriteria",
6606
6976
  "type": {
6607
6977
  "text": "string"
6608
- },
6609
- "default": "''"
6978
+ }
6610
6979
  },
6611
6980
  {
6612
6981
  "kind": "field",
6613
- "name": "severity",
6982
+ "name": "rightValueText",
6614
6983
  "type": {
6615
6984
  "text": "string"
6616
6985
  },
6617
- "default": "''"
6618
- },
6619
- {
6620
- "kind": "field",
6621
- "name": "updateType",
6622
- "type": {
6623
- "text": "UpdateType[]"
6624
- },
6625
- "default": "defaultUpdateType"
6626
- },
6627
- {
6628
- "kind": "field",
6629
- "name": "parameters",
6630
- "type": {
6631
- "text": "Array<ParameterBuilderEntity>"
6632
- },
6633
- "default": "[]"
6634
- },
6635
- {
6636
- "kind": "field",
6637
- "name": "conditions",
6638
- "type": {
6639
- "text": "Array<ConditionNode>"
6640
- },
6641
- "default": "[]"
6986
+ "default": "null"
6642
6987
  },
6643
6988
  {
6644
6989
  "kind": "field",
6645
- "name": "rawExpressionPreview",
6990
+ "name": "rightValueSelect",
6646
6991
  "type": {
6647
6992
  "text": "string"
6648
6993
  },
6649
- "default": "''"
6650
- },
6651
- {
6652
- "kind": "field",
6653
- "name": "resources",
6654
- "type": {
6655
- "text": "Array<string>"
6656
- },
6657
- "default": "[]"
6658
- },
6659
- {
6660
- "kind": "field",
6661
- "name": "fields",
6662
- "type": {
6663
- "text": "Array<Field>"
6664
- },
6665
- "default": "[]"
6994
+ "default": "null"
6666
6995
  },
6667
6996
  {
6668
6997
  "kind": "field",
6669
- "name": "topics",
6998
+ "name": "rightValueMultiSelect",
6670
6999
  "type": {
6671
- "text": "Array<string>"
7000
+ "text": "string[]"
6672
7001
  },
6673
7002
  "default": "[]"
6674
7003
  },
6675
- {
6676
- "kind": "field",
6677
- "name": "requiredFields",
6678
- "privacy": "private"
6679
- },
6680
7004
  {
6681
7005
  "kind": "method",
6682
- "name": "openDialog",
6683
- "privacy": "public",
6684
- "parameters": [
6685
- {
6686
- "name": "params",
6687
- "type": {
6688
- "text": "any"
6689
- }
6690
- }
6691
- ]
7006
+ "name": "deleteCondition"
6692
7007
  },
6693
7008
  {
6694
7009
  "kind": "method",
6695
- "name": "close"
7010
+ "name": "conditionChanged"
6696
7011
  },
6697
7012
  {
6698
7013
  "kind": "method",
6699
- "name": "createTemplate",
6700
- "privacy": "private"
7014
+ "name": "joinOperatorChanged"
6701
7015
  },
6702
7016
  {
6703
7017
  "kind": "method",
6704
- "name": "editTemplate",
6705
- "privacy": "private",
6706
- "parameters": [
6707
- {
6708
- "name": "data"
6709
- }
6710
- ]
7018
+ "name": "fieldsChanged"
6711
7019
  },
6712
7020
  {
6713
7021
  "kind": "method",
6714
- "name": "refreshExpressionPreview",
7022
+ "name": "assignLeftValue",
6715
7023
  "privacy": "private"
6716
7024
  },
6717
7025
  {
6718
7026
  "kind": "method",
6719
- "name": "attributeAssignments",
6720
- "privacy": "private",
6721
- "parameters": [
6722
- {
6723
- "name": "assignments"
6724
- }
6725
- ]
6726
- },
6727
- {
6728
- "kind": "field",
6729
- "name": "templateDialogTitle",
6730
- "type": {
6731
- "text": "string"
6732
- },
6733
- "readonly": true
6734
- },
6735
- {
6736
- "kind": "method",
6737
- "name": "submit"
7027
+ "name": "assignRightValue"
6738
7028
  },
6739
7029
  {
6740
7030
  "kind": "method",
6741
- "name": "createTemplateObject",
6742
- "privacy": "private",
7031
+ "name": "getRightCriteria",
6743
7032
  "return": {
6744
7033
  "type": {
6745
- "text": "Template"
7034
+ "text": "Array<any>"
6746
7035
  }
6747
7036
  }
6748
7037
  },
6749
7038
  {
6750
7039
  "kind": "method",
6751
- "name": "validateResponse",
6752
- "parameters": [
6753
- {
6754
- "name": "response"
7040
+ "name": "getLogicalOperators",
7041
+ "return": {
7042
+ "type": {
7043
+ "text": "Array<any>"
6755
7044
  }
6756
- ]
7045
+ }
6757
7046
  },
6758
7047
  {
6759
7048
  "kind": "method",
6760
- "name": "resourceChanged"
7049
+ "name": "leftValueChanged"
6761
7050
  },
6762
7051
  {
6763
7052
  "kind": "method",
6764
- "name": "newCondition"
7053
+ "name": "logicalOperatorChanged"
6765
7054
  },
6766
7055
  {
6767
7056
  "kind": "method",
6768
- "name": "newGroup"
7057
+ "name": "rightCriteriaChanged"
6769
7058
  },
6770
7059
  {
6771
7060
  "kind": "method",
6772
- "name": "editCondition",
6773
- "parameters": [
6774
- {
6775
- "name": "editedCondition",
6776
- "type": {
6777
- "text": "ConditionNode"
6778
- }
6779
- }
6780
- ]
7061
+ "name": "clearRightValueText",
7062
+ "privacy": "private"
6781
7063
  },
6782
7064
  {
6783
7065
  "kind": "method",
6784
- "name": "deleteCondition",
6785
- "parameters": [
6786
- {
6787
- "name": "deletedCondition",
6788
- "type": {
6789
- "text": "ConditionNode"
6790
- }
6791
- }
6792
- ]
7066
+ "name": "clearRightValueSelect",
7067
+ "privacy": "private"
6793
7068
  },
6794
7069
  {
6795
7070
  "kind": "method",
6796
- "name": "newParameter"
7071
+ "name": "rightValueTextChanged"
6797
7072
  },
6798
7073
  {
6799
7074
  "kind": "method",
6800
- "name": "editParameter",
7075
+ "name": "rightValueSelectChanged"
7076
+ },
7077
+ {
7078
+ "kind": "method",
7079
+ "name": "rightValueMultiSelectChanged"
7080
+ },
7081
+ {
7082
+ "kind": "method",
7083
+ "name": "getEnumValues",
7084
+ "return": {
7085
+ "type": {
7086
+ "text": "string[]"
7087
+ }
7088
+ }
7089
+ },
7090
+ {
7091
+ "kind": "method",
7092
+ "name": "convertDateTime",
6801
7093
  "parameters": [
6802
7094
  {
6803
- "name": "editedParameter",
7095
+ "name": "dateTimeStr",
6804
7096
  "type": {
6805
- "text": "ParameterBuilderEntity"
7097
+ "text": "string"
6806
7098
  }
6807
7099
  }
6808
7100
  ]
6809
7101
  },
6810
7102
  {
6811
7103
  "kind": "method",
6812
- "name": "deleteParameter",
7104
+ "name": "convertLongForDatePicker",
6813
7105
  "parameters": [
6814
7106
  {
6815
- "name": "deletedParameter",
7107
+ "name": "value",
6816
7108
  "type": {
6817
- "text": "ParameterBuilderEntity"
7109
+ "text": "number"
7110
+ }
7111
+ },
7112
+ {
7113
+ "name": "time",
7114
+ "default": "false",
7115
+ "type": {
7116
+ "text": "boolean"
6818
7117
  }
6819
7118
  }
6820
7119
  ]
6821
7120
  },
6822
7121
  {
6823
- "kind": "field",
6824
- "name": "validateRequiredFields",
6825
- "type": {
6826
- "text": "boolean"
6827
- },
6828
- "privacy": "public",
6829
- "readonly": true
7122
+ "kind": "method",
7123
+ "name": "getAllFields"
7124
+ },
7125
+ {
7126
+ "kind": "method",
7127
+ "name": "getApplicableFields"
6830
7128
  }
6831
7129
  ],
6832
7130
  "events": [
6833
7131
  {
6834
- "description": "Fired when the dialog should close",
6835
- "name": "close"
7132
+ "description": "Fired when a condition is deleted. detail: `ConditionBuilderEntity`",
7133
+ "name": "delete"
7134
+ },
7135
+ {
7136
+ "description": "Fired when a condition is edited. detail: `ConditionBuilderEntity`",
7137
+ "name": "edit"
6836
7138
  }
6837
7139
  ],
6838
7140
  "superclass": {
6839
7141
  "name": "GenesisElement",
6840
7142
  "package": "@genesislcap/web-core"
6841
7143
  },
6842
- "tagName": "template-dialog",
7144
+ "tagName": "rule-condition-builder",
6843
7145
  "customElement": true
6844
7146
  }
6845
7147
  ],
6846
7148
  "exports": [
6847
7149
  {
6848
7150
  "kind": "js",
6849
- "name": "TemplateDialog",
7151
+ "name": "RuleConditionBuilder",
6850
7152
  "declaration": {
6851
- "name": "TemplateDialog",
6852
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.ts"
7153
+ "name": "RuleConditionBuilder",
7154
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.ts"
6853
7155
  }
6854
7156
  },
6855
7157
  {
6856
7158
  "kind": "custom-element-definition",
6857
- "name": "template-dialog",
7159
+ "name": "rule-condition-builder",
6858
7160
  "declaration": {
6859
- "name": "TemplateDialog",
6860
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.ts"
7161
+ "name": "RuleConditionBuilder",
7162
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.ts"
6861
7163
  }
6862
7164
  }
6863
7165
  ]
6864
7166
  },
6865
7167
  {
6866
7168
  "kind": "javascript-module",
6867
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.types.ts",
7169
+ "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.types.ts",
7170
+ "declarations": [],
7171
+ "exports": []
7172
+ },
7173
+ {
7174
+ "kind": "javascript-module",
7175
+ "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.template.ts",
6868
7176
  "declarations": [
6869
7177
  {
6870
7178
  "kind": "variable",
6871
- "name": "TemplateDialogMode",
6872
- "type": {
6873
- "text": "{\n CREATE: 'create',\n EDIT: 'edit',\n}"
7179
+ "name": "RuleConditionGroupTemplate",
7180
+ "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`"
7181
+ }
7182
+ ],
7183
+ "exports": [
7184
+ {
7185
+ "kind": "js",
7186
+ "name": "RuleConditionGroupTemplate",
7187
+ "declaration": {
7188
+ "name": "RuleConditionGroupTemplate",
7189
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.template.ts"
7190
+ }
7191
+ }
7192
+ ]
7193
+ },
7194
+ {
7195
+ "kind": "javascript-module",
7196
+ "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts",
7197
+ "declarations": [
7198
+ {
7199
+ "kind": "class",
7200
+ "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.",
7201
+ "name": "RuleConditionGroup",
7202
+ "members": [
7203
+ {
7204
+ "kind": "field",
7205
+ "name": "node",
7206
+ "type": {
7207
+ "text": "ConditionGroupEntity"
7208
+ }
7209
+ },
7210
+ {
7211
+ "kind": "field",
7212
+ "name": "fields",
7213
+ "type": {
7214
+ "text": "Field[]"
7215
+ },
7216
+ "default": "[]"
7217
+ },
7218
+ {
7219
+ "kind": "field",
7220
+ "name": "isFirst",
7221
+ "type": {
7222
+ "text": "boolean"
7223
+ },
7224
+ "default": "false"
7225
+ },
7226
+ {
7227
+ "kind": "field",
7228
+ "name": "joinOperator",
7229
+ "type": {
7230
+ "text": "string"
7231
+ }
7232
+ },
7233
+ {
7234
+ "kind": "field",
7235
+ "name": "groupChildren",
7236
+ "type": {
7237
+ "text": "ConditionNode[]"
7238
+ },
7239
+ "default": "[]"
7240
+ },
7241
+ {
7242
+ "kind": "method",
7243
+ "name": "nodeChanged"
7244
+ },
7245
+ {
7246
+ "kind": "method",
7247
+ "name": "joinOperatorChanged"
7248
+ },
7249
+ {
7250
+ "kind": "method",
7251
+ "name": "newCondition"
7252
+ },
7253
+ {
7254
+ "kind": "method",
7255
+ "name": "newGroup"
7256
+ },
7257
+ {
7258
+ "kind": "method",
7259
+ "name": "editChild",
7260
+ "parameters": [
7261
+ {
7262
+ "name": "_editedChild",
7263
+ "type": {
7264
+ "text": "ConditionNode"
7265
+ }
7266
+ }
7267
+ ]
7268
+ },
7269
+ {
7270
+ "kind": "method",
7271
+ "name": "deleteChild",
7272
+ "parameters": [
7273
+ {
7274
+ "name": "deletedChild",
7275
+ "type": {
7276
+ "text": "ConditionNode"
7277
+ }
7278
+ }
7279
+ ]
7280
+ },
7281
+ {
7282
+ "kind": "method",
7283
+ "name": "deleteSelf"
7284
+ }
7285
+ ],
7286
+ "events": [
7287
+ {
7288
+ "description": "Fired when this whole group should be removed",
7289
+ "name": "delete"
7290
+ },
7291
+ {
7292
+ "description": "Fired when anything inside this group changes",
7293
+ "name": "edit"
7294
+ }
7295
+ ],
7296
+ "superclass": {
7297
+ "name": "GenesisElement",
7298
+ "package": "@genesislcap/web-core"
6874
7299
  },
6875
- "default": "{\n CREATE: 'create',\n EDIT: 'edit',\n}"
7300
+ "tagName": "rule-condition-group",
7301
+ "customElement": true
6876
7302
  }
6877
7303
  ],
6878
7304
  "exports": [
6879
7305
  {
6880
- "kind": "js",
6881
- "name": "TemplateDialogMode",
7306
+ "kind": "js",
7307
+ "name": "RuleConditionGroup",
7308
+ "declaration": {
7309
+ "name": "RuleConditionGroup",
7310
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts"
7311
+ }
7312
+ },
7313
+ {
7314
+ "kind": "custom-element-definition",
7315
+ "name": "rule-condition-group",
6882
7316
  "declaration": {
6883
- "name": "TemplateDialogMode",
6884
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.types.ts"
7317
+ "name": "RuleConditionGroup",
7318
+ "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts"
6885
7319
  }
6886
7320
  }
6887
7321
  ]
6888
7322
  },
6889
7323
  {
6890
7324
  "kind": "javascript-module",
6891
- "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.template.ts",
7325
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.template.ts",
6892
7326
  "declarations": [
6893
7327
  {
6894
7328
  "kind": "variable",
6895
- "name": "RuleConditionBuilderTemplate",
6896
- "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`"
7329
+ "name": "TemplateConditionBuilderTemplate",
7330
+ "default": "html<TemplateConditionBuilder>`\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 class=\"left-value\"\n >\n ${repeat(\n (x) => x.leftValueItems,\n html<Field>`\n <rapid-option value=${(x) => JSON.stringify(x)}>${(x) => x.FIELD_NAME}</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 >\n ${repeat(\n (_) => Object.values(LogicalOperator),\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => !nullAndBlankLogicalOperatorValues.includes(LogicalOperator[x.logicalOperator]),\n html`\n <rapid-select class=\"right-criteria\" :value=${sync((x) => x.rightCriteria)}>\n ${repeat(\n (_) => Object.values(RightCriteria),\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => x.rightCriteria === RightCriteria.VALUE,\n html<TemplateConditionBuilder>`\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 <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 ${when(\n (x) => x.rightCriteria === RightCriteria.USER_ENTRY,\n html<TemplateConditionBuilder>`\n <rapid-select class=\"right-criteria-select\" :value=${sync((x) => x.rightValueSelect)}>\n ${(x) => rightValueItemsOptions(x.rightValueItems)}\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`"
6897
7331
  }
6898
7332
  ],
6899
7333
  "exports": [
6900
7334
  {
6901
7335
  "kind": "js",
6902
- "name": "RuleConditionBuilderTemplate",
7336
+ "name": "TemplateConditionBuilderTemplate",
6903
7337
  "declaration": {
6904
- "name": "RuleConditionBuilderTemplate",
6905
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.template.ts"
7338
+ "name": "TemplateConditionBuilderTemplate",
7339
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.template.ts"
6906
7340
  }
6907
7341
  }
6908
7342
  ]
6909
7343
  },
6910
7344
  {
6911
7345
  "kind": "javascript-module",
6912
- "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.ts",
7346
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.ts",
6913
7347
  "declarations": [
6914
7348
  {
6915
7349
  "kind": "class",
6916
- "description": "Condition builder for notification rule criteria.",
6917
- "name": "RuleConditionBuilder",
7350
+ "description": "Condition builder for template notification rules.",
7351
+ "name": "TemplateConditionBuilder",
6918
7352
  "members": [
6919
7353
  {
6920
7354
  "kind": "field",
@@ -6923,11 +7357,19 @@
6923
7357
  "text": "ConditionBuilderEntity"
6924
7358
  }
6925
7359
  },
7360
+ {
7361
+ "kind": "field",
7362
+ "name": "parameters",
7363
+ "type": {
7364
+ "text": "Array<ParameterBuilderEntity>"
7365
+ },
7366
+ "default": "[]"
7367
+ },
6926
7368
  {
6927
7369
  "kind": "field",
6928
7370
  "name": "fields",
6929
7371
  "type": {
6930
- "text": "Field[]"
7372
+ "text": "Array<string>"
6931
7373
  },
6932
7374
  "default": "[]"
6933
7375
  },
@@ -6950,7 +7392,7 @@
6950
7392
  "kind": "field",
6951
7393
  "name": "leftValue",
6952
7394
  "type": {
6953
- "text": "string"
7395
+ "text": "any"
6954
7396
  },
6955
7397
  "default": "null"
6956
7398
  },
@@ -6993,6 +7435,14 @@
6993
7435
  },
6994
7436
  "default": "null"
6995
7437
  },
7438
+ {
7439
+ "kind": "field",
7440
+ "name": "rightValueItems",
7441
+ "type": {
7442
+ "text": "Array<any>"
7443
+ },
7444
+ "default": "[]"
7445
+ },
6996
7446
  {
6997
7447
  "kind": "field",
6998
7448
  "name": "rightValueMultiSelect",
@@ -7015,307 +7465,149 @@
7015
7465
  },
7016
7466
  {
7017
7467
  "kind": "method",
7018
- "name": "fieldsChanged"
7019
- },
7020
- {
7021
- "kind": "method",
7022
- "name": "assignLeftValue",
7023
- "privacy": "private"
7024
- },
7025
- {
7026
- "kind": "method",
7027
- "name": "assignRightValue"
7468
+ "name": "parametersChanged"
7028
7469
  },
7029
7470
  {
7030
7471
  "kind": "method",
7031
- "name": "getRightCriteria",
7472
+ "name": "getMatchingParameter",
7473
+ "privacy": "private",
7032
7474
  "return": {
7033
7475
  "type": {
7034
- "text": "Array<any>"
7476
+ "text": "ParameterBuilderEntity | undefined"
7035
7477
  }
7036
7478
  }
7037
7479
  },
7038
7480
  {
7039
7481
  "kind": "method",
7040
- "name": "getLogicalOperators",
7482
+ "name": "syncParameterBinding",
7483
+ "privacy": "private",
7041
7484
  "return": {
7042
7485
  "type": {
7043
- "text": "Array<any>"
7486
+ "text": "boolean"
7044
7487
  }
7045
7488
  }
7046
7489
  },
7047
7490
  {
7048
7491
  "kind": "method",
7049
- "name": "leftValueChanged"
7050
- },
7051
- {
7052
- "kind": "method",
7053
- "name": "logicalOperatorChanged"
7054
- },
7055
- {
7056
- "kind": "method",
7057
- "name": "rightCriteriaChanged"
7058
- },
7059
- {
7060
- "kind": "method",
7061
- "name": "clearRightValueText",
7062
- "privacy": "private"
7063
- },
7064
- {
7065
- "kind": "method",
7066
- "name": "clearRightValueSelect",
7492
+ "name": "resetToValueEditor",
7067
7493
  "privacy": "private"
7068
7494
  },
7069
7495
  {
7070
7496
  "kind": "method",
7071
- "name": "rightValueTextChanged"
7072
- },
7073
- {
7074
- "kind": "method",
7075
- "name": "rightValueSelectChanged"
7076
- },
7077
- {
7078
- "kind": "method",
7079
- "name": "rightValueMultiSelectChanged"
7080
- },
7081
- {
7082
- "kind": "method",
7083
- "name": "getEnumValues",
7084
- "return": {
7085
- "type": {
7086
- "text": "string[]"
7087
- }
7088
- }
7089
- },
7090
- {
7091
- "kind": "method",
7092
- "name": "convertDateTime",
7093
- "parameters": [
7094
- {
7095
- "name": "dateTimeStr",
7096
- "type": {
7097
- "text": "string"
7098
- }
7099
- }
7100
- ]
7101
- },
7102
- {
7103
- "kind": "method",
7104
- "name": "convertLongForDatePicker",
7105
- "parameters": [
7106
- {
7107
- "name": "value",
7108
- "type": {
7109
- "text": "number"
7110
- }
7111
- },
7112
- {
7113
- "name": "time",
7114
- "default": "false",
7115
- "type": {
7116
- "text": "boolean"
7117
- }
7118
- }
7119
- ]
7497
+ "name": "fieldsChanged"
7120
7498
  },
7121
7499
  {
7122
7500
  "kind": "method",
7123
- "name": "getAllFields"
7501
+ "name": "logicalOperatorChanged"
7124
7502
  },
7125
7503
  {
7126
7504
  "kind": "method",
7127
- "name": "getApplicableFields"
7128
- }
7129
- ],
7130
- "events": [
7131
- {
7132
- "description": "Fired when a condition is deleted. detail: `ConditionBuilderEntity`",
7133
- "name": "delete"
7134
- },
7135
- {
7136
- "description": "Fired when a condition is edited. detail: `ConditionBuilderEntity`",
7137
- "name": "edit"
7138
- }
7139
- ],
7140
- "superclass": {
7141
- "name": "GenesisElement",
7142
- "package": "@genesislcap/web-core"
7143
- },
7144
- "tagName": "rule-condition-builder",
7145
- "customElement": true
7146
- }
7147
- ],
7148
- "exports": [
7149
- {
7150
- "kind": "js",
7151
- "name": "RuleConditionBuilder",
7152
- "declaration": {
7153
- "name": "RuleConditionBuilder",
7154
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.ts"
7155
- }
7156
- },
7157
- {
7158
- "kind": "custom-element-definition",
7159
- "name": "rule-condition-builder",
7160
- "declaration": {
7161
- "name": "RuleConditionBuilder",
7162
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.ts"
7163
- }
7164
- }
7165
- ]
7166
- },
7167
- {
7168
- "kind": "javascript-module",
7169
- "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.types.ts",
7170
- "declarations": [],
7171
- "exports": []
7172
- },
7173
- {
7174
- "kind": "javascript-module",
7175
- "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.template.ts",
7176
- "declarations": [
7177
- {
7178
- "kind": "variable",
7179
- "name": "RuleConditionGroupTemplate",
7180
- "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`"
7181
- }
7182
- ],
7183
- "exports": [
7184
- {
7185
- "kind": "js",
7186
- "name": "RuleConditionGroupTemplate",
7187
- "declaration": {
7188
- "name": "RuleConditionGroupTemplate",
7189
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.template.ts"
7190
- }
7191
- }
7192
- ]
7193
- },
7194
- {
7195
- "kind": "javascript-module",
7196
- "path": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts",
7197
- "declarations": [
7198
- {
7199
- "kind": "class",
7200
- "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.",
7201
- "name": "RuleConditionGroup",
7202
- "members": [
7203
- {
7204
- "kind": "field",
7205
- "name": "node",
7206
- "type": {
7207
- "text": "ConditionGroupEntity"
7208
- }
7209
- },
7210
- {
7211
- "kind": "field",
7212
- "name": "fields",
7213
- "type": {
7214
- "text": "Field[]"
7215
- },
7216
- "default": "[]"
7217
- },
7218
- {
7219
- "kind": "field",
7220
- "name": "isFirst",
7221
- "type": {
7222
- "text": "boolean"
7223
- },
7224
- "default": "false"
7225
- },
7226
- {
7227
- "kind": "field",
7228
- "name": "joinOperator",
7229
- "type": {
7230
- "text": "string"
7231
- }
7505
+ "name": "assignLeftValue",
7506
+ "privacy": "private"
7232
7507
  },
7233
- {
7234
- "kind": "field",
7235
- "name": "groupChildren",
7236
- "type": {
7237
- "text": "ConditionNode[]"
7238
- },
7239
- "default": "[]"
7508
+ {
7509
+ "kind": "method",
7510
+ "name": "leftValueChanged"
7240
7511
  },
7241
7512
  {
7242
7513
  "kind": "method",
7243
- "name": "nodeChanged"
7514
+ "name": "assignRightValue",
7515
+ "privacy": "private"
7244
7516
  },
7245
7517
  {
7246
7518
  "kind": "method",
7247
- "name": "joinOperatorChanged"
7519
+ "name": "rightCriteriaChanged"
7248
7520
  },
7249
7521
  {
7250
7522
  "kind": "method",
7251
- "name": "newCondition"
7523
+ "name": "clearRightValueText",
7524
+ "privacy": "private"
7252
7525
  },
7253
7526
  {
7254
7527
  "kind": "method",
7255
- "name": "newGroup"
7528
+ "name": "clearRightValueSelect",
7529
+ "privacy": "private"
7256
7530
  },
7257
7531
  {
7258
7532
  "kind": "method",
7259
- "name": "editChild",
7260
- "parameters": [
7261
- {
7262
- "name": "_editedChild",
7263
- "type": {
7264
- "text": "ConditionNode"
7265
- }
7266
- }
7267
- ]
7533
+ "name": "rightValueTextChanged"
7268
7534
  },
7269
7535
  {
7270
7536
  "kind": "method",
7271
- "name": "deleteChild",
7272
- "parameters": [
7273
- {
7274
- "name": "deletedChild",
7275
- "type": {
7276
- "text": "ConditionNode"
7277
- }
7278
- }
7279
- ]
7537
+ "name": "rightValueSelectChanged"
7280
7538
  },
7281
7539
  {
7282
7540
  "kind": "method",
7283
- "name": "deleteSelf"
7541
+ "name": "rightValueMultiSelectChanged"
7542
+ },
7543
+ {
7544
+ "kind": "method",
7545
+ "name": "getEnumValues",
7546
+ "return": {
7547
+ "type": {
7548
+ "text": "string[]"
7549
+ }
7550
+ }
7284
7551
  }
7285
7552
  ],
7286
7553
  "events": [
7287
7554
  {
7288
- "description": "Fired when this whole group should be removed",
7555
+ "description": "Fired when a condition is deleted. detail: `ConditionBuilderEntity`",
7289
7556
  "name": "delete"
7290
7557
  },
7291
7558
  {
7292
- "description": "Fired when anything inside this group changes",
7559
+ "description": "Fired when a condition is edited. detail: `ConditionBuilderEntity`",
7293
7560
  "name": "edit"
7294
7561
  }
7295
7562
  ],
7563
+ "attributes": [
7564
+ {
7565
+ "name": "condition",
7566
+ "type": {
7567
+ "text": "ConditionBuilderEntity"
7568
+ },
7569
+ "fieldName": "condition"
7570
+ },
7571
+ {
7572
+ "name": "parameters",
7573
+ "type": {
7574
+ "text": "Array<ParameterBuilderEntity>"
7575
+ },
7576
+ "default": "[]",
7577
+ "fieldName": "parameters"
7578
+ },
7579
+ {
7580
+ "name": "fields",
7581
+ "type": {
7582
+ "text": "Array<string>"
7583
+ },
7584
+ "default": "[]",
7585
+ "fieldName": "fields"
7586
+ }
7587
+ ],
7296
7588
  "superclass": {
7297
7589
  "name": "GenesisElement",
7298
7590
  "package": "@genesislcap/web-core"
7299
7591
  },
7300
- "tagName": "rule-condition-group",
7592
+ "tagName": "template-condition-builder",
7301
7593
  "customElement": true
7302
7594
  }
7303
7595
  ],
7304
7596
  "exports": [
7305
7597
  {
7306
7598
  "kind": "js",
7307
- "name": "RuleConditionGroup",
7599
+ "name": "TemplateConditionBuilder",
7308
7600
  "declaration": {
7309
- "name": "RuleConditionGroup",
7310
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts"
7601
+ "name": "TemplateConditionBuilder",
7602
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.ts"
7311
7603
  }
7312
7604
  },
7313
7605
  {
7314
7606
  "kind": "custom-element-definition",
7315
- "name": "rule-condition-group",
7607
+ "name": "template-condition-builder",
7316
7608
  "declaration": {
7317
- "name": "RuleConditionGroup",
7318
- "module": "src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts"
7609
+ "name": "TemplateConditionBuilder",
7610
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.ts"
7319
7611
  }
7320
7612
  }
7321
7613
  ]
@@ -7485,263 +7777,105 @@
7485
7777
  {
7486
7778
  "name": "value"
7487
7779
  }
7488
- ]
7489
- }
7490
- ],
7491
- "events": [
7492
- {
7493
- "description": "Fired when a parameter is deleted. detail: `ParameterBuilderEntity`",
7494
- "name": "delete"
7495
- },
7496
- {
7497
- "description": "Fired when a parameter is edited. detail: `ParameterBuilderEntity`",
7498
- "name": "edit"
7499
- }
7500
- ],
7501
- "attributes": [
7502
- {
7503
- "name": "parameter",
7504
- "type": {
7505
- "text": "ParameterBuilderEntity"
7506
- },
7507
- "fieldName": "parameter"
7508
- }
7509
- ],
7510
- "superclass": {
7511
- "name": "GenesisElement",
7512
- "package": "@genesislcap/web-core"
7513
- },
7514
- "tagName": "parameter-builder",
7515
- "customElement": true
7516
- }
7517
- ],
7518
- "exports": [
7519
- {
7520
- "kind": "js",
7521
- "name": "ParameterBuilder",
7522
- "declaration": {
7523
- "name": "ParameterBuilder",
7524
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.ts"
7525
- }
7526
- },
7527
- {
7528
- "kind": "custom-element-definition",
7529
- "name": "parameter-builder",
7530
- "declaration": {
7531
- "name": "ParameterBuilder",
7532
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.ts"
7533
- }
7534
- }
7535
- ]
7536
- },
7537
- {
7538
- "kind": "javascript-module",
7539
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.template.ts",
7540
- "declarations": [
7541
- {
7542
- "kind": "variable",
7543
- "name": "TemplateConditionGroupTemplate",
7544
- "default": "html<TemplateConditionGroup>`\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, TemplateConditionGroup>`\n ${when(\n (x) => isGroup(x),\n html<ConditionNode>`\n <template-condition-group\n :fields=${(x, c) => c.parent.fields}\n :parameters=${(x, c) => c.parent.parameters}\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 ></template-condition-group>\n `,\n )}\n ${when(\n (x) => !isGroup(x),\n html<ConditionNode>`\n <template-condition-builder\n :fields=${(x, c) => c.parent.fields}\n :parameters=${(x, c) => c.parent.parameters}\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 ></template-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`"
7545
- }
7546
- ],
7547
- "exports": [
7548
- {
7549
- "kind": "js",
7550
- "name": "TemplateConditionGroupTemplate",
7551
- "declaration": {
7552
- "name": "TemplateConditionGroupTemplate",
7553
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.template.ts"
7554
- }
7555
- }
7556
- ]
7557
- },
7558
- {
7559
- "kind": "javascript-module",
7560
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts",
7561
- "declarations": [
7562
- {
7563
- "kind": "class",
7564
- "description": "Parenthesized group of conditions/nested groups for notification template\ncriteria - see rule-condition-group for the rationale. Also forwards\n:parameters down to nested template-condition-builder rows so parameter\nbinding (USER_ENTRY) keeps working inside a group.",
7565
- "name": "TemplateConditionGroup",
7566
- "members": [
7567
- {
7568
- "kind": "field",
7569
- "name": "node",
7570
- "type": {
7571
- "text": "ConditionGroupEntity"
7572
- }
7573
- },
7574
- {
7575
- "kind": "field",
7576
- "name": "fields",
7577
- "type": {
7578
- "text": "Field[]"
7579
- },
7580
- "default": "[]"
7581
- },
7582
- {
7583
- "kind": "field",
7584
- "name": "parameters",
7585
- "type": {
7586
- "text": "Array<ParameterBuilderEntity>"
7587
- },
7588
- "default": "[]"
7589
- },
7590
- {
7591
- "kind": "field",
7592
- "name": "isFirst",
7593
- "type": {
7594
- "text": "boolean"
7595
- },
7596
- "default": "false"
7597
- },
7598
- {
7599
- "kind": "field",
7600
- "name": "joinOperator",
7601
- "type": {
7602
- "text": "string"
7603
- }
7604
- },
7605
- {
7606
- "kind": "field",
7607
- "name": "groupChildren",
7608
- "type": {
7609
- "text": "ConditionNode[]"
7610
- },
7611
- "default": "[]"
7612
- },
7613
- {
7614
- "kind": "method",
7615
- "name": "nodeChanged"
7616
- },
7617
- {
7618
- "kind": "method",
7619
- "name": "joinOperatorChanged"
7620
- },
7621
- {
7622
- "kind": "method",
7623
- "name": "newCondition"
7624
- },
7625
- {
7626
- "kind": "method",
7627
- "name": "newGroup"
7628
- },
7629
- {
7630
- "kind": "method",
7631
- "name": "editChild",
7632
- "parameters": [
7633
- {
7634
- "name": "_editedChild",
7635
- "type": {
7636
- "text": "ConditionNode"
7637
- }
7638
- }
7639
- ]
7640
- },
7641
- {
7642
- "kind": "method",
7643
- "name": "deleteChild",
7644
- "parameters": [
7645
- {
7646
- "name": "deletedChild",
7647
- "type": {
7648
- "text": "ConditionNode"
7649
- }
7650
- }
7651
- ]
7652
- },
7653
- {
7654
- "kind": "method",
7655
- "name": "deleteSelf"
7780
+ ]
7656
7781
  }
7657
7782
  ],
7658
7783
  "events": [
7659
7784
  {
7660
- "description": "Fired when this whole group should be removed",
7785
+ "description": "Fired when a parameter is deleted. detail: `ParameterBuilderEntity`",
7661
7786
  "name": "delete"
7662
7787
  },
7663
7788
  {
7664
- "description": "Fired when anything inside this group changes",
7789
+ "description": "Fired when a parameter is edited. detail: `ParameterBuilderEntity`",
7665
7790
  "name": "edit"
7666
7791
  }
7667
7792
  ],
7793
+ "attributes": [
7794
+ {
7795
+ "name": "parameter",
7796
+ "type": {
7797
+ "text": "ParameterBuilderEntity"
7798
+ },
7799
+ "fieldName": "parameter"
7800
+ }
7801
+ ],
7668
7802
  "superclass": {
7669
7803
  "name": "GenesisElement",
7670
7804
  "package": "@genesislcap/web-core"
7671
7805
  },
7672
- "tagName": "template-condition-group",
7806
+ "tagName": "parameter-builder",
7673
7807
  "customElement": true
7674
7808
  }
7675
7809
  ],
7676
7810
  "exports": [
7677
7811
  {
7678
7812
  "kind": "js",
7679
- "name": "TemplateConditionGroup",
7813
+ "name": "ParameterBuilder",
7680
7814
  "declaration": {
7681
- "name": "TemplateConditionGroup",
7682
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts"
7815
+ "name": "ParameterBuilder",
7816
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.ts"
7683
7817
  }
7684
7818
  },
7685
7819
  {
7686
7820
  "kind": "custom-element-definition",
7687
- "name": "template-condition-group",
7821
+ "name": "parameter-builder",
7688
7822
  "declaration": {
7689
- "name": "TemplateConditionGroup",
7690
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts"
7823
+ "name": "ParameterBuilder",
7824
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.ts"
7691
7825
  }
7692
7826
  }
7693
7827
  ]
7694
7828
  },
7695
7829
  {
7696
7830
  "kind": "javascript-module",
7697
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.template.ts",
7831
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.template.ts",
7698
7832
  "declarations": [
7699
7833
  {
7700
7834
  "kind": "variable",
7701
- "name": "TemplateConditionBuilderTemplate",
7702
- "default": "html<TemplateConditionBuilder>`\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 class=\"left-value\"\n >\n ${repeat(\n (x) => x.leftValueItems,\n html<Field>`\n <rapid-option value=${(x) => JSON.stringify(x)}>${(x) => x.FIELD_NAME}</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 >\n ${repeat(\n (_) => Object.values(LogicalOperator),\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => !nullAndBlankLogicalOperatorValues.includes(LogicalOperator[x.logicalOperator]),\n html`\n <rapid-select class=\"right-criteria\" :value=${sync((x) => x.rightCriteria)}>\n ${repeat(\n (_) => Object.values(RightCriteria),\n html`\n <rapid-option value=${(x) => x}>${(x) => x}</rapid-option>\n `,\n )}\n </rapid-select>\n\n ${when(\n (x) => x.rightCriteria === RightCriteria.VALUE,\n html<TemplateConditionBuilder>`\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 <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 ${when(\n (x) => x.rightCriteria === RightCriteria.USER_ENTRY,\n html<TemplateConditionBuilder>`\n <rapid-select class=\"right-criteria-select\" :value=${sync((x) => x.rightValueSelect)}>\n ${(x) => rightValueItemsOptions(x.rightValueItems)}\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`"
7835
+ "name": "TemplateConditionGroupTemplate",
7836
+ "default": "html<TemplateConditionGroup>`\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, TemplateConditionGroup>`\n ${when(\n (x) => isGroup(x),\n html<ConditionNode>`\n <template-condition-group\n :fields=${(x, c) => c.parent.fields}\n :parameters=${(x, c) => c.parent.parameters}\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 ></template-condition-group>\n `,\n )}\n ${when(\n (x) => !isGroup(x),\n html<ConditionNode>`\n <template-condition-builder\n :fields=${(x, c) => c.parent.fields}\n :parameters=${(x, c) => c.parent.parameters}\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 ></template-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`"
7703
7837
  }
7704
7838
  ],
7705
7839
  "exports": [
7706
7840
  {
7707
7841
  "kind": "js",
7708
- "name": "TemplateConditionBuilderTemplate",
7842
+ "name": "TemplateConditionGroupTemplate",
7709
7843
  "declaration": {
7710
- "name": "TemplateConditionBuilderTemplate",
7711
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.template.ts"
7844
+ "name": "TemplateConditionGroupTemplate",
7845
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.template.ts"
7712
7846
  }
7713
7847
  }
7714
7848
  ]
7715
7849
  },
7716
7850
  {
7717
7851
  "kind": "javascript-module",
7718
- "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.ts",
7852
+ "path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts",
7719
7853
  "declarations": [
7720
7854
  {
7721
7855
  "kind": "class",
7722
- "description": "Condition builder for template notification rules.",
7723
- "name": "TemplateConditionBuilder",
7856
+ "description": "Parenthesized group of conditions/nested groups for notification template\ncriteria - see rule-condition-group for the rationale. Also forwards\n:parameters down to nested template-condition-builder rows so parameter\nbinding (USER_ENTRY) keeps working inside a group.",
7857
+ "name": "TemplateConditionGroup",
7724
7858
  "members": [
7725
7859
  {
7726
7860
  "kind": "field",
7727
- "name": "condition",
7861
+ "name": "node",
7728
7862
  "type": {
7729
- "text": "ConditionBuilderEntity"
7863
+ "text": "ConditionGroupEntity"
7730
7864
  }
7731
7865
  },
7732
7866
  {
7733
7867
  "kind": "field",
7734
- "name": "parameters",
7868
+ "name": "fields",
7735
7869
  "type": {
7736
- "text": "Array<ParameterBuilderEntity>"
7870
+ "text": "Field[]"
7737
7871
  },
7738
7872
  "default": "[]"
7739
7873
  },
7740
7874
  {
7741
7875
  "kind": "field",
7742
- "name": "fields",
7876
+ "name": "parameters",
7743
7877
  "type": {
7744
- "text": "Array<string>"
7878
+ "text": "Array<ParameterBuilderEntity>"
7745
7879
  },
7746
7880
  "default": "[]"
7747
7881
  },
@@ -7762,74 +7896,15 @@
7762
7896
  },
7763
7897
  {
7764
7898
  "kind": "field",
7765
- "name": "leftValue",
7766
- "type": {
7767
- "text": "any"
7768
- },
7769
- "default": "null"
7770
- },
7771
- {
7772
- "kind": "field",
7773
- "name": "leftValueItems",
7774
- "type": {
7775
- "text": "Array<any>"
7776
- },
7777
- "default": "[]"
7778
- },
7779
- {
7780
- "kind": "field",
7781
- "name": "logicalOperator",
7782
- "type": {
7783
- "text": "string"
7784
- },
7785
- "default": "null"
7786
- },
7787
- {
7788
- "kind": "field",
7789
- "name": "rightCriteria",
7790
- "type": {
7791
- "text": "string"
7792
- }
7793
- },
7794
- {
7795
- "kind": "field",
7796
- "name": "rightValueText",
7797
- "type": {
7798
- "text": "string"
7799
- },
7800
- "default": "null"
7801
- },
7802
- {
7803
- "kind": "field",
7804
- "name": "rightValueSelect",
7805
- "type": {
7806
- "text": "string"
7807
- },
7808
- "default": "null"
7809
- },
7810
- {
7811
- "kind": "field",
7812
- "name": "rightValueItems",
7813
- "type": {
7814
- "text": "Array<any>"
7815
- },
7816
- "default": "[]"
7817
- },
7818
- {
7819
- "kind": "field",
7820
- "name": "rightValueMultiSelect",
7899
+ "name": "groupChildren",
7821
7900
  "type": {
7822
- "text": "string[]"
7901
+ "text": "ConditionNode[]"
7823
7902
  },
7824
7903
  "default": "[]"
7825
7904
  },
7826
7905
  {
7827
7906
  "kind": "method",
7828
- "name": "deleteCondition"
7829
- },
7830
- {
7831
- "kind": "method",
7832
- "name": "conditionChanged"
7907
+ "name": "nodeChanged"
7833
7908
  },
7834
7909
  {
7835
7910
  "kind": "method",
@@ -7837,149 +7912,74 @@
7837
7912
  },
7838
7913
  {
7839
7914
  "kind": "method",
7840
- "name": "parametersChanged"
7915
+ "name": "newCondition"
7841
7916
  },
7842
7917
  {
7843
7918
  "kind": "method",
7844
- "name": "getMatchingParameter",
7845
- "privacy": "private",
7846
- "return": {
7847
- "type": {
7848
- "text": "ParameterBuilderEntity | undefined"
7849
- }
7850
- }
7919
+ "name": "newGroup"
7851
7920
  },
7852
7921
  {
7853
7922
  "kind": "method",
7854
- "name": "syncParameterBinding",
7855
- "privacy": "private",
7856
- "return": {
7857
- "type": {
7858
- "text": "boolean"
7923
+ "name": "editChild",
7924
+ "parameters": [
7925
+ {
7926
+ "name": "_editedChild",
7927
+ "type": {
7928
+ "text": "ConditionNode"
7929
+ }
7859
7930
  }
7860
- }
7861
- },
7862
- {
7863
- "kind": "method",
7864
- "name": "resetToValueEditor",
7865
- "privacy": "private"
7866
- },
7867
- {
7868
- "kind": "method",
7869
- "name": "fieldsChanged"
7870
- },
7871
- {
7872
- "kind": "method",
7873
- "name": "logicalOperatorChanged"
7874
- },
7875
- {
7876
- "kind": "method",
7877
- "name": "assignLeftValue",
7878
- "privacy": "private"
7879
- },
7880
- {
7881
- "kind": "method",
7882
- "name": "leftValueChanged"
7883
- },
7884
- {
7885
- "kind": "method",
7886
- "name": "assignRightValue",
7887
- "privacy": "private"
7888
- },
7889
- {
7890
- "kind": "method",
7891
- "name": "rightCriteriaChanged"
7892
- },
7893
- {
7894
- "kind": "method",
7895
- "name": "clearRightValueText",
7896
- "privacy": "private"
7897
- },
7898
- {
7899
- "kind": "method",
7900
- "name": "clearRightValueSelect",
7901
- "privacy": "private"
7902
- },
7903
- {
7904
- "kind": "method",
7905
- "name": "rightValueTextChanged"
7906
- },
7907
- {
7908
- "kind": "method",
7909
- "name": "rightValueSelectChanged"
7931
+ ]
7910
7932
  },
7911
7933
  {
7912
7934
  "kind": "method",
7913
- "name": "rightValueMultiSelectChanged"
7935
+ "name": "deleteChild",
7936
+ "parameters": [
7937
+ {
7938
+ "name": "deletedChild",
7939
+ "type": {
7940
+ "text": "ConditionNode"
7941
+ }
7942
+ }
7943
+ ]
7914
7944
  },
7915
7945
  {
7916
7946
  "kind": "method",
7917
- "name": "getEnumValues",
7918
- "return": {
7919
- "type": {
7920
- "text": "string[]"
7921
- }
7922
- }
7947
+ "name": "deleteSelf"
7923
7948
  }
7924
7949
  ],
7925
7950
  "events": [
7926
7951
  {
7927
- "description": "Fired when a condition is deleted. detail: `ConditionBuilderEntity`",
7952
+ "description": "Fired when this whole group should be removed",
7928
7953
  "name": "delete"
7929
7954
  },
7930
7955
  {
7931
- "description": "Fired when a condition is edited. detail: `ConditionBuilderEntity`",
7956
+ "description": "Fired when anything inside this group changes",
7932
7957
  "name": "edit"
7933
7958
  }
7934
7959
  ],
7935
- "attributes": [
7936
- {
7937
- "name": "condition",
7938
- "type": {
7939
- "text": "ConditionBuilderEntity"
7940
- },
7941
- "fieldName": "condition"
7942
- },
7943
- {
7944
- "name": "parameters",
7945
- "type": {
7946
- "text": "Array<ParameterBuilderEntity>"
7947
- },
7948
- "default": "[]",
7949
- "fieldName": "parameters"
7950
- },
7951
- {
7952
- "name": "fields",
7953
- "type": {
7954
- "text": "Array<string>"
7955
- },
7956
- "default": "[]",
7957
- "fieldName": "fields"
7958
- }
7959
- ],
7960
7960
  "superclass": {
7961
7961
  "name": "GenesisElement",
7962
7962
  "package": "@genesislcap/web-core"
7963
7963
  },
7964
- "tagName": "template-condition-builder",
7964
+ "tagName": "template-condition-group",
7965
7965
  "customElement": true
7966
7966
  }
7967
7967
  ],
7968
7968
  "exports": [
7969
7969
  {
7970
7970
  "kind": "js",
7971
- "name": "TemplateConditionBuilder",
7971
+ "name": "TemplateConditionGroup",
7972
7972
  "declaration": {
7973
- "name": "TemplateConditionBuilder",
7974
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.ts"
7973
+ "name": "TemplateConditionGroup",
7974
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts"
7975
7975
  }
7976
7976
  },
7977
7977
  {
7978
7978
  "kind": "custom-element-definition",
7979
- "name": "template-condition-builder",
7979
+ "name": "template-condition-group",
7980
7980
  "declaration": {
7981
- "name": "TemplateConditionBuilder",
7982
- "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.ts"
7981
+ "name": "TemplateConditionGroup",
7982
+ "module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts"
7983
7983
  }
7984
7984
  }
7985
7985
  ]