UNPKG

burdy

Version:

Open Source Headless Platform

124 lines (123 loc) 6.95 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(require("react")); const react_2 = require("@fluentui/react"); const hoc_1 = require("../../../helpers/hoc"); const posts_context_1 = require("../context/posts.context"); const react_router_1 = require("react-router"); const post_versions_restore_dialog_1 = __importDefault(require("./post-versions-restore-dialog")); const post_versions_delete_dialog_1 = __importDefault(require("./post-versions-delete-dialog")); const query_string_1 = __importDefault(require("query-string")); const PostVersionsCommandBar = () => { const { getPosts, selectedPosts, setStateData, stateData } = (0, posts_context_1.usePosts)(); const commandItems = (0, react_1.useMemo)(() => [ { key: 'restore', text: 'Restore', disabled: (selectedPosts === null || selectedPosts === void 0 ? void 0 : selectedPosts.length) !== 1, iconProps: { iconName: 'Undo' }, onClick: () => { setStateData('versionRestoreOpen', true); }, }, { key: 'delete', text: 'Delete', disabled: !((selectedPosts === null || selectedPosts === void 0 ? void 0 : selectedPosts.length) > 0), iconProps: { iconName: 'Delete' }, onClick: () => { setStateData('versionsDeleteOpen', true); }, }, ], [getPosts, getPosts, stateData]); return (react_1.default.createElement(react_2.CommandBar, { items: commandItems, styles: { root: { padding: 0, }, } })); }; const PostVersionsSelectPanel = ({ isOpen, onDismiss, selectionMode, onSelect, onUpdate, onDelete, post, }) => { const { getVersions, selectedPosts, selection, stateData, setStateData } = (0, posts_context_1.usePosts)(); const location = (0, react_router_1.useLocation)(); const history = (0, react_router_1.useHistory)(); (0, react_1.useEffect)(() => { if (isOpen && (post === null || post === void 0 ? void 0 : post.id)) { getVersions.execute(post === null || post === void 0 ? void 0 : post.id); } }, [isOpen, post]); const Footer = (0, react_1.useCallback)(() => (react_1.default.createElement(react_2.Stack, { horizontal: true, tokens: { childrenGap: 10 } }, react_1.default.createElement(react_2.PrimaryButton, { disabled: (selectedPosts === null || selectedPosts === void 0 ? void 0 : selectedPosts.length) !== 1, onClick: () => { onSelect(selectedPosts === null || selectedPosts === void 0 ? void 0 : selectedPosts[0]); } }, "Open"), react_1.default.createElement(react_2.DefaultButton, { onClick: onDismiss }, "Cancel"))), [isOpen, post, selectedPosts]); const columns = (0, react_1.useMemo)(() => [ { key: 'author', name: 'Author', fieldName: 'author', minWidth: 50, maxWidth: 100, onRender: ({ author }) => (react_1.default.createElement("span", null, author === null || author === void 0 ? void 0 : author.firstName, " ", author === null || author === void 0 ? void 0 : author.lastName)), isPadded: true, }, { key: 'createdAt', name: 'Created At', onRender: ({ createdAt }) => react_1.default.createElement("div", null, createdAt), minWidth: 50, data: 'string', isPadded: true, }, ], []); return (react_1.default.createElement(react_2.Panel, { isOpen: isOpen, headerText: "Select version", isFooterAtBottom: true, onRenderFooterContent: Footer, onDismiss: onDismiss, type: react_2.PanelType.medium }, react_1.default.createElement(PostVersionsCommandBar, null), react_1.default.createElement(react_2.ShimmeredDetailsList, { setKey: "items", items: (getVersions === null || getVersions === void 0 ? void 0 : getVersions.result) || [], columns: columns, selectionMode: selectionMode, selection: selection, enableShimmer: getVersions.loading, ariaLabelForShimmer: "Versions are being fetched", ariaLabelForGrid: "Item details" }), react_1.default.createElement(post_versions_delete_dialog_1.default, { isOpen: stateData === null || stateData === void 0 ? void 0 : stateData.versionsDeleteOpen, onDismiss: () => setStateData('versionsDeleteOpen', false), onDeleted: (deleted) => { setStateData('versionsDeleteOpen', false); getVersions.execute(post === null || post === void 0 ? void 0 : post.id); onDelete(); if ((deleted || []).indexOf(post === null || post === void 0 ? void 0 : post.versionId) > -1 && onUpdate) { history.push({ search: query_string_1.default.stringify(Object.assign(Object.assign({}, (query_string_1.default.parse(location.search) || {})), { versionId: undefined, action: 'version_deleted' })), }); onDismiss(); } } }), react_1.default.createElement(post_versions_restore_dialog_1.default, { isOpen: stateData === null || stateData === void 0 ? void 0 : stateData.versionRestoreOpen, onDismiss: () => setStateData('versionRestoreOpen', false), onRestored: () => { setStateData('versionRestoreOpen', false); history.push({ search: query_string_1.default.stringify(Object.assign(Object.assign({}, (query_string_1.default.parse(location.search) || {})), { action: 'version_restored' })), }); if (onUpdate) { onUpdate(); } } }))); }; exports.default = (0, hoc_1.composeWrappers)({ postsContext: posts_context_1.PostsContextProvider, })(PostVersionsSelectPanel);