@burdenoff/planmagnet-fe-sdk 2026.706.7 → 2026.813.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +216 -8
- package/dist/index.js +694 -46
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { HTMLAttributes, ReactNode, ComponentType, DragEvent } from 'react';
|
|
2
|
+
import { HTMLAttributes, ReactNode, ComponentType, DragEvent, Ref } from 'react';
|
|
3
3
|
import { ApolloClient } from '@apollo/client/core';
|
|
4
4
|
import * as graphql from 'graphql';
|
|
5
5
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
@@ -64,6 +64,14 @@ interface Task {
|
|
|
64
64
|
storyPoints?: number | null;
|
|
65
65
|
dueDate?: string | null;
|
|
66
66
|
labels: string[];
|
|
67
|
+
/**
|
|
68
|
+
* Board ordering within a status column (SDL `WorkItem.sortOrder`, backed by
|
|
69
|
+
* the Prisma `position` column via a read field resolver — safe to SELECT on
|
|
70
|
+
* query paths). Drives drag-to-reorder-within-a-column; the board sorts cards
|
|
71
|
+
* by this ascending so a persisted reorder survives refetch. Optional so older
|
|
72
|
+
* mocks/hosts that don't select it still type-check.
|
|
73
|
+
*/
|
|
74
|
+
sortOrder?: number | null;
|
|
67
75
|
}
|
|
68
76
|
/**
|
|
69
77
|
* A work item with the full field set from `WorkItemFields` — used by the
|
|
@@ -410,6 +418,12 @@ interface TaskCardProps {
|
|
|
410
418
|
draggable?: boolean;
|
|
411
419
|
onDragStart?: (task: Task, e: DragEvent<HTMLDivElement>) => void;
|
|
412
420
|
onDragEnd?: (task: Task, e: DragEvent<HTMLDivElement>) => void;
|
|
421
|
+
/**
|
|
422
|
+
* Native drag-over on the card — the board uses this to compute a
|
|
423
|
+
* within-column reorder drop index (before/after this card). Only wired when
|
|
424
|
+
* `draggable`.
|
|
425
|
+
*/
|
|
426
|
+
onDragOver?: (e: DragEvent<HTMLDivElement>) => void;
|
|
413
427
|
/** True while this card is the one being dragged. */
|
|
414
428
|
dragging?: boolean;
|
|
415
429
|
resolveAssignee?: ResolveAssignee;
|
|
@@ -424,7 +438,7 @@ interface TaskCardProps {
|
|
|
424
438
|
* only real fields (no invented assignee names or entity links). Semantic
|
|
425
439
|
* tokens only.
|
|
426
440
|
*/
|
|
427
|
-
declare function TaskCard({ task, hidden, onClick, draggable, onDragStart, onDragEnd, dragging, resolveAssignee, links, renderLinkIcon, className, }: TaskCardProps): react.JSX.Element;
|
|
441
|
+
declare function TaskCard({ task, hidden, onClick, draggable, onDragStart, onDragEnd, onDragOver, dragging, resolveAssignee, links, renderLinkIcon, className, }: TaskCardProps): react.JSX.Element;
|
|
428
442
|
|
|
429
443
|
interface TaskBoardCoreProps {
|
|
430
444
|
/** Scope the board to one project (client-side filter for Phase 1). */
|
|
@@ -556,6 +570,18 @@ interface CreateTaskCoreProps {
|
|
|
556
570
|
assigneeOptions?: AssigneeOption[];
|
|
557
571
|
/** Field names to hide on the form. */
|
|
558
572
|
hiddenFields?: CreateTaskField[];
|
|
573
|
+
/**
|
|
574
|
+
* Statuses a user may SET, defaulting to every {@link TASK_STATUSES} value.
|
|
575
|
+
*
|
|
576
|
+
* ★ A host that narrows the board's `columns` must narrow this too. The board
|
|
577
|
+
* renders one column per entry and filters by exact status, so a work item in
|
|
578
|
+
* a status with no column renders NOWHERE — setting it would lose the task.
|
|
579
|
+
* `TasksPageCore` derives this from `columns` for exactly that reason.
|
|
580
|
+
*
|
|
581
|
+
* The item's CURRENT status is always offered even when absent from this list,
|
|
582
|
+
* so opening a task that predates a narrowing never silently rewrites it.
|
|
583
|
+
*/
|
|
584
|
+
statuses?: TaskStatus[];
|
|
559
585
|
/** Default values applied on first render. */
|
|
560
586
|
defaultValues?: Partial<CreateTaskInput>;
|
|
561
587
|
/** Hide the form header (title + subtitle). */
|
|
@@ -581,7 +607,7 @@ interface CreateTaskCoreProps {
|
|
|
581
607
|
* Mirrors the TaskBoardCore contract: `workspaceId` from a prop or the
|
|
582
608
|
* PlanMagnetProvider context, `hiddenFields` for host-driven field suppression.
|
|
583
609
|
*/
|
|
584
|
-
declare function CreateTaskCore({ projectId: projectIdProp, assigneeOptions, hiddenFields, defaultValues, hideHeader, submitLabel, onCreated, onError, onCancel, className, workspaceId: workspaceIdProp, }: CreateTaskCoreProps): react.JSX.Element;
|
|
610
|
+
declare function CreateTaskCore({ projectId: projectIdProp, assigneeOptions, hiddenFields, statuses, defaultValues, hideHeader, submitLabel, onCreated, onError, onCancel, className, workspaceId: workspaceIdProp, }: CreateTaskCoreProps): react.JSX.Element;
|
|
585
611
|
|
|
586
612
|
interface CreateTaskProps extends CreateTaskCoreProps {
|
|
587
613
|
/** Workspace API gateway URL (URL mode). */
|
|
@@ -646,6 +672,18 @@ interface TaskListCoreProps {
|
|
|
646
672
|
/** Free-text search (server-side). */
|
|
647
673
|
search?: string;
|
|
648
674
|
/** Columns to render (order preserved). */
|
|
675
|
+
/**
|
|
676
|
+
* Statuses a user may SET, defaulting to every {@link TASK_STATUSES} value.
|
|
677
|
+
*
|
|
678
|
+
* ★ A host that narrows the board's `columns` must narrow this too. The board
|
|
679
|
+
* renders one column per entry and filters by exact status, so a work item in
|
|
680
|
+
* a status with no column renders NOWHERE — setting it would lose the task.
|
|
681
|
+
* `TasksPageCore` derives this from `columns` for exactly that reason.
|
|
682
|
+
*
|
|
683
|
+
* The item's CURRENT status is always offered even when absent from this list,
|
|
684
|
+
* so opening a task that predates a narrowing never silently rewrites it.
|
|
685
|
+
*/
|
|
686
|
+
statuses?: TaskStatus[];
|
|
649
687
|
columns?: TaskListColumn[];
|
|
650
688
|
/** Initial sort key. */
|
|
651
689
|
sortBy?: TaskListSort;
|
|
@@ -690,7 +728,7 @@ interface TaskListCoreProps {
|
|
|
690
728
|
* headers. Filters map to the server-side filter; sort is client-side.
|
|
691
729
|
* BYO-Apollo, semantic-token only, farm-free.
|
|
692
730
|
*/
|
|
693
|
-
declare function TaskListCore({ projectId, status, type, priority, assigneeId, search, columns, sortBy, sortDir, hideHeader, onSelect, resolveAssignee, linkSourceProduct, renderLinkIcon, limit, selectable, assigneeOptions, className, workspaceId: workspaceIdProp, }: TaskListCoreProps): react.JSX.Element;
|
|
731
|
+
declare function TaskListCore({ projectId, status, type, priority, assigneeId, search, columns, sortBy, sortDir, hideHeader, onSelect, resolveAssignee, linkSourceProduct, renderLinkIcon, limit, selectable, assigneeOptions, statuses, className, workspaceId: workspaceIdProp, }: TaskListCoreProps): react.JSX.Element;
|
|
694
732
|
|
|
695
733
|
interface TaskListProps extends TaskListCoreProps {
|
|
696
734
|
/** Workspace API gateway URL (URL mode). */
|
|
@@ -793,6 +831,11 @@ interface TaskToolbarProps {
|
|
|
793
831
|
views?: TaskView[];
|
|
794
832
|
search: string;
|
|
795
833
|
onSearchChange: (search: string) => void;
|
|
834
|
+
/**
|
|
835
|
+
* Optional ref to the search `<input>` — lets a host focus it programmatically
|
|
836
|
+
* (e.g. the `/` keyboard shortcut on the composed Tasks page).
|
|
837
|
+
*/
|
|
838
|
+
searchInputRef?: Ref<HTMLInputElement>;
|
|
796
839
|
priority: TaskPriority | "ALL";
|
|
797
840
|
onPriorityChange: (priority: TaskPriority | "ALL") => void;
|
|
798
841
|
type: TaskType | "ALL";
|
|
@@ -802,6 +845,11 @@ interface TaskToolbarProps {
|
|
|
802
845
|
/** "My tasks" toggle — only rendered when `onMineChange` is provided. */
|
|
803
846
|
mine?: boolean;
|
|
804
847
|
onMineChange?: (mine: boolean) => void;
|
|
848
|
+
/**
|
|
849
|
+
* Extra controls rendered at the LEADING edge of the right-hand action group
|
|
850
|
+
* (before search) — e.g. the Saved Views dropdown. Omit for none.
|
|
851
|
+
*/
|
|
852
|
+
leadingActions?: ReactNode;
|
|
805
853
|
className?: string;
|
|
806
854
|
}
|
|
807
855
|
/**
|
|
@@ -809,7 +857,7 @@ interface TaskToolbarProps {
|
|
|
809
857
|
* view tabs (Board / List / Timeline) + search + priority/type filters + a
|
|
810
858
|
* "New task" action. Fully controlled; semantic-token only.
|
|
811
859
|
*/
|
|
812
|
-
declare function TaskToolbar({ view, onViewChange, views, search, onSearchChange, priority, onPriorityChange, type, onTypeChange, onNewTask, canCreate, mine, onMineChange, className, }: TaskToolbarProps): react.JSX.Element;
|
|
860
|
+
declare function TaskToolbar({ view, onViewChange, views, search, onSearchChange, searchInputRef, priority, onPriorityChange, type, onTypeChange, onNewTask, canCreate, mine, onMineChange, leadingActions, className, }: TaskToolbarProps): react.JSX.Element;
|
|
813
861
|
|
|
814
862
|
/** Fields that can be hidden / suppressed on the detail view + edit form. */
|
|
815
863
|
type TaskDetailField = "description" | "type" | "status" | "priority" | "assignee" | "dueDate" | "labels" | "storyPoints";
|
|
@@ -820,6 +868,18 @@ interface TaskDetailCoreProps {
|
|
|
820
868
|
readonly?: boolean;
|
|
821
869
|
/** Field names to hide. */
|
|
822
870
|
hiddenFields?: TaskDetailField[];
|
|
871
|
+
/**
|
|
872
|
+
* Statuses a user may SET, defaulting to every {@link TASK_STATUSES} value.
|
|
873
|
+
*
|
|
874
|
+
* ★ A host that narrows the board's `columns` must narrow this too. The board
|
|
875
|
+
* renders one column per entry and filters by exact status, so a work item in
|
|
876
|
+
* a status with no column renders NOWHERE — setting it would lose the task.
|
|
877
|
+
* `TasksPageCore` derives this from `columns` for exactly that reason.
|
|
878
|
+
*
|
|
879
|
+
* The item's CURRENT status is always offered even when absent from this list,
|
|
880
|
+
* so opening a task that predates a narrowing never silently rewrites it.
|
|
881
|
+
*/
|
|
882
|
+
statuses?: TaskStatus[];
|
|
823
883
|
/** Hide the header (key + title). */
|
|
824
884
|
hideHeader?: boolean;
|
|
825
885
|
/** Called with the updated work item after a successful save. */
|
|
@@ -870,7 +930,7 @@ interface TaskDetailCoreProps {
|
|
|
870
930
|
* edit. Fetches via `planmagnetWorkItem(id)`, saves via
|
|
871
931
|
* `planmagnetUpdateWorkItem`. BYO-Apollo, semantic-token only, farm-free.
|
|
872
932
|
*/
|
|
873
|
-
declare function TaskDetailCore({ id, readonly, hiddenFields, hideHeader, onUpdated, onDeleted, onError, resolveAssignee, assigneeOptions, linkSourceProduct, renderLinkIcon, onOpenItem, onAddSubtask, commentsEntityType, currentActorId, onMention, className, }: TaskDetailCoreProps): react.JSX.Element;
|
|
933
|
+
declare function TaskDetailCore({ id, readonly, hiddenFields, statuses, hideHeader, onUpdated, onDeleted, onError, resolveAssignee, assigneeOptions, linkSourceProduct, renderLinkIcon, onOpenItem, onAddSubtask, commentsEntityType, currentActorId, onMention, className, }: TaskDetailCoreProps): react.JSX.Element;
|
|
874
934
|
|
|
875
935
|
interface TaskDetailProps extends TaskDetailCoreProps {
|
|
876
936
|
/** Workspace API gateway URL (URL mode). */
|
|
@@ -965,6 +1025,22 @@ interface TaskLabels {
|
|
|
965
1025
|
allTypes: string;
|
|
966
1026
|
newTask: string;
|
|
967
1027
|
myTasks: string;
|
|
1028
|
+
savedViews: string;
|
|
1029
|
+
saveView: string;
|
|
1030
|
+
viewName: string;
|
|
1031
|
+
saveViewAction: string;
|
|
1032
|
+
deleteView: string;
|
|
1033
|
+
noSavedViews: string;
|
|
1034
|
+
defaultViewName: string;
|
|
1035
|
+
keyboardShortcuts: string;
|
|
1036
|
+
shortcutNewTask: string;
|
|
1037
|
+
shortcutSearch: string;
|
|
1038
|
+
shortcutBoardView: string;
|
|
1039
|
+
shortcutListView: string;
|
|
1040
|
+
shortcutTimelineView: string;
|
|
1041
|
+
shortcutMyTasks: string;
|
|
1042
|
+
shortcutHelp: string;
|
|
1043
|
+
shortcutClose: string;
|
|
968
1044
|
noTasks: string;
|
|
969
1045
|
noTasksFound: string;
|
|
970
1046
|
dropHere: string;
|
|
@@ -1053,6 +1129,7 @@ interface TaskLabels {
|
|
|
1053
1129
|
projectRequired: string;
|
|
1054
1130
|
errorLoading: string;
|
|
1055
1131
|
moveFailed: string;
|
|
1132
|
+
reorderFailed: string;
|
|
1056
1133
|
failedToCreate: string;
|
|
1057
1134
|
failedToSave: string;
|
|
1058
1135
|
failedToDelete: string;
|
|
@@ -1180,6 +1257,33 @@ interface TasksPageCoreProps {
|
|
|
1180
1257
|
createSurface?: "modal" | "inline";
|
|
1181
1258
|
/** How the detail view is surfaced. Defaults to "drawer". */
|
|
1182
1259
|
detailSurface?: "drawer" | "inline";
|
|
1260
|
+
/**
|
|
1261
|
+
* Opt-in "Saved Views". When true, the toolbar state (view tab, priority /
|
|
1262
|
+
* type filters, search, "my tasks", and the list column config) is persisted
|
|
1263
|
+
* to `localStorage` (keyed per workspace) and restored on the next mount, and
|
|
1264
|
+
* a compact "Views" dropdown lets the user save / switch / delete named
|
|
1265
|
+
* views. OFF by default — existing embeds are unchanged. Client-only, no
|
|
1266
|
+
* backend; all storage access is SSR-/failure-safe.
|
|
1267
|
+
*/
|
|
1268
|
+
enableSavedViews?: boolean;
|
|
1269
|
+
/**
|
|
1270
|
+
* Optional storage-key suffix so multiple independent Tasks surfaces in the
|
|
1271
|
+
* same workspace (e.g. two boards on one page) don't clobber each other's
|
|
1272
|
+
* persisted state. Implies `enableSavedViews` when set. The storage key is
|
|
1273
|
+
* `planmagnet:views:<workspaceId>[:<persistViewKey>]`.
|
|
1274
|
+
*/
|
|
1275
|
+
persistViewKey?: string;
|
|
1276
|
+
/**
|
|
1277
|
+
* Opt-in Linear-style keyboard shortcuts. When true, a scoped `keydown`
|
|
1278
|
+
* listener (active only while this page is mounted, ignored while typing in a
|
|
1279
|
+
* form field and for modifier combos) enables:
|
|
1280
|
+
* `c` new task, `/` focus search, `b`/`l`/`g` switch Board/List/Timeline
|
|
1281
|
+
* (only among the enabled views), `m` toggle "My tasks" (needs
|
|
1282
|
+
* `currentActorId`), `?` toggle a dismissible help overlay, and `Escape` to
|
|
1283
|
+
* close the create / detail / help surfaces. OFF by default — existing embeds
|
|
1284
|
+
* are byte-for-byte unchanged.
|
|
1285
|
+
*/
|
|
1286
|
+
enableShortcuts?: boolean;
|
|
1183
1287
|
/** Extra classes on the root container. */
|
|
1184
1288
|
className?: string;
|
|
1185
1289
|
}
|
|
@@ -1192,7 +1296,7 @@ interface TasksPageCoreProps {
|
|
|
1192
1296
|
* BYO-Apollo: reads the ambient `<ApolloProvider>` and takes `workspaceId` from
|
|
1193
1297
|
* a prop or the PlanMagnetProvider context. Semantic tokens only, farm-free.
|
|
1194
1298
|
*/
|
|
1195
|
-
declare function TasksPageCore({ workspaceId: workspaceIdProp, projectId, boardProjectId, columns, readonly, canCreateMilestone, locale, hiddenFields, views, defaultView, confirmMove, resolveAssignee, linkSourceProduct, renderLinkIcon, assigneeOptions, currentActorId, commentsEntityType, onMention, labels, openItemId, header, onTaskSaved, createSurface, detailSurface, className, }: TasksPageCoreProps): react.JSX.Element;
|
|
1299
|
+
declare function TasksPageCore({ workspaceId: workspaceIdProp, projectId, boardProjectId, columns, readonly, canCreateMilestone, locale, hiddenFields, views, defaultView, confirmMove, resolveAssignee, linkSourceProduct, renderLinkIcon, assigneeOptions, currentActorId, commentsEntityType, onMention, labels, openItemId, header, onTaskSaved, createSurface, detailSurface, enableSavedViews, persistViewKey, enableShortcuts, className, }: TasksPageCoreProps): react.JSX.Element;
|
|
1196
1300
|
|
|
1197
1301
|
interface TasksPageProps extends TasksPageCoreProps {
|
|
1198
1302
|
/** Workspace API gateway URL (URL mode). */
|
|
@@ -1345,6 +1449,110 @@ declare function useMilestones(workspaceId: string | undefined, opts?: {
|
|
|
1345
1449
|
limit?: number;
|
|
1346
1450
|
}): UseMilestonesResult;
|
|
1347
1451
|
|
|
1452
|
+
/**
|
|
1453
|
+
* The user-controlled toolbar/view state the Saved Views feature persists and
|
|
1454
|
+
* restores. Product-agnostic: the same shape drives Board / List / Timeline.
|
|
1455
|
+
*/
|
|
1456
|
+
interface ViewState {
|
|
1457
|
+
/** Active view tab. */
|
|
1458
|
+
view: TaskView;
|
|
1459
|
+
/** Priority quick-filter ("ALL" = no filter). */
|
|
1460
|
+
priority: TaskPriority | "ALL";
|
|
1461
|
+
/** Type quick-filter ("ALL" = no filter). */
|
|
1462
|
+
type: TaskType | "ALL";
|
|
1463
|
+
/** Free-text search. */
|
|
1464
|
+
search: string;
|
|
1465
|
+
/** "My tasks" toggle. */
|
|
1466
|
+
mine: boolean;
|
|
1467
|
+
/**
|
|
1468
|
+
* List column config (order preserved). `null` = use the page default
|
|
1469
|
+
* (which itself may depend on `linkSourceProduct`).
|
|
1470
|
+
*/
|
|
1471
|
+
listColumns: TaskListColumn[] | null;
|
|
1472
|
+
}
|
|
1473
|
+
/** A user-named snapshot of a {@link ViewState}. */
|
|
1474
|
+
interface SavedView {
|
|
1475
|
+
/** Stable id (nanoid-ish; generated client-side). */
|
|
1476
|
+
id: string;
|
|
1477
|
+
/** Display name the user typed. */
|
|
1478
|
+
name: string;
|
|
1479
|
+
/** The captured filter/view state. */
|
|
1480
|
+
state: ViewState;
|
|
1481
|
+
}
|
|
1482
|
+
/**
|
|
1483
|
+
* Compose the storage key for a workspace — `planmagnet:views:<workspaceId>`,
|
|
1484
|
+
* optionally suffixed (`:<suffix>`) so multiple independent Tasks surfaces in
|
|
1485
|
+
* one workspace don't clobber each other.
|
|
1486
|
+
*/
|
|
1487
|
+
declare function makeStorageKey(workspaceId: string, suffix?: string): string;
|
|
1488
|
+
interface UseSavedViewsArgs {
|
|
1489
|
+
/**
|
|
1490
|
+
* Fully-composed localStorage key (see {@link makeStorageKey}). All reads and
|
|
1491
|
+
* writes target this key.
|
|
1492
|
+
*/
|
|
1493
|
+
storageKey: string;
|
|
1494
|
+
/** Feature master switch — when false the hook is a no-op passthrough. */
|
|
1495
|
+
enabled: boolean;
|
|
1496
|
+
/** The live toolbar state to persist (debounced). */
|
|
1497
|
+
current: ViewState;
|
|
1498
|
+
}
|
|
1499
|
+
interface UseSavedViewsResult {
|
|
1500
|
+
/**
|
|
1501
|
+
* The state restored from storage on the first mount, or `null` if there was
|
|
1502
|
+
* nothing to restore (or the feature is disabled). Consumers apply this once
|
|
1503
|
+
* to seed their controlled inputs.
|
|
1504
|
+
*/
|
|
1505
|
+
restored: ViewState | null;
|
|
1506
|
+
/** All saved named views for this workspace. */
|
|
1507
|
+
views: SavedView[];
|
|
1508
|
+
/** The id of the currently-applied saved view (or null for an ad-hoc state). */
|
|
1509
|
+
activeViewId: string | null;
|
|
1510
|
+
/** Persist the current toolbar state as a new named view; returns its id. */
|
|
1511
|
+
saveView: (name: string) => string | null;
|
|
1512
|
+
/** Apply a saved view — returns its state so the caller can seed inputs. */
|
|
1513
|
+
applyView: (id: string) => ViewState | null;
|
|
1514
|
+
/** Delete a saved view by id. */
|
|
1515
|
+
deleteView: (id: string) => void;
|
|
1516
|
+
/** Clear the "active saved view" pointer (e.g. after a manual filter edit). */
|
|
1517
|
+
clearActiveView: () => void;
|
|
1518
|
+
}
|
|
1519
|
+
/**
|
|
1520
|
+
* useSavedViews — client-side (localStorage) persistence of the Tasks toolbar
|
|
1521
|
+
* state, keyed per workspace, plus optional user-named views. No backend.
|
|
1522
|
+
*
|
|
1523
|
+
* - Restores the last-active toolbar state on mount (`restored`, applied once).
|
|
1524
|
+
* - Debounces writes of the live `current` state.
|
|
1525
|
+
* - Manages a list of named views (save / apply / delete).
|
|
1526
|
+
* - Fully guarded: SSR-safe and resilient to disabled/quota-limited storage.
|
|
1527
|
+
*
|
|
1528
|
+
* When `enabled` is false the hook does nothing (no reads, no writes) and
|
|
1529
|
+
* returns empty results, so callers stay non-breaking by default.
|
|
1530
|
+
*/
|
|
1531
|
+
declare function useSavedViews({ storageKey, enabled, current, }: UseSavedViewsArgs): UseSavedViewsResult;
|
|
1532
|
+
|
|
1533
|
+
interface SavedViewsMenuProps {
|
|
1534
|
+
/** All saved named views for the workspace. */
|
|
1535
|
+
views: SavedView[];
|
|
1536
|
+
/** The id of the currently-applied saved view (null = ad-hoc/default). */
|
|
1537
|
+
activeViewId: string | null;
|
|
1538
|
+
/** Save the current filter set as a new named view. */
|
|
1539
|
+
onSaveView: (name: string) => void;
|
|
1540
|
+
/** Apply a saved view by id. */
|
|
1541
|
+
onApplyView: (id: string) => void;
|
|
1542
|
+
/** Delete a saved view by id. */
|
|
1543
|
+
onDeleteView: (id: string) => void;
|
|
1544
|
+
className?: string;
|
|
1545
|
+
}
|
|
1546
|
+
/**
|
|
1547
|
+
* SavedViewsMenu — a compact toolbar dropdown to save the current filter set as
|
|
1548
|
+
* a named view, switch between saved views, and delete one. Client-only (the
|
|
1549
|
+
* persistence lives in `useSavedViews`); semantic-token styled; farm-free.
|
|
1550
|
+
*
|
|
1551
|
+
* Self-contained dropdown (no fe-libs / portal dependency) so it renders in any
|
|
1552
|
+
* host and in happy-dom tests. Closes on outside-click and Escape.
|
|
1553
|
+
*/
|
|
1554
|
+
declare function SavedViewsMenu({ views, activeViewId, onSaveView, onApplyView, onDeleteView, className, }: SavedViewsMenuProps): react.JSX.Element;
|
|
1555
|
+
|
|
1348
1556
|
interface PlanMagnetClientConfig {
|
|
1349
1557
|
/** Workspace API gateway base URL (e.g. https://graphqlworkspaces.burdenoff.com). */
|
|
1350
1558
|
apiGatewayUrl: string;
|
|
@@ -1495,4 +1703,4 @@ declare function getGraphQLEndpoint(baseUrl?: string): string;
|
|
|
1495
1703
|
|
|
1496
1704
|
declare function cn(...inputs: ClassValue[]): string;
|
|
1497
1705
|
|
|
1498
|
-
export { type AssigneeOption, Avatar, type AvatarProps, BULK_UPDATE_WORK_ITEMS, Badge, type BadgeProps, type BoardColumn, CREATE_WORK_ITEM, CREATE_WORK_ITEM_LINK, CreateTask, CreateTaskCore, type CreateTaskCoreProps, type CreateTaskField, type CreateTaskInput, type CreateTaskProps, type CreateWorkItemLinkInput, DEFAULT_BOARD_COLUMNS, DEFAULT_TASK_LABELS, DELETE_WORK_ITEM, DELETE_WORK_ITEM_LINK, Drawer, type DrawerProps, GET_PROJECTS, GET_WORK_ITEM, LIST_MILESTONES, LIST_WORK_ITEMS, LIST_WORK_ITEM_LINKS, LinkChip, type LinkChipProps, type ListMilestonesInput, type ListTasksInput, type ListWorkItemLinksInput, MILESTONE_FIELDS, MOVE_WORK_ITEM, type Milestone, type MilestoneList, type MilestoneStatus, Modal, type ModalProps, PRIORITY_META, PROJECT_SUMMARY_FIELDS, type PartialTaskLabels, type PlanMagnetClientConfig, type PlanMagnetConfig, PlanMagnetProvider, type PlanMagnetProviderProps, PriorityIndicator, type PriorityIndicatorProps, type Project, type ProjectList, type RenderLinkIcon, type ResolveAssignee, STATUS_META, StatusIcon, type StatusIconProps, StatusPill, type StatusPillProps, TASK_PRIORITIES, TASK_STATUSES, TASK_TYPES, type Task, TaskBoard, TaskBoardCore, type TaskBoardCoreProps, type TaskBoardProps, TaskCard, type TaskCardProps, TaskCommentsCore, type TaskCommentsCoreProps, TaskDetail, TaskDetailCore, type TaskDetailCoreProps, type TaskDetailField, type TaskDetailProps, type TaskLabels, TaskLabelsProvider, TaskList, type TaskListColumn, TaskListCore, type TaskListCoreProps, type TaskListProps, type TaskListSort, type TaskPageInfo, type TaskPaginationInput, type TaskPriority, type TaskSavedResult, type TaskStatus, TaskTimelineCore, type TaskTimelineCoreProps, TaskToolbar, type TaskToolbarProps, type TaskType, type TaskView, TasksPage, TasksPageCore, type TasksPageCoreProps, type TasksPageField, type TasksPageProps, type TasksPageSaved, TypeBadge, type TypeBadgeProps, UPDATE_WORK_ITEM, type UpdateTaskInput, type UseMilestonesResult, type UseWorkItemLinksResult, WORK_ITEM_FIELDS, WORK_ITEM_LINK_FIELDS, WORK_ITEM_SUMMARY_FIELDS, type WorkItemDetail, type WorkItemLink, type WorkItemLinkList, type WorkItemLinkRelation, type WorkItemList, badgeVariants, cn, config, createPlanMagnetClient, enumLabel, getGraphQLEndpoint, getPlanMagnetClient, getPlanMagnetClientSafe, getPlanMagnetConfig, isPlanMagnetClientReady, mergeTaskLabels, resetPlanMagnetClient, resetPlanMagnetConfig, setPlanMagnetClient, setPlanMagnetConfig, useMilestones, usePlanMagnetContext, usePlanMagnetContextSafe, useTaskLabels, useWorkItemLinks, validateTrustedOrigin, waitForPlanMagnetClient };
|
|
1706
|
+
export { type AssigneeOption, Avatar, type AvatarProps, BULK_UPDATE_WORK_ITEMS, Badge, type BadgeProps, type BoardColumn, CREATE_WORK_ITEM, CREATE_WORK_ITEM_LINK, CreateTask, CreateTaskCore, type CreateTaskCoreProps, type CreateTaskField, type CreateTaskInput, type CreateTaskProps, type CreateWorkItemLinkInput, DEFAULT_BOARD_COLUMNS, DEFAULT_TASK_LABELS, DELETE_WORK_ITEM, DELETE_WORK_ITEM_LINK, Drawer, type DrawerProps, GET_PROJECTS, GET_WORK_ITEM, LIST_MILESTONES, LIST_WORK_ITEMS, LIST_WORK_ITEM_LINKS, LinkChip, type LinkChipProps, type ListMilestonesInput, type ListTasksInput, type ListWorkItemLinksInput, MILESTONE_FIELDS, MOVE_WORK_ITEM, type Milestone, type MilestoneList, type MilestoneStatus, Modal, type ModalProps, PRIORITY_META, PROJECT_SUMMARY_FIELDS, type PartialTaskLabels, type PlanMagnetClientConfig, type PlanMagnetConfig, PlanMagnetProvider, type PlanMagnetProviderProps, PriorityIndicator, type PriorityIndicatorProps, type Project, type ProjectList, type RenderLinkIcon, type ResolveAssignee, STATUS_META, type SavedView, SavedViewsMenu, type SavedViewsMenuProps, StatusIcon, type StatusIconProps, StatusPill, type StatusPillProps, TASK_PRIORITIES, TASK_STATUSES, TASK_TYPES, type Task, TaskBoard, TaskBoardCore, type TaskBoardCoreProps, type TaskBoardProps, TaskCard, type TaskCardProps, TaskCommentsCore, type TaskCommentsCoreProps, TaskDetail, TaskDetailCore, type TaskDetailCoreProps, type TaskDetailField, type TaskDetailProps, type TaskLabels, TaskLabelsProvider, TaskList, type TaskListColumn, TaskListCore, type TaskListCoreProps, type TaskListProps, type TaskListSort, type TaskPageInfo, type TaskPaginationInput, type TaskPriority, type TaskSavedResult, type TaskStatus, TaskTimelineCore, type TaskTimelineCoreProps, TaskToolbar, type TaskToolbarProps, type TaskType, type TaskView, TasksPage, TasksPageCore, type TasksPageCoreProps, type TasksPageField, type TasksPageProps, type TasksPageSaved, TypeBadge, type TypeBadgeProps, UPDATE_WORK_ITEM, type UpdateTaskInput, type UseMilestonesResult, type UseSavedViewsArgs, type UseSavedViewsResult, type UseWorkItemLinksResult, type ViewState, WORK_ITEM_FIELDS, WORK_ITEM_LINK_FIELDS, WORK_ITEM_SUMMARY_FIELDS, type WorkItemDetail, type WorkItemLink, type WorkItemLinkList, type WorkItemLinkRelation, type WorkItemList, badgeVariants, cn, config, createPlanMagnetClient, enumLabel, getGraphQLEndpoint, getPlanMagnetClient, getPlanMagnetClientSafe, getPlanMagnetConfig, isPlanMagnetClientReady, makeStorageKey, mergeTaskLabels, resetPlanMagnetClient, resetPlanMagnetConfig, setPlanMagnetClient, setPlanMagnetConfig, useMilestones, usePlanMagnetContext, usePlanMagnetContextSafe, useSavedViews, useTaskLabels, useWorkItemLinks, validateTrustedOrigin, waitForPlanMagnetClient };
|