or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

extensions.mdindex.mdinitialization.mdinstance-methods.mdjquery.mdoptions.mdstatic-methods.md

options.mddocs/

0

# Configuration Options

1

2

Comprehensive configuration system for customizing OverlayScrollbars behavior, appearance, and functionality through nested options objects.

3

4

## Core Options

5

6

### className

7

8

```javascript { .api }

9

interface OverlayScrollbarsOptions {

10

className?: string | null;

11

}

12

```

13

14

CSS class name applied to the host element for custom styling.

15

16

**Type:** String | null

17

**Default:** `"os-theme-dark"`

18

19

```javascript

20

// Apply custom theme

21

OverlayScrollbars(element, {

22

className: "custom-scrollbar-theme"

23

});

24

25

// Remove default theme

26

OverlayScrollbars(element, {

27

className: null

28

});

29

```

30

31

### resize

32

33

```javascript { .api }

34

interface OverlayScrollbarsOptions {

35

resize?: "none" | "both" | "horizontal" | "vertical";

36

}

37

```

38

39

Controls resize behavior for the scrollbars.

40

41

**Type:** String

42

**Default:** `"none"`

43

**Values:** `"none"`, `"both"`, `"horizontal"`, `"vertical"`

44

45

```javascript

46

OverlayScrollbars(element, {

47

resize: "both" // Allow resizing in both directions

48

});

49

```

50

51

### sizeAutoCapable

52

53

```javascript { .api }

54

interface OverlayScrollbarsOptions {

55

sizeAutoCapable?: boolean;

56

}

57

```

58

59

Whether the plugin can automatically detect size changes.

60

61

**Type:** Boolean

62

**Default:** `true`

63

64

### clipAlways

65

66

```javascript { .api }

67

interface OverlayScrollbarsOptions {

68

clipAlways?: boolean;

69

}

70

```

71

72

Whether to always clip the content.

73

74

**Type:** Boolean

75

**Default:** `true`

76

77

### normalizeRTL

78

79

```javascript { .api }

80

interface OverlayScrollbarsOptions {

81

normalizeRTL?: boolean;

82

}

83

```

84

85

Whether to normalize RTL (right-to-left) scrolling behavior.

86

87

**Type:** Boolean

88

**Default:** `true`

89

90

### paddingAbsolute

91

92

```javascript { .api }

93

interface OverlayScrollbarsOptions {

94

paddingAbsolute?: boolean;

95

}

96

```

97

98

Whether to use absolute positioning for padding.

99

100

**Type:** Boolean

101

**Default:** `false`

102

103

## Auto Update Options

104

105

### autoUpdate

106

107

```javascript { .api }

108

interface OverlayScrollbarsOptions {

109

autoUpdate?: boolean | null;

110

}

111

```

112

113

Automatic update detection behavior.

114

115

**Type:** Boolean | null

116

**Default:** `null`

117

118

```javascript

119

// Enable auto-update

120

OverlayScrollbars(element, {

121

autoUpdate: true

122

});

123

124

// Disable auto-update

125

OverlayScrollbars(element, {

126

autoUpdate: false

127

});

128

129

// Use recommended setting (null)

130

OverlayScrollbars(element, {

131

autoUpdate: null

132

});

133

```

134

135

### autoUpdateInterval

136

137

```javascript { .api }

138

interface OverlayScrollbarsOptions {

139

autoUpdateInterval?: number;

140

}

141

```

142

143

Interval in milliseconds for automatic updates.

144

145

**Type:** Number

146

**Default:** `33`

147

148

### updateOnLoad

149

150

```javascript { .api }

151

interface OverlayScrollbarsOptions {

152

updateOnLoad?: string | string[] | null;

153

}

154

```

155

156

Elements that trigger updates when loaded.

157

158

**Type:** String | Array | null

159

**Default:** `["img"]`

160

161

```javascript

162

// Update when images and videos load

163

OverlayScrollbars(element, {

164

updateOnLoad: ["img", "video"]

165

});

166

167

// Don't update on any element load

168

OverlayScrollbars(element, {

169

updateOnLoad: null

170

});

171

```

172

173

## Native Scrollbars Options

174

175

### nativeScrollbarsOverlaid

176

177

```javascript { .api }

178

interface OverlayScrollbarsOptions {

179

nativeScrollbarsOverlaid?: {

180

showNativeScrollbars?: boolean;

181

initialize?: boolean;

182

};

183

}

184

```

185

186

Configuration for when native scrollbars are overlaid (like on macOS).

187

188

```javascript

189

OverlayScrollbars(element, {

190

nativeScrollbarsOverlaid: {

191

showNativeScrollbars: false, // Hide native scrollbars

192

initialize: true // Initialize even when native are overlaid

193

}

194

});

195

```

