@isma91/react-scheduler 4.0.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/.github/workflows/publish.yml +29 -0
- package/.github/workflows/tests.yml +35 -0
- package/.gitignore +32 -0
- package/.husky/pre-commit +2 -0
- package/.prettierignore +1 -0
- package/.prettierrc.json +7 -0
- package/.yarnrc.yml +1 -0
- package/LICENSE +24 -0
- package/README.md +172 -0
- package/dist/LICENSE +24 -0
- package/dist/README.md +172 -0
- package/dist/SchedulerComponent.d.ts +3 -0
- package/dist/components/common/Cell.d.ts +13 -0
- package/dist/components/common/LocaleArrow.d.ts +8 -0
- package/dist/components/common/ResourceHeader.d.ts +6 -0
- package/dist/components/common/Tabs.d.ts +16 -0
- package/dist/components/common/TodayTypo.d.ts +8 -0
- package/dist/components/common/WithResources.d.ts +6 -0
- package/dist/components/events/Actions.d.ts +8 -0
- package/dist/components/events/AgendaEventsList.d.ts +7 -0
- package/dist/components/events/CurrentTimeBar.d.ts +11 -0
- package/dist/components/events/EmptyAgenda.d.ts +2 -0
- package/dist/components/events/EventItem.d.ts +10 -0
- package/dist/components/events/EventItemPopover.d.ts +9 -0
- package/dist/components/events/MonthEvents.d.ts +13 -0
- package/dist/components/events/TodayEvents.d.ts +16 -0
- package/dist/components/hoc/DateProvider.d.ts +5 -0
- package/dist/components/inputs/DatePicker.d.ts +14 -0
- package/dist/components/inputs/Input.d.ts +19 -0
- package/dist/components/inputs/SelectInput.d.ts +22 -0
- package/dist/components/month/MonthTable.d.ts +8 -0
- package/dist/components/nav/DayDateBtn.d.ts +6 -0
- package/dist/components/nav/MonthDateBtn.d.ts +6 -0
- package/dist/components/nav/Navigation.d.ts +3 -0
- package/dist/components/nav/WeekDateBtn.d.ts +8 -0
- package/dist/components/week/WeekTable.d.ts +11 -0
- package/dist/helpers/constants.d.ts +4 -0
- package/dist/helpers/generals.d.ts +78 -0
- package/dist/hooks/useArrowDisable.d.ts +5 -0
- package/dist/hooks/useCellAttributes.d.ts +18 -0
- package/dist/hooks/useDragAttributes.d.ts +10 -0
- package/dist/hooks/useEventPermissions.d.ts +7 -0
- package/dist/hooks/useStore.d.ts +2 -0
- package/dist/hooks/useSyncScroll.d.ts +8 -0
- package/dist/hooks/useWindowResize.d.ts +4 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2853 -0
- package/dist/package.json +65 -0
- package/dist/positionManger/context.d.ts +14 -0
- package/dist/positionManger/provider.d.ts +5 -0
- package/dist/positionManger/usePosition.d.ts +4 -0
- package/dist/store/context.d.ts +2 -0
- package/dist/store/default.d.ts +245 -0
- package/dist/store/provider.d.ts +7 -0
- package/dist/store/types.d.ts +27 -0
- package/dist/styles/styles.d.ts +30 -0
- package/dist/types.d.ts +372 -0
- package/dist/views/Day.d.ts +2 -0
- package/dist/views/DayAgenda.d.ts +7 -0
- package/dist/views/Editor.d.ts +11 -0
- package/dist/views/Month.d.ts +2 -0
- package/dist/views/MonthAgenda.d.ts +7 -0
- package/dist/views/Week.d.ts +2 -0
- package/dist/views/WeekAgenda.d.ts +8 -0
- package/eslint.config.js +79 -0
- package/index.html +41 -0
- package/jest.config.ts +194 -0
- package/package.json +137 -0
- package/public/favicon.ico +0 -0
- package/public/logo192.png +0 -0
- package/public/logo512.png +0 -0
- package/public/manifest.json +25 -0
- package/public/robots.txt +3 -0
- package/scripts/post-pack.js +34 -0
- package/src/App.tsx +25 -0
- package/src/Page1.tsx +67 -0
- package/src/events.tsx +227 -0
- package/src/index.tsx +21 -0
- package/src/lib/SchedulerComponent.tsx +78 -0
- package/src/lib/__tests__/index.test.tsx +24 -0
- package/src/lib/components/common/Cell.tsx +52 -0
- package/src/lib/components/common/LocaleArrow.tsx +38 -0
- package/src/lib/components/common/ResourceHeader.tsx +73 -0
- package/src/lib/components/common/Tabs.tsx +119 -0
- package/src/lib/components/common/TodayTypo.tsx +44 -0
- package/src/lib/components/common/WithResources.tsx +98 -0
- package/src/lib/components/events/Actions.tsx +65 -0
- package/src/lib/components/events/AgendaEventsList.tsx +115 -0
- package/src/lib/components/events/CurrentTimeBar.tsx +59 -0
- package/src/lib/components/events/EmptyAgenda.tsx +27 -0
- package/src/lib/components/events/EventItem.tsx +180 -0
- package/src/lib/components/events/EventItemPopover.tsx +179 -0
- package/src/lib/components/events/MonthEvents.tsx +141 -0
- package/src/lib/components/events/TodayEvents.tsx +99 -0
- package/src/lib/components/hoc/DateProvider.tsx +19 -0
- package/src/lib/components/inputs/DatePicker.tsx +95 -0
- package/src/lib/components/inputs/Input.tsx +113 -0
- package/src/lib/components/inputs/SelectInput.tsx +164 -0
- package/src/lib/components/month/MonthTable.tsx +207 -0
- package/src/lib/components/nav/DayDateBtn.tsx +77 -0
- package/src/lib/components/nav/MonthDateBtn.tsx +80 -0
- package/src/lib/components/nav/Navigation.tsx +201 -0
- package/src/lib/components/nav/WeekDateBtn.tsx +89 -0
- package/src/lib/components/week/WeekTable.tsx +229 -0
- package/src/lib/helpers/constants.ts +4 -0
- package/src/lib/helpers/generals.tsx +354 -0
- package/src/lib/hooks/useArrowDisable.ts +26 -0
- package/src/lib/hooks/useCellAttributes.ts +67 -0
- package/src/lib/hooks/useDragAttributes.ts +31 -0
- package/src/lib/hooks/useEventPermissions.ts +42 -0
- package/src/lib/hooks/useStore.ts +8 -0
- package/src/lib/hooks/useSyncScroll.ts +31 -0
- package/src/lib/hooks/useWindowResize.ts +37 -0
- package/src/lib/index.tsx +14 -0
- package/src/lib/positionManger/context.ts +14 -0
- package/src/lib/positionManger/provider.tsx +113 -0
- package/src/lib/positionManger/usePosition.ts +8 -0
- package/src/lib/store/context.ts +5 -0
- package/src/lib/store/default.ts +157 -0
- package/src/lib/store/provider.tsx +211 -0
- package/src/lib/store/types.ts +33 -0
- package/src/lib/styles/styles.ts +256 -0
- package/src/lib/types.ts +423 -0
- package/src/lib/views/Day.tsx +265 -0
- package/src/lib/views/DayAgenda.tsx +57 -0
- package/src/lib/views/Editor.tsx +258 -0
- package/src/lib/views/Month.tsx +82 -0
- package/src/lib/views/MonthAgenda.tsx +84 -0
- package/src/lib/views/Week.tsx +92 -0
- package/src/lib/views/WeekAgenda.tsx +81 -0
- package/src/vite-env.d.ts +3 -0
- package/tsconfig.build.json +5 -0
- package/tsconfig.json +27 -0
- package/vite.config.js +40 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MouseEvent } from 'react';
|
|
2
|
+
import { ProcessedEvent } from '../../types';
|
|
3
|
+
type Props = {
|
|
4
|
+
event: ProcessedEvent;
|
|
5
|
+
anchorEl: Element | null;
|
|
6
|
+
onTriggerViewer: (el?: MouseEvent<Element>) => void;
|
|
7
|
+
};
|
|
8
|
+
declare const EventItemPopover: ({ anchorEl, event, onTriggerViewer }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export default EventItemPopover;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ProcessedEvent } from '../../types';
|
|
2
|
+
interface MonthEventProps {
|
|
3
|
+
events: ProcessedEvent[];
|
|
4
|
+
resourceId?: string;
|
|
5
|
+
today: Date;
|
|
6
|
+
eachWeekStart: Date[];
|
|
7
|
+
eachFirstDayInCalcRow: Date | null;
|
|
8
|
+
daysList: Date[];
|
|
9
|
+
onViewMore(day: Date): void;
|
|
10
|
+
cellHeight: number;
|
|
11
|
+
}
|
|
12
|
+
declare const MonthEvents: ({ events, resourceId, today, eachWeekStart, eachFirstDayInCalcRow, daysList, onViewMore, cellHeight, }: MonthEventProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default MonthEvents;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ProcessedEvent } from '../../types';
|
|
2
|
+
interface TodayEventsProps {
|
|
3
|
+
todayEvents: ProcessedEvent[];
|
|
4
|
+
today: Date;
|
|
5
|
+
startHour: number;
|
|
6
|
+
endHour: number;
|
|
7
|
+
step: number;
|
|
8
|
+
minuteHeight: number;
|
|
9
|
+
direction: "rtl" | "ltr";
|
|
10
|
+
timeZone?: string;
|
|
11
|
+
currentTime?: Date;
|
|
12
|
+
showCurrentTimeBar?: boolean;
|
|
13
|
+
currentTimeBarColor?: string;
|
|
14
|
+
}
|
|
15
|
+
declare const TodayEvents: ({ todayEvents, today, startHour, endHour, step, minuteHeight, direction, timeZone, currentTime, showCurrentTimeBar, currentTimeBarColor, }: TodayEventsProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export default TodayEvents;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface EditorDatePickerProps {
|
|
2
|
+
type?: "date" | "datetime";
|
|
3
|
+
label?: string;
|
|
4
|
+
variant?: "standard" | "filled" | "outlined";
|
|
5
|
+
value: Date | string;
|
|
6
|
+
name: string;
|
|
7
|
+
onChange(name: string, date: Date): void;
|
|
8
|
+
error?: boolean;
|
|
9
|
+
errMsg?: string;
|
|
10
|
+
touched?: boolean;
|
|
11
|
+
required?: boolean;
|
|
12
|
+
}
|
|
13
|
+
declare const EditorDatePicker: ({ type, value, label, name, onChange, variant, error, errMsg, touched, required, }: EditorDatePickerProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export { EditorDatePicker };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface EditorInputProps {
|
|
2
|
+
variant?: "standard" | "filled" | "outlined";
|
|
3
|
+
label?: string;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
required?: boolean;
|
|
6
|
+
min?: number;
|
|
7
|
+
max?: number;
|
|
8
|
+
email?: boolean;
|
|
9
|
+
decimal?: boolean;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
multiline?: boolean;
|
|
12
|
+
rows?: number;
|
|
13
|
+
value: string;
|
|
14
|
+
name: string;
|
|
15
|
+
onChange(name: string, value: string, isValid: boolean): void;
|
|
16
|
+
touched?: boolean;
|
|
17
|
+
}
|
|
18
|
+
declare const EditorInput: ({ variant, label, placeholder, value, name, required, min, max, email, decimal, onChange, disabled, multiline, rows, touched, }: EditorInputProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export { EditorInput };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type SelectOption = {
|
|
2
|
+
id: string | number;
|
|
3
|
+
text: string;
|
|
4
|
+
value: any;
|
|
5
|
+
};
|
|
6
|
+
interface EditorSelectProps {
|
|
7
|
+
options: Array<SelectOption>;
|
|
8
|
+
value: string;
|
|
9
|
+
name: string;
|
|
10
|
+
onChange(name: string, value: string, isValid: boolean): void;
|
|
11
|
+
variant?: "standard" | "filled" | "outlined";
|
|
12
|
+
label?: string;
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
required?: boolean;
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
touched?: boolean;
|
|
17
|
+
loading?: boolean;
|
|
18
|
+
multiple?: "default" | "chips";
|
|
19
|
+
errMsg?: string;
|
|
20
|
+
}
|
|
21
|
+
declare const EditorSelect: ({ options, value, name, required, onChange, label, disabled, touched, variant, loading, multiple, placeholder, errMsg, }: EditorSelectProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export { EditorSelect };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DefaultResource } from '../../types';
|
|
2
|
+
type Props = {
|
|
3
|
+
daysList: Date[];
|
|
4
|
+
resource?: DefaultResource;
|
|
5
|
+
eachWeekStart: Date[];
|
|
6
|
+
};
|
|
7
|
+
declare const MonthTable: ({ daysList, resource, eachWeekStart }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export default MonthTable;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { WeekProps } from '../../types';
|
|
2
|
+
interface WeekDateBtnProps {
|
|
3
|
+
selectedDate: Date;
|
|
4
|
+
onChange(value: Date): void;
|
|
5
|
+
weekProps: WeekProps;
|
|
6
|
+
}
|
|
7
|
+
declare const WeekDateBtn: ({ selectedDate, onChange, weekProps }: WeekDateBtnProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export { WeekDateBtn };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DefaultResource, ProcessedEvent } from '../../types';
|
|
2
|
+
type Props = {
|
|
3
|
+
daysList: Date[];
|
|
4
|
+
hours: Date[];
|
|
5
|
+
cellHeight: number;
|
|
6
|
+
minutesHeight: number;
|
|
7
|
+
resource?: DefaultResource;
|
|
8
|
+
resourcedEvents: ProcessedEvent[];
|
|
9
|
+
};
|
|
10
|
+
declare const WeekTable: ({ daysList, hours, cellHeight, minutesHeight, resourcedEvents, resource, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default WeekTable;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { View } from '../components/nav/Navigation';
|
|
2
|
+
import { DefaultResource, FieldProps, ProcessedEvent, ResourceFields, SchedulerProps } from '../types';
|
|
3
|
+
import { StateEvent } from '../views/Editor';
|
|
4
|
+
export declare const getOneView: (state: Partial<SchedulerProps>) => View;
|
|
5
|
+
export declare const getAvailableViews: (state: SchedulerProps) => View[];
|
|
6
|
+
export declare const arraytizeFieldVal: (field: FieldProps, val: any, event?: StateEvent) => {
|
|
7
|
+
value: any;
|
|
8
|
+
validity: any;
|
|
9
|
+
};
|
|
10
|
+
export declare const getResourcedEvents: (events: ProcessedEvent[], resource: DefaultResource, resourceFields: ResourceFields, fields: FieldProps[]) => ProcessedEvent[];
|
|
11
|
+
export declare const traversCrossingEvents: (todayEvents: ProcessedEvent[], event: ProcessedEvent) => ProcessedEvent[];
|
|
12
|
+
export declare const calcMinuteHeight: (cellHeight: number, step: number) => number;
|
|
13
|
+
export declare const calcCellHeight: (tableHeight: number, hoursLength: number) => number;
|
|
14
|
+
export declare const differenceInDaysOmitTime: (start: Date, end: Date) => number;
|
|
15
|
+
export declare const convertRRuleDateToDate: (rruleDate: Date) => Date;
|
|
16
|
+
export declare const getRecurrencesForDate: (event: ProcessedEvent, today: Date, timeZone?: string) => {
|
|
17
|
+
start: Date;
|
|
18
|
+
end: Date;
|
|
19
|
+
convertedTz: boolean;
|
|
20
|
+
event_id: number | string;
|
|
21
|
+
title: React.ReactNode;
|
|
22
|
+
subtitle?: React.ReactNode;
|
|
23
|
+
recurring?: import('rrule').RRule;
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
color?: string;
|
|
26
|
+
textColor?: string;
|
|
27
|
+
editable?: boolean;
|
|
28
|
+
deletable?: boolean;
|
|
29
|
+
draggable?: boolean;
|
|
30
|
+
allDay?: boolean;
|
|
31
|
+
agendaAvatar?: React.ReactElement | string;
|
|
32
|
+
_originalStart?: Date;
|
|
33
|
+
_originalEnd?: Date;
|
|
34
|
+
_hasPrev?: boolean;
|
|
35
|
+
_hasNext?: boolean;
|
|
36
|
+
}[];
|
|
37
|
+
export declare const filterTodayEvents: (events: ProcessedEvent[], today: Date, timeZone?: string, forceInlineMultiDay?: boolean) => ProcessedEvent[];
|
|
38
|
+
export declare const filterTodayAgendaEvents: (events: ProcessedEvent[], today: Date) => ProcessedEvent[];
|
|
39
|
+
export declare const sortEventsByTheLengthest: (events: ProcessedEvent[]) => ProcessedEvent[];
|
|
40
|
+
export declare const sortEventsByTheEarliest: (events: ProcessedEvent[]) => ProcessedEvent[];
|
|
41
|
+
export declare const filterMultiDaySlot: (events: ProcessedEvent[], date: Date | Date[], timeZone?: string, lengthOnly?: boolean, forceInlineMultiDay?: boolean) => ProcessedEvent[];
|
|
42
|
+
export declare const convertEventTimeZone: (event: ProcessedEvent, timeZone?: string) => {
|
|
43
|
+
start: Date;
|
|
44
|
+
end: Date;
|
|
45
|
+
convertedTz: boolean;
|
|
46
|
+
event_id: number | string;
|
|
47
|
+
title: React.ReactNode;
|
|
48
|
+
subtitle?: React.ReactNode;
|
|
49
|
+
recurring?: import('rrule').RRule;
|
|
50
|
+
disabled?: boolean;
|
|
51
|
+
color?: string;
|
|
52
|
+
textColor?: string;
|
|
53
|
+
editable?: boolean;
|
|
54
|
+
deletable?: boolean;
|
|
55
|
+
draggable?: boolean;
|
|
56
|
+
allDay?: boolean;
|
|
57
|
+
agendaAvatar?: React.ReactElement | string;
|
|
58
|
+
_originalStart?: Date;
|
|
59
|
+
_originalEnd?: Date;
|
|
60
|
+
_hasPrev?: boolean;
|
|
61
|
+
_hasNext?: boolean;
|
|
62
|
+
};
|
|
63
|
+
export declare const getTimeZonedDate: (date: Date, timeZone?: string) => Date;
|
|
64
|
+
/**
|
|
65
|
+
* Performs the reverse of getTimeZonedDate, IE: the given date is assumed
|
|
66
|
+
* to already be in the provided timeZone and is reverted to the local
|
|
67
|
+
* browser's timeZone.
|
|
68
|
+
* @param date The date to convert.
|
|
69
|
+
* @param timeZone The timeZone to convert from.
|
|
70
|
+
* @returns A new date reverted from the given timeZone to local time.
|
|
71
|
+
*/
|
|
72
|
+
export declare const revertTimeZonedDate: (date: Date, timeZone?: string) => Date;
|
|
73
|
+
export declare const isTimeZonedToday: ({ dateLeft, dateRight, timeZone, }: {
|
|
74
|
+
dateLeft: Date;
|
|
75
|
+
dateRight?: Date;
|
|
76
|
+
timeZone?: string;
|
|
77
|
+
}) => boolean;
|
|
78
|
+
export declare const getHourFormat: (hourFormat: "12" | "24") => "hh:mm a" | "HH:mm";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DragEvent } from 'react';
|
|
2
|
+
interface Props {
|
|
3
|
+
start: Date;
|
|
4
|
+
end: Date;
|
|
5
|
+
resourceKey: string;
|
|
6
|
+
resourceVal: string | number;
|
|
7
|
+
}
|
|
8
|
+
export declare const useCellAttributes: ({ start, end, resourceKey, resourceVal }: Props) => {
|
|
9
|
+
[x: string]: string | number | boolean | ((e: DragEvent<HTMLButtonElement>) => void);
|
|
10
|
+
tabIndex: number;
|
|
11
|
+
disableRipple: boolean;
|
|
12
|
+
onClick: () => void;
|
|
13
|
+
onDragOver: (e: DragEvent<HTMLButtonElement>) => void;
|
|
14
|
+
onDragEnter: (e: DragEvent<HTMLButtonElement>) => void;
|
|
15
|
+
onDragLeave: (e: DragEvent<HTMLButtonElement>) => void;
|
|
16
|
+
onDrop: (e: DragEvent<HTMLButtonElement>) => void;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DragEvent } from 'react';
|
|
2
|
+
import { ProcessedEvent } from '../types';
|
|
3
|
+
declare const useDragAttributes: (event: ProcessedEvent) => {
|
|
4
|
+
draggable: boolean;
|
|
5
|
+
onDragStart: (e: DragEvent<HTMLElement>) => void;
|
|
6
|
+
onDragEnd: (e: DragEvent<HTMLElement>) => void;
|
|
7
|
+
onDragOver: (e: DragEvent<HTMLElement>) => void;
|
|
8
|
+
onDragEnter: (e: DragEvent<HTMLElement>) => void;
|
|
9
|
+
};
|
|
10
|
+
export default useDragAttributes;
|
package/dist/index.d.ts
ADDED