/basicContext

Easy-to-use context-menu for your website or webapp

Primary LanguageHTMLMIT LicenseMIT

basicContext

Easy-to-use context-menu for your website or web-app.

Contents

Demos

Name Description Link
Basic demo basicContext works with all kind of events Try it on CodePen
Position demo basicContext never leaves the visible screen-area Try it on CodePen
Scroll demo basicContext is scrollable when the context height is bigger than the browser height Try it on CodePen
Custom close function demo basicContext lets you define a custom close function Try it on CodePen
Custom position demo basicContext accepts an object with custom coordinates Try it on CodePen
jQuery demo Use basicContext with the jQuery Event Object Demo

Features

  • Works in all modern browsers
  • Written in Vanilla JS
  • CommonJS and AMD support
  • Layout and theme are separated CSS-files. This makes it easy to style our own context.
  • Stays within the viewport and never opens outside the visible screen-area (Demo)
  • Scrollable, when the height of the context-menu is bigger than the height of the browser (Demo)

Requirements

basicContext is written in Vanilla JS and only dependents on the following browser APIs:

All of these APIs are capable of being polyfilled in older browser. Check the linked resources above to determine if you must polyfill to achieve your desired level of browser support.

Setup

We recommend to install basicContext using Bower or npm.

bower install basicContext
npm install basiccontext

Include the CSS-files in the head and the JS-file at the end of your body:

<link rel="stylesheet" href="dist/basicContext.min.css">
<link rel="stylesheet" href="dist/themes/default.min.css">
<script src="dist/basicContext.min.js"></script>

Skip the JS-file if you want to use basicContext as module together with Browserify:

let basicContext = require('basiccontext')

How to use

Vanilla JS

Show a context-menu by using the following command:

document.querySelector('.btn').addEventListener('click', function(e) {

	let items = [
		{ title: 'Add Sites', icon: 'ion-plus-round', fn: clicked },
		{ title: 'Reset Login', icon: 'ion-person', fn: clicked },
		{ title: 'Help', icon: 'ion-help-buoy', fn: clicked },
		{ title: 'Disabled', icon: 'ion-minus-circled', fn: clicked, disabled: true },
		{ title: 'Invisible', icon: 'ion-eye-disabled', fn: clicked, visible: false },
		{ },
		{ title: 'Logout', icon: 'ion-log-out', fn: clicked }
	]

	basicContext.show(items, e)

})

jQuery

basicContext doesn't work properly with the normalized jQuery Event Object, but you can easily bypass this issue using e.originalEvent:

$('.btn').on('click', function(e) {

	let items = [
		{ title: 'Add Sites', icon: 'ion-plus-round', fn: clicked },
		{ title: 'Reset Login', icon: 'ion-person', fn: clicked },
		{ title: 'Help', icon: 'ion-help-buoy', fn: clicked },
		{ title: 'Disabled', icon: 'ion-minus-circled', fn: clicked, disabled: true },
		{ title: 'Invisible', icon: 'ion-eye-disabled', fn: clicked, visible: false },
		{ },
		{ title: 'Logout', icon: 'ion-log-out', fn: clicked }
	]

	basicContext.show(items, e.originalEvent)

})

Themes

Layout and theme are separated CSS-files. This makes it easy to style your own context or to choose from the included themes.

Name Preview CSS-File Demo
Default theme CSS-File Demo
Bright theme CSS-File Demo
Dark theme CSS-File Demo

Addons

Include the following CSS-files to enhance the look and functionality of your contexts.

Name Preview CSS-File Demo
PopIn effect CSS-File Demo
FadeIn effect CSS-File Demo