@adaptabletools/adaptable-cjs
Version:
Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
64 lines (63 loc) • 3.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GridCellPopup = void 0;
const tslib_1 = require("tslib");
const React = tslib_1.__importStar(require("react"));
const react_redux_1 = require("react-redux");
const rebass_1 = require("rebass");
const NoteRedux_1 = require("../../../../Redux/ActionsReducers/NoteRedux");
const InternalRedux_1 = require("../../../../Redux/ActionsReducers/InternalRedux");
const AdaptableContext_1 = require("../../../AdaptableContext");
const CommentsEditor_1 = require("../../../Comments/CommentsEditor");
const NoteEditor_1 = require("../../../Note/NoteEditor");
const CellPopup_1 = require("../../CellPopup");
const ConnectedNoteEditor = ({ enableEditMode }) => {
const { api } = (0, AdaptableContext_1.useAdaptable)();
const isReadonly = api.entitlementApi.isModuleReadOnlyEntitlement('Note');
const editMode = (0, react_redux_1.useSelector)((state) => (0, InternalRedux_1.CommentsAndNotesEditModeSelector)(state.Internal));
const annotationsService = api.internalApi.getAnnotationsService();
const cellAddress = (0, react_redux_1.useSelector)((state) => (0, InternalRedux_1.CommentsAndNotesSelector)(state.Internal));
const note = (0, react_redux_1.useSelector)((state) => {
return cellAddress ? (0, NoteRedux_1.GetNoteSelector)(state.Note, cellAddress) : null;
});
const handleNoteChange = React.useCallback((value) => {
api.noteApi.updateNoteText(value, note);
}, [note]);
return (React.createElement(rebass_1.Flex, { onClick: () => enableEditMode(), flexDirection: "column", className: "ab-NotePopup" },
React.createElement(NoteEditor_1.NoteEditor, { isReadonly: isReadonly, editMode: editMode, key: note?.Uuid, onClose: () => annotationsService.hidePopup(), note: note?.Text, onNoteChange: (value) => handleNoteChange(value) })));
};
const GridCellPopup = (props) => {
const { api } = (0, AdaptableContext_1.useAdaptable)();
const cellPopupRef = React.useRef(null);
const editMode = (0, react_redux_1.useSelector)((state) => (0, InternalRedux_1.CommentsAndNotesEditModeSelector)(state.Internal));
const focusedEntity = (0, react_redux_1.useSelector)((state) => (0, InternalRedux_1.CommentsAndNotesFocusedEntitySelector)(state.Internal));
const cellAddress = (0, react_redux_1.useSelector)((state) => (0, InternalRedux_1.CommentsAndNotesSelector)(state.Internal));
const enableEditMode = (entity) => {
if (!editMode) {
const annotationsService = api.internalApi.getAnnotationsService();
annotationsService.showPopup(cellAddress, true);
annotationsService.editFocusedEntity(entity);
}
};
React.useEffect(() => {
cellPopupRef?.current?.refreshContent?.();
}, [focusedEntity]);
if (!cellAddress) {
return React.createElement(React.Fragment, null);
}
const noteEditor = React.createElement(ConnectedNoteEditor, { enableEditMode: () => enableEditMode('Note') });
const commentEditor = (React.createElement(CommentsEditor_1.CommentsEditor, { onRefreshContent: () => cellPopupRef?.current?.refreshContent?.(), enableEditMode: () => enableEditMode('Comment') }));
return (React.createElement(CellPopup_1.CellPopup, { ref: cellPopupRef, key: `${cellAddress.PrimaryKeyValue}-${cellAddress.ColumnId}`, isOpen: true, primaryKeyValue: cellAddress.PrimaryKeyValue, columnId: cellAddress.ColumnId }, (() => {
switch (focusedEntity) {
case 'Note':
return noteEditor;
case 'Comment':
return commentEditor;
default:
return (React.createElement(React.Fragment, null,
noteEditor,
commentEditor));
}
})()));
};
exports.GridCellPopup = GridCellPopup;