2020-08-04 13:45:06 +00:00
/ *
MIT License
Copyright ( c ) 2017 Wikiki
Permission is hereby granted , free of charge , to any person obtaining a copy
of this software and associated documentation files ( the "Software" ) , to deal
in the Software without restriction , including without limitation the rights
to use , copy , modify , merge , publish , distribute , sublicense , and / or sell
copies of the Software , and to permit persons to whom the Software is
furnished to do so , subject to the following conditions :
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software .
THE SOFTWARE IS PROVIDED "AS IS" , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM ,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE .
* /
2020-03-26 07:26:00 +00:00
( function webpackUniversalModuleDefinition ( root , factory ) {
if ( typeof exports === 'object' && typeof module === 'object' )
module . exports = factory ( ) ;
else if ( typeof define === 'function' && define . amd )
define ( [ ] , factory ) ;
else if ( typeof exports === 'object' )
exports [ "bulmaSteps" ] = factory ( ) ;
else
root [ "bulmaSteps" ] = factory ( ) ;
} ) ( typeof self !== 'undefined' ? self : this , function ( ) {
return /******/ ( function ( modules ) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = { } ;
/******/
/******/ // The require function
/******/ function _ _webpack _require _ _ ( moduleId ) {
/******/
/******/ // Check if module is in cache
/******/ if ( installedModules [ moduleId ] ) {
/******/ return installedModules [ moduleId ] . exports ;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules [ moduleId ] = {
/******/ i : moduleId ,
/******/ l : false ,
/******/ exports : { }
/******/ } ;
/******/
/******/ // Execute the module function
/******/ modules [ moduleId ] . call ( module . exports , module , module . exports , _ _webpack _require _ _ ) ;
/******/
/******/ // Flag the module as loaded
/******/ module . l = true ;
/******/
/******/ // Return the exports of the module
/******/ return module . exports ;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ _ _webpack _require _ _ . m = modules ;
/******/
/******/ // expose the module cache
/******/ _ _webpack _require _ _ . c = installedModules ;
/******/
/******/ // define getter function for harmony exports
/******/ _ _webpack _require _ _ . d = function ( exports , name , getter ) {
/******/ if ( ! _ _webpack _require _ _ . o ( exports , name ) ) {
/******/ Object . defineProperty ( exports , name , {
/******/ configurable : false ,
/******/ enumerable : true ,
/******/ get : getter
/******/ } ) ;
/******/ }
/******/ } ;
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ _ _webpack _require _ _ . n = function ( module ) {
/******/ var getter = module && module . _ _esModule ?
/******/ function getDefault ( ) { return module [ 'default' ] ; } :
/******/ function getModuleExports ( ) { return module ; } ;
/******/ _ _webpack _require _ _ . d ( getter , 'a' , getter ) ;
/******/ return getter ;
/******/ } ;
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ _ _webpack _require _ _ . o = function ( object , property ) { return Object . prototype . hasOwnProperty . call ( object , property ) ; } ;
/******/
/******/ // __webpack_public_path__
/******/ _ _webpack _require _ _ . p = "" ;
/******/
/******/ // Load entry module and return exports
/******/ return _ _webpack _require _ _ ( _ _webpack _require _ _ . s = 0 ) ;
/******/ } )
/************************************************************************/
/******/ ( [
/* 0 */
/***/ ( function ( module , _ _webpack _exports _ _ , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( _ _webpack _exports _ _ , "__esModule" , { value : true } ) ;
/* harmony import */ var _ _WEBPACK _IMPORTED _MODULE _0 _ _events _ _ = _ _webpack _require _ _ ( 1 ) ;
/* harmony import */ var _ _WEBPACK _IMPORTED _MODULE _1 _ _defaultOptions _ _ = _ _webpack _require _ _ ( 2 ) ;
var _extends = Object . assign || function ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = arguments [ i ] ; for ( var key in source ) { if ( Object . prototype . hasOwnProperty . call ( source , key ) ) { target [ key ] = source [ key ] ; } } } return target ; } ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var onStepsPrevious = Symbol ( 'onStepsPrevious' ) ;
var onStepsNext = Symbol ( 'onStepsNext' ) ;
var bulmaSteps = function ( _EventEmitter ) {
_inherits ( bulmaSteps , _EventEmitter ) ;
function bulmaSteps ( selector ) {
var options = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ;
_classCallCheck ( this , bulmaSteps ) ;
var _this = _possibleConstructorReturn ( this , ( bulmaSteps . _ _proto _ _ || Object . getPrototypeOf ( bulmaSteps ) ) . call ( this ) ) ;
_this . element = typeof selector === 'string' ? document . querySelector ( selector ) : selector ;
// An invalid selector or non-DOM node has been provided.
if ( ! _this . element ) {
throw new Error ( 'An invalid selector or non-DOM node has been provided.' ) ;
}
_this . _clickEvents = [ 'click' ] ;
/// Set default options and merge with instance defined
_this . options = _extends ( { } , _ _WEBPACK _IMPORTED _MODULE _1 _ _defaultOptions _ _ [ "a" /* default */ ] , options ) ;
_this [ onStepsPrevious ] = _this [ onStepsPrevious ] . bind ( _this ) ;
_this [ onStepsNext ] = _this [ onStepsNext ] . bind ( _this ) ;
_this . init ( ) ;
return _this ;
}
/ * *
* Initiate all DOM element containing carousel class
* @ method
* @ return { Array } Array of all Carousel instances
* /
_createClass ( bulmaSteps , [ {
key : 'init' ,
/ * *
* Initiate plugin
* @ method init
* @ return { void }
* /
value : function init ( ) {
this . _id = 'bulmaSteps' + new Date ( ) . getTime ( ) + Math . floor ( Math . random ( ) * Math . floor ( 9999 ) ) ;
this . steps = this . element . querySelectorAll ( this . options . selector ) ;
this . contents = this . element . querySelectorAll ( this . options . selector _content ) ;
this . previous _btn = this . element . querySelector ( this . options . previous _selector ) ;
this . next _btn = this . element . querySelector ( this . options . next _selector ) ;
[ ] . forEach . call ( this . steps , function ( step , index ) {
step . setAttribute ( 'data-step-id' , index ) ;
} ) ;
if ( this . steps && this . steps . length ) {
this . activate _step ( 0 ) ;
this . updateActions ( this . steps [ 0 ] ) ;
}
this . _bindEvents ( ) ;
this . emit ( 'bulmasteps:ready' , this . element . value ) ;
}
/ * *
* Bind all events
* @ method _bindEvents
* @ return { void }
* /
} , {
key : '_bindEvents' ,
value : function _bindEvents ( ) {
var _this2 = this ;
if ( this . previous _btn != null ) {
this . _clickEvents . forEach ( function ( event ) {
_this2 . previous _btn . addEventListener ( event , _this2 [ onStepsPrevious ] , false ) ;
} ) ;
}
if ( this . next _btn != null ) {
this . _clickEvents . forEach ( function ( event ) {
_this2 . next _btn . addEventListener ( event , _this2 [ onStepsNext ] , false ) ;
} ) ;
}
if ( this . options . stepClickable ) {
[ ] . forEach . call ( this . steps , function ( step , index ) {
_this2 . _clickEvents . forEach ( function ( event ) {
while ( index > _this2 . current _id ) {
_this2 [ onStepsNext ] ( event ) ;
}
while ( index < _this2 . current _id ) {
_this2 [ onStepsPrevious ] ( event ) ;
}
} ) ;
} ) ;
}
}
} , {
key : onStepsPrevious ,
value : function value ( e ) {
e . preventDefault ( ) ;
if ( ! e . target . getAttribute ( 'disabled' ) ) {
this . previous _step ( ) ;
}
}
} , {
key : onStepsNext ,
value : function value ( e ) {
e . preventDefault ( ) ;
if ( ! e . target . getAttribute ( 'disabled' ) ) {
this . next _step ( ) ;
}
}
} , {
key : 'get_current_step_id' ,
value : function get _current _step _id ( ) {
for ( var i = 0 ; i < this . steps . length ; i ++ ) {
var step = this . steps [ i ] ;
if ( step . classList . contains ( this . options . active _class ) ) {
return parseInt ( step . getAttribute ( 'data-step-id' ) ) ;
}
}
return null ;
}
} , {
key : 'updateActions' ,
value : function updateActions ( step ) {
var stepId = parseInt ( step . getAttribute ( 'data-step-id' ) ) ;
if ( stepId == 0 ) {
if ( this . previous _btn != null ) {
this . previous _btn . setAttribute ( 'disabled' , 'disabled' ) ;
}
if ( this . next _btn != null ) {
this . next _btn . removeAttribute ( 'disabled' , 'disabled' ) ;
}
} else if ( stepId == this . steps . length - 1 ) {
if ( this . previous _btn != null ) {
this . previous _btn . removeAttribute ( 'disabled' , 'disabled' ) ;
}
if ( this . next _btn != null ) {
this . next _btn . setAttribute ( 'disabled' , 'disabled' ) ;
}
} else {
if ( this . previous _btn != null ) {
this . previous _btn . removeAttribute ( 'disabled' , 'disabled' ) ;
}
if ( this . next _btn != null ) {
this . next _btn . removeAttribute ( 'disabled' , 'disabled' ) ;
}
}
}
} , {
key : 'next_step' ,
value : function next _step ( ) {
var current _id = this . get _current _step _id ( ) ;
if ( current _id == null ) {
return ;
}
var next _id = current _id + 1 ,
errors = [ ] ;
if ( typeof this . options . beforeNext != 'undefined' && this . options . beforeNext != null && this . options . beforeNext ) {
errors = this . options . beforeNext ( current _id ) ;
}
this . emit ( 'bulmasteps:before:next' , current _id ) ;
if ( typeof errors == 'undefined' ) {
errors = [ ] ;
}
if ( errors . length > 0 ) {
this . emit ( 'bulmasteps:errors' , errors ) ;
for ( var i = 0 ; i < errors . length ; i ++ ) {
if ( typeof this . options . onError != 'undefined' && this . options . onError != null && this . options . onError ) {
this . options . onError ( errors [ i ] ) ;
}
}
return ;
}
if ( next _id >= this . steps . length ) {
if ( typeof this . options . onFinish != 'undefined' && this . options . onFinish != null && this . options . onFinish ) {
this . options . onFinish ( current _id ) ;
}
this . emit ( 'bulmasteps:finish' , current _id ) ;
this . deactivate _step ( current _id ) ;
} else {
this . complete _step ( current _id ) ;
this . activate _step ( next _id ) ;
}
}
} , {
key : 'previous_step' ,
value : function previous _step ( ) {
var current _id = this . get _current _step _id ( ) ;
if ( current _id == null ) {
return ;
}
this . uncomplete _step ( current _id - 1 ) ;
this . activate _step ( current _id - 1 ) ;
}
/ * *
* Activate a single step ,
* will deactivate all other steps .
* /
} , {
key : 'activate_step' ,
value : function activate _step ( step _id ) {
this . updateActions ( this . steps [ step _id ] ) ;
for ( var i = 0 ; i < this . steps . length ; i ++ ) {
var _step = this . steps [ i ] ;
if ( _step == this . steps [ step _id ] ) {
continue ;
}
this . deactivate _step ( i ) ;
}
this . steps [ step _id ] . classList . add ( this . options . active _class ) ;
if ( typeof this . contents [ step _id ] !== 'undefined' ) {
this . contents [ step _id ] . classList . add ( this . options . active _class ) ;
}
if ( typeof this . options . onShow != 'undefined' && this . options . onShow != null && this . options . onShow ) {
this . options . onShow ( step _id ) ;
}
this . emit ( 'bulmasteps:step:show' , step _id ) ;
}
} , {
key : 'complete_step' ,
value : function complete _step ( step _id ) {
this . steps [ step _id ] . classList . add ( this . options . completed _class ) ;
this . emit ( 'bulmasteps:step:completed' , step _id ) ;
}
} , {
key : 'uncomplete_step' ,
value : function uncomplete _step ( step _id ) {
this . steps [ step _id ] . classList . remove ( this . options . completed _class ) ;
this . emit ( 'bulmasteps:step:uncompleted' , step _id ) ;
}
} , {
key : 'deactivate_step' ,
value : function deactivate _step ( step _id ) {
this . steps [ step _id ] . classList . remove ( this . options . active _class ) ;
if ( typeof this . contents [ step _id ] !== 'undefined' ) {
this . contents [ step _id ] . classList . remove ( this . options . active _class ) ;
}
}
} ] , [ {
key : 'attach' ,
value : function attach ( ) {
var selector = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : '.steps' ;
var options = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ;
var instances = new Array ( ) ;
var elements = document . querySelectorAll ( selector ) ;
[ ] . forEach . call ( elements , function ( element ) {
setTimeout ( function ( ) {
instances . push ( new bulmaSteps ( element , options ) ) ;
} , 100 ) ;
} ) ;
return instances ;
}
} ] ) ;
return bulmaSteps ;
} ( _ _WEBPACK _IMPORTED _MODULE _0 _ _events _ _ [ "a" /* default */ ] ) ;
/* harmony default export */ _ _webpack _exports _ _ [ "default" ] = ( bulmaSteps ) ;
/***/ } ) ,
/* 1 */
/***/ ( function ( module , _ _webpack _exports _ _ , _ _webpack _require _ _ ) {
"use strict" ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
var EventEmitter = function ( ) {
function EventEmitter ( ) {
var listeners = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : [ ] ;
_classCallCheck ( this , EventEmitter ) ;
this . _listeners = new Map ( listeners ) ;
this . _middlewares = new Map ( ) ;
}
_createClass ( EventEmitter , [ {
key : "listenerCount" ,
value : function listenerCount ( eventName ) {
if ( ! this . _listeners . has ( eventName ) ) {
return 0 ;
}
var eventListeners = this . _listeners . get ( eventName ) ;
return eventListeners . length ;
}
} , {
key : "removeListeners" ,
value : function removeListeners ( ) {
var _this = this ;
var eventName = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : null ;
var middleware = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : false ;
if ( eventName !== null ) {
if ( Array . isArray ( eventName ) ) {
name . forEach ( function ( e ) {
return _this . removeListeners ( e , middleware ) ;
} ) ;
} else {
this . _listeners . delete ( eventName ) ;
if ( middleware ) {
this . removeMiddleware ( eventName ) ;
}
}
} else {
this . _listeners = new Map ( ) ;
}
}
} , {
key : "middleware" ,
value : function middleware ( eventName , fn ) {
var _this2 = this ;
if ( Array . isArray ( eventName ) ) {
name . forEach ( function ( e ) {
return _this2 . middleware ( e , fn ) ;
} ) ;
} else {
if ( ! Array . isArray ( this . _middlewares . get ( eventName ) ) ) {
this . _middlewares . set ( eventName , [ ] ) ;
}
this . _middlewares . get ( eventName ) . push ( fn ) ;
}
}
} , {
key : "removeMiddleware" ,
value : function removeMiddleware ( ) {
var _this3 = this ;
var eventName = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : null ;
if ( eventName !== null ) {
if ( Array . isArray ( eventName ) ) {
name . forEach ( function ( e ) {
return _this3 . removeMiddleware ( e ) ;
} ) ;
} else {
this . _middlewares . delete ( eventName ) ;
}
} else {
this . _middlewares = new Map ( ) ;
}
}
} , {
key : "on" ,
value : function on ( name , callback ) {
var _this4 = this ;
var once = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : false ;
if ( Array . isArray ( name ) ) {
name . forEach ( function ( e ) {
return _this4 . on ( e , callback ) ;
} ) ;
} else {
name = name . toString ( ) ;
var split = name . split ( /,|, | / ) ;
if ( split . length > 1 ) {
split . forEach ( function ( e ) {
return _this4 . on ( e , callback ) ;
} ) ;
} else {
if ( ! Array . isArray ( this . _listeners . get ( name ) ) ) {
this . _listeners . set ( name , [ ] ) ;
}
this . _listeners . get ( name ) . push ( { once : once , callback : callback } ) ;
}
}
}
} , {
key : "once" ,
value : function once ( name , callback ) {
this . on ( name , callback , true ) ;
}
} , {
key : "emit" ,
value : function emit ( name , data ) {
var _this5 = this ;
var silent = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : false ;
name = name . toString ( ) ;
var listeners = this . _listeners . get ( name ) ;
var middlewares = null ;
var doneCount = 0 ;
var execute = silent ;
if ( Array . isArray ( listeners ) ) {
listeners . forEach ( function ( listener , index ) {
// Start Middleware checks unless we're doing a silent emit
if ( ! silent ) {
middlewares = _this5 . _middlewares . get ( name ) ;
// Check and execute Middleware
if ( Array . isArray ( middlewares ) ) {
middlewares . forEach ( function ( middleware ) {
middleware ( data , function ( ) {
var newData = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : null ;
if ( newData !== null ) {
data = newData ;
}
doneCount ++ ;
} , name ) ;
} ) ;
if ( doneCount >= middlewares . length ) {
execute = true ;
}
} else {
execute = true ;
}
}
// If Middleware checks have been passed, execute
if ( execute ) {
if ( listener . once ) {
listeners [ index ] = null ;
}
listener . callback ( data ) ;
}
} ) ;
// Dirty way of removing used Events
while ( listeners . indexOf ( null ) !== - 1 ) {
listeners . splice ( listeners . indexOf ( null ) , 1 ) ;
}
}
}
} ] ) ;
return EventEmitter ;
} ( ) ;
/* harmony default export */ _ _webpack _exports _ _ [ "a" ] = ( EventEmitter ) ;
/***/ } ) ,
/* 2 */
/***/ ( function ( module , _ _webpack _exports _ _ , _ _webpack _require _ _ ) {
"use strict" ;
var defaultOptions = {
'selector' : '.step-item' ,
'selector_content' : '.step-content' ,
'previous_selector' : '[data-nav="previous"]' ,
'next_selector' : '[data-nav="next"]' ,
'active_class' : 'is-active' ,
'completed_class' : 'is-completed' ,
'stepClickable' : false ,
'beforeNext' : null ,
'onShow' : null ,
'onFinish' : null ,
'onError' : null
} ;
/* harmony default export */ _ _webpack _exports _ _ [ "a" ] = ( defaultOptions ) ;
/***/ } )
/******/ ] ) [ "default" ] ;
} ) ;
bulmaSteps . attach ( ) ;