📦 Installation
Modular Installation
OnigiriJS uses a modular architecture. Load only what you need!
Minimal Setup (Core Only)
<!-- Just the essentials -->
<script src="onigiri-core.js"></script>
<script>
// You can now use O() or Onigiri()
O('#app').text('Hello OnigiriJS! 🍙');
</script>
Recommended Setup
For most applications, this combination provides the best features:
<!-- Core functionality -->
<script src="onigiri-core.js"></script>
<script src="onigiri-events.js"></script>
<script src="onigiri-components.js"></script>
<!-- Security (highly recommended) -->
<script src="onigiri-security.js"></script>
<script src="onigiri-ajax.js"></script>
<!-- Utilities -->
<script src="onigiri-storage.js"></script>
<script src="onigiri-validation.js"></script>
<script src="onigiri-animate.js"></script>
<script src="onigiri-translation.js"></script>
Full Stack Setup
Load all modules for complete functionality:
<!-- Load modules in order -->
<script src="onigiri-core.js"></script>
<script src="onigiri-events.js"></script>
<script src="onigiri-components.js"></script>
<script src="onigiri-security.js"></script>
<script src="onigiri-ajax.js"></script>
<script src="onigiri-storage.js"></script>
<script src="onigiri.pjax.js"></script>
<script src="onigiri-validation.js"></script>
<script src="onigiri-animate.js"></script>
<script src="onigiri-translation.js"></script>
<script src="onigiri-humhub.js"></script>
<script>
// Initialize security and translations
Onigiri.security.init({ autoInjectCSRF: true });
Onigiri.i18n.init({ locale: 'en', autoDetect: true });
// Check loaded modules
console.log('Loaded modules:', Onigiri.modules);
</script>
🍙 Important: Always load onigiri-core.js first! Other modules depend on it. The onigiri-components.js module requires onigiri-events.js.
📋 Module Dependencies
| Module | Dependencies | Description |
|---|---|---|
| onigiri-core.js | None | Required - DOM manipulation |
| onigiri-events.js | core | Event emitter system |
| onigiri-components.js | core, events | Reactive components |
| onigiri-security.js | core | CSRF & CSP protection |
| onigiri-ajax.js | core, security (optional) | AJAX with auto-CSRF |
| onigiri-storage.js | core | Local/session storage |
| onigiri.pjax.js | core, security (optional) | PJAX navigation |
| onigiri-validation.js | core | Form validation |
| onigiri-animate.js | core | Animation helpers |
| onigiri-translation.js | core, storage (optional) | Internationalization |
| onigiri-humhub.js | core, components | HumHub integration |
🌐 CDN Installation
Load OnigiriJS directly from CDN (replace @main with specific version tag in production):
<!-- Core -->
<script src="https://cdn.jsdelivr.net/gh/OnigiriJS/onigirijs@main/src/framework/core/onigiri-core.js"></script>
<!-- Events -->
<script src="https://cdn.jsdelivr.net/gh/OnigiriJS/onigirijs@main/src/framework/events/onigiri-events.js"></script>
<!-- Components -->
<script src="https://cdn.jsdelivr.net/gh/OnigiriJS/onigirijs@main/src/framework/components/onigiri-components.js"></script>
<!-- Security -->
<script src="https://cdn.jsdelivr.net/gh/OnigiriJS/onigirijs@main/src/framework/security/onigiri-security.js"></script>
<!-- AJAX -->
<script src="https://cdn.jsdelivr.net/gh/OnigiriJS/onigirijs@main/src/framework/ajax/onigiri-ajax.js"></script>
<!-- Storage -->
<script src="https://cdn.jsdelivr.net/gh/OnigiriJS/onigirijs@main/src/framework/storage/onigiri-storage.js"></script>
<!-- PJAX -->
<script src="https://cdn.jsdelivr.net/gh/OnigiriJS/onigirijs@main/src/framework/pjax/onigiri.pjax.js"></script>
<!-- Validation -->
<script src="https://cdn.jsdelivr.net/gh/OnigiriJS/onigirijs@main/src/framework/validation/onigiri-validation.js"></script>
<!-- Animation -->
<script src="https://cdn.jsdelivr.net/gh/OnigiriJS/onigirijs@main/src/framework/animate/onigiri-animate.js"></script>
<!-- Translation -->
<script src="https://cdn.jsdelivr.net/gh/OnigiriJS/onigirijs@main/src/framework/translation/onigiri-translation.js"></script>
<!-- HumHub Integration -->
<script src="https://cdn.jsdelivr.net/gh/OnigiriJS/onigirijs@main/src/framework/humhub/onigiri-humhub.js"></script>
📦 NPM Installation (Coming Soon...)
Install via npm for build tool integration:
npm install onigirijs
Then import modules as needed:
// ES6 Modules
import Onigiri from 'onigirijs/core';
import 'onigirijs/security';
import 'onigirijs/ajax';
import 'onigirijs/translation';
// CommonJS
const Onigiri = require('onigirijs/core');
require('onigirijs/security');
require('onigirijs/ajax');
require('onigirijs/translation');
🔌 HumHub Module Integration
1
Create Module Directory
modules/yourmodule/resources/js/onigiri/
Place all OnigiriJS files in this directory.
2
Register in AssetBundle
class YourModuleAsset extends AssetBundle
{
public $sourcePath = '@yourmodule/resources';
public $js = [
// Core modules
'js/onigiri/onigiri-core.js',
'js/onigiri/onigiri-events.js',
'js/onigiri/onigiri-components.js',
// Security (recommended)
'js/onigiri/onigiri-security.js',
'js/onigiri/onigiri-ajax.js',
// Additional modules as needed
'js/onigiri/onigiri-storage.js',
'js/onigiri/onigiri-validation.js',
'js/onigiri/onigiri-translation.js',
// HumHub integration
'js/onigiri/onigiri-humhub.js',
// Your application code
'js/your-app.js'
];
public $depends = [
'humhub\assets\CoreApiAsset'
];
}
3
Add CSRF Meta Tag
In your view file:
<?php
use yii\helpers\Html;
?>
<!-- CSRF Token -->
<?= Html::csrfMetaTags() ?>
4
Initialize with Security & i18n
// your-app.js
(function() {
'use strict';
// Initialize security
Onigiri.security.init({
autoInjectCSRF: true
});
// Initialize translations with HumHub locale
if (typeof humhub !== 'undefined') {
const locale = humhub.config.get('language') || 'en';
Onigiri.i18n.init({
locale: locale,
autoDetect: false
});
// Add translations
Onigiri.i18n.addTranslations(locale, {
module: {
title: 'My Module',
save: 'Save',
cancel: 'Cancel'
}
});
}
// Create HumHub module
Onigiri.humhub('yourModule', {
selector: '.your-module-container',
pjax: true, // Auto-remount on PJAX navigation
data: {
items: [],
loading: false
},
methods: {
async loadItems() {
this.loading = true;
try {
const data = await Onigiri.get(
humhub.config.get('baseUrl') + '/yourmodule/api/items'
);
this.items = data;
} catch (error) {
console.error('Failed to load items:', error);
} finally {
this.loading = false;
}
},
async saveItem(item) {
await Onigiri.post(
humhub.config.get('baseUrl') + '/yourmodule/api/items',
item
);
this.loadItems();
}
},
created() {
console.log('🍙 Module created!');
},
mounted() {
// Translate page elements
Onigiri.i18n.translatePage();
// Load data
this.loadItems();
console.log('🍙 Module mounted!');
}
});
})();
5
Use in Views
<div class="your-module-container">
<h2 data-i18n="module.title"></h2>
<button class="btn btn-primary"
data-i18n="module.save">
</button>
<button class="btn btn-default"
data-i18n="module.cancel">
</button>
</div>
✅ Verify Installation
Open your browser console and check that OnigiriJS is loaded:
// Check if OnigiriJS is loaded
console.log(typeof Onigiri !== 'undefined' ? '🍙 OnigiriJS loaded!' : '❌ Not loaded');
// Check version
console.log('Version:', Onigiri.version);
// Check loaded modules
console.log('Modules:', Object.keys(Onigiri.modules).filter(m => Onigiri.modules[m]));
// Test basic functionality
O('body').addClass('onigiri-ready');
console.log('🍙 Body class added successfully!');
🎯 Module Selection Guide
Simple Widget
Load:
- ✓ core.js
- ✓ events.js (optional)
Interactive Form
Load:
- ✓ core.js
- ✓ security.js
- ✓ ajax.js
- ✓ validation.js
Full Application
Load:
- ✓ core.js
- ✓ events.js
- ✓ components.js
- ✓ security.js
- ✓ ajax.js
- ✓ storage.js
- ✓ translation.js
Multilingual Site
Load:
- ✓ core.js
- ✓ components.js
- ✓ storage.js
- ✓ translation.js
- ✓ pjax.js (optional)
🍙 Pro Tip: Start with the minimal setup and add modules as you need them. Each module is fully independent (except dependencies noted above).
🚀 Next Steps
✅ Development Roadmap
Track the progress of OnigiriJS modules. Tasks are marked complete by the development team.
OnigiriJS Module Roadmap
Implementation progress of planned modules
6 / 21 completed (29%)
onigiri-state
Shared global & scoped state management
onigiri-directives
Declarative DOM bindings (o-show, o-model, etc.)
onigiri-resource
REST-style data models over AJAX
onigiri-observe
Intersection & Mutation observer helpers
onigiri-humhub-ui
Standard HumHub UI abstractions (modal, notify, confirm)
onigiri-lifecycle
Component lifecycle hooks
onigiri-guard
Debounce, throttle, single-run guards
onigiri-scroll
Scroll save/restore & helpers (PJAX-friendly)
onigiri-permission
Client-side permission awareness
onigiri-portal
DOM teleport / overlay mounting
onigiri-router
Micro router (non-SPA, PJAX-first)
onigiri-sanitize
HTML & input sanitization
onigiri-shortcut
Keyboard shortcut manager
onigiri-queue
Sequential async task runner
onigiri-gesture
Touch & swipe helpers
onigiri-devtools
Debugging & inspection helpers
onigiri-plugin
Plugin registration system
onigiri-time
Relative time & timezone utilities
onigiri-emojis
Emoji Picker and Manager
onigiri-tasks
Task Management
onigiri-polls
Polls creation and management
Note: Task completion is managed by the OnigiriJS development team.