@mogura/moguchart-react 1.1.0 → 1.2.0

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/README.ja.md CHANGED
@@ -94,6 +94,46 @@ export function MyGanttView() {
94
94
 
95
95
  ---
96
96
 
97
+ ## 主な Props
98
+
99
+ | Prop 名 | 型 | 説明 |
100
+ |---|---|---|
101
+ | `rows` | `GanttRow[]` | ガントチャートの行・タスクデータ |
102
+ | `option` | `GanttChartOption` | カレンダー、ズーム、履歴、依存関係等の各種設定 |
103
+ | `theme` | `'light' \| 'dark'` | カラーテーマ |
104
+ | `selectedRowIds` | `string[]` | 選択中の行ID一覧 |
105
+ | `selectedTaskIds` | `string[]` | 選択中のタスクID一覧 |
106
+ | `selectedDependency` | `{ sourceTaskId: string; targetTaskId: string } \| null` | 選択中の依存関係線(ハイライト状態) |
107
+ | `externalDraggingTask` | `GanttTask \| null` | 外部からドラッグ中のタスクプレビュー |
108
+
109
+ ---
110
+
111
+ ## 命令的 API(ref を介した操作)
112
+
113
+ `ref` を介して `GanttChartElement` インスタンスを取得することで、Undo / Redo やズーム、エクスポートなどの命令的メソッドを呼び出せます。
114
+
115
+ ```tsx
116
+ import React, { useRef } from 'react'
117
+ import { GanttChart, type GanttChartElement } from '@mogura/moguchart-react'
118
+
119
+ export function GanttToolbar() {
120
+ const chartRef = useRef<GanttChartElement>(null)
121
+
122
+ return (
123
+ <div>
124
+ <button onClick={() => chartRef.current?.undo()}>取り消し (Undo)</button>
125
+ <button onClick={() => chartRef.current?.redo()}>やり直し (Redo)</button>
126
+ <button onClick={() => chartRef.current?.zoomIn()}>ズームイン</button>
127
+ <button onClick={() => chartRef.current?.zoomOut()}>ズームアウト</button>
128
+ <button onClick={() => chartRef.current?.resetZoom()}>ズームリセット</button>
129
+ <GanttChart ref={chartRef} rows={[]} />
130
+ </div>
131
+ )
132
+ }
133
+ ```
134
+
135
+ ---
136
+
97
137
  ## プラグイン(エクスポート機能)との連携
98
138
 
99
139
  PNG や PDF のエクスポートを行う場合は、`@mogura/moguchart-plugin-export` を組み合わせます。
@@ -119,6 +159,7 @@ export function ExportableGantt() {
119
159
  await chartRef.current.exportImage('png', {
120
160
  filename: 'my-schedule',
121
161
  download: true,
162
+ normalizeZoom: true, // ズーム倍率に関わらず標準スケールで出力
122
163
  })
123
164
  }
124
165
  }
