node_modules folder (at @mobiscroll/angular/dist/css/mobiscroll.min.css).
If you are [using SCSS](https://sass-lang.com/), you will also find a full and a modular `.scss` file in the same directory.
To test the installation, add the Eventcalendar component to your main component template (for example `app.component.html`).
In case you installed the library from a downloaded package and did not include the Eventcalendar in the package, you can choose a different component as well.
### With standalone components
**app.component.html**
```html
{{title}}
Popup content
{{resource.description}}
{{slotdata.slot.description}}
cssClass property.
Check out how to change resource column widths in [this example](https://demo.mobiscroll.com/scheduler/content-dependent-resource-width).
```ts title="Assigning a class to a resource"
resources: [
{ id: 1, name: 'Resource 1', cssClass: 'resource-column-small' },
{ id: 2, name: 'Resource 2', cssClass: 'resource-column-large' }
]
```
```css title="Define styles for the resource classes"
.resource-column-small {
width: 80px;
}
.resource-column-large {
width: 160px;
}
```
:::info
If you override both resource and day column widths, make sure column groups (day or resource, depending on the [`groupBy`](#opt-groupBy) option)
are wide enough to contain their child elements, or specify a `min-width` for the group column instead of a fixed width.
:::
### Hide empty columns
Columns without any events can be hidden by setting `hideEmptyColumns` to `true` under the [view](#configuring-the-view) configuration.
### Hide invalid columns
Fully invalid columns can be hidden by setting `hideInvalidColumns` to `true` under the [view](#configuring-the-view) configuration.
:::info
A column is considered fully invalid if it contains [invalid](#opt-invalid) periods defined with `allDay`, date values,
or a single time range that covers a full day or multiple days.
:::
## Resources
### Resource grouping
The Scheduler view can display multiple [resources](resources) inside a single instance. By default the displayed resources will be grouped by the given resources and the grouping can be changed with the [`groupBy`](#opt-groupBy) option, which also supports grouping by date.
```html title="Grouping resources by date"
{{resource.description}}
Any Title you want here or
xxsmall, xsmall, small, medium, large, xlarge, xxlarge, and xxxlarge.
Here are the default sizes and their corresponding widths:
```css
.mbsc-timeline-column-xxs {
width: 1.5em; // 24px
}
.mbsc-timeline-column-xs {
width: 3em; // 48px
}
.mbsc-timeline-column-s {
width: 4.5em; // 72px
}
.mbsc-timeline-column-m {
width: 6em; // 96px
}
.mbsc-timeline-column-l {
width: 7.5em; // 120px
}
.mbsc-timeline-column-xl {
width: 9em; // 144px
}
.mbsc-timeline-column-xxl {
width: 10.5em; // 168px
}
.mbsc-timeline-column-xxxl {
width: 12em; // 192px
}
```
To specify the columnWidth in your view configuration, include it as part of the timeline view options:
```ts
view: {
timeline: {
columnWidth: 'large'
}
}
```
The predefined sizes correspond to specific default widths, but you can override them using CSS:
```css
.mbsc-timeline-column-l {
width: 50px;
}
```
:::caution
You need to apply these rules after the mobiscroll default rules, otherwise the default rules will take precedence over them.
:::
## Resources
### Resource grouping and hierarchy
The Timeline view supports resource hierarchy. [Hierarchy groups](https://demo.mobiscroll.com/timeline/resource-grouping-hierarchy) can be defined with the `children` property of the `resource` [object](#opt-resources). Child objects are also resources and have the same properties, thus they can also have children.
```html title="Multi-level hierarchy groups"