# Upgrade guide for Scheduler v5.6.0

## New location for `Core.util.helper.Point` class

The `Core.util.helper.Point` class has been moved to solve circular module dependencies. It is now a named (`Point`)
export of the `Core.util.helper.Rectangle` module.

Changes are required if you are directly importing the class from sources:

**Old code:**

```javascript
import Point from 'path-to-lib/Core/helper/util/Point.js';
```

**New code:**

```javascript
import { Point } from 'path-to-lib/Core/helper/util/Rectangle.js';
```

Note: No changes required for importing from module or umd bundles.

## Recurring TimeRanges

There is a new `TimeRangeModel` class which includes a `recurrenceRule` field, and a new `TimeRangeStore`
class which implements delivering occurrences of recurring TimeRanges. These are now used by default in your
Project when the data loaded includes a `timeRanges` property.

You do not have to implement your own subclass of `TimeSpan` any more (unless you add your own custom fields
in which case, you should now extend the `TimeRangeModel` class)

Where in old versions you would have used

```javascript
class MyTimeRange extends TimeSpan.mixin(RecurringTimeSpan) {
    static fields = [{
        name : 'myExtraField'
    }]
}

...

new Scheduler({
    ...
        project
:
{
    timeRangeStore : {
        modelClass : MyTimeRange
    }
}
...
})
;
```

Now, you would only need

```javascript
class MyTimeRange extends TimeRange {
    static fields = [{
        name : 'myExtraField'
    }]
}

...

new Scheduler({
    ...
        project
:
{
    timeRangeStore : {
        modelClass : MyTimeRange
    }
}
...
})
;
```

*If you do not add your own custom fields, you do not need any special configurations of subclasses.*

The `recurringtimeranges` example code shows the reduced coding now possible to use recurring TimeRanges.

## Milestone CSS

The CSS for milestones was slightly simplified thanks the conversion to use grid layout for event bars back in 5.0. If 
you use custom styling for milestones, you might need to update it

## `ScrollOptions` has been renamed to `BryntumScrollOptions`

If you use TypeScript in your application rename imported type `ScrollOptions` to `BryntumScrollOptions`.

**Old code:**

```typescript
import { ScrollOptions } from '@bryntum/scheduler'
```

**New code:**

```typescript
import { BryntumScrollOptions } from '@bryntum/scheduler'
```


<p class="last-modified">Last modified on 2023-10-26 8:19:20</p>