@@ -156,9 +197,13 @@ export function ExportableGantt() {
156
197
  | `onRowToggleCollapse` | 行の開閉時(WBS) |
157
198
  | `onDependencyCreate` | 依存関係(リンク)作成時 |
158
199
  | `onDependencyClick` | 依存関係クリック時 |
200
+ | `onDependencySelect` | 依存関係の選択状態変更時(ハイライト・削除ボタン表示) |
201
+ | `onDependencyDelete` | 依存関係削除時 |
159
202
  | `onMarkerDblClick` | マーカーダブルクリック時 |
160
203
  | `onMarkerContextMenu` | マーカー右クリック時 |
161
204
  | `onZoomChange` | ズーム倍率変更時 |
205
+ | `onCommand` | 操作コマンド実行時(Undo / Redo 対象の操作完了時) |
206
+ | `onHistoryChange` | 履歴スタック変更時(Undo / Redo 可否状態の更新時) |
162
207
  | `onMinimapMove` | ミニマップスクロール時 |
163
208
  | `onMinimapResize` | ミニマップリサイズ時 |
164
209
  | `onMinimapCollapse` | ミニマップ折りたたみ時 |
package/README.md CHANGED
@@ -4,6 +4,8 @@ Official React wrapper component for [`@mogura/moguchart-core`](https://github.c
4
4
 
5
5
  Built on top of Lit's official `@lit/react`, it combines the high performance and framework independence of Web Components with a type-safe, idiomatic React developer experience.
6
6
 
7
+ [日本語版ドキュメントはこちら (Japanese documentation)](./README.ja.md)
8
+
7
9
  ---
8
10
 
9
11
  ## Features
@@ -94,6 +96,46 @@ export function MyGanttView() {
94
96
 
95
97
  ---
96
98
 
99
+ ## Main Props
100
+
101
+ | Prop | Type | Description |
102
+ |---|---|---|
103
+ | `rows` | `GanttRow[]` | Gantt chart row and task data |
104
+ | `option` | `GanttChartOption` | Configuration for calendar, zoom, history, dependencies, etc. |
105
+ | `theme` | `'light' \| 'dark'` | Color theme |
106
+ | `selectedRowIds` | `string[]` | Array of selected row IDs |
107
+ | `selectedTaskIds` | `string[]` | Array of selected task IDs |
108
+ | `selectedDependency` | `{ sourceTaskId: string; targetTaskId: string } \| null` | Currently selected dependency connection (highlighted) |
109
+ | `externalDraggingTask` | `GanttTask \| null` | External task data currently being dragged over the chart |
110
+
111
+ ---
112
+
113
+ ## Imperative API (via `ref`)
114
+
115
+ Access the underlying `GanttChartElement` instance via `ref` to invoke methods such as Undo/Redo, zoom, and exports:
116
+
117
+ ```tsx
118
+ import React, { useRef } from 'react'
119
+ import { GanttChart, type GanttChartElement } from '@mogura/moguchart-react'
120
+
121
+ export function GanttToolbar() {
122
+ const chartRef = useRef<GanttChartElement>(null)
123
+
124
+ return (
125
+ <div>
126
+ <button onClick={() => chartRef.current?.undo()}>Undo</button>
127
+ <button onClick={() => chartRef.current?.redo()}>Redo</button>
128
+ <button onClick={() => chartRef.current?.zoomIn()}>Zoom In</button>
129
+ <button onClick={() => chartRef.current?.zoomOut()}>Zoom Out</button>
130
+ <button onClick={() => chartRef.current?.resetZoom()}>Reset Zoom</button>
131
+ <GanttChart ref={chartRef} rows={[]} />
132
+ </div>
133
+ )
134
+ }
135
+ ```
136
+
137
+ ---
138
+
97
139
  ## Using with Plugins (e.g. Export)
98
140
 
99
141
  To export charts as PNG or PDF, pair with `@mogura/moguchart-plugin-export`:
@@ -119,6 +161,7 @@ export function ExportableGantt() {
119
161
  await chartRef.current.exportImage('png', {
120
162
  filename: 'my-schedule',
121
163
  download: true,
164
+ normalizeZoom: true, // Export at baseline 100% scale regardless of current zoom
122
165
  })
123
166
  }
124
167
  }
@@ -156,12 +199,16 @@ export function ExportableGantt() {
156
199
  | `onRowToggleCollapse` | Fired when a row is expanded or collapsed (WBS) |
157
200
  | `onDependencyCreate` | Fired when a dependency link is created |
158
201
  | `onDependencyClick` | Fired when a dependency link is clicked |
202
+ | `onDependencySelect` | Fired when dependency selection changes (highlight / delete button shown) |
203
+ | `onDependencyDelete` | Fired when a dependency link is deleted |
159
204
  | `onMarkerDblClick` | Fired when a marker is double-clicked |
160
205
  | `onMarkerContextMenu` | Fired on marker right-click |
161
206
  | `onZoomChange` | Fired when zoom scale changes |
207
+ | `onCommand` | Fired when a command is executed (tracked for Undo/Redo) |
208
+ | `onHistoryChange` | Fired when history stack changes (`canUndo`/`canRedo` updated) |
162
209
  | `onMinimapMove` | Fired when minimap viewport scrolls |
163
- | `onMinimapResize` | Fired when minimap is resized |
164
- | `onMinimapCollapse` | Fired when minimap is collapsed or expanded |
210
+ | `onMinimapResize` | Minimap is resized |
211
+ | `onMinimapCollapse` | Minimap is collapsed or expanded |
165
212
  | `onChartContextMenu` | Fired on chart background right-click |
166
213
 
167
214
  ---
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { type EventName } from '@lit/react';
3
- import { GanttChartElement, type ChartContextMenuEventDetail, type MinimapMoveEventDetail, type MinimapResizeEventDetail, type MinimapCollapseEventDetail, type TaskUpdateEventDetail, type BarHoverEventDetail, type TaskClickEventDetail, type TaskContextMenuEventDetail, type TaskDropEventDetail, type RowReorderEventDetail, type RowHeaderResizeEventDetail, type RowSelectionChangeEventDetail, type BarSelectionChangeEventDetail, type RowHeaderClickEventDetail, type RowHeaderDblClickEventDetail, type RowHeaderContextMenuEventDetail, type RowToggleCollapseEventDetail, type DependencyCreateEventDetail, type DependencyClickEventDetail, type MarkerDblClickEventDetail, type MarkerContextMenuEventDetail, type TaskDeleteEventDetail, type ZoomChangeEventDetail, type TaskProgressChangeEventDetail } from '@mogura/moguchart-core';
3
+ import { GanttChartElement, type ChartContextMenuEventDetail, type MinimapMoveEventDetail, type MinimapResizeEventDetail, type MinimapCollapseEventDetail, type TaskUpdateEventDetail, type BarHoverEventDetail, type TaskClickEventDetail, type TaskContextMenuEventDetail, type TaskDropEventDetail, type RowReorderEventDetail, type RowHeaderResizeEventDetail, type RowSelectionChangeEventDetail, type BarSelectionChangeEventDetail, type RowHeaderClickEventDetail, type RowHeaderDblClickEventDetail, type RowHeaderContextMenuEventDetail, type RowToggleCollapseEventDetail, type DependencyCreateEventDetail, type DependencyClickEventDetail, type DependencyDeleteEventDetail, type DependencySelectEventDetail, type MarkerDblClickEventDetail, type MarkerContextMenuEventDetail, type TaskDeleteEventDetail, type ZoomChangeEventDetail, type TaskProgressChangeEventDetail, type CommandEventDetail, type HistoryChangeEventDetail } from '@mogura/moguchart-core';
4
4
  /**
5
5
  * @mogura/moguchart-core の GanttChartElement をラップした React コンポーネント。
6
6
  * Web Components のライフサイクルと完全同期し、React のプロパティやイベントハンドラー、ref をサポートします。
@@ -26,11 +26,15 @@ export declare const GanttChart: import("@lit/react").ReactWebComponent<GanttCha
26
26
  onRowToggleCollapse: EventName<CustomEvent<RowToggleCollapseEventDetail>>;
27
27
  onDependencyCreate: EventName<CustomEvent<DependencyCreateEventDetail>>;
28
28
  onDependencyClick: EventName<CustomEvent<DependencyClickEventDetail>>;
29
+ onDependencyDelete: EventName<CustomEvent<DependencyDeleteEventDetail>>;
30
+ onDependencySelect: EventName<CustomEvent<DependencySelectEventDetail>>;
29
31
  onMarkerDblClick: EventName<CustomEvent<MarkerDblClickEventDetail>>;
30
32
  onMarkerContextMenu: EventName<CustomEvent<MarkerContextMenuEventDetail>>;
31
33
  onTaskDelete: EventName<CustomEvent<TaskDeleteEventDetail>>;
32
34
  onZoomChange: EventName<CustomEvent<ZoomChangeEventDetail>>;
33
35
  onTaskProgressChange: EventName<CustomEvent<TaskProgressChangeEventDetail>>;
36
+ onCommand: EventName<CustomEvent<CommandEventDetail>>;
37
+ onHistoryChange: EventName<CustomEvent<HistoryChangeEventDetail>>;
34
38
  }>;
35
39
  /** GanttChart コンポーネントの Props 型定義 */
36
40
  export type GanttChartProps = React.ComponentProps<typeof GanttChart>;
@@ -28,11 +28,15 @@ var r = t({
28
28
  onRowToggleCollapse: "row-toggle-collapse",
29
29
  onDependencyCreate: "dependency-create",
30
30
  onDependencyClick: "dependency-click",
31
+ onDependencyDelete: "dependency-delete",
32
+ onDependencySelect: "dependency-select",
31
33
  onMarkerDblClick: "marker-dblclick",
32
34
  onMarkerContextMenu: "marker-contextmenu",
33
35
  onTaskDelete: "task-delete",
34
36
  onZoomChange: "zoom-change",
35
- onTaskProgressChange: "task-progress-change"
37
+ onTaskProgressChange: "task-progress-change",
38
+ onCommand: "command",
39
+ onHistoryChange: "history-change"
36
40
  }
37
41
  });
38
42
  //#endregion
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("react"),require("@lit/react"),require("@mogura/moguchart-core")):typeof define==`function`&&define.amd?define([`exports`,`react`,`@lit/react`,`@mogura/moguchart-core`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.MoguchartReact={},e.React,e.LitReact,e.MoguchartCore))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var i=Object.create,a=Object.defineProperty,o=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,c=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,u=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=s(t),c=0,u=i.length,d;c<u;c++)d=i[c],!l.call(e,d)&&d!==n&&a(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(r=o(t,d))||r.enumerable});return e};t=((e,t,n)=>(n=e==null?{}:i(c(e)),u(t||!e||!e.__esModule||!l.call(e,`default`)?a(n,`default`,{value:e,enumerable:!0}):n,e)))(t,1),e.GanttChart=(0,n.createComponent)({tagName:`gantt-chart`,elementClass:r.GanttChartElement,react:t.default,events:{onChartContextMenu:`chart-contextmenu`,onMinimapMove:`minimap-move`,onMinimapResize:`minimap-resize`,onMinimapCollapse:`minimap-collapse`,onTaskUpdate:`task-update`,onBarHover:`bar-hover`,onTaskClick:`task-click`,onTaskDblClick:`task-dblclick`,onTaskContextMenu:`task-contextmenu`,onTaskDrop:`task-drop`,onRowReordered:`row-reordered`,onRowHeaderResize:`row-header-resize`,onRowSelectionChange:`row-selection-change`,onBarSelectionChange:`bar-selection-change`,onRowHeaderClick:`row-header-click`,onRowHeaderDblClick:`row-header-dblclick`,onRowHeaderContextMenu:`row-header-contextmenu`,onRowToggleCollapse:`row-toggle-collapse`,onDependencyCreate:`dependency-create`,onDependencyClick:`dependency-click`,onMarkerDblClick:`marker-dblclick`,onMarkerContextMenu:`marker-contextmenu`,onTaskDelete:`task-delete`,onZoomChange:`zoom-change`,onTaskProgressChange:`task-progress-change`}}),Object.keys(r).forEach(function(t){t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return r[t]}})})});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("react"),require("@lit/react"),require("@mogura/moguchart-core")):typeof define==`function`&&define.amd?define([`exports`,`react`,`@lit/react`,`@mogura/moguchart-core`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.MoguchartReact={},e.React,e.LitReact,e.MoguchartCore))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var i=Object.create,a=Object.defineProperty,o=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,c=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,u=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=s(t),c=0,u=i.length,d;c<u;c++)d=i[c],!l.call(e,d)&&d!==n&&a(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(r=o(t,d))||r.enumerable});return e};t=((e,t,n)=>(n=e==null?{}:i(c(e)),u(t||!e||!e.__esModule||!l.call(e,`default`)?a(n,`default`,{value:e,enumerable:!0}):n,e)))(t,1),e.GanttChart=(0,n.createComponent)({tagName:`gantt-chart`,elementClass:r.GanttChartElement,react:t.default,events:{onChartContextMenu:`chart-contextmenu`,onMinimapMove:`minimap-move`,onMinimapResize:`minimap-resize`,onMinimapCollapse:`minimap-collapse`,onTaskUpdate:`task-update`,onBarHover:`bar-hover`,onTaskClick:`task-click`,onTaskDblClick:`task-dblclick`,onTaskContextMenu:`task-contextmenu`,onTaskDrop:`task-drop`,onRowReordered:`row-reordered`,onRowHeaderResize:`row-header-resize`,onRowSelectionChange:`row-selection-change`,onBarSelectionChange:`bar-selection-change`,onRowHeaderClick:`row-header-click`,onRowHeaderDblClick:`row-header-dblclick`,onRowHeaderContextMenu:`row-header-contextmenu`,onRowToggleCollapse:`row-toggle-collapse`,onDependencyCreate:`dependency-create`,onDependencyClick:`dependency-click`,onDependencyDelete:`dependency-delete`,onDependencySelect:`dependency-select`,onMarkerDblClick:`marker-dblclick`,onMarkerContextMenu:`marker-contextmenu`,onTaskDelete:`task-delete`,onZoomChange:`zoom-change`,onTaskProgressChange:`task-progress-change`,onCommand:`command`,onHistoryChange:`history-change`}}),Object.keys(r).forEach(function(t){t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return r[t]}})})});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mogura/moguchart-react",
3
3
  "type": "module",
