react-native-roster 0.0.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +209 -32
- package/dist/src/components/primitives/portal.d.ts +12 -0
- package/dist/src/components/primitives/portal.d.ts.map +1 -0
- package/dist/src/components/primitives/portal.js +41 -0
- package/dist/src/components/primitives/portal.js.map +1 -0
- package/dist/src/components/roster/body-layout.d.ts +9 -0
- package/dist/src/components/roster/body-layout.d.ts.map +1 -0
- package/dist/src/components/roster/body-layout.js +15 -0
- package/dist/src/components/roster/body-layout.js.map +1 -0
- package/dist/src/components/roster/index.d.ts +2 -1
- package/dist/src/components/roster/index.d.ts.map +1 -1
- package/dist/src/components/roster/index.js +34 -27
- package/dist/src/components/roster/index.js.map +1 -1
- package/dist/src/components/roster/lanes/lane.d.ts +2 -2
- package/dist/src/components/roster/lanes/lane.d.ts.map +1 -1
- package/dist/src/components/roster/lanes/lane.js +4 -8
- package/dist/src/components/roster/lanes/lane.js.map +1 -1
- package/dist/src/components/roster/parts/body.d.ts +3 -3
- package/dist/src/components/roster/parts/body.d.ts.map +1 -1
- package/dist/src/components/roster/parts/body.js +5 -20
- package/dist/src/components/roster/parts/body.js.map +1 -1
- package/dist/src/components/roster/parts/header-cell.d.ts +2 -4
- package/dist/src/components/roster/parts/header-cell.d.ts.map +1 -1
- package/dist/src/components/roster/parts/header-cell.js.map +1 -1
- package/dist/src/components/roster/parts/header.d.ts +1 -1
- package/dist/src/components/roster/parts/header.d.ts.map +1 -1
- package/dist/src/components/roster/parts/header.js +2 -2
- package/dist/src/components/roster/parts/header.js.map +1 -1
- package/dist/src/components/roster/parts/lane-label-column.d.ts +1 -1
- package/dist/src/components/roster/parts/lane-label-column.d.ts.map +1 -1
- package/dist/src/components/roster/parts/lane-label-column.js +2 -2
- package/dist/src/components/roster/parts/lane-label-column.js.map +1 -1
- package/dist/src/components/roster/parts/lane-list.d.ts +7 -0
- package/dist/src/components/roster/parts/lane-list.d.ts.map +1 -0
- package/dist/src/components/roster/parts/lane-list.js +26 -0
- package/dist/src/components/roster/parts/lane-list.js.map +1 -0
- package/dist/src/components/roster/roster.types.d.ts +48 -21
- package/dist/src/components/roster/roster.types.d.ts.map +1 -1
- package/dist/src/components/roster/selection/selection-layout.d.ts +4 -0
- package/dist/src/components/roster/selection/selection-layout.d.ts.map +1 -0
- package/dist/src/components/roster/selection/selection-layout.js +82 -0
- package/dist/src/components/roster/selection/selection-layout.js.map +1 -0
- package/dist/src/components/roster/selection/selection-layout.types.d.ts +25 -0
- package/dist/src/components/roster/selection/selection-layout.types.d.ts.map +1 -0
- package/dist/src/components/roster/selection/selection-layout.types.js +3 -0
- package/dist/src/components/roster/selection/selection-layout.types.js.map +1 -0
- package/dist/src/components/roster/selection/selection-layout.web.d.ts +4 -0
- package/dist/src/components/roster/selection/selection-layout.web.d.ts.map +1 -0
- package/dist/src/components/roster/selection/selection-layout.web.js +52 -0
- package/dist/src/components/roster/selection/selection-layout.web.js.map +1 -0
- package/dist/src/components/roster/use-roster-press.d.ts +6 -0
- package/dist/src/components/roster/use-roster-press.d.ts.map +1 -0
- package/dist/src/components/roster/use-roster-press.js +61 -0
- package/dist/src/components/roster/use-roster-press.js.map +1 -0
- package/dist/src/components/roster/use-roster.d.ts.map +1 -1
- package/dist/src/components/roster/use-roster.js +40 -30
- package/dist/src/components/roster/use-roster.js.map +1 -1
- package/dist/src/components/roster/utils/body-content-key.d.ts +1 -1
- package/dist/src/components/roster/utils/body-content-key.d.ts.map +1 -1
- package/dist/src/components/roster/utils/body-content-key.js +10 -10
- package/dist/src/components/roster/utils/body-content-key.js.map +1 -1
- package/dist/src/components/schedule/days/day.d.ts +2 -2
- package/dist/src/components/schedule/days/day.d.ts.map +1 -1
- package/dist/src/components/schedule/days/day.js +2 -11
- package/dist/src/components/schedule/days/day.js.map +1 -1
- package/dist/src/components/schedule/days/header-layout.d.ts +1 -1
- package/dist/src/components/schedule/days/header-layout.d.ts.map +1 -1
- package/dist/src/components/schedule/days/parts/column.d.ts +1 -1
- package/dist/src/components/schedule/days/parts/column.d.ts.map +1 -1
- package/dist/src/components/schedule/days/parts/column.js +4 -8
- package/dist/src/components/schedule/days/parts/column.js.map +1 -1
- package/dist/src/components/schedule/index.d.ts.map +1 -1
- package/dist/src/components/schedule/index.js +7 -8
- package/dist/src/components/schedule/index.js.map +1 -1
- package/dist/src/components/schedule/schedule.types.d.ts +17 -17
- package/dist/src/components/schedule/schedule.types.d.ts.map +1 -1
- package/dist/src/core/index.d.ts +1 -0
- package/dist/src/core/index.d.ts.map +1 -1
- package/dist/src/core/index.js +3 -1
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/core/source.d.ts +4 -0
- package/dist/src/core/source.d.ts.map +1 -0
- package/dist/src/core/source.js +9 -0
- package/dist/src/core/source.js.map +1 -0
- package/dist/src/index.d.ts +6 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +10 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/nativewind/index.d.ts +28 -27
- package/dist/src/nativewind/index.d.ts.map +1 -1
- package/docs/migrations.md +61 -0
- package/llms.txt +112 -30
- package/package.json +12 -5
- package/src/components/layers/README.md +7 -3
- package/src/components/primitives/README.md +13 -2
- package/src/components/primitives/portal.tsx +48 -0
- package/src/components/roster/README.md +62 -5
- package/src/components/roster/body-layout.tsx +38 -0
- package/src/components/roster/index.tsx +109 -46
- package/src/components/roster/lanes/lane.tsx +16 -13
- package/src/components/roster/parts/body.tsx +17 -84
- package/src/components/roster/parts/header-cell.tsx +2 -2
- package/src/components/roster/parts/header.tsx +7 -2
- package/src/components/roster/parts/lane-label-column.tsx +2 -2
- package/src/components/roster/parts/lane-list.tsx +76 -0
- package/src/components/roster/roster.types.ts +47 -17
- package/src/components/roster/selection/selection-layout.tsx +90 -0
- package/src/components/roster/selection/selection-layout.types.ts +20 -0
- package/src/components/roster/selection/selection-layout.web.tsx +88 -0
- package/src/components/roster/use-roster-press.ts +74 -0
- package/src/components/roster/use-roster.ts +57 -44
- package/src/components/roster/utils/body-content-key.ts +13 -13
- package/src/components/schedule/README.md +8 -3
- package/src/components/schedule/days/day.tsx +31 -18
- package/src/components/schedule/days/header-layout.tsx +1 -1
- package/src/components/schedule/days/parts/column.tsx +10 -12
- package/src/components/schedule/index.tsx +20 -21
- package/src/components/schedule/schedule.types.ts +13 -13
- package/src/core/README.md +4 -0
- package/src/core/index.ts +1 -0
- package/src/core/source.ts +9 -0
- package/src/index.ts +7 -0
|
@@ -7,7 +7,14 @@ import { transitionBounds } from '../utils/days';
|
|
|
7
7
|
import { ScheduleDayLayout } from './layout';
|
|
8
8
|
|
|
9
9
|
type ScheduleDayZones = Required<
|
|
10
|
-
Pick<
|
|
10
|
+
Pick<
|
|
11
|
+
ScheduleProps,
|
|
12
|
+
| 'gridComponent'
|
|
13
|
+
| 'columnComponent'
|
|
14
|
+
| 'transitionComponent'
|
|
15
|
+
| 'intervalComponent'
|
|
16
|
+
| 'gapComponent'
|
|
17
|
+
>
|
|
11
18
|
>;
|
|
12
19
|
|
|
13
20
|
type ScheduleDayProps = ScheduleDayZones & {
|
|
@@ -33,11 +40,11 @@ export function ScheduleDay({
|
|
|
33
40
|
highlightSource,
|
|
34
41
|
hours,
|
|
35
42
|
press,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
43
|
+
gridComponent: GridComponent,
|
|
44
|
+
columnComponent: ColumnComponent,
|
|
45
|
+
transitionComponent: TransitionComponent,
|
|
46
|
+
intervalComponent,
|
|
47
|
+
gapComponent,
|
|
41
48
|
nowLineZone,
|
|
42
49
|
}: ScheduleDayProps) {
|
|
43
50
|
return (
|
|
@@ -53,20 +60,26 @@ export function ScheduleDay({
|
|
|
53
60
|
width={projection.columnWidth}
|
|
54
61
|
height={24 * projection.pxPerHour}
|
|
55
62
|
chromeZ={Math.max(0, ...lane.layers.map((layer) => layer.z)) + 1}
|
|
56
|
-
gridZone={
|
|
57
|
-
columnZone={
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
gridZone={<GridComponent hours={hours} pxPerHour={projection.pxPerHour} />}
|
|
64
|
+
columnZone={
|
|
65
|
+
<ColumnComponent
|
|
66
|
+
day={day}
|
|
67
|
+
lane={lane}
|
|
68
|
+
rects={geometry.rects.filter((rect) => rect.column === column)}
|
|
69
|
+
gapRects={geometry.gapRects.filter((rect) => rect.column === column)}
|
|
70
|
+
highlightSource={highlightSource}
|
|
71
|
+
intervalComponent={intervalComponent}
|
|
72
|
+
gapComponent={gapComponent}
|
|
73
|
+
press={press}
|
|
74
|
+
/>
|
|
75
|
+
}
|
|
67
76
|
transitionZone={day.transitions.map((transition) => (
|
|
68
77
|
<Fragment key={transition.at}>
|
|
69
|
-
|
|
78
|
+
<TransitionComponent
|
|
79
|
+
day={day}
|
|
80
|
+
transition={transition}
|
|
81
|
+
{...transitionBounds(day, transition, projection)}
|
|
82
|
+
/>
|
|
70
83
|
</Fragment>
|
|
71
84
|
))}
|
|
72
85
|
nowLineZone={nowLineZone}
|
|
@@ -3,7 +3,7 @@ import { View } from 'react-native';
|
|
|
3
3
|
|
|
4
4
|
type ScheduleDayHeaderLayoutProps = {
|
|
5
5
|
width: number;
|
|
6
|
-
/** Day heading supplied by
|
|
6
|
+
/** Day heading supplied by dayHeaderComponent, aligned with its column. */
|
|
7
7
|
headerZone: ReactNode;
|
|
8
8
|
};
|
|
9
9
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Fragment } from 'react';
|
|
2
2
|
import { Pressable } from 'react-native';
|
|
3
|
+
import { hasSource } from '../../../../core';
|
|
3
4
|
import { pressPoint } from '../../../primitives/press-point';
|
|
4
5
|
import type { ScheduleColumnInput } from '../../schedule.types';
|
|
5
6
|
|
|
@@ -8,8 +9,8 @@ export function ScheduleColumn({
|
|
|
8
9
|
rects,
|
|
9
10
|
gapRects,
|
|
10
11
|
press,
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
intervalComponent: IntervalComponent,
|
|
13
|
+
gapComponent: GapComponent,
|
|
13
14
|
highlightSource,
|
|
14
15
|
}: ScheduleColumnInput) {
|
|
15
16
|
return [...lane.layers]
|
|
@@ -20,15 +21,12 @@ export function ScheduleColumn({
|
|
|
20
21
|
.filter((rect) => rect.layerId === layer.id)
|
|
21
22
|
.map((rect) => (
|
|
22
23
|
<Fragment key={`interval-${rect.y}:${rect.height}`}>
|
|
23
|
-
|
|
24
|
-
rect
|
|
25
|
-
layer
|
|
26
|
-
lane
|
|
27
|
-
highlighted
|
|
28
|
-
|
|
29
|
-
source.kind === highlightSource?.kind && source.id === highlightSource.id,
|
|
30
|
-
),
|
|
31
|
-
})}
|
|
24
|
+
<IntervalComponent
|
|
25
|
+
rect={rect}
|
|
26
|
+
layer={layer}
|
|
27
|
+
lane={lane}
|
|
28
|
+
highlighted={hasSource(rect.sources, highlightSource)}
|
|
29
|
+
/>
|
|
32
30
|
</Fragment>
|
|
33
31
|
))}
|
|
34
32
|
{gapRects
|
|
@@ -51,7 +49,7 @@ export function ScheduleColumn({
|
|
|
51
49
|
zIndex: rect.z,
|
|
52
50
|
}}
|
|
53
51
|
>
|
|
54
|
-
|
|
52
|
+
<GapComponent rect={rect} layer={layer} lane={lane} />
|
|
55
53
|
</Pressable>
|
|
56
54
|
))}
|
|
57
55
|
</Fragment>
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Fragment } from 'react';
|
|
2
1
|
import { View } from 'react-native';
|
|
3
2
|
import { RosterGap } from '../layers/parts/gap';
|
|
4
3
|
import { RosterInterval } from '../layers/parts/interval';
|
|
@@ -50,40 +49,40 @@ function ScheduleContent(props: ScheduleProps) {
|
|
|
50
49
|
lane,
|
|
51
50
|
windowSpec,
|
|
52
51
|
highlightSource,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
52
|
+
gutterComponent: GutterComponent = ScheduleGutter,
|
|
53
|
+
dayHeaderComponent: DayHeaderComponent = ScheduleDayHeader,
|
|
54
|
+
skippedDateComponent: SkippedDateComponent = ScheduleSkippedDate,
|
|
55
|
+
columnComponent = ScheduleColumn,
|
|
56
|
+
gridComponent = ScheduleGrid,
|
|
57
|
+
transitionComponent = ScheduleTransition,
|
|
58
|
+
nowLineComponent: NowLineComponent = ScheduleNowLine,
|
|
59
|
+
intervalComponent = RosterInterval,
|
|
60
|
+
gapComponent = RosterGap,
|
|
61
|
+
incompleteComponent: IncompleteComponent = ScheduleIncomplete,
|
|
63
62
|
incompleteLabel = 'Availability may be incomplete',
|
|
64
63
|
} = props;
|
|
65
64
|
const position = nowPosition(projection, now);
|
|
66
65
|
const incomplete =
|
|
67
|
-
lane.complete === false ?
|
|
66
|
+
lane.complete === false ? <IncompleteComponent lane={lane} label={incompleteLabel} /> : null;
|
|
68
67
|
return (
|
|
69
68
|
<ScheduleLayout
|
|
70
69
|
headerStyle={props.headerStyle}
|
|
71
70
|
gutterStyle={props.gutterStyle}
|
|
72
71
|
daysStyle={props.daysStyle}
|
|
73
72
|
incompleteZone={incomplete}
|
|
74
|
-
gutterZone={
|
|
73
|
+
gutterZone={<GutterComponent hours={hours} pxPerHour={projection.pxPerHour} />}
|
|
75
74
|
dayHeaderZone={headerDates(windowSpec, days).map(({ localDate, day }) => {
|
|
76
|
-
if (!day) return <
|
|
75
|
+
if (!day) return <SkippedDateComponent key={localDate} localDate={localDate} />;
|
|
77
76
|
return (
|
|
78
77
|
<ScheduleDayHeaderLayout
|
|
79
78
|
key={localDate}
|
|
80
79
|
width={projection.columnWidth}
|
|
81
|
-
headerZone={
|
|
80
|
+
headerZone={<DayHeaderComponent day={day} />}
|
|
82
81
|
/>
|
|
83
82
|
);
|
|
84
83
|
})}
|
|
85
84
|
daysZone={days.map((day, column) => {
|
|
86
|
-
const nowLine = position?.column === column ?
|
|
85
|
+
const nowLine = position?.column === column ? <NowLineComponent {...position} /> : null;
|
|
87
86
|
return (
|
|
88
87
|
<ScheduleDay
|
|
89
88
|
key={day.localDate}
|
|
@@ -95,11 +94,11 @@ function ScheduleContent(props: ScheduleProps) {
|
|
|
95
94
|
highlightSource={highlightSource}
|
|
96
95
|
hours={hours}
|
|
97
96
|
press={(x, y) => press(column, x, y)}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
97
|
+
gridComponent={gridComponent}
|
|
98
|
+
columnComponent={columnComponent}
|
|
99
|
+
transitionComponent={transitionComponent}
|
|
100
|
+
intervalComponent={intervalComponent}
|
|
101
|
+
gapComponent={gapComponent}
|
|
103
102
|
nowLineZone={nowLine}
|
|
104
103
|
/>
|
|
105
104
|
);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ComponentType } from 'react';
|
|
2
2
|
import type { StyleProp, ViewStyle } from 'react-native';
|
|
3
3
|
import type {
|
|
4
4
|
DayColumn,
|
|
@@ -53,9 +53,9 @@ export type ScheduleColumnInput = {
|
|
|
53
53
|
highlightSource?: Source;
|
|
54
54
|
press: (x: number, y: number) => void;
|
|
55
55
|
/** Covered rect filler shared with Roster; final bounds and stacking belong to the rect. */
|
|
56
|
-
|
|
56
|
+
intervalComponent: ComponentType<IntervalInput>;
|
|
57
57
|
/** Removed rect content shared with Roster; the column supplies its pressable bounds. */
|
|
58
|
-
|
|
58
|
+
gapComponent: ComponentType<GapInput>;
|
|
59
59
|
};
|
|
60
60
|
export type ScheduleHoursInput = { hours: number[]; pxPerHour: number };
|
|
61
61
|
/**
|
|
@@ -81,23 +81,23 @@ export type ScheduleProps = ScheduleInput &
|
|
|
81
81
|
ScheduleStyleProps & {
|
|
82
82
|
incompleteLabel?: string;
|
|
83
83
|
/** Frozen left hour labels; ScheduleGutter receives hours 0 through 23 and their scale. */
|
|
84
|
-
|
|
84
|
+
gutterComponent?: ComponentType<ScheduleHoursInput>;
|
|
85
85
|
/** Hour bands behind each day's rects; ScheduleGrid draws 24 bordered bands. */
|
|
86
|
-
|
|
86
|
+
gridComponent?: ComponentType<ScheduleHoursInput>;
|
|
87
87
|
/** Frozen day heading; ScheduleDayHeader shows weekday, localDate, and a transition badge. */
|
|
88
|
-
|
|
88
|
+
dayHeaderComponent?: ComponentType<{ day: DayColumn }>;
|
|
89
89
|
/** Wholly skipped local date marker; ScheduleSkippedDate labels its zero-width header gap. */
|
|
90
|
-
|
|
90
|
+
skippedDateComponent?: ComponentType<{ localDate: string }>;
|
|
91
91
|
/** The day's covered and removed rects; ScheduleColumn draws final bounds in layer order. */
|
|
92
|
-
|
|
92
|
+
columnComponent?: ComponentType<ScheduleColumnInput>;
|
|
93
93
|
/** Transition chrome only; ScheduleTransition hatches skips and divides repeats with again. */
|
|
94
|
-
|
|
94
|
+
transitionComponent?: ComponentType<ScheduleTransitionInput>;
|
|
95
95
|
/** Current day's line at y; ScheduleNowLine spans the containing column. */
|
|
96
|
-
|
|
96
|
+
nowLineComponent?: ComponentType<{ y: number; column: number }>;
|
|
97
97
|
/** Covered rect filler shared with Roster; position using rect bounds and use pointerEvents="none". */
|
|
98
|
-
|
|
98
|
+
intervalComponent?: ComponentType<IntervalInput>;
|
|
99
99
|
/** Removed rect content shared with Roster; ScheduleColumn supplies the invisible pressable. */
|
|
100
|
-
|
|
100
|
+
gapComponent?: ComponentType<GapInput>;
|
|
101
101
|
/** Completeness notice in reserved empty space above the day grid; receives the lane and localized label. */
|
|
102
|
-
|
|
102
|
+
incompleteComponent?: ComponentType<{ lane: Lane; label: string }>;
|
|
103
103
|
};
|
package/src/core/README.md
CHANGED
|
@@ -13,6 +13,7 @@ no React Native, no dependencies.
|
|
|
13
13
|
| `axis.ts` | window specs, spans, and navigation (`windowFor`, `next`, `prev`, `today`) |
|
|
14
14
|
| `layout.ts` | rect geometry for one lane in either projection |
|
|
15
15
|
| `coverage.ts` | covered and removed minutes per lane |
|
|
16
|
+
| `source.ts` | `hasSource(sources, source)` matches kind and id, ignoring labels |
|
|
16
17
|
| `spans.ts` | the provenance sweep: exact sources per merged span |
|
|
17
18
|
| `columns.ts` | day columns, transitions, and skipped dates for the columns projection |
|
|
18
19
|
| `zone.ts` | Intl-only timezone math (offsets, first instants, transitions) |
|
|
@@ -23,3 +24,6 @@ no React Native, no dependencies.
|
|
|
23
24
|
|
|
24
25
|
Reference: [design](../../docs/design.md), [timezones](../../docs/timezones.md),
|
|
25
26
|
[caches](../../docs/caches.md). Tests: `test/core`.
|
|
27
|
+
|
|
28
|
+
The public entry binds immutable function aliases directly to preserve implementation
|
|
29
|
+
identity while avoiding repeated CommonJS getter wrappers in consumer bundles.
|
package/src/core/index.ts
CHANGED
|
@@ -14,6 +14,7 @@ export { layoutLane } from './layout';
|
|
|
14
14
|
export type { LaneComparator } from './order';
|
|
15
15
|
export { byCoverage, byLabel } from './order';
|
|
16
16
|
export { snapToStep, timeAtX, timeAtY } from './snap';
|
|
17
|
+
export { hasSource } from './source';
|
|
17
18
|
export type {
|
|
18
19
|
Coverage,
|
|
19
20
|
DayColumn,
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Source } from './types';
|
|
2
|
+
|
|
3
|
+
/** Match source identity by kind and id, ignoring display metadata. */
|
|
4
|
+
export function hasSource(sources: readonly Source[], source: Source | undefined): boolean {
|
|
5
|
+
return (
|
|
6
|
+
source !== undefined &&
|
|
7
|
+
sources.some((item) => item.kind === source.kind && item.id === source.id)
|
|
8
|
+
);
|
|
9
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export type { GapInput, IntervalInput } from './components/layers/layers.types';
|
|
2
2
|
export { RosterGap } from './components/layers/parts/gap';
|
|
3
3
|
export { RosterInterval } from './components/layers/parts/interval';
|
|
4
|
+
export { Portal, PortalHost } from './components/primitives/portal';
|
|
4
5
|
export { Roster } from './components/roster';
|
|
6
|
+
export { RosterBodyLayout } from './components/roster/body-layout';
|
|
5
7
|
export { RosterLaneLabel } from './components/roster/lanes/parts/lane-label';
|
|
6
8
|
export { RosterBody } from './components/roster/parts/body';
|
|
7
9
|
export { RosterCorner } from './components/roster/parts/corner';
|
|
@@ -10,10 +12,13 @@ export { RosterGrid } from './components/roster/parts/grid';
|
|
|
10
12
|
export { RosterHeader } from './components/roster/parts/header';
|
|
11
13
|
export { RosterHeaderCell } from './components/roster/parts/header-cell';
|
|
12
14
|
export { RosterLaneLabelColumn } from './components/roster/parts/lane-label-column';
|
|
15
|
+
export { RosterLaneList } from './components/roster/parts/lane-list';
|
|
13
16
|
export type {
|
|
14
17
|
BodyInput,
|
|
15
18
|
GridInput,
|
|
19
|
+
HeaderCellInput,
|
|
16
20
|
HeaderInput,
|
|
21
|
+
IntervalDetailInput,
|
|
17
22
|
LabelColumnInput,
|
|
18
23
|
LaneLabelInput,
|
|
19
24
|
RosterInput,
|
|
@@ -24,6 +29,8 @@ export type {
|
|
|
24
29
|
RosterStyleProps,
|
|
25
30
|
RosterTick,
|
|
26
31
|
} from './components/roster/roster.types';
|
|
32
|
+
export { RosterSelectionPopover } from './components/roster/selection/selection-layout';
|
|
33
|
+
export type { SelectionLayoutProps } from './components/roster/selection/selection-layout.types';
|
|
27
34
|
export { useRoster } from './components/roster/use-roster';
|
|
28
35
|
export { Schedule } from './components/schedule';
|
|
29
36
|
export { ScheduleColumn } from './components/schedule/days/parts/column';
|