schedulant 1.0.0-alpha.1 → 1.1.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.md +263 -0
- package/dist/components/datagrid/body-cell.d.ts +14 -0
- package/dist/components/datagrid/datagrid-body.d.ts +3 -0
- package/dist/components/datagrid/datagrid-head.d.ts +3 -0
- package/dist/components/datagrid/head-cell.d.ts +3 -0
- package/dist/components/timeline/timeline-lane.d.ts +1 -7
- package/dist/components/timeline/timeline-selection-overlay.d.ts +5 -0
- package/dist/hooks/use-move-resource.d.ts +15 -0
- package/dist/hooks/use-resource-area-resizer.d.ts +11 -0
- package/dist/hooks/use-timeline-selection.d.ts +11 -0
- package/dist/schedulant.css +1 -1
- package/dist/schedulant.d.ts +0 -1
- package/dist/schedulant.js +7001 -8032
- package/dist/types/checkpoint.d.ts +1 -8
- package/dist/types/day-timeline-view.d.ts +1 -2
- package/dist/types/event.d.ts +5 -17
- package/dist/types/index.d.ts +1 -2
- package/dist/types/milestone.d.ts +1 -9
- package/dist/types/month-timeline-view.d.ts +1 -2
- package/dist/types/quarter-timeline-view.d.ts +1 -2
- package/dist/types/resource.d.ts +8 -10
- package/dist/types/schedulant-view.d.ts +17 -3
- package/dist/types/schedulant.d.ts +4 -6
- package/dist/types/timeline-view.d.ts +2 -3
- package/dist/types/week-timeline-view.d.ts +1 -2
- package/dist/types/year-timeline-view.d.ts +1 -2
- package/dist/utils/dom.d.ts +1 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -44,3 +44,266 @@ Note: Schedulant is a project based on Typescript React, it is designed specific
|
|
|
44
44
|
* Schedulant supports **day**, **month**, **quarter**, and **year** views. This means that users can choose the view that best suits their needs and preferences to view and manage their schedule.
|
|
45
45
|
* Schedulant supports **exporting images**. This means that users can export their schedule or project timeline in the form of images, which is convenient for sharing and archiving.
|
|
46
46
|
* Schedulant supports **customizing row height and column width**. This means that users can adjust the row height and column width of the schedule according to their needs and preferences, making the display of the schedule more in line with their visual habits.
|
|
47
|
+
|
|
48
|
+
## Previews
|
|
49
|
+
|
|
50
|
+
* Day view
|
|
51
|
+

|
|
52
|
+
|
|
53
|
+
* Week view
|
|
54
|
+

|
|
55
|
+
|
|
56
|
+
* Month view
|
|
57
|
+

|
|
58
|
+
|
|
59
|
+
* Quarter view
|
|
60
|
+

|
|
61
|
+
|
|
62
|
+
* Year view
|
|
63
|
+

