@genesislcap/pbc-notify-ui 15.8.3 → 15.9.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 (102) hide show
  1. package/README.md +39 -0
  2. package/custom-elements-manifest.config.js +5 -0
  3. package/dist/custom-elements.json +1771 -321
  4. package/dist/dts/components/components.d.ts.map +1 -1
  5. package/dist/dts/components/foundation-inbox/inbox-base/inbox-base.d.ts +2 -0
  6. package/dist/dts/components/foundation-inbox/inbox-base/inbox-base.d.ts.map +1 -1
  7. package/dist/dts/components/foundation-inbox/inbox.styles.d.ts.map +1 -1
  8. package/dist/dts/components/foundation-inbox/inbox.template.d.ts.map +1 -1
  9. package/dist/dts/components/foundation-inbox/inbox.types.d.ts +4 -1
  10. package/dist/dts/components/foundation-inbox/inbox.types.d.ts.map +1 -1
  11. package/dist/dts/components/foundation-notification-dashboard/alert-sound-attachment.d.ts +86 -0
  12. package/dist/dts/components/foundation-notification-dashboard/alert-sound-attachment.d.ts.map +1 -0
  13. package/dist/dts/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.d.ts +39 -1
  14. package/dist/dts/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.d.ts.map +1 -1
  15. package/dist/dts/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.template.d.ts.map +1 -1
  16. package/dist/dts/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.types.d.ts +8 -0
  17. package/dist/dts/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.types.d.ts.map +1 -1
  18. package/dist/dts/components/foundation-notification-dashboard/components/rules/rule-management.d.ts.map +1 -1
  19. package/dist/dts/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.d.ts +41 -1
  20. package/dist/dts/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.d.ts.map +1 -1
  21. package/dist/dts/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.template.d.ts.map +1 -1
  22. package/dist/dts/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.types.d.ts +2 -1
  23. package/dist/dts/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.types.d.ts.map +1 -1
  24. package/dist/dts/components/foundation-notification-dashboard/components/templates/template-management.d.ts.map +1 -1
  25. package/dist/dts/components/foundation-notification-dashboard/styles/dynamic-rule.styles.d.ts.map +1 -1
  26. package/dist/dts/components/foundation-sounds/foundation-sounds-panel.d.ts +73 -0
  27. package/dist/dts/components/foundation-sounds/foundation-sounds-panel.d.ts.map +1 -0
  28. package/dist/dts/components/foundation-sounds/foundation-sounds-panel.styles.d.ts +2 -0
  29. package/dist/dts/components/foundation-sounds/foundation-sounds-panel.styles.d.ts.map +1 -0
  30. package/dist/dts/components/foundation-sounds/foundation-sounds-panel.template.d.ts +3 -0
  31. package/dist/dts/components/foundation-sounds/foundation-sounds-panel.template.d.ts.map +1 -0
  32. package/dist/dts/components/foundation-sounds/foundation-sounds.d.ts +34 -0
  33. package/dist/dts/components/foundation-sounds/foundation-sounds.d.ts.map +1 -0
  34. package/dist/dts/components/foundation-sounds/foundation-sounds.styles.d.ts +3 -0
  35. package/dist/dts/components/foundation-sounds/foundation-sounds.styles.d.ts.map +1 -0
  36. package/dist/dts/index.d.ts +4 -0
  37. package/dist/dts/index.d.ts.map +1 -1
  38. package/dist/dts/react.d.ts +31 -11
  39. package/dist/dts/services/inbox.service.d.ts +6 -0
  40. package/dist/dts/services/inbox.service.d.ts.map +1 -1
  41. package/dist/dts/services/rule.service.d.ts +2 -1
  42. package/dist/dts/services/rule.service.d.ts.map +1 -1
  43. package/dist/dts/utils/alert-sound.d.ts +177 -0
  44. package/dist/dts/utils/alert-sound.d.ts.map +1 -0
  45. package/dist/dts/utils/alert-sound.test.d.ts +2 -0
  46. package/dist/dts/utils/alert-sound.test.d.ts.map +1 -0
  47. package/dist/esm/components/components.js +4 -0
  48. package/dist/esm/components/foundation-inbox/inbox-base/inbox-base.js +6 -0
  49. package/dist/esm/components/foundation-inbox/inbox.styles.js +15 -0
  50. package/dist/esm/components/foundation-inbox/inbox.template.js +16 -0
  51. package/dist/esm/components/foundation-inbox/inbox.types.js +1 -0
  52. package/dist/esm/components/foundation-notification-dashboard/alert-sound-attachment.js +218 -0
  53. package/dist/esm/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.js +17 -2
  54. package/dist/esm/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.template.js +3 -0
  55. package/dist/esm/components/foundation-notification-dashboard/components/rules/rule-management.js +5 -1
  56. package/dist/esm/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.js +23 -2
  57. package/dist/esm/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.template.js +3 -0
  58. package/dist/esm/components/foundation-notification-dashboard/components/templates/template-management.js +8 -1
  59. package/dist/esm/components/foundation-notification-dashboard/styles/dynamic-rule.styles.js +31 -1
  60. package/dist/esm/components/foundation-sounds/foundation-sounds-panel.js +283 -0
  61. package/dist/esm/components/foundation-sounds/foundation-sounds-panel.styles.js +200 -0
  62. package/dist/esm/components/foundation-sounds/foundation-sounds-panel.template.js +179 -0
  63. package/dist/esm/components/foundation-sounds/foundation-sounds.js +206 -0
  64. package/dist/esm/components/foundation-sounds/foundation-sounds.styles.js +7 -0
  65. package/dist/esm/index.js +3 -0
  66. package/dist/esm/services/inbox.service.js +6 -2
  67. package/dist/esm/services/rule.service.js +35 -0
  68. package/dist/esm/utils/alert-sound.js +955 -0
  69. package/dist/esm/utils/alert-sound.test.js +25 -0
  70. package/dist/esm/utils/index.js +3 -0
  71. package/dist/pbc-notify-ui.api.json +2859 -332
  72. package/dist/pbc-notify-ui.d.ts +281 -3
  73. package/dist/react.cjs +19 -5
  74. package/dist/react.mjs +16 -4
  75. package/dist/tsconfig.tsbuildinfo +1 -1
  76. package/package.json +23 -23
  77. package/src/components/components.ts +4 -0
  78. package/src/components/foundation-inbox/inbox-base/inbox-base.ts +7 -0
  79. package/src/components/foundation-inbox/inbox.styles.ts +15 -0
  80. package/src/components/foundation-inbox/inbox.template.ts +16 -0
  81. package/src/components/foundation-inbox/inbox.types.ts +3 -0
  82. package/src/components/foundation-notification-dashboard/alert-sound-attachment.ts +283 -0
  83. package/src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.template.ts +3 -0
  84. package/src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.ts +21 -2
  85. package/src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.types.ts +9 -0
  86. package/src/components/foundation-notification-dashboard/components/rules/rule-management.ts +5 -1
  87. package/src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.template.ts +3 -0
  88. package/src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.ts +25 -2
  89. package/src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.types.ts +2 -1
  90. package/src/components/foundation-notification-dashboard/components/templates/template-management.ts +8 -1
  91. package/src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts +31 -1
  92. package/src/components/foundation-sounds/foundation-sounds-panel.styles.ts +201 -0
  93. package/src/components/foundation-sounds/foundation-sounds-panel.template.ts +188 -0
  94. package/src/components/foundation-sounds/foundation-sounds-panel.ts +280 -0
  95. package/src/components/foundation-sounds/foundation-sounds.styles.ts +8 -0
  96. package/src/components/foundation-sounds/foundation-sounds.ts +222 -0
  97. package/src/index.ts +8 -0
  98. package/src/services/inbox.service.ts +12 -2
  99. package/src/services/rule.service.ts +37 -1
  100. package/src/utils/alert-sound.test.ts +32 -0
  101. package/src/utils/alert-sound.ts +1135 -0
  102. package/src/utils/index.ts +3 -0
