@apia/scheduler-component 4.0.28
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 +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +553 -0
- package/dist/index.js.map +1 -0
- package/package.json +44 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { Scheduler, ISchedulerDataRetriever, IScheduleInitialProps } from '@apia/scheduler-controller';
|
|
3
|
+
|
|
4
|
+
declare const SchedulerComponent: (({ controller, retriever, properties, getController, }: {
|
|
5
|
+
controller?: Scheduler;
|
|
6
|
+
retriever?: ISchedulerDataRetriever;
|
|
7
|
+
properties?: IScheduleInitialProps;
|
|
8
|
+
getController?: (ctrl: Scheduler) => void;
|
|
9
|
+
}) => react_jsx_runtime.JSX.Element | null) & {
|
|
10
|
+
displayName: string;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { SchedulerComponent };
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,553 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { Box, getVariant, Heading, Spinner, Label, useBreakpointIndex } from '@apia/theme';
|
|
3
|
+
import dayjs from 'dayjs';
|
|
4
|
+
import { observer } from 'mobx-react-lite';
|
|
5
|
+
import { ApiaUtil, SimpleButton, IconButton, DateInput } from '@apia/components';
|
|
6
|
+
import React, { useCallback, createContext, useState, useContext } from 'react';
|
|
7
|
+
import { getLabel, arrayOrArray, getDateFormat, toBoolean, useMountTransition, isChild, getSpecificParent, formatMessage } from '@apia/util';
|
|
8
|
+
import { Icon } from '@apia/icons';
|
|
9
|
+
import { ApiaApi, makeApiaUrl } from '@apia/api';
|
|
10
|
+
import { Table } from '@apia/table2-component';
|
|
11
|
+
import { Scheduler } from '@apia/scheduler-controller';
|
|
12
|
+
|
|
13
|
+
const ReserveDetails = observer(
|
|
14
|
+
({ processes }) => {
|
|
15
|
+
let content = /* @__PURE__ */ jsx(Box, { className: "no__appoinments", children: /* @__PURE__ */ jsxs(Box, { as: "span", children: [
|
|
16
|
+
getLabel("lblNoAppoinments").text,
|
|
17
|
+
" "
|
|
18
|
+
] }) });
|
|
19
|
+
if (processes.length > 0)
|
|
20
|
+
content = /* @__PURE__ */ jsxs("table", { className: "appoinments__details", children: [
|
|
21
|
+
/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
22
|
+
/* @__PURE__ */ jsx("th", { children: getLabel("lblId").text }),
|
|
23
|
+
/* @__PURE__ */ jsx("th", { children: getLabel("flaAtr").text })
|
|
24
|
+
] }) }),
|
|
25
|
+
/* @__PURE__ */ jsx("tbody", { children: processes?.map((c) => {
|
|
26
|
+
const attributes = arrayOrArray(c.attributes.attribute);
|
|
27
|
+
return attributes.map((attr, index) => /* @__PURE__ */ jsxs("tr", { children: [
|
|
28
|
+
index === 0 && /* @__PURE__ */ jsx(
|
|
29
|
+
"td",
|
|
30
|
+
{
|
|
31
|
+
className: "appoinments__details_id",
|
|
32
|
+
rowSpan: attributes.length,
|
|
33
|
+
children: c.id
|
|
34
|
+
}
|
|
35
|
+
),
|
|
36
|
+
/* @__PURE__ */ jsxs("td", { className: "appoinments__details_attribute", children: [
|
|
37
|
+
attr.title,
|
|
38
|
+
": ",
|
|
39
|
+
attr.value
|
|
40
|
+
] })
|
|
41
|
+
] }, `${c.id}-${index}`));
|
|
42
|
+
}) })
|
|
43
|
+
] });
|
|
44
|
+
return /* @__PURE__ */ jsx(Box, { ...getVariant("layout.execution.form.fields.scheduler.details"), children: content });
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
const dateFormat = getDateFormat();
|
|
49
|
+
const CellRenderer = observer(({ cell }) => {
|
|
50
|
+
const controller = useScheduler();
|
|
51
|
+
const state = controller.getState();
|
|
52
|
+
if (cell.getState("content")) {
|
|
53
|
+
return cell.getState("content");
|
|
54
|
+
}
|
|
55
|
+
const properties = cell.getState("properties");
|
|
56
|
+
if (!state)
|
|
57
|
+
return;
|
|
58
|
+
const isSelected = state.selectedCell === properties.cellId;
|
|
59
|
+
const ariaLabel = !properties.isEnabled ? `${dayjs(properties.weekDay, dateFormat).add(Number(properties.dayNumber) - 1, "day").format(dateFormat)},${properties.hour.slice(0, -2) ?? ""}:${properties.hour.slice(2) ?? ""}, ${String("disabled")}
|
|
60
|
+
` : `${dayjs(properties.weekDay, dateFormat).add(Number(properties.dayNumber) - 1, "day").format(dateFormat)},${properties.hour.slice(
|
|
61
|
+
0,
|
|
62
|
+
-2
|
|
63
|
+
)}:${properties.hour.slice(2)}, ${String(
|
|
64
|
+
properties.valuePlusOverassign
|
|
65
|
+
)}
|
|
66
|
+
`;
|
|
67
|
+
const title = !properties.isEnabled ? "" : `${dayjs(properties.weekDay, dateFormat).add(Number(properties.dayNumber) - 1, "day").format(dateFormat)},${properties.hour.slice(
|
|
68
|
+
0,
|
|
69
|
+
-2
|
|
70
|
+
)}:${properties.hour.slice(2)}, ${String(
|
|
71
|
+
properties.valuePlusOverassign
|
|
72
|
+
)}
|
|
73
|
+
`;
|
|
74
|
+
const onSelectDayHandler = useCallback(() => {
|
|
75
|
+
if (controller.type === "RescheduleTskScheduler") {
|
|
76
|
+
controller.setState({
|
|
77
|
+
...state,
|
|
78
|
+
selectedCell: properties.cellId,
|
|
79
|
+
selectedDay: {
|
|
80
|
+
hour: String(properties.hour),
|
|
81
|
+
day: dayjs(properties.weekDay, dateFormat).add(Number(properties.dayNumber) - 1, "day").format(dateFormat),
|
|
82
|
+
mondayWeek: String(
|
|
83
|
+
dayjs(properties.weekDay, dateFormat).format(dateFormat)
|
|
84
|
+
),
|
|
85
|
+
dayNumber: Number(properties.dayNumber),
|
|
86
|
+
morningOrAfternoonSelected: Number(properties.hour)
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
} else {
|
|
90
|
+
ApiaApi.get(
|
|
91
|
+
makeApiaUrl({
|
|
92
|
+
ajaxUrl: "/apia.design.TaskSchedulerAction.run",
|
|
93
|
+
action: "setExecutionSchedulerSelectedDay",
|
|
94
|
+
weekDay: properties.weekDay,
|
|
95
|
+
hour: properties.hour,
|
|
96
|
+
dayNumber: properties.dayNumber
|
|
97
|
+
})
|
|
98
|
+
).then((response) => {
|
|
99
|
+
if (response?.data?.success) {
|
|
100
|
+
controller.setState({
|
|
101
|
+
...state,
|
|
102
|
+
selectedCell: properties.cellId,
|
|
103
|
+
selectedDay: {
|
|
104
|
+
hour: String(properties.hour),
|
|
105
|
+
day: dayjs(properties.weekDay, dateFormat).add(Number(properties.dayNumber) - 1, "day").format(dateFormat),
|
|
106
|
+
mondayWeek: String(
|
|
107
|
+
dayjs(properties.weekDay, dateFormat).format(dateFormat)
|
|
108
|
+
),
|
|
109
|
+
dayNumber: Number(properties.dayNumber),
|
|
110
|
+
morningOrAfternoonSelected: Number(properties.hour)
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
if (properties.currentDayDefinition) {
|
|
114
|
+
controller.syncStage(
|
|
115
|
+
properties.currentDayDefinition,
|
|
116
|
+
Number(properties.hour)
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}).catch(() => {
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}, [
|
|
124
|
+
controller,
|
|
125
|
+
properties.cellId,
|
|
126
|
+
properties.currentDayDefinition,
|
|
127
|
+
properties.dayNumber,
|
|
128
|
+
properties.hour,
|
|
129
|
+
properties.weekDay,
|
|
130
|
+
state
|
|
131
|
+
]);
|
|
132
|
+
return /* @__PURE__ */ jsxs(
|
|
133
|
+
Box,
|
|
134
|
+
{
|
|
135
|
+
className: `scheduler_cell ${properties.isOverassignClassName ? "td_overassign" : ""}`,
|
|
136
|
+
children: [
|
|
137
|
+
/* @__PURE__ */ jsxs(
|
|
138
|
+
SimpleButton,
|
|
139
|
+
{
|
|
140
|
+
tabIndex: 0,
|
|
141
|
+
title,
|
|
142
|
+
"aria-label": ariaLabel,
|
|
143
|
+
disabled: !properties.isEnabled,
|
|
144
|
+
...getVariant("transparentIcon"),
|
|
145
|
+
onClick: onSelectDayHandler,
|
|
146
|
+
className: `sched_cell__btn `,
|
|
147
|
+
children: [
|
|
148
|
+
isSelected && /* @__PURE__ */ jsx(Icon, { title: "", name: "Check" }),
|
|
149
|
+
!isSelected && properties.isEnabled && toBoolean(state.initialProps.showDisponibility) && Number(properties.valuePlusOverassign)
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
),
|
|
153
|
+
properties.currentDayDefinition?.type === "laboral" && ApiaUtil.instance.parsers.parseBool(
|
|
154
|
+
state.initialProps.showAttributes ?? "false"
|
|
155
|
+
) && /* @__PURE__ */ jsx(
|
|
156
|
+
IconButton,
|
|
157
|
+
{
|
|
158
|
+
size: 24,
|
|
159
|
+
icon: "Search",
|
|
160
|
+
...getVariant("transparentIcon"),
|
|
161
|
+
className: `schd__info ${!properties.isEnabled ? "schd__info_disabledColor" : ""}`,
|
|
162
|
+
onClick: async () => {
|
|
163
|
+
const processes = await controller.loadInfo();
|
|
164
|
+
ApiaUtil.instance.modals.open({
|
|
165
|
+
title: getLabel("lblAppointmentDetails").text,
|
|
166
|
+
children: /* @__PURE__ */ jsx(ReserveDetails, { processes }),
|
|
167
|
+
variant: "layout.execution.form.fields.scheduler.details"
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
)
|
|
172
|
+
]
|
|
173
|
+
}
|
|
174
|
+
);
|
|
175
|
+
});
|
|
176
|
+
class SchedulerTablePlugin {
|
|
177
|
+
getRenderers() {
|
|
178
|
+
return {
|
|
179
|
+
cell: CellRenderer
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const Navigation = observer(() => {
|
|
185
|
+
const controller = useScheduler();
|
|
186
|
+
const mondayWeek = controller.getState().data?.mondayWeek;
|
|
187
|
+
const {
|
|
188
|
+
isDisabled,
|
|
189
|
+
isTodayLoading,
|
|
190
|
+
isLastWeekLoading,
|
|
191
|
+
isDateInputLoading,
|
|
192
|
+
isNextWeekLoading,
|
|
193
|
+
isDeleteLoading
|
|
194
|
+
} = {
|
|
195
|
+
isDisabled: controller.getState()?.isLoading !== "NotLoading",
|
|
196
|
+
isTodayLoading: controller.getState()?.isLoading === "Today",
|
|
197
|
+
isLastWeekLoading: controller.getState()?.isLoading === "LastWeek",
|
|
198
|
+
isDateInputLoading: controller.getState()?.isLoading === "DateInput",
|
|
199
|
+
isNextWeekLoading: controller.getState()?.isLoading === "NextWeek",
|
|
200
|
+
isDeleteLoading: controller.getState()?.isLoading === "DeleteWeek"
|
|
201
|
+
};
|
|
202
|
+
const onTodayHandler = () => {
|
|
203
|
+
controller.setState({ isLoading: "Today" });
|
|
204
|
+
controller.makeDaysStage();
|
|
205
|
+
controller.loadWeek(dayjs().subtract(1, "day").format(dateFormat));
|
|
206
|
+
};
|
|
207
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Box, { className: "scheduler__navigator", children: [
|
|
208
|
+
/* @__PURE__ */ jsx(
|
|
209
|
+
SimpleButton,
|
|
210
|
+
{
|
|
211
|
+
variant: "outline",
|
|
212
|
+
className: "scheduler__navigator_todayBtn",
|
|
213
|
+
disabled: isDisabled,
|
|
214
|
+
"aria-label": window.LBL_TODAY,
|
|
215
|
+
isLoading: isTodayLoading,
|
|
216
|
+
onClick: useCallback(onTodayHandler, [controller]),
|
|
217
|
+
type: "button",
|
|
218
|
+
children: window.LBL_TODAY
|
|
219
|
+
}
|
|
220
|
+
),
|
|
221
|
+
/* @__PURE__ */ jsx(
|
|
222
|
+
SimpleButton,
|
|
223
|
+
{
|
|
224
|
+
variant: "outline",
|
|
225
|
+
className: "scheduler__navigator_lastBtn",
|
|
226
|
+
disabled: isDisabled,
|
|
227
|
+
title: window.LBL_SCHED_LAST_WEEK_TOOLTIP,
|
|
228
|
+
"aria-label": window.LBL_SCHED_LAST_WEEK_TEXT,
|
|
229
|
+
isLoading: isLastWeekLoading,
|
|
230
|
+
onClick: () => controller.goPreviousWeek(),
|
|
231
|
+
type: "button",
|
|
232
|
+
children: "<"
|
|
233
|
+
}
|
|
234
|
+
),
|
|
235
|
+
/* @__PURE__ */ jsx(
|
|
236
|
+
DateInput,
|
|
237
|
+
{
|
|
238
|
+
className: "scheduler__navigator_dateInput",
|
|
239
|
+
disabled: isDisabled,
|
|
240
|
+
isLoading: isDateInputLoading,
|
|
241
|
+
getCustomMask: useCallback(() => {
|
|
242
|
+
return "";
|
|
243
|
+
}, []),
|
|
244
|
+
renderLabel: controller.parsedDateLabel,
|
|
245
|
+
onChange: (newDate) => {
|
|
246
|
+
if (newDate) {
|
|
247
|
+
controller.setState({ isLoading: "DateInput" });
|
|
248
|
+
controller.loadWeek(
|
|
249
|
+
dayjs(newDate, dateFormat).format(dateFormat)
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
value: mondayWeek
|
|
254
|
+
}
|
|
255
|
+
),
|
|
256
|
+
/* @__PURE__ */ jsx(
|
|
257
|
+
SimpleButton,
|
|
258
|
+
{
|
|
259
|
+
variant: "outline",
|
|
260
|
+
className: "scheduler__navigator_nextBtn",
|
|
261
|
+
disabled: isDisabled,
|
|
262
|
+
title: window.LBL_SCHED_NEXT_WEEK_TOOLTIP,
|
|
263
|
+
"aria-label": window.LBL_SCHED_NEXT_WEEK_TEXT,
|
|
264
|
+
isLoading: isNextWeekLoading,
|
|
265
|
+
onClick: () => controller.goNextWeek(),
|
|
266
|
+
type: "button",
|
|
267
|
+
children: ">"
|
|
268
|
+
}
|
|
269
|
+
),
|
|
270
|
+
/* @__PURE__ */ jsx(
|
|
271
|
+
SimpleButton,
|
|
272
|
+
{
|
|
273
|
+
variant: "outline-danger",
|
|
274
|
+
title: window.LBL_SCHED_RESET_TOOLTIP,
|
|
275
|
+
"aria-label": window.LBL_SCHED_RESET_TEXT,
|
|
276
|
+
className: "scheduler__navigator_DeleteBtn",
|
|
277
|
+
disabled: isDisabled,
|
|
278
|
+
isLoading: isDeleteLoading,
|
|
279
|
+
onClick: () => controller.deleteDate(),
|
|
280
|
+
type: "button",
|
|
281
|
+
children: /* @__PURE__ */ jsx(Icon, { name: "Trash", title: window.LBL_SCHED_RESET_TEXT })
|
|
282
|
+
}
|
|
283
|
+
)
|
|
284
|
+
] }) });
|
|
285
|
+
});
|
|
286
|
+
|
|
287
|
+
const SchedTable = observer(() => {
|
|
288
|
+
const controller = useScheduler();
|
|
289
|
+
return /* @__PURE__ */ jsx(
|
|
290
|
+
Box,
|
|
291
|
+
{
|
|
292
|
+
onKeyDownCapture: (ev) => {
|
|
293
|
+
if (ev.code === "ArrowRight" && ev.ctrlKey) {
|
|
294
|
+
ev.stopPropagation();
|
|
295
|
+
controller.goNextWeek();
|
|
296
|
+
}
|
|
297
|
+
if (ev.code === "ArrowLeft" && ev.ctrlKey) {
|
|
298
|
+
ev.stopPropagation();
|
|
299
|
+
controller.goPreviousWeek();
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
children: /* @__PURE__ */ jsx(Table, { variant: "secondary", controller: controller.tableController })
|
|
303
|
+
}
|
|
304
|
+
);
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
const StageButton = observer(
|
|
308
|
+
({
|
|
309
|
+
button: {
|
|
310
|
+
action,
|
|
311
|
+
isDisabled,
|
|
312
|
+
isSelectedSelector,
|
|
313
|
+
label,
|
|
314
|
+
title,
|
|
315
|
+
value,
|
|
316
|
+
...props
|
|
317
|
+
}
|
|
318
|
+
}) => {
|
|
319
|
+
const controller = useScheduler();
|
|
320
|
+
const isSelected = isSelectedSelector();
|
|
321
|
+
const showDisponibility = controller.getState().initialProps.showDisponibility;
|
|
322
|
+
const overassign = controller.getState().data?.overassign;
|
|
323
|
+
return /* @__PURE__ */ jsxs(
|
|
324
|
+
SimpleButton,
|
|
325
|
+
{
|
|
326
|
+
variant: "outline",
|
|
327
|
+
className: `${isSelected ? "selected" : ""} ${value !== "" && !Number(value) && Number(value) <= Number(overassign) ? "td_overassign" : ""} ${isDisabled ? "disabled" : ""} stage_btn`,
|
|
328
|
+
onClick: action,
|
|
329
|
+
disabled: isDisabled,
|
|
330
|
+
...props,
|
|
331
|
+
children: [
|
|
332
|
+
label,
|
|
333
|
+
" ",
|
|
334
|
+
toBoolean(showDisponibility) && value !== "" && `(${Number(value) + Number(overassign) || Number(overassign)})`
|
|
335
|
+
]
|
|
336
|
+
},
|
|
337
|
+
title
|
|
338
|
+
);
|
|
339
|
+
}
|
|
340
|
+
);
|
|
341
|
+
|
|
342
|
+
const Stage = observer(({ stageIndex }) => {
|
|
343
|
+
const controller = useScheduler();
|
|
344
|
+
const stage = controller.getState().stageData?.[stageIndex];
|
|
345
|
+
const [ref, setRef] = React.useState(null);
|
|
346
|
+
const focusStage = controller.getState().focusStage;
|
|
347
|
+
const isMounted = !!stage?.name;
|
|
348
|
+
const hasTransitionedIn = useMountTransition(isMounted, 1e3);
|
|
349
|
+
const doFocus = React.useCallback(() => {
|
|
350
|
+
if (!stage || stage.name === "daysList")
|
|
351
|
+
return;
|
|
352
|
+
if (!ref)
|
|
353
|
+
return;
|
|
354
|
+
const firstBtn = ref.querySelector(
|
|
355
|
+
".stage_btn:not(:disabled)"
|
|
356
|
+
);
|
|
357
|
+
if (firstBtn) {
|
|
358
|
+
firstBtn.focus();
|
|
359
|
+
}
|
|
360
|
+
}, [ref, stage]);
|
|
361
|
+
React.useEffect(() => {
|
|
362
|
+
if (focusStage === stage?.name)
|
|
363
|
+
doFocus();
|
|
364
|
+
}, [focusStage]);
|
|
365
|
+
React.useLayoutEffect(doFocus, [ref, stage]);
|
|
366
|
+
const handleFocus = React.useCallback(
|
|
367
|
+
(sum) => {
|
|
368
|
+
const focusedElement = document.activeElement;
|
|
369
|
+
if (isChild(focusedElement, (current) => current === ref) && ref) {
|
|
370
|
+
const buttons = [
|
|
371
|
+
...ref.querySelectorAll(".stage_btn:not(:disabled)")
|
|
372
|
+
];
|
|
373
|
+
if (buttons) {
|
|
374
|
+
const index = buttons.findIndex(
|
|
375
|
+
(current) => current === focusedElement
|
|
376
|
+
);
|
|
377
|
+
if (buttons[index] === focusedElement && buttons[index - sum]) {
|
|
378
|
+
buttons[index - sum].focus();
|
|
379
|
+
controller.setState({ focusStage: stage?.name });
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
},
|
|
384
|
+
[controller, ref, stage?.name]
|
|
385
|
+
);
|
|
386
|
+
const handleKeyDown = React.useCallback(
|
|
387
|
+
(ev) => {
|
|
388
|
+
if (ev.key.toLowerCase() === "arrowdown") {
|
|
389
|
+
ev.preventDefault();
|
|
390
|
+
handleFocus(-1);
|
|
391
|
+
}
|
|
392
|
+
if (ev.key.toLowerCase() === "arrowup") {
|
|
393
|
+
ev.preventDefault();
|
|
394
|
+
handleFocus(1);
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
[handleFocus]
|
|
398
|
+
);
|
|
399
|
+
return stage ? /* @__PURE__ */ jsx(
|
|
400
|
+
Box,
|
|
401
|
+
{
|
|
402
|
+
"data-name": stage?.name,
|
|
403
|
+
className: `stage ${hasTransitionedIn && "in"} ${isMounted && "visible"}`,
|
|
404
|
+
ref: setRef,
|
|
405
|
+
onKeyDown: handleKeyDown,
|
|
406
|
+
children: (hasTransitionedIn || isMounted) && stage?.buttons?.map((elem) => {
|
|
407
|
+
return /* @__PURE__ */ jsx(StageButton, { button: elem }, elem.title);
|
|
408
|
+
})
|
|
409
|
+
}
|
|
410
|
+
) : null;
|
|
411
|
+
});
|
|
412
|
+
|
|
413
|
+
const Mini = observer(() => {
|
|
414
|
+
const controller = useScheduler();
|
|
415
|
+
const data = controller.getState().data;
|
|
416
|
+
const stage = controller.getState()?.stageData;
|
|
417
|
+
const stagesLength = controller.getState().stageData?.length;
|
|
418
|
+
return /* @__PURE__ */ jsxs(
|
|
419
|
+
Box,
|
|
420
|
+
{
|
|
421
|
+
...getVariant("layout.execution.form.fields.scheduler"),
|
|
422
|
+
className: "schedulerMini",
|
|
423
|
+
onKeyDown: (ev) => {
|
|
424
|
+
if (ev.key.toLowerCase() === "arrowleft") {
|
|
425
|
+
const stageName = getSpecificParent(
|
|
426
|
+
ev.target,
|
|
427
|
+
(current) => current.classList.contains("stage")
|
|
428
|
+
)?.dataset.name;
|
|
429
|
+
const stageIndex = stage.findIndex(
|
|
430
|
+
(current) => current.name === stageName
|
|
431
|
+
);
|
|
432
|
+
if (stageIndex <= 0)
|
|
433
|
+
return;
|
|
434
|
+
const nextStage = stage[stageIndex - 1]?.name;
|
|
435
|
+
const firstButton = document.querySelector(
|
|
436
|
+
`[data-name="${nextStage}"] .selected`
|
|
437
|
+
) || document.querySelector(
|
|
438
|
+
`[data-name="${nextStage}"] button:not(:disabled)`
|
|
439
|
+
);
|
|
440
|
+
if (firstButton)
|
|
441
|
+
firstButton.focus();
|
|
442
|
+
}
|
|
443
|
+
if (ev.key.toLowerCase() === "arrowright") {
|
|
444
|
+
const stageName = getSpecificParent(
|
|
445
|
+
ev.target,
|
|
446
|
+
(current) => current.classList.contains("stage")
|
|
447
|
+
)?.dataset.name;
|
|
448
|
+
const stageIndex = stage.findIndex(
|
|
449
|
+
(current) => current.name === stageName
|
|
450
|
+
);
|
|
451
|
+
if (stageIndex >= stage.length - 1)
|
|
452
|
+
return;
|
|
453
|
+
const nextStage = stage[stageIndex + 1]?.name;
|
|
454
|
+
const firstButton = document.querySelector(
|
|
455
|
+
`[data-name="${nextStage}"] .selected`
|
|
456
|
+
) || document.querySelector(
|
|
457
|
+
`[data-name="${nextStage}"] button:not(:disabled)`
|
|
458
|
+
);
|
|
459
|
+
if (firstButton)
|
|
460
|
+
firstButton.focus();
|
|
461
|
+
}
|
|
462
|
+
},
|
|
463
|
+
children: [
|
|
464
|
+
data?.weekNotConfigured && /* @__PURE__ */ jsx(Heading, { as: "h1", children: window.LBL_SCHED_WEEK_NOT_CONFIGURED }),
|
|
465
|
+
!data?.weekNotConfigured && data?.tskSchDay && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
466
|
+
/* @__PURE__ */ jsx(Stage, { stageIndex: 0 }),
|
|
467
|
+
stagesLength >= 2 && /* @__PURE__ */ jsx(
|
|
468
|
+
Icon,
|
|
469
|
+
{
|
|
470
|
+
name: "ArrowDown",
|
|
471
|
+
title: "",
|
|
472
|
+
className: "schedulerMini_faCaretDown"
|
|
473
|
+
}
|
|
474
|
+
),
|
|
475
|
+
/* @__PURE__ */ jsx(Stage, { stageIndex: 1 }),
|
|
476
|
+
stagesLength >= 3 && /* @__PURE__ */ jsx(
|
|
477
|
+
Icon,
|
|
478
|
+
{
|
|
479
|
+
name: "ArrowDown",
|
|
480
|
+
title: "",
|
|
481
|
+
className: "schedulerMini_faCaretDown"
|
|
482
|
+
}
|
|
483
|
+
),
|
|
484
|
+
/* @__PURE__ */ jsx(Stage, { stageIndex: 2 })
|
|
485
|
+
] }),
|
|
486
|
+
!data?.weekNotConfigured && !data?.tskSchDay && /* @__PURE__ */ jsx(Box, { className: "box_spinner", title: window.WAIT_A_SECOND, children: /* @__PURE__ */ jsx(Spinner, {}) })
|
|
487
|
+
]
|
|
488
|
+
}
|
|
489
|
+
);
|
|
490
|
+
});
|
|
491
|
+
|
|
492
|
+
const SelectedDateInfo = observer(() => {
|
|
493
|
+
const controller = useScheduler();
|
|
494
|
+
const data = controller.getState().data;
|
|
495
|
+
const selectedDay = controller.getState()?.selectedDay;
|
|
496
|
+
return /* @__PURE__ */ jsxs(Box, { className: "selectedDateInfo", children: [
|
|
497
|
+
selectedDay?.day && selectedDay?.hour && /* @__PURE__ */ jsx(Label, { children: formatMessage(window.LBL_SCHED_SELECTED_DATE, {
|
|
498
|
+
TOK1: selectedDay?.day,
|
|
499
|
+
TOK2: `${selectedDay.hour.slice(
|
|
500
|
+
0,
|
|
501
|
+
-2
|
|
502
|
+
)}:${selectedDay.hour.slice(2)}`
|
|
503
|
+
}) }),
|
|
504
|
+
!selectedDay?.day && !data?.weekNotConfigured && data?.tskSchDay && /* @__PURE__ */ jsx(Label, { sx: { display: "block" }, children: window.LBL_SCHED_DATE_NOT_SELECTED })
|
|
505
|
+
] });
|
|
506
|
+
});
|
|
507
|
+
|
|
508
|
+
const SchedulerController = createContext(null);
|
|
509
|
+
function useScheduler() {
|
|
510
|
+
return useContext(SchedulerController);
|
|
511
|
+
}
|
|
512
|
+
const SchedulerComponent = observer(
|
|
513
|
+
({
|
|
514
|
+
controller,
|
|
515
|
+
retriever,
|
|
516
|
+
properties,
|
|
517
|
+
getController
|
|
518
|
+
}) => {
|
|
519
|
+
if (!controller && !(properties && retriever)) {
|
|
520
|
+
console.error(
|
|
521
|
+
"Need to create controller or pass retriever and properties"
|
|
522
|
+
);
|
|
523
|
+
return null;
|
|
524
|
+
}
|
|
525
|
+
const [actualController] = useState(() => {
|
|
526
|
+
const ctrl = controller ?? new Scheduler(properties, retriever);
|
|
527
|
+
getController?.(ctrl);
|
|
528
|
+
ctrl.tableController.setPlugins((current) => {
|
|
529
|
+
if (!current.some((plugin) => plugin instanceof SchedulerTablePlugin)) {
|
|
530
|
+
current.push(new SchedulerTablePlugin());
|
|
531
|
+
}
|
|
532
|
+
return current;
|
|
533
|
+
});
|
|
534
|
+
return ctrl;
|
|
535
|
+
});
|
|
536
|
+
const breakPoint = useBreakpointIndex();
|
|
537
|
+
return /* @__PURE__ */ jsx(SchedulerController.Provider, { value: actualController, children: /* @__PURE__ */ jsxs(
|
|
538
|
+
Box,
|
|
539
|
+
{
|
|
540
|
+
...getVariant("layout.common.components.scheduler"),
|
|
541
|
+
className: "scheduler",
|
|
542
|
+
children: [
|
|
543
|
+
/* @__PURE__ */ jsx(Navigation, {}),
|
|
544
|
+
/* @__PURE__ */ jsx(SelectedDateInfo, {}),
|
|
545
|
+
breakPoint > 4 ? /* @__PURE__ */ jsx(SchedTable, {}) : /* @__PURE__ */ jsx(Mini, {})
|
|
546
|
+
]
|
|
547
|
+
}
|
|
548
|
+
) });
|
|
549
|
+
}
|
|
550
|
+
);
|
|
551
|
+
|
|
552
|
+
export { SchedulerComponent };
|
|
553
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/Scheduler/ReserveDetails.tsx","../src/Scheduler/SchedulerTablePlugin.tsx","../src/Scheduler/Navigation.tsx","../src/Scheduler/Table.tsx","../src/Scheduler/mini/StageButton.tsx","../src/Scheduler/mini/Stage.tsx","../src/Scheduler/mini/Mini.tsx","../src/Scheduler/SelectedDayInfo.tsx","../src/Scheduler/index.tsx"],"sourcesContent":["import { arrayOrArray, getLabel } from '@apia/util';\r\nimport { Box, getVariant } from '@apia/theme';\r\nimport { TProcesses } from '@apia/execution';\r\nimport { observer } from 'mobx-react-lite';\r\n\r\nexport const ReserveDetails = observer(\r\n ({ processes }: { processes: TProcesses }) => {\r\n let content = (\r\n <Box className=\"no__appoinments\">\r\n <Box as=\"span\">{getLabel('lblNoAppoinments').text} </Box>\r\n </Box>\r\n );\r\n if (processes.length > 0)\r\n content = (\r\n <table className=\"appoinments__details\">\r\n <thead>\r\n <tr>\r\n <th>{getLabel('lblId').text}</th>\r\n <th>{getLabel('flaAtr').text}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {processes?.map((c) => {\r\n const attributes = arrayOrArray(c.attributes.attribute);\r\n return attributes.map((attr, index) => (\r\n <tr key={`${c.id}-${index}`}>\r\n {index === 0 && (\r\n <td\r\n className=\"appoinments__details_id\"\r\n rowSpan={attributes.length}\r\n >\r\n {c.id}\r\n </td>\r\n )}\r\n <td className=\"appoinments__details_attribute\">\r\n {attr.title}: {attr.value}\r\n </td>\r\n </tr>\r\n ));\r\n })}\r\n </tbody>\r\n </table>\r\n );\r\n return (\r\n <Box {...getVariant('layout.execution.form.fields.scheduler.details')}>\r\n {content}\r\n </Box>\r\n );\r\n },\r\n);\r\n","import { Cell, TablePlugin } from '@apia/table2-component';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { SimpleButton, IconButton, ApiaUtil } from '@apia/components';\r\nimport { Box, getVariant } from '@apia/theme';\r\nimport { useCallback } from 'react';\r\nimport { getDateFormat, getLabel, TDateFormat, toBoolean } from '@apia/util';\r\nimport dayjs from 'dayjs';\r\nimport { Icon } from '@apia/icons';\r\nimport { ReserveDetails } from './ReserveDetails';\r\nimport { useScheduler } from '.';\r\nimport { ApiaApi, makeApiaUrl } from '@apia/api';\r\nimport { TScheduleResult, TTskSchDay } from '@apia/scheduler-controller';\r\n\r\nexport const dateFormat: TDateFormat = getDateFormat();\r\n\r\ntype CellProperties = {\r\n cellId: string;\r\n currentDayDefinition: TTskSchDay;\r\n isEnabled: boolean;\r\n isQueriedDisabled: boolean;\r\n weekDay: string;\r\n dayNumber: number;\r\n hour: string;\r\n value: number;\r\n valuePlusOverassign: number;\r\n isOverassignClassName: boolean;\r\n};\r\n\r\nconst CellRenderer = observer(({ cell }: { cell: Cell }) => {\r\n const controller = useScheduler();\r\n const state = controller.getState();\r\n if (cell.getState('content')) {\r\n return cell.getState('content');\r\n }\r\n const properties = cell.getState('properties') as CellProperties;\r\n if (!state) return;\r\n const isSelected = state.selectedCell === properties.cellId;\r\n\r\n const ariaLabel = !properties!.isEnabled\r\n ? `${dayjs(properties!.weekDay, dateFormat)\r\n .add(Number(properties!.dayNumber) - 1, 'day')\r\n .format(dateFormat)},${\r\n properties!.hour.slice(0, -2) ?? ''\r\n }:${properties!.hour.slice(2) ?? ''}, ${String('disabled')}\r\n `\r\n : `${dayjs(properties!.weekDay, dateFormat)\r\n .add(Number(properties!.dayNumber) - 1, 'day')\r\n .format(dateFormat)},${properties!.hour.slice(\r\n 0,\r\n -2,\r\n )}:${properties!.hour.slice(2)}, ${String(\r\n properties!.valuePlusOverassign,\r\n )}\r\n `;\r\n\r\n const title = !properties!.isEnabled\r\n ? ''\r\n : `${dayjs(properties!.weekDay, dateFormat)\r\n .add(Number(properties!.dayNumber) - 1, 'day')\r\n .format(dateFormat)},${properties!.hour.slice(\r\n 0,\r\n -2,\r\n )}:${properties!.hour.slice(2)}, ${String(\r\n properties!.valuePlusOverassign,\r\n )}\r\n `;\r\n\r\n const onSelectDayHandler = useCallback(() => {\r\n if (controller.type === 'RescheduleTskScheduler') {\r\n controller.setState({\r\n ...state,\r\n selectedCell: properties.cellId,\r\n\r\n selectedDay: {\r\n hour: String(properties.hour),\r\n day: dayjs(properties.weekDay, dateFormat)\r\n .add(Number(properties.dayNumber) - 1, 'day')\r\n .format(dateFormat),\r\n mondayWeek: String(\r\n dayjs(properties.weekDay, dateFormat).format(dateFormat),\r\n ),\r\n dayNumber: Number(properties.dayNumber),\r\n morningOrAfternoonSelected: Number(properties.hour),\r\n },\r\n });\r\n } else {\r\n ApiaApi.get<TScheduleResult>(\r\n makeApiaUrl({\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'setExecutionSchedulerSelectedDay',\r\n weekDay: properties.weekDay,\r\n hour: properties.hour,\r\n dayNumber: properties.dayNumber,\r\n }),\r\n )\r\n .then((response) => {\r\n if (response?.data?.success) {\r\n controller.setState({\r\n ...state,\r\n selectedCell: properties.cellId,\r\n selectedDay: {\r\n hour: String(properties.hour),\r\n day: dayjs(properties.weekDay, dateFormat)\r\n .add(Number(properties.dayNumber) - 1, 'day')\r\n .format(dateFormat),\r\n mondayWeek: String(\r\n dayjs(properties.weekDay, dateFormat).format(dateFormat),\r\n ),\r\n dayNumber: Number(properties.dayNumber),\r\n morningOrAfternoonSelected: Number(properties.hour),\r\n },\r\n });\r\n if (properties.currentDayDefinition) {\r\n controller.syncStage(\r\n properties.currentDayDefinition,\r\n Number(properties.hour),\r\n );\r\n }\r\n }\r\n })\r\n .catch(() => {});\r\n }\r\n }, [\r\n controller,\r\n properties.cellId,\r\n properties.currentDayDefinition,\r\n properties.dayNumber,\r\n properties.hour,\r\n properties.weekDay,\r\n state,\r\n ]);\r\n\r\n return (\r\n <Box\r\n className={`scheduler_cell ${\r\n properties!.isOverassignClassName ? 'td_overassign' : ''\r\n }`}\r\n >\r\n <SimpleButton\r\n tabIndex={0}\r\n title={title}\r\n aria-label={ariaLabel}\r\n disabled={!properties!.isEnabled}\r\n {...getVariant('transparentIcon')}\r\n onClick={onSelectDayHandler}\r\n className={`sched_cell__btn `}\r\n >\r\n {isSelected && <Icon title=\"\" name=\"Check\" />}\r\n {!isSelected &&\r\n properties!.isEnabled &&\r\n toBoolean(state.initialProps.showDisponibility) &&\r\n Number(properties!.valuePlusOverassign)}\r\n </SimpleButton>\r\n\r\n {properties!.currentDayDefinition?.type === 'laboral' &&\r\n ApiaUtil.instance.parsers.parseBool(\r\n state.initialProps.showAttributes ?? 'false',\r\n ) && (\r\n <IconButton\r\n size={24}\r\n icon=\"Search\"\r\n {...getVariant('transparentIcon')}\r\n className={`schd__info ${!properties!.isEnabled ? 'schd__info_disabledColor' : ''}`}\r\n onClick={async () => {\r\n const processes = await controller.loadInfo();\r\n\r\n ApiaUtil.instance.modals.open({\r\n title: getLabel('lblAppointmentDetails').text,\r\n children: <ReserveDetails processes={processes} />,\r\n variant: 'layout.execution.form.fields.scheduler.details',\r\n });\r\n }}\r\n />\r\n )}\r\n </Box>\r\n );\r\n});\r\n\r\nexport class SchedulerTablePlugin implements TablePlugin {\r\n getRenderers() {\r\n return {\r\n cell: CellRenderer,\r\n };\r\n }\r\n}\r\n","import dayjs from 'dayjs';\r\nimport { dateFormat } from './SchedulerTablePlugin';\r\nimport { useCallback } from 'react';\r\nimport { DateInput, SimpleButton } from '@apia/components';\r\nimport { Box } from '@apia/theme';\r\nimport { Icon } from '@apia/icons';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { useScheduler } from '.';\r\n\r\n// enum Characteristic {\r\n// A = 'A',\r\n// B = 'B',\r\n// C = 'C',\r\n// }\r\n\r\n// type State = {\r\n// characteristic: Characteristic;\r\n// }\r\n\r\n// class A {\r\n// state: State = {characteristic: Characteristic.A}\r\n\r\n// setState<K extends keyof State>(key: K, value: State[K]) {\r\n// return this.state[key];\r\n// }\r\n// }\r\n\r\n// const a: A;\r\n\r\n// const pepe = a.setState('characteristic', Characteristic.C)\r\n\r\nexport const Navigation = observer(() => {\r\n const controller = useScheduler();\r\n const mondayWeek = controller.getState().data?.mondayWeek;\r\n\r\n const {\r\n isDisabled,\r\n isTodayLoading,\r\n isLastWeekLoading,\r\n isDateInputLoading,\r\n isNextWeekLoading,\r\n isDeleteLoading,\r\n } = {\r\n isDisabled: controller.getState()?.isLoading !== 'NotLoading',\r\n isTodayLoading: controller.getState()?.isLoading === 'Today',\r\n isLastWeekLoading: controller.getState()?.isLoading === 'LastWeek',\r\n isDateInputLoading: controller.getState()?.isLoading === 'DateInput',\r\n isNextWeekLoading: controller.getState()?.isLoading === 'NextWeek',\r\n isDeleteLoading: controller.getState()?.isLoading === 'DeleteWeek',\r\n };\r\n\r\n const onTodayHandler = () => {\r\n controller.setState({ isLoading: 'Today' });\r\n\r\n controller.makeDaysStage();\r\n controller.loadWeek(dayjs().subtract(1, 'day').format(dateFormat));\r\n };\r\n\r\n return (\r\n <>\r\n <Box className=\"scheduler__navigator\">\r\n <SimpleButton\r\n variant=\"outline\"\r\n className=\"scheduler__navigator_todayBtn\"\r\n disabled={isDisabled}\r\n aria-label={window.LBL_TODAY}\r\n isLoading={isTodayLoading}\r\n onClick={useCallback(onTodayHandler, [controller])}\r\n type=\"button\"\r\n >\r\n {window.LBL_TODAY}\r\n </SimpleButton>\r\n <SimpleButton\r\n variant=\"outline\"\r\n className=\"scheduler__navigator_lastBtn\"\r\n disabled={isDisabled}\r\n title={window.LBL_SCHED_LAST_WEEK_TOOLTIP}\r\n aria-label={window.LBL_SCHED_LAST_WEEK_TEXT}\r\n isLoading={isLastWeekLoading}\r\n onClick={() => controller.goPreviousWeek()}\r\n type=\"button\"\r\n >\r\n <\r\n </SimpleButton>\r\n <DateInput\r\n className=\"scheduler__navigator_dateInput\"\r\n disabled={isDisabled}\r\n isLoading={isDateInputLoading}\r\n getCustomMask={useCallback(() => {\r\n return '';\r\n }, [])}\r\n renderLabel={controller.parsedDateLabel}\r\n onChange={(newDate) => {\r\n if (newDate) {\r\n controller.setState({ isLoading: 'DateInput' });\r\n controller.loadWeek(\r\n dayjs(newDate, dateFormat).format(dateFormat),\r\n );\r\n }\r\n }}\r\n value={mondayWeek}\r\n />\r\n <SimpleButton\r\n variant=\"outline\"\r\n className=\"scheduler__navigator_nextBtn\"\r\n disabled={isDisabled}\r\n title={window.LBL_SCHED_NEXT_WEEK_TOOLTIP}\r\n aria-label={window.LBL_SCHED_NEXT_WEEK_TEXT}\r\n isLoading={isNextWeekLoading}\r\n onClick={() => controller.goNextWeek()}\r\n type=\"button\"\r\n >\r\n >\r\n </SimpleButton>\r\n <SimpleButton\r\n variant=\"outline-danger\"\r\n title={window.LBL_SCHED_RESET_TOOLTIP}\r\n aria-label={window.LBL_SCHED_RESET_TEXT}\r\n className=\"scheduler__navigator_DeleteBtn\"\r\n disabled={isDisabled}\r\n isLoading={isDeleteLoading}\r\n onClick={() => controller.deleteDate()}\r\n type=\"button\"\r\n >\r\n <Icon name=\"Trash\" title={window.LBL_SCHED_RESET_TEXT} />\r\n </SimpleButton>\r\n </Box>\r\n </>\r\n );\r\n});\r\n","import { Table } from '@apia/table2-component';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { Box } from '@apia/theme';\r\nimport { useScheduler } from '.';\r\n\r\nexport const SchedTable = observer(() => {\r\n const controller = useScheduler();\r\n\r\n return (\r\n <Box\r\n onKeyDownCapture={(ev) => {\r\n if (ev.code === 'ArrowRight' && ev.ctrlKey) {\r\n ev.stopPropagation();\r\n controller.goNextWeek();\r\n }\r\n if (ev.code === 'ArrowLeft' && ev.ctrlKey) {\r\n ev.stopPropagation();\r\n controller.goPreviousWeek();\r\n }\r\n }}\r\n >\r\n <Table variant=\"secondary\" controller={controller.tableController} />\r\n </Box>\r\n );\r\n});\r\n","import { toBoolean } from '@apia/util';\r\nimport { SimpleButton } from '@apia/components';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { useScheduler } from '..';\r\nimport { IStageButton } from '@apia/scheduler-controller';\r\n\r\nconst StageButton = observer(\r\n ({\r\n button: {\r\n action,\r\n isDisabled,\r\n isSelectedSelector,\r\n label,\r\n title,\r\n value,\r\n ...props\r\n },\r\n }: {\r\n button: IStageButton;\r\n }) => {\r\n const controller = useScheduler();\r\n const isSelected = isSelectedSelector();\r\n const showDisponibility =\r\n controller.getState().initialProps.showDisponibility;\r\n const overassign = controller.getState().data?.overassign;\r\n\r\n return (\r\n <SimpleButton\r\n variant=\"outline\"\r\n className={`${isSelected ? 'selected' : ''} ${\r\n value !== '' && !Number(value) && Number(value) <= Number(overassign)\r\n ? 'td_overassign'\r\n : ''\r\n } ${isDisabled ? 'disabled' : ''} stage_btn`}\r\n onClick={action}\r\n key={title}\r\n disabled={isDisabled}\r\n {...props}\r\n >\r\n {label}{' '}\r\n {toBoolean(showDisponibility) &&\r\n value !== '' &&\r\n `(${Number(value) + Number(overassign) || Number(overassign)})`}\r\n </SimpleButton>\r\n );\r\n },\r\n);\r\n\r\nexport default StageButton;\r\n","import React from 'react';\r\nimport { Box } from '@apia/theme';\r\n\r\nimport StageButton from './StageButton';\r\nimport { isChild, useMountTransition } from '@apia/util';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { useScheduler } from '..';\r\n\r\ninterface IButtonList {\r\n stageIndex: number;\r\n}\r\n\r\nconst Stage = observer(({ stageIndex }: IButtonList) => {\r\n const controller = useScheduler();\r\n const stage = controller.getState().stageData?.[stageIndex];\r\n const [ref, setRef] = React.useState<HTMLElement | null>(null);\r\n const focusStage = controller.getState().focusStage;\r\n const isMounted = !!stage?.name;\r\n const hasTransitionedIn = useMountTransition(isMounted, 1000);\r\n\r\n const doFocus = React.useCallback(() => {\r\n if (!stage || stage.name === 'daysList') return;\r\n\r\n if (!ref) return;\r\n const firstBtn = ref.querySelector(\r\n '.stage_btn:not(:disabled)',\r\n ) as HTMLElement;\r\n if (firstBtn) {\r\n firstBtn.focus();\r\n }\r\n }, [ref, stage]);\r\n\r\n React.useEffect(() => {\r\n if (focusStage === stage?.name) doFocus();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [focusStage]);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n React.useLayoutEffect(doFocus, [ref, stage]);\r\n\r\n const handleFocus = React.useCallback(\r\n (sum: number) => {\r\n const focusedElement = document.activeElement;\r\n if (\r\n isChild(focusedElement as HTMLElement, (current) => current === ref) &&\r\n ref\r\n ) {\r\n const buttons = [\r\n ...ref.querySelectorAll<HTMLElement>('.stage_btn:not(:disabled)'),\r\n ];\r\n if (buttons) {\r\n const index = buttons.findIndex(\r\n (current) => current === focusedElement,\r\n );\r\n\r\n if (buttons[index] === focusedElement && buttons[index - sum]) {\r\n buttons[index - sum].focus();\r\n\r\n controller.setState({ focusStage: stage?.name });\r\n }\r\n }\r\n }\r\n },\r\n [controller, ref, stage?.name],\r\n );\r\n\r\n const handleKeyDown = React.useCallback(\r\n (ev: React.KeyboardEvent) => {\r\n if (ev.key.toLowerCase() === 'arrowdown') {\r\n ev.preventDefault();\r\n handleFocus(-1);\r\n }\r\n if (ev.key.toLowerCase() === 'arrowup') {\r\n ev.preventDefault();\r\n handleFocus(+1);\r\n }\r\n },\r\n [handleFocus],\r\n );\r\n\r\n return stage ? (\r\n <Box\r\n data-name={stage?.name}\r\n className={`stage ${hasTransitionedIn && 'in'} ${isMounted && 'visible'}`}\r\n ref={setRef}\r\n onKeyDown={handleKeyDown}\r\n >\r\n {(hasTransitionedIn || isMounted) &&\r\n stage?.buttons?.map((elem) => {\r\n return <StageButton button={elem} key={elem.title} />;\r\n })}\r\n </Box>\r\n ) : null;\r\n});\r\n\r\nexport default Stage;\r\n","import { Box, getVariant, Heading, Spinner } from '@apia/theme';\r\nimport { observer } from 'mobx-react-lite';\r\nimport Stage from './Stage';\r\nimport { getSpecificParent } from '@apia/util';\r\nimport { Icon } from '@apia/icons';\r\nimport { useScheduler } from '..';\r\n\r\nexport const Mini = observer(() => {\r\n const controller = useScheduler();\r\n const data = controller.getState().data;\r\n const stage = controller.getState()?.stageData;\r\n\r\n const stagesLength = controller.getState().stageData?.length;\r\n\r\n return (\r\n <Box\r\n {...getVariant('layout.execution.form.fields.scheduler')}\r\n className=\"schedulerMini\"\r\n onKeyDown={(ev) => {\r\n if (ev.key.toLowerCase() === 'arrowleft') {\r\n const stageName = getSpecificParent(\r\n ev.target as HTMLElement,\r\n (current) => current.classList.contains('stage'),\r\n )?.dataset.name as string;\r\n const stageIndex = stage.findIndex(\r\n (current) => current.name === stageName,\r\n );\r\n if (stageIndex <= 0) return;\r\n\r\n const nextStage = stage[stageIndex - 1]?.name;\r\n const firstButton =\r\n document.querySelector<HTMLElement>(\r\n `[data-name=\"${nextStage}\"] .selected`,\r\n ) ||\r\n document.querySelector<HTMLElement>(\r\n `[data-name=\"${nextStage}\"] button:not(:disabled)`,\r\n );\r\n if (firstButton) firstButton.focus();\r\n }\r\n if (ev.key.toLowerCase() === 'arrowright') {\r\n const stageName = getSpecificParent(\r\n ev.target as HTMLElement,\r\n (current) => current.classList.contains('stage'),\r\n )?.dataset.name as string;\r\n const stageIndex = stage.findIndex(\r\n (current) => current.name === stageName,\r\n );\r\n if (stageIndex >= stage.length - 1) return;\r\n\r\n const nextStage = stage[stageIndex + 1]?.name;\r\n const firstButton =\r\n document.querySelector<HTMLElement>(\r\n `[data-name=\"${nextStage}\"] .selected`,\r\n ) ||\r\n document.querySelector<HTMLElement>(\r\n `[data-name=\"${nextStage}\"] button:not(:disabled)`,\r\n );\r\n if (firstButton) firstButton.focus();\r\n }\r\n }}\r\n >\r\n {data?.weekNotConfigured && (\r\n <Heading as=\"h1\">{window.LBL_SCHED_WEEK_NOT_CONFIGURED}</Heading>\r\n )}\r\n {!data?.weekNotConfigured && data?.tskSchDay && (\r\n <>\r\n <Stage stageIndex={0} />\r\n {stagesLength >= 2 && (\r\n <Icon\r\n name=\"ArrowDown\"\r\n title=\"\"\r\n className=\"schedulerMini_faCaretDown\"\r\n />\r\n )}\r\n <Stage stageIndex={1} />\r\n {stagesLength >= 3 && (\r\n <Icon\r\n name=\"ArrowDown\"\r\n title=\"\"\r\n className=\"schedulerMini_faCaretDown\"\r\n />\r\n )}\r\n <Stage stageIndex={2} />\r\n </>\r\n )}\r\n {!data?.weekNotConfigured && !data?.tskSchDay && (\r\n <Box className=\"box_spinner\" title={window.WAIT_A_SECOND}>\r\n <Spinner />\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n});\r\n","import { Box, Label } from '@apia/theme';\r\nimport { formatMessage } from '@apia/util';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { useScheduler } from '.';\r\n\r\nconst SelectedDateInfo = observer(() => {\r\n const controller = useScheduler();\r\n const data = controller.getState().data;\r\n const selectedDay = controller.getState()?.selectedDay;\r\n\r\n return (\r\n <Box className=\"selectedDateInfo\">\r\n {selectedDay?.day && selectedDay?.hour && (\r\n <Label>\r\n {formatMessage(window.LBL_SCHED_SELECTED_DATE, {\r\n TOK1: selectedDay?.day,\r\n TOK2: `${selectedDay.hour.slice(\r\n 0,\r\n -2,\r\n )}:${selectedDay.hour!.slice(2)}`,\r\n })}\r\n </Label>\r\n )}\r\n {!selectedDay?.day && !data?.weekNotConfigured && data?.tskSchDay && (\r\n <Label sx={{ display: 'block' }}>\r\n {window.LBL_SCHED_DATE_NOT_SELECTED}\r\n </Label>\r\n )}\r\n </Box>\r\n );\r\n});\r\n\r\nexport default SelectedDateInfo;\r\n","import { Box, getVariant, useBreakpointIndex } from '@apia/theme';\r\nimport { Navigation } from './Navigation';\r\nimport { SchedTable } from './Table';\r\nimport { Mini } from './mini/Mini';\r\nimport { SchedulerTablePlugin } from './SchedulerTablePlugin';\r\nimport { observer } from 'mobx-react-lite';\r\nimport SelectedDateInfo from './SelectedDayInfo';\r\nimport {\r\n IScheduleInitialProps,\r\n ISchedulerDataRetriever,\r\n Scheduler,\r\n} from '@apia/scheduler-controller';\r\nimport { createContext, useContext, useState } from 'react';\r\n\r\nexport const SchedulerController = createContext<Scheduler | null>(null);\r\n\r\nexport function useScheduler() {\r\n return useContext(SchedulerController)!;\r\n}\r\n\r\nexport const SchedulerComponent = observer(\r\n ({\r\n controller,\r\n retriever,\r\n properties,\r\n getController,\r\n }: {\r\n controller?: Scheduler;\r\n retriever?: ISchedulerDataRetriever;\r\n properties?: IScheduleInitialProps;\r\n getController?: (ctrl: Scheduler) => void;\r\n }) => {\r\n if (!controller && !(properties && retriever)) {\r\n console.error(\r\n 'Need to create controller or pass retriever and properties',\r\n );\r\n return null;\r\n }\r\n\r\n const [actualController] = useState(() => {\r\n const ctrl = controller ?? new Scheduler(properties!, retriever!);\r\n\r\n getController?.(ctrl);\r\n\r\n ctrl.tableController.setPlugins((current) => {\r\n if (!current.some((plugin) => plugin instanceof SchedulerTablePlugin)) {\r\n current.push(new SchedulerTablePlugin());\r\n }\r\n return current;\r\n });\r\n\r\n return ctrl;\r\n });\r\n\r\n const breakPoint = useBreakpointIndex();\r\n\r\n return (\r\n <SchedulerController.Provider value={actualController}>\r\n <Box\r\n {...getVariant('layout.common.components.scheduler')}\r\n className=\"scheduler\"\r\n >\r\n <Navigation />\r\n <SelectedDateInfo />\r\n {breakPoint > 4 ? <SchedTable /> : <Mini />}\r\n </Box>\r\n </SchedulerController.Provider>\r\n );\r\n },\r\n);\r\n"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@apia/scheduler-component",
|
|
3
|
+
"version": "4.0.28",
|
|
4
|
+
"sideEffects": false,
|
|
5
|
+
"author": "Sebastián La Cruz <sebastianlacruz@live.com>",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"typings": "dist/index.d.ts",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"libDev": "rollup --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts",
|
|
12
|
+
"libBuild": "rollup --config ../../config/rollup.common.mjs --environment MODE:production,ENTRY:index.ts",
|
|
13
|
+
"libWatch": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true",
|
|
14
|
+
"libWatchForExecution": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true,DEV_SERVER_MODULE:execution",
|
|
15
|
+
"libWatchForDashboards": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true,DEV_SERVER_MODULE:dashboards"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@types/react": "^18.2.43",
|
|
19
|
+
"@types/react-dom": "^18.2.17",
|
|
20
|
+
"@typescript-eslint/eslint-plugin": "^6.14.0",
|
|
21
|
+
"axios": "^1.3.5",
|
|
22
|
+
"typescript": "5.4.2"
|
|
23
|
+
},
|
|
24
|
+
"peerDependencies": {
|
|
25
|
+
"react": "^18.2.0",
|
|
26
|
+
"react-dom": "^18.2.0"
|
|
27
|
+
},
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public",
|
|
30
|
+
"registry": "https://registry.npmjs.org/"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@apia/api": "^4.0.28",
|
|
34
|
+
"@apia/components": "^4.0.28",
|
|
35
|
+
"@apia/icons": "^4.0.28",
|
|
36
|
+
"@apia/scheduler-controller": "^4.0.28",
|
|
37
|
+
"@apia/table2-controller": "^4.0.28",
|
|
38
|
+
"@apia/theme": "^4.0.28",
|
|
39
|
+
"@apia/util": "^4.0.28",
|
|
40
|
+
"mobx": "^6.13.7",
|
|
41
|
+
"mobx-react-lite": "^4.1.0"
|
|
42
|
+
},
|
|
43
|
+
"gitHead": "f382e288940eb98a55c01081f33f0d0cacaaaadb"
|
|
44
|
+
}
|