196

197

## Overflow Behavior Options

198

199

### overflowBehavior

200

201

```javascript { .api }

202

interface OverlayScrollbarsOptions {

203

overflowBehavior?: {

204

x?: "visible-hidden" | "visible-scroll" | "scroll" | "hidden";

205

y?: "visible-hidden" | "visible-scroll" | "scroll" | "hidden";

206

};

207

}

208

```

209

210

Controls overflow behavior for horizontal and vertical axes.

211

212

**Default:** `{ x: "scroll", y: "scroll" }`

213

214

```javascript

215

OverlayScrollbars(element, {

216

overflowBehavior: {

217

x: "hidden", // Hide horizontal overflow

218

y: "scroll" // Allow vertical scrolling

219

}

220

});

221

```

222

223

## Scrollbars Options

224

225

### scrollbars

226

227

```javascript { .api }

228

interface OverlayScrollbarsOptions {

229

scrollbars?: {

230

visibility?: "visible" | "hidden" | "auto";

231

autoHide?: "never" | "scroll" | "leave" | "move";

232

autoHideDelay?: number;

233

dragScrolling?: boolean;

234

clickScrolling?: boolean;

235

touchSupport?: boolean;

236

snapHandle?: boolean;

237

};

238

}

239

```

240

241

Comprehensive scrollbar behavior configuration.

242

243

```javascript

244

OverlayScrollbars(element, {

245

scrollbars: {

246

visibility: "auto", // Show scrollbars when needed

247

autoHide: "leave", // Hide when mouse leaves

248

autoHideDelay: 800, // Delay before hiding (ms)

249

dragScrolling: true, // Enable drag scrolling

250

clickScrolling: false, // Disable click scrolling on track

251

touchSupport: true, // Enable touch support

252

snapHandle: false // Don't snap handle to increments

253

}

254

});

255

```

256

257

#### visibility

258

259

Controls when scrollbars are visible.

260

261

**Values:**

262

- `"visible"` - Always visible

263

- `"hidden"` - Always hidden

264

- `"auto"` - Visible when content overflows

265

266

#### autoHide

267

268

Controls automatic hiding behavior.

269

270

**Values:**

271

- `"never"` - Never auto-hide

272

- `"scroll"` - Hide after scrolling stops

273

- `"leave"` - Hide when mouse leaves scrollbar area

274

- `"move"` - Hide when mouse stops moving

275

276

#### autoHideDelay

277

278

Time in milliseconds before auto-hiding scrollbars.

279

280

**Type:** Number

281

**Default:** `800`

282

283

## Textarea Options

284

285

### textarea

286

287

```javascript { .api }

288

interface OverlayScrollbarsOptions {

289

textarea?: {

290

dynWidth?: boolean;

291

dynHeight?: boolean;

292

inheritedAttrs?: string | string[] | null;

293

};

294

}

295

```

296

297

Special options for textarea elements.

298

299

```javascript

300

OverlayScrollbars(textareaElement, {

301

textarea: {

302

dynWidth: false, // Don't adjust width dynamically

303

dynHeight: false, // Don't adjust height dynamically

304

inheritedAttrs: ["style", "class"] // Attributes to inherit

305

}

306

});

307

```

308

309

## Callbacks

310

311

### callbacks

312

313

```javascript { .api }

314

interface OverlayScrollbarsOptions {

315

callbacks?: {

316

onInitialized?: (instance: OverlayScrollbarsInstance) => void;

317

onInitializationWithdrawn?: (instance: OverlayScrollbarsInstance) => void;

318

onDestroyed?: (instance: OverlayScrollbarsInstance) => void;

319

onScrollStart?: (instance: OverlayScrollbarsInstance) => void;

320

onScroll?: (instance: OverlayScrollbarsInstance) => void;

321

onScrollStop?: (instance: OverlayScrollbarsInstance) => void;

322

onOverflowChanged?: (instance: OverlayScrollbarsInstance) => void;

323

onOverflowAmountChanged?: (instance: OverlayScrollbarsInstance) => void;

324

onDirectionChanged?: (instance: OverlayScrollbarsInstance) => void;

325

onContentSizeChanged?: (instance: OverlayScrollbarsInstance) => void;

326

onHostSizeChanged?: (instance: OverlayScrollbarsInstance) => void;

327

onUpdated?: (instance: OverlayScrollbarsInstance) => void;

328

};

329

}

330

```

331

332

Lifecycle and event callbacks.

333

334

