rmhy-geez-calendar
v0.1.10
Published
Reusable Ethiopic (Geez) calendar component and date utilities for Expo / React Native apps.
Maintainers
Readme
rmhy-geez-calendar
Reusable Ethiopic (Geez) calendar UI and date conversion helpers for Expo and React Native apps.
Features
- Ethiopic ↔ Gregorian date conversion utilities (
convertToEt,convertToGreg,today) GeezCalendarcomponent that renders a month grid with navigation controls- Localised month and weekday labels (Geez) with options to override
- Designed to work with Expo, React Native Paper, and
@expo/vector-icons
Installation
npm install rmhy-geez-calendar
# or
yarn add rmhy-geez-calendarWhen using the calendar component be sure your project wraps the UI with a PaperProvider so it can access theme colors.
Usage
import React, { useState } from "react";
import { GeezCalendar, today, type EthiopicDate } from "rmhy-geez-calendar";
const CalendarExample = () => {
const initialDate = today();
const [activeDate, setActiveDate] = useState<EthiopicDate>({
year: initialDate.year,
month: initialDate.month,
day: initialDate.date,
});
return (
<GeezCalendar
activeDate={activeDate}
onChangeDate={setActiveDate}
renderFooter={() => null}
/>
);
};
export default CalendarExample;To adjust the labels (for example, to translate weekdays) pass the labels prop:
<GeezCalendar
activeDate={activeDate}
onChangeDate={setActiveDate}
labels={{
todayButtonLabel: "ዛሬ",
}}
/>;License
MIT
Local playground
An Expo demo lives in example/ so you can try the calendar component quickly:
cd example
npm install # only needed the first time or after library changes
npm run start # press w for web, i for iOS, or a for AndroidThe example app depends on the package source via a local file:.. reference. If you update the library code, rerun npm install inside example/ to pick up the changes before restarting Expo.
Testing
Run the automated unit tests and enforce the 90% coverage threshold with:
npm test