@genesislcap/pbc-notify-ui 14.487.0 → 14.488.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/custom-elements.json +2957 -2063
  2. package/dist/dts/components/foundation-inbox/inbox-base/inbox-base.d.ts +16 -0
  3. package/dist/dts/components/foundation-inbox/inbox-base/inbox-base.d.ts.map +1 -1
  4. package/dist/dts/components/foundation-inbox/inbox.styles.d.ts.map +1 -1
  5. package/dist/dts/components/foundation-inbox/inbox.template.d.ts.map +1 -1
  6. package/dist/dts/components/foundation-inbox/inbox.utils.d.ts +1 -0
  7. package/dist/dts/components/foundation-inbox/inbox.utils.d.ts.map +1 -1
  8. package/dist/dts/components/foundation-notification-dashboard/notification-dashboard.utils.d.ts.map +1 -1
  9. package/dist/dts/react.d.ts +38 -38
  10. package/dist/dts/services/notify-route.service.d.ts +27 -0
  11. package/dist/dts/services/notify-route.service.d.ts.map +1 -0
  12. package/dist/esm/components/foundation-inbox/inbox-base/inbox-base.js +183 -0
  13. package/dist/esm/components/foundation-inbox/inbox.styles.js +27 -0
  14. package/dist/esm/components/foundation-inbox/inbox.template.js +35 -3
  15. package/dist/esm/components/foundation-inbox/inbox.utils.js +7 -0
  16. package/dist/esm/components/foundation-notification-dashboard/notification-dashboard.utils.js +3 -1
  17. package/dist/esm/services/notify-route.service.js +107 -0
  18. package/dist/pbc-notify-ui.d.ts +45 -0
  19. package/dist/react.cjs +44 -44
  20. package/dist/react.mjs +39 -39
  21. package/dist/tsconfig.tsbuildinfo +1 -1
  22. package/package.json +23 -23
  23. package/src/components/foundation-inbox/inbox-base/inbox-base.ts +206 -0
  24. package/src/components/foundation-inbox/inbox.styles.ts +27 -0
  25. package/src/components/foundation-inbox/inbox.template.ts +48 -3
  26. package/src/components/foundation-inbox/inbox.utils.ts +8 -0
  27. package/src/components/foundation-notification-dashboard/notification-dashboard.utils.ts +7 -1
  28. package/src/services/notify-route.service.ts +164 -0
