@mongodb-js/compass-components 1.10.0 → 1.11.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/lib/components/bson-value.d.ts +0 -22
- package/lib/components/bson-value.d.ts.map +1 -1
- package/lib/components/bson-value.js +33 -36
- package/lib/components/bson-value.js.map +1 -1
- package/lib/components/collapsible-field-set.js +1 -1
- package/lib/components/collapsible-field-set.js.map +1 -1
- package/lib/components/combobox/Chip.js +2 -4
- package/lib/components/combobox/Chip.js.map +1 -1
- package/lib/components/combobox/Combobox.d.ts +1 -1
- package/lib/components/combobox/Combobox.d.ts.map +1 -1
- package/lib/components/combobox/Combobox.js +42 -55
- package/lib/components/combobox/Combobox.js.map +1 -1
- package/lib/components/combobox/Combobox.styles.js +1 -2
- package/lib/components/combobox/Combobox.styles.js.map +1 -1
- package/lib/components/combobox/Combobox.types.d.ts +2 -2
- package/lib/components/combobox/Combobox.types.d.ts.map +1 -1
- package/lib/components/combobox/Combobox.types.js.map +1 -1
- package/lib/components/combobox/ComboboxOption.d.ts +1 -1
- package/lib/components/combobox/ComboboxOption.d.ts.map +1 -1
- package/lib/components/combobox/ComboboxOption.js.map +1 -1
- package/lib/components/combobox/utils/OptionObjectUtils.js +3 -4
- package/lib/components/combobox/utils/OptionObjectUtils.js.map +1 -1
- package/lib/components/combobox/utils/getNameAndValue.js +2 -3
- package/lib/components/combobox/utils/getNameAndValue.js.map +1 -1
- package/lib/components/combobox/utils/wrapJSX.js +1 -2
- package/lib/components/combobox/utils/wrapJSX.js.map +1 -1
- package/lib/components/combobox-with-custom-option.d.ts.map +1 -1
- package/lib/components/combobox-with-custom-option.js +23 -20
- package/lib/components/combobox-with-custom-option.js.map +1 -1
- package/lib/components/document-list/document-actions-group.d.ts +2 -0
- package/lib/components/document-list/document-actions-group.d.ts.map +1 -1
- package/lib/components/document-list/document-actions-group.js +32 -15
- package/lib/components/document-list/document-actions-group.js.map +1 -1
- package/lib/components/document-list/document-edit-actions-footer.js +2 -2
- package/lib/components/document-list/document-edit-actions-footer.js.map +1 -1
- package/lib/components/document-list/document.js +2 -3
- package/lib/components/document-list/document.js.map +1 -1
- package/lib/components/document-list/element-actions.js +1 -1
- package/lib/components/document-list/element-actions.js.map +1 -1
- package/lib/components/document-list/element.d.ts.map +1 -1
- package/lib/components/document-list/element.js +15 -14
- package/lib/components/document-list/element.js.map +1 -1
- package/lib/components/error-boundary.js +1 -2
- package/lib/components/error-boundary.js.map +1 -1
- package/lib/components/file-input.js +7 -10
- package/lib/components/file-input.js.map +1 -1
- package/lib/components/guide-cue/guide-cue-exceptions.d.ts +18 -0
- package/lib/components/guide-cue/guide-cue-exceptions.d.ts.map +1 -0
- package/lib/components/guide-cue/guide-cue-exceptions.js +32 -0
- package/lib/components/guide-cue/guide-cue-exceptions.js.map +1 -0
- package/lib/components/guide-cue/guide-cue-groups.d.ts +8 -0
- package/lib/components/guide-cue/guide-cue-groups.d.ts.map +1 -0
- package/lib/components/guide-cue/guide-cue-groups.js +6 -0
- package/lib/components/guide-cue/guide-cue-groups.js.map +1 -0
- package/lib/components/guide-cue/guide-cue-service.d.ts +46 -0
- package/lib/components/guide-cue/guide-cue-service.d.ts.map +1 -0
- package/lib/components/guide-cue/guide-cue-service.js +174 -0
- package/lib/components/guide-cue/guide-cue-service.js.map +1 -0
- package/lib/components/guide-cue/guide-cue-storage.d.ts +19 -0
- package/lib/components/guide-cue/guide-cue-storage.d.ts.map +1 -0
- package/lib/components/guide-cue/guide-cue-storage.js +33 -0
- package/lib/components/guide-cue/guide-cue-storage.js.map +1 -0
- package/lib/components/guide-cue/guide-cue.d.ts +36 -0
- package/lib/components/guide-cue/guide-cue.d.ts.map +1 -0
- package/lib/components/guide-cue/guide-cue.js +167 -0
- package/lib/components/guide-cue/guide-cue.js.map +1 -0
- package/lib/components/index-keys-badge.d.ts.map +1 -1
- package/lib/components/index-keys-badge.js +1 -0
- package/lib/components/index-keys-badge.js.map +1 -1
- package/lib/components/interactive-popover.d.ts +9 -6
- package/lib/components/interactive-popover.d.ts.map +1 -1
- package/lib/components/interactive-popover.js +19 -16
- package/lib/components/interactive-popover.js.map +1 -1
- package/lib/components/item-action-controls.d.ts +11 -6
- package/lib/components/item-action-controls.d.ts.map +1 -1
- package/lib/components/item-action-controls.js +24 -10
- package/lib/components/item-action-controls.js.map +1 -1
- package/lib/components/list-editor.js +7 -10
- package/lib/components/list-editor.js.map +1 -1
- package/lib/components/loader.js +1 -2
- package/lib/components/loader.js.map +1 -1
- package/lib/components/more-options-toggle.js +1 -2
- package/lib/components/more-options-toggle.js.map +1 -1
- package/lib/components/placeholder.js +1 -2
- package/lib/components/placeholder.js.map +1 -1
- package/lib/components/signal-popover.d.ts +30 -0
- package/lib/components/signal-popover.d.ts.map +1 -0
- package/lib/components/signal-popover.js +356 -0
- package/lib/components/signal-popover.js.map +1 -0
- package/lib/components/signals.d.ts +87 -0
- package/lib/components/signals.d.ts.map +1 -0
- package/lib/components/signals.js +117 -0
- package/lib/components/signals.js.map +1 -0
- package/lib/components/store-connector.js +1 -2
- package/lib/components/store-connector.js.map +1 -1
- package/lib/components/tab-nav-bar.d.ts +1 -2
- package/lib/components/tab-nav-bar.d.ts.map +1 -1
- package/lib/components/tab-nav-bar.js +2 -2
- package/lib/components/tab-nav-bar.js.map +1 -1
- package/lib/components/tooltip.d.ts +4 -3
- package/lib/components/tooltip.d.ts.map +1 -1
- package/lib/components/tooltip.js.map +1 -1
- package/lib/components/virtual-grid.js +10 -12
- package/lib/components/virtual-grid.js.map +1 -1
- package/lib/components/workspace-tabs/workspace-tabs.js +1 -2
- package/lib/components/workspace-tabs/workspace-tabs.js.map +1 -1
- package/lib/hooks/use-confirmation.d.ts +1 -1
- package/lib/hooks/use-confirmation.d.ts.map +1 -1
- package/lib/hooks/use-confirmation.js +3 -6
- package/lib/hooks/use-confirmation.js.map +1 -1
- package/lib/hooks/use-dom-rect.js +2 -4
- package/lib/hooks/use-dom-rect.js.map +1 -1
- package/lib/hooks/use-focus-hover.d.ts +5 -1
- package/lib/hooks/use-focus-hover.d.ts.map +1 -1
- package/lib/hooks/use-focus-hover.js +1 -1
- package/lib/hooks/use-focus-hover.js.map +1 -1
- package/lib/hooks/use-hotkeys.d.ts.map +1 -1
- package/lib/hooks/use-hotkeys.js +5 -2
- package/lib/hooks/use-hotkeys.js.map +1 -1
- package/lib/hooks/use-sort.js +6 -8
- package/lib/hooks/use-sort.js.map +1 -1
- package/lib/hooks/use-toast.d.ts.map +1 -1
- package/lib/hooks/use-toast.js +6 -5
- package/lib/hooks/use-toast.js.map +1 -1
- package/lib/hooks/use-virtual-grid.js +5 -6
- package/lib/hooks/use-virtual-grid.js.map +1 -1
- package/lib/index.d.ts +7 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +11 -5
- package/lib/index.js.map +1 -1
- package/package.json +7 -7
|
@@ -65,12 +65,11 @@ function getBoundRandom(min, max) {
|
|
|
65
65
|
return Math.random() * (max - min) + min;
|
|
66
66
|
}
|
|
67
67
|
const Placeholder = ({ className, minChar = 5, maxChar = 15, width: propsWidth, height: propsHeight = tokens_1.spacing[3], ...props }) => {
|
|
68
|
-
var _a;
|
|
69
68
|
const darkMode = (0, use_theme_1.useDarkMode)();
|
|
70
69
|
const width = (0, react_1.useMemo)(() => {
|
|
71
70
|
return propsWidth || `${Math.round(getBoundRandom(minChar, maxChar))}ch`;
|
|
72
71
|
}, [minChar, maxChar, propsWidth]);
|
|
73
|
-
return (react_1.default.createElement("div", { ...props, role: "presentation", "data-testid":
|
|
72
|
+
return (react_1.default.createElement("div", { ...props, role: "presentation", "data-testid": props['data-testid'] ?? 'placeholder', className: (0, emotion_1.cx)(placeholder, className, darkMode && placeholderDarkMode), style: { width, height: propsHeight } }));
|
|
74
73
|
};
|
|
75
74
|
exports.Placeholder = Placeholder;
|
|
76
75
|
//# sourceMappingURL=placeholder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placeholder.js","sourceRoot":"","sources":["../../src/components/placeholder.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,+CAAuC;AACvC,oDAA4D;AAC5D,kDAAgD;AAChD,oDAAiD;AACjD,kDAAiD;AAGjD,MAAM,KAAK,GAAG,CAAC,CAAC;AAEhB,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAEtE,MAAM,IAAI,GAAG,IAAA,mBAAS,EAAC;IACrB,IAAI,EAAE;QACJ,kBAAkB,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI;KAC1C;IACD,EAAE,EAAE;QACF,kBAAkB,EAAE,KAAK;KAC1B;CACF,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,IAAA,aAAG,EAAC;IACtB,kBAAkB,EAAE,iBAAO,CAAC,IAAI,CAAC,MAAM;IACvC,gBAAgB,EAAE,iBAAO,CAAC,IAAI,CAAC,MAAM;IACrC,SAAS,EAAE,QAAQ;IACnB,YAAY,EAAE,CAAC;IACf,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,uBAAuB;IACxC,eAAe,EAAE;;;8BAGW,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;gCACpB,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;;MAE5C;IACJ,cAAc,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO;IACxC,kBAAkB,EAAE,KAAK;IACzB,SAAS,EAAE,GAAG,IAAI,IAAI,KAAK,mBAAmB;CAC/C,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,IAAA,aAAG,EAAC;IAC9B,kBAAkB,EAAE,iBAAO,CAAC,IAAI,CAAC,KAAK;IACtC,gBAAgB,EAAE,iBAAO,CAAC,IAAI,CAAC,KAAK;CACrC,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,GAAW,EAAE,GAAW;IAC9C,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3C,CAAC;AAED,MAAM,WAAW,GAWb,CAAC,EACH,SAAS,EACT,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,EAAE,EACZ,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,GAAG,gBAAO,CAAC,CAAC,CAAC,EAChC,GAAG,KAAK,EACT,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"placeholder.js","sourceRoot":"","sources":["../../src/components/placeholder.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,+CAAuC;AACvC,oDAA4D;AAC5D,kDAAgD;AAChD,oDAAiD;AACjD,kDAAiD;AAGjD,MAAM,KAAK,GAAG,CAAC,CAAC;AAEhB,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAEtE,MAAM,IAAI,GAAG,IAAA,mBAAS,EAAC;IACrB,IAAI,EAAE;QACJ,kBAAkB,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI;KAC1C;IACD,EAAE,EAAE;QACF,kBAAkB,EAAE,KAAK;KAC1B;CACF,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,IAAA,aAAG,EAAC;IACtB,kBAAkB,EAAE,iBAAO,CAAC,IAAI,CAAC,MAAM;IACvC,gBAAgB,EAAE,iBAAO,CAAC,IAAI,CAAC,MAAM;IACrC,SAAS,EAAE,QAAQ;IACnB,YAAY,EAAE,CAAC;IACf,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,uBAAuB;IACxC,eAAe,EAAE;;;8BAGW,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;gCACpB,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;;MAE5C;IACJ,cAAc,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO;IACxC,kBAAkB,EAAE,KAAK;IACzB,SAAS,EAAE,GAAG,IAAI,IAAI,KAAK,mBAAmB;CAC/C,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,IAAA,aAAG,EAAC;IAC9B,kBAAkB,EAAE,iBAAO,CAAC,IAAI,CAAC,KAAK;IACtC,gBAAgB,EAAE,iBAAO,CAAC,IAAI,CAAC,KAAK;CACrC,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,GAAW,EAAE,GAAW;IAC9C,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3C,CAAC;AAED,MAAM,WAAW,GAWb,CAAC,EACH,SAAS,EACT,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,EAAE,EACZ,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,GAAG,gBAAO,CAAC,CAAC,CAAC,EAChC,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,IAAA,uBAAW,GAAE,CAAC;IAE/B,MAAM,KAAK,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACzB,OAAO,UAAU,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IAC3E,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAEnC,OAAO,CACL,0CACM,KAAK,EACT,IAAI,EAAC,cAAc,iBACN,KAAK,CAAC,aAAa,CAAC,IAAI,aAAa,EAClD,SAAS,EAAE,IAAA,YAAE,EAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,IAAI,mBAAmB,CAAC,EACtE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,GAChC,CACR,CAAC;AACJ,CAAC,CAAC;AAEO,kCAAW"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type SignalTrackingHooks = {
|
|
3
|
+
onSignalMount(id: string): void;
|
|
4
|
+
onSignalOpen(id: string): void;
|
|
5
|
+
onSignalLinkClick(id: string): void;
|
|
6
|
+
onSignalPrimaryActionClick(id: string): void;
|
|
7
|
+
onSignalClose(id: string): void;
|
|
8
|
+
};
|
|
9
|
+
declare const SignalHooksProvider: React.FunctionComponent<Partial<SignalTrackingHooks>>;
|
|
10
|
+
export type Signal = {
|
|
11
|
+
id: string;
|
|
12
|
+
title: React.ReactNode;
|
|
13
|
+
description: React.ReactNode;
|
|
14
|
+
learnMoreLink: string;
|
|
15
|
+
learnMoreLabel?: string;
|
|
16
|
+
primaryActionButtonLabel?: string;
|
|
17
|
+
primaryActionButtonIcon?: string;
|
|
18
|
+
primaryActionButtonVariant?: 'primaryOutline' | 'dangerOutline';
|
|
19
|
+
primaryActionButtonLink?: string;
|
|
20
|
+
onPrimaryActionButtonClick?: React.MouseEventHandler;
|
|
21
|
+
};
|
|
22
|
+
type SignalPopoverProps = {
|
|
23
|
+
signals: Signal | Signal[];
|
|
24
|
+
darkMode?: boolean;
|
|
25
|
+
onPopoverOpenChange?: (open: boolean) => void;
|
|
26
|
+
className?: string;
|
|
27
|
+
};
|
|
28
|
+
declare const SignalPopover: React.FunctionComponent<SignalPopoverProps>;
|
|
29
|
+
export { SignalPopover, SignalHooksProvider };
|
|
30
|
+
//# sourceMappingURL=signal-popover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-popover.d.ts","sourceRoot":"","sources":["../../src/components/signal-popover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAaf,KAAK,mBAAmB,GAAG;IACzB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC;AAoBF,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,iBAAiB,CAChD,OAAO,CAAC,mBAAmB,CAAC,CA6B7B,CAAC;AAIF,MAAM,MAAM,MAAM,GAAG;IAMnB,EAAE,EAAE,MAAM,CAAC;IAEX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IAEvB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAE7B,aAAa,EAAE,MAAM,CAAC;IAKtB,cAAc,CAAC,EAAE,MAAM,CAAC;IAKxB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC,0BAA0B,CAAC,EAAE,gBAAgB,GAAG,eAAe,CAAC;IAKhE,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAMjC,0BAA0B,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;CACtD,CAAC;AAEF,KAAK,kBAAkB,GAAG;IAExB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAwTF,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CA+N9D,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.SignalHooksProvider = exports.SignalPopover = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const use_focus_hover_1 = require("../hooks/use-focus-hover");
|
|
29
|
+
const leafygreen_1 = require("./leafygreen");
|
|
30
|
+
const interactive_popover_1 = require("./interactive-popover");
|
|
31
|
+
const merge_props_1 = require("../utils/merge-props");
|
|
32
|
+
const emotion_1 = require("@leafygreen-ui/emotion");
|
|
33
|
+
const palette_1 = require("@leafygreen-ui/palette");
|
|
34
|
+
const use_theme_1 = require("../hooks/use-theme");
|
|
35
|
+
const tokens_1 = require("@leafygreen-ui/tokens");
|
|
36
|
+
const guide_cue_1 = require("./guide-cue/guide-cue");
|
|
37
|
+
const use_effect_on_change_1 = require("../hooks/use-effect-on-change");
|
|
38
|
+
const rafraf_1 = require("../utils/rafraf");
|
|
39
|
+
const TrackingHooksContext = react_1.default.createContext({
|
|
40
|
+
onSignalMount() {
|
|
41
|
+
},
|
|
42
|
+
onSignalOpen() {
|
|
43
|
+
},
|
|
44
|
+
onSignalLinkClick() {
|
|
45
|
+
},
|
|
46
|
+
onSignalPrimaryActionClick() {
|
|
47
|
+
},
|
|
48
|
+
onSignalClose() {
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
const SignalHooksProvider = ({ children, ..._hooks }) => {
|
|
52
|
+
const hooksRef = (0, react_1.useRef)(_hooks);
|
|
53
|
+
hooksRef.current = _hooks;
|
|
54
|
+
const hooks = (0, react_1.useMemo)(() => {
|
|
55
|
+
return {
|
|
56
|
+
onSignalMount(id) {
|
|
57
|
+
hooksRef.current.onSignalMount?.(id);
|
|
58
|
+
},
|
|
59
|
+
onSignalOpen(id) {
|
|
60
|
+
hooksRef.current.onSignalOpen?.(id);
|
|
61
|
+
},
|
|
62
|
+
onSignalLinkClick(id) {
|
|
63
|
+
hooksRef.current.onSignalLinkClick?.(id);
|
|
64
|
+
},
|
|
65
|
+
onSignalPrimaryActionClick(id) {
|
|
66
|
+
hooksRef.current.onSignalPrimaryActionClick?.(id);
|
|
67
|
+
},
|
|
68
|
+
onSignalClose(id) {
|
|
69
|
+
hooksRef.current.onSignalClose?.(id);
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}, []);
|
|
73
|
+
return (react_1.default.createElement(TrackingHooksContext.Provider, { value: hooks }, children));
|
|
74
|
+
};
|
|
75
|
+
exports.SignalHooksProvider = SignalHooksProvider;
|
|
76
|
+
const TRANSITION_DURATION_MS = 150;
|
|
77
|
+
const signalCardContentStyles = (0, emotion_1.css)({
|
|
78
|
+
'--signalCardBackgroundColor': palette_1.palette.white,
|
|
79
|
+
width: '100%',
|
|
80
|
+
display: 'grid',
|
|
81
|
+
gridTemplateColumns: '1fr',
|
|
82
|
+
gridTemplateRows: 'auto 1fr auto',
|
|
83
|
+
paddingTop: tokens_1.spacing[4],
|
|
84
|
+
paddingBottom: tokens_1.spacing[4],
|
|
85
|
+
paddingLeft: tokens_1.spacing[4],
|
|
86
|
+
paddingRight: tokens_1.spacing[4],
|
|
87
|
+
backgroundColor: 'var(--signalCardBackgroundColor)',
|
|
88
|
+
});
|
|
89
|
+
const CLOSE_BTN_TOP_WITH_MULTI_SIGNALS = 5;
|
|
90
|
+
const CLOSE_BTN_RIGHT_WITH_MULTI_SIGNALS = 5;
|
|
91
|
+
const CLOSE_BTN_TOP = 18;
|
|
92
|
+
const CLOSE_BTN_RIGHT = 18;
|
|
93
|
+
const signalCardContentDarkModeStyles = (0, emotion_1.css)({
|
|
94
|
+
'--signalCardBackgroundColor': palette_1.palette.gray.dark4,
|
|
95
|
+
});
|
|
96
|
+
const signalCardTitleStyles = (0, emotion_1.css)({
|
|
97
|
+
marginBottom: tokens_1.spacing[2],
|
|
98
|
+
fontSize: tokens_1.spacing[3],
|
|
99
|
+
});
|
|
100
|
+
const signalCardTitleStylesWithOneSignal = (0, emotion_1.css)({
|
|
101
|
+
paddingRight: CLOSE_BTN_RIGHT,
|
|
102
|
+
});
|
|
103
|
+
const signalCardDescriptionStyles = (0, emotion_1.css)({
|
|
104
|
+
marginBottom: tokens_1.spacing[3],
|
|
105
|
+
});
|
|
106
|
+
const signalCardActionGroupStyles = (0, emotion_1.css)({
|
|
107
|
+
display: 'flex',
|
|
108
|
+
justifyContent: 'space-between',
|
|
109
|
+
});
|
|
110
|
+
const signalCardActionButtonStyles = (0, emotion_1.css)({
|
|
111
|
+
flex: 'none',
|
|
112
|
+
});
|
|
113
|
+
const signalCardLearnMoreLinkStyles = (0, emotion_1.css)({
|
|
114
|
+
flex: 'none',
|
|
115
|
+
});
|
|
116
|
+
const SignalCard = ({ id, title, description, learnMoreLink, learnMoreLabel, primaryActionButtonLabel, primaryActionButtonIcon, primaryActionButtonVariant, primaryActionButtonLink, darkMode: _darkMode, onPrimaryActionButtonClick, hasMultiSignals, }) => {
|
|
117
|
+
const darkMode = (0, use_theme_1.useDarkMode)(_darkMode);
|
|
118
|
+
const hooks = (0, react_1.useContext)(TrackingHooksContext);
|
|
119
|
+
return (react_1.default.createElement("div", { className: (0, emotion_1.cx)(signalCardContentStyles, darkMode && signalCardContentDarkModeStyles), "data-testid": "insight-signal-card", "data-signal-id": id },
|
|
120
|
+
react_1.default.createElement("strong", { className: (0, emotion_1.cx)(signalCardTitleStyles, {
|
|
121
|
+
[signalCardTitleStylesWithOneSignal]: !hasMultiSignals,
|
|
122
|
+
}) }, title),
|
|
123
|
+
react_1.default.createElement(leafygreen_1.Body, { as: "div", baseFontSize: 13, className: signalCardDescriptionStyles }, description),
|
|
124
|
+
react_1.default.createElement("div", { className: signalCardActionGroupStyles },
|
|
125
|
+
primaryActionButtonLabel && (react_1.default.createElement(leafygreen_1.Button, { size: "small", as: primaryActionButtonLink ? 'a' : 'button', target: primaryActionButtonLink ? '_blank' : undefined, href: primaryActionButtonLink, "data-testid": "insight-signal-primary-action", variant: primaryActionButtonVariant ?? 'primaryOutline', className: signalCardActionButtonStyles, leftGlyph: primaryActionButtonIcon ? (react_1.default.createElement(leafygreen_1.Icon, { glyph: primaryActionButtonIcon })) : undefined, onClick: (evt) => {
|
|
126
|
+
hooks.onSignalPrimaryActionClick(id);
|
|
127
|
+
onPrimaryActionButtonClick?.(evt);
|
|
128
|
+
} }, primaryActionButtonLabel)),
|
|
129
|
+
react_1.default.createElement(leafygreen_1.Link, { "data-testid": "insight-signal-link", className: signalCardLearnMoreLinkStyles, href: learnMoreLink, target: "_blank", onClick: () => {
|
|
130
|
+
hooks.onSignalLinkClick(id);
|
|
131
|
+
} }, learnMoreLabel ?? 'Learn more'))));
|
|
132
|
+
};
|
|
133
|
+
const multiSignalHeaderContainerStyles = (0, emotion_1.css)({
|
|
134
|
+
'--multiSignalHeaderBorderColor': palette_1.palette.gray.light2,
|
|
135
|
+
'--multiSignalHeaderBackgroundColor': palette_1.palette.gray.light3,
|
|
136
|
+
display: 'flex',
|
|
137
|
+
alignItems: 'center',
|
|
138
|
+
paddingTop: tokens_1.spacing[1],
|
|
139
|
+
paddingBottom: tokens_1.spacing[1],
|
|
140
|
+
paddingLeft: tokens_1.spacing[2],
|
|
141
|
+
paddingRight: tokens_1.spacing[4],
|
|
142
|
+
gap: tokens_1.spacing[1],
|
|
143
|
+
backgroundColor: 'var(--multiSignalHeaderBackgroundColor)',
|
|
144
|
+
boxShadow: `inset 0 -1px 0 var(--multiSignalHeaderBorderColor)`,
|
|
145
|
+
fontVariantNumeric: 'tabular-nums',
|
|
146
|
+
});
|
|
147
|
+
const multiSignalHeaderContainerDarkModeStyles = (0, emotion_1.css)({
|
|
148
|
+
'--multiSignalHeaderBorderColor': palette_1.palette.gray.dark2,
|
|
149
|
+
'--multiSignalHeaderBackgroundColor': palette_1.palette.gray.dark3,
|
|
150
|
+
});
|
|
151
|
+
const MultiSignalHeader = ({ currentIndex, total, onIndexChange, darkMode: _darkMode }) => {
|
|
152
|
+
const darkMode = (0, use_theme_1.useDarkMode)(_darkMode);
|
|
153
|
+
return (react_1.default.createElement("div", { className: (0, emotion_1.cx)(multiSignalHeaderContainerStyles, darkMode && multiSignalHeaderContainerDarkModeStyles) },
|
|
154
|
+
react_1.default.createElement(leafygreen_1.IconButton, { "data-testid": "insight-signal-show-prev-button", "aria-label": "Show previous insight", title: "Show previous insight", onClick: (e) => {
|
|
155
|
+
e.stopPropagation();
|
|
156
|
+
onIndexChange(currentIndex - 1);
|
|
157
|
+
}, disabled: currentIndex === 0 },
|
|
158
|
+
react_1.default.createElement(leafygreen_1.Icon, { glyph: "ChevronLeft" })),
|
|
159
|
+
react_1.default.createElement("span", null,
|
|
160
|
+
"Insight ",
|
|
161
|
+
react_1.default.createElement("strong", null, currentIndex + 1),
|
|
162
|
+
" of ",
|
|
163
|
+
react_1.default.createElement("strong", null, total)),
|
|
164
|
+
react_1.default.createElement(leafygreen_1.IconButton, { "data-testid": "insight-signal-show-next-button", "aria-label": "Show next insight", title: "Show next insight", onClick: (e) => {
|
|
165
|
+
e.stopPropagation();
|
|
166
|
+
onIndexChange(currentIndex + 1);
|
|
167
|
+
}, disabled: currentIndex === total - 1 },
|
|
168
|
+
react_1.default.createElement(leafygreen_1.Icon, { glyph: "ChevronRight" }))));
|
|
169
|
+
};
|
|
170
|
+
const popoverStyles = (0, emotion_1.css)({
|
|
171
|
+
width: 315,
|
|
172
|
+
});
|
|
173
|
+
const popoverHiddenStyles = (0, emotion_1.css)({
|
|
174
|
+
display: 'none !important',
|
|
175
|
+
opacity: '0 !important',
|
|
176
|
+
transition: 'none !important',
|
|
177
|
+
});
|
|
178
|
+
const popoverContentContainerStyles = (0, emotion_1.css)({
|
|
179
|
+
display: 'block',
|
|
180
|
+
});
|
|
181
|
+
const transitionStyles = (0, emotion_1.css)({
|
|
182
|
+
transitionProperty: 'opacity, width, border-radius, color, box-shadow, background-color',
|
|
183
|
+
transitionTimingFunction: 'linear',
|
|
184
|
+
transitionDuration: `${TRANSITION_DURATION_MS}ms`,
|
|
185
|
+
});
|
|
186
|
+
const badgeStyles = (0, emotion_1.css)({
|
|
187
|
+
padding: 0,
|
|
188
|
+
border: 'none',
|
|
189
|
+
background: 'none',
|
|
190
|
+
}, {
|
|
191
|
+
position: 'relative',
|
|
192
|
+
display: 'block',
|
|
193
|
+
width: 18,
|
|
194
|
+
height: 18,
|
|
195
|
+
color: 'var(--badgeColor)',
|
|
196
|
+
backgroundColor: 'var(--badgeBackgroundColor)',
|
|
197
|
+
boxShadow: `inset 0 0 0 1px var(--badgeBorderColor)`,
|
|
198
|
+
borderRadius: '9px',
|
|
199
|
+
fontSize: '12px',
|
|
200
|
+
lineHeight: '14px',
|
|
201
|
+
fontWeight: 700,
|
|
202
|
+
overflow: 'hidden',
|
|
203
|
+
cursor: 'pointer',
|
|
204
|
+
}, transitionStyles);
|
|
205
|
+
const badgeLightModeStyles = (0, emotion_1.css)({
|
|
206
|
+
'--badgeBackgroundColor': palette_1.palette.blue.light3,
|
|
207
|
+
'--badgeBorderColor': palette_1.palette.blue.light2,
|
|
208
|
+
'--badgeColor': palette_1.palette.blue.dark1,
|
|
209
|
+
});
|
|
210
|
+
const badgeDarkModeStyles = (0, emotion_1.css)({
|
|
211
|
+
'--badgeBackgroundColor': palette_1.palette.blue.dark2,
|
|
212
|
+
'--badgeBorderColor': palette_1.palette.blue.dark1,
|
|
213
|
+
'--badgeColor': palette_1.palette.blue.light2,
|
|
214
|
+
});
|
|
215
|
+
const badgeHoveredStyles = (0, emotion_1.css)({
|
|
216
|
+
borderRadius: 5,
|
|
217
|
+
});
|
|
218
|
+
const badgeHoveredLightModeStyles = (0, emotion_1.css)({
|
|
219
|
+
'--badgeBackgroundColor': palette_1.palette.blue.light1,
|
|
220
|
+
'--badgeBorderColor': palette_1.palette.blue.dark1,
|
|
221
|
+
'--badgeColor': palette_1.palette.white,
|
|
222
|
+
borderRadius: 5,
|
|
223
|
+
});
|
|
224
|
+
const badgeHoveredDarkModeStyles = (0, emotion_1.css)({
|
|
225
|
+
'--badgeBackgroundColor': palette_1.palette.blue.dark1,
|
|
226
|
+
'--badgeBorderColor': palette_1.palette.blue.base,
|
|
227
|
+
'--badgeColor': palette_1.palette.blue.light3,
|
|
228
|
+
});
|
|
229
|
+
const badgeIconStyles = (0, emotion_1.css)({});
|
|
230
|
+
const badgeIconCollapsedStyles = (0, emotion_1.css)({
|
|
231
|
+
position: 'absolute',
|
|
232
|
+
top: 2,
|
|
233
|
+
left: 2,
|
|
234
|
+
}, transitionStyles);
|
|
235
|
+
const badgeLabelStyles = (0, emotion_1.css)({
|
|
236
|
+
position: 'absolute',
|
|
237
|
+
display: 'flex',
|
|
238
|
+
alignItems: 'center',
|
|
239
|
+
justifyContent: 'center',
|
|
240
|
+
textTransform: 'uppercase',
|
|
241
|
+
top: 2,
|
|
242
|
+
}, transitionStyles);
|
|
243
|
+
const singleInsightBadge = (0, emotion_1.css)({
|
|
244
|
+
justifyContent: 'flex-start',
|
|
245
|
+
paddingLeft: 2,
|
|
246
|
+
});
|
|
247
|
+
const closeButtonStyles = (0, emotion_1.css)({
|
|
248
|
+
top: CLOSE_BTN_TOP,
|
|
249
|
+
right: CLOSE_BTN_RIGHT,
|
|
250
|
+
});
|
|
251
|
+
const closeButtonMultiSignalStyles = (0, emotion_1.css)({
|
|
252
|
+
top: CLOSE_BTN_TOP_WITH_MULTI_SIGNALS,
|
|
253
|
+
right: CLOSE_BTN_RIGHT_WITH_MULTI_SIGNALS,
|
|
254
|
+
});
|
|
255
|
+
const SignalPopover = ({ signals: _signals, darkMode: _darkMode, onPopoverOpenChange: _onPopoverOpenChange, className, }) => {
|
|
256
|
+
const hooks = (0, react_1.useContext)(TrackingHooksContext);
|
|
257
|
+
const darkMode = (0, use_theme_1.useDarkMode)(_darkMode);
|
|
258
|
+
const [triggerVisible, setTriggerVisible] = (0, react_1.useState)(true);
|
|
259
|
+
const [popoverOpen, setPopoverOpen] = (0, react_1.useState)(false);
|
|
260
|
+
const [hoverProps, isHovered, setHovered] = (0, use_focus_hover_1.useHoverState)();
|
|
261
|
+
const [currentSignalIndex, setCurrentSignalIndex] = (0, react_1.useState)(0);
|
|
262
|
+
const signals = Array.isArray(_signals) ? _signals : [_signals];
|
|
263
|
+
const currentSignal = signals[currentSignalIndex];
|
|
264
|
+
const multiSignals = signals.length > 1;
|
|
265
|
+
const isActive = isHovered || popoverOpen;
|
|
266
|
+
const triggerRef = (0, react_1.useRef)(null);
|
|
267
|
+
const mountedSignalsRef = (0, react_1.useRef)(new Set());
|
|
268
|
+
signals.forEach(({ id }) => {
|
|
269
|
+
if (!mountedSignalsRef.current.has(id)) {
|
|
270
|
+
hooks.onSignalMount(id);
|
|
271
|
+
mountedSignalsRef.current.add(id);
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
(0, use_effect_on_change_1.useEffectOnChange)(() => {
|
|
275
|
+
if (popoverOpen) {
|
|
276
|
+
hooks.onSignalOpen(currentSignal.id);
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
hooks.onSignalClose(currentSignal.id);
|
|
280
|
+
}
|
|
281
|
+
}, [currentSignal.id, popoverOpen]);
|
|
282
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
283
|
+
if (!triggerRef.current) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
const observer = new IntersectionObserver((entries) => {
|
|
287
|
+
const isVisible = entries[0].isIntersecting;
|
|
288
|
+
setTriggerVisible(isVisible);
|
|
289
|
+
if (!isVisible) {
|
|
290
|
+
setPopoverOpen(false);
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
observer.observe(triggerRef.current);
|
|
294
|
+
return observer.disconnect.bind(observer);
|
|
295
|
+
}, []);
|
|
296
|
+
const onPopoverOpenChange = (0, react_1.useCallback)((newStatus) => {
|
|
297
|
+
setPopoverOpen(newStatus);
|
|
298
|
+
_onPopoverOpenChange?.(newStatus);
|
|
299
|
+
if (newStatus === true) {
|
|
300
|
+
setCurrentSignalIndex(0);
|
|
301
|
+
}
|
|
302
|
+
}, [_onPopoverOpenChange]);
|
|
303
|
+
const badgeLabel = multiSignals ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
304
|
+
signals.length,
|
|
305
|
+
"\u00A0insights")) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
306
|
+
react_1.default.createElement(leafygreen_1.Icon, { glyph: "Bulb", size: "small" }),
|
|
307
|
+
"\u00A0insight"));
|
|
308
|
+
const activeBadgeWidth = multiSignals
|
|
309
|
+
?
|
|
310
|
+
`${`${signals.length} insights`.length}ch`
|
|
311
|
+
:
|
|
312
|
+
`calc(14px + ${' insight'.length}ch)`;
|
|
313
|
+
return (react_1.default.createElement(interactive_popover_1.InteractivePopover, { className: (0, emotion_1.cx)(popoverStyles, !triggerVisible && popoverHiddenStyles), containerClassName: (0, emotion_1.cx)(popoverContentContainerStyles), closeButtonClassName: multiSignals ? closeButtonMultiSignalStyles : closeButtonStyles, open: popoverOpen, setOpen: onPopoverOpenChange, spacing: tokens_1.spacing[2], trigger: ({ children, ...triggerProps }) => {
|
|
314
|
+
const onTriggerClick = (evt) => {
|
|
315
|
+
evt.stopPropagation();
|
|
316
|
+
triggerProps.onClick(evt);
|
|
317
|
+
};
|
|
318
|
+
return (react_1.default.createElement(guide_cue_1.GuideCue, { cueId: "insights", title: "Introducing insights", description: "Across Compass, you may now see icons like this to clue you in on potential areas of improvement for your data.", buttonText: "See insights in action", onPrimaryButtonClick: () => {
|
|
319
|
+
setHovered(true);
|
|
320
|
+
setTimeout(() => {
|
|
321
|
+
(0, rafraf_1.rafraf)(() => {
|
|
322
|
+
triggerRef.current?.click();
|
|
323
|
+
});
|
|
324
|
+
}, TRANSITION_DURATION_MS);
|
|
325
|
+
}, trigger: ({ ref: guideCueRef }) => {
|
|
326
|
+
const props = (0, merge_props_1.mergeProps)(hoverProps, triggerProps, {
|
|
327
|
+
className: (0, emotion_1.cx)(badgeStyles, isActive && badgeHoveredStyles, ...(darkMode
|
|
328
|
+
? [
|
|
329
|
+
badgeDarkModeStyles,
|
|
330
|
+
isActive && badgeHoveredDarkModeStyles,
|
|
331
|
+
]
|
|
332
|
+
: [
|
|
333
|
+
badgeLightModeStyles,
|
|
334
|
+
isActive && badgeHoveredLightModeStyles,
|
|
335
|
+
]), className),
|
|
336
|
+
style: { width: isActive ? activeBadgeWidth : 18 },
|
|
337
|
+
ref: triggerRef,
|
|
338
|
+
}, { ref: guideCueRef });
|
|
339
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
340
|
+
react_1.default.createElement("button", { ...props, onClick: onTriggerClick, "data-testid": "insight-badge-button", type: "button" },
|
|
341
|
+
react_1.default.createElement(leafygreen_1.Icon, { glyph: "Bulb", size: "small", className: (0, emotion_1.cx)(badgeIconStyles, badgeIconCollapsedStyles), style: { opacity: isActive ? 0 : 1 } }),
|
|
342
|
+
react_1.default.createElement("strong", { className: (0, emotion_1.cx)(badgeLabelStyles, !multiSignals && singleInsightBadge), style: {
|
|
343
|
+
width: activeBadgeWidth,
|
|
344
|
+
opacity: isActive ? 1 : 0,
|
|
345
|
+
} }, badgeLabel)),
|
|
346
|
+
children));
|
|
347
|
+
} }));
|
|
348
|
+
} },
|
|
349
|
+
react_1.default.createElement("div", { onMouseDown: (event) => {
|
|
350
|
+
event.stopPropagation();
|
|
351
|
+
} },
|
|
352
|
+
multiSignals && (react_1.default.createElement(MultiSignalHeader, { currentIndex: currentSignalIndex, total: signals.length, onIndexChange: setCurrentSignalIndex, darkMode: darkMode })),
|
|
353
|
+
react_1.default.createElement(SignalCard, { ...currentSignal, darkMode: darkMode, hasMultiSignals: multiSignals }))));
|
|
354
|
+
};
|
|
355
|
+
exports.SignalPopover = SignalPopover;
|
|
356
|
+
//# sourceMappingURL=signal-popover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-popover.js","sourceRoot":"","sources":["../../src/components/signal-popover.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { Signal } from './signal-popover';
|
|
3
|
+
declare const SIGNALS: readonly [{
|
|
4
|
+
readonly id: "aggregation-executed-without-index";
|
|
5
|
+
readonly title: "Aggregation executed without index";
|
|
6
|
+
readonly description: JSX.Element;
|
|
7
|
+
readonly learnMoreLink: "https://www.mongodb.com/docs/v6.0/core/data-model-operations/#indexes";
|
|
8
|
+
readonly primaryActionButtonLabel: "Create index";
|
|
9
|
+
readonly primaryActionButtonIcon: "Plus";
|
|
10
|
+
}, {
|
|
11
|
+
readonly id: "atlas-text-regex-usage-in-view";
|
|
12
|
+
readonly title: "Alternate text search options available";
|
|
13
|
+
readonly description: "In many cases, Atlas Search is MongoDB's most efficient full text search option. Convert your view’s query to $search for a wider range of functionality.";
|
|
14
|
+
readonly learnMoreLink: "https://www.mongodb.com/docs/atlas/atlas-search/best-practices/";
|
|
15
|
+
readonly primaryActionButtonLink: "https://www.mongodb.com/cloud/atlas/lp/search-1";
|
|
16
|
+
readonly primaryActionButtonLabel: "Try Atlas Search";
|
|
17
|
+
}, {
|
|
18
|
+
readonly id: "non-atlas-text-regex-usage-in-view";
|
|
19
|
+
readonly title: "Alternate text search options available";
|
|
20
|
+
readonly description: "In many cases, Atlas Search is MongoDB's most efficient full text search option. Connect with Atlas to explore the power of Atlas Search.";
|
|
21
|
+
readonly learnMoreLink: "https://www.mongodb.com/docs/atlas/atlas-search/best-practices/";
|
|
22
|
+
readonly primaryActionButtonLink: "https://www.mongodb.com/cloud/atlas/lp/search-1";
|
|
23
|
+
readonly primaryActionButtonLabel: "Try Atlas Search";
|
|
24
|
+
}, {
|
|
25
|
+
readonly id: "lookup-in-view";
|
|
26
|
+
readonly title: "$lookup usage";
|
|
27
|
+
readonly description: "$lookup operations can be resource-intensive because they perform operations on two collections instead of one. In certain situations, embedding documents or arrays can enhance read performance.";
|
|
28
|
+
readonly learnMoreLink: "https://www.mongodb.com/docs/atlas/schema-suggestions/reduce-lookup-operations/#std-label-anti-pattern-denormalization";
|
|
29
|
+
}, {
|
|
30
|
+
readonly id: "atlas-text-regex-usage-in-stage";
|
|
31
|
+
readonly title: "Alternate text search options available";
|
|
32
|
+
readonly description: "In many cases, Atlas Search is MongoDB's most efficient full text search option. Convert your query to $search for a wider range of functionality.";
|
|
33
|
+
readonly learnMoreLink: "https://www.mongodb.com/docs/atlas/atlas-search/best-practices/";
|
|
34
|
+
readonly primaryActionButtonLink: "https://www.mongodb.com/cloud/atlas/lp/search-1";
|
|
35
|
+
readonly primaryActionButtonLabel: "Try Atlas Search";
|
|
36
|
+
}, {
|
|
37
|
+
readonly id: "non-atlas-text-regex-usage-in-stage";
|
|
38
|
+
readonly title: "Alternate text search options available";
|
|
39
|
+
readonly description: "In many cases, Atlas Search is MongoDB's most efficient full text search option. Connect with Atlas to explore the power of Atlas Search.";
|
|
40
|
+
readonly learnMoreLink: "https://www.mongodb.com/docs/atlas/atlas-search/best-practices/";
|
|
41
|
+
readonly primaryActionButtonLink: "https://www.mongodb.com/cloud/atlas/lp/search-1";
|
|
42
|
+
readonly primaryActionButtonLabel: "Try Atlas Search";
|
|
43
|
+
}, {
|
|
44
|
+
readonly id: "lookup-in-stage";
|
|
45
|
+
readonly title: "$lookup usage";
|
|
46
|
+
readonly description: "$lookup operations can be resource-intensive because they perform operations on two collections instead of one. In certain situations, embedding documents or arrays can enhance read performance.";
|
|
47
|
+
readonly learnMoreLink: "https://www.mongodb.com/docs/atlas/schema-suggestions/reduce-lookup-operations/#std-label-anti-pattern-denormalization";
|
|
48
|
+
}, {
|
|
49
|
+
readonly id: "query-executed-without-index";
|
|
50
|
+
readonly title: "Query executed without index";
|
|
51
|
+
readonly description: JSX.Element;
|
|
52
|
+
readonly learnMoreLink: "https://www.mongodb.com/docs/v6.0/core/data-model-operations/#indexes";
|
|
53
|
+
readonly primaryActionButtonLabel: "Create index";
|
|
54
|
+
readonly primaryActionButtonIcon: "Plus";
|
|
55
|
+
}, {
|
|
56
|
+
readonly id: "bloated-document";
|
|
57
|
+
readonly title: "Possibly bloated document";
|
|
58
|
+
readonly description: "Large documents can slow down queries by decreasing the number of documents that can be stored in RAM. Consider breaking up your data into more collections with smaller documents, and using references to consolidate the data you need.";
|
|
59
|
+
readonly learnMoreLink: "https://www.mongodb.com/docs/atlas/schema-suggestions/reduce-document-size/";
|
|
60
|
+
}, {
|
|
61
|
+
readonly id: "explain-plan-without-index";
|
|
62
|
+
readonly title: "Query executed without index";
|
|
63
|
+
readonly description: JSX.Element;
|
|
64
|
+
readonly learnMoreLink: "https://www.mongodb.com/docs/v6.0/core/data-model-operations/#indexes";
|
|
65
|
+
readonly primaryActionButtonLabel: "Create index";
|
|
66
|
+
readonly primaryActionButtonIcon: "Plus";
|
|
67
|
+
}, {
|
|
68
|
+
readonly id: "too-many-indexes";
|
|
69
|
+
readonly title: "High number of indexes on collection";
|
|
70
|
+
readonly description: "Consider reviewing your indexes to remove any that are unnecessary. Learn more about this anti-pattern";
|
|
71
|
+
readonly learnMoreLink: "https://www.mongodb.com/docs/manual/core/data-model-operations/#indexes";
|
|
72
|
+
}, {
|
|
73
|
+
readonly id: "too-many-collections";
|
|
74
|
+
readonly title: "Databases with too many collections";
|
|
75
|
+
readonly description: "An excessive number of collections and their associated indexes can drain resources and impact your database's performance. In general, try to limit your replica set to 10,000 collections.";
|
|
76
|
+
readonly learnMoreLink: "https://www.mongodb.com/docs/v6.0/core/data-model-operations/#large-number-of-collections";
|
|
77
|
+
}, {
|
|
78
|
+
readonly id: "unbound-array";
|
|
79
|
+
readonly title: "Large array detected";
|
|
80
|
+
readonly description: "As arrays get larger, queries and indexes on that array field become less efficient. Ensure your arrays are bounded to maintain optimal query performance.";
|
|
81
|
+
readonly learnMoreLink: "https://www.mongodb.com/docs/atlas/schema-suggestions/avoid-unbounded-arrays/";
|
|
82
|
+
}];
|
|
83
|
+
export declare const PerformanceSignals: {
|
|
84
|
+
get(key: (typeof SIGNALS)[number]['id']): Pick<Signal, keyof (typeof SIGNALS)[number]>;
|
|
85
|
+
};
|
|
86
|
+
export {};
|
|
87
|
+
//# sourceMappingURL=signals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/components/signals.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsIH,CAAC;AAEX,eAAO,MAAM,kBAAkB;aAMtB,CAAA,cAAc,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAChC,KAAK,MAAM,EAAE,MAAM,CAAA,cAAc,EAAC,MAAM,CAAC,CAAC;CAC9C,CAAC"}
|