123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // @flow
-
- import * as React from 'react';
- import {View} from 'react-native';
- import {withTheme} from 'react-native-paper';
- import {Agenda} from 'react-native-calendars';
- import type {CustomThemeType} from '../../managers/ThemeManager';
-
- type PropsType = {
- theme: CustomThemeType,
- onRef: (ref: Agenda) => void,
- };
-
- /**
- * Abstraction layer for Agenda component, using custom configuration
- */
- class CustomAgenda extends React.Component<PropsType> {
- getAgenda(): React.Node {
- const {props} = this;
- return (
- <Agenda
- // eslint-disable-next-line react/jsx-props-no-spreading
- {...props}
- ref={props.onRef}
- theme={{
- backgroundColor: props.theme.colors.agendaBackgroundColor,
- calendarBackground: props.theme.colors.background,
- textSectionTitleColor: props.theme.colors.agendaDayTextColor,
- selectedDayBackgroundColor: props.theme.colors.primary,
- selectedDayTextColor: '#ffffff',
- todayTextColor: props.theme.colors.primary,
- dayTextColor: props.theme.colors.text,
- textDisabledColor: props.theme.colors.agendaDayTextColor,
- dotColor: props.theme.colors.primary,
- selectedDotColor: '#ffffff',
- arrowColor: 'orange',
- monthTextColor: props.theme.colors.primary,
- indicatorColor: props.theme.colors.primary,
- textDayFontWeight: '300',
- textMonthFontWeight: 'bold',
- textDayHeaderFontWeight: '300',
- textDayFontSize: 16,
- textMonthFontSize: 16,
- textDayHeaderFontSize: 16,
- agendaDayTextColor: props.theme.colors.agendaDayTextColor,
- agendaDayNumColor: props.theme.colors.agendaDayTextColor,
- agendaTodayColor: props.theme.colors.primary,
- agendaKnobColor: props.theme.colors.primary,
- }}
- />
- );
- }
-
- render(): React.Node {
- const {props} = this;
- // Completely recreate the component on theme change to force theme reload
- if (props.theme.dark)
- return <View style={{flex: 1}}>{this.getAgenda()}</View>;
- return this.getAgenda();
- }
- }
-
- export default withTheme(CustomAgenda);
|