@@ -0,0 +1,107 @@
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { Connect } from '@genesislcap/foundation-comms';
3
+ import { DI } from '@genesislcap/web-core';
4
+ // CREATE events don't return the generated NOTIFY_ROUTE_ID, so the new row is
5
+ // polled for by its identifying fields: retry a few times with a short delay.
6
+ const ROUTE_LOOKUP_MAX_ATTEMPTS = 8;
7
+ const ROUTE_LOOKUP_RETRY_DELAY_MS = 250;
8
+ const GATEWAY_ID = {
9
+ popup: 'Screen',
10
+ email: 'Email',
11
+ };
12
+ const RESOURCE_NAME = {
13
+ popup: 'ALL_SCREEN_ROUTES',
14
+ email: 'ALL_EMAIL_USER_ROUTES',
15
+ };
16
+ const CREATE_EVENT = {
17
+ popup: 'EVENT_SCREEN_NOTIFY_ROUTE_CREATE',
18
+ email: 'EVENT_EMAIL_USER_ROUTE_CREATE',
19
+ };
20
+ const DELETE_EVENT = {
21
+ popup: 'EVENT_SCREEN_NOTIFY_ROUTE_DELETE',
22
+ email: 'EVENT_EMAIL_USER_ROUTE_DELETE',
23
+ };
24
+ class NotifyRouteServiceImpl {
25
+ // Fetch every route for a channel in one snapshot, so callers can index many
26
+ // topics in memory instead of issuing one query per topic.
27
+ getAllRoutes(channel) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ return this.queryRoutes(channel);
30
+ });
31
+ }
32
+ findUserRoute(channel, topic, username) {
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 == 'USER_NAME'`;
35
+ const [route] = yield this.queryRoutes(channel, criteriaMatch);
36
+ return route !== null && route !== void 0 ? route : null;
37
+ });
38
+ }
39
+ createUserRoute(channel, topic, username) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ // The dataserver can lag briefly behind an ACK, so a route that already exists
42
+ // (e.g. a prior create whose post-create lookup below timed out) must be reused
43
+ // instead of blindly creating a duplicate.
44
+ const existing = yield this.findUserRoute(channel, topic, username);
45
+ if (existing) {
46
+ return existing;
47
+ }
48
+ const response = yield this.connect.commitEvent(CREATE_EVENT[channel], {
49
+ DETAILS: {
50
+ TOPIC_MATCH: topic,
51
+ GATEWAY_ID: GATEWAY_ID[channel],
52
+ ROUTE_ENABLED: true,
53
+ ENTITY_ID: username,
54
+ ENTITY_ID_TYPE: 'USER_NAME',
55
+ EXCLUDE_SENDER: false,
56
+ },
57
+ IGNORE_WARNINGS: true,
58
+ VALIDATE: false,
59
+ });
60
+ if (response.MESSAGE_TYPE !== 'EVENT_ACK') {
61
+ throw new Error(`Failed to create ${channel} route for ${topic}: ${JSON.stringify(response.ERROR)}`);
62
+ }
63
+ // These CREATE events don't return the generated NOTIFY_ROUTE_ID in GENERATED,
64
+ // so the newly created row has to be looked up by its own identifying fields.
65
+ for (let attempt = 0; attempt < ROUTE_LOOKUP_MAX_ATTEMPTS; attempt += 1) {
66
+ // eslint-disable-next-line no-await-in-loop -- sequential poll: each retry waits for the previous lookup + delay
67
+ const created = yield this.findUserRoute(channel, topic, username);
68
+ if (created) {
69
+ return created;
70
+ }
71
+ // eslint-disable-next-line no-await-in-loop -- intentional back-off between lookup attempts
72
+ yield new Promise((resolve) => {
73
+ setTimeout(resolve, ROUTE_LOOKUP_RETRY_DELAY_MS);
74
+ });
75
+ }
76
+ throw new Error(`Created ${channel} route for ${topic} but could not find it afterwards`);
77
+ });
78
+ }
79
+ deleteRoute(channel, notifyRouteId) {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ const response = yield this.connect.commitEvent(DELETE_EVENT[channel], {
82
+ DETAILS: {
83
+ NOTIFY_ROUTE_ID: notifyRouteId,
84
+ },
85
+ IGNORE_WARNINGS: true,
86
+ VALIDATE: false,
87
+ });
88
+ if (response.MESSAGE_TYPE !== 'EVENT_ACK') {
89
+ throw new Error(`Failed to delete ${channel} route ${notifyRouteId}: ${JSON.stringify(response.ERROR)}`);
90
+ }
91
+ });
92
+ }
93
+ queryRoutes(channel, criteriaMatch) {
94
+ return __awaiter(this, void 0, void 0, function* () {
95
+ var _a;
96
+ const response = yield this.connect.snapshot(RESOURCE_NAME[channel], criteriaMatch ? { CRITERIA_MATCH: criteriaMatch } : {});
97
+ return ((_a = response.ROW) !== null && _a !== void 0 ? _a : []);
98
+ });
99
+ }
100
+ escape(value) {
101
+ return value ? value.replace(/'/g, "\\'") : '';
102
+ }
103
+ }
104
+ __decorate([
105
+ Connect
106
+ ], NotifyRouteServiceImpl.prototype, "connect", void 0);
107
+ export const NotifyRouteService = DI.createInterface((x) => x.singleton(NotifyRouteServiceImpl));
@@ -67,6 +67,11 @@ declare class FoundationInboxBase extends GenesisElement {
67
67
  templateService: TemplateService;
68
68
  templates: RuleTemplate[];
69
69
  templatesFilter: RuleTemplate[];
70
+ routeService: NotifyRouteService;
71
+ channelAvailability: Record<string, Record<NotifyChannel, boolean>>;
72
+ userChannelRoutes: Record<string, Record<NotifyChannel, NotifyRoute | null>>;
73
+ channelTogglePending: Record<string, Partial<Record<NotifyChannel, boolean>>>;
74
+ private channelRoutesQueryId;
70
75
  searchAlertLog: string;
71
76
  titleSearchValue: string;
72
77
  bodySearchValue: string;
@@ -102,10 +107,20 @@ declare class FoundationInboxBase extends GenesisElement {
102
107
  validateResponse(response: any): void;
103
108
  dismissAllAlerts(): void;
104
109
  refreshSubscribeData(): Promise<void>;
110
+ private refreshChannelRoutes;
111
+ private isOwnRoute;
105
112
  findSubscribedRule(template: RuleTemplate): Rule_2 | undefined;
106
113
  isTemplateSubscribed(template: RuleTemplate): boolean;
114
+ isChannelAvailable(template: RuleTemplate, channel: NotifyChannel): boolean;
115
+ isChannelEnabled(template: RuleTemplate, channel: NotifyChannel): boolean;
116
+ private isLastEnabledChannel;
117
+ isChannelTogglePending(template: RuleTemplate, channel: NotifyChannel): boolean;
118
+ private setChannelRoute;
119
+ private setChannelTogglePending;
120
+ toggleChannel(template: RuleTemplate, channel: NotifyChannel): Promise<void>;
107
121
  handleTemplateToggle(template: RuleTemplate, event: Event): Promise<void>;
108
122
  onTemplateSubscribed(templateId?: string): Promise<void>;
123
+ private ensureDefaultChannel;
109
124
  cancelPendingSubscribe(): void;
110
125
  formatDateStrForMatchCriteria(date?: string): string;
111
126
  }
@@ -200,6 +215,36 @@ declare interface NotificationRuleTemplateReply {
200
215
  PARAMETERS: any;
201
216
  }
202
217
 
218
+ declare type NotifyChannel = 'popup' | 'email';
219
+
220
+ declare interface NotifyRoute {
221
+ NOTIFY_ROUTE_ID: string;
222
+ TOPIC_MATCH: string;
223
+ GATEWAY_ID: string;
224
+ ROUTE_ENABLED: boolean;
225
+ ENTITY_ID: string;
226
+ ENTITY_ID_TYPE: string;
227
+ }
228
+
229
+ /**
230
+ * Per-user notification channel routing, backed by the platform's own
231
+ * NOTIFY_ROUTE / SCREEN_NOTIFY_ROUTE_EXT / EMAIL_USER_NOTIFY_ROUTE_EXT
232
+ * tables — the same CRUD events the admin Route Management screens use.
233
+ *
234
+ * A topic "supports" a channel when any route exists for that
235
+ * TOPIC_MATCH + GATEWAY_ID (admin-configured marker rows, entity-blank).
236
+ * A specific user has that channel enabled when a route additionally
237
+ * exists scoped to ENTITY_ID_TYPE=USER_NAME, ENTITY_ID=<username>.
238
+ */
239
+ declare interface NotifyRouteService {
240
+ getAllRoutes(channel: NotifyChannel): Promise<NotifyRoute[]>;
241
+ findUserRoute(channel: NotifyChannel, topic: string, username: string): Promise<NotifyRoute | null>;
242
+ createUserRoute(channel: NotifyChannel, topic: string, username: string): Promise<NotifyRoute>;
243
+ deleteRoute(channel: NotifyChannel, notifyRouteId: string): Promise<void>;
244
+ }
245
+
246
+ declare const NotifyRouteService: InterfaceSymbol<NotifyRouteService>;
247
+
203
248
  export declare type ParameterBuilderEntity = {
204
249
  UUID?: string;
205
250
  PARAM_NAME: string;
package/dist/react.cjs CHANGED
@@ -44,14 +44,34 @@ const ReconciliationSandbox = React.forwardRef(function ReconciliationSandbox(pr
44
44
  return React.createElement(customElements.getName(ReconciliationSandboxWC) ?? 'notify-sandbox', { ...rest, ref }, children);
45
45
  });
46
46
 
47
+ const FoundationNotificationDashboard = React.forwardRef(function FoundationNotificationDashboard(props, ref) {
48
+ const { children, ...rest } = props;
49
+ return React.createElement(customElements.getName(FoundationNotificationDashboardWC) ?? 'foundation-notification-dashboard', { ...rest, ref }, children);
50
+ });
51
+
47
52
  const FoundationInbox = React.forwardRef(function FoundationInbox(props, ref) {
48
53
  const { children, ...rest } = props;
49
54
  return React.createElement(customElements.getName(FoundationInboxWC) ?? 'foundation-inbox', { ...rest, ref }, children);
50
55
  });
51
56
 
52
- const FoundationNotificationDashboard = React.forwardRef(function FoundationNotificationDashboard(props, ref) {
57
+ const NotifyAuditManagement = React.forwardRef(function NotifyAuditManagement(props, ref) {
53
58
  const { children, ...rest } = props;
54
- return React.createElement(customElements.getName(FoundationNotificationDashboardWC) ?? 'foundation-notification-dashboard', { ...rest, ref }, children);
59
+ return React.createElement(customElements.getName(NotifyAuditManagementWC) ?? 'notify-audit-management', { ...rest, ref }, children);
60
+ });
61
+
62
+ const RouteManagement = React.forwardRef(function RouteManagement(props, ref) {
63
+ const { children, ...rest } = props;
64
+ return React.createElement(customElements.getName(RouteManagementWC) ?? 'route-management', { ...rest, ref }, children);
65
+ });
66
+
67
+ const RuleManagement = React.forwardRef(function RuleManagement(props, ref) {
68
+ const { children, ...rest } = props;
69
+ return React.createElement(customElements.getName(RuleManagementWC) ?? 'rule-management', { ...rest, ref }, children);
70
+ });
71
+
72
+ const TemplateManagement = React.forwardRef(function TemplateManagement(props, ref) {
73
+ const { children, ...rest } = props;
74
+ return React.createElement(customElements.getName(TemplateManagementWC) ?? 'template-management', { ...rest, ref }, children);
55
75
  });
56
76
 
57
77
  const FoundationInboxCounter = React.forwardRef(function FoundationInboxCounter(props, ref) {
@@ -86,43 +106,6 @@ const InboxSubscription = React.forwardRef(function InboxSubscription(props, ref
86
106
  return React.createElement(customElements.getName(InboxSubscriptionWC) ?? 'inbox-subscription', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
87
107
  });
88
108
 
89
- const NotifyAuditManagement = React.forwardRef(function NotifyAuditManagement(props, ref) {
90
- const { children, ...rest } = props;
91
- return React.createElement(customElements.getName(NotifyAuditManagementWC) ?? 'notify-audit-management', { ...rest, ref }, children);
92
- });
93
-
94
- const RouteManagement = React.forwardRef(function RouteManagement(props, ref) {
95
- const { children, ...rest } = props;
96
- return React.createElement(customElements.getName(RouteManagementWC) ?? 'route-management', { ...rest, ref }, children);
97
- });
98
-
99
- const RuleManagement = React.forwardRef(function RuleManagement(props, ref) {
100
- const { children, ...rest } = props;
101
- return React.createElement(customElements.getName(RuleManagementWC) ?? 'rule-management', { ...rest, ref }, children);
102
- });
103
-
104
- const TemplateManagement = React.forwardRef(function TemplateManagement(props, ref) {
105
- const { children, ...rest } = props;
106
- return React.createElement(customElements.getName(TemplateManagementWC) ?? 'template-management', { ...rest, ref }, children);
107
- });
108
-
109
- const RuleParameter = React.forwardRef(function RuleParameter(props, ref) {
110
- const { onParameterEdited, children, ...rest } = props;
111
- const _innerRef = React.useRef(null);
112
- const _onParameterEditedRef = React.useRef(onParameterEdited);
113
- _onParameterEditedRef.current = onParameterEdited;
114
- React.useLayoutEffect(() => {
115
- const el = _innerRef.current;
116
- if (!el) return;
117
- const _onParameterEditedFn = (e) => _onParameterEditedRef.current?.(e);
118
- el.addEventListener('parameterEdited', _onParameterEditedFn);
119
- return () => {
120
- el.removeEventListener('parameterEdited', _onParameterEditedFn);
121
- };
122
- }, []);
123
- return React.createElement(customElements.getName(RuleParameterWC) ?? 'rule-parameter', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
124
- });
125
-
126
109
  const EmailDistributionRouteManagement = React.forwardRef(function EmailDistributionRouteManagement(props, ref) {
127
110
  const { children, ...rest } = props;
128
111
  return React.createElement(customElements.getName(EmailDistributionRouteManagementWC) ?? 'email-distribution-route-management', { ...rest, ref }, children);
@@ -182,6 +165,23 @@ const TemplateDialog = React.forwardRef(function TemplateDialog(props, ref) {
182
165
  return React.createElement(customElements.getName(TemplateDialogWC) ?? 'template-dialog', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
183
166
  });
184
167
 
168
+ const RuleParameter = React.forwardRef(function RuleParameter(props, ref) {
169
+ const { onParameterEdited, children, ...rest } = props;
170
+ const _innerRef = React.useRef(null);
171
+ const _onParameterEditedRef = React.useRef(onParameterEdited);
172
+ _onParameterEditedRef.current = onParameterEdited;
173
+ React.useLayoutEffect(() => {
174
+ const el = _innerRef.current;
175
+ if (!el) return;
176
+ const _onParameterEditedFn = (e) => _onParameterEditedRef.current?.(e);
177
+ el.addEventListener('parameterEdited', _onParameterEditedFn);
178
+ return () => {
179
+ el.removeEventListener('parameterEdited', _onParameterEditedFn);
180
+ };
181
+ }, []);
182
+ return React.createElement(customElements.getName(RuleParameterWC) ?? 'rule-parameter', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
183
+ });
184
+
185
185
  const RuleConditionBuilder = React.forwardRef(function RuleConditionBuilder(props, ref) {
186
186
  const { onDelete, onEdit, children, ...rest } = props;
187
187
  const _innerRef = React.useRef(null);
@@ -294,16 +294,15 @@ const TemplateConditionGroup = React.forwardRef(function TemplateConditionGroup(
294
294
 
295
295
  module.exports = {
296
296
  ReconciliationSandbox,
297
- FoundationInbox,
298
297
  FoundationNotificationDashboard,
299
- FoundationInboxCounter,
300
- FoundationInboxFlyout,
301
- InboxSubscription,
298
+ FoundationInbox,
302
299
  NotifyAuditManagement,
303
300
  RouteManagement,
304
301
  RuleManagement,
305
302
  TemplateManagement,
306
- RuleParameter,
303
+ FoundationInboxCounter,
304
+ FoundationInboxFlyout,
305
+ InboxSubscription,
307
306
  EmailDistributionRouteManagement,
308
307
  EmailUserRouteManagement,
309
308
  LogRouteManagement,
@@ -311,6 +310,7 @@ module.exports = {
311
310
  ScreenRouteManagement,
312
311
  RuleDialog,
313
312
  TemplateDialog,
313
+ RuleParameter,
314
314
  RuleConditionBuilder,
315
315
  RuleConditionGroup,
316
316
  ParameterBuilder,
package/dist/react.mjs CHANGED
@@ -42,14 +42,34 @@ export const ReconciliationSandbox = React.forwardRef(function ReconciliationSan
42
42
  return React.createElement(customElements.getName(ReconciliationSandboxWC) ?? 'notify-sandbox', { ...rest, ref }, children);
43
43
  });
44
44
 
45
+ export const FoundationNotificationDashboard = React.forwardRef(function FoundationNotificationDashboard(props, ref) {
46
+ const { children, ...rest } = props;
47
+ return React.createElement(customElements.getName(FoundationNotificationDashboardWC) ?? 'foundation-notification-dashboard', { ...rest, ref }, children);
48
+ });
49
+
45
50
  export const FoundationInbox = React.forwardRef(function FoundationInbox(props, ref) {
46
51
  const { children, ...rest } = props;
47
52
  return React.createElement(customElements.getName(FoundationInboxWC) ?? 'foundation-inbox', { ...rest, ref }, children);
48
53
  });
49
54
 
50
- export const FoundationNotificationDashboard = React.forwardRef(function FoundationNotificationDashboard(props, ref) {
55
+ export const NotifyAuditManagement = React.forwardRef(function NotifyAuditManagement(props, ref) {
51
56
  const { children, ...rest } = props;
52
- return React.createElement(customElements.getName(FoundationNotificationDashboardWC) ?? 'foundation-notification-dashboard', { ...rest, ref }, children);
57
+ return React.createElement(customElements.getName(NotifyAuditManagementWC) ?? 'notify-audit-management', { ...rest, ref }, children);
58
+ });
59
+
60
+ export const RouteManagement = React.forwardRef(function RouteManagement(props, ref) {
61
+ const { children, ...rest } = props;
62
+ return React.createElement(customElements.getName(RouteManagementWC) ?? 'route-management', { ...rest, ref }, children);
63
+ });
64
+
65
+ export const RuleManagement = React.forwardRef(function RuleManagement(props, ref) {
66
+ const { children, ...rest } = props;
67
+ return React.createElement(customElements.getName(RuleManagementWC) ?? 'rule-management', { ...rest, ref }, children);
68
+ });
69
+
70
+ export const TemplateManagement = React.forwardRef(function TemplateManagement(props, ref) {
71
+ const { children, ...rest } = props;
72
+ return React.createElement(customElements.getName(TemplateManagementWC) ?? 'template-management', { ...rest, ref }, children);
53
73
  });
54
74
 
55
75
  export const FoundationInboxCounter = React.forwardRef(function FoundationInboxCounter(props, ref) {
@@ -84,43 +104,6 @@ export const InboxSubscription = React.forwardRef(function InboxSubscription(pro
84
104
  return React.createElement(customElements.getName(InboxSubscriptionWC) ?? 'inbox-subscription', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
85
105
  });
86
106
 
87
- export const NotifyAuditManagement = React.forwardRef(function NotifyAuditManagement(props, ref) {
88
- const { children, ...rest } = props;
89
- return React.createElement(customElements.getName(NotifyAuditManagementWC) ?? 'notify-audit-management', { ...rest, ref }, children);
90
- });
91
-
92
- export const RouteManagement = React.forwardRef(function RouteManagement(props, ref) {
93
- const { children, ...rest } = props;
94
- return React.createElement(customElements.getName(RouteManagementWC) ?? 'route-management', { ...rest, ref }, children);
95
- });
96
-
97
- export const RuleManagement = React.forwardRef(function RuleManagement(props, ref) {
98
- const { children, ...rest } = props;
99
- return React.createElement(customElements.getName(RuleManagementWC) ?? 'rule-management', { ...rest, ref }, children);
100
- });
101
-
102
- export const TemplateManagement = React.forwardRef(function TemplateManagement(props, ref) {
103
- const { children, ...rest } = props;
104
- return React.createElement(customElements.getName(TemplateManagementWC) ?? 'template-management', { ...rest, ref }, children);
105
- });
106
-
107
- export const RuleParameter = React.forwardRef(function RuleParameter(props, ref) {
108
- const { onParameterEdited, children, ...rest } = props;
109
- const _innerRef = React.useRef(null);
110
- const _onParameterEditedRef = React.useRef(onParameterEdited);
111
- _onParameterEditedRef.current = onParameterEdited;
112
- React.useLayoutEffect(() => {
113
- const el = _innerRef.current;
114
- if (!el) return;
115
- const _onParameterEditedFn = (e) => _onParameterEditedRef.current?.(e);
116
- el.addEventListener('parameterEdited', _onParameterEditedFn);
117
- return () => {
118
- el.removeEventListener('parameterEdited', _onParameterEditedFn);
119
- };
120
- }, []);
121
- return React.createElement(customElements.getName(RuleParameterWC) ?? 'rule-parameter', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
122
- });
123
-
124
107
  export const EmailDistributionRouteManagement = React.forwardRef(function EmailDistributionRouteManagement(props, ref) {
125
108
  const { children, ...rest } = props;
126
109
  return React.createElement(customElements.getName(EmailDistributionRouteManagementWC) ?? 'email-distribution-route-management', { ...rest, ref }, children);
@@ -180,6 +163,23 @@ export const TemplateDialog = React.forwardRef(function TemplateDialog(props, re
180
163
  return React.createElement(customElements.getName(TemplateDialogWC) ?? 'template-dialog', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
181
164
  });
182
165
 
166
+ export const RuleParameter = React.forwardRef(function RuleParameter(props, ref) {
167
+ const { onParameterEdited, children, ...rest } = props;
168
+ const _innerRef = React.useRef(null);
169
+ const _onParameterEditedRef = React.useRef(onParameterEdited);
170
+ _onParameterEditedRef.current = onParameterEdited;
171
+ React.useLayoutEffect(() => {
172
+ const el = _innerRef.current;
173
+ if (!el) return;
174
+ const _onParameterEditedFn = (e) => _onParameterEditedRef.current?.(e);
175
+ el.addEventListener('parameterEdited', _onParameterEditedFn);
176
+ return () => {
177
+ el.removeEventListener('parameterEdited', _onParameterEditedFn);
178
+ };
179
+ }, []);
180
+ return React.createElement(customElements.getName(RuleParameterWC) ?? 'rule-parameter', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
181
+ });
182
+
183
183
  export const RuleConditionBuilder = React.forwardRef(function RuleConditionBuilder(props, ref) {
184
184
  const { onDelete, onEdit, children, ...rest } = props;
185
185
  const _innerRef = React.useRef(null);
@@ -1 +1 @@
1
- {"root":["../src/globals.d.ts","../src/index.federated.ts","../src/index.ts","../src/notify.types.ts","../src/sandbox.ts","../src/components/components.ts","../src/components/foundation-inbox/inbox.styles.ts","../src/components/foundation-inbox/inbox.template.ts","../src/components/foundation-inbox/inbox.ts","../src/components/foundation-inbox/inbox.types.ts","../src/components/foundation-inbox/inbox.utils.ts","../src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.styles.ts","../src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.template.ts","../src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.ts","../src/components/foundation-inbox/components/foundation-inbox-flyout/foundation-inbox-flyout.styles.ts","../src/components/foundation-inbox/components/foundation-inbox-flyout/foundation-inbox-flyout.template.ts","../src/components/foundation-inbox/components/foundation-inbox-flyout/foundation-inbox-flyout.ts","../src/components/foundation-inbox/components/inbox-subscription/inbox-subscription.styles.ts","../src/components/foundation-inbox/components/inbox-subscription/inbox-subscription.template.ts","../src/components/foundation-inbox/components/inbox-subscription/inbox-subscription.ts","../src/components/foundation-inbox/components/inbox-subscription/rule-parameter/rule-parameter.styles.ts","../src/components/foundation-inbox/components/inbox-subscription/rule-parameter/rule-parameter.template.ts","../src/components/foundation-inbox/components/inbox-subscription/rule-parameter/rule-parameter.ts","../src/components/foundation-inbox/inbox-base/inbox-base.ts","../src/components/foundation-notification-dashboard/index.ts","../src/components/foundation-notification-dashboard/notification-dashboard.styles.ts","../src/components/foundation-notification-dashboard/notification-dashboard.tabs.ts","../src/components/foundation-notification-dashboard/notification-dashboard.template.ts","../src/components/foundation-notification-dashboard/notification-dashboard.ts","../src/components/foundation-notification-dashboard/notification-dashboard.utils.ts","../src/components/foundation-notification-dashboard/components/notify-audit/notify-audit-management.ts","../src/components/foundation-notification-dashboard/components/routes/route-management.ts","../src/components/foundation-notification-dashboard/components/routes/tabs/email-distribution-route-management.ts","../src/components/foundation-notification-dashboard/components/routes/tabs/email-user-route-management.ts","../src/components/foundation-notification-dashboard/components/routes/tabs/log-route-management.ts","../src/components/foundation-notification-dashboard/components/routes/tabs/ms-teams-route-management.ts","../src/components/foundation-notification-dashboard/components/routes/tabs/screen-route-management.ts","../src/components/foundation-notification-dashboard/components/rules/columns.ts","../src/components/foundation-notification-dashboard/components/rules/rule-management.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.template.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.types.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.template.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.types.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.template.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts","../src/components/foundation-notification-dashboard/components/templates/columns.ts","../src/components/foundation-notification-dashboard/components/templates/template-management.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.template.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.types.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.styles.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.template.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.template.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.template.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts","../src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts","../src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts","../src/components/foundation-notification-dashboard/styles/management.styles.ts","../src/components/foundation-notification-dashboard/types/expression-type.ts","../src/components/foundation-notification-dashboard/types/logical-operator.ts","../src/components/foundation-notification-dashboard/types/param-source-type.ts","../src/components/foundation-notification-dashboard/types/param-type.ts","../src/components/foundation-notification-dashboard/types/right-criteria.ts","../src/components/foundation-notification-dashboard/types/rule-execution-strategy.ts","../src/components/foundation-notification-dashboard/types/severity.ts","../src/services/alert.service.ts","../src/services/inbox.service.ts","../src/services/notify.service.ts","../src/services/rule.service.ts","../src/services/system.service.ts","../src/services/template.service.ts","../src/styles/scrollbar.styles.ts","../src/utils/eventDetail.ts","../src/utils/gridConfig.ts","../src/utils/humanize.ts","../src/utils/icons.ts","../src/utils/index.ts","../src/utils/logger.ts","../src/utils/notifyPermissions.ts","../src/utils/toBoolean.ts","../src/utils/updateArray.ts"],"version":"5.9.2"}
1
+ {"root":["../src/globals.d.ts","../src/index.federated.ts","../src/index.ts","../src/notify.types.ts","../src/sandbox.ts","../src/components/components.ts","../src/components/foundation-inbox/inbox.styles.ts","../src/components/foundation-inbox/inbox.template.ts","../src/components/foundation-inbox/inbox.ts","../src/components/foundation-inbox/inbox.types.ts","../src/components/foundation-inbox/inbox.utils.ts","../src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.styles.ts","../src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.template.ts","../src/components/foundation-inbox/components/foundation-inbox-counter/foundation-inbox-counter.ts","../src/components/foundation-inbox/components/foundation-inbox-flyout/foundation-inbox-flyout.styles.ts","../src/components/foundation-inbox/components/foundation-inbox-flyout/foundation-inbox-flyout.template.ts","../src/components/foundation-inbox/components/foundation-inbox-flyout/foundation-inbox-flyout.ts","../src/components/foundation-inbox/components/inbox-subscription/inbox-subscription.styles.ts","../src/components/foundation-inbox/components/inbox-subscription/inbox-subscription.template.ts","../src/components/foundation-inbox/components/inbox-subscription/inbox-subscription.ts","../src/components/foundation-inbox/components/inbox-subscription/rule-parameter/rule-parameter.styles.ts","../src/components/foundation-inbox/components/inbox-subscription/rule-parameter/rule-parameter.template.ts","../src/components/foundation-inbox/components/inbox-subscription/rule-parameter/rule-parameter.ts","../src/components/foundation-inbox/inbox-base/inbox-base.ts","../src/components/foundation-notification-dashboard/index.ts","../src/components/foundation-notification-dashboard/notification-dashboard.styles.ts","../src/components/foundation-notification-dashboard/notification-dashboard.tabs.ts","../src/components/foundation-notification-dashboard/notification-dashboard.template.ts","../src/components/foundation-notification-dashboard/notification-dashboard.ts","../src/components/foundation-notification-dashboard/notification-dashboard.utils.ts","../src/components/foundation-notification-dashboard/components/notify-audit/notify-audit-management.ts","../src/components/foundation-notification-dashboard/components/routes/route-management.ts","../src/components/foundation-notification-dashboard/components/routes/tabs/email-distribution-route-management.ts","../src/components/foundation-notification-dashboard/components/routes/tabs/email-user-route-management.ts","../src/components/foundation-notification-dashboard/components/routes/tabs/log-route-management.ts","../src/components/foundation-notification-dashboard/components/routes/tabs/ms-teams-route-management.ts","../src/components/foundation-notification-dashboard/components/routes/tabs/screen-route-management.ts","../src/components/foundation-notification-dashboard/components/rules/columns.ts","../src/components/foundation-notification-dashboard/components/rules/rule-management.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.template.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.types.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.template.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-builder/rule-condition-builder.types.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.template.ts","../src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-condition-group/rule-condition-group.ts","../src/components/foundation-notification-dashboard/components/templates/columns.ts","../src/components/foundation-notification-dashboard/components/templates/template-management.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.template.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.types.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.styles.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.template.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/parameter-builder/parameter-builder.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.template.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-builder/template-condition-builder.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.template.ts","../src/components/foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group.ts","../src/components/foundation-notification-dashboard/styles/condition-builder.styles.ts","../src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts","../src/components/foundation-notification-dashboard/styles/management.styles.ts","../src/components/foundation-notification-dashboard/types/expression-type.ts","../src/components/foundation-notification-dashboard/types/logical-operator.ts","../src/components/foundation-notification-dashboard/types/param-source-type.ts","../src/components/foundation-notification-dashboard/types/param-type.ts","../src/components/foundation-notification-dashboard/types/right-criteria.ts","../src/components/foundation-notification-dashboard/types/rule-execution-strategy.ts","../src/components/foundation-notification-dashboard/types/severity.ts","../src/services/alert.service.ts","../src/services/inbox.service.ts","../src/services/notify-route.service.ts","../src/services/notify.service.ts","../src/services/rule.service.ts","../src/services/system.service.ts","../src/services/template.service.ts","../src/styles/scrollbar.styles.ts","../src/utils/eventDetail.ts","../src/utils/gridConfig.ts","../src/utils/humanize.ts","../src/utils/icons.ts","../src/utils/index.ts","../src/utils/logger.ts","../src/utils/notifyPermissions.ts","../src/utils/toBoolean.ts","../src/utils/updateArray.ts"],"version":"5.9.2"}
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": "14.487.0",
4
+ "version": "14.488.0",
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": "14.487.0",
87
- "@genesislcap/eslint-config": "14.487.0",
88
- "@genesislcap/eslint-stylelint-builder": "14.487.0",
89
- "@genesislcap/foundation-testing": "14.487.0",
90
- "@genesislcap/genx": "14.487.0",
91
- "@genesislcap/prettier-config": "14.487.0",
92
- "@genesislcap/stylelint-config": "14.487.0",
93
- "@genesislcap/vite-builder": "14.487.0",
94
- "@genesislcap/webpack-builder": "14.487.0",
86
+ "@genesislcap/design-system-configurator": "14.488.0",
87
+ "@genesislcap/eslint-config": "14.488.0",
88
+ "@genesislcap/eslint-stylelint-builder": "14.488.0",
89
+ "@genesislcap/foundation-testing": "14.488.0",
90
+ "@genesislcap/genx": "14.488.0",
91
+ "@genesislcap/prettier-config": "14.488.0",
92
+ "@genesislcap/stylelint-config": "14.488.0",
93
+ "@genesislcap/vite-builder": "14.488.0",
94
+ "@genesislcap/webpack-builder": "14.488.0",
95
95
  "dayjs": "^1.11.7"
96
96
  },
97
97
  "dependencies": {
98
- "@genesislcap/foundation-comms": "14.487.0",
99
- "@genesislcap/foundation-criteria": "14.487.0",
100
- "@genesislcap/foundation-entity-management": "14.487.0",
101
- "@genesislcap/foundation-forms": "14.487.0",
102
- "@genesislcap/foundation-layout": "14.487.0",
103
- "@genesislcap/foundation-logger": "14.487.0",
104
- "@genesislcap/foundation-notifications": "14.487.0",
105
- "@genesislcap/foundation-ui": "14.487.0",
106
- "@genesislcap/foundation-utils": "14.487.0",
107
- "@genesislcap/rapid-design-system": "14.487.0",
108
- "@genesislcap/rapid-grid-pro": "14.487.0",
109
- "@genesislcap/web-core": "14.487.0",
98
+ "@genesislcap/foundation-comms": "14.488.0",
99
+ "@genesislcap/foundation-criteria": "14.488.0",
100
+ "@genesislcap/foundation-entity-management": "14.488.0",
101
+ "@genesislcap/foundation-forms": "14.488.0",
102
+ "@genesislcap/foundation-layout": "14.488.0",
103
+ "@genesislcap/foundation-logger": "14.488.0",
104
+ "@genesislcap/foundation-notifications": "14.488.0",
105
+ "@genesislcap/foundation-ui": "14.488.0",
106
+ "@genesislcap/foundation-utils": "14.488.0",
107
+ "@genesislcap/rapid-design-system": "14.488.0",
108
+ "@genesislcap/rapid-grid-pro": "14.488.0",
109
+ "@genesislcap/web-core": "14.488.0",
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": "e91b34059e2dab1ad9b0799de26c31f3fdfc0ece"
117
+ "gitHead": "621daeb7e3612007d300f8510bb6d12b80a5cb53"
118
118
  }