---
applyTo: "**"
name: mobiscroll-ui-javascript
description: |
Mobiscroll JavaScript patterns — imperative initialization, render functions, dynamic
updates, @mobiscroll/javascript imports. Invoked by mobiscroll-ui after framework detection.
Do not auto-trigger — invoked by mobiscroll-ui only.
---
# Mobiscroll — JavaScript Patterns
> This skill is loaded by `mobiscroll-ui`. If you arrived here directly, invoke
> `mobiscroll-ui` first to run environment detection and the mandatory schema lookup.
Package: `@mobiscroll/javascript`
CSS import: `import '@mobiscroll/javascript/dist/css/mobiscroll.min.css'`
## Initialization Pattern
```javascript
import * as mobiscroll from '@mobiscroll/javascript';
var inst = mobiscroll.eventcalendar('#my-calendar', {
data: events,
view: { scheduler: { type: 'week' } },
onEventCreate: function (args) {
// handle
}
});
```
Component factory functions are lowercase: `mobiscroll.eventcalendar()`,
`mobiscroll.datepicker()`, `mobiscroll.select()`, `mobiscroll.popup()`.
## Key Conventions
- Initialization targets a DOM element (CSS selector string or HTMLElement reference).
- All configuration passes as an options object (second argument).
- Event handlers are properties in the options object: `onEventCreate`, `onCellClick`.
- The factory function returns an instance with methods: `inst.setOptions()`,
`inst.getEvents()`, `inst.destroy()`.
- No JSX, no templates, no decorators — pure DOM + callbacks.
## Anti-Patterns
| WRONG | RIGHT |
|:---|:---|
| `import { Eventcalendar } from '@mobiscroll/react'` | `import * as mobiscroll from '@mobiscroll/javascript'` |
| `` JSX component | `mobiscroll.eventcalendar('#el', { ... })` |
| React hooks (`useState`, `useEffect`) | Vanilla DOM events and callbacks |
| Angular `@Component` decorators | Imperative initialization on DOM elements |
| Vue `