@genesislcap/pbc-notify-ui 15.3.0 → 15.3.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.
- package/dist/custom-elements.json +179 -179
- package/dist/dts/components/foundation-inbox/inbox-base/inbox-base.d.ts.map +1 -1
- package/dist/dts/react.d.ts +11 -11
- package/dist/dts/services/notify-route.service.d.ts +11 -1
- package/dist/dts/services/notify-route.service.d.ts.map +1 -1
- package/dist/esm/components/foundation-inbox/inbox-base/inbox-base.js +2 -1
- package/dist/esm/services/notify-route.service.js +5 -2
- package/dist/pbc-notify-ui.d.ts +11 -1
- package/dist/react.cjs +5 -5
- package/dist/react.mjs +4 -4
- package/package.json +23 -23
- package/src/components/foundation-inbox/inbox-base/inbox-base.ts +2 -1
- package/src/services/notify-route.service.ts +16 -3
|
@@ -415,27 +415,6 @@
|
|
|
415
415
|
}
|
|
416
416
|
]
|
|
417
417
|
},
|
|
418
|
-
{
|
|
419
|
-
"kind": "javascript-module",
|
|
420
|
-
"path": "src/styles/scrollbar.styles.ts",
|
|
421
|
-
"declarations": [
|
|
422
|
-
{
|
|
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`"
|
|
426
|
-
}
|
|
427
|
-
],
|
|
428
|
-
"exports": [
|
|
429
|
-
{
|
|
430
|
-
"kind": "js",
|
|
431
|
-
"name": "scrollbarStyles",
|
|
432
|
-
"declaration": {
|
|
433
|
-
"name": "scrollbarStyles",
|
|
434
|
-
"module": "src/styles/scrollbar.styles.ts"
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
]
|
|
438
|
-
},
|
|
439
418
|
{
|
|
440
419
|
"kind": "javascript-module",
|
|
441
420
|
"path": "src/utils/eventDetail.ts",
|
|
@@ -757,6 +736,27 @@
|
|
|
757
736
|
}
|
|
758
737
|
]
|
|
759
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
760
|
{
|
|
761
761
|
"kind": "javascript-module",
|
|
762
762
|
"path": "src/components/foundation-inbox/inbox.styles.ts",
|
|
@@ -7534,6 +7534,164 @@
|
|
|
7534
7534
|
}
|
|
7535
7535
|
]
|
|
7536
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"
|
|
7656
|
+
}
|
|
7657
|
+
],
|
|
7658
|
+
"events": [
|
|
7659
|
+
{
|
|
7660
|
+
"description": "Fired when this whole group should be removed",
|
|
7661
|
+
"name": "delete"
|
|
7662
|
+
},
|
|
7663
|
+
{
|
|
7664
|
+
"description": "Fired when anything inside this group changes",
|
|
7665
|
+
"name": "edit"
|
|
7666
|
+
}
|
|
7667
|
+
],
|
|
7668
|
+
"superclass": {
|
|
7669
|
+
"name": "GenesisElement",
|
|
7670
|
+
"package": "@genesislcap/web-core"
|
|
7671
|
+
},
|
|
7672
|
+
"tagName": "template-condition-group",
|
|
7673
|
+
"customElement": true
|
|
7674
|
+
}
|
|
7675
|
+
],
|
|
7676
|
+
"exports": [
|
|
7677
|
+
{
|
|
7678
|
+
"kind": "js",
|
|
7679
|
+
"name": "TemplateConditionGroup",
|
|
7680
|
+
"declaration": {
|
|
7681
|
+
"name": "TemplateConditionGroup",
|
|
7682
|
+
"module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts"
|
|
7683
|
+
}
|
|
7684
|
+
},
|
|
7685
|
+
{
|
|
7686
|
+
"kind": "custom-element-definition",
|
|
7687
|
+
"name": "template-condition-group",
|
|
7688
|
+
"declaration": {
|
|
7689
|
+
"name": "TemplateConditionGroup",
|
|
7690
|
+
"module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts"
|
|
7691
|
+
}
|
|
7692
|
+
}
|
|
7693
|
+
]
|
|
7694
|
+
},
|
|
7537
7695
|
{
|
|
7538
7696
|
"kind": "javascript-module",
|
|
7539
7697
|
"path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.template.ts",
|
|
@@ -7825,164 +7983,6 @@
|
|
|
7825
7983
|
}
|
|
7826
7984
|
}
|
|
7827
7985
|
]
|
|
7828
|
-
},
|
|
7829
|
-
{
|
|
7830
|
-
"kind": "javascript-module",
|
|
7831
|
-
"path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.template.ts",
|
|
7832
|
-
"declarations": [
|
|
7833
|
-
{
|
|
7834
|
-
"kind": "variable",
|
|
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`"
|
|
7837
|
-
}
|
|
7838
|
-
],
|
|
7839
|
-
"exports": [
|
|
7840
|
-
{
|
|
7841
|
-
"kind": "js",
|
|
7842
|
-
"name": "TemplateConditionGroupTemplate",
|
|
7843
|
-
"declaration": {
|
|
7844
|
-
"name": "TemplateConditionGroupTemplate",
|
|
7845
|
-
"module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.template.ts"
|
|
7846
|
-
}
|
|
7847
|
-
}
|
|
7848
|
-
]
|
|
7849
|
-
},
|
|
7850
|
-
{
|
|
7851
|
-
"kind": "javascript-module",
|
|
7852
|
-
"path": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts",
|
|
7853
|
-
"declarations": [
|
|
7854
|
-
{
|
|
7855
|
-
"kind": "class",
|
|
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",
|
|
7858
|
-
"members": [
|
|
7859
|
-
{
|
|
7860
|
-
"kind": "field",
|
|
7861
|
-
"name": "node",
|
|
7862
|
-
"type": {
|
|
7863
|
-
"text": "ConditionGroupEntity"
|
|
7864
|
-
}
|
|
7865
|
-
},
|
|
7866
|
-
{
|
|
7867
|
-
"kind": "field",
|
|
7868
|
-
"name": "fields",
|
|
7869
|
-
"type": {
|
|
7870
|
-
"text": "Field[]"
|
|
7871
|
-
},
|
|
7872
|
-
"default": "[]"
|
|
7873
|
-
},
|
|
7874
|
-
{
|
|
7875
|
-
"kind": "field",
|
|
7876
|
-
"name": "parameters",
|
|
7877
|
-
"type": {
|
|
7878
|
-
"text": "Array<ParameterBuilderEntity>"
|
|
7879
|
-
},
|
|
7880
|
-
"default": "[]"
|
|
7881
|
-
},
|
|
7882
|
-
{
|
|
7883
|
-
"kind": "field",
|
|
7884
|
-
"name": "isFirst",
|
|
7885
|
-
"type": {
|
|
7886
|
-
"text": "boolean"
|
|
7887
|
-
},
|
|
7888
|
-
"default": "false"
|
|
7889
|
-
},
|
|
7890
|
-
{
|
|
7891
|
-
"kind": "field",
|
|
7892
|
-
"name": "joinOperator",
|
|
7893
|
-
"type": {
|
|
7894
|
-
"text": "string"
|
|
7895
|
-
}
|
|
7896
|
-
},
|
|
7897
|
-
{
|
|
7898
|
-
"kind": "field",
|
|
7899
|
-
"name": "groupChildren",
|
|
7900
|
-
"type": {
|
|
7901
|
-
"text": "ConditionNode[]"
|
|
7902
|
-
},
|
|
7903
|
-
"default": "[]"
|
|
7904
|
-
},
|
|
7905
|
-
{
|
|
7906
|
-
"kind": "method",
|
|
7907
|
-
"name": "nodeChanged"
|
|
7908
|
-
},
|
|
7909
|
-
{
|
|
7910
|
-
"kind": "method",
|
|
7911
|
-
"name": "joinOperatorChanged"
|
|
7912
|
-
},
|
|
7913
|
-
{
|
|
7914
|
-
"kind": "method",
|
|
7915
|
-
"name": "newCondition"
|
|
7916
|
-
},
|
|
7917
|
-
{
|
|
7918
|
-
"kind": "method",
|
|
7919
|
-
"name": "newGroup"
|
|
7920
|
-
},
|
|
7921
|
-
{
|
|
7922
|
-
"kind": "method",
|
|
7923
|
-
"name": "editChild",
|
|
7924
|
-
"parameters": [
|
|
7925
|
-
{
|
|
7926
|
-
"name": "_editedChild",
|
|
7927
|
-
"type": {
|
|
7928
|
-
"text": "ConditionNode"
|
|
7929
|
-
}
|
|
7930
|
-
}
|
|
7931
|
-
]
|
|
7932
|
-
},
|
|
7933
|
-
{
|
|
7934
|
-
"kind": "method",
|
|
7935
|
-
"name": "deleteChild",
|
|
7936
|
-
"parameters": [
|
|
7937
|
-
{
|
|
7938
|
-
"name": "deletedChild",
|
|
7939
|
-
"type": {
|
|
7940
|
-
"text": "ConditionNode"
|
|
7941
|
-
}
|
|
7942
|
-
}
|
|
7943
|
-
]
|
|
7944
|
-
},
|
|
7945
|
-
{
|
|
7946
|
-
"kind": "method",
|
|
7947
|
-
"name": "deleteSelf"
|
|
7948
|
-
}
|
|
7949
|
-
],
|
|
7950
|
-
"events": [
|
|
7951
|
-
{
|
|
7952
|
-
"description": "Fired when this whole group should be removed",
|
|
7953
|
-
"name": "delete"
|
|
7954
|
-
},
|
|
7955
|
-
{
|
|
7956
|
-
"description": "Fired when anything inside this group changes",
|
|
7957
|
-
"name": "edit"
|
|
7958
|
-
}
|
|
7959
|
-
],
|
|
7960
|
-
"superclass": {
|
|
7961
|
-
"name": "GenesisElement",
|
|
7962
|
-
"package": "@genesislcap/web-core"
|
|
7963
|
-
},
|
|
7964
|
-
"tagName": "template-condition-group",
|
|
7965
|
-
"customElement": true
|
|
7966
|
-
}
|
|
7967
|
-
],
|
|
7968
|
-
"exports": [
|
|
7969
|
-
{
|
|
7970
|
-
"kind": "js",
|
|
7971
|
-
"name": "TemplateConditionGroup",
|
|
7972
|
-
"declaration": {
|
|
7973
|
-
"name": "TemplateConditionGroup",
|
|
7974
|
-
"module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts"
|
|
7975
|
-
}
|
|
7976
|
-
},
|
|
7977
|
-
{
|
|
7978
|
-
"kind": "custom-element-definition",
|
|
7979
|
-
"name": "template-condition-group",
|
|
7980
|
-
"declaration": {
|
|
7981
|
-
"name": "TemplateConditionGroup",
|
|
7982
|
-
"module": "src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts"
|
|
7983
|
-
}
|
|
7984
|
-
}
|
|
7985
|
-
]
|
|
7986
7986
|
}
|
|
7987
7987
|
]
|
|
7988
7988
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox-base.d.ts","sourceRoot":"","sources":["../../../../../src/components/foundation-inbox/inbox-base/inbox-base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"inbox-base.d.ts","sourceRoot":"","sources":["../../../../../src/components/foundation-inbox/inbox-base/inbox-base.ts"],"names":[],"mappings":"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"}
|
package/dist/dts/react.d.ts
CHANGED
|
@@ -268,17 +268,6 @@ export declare const ParameterBuilder: React.ForwardRefExoticComponent<
|
|
|
268
268
|
>;
|
|
269
269
|
export type ParameterBuilderRef = ParameterBuilderWC;
|
|
270
270
|
|
|
271
|
-
export declare const TemplateConditionBuilder: React.ForwardRefExoticComponent<
|
|
272
|
-
React.PropsWithChildren<
|
|
273
|
-
Omit<PublicOf<TemplateConditionBuilderWC>, 'children' | 'style'> &
|
|
274
|
-
HTMLWCProps & {
|
|
275
|
-
onDelete?: (event: CustomEvent<ConditionBuilderEntity>) => void;
|
|
276
|
-
onEdit?: (event: CustomEvent<ConditionBuilderEntity>) => void;
|
|
277
|
-
}
|
|
278
|
-
> & React.RefAttributes<TemplateConditionBuilderWC>
|
|
279
|
-
>;
|
|
280
|
-
export type TemplateConditionBuilderRef = TemplateConditionBuilderWC;
|
|
281
|
-
|
|
282
271
|
export declare const TemplateConditionGroup: React.ForwardRefExoticComponent<
|
|
283
272
|
React.PropsWithChildren<
|
|
284
273
|
Omit<PublicOf<TemplateConditionGroupWC>, 'children' | 'style'> &
|
|
@@ -290,4 +279,15 @@ export declare const TemplateConditionGroup: React.ForwardRefExoticComponent<
|
|
|
290
279
|
>;
|
|
291
280
|
export type TemplateConditionGroupRef = TemplateConditionGroupWC;
|
|
292
281
|
|
|
282
|
+
export declare const TemplateConditionBuilder: React.ForwardRefExoticComponent<
|
|
283
|
+
React.PropsWithChildren<
|
|
284
|
+
Omit<PublicOf<TemplateConditionBuilderWC>, 'children' | 'style'> &
|
|
285
|
+
HTMLWCProps & {
|
|
286
|
+
onDelete?: (event: CustomEvent<ConditionBuilderEntity>) => void;
|
|
287
|
+
onEdit?: (event: CustomEvent<ConditionBuilderEntity>) => void;
|
|
288
|
+
}
|
|
289
|
+
> & React.RefAttributes<TemplateConditionBuilderWC>
|
|
290
|
+
>;
|
|
291
|
+
export type TemplateConditionBuilderRef = TemplateConditionBuilderWC;
|
|
292
|
+
|
|
293
293
|
export {};
|
|
@@ -15,7 +15,17 @@ export interface NotifyRoute {
|
|
|
15
15
|
* A topic "supports" a channel when any route exists for that
|
|
16
16
|
* TOPIC_MATCH + GATEWAY_ID (admin-configured marker rows, entity-blank).
|
|
17
17
|
* A specific user has that channel enabled when a route additionally
|
|
18
|
-
* exists scoped to ENTITY_ID_TYPE=
|
|
18
|
+
* exists scoped to ENTITY_ID_TYPE=SELF, ENTITY_ID=<username>.
|
|
19
|
+
*
|
|
20
|
+
* The per-user route is created with ENTITY_ID_TYPE=SELF (not USER_NAME) so
|
|
21
|
+
* delivery resolves to the notification's SENDER (the subscriber whose rule
|
|
22
|
+
* fired) rather than to a fixed named user. When several users subscribe to
|
|
23
|
+
* the same shared topic — each getting their own rule + route — a USER_NAME
|
|
24
|
+
* route makes every subscriber's rule deliver to every subscriber's route
|
|
25
|
+
* (an N×N fan-out: N alerts/emails per user). With SELF, each fired rule
|
|
26
|
+
* delivers only to its own owner, so delivery scales linearly (one per user).
|
|
27
|
+
* ENTITY_ID is still stored as the username purely as a per-user marker for
|
|
28
|
+
* subscribe idempotency / unsubscribe; the dispatcher ignores it for SELF.
|
|
19
29
|
*/
|
|
20
30
|
export interface NotifyRouteService {
|
|
21
31
|
getAllRoutes(channel: NotifyChannel): Promise<NotifyRoute[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify-route.service.d.ts","sourceRoot":"","sources":["../../../src/services/notify-route.service.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC;AAO9C,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAsBD
|
|
1
|
+
{"version":3,"file":"notify-route.service.d.ts","sourceRoot":"","sources":["../../../src/services/notify-route.service.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC;AAO9C,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAsBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7D,aAAa,CACX,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC/B,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/F,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3E;AA0GD,eAAO,MAAM,kBAAkB,0EAE9B,CAAC"}
|
|
@@ -300,7 +300,8 @@ export class FoundationInboxBase extends GenesisElement {
|
|
|
300
300
|
});
|
|
301
301
|
}
|
|
302
302
|
isOwnRoute(route, username) {
|
|
303
|
-
|
|
303
|
+
// Per-user subscription routes are created as SELF with ENTITY_ID=<username>
|
|
304
|
+
return !!username && route.ENTITY_ID_TYPE === 'SELF' && route.ENTITY_ID === username;
|
|
304
305
|
}
|
|
305
306
|
findSubscribedRule(template) {
|
|
306
307
|
return this.rules.find((rule) => rule.NAME === template.NAME);
|
|
@@ -31,7 +31,7 @@ class NotifyRouteServiceImpl {
|
|
|
31
31
|
}
|
|
32
32
|
findUserRoute(channel, topic, username) {
|
|
33
33
|
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
-
const criteriaMatch = `TOPIC_MATCH == '${this.escape(topic)}' && ENTITY_ID == '${this.escape(username)}' && ENTITY_ID_TYPE == '
|
|
34
|
+
const criteriaMatch = `TOPIC_MATCH == '${this.escape(topic)}' && ENTITY_ID == '${this.escape(username)}' && ENTITY_ID_TYPE == 'SELF'`;
|
|
35
35
|
const [route] = yield this.queryRoutes(channel, criteriaMatch);
|
|
36
36
|
return route !== null && route !== void 0 ? route : null;
|
|
37
37
|
});
|
|
@@ -51,7 +51,10 @@ class NotifyRouteServiceImpl {
|
|
|
51
51
|
GATEWAY_ID: GATEWAY_ID[channel],
|
|
52
52
|
ROUTE_ENABLED: true,
|
|
53
53
|
ENTITY_ID: username,
|
|
54
|
-
|
|
54
|
+
// SELF (not USER_NAME): delivery resolves to the fired rule's SENDER (the
|
|
55
|
+
// subscriber), avoiding the N×N fan-out across co-subscribers of a shared
|
|
56
|
+
// topic. ENTITY_ID is kept as a per-user marker only; ignored for SELF.
|
|
57
|
+
ENTITY_ID_TYPE: 'SELF',
|
|
55
58
|
EXCLUDE_SENDER: false,
|
|
56
59
|
},
|
|
57
60
|
IGNORE_WARNINGS: true,
|
package/dist/pbc-notify-ui.d.ts
CHANGED
|
@@ -270,7 +270,17 @@ declare interface NotifyRoute {
|
|
|
270
270
|
* A topic "supports" a channel when any route exists for that
|
|
271
271
|
* TOPIC_MATCH + GATEWAY_ID (admin-configured marker rows, entity-blank).
|
|
272
272
|
* A specific user has that channel enabled when a route additionally
|
|
273
|
-
* exists scoped to ENTITY_ID_TYPE=
|
|
273
|
+
* exists scoped to ENTITY_ID_TYPE=SELF, ENTITY_ID=<username>.
|
|
274
|
+
*
|
|
275
|
+
* The per-user route is created with ENTITY_ID_TYPE=SELF (not USER_NAME) so
|
|
276
|
+
* delivery resolves to the notification's SENDER (the subscriber whose rule
|
|
277
|
+
* fired) rather than to a fixed named user. When several users subscribe to
|
|
278
|
+
* the same shared topic — each getting their own rule + route — a USER_NAME
|
|
279
|
+
* route makes every subscriber's rule deliver to every subscriber's route
|
|
280
|
+
* (an N×N fan-out: N alerts/emails per user). With SELF, each fired rule
|
|
281
|
+
* delivers only to its own owner, so delivery scales linearly (one per user).
|
|
282
|
+
* ENTITY_ID is still stored as the username purely as a per-user marker for
|
|
283
|
+
* subscribe idempotency / unsubscribe; the dispatcher ignores it for SELF.
|
|
274
284
|
*/
|
|
275
285
|
declare interface NotifyRouteService {
|
|
276
286
|
getAllRoutes(channel: NotifyChannel): Promise<NotifyRoute[]>;
|
package/dist/react.cjs
CHANGED
|
@@ -254,7 +254,7 @@ const ParameterBuilder = React.forwardRef(function ParameterBuilder(props, ref)
|
|
|
254
254
|
return React.createElement(customElements.getName(ParameterBuilderWC) ?? 'parameter-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
255
255
|
});
|
|
256
256
|
|
|
257
|
-
const
|
|
257
|
+
const TemplateConditionGroup = React.forwardRef(function TemplateConditionGroup(props, ref) {
|
|
258
258
|
const { onDelete, onEdit, children, ...rest } = props;
|
|
259
259
|
const _innerRef = React.useRef(null);
|
|
260
260
|
const _onDeleteRef = React.useRef(onDelete);
|
|
@@ -273,10 +273,10 @@ const TemplateConditionBuilder = React.forwardRef(function TemplateConditionBuil
|
|
|
273
273
|
el.removeEventListener('edit', _onEditFn);
|
|
274
274
|
};
|
|
275
275
|
}, []);
|
|
276
|
-
return React.createElement(customElements.getName(
|
|
276
|
+
return React.createElement(customElements.getName(TemplateConditionGroupWC) ?? 'template-condition-group', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
277
277
|
});
|
|
278
278
|
|
|
279
|
-
const
|
|
279
|
+
const TemplateConditionBuilder = React.forwardRef(function TemplateConditionBuilder(props, ref) {
|
|
280
280
|
const { onDelete, onEdit, children, ...rest } = props;
|
|
281
281
|
const _innerRef = React.useRef(null);
|
|
282
282
|
const _onDeleteRef = React.useRef(onDelete);
|
|
@@ -295,7 +295,7 @@ const TemplateConditionGroup = React.forwardRef(function TemplateConditionGroup(
|
|
|
295
295
|
el.removeEventListener('edit', _onEditFn);
|
|
296
296
|
};
|
|
297
297
|
}, []);
|
|
298
|
-
return React.createElement(customElements.getName(
|
|
298
|
+
return React.createElement(customElements.getName(TemplateConditionBuilderWC) ?? 'template-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
299
299
|
});
|
|
300
300
|
|
|
301
301
|
module.exports = {
|
|
@@ -321,6 +321,6 @@ module.exports = {
|
|
|
321
321
|
RuleConditionBuilder,
|
|
322
322
|
RuleConditionGroup,
|
|
323
323
|
ParameterBuilder,
|
|
324
|
-
TemplateConditionBuilder,
|
|
325
324
|
TemplateConditionGroup,
|
|
325
|
+
TemplateConditionBuilder,
|
|
326
326
|
};
|
package/dist/react.mjs
CHANGED
|
@@ -252,7 +252,7 @@ export const ParameterBuilder = React.forwardRef(function ParameterBuilder(props
|
|
|
252
252
|
return React.createElement(customElements.getName(ParameterBuilderWC) ?? 'parameter-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
253
253
|
});
|
|
254
254
|
|
|
255
|
-
export const
|
|
255
|
+
export const TemplateConditionGroup = React.forwardRef(function TemplateConditionGroup(props, ref) {
|
|
256
256
|
const { onDelete, onEdit, children, ...rest } = props;
|
|
257
257
|
const _innerRef = React.useRef(null);
|
|
258
258
|
const _onDeleteRef = React.useRef(onDelete);
|
|
@@ -271,10 +271,10 @@ export const TemplateConditionBuilder = React.forwardRef(function TemplateCondit
|
|
|
271
271
|
el.removeEventListener('edit', _onEditFn);
|
|
272
272
|
};
|
|
273
273
|
}, []);
|
|
274
|
-
return React.createElement(customElements.getName(
|
|
274
|
+
return React.createElement(customElements.getName(TemplateConditionGroupWC) ?? 'template-condition-group', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
275
275
|
});
|
|
276
276
|
|
|
277
|
-
export const
|
|
277
|
+
export const TemplateConditionBuilder = React.forwardRef(function TemplateConditionBuilder(props, ref) {
|
|
278
278
|
const { onDelete, onEdit, children, ...rest } = props;
|
|
279
279
|
const _innerRef = React.useRef(null);
|
|
280
280
|
const _onDeleteRef = React.useRef(onDelete);
|
|
@@ -293,5 +293,5 @@ export const TemplateConditionGroup = React.forwardRef(function TemplateConditio
|
|
|
293
293
|
el.removeEventListener('edit', _onEditFn);
|
|
294
294
|
};
|
|
295
295
|
}, []);
|
|
296
|
-
return React.createElement(customElements.getName(
|
|
296
|
+
return React.createElement(customElements.getName(TemplateConditionBuilderWC) ?? 'template-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
297
297
|
});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genesislcap/pbc-notify-ui",
|
|
3
3
|
"description": "Genesis PBC Notify UI",
|
|
4
|
-
"version": "15.3.
|
|
4
|
+
"version": "15.3.2",
|
|
5
5
|
"license": "SEE LICENSE IN license.txt",
|
|
6
6
|
"workspaces": [
|
|
7
7
|
"client"
|
|
@@ -83,30 +83,30 @@
|
|
|
83
83
|
"@commitlint/format": "^19.0.3",
|
|
84
84
|
"@genesiscommunitysuccess/cep-fast-plugin": "5.0.3",
|
|
85
85
|
"@genesiscommunitysuccess/custom-elements-lsp": "5.0.3",
|
|
86
|
-
"@genesislcap/design-system-configurator": "15.3.
|
|
87
|
-
"@genesislcap/eslint-config": "15.3.
|
|
88
|
-
"@genesislcap/eslint-stylelint-builder": "15.3.
|
|
89
|
-
"@genesislcap/foundation-testing": "15.3.
|
|
90
|
-
"@genesislcap/genx": "15.3.
|
|
91
|
-
"@genesislcap/prettier-config": "15.3.
|
|
92
|
-
"@genesislcap/stylelint-config": "15.3.
|
|
93
|
-
"@genesislcap/vite-builder": "15.3.
|
|
94
|
-
"@genesislcap/webpack-builder": "15.3.
|
|
86
|
+
"@genesislcap/design-system-configurator": "15.3.2",
|
|
87
|
+
"@genesislcap/eslint-config": "15.3.2",
|
|
88
|
+
"@genesislcap/eslint-stylelint-builder": "15.3.2",
|
|
89
|
+
"@genesislcap/foundation-testing": "15.3.2",
|
|
90
|
+
"@genesislcap/genx": "15.3.2",
|
|
91
|
+
"@genesislcap/prettier-config": "15.3.2",
|
|
92
|
+
"@genesislcap/stylelint-config": "15.3.2",
|
|
93
|
+
"@genesislcap/vite-builder": "15.3.2",
|
|
94
|
+
"@genesislcap/webpack-builder": "15.3.2",
|
|
95
95
|
"dayjs": "^1.11.7"
|
|
96
96
|
},
|
|
97
97
|
"dependencies": {
|
|
98
|
-
"@genesislcap/foundation-comms": "15.3.
|
|
99
|
-
"@genesislcap/foundation-criteria": "15.3.
|
|
100
|
-
"@genesislcap/foundation-entity-management": "15.3.
|
|
101
|
-
"@genesislcap/foundation-forms": "15.3.
|
|
102
|
-
"@genesislcap/foundation-layout": "15.3.
|
|
103
|
-
"@genesislcap/foundation-logger": "15.3.
|
|
104
|
-
"@genesislcap/foundation-notifications": "15.3.
|
|
105
|
-
"@genesislcap/foundation-ui": "15.3.
|
|
106
|
-
"@genesislcap/foundation-utils": "15.3.
|
|
107
|
-
"@genesislcap/rapid-design-system": "15.3.
|
|
108
|
-
"@genesislcap/rapid-grid-pro": "15.3.
|
|
109
|
-
"@genesislcap/web-core": "15.3.
|
|
98
|
+
"@genesislcap/foundation-comms": "15.3.2",
|
|
99
|
+
"@genesislcap/foundation-criteria": "15.3.2",
|
|
100
|
+
"@genesislcap/foundation-entity-management": "15.3.2",
|
|
101
|
+
"@genesislcap/foundation-forms": "15.3.2",
|
|
102
|
+
"@genesislcap/foundation-layout": "15.3.2",
|
|
103
|
+
"@genesislcap/foundation-logger": "15.3.2",
|
|
104
|
+
"@genesislcap/foundation-notifications": "15.3.2",
|
|
105
|
+
"@genesislcap/foundation-ui": "15.3.2",
|
|
106
|
+
"@genesislcap/foundation-utils": "15.3.2",
|
|
107
|
+
"@genesislcap/rapid-design-system": "15.3.2",
|
|
108
|
+
"@genesislcap/rapid-grid-pro": "15.3.2",
|
|
109
|
+
"@genesislcap/web-core": "15.3.2",
|
|
110
110
|
"lodash.debounce": "^4.0.8",
|
|
111
111
|
"rxjs": "^7.5.4"
|
|
112
112
|
},
|
|
@@ -114,5 +114,5 @@
|
|
|
114
114
|
"access": "public"
|
|
115
115
|
},
|
|
116
116
|
"customElements": "dist/custom-elements.json",
|
|
117
|
-
"gitHead": "
|
|
117
|
+
"gitHead": "9b3b32a9d7642518469a81d1ed9cc79b3a6c0ece"
|
|
118
118
|
}
|
|
@@ -413,7 +413,8 @@ export class FoundationInboxBase extends GenesisElement {
|
|
|
413
413
|
}
|
|
414
414
|
|
|
415
415
|
private isOwnRoute(route: NotifyRoute, username: string): boolean {
|
|
416
|
-
|
|
416
|
+
// Per-user subscription routes are created as SELF with ENTITY_ID=<username>
|
|
417
|
+
return !!username && route.ENTITY_ID_TYPE === 'SELF' && route.ENTITY_ID === username;
|
|
417
418
|
}
|
|
418
419
|
|
|
419
420
|
findSubscribedRule(template: RuleTemplate): Rule | undefined {
|
|
@@ -45,7 +45,17 @@ const DELETE_EVENT: Record<NotifyChannel, string> = {
|
|
|
45
45
|
* A topic "supports" a channel when any route exists for that
|
|
46
46
|
* TOPIC_MATCH + GATEWAY_ID (admin-configured marker rows, entity-blank).
|
|
47
47
|
* A specific user has that channel enabled when a route additionally
|
|
48
|
-
* exists scoped to ENTITY_ID_TYPE=
|
|
48
|
+
* exists scoped to ENTITY_ID_TYPE=SELF, ENTITY_ID=<username>.
|
|
49
|
+
*
|
|
50
|
+
* The per-user route is created with ENTITY_ID_TYPE=SELF (not USER_NAME) so
|
|
51
|
+
* delivery resolves to the notification's SENDER (the subscriber whose rule
|
|
52
|
+
* fired) rather than to a fixed named user. When several users subscribe to
|
|
53
|
+
* the same shared topic — each getting their own rule + route — a USER_NAME
|
|
54
|
+
* route makes every subscriber's rule deliver to every subscriber's route
|
|
55
|
+
* (an N×N fan-out: N alerts/emails per user). With SELF, each fired rule
|
|
56
|
+
* delivers only to its own owner, so delivery scales linearly (one per user).
|
|
57
|
+
* ENTITY_ID is still stored as the username purely as a per-user marker for
|
|
58
|
+
* subscribe idempotency / unsubscribe; the dispatcher ignores it for SELF.
|
|
49
59
|
*/
|
|
50
60
|
export interface NotifyRouteService {
|
|
51
61
|
getAllRoutes(channel: NotifyChannel): Promise<NotifyRoute[]>;
|
|
@@ -72,7 +82,7 @@ class NotifyRouteServiceImpl implements NotifyRouteService {
|
|
|
72
82
|
topic: string,
|
|
73
83
|
username: string,
|
|
74
84
|
): Promise<NotifyRoute | null> {
|
|
75
|
-
const criteriaMatch = `TOPIC_MATCH == '${this.escape(topic)}' && ENTITY_ID == '${this.escape(username)}' && ENTITY_ID_TYPE == '
|
|
85
|
+
const criteriaMatch = `TOPIC_MATCH == '${this.escape(topic)}' && ENTITY_ID == '${this.escape(username)}' && ENTITY_ID_TYPE == 'SELF'`;
|
|
76
86
|
const [route] = await this.queryRoutes(channel, criteriaMatch);
|
|
77
87
|
return route ?? null;
|
|
78
88
|
}
|
|
@@ -96,7 +106,10 @@ class NotifyRouteServiceImpl implements NotifyRouteService {
|
|
|
96
106
|
GATEWAY_ID: GATEWAY_ID[channel],
|
|
97
107
|
ROUTE_ENABLED: true,
|
|
98
108
|
ENTITY_ID: username,
|
|
99
|
-
|
|
109
|
+
// SELF (not USER_NAME): delivery resolves to the fired rule's SENDER (the
|
|
110
|
+
// subscriber), avoiding the N×N fan-out across co-subscribers of a shared
|
|
111
|
+
// topic. ENTITY_ID is kept as a per-user marker only; ignored for SELF.
|
|
112
|
+
ENTITY_ID_TYPE: 'SELF',
|
|
100
113
|
EXCLUDE_SENDER: false,
|
|
101
114
|
},
|
|
102
115
|
IGNORE_WARNINGS: true,
|