react-native-ll-calendar 0.11.1 → 0.12.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.
@@ -9,15 +9,14 @@ import ResourcesCalendarEventPosition from "../../utils/resources-calendar-event
9
9
  import { EVENT_GAP } from "../../constants/size.js";
10
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  const DEFAULT_DATE_COLUMN_WIDTH = 60;
12
+ const DEFAULT_RESOURCE_COLUMN_WIDTH = 80;
12
13
  const DEFAULT_EVENT_HEIGHT = 22;
13
14
  const CELL_BORDER_WIDTH = 0.5;
14
15
  function ResourceRow({
15
16
  resource,
16
17
  dates,
17
18
  dateColumnWidth,
18
- scrollOffset,
19
19
  eventsByResourceId,
20
- renderResourceNameLabel,
21
20
  onPressCell,
22
21
  onLongPressCell,
23
22
  delayLongPressCell,
@@ -28,24 +27,25 @@ function ResourceRow({
28
27
  eventTextStyle,
29
28
  eventEllipsizeMode,
30
29
  cellContainerStyle,
31
- allowFontScaling
30
+ allowFontScaling,
31
+ onLayout,
32
+ inlineBand
32
33
  }) {
33
34
  const resourceEvents = eventsByResourceId.get(resource.id) ?? [];
34
35
  const eventPosition = new ResourcesCalendarEventPosition();
35
36
  return /*#__PURE__*/_jsxs(View, {
36
37
  style: styles.resourceRow,
37
- children: [/*#__PURE__*/_jsx(View, {
38
- style: [styles.resourceNameFixedLabel],
38
+ onLayout: e => onLayout?.(e.nativeEvent.layout.height),
39
+ children: [inlineBand != null && /*#__PURE__*/_jsx(View, {
40
+ style: styles.resourceNameInlineBand,
39
41
  children: /*#__PURE__*/_jsx(View, {
40
42
  style: {
41
- marginLeft: scrollOffset + 4
43
+ marginLeft: inlineBand.scrollOffset + 4
42
44
  },
43
- children: renderResourceNameLabel ? renderResourceNameLabel(resource) : /*#__PURE__*/_jsx(View, {
44
- children: /*#__PURE__*/_jsx(Text, {
45
- allowFontScaling: allowFontScaling,
46
- style: styles.resourceNameFixedLabelText,
47
- children: resource.name
48
- })
45
+ children: inlineBand.renderResourceNameLabel ? inlineBand.renderResourceNameLabel(resource) : /*#__PURE__*/_jsx(Text, {
46
+ allowFontScaling: allowFontScaling,
47
+ style: styles.resourceNameInlineBandText,
48
+ children: resource.name
49
49
  })
50
50
  })
51
51
  }), /*#__PURE__*/_jsx(View, {
@@ -53,7 +53,7 @@ function ResourceRow({
53
53
  children: dates.map((date, dateIndex) => {
54
54
  const djs = dayjs(date);
55
55
 
56
- // この日付が開始日のイベント、または行の先頭で前日から続くイベントを抽出
56
+ // Filter events that start on this date, or events that started before this date and continue into the first cell
57
57
  const filteredEvents = resourceEvents.filter(event => {
58
58
  const startDjs = dayjs(event.start);
59
59
  return startDjs.format('YYYY-MM-DD') === djs.format('YYYY-MM-DD') || dateIndex === 0 && startDjs.isBefore(djs);
@@ -68,7 +68,7 @@ function ResourceRow({
68
68
  return dayjs(a.start).diff(dayjs(b.start));
69
69
  });
70
70
 
71
- // 行番号を考慮してイベントを配置(重複回避)
71
+ // Place events considering occupied row numbers to avoid overlap
72
72
  const rowNums = eventPosition.getRowNums({
73
73
  resourceId: resource.id,
74
74
  date
@@ -112,13 +112,13 @@ function ResourceRow({
112
112
  const diffDays = endDjs.startOf('day').diff(startDjs.startOf('day'), 'day');
113
113
  const isPrevDateEvent = dateIndex === 0 && rawStartDjs.isBefore(djs);
114
114
 
115
- // イベントの幅を日数に応じて計算
115
+ // Calculate event width based on the number of days it spans
116
116
  let width = (diffDays + 1) * dateColumnWidth - EVENT_GAP * 2 - CELL_BORDER_WIDTH * 2;
117
117
  if (isPrevDateEvent) {
118
118
  width += EVENT_GAP + 1;
119
119
  }
120
120
 
121
- // 位置情報を記録
121
+ // Record position info
122
122
  eventPosition.push({
123
123
  resourceId: resource.id,
124
124
  startDate: startDjs.toDate(),
@@ -163,7 +163,8 @@ function ResourceRow({
163
163
  }
164
164
  export function ResourcesCalendar(props) {
165
165
  const dateColumnWidth = props.dateColumnWidth ?? DEFAULT_DATE_COLUMN_WIDTH;
166
- const fixedRowCount = props.fixedRowCount ?? 0;
166
+ const isInlineBand = props.resourceNameLayout === 'inline-band';
167
+ const fixedRowCount = isInlineBand ? 0 : props.fixedRowCount ?? 0;
167
168
  const dates = useMemo(() => generateDates(props.fromDate, props.toDate), [props.fromDate, props.toDate]);
168
169
  const monthGroups = useMemo(() => groupDatesByMonth(dates), [dates]);
169
170
  const eventsByResourceId = useMemo(() => {
@@ -192,16 +193,30 @@ export function ResourcesCalendar(props) {
192
193
  }, [monthGroups, dateColumnWidth]);
193
194
  const fixedResources = useMemo(() => props.resources.slice(0, fixedRowCount), [props.resources, fixedRowCount]);
194
195
  const scrollableResources = useMemo(() => props.resources.slice(fixedRowCount), [props.resources, fixedRowCount]);
196
+ const resourceColumnWidth = props.resourceColumnWidth ?? DEFAULT_RESOURCE_COLUMN_WIDTH;
197
+ const [rowHeights, setRowHeights] = useState(new Map());
198
+ const handleRowLayout = useCallback((resourceId, height) => {
199
+ setRowHeights(prev => {
200
+ if (prev.get(resourceId) === height) return prev;
201
+ const next = new Map(prev);
202
+ next.set(resourceId, height);
203
+ return next;
204
+ });
205
+ }, []);
206
+ const [headerHeight, setHeaderHeight] = useState(0);
195
207
  const headerScrollRef = useRef(null);
196
208
  const bodyScrollRef = useRef(null);
209
+ const outerScrollRef = useRef(null);
210
+ const resourceNameScrollRef = useRef(null);
197
211
  const activeScroller = useRef(null);
198
212
  const activeScrollerTimer = useRef(null);
199
213
  const lastScrollX = useRef(0);
200
214
  const [scrollOffset, setScrollOffset] = useState(0);
215
+ const activeVerticalScroller = useRef(null);
201
216
 
202
- // スクロール停止後にラベルを追従させる。
203
- // activeScroller のタイムアウトが切れた = スクロール停止とみなし、
204
- // その時点の lastScrollX state に反映する。
217
+ // Sync the label position after scrolling stops.
218
+ // When the activeScroller timeout fires, treat it as scroll end
219
+ // and commit the current lastScrollX value to state.
205
220
  const releaseActiveScroller = useCallback(() => {
206
221
  activeScroller.current = null;
207
222
  setScrollOffset(lastScrollX.current);
@@ -238,12 +253,34 @@ export function ResourcesCalendar(props) {
238
253
  animated: false
239
254
  });
240
255
  }, [releaseActiveScroller]);
256
+ const handleOuterScroll = useCallback(event => {
257
+ if (activeVerticalScroller.current === 'resourceName') return;
258
+ activeVerticalScroller.current = 'outer';
259
+ const y = event.nativeEvent.contentOffset.y;
260
+ resourceNameScrollRef.current?.scrollTo({
261
+ y,
262
+ animated: false
263
+ });
264
+ }, []);
265
+ const handleResourceNameScroll = useCallback(event => {
266
+ if (activeVerticalScroller.current === 'outer') return;
267
+ activeVerticalScroller.current = 'resourceName';
268
+ const y = event.nativeEvent.contentOffset.y;
269
+ outerScrollRef.current?.scrollTo({
270
+ y,
271
+ animated: false
272
+ });
273
+ }, []);
274
+ const handleOuterScrollEnd = useCallback(() => {
275
+ activeVerticalScroller.current = null;
276
+ }, []);
277
+ const handleResourceNameScrollEnd = useCallback(() => {
278
+ activeVerticalScroller.current = null;
279
+ }, []);
241
280
  const commonRowProps = {
242
281
  dates,
243
282
  dateColumnWidth,
244
- scrollOffset,
245
283
  eventsByResourceId,
246
- renderResourceNameLabel: props.renderResourceNameLabel,
247
284
  onPressCell: props.onPressCell,
248
285
  onLongPressCell: props.onLongPressCell,
249
286
  delayLongPressCell: props.delayLongPressCell,
@@ -254,94 +291,169 @@ export function ResourcesCalendar(props) {
254
291
  eventTextStyle: props.eventTextStyle,
255
292
  eventEllipsizeMode: props.eventEllipsizeMode,
256
293
  cellContainerStyle: props.cellContainerStyle,
257
- allowFontScaling: props.allowFontScaling
294
+ allowFontScaling: props.allowFontScaling,
295
+ inlineBand: isInlineBand ? {
296
+ scrollOffset,
297
+ renderResourceNameLabel: props.renderResourceNameLabel
298
+ } : undefined
258
299
  };
259
- return /*#__PURE__*/_jsxs(ScrollView, {
300
+ const resourceNameColumn = !isInlineBand ? /*#__PURE__*/_jsxs(ScrollView, {
301
+ ref: resourceNameScrollRef,
302
+ style: [styles.resourceNameColumn, {
303
+ width: resourceColumnWidth
304
+ }],
305
+ contentContainerStyle: {
306
+ width: resourceColumnWidth
307
+ },
260
308
  stickyHeaderIndices: [0],
261
- refreshControl: /*#__PURE__*/_jsx(RefreshControl, {
262
- refreshing: !!props.refreshing,
263
- onRefresh: props.onRefresh
264
- }),
265
- children: [/*#__PURE__*/_jsx(ScrollView, {
266
- ref: headerScrollRef,
267
- horizontal: true,
268
- showsHorizontalScrollIndicator: false,
269
- bounces: false,
270
- overScrollMode: "never",
271
- onScroll: handleHeaderScroll,
309
+ showsVerticalScrollIndicator: false,
310
+ bounces: false,
311
+ overScrollMode: "never",
312
+ onScroll: handleResourceNameScroll,
313
+ onScrollEndDrag: handleResourceNameScrollEnd,
314
+ onMomentumScrollEnd: handleResourceNameScrollEnd,
315
+ scrollEventThrottle: 16,
316
+ children: [/*#__PURE__*/_jsxs(View, {
317
+ style: [styles.resourceNameColumn, styles.resourceNameColumnFixed],
318
+ children: [/*#__PURE__*/_jsx(View, {
319
+ style: [styles.resourceNameHeaderSpacer, {
320
+ height: headerHeight
321
+ }]
322
+ }), fixedResources.map(resource => /*#__PURE__*/_jsx(View, {
323
+ style: [styles.resourceNameCell, {
324
+ height: rowHeights.get(resource.id)
325
+ }],
326
+ children: props.renderResourceNameLabel ? props.renderResourceNameLabel(resource) : /*#__PURE__*/_jsx(View, {
327
+ children: /*#__PURE__*/_jsx(Text, {
328
+ allowFontScaling: props.allowFontScaling,
329
+ style: styles.resourceNameFixedLabelText,
330
+ numberOfLines: 1,
331
+ children: resource.name
332
+ })
333
+ })
334
+ }, resource.id))]
335
+ }), /*#__PURE__*/_jsxs(View, {
336
+ children: [scrollableResources.map(resource => /*#__PURE__*/_jsx(View, {
337
+ style: [styles.resourceNameCell, {
338
+ height: rowHeights.get(resource.id)
339
+ }],
340
+ children: props.renderResourceNameLabel ? props.renderResourceNameLabel(resource) : /*#__PURE__*/_jsx(View, {
341
+ children: /*#__PURE__*/_jsx(Text, {
342
+ allowFontScaling: props.allowFontScaling,
343
+ style: styles.resourceNameFixedLabelText,
344
+ numberOfLines: 1,
345
+ children: resource.name
346
+ })
347
+ })
348
+ }, resource.id)), /*#__PURE__*/_jsx(View, {
349
+ style: {
350
+ height: props.bottomSpacing
351
+ }
352
+ })]
353
+ })]
354
+ }) : null;
355
+ return /*#__PURE__*/_jsxs(View, {
356
+ style: styles.container,
357
+ children: [resourceNameColumn, /*#__PURE__*/_jsxs(ScrollView, {
358
+ ref: outerScrollRef,
359
+ style: styles.calendarBody,
360
+ stickyHeaderIndices: [0],
361
+ onScroll: handleOuterScroll,
362
+ onScrollEndDrag: handleOuterScrollEnd,
363
+ onMomentumScrollEnd: handleOuterScrollEnd,
272
364
  scrollEventThrottle: 16,
273
- "data-component-name": "resources-calendar-header-row",
274
- children: /*#__PURE__*/_jsxs(View, {
275
- children: [!props.hiddenMonth && /*#__PURE__*/_jsx(View, {
276
- style: styles.monthHeaderRow,
277
- children: monthGroups.map(({
278
- year,
279
- month
280
- }, index) => {
281
- const {
282
- start: cellStart,
283
- width: cellWidth
284
- } = monthGroupOffsets[index];
285
- const textLeft = Math.max(8, scrollOffset - cellStart + 8);
286
- return /*#__PURE__*/_jsx(View, {
287
- style: [styles.monthHeaderCell, {
288
- width: cellWidth
289
- }],
290
- children: /*#__PURE__*/_jsx(View, {
291
- style: {
292
- marginLeft: textLeft
293
- },
294
- children: props.renderMonthLabel ? props.renderMonthLabel(year, month) : /*#__PURE__*/_jsx(View, {
365
+ overScrollMode: "never",
366
+ bounces: props.onRefresh != null,
367
+ refreshControl: props.onRefresh != null ? /*#__PURE__*/_jsx(RefreshControl, {
368
+ refreshing: props.refreshing ?? false,
369
+ onRefresh: props.onRefresh
370
+ }) : undefined,
371
+ children: [/*#__PURE__*/_jsx(ScrollView, {
372
+ ref: headerScrollRef,
373
+ horizontal: true,
374
+ showsHorizontalScrollIndicator: false,
375
+ bounces: false,
376
+ overScrollMode: "never",
377
+ onScroll: handleHeaderScroll,
378
+ scrollEventThrottle: 16,
379
+ "data-component-name": "resources-calendar-header-row",
380
+ children: /*#__PURE__*/_jsxs(View, {
381
+ children: [/*#__PURE__*/_jsxs(View, {
382
+ onLayout: e => setHeaderHeight(e.nativeEvent.layout.height),
383
+ children: [!props.hiddenMonth && /*#__PURE__*/_jsx(View, {
384
+ style: styles.monthHeaderRow,
385
+ children: monthGroups.map(({
386
+ year,
387
+ month
388
+ }, index) => {
389
+ const {
390
+ start: cellStart,
391
+ width: cellWidth
392
+ } = monthGroupOffsets[index];
393
+ const textLeft = Math.max(8, scrollOffset - cellStart + 8);
394
+ return /*#__PURE__*/_jsx(View, {
395
+ style: [styles.monthHeaderCell, {
396
+ width: cellWidth
397
+ }],
398
+ children: /*#__PURE__*/_jsx(View, {
399
+ style: {
400
+ marginLeft: textLeft
401
+ },
402
+ children: props.renderMonthLabel ? props.renderMonthLabel(year, month) : /*#__PURE__*/_jsx(View, {
403
+ children: /*#__PURE__*/_jsx(Text, {
404
+ numberOfLines: 1,
405
+ allowFontScaling: props.allowFontScaling,
406
+ style: styles.monthHeaderText,
407
+ children: dayjs(`${year}-${month}-01`).format('YYYY/MM')
408
+ })
409
+ })
410
+ })
411
+ }, `${year}-${month}`);
412
+ })
413
+ }), /*#__PURE__*/_jsx(View, {
414
+ style: styles.headerRow,
415
+ children: dates.map(date => /*#__PURE__*/_jsx(View, {
416
+ "data-component-name": "resources-calendar-date-cell",
417
+ style: [styles.dateCellContainer, {
418
+ width: dateColumnWidth
419
+ }, props.dateCellContainerStyle?.(date)],
420
+ children: props.renderDateLabel ? props.renderDateLabel(date) : /*#__PURE__*/_jsx(View, {
295
421
  children: /*#__PURE__*/_jsx(Text, {
296
- numberOfLines: 1,
297
422
  allowFontScaling: props.allowFontScaling,
298
- style: styles.monthHeaderText,
299
- children: dayjs(`${year}-${month}-01`).format('YYYY/MM')
423
+ children: dayjs(date).format('D(ddd)')
300
424
  })
301
425
  })
302
- })
303
- }, `${year}-${month}`);
304
- })
305
- }), /*#__PURE__*/_jsx(View, {
306
- style: styles.headerRow,
307
- children: dates.map(date => /*#__PURE__*/_jsx(View, {
308
- "data-component-name": "resources-calendar-date-cell",
309
- style: [styles.dateCellContainer, {
310
- width: dateColumnWidth
311
- }, props.dateCellContainerStyle?.(date)],
312
- children: props.renderDateLabel ? props.renderDateLabel(date) : /*#__PURE__*/_jsx(View, {
313
- children: /*#__PURE__*/_jsx(Text, {
314
- allowFontScaling: props.allowFontScaling,
315
- children: dayjs(date).format('D(ddd)')
316
- })
317
- })
318
- }, date.getTime()))
319
- }), /*#__PURE__*/_jsx(View, {
320
- children: fixedResources.map(resource => /*#__PURE__*/_jsx(ResourceRow, {
426
+ }, date.getTime()))
427
+ })]
428
+ }), /*#__PURE__*/_jsx(View, {
429
+ children: fixedResources.map(resource => /*#__PURE__*/_jsx(ResourceRow, {
430
+ resource: resource,
431
+ ...commonRowProps,
432
+ onLayout: height => handleRowLayout(resource.id, height)
433
+ }, resource.id))
434
+ })]
435
+ })
436
+ }), /*#__PURE__*/_jsx(ScrollView, {
437
+ ref: bodyScrollRef,
438
+ horizontal: true,
439
+ showsHorizontalScrollIndicator: false,
440
+ bounces: false,
441
+ overScrollMode: "never",
442
+ onScroll: handleBodyScroll,
443
+ scrollEventThrottle: 16,
444
+ "data-component-name": "resources-calendar-body-row",
445
+ children: /*#__PURE__*/_jsx(View, {
446
+ children: scrollableResources.map(resource => /*#__PURE__*/_jsx(ResourceRow, {
321
447
  resource: resource,
322
- ...commonRowProps
448
+ ...commonRowProps,
449
+ onLayout: height => handleRowLayout(resource.id, height)
323
450
  }, resource.id))
324
- })]
325
- })
326
- }), /*#__PURE__*/_jsx(ScrollView, {
327
- ref: bodyScrollRef,
328
- horizontal: true,
329
- showsHorizontalScrollIndicator: false,
330
- bounces: false,
331
- overScrollMode: "never",
332
- onScroll: handleBodyScroll,
333
- scrollEventThrottle: 16,
334
- "data-component-name": "resources-calendar-body-row",
335
- children: /*#__PURE__*/_jsx(View, {
336
- children: scrollableResources.map(resource => /*#__PURE__*/_jsx(ResourceRow, {
337
- resource: resource,
338
- ...commonRowProps
339
- }, resource.id))
340
- })
341
- }), /*#__PURE__*/_jsx(View, {
342
- style: {
343
- height: props.bottomSpacing
344
- }
451
+ })
452
+ }), /*#__PURE__*/_jsx(View, {
453
+ style: {
454
+ height: props.bottomSpacing
455
+ }
456
+ })]
345
457
  })]
346
458
  });
347
459
  }
@@ -377,11 +489,6 @@ const styles = StyleSheet.create({
377
489
  borderRightWidth: CELL_BORDER_WIDTH,
378
490
  borderColor: 'lightslategrey'
379
491
  },
380
- resourceNameCellContainer: {
381
- width: 80,
382
- borderRightWidth: CELL_BORDER_WIDTH,
383
- borderColor: 'lightslategrey'
384
- },
385
492
  resourceRow: {
386
493
  flexDirection: 'column',
387
494
  borderBottomWidth: CELL_BORDER_WIDTH,
@@ -399,16 +506,44 @@ const styles = StyleSheet.create({
399
506
  borderRightWidth: CELL_BORDER_WIDTH,
400
507
  borderColor: 'lightslategrey'
401
508
  },
509
+ container: {
510
+ flexDirection: 'row',
511
+ flex: 1
512
+ },
513
+ calendarBody: {
514
+ flex: 1
515
+ },
402
516
  resourceNameColumn: {
403
- width: 80
517
+ borderRightWidth: CELL_BORDER_WIDTH,
518
+ borderRightColor: 'lightslategrey',
519
+ flexGrow: 0,
520
+ flexShrink: 0
404
521
  },
405
- resourceNameFixedLabel: {
522
+ resourceNameColumnFixed: {
523
+ backgroundColor: 'white'
524
+ },
525
+ resourceNameHeaderSpacer: {
526
+ borderBottomWidth: CELL_BORDER_WIDTH,
527
+ borderBottomColor: 'lightslategrey'
528
+ },
529
+ resourceNameCell: {
530
+ borderBottomWidth: CELL_BORDER_WIDTH,
531
+ borderBottomColor: 'lightslategrey',
532
+ justifyContent: 'center',
533
+ paddingHorizontal: 4,
534
+ minHeight: 30
535
+ },
536
+ resourceNameFixedLabelText: {
537
+ fontSize: 12,
538
+ color: 'black'
539
+ },
540
+ resourceNameInlineBand: {
406
541
  width: '100%',
407
542
  borderBottomWidth: CELL_BORDER_WIDTH,
408
543
  borderColor: 'lightslategrey',
409
544
  backgroundColor: '#EEEEEE'
410
545
  },
411
- resourceNameFixedLabelText: {
546
+ resourceNameInlineBandText: {
412
547
  fontSize: 12,
413
548
  color: 'black'
414
549
  },
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useMemo","useRef","useState","RefreshControl","ScrollView","StyleSheet","Text","TouchableOpacity","View","generateDates","groupDatesByMonth","dayjs","ResourcesCalendarEventPosition","EVENT_GAP","jsx","_jsx","jsxs","_jsxs","DEFAULT_DATE_COLUMN_WIDTH","DEFAULT_EVENT_HEIGHT","CELL_BORDER_WIDTH","ResourceRow","resource","dates","dateColumnWidth","scrollOffset","eventsByResourceId","renderResourceNameLabel","onPressCell","onLongPressCell","delayLongPressCell","onPressEvent","onLongPressEvent","delayLongPressEvent","eventHeight","eventTextStyle","eventEllipsizeMode","cellContainerStyle","allowFontScaling","resourceEvents","get","id","eventPosition","style","styles","resourceRow","children","resourceNameFixedLabel","marginLeft","resourceNameFixedLabelText","name","resourceRowContentArea","map","date","dateIndex","djs","filteredEvents","filter","event","startDjs","start","format","isBefore","sort","a","b","aStartDjs","bStartDjs","aDiffDays","end","startOf","diff","bDiffDays","rowNums","getRowNums","resourceId","cellEvents","rowsLength","length","eventIndex","ii","includes","push","contentCellContainer","width","zIndex","onPress","onLongPress","delayLongPress","activeOpacity","rowIndex","height","marginBottom","rawStartDjs","endDjs","diffDays","isPrevDateEvent","startDate","toDate","days","rowNum","backgroundColor","borderColor","borderStyle","undefined","borderWidth","borderRadius","prevDateEvent","numberOfLines","ellipsizeMode","eventTitle","color","title","getTime","ResourcesCalendar","props","fixedRowCount","fromDate","monthGroups","deduped","Map","events","set","values","list","monthGroupOffsets","offset","group","fixedResources","resources","slice","scrollableResources","headerScrollRef","bodyScrollRef","activeScroller","activeScrollerTimer","lastScrollX","setScrollOffset","releaseActiveScroller","current","handleHeaderScroll","x","nativeEvent","contentOffset","clearTimeout","setTimeout","scrollTo","animated","handleBodyScroll","commonRowProps","stickyHeaderIndices","refreshControl","refreshing","onRefresh","ref","horizontal","showsHorizontalScrollIndicator","bounces","overScrollMode","onScroll","scrollEventThrottle","hiddenMonth","monthHeaderRow","year","month","index","cellStart","cellWidth","textLeft","Math","max","monthHeaderCell","renderMonthLabel","monthHeaderText","headerRow","dateCellContainer","dateCellContainerStyle","renderDateLabel","bottomSpacing","create","flexDirection","justifyContent","alignItems","overflow","borderRightWidth","borderRightColor","borderTopWidth","borderTopColor","fontSize","borderBottomWidth","borderBottomColor","resourceNameCellContainer","minHeight","paddingBottom","resourceNameColumn","paddingHorizontal","marginTop","borderTopStartRadius","borderBottomStartRadius"],"sourceRoot":"../../../../src","sources":["calendar/resources-calendar/ResourcesCalendar.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useMemo","useRef","useState","RefreshControl","ScrollView","StyleSheet","Text","TouchableOpacity","View","generateDates","groupDatesByMonth","dayjs","ResourcesCalendarEventPosition","EVENT_GAP","jsx","_jsx","jsxs","_jsxs","DEFAULT_DATE_COLUMN_WIDTH","DEFAULT_RESOURCE_COLUMN_WIDTH","DEFAULT_EVENT_HEIGHT","CELL_BORDER_WIDTH","ResourceRow","resource","dates","dateColumnWidth","eventsByResourceId","onPressCell","onLongPressCell","delayLongPressCell","onPressEvent","onLongPressEvent","delayLongPressEvent","eventHeight","eventTextStyle","eventEllipsizeMode","cellContainerStyle","allowFontScaling","onLayout","inlineBand","resourceEvents","get","id","eventPosition","style","styles","resourceRow","e","nativeEvent","layout","height","children","resourceNameInlineBand","marginLeft","scrollOffset","renderResourceNameLabel","resourceNameInlineBandText","name","resourceRowContentArea","map","date","dateIndex","djs","filteredEvents","filter","event","startDjs","start","format","isBefore","sort","a","b","aStartDjs","bStartDjs","aDiffDays","end","startOf","diff","bDiffDays","rowNums","getRowNums","resourceId","cellEvents","rowsLength","length","eventIndex","ii","includes","push","contentCellContainer","width","zIndex","onPress","onLongPress","delayLongPress","activeOpacity","rowIndex","marginBottom","rawStartDjs","endDjs","diffDays","isPrevDateEvent","startDate","toDate","days","rowNum","backgroundColor","borderColor","borderStyle","undefined","borderWidth","borderRadius","prevDateEvent","numberOfLines","ellipsizeMode","eventTitle","color","title","getTime","ResourcesCalendar","props","isInlineBand","resourceNameLayout","fixedRowCount","fromDate","monthGroups","deduped","Map","events","set","values","list","monthGroupOffsets","offset","group","fixedResources","resources","slice","scrollableResources","resourceColumnWidth","rowHeights","setRowHeights","handleRowLayout","prev","next","headerHeight","setHeaderHeight","headerScrollRef","bodyScrollRef","outerScrollRef","resourceNameScrollRef","activeScroller","activeScrollerTimer","lastScrollX","setScrollOffset","activeVerticalScroller","releaseActiveScroller","current","handleHeaderScroll","x","contentOffset","clearTimeout","setTimeout","scrollTo","animated","handleBodyScroll","handleOuterScroll","y","handleResourceNameScroll","handleOuterScrollEnd","handleResourceNameScrollEnd","commonRowProps","resourceNameColumn","ref","contentContainerStyle","stickyHeaderIndices","showsVerticalScrollIndicator","bounces","overScrollMode","onScroll","onScrollEndDrag","onMomentumScrollEnd","scrollEventThrottle","resourceNameColumnFixed","resourceNameHeaderSpacer","resourceNameCell","resourceNameFixedLabelText","bottomSpacing","container","calendarBody","onRefresh","refreshControl","refreshing","horizontal","showsHorizontalScrollIndicator","hiddenMonth","monthHeaderRow","year","month","index","cellStart","cellWidth","textLeft","Math","max","monthHeaderCell","renderMonthLabel","monthHeaderText","headerRow","dateCellContainer","dateCellContainerStyle","renderDateLabel","create","flexDirection","justifyContent","alignItems","overflow","borderRightWidth","borderRightColor","borderTopWidth","borderTopColor","fontSize","borderBottomWidth","borderBottomColor","minHeight","paddingBottom","flex","flexGrow","flexShrink","paddingHorizontal","marginTop","borderTopStartRadius","borderBottomStartRadius"],"sourceRoot":"../../../../src","sources":["calendar/resources-calendar/ResourcesCalendar.tsx"],"mappings":"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","ignoreList":[]}
@@ -28,6 +28,7 @@ type ResourcesCalendarProps = {
28
28
  cellContainerStyle?: (resource: CalendarResource, date: Date) => ViewStyle;
29
29
  hiddenMonth?: boolean;
30
30
  allowFontScaling?: boolean;
31
+ resourceNameLayout?: 'fixed-column' | 'inline-band';
31
32
  };
32
33
  export declare function ResourcesCalendar(props: ResourcesCalendarProps): import("react/jsx-runtime").JSX.Element;
33
34
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ResourcesCalendar.d.ts","sourceRoot":"","sources":["../../../../../src/calendar/resources-calendar/ResourcesCalendar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,SAAS,EAMf,MAAM,cAAc,CAAC;AAOtB,KAAK,sBAAsB,GAAG;IAC5B,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,IAAI,CAAC;IACb,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACpD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACtE,uBAAuB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IAC5E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/D,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACzD,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IACnD,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AA2NF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAqO9D"}
1
+ {"version":3,"file":"ResourcesCalendar.d.ts","sourceRoot":"","sources":["../../../../../src/calendar/resources-calendar/ResourcesCalendar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,SAAS,EAMf,MAAM,cAAc,CAAC;AAOtB,KAAK,sBAAsB,GAAG;IAC5B,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,IAAI,CAAC;IACb,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACpD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACtE,uBAAuB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IAC5E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/D,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACzD,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IACnD,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,cAAc,GAAG,aAAa,CAAC;CACrD,CAAC;AAkOF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAwX9D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-ll-calendar",
3
- "version": "0.11.1",
3
+ "version": "0.12.0",
4
4
  "description": "ReactNative Calendar Library",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -47,9 +47,11 @@ type ResourcesCalendarProps = {
47
47
  cellContainerStyle?: (resource: CalendarResource, date: Date) => ViewStyle;
48
48
  hiddenMonth?: boolean;
49
49
  allowFontScaling?: boolean;
50
+ resourceNameLayout?: 'fixed-column' | 'inline-band';
50
51
  };
51
52
 
52
53
  const DEFAULT_DATE_COLUMN_WIDTH = 60;
54
+ const DEFAULT_RESOURCE_COLUMN_WIDTH = 80;
53
55
  const DEFAULT_EVENT_HEIGHT = 22;
54
56
  const CELL_BORDER_WIDTH = 0.5;
55
57
 
@@ -57,9 +59,7 @@ type ResourceRowProps = {
57
59
  resource: CalendarResource;
58
60
  dates: Date[];
59
61
  dateColumnWidth: number;
60
- scrollOffset: number;
61
62
  eventsByResourceId: Map<string, CalendarEvent[]>;
62
- renderResourceNameLabel?: (resource: CalendarResource) => React.JSX.Element;
63
63
  onPressCell?: (resource: CalendarResource, date: Date) => void;
64
64
  onLongPressCell?: (resource: CalendarResource, date: Date) => void;
65
65
  delayLongPressCell?: number;
@@ -71,15 +71,18 @@ type ResourceRowProps = {
71
71
  eventEllipsizeMode?: 'head' | 'middle' | 'tail' | 'clip';
72
72
  cellContainerStyle?: (resource: CalendarResource, date: Date) => ViewStyle;
73
73
  allowFontScaling?: boolean;
74
+ onLayout?: (height: number) => void;
75
+ inlineBand?: {
76
+ scrollOffset: number;
77
+ renderResourceNameLabel?: (resource: CalendarResource) => React.JSX.Element;
78
+ };
74
79
  };
75
80
 
76
81
  function ResourceRow({
77
82
  resource,
78
83
  dates,
79
84
  dateColumnWidth,
80
- scrollOffset,
81
85
  eventsByResourceId,
82
- renderResourceNameLabel,
83
86
  onPressCell,
84
87
  onLongPressCell,
85
88
  delayLongPressCell,
@@ -91,33 +94,38 @@ function ResourceRow({
91
94
  eventEllipsizeMode,
92
95
  cellContainerStyle,
93
96
  allowFontScaling,
97
+ onLayout,
98
+ inlineBand,
94
99
  }: ResourceRowProps) {
95
100
  const resourceEvents = eventsByResourceId.get(resource.id) ?? [];
96
101
  const eventPosition = new ResourcesCalendarEventPosition();
97
102
 
98
103
  return (
99
- <View style={styles.resourceRow}>
100
- <View style={[styles.resourceNameFixedLabel]}>
101
- <View style={{ marginLeft: scrollOffset + 4 }}>
102
- {renderResourceNameLabel ? (
103
- renderResourceNameLabel(resource)
104
- ) : (
105
- <View>
104
+ <View
105
+ style={styles.resourceRow}
106
+ onLayout={(e) => onLayout?.(e.nativeEvent.layout.height)}
107
+ >
108
+ {inlineBand != null && (
109
+ <View style={styles.resourceNameInlineBand}>
110
+ <View style={{ marginLeft: inlineBand.scrollOffset + 4 }}>
111
+ {inlineBand.renderResourceNameLabel ? (
112
+ inlineBand.renderResourceNameLabel(resource)
113
+ ) : (
106
114
  <Text
107
115
  allowFontScaling={allowFontScaling}
108
- style={styles.resourceNameFixedLabelText}
116
+ style={styles.resourceNameInlineBandText}
109
117
  >
110
118
  {resource.name}
111
119
  </Text>
112
- </View>
113
- )}
120
+ )}
121
+ </View>
114
122
  </View>
115
- </View>
123
+ )}
116
124
  <View style={styles.resourceRowContentArea}>
117
125
  {dates.map((date, dateIndex) => {
118
126
  const djs = dayjs(date);
119
127
 
120
- // この日付が開始日のイベント、または行の先頭で前日から続くイベントを抽出
128
+ // Filter events that start on this date, or events that started before this date and continue into the first cell
121
129
  const filteredEvents = resourceEvents
122
130
  .filter((event) => {
123
131
  const startDjs = dayjs(event.start);
@@ -141,7 +149,7 @@ function ResourceRow({
141
149
  return dayjs(a.start).diff(dayjs(b.start));
142
150
  });
143
151
 
144
- // 行番号を考慮してイベントを配置(重複回避)
152
+ // Place events considering occupied row numbers to avoid overlap
145
153
  const rowNums = eventPosition.getRowNums({
146
154
  resourceId: resource.id,
147
155
  date,
@@ -197,7 +205,7 @@ function ResourceRow({
197
205
  const isPrevDateEvent =
198
206
  dateIndex === 0 && rawStartDjs.isBefore(djs);
199
207
 
200
- // イベントの幅を日数に応じて計算
208
+ // Calculate event width based on the number of days it spans
201
209
  let width =
202
210
  (diffDays + 1) * dateColumnWidth -
203
211
  EVENT_GAP * 2 -
@@ -206,7 +214,7 @@ function ResourceRow({
206
214
  width += EVENT_GAP + 1;
207
215
  }
208
216
 
209
- // 位置情報を記録
217
+ // Record position info
210
218
  eventPosition.push({
211
219
  resourceId: resource.id,
212
220
  startDate: startDjs.toDate(),
@@ -268,7 +276,8 @@ type ScrollViewRef = React.ComponentRef<typeof ScrollView>;
268
276
 
269
277
  export function ResourcesCalendar(props: ResourcesCalendarProps) {
270
278
  const dateColumnWidth = props.dateColumnWidth ?? DEFAULT_DATE_COLUMN_WIDTH;
271
- const fixedRowCount = props.fixedRowCount ?? 0;
279
+ const isInlineBand = props.resourceNameLayout === 'inline-band';
280
+ const fixedRowCount = isInlineBand ? 0 : (props.fixedRowCount ?? 0);
272
281
 
273
282
  const dates = useMemo(
274
283
  () => generateDates(props.fromDate, props.toDate),
@@ -309,8 +318,25 @@ export function ResourcesCalendar(props: ResourcesCalendarProps) {
309
318
  [props.resources, fixedRowCount]
310
319
  );
311
320
 
321
+ const resourceColumnWidth =
322
+ props.resourceColumnWidth ?? DEFAULT_RESOURCE_COLUMN_WIDTH;
323
+
324
+ const [rowHeights, setRowHeights] = useState<Map<string, number>>(new Map());
325
+ const handleRowLayout = useCallback((resourceId: string, height: number) => {
326
+ setRowHeights((prev) => {
327
+ if (prev.get(resourceId) === height) return prev;
328
+ const next = new Map(prev);
329
+ next.set(resourceId, height);
330
+ return next;
331
+ });
332
+ }, []);
333
+
334
+ const [headerHeight, setHeaderHeight] = useState(0);
335
+
312
336
  const headerScrollRef = useRef<ScrollViewRef>(null);
313
337
  const bodyScrollRef = useRef<ScrollViewRef>(null);
338
+ const outerScrollRef = useRef<ScrollViewRef>(null);
339
+ const resourceNameScrollRef = useRef<ScrollViewRef>(null);
314
340
  const activeScroller = useRef<'header' | 'body' | null>(null);
315
341
  const activeScrollerTimer = useRef<ReturnType<typeof setTimeout> | null>(
316
342
  null
@@ -318,9 +344,11 @@ export function ResourcesCalendar(props: ResourcesCalendarProps) {
318
344
  const lastScrollX = useRef(0);
319
345
  const [scrollOffset, setScrollOffset] = useState(0);
320
346
 
321
- // スクロール停止後にラベルを追従させる。
322
- // activeScroller のタイムアウトが切れた = スクロール停止とみなし、
323
- // その時点の lastScrollX state に反映する。
347
+ const activeVerticalScroller = useRef<'outer' | 'resourceName' | null>(null);
348
+
349
+ // Sync the label position after scrolling stops.
350
+ // When the activeScroller timeout fires, treat it as scroll end
351
+ // and commit the current lastScrollX value to state.
324
352
  const releaseActiveScroller = useCallback(() => {
325
353
  activeScroller.current = null;
326
354
  setScrollOffset(lastScrollX.current);
@@ -364,12 +392,38 @@ export function ResourcesCalendar(props: ResourcesCalendarProps) {
364
392
  [releaseActiveScroller]
365
393
  );
366
394
 
395
+ const handleOuterScroll = useCallback(
396
+ (event: NativeSyntheticEvent<NativeScrollEvent>) => {
397
+ if (activeVerticalScroller.current === 'resourceName') return;
398
+ activeVerticalScroller.current = 'outer';
399
+ const y = event.nativeEvent.contentOffset.y;
400
+ resourceNameScrollRef.current?.scrollTo({ y, animated: false });
401
+ },
402
+ []
403
+ );
404
+
405
+ const handleResourceNameScroll = useCallback(
406
+ (event: NativeSyntheticEvent<NativeScrollEvent>) => {
407
+ if (activeVerticalScroller.current === 'outer') return;
408
+ activeVerticalScroller.current = 'resourceName';
409
+ const y = event.nativeEvent.contentOffset.y;
410
+ outerScrollRef.current?.scrollTo({ y, animated: false });
411
+ },
412
+ []
413
+ );
414
+
415
+ const handleOuterScrollEnd = useCallback(() => {
416
+ activeVerticalScroller.current = null;
417
+ }, []);
418
+
419
+ const handleResourceNameScrollEnd = useCallback(() => {
420
+ activeVerticalScroller.current = null;
421
+ }, []);
422
+
367
423
  const commonRowProps = {
368
424
  dates,
369
425
  dateColumnWidth,
370
- scrollOffset,
371
426
  eventsByResourceId,
372
- renderResourceNameLabel: props.renderResourceNameLabel,
373
427
  onPressCell: props.onPressCell,
374
428
  onLongPressCell: props.onLongPressCell,
375
429
  delayLongPressCell: props.delayLongPressCell,
@@ -381,119 +435,220 @@ export function ResourcesCalendar(props: ResourcesCalendarProps) {
381
435
  eventEllipsizeMode: props.eventEllipsizeMode,
382
436
  cellContainerStyle: props.cellContainerStyle,
383
437
  allowFontScaling: props.allowFontScaling,
438
+ inlineBand: isInlineBand
439
+ ? {
440
+ scrollOffset,
441
+ renderResourceNameLabel: props.renderResourceNameLabel,
442
+ }
443
+ : undefined,
384
444
  };
385
445
 
386
- return (
446
+ const resourceNameColumn = !isInlineBand ? (
387
447
  <ScrollView
448
+ ref={resourceNameScrollRef}
449
+ style={[styles.resourceNameColumn, { width: resourceColumnWidth }]}
450
+ contentContainerStyle={{ width: resourceColumnWidth }}
388
451
  stickyHeaderIndices={[0]}
389
- refreshControl={
390
- <RefreshControl
391
- refreshing={!!props.refreshing}
392
- onRefresh={props.onRefresh}
393
- />
394
- }
452
+ showsVerticalScrollIndicator={false}
453
+ bounces={false}
454
+ overScrollMode="never"
455
+ onScroll={handleResourceNameScroll}
456
+ onScrollEndDrag={handleResourceNameScrollEnd}
457
+ onMomentumScrollEnd={handleResourceNameScrollEnd}
458
+ scrollEventThrottle={16}
395
459
  >
460
+ {/* [0] sticky: header height spacer + fixed resource name rows */}
461
+ <View style={[styles.resourceNameColumn, styles.resourceNameColumnFixed]}>
462
+ <View
463
+ style={[styles.resourceNameHeaderSpacer, { height: headerHeight }]}
464
+ />
465
+ {fixedResources.map((resource) => (
466
+ <View
467
+ key={resource.id}
468
+ style={[
469
+ styles.resourceNameCell,
470
+ { height: rowHeights.get(resource.id) },
471
+ ]}
472
+ >
473
+ {props.renderResourceNameLabel ? (
474
+ props.renderResourceNameLabel(resource)
475
+ ) : (
476
+ <View>
477
+ <Text
478
+ allowFontScaling={props.allowFontScaling}
479
+ style={styles.resourceNameFixedLabelText}
480
+ numberOfLines={1}
481
+ >
482
+ {resource.name}
483
+ </Text>
484
+ </View>
485
+ )}
486
+ </View>
487
+ ))}
488
+ </View>
489
+ <View>
490
+ {/* Scrollable resource name rows */}
491
+ {scrollableResources.map((resource) => (
492
+ <View
493
+ key={resource.id}
494
+ style={[
495
+ styles.resourceNameCell,
496
+ { height: rowHeights.get(resource.id) },
497
+ ]}
498
+ >
499
+ {props.renderResourceNameLabel ? (
500
+ props.renderResourceNameLabel(resource)
501
+ ) : (
502
+ <View>
503
+ <Text
504
+ allowFontScaling={props.allowFontScaling}
505
+ style={styles.resourceNameFixedLabelText}
506
+ numberOfLines={1}
507
+ >
508
+ {resource.name}
509
+ </Text>
510
+ </View>
511
+ )}
512
+ </View>
513
+ ))}
514
+ <View style={{ height: props.bottomSpacing }} />
515
+ </View>
516
+ </ScrollView>
517
+ ) : null;
518
+
519
+ return (
520
+ <View style={styles.container}>
521
+ {/* Left: fixed resource name column (fixed-column mode only) */}
522
+ {resourceNameColumn}
523
+
524
+ {/* Right: calendar body */}
396
525
  <ScrollView
397
- ref={headerScrollRef}
398
- horizontal
399
- showsHorizontalScrollIndicator={false}
400
- bounces={false}
401
- overScrollMode="never"
402
- onScroll={handleHeaderScroll}
526
+ ref={outerScrollRef}
527
+ style={styles.calendarBody}
528
+ stickyHeaderIndices={[0]}
529
+ onScroll={handleOuterScroll}
530
+ onScrollEndDrag={handleOuterScrollEnd}
531
+ onMomentumScrollEnd={handleOuterScrollEnd}
403
532
  scrollEventThrottle={16}
404
- data-component-name="resources-calendar-header-row"
533
+ overScrollMode="never"
534
+ bounces={props.onRefresh != null}
535
+ refreshControl={
536
+ props.onRefresh != null ? (
537
+ <RefreshControl
538
+ refreshing={props.refreshing ?? false}
539
+ onRefresh={props.onRefresh}
540
+ />
541
+ ) : undefined
542
+ }
405
543
  >
406
- <View>
407
- {!props.hiddenMonth && (
408
- <View style={styles.monthHeaderRow}>
409
- {monthGroups.map(({ year, month }, index) => {
410
- const { start: cellStart, width: cellWidth } =
411
- monthGroupOffsets[index]!;
412
- const textLeft = Math.max(8, scrollOffset - cellStart + 8);
413
- return (
544
+ <ScrollView
545
+ ref={headerScrollRef}
546
+ horizontal
547
+ showsHorizontalScrollIndicator={false}
548
+ bounces={false}
549
+ overScrollMode="never"
550
+ onScroll={handleHeaderScroll}
551
+ scrollEventThrottle={16}
552
+ data-component-name="resources-calendar-header-row"
553
+ >
554
+ <View>
555
+ <View
556
+ onLayout={(e) => setHeaderHeight(e.nativeEvent.layout.height)}
557
+ >
558
+ {!props.hiddenMonth && (
559
+ <View style={styles.monthHeaderRow}>
560
+ {monthGroups.map(({ year, month }, index) => {
561
+ const { start: cellStart, width: cellWidth } =
562
+ monthGroupOffsets[index]!;
563
+ const textLeft = Math.max(8, scrollOffset - cellStart + 8);
564
+ return (
565
+ <View
566
+ key={`${year}-${month}`}
567
+ style={[styles.monthHeaderCell, { width: cellWidth }]}
568
+ >
569
+ <View style={{ marginLeft: textLeft }}>
570
+ {props.renderMonthLabel ? (
571
+ props.renderMonthLabel(year, month)
572
+ ) : (
573
+ <View>
574
+ <Text
575
+ numberOfLines={1}
576
+ allowFontScaling={props.allowFontScaling}
577
+ style={styles.monthHeaderText}
578
+ >
579
+ {dayjs(`${year}-${month}-01`).format('YYYY/MM')}
580
+ </Text>
581
+ </View>
582
+ )}
583
+ </View>
584
+ </View>
585
+ );
586
+ })}
587
+ </View>
588
+ )}
589
+
590
+ <View style={styles.headerRow}>
591
+ {dates.map((date) => (
414
592
  <View
415
- key={`${year}-${month}`}
416
- style={[styles.monthHeaderCell, { width: cellWidth }]}
593
+ key={date.getTime()}
594
+ data-component-name="resources-calendar-date-cell"
595
+ style={[
596
+ styles.dateCellContainer,
597
+ { width: dateColumnWidth },
598
+ props.dateCellContainerStyle?.(date),
599
+ ]}
417
600
  >
418
- <View style={{ marginLeft: textLeft }}>
419
- {props.renderMonthLabel ? (
420
- props.renderMonthLabel(year, month)
421
- ) : (
422
- <View>
423
- <Text
424
- numberOfLines={1}
425
- allowFontScaling={props.allowFontScaling}
426
- style={styles.monthHeaderText}
427
- >
428
- {dayjs(`${year}-${month}-01`).format('YYYY/MM')}
429
- </Text>
430
- </View>
431
- )}
432
- </View>
433
- </View>
434
- );
435
- })}
436
- </View>
437
- )}
438
-
439
- <View style={styles.headerRow}>
440
- {dates.map((date) => (
441
- <View
442
- key={date.getTime()}
443
- data-component-name="resources-calendar-date-cell"
444
- style={[
445
- styles.dateCellContainer,
446
- { width: dateColumnWidth },
447
- props.dateCellContainerStyle?.(date),
448
- ]}
449
- >
450
- {props.renderDateLabel ? (
451
- props.renderDateLabel(date)
452
- ) : (
453
- <View>
454
- <Text allowFontScaling={props.allowFontScaling}>
455
- {dayjs(date).format('D(ddd)')}
456
- </Text>
601
+ {props.renderDateLabel ? (
602
+ props.renderDateLabel(date)
603
+ ) : (
604
+ <View>
605
+ <Text allowFontScaling={props.allowFontScaling}>
606
+ {dayjs(date).format('D(ddd)')}
607
+ </Text>
608
+ </View>
609
+ )}
457
610
  </View>
458
- )}
611
+ ))}
459
612
  </View>
460
- ))}
461
- </View>
613
+ </View>
462
614
 
615
+ <View>
616
+ {fixedResources.map((resource) => (
617
+ <ResourceRow
618
+ key={resource.id}
619
+ resource={resource}
620
+ {...commonRowProps}
621
+ onLayout={(height) => handleRowLayout(resource.id, height)}
622
+ />
623
+ ))}
624
+ </View>
625
+ </View>
626
+ </ScrollView>
627
+
628
+ <ScrollView
629
+ ref={bodyScrollRef}
630
+ horizontal
631
+ showsHorizontalScrollIndicator={false}
632
+ bounces={false}
633
+ overScrollMode="never"
634
+ onScroll={handleBodyScroll}
635
+ scrollEventThrottle={16}
636
+ data-component-name="resources-calendar-body-row"
637
+ >
463
638
  <View>
464
- {fixedResources.map((resource) => (
639
+ {scrollableResources.map((resource) => (
465
640
  <ResourceRow
466
641
  key={resource.id}
467
642
  resource={resource}
468
643
  {...commonRowProps}
644
+ onLayout={(height) => handleRowLayout(resource.id, height)}
469
645
  />
470
646
  ))}
471
647
  </View>
472
- </View>
473
- </ScrollView>
474
-
475
- <ScrollView
476
- ref={bodyScrollRef}
477
- horizontal
478
- showsHorizontalScrollIndicator={false}
479
- bounces={false}
480
- overScrollMode="never"
481
- onScroll={handleBodyScroll}
482
- scrollEventThrottle={16}
483
- data-component-name="resources-calendar-body-row"
484
- >
485
- <View>
486
- {scrollableResources.map((resource) => (
487
- <ResourceRow
488
- key={resource.id}
489
- resource={resource}
490
- {...commonRowProps}
491
- />
492
- ))}
493
- </View>
648
+ </ScrollView>
649
+ <View style={{ height: props.bottomSpacing }} />
494
650
  </ScrollView>
495
- <View style={{ height: props.bottomSpacing }} />
496
- </ScrollView>
651
+ </View>
497
652
  );
498
653
  }
499
654
 
@@ -529,11 +684,6 @@ const styles = StyleSheet.create({
529
684
  borderRightWidth: CELL_BORDER_WIDTH,
530
685
  borderColor: 'lightslategrey',
531
686
  },
532
- resourceNameCellContainer: {
533
- width: 80,
534
- borderRightWidth: CELL_BORDER_WIDTH,
535
- borderColor: 'lightslategrey',
536
- },
537
687
  resourceRow: {
538
688
  flexDirection: 'column',
539
689
  borderBottomWidth: CELL_BORDER_WIDTH,
@@ -551,16 +701,44 @@ const styles = StyleSheet.create({
551
701
  borderRightWidth: CELL_BORDER_WIDTH,
552
702
  borderColor: 'lightslategrey',
553
703
  },
704
+ container: {
705
+ flexDirection: 'row',
706
+ flex: 1,
707
+ },
708
+ calendarBody: {
709
+ flex: 1,
710
+ },
554
711
  resourceNameColumn: {
555
- width: 80,
712
+ borderRightWidth: CELL_BORDER_WIDTH,
713
+ borderRightColor: 'lightslategrey',
714
+ flexGrow: 0,
715
+ flexShrink: 0,
716
+ },
717
+ resourceNameColumnFixed: {
718
+ backgroundColor: 'white',
719
+ },
720
+ resourceNameHeaderSpacer: {
721
+ borderBottomWidth: CELL_BORDER_WIDTH,
722
+ borderBottomColor: 'lightslategrey',
723
+ },
724
+ resourceNameCell: {
725
+ borderBottomWidth: CELL_BORDER_WIDTH,
726
+ borderBottomColor: 'lightslategrey',
727
+ justifyContent: 'center',
728
+ paddingHorizontal: 4,
729
+ minHeight: 30,
730
+ },
731
+ resourceNameFixedLabelText: {
732
+ fontSize: 12,
733
+ color: 'black',
556
734
  },
557
- resourceNameFixedLabel: {
735
+ resourceNameInlineBand: {
558
736
  width: '100%',
559
737
  borderBottomWidth: CELL_BORDER_WIDTH,
560
738
  borderColor: 'lightslategrey',
561
739
  backgroundColor: '#EEEEEE',
562
740
  },
563
- resourceNameFixedLabelText: {
741
+ resourceNameInlineBandText: {
564
742
  fontSize: 12,
565
743
  color: 'black',
566
744
  },