blueways-cash v1.1.1
Cash plugins
This repository contains JavaScript modules and helper based on cash (jQuery alternative).
Development
Source files are written in SASS and TypeScript. The build is done with gulp
Build
$ gulp build
Preview server
All modules can be tested inside a the preview files /src/index.html
and src/js/index.js
. There is a webpack server configured for easy development and preview. To start the server, run npm start
.
Plugins
- Media Query
- Interchange
- Menu Aim
- Mobile navigation
- Validator
- Desktop navigation
- Lightbox
- Wizardbox
Media Query
Inspired by Foundation Media Queries component.
Requirements: custom.underscore.js
The plugin is initialized automatically.
Triggered Events
Event name | Parameter | Description |
---|---|---|
changed.bw.mediaquery | newSize, oldSize | Triggerd on window resize |
Examples
// listening to breakpoint changes:
$(document).on('changed.bw.mediaquery', function(oldSize, newSize){
console.log('Breakpoint changed from ' + oldSize + ' to ' + newSize);
});
// get current breakpoint
Bw.MediaQuery.current; // e.g. returns 'small'
// check if breakpoint size is fulfilled
Bw.MediaQuery.atLeast('large'); // e.g. returns false
// check for current breakpoint name
Bw.MediaQuery.is('small'); // e.g. returns true
// override default settings
const options = {
breakpoints: ['small', 'medium', 'large', 'xlarge', 'xxlarge'],
breakpointWidths: [0, 640, 1024, 1200, 1440],
};
Bw.MediaQuery = new MediaQuery(options);
Interchange
Inspired by Foundation Interchange plugin.
Requirements: cash.media-query.js
Init plugin with:
$.Interchange(options);
Options may contain:
const options = {
selector: '[data-interchange]' // Selector for elements to observe
};
Menu Aim
Cash implementation of jQuery-menu-aim.
Mobile navigation
Example pages: Studentenwerk Halle, SHK Dresden
Required: cash.media-query.js
Init plugin with:
$.MobileNav(options);
Options may contain:
const options = {
showFor: ['small'],
selectorHeader: 'header.topbar2',
selectorMenuButton: '.menu-button',
selectorMenuLinks: '.menu.level1 li a',
isOpenClass: 'is-open'
};
Validator
Validate form inputs and prevent form submission. Example Markup:
HTML
<form data-validate="true">
<!-- Text input -->
<label for="text-input">Text</label>
<input required id="text-input" type="text" name="text" value="" />
<!-- Email input -->
<label for="email-input">Email</label>
<input required id="email-input" type="email" name="email" value="" />
<!-- Select input -->
<label for="select-input">Selection</label>
<select data-validator="option_selected" name="select" id="select-input" required>
<option>Please choose</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<!-- Checkbox input -->
<label for="checkbox-input">Checkbox</label>
<input type="checkbox" data-validator="is_checked" id="checkbox-input" />
<button type="submit">Submit</button>
</form>
JavaScript
$.myFormValidator = $.Validator({
selector: {
submitButton: 'form[data-validate="true"] button[type="submit"]'
}
});
// manually check the form for validation errors
$.myFormValidator.isValidForm(); // return true or false
Desktop navigation
Lightbox
Simple image and content lightbox.
Requirements: cash.lightbox.css
Initialization:
HTML
<a href="large-image1.jpg" class="lightbox" rel="gallery1">image1.jpg</a>
<a href="large-image2.jpg" class="lightbox" rel="gallery1">image2.jpg</a>
JavaScript
$.box = $.Lightbox(options);
// display html content
$.box.displayContent('<h1>Hello world!</h1>');
Default options
const options = {
selector: 'a.lightbox',
groupSelector: 'rel',
lightboxSelector: '.bw-lightbox',
markup: '...'
};
Wizardbox
Lightbox that can display HTML content and navigate between different steps.
Requirements: cash.wizardbox.css
Initialization
const myWizard = $.Wizardbox({
steps: [
{
id: 0,
content: '<h1>Hello World!</h1>',
title: 'First'
},
{
id: 1,
content: '<h1>Hello from Step 2</h1>',
title: 'Second'
},
{
id: 'success',
content: 'Success!',
size: 'small'
}
],
isCloseable: false,
showNavigator: false,
size: 'large'
});
Options
Parameter | Type | Default | Description |
---|---|---|---|
steps | Array | - | Array of step objects |
isCloseable | Boolean | true | Display close button and enable closing of wizard |
showNavigator | Boolean | true | Display navigation |
dynamicHeight | Boolean | false | Change the height between slide changes |
fadeIn | Boolean | true | Adds a fading animation to the show up |
size | String | medium | Default size of the lightbox |
icons | object | { check: '..' } | Custom icons can be added here |
Step object
Key | Type | Required | Description |
---|---|---|---|
content | String/Object | yes | HTML markup of step content |
id | String / Integer | yes | Unique identifier |
size | String | no | Size of the step overrides default lightbox setting |
title | String | no | Title for navigator |
icon | String | no | Id of the icon, defaults to the number of offset |
Navigation
You can link between slides via data attributes:
<a href="#" data-to-step="2">Animate to step with key 2</a>
<a href="#" data-to-step="success" data-animate="false">Show success slide without animation</a>
<a href="#" data-close>Close Wizard</a>
Events
Event name | Description | Parameter |
---|---|---|
bw.wizardbox.beforeInit | Fired before anything is done | - |
bw.wizardbox.beforeCacheDom | Fired after markup was insert | - |
bw.wizardbox.beforeSetup | Fired after DOM was cached | - |
bw.wizardbox.beforeBindEvent | Fired after settings have been set | - |
bw.wizardbox.afterInit | Fired at end of initialization | - |
bw.wizardbox.closed | Fired when wizard gets closed | - |
bw.wizardbox.beforeChangeStep | Fired before changing to a new step | stepName, animate, markSuccess |
bw.wizardbox.afterChangeStep | Fired after changed to a new step | stepName, animate, markSuccess |
Methods
Public functions callable
open
Opens the wizard lightbox
$.myWizard.open(0);
Parameter | Type | Default | Description |
---|---|---|---|
stepName | String or Integer | - | Name of the step the wizard should start wit |
close
Close the window
$.myWizard.close();
toStep
Navigate to the given slide
$.myWizard.toStep('success', false, false);
Parameter | Type | Default | Description |
---|---|---|---|
stepId | String or Integer | - | Name of a step |
animate | Boolean | true | Slide change can be animated (500ms) |
markSuccess | Boolean | true | Mark current navigation item as successful |
addStep
Add a new slide to the wizard
$.myWizard.addStep({id: 'new', content: 'New content', title: 'New step', size: 'medium', 'icon': 'custom'}, 3);
Parameter | Type | Default | Description |
---|---|---|---|
step | Object | - | Step object |
position | int | - | Position of the new step (default at end) |
makeClosable
Displays the close button and activates the "ESC" key + click outside of the wizard to close the window.
$.myWizard.makeClosable();
stopClosable
Removes the possibility of closing the wizard
$.myWizard.stopClosable();
startLoader
Starts loading animation
$.myWizard.startLoader(false);
Parameter | Type | Default | Description |
---|---|---|---|
scrollToTop | Boolean | true | Jumps to the top of the lightbox |
stopLoader
Stops loading animation
$.myWizard.stopLoader(false);
Parameter | Type | Default | Description |
---|---|---|---|
animate | Boolean | true | Adds some delay to wait for step animation |
showNavigator
Shows the step navigator
$.myWizard.showNavigator();
hideNavigator
Hides the step navigator
$.myWizard.hideNavigator();
setWidth
Adjust the width of the Lightbox
$.myWizard.setWidth('medium');
Parameter | Type | Default | Description |
---|---|---|---|
size | String | - | Change the size of the lightbox (small, medium or large) |