|
|
64
|
+
|
|
65
|
+
## Props
|
|
66
|
+
|
|
67
|
+
* **start:** Start date of the schedule view.
|
|
68
|
+
* **end:** End date of the schedule view.
|
|
69
|
+
* **editable:** Whether editing the schedule is allowed; if the current value is `false`, properties such as `eventMove`, `eventResizeStart`, `eventResizeEnd`, `milestonesMove`, and `checkpointMove` will become ineffective.
|
|
70
|
+
* **selectable:** Whether selecting on the timeline is allowed; if the current value is `true`, users can select time ranges on the timeline.
|
|
71
|
+
* **lineHeight:** Sets the line height of the schedule.
|
|
72
|
+
* **slotMinWidth:** Determines how wide each of the time-axis slots will be. Specified as a number of pixels. When not specified, a reasonable value will be automatically computed.
|
|
73
|
+
* **schedulantMaxHeight:** Sets the max height of the entire schedule.
|
|
74
|
+
* **schedulantViewType:** Sets the view type of the schedule. Currently, support day, week, month quarter and year view.
|
|
75
|
+
* **events:** An array of event objects that will be displayed on the schedule.
|
|
76
|
+
* **resources:** Tells the schedule to display resources from an array input. The resource's id property is the most important because is allows associating events with resources.
|
|
77
|
+
* **milestones:** An array of milestones objects that will be displayed on the schedule. (**Note:** This property is optional)
|
|
78
|
+
* **checkpoints:** An array of milestones objects that will be displayed on the schedule. (**Note:** This property is optional)
|
|
79
|
+
* **companyHolidays:** An array of company holidays that will be used to mark company holidays on the schedule. (**Note:** This property is optional)
|
|
80
|
+
* **specialWorkdays:** An array of special workdays that will be used to mark special workdays on the schedule. (**Note:** This property is optional)
|
|
81
|
+
* **nationalHolidays:** An array of national holidays that will be used to mark national holidays on the schedule. (**Note:** This property is optional)
|
|
82
|
+
* **resourceAreaWidth:** Determines the width of the area that contains the list of resources. Can be specified as a number of pixels, or a CSS string value, like "25%". default: "30%" (**Note:** This property is optional)
|
|
83
|
+
* **resourceAreaColumns:** Turns the resource area from a plain list of titles into a grid of data. An array of objects can be provided, each with information about a column. (**Note:** This property is optional)
|
|
84
|
+
* **enableEventContextMenu:** Whether to enable the right-click menu functionality for event. (**Note:** This property is optional)
|
|
85
|
+
* **eventContextMenuClick:** The event triggered when an option in the event's right-click menu is clicked. (**Note:** This property is optional)
|
|
86
|
+
* **eventContextMenuItems:** Configure options in the event's right-click menu. (**Note:** This property is optional)
|
|
87
|
+
* **eventDidMount:** Called right after the element has been added to the DOM. If the event data changes, this is NOT called again. (**Note:** This property is optional)
|
|
88
|
+
* **eventWillUnmount:** Called right before the element will be removed from the DOM. (**Note:** This property is optional)
|
|
89
|
+
* **eventMove:** Triggered when event move begins. (**Note:** This property is optional)
|
|
90
|
+
* **eventResizeStart:** Triggered when resizing stops and the event start date has changed in duration. (**Note:** This property is optional)
|
|
91
|
+
* **eventResizeEnd:** Triggered when resizing stops and the event end date has changed in duration. (**Note:** This property is optional)
|
|
92
|
+
* **enableMilestoneContextMenu:** Whether to enable the right-click menu functionality for milestone. (**Note:** This property is optional)
|
|
93
|
+
* **milestoneContextMenuClick:** The milestone triggered when an option in the milestone's right-click menu is clicked. (**Note:** This property is optional)
|
|
94
|
+
* **milestoneContextMenuItems:** Configure options in the milestone's right-click menu. (**Note:** This property is optional)
|
|
95
|
+
* **milestoneDidMount:** Called right after the element has been added to the DOM. If the milestone data changes, this is NOT called again. (**Note:** This property is optional)
|
|
96
|
+
* **milestoneWillUnmount:** Called right before the element will be removed from the DOM. (**Note:** This property is optional)
|
|
97
|
+
* **milestoneMove:** Triggered when milestone move begins. (**Note:** This property is optional)
|
|
98
|
+
* **enableCheckpointContextMenu:** Whether to enable the right-click menu functionality for checkpoint. (**Note:** This property is optional)
|
|
99
|
+
* **checkpointContextMenuClick:** The checkpoint triggered when an option in checkpoint's right-click menu is clicked. (**Note:** This property is optional)
|
|
100
|
+
* **checkpointContextMenuItems:** Configure options in the checkpoint's right-click menu. (**Note:** This property is optional)
|
|
101
|
+
* **checkpointDidMount:** Called right after the element has been added to the DOM. If the checkpoint data changes, this is NOT called again. (**Note:** This property is optional)
|
|
102
|
+
* **checkpointWillUnmount:** Called right before the element will be removed from the DOM. (**Note:** This property is optional)
|
|
103
|
+
* **checkpointMove:** Triggered when event move begins. (**Note:** This property is optional)
|
|
104
|
+
* **enableResourceLaneContextMenu:** Whether to enable the right-click menu functionality for resource lane. (**Note:** This property is optional)
|
|
105
|
+
* **resourceLaneContextMenuClick:** The resource lane triggered when an option in resource lane's right-click menu is clicked. (**Note:** This property is optional)
|
|
106
|
+
* **resourceLaneContextMenuItems:** Configure options in the resource lane's right-click menu. (**Note:** This property is optional)
|
|
107
|
+
* **resourceLaneDidMount:** Called right after the element has been added to the DOM. If the resource data changes, this is NOT called again. (**Note:** This property is optional)
|
|
108
|
+
* **resourceLaneWillUnmount:** Called right before the element will be removed from the DOM. (**Note:** This property is optional)
|
|
109
|
+
* **resourceLaneMove:** Triggered when resource lane move begins. (**Note:** This property is optional)
|
|
110
|
+
* **enableResourceLabelContextMenu:** Whether to enable the right-click menu functionality for resource label. (**Note:** This property is optional)
|
|
111
|
+
* **resourceLabelContextMenuClick:** The resource label triggered when an option in resource lane's right-click menu is clicked. (**Note:** This property is optional)
|
|
112
|
+
* **resourceLabelContextMenuItems:** Configure options in the resource lane's right-click menu. (**Note:** This property is optional)
|
|
113
|
+
* **resourceLabelDidMount:** Called right after the element has been added to the DOM. If the resource label data changes, this is NOT called again. (**Note:** This property is optional)
|
|
114
|
+
* **resourceLabelWillUnmount:** Called right before the element will be removed from the DOM. (**Note:** This property is optional)
|
|
115
|
+
* **timelineSlotLabelDidMount:** Called right after the element has been added to the DOM. (**Note:** This property is optional)
|
|
116
|
+
* **timelineSlotLabelWillUnmount:** Called right before the element will be removed from the DOM. (**Note:** This property is optional)
|
|
117
|
+
* **timelineSlotLaneDidMount:** Called right after the element has been added to the DOM. (**Note:** This property is optional)
|
|
118
|
+
* **timelineSlotLaneWillUnmount:** Called right before the element will be removed from the DOM. (**Note:** This property is optional)
|
|
119
|
+
* **schedulantDidMount:** Called right after the element has been added to the DOM. (**Note:** This property is optional)
|
|
120
|
+
* **schedulantWillUnmount:** Called right before the element will be removed from the DOM. (**Note:** This property is optional)
|
|
121
|
+
|
|
122
|
+
## 📦 Installation
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
npm install schedulant
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Basic Example
|
|
129
|
+
```typescript
|
|
130
|
+
import "schedulant/dist/schedulant.css";
|
|
131
|
+
const App = () => {
|
|
132
|
+
const mockResources = [
|
|
133
|
+
{
|
|
134
|
+
id: "8968845952632643583",
|
|
135
|
+
title: "Transfer to ATJ for learning and working",
|
|
136
|
+
parentId: "4575511461886459807",
|
|
137
|
+
extendedProps: {
|
|
138
|
+
order: 1
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
id: "8638818878966724025",
|
|
143
|
+
title: "Memory Test Software",
|
|
144
|
+
type: 1,
|
|
145
|
+
extendedProps: {
|
|
146
|
+
order: 2
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
id: "8858562325095899135",
|
|
151
|
+
title: "WFB 3D Viewer (Prototype)",
|
|
152
|
+
parentId: "8638818878966724025",
|
|
153
|
+
extendedProps: {
|
|
154
|
+
order: 1
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
];
|
|
158
|
+
const mockEvents: Array<Event> = [
|
|
159
|
+
{
|
|
160
|
+
id: "1",
|
|
161
|
+
title: "Transfer to ATJ for learning and working",
|
|
162
|
+
color: "#000000",
|
|
163
|
+
start: dayjs("2024-04-01"),
|
|
164
|
+
end: dayjs("2024-06-30"),
|
|
165
|
+
resourceId: "8968845952632643583"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
id: "2",
|
|
169
|
+
title: "Memory Test Software",
|
|
170
|
+
color: "rgba(0,0,0,0.57)",
|
|
171
|
+
start: dayjs("2021-01-01"),
|
|
172
|
+
end: dayjs("2024-12-31"),
|
|
173
|
+
resourceId: "8638818878966724025",
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
id: "3",
|
|
177
|
+
title: "WFB 3D Viewer (Prototype)",
|
|
178
|
+
color: "#000000",
|
|
179
|
+
start: dayjs("2024-04-01"),
|
|
180
|
+
end: dayjs("2024-06-15"),
|
|
181
|
+
resourceId: "8858562325095899135"
|
|
182
|
+
},
|
|
183
|
+
];
|
|
184
|
+
const mockCheckpoints: Array<Checkpoint> = [
|
|
185
|
+
{
|
|
186
|
+
id: "1",
|
|
187
|
+
title: "Test Condition Monitor",
|
|
188
|
+
color: "green",
|
|
189
|
+
timestamp: dayjs("2024-04-15"),
|
|
190
|
+
resourceId: "8968845952632643583",
|
|
191
|
+
},
|
|
192
|
+
];
|
|
193
|
+
const mockMilestones: Array<Milestone> = [
|
|
194
|
+
{
|
|
195
|
+
id: "1",
|
|
196
|
+
title: "milestone1",
|
|
197
|
+
timestamp: dayjs("2024-04-31"),
|
|
198
|
+
status: "Success",
|
|
199
|
+
resourceId: "8858562325095899135",
|
|
200
|
+
}
|
|
201
|
+
]
|
|
202
|
+
return (
|
|
203
|
+
<div>
|
|
204
|
+
<Schedulant start={dayjs("2024-01-01")}
|
|
205
|
+
end={dayjs("2024-10-01")}
|
|
206
|
+
editable={true}
|
|
207
|
+
lineHeight={40}
|
|
208
|
+
slotMinWidth={50}
|
|
209
|
+
schedulantMaxHeight={600}
|
|
210
|
+
schedulantViewType={"Day"}
|
|
211
|
+
resources={mockResources}
|
|
212
|
+
events={mockEvents}
|
|
213
|
+
checkpoints={mockCheckpoints}
|
|
214
|
+
milestones={mockMilestones}
|
|
215
|
+
enableEventContextMenu={true}
|
|
216
|
+
resourceAreaColumns={[
|
|
217
|
+
{
|
|
218
|
+
field: "title",
|
|
219
|
+
headerContent: "Title"
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
field: "order",
|
|
223
|
+
headerContent: "Order"
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
field: "parentId",
|
|
227
|
+
headerContent: "ParentId"
|
|
228
|
+
}
|
|
229
|
+
]}
|
|
230
|
+
eventContextMenuItems={[
|
|
231
|
+
{
|
|
232
|
+
title: "123",
|
|
233
|
+
label: "event lane",
|
|
234
|
+
}
|
|
235
|
+
]}
|
|
236
|
+
eventContextMenuClick={(arg: EventContextMenuArg) => {
|
|
237
|
+
// alert(arg.eventApi.getTitle());
|
|
238
|
+
}}
|
|
239
|
+
eventDidMount={(arg: EventMountArg) => {
|
|
240
|
+
// console.log(arg);
|
|
241
|
+
}}
|
|
242
|
+
eventMove={(arg: EventMoveMountArg) => {
|
|
243
|
+
console.log("el", arg.el);
|
|
244
|
+
console.log("title", arg.eventApi.getTitle());
|
|
245
|
+
console.log("startDate", arg.startDate.format("YYYY-MM-DD"));
|
|
246
|
+
console.log("endDate", arg.endDate.format("YYYY-MM-DD"));
|
|
247
|
+
console.log("scheduleApi", arg.scheduleApi);
|
|
248
|
+
}}
|
|
249
|
+
eventResizeEnd={(arg: EventResizeMountArg) => {
|
|
250
|
+
console.log("el", arg.el);
|
|
251
|
+
console.log("title", arg.eventApi.getTitle());
|
|
252
|
+
console.log("date", arg.date.format("YYYY-MM-DD"));
|
|
253
|
+
console.log("scheduleApi", arg.scheduleApi);
|
|
254
|
+
}}
|
|
255
|
+
eventResizeStart={(arg: EventResizeMountArg) => {
|
|
256
|
+
console.log("el", arg.el);
|
|
257
|
+
console.log("title", arg.eventApi.getTitle());
|
|
258
|
+
console.log("date", arg.date.format("YYYY-MM-DD"));
|
|
259
|
+
console.log("scheduleApi", arg.scheduleApi);
|
|
260
|
+
}}
|
|
261
|
+
enableResourceLabelContextMenu={true}
|
|
262
|
+
resourceLabelContextMenuItems={[
|
|
263
|
+
{
|
|
264
|
+
title: "123",
|
|
265
|
+
label: "resource label",
|
|
266
|
+
}
|
|
267
|
+
]}
|
|
268
|
+
resourceLabelContextMenuClick={(arg: ResourceLabelContextMenuArg) => {
|
|
269
|
+
alert(arg.label.headerContent);
|
|
270
|
+
}}
|
|
271
|
+
resourceLabelDidMount={(arg: ResourceLabelMountArg) => {
|
|
272
|
+
// console.log(arg);
|
|
273
|
+
}}
|
|
274
|
+
enableResourceLaneContextMenu={true}
|
|
275
|
+
resourceLaneContextMenuItems={[
|
|
276
|
+
{
|
|
277
|
+
title: "123",
|
|
278
|
+
label: "resource lane",
|
|
279
|
+
}
|
|
280
|
+
]}
|
|
281
|
+
resourceLaneContextMenuClick={(arg: ResourceLaneContextMenuArg) => {
|
|
282
|
+
// alert(arg.resourceApi.getTitle());
|
|
283
|
+
}}
|
|
284
|
+
resourceLaneDidMount={(arg: ResourceLaneMountArg) => {
|
|
285
|
+
// console.log(arg)
|
|
286
|
+
}}
|
|
287
|
+
milestoneDidMount={(arg: MilestoneMountArg) => {
|
|
288
|
+
const {el, milestoneApi} = arg;
|
|
289
|
+
el.title = milestoneApi.getTitle();
|
|
290
|
+
}}
|
|
291
|
+
milestoneMove={(arg: MilestoneMoveMountArg) => {
|
|
292
|
+
console.log("el", arg.el);
|
|
293
|
+
console.log("title", arg.milestoneApi.getTitle());
|
|
294
|
+
console.log("date", arg.date.format("YYYY-MM-DD"));
|
|
295
|
+
console.log("scheduleApi", arg.scheduleApi);
|
|
296
|
+
console.log("milestoneApi", arg.milestoneApi);
|
|
297
|
+
}}
|
|
298
|
+
checkpointMove={(arg: CheckpointMoveMountArg) => {
|
|
299
|
+
console.log("el", arg.el);
|
|
300
|
+
console.log("title", arg.checkpointApi.getTitle());
|
|
301
|
+
console.log("date", arg.date.format("YYYY-MM-DD"));
|
|
302
|
+
console.log("scheduleApi", arg.scheduleApi);
|
|
303
|
+
console.log("checkpointApi", arg.checkpointApi);
|
|
304
|
+
}}
|
|
305
|
+
/>
|
|
306
|
+
</div>
|
|
307
|
+
)
|
|
308
|
+
}
|
|
309
|
+
```
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { SchedulantApi } from '../../types/schedulant.ts';
|
|
2
2
|
import { ResourceApi, ResourceAreaColumn } from '../../types/resource.ts';
|
|
3
|
+
import { default as React } from 'react';
|
|
4
|
+
import { ResizerMouseDownFunc, ResizerMouseUp } from '../../hooks/use-resource-area-resizer.ts';
|
|
3
5
|
export declare const BodyCell: (props: {
|
|
4
6
|
schedulantApi: SchedulantApi;
|
|
5
7
|
resourceApi: ResourceApi;
|
|
@@ -7,4 +9,16 @@ export declare const BodyCell: (props: {
|
|
|
7
9
|
showPlusSquare: boolean;
|
|
8
10
|
showIndentation: boolean;
|
|
9
11
|
resourceAreaColumn: ResourceAreaColumn;
|
|
12
|
+
isResizable: boolean;
|
|
13
|
+
cellResizerMouseUp: ResizerMouseUp;
|
|
14
|
+
cellResizerMouseDownFunc: ResizerMouseDownFunc;
|
|
15
|
+
isDraggable?: boolean;
|
|
16
|
+
isDragging?: boolean;
|
|
17
|
+
isDragOver?: boolean;
|
|
18
|
+
dropPosition?: "before" | "after" | "child" | null;
|
|
19
|
+
onDragStart?: (e: React.DragEvent) => void;
|
|
20
|
+
onDragOver?: (e: React.DragEvent) => void;
|
|
21
|
+
onDragLeave?: (e: React.DragEvent) => void;
|
|
22
|
+
onDrop?: (e: React.DragEvent) => void;
|
|
23
|
+
onDragEnd?: (e: React.DragEvent) => void;
|
|
10
24
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { SchedulantView } from '../../types/schedulant-view.tsx';
|
|
2
|
+
import { ResizerMouseDownFunc, ResizerMouseUp } from '../../hooks/use-resource-area-resizer.ts';
|
|
2
3
|
export declare const DatagridBody: (props: {
|
|
3
4
|
schedulantView: SchedulantView;
|
|
5
|
+
cellResizerMouseUp: ResizerMouseUp;
|
|
6
|
+
cellResizerMouseDownFunc: ResizerMouseDownFunc;
|
|
4
7
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { SchedulantView } from '../../types/schedulant-view.tsx';
|
|
2
|
+
import { ResizerMouseDownFunc, ResizerMouseUp } from '../../hooks/use-resource-area-resizer.ts';
|
|
2
3
|
export declare const DatagridHead: (props: {
|
|
3
4
|
schedulantView: SchedulantView;
|
|
5
|
+
cellResizerMouseUp: ResizerMouseUp;
|
|
6
|
+
cellResizerMouseDownFunc: ResizerMouseDownFunc;
|
|
4
7
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { ResourceAreaColumn } from '../../types/resource.ts';
|
|
2
2
|
import { SchedulantApi } from '../../types/schedulant.ts';
|
|
3
|
+
import { ResizerMouseDownFunc, ResizerMouseUp } from '../../hooks/use-resource-area-resizer.ts';
|
|
3
4
|
export declare const HeadCell: (props: {
|
|
4
5
|
schedulantApi: SchedulantApi;
|
|
5
6
|
resourceAreaColumn: ResourceAreaColumn;
|
|
6
7
|
isResizable: boolean;
|
|
8
|
+
cellResizerMouseUp: ResizerMouseUp;
|
|
9
|
+
cellResizerMouseDownFunc: ResizerMouseDownFunc;
|
|
7
10
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { SchedulantApi } from '../../types/schedulant.ts';
|
|
3
|
-
export declare const TimelineLane: (props: {
|
|
4
|
-
schedulantApi: SchedulantApi;
|
|
5
|
-
resourceApi: ResourceApi;
|
|
6
|
-
timelineWidth: number;
|
|
7
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
1
|
+
export declare const TimelineLane: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ResourceApi } from '../types/resource.ts';
|
|
3
|
+
export type DragDropState = {
|
|
4
|
+
draggedResource: ResourceApi | null;
|
|
5
|
+
dragOverResource: ResourceApi | null;
|
|
6
|
+
dropPosition: 'before' | 'after' | 'child' | null;
|
|
7
|
+
};
|
|
8
|
+
export declare const useMoveResource: (onReorder: (el: HTMLElement, draggedId: string, targetId: string, position: "before" | "after" | "child") => void) => {
|
|
9
|
+
dragState: DragDropState;
|
|
10
|
+
handleDragStart: (resourceApi: ResourceApi) => (e: React.DragEvent) => void;
|
|
11
|
+
handleDragOver: (resourceApi: ResourceApi) => (e: React.DragEvent) => void;
|
|
12
|
+
handleDragLeave: (e: React.DragEvent) => void;
|
|
13
|
+
handleDrop: (resourceApi: ResourceApi) => (e: React.DragEvent) => void;
|
|
14
|
+
handleDragEnd: () => void;
|
|
15
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Dispatch, MouseEventHandler, MutableRefObject, RefObject } from 'react';
|
|
2
|
+
import { Action } from '../context/schedulant-state';
|
|
3
|
+
export type ResizerMouseUp = MouseEventHandler<HTMLDivElement>;
|
|
4
|
+
export type ResizerMouseDown = MouseEventHandler<HTMLDivElement>;
|
|
5
|
+
export type ResizerMouseDownFunc = (cellRef: MutableRefObject<HTMLDivElement | null>) => ResizerMouseDown;
|
|
6
|
+
export declare const useResourceAreaResizer: (dispatch: Dispatch<Action>, scheduleElRef: RefObject<HTMLDivElement>, resourceAreaColElRef: RefObject<HTMLTableColElement>) => {
|
|
7
|
+
datagridResizerMouseUp: ResizerMouseUp;
|
|
8
|
+
datagridResizerMouseDown: ResizerMouseDown;
|
|
9
|
+
datagridCellResizerMouseUp: ResizerMouseUp;
|
|
10
|
+
datagridCellResizerMouseDownFunc: ResizerMouseDownFunc;
|
|
11
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SchedulantView } from '../types/schedulant-view.tsx';
|
|
2
|
+
export type SelectionBox = {
|
|
3
|
+
startX: number;
|
|
4
|
+
startY: number;
|
|
5
|
+
currentX: number;
|
|
6
|
+
currentY: number;
|
|
7
|
+
};
|
|
8
|
+
export declare const useTimelineSelection: (schedulantView: SchedulantView, containerRef: React.RefObject<HTMLDivElement>) => {
|
|
9
|
+
isSelecting: boolean;
|
|
10
|
+
selectionBox: SelectionBox | null;
|
|
11
|
+
};
|
package/dist/schedulant.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background-color:#f5f5f5}::-webkit-scrollbar-thumb{background:#848484;border-radius:5px;border:2px solid #fff;box-shadow:inset 0 0 5px #0003}::-webkit-scrollbar-thumb:hover{background-color:#91003c}::-webkit-scrollbar-button{display:none}::-webkit-scrollbar-corner{background-color:#f5f5f5}.schedulant,.schedulant *{box-sizing:border-box}.schedulant{direction:ltr;text-align:left;display:flex;flex-direction:column;font-size:1em;position:relative}.schedulant table{border-collapse:collapse;border-spacing:0;font-size:1em;table-layout:fixed;width:100%}.schedulant table td,.schedulant table th{padding:0;border:1px solid #CED4DA}.schedulant table th{text-align:center}.schedulant .schedulant-view-harness{flex-grow:1;position:relative}.schedulant .schedulant-view-harness .schedulant-view{top:0;right:0;bottom:0;left:0;position:absolute}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-scroller-harness{height:100%;direction:ltr;overflow:hidden;position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-timeline-divider{cursor:col-resize;width:3px;background-color:#e9ecef}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-datagrid-cell-frame{height:100%;display:flex;justify-content:flex-start;align-items:center;position:relative;cursor:pointer}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-datagrid-cell-frame .schedulant-datagrid-cell-cushion{overflow:hidden;padding-left:8px;white-space:nowrap}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-header>td{border-bottom-style:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-header .schedulant-scroller-harness .schedulant-scroller-header-left{height:100%;overflow:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-header .schedulant-scroller-harness .schedulant-scroller-header-left .schedulant-datagrid-header{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-header .schedulant-scroller-harness .schedulant-scroller-header-left .schedulant-datagrid-header td,.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-header .schedulant-scroller-harness .schedulant-scroller-header-left .schedulant-datagrid-header th{border-bottom-style:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-header .schedulant-scroller-harness .schedulant-scroller-header-left .schedulant-datagrid-header .schedulant-datagrid-cell-resizer{position:absolute;top:0;bottom:0;cursor:col-resize;width:10px;z-index:1;right:-5px}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-header .schedulant-scroller-harness .schedulant-scroller-header-right{overflow:hidden scroll}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-header .schedulant-scroller-harness .schedulant-scroller-header-right .schedulant-timeline-header table tr:last-child td,.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-header .schedulant-scroller-harness .schedulant-scroller-header-right .schedulant-timeline-header table tr:last-child th{border-bottom-style:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-left{top:0;right:0;bottom:0;left:0;position:absolute;overflow:scroll}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-left::-webkit-scrollbar{width:0}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-right{top:0;right:0;bottom:0;left:0;position:absolute;overflow:scroll}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body{min-height:100%;position:relative;z-index:1}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-slots{position:absolute;top:0;bottom:0;z-index:1}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-slots .schedulant-timeline-slot-frame{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-slots>table{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame{position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-lane{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events{position:relative;width:0;z-index:3}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events .schedulant-timeline-event-harness{position:absolute;z-index:2}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events .schedulant-timeline-event-harness .schedulant-timeline-event{border-radius:5px;display:flex;justify-content:space-between}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events .schedulant-timeline-event-harness .schedulant-timeline-event .schedulant-event-main{padding-left:5px;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones{position:relative;width:0;z-index:4}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness{position:absolute;z-index:2}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness .schedulant-timeline-milestone{width:100%;text-align:center}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness .schedulant-timeline-milestone .schedulant-milestone-main svg{transition:transform .3s ease}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness .schedulant-timeline-milestone .schedulant-milestone-main svg:hover{transform:scale(1.2);cursor:pointer}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints{position:relative;width:0;z-index:4}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness{position:absolute;z-index:2}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness .schedulant-timeline-checkpoint{width:100%;text-align:center}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness .schedulant-timeline-checkpoint .schedulant-checkpoint-main svg{transition:transform .3s ease}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness .schedulant-timeline-checkpoint .schedulant-checkpoint-main svg:hover{transform:scale(1.2);cursor:pointer}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.schedulant .schedulant-icon{display:inline-block;height:12px;width:12px;margin-right:1px}.schedulant .schedulant-holiday{background-color:#e9ecef}
|
|
1
|
+
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background-color:#f5f5f5}::-webkit-scrollbar-thumb{background:#848484;border-radius:5px;border:2px solid #fff;box-shadow:inset 0 0 5px #0003}::-webkit-scrollbar-thumb:hover{background-color:#91003c}::-webkit-scrollbar-button{display:none}::-webkit-scrollbar-corner{background-color:#f5f5f5}.schedulant,.schedulant *{box-sizing:border-box}.schedulant{direction:ltr;text-align:left;display:flex;flex-direction:column;font-size:1em;position:relative}.schedulant table{border-collapse:collapse;border-spacing:0;font-size:1em;table-layout:fixed;width:100%}.schedulant table td,.schedulant table th{padding:0;border:1px solid #CED4DA}.schedulant table th{text-align:center}.schedulant .schedulant-view-harness{flex-grow:1;position:relative}.schedulant .schedulant-view-harness .schedulant-view{inset:0;position:absolute}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-scroller-harness{height:100%;direction:ltr;overflow:hidden;position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-timeline-divider{cursor:col-resize;width:3px;background-color:#e9ecef}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-datagrid-cell-frame{height:100%;display:flex;justify-content:flex-start;align-items:center;position:relative;cursor:pointer}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-datagrid-cell-frame .schedulant-datagrid-cell-cushion{overflow:hidden;padding-left:8px;white-space:nowrap}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-dragging{opacity:.5;background-color:#f0f0f0}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-before{position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-before:before{content:"";position:absolute;top:-2px;left:0;right:0;height:4px;background-color:#bce8f1b3;z-index:10}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-after{position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-after:after{content:"";position:absolute;bottom:-2px;left:0;right:0;height:4px;background-color:#bce8f1b3;z-index:10}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section .schedulant-resource-drop-child{background-color:#bce8f1b3;box-shadow:inset 0 0 0 2px #bce8f1b3}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head>td{border-bottom-style:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left{height:100%;overflow:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left .schedulant-datagrid-head{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left .schedulant-datagrid-head td,.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left .schedulant-datagrid-head th{border-bottom-style:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-left .schedulant-datagrid-head .schedulant-datagrid-cell-resizer{position:absolute;top:0;bottom:0;cursor:col-resize;width:10px;z-index:1;right:-5px}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-right{overflow:hidden scroll}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-right .schedulant-timeline-head table tr:last-child td,.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-head .schedulant-scroller-harness .schedulant-scroller-head-right .schedulant-timeline-head table tr:last-child th{border-bottom-style:hidden}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-left::-webkit-scrollbar{width:0}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-left{inset:0;overflow:scroll;position:absolute}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-left .schedulant-datagrid-body .schedulant-datagrid-cell-resizer{position:absolute;top:0;bottom:0;cursor:col-resize;width:10px;z-index:1;right:-5px}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-scroller-harness .schedulant-scroller-body-right{inset:0;position:absolute;overflow:scroll}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body{min-height:100%;position:relative;z-index:1}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-slots{position:absolute;top:0;bottom:0;z-index:1}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-slots .schedulant-timeline-slot-frame{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-slots>table{height:100%}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame{position:relative}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-lane{position:absolute;inset:0;z-index:1}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events{position:relative;width:0;z-index:3}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events .schedulant-timeline-event-harness{position:absolute;z-index:2}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events .schedulant-timeline-event-harness .schedulant-timeline-event{border-radius:5px;display:flex;justify-content:space-between}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-events .schedulant-timeline-event-harness .schedulant-timeline-event .schedulant-event-main{padding-left:5px;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones{position:relative;width:0;z-index:4}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness{position:absolute;z-index:2}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness .schedulant-timeline-milestone{width:100%;text-align:center}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness .schedulant-timeline-milestone .schedulant-milestone-main svg{transition:transform .3s ease}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-milestones .schedulant-timeline-milestone-harness .schedulant-timeline-milestone .schedulant-milestone-main svg:hover{transform:scale(1.2);cursor:pointer}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints{position:relative;width:0;z-index:4}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness{position:absolute;z-index:2}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness .schedulant-timeline-checkpoint{width:100%;text-align:center}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness .schedulant-timeline-checkpoint .schedulant-checkpoint-main svg{transition:transform .3s ease}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid .schedulant-scrollgrid-section-body .schedulant-timeline-body .schedulant-timeline-drawing-board .schedulant-timeline-lane-frame .schedulant-timeline-checkpoints .schedulant-timeline-checkpoint-harness .schedulant-timeline-checkpoint .schedulant-checkpoint-main svg:hover{transform:scale(1.2);cursor:pointer}.schedulant .schedulant-view-harness .schedulant-view .schedulant-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.schedulant .schedulant-icon{display:inline-block;height:12px;width:12px;margin-right:1px}.schedulant .schedulant-holiday{background-color:#e9ecef}.schedulant .schedulant-timeline-selection-overlay{background-color:#4285f433;border:1px solid rgba(66,133,244,.6);border-radius:2px;pointer-events:none}.schedulant .schedulant-timeline-body.selecting{cursor:crosshair;-webkit-user-select:none;user-select:none}
|
package/dist/schedulant.d.ts
CHANGED
|
@@ -5,4 +5,3 @@ export type { Milestone, MilestoneArg, MilestoneStatus, MilestoneMountArg, Publi
|
|
|
5
5
|
export type { Checkpoint, CheckpointArg, CheckpointMountArg, PublicCheckpointApi, CheckpointMoveMountArg, CheckpointContextMenuArg, CheckpointContextMenuItems } from './types';
|
|
6
6
|
export type { Resource, ResourceLaneArg, ResourceLabelArg, PublicResourceApi, ResourceAreaColumn, ResourceLaneMountArg, ResourceLabelMountArg, ResourceContextMenuItems, ResourceLaneContextMenuArg, ResourceLabelContextMenuArg } from './types';
|
|
7
7
|
export type { TimelineSlotArg, TimelineSlotLaneMountArg, TimelineSlotLabelMountArg } from './types';
|
|
8
|
-
export type { SelectInfoArg } from './types';
|