@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.
- package/README.md +39 -0
- package/custom-elements-manifest.config.js +5 -0
- package/dist/custom-elements.json +1771 -321
- package/dist/dts/components/components.d.ts.map +1 -1
- package/dist/dts/components/foundation-inbox/inbox-base/inbox-base.d.ts +2 -0
- package/dist/dts/components/foundation-inbox/inbox-base/inbox-base.d.ts.map +1 -1
- package/dist/dts/components/foundation-inbox/inbox.styles.d.ts.map +1 -1
- package/dist/dts/components/foundation-inbox/inbox.template.d.ts.map +1 -1
- package/dist/dts/components/foundation-inbox/inbox.types.d.ts +4 -1
- package/dist/dts/components/foundation-inbox/inbox.types.d.ts.map +1 -1
- package/dist/dts/components/foundation-notification-dashboard/alert-sound-attachment.d.ts +86 -0
- package/dist/dts/components/foundation-notification-dashboard/alert-sound-attachment.d.ts.map +1 -0
- package/dist/dts/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.d.ts +39 -1
- package/dist/dts/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.d.ts.map +1 -1
- package/dist/dts/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.template.d.ts.map +1 -1
- package/dist/dts/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.types.d.ts +8 -0
- package/dist/dts/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.types.d.ts.map +1 -1
- package/dist/dts/components/foundation-notification-dashboard/components/rules/rule-management.d.ts.map +1 -1
- package/dist/dts/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.d.ts +41 -1
- package/dist/dts/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.d.ts.map +1 -1
- package/dist/dts/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.template.d.ts.map +1 -1
- package/dist/dts/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.types.d.ts +2 -1
- package/dist/dts/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.types.d.ts.map +1 -1
- package/dist/dts/components/foundation-notification-dashboard/components/templates/template-management.d.ts.map +1 -1
- package/dist/dts/components/foundation-notification-dashboard/styles/dynamic-rule.styles.d.ts.map +1 -1
- package/dist/dts/components/foundation-sounds/foundation-sounds-panel.d.ts +73 -0
- package/dist/dts/components/foundation-sounds/foundation-sounds-panel.d.ts.map +1 -0
- package/dist/dts/components/foundation-sounds/foundation-sounds-panel.styles.d.ts +2 -0
- package/dist/dts/components/foundation-sounds/foundation-sounds-panel.styles.d.ts.map +1 -0
- package/dist/dts/components/foundation-sounds/foundation-sounds-panel.template.d.ts +3 -0
- package/dist/dts/components/foundation-sounds/foundation-sounds-panel.template.d.ts.map +1 -0
- package/dist/dts/components/foundation-sounds/foundation-sounds.d.ts +34 -0
- package/dist/dts/components/foundation-sounds/foundation-sounds.d.ts.map +1 -0
- package/dist/dts/components/foundation-sounds/foundation-sounds.styles.d.ts +3 -0
- package/dist/dts/components/foundation-sounds/foundation-sounds.styles.d.ts.map +1 -0
- package/dist/dts/index.d.ts +4 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/react.d.ts +31 -11
- package/dist/dts/services/inbox.service.d.ts +6 -0
- package/dist/dts/services/inbox.service.d.ts.map +1 -1
- package/dist/dts/services/rule.service.d.ts +2 -1
- package/dist/dts/services/rule.service.d.ts.map +1 -1
- package/dist/dts/utils/alert-sound.d.ts +177 -0
- package/dist/dts/utils/alert-sound.d.ts.map +1 -0
- package/dist/dts/utils/alert-sound.test.d.ts +2 -0
- package/dist/dts/utils/alert-sound.test.d.ts.map +1 -0
- package/dist/esm/components/components.js +4 -0
- package/dist/esm/components/foundation-inbox/inbox-base/inbox-base.js +6 -0
- package/dist/esm/components/foundation-inbox/inbox.styles.js +15 -0
- package/dist/esm/components/foundation-inbox/inbox.template.js +16 -0
- package/dist/esm/components/foundation-inbox/inbox.types.js +1 -0
- package/dist/esm/components/foundation-notification-dashboard/alert-sound-attachment.js +218 -0
- package/dist/esm/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.js +17 -2
- package/dist/esm/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.template.js +3 -0
- package/dist/esm/components/foundation-notification-dashboard/components/rules/rule-management.js +5 -1
- package/dist/esm/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.js +23 -2
- package/dist/esm/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.template.js +3 -0
- package/dist/esm/components/foundation-notification-dashboard/components/templates/template-management.js +8 -1
- package/dist/esm/components/foundation-notification-dashboard/styles/dynamic-rule.styles.js +31 -1
- package/dist/esm/components/foundation-sounds/foundation-sounds-panel.js +283 -0
- package/dist/esm/components/foundation-sounds/foundation-sounds-panel.styles.js +200 -0
- package/dist/esm/components/foundation-sounds/foundation-sounds-panel.template.js +179 -0
- package/dist/esm/components/foundation-sounds/foundation-sounds.js +206 -0
- package/dist/esm/components/foundation-sounds/foundation-sounds.styles.js +7 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/services/inbox.service.js +6 -2
- package/dist/esm/services/rule.service.js +35 -0
- package/dist/esm/utils/alert-sound.js +955 -0
- package/dist/esm/utils/alert-sound.test.js +25 -0
- package/dist/esm/utils/index.js +3 -0
- package/dist/pbc-notify-ui.api.json +2859 -332
- package/dist/pbc-notify-ui.d.ts +281 -3
- package/dist/react.cjs +19 -5
- package/dist/react.mjs +16 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +23 -23
- package/src/components/components.ts +4 -0
- package/src/components/foundation-inbox/inbox-base/inbox-base.ts +7 -0
- package/src/components/foundation-inbox/inbox.styles.ts +15 -0
- package/src/components/foundation-inbox/inbox.template.ts +16 -0
- package/src/components/foundation-inbox/inbox.types.ts +3 -0
- package/src/components/foundation-notification-dashboard/alert-sound-attachment.ts +283 -0
- package/src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.template.ts +3 -0
- package/src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.ts +21 -2
- package/src/components/foundation-notification-dashboard/components/rules/rule-dialog/rule-dialog.types.ts +9 -0
- package/src/components/foundation-notification-dashboard/components/rules/rule-management.ts +5 -1
- package/src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.template.ts +3 -0
- package/src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.ts +25 -2
- package/src/components/foundation-notification-dashboard/components/templates/template-dialog/template-dialog.types.ts +2 -1
- package/src/components/foundation-notification-dashboard/components/templates/template-management.ts +8 -1
- package/src/components/foundation-notification-dashboard/styles/dynamic-rule.styles.ts +31 -1
- package/src/components/foundation-sounds/foundation-sounds-panel.styles.ts +201 -0
- package/src/components/foundation-sounds/foundation-sounds-panel.template.ts +188 -0
- package/src/components/foundation-sounds/foundation-sounds-panel.ts +280 -0
- package/src/components/foundation-sounds/foundation-sounds.styles.ts +8 -0
- package/src/components/foundation-sounds/foundation-sounds.ts +222 -0
- package/src/index.ts +8 -0
- package/src/services/inbox.service.ts +12 -2
- package/src/services/rule.service.ts +37 -1
- package/src/utils/alert-sound.test.ts +32 -0
- package/src/utils/alert-sound.ts +1135 -0
- package/src/utils/index.ts +3 -0
package/dist/pbc-notify-ui.d.ts
CHANGED
|
@@ -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
|
|
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(
|
|
222
|
+
return React.createElement(customElements.getName(RuleConditionBuilderWC) ?? 'rule-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
211
223
|
});
|
|
212
224
|
|
|
213
|
-
const
|
|
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(
|
|
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
|
|
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(
|
|
220
|
+
return React.createElement(customElements.getName(RuleConditionBuilderWC) ?? 'rule-condition-builder', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
209
221
|
});
|
|
210
222
|
|
|
211
|
-
export const
|
|
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(
|
|
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.
|
|
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.
|
|
85
|
-
"@genesislcap/eslint-config": "15.
|
|
86
|
-
"@genesislcap/eslint-stylelint-builder": "15.
|
|
87
|
-
"@genesislcap/foundation-testing": "15.
|
|
88
|
-
"@genesislcap/genx": "15.
|
|
89
|
-
"@genesislcap/prettier-config": "15.
|
|
90
|
-
"@genesislcap/stylelint-config": "15.
|
|
91
|
-
"@genesislcap/vite-builder": "15.
|
|
92
|
-
"@genesislcap/webpack-builder": "15.
|
|
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.
|
|
97
|
-
"@genesislcap/foundation-criteria": "15.
|
|
98
|
-
"@genesislcap/foundation-entity-management": "15.
|
|
99
|
-
"@genesislcap/foundation-forms": "15.
|
|
100
|
-
"@genesislcap/foundation-layout": "15.
|
|
101
|
-
"@genesislcap/foundation-logger": "15.
|
|
102
|
-
"@genesislcap/foundation-notifications": "15.
|
|
103
|
-
"@genesislcap/foundation-ui": "15.
|
|
104
|
-
"@genesislcap/foundation-utils": "15.
|
|
105
|
-
"@genesislcap/rapid-design-system": "15.
|
|
106
|
-
"@genesislcap/rapid-grid-pro": "15.
|
|
107
|
-
"@genesislcap/web-core": "15.
|
|
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": "
|
|
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`
|