123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- /*!
- * B-JUI v1.2 (http://b-jui.com)
- * Git@OSC (http://git.oschina.net/xknaan/B-JUI)
- * Copyright 2014 K'naan (xknaan@163.com).
- * Licensed under Apache (http://www.apache.org/licenses/LICENSE-2.0)
- */
- /* ========================================================================
- * B-JUI: bjui-theme.js v1.2
- * @author K'naan (xknaan@163.com)
- * http://git.oschina.net/xknaan/B-JUI/blob/master/BJUI/js/bjui-theme.js
- * ========================================================================
- * Copyright 2014 K'naan.
- * Licensed under Apache (http://www.apache.org/licenses/LICENSE-2.0)
- * ======================================================================== */
- +function ($) {
- 'use strict';
-
- // THEME GLOBAL ELEMENTS
- // ======================
-
- var $themeLink, $themeLis
-
- $(function() {
- var INIT_THEME = function() {
- $themeLink = $('#bjui-link-theme')
- $themeLis = $('#bjui-themes')
- if ($.cookie) {
- var themeName = $.cookie('bjui_theme') || 'orange'
- var $li = $themeLis.find('a.theme_'+ themeName)
-
- $li.theme({})
- }
- }
-
- INIT_THEME()
- })
-
- // THEME CLASS DEFINITION
- // ======================
- var Theme = function(element, options) {
- this.$element = $(element)
- this.options = options
- }
-
- Theme.DEFAULTS = {
- theme: 'orange'
- }
-
- Theme.prototype.init = function() {
- if (!$themeLink.length) return
- var themeHref = $themeLink.attr('href')
-
- themeHref = themeHref.substring(0, themeHref.lastIndexOf('/'))
- themeHref = themeHref.substring(0, themeHref.lastIndexOf('/'))
- themeHref += '/'+ this.options.theme +'/core.css'
- $themeLink.attr('href', themeHref)
-
- var $themeA = this.$element.closest('ul').prev()
- var classA = $themeA.attr('class')
-
- classA = classA.replace(/(theme[\s][a-z]*)/g, '')
- $themeA.removeClass().addClass(classA).addClass('theme').addClass(this.options.theme)
- $themeLis.find('li').removeClass('active')
- this.$element.parent().addClass('active')
- this.cookie()
- }
-
- Theme.prototype.setTheme = function(themeName) {
- $themeLis.find('a.theme_'+ themeName).trigger('click')
- }
-
- Theme.prototype.cookie = function() {
- var theme = this.options.theme
-
- if ($.cookie) $.cookie('bjui_theme', theme, { path: '/', expires: 30 });
- }
-
- // THEME PLUGIN DEFINITION
- // =======================
-
- function Plugin(option) {
- var args = arguments
- var property = option
-
- return this.each(function () {
- var $this = $(this)
- var options = $.extend({}, Theme.DEFAULTS, $this.data(), typeof option == 'object' && option)
- var data = $this.data('bjui.theme')
-
- if (!data) $this.data('bjui.theme', (data = new Theme(this, options)))
- if (typeof property == 'string' && $.isFunction(data[property])) {
- [].shift.apply(args)
- if (!args) data[property]()
- else data[property].apply(data, args)
- } else {
- data.init()
- }
- })
- }
-
- var old = $.fn.theme
-
- $.fn.theme = Plugin
- $.fn.theme.Constructor = Theme
-
- // THEME NO CONFLICT
- // =================
-
- $.fn.theme.noConflict = function () {
- $.fn.theme = old
- return this
- }
-
- // THEME DATA-API
- // ==============
- $(document).on('click.bjui.theme.data-api', '[data-toggle="theme"]', function(e) {
- Plugin.call($(this))
-
- e.preventDefault()
- })
- }(jQuery);
|