refactor(webui): adopt semantic workspace actions
This commit is contained in:
@@ -10,7 +10,6 @@ import {
|
|||||||
Paperclip,
|
Paperclip,
|
||||||
Pencil,
|
Pencil,
|
||||||
Plus,
|
Plus,
|
||||||
RefreshCw,
|
|
||||||
Reply,
|
Reply,
|
||||||
Search,
|
Search,
|
||||||
Send,
|
Send,
|
||||||
@@ -20,7 +19,6 @@ import {
|
|||||||
} from "lucide-react";
|
} from "lucide-react";
|
||||||
import { FormGrid,
|
import { FormGrid,
|
||||||
ActionBlockerHint,
|
ActionBlockerHint,
|
||||||
ActionToolbar,
|
|
||||||
Button,
|
Button,
|
||||||
ConfirmDialog,
|
ConfirmDialog,
|
||||||
CountBadge,
|
CountBadge,
|
||||||
@@ -43,6 +41,7 @@ import { FormGrid,
|
|||||||
usePlatformLanguage,
|
usePlatformLanguage,
|
||||||
useUnsavedChanges,
|
useUnsavedChanges,
|
||||||
useUnsavedDraftGuard,
|
useUnsavedDraftGuard,
|
||||||
|
WorkspaceActionBar,
|
||||||
type ApiSettings,
|
type ApiSettings,
|
||||||
type AuthInfo
|
type AuthInfo
|
||||||
} from "@govoplan/core-webui";
|
} from "@govoplan/core-webui";
|
||||||
@@ -589,29 +588,25 @@ export default function PostboxPage({
|
|||||||
<main className="workspace-data-page module-entry-page postbox-page">
|
<main className="workspace-data-page module-entry-page postbox-page">
|
||||||
<div className="postbox-shell">
|
<div className="postbox-shell">
|
||||||
<aside className="postbox-directory" data-view-surface="postbox.inbox.directory">
|
<aside className="postbox-directory" data-view-surface="postbox.inbox.directory">
|
||||||
<ActionToolbar surface="panel-header" className="postbox-bar">
|
<WorkspaceActionBar
|
||||||
<div className="postbox-bar-title">
|
scope="collection-pane"
|
||||||
|
variant="collection"
|
||||||
|
refreshable
|
||||||
|
reloadAction={{ onReload: () => void loadDirectory(), loading: loadingDirectory || busy }}
|
||||||
|
className="postbox-bar"
|
||||||
|
contextActions={<div className="postbox-bar-title">
|
||||||
<Inbox size={17} aria-hidden="true" />
|
<Inbox size={17} aria-hidden="true" />
|
||||||
<strong>Postbox</strong>
|
<strong>Postbox</strong>
|
||||||
<DocumentationHelpLink reference={POSTBOX_DOCUMENTATION} />
|
</div>}
|
||||||
</div>
|
helpAction={<DocumentationHelpLink reference={POSTBOX_DOCUMENTATION} />}
|
||||||
<div className="postbox-icon-actions">
|
createAction={<IconButton
|
||||||
<IconButton
|
|
||||||
label="New unified view"
|
label="New unified view"
|
||||||
icon={<Plus size={16} />}
|
icon={<Plus size={16} />}
|
||||||
onClick={openNewGrouping}
|
onClick={openNewGrouping}
|
||||||
disabled={busy}
|
disabled={busy}
|
||||||
disabledReason={postboxBusyReason(false, busy)}
|
disabledReason={postboxBusyReason(false, busy)}
|
||||||
/>
|
/>}
|
||||||
<IconButton
|
/>
|
||||||
label="Refresh"
|
|
||||||
icon={<RefreshCw size={16} />}
|
|
||||||
onClick={() => requestDiscard(() => void loadDirectory())}
|
|
||||||
disabled={loadingDirectory || busy}
|
|
||||||
disabledReason={postboxBusyReason(loadingDirectory, busy)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</ActionToolbar>
|
|
||||||
|
|
||||||
<div className="postbox-scope-control">
|
<div className="postbox-scope-control">
|
||||||
<label htmlFor="postbox-scope">Inbox view</label>
|
<label htmlFor="postbox-scope">Inbox view</label>
|
||||||
@@ -688,8 +683,13 @@ export default function PostboxPage({
|
|||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
<section className="postbox-message-list" data-view-surface="postbox.inbox.messages">
|
<section className="postbox-message-list" data-view-surface="postbox.inbox.messages">
|
||||||
<ActionToolbar surface="panel-header" className="postbox-bar">
|
<WorkspaceActionBar
|
||||||
<div className="postbox-bar-title">
|
scope="collection-pane"
|
||||||
|
variant="collection"
|
||||||
|
refreshable
|
||||||
|
reloadAction={{ onReload: () => void loadMessages(), loading: loadingMessages || busy, label: "Refresh messages" }}
|
||||||
|
className="postbox-bar"
|
||||||
|
contextActions={<div className="postbox-bar-title">
|
||||||
{selectedPostbox ? (
|
{selectedPostbox ? (
|
||||||
<>
|
<>
|
||||||
<Building2 size={17} aria-hidden="true" />
|
<Building2 size={17} aria-hidden="true" />
|
||||||
@@ -707,24 +707,15 @@ export default function PostboxPage({
|
|||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
<CountBadge tone="neutral">{total}</CountBadge>
|
<CountBadge tone="neutral">{total}</CountBadge>
|
||||||
</div>
|
</div>}
|
||||||
<div className="postbox-icon-actions">
|
createAction={<IconButton
|
||||||
<IconButton
|
|
||||||
label="New message"
|
label="New message"
|
||||||
icon={<Send size={16} />}
|
icon={<Send size={16} />}
|
||||||
onClick={openCompose}
|
onClick={openCompose}
|
||||||
disabled={Boolean(composeDisabledReason)}
|
disabled={Boolean(composeDisabledReason)}
|
||||||
disabledReason={composeDisabledReason}
|
disabledReason={composeDisabledReason}
|
||||||
/>
|
/>}
|
||||||
<IconButton
|
/>
|
||||||
label="Refresh messages"
|
|
||||||
icon={<RefreshCw size={16} />}
|
|
||||||
onClick={() => requestDiscard(() => void loadMessages())}
|
|
||||||
disabled={loadingMessages || busy}
|
|
||||||
disabledReason={postboxBusyReason(loadingMessages, busy)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</ActionToolbar>
|
|
||||||
<div className="postbox-message-filters">
|
<div className="postbox-message-filters">
|
||||||
<FilterBar surface="control" wrap="never" className="postbox-search-row">
|
<FilterBar surface="control" wrap="never" className="postbox-search-row">
|
||||||
<input
|
<input
|
||||||
@@ -852,12 +843,15 @@ export default function PostboxPage({
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section className="postbox-detail">
|
<section className="postbox-detail">
|
||||||
<ActionToolbar surface="panel-header" className="postbox-bar">
|
<WorkspaceActionBar
|
||||||
<div className="postbox-bar-title">
|
scope="detail-pane"
|
||||||
|
variant="detail"
|
||||||
|
className="postbox-bar"
|
||||||
|
contextActions={<div className="postbox-bar-title">
|
||||||
<MailOpen size={17} aria-hidden="true" />
|
<MailOpen size={17} aria-hidden="true" />
|
||||||
<strong>{selectedMessage?.subject || "Message"}</strong>
|
<strong>{selectedMessage?.subject || "Message"}</strong>
|
||||||
</div>
|
</div>}
|
||||||
<div className="button-row compact-actions">
|
primaryActions={<div className="button-row compact-actions">
|
||||||
<Button
|
<Button
|
||||||
onClick={openReply}
|
onClick={openReply}
|
||||||
disabled={Boolean(replyDisabledReason)}
|
disabled={Boolean(replyDisabledReason)}
|
||||||
@@ -872,8 +866,8 @@ export default function PostboxPage({
|
|||||||
>
|
>
|
||||||
<CheckCheck size={16} /> Acknowledge
|
<CheckCheck size={16} /> Acknowledge
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>}
|
||||||
</ActionToolbar>
|
/>
|
||||||
{selectedMessage ? (
|
{selectedMessage ? (
|
||||||
<MessageDetail
|
<MessageDetail
|
||||||
message={selectedMessage}
|
message={selectedMessage}
|
||||||
|
|||||||
Reference in New Issue
Block a user