--- 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 `