@finos/legend-application
Version:
Legend application core
77 lines • 6.51 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
/**
* Copyright (c) 2020-present, Goldman Sachs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { observer } from 'mobx-react-lite';
import { useApplicationStore } from './ApplicationStoreProvider.js';
import { ArrowCircleUpIcon, BugIcon, Dialog, Modal, ModalBody, ModalFooter, ModalFooterButton, ModalHeader, ShareIcon, clsx, } from '@finos/legend-art';
import { RELEASE_UPDATE_TYPE, } from '../stores/ReleaseNotesService.js';
import { isValidUrl, prettyCONSTName } from '@finos/legend-shared';
const ReleaseNoteViewer = observer((props) => {
const { note } = props;
const applicationStore = useApplicationStore();
const isBug = note.type === RELEASE_UPDATE_TYPE.BUG_FIX;
const visitLink = () => {
if (note.docLink && isValidUrl(note.docLink)) {
applicationStore.navigationService.navigator.visitAddress(note.docLink);
}
};
return (_jsxs("div", { className: "release-viewer__update__item", children: [_jsx("div", { className: clsx('release-viewer__update__item-btn', {
'release-viewer__update__item-btn-bug': isBug,
}), children: isBug ? _jsx(BugIcon, {}) : _jsx(ArrowCircleUpIcon, {}) }), _jsx("div", { className: "release-viewer__update__description", children: note.description }), note.docLink && (_jsx("div", { className: "release-viewer__update__link", children: _jsx("button", { className: "release-viewer__update__link-btn", title: "Visit...", onClick: visitLink, children: _jsx(ShareIcon, {}) }) }))] }, note.description));
});
export const ReleaseViewer = observer((props) => {
const { releaseNotes } = props;
const enhancements = releaseNotes.notes?.filter((r) => r.type === RELEASE_UPDATE_TYPE.ENHANCEMENT) ?? [];
const bugFixes = releaseNotes.notes?.filter((r) => r.type === RELEASE_UPDATE_TYPE.BUG_FIX) ?? [];
return (_jsxs("div", { className: "release-viewer", children: [_jsxs("div", { className: "release-viewer__version", children: ["Version ", releaseNotes.label ?? releaseNotes.version] }), _jsxs("div", { className: "release-viewer__content", children: [Boolean(enhancements.length) && (_jsxs("div", { className: "release-viewer__update", children: [_jsx("div", { className: "release-viewer__update-type", children: "ENHANCEMENTS" }), _jsx("div", { className: "release-viewer__update__items", children: enhancements.map((e) => (_jsx(ReleaseNoteViewer, { note: e }, e.description))) })] })), Boolean(bugFixes.length) && (_jsxs("div", { className: "release-viewer__update", children: [_jsx("div", { className: "release-viewer__update-type", children: "BUG FIXES" }), _jsx("div", { className: "release-viewer__update__items", children: bugFixes.map((e) => (_jsx(ReleaseNoteViewer, { note: e }, e.description))) })] }))] })] }));
});
export const ReleaseNotesManager = observer(() => {
const applicationStore = useApplicationStore();
const releaseService = applicationStore.releaseNotesService;
const releaseNotes = releaseService.showableVersions();
const isOpen = releaseService.showCurrentReleaseModal;
if (!releaseService.isConfigured || !isOpen || !releaseNotes?.length) {
return null;
}
const closeModal = () => {
releaseService.setShowCurrentRelease(false);
releaseService.updateViewedVersion();
};
const title = `Legend ${prettyCONSTName(applicationStore.config.appName)} has been upgraded !`;
return (_jsx(Dialog, { open: isOpen, onClose: closeModal, classes: {
root: 'release-notes__root-container',
container: 'release-notes__container',
}, children: _jsxs(Modal, { darkMode: !applicationStore.layoutService.TEMPORARY__isLightColorThemeEnabled, className: "editor-modal release-notes__dialog", children: [_jsx(ModalHeader, { className: "release-notes__dialog__header__title", title: title }), _jsx(ModalBody, { className: "release-notes__dialog__body", children: _jsxs("div", { className: "release-notes__dialog__content", children: [_jsx("div", { className: "release-notes__dialog__content__title", children: "New features, enhancements and bug fixes that were released" }), releaseNotes.map((e) => (_jsx(ReleaseViewer, { releaseNotes: e }, e.version)))] }) }), _jsx(ModalFooter, { children: _jsx(ModalFooterButton, { className: "modal__footer__close-btn", onClick: closeModal, type: 'primary', children: "Close" }) })] }) }));
});
export const ReleaseLogManager = observer(() => {
const applicationStore = useApplicationStore();
const releaseService = applicationStore.releaseNotesService;
if (!releaseService.isConfigured || !releaseService.showReleaseLog) {
return null;
}
const releaseNotes = releaseService.releaseNotes ?? [];
const isOpen = releaseService.showReleaseLog;
const closeModal = () => {
releaseService.setReleaseLog(false);
releaseService.updateViewedVersion();
};
const title = `Release Notes`;
return (_jsx(Dialog, { open: isOpen, onClose: closeModal, classes: {
root: 'release-notes__root-container',
container: 'release-notes__container',
}, children: _jsxs(Modal, { darkMode: !applicationStore.layoutService.TEMPORARY__isLightColorThemeEnabled, className: "editor-modal release-notes__dialog", children: [_jsx(ModalHeader, { className: "release-notes__dialog__header__title", title: title }), _jsx(ModalBody, { className: "release-notes__dialog__body", children: _jsxs("div", { className: "release-notes__dialog__content", children: [_jsx("div", { className: "release-notes__dialog__content__title", children: "New features, enhancements and bug fixes that were released" }), releaseNotes.map((e) => (_jsx(ReleaseViewer, { releaseNotes: e }, e.version)))] }) }), _jsx(ModalFooter, { children: _jsx(ModalFooterButton, { className: "modal__footer__close-btn", onClick: closeModal, type: 'primary', children: "Close" }) })] }) }));
});
//# sourceMappingURL=ReleaseNotesManager.js.map