.
This commit is contained in:
104
root/res/zui/lib/board/zui.board.css
Normal file
104
root/res/zui/lib/board/zui.board.css
Normal file
@@ -0,0 +1,104 @@
|
||||
/*!
|
||||
* ZUI: 看板 - v1.8.1 - 2018-01-18
|
||||
* http://zui.sexy
|
||||
* GitHub: https://github.com/easysoft/zui.git
|
||||
* Copyright (c) 2018 cnezsoft.com; Licensed MIT
|
||||
*/
|
||||
|
||||
.board-item {
|
||||
padding: 6px 10px;
|
||||
margin-bottom: 5px;
|
||||
background: #fff;
|
||||
border: 1px solid #ddd;
|
||||
-webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, .05);
|
||||
box-shadow: 0 1px 0 rgba(0, 0, 0, .05);
|
||||
-webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
|
||||
-o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
|
||||
transition: all .4s cubic-bezier(.175, .885, .32, 1);
|
||||
}
|
||||
.board-item:hover {
|
||||
-webkit-box-shadow: 0 1px 1 rgba(0, 0, 0, .1);
|
||||
box-shadow: 0 1px 1 rgba(0, 0, 0, .1);
|
||||
}
|
||||
.board-item.board-item-empty {
|
||||
display: none;
|
||||
color: #808080;
|
||||
border-style: dashed;
|
||||
}
|
||||
.board-item.board-item-shadow {
|
||||
display: none;
|
||||
padding: 0;
|
||||
background: #ddd;
|
||||
border: none;
|
||||
border-color: #ddd;
|
||||
-webkit-box-shadow: inset 0 0 4px rgba(0, 0, 0, .1);
|
||||
box-shadow: inset 0 0 4px rgba(0, 0, 0, .1);
|
||||
-webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1);
|
||||
-o-transition: all .4s cubic-bezier(.175, .885, .32, 1);
|
||||
transition: all .4s cubic-bezier(.175, .885, .32, 1);
|
||||
}
|
||||
.board-item.drag-shadow {
|
||||
width: 250px;
|
||||
cursor: move;
|
||||
background-color: #fff;
|
||||
border-color: #c4c4c4;
|
||||
-webkit-box-shadow: 1px 1px 15px rgba(0, 0, 0, .25);
|
||||
box-shadow: 1px 1px 15px rgba(0, 0, 0, .25);
|
||||
opacity: .9;
|
||||
}
|
||||
.board-item.drag-from {
|
||||
background-color: #ebf2f9;
|
||||
}
|
||||
.board-list .board-item:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.board {
|
||||
float: left;
|
||||
width: 250px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.board.drop-in-empty .board-item-empty {
|
||||
height: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
border: transparent;
|
||||
}
|
||||
.board:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
.board > .panel-body {
|
||||
padding: 5px;
|
||||
background: #f1f1f1;
|
||||
}
|
||||
.boards:before,
|
||||
.boards:after {
|
||||
/* 1 */
|
||||
display: table;
|
||||
content: " ";
|
||||
/* 2 */
|
||||
}
|
||||
.boards:after {
|
||||
clear: both;
|
||||
}
|
||||
.boards.dragging .board.drop-in {
|
||||
border-color: #c4c4c4;
|
||||
-webkit-box-shadow: 1px 1px 15px rgba(0, 0, 0, .25);
|
||||
box-shadow: 1px 1px 15px rgba(0, 0, 0, .25);
|
||||
}
|
||||
.boards.dragging .board.drop-in .board-item-shadow {
|
||||
display: block;
|
||||
}
|
||||
.boards.dragging .board .board-item.board-item-empty {
|
||||
display: block;
|
||||
}
|
||||
.boards.dragging .board-item.disable-drop {
|
||||
display: none;
|
||||
}
|
||||
.boards.drop-in .board-item.drag-from {
|
||||
height: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
border: transparent;
|
||||
}
|
128
root/res/zui/lib/board/zui.board.js
Normal file
128
root/res/zui/lib/board/zui.board.js
Normal file
@@ -0,0 +1,128 @@
|
||||
/*!
|
||||
* ZUI: 看板 - v1.8.1 - 2018-01-18
|
||||
* http://zui.sexy
|
||||
* GitHub: https://github.com/easysoft/zui.git
|
||||
* Copyright (c) 2018 cnezsoft.com; Licensed MIT
|
||||
*/
|
||||
|
||||
/* ========================================================================
|
||||
* ZUI: boards.js
|
||||
* http://zui.sexy
|
||||
* ========================================================================
|
||||
* Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT
|
||||
* ======================================================================== */
|
||||
|
||||
|
||||
(function($) {
|
||||
'use strict';
|
||||
|
||||
if(!$.fn.droppable) throw new Error('Droppable requires for boards');
|
||||
|
||||
var Boards = function(element, options) {
|
||||
this.$ = $(element);
|
||||
this.options = this.getOptions(options);
|
||||
|
||||
this.getLang();
|
||||
this.init();
|
||||
};
|
||||
|
||||
Boards.DEFAULTS = {
|
||||
// lang: null,
|
||||
langs: {
|
||||
'zh_cn': {
|
||||
append2end: '移动到末尾'
|
||||
},
|
||||
'zh_tw': {
|
||||
append2end: '移动到末尾'
|
||||
},
|
||||
'en': {
|
||||
append2end: 'Move to the end.'
|
||||
}
|
||||
}
|
||||
}; // default options
|
||||
|
||||
Boards.prototype.getOptions = function(options) {
|
||||
options = $.extend({lang: $.zui.clientLang()}, Boards.DEFAULTS, this.$.data(), options);
|
||||
return options;
|
||||
};
|
||||
|
||||
Boards.prototype.getLang = function() {
|
||||
var options = this.options;
|
||||
this.lang = options.langs[options.lang] || options.langs[Boards.DEFAULTS.lang];
|
||||
};
|
||||
|
||||
Boards.prototype.init = function() {
|
||||
var idSeed = 1;
|
||||
var lang = this.lang;
|
||||
this.$.find('.board-item:not(".disable-drop"), .board:not(".disable-drop")').each(function() {
|
||||
var $this = $(this);
|
||||
if($this.attr('id')) {
|
||||
$this.attr('data-id', $this.attr('id'));
|
||||
} else if(!$this.attr('data-id')) {
|
||||
$this.attr('data-id', 'board' + (idSeed++));
|
||||
}
|
||||
|
||||
if($this.hasClass('board')) {
|
||||
$this.find('.board-list').append('<div class="board-item board-item-empty"><i class="icon-plus"></i> {append2end}</div>'.format(lang))
|
||||
.append('<div class="board-item board-item-shadow"></div>'.format(lang));
|
||||
}
|
||||
});
|
||||
|
||||
this.bind();
|
||||
};
|
||||
|
||||
Boards.prototype.bind = function(items) {
|
||||
var $boards = this.$,
|
||||
setting = this.options;
|
||||
|
||||
$boards.droppable($.extend({
|
||||
before: setting.before,
|
||||
target: '.board-item:not(".disable-drop, .board-item-shadow")',
|
||||
flex: true,
|
||||
selector: '.board-item:not(".disable-drop, .board-item-shadow")',
|
||||
start: function(e) {
|
||||
$boards.addClass('dragging').find('.board-item-shadow').height(e.element.outerHeight());
|
||||
},
|
||||
drag: function(e) {
|
||||
$boards.find('.board.drop-in-empty').removeClass('drop-in-empty');
|
||||
if(e.isIn) {
|
||||
var board = e.target.closest('.board').addClass('drop-in');
|
||||
var shadow = board.find('.board-item-shadow');
|
||||
var target = e.target;
|
||||
|
||||
$boards.addClass('drop-in').find('.board.drop-in').not(board).removeClass('drop-in');
|
||||
|
||||
shadow.insertBefore(target);
|
||||
|
||||
board.toggleClass('drop-in-empty', target.hasClass('board-item-empty'));
|
||||
}
|
||||
},
|
||||
drop: function(e) {
|
||||
if(e.isNew) {
|
||||
var result;
|
||||
if($.isFunction(setting['drop'])) {
|
||||
result = setting['drop'](e);
|
||||
}
|
||||
if(result !== false) e.element.insertBefore(e.target);
|
||||
}
|
||||
},
|
||||
finish: function() {
|
||||
$boards.removeClass('dragging').removeClass('drop-in').find('.board.drop-in').removeClass('drop-in');
|
||||
}
|
||||
}, setting.droppable));
|
||||
};
|
||||
|
||||
$.fn.boards = function(option) {
|
||||
return this.each(function() {
|
||||
var $this = $(this);
|
||||
var data = $this.data('zui.boards');
|
||||
var options = typeof option == 'object' && option;
|
||||
|
||||
if(!data) $this.data('zui.boards', (data = new Boards(this, options)));
|
||||
|
||||
if(typeof option == 'string') data[option]();
|
||||
});
|
||||
};
|
||||
|
||||
$.fn.boards.Constructor = Boards;
|
||||
}(jQuery));
|
6
root/res/zui/lib/board/zui.board.min.css
vendored
Normal file
6
root/res/zui/lib/board/zui.board.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* ZUI: 看板 - v1.8.1 - 2018-01-18
|
||||
* http://zui.sexy
|
||||
* GitHub: https://github.com/easysoft/zui.git
|
||||
* Copyright (c) 2018 cnezsoft.com; Licensed MIT
|
||||
*/.board-item{padding:6px 10px;margin-bottom:5px;background:#fff;border:1px solid #ddd;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.05);box-shadow:0 1px 0 rgba(0,0,0,.05);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.board-item:hover{-webkit-box-shadow:0 1px 1 rgba(0,0,0,.1);box-shadow:0 1px 1 rgba(0,0,0,.1)}.board-item.board-item-empty{display:none;color:grey;border-style:dashed}.board-item.board-item-shadow{display:none;padding:0;background:#ddd;border:none;border-color:#ddd;-webkit-box-shadow:inset 0 0 4px rgba(0,0,0,.1);box-shadow:inset 0 0 4px rgba(0,0,0,.1);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.board-item.drag-shadow{width:250px;cursor:move;background-color:#fff;border-color:#c4c4c4;-webkit-box-shadow:1px 1px 15px rgba(0,0,0,.25);box-shadow:1px 1px 15px rgba(0,0,0,.25);opacity:.9}.board-item.drag-from{background-color:#ebf2f9}.board-list .board-item:last-child{margin-bottom:0}.board{float:left;width:250px;margin-right:10px}.board.drop-in-empty .board-item-empty{height:0;padding:0;margin:0;overflow:hidden;border:transparent}.board:last-child{margin-right:0}.board>.panel-body{padding:5px;background:#f1f1f1}.boards:after,.boards:before{display:table;content:" "}.boards:after{clear:both}.boards.dragging .board.drop-in{border-color:#c4c4c4;-webkit-box-shadow:1px 1px 15px rgba(0,0,0,.25);box-shadow:1px 1px 15px rgba(0,0,0,.25)}.boards.dragging .board.drop-in .board-item-shadow{display:block}.boards.dragging .board .board-item.board-item-empty{display:block}.boards.dragging .board-item.disable-drop{display:none}.boards.drop-in .board-item.drag-from{height:0;padding:0;margin:0;overflow:hidden;border:transparent}
|
7
root/res/zui/lib/board/zui.board.min.js
vendored
Normal file
7
root/res/zui/lib/board/zui.board.min.js
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
* ZUI: 看板 - v1.8.1 - 2018-01-18
|
||||
* http://zui.sexy
|
||||
* GitHub: https://github.com/easysoft/zui.git
|
||||
* Copyright (c) 2018 cnezsoft.com; Licensed MIT
|
||||
*/
|
||||
!function(t){"use strict";if(!t.fn.droppable)throw new Error("Droppable requires for boards");var o=function(o,a){this.$=t(o),this.options=this.getOptions(a),this.getLang(),this.init()};o.DEFAULTS={langs:{zh_cn:{append2end:"移动到末尾"},zh_tw:{append2end:"移动到末尾"},en:{append2end:"Move to the end."}}},o.prototype.getOptions=function(a){return a=t.extend({lang:t.zui.clientLang()},o.DEFAULTS,this.$.data(),a)},o.prototype.getLang=function(){var t=this.options;this.lang=t.langs[t.lang]||t.langs[o.DEFAULTS.lang]},o.prototype.init=function(){var o=1,a=this.lang;this.$.find('.board-item:not(".disable-drop"), .board:not(".disable-drop")').each(function(){var i=t(this);i.attr("id")?i.attr("data-id",i.attr("id")):i.attr("data-id")||i.attr("data-id","board"+o++),i.hasClass("board")&&i.find(".board-list").append('<div class="board-item board-item-empty"><i class="icon-plus"></i> {append2end}</div>'.format(a)).append('<div class="board-item board-item-shadow"></div>'.format(a))}),this.bind()},o.prototype.bind=function(o){var a=this.$,i=this.options;a.droppable(t.extend({before:i.before,target:'.board-item:not(".disable-drop, .board-item-shadow")',flex:!0,selector:'.board-item:not(".disable-drop, .board-item-shadow")',start:function(t){a.addClass("dragging").find(".board-item-shadow").height(t.element.outerHeight())},drag:function(t){if(a.find(".board.drop-in-empty").removeClass("drop-in-empty"),t.isIn){var o=t.target.closest(".board").addClass("drop-in"),i=o.find(".board-item-shadow"),e=t.target;a.addClass("drop-in").find(".board.drop-in").not(o).removeClass("drop-in"),i.insertBefore(e),o.toggleClass("drop-in-empty",e.hasClass("board-item-empty"))}},drop:function(o){if(o.isNew){var a;t.isFunction(i.drop)&&(a=i.drop(o)),a!==!1&&o.element.insertBefore(o.target)}},finish:function(){a.removeClass("dragging").removeClass("drop-in").find(".board.drop-in").removeClass("drop-in")}},i.droppable))},t.fn.boards=function(a){return this.each(function(){var i=t(this),e=i.data("zui.boards"),n="object"==typeof a&&a;e||i.data("zui.boards",e=new o(this,n)),"string"==typeof a&&e[a]()})},t.fn.boards.Constructor=o}(jQuery);
|
Reference in New Issue
Block a user