4
- "version": "1.1.0",
4
+ "version": "1.2.0",
5
5
  "description": "React wrapper for @mogura/moguchart-core Gantt chart component",
6
6
  "license": "MIT",
7
7
  "author": "Murakami Hiroyuki",
@@ -24,6 +24,7 @@
24
24
  ],
25
25
  "files": [
26
26
  "dist",
27
+ "LICENSE",
27
28
  "README.md",
28
29
  "README.ja.md"
29
30
  ],
@@ -40,7 +41,7 @@
40
41
  "peerDependencies": {
41
42
  "react": "^18.0.0 || ^19.0.0",
42
43
  "react-dom": "^18.0.0 || ^19.0.0",
43
- "@mogura/moguchart-core": "1.1.0"
44
+ "@mogura/moguchart-core": "1.2.0"
44
45
  },
45
46
  "dependencies": {
46
47
  "@lit/react": "^1.0.8"
@@ -56,7 +57,7 @@
56
57
  "typescript": "^5.9.3",
57
58
  "vite": "^8.0.0",
58
59
  "vitest": "^3.0.0",
59
- "@mogura/moguchart-core": "1.1.0"
60
+ "@mogura/moguchart-core": "1.2.0"
60
61
  },
61
62
  "scripts": {
62
63
  "build": "vite build && pnpm exec tsc -p tsconfig.build.json",