@mongodb-js/compass-components 1.67.1 → 1.69.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/dist/components/accordion.js +0 -1
- package/dist/components/actions/action-glyph.js +0 -1
- package/dist/components/actions/constants.js +0 -1
- package/dist/components/actions/dropdown-menu-button.js +0 -1
- package/dist/components/actions/item-action-button.js +0 -1
- package/dist/components/actions/item-action-controls.js +0 -1
- package/dist/components/actions/item-action-group.js +0 -1
- package/dist/components/actions/item-action-menu.js +0 -1
- package/dist/components/actions/small-icon-button.js +0 -1
- package/dist/components/actions/types.js +0 -1
- package/dist/components/actions/utils.js +0 -1
- package/dist/components/breadcrumb.js +0 -1
- package/dist/components/bson-value.d.ts +23 -12
- package/dist/components/bson-value.d.ts.map +1 -1
- package/dist/components/bson-value.js +53 -65
- package/dist/components/chevron-collapse-icon.js +0 -1
- package/dist/components/collapsible-field-set.js +1 -4
- package/dist/components/combobox-with-custom-option.js +0 -1
- package/dist/components/compass-components-provider.d.ts +6 -8
- package/dist/components/compass-components-provider.d.ts.map +1 -1
- package/dist/components/compass-components-provider.js +5 -6
- package/dist/components/context-menu.d.ts +1 -2
- package/dist/components/context-menu.d.ts.map +1 -1
- package/dist/components/context-menu.js +5 -3
- package/dist/components/document-list/auto-focus-context.js +0 -1
- package/dist/components/document-list/bson-display-options-context.d.ts +13 -0
- package/dist/components/document-list/bson-display-options-context.d.ts.map +1 -0
- package/dist/components/document-list/bson-display-options-context.js +56 -0
- package/dist/components/document-list/bson-utils.d.ts +10 -0
- package/dist/components/document-list/bson-utils.d.ts.map +1 -0
- package/dist/components/document-list/bson-utils.js +63 -0
- package/dist/components/document-list/date-time-picker.d.ts +6 -0
- package/dist/components/document-list/date-time-picker.d.ts.map +1 -0
- package/dist/components/document-list/date-time-picker.js +112 -0
- package/dist/components/document-list/date-with-timezone-hint.d.ts +11 -0
- package/dist/components/document-list/date-with-timezone-hint.d.ts.map +1 -0
- package/dist/components/document-list/date-with-timezone-hint.js +95 -0
- package/dist/components/document-list/document-actions-group.js +0 -1
- package/dist/components/document-list/document-edit-actions-footer.d.ts +1 -0
- package/dist/components/document-list/document-edit-actions-footer.d.ts.map +1 -1
- package/dist/components/document-list/document-edit-actions-footer.js +2 -6
- package/dist/components/document-list/document.d.ts.map +1 -1
- package/dist/components/document-list/document.js +8 -1
- package/dist/components/document-list/editors/date-editor.d.ts +4 -0
- package/dist/components/document-list/editors/date-editor.d.ts.map +1 -0
- package/dist/components/document-list/editors/date-editor.js +135 -0
- package/dist/components/document-list/editors/default-editor.d.ts +4 -0
- package/dist/components/document-list/editors/default-editor.d.ts.map +1 -0
- package/dist/components/document-list/editors/default-editor.js +46 -0
- package/dist/components/document-list/editors/editor-with-label.d.ts +7 -0
- package/dist/components/document-list/editors/editor-with-label.d.ts.map +1 -0
- package/dist/components/document-list/editors/editor-with-label.js +28 -0
- package/dist/components/document-list/editors/input-editor.d.ts +4 -0
- package/dist/components/document-list/editors/input-editor.d.ts.map +1 -0
- package/dist/components/document-list/editors/input-editor.js +24 -0
- package/dist/components/document-list/editors/shared.d.ts +16 -0
- package/dist/components/document-list/editors/shared.d.ts.map +1 -0
- package/dist/components/document-list/editors/shared.js +34 -0
- package/dist/components/document-list/editors/text-editor.d.ts +4 -0
- package/dist/components/document-list/editors/text-editor.d.ts.map +1 -0
- package/dist/components/document-list/editors/text-editor.js +85 -0
- package/dist/components/document-list/editors/uuid-editor.d.ts +4 -0
- package/dist/components/document-list/editors/uuid-editor.d.ts.map +1 -0
- package/dist/components/document-list/editors/uuid-editor.js +54 -0
- package/dist/components/document-list/element-actions.d.ts.map +1 -1
- package/dist/components/document-list/element-actions.js +11 -11
- package/dist/components/document-list/element-editors.d.ts +1 -1
- package/dist/components/document-list/element-editors.d.ts.map +1 -1
- package/dist/components/document-list/element-editors.js +56 -141
- package/dist/components/document-list/element.d.ts.map +1 -1
- package/dist/components/document-list/element.js +104 -41
- package/dist/components/document-list/index.d.ts +1 -1
- package/dist/components/document-list/index.d.ts.map +1 -1
- package/dist/components/document-list/index.js +4 -4
- package/dist/components/document-list/typography.js +0 -1
- package/dist/components/document-list/use-force-update.js +0 -1
- package/dist/components/document-list/visible-field-toggle.d.ts.map +1 -1
- package/dist/components/document-list/visible-field-toggle.js +2 -1
- package/dist/components/drawer-portal.d.ts +4 -2
- package/dist/components/drawer-portal.d.ts.map +1 -1
- package/dist/components/drawer-portal.js +0 -1
- package/dist/components/empty-content.js +0 -1
- package/dist/components/error-boundary.d.ts +1 -0
- package/dist/components/error-boundary.d.ts.map +1 -1
- package/dist/components/error-boundary.js +0 -1
- package/dist/components/error-warning-summary.js +0 -1
- package/dist/components/feedback-popover.js +0 -1
- package/dist/components/file-picker-dialog.d.ts +1 -0
- package/dist/components/file-picker-dialog.d.ts.map +1 -1
- package/dist/components/file-picker-dialog.js +0 -1
- package/dist/components/file-selector.js +0 -1
- package/dist/components/form-field-container.js +0 -1
- package/dist/components/guide-cue/guide-cue-exceptions.js +0 -1
- package/dist/components/guide-cue/guide-cue-groups.js +0 -1
- package/dist/components/guide-cue/guide-cue-service.js +0 -1
- package/dist/components/guide-cue/guide-cue-storage.js +0 -1
- package/dist/components/guide-cue/guide-cue.d.ts +2 -1
- package/dist/components/guide-cue/guide-cue.d.ts.map +1 -1
- package/dist/components/guide-cue/guide-cue.js +10 -1
- package/dist/components/horizontal-rule.js +0 -1
- package/dist/components/icons/document-icon.js +0 -1
- package/dist/components/icons/favorite-icon.js +0 -1
- package/dist/components/icons/logo-icon.js +0 -1
- package/dist/components/icons/no-saved-items-icon.js +0 -1
- package/dist/components/icons/png-icon.js +0 -1
- package/dist/components/icons/server-icon.js +0 -1
- package/dist/components/index-icon.js +0 -1
- package/dist/components/index-keys-badge.js +0 -1
- package/dist/components/inline-definition.js +2 -3
- package/dist/components/inline-info-link.js +0 -1
- package/dist/components/insights-chip.js +0 -1
- package/dist/components/interactive-popover.js +0 -1
- package/dist/components/keyline-card.js +0 -1
- package/dist/components/leafygreen.d.ts +1 -35
- package/dist/components/leafygreen.d.ts.map +1 -1
- package/dist/components/leafygreen.js +0 -1
- package/dist/components/links/link.d.ts +1 -1
- package/dist/components/links/link.d.ts.map +1 -1
- package/dist/components/links/link.js +0 -1
- package/dist/components/list-editor.js +0 -1
- package/dist/components/loader.js +0 -1
- package/dist/components/modals/confirmation-modal.js +0 -1
- package/dist/components/modals/form-modal.d.ts +2 -1
- package/dist/components/modals/form-modal.d.ts.map +1 -1
- package/dist/components/modals/form-modal.js +2 -3
- package/dist/components/modals/info-modal.js +0 -1
- package/dist/components/modals/marketing-modal.js +0 -1
- package/dist/components/modals/modal-body.d.ts.map +1 -1
- package/dist/components/modals/modal-body.js +7 -1
- package/dist/components/modals/modal-header.js +0 -1
- package/dist/components/modals/modal.js +0 -1
- package/dist/components/options-toggle.js +0 -1
- package/dist/components/placeholder.js +0 -1
- package/dist/components/radio-box-group.js +0 -1
- package/dist/components/resize-handle.d.ts.map +1 -1
- package/dist/components/resize-handle.js +5 -9
- package/dist/components/resizeable-sidebar.js +0 -1
- package/dist/components/select-list.d.ts.map +1 -1
- package/dist/components/select-list.js +2 -3
- package/dist/components/signal-popover.d.ts +1 -1
- package/dist/components/signal-popover.d.ts.map +1 -1
- package/dist/components/signal-popover.js +2 -4
- package/dist/components/signals.js +0 -1
- package/dist/components/tab-nav-bar.js +0 -1
- package/dist/components/toast-body.js +0 -1
- package/dist/components/virtual-grid.js +0 -1
- package/dist/components/virtual-list.js +1 -7
- package/dist/components/workspace-container.d.ts +2 -2
- package/dist/components/workspace-container.d.ts.map +1 -1
- package/dist/components/workspace-container.js +0 -1
- package/dist/components/workspace-tabs/tab.js +0 -1
- package/dist/components/workspace-tabs/use-tab-theme.js +0 -1
- package/dist/components/workspace-tabs/workspace-tabs.d.ts.map +1 -1
- package/dist/components/workspace-tabs/workspace-tabs.js +1 -2
- package/dist/force-emotion-speedy.js +0 -1
- package/dist/hooks/use-confirmation.d.ts +3 -1
- package/dist/hooks/use-confirmation.d.ts.map +1 -1
- package/dist/hooks/use-confirmation.js +2 -3
- package/dist/hooks/use-copy-paste-context-menu.d.ts +1 -1
- package/dist/hooks/use-copy-paste-context-menu.d.ts.map +1 -1
- package/dist/hooks/use-copy-paste-context-menu.js +0 -1
- package/dist/hooks/use-current-value-ref.js +0 -1
- package/dist/hooks/use-default-action.js +0 -1
- package/dist/hooks/use-dom-rect.js +0 -1
- package/dist/hooks/use-effect-on-change.js +0 -1
- package/dist/hooks/use-error-details.js +0 -1
- package/dist/hooks/use-focus-hover.js +0 -1
- package/dist/hooks/use-focus-ring.js +0 -1
- package/dist/hooks/use-formatted-date.js +0 -1
- package/dist/hooks/use-hotkeys.js +0 -1
- package/dist/hooks/use-initial-value.js +0 -1
- package/dist/hooks/use-persisted-state.js +0 -1
- package/dist/hooks/use-scrollbars.js +0 -1
- package/dist/hooks/use-sort.js +0 -1
- package/dist/hooks/use-stacked-component.d.ts.map +1 -1
- package/dist/hooks/use-stacked-component.js +0 -1
- package/dist/hooks/use-sync-state-on-prop-change.js +0 -1
- package/dist/hooks/use-theme.d.ts.map +1 -1
- package/dist/hooks/use-theme.js +0 -1
- package/dist/hooks/use-throttled-props.js +0 -1
- package/dist/hooks/use-toast.d.ts +3 -1
- package/dist/hooks/use-toast.d.ts.map +1 -1
- package/dist/hooks/use-toast.js +0 -1
- package/dist/hooks/use-virtual-grid.js +0 -1
- package/dist/hooks/use-virtual-list-item-observer.js +0 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -5
- package/dist/utils/format-date.d.ts +17 -0
- package/dist/utils/format-date.d.ts.map +1 -1
- package/dist/utils/format-date.js +33 -3
- package/dist/utils/format.js +0 -1
- package/dist/utils/merge-props.js +0 -1
- package/dist/utils/rafraf.js +0 -1
- package/dist/utils/reset-global-css.js +0 -1
- package/package.json +19 -19
- package/dist/components/accordion.js.map +0 -1
- package/dist/components/actions/action-glyph.js.map +0 -1
- package/dist/components/actions/constants.js.map +0 -1
- package/dist/components/actions/dropdown-menu-button.js.map +0 -1
- package/dist/components/actions/item-action-button.js.map +0 -1
- package/dist/components/actions/item-action-controls.js.map +0 -1
- package/dist/components/actions/item-action-group.js.map +0 -1
- package/dist/components/actions/item-action-menu.js.map +0 -1
- package/dist/components/actions/small-icon-button.js.map +0 -1
- package/dist/components/actions/types.js.map +0 -1
- package/dist/components/actions/utils.js.map +0 -1
- package/dist/components/breadcrumb.js.map +0 -1
- package/dist/components/bson-value.js.map +0 -1
- package/dist/components/chevron-collapse-icon.js.map +0 -1
- package/dist/components/collapsible-field-set.js.map +0 -1
- package/dist/components/combobox-with-custom-option.js.map +0 -1
- package/dist/components/compass-components-provider.js.map +0 -1
- package/dist/components/context-menu.js.map +0 -1
- package/dist/components/document-list/auto-focus-context.js.map +0 -1
- package/dist/components/document-list/document-actions-group.js.map +0 -1
- package/dist/components/document-list/document-edit-actions-footer.js.map +0 -1
- package/dist/components/document-list/document.js.map +0 -1
- package/dist/components/document-list/element-actions.js.map +0 -1
- package/dist/components/document-list/element-editors.js.map +0 -1
- package/dist/components/document-list/element.js.map +0 -1
- package/dist/components/document-list/index.js.map +0 -1
- package/dist/components/document-list/legacy-uuid-format-context.d.ts +0 -4
- package/dist/components/document-list/legacy-uuid-format-context.d.ts.map +0 -1
- package/dist/components/document-list/legacy-uuid-format-context.js +0 -10
- package/dist/components/document-list/legacy-uuid-format-context.js.map +0 -1
- package/dist/components/document-list/typography.js.map +0 -1
- package/dist/components/document-list/use-force-update.js.map +0 -1
- package/dist/components/document-list/visible-field-toggle.js.map +0 -1
- package/dist/components/drawer-portal.js.map +0 -1
- package/dist/components/empty-content.js.map +0 -1
- package/dist/components/error-boundary.js.map +0 -1
- package/dist/components/error-warning-summary.js.map +0 -1
- package/dist/components/feedback-popover.js.map +0 -1
- package/dist/components/file-picker-dialog.js.map +0 -1
- package/dist/components/file-selector.js.map +0 -1
- package/dist/components/form-field-container.js.map +0 -1
- package/dist/components/guide-cue/guide-cue-exceptions.js.map +0 -1
- package/dist/components/guide-cue/guide-cue-groups.js.map +0 -1
- package/dist/components/guide-cue/guide-cue-service.js.map +0 -1
- package/dist/components/guide-cue/guide-cue-storage.js.map +0 -1
- package/dist/components/guide-cue/guide-cue.js.map +0 -1
- package/dist/components/horizontal-rule.js.map +0 -1
- package/dist/components/icons/document-icon.js.map +0 -1
- package/dist/components/icons/favorite-icon.js.map +0 -1
- package/dist/components/icons/logo-icon.js.map +0 -1
- package/dist/components/icons/no-saved-items-icon.js.map +0 -1
- package/dist/components/icons/png-icon.js.map +0 -1
- package/dist/components/icons/server-icon.js.map +0 -1
- package/dist/components/index-icon.js.map +0 -1
- package/dist/components/index-keys-badge.js.map +0 -1
- package/dist/components/inline-definition.js.map +0 -1
- package/dist/components/inline-info-link.js.map +0 -1
- package/dist/components/insights-chip.js.map +0 -1
- package/dist/components/interactive-popover.js.map +0 -1
- package/dist/components/keyline-card.js.map +0 -1
- package/dist/components/leafygreen.js.map +0 -1
- package/dist/components/links/link.js.map +0 -1
- package/dist/components/list-editor.js.map +0 -1
- package/dist/components/loader.js.map +0 -1
- package/dist/components/modals/confirmation-modal.js.map +0 -1
- package/dist/components/modals/form-modal.js.map +0 -1
- package/dist/components/modals/info-modal.js.map +0 -1
- package/dist/components/modals/marketing-modal.js.map +0 -1
- package/dist/components/modals/modal-body.js.map +0 -1
- package/dist/components/modals/modal-header.js.map +0 -1
- package/dist/components/modals/modal.js.map +0 -1
- package/dist/components/options-toggle.js.map +0 -1
- package/dist/components/placeholder.js.map +0 -1
- package/dist/components/radio-box-group.js.map +0 -1
- package/dist/components/resize-handle.js.map +0 -1
- package/dist/components/resizeable-sidebar.js.map +0 -1
- package/dist/components/select-list.js.map +0 -1
- package/dist/components/signal-popover.js.map +0 -1
- package/dist/components/signals.js.map +0 -1
- package/dist/components/tab-nav-bar.js.map +0 -1
- package/dist/components/toast-body.js.map +0 -1
- package/dist/components/virtual-grid.js.map +0 -1
- package/dist/components/virtual-list.js.map +0 -1
- package/dist/components/workspace-container.js.map +0 -1
- package/dist/components/workspace-tabs/tab.js.map +0 -1
- package/dist/components/workspace-tabs/use-tab-theme.js.map +0 -1
- package/dist/components/workspace-tabs/workspace-tabs.js.map +0 -1
- package/dist/force-emotion-speedy.js.map +0 -1
- package/dist/hooks/use-confirmation.js.map +0 -1
- package/dist/hooks/use-copy-paste-context-menu.js.map +0 -1
- package/dist/hooks/use-current-value-ref.js.map +0 -1
- package/dist/hooks/use-default-action.js.map +0 -1
- package/dist/hooks/use-dom-rect.js.map +0 -1
- package/dist/hooks/use-effect-on-change.js.map +0 -1
- package/dist/hooks/use-error-details.js.map +0 -1
- package/dist/hooks/use-focus-hover.js.map +0 -1
- package/dist/hooks/use-focus-ring.js.map +0 -1
- package/dist/hooks/use-formatted-date.js.map +0 -1
- package/dist/hooks/use-hotkeys.js.map +0 -1
- package/dist/hooks/use-initial-value.js.map +0 -1
- package/dist/hooks/use-persisted-state.js.map +0 -1
- package/dist/hooks/use-scrollbars.js.map +0 -1
- package/dist/hooks/use-sort.js.map +0 -1
- package/dist/hooks/use-stacked-component.js.map +0 -1
- package/dist/hooks/use-sync-state-on-prop-change.js.map +0 -1
- package/dist/hooks/use-theme.js.map +0 -1
- package/dist/hooks/use-throttled-props.js.map +0 -1
- package/dist/hooks/use-toast.js.map +0 -1
- package/dist/hooks/use-virtual-grid.js.map +0 -1
- package/dist/hooks/use-virtual-list-item-observer.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/utils/format-date.js.map +0 -1
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/merge-props.js.map +0 -1
- package/dist/utils/rafraf.js.map +0 -1
- package/dist/utils/reset-global-css.js.map +0 -1
|
@@ -32,58 +32,50 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
39
|
exports.TypeEditor = exports.ValueEditor = exports.KeyEditor = void 0;
|
|
37
|
-
const react_1 =
|
|
40
|
+
const react_1 = __importDefault(require("react"));
|
|
38
41
|
const hadron_type_checker_1 = __importStar(require("hadron-type-checker"));
|
|
39
42
|
const emotion_1 = require("@leafygreen-ui/emotion");
|
|
40
43
|
const palette_1 = require("@leafygreen-ui/palette");
|
|
41
44
|
const tokens_1 = require("@leafygreen-ui/tokens");
|
|
42
|
-
const bson_value_1 =
|
|
45
|
+
const bson_value_1 = __importDefault(require("../bson-value"));
|
|
43
46
|
const merge_props_1 = require("../../utils/merge-props");
|
|
44
|
-
const typography_1 = require("./typography");
|
|
45
47
|
const leafygreen_1 = require("../leafygreen");
|
|
46
48
|
const use_theme_1 = require("../../hooks/use-theme");
|
|
49
|
+
const shared_1 = require("./editors/shared");
|
|
50
|
+
const date_editor_1 = require("./editors/date-editor");
|
|
51
|
+
const default_editor_1 = require("./editors/default-editor");
|
|
52
|
+
const text_editor_1 = require("./editors/text-editor");
|
|
53
|
+
const uuid_editor_1 = require("./editors/uuid-editor");
|
|
47
54
|
const maxWidth = (0, emotion_1.css)({
|
|
48
55
|
maxWidth: '100%',
|
|
49
56
|
overflowX: 'hidden',
|
|
50
57
|
textOverflow: 'ellipsis',
|
|
51
58
|
});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
boxShadow: 'none',
|
|
57
|
-
outline: 'none',
|
|
58
|
-
backgroundColor: 'transparent',
|
|
59
|
+
// Sizes the input to its content by overlaying it on a hidden copy of the text,
|
|
60
|
+
// so that the key occupies the same width when viewing and when editing.
|
|
61
|
+
const keyEditorSizer = (0, emotion_1.css)({
|
|
62
|
+
display: 'inline-grid',
|
|
59
63
|
maxWidth: '100%',
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
verticalAlign: 'bottom',
|
|
65
|
+
'&::after': {
|
|
66
|
+
content: 'attr(data-value)',
|
|
67
|
+
visibility: 'hidden',
|
|
68
|
+
whiteSpace: 'pre',
|
|
65
69
|
},
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
'&::after, & > input': {
|
|
71
|
+
gridArea: '1 / 1',
|
|
72
|
+
font: 'inherit',
|
|
73
|
+
width: '100%',
|
|
74
|
+
minWidth: 0,
|
|
70
75
|
},
|
|
71
76
|
});
|
|
72
|
-
const editorInvalidLightMode = (0, emotion_1.css)({
|
|
73
|
-
backgroundColor: palette_1.palette.red.light2,
|
|
74
|
-
color: palette_1.palette.red.dark2,
|
|
75
|
-
});
|
|
76
|
-
const editorInvalidDarkMode = (0, emotion_1.css)({
|
|
77
|
-
backgroundColor: palette_1.palette.red.dark2,
|
|
78
|
-
color: palette_1.palette.red.light2,
|
|
79
|
-
});
|
|
80
77
|
const KeyEditor = ({ editing, value, valid, validationMessage, onChange, autoFocus, onEditStart, }) => {
|
|
81
78
|
const darkMode = (0, use_theme_1.useDarkMode)();
|
|
82
|
-
// On Safari if a text is 5 mono-characters wide and is supposed to overflow /
|
|
83
|
-
// get ellipse'd only when shorter than that, it would still overflow and get
|
|
84
|
-
// ellipse'd under normal conditions, for unknown reasons. For that, we add a
|
|
85
|
-
// small amount to the width to tackle this issue.
|
|
86
|
-
const width = `${Math.max(value.length, 1)}.5ch`;
|
|
87
79
|
return (react_1.default.createElement(react_1.default.Fragment, null, editing ? (react_1.default.createElement(leafygreen_1.Tooltip, { darkMode: true, enabled: !valid, trigger: ({ className, children,
|
|
88
80
|
// Having a tooltip connected to the input elements is not the most
|
|
89
81
|
// accessible thing ever and so a lot of event listeners of the
|
|
@@ -93,124 +85,48 @@ const KeyEditor = ({ editing, value, valid, validationMessage, onChange, autoFoc
|
|
|
93
85
|
// for our case
|
|
94
86
|
onDragStart, onPointerUp, onPointerDown, onMouseDown, ...triggerProps }) => {
|
|
95
87
|
return (react_1.default.createElement("div", { className: className },
|
|
96
|
-
react_1.default.createElement("
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
(
|
|
103
|
-
|
|
104
|
-
|
|
88
|
+
react_1.default.createElement("span", { className: keyEditorSizer, "data-value": value },
|
|
89
|
+
react_1.default.createElement("input", { type: "text", size: 1, "data-testid": "hadron-document-key-editor", value: value, onChange: (evt) => {
|
|
90
|
+
onChange(evt.currentTarget.value);
|
|
91
|
+
},
|
|
92
|
+
// See ./element.tsx
|
|
93
|
+
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
94
|
+
autoFocus: autoFocus, className: (0, emotion_1.cx)(maxWidth, shared_1.editorStyles, !valid && shared_1.editorInvalidStyles, !valid &&
|
|
95
|
+
(darkMode
|
|
96
|
+
? shared_1.editorInvalidDarkModeStyles
|
|
97
|
+
: shared_1.editorInvalidLightModeStyles)), spellCheck: "false", ...triggerProps })),
|
|
105
98
|
children));
|
|
106
|
-
} }, validationMessage)) : (
|
|
107
|
-
// Double-click is not accessible so no reason for this to be a button
|
|
108
|
-
react_1.default.createElement("div", { "data-testid": "hadron-document-clickable-key", onDoubleClick: onEditStart, className: maxWidth, style: { width } }, value))));
|
|
99
|
+
} }, validationMessage)) : (react_1.default.createElement("span", { "data-testid": "hadron-document-clickable-key", onDoubleClick: onEditStart }, value))));
|
|
109
100
|
};
|
|
110
101
|
exports.KeyEditor = KeyEditor;
|
|
111
|
-
const textareaContainer = (0, emotion_1.css)({
|
|
112
|
-
width: '100%',
|
|
113
|
-
maxWidth: '100%',
|
|
114
|
-
'&::before, &::after': {
|
|
115
|
-
content: "'\"'",
|
|
116
|
-
userSelect: 'none',
|
|
117
|
-
},
|
|
118
|
-
});
|
|
119
|
-
const editorTextarea = (0, emotion_1.css)({
|
|
120
|
-
display: 'inline-block',
|
|
121
|
-
whiteSpace: 'nowrap',
|
|
122
|
-
minWidth: '5ch',
|
|
123
|
-
// 2ch for `"` around the textarea
|
|
124
|
-
maxWidth: 'calc(100% - 2ch)',
|
|
125
|
-
verticalAlign: 'top',
|
|
126
|
-
color: 'inherit',
|
|
127
|
-
});
|
|
128
|
-
// UUID editor container that shows: UUID(" <input> ")
|
|
129
|
-
const uuidEditorContainer = (0, emotion_1.css)({
|
|
130
|
-
display: 'inline-flex',
|
|
131
|
-
alignItems: 'center',
|
|
132
|
-
maxWidth: '100%',
|
|
133
|
-
});
|
|
134
|
-
const uuidEditorInput = (0, emotion_1.css)({
|
|
135
|
-
display: 'inline-block',
|
|
136
|
-
whiteSpace: 'nowrap',
|
|
137
|
-
verticalAlign: 'top',
|
|
138
|
-
color: 'inherit',
|
|
139
|
-
});
|
|
140
|
-
const uuidEditorLabel = (0, emotion_1.css)({
|
|
141
|
-
userSelect: 'none',
|
|
142
|
-
whiteSpace: 'nowrap',
|
|
143
|
-
});
|
|
144
102
|
const ValueEditor = ({ editing, onEditStart, type, value, valid, validationMessage, originalValue, autoFocus, onChange, onFocus, onBlur, }) => {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
longestLineCharLength + 1, 70)}ch`;
|
|
160
|
-
const minLines = Math.max(lines.length, longestLineCharLength > 70 ? 2 : 1);
|
|
161
|
-
const maxLines = Math.min(minLines, 10);
|
|
162
|
-
const minHeight = typography_1.documentTypography.lineHeight * Math.min(minLines, maxLines);
|
|
163
|
-
const height = typography_1.documentTypography.lineHeight * maxLines;
|
|
164
|
-
return { width, minHeight, height };
|
|
165
|
-
}
|
|
166
|
-
return { width: `${Math.max(val.length, 1)}ch` };
|
|
167
|
-
}, [val, type]);
|
|
168
|
-
const uuidInputStyle = (0, react_1.useMemo)(() => {
|
|
169
|
-
// UUID format is 36 characters (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
|
|
170
|
-
return { width: `${Math.max(val.length, 36)}ch` };
|
|
171
|
-
}, [val]);
|
|
172
|
-
return (react_1.default.createElement(react_1.default.Fragment, null, editing ? (react_1.default.createElement(leafygreen_1.Tooltip, { darkMode: true, enabled: !valid, trigger: ({ className, children,
|
|
103
|
+
if (!editing) {
|
|
104
|
+
// Double-click is not accessible so no reason for this to be a button,
|
|
105
|
+
// users won't be able to interact with it anyway
|
|
106
|
+
return (react_1.default.createElement("span", { "data-testid": "hadron-document-clickable-value", onDoubleClick: onEditStart },
|
|
107
|
+
react_1.default.createElement(bson_value_1.default, { type: type, value: originalValue })));
|
|
108
|
+
}
|
|
109
|
+
const sharedProps = {
|
|
110
|
+
autoFocus,
|
|
111
|
+
value: String(value),
|
|
112
|
+
valid,
|
|
113
|
+
onChange,
|
|
114
|
+
onBlur,
|
|
115
|
+
};
|
|
116
|
+
return (react_1.default.createElement(leafygreen_1.Tooltip, { darkMode: true, enabled: !valid, trigger: ({ className, children,
|
|
173
117
|
// See above
|
|
174
118
|
onDragStart, onPointerUp, onPointerDown, onMouseDown, ...triggerProps }) => {
|
|
175
119
|
// NB: Order is important, if triggerProps has onFocus / onBlur we
|
|
176
120
|
// want to merge them with ours, if they are not passed, we want our
|
|
177
121
|
// listeners to overwrite undefined keys
|
|
178
|
-
const mergedProps = (0, merge_props_1.mergeProps)(triggerProps, {
|
|
122
|
+
const mergedProps = (0, merge_props_1.mergeProps)(triggerProps, {
|
|
123
|
+
onBlur,
|
|
124
|
+
onFocus,
|
|
125
|
+
});
|
|
179
126
|
return (react_1.default.createElement("div", { className: className },
|
|
180
|
-
type === 'String' ? (react_1.default.createElement(
|
|
181
|
-
react_1.default.createElement("textarea", { "data-testid": "hadron-document-value-editor", value: val, onChange: (evt) => {
|
|
182
|
-
onChange(evt.currentTarget.value);
|
|
183
|
-
},
|
|
184
|
-
// See ./element.tsx
|
|
185
|
-
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
186
|
-
autoFocus: autoFocus, className: (0, emotion_1.cx)(editorReset, editorOutline, editorTextarea, !valid && editorInvalid), spellCheck: "false", style: inputStyle, ...mergedProps }))) : (0, hadron_type_checker_1.isUUIDType)(type) ? (react_1.default.createElement("div", { className: uuidEditorContainer },
|
|
187
|
-
react_1.default.createElement("span", { className: uuidEditorLabel },
|
|
188
|
-
type,
|
|
189
|
-
"('"),
|
|
190
|
-
react_1.default.createElement("input", { type: "text", "data-testid": "hadron-document-value-editor", value: val, placeholder: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", onChange: (evt) => {
|
|
191
|
-
onChange(evt.currentTarget.value);
|
|
192
|
-
},
|
|
193
|
-
// See ./element.tsx
|
|
194
|
-
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
195
|
-
autoFocus: autoFocus, className: (0, emotion_1.cx)(editorReset, editorOutline, uuidEditorInput, !valid && editorInvalid, !valid &&
|
|
196
|
-
(darkMode
|
|
197
|
-
? editorInvalidDarkMode
|
|
198
|
-
: editorInvalidLightMode)), spellCheck: "false", style: uuidInputStyle, ...mergedProps }),
|
|
199
|
-
react_1.default.createElement("span", { className: uuidEditorLabel }, "')"))) : (react_1.default.createElement("input", { type: "text", "data-testid": "hadron-document-value-editor", value: val, onChange: (evt) => {
|
|
200
|
-
onChange(evt.currentTarget.value);
|
|
201
|
-
},
|
|
202
|
-
// See ./element.tsx
|
|
203
|
-
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
204
|
-
autoFocus: autoFocus, className: (0, emotion_1.cx)(editorReset, editorOutline, !valid && editorInvalid, !valid &&
|
|
205
|
-
(darkMode
|
|
206
|
-
? editorInvalidDarkMode
|
|
207
|
-
: editorInvalidLightMode)), style: inputStyle, spellCheck: "false", ...mergedProps })),
|
|
127
|
+
type === 'String' ? (react_1.default.createElement(text_editor_1.TextEditor, { ...mergedProps, ...sharedProps })) : type === 'Date' ? (react_1.default.createElement(date_editor_1.DateEditor, { ...sharedProps, ...mergedProps, type: type })) : (0, hadron_type_checker_1.isUUIDType)(type) ? (react_1.default.createElement(uuid_editor_1.UUIDEditor, { ...sharedProps, ...mergedProps, type: type })) : (react_1.default.createElement(default_editor_1.DefaultEditor, { ...sharedProps, ...mergedProps, type: type })),
|
|
208
128
|
children));
|
|
209
|
-
} }, validationMessage))
|
|
210
|
-
// Double-click is not accessible so no reason for this to be a button,
|
|
211
|
-
// users won't be able to interact with it anyway
|
|
212
|
-
react_1.default.createElement("div", { "data-testid": "hadron-document-clickable-value", onDoubleClick: onEditStart },
|
|
213
|
-
react_1.default.createElement(bson_value_1.default, { type: type, value: originalValue })))));
|
|
129
|
+
} }, validationMessage));
|
|
214
130
|
};
|
|
215
131
|
exports.ValueEditor = ValueEditor;
|
|
216
132
|
const TYPES = hadron_type_checker_1.default.castableTypes(true);
|
|
@@ -257,7 +173,7 @@ const TypeEditor = ({ editing, autoFocus, type, onChange, visuallyActive }) => {
|
|
|
257
173
|
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
258
174
|
autoFocus: autoFocus, onChange: (evt) => {
|
|
259
175
|
onChange(evt.currentTarget.value);
|
|
260
|
-
}, className: (0, emotion_1.cx)(
|
|
176
|
+
}, className: (0, emotion_1.cx)(shared_1.editorStyles, typeEditor, visuallyActive && typeEditorActive), onClick: (e) => {
|
|
261
177
|
e.stopPropagation();
|
|
262
178
|
} }, TYPES.map((type) => {
|
|
263
179
|
return (react_1.default.createElement("option", { key: type, value: type, className: darkMode ? typeEditorOptionDark : typeEditorOptionLight }, type));
|
|
@@ -265,4 +181,3 @@ const TypeEditor = ({ editing, autoFocus, type, onChange, visuallyActive }) => {
|
|
|
265
181
|
react_1.default.createElement(leafygreen_1.Icon, { glyph: "ChevronDown", size: "xsmall", className: typeEditorChevron })))));
|
|
266
182
|
};
|
|
267
183
|
exports.TypeEditor = TypeEditor;
|
|
268
|
-
//# sourceMappingURL=element-editors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../src/components/document-list/element.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAEzE,OAAO,KAAK,EAEV,OAAO,IAAI,iBAAiB,EAC7B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../src/components/document-list/element.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAEzE,OAAO,KAAK,EAEV,OAAO,IAAI,iBAAiB,EAC7B,MAAM,iBAAiB,CAAC;AAiazB,eAAO,MAAM,6BAA6B,GAAI,mEAK3C;IACD,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB,EAAE,OAAO,CAAC;IACnC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,WAeA,CAAC;AAYF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,iBAAiB,KACzB,MAcF,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,iBAAiB,CAAC;IAClD,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAqaA,CAAC"}
|
|
@@ -40,6 +40,7 @@ exports.HadronElement = exports.getNestedKeyPathForElement = exports.calculateSh
|
|
|
40
40
|
const react_1 = __importStar(require("react"));
|
|
41
41
|
const hadron_document_1 = require("hadron-document");
|
|
42
42
|
const bson_value_1 = __importDefault(require("../bson-value"));
|
|
43
|
+
const bson_utils_1 = require("./bson-utils");
|
|
43
44
|
const tokens_1 = require("@leafygreen-ui/tokens");
|
|
44
45
|
const element_editors_1 = require("./element-editors");
|
|
45
46
|
const element_actions_1 = require("./element-actions");
|
|
@@ -53,7 +54,7 @@ const visible_field_toggle_1 = __importDefault(require("./visible-field-toggle")
|
|
|
53
54
|
const mongodb_query_util_1 = require("mongodb-query-util");
|
|
54
55
|
const context_menu_1 = require("../context-menu");
|
|
55
56
|
const use_sync_state_on_prop_change_1 = require("../../hooks/use-sync-state-on-prop-change");
|
|
56
|
-
const
|
|
57
|
+
const bson_display_options_context_1 = require("./bson-display-options-context");
|
|
57
58
|
function useElementEditor(el, displayType) {
|
|
58
59
|
return (0, react_1.useMemo)(() => {
|
|
59
60
|
const Editor = (0, hadron_document_1.getEditorByType)(displayType);
|
|
@@ -62,8 +63,8 @@ function useElementEditor(el, displayType) {
|
|
|
62
63
|
}
|
|
63
64
|
function useHadronElement(el) {
|
|
64
65
|
const forceUpdate = (0, use_force_update_1.useForceUpdate)();
|
|
65
|
-
const
|
|
66
|
-
const displayType = (0, hadron_document_1.getDisplayType)(el,
|
|
66
|
+
const { legacyUUIDDisplayEncoding } = (0, bson_display_options_context_1.useBSONDisplayOptions)();
|
|
67
|
+
const displayType = (0, hadron_document_1.getDisplayType)(el, legacyUUIDDisplayEncoding);
|
|
67
68
|
const editor = useElementEditor(el, displayType);
|
|
68
69
|
// NB: Duplicate key state is kept local to the component and not derived on
|
|
69
70
|
// every change so that only the changed key is highlighed as duplicate
|
|
@@ -114,6 +115,14 @@ function useHadronElement(el) {
|
|
|
114
115
|
};
|
|
115
116
|
}, [el, onElementChanged, onElementAddedOrRemoved, onElementReverted]);
|
|
116
117
|
const isValid = el.isCurrentTypeValid();
|
|
118
|
+
const originalValue = el.currentType === 'Array'
|
|
119
|
+
? [...(el.elements || [])]
|
|
120
|
+
: el.currentType === 'Object'
|
|
121
|
+
? Object.fromEntries(Array.from(el.elements || []).map((e) => [
|
|
122
|
+
e.currentKey,
|
|
123
|
+
e.currentValue,
|
|
124
|
+
]))
|
|
125
|
+
: el.currentValue;
|
|
117
126
|
return {
|
|
118
127
|
id: el.uuid,
|
|
119
128
|
key: {
|
|
@@ -133,7 +142,7 @@ function useHadronElement(el) {
|
|
|
133
142
|
},
|
|
134
143
|
value: {
|
|
135
144
|
value: editor.value(),
|
|
136
|
-
originalValue
|
|
145
|
+
originalValue,
|
|
137
146
|
change(newVal) {
|
|
138
147
|
editor.edit(newVal);
|
|
139
148
|
},
|
|
@@ -159,6 +168,7 @@ function useHadronElement(el) {
|
|
|
159
168
|
visibleChildren: el.getVisibleElements(),
|
|
160
169
|
level: el.level,
|
|
161
170
|
parentType: el.parent?.currentType,
|
|
171
|
+
modified: el.isModified(),
|
|
162
172
|
removed: el.isRemoved(),
|
|
163
173
|
internal: el.isInternalField(),
|
|
164
174
|
expanded: el.expanded,
|
|
@@ -204,6 +214,7 @@ const elementRemovedLightMode = (0, emotion_1.css)({
|
|
|
204
214
|
backgroundColor: palette_1.palette.red.light2,
|
|
205
215
|
},
|
|
206
216
|
});
|
|
217
|
+
const elementModifiedLightMode = elementInvalidLightMode;
|
|
207
218
|
const elementInvalidDarkMode = (0, emotion_1.css)({
|
|
208
219
|
backgroundColor: palette_1.palette.yellow.dark3,
|
|
209
220
|
'&:hover': {
|
|
@@ -216,16 +227,19 @@ const elementRemovedDarkMode = (0, emotion_1.css)({
|
|
|
216
227
|
backgroundColor: palette_1.palette.red.dark2,
|
|
217
228
|
},
|
|
218
229
|
});
|
|
230
|
+
const elementModifiedDarkMode = elementInvalidDarkMode;
|
|
219
231
|
const elementActions = (0, emotion_1.css)({
|
|
220
232
|
flex: 'none',
|
|
221
233
|
width: tokens_1.spacing[300],
|
|
222
234
|
position: 'relative',
|
|
235
|
+
userSelect: 'none',
|
|
223
236
|
});
|
|
224
237
|
const elementLineNumber = (0, emotion_1.css)({
|
|
225
238
|
flex: 'none',
|
|
226
239
|
position: 'relative',
|
|
227
240
|
marginLeft: tokens_1.spacing[100],
|
|
228
241
|
boxSizing: 'content-box',
|
|
242
|
+
userSelect: 'none',
|
|
229
243
|
});
|
|
230
244
|
const addFieldActionsContainer = (0, emotion_1.css)({
|
|
231
245
|
position: 'absolute',
|
|
@@ -270,22 +284,37 @@ const lineNumberRemovedDarkMode = (0, emotion_1.css)({
|
|
|
270
284
|
});
|
|
271
285
|
const elementSpacer = (0, emotion_1.css)({
|
|
272
286
|
flex: 'none',
|
|
287
|
+
userSelect: 'none',
|
|
273
288
|
});
|
|
274
289
|
const elementExpand = (0, emotion_1.css)({
|
|
275
290
|
width: tokens_1.spacing[400],
|
|
276
291
|
flex: 'none',
|
|
277
292
|
display: 'flex',
|
|
278
293
|
alignItems: 'center',
|
|
294
|
+
userSelect: 'none',
|
|
279
295
|
});
|
|
280
296
|
const elementKey = (0, emotion_1.css)({
|
|
281
297
|
flex: 'none',
|
|
282
298
|
fontWeight: 'bold',
|
|
299
|
+
minWidth: '1em',
|
|
283
300
|
maxWidth: '60%',
|
|
284
301
|
});
|
|
302
|
+
const elementKeyInline = (0, emotion_1.css)({
|
|
303
|
+
// Inline-block to keep the key's own max width and ellipsis, aligned to the
|
|
304
|
+
// bottom for the box's baseline.
|
|
305
|
+
display: 'inline-block',
|
|
306
|
+
verticalAlign: 'bottom',
|
|
307
|
+
overflow: 'hidden',
|
|
308
|
+
textOverflow: 'ellipsis',
|
|
309
|
+
});
|
|
285
310
|
const elementKeyInternal = (0, emotion_1.css)({
|
|
286
311
|
color: palette_1.palette.gray.base,
|
|
287
312
|
});
|
|
288
313
|
const elementDivider = (0, emotion_1.css)({
|
|
314
|
+
flex: 'none',
|
|
315
|
+
display: 'inline',
|
|
316
|
+
});
|
|
317
|
+
const elementDecryptedIcon = (0, emotion_1.css)({
|
|
289
318
|
flex: 'none',
|
|
290
319
|
userSelect: 'none',
|
|
291
320
|
});
|
|
@@ -293,10 +322,27 @@ const elementValue = (0, emotion_1.css)({
|
|
|
293
322
|
flex: 1,
|
|
294
323
|
minWidth: 0,
|
|
295
324
|
maxWidth: '100%',
|
|
325
|
+
display: 'inline',
|
|
326
|
+
});
|
|
327
|
+
const elementContent = (0, emotion_1.css)({
|
|
328
|
+
display: 'flex',
|
|
329
|
+
flex: 1,
|
|
330
|
+
minWidth: 0,
|
|
331
|
+
});
|
|
332
|
+
// When not editing we want the key and value inline for copy-ability.
|
|
333
|
+
const elementContentInline = (0, emotion_1.css)({
|
|
334
|
+
display: 'block',
|
|
335
|
+
flex: 1,
|
|
336
|
+
minWidth: 0,
|
|
337
|
+
whiteSpace: 'nowrap',
|
|
338
|
+
overflow: 'hidden',
|
|
339
|
+
textOverflow: 'ellipsis',
|
|
340
|
+
[bson_utils_1.bsonValueDisplayVar]: 'inline',
|
|
296
341
|
});
|
|
297
342
|
const elementType = (0, emotion_1.css)({
|
|
298
343
|
flex: 'none',
|
|
299
344
|
marginLeft: tokens_1.spacing[100],
|
|
345
|
+
userSelect: 'none',
|
|
300
346
|
});
|
|
301
347
|
const actions = (0, emotion_1.css)({
|
|
302
348
|
display: 'none',
|
|
@@ -311,6 +357,15 @@ const actionsVisible = (0, emotion_1.css)({
|
|
|
311
357
|
'[data-document-element="true"]:hover &, [data-document-element="true"]:focus-within &': {
|
|
312
358
|
display: 'block',
|
|
313
359
|
},
|
|
360
|
+
// Keep the actions visible while a menu opened from them is expanded. The
|
|
361
|
+
// add-field menu's trigger sets `aria-expanded="true"` while open; otherwise
|
|
362
|
+
// the gutter is hidden as soon as the row loses `:hover` (and the menu's focus
|
|
363
|
+
// is not `:focus-within` the row), which collapses the trigger to 0x0 and
|
|
364
|
+
// makes leafygreen's popover positioning lose its reference — throwing the
|
|
365
|
+
// open menu offscreen so clicks on its items miss.
|
|
366
|
+
'&:has([aria-expanded="true"])': {
|
|
367
|
+
display: 'block',
|
|
368
|
+
},
|
|
314
369
|
});
|
|
315
370
|
const lineNumberCountHidden = (0, emotion_1.css)({
|
|
316
371
|
// See above
|
|
@@ -368,7 +423,7 @@ exports.getNestedKeyPathForElement = getNestedKeyPathForElement;
|
|
|
368
423
|
const HadronElement = ({ value: element, editable, editingEnabled, onEditStart, lineNumberSize, onAddElement, extraGutterWidth = 0, onUpdateQuery, query, }) => {
|
|
369
424
|
const darkMode = (0, use_theme_1.useDarkMode)();
|
|
370
425
|
const autoFocus = (0, auto_focus_context_1.useAutoFocusContext)();
|
|
371
|
-
const { id, key, value, type, revert, remove, expandable, children, visibleChildren, level, parentType, removed, internal, expanded, expand, collapse, } = useHadronElement(element);
|
|
426
|
+
const { id, key, value, type, revert, remove, expandable, children, visibleChildren, level, parentType, modified, removed, internal, expanded, expand, collapse, } = useHadronElement(element);
|
|
372
427
|
// Function to check if a field is in the query
|
|
373
428
|
// TODO: COMPASS-9541 Improve the functionality when checking for nested objects.
|
|
374
429
|
const isFieldInQuery = (0, react_1.useCallback)((field, fieldValue) => {
|
|
@@ -389,10 +444,16 @@ const HadronElement = ({ value: element, editable, editingEnabled, onEditStart,
|
|
|
389
444
|
},
|
|
390
445
|
}
|
|
391
446
|
: undefined,
|
|
447
|
+
{
|
|
448
|
+
label: 'Copy value',
|
|
449
|
+
onAction: () => {
|
|
450
|
+
void navigator.clipboard.writeText(element.toShellSyntax());
|
|
451
|
+
},
|
|
452
|
+
},
|
|
392
453
|
{
|
|
393
454
|
label: 'Copy field & value',
|
|
394
455
|
onAction: () => {
|
|
395
|
-
void navigator.clipboard.writeText(`${key.value}: ${element.
|
|
456
|
+
void navigator.clipboard.writeText(`${key.value}: ${element.toShellSyntax()}`);
|
|
396
457
|
},
|
|
397
458
|
},
|
|
398
459
|
type.value === 'String' && isValidUrl(value.value)
|
|
@@ -449,11 +510,13 @@ const HadronElement = ({ value: element, editable, editingEnabled, onEditStart,
|
|
|
449
510
|
: elementInvalidLightMode;
|
|
450
511
|
const elementProps = {
|
|
451
512
|
ref: fieldContextMenuRef,
|
|
452
|
-
className: (0, emotion_1.cx)(hadronElement, darkMode ? hadronElementDarkMode : hadronElementLightMode,
|
|
513
|
+
className: (0, emotion_1.cx)(hadronElement, darkMode ? hadronElementDarkMode : hadronElementLightMode, modified &&
|
|
514
|
+
!expanded &&
|
|
515
|
+
(darkMode ? elementModifiedDarkMode : elementModifiedLightMode), removed ? elementRemoved : editingEnabled && !isValid && elementInvalid),
|
|
453
516
|
onClick: toggleExpanded,
|
|
454
517
|
};
|
|
455
518
|
const keyProps = {
|
|
456
|
-
className: (0, emotion_1.cx)(elementKey, internal && elementKeyInternal, darkMode && elementKeyDarkMode),
|
|
519
|
+
className: (0, emotion_1.cx)(elementKey, !editingEnabled && elementKeyInline, internal && elementKeyInternal, darkMode && elementKeyDarkMode),
|
|
457
520
|
};
|
|
458
521
|
const lineNumberRemoved = darkMode
|
|
459
522
|
? lineNumberRemovedDarkMode
|
|
@@ -491,38 +554,39 @@ const HadronElement = ({ value: element, editable, editingEnabled, onEditStart,
|
|
|
491
554
|
toggleExpanded();
|
|
492
555
|
} },
|
|
493
556
|
react_1.default.createElement(leafygreen_1.Icon, { size: "xsmall", glyph: expanded ? 'CaretDown' : 'CaretRight' })))),
|
|
494
|
-
react_1.default.createElement("div", {
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
react_1.default.createElement(
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
557
|
+
react_1.default.createElement("div", { className: editingEnabled ? elementContent : elementContentInline },
|
|
558
|
+
react_1.default.createElement("div", { ...keyProps, "data-testid": "hadron-document-element-key" }, key.editable ? (react_1.default.createElement(element_editors_1.KeyEditor, { value: key.value, valid: key.valid, validationMessage: key.validationMessage, onChange: (newVal) => {
|
|
559
|
+
key.change(newVal);
|
|
560
|
+
},
|
|
561
|
+
// This autofocus will only trigger after user deliberately
|
|
562
|
+
// double-clicked on a field and so auto focusing the input is
|
|
563
|
+
// expected in this case
|
|
564
|
+
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
565
|
+
autoFocus: autoFocus?.id === id && autoFocus?.type === 'key', editing: editingEnabled, onEditStart: () => {
|
|
566
|
+
onEditStart?.(element.uuid, 'key');
|
|
567
|
+
} })) : (react_1.default.createElement("span", null, key.value))),
|
|
568
|
+
react_1.default.createElement("div", { className: elementDivider, role: "presentation" }, ":\u00A0"),
|
|
569
|
+
value.decrypted && (react_1.default.createElement("span", { className: elementDecryptedIcon, "data-testid": "hadron-document-element-decrypted-icon", title: "Encrypted Field" },
|
|
570
|
+
react_1.default.createElement(leafygreen_1.Icon, { glyph: "Key", size: "small" }))),
|
|
571
|
+
react_1.default.createElement("div", { className: elementValue, "data-testid": "hadron-document-element-value" }, value.editable ? (react_1.default.createElement(element_editors_1.ValueEditor, { type: type.value, originalValue: value.originalValue, value: value.value, valid: value.valid, validationMessage: value.validationMessage, onChange: (newVal) => {
|
|
572
|
+
value.change(newVal);
|
|
573
|
+
},
|
|
574
|
+
// See above
|
|
575
|
+
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
576
|
+
autoFocus: autoFocus?.id === id && autoFocus?.type === 'value', editing: editingEnabled, onEditStart: () => {
|
|
577
|
+
onEditStart?.(element.uuid, 'value');
|
|
578
|
+
}, onFocus: () => {
|
|
579
|
+
value.startEdit();
|
|
580
|
+
}, onBlur: () => {
|
|
581
|
+
value.completeEdit();
|
|
582
|
+
} })) : (react_1.default.createElement("span", { "data-testid": editable && !editingEnabled
|
|
583
|
+
? 'hadron-document-clickable-value'
|
|
584
|
+
: undefined, onDoubleClick: () => {
|
|
585
|
+
if (editable && !editingEnabled) {
|
|
586
|
+
onEditStart?.(element.uuid, 'type');
|
|
587
|
+
}
|
|
588
|
+
} },
|
|
589
|
+
react_1.default.createElement(bson_value_1.default, { type: type.value, value: value.originalValue }))))),
|
|
526
590
|
editable && (react_1.default.createElement("div", { className: elementType, "data-testid": "hadron-document-element-type" },
|
|
527
591
|
react_1.default.createElement(element_editors_1.TypeEditor, { editing: editingEnabled, type: type.value,
|
|
528
592
|
// See above
|
|
@@ -551,4 +615,3 @@ const HadronElement = ({ value: element, editable, editingEnabled, onEditStart,
|
|
|
551
615
|
step: editingEnabled ? hadron_document_1.DEFAULT_VISIBLE_ELEMENTS : 1000, onSizeChange: handleVisibleElementsChanged, style: nestedElementsVisibilityToggleOffsetStyle })))));
|
|
552
616
|
};
|
|
553
617
|
exports.HadronElement = HadronElement;
|
|
554
|
-
//# sourceMappingURL=element.js.map
|
|
@@ -2,5 +2,5 @@ export { default as DocumentActionsGroup } from './document-actions-group';
|
|
|
2
2
|
export { default as VisibleFieldsToggle } from './visible-field-toggle';
|
|
3
3
|
export { default as Document } from './document';
|
|
4
4
|
export { default as DocumentEditActionsFooter } from './document-edit-actions-footer';
|
|
5
|
-
export {
|
|
5
|
+
export { BSONDisplayOptionsProvider, useBSONDisplayOptions, type BSONDisplayOptions, type LegacyUUIDDisplay, } from './bson-display-options-context';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/document-list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/document-list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,gCAAgC,CAAC"}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.useBSONDisplayOptions = exports.BSONDisplayOptionsProvider = exports.DocumentEditActionsFooter = exports.Document = exports.VisibleFieldsToggle = exports.DocumentActionsGroup = void 0;
|
|
7
7
|
var document_actions_group_1 = require("./document-actions-group");
|
|
8
8
|
Object.defineProperty(exports, "DocumentActionsGroup", { enumerable: true, get: function () { return __importDefault(document_actions_group_1).default; } });
|
|
9
9
|
var visible_field_toggle_1 = require("./visible-field-toggle");
|
|
@@ -12,6 +12,6 @@ var document_1 = require("./document");
|
|
|
12
12
|
Object.defineProperty(exports, "Document", { enumerable: true, get: function () { return __importDefault(document_1).default; } });
|
|
13
13
|
var document_edit_actions_footer_1 = require("./document-edit-actions-footer");
|
|
14
14
|
Object.defineProperty(exports, "DocumentEditActionsFooter", { enumerable: true, get: function () { return __importDefault(document_edit_actions_footer_1).default; } });
|
|
15
|
-
var
|
|
16
|
-
Object.defineProperty(exports, "
|
|
17
|
-
|
|
15
|
+
var bson_display_options_context_1 = require("./bson-display-options-context");
|
|
16
|
+
Object.defineProperty(exports, "BSONDisplayOptionsProvider", { enumerable: true, get: function () { return bson_display_options_context_1.BSONDisplayOptionsProvider; } });
|
|
17
|
+
Object.defineProperty(exports, "useBSONDisplayOptions", { enumerable: true, get: function () { return bson_display_options_context_1.useBSONDisplayOptions; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visible-field-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/document-list/visible-field-toggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"visible-field-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/document-list/visible-field-toggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AA4BpD,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CA4EA,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -42,6 +42,8 @@ const container = (0, emotion_1.css)({
|
|
|
42
42
|
display: 'flex',
|
|
43
43
|
gap: tokens_1.spacing[200],
|
|
44
44
|
paddingTop: tokens_1.spacing[200],
|
|
45
|
+
// Not a part of the document, keep it out of selectable/copied text.
|
|
46
|
+
userSelect: 'none',
|
|
45
47
|
});
|
|
46
48
|
const linkButtonStyles = (0, emotion_1.css)({
|
|
47
49
|
border: 'none',
|
|
@@ -89,4 +91,3 @@ const VisibleFieldsToggle = ({ showHideButton = true, buttonClassName, parentFie
|
|
|
89
91
|
hideButtonText))));
|
|
90
92
|
};
|
|
91
93
|
exports.default = VisibleFieldsToggle;
|
|
92
|
-
//# sourceMappingURL=visible-field-toggle.js.map
|