calender-carousal-package-react-ts
v2.0.2
Published
<a href="https://www.npmjs.com/package/calender-carousal-package-react-ts"> <img alt="downloads" src="https://img.shields.io/badge/npm-v2.0.2-blue" target="_blank" /> </a> <a href=""> <img alt="License: MIT" src="https://img.shields.io/badge/license-M
Downloads
6
Maintainers
Readme
calender-carousal-react-ts
Table of contents
Installation
You can install calender-carousal-package-react-ts
using npm.
npm i calender-carousal-package-react-ts
Usage
import { CalendarProvider } from 'calender-carousal-package-react-ts'
const App = () => {
return (
<CalendarProvider>
{...}
</CalendarProvider>
)
}
export default App
import CalenderCarousalContainer from 'calender-carousal-package-react-ts'
const TestComponent = () => {
return (
{...}
<CalenderCarousalContainer />
{...}
)
}
export default TestComponent
API
The CalenderCarousalContainer
component can be used by wrapping it in the CalendarProvider
, both imported from Calender-Carousel
. All of the calendar’s state management and date logic are bundled in useCalendar
custom hook.
Components
CalendarProvider
| Prop | Description | Type | Default |
| :----------- | :----------------------------------------------------------- | :--------------------------------------- | :------ |
| datesRange | The Range of dates displayed in the Carousel | DateType[] |1 Week From CurrentDay
|
| intervalStep | The Time Span by which duration should increase or decrease | Duration
| Value of span is 15
& Unit is "Min"
You can choose any span value with avaiable units (Hrs,Mins & Days)
.
| | | ||
| formats | The display format for date, time, and clock | Formats | Default Formats are Dates : "DD MM YYYY"
Clock : "12h"
Time : "hh:mm A"
| minDuration | Lower threshold for the duration (in Minutes,Hours & Days) | Duration
| Default value of span is 30
& Unit is "Mins"
|
| maxDuration | Upper threshold for the duration (in Minutes,Hours & Days) |Duration
| Default value of span is 180
& Unit is "Mins"
|
| cardsBreakPoints | Numbers of cards per screen to be displayed in Carousal | CardBreakPoint | Default Values of Card Break Points
| unavailableDates |You can Either give List of Unavailable Dates or a Callback which will specifies the dates that cannot be selected|UnavailableDate[] |(date: Dayjs) => boolean
| Default value is Sunday
|
| unavailableHours | Hours that should be closed in Time Picker | UnavailableHrs | 12 AM TO 2 AM
|
| theme | Theme for the calendar and the components within | CalendarTheme | |
CalendarCarousalContainer
| Prop | Description | Type | Default |
| :---------------- | :-------------------------------------------------- | :------------------- | :----------- |
| activePanels | What panels should initially be opened | string \| string[]
| ['1']
|
| dateComponent | Component that will replace the card carousel | ReactNode
| |
| timeComponent | Component that will replace the time picker | ReactNode
| |
| durationComponent | Component that will replace the duration setter | ReactNode
| |
Hooks
useCalendar
This custom hook provides access to all the state values of the package, along with the functions to update the state.
| Name | Description | Type |
| :--------------- | :----------------------------------------------------------- | :--------------------------------------- |
| selected | Selected date, time, and duration | Selected |
| setDate | Function to update the selected date | (date: Dayjs) => void
|
| setTime | Function to update the selected time | (time: Dayjs) => void
|
| handleIncrementClick | Function to increase the selected duration | (offsetValue: Duration) => number
|
| handleDecrementClick | Function to decrease the selected duration | (offsetValue: Duration) => number
|
| dateList | The dates displayed in the carousel | DateType[] |
| intervalStep | The Time Span by which duration should increase or decrease |Duration
|
| formats | The display format for date, time, and clock | Formats |
| minDuration | Lower threshold for the duration (in Minutes,Hours & Days) | Duration
|
| maxDuration | Upper threshold for the duration (in Minutes,Hours & Days) | Duration
|
| cardsBreakPoints |Numbers of cards per screen to be displayed in Carousal | CardBreakPoint |
| unavailableDates | You can Either give List of Clode Dates or a Callback which will specifies the dates that cannot be selected| UnavailableDate[] |(date: Dayjs) => boolean
|
| unavailableHours | Hours that should be closed in Time Picker | UnavailableHrs
|
Custom Types
DateType
Date entry with its associated information.
type DateType = {
date: Dayjs
unavailable?: boolean
}
Formats
Display format for the date, time and allow the selection of 12
or 24
hour format.
type Formats = {
date: string
time: string
clock: '12h' | '24h'
}
Duration
Duration format for defining time intervals.
type Duration = {
span: number;
unit: string;
};
CardBreakPoint
Number of cards to display per slide based on the different screen sizes.
export type CardBreakPoint = {
xs: number
sm: number
md: number
xl: number
xxl: number
}
UnavailableHrs
Range of unavailable hours, including start
and end
.
export type UnavailableHrs = {
start: number;
end: number;
};
UnavailableDate
Date that would be unavaible in Calendar
export type UnavailableDate, = {
string|Dayjs
};
Selected
export type Selected = {
date: Dayjs | null
time: Dayjs | null
Duration: number
}
CalendarTheme
type CalendarTheme = {
isDark: boolean /**@default false */
general?: Partial<AliasToken>
custom?: Partial<CustomStyles>
}
DateRange
export type DateRange= {
start: Dayjs
end: Dayjs
}
CustomStyles
custom
styles allow for component-specific customization. Below are the styles that can be applied.
| Name | Description | Type |
| :--- | :--- | :--- |
| colorCardHeader | Header color for open date cards | string
| colorCardHeaderText | Text color for date card header | string
| colorCardBodyText | Text color for date card body | string
| colorButton | Color for the duration buttons | string
| colorTimePicker | Color for the TimePicker
component | string
| cardGap | Gap between the date cards in the carousel | number
| buttonBorderRadius | Border radius of buttons that update duration | number
Default Card Breakpoints Values
Default number of cards to display per slide based on the different screen sizes.
export const CARD_BREAKPOINT: CardBreakPoint = {
xs: 1,
sm: 2,
md: 3,
lg: 5,
xl: 7,
xxl: 9,
}
Utils
getDatesList
returns: DateType[]
Get a list of dates consisiting of the Range you provided as props.
| Param | Description | Type |
| :--- | :--- | :--- |
| Range | Range of Date you want to Display | {DateRange}
(#DateRange)
| unavaiableDates | Dates that should be closed | string
| Dayjs
getMeanDuration
returns: number
Get mean value for the Duration.
| Param | Description | Type |
| :--- | :--- | :--- |
| minDuration | Minimum Value of Duration in min| Duration
| maxDuration | Maximum Value of Duration in min| Duration
formattedDuration
returns: string
Convert minutes into hour representation.
| Param | Description | Type |
| :--- | :--- | :--- |
| minutes | The duration in minutes | number
getFormattedTime
returns: string
Convert time to a formatted string.
| Param | Description | Type |
| :--- | :--- | :--- |
| time | The time to format | Dayjs | null
| format | The format to return | string
getUnavailableTime
returns: [number]
Get Unvailable hours
| Param | Description | Type |
| :--- | :--- | :--- |
| {Unavailable Hours} | Hours that are unavailable | null
Built Using
- React + TypeScript using Vite
- Dayjs
- Ant Design
License
Copyright © 2023 Muhammad Talha.