@@ -20,6 +20,8 @@ export declare interface Alert {
20
20
  NOTIFY_SEVERITY: string;
21
21
  TABLE_ENTITY_ID: string;
22
22
  TOPIC: string;
23
+ /** Source notify template/rule that produced this alert. */
24
+ DYNAMIC_RULE_ID?: string;
23
25
  }
24
26
 
25
27
  declare interface AlertService {
@@ -30,6 +32,156 @@ declare interface AlertService {
30
32
 
31
33
  declare const AlertService: InterfaceSymbol<AlertService>;
32
34
 
35
+ /** How a sound rule decides when to play. */
36
+ export declare type AlertSoundMatchMode = 'message' | 'header' | 'rule';
37
+
38
+ /** Sound fields included on rule/template create & update event payloads. */
39
+ declare type AlertSoundPayloadFields = {
40
+ ALERT_SOUND_FILE_NAME?: string;
41
+ ALERT_SOUND_MIME_TYPE?: string;
42
+ ALERT_SOUND_DATA?: string;
43
+ CLEAR_ALERT_SOUND?: boolean;
44
+ };
45
+
46
+ /**
47
+ * Plays user-selected alert sounds matched by MESSAGE/HEADER text (word or phrase)
48
+ * or notification rule DYNAMIC_RULE_ID. Persists up to {@link MAX_SOUND_RULES}
49
+ * rules in IndexedDB.
50
+ */
51
+ export declare class AlertSoundPlayer {
52
+ private slots;
53
+ private activeCount;
54
+ /** Linear gain 0–1 applied to every HTMLAudioElement. */
55
+ private volume;
56
+ private muted;
57
+ private listeners;
58
+ /** Coalesces concurrent restores from layout + Sounds tab mounts. */
59
+ private restorePromise;
60
+ private restored;
61
+ private persistChain;
62
+ /** In-memory cache of rule-attached sounds fetched from NOTIFY_ALERT_SOUND. */
63
+ private readonly serverSounds;
64
+ /** Shared player so the layout listener and inbox Sounds tab stay in sync. */
65
+ static readonly shared: AlertSoundPlayer;
66
+ get rules(): AlertSoundRuleView[];
67
+ get canAddRule(): boolean;
68
+ get canRemoveRule(): boolean;
69
+ /** Whole-number percent for the Sounds tab slider (0–100). */
70
+ get volumePercent(): number;
71
+ get isMuted(): boolean;
72
+ get isReady(): boolean;
73
+ subscribe(listener: () => void): () => void;
74
+ /**
75
+ * Loads rules from IndexedDB once per page session. Concurrent calls (layout
76
+ * listener + Sounds tab) share one promise so a late restore cannot wipe
77
+ * in-memory edits the user already made.
78
+ */
79
+ restore(): Promise<boolean>;
80
+ private restoreFromDb;
81
+ /** Sets global playback volume from a 0–100 percent (Sounds tab slider). */
82
+ setVolumePercent(percent: number): void;
83
+ setMuted(muted: boolean): void;
84
+ toggleMute(): void;
85
+ addRule(): boolean;
86
+ removeRule(index: number): void;
87
+ /** Clears match criteria and sound file for a rule without removing the row. */
88
+ resetRule(index: number): void;
89
+ setMatchMode(index: number, matchMode: AlertSoundMatchMode): void;
90
+ /**
91
+ * Deliberately does not notify: the value came from the pattern field itself,
92
+ * so re-rendering the rule rows mid-keystroke would only disturb the caret.
93
+ */
94
+ setPattern(index: number, pattern: string): void;
95
+ setRule(index: number, rule: Pick<AlertSoundSelectableRule, 'id' | 'name'> | null): void;
96
+ setSoundFromFile(index: number, file: File): void;
97
+ clearSound(index: number): void;
98
+ setRuleMuted(index: number, muted: boolean): void;
99
+ toggleRuleMute(index: number): void;
100
+ /** Plays the sound file for a specific rule (for UI testing). */
101
+ playRule(index: number): boolean;
102
+ /**
103
+ * Plays the first configured rule that matches the alert:
104
+ * - message: MESSAGE contains the pattern as a whole phrase (case-insensitive)
105
+ * - header: HEADER contains the pattern as a whole phrase (case-insensitive)
106
+ * - rule: alert DYNAMIC_RULE_ID equals the selected id
107
+ */
108
+ playForAlert(alert: {
109
+ message?: string | null;
110
+ header?: string | null;
111
+ dynamicRuleId?: string | null;
112
+ }): boolean;
113
+ /**
114
+ * Caches a server-backed rule sound (from NOTIFY_ALERT_SOUND) for playback.
115
+ * Replaces any previous cache entry for the same dynamicRuleId.
116
+ */
117
+ setServerSound(dynamicRuleId: string, options: {
118
+ blob: Blob;
119
+ fileName?: string;
120
+ mimeType?: string;
121
+ }): void;
122
+ /** True when a server sound for this rule is already cached. */
123
+ hasServerSound(dynamicRuleId: string): boolean;
124
+ /**
125
+ * Drops a cached server sound so the next alert re-fetches from
126
+ * NOTIFY_ALERT_SOUND (e.g. after replace/clear on the rule dialog).
127
+ */
128
+ clearServerSound(dynamicRuleId: string): void;
129
+ /**
130
+ * Clears every cached server-backed rule sound. Used when a template sound
131
+ * changes — subscribed instance ids are unknown on the client, and alerts
132
+ * look up by those instance ids.
133
+ */
134
+ clearAllServerSounds(): void;
135
+ /**
136
+ * Plays a cached server sound for the given DYNAMIC_RULE_ID.
137
+ * Respects global mute / volume. Returns false if missing or muted with no play.
138
+ */
139
+ playServerSound(dynamicRuleId: string): boolean;
140
+ private revokeServerSound;
141
+ private applyStoredMatch;
142
+ private matchFields;
143
+ /** Debounces config writes so holding down a key does not thrash IndexedDB. */
144
+ private readonly debouncedPersistConfig;
145
+ /** Schedules a debounced config write (pattern typing). */
146
+ private schedulePersist;
147
+ /** Writes config now, including anything a pending debounce had not yet flushed. */
148
+ private flushPersist;
149
+ private flushSettings;
150
+ /** Flushes config plus this rule's audio (sound file added/cleared/reset). */
151
+ private flushAudioPersist;
152
+ /** Chained so overlapping writes cannot land out of order. */
153
+ private queuePersist;
154
+ private applyStoredSettings;
155
+ private applyVolumeToSlots;
156
+ private applyVolumeToAudio;
157
+ private persistSettings;
158
+ /** Match config only — cheap enough to rewrite on every keystroke. */
159
+ private persistConfig;
160
+ /** One rule's audio, stored separately so a pattern edit never touches it. */
161
+ private persistAudio;
162
+ private applyFile;
163
+ private isValidIndex;
164
+ private notify;
165
+ private revokeObjectUrl;
166
+ }
167
+
168
+ export declare type AlertSoundRuleView = {
169
+ index: number;
170
+ matchMode: AlertSoundMatchMode;
171
+ pattern: string;
172
+ templateId: string | null;
173
+ templateName: string | null;
174
+ fileName: string | null;
175
+ hasSound: boolean;
176
+ muted: boolean;
177
+ };
178
+
179
+ /** Notification rule option available for DYNAMIC_RULE_ID sound binding. */
180
+ export declare type AlertSoundSelectableRule = {
181
+ id: string;
182
+ name: string;
183
+ };
184
+
33
185
  export declare enum AlertStatus {
34
186
  NEW = "NEW",
35
187
  DISMISSED = "DISMISSED"
@@ -124,6 +276,7 @@ declare class FoundationInboxBase extends GenesisElement {
124
276
  showLoadingIndicator: boolean;
125
277
  severityType: any[];
126
278
  tabs: Tabs;
279
+ sounds: FoundationSoundsPanel;
127
280
  connectedCallback(): Promise<void>;
128
281
  disconnectedCallback(): void;
129
282
  alertSubscription: ({ store }: {
@@ -211,6 +364,12 @@ declare const FoundationInboxService: InterfaceSymbol<FoundationInboxService>;
211
364
  declare interface FoundationInboxServiceStore {
212
365
  items: Array<any>;
213
366
  moreRows: boolean;
367
+ /**
368
+ * SEQUENCE_ID of the last message applied to {@link items}. `<= 1` means the
369
+ * message was (part of) the initial snapshot rather than a real-time update —
370
+ * mirrors the boundary `notification-listener` uses (`SEQUENCE_ID > 1`).
371
+ */
372
+ sequenceId: number;
214
373
  }
215
374
 
216
375
  /**
@@ -229,12 +388,122 @@ export declare class FoundationNotificationDashboard extends GenesisElement {
229
388
  loadRemotes(): Promise<void>;
230
389
  }
231
390
 
391
+ /**
392
+ * Headless listener for inbox alert inserts. Plays configured sounds via the
393
+ * shared AlertSoundPlayer. Mount once in the app layout.
394
+ *
395
+ * Configure rules in the inbox Sounds tab with {@link FoundationSoundsPanel}.
396
+ *
397
+ * @public
398
+ */
399
+ export declare class FoundationSounds extends GenesisElement {
400
+ connect: Connect;
401
+ inboxService: FoundationInboxService;
402
+ ruleService: RuleService;
403
+ /**
404
+ * When false, new audible alerts are tracked but do not play.
405
+ */
406
+ soundEnabled: boolean;
407
+ private connectionSub?;
408
+ private readonly player;
409
+ private knownAlertIds;
410
+ /** In-flight server sound fetches keyed by DYNAMIC_RULE_ID. */
411
+ private readonly serverSoundFetches;
412
+ connectedCallback(): Promise<void>;
413
+ disconnectedCallback(): void;
414
+ private subscribeToAlerts;
415
+ private subscriptionHandler;
416
+ private playForNewAlerts;
417
+ private tryPlayServerSound;
418
+ private fetchAndCacheServerSound;
419
+ }
420
+
421
+ /**
422
+ * Configures alert sound rules in the inbox Sounds tab. Persists via the shared
423
+ * AlertSoundPlayer; playback is handled by layout-mounted
424
+ * {@link FoundationSounds}.
425
+ *
426
+ * @public
427
+ */
428
+ export declare class FoundationSoundsPanel extends GenesisElement {
429
+ ruleService: RuleService;
430
+ /** @internal */
431
+ rules: AlertSoundRuleView[];
432
+ /** @internal */
433
+ canAddRule: boolean;
434
+ /** @internal */
435
+ canRemoveRule: boolean;
436
+ /** Global playback volume 0–100. @internal */
437
+ volumePercent: number;
438
+ /** @internal */
439
+ muted: boolean;
440
+ /** Notification rules from REQ_NOTIFICATION_RULE. @internal */
441
+ selectableRules: AlertSoundSelectableRule[];
442
+ /** @internal */
443
+ ruleSelectOptions: Array<{
444
+ id: string;
445
+ name: string;
446
+ }>;
447
+ /** @internal */
448
+ readonly maxRules = 10;
449
+ fileInput: HTMLInputElement;
450
+ private pendingRuleIndex;
451
+ private readonly player;
452
+ private unsubscribePlayer;
453
+ /** Suppresses select change events while options are rebuilt. */
454
+ private ignoreSelectChanges;
455
+ connectedCallback(): Promise<void>;
456
+ disconnectedCallback(): void;
457
+ onMatchModeChange(index: number, event: Event): boolean;
458
+ onPatternInput(index: number, event: Event): boolean;
459
+ onRuleChange(index: number, event: Event): boolean;
460
+ openFilePicker(index: number): boolean;
461
+ onFileSelected(event: Event): boolean;
462
+ clearSound(index: number): boolean;
463
+ testSound(index: number): boolean;
464
+ toggleRuleMute(index: number): boolean;
465
+ onVolumeChange(event: Event): boolean;
466
+ toggleMute(): boolean;
467
+ addRule(): boolean;
468
+ removeRule(index: number): boolean;
469
+ /** Reloads the notification-rule picker (e.g. when the Sounds tab is opened). */
470
+ reloadRules(): Promise<void>;
471
+ private loadRules;
472
+ /**
473
+ * Suppresses select `change` events only while options-datasource rebuilds
474
+ * the DOM — not for the `getRules()` round trip itself, so a user picking a
475
+ * rule while a request is in flight isn't silently dropped.
476
+ */
477
+ private settleRuleOptions;
478
+ /**
479
+ * Re-applies persisted template ids onto `.rule-select` hosts after
480
+ * options-datasource has rebuilt its options. We deliberately do *not* bind
481
+ * `:initialSelectedValue` to templateId: that path compares the option label
482
+ * against Select.value (the option id), always mismatches, clearData()'s the
483
+ * select, and leaves the next pick stuck on "Select a rule...".
484
+ */
485
+ private applyRuleSelectValues;
486
+ private mapRules;
487
+ private ruleMatchId;
488
+ private syncSoundState;
489
+ }
490
+
232
491
  declare enum InboxTab {
233
492
  ALERTS_NEW = 0,
234
493
  ALERT_HISTORY = 1,
235
- SUBSCRIBE = 2
494
+ SUBSCRIBE = 2,
495
+ SOUNDS = 3
236
496
  }
237
497
 
498
+ /**
499
+ * Every rule's audio is held in one IndexedDB row, so a generous per-file limit
500
+ * still risks the origin storage quota once multiplied by {@link MAX_SOUND_RULES}.
501
+ */
502
+ export declare const MAX_SOUND_FILE_BYTES: number;
503
+
504
+ /** Maximum number of sound rules (MESSAGE/HEADER pattern, or notification rule). */
505
+ export declare const MAX_SOUND_RULES = 10;
506
+
238
507
  declare interface NotificationRuleTemplateReply {
239
508
  DYNAMIC_RULE_ID: string;
240
509
  RULE_NAME: string;
@@ -251,6 +520,14 @@ declare interface NotificationRuleTemplateReply {
251
520
  PARAMETERS: any;
252
521
  }
253
522
 
523
+ declare type NotifyAlertSound = {
524
+ ALERT_SOUND_ID: string;
525
+ DYNAMIC_RULE_ID: string;
526
+ ALERT_SOUND_FILE_NAME?: string;
527
+ ALERT_SOUND_MIME_TYPE?: string;
528
+ SOUND_DATA: string;
529
+ };
530
+
254
531
  declare type NotifyChannel = 'popup' | 'email';
255
532
 
256
533
  declare interface NotifyRoute {
@@ -316,7 +593,7 @@ declare type Rule = {
316
593
  RESULT_EXPRESSION?: {
317
594
  ASSIGNMENTS: Array<any>;
318
595
  };
319
- };
596
+ } & AlertSoundPayloadFields;
320
597
 
321
598
  declare interface Rule_2 {
322
599
  ID: string;
@@ -348,6 +625,7 @@ declare interface RuleService {
348
625
  disableRule(dynamicRuleId: string): any;
349
626
  getRules(): Promise<any>;
350
627
  getRuleDetails(ruleId: string): Promise<Rule>;
628
+ getAlertSound(dynamicRuleId: string): Promise<NotifyAlertSound | null>;
351
629
  createRule(rule: Rule): Promise<Message>;
352
630
  updateRule(rule: Rule): Promise<Message>;
353
631
  deleteRule(ruleId: string): void;
@@ -389,7 +667,7 @@ declare type Template = {
389
667
  ASSIGNMENTS: Array<any>;
390
668
  };
391
669
  PARAMETER_DETAILS: any;
392
- };
670
+ } & AlertSoundPayloadFields;
393
671
 
394
672
  declare interface TemplateService {
395
673
  createRuleTemplate(ruleTemplate: Template): Promise<any>;
package/dist/react.cjs CHANGED
@@ -29,6 +29,8 @@ const { TemplateConditionGroup: TemplateConditionGroupWC } = require('./esm/comp
29
29
  const { TemplateDialog: TemplateDialogWC } = require('./esm/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.js');
30
30
  const { TemplateManagement: TemplateManagementWC } = require('./esm/components/foundation-notification-dashboard/components/templates/template-management.js');
31
31
  const { FoundationNotificationDashboard: FoundationNotificationDashboardWC } = require('./esm/components/foundation-notification-dashboard/notification-dashboard.js');
32
+ const { FoundationSoundsPanel: FoundationSoundsPanelWC } = require('./esm/components/foundation-sounds/foundation-sounds-panel.js');
33
+ const { FoundationSounds: FoundationSoundsWC } = require('./esm/components/foundation-sounds/foundation-sounds.js');
32
34
  const { ReconciliationSandbox: ReconciliationSandboxWC } = require('./esm/sandbox.js');
33
35
 
34
36
  function _mergeRefs(...refs) {
@@ -55,6 +57,16 @@ const FoundationNotificationDashboard = React.forwardRef(function FoundationNoti
55
57
  return React.createElement(customElements.getName(FoundationNotificationDashboardWC) ?? 'foundation-notification-dashboard', { ...rest, ref }, children);
56
58
  });
57
59
 
60
+ const FoundationSoundsPanel = React.forwardRef(function FoundationSoundsPanel(props, ref) {
61
+ const { children, ...rest } = props;
62
+ return React.createElement(customElements.getName(FoundationSoundsPanelWC) ?? 'foundation-sounds-panel', { ...rest, ref }, children);
63
+ });
64
+
65
+ const FoundationSounds = React.forwardRef(function FoundationSounds(props, ref) {
66
+ const { children, ...rest } = props;
67
+ return React.createElement(customElements.getName(FoundationSoundsWC) ?? 'foundation-sounds', { ...rest, ref }, children);
68
+ });
69
+
58
70
  const FoundationInboxCounter = React.forwardRef(function FoundationInboxCounter(props, ref) {
59
71
  const { children, ...rest } = props;
60
72
  return React.createElement(customElements.getName(FoundationInboxCounterWC) ?? 'foundation-inbox-counter', { ...rest, ref }, children);
@@ -188,7 +200,7 @@ const TemplateDialog = React.forwardRef(function TemplateDialog(props, ref) {
188
200
  return React.createElement(customElements.getName(TemplateDialogWC) ?? 'template-dialog', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
189
201
  });
190
202
 
191
- const RuleConditionGroup = React.forwardRef(function RuleConditionGroup(props, ref) {
203
+ const RuleConditionBuilder = React.forwardRef(function RuleConditionBuilder(props, ref) {
192
204
  const { onDelete, onEdit, children, ...rest } = props;
193
205
  const _innerRef = React.useRef(null);
194
206
  const _onDeleteRef = React.useRef(onDelete);
@@ -207,10 +219,10 @@ const RuleConditionGroup = React.forwardRef(function RuleConditionGroup(props, r
207
219
  el.removeEventListener('edit', _onEditFn);
208
220
  };
209
221
  }, []);
210
- return React.createElement(customElements.getName(RuleConditionGroupWC) ?? 'rule-condition-group', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
222
+ return React.createElement(customElements.getName(RuleConditionBuilderWC) ?? 'rule-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
211
223
  });
212
224
 
213
- const RuleConditionBuilder = React.forwardRef(function RuleConditionBuilder(props, ref) {
225
+ const RuleConditionGroup = React.forwardRef(function RuleConditionGroup(props, ref) {
214
226
  const { onDelete, onEdit, children, ...rest } = props;
215
227
  const _innerRef = React.useRef(null);
216
228
  const _onDeleteRef = React.useRef(onDelete);
@@ -229,7 +241,7 @@ const RuleConditionBuilder = React.forwardRef(function RuleConditionBuilder(prop
229
241
  el.removeEventListener('edit', _onEditFn);
230
242
  };
231
243
  }, []);
232
- return React.createElement(customElements.getName(RuleConditionBuilderWC) ?? 'rule-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
244
+ return React.createElement(customElements.getName(RuleConditionGroupWC) ?? 'rule-condition-group', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
233
245
  });
234
246
 
235
247
  const ParameterBuilder = React.forwardRef(function ParameterBuilder(props, ref) {
@@ -302,6 +314,8 @@ module.exports = {
302
314
  ReconciliationSandbox,
303
315
  FoundationInbox,
304
316
  FoundationNotificationDashboard,
317
+ FoundationSoundsPanel,
318
+ FoundationSounds,
305
319
  FoundationInboxCounter,
306
320
  FoundationInboxFlyout,
307
321
  InboxSubscription,
@@ -318,8 +332,8 @@ module.exports = {
318
332
  SlackRouteManagement,
319
333
  RuleDialog,
320
334
  TemplateDialog,
321
- RuleConditionGroup,
322
335
  RuleConditionBuilder,
336
+ RuleConditionGroup,
323
337
  ParameterBuilder,
324
338
  TemplateConditionBuilder,
325
339
  TemplateConditionGroup,
package/dist/react.mjs CHANGED
@@ -27,6 +27,8 @@ import { TemplateConditionGroup as TemplateConditionGroupWC } from './esm/compon
27
27
  import { TemplateDialog as TemplateDialogWC } from './esm/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.js';
28
28
  import { TemplateManagement as TemplateManagementWC } from './esm/components/foundation-notification-dashboard/components/templates/template-management.js';
29
29
  import { FoundationNotificationDashboard as FoundationNotificationDashboardWC } from './esm/components/foundation-notification-dashboard/notification-dashboard.js';
30
+ import { FoundationSoundsPanel as FoundationSoundsPanelWC } from './esm/components/foundation-sounds/foundation-sounds-panel.js';
31
+ import { FoundationSounds as FoundationSoundsWC } from './esm/components/foundation-sounds/foundation-sounds.js';
30
32
  import { ReconciliationSandbox as ReconciliationSandboxWC } from './esm/sandbox.js';
31
33
 
32
34
  function _mergeRefs(...refs) {
@@ -53,6 +55,16 @@ export const FoundationNotificationDashboard = React.forwardRef(function Foundat
53
55
  return React.createElement(customElements.getName(FoundationNotificationDashboardWC) ?? 'foundation-notification-dashboard', { ...rest, ref }, children);
54
56
  });
55
57
 
58
+ export const FoundationSoundsPanel = React.forwardRef(function FoundationSoundsPanel(props, ref) {
59
+ const { children, ...rest } = props;
60
+ return React.createElement(customElements.getName(FoundationSoundsPanelWC) ?? 'foundation-sounds-panel', { ...rest, ref }, children);
61
+ });
62
+
63
+ export const FoundationSounds = React.forwardRef(function FoundationSounds(props, ref) {
64
+ const { children, ...rest } = props;
65
+ return React.createElement(customElements.getName(FoundationSoundsWC) ?? 'foundation-sounds', { ...rest, ref }, children);
66
+ });
67
+
56
68
  export const FoundationInboxCounter = React.forwardRef(function FoundationInboxCounter(props, ref) {
57
69
  const { children, ...rest } = props;
58
70
  return React.createElement(customElements.getName(FoundationInboxCounterWC) ?? 'foundation-inbox-counter', { ...rest, ref }, children);
@@ -186,7 +198,7 @@ export const TemplateDialog = React.forwardRef(function TemplateDialog(props, re
186
198
  return React.createElement(customElements.getName(TemplateDialogWC) ?? 'template-dialog', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
187
199
  });
188
200
 
189
- export const RuleConditionGroup = React.forwardRef(function RuleConditionGroup(props, ref) {
201
+ export const RuleConditionBuilder = React.forwardRef(function RuleConditionBuilder(props, ref) {
190
202
  const { onDelete, onEdit, children, ...rest } = props;
191
203
  const _innerRef = React.useRef(null);
192
204
  const _onDeleteRef = React.useRef(onDelete);
@@ -205,10 +217,10 @@ export const RuleConditionGroup = React.forwardRef(function RuleConditionGroup(p
205
217
  el.removeEventListener('edit', _onEditFn);
206
218
  };
207
219
  }, []);
208
- return React.createElement(customElements.getName(RuleConditionGroupWC) ?? 'rule-condition-group', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
220
+ return React.createElement(customElements.getName(RuleConditionBuilderWC) ?? 'rule-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
209
221
  });
210
222
 
211
- export const RuleConditionBuilder = React.forwardRef(function RuleConditionBuilder(props, ref) {
223
+ export const RuleConditionGroup = React.forwardRef(function RuleConditionGroup(props, ref) {
212
224
  const { onDelete, onEdit, children, ...rest } = props;
213
225
  const _innerRef = React.useRef(null);
214
226
  const _onDeleteRef = React.useRef(onDelete);
@@ -227,7 +239,7 @@ export const RuleConditionBuilder = React.forwardRef(function RuleConditionBuild
227
239
  el.removeEventListener('edit', _onEditFn);
228
240
  };
229
241
  }, []);
230
- return React.createElement(customElements.getName(RuleConditionBuilderWC) ?? 'rule-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
242
+ return React.createElement(customElements.getName(RuleConditionGroupWC) ?? 'rule-condition-group', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
231
243
  });
232
244
 
233
245
  export const ParameterBuilder = React.forwardRef(function ParameterBuilder(props, ref) {
@@ -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/routes/tabs/slack-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"}
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/alert-sound-attachment.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/routes/tabs/slack-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/components/foundation-sounds/foundation-sounds-panel.styles.ts","../src/components/foundation-sounds/foundation-sounds-panel.template.ts","../src/components/foundation-sounds/foundation-sounds-panel.ts","../src/components/foundation-sounds/foundation-sounds.styles.ts","../src/components/foundation-sounds/foundation-sounds.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/alert-sound.test.ts","../src/utils/alert-sound.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": "15.8.3",
4
+ "version": "15.9.0",
5
5
  "license": "SEE LICENSE IN license.txt",
6
6
  "workspaces": [
7
7
  "client"
@@ -81,30 +81,30 @@
81
81
  "@commitlint/cli": "^19.2.1",
82
82
  "@commitlint/config-conventional": "^19.1.0",
83
83
  "@commitlint/format": "^19.0.3",
84
- "@genesislcap/design-system-configurator": "15.8.3",
85
- "@genesislcap/eslint-config": "15.8.3",
86
- "@genesislcap/eslint-stylelint-builder": "15.8.3",
87
- "@genesislcap/foundation-testing": "15.8.3",
88
- "@genesislcap/genx": "15.8.3",
89
- "@genesislcap/prettier-config": "15.8.3",
90
- "@genesislcap/stylelint-config": "15.8.3",
91
- "@genesislcap/vite-builder": "15.8.3",
92
- "@genesislcap/webpack-builder": "15.8.3",
84
+ "@genesislcap/design-system-configurator": "15.9.0",
85
+ "@genesislcap/eslint-config": "15.9.0",
86
+ "@genesislcap/eslint-stylelint-builder": "15.9.0",
87
+ "@genesislcap/foundation-testing": "15.9.0",
88
+ "@genesislcap/genx": "15.9.0",
89
+ "@genesislcap/prettier-config": "15.9.0",
90
+ "@genesislcap/stylelint-config": "15.9.0",
91
+ "@genesislcap/vite-builder": "15.9.0",
92
+ "@genesislcap/webpack-builder": "15.9.0",
93
93
  "dayjs": "^1.11.7"
94
94
  },
95
95
  "dependencies": {
96
- "@genesislcap/foundation-comms": "15.8.3",
97
- "@genesislcap/foundation-criteria": "15.8.3",
98
- "@genesislcap/foundation-entity-management": "15.8.3",
99
- "@genesislcap/foundation-forms": "15.8.3",
100
- "@genesislcap/foundation-layout": "15.8.3",
101
- "@genesislcap/foundation-logger": "15.8.3",
102
- "@genesislcap/foundation-notifications": "15.8.3",
103
- "@genesislcap/foundation-ui": "15.8.3",
104
- "@genesislcap/foundation-utils": "15.8.3",
105
- "@genesislcap/rapid-design-system": "15.8.3",
106
- "@genesislcap/rapid-grid-pro": "15.8.3",
107
- "@genesislcap/web-core": "15.8.3",
96
+ "@genesislcap/foundation-comms": "15.9.0",
97
+ "@genesislcap/foundation-criteria": "15.9.0",
98
+ "@genesislcap/foundation-entity-management": "15.9.0",
99
+ "@genesislcap/foundation-forms": "15.9.0",
100
+ "@genesislcap/foundation-layout": "15.9.0",
101
+ "@genesislcap/foundation-logger": "15.9.0",
102
+ "@genesislcap/foundation-notifications": "15.9.0",
103
+ "@genesislcap/foundation-ui": "15.9.0",
104
+ "@genesislcap/foundation-utils": "15.9.0",
105
+ "@genesislcap/rapid-design-system": "15.9.0",
106
+ "@genesislcap/rapid-grid-pro": "15.9.0",
107
+ "@genesislcap/web-core": "15.9.0",
108
108
  "lodash.debounce": "^4.0.8",
109
109
  "rxjs": "^7.5.4"
110
110
  },
@@ -112,5 +112,5 @@
112
112
  "access": "public"
113
113
  },
114
114
  "customElements": "dist/custom-elements.json",
115
- "gitHead": "0001fb4c5a056b22bb1a3d316cc4f2e2aa79cff4"
115
+ "gitHead": "640fddb70d899b01c9337563ae874ddb5226cbcd"
116
116
  }
@@ -21,6 +21,8 @@ import { TemplateConditionBuilder } from './foundation-notification-dashboard/co
21
21
  import { TemplateConditionGroup } from './foundation-notification-dashboard/components/templates/template-dialog/template-condition-group/template-condition-group';
22
22
  import { TemplateDialog } from './foundation-notification-dashboard/components/templates/template-dialog/template-dialog';
23
23
  import { TemplateManagement } from './foundation-notification-dashboard/components/templates/template-management';
24
+ import { FoundationSounds } from './foundation-sounds/foundation-sounds';
25
+ import { FoundationSoundsPanel } from './foundation-sounds/foundation-sounds-panel';
24
26
 
25
27
  // Components
26
28
 
@@ -28,6 +30,8 @@ import { TemplateManagement } from './foundation-notification-dashboard/componen
28
30
  FoundationInboxCounter;
29
31
  InboxSubscription;
30
32
  RuleParameter;
33
+ FoundationSounds;
34
+ FoundationSoundsPanel;
31
35
  // #endregion Inbox
32
36
 
33
37
  // #region Notification Dashboard
@@ -26,6 +26,7 @@ import { TemplateService } from '../../../services/template.service';
26
26
  import { logger } from '../../../utils';
27
27
  import { NotifyPermission } from '../../../utils/notifyPermissions';
28
28
  import { showNotificationError } from '../../foundation-notification-dashboard/notification-dashboard.utils';
29
+ import type { FoundationSoundsPanel } from '../../foundation-sounds/foundation-sounds-panel';
29
30
  import type { FoundationInbox } from '../inbox';
30
31
  import { Alert, InboxTab, NotificationRuleTemplateReply, Rule, RuleTemplate } from '../inbox.types';
31
32
  import { extractTopic } from '../inbox.utils';
@@ -133,6 +134,7 @@ export class FoundationInboxBase extends GenesisElement {
133
134
  @observable severityType = [];
134
135
 
135
136
  public tabs: Tabs;
137
+ public sounds: FoundationSoundsPanel;
136
138
 
137
139
  async connectedCallback() {
138
140
  super.connectedCallback();
@@ -192,6 +194,11 @@ export class FoundationInboxBase extends GenesisElement {
192
194
  case InboxTab.SUBSCRIBE:
193
195
  await this.refreshSubscribeData();
194
196
  break;
197
+ case InboxTab.SOUNDS: {
198
+ // Refresh rules so newly subscribed templates (which create rules) appear.
199
+ await this.sounds?.reloadRules();
200
+ break;
201
+ }
195
202
  default:
196
203
  logger.error('Unexpected inboxTab:', inboxTab);
197
204
  break;
@@ -293,6 +293,21 @@ export const subscribe = css`
293
293
  flex: 1;
294
294
  overflow: auto;
295
295
  }
296
+
297
+ .sounds-tab-panel {
298
+ display: flex;
299
+ flex-direction: column;
300
+ min-height: 0;
301
+ flex: 1;
302
+ overflow: hidden;
303
+ }
304
+
305
+ .sounds-tab-panel foundation-sounds-panel {
306
+ display: flex;
307
+ flex: 1;
308
+ min-height: 0;
309
+ height: 100%;
310
+ }
296
311
  `;
297
312
 
298
313
  export const ruleAndTemplate = css`