[**@uplink-protocol/form-controller v0.3.1**](../README.md)

***

[@uplink-protocol/form-controller](../globals.md) / DateSelectionService

# Class: DateSelectionService

Defined in: [Date/services/date-selection.service.ts:8](https://github.com/jmkcoder/uplink-protocol-calendar/blob/4cde26f472352440ee258db7670fce2e95651862/src/Date/services/date-selection.service.ts#L8)

Implementation of DateSelectionService
Responsible for handling date selection and ranges

## Implements

- [`IDateSelectionService`](../interfaces/IDateSelectionService.md)

## Constructors

### Constructor

> **new DateSelectionService**(): `DateSelectionService`

#### Returns

`DateSelectionService`

## Methods

### clearDateRange()

> **clearDateRange**(): `object`

Defined in: [Date/services/date-selection.service.ts:84](https://github.com/jmkcoder/uplink-protocol-calendar/blob/4cde26f472352440ee258db7670fce2e95651862/src/Date/services/date-selection.service.ts#L84)

Clear the date range selection

#### Returns

`object`

Empty date range

##### endDate

> **endDate**: `Date` \| `null`

##### startDate

> **startDate**: `Date` \| `null`

#### Implementation of

[`IDateSelectionService`](../interfaces/IDateSelectionService.md).[`clearDateRange`](../interfaces/IDateSelectionService.md#cleardaterange)

***

### clearSelection()

> **clearSelection**(): `object`

Defined in: [Date/services/date-selection.service.ts:70](https://github.com/jmkcoder/uplink-protocol-calendar/blob/4cde26f472352440ee258db7670fce2e95651862/src/Date/services/date-selection.service.ts#L70)

Clear the current selection

#### Returns

`object`

Updated selection state

##### selectedDate

> **selectedDate**: `Date` \| `null`

##### selectedDateRange

> **selectedDateRange**: `object`

###### selectedDateRange.endDate

> **endDate**: `Date` \| `null`

###### selectedDateRange.startDate

> **startDate**: `Date` \| `null`

#### Implementation of

[`IDateSelectionService`](../interfaces/IDateSelectionService.md).[`clearSelection`](../interfaces/IDateSelectionService.md#clearselection)

***

### isDateInRange()

> **isDateInRange**(`date`, `range`): `object`

Defined in: [Date/services/date-selection.service.ts:104](https://github.com/jmkcoder/uplink-protocol-calendar/blob/4cde26f472352440ee258db7670fce2e95651862/src/Date/services/date-selection.service.ts#L104)

Check if a date is in the selected range

#### Parameters

##### date

`Date`

Date to check

##### range

Currently selected range

###### endDate

`Date` \| `null`

###### startDate

`Date` \| `null`

#### Returns

`object`

Object with range info

##### isInRange

> **isInRange**: `boolean`

##### isRangeEnd

> **isRangeEnd**: `boolean`

##### isRangeStart

> **isRangeStart**: `boolean`

#### Implementation of

[`IDateSelectionService`](../interfaces/IDateSelectionService.md).[`isDateInRange`](../interfaces/IDateSelectionService.md#isdateinrange)

***

### isDateInSelectedRange()

> **isDateInSelectedRange**(`date`, `range`): `boolean`

Defined in: [Date/services/date-selection.service.ts:144](https://github.com/jmkcoder/uplink-protocol-calendar/blob/4cde26f472352440ee258db7670fce2e95651862/src/Date/services/date-selection.service.ts#L144)

Check if a date is in the selected range (simplified version)

#### Parameters

##### date

`Date`

Date to check

##### range

Currently selected range

###### endDate

`Date` \| `null`

###### startDate

`Date` \| `null`

#### Returns

`boolean`

Boolean indicating if the date is in range

#### Implementation of

[`IDateSelectionService`](../interfaces/IDateSelectionService.md).[`isDateInSelectedRange`](../interfaces/IDateSelectionService.md#isdateinselectedrange)

***

### isDateSelected()

> **isDateSelected**(`date`, `selectedDate`): `boolean`

Defined in: [Date/services/date-selection.service.ts:94](https://github.com/jmkcoder/uplink-protocol-calendar/blob/4cde26f472352440ee258db7670fce2e95651862/src/Date/services/date-selection.service.ts#L94)

Check if a date is selected

#### Parameters

##### date

`Date`

Date to check

##### selectedDate

Currently selected date

`Date` | `null`

#### Returns

`boolean`

Boolean indicating if date is selected

#### Implementation of

[`IDateSelectionService`](../interfaces/IDateSelectionService.md).[`isDateSelected`](../interfaces/IDateSelectionService.md#isdateselected)

***

### selectDate()

> **selectDate**(`date`): `Date`

Defined in: [Date/services/date-selection.service.ts:14](https://github.com/jmkcoder/uplink-protocol-calendar/blob/4cde26f472352440ee258db7670fce2e95651862/src/Date/services/date-selection.service.ts#L14)

Select a single date

#### Parameters

##### date

`Date`

Date to select

#### Returns

`Date`

Selected date

#### Implementation of

[`IDateSelectionService`](../interfaces/IDateSelectionService.md).[`selectDate`](../interfaces/IDateSelectionService.md#selectdate)

***

### selectDateRange()

> **selectDateRange**(`date`, `currentRange`): `object`

Defined in: [Date/services/date-selection.service.ts:23](https://github.com/jmkcoder/uplink-protocol-calendar/blob/4cde26f472352440ee258db7670fce2e95651862/src/Date/services/date-selection.service.ts#L23)

Select a date for a range

#### Parameters

##### date

`Date`

Date being selected

##### currentRange

Current date range

###### end?

`Date` \| `null`

###### endDate?

`Date` \| `null`

###### start?

`Date` \| `null`

###### startDate?

`Date` \| `null`

#### Returns

`object`

Updated date range

##### endDate

> **endDate**: `Date` \| `null`

##### startDate

> **startDate**: `Date` \| `null`

#### Implementation of

[`IDateSelectionService`](../interfaces/IDateSelectionService.md).[`selectDateRange`](../interfaces/IDateSelectionService.md#selectdaterange)
