UNPKG

@finos/legend-application

Version:
77 lines 6.51 kB
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