```javascript

335

OverlayScrollbars(element, {

336

callbacks: {

337

onInitialized: function(instance) {

338

console.log('OverlayScrollbars initialized');

339

},

340

341

onScrollStart: function(instance) {

342

console.log('Scrolling started');

343

},

344

345

onScroll: function(instance) {

346

const state = instance.getState();

347

console.log('Scroll position:', state.contentScrollSize);

348

},

349

350

onScrollStop: function(instance) {

351

console.log('Scrolling stopped');

352

},

353

354

onOverflowChanged: function(instance) {

355

const state = instance.getState();

356

console.log('Overflow changed:', state.hasOverflow);

357

},

358

359

onContentSizeChanged: function(instance) {

360

console.log('Content size changed');

361

// Useful for triggering other UI updates

362

},

363

364

onDestroyed: function(instance) {

365

console.log('Instance destroyed');

366

}

367

}

368

});

369

```

370

371

## Complete Configuration Example

372

373

```javascript

374

const completeConfig = {

375

className: "custom-theme",

376

resize: "both",

377

sizeAutoCapable: true,

378

clipAlways: true,

379

normalizeRTL: true,

380

paddingAbsolute: false,

381

autoUpdate: null,

382

autoUpdateInterval: 33,

383

updateOnLoad: ["img", "video"],

384

385

nativeScrollbarsOverlaid: {

386

showNativeScrollbars: false,

387

initialize: true

388

},

389

390

overflowBehavior: {

391

x: "scroll",

392

y: "scroll"

393

},

394

395

scrollbars: {

396

visibility: "auto",

397

autoHide: "leave",

398

autoHideDelay: 1000,

399

dragScrolling: true,

400

clickScrolling: true,

401

touchSupport: true,

402

snapHandle: false

403

},

404

405

textarea: {

406

dynWidth: false,

407

dynHeight: false,

408

inheritedAttrs: ["style", "class"]

409

},

410

411

callbacks: {

412

onInitialized: function(instance) {

413

console.log('Initialized');

414

},

415

onScroll: function(instance) {

416

// Handle scroll events

417

},

418

onUpdated: function(instance) {

419

// Handle updates

420

}

421

}

422

};

423

424

const instance = OverlayScrollbars(element, completeConfig);

425

```

426

427

## Types

428

429

```javascript { .api }

430

interface OverlayScrollbarsOptions {

431

className?: string | null;

432

resize?: "none" | "both" | "horizontal" | "vertical";

433

sizeAutoCapable?: boolean;

434

clipAlways?: boolean;

435

normalizeRTL?: boolean;

436

paddingAbsolute?: boolean;

437

autoUpdate?: boolean | null;

438

autoUpdateInterval?: number;

439

updateOnLoad?: string | string[] | null;

440

nativeScrollbarsOverlaid?: NativeScrollbarsOverlaidOptions;

441

overflowBehavior?: OverflowBehaviorOptions;

442

scrollbars?: ScrollbarsOptions;

443

textarea?: TextareaOptions;

444

callbacks?: CallbackOptions;

445

}

446

447

interface NativeScrollbarsOverlaidOptions {

448

showNativeScrollbars?: boolean;

449

initialize?: boolean;

450

}

451

452

interface OverflowBehaviorOptions {

453

x?: "visible-hidden" | "visible-scroll" | "scroll" | "hidden";

454

y?: "visible-hidden" | "visible-scroll" | "scroll" | "hidden";

455

}

456

457

interface ScrollbarsOptions {

458

visibility?: "visible" | "hidden" | "auto";

459

autoHide?: "never" | "scroll" | "leave" | "move";

460

autoHideDelay?: number;

461

dragScrolling?: boolean;

462

clickScrolling?: boolean;

463

touchSupport?: boolean;

464

snapHandle?: boolean;

465

}

466

467

interface TextareaOptions {

468

dynWidth?: boolean;

469

dynHeight?: boolean;

470

inheritedAttrs?: string | string[] | null;

471

}

472

473

interface CallbackOptions {

474

onInitialized?: (instance: OverlayScrollbarsInstance) => void;

475

onInitializationWithdrawn?: (instance: OverlayScrollbarsInstance) => void;

476

onDestroyed?: (instance: OverlayScrollbarsInstance) => void;

477

onScrollStart?: (instance: OverlayScrollbarsInstance) => void;

478

onScroll?: (instance: OverlayScrollbarsInstance) => void;

479

onScrollStop?: (instance: OverlayScrollbarsInstance) => void;

480

onOverflowChanged?: (instance: OverlayScrollbarsInstance) => void;

481

onOverflowAmountChanged?: (instance: OverlayScrollbarsInstance) => void;

482

onDirectionChanged?: (instance: OverlayScrollbarsInstance) => void;

483

onContentSizeChanged?: (instance: OverlayScrollbarsInstance) => void;

484

onHostSizeChanged?: (instance: OverlayScrollbarsInstance) => void;

485

onUpdated?: (instance: OverlayScrollbarsInstance) => void;

486

}

487

```