Show More
Commit Description:
remove unnecessary gems
Commit Description:
remove unnecessary gems
References:
File last commit:
Show/Diff file:
Action:
vendor/javascript/datatables/Editor-2.0.9/js/editor.semanticui.js
| 286 lines
| 5.9 KiB
| application/javascript
| JavascriptLexer
|
r866 | ||||
/*! Semantic UI integration for DataTables' Editor | ||||
* ©2018 SpryMedia Ltd - datatables.net/license | ||||
*/ | ||||
(function( factory ){ | ||||
if ( typeof define === 'function' && define.amd ) { | ||||
// AMD | ||||
define( ['jquery', 'datatables.net-se', 'datatables.net-editor'], function ( $ ) { | ||||
return factory( $, window, document ); | ||||
} ); | ||||
} | ||||
else if ( typeof exports === 'object' ) { | ||||
// CommonJS | ||||
module.exports = function (root, $) { | ||||
if ( ! root ) { | ||||
// CommonJS environments without a window global must pass a | ||||
// root. This will give an error otherwise | ||||
root = window; | ||||
} | ||||
if ( ! $ ) { | ||||
$ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window | ||||
require('jquery') : | ||||
require('jquery')( root ); | ||||
} | ||||
if ( ! $.fn.dataTable ) { | ||||
require('datatables.net-se')(root, $); | ||||
} | ||||
if ( ! $.fn.dataTable ) { | ||||
require('datatables.net-editor')(root, $); | ||||
} | ||||
return factory( $, root, root.document ); | ||||
}; | ||||
} | ||||
else { | ||||
// Browser | ||||
factory( jQuery, window, document ); | ||||
} | ||||
}(function( $, window, document, undefined ) { | ||||
'use strict'; | ||||
var DataTable = $.fn.dataTable; | ||||
(function( factory ){ | ||||
if ( typeof define === 'function' && define.amd ) { | ||||
// AMD | ||||
define( ['jquery', 'datatables.net-se', 'datatables.net-editor'], function ( $ ) { | ||||
return factory( $, window, document ); | ||||
} ); | ||||
} | ||||
else if ( typeof exports === 'object' ) { | ||||
// CommonJS | ||||
module.exports = function (root, $) { | ||||
if ( ! root ) { | ||||
root = window; | ||||
} | ||||
if ( ! $ || ! $.fn.dataTable ) { | ||||
$ = require('datatables.net-se')(root, $).$; | ||||
} | ||||
if ( ! $.fn.dataTable.Editor ) { | ||||
require('datatables.net-editor')(root, $); | ||||
} | ||||
return factory( $, root, root.document ); | ||||
}; | ||||
} | ||||
else { | ||||
// Browser | ||||
factory( jQuery, window, document ); | ||||
} | ||||
}(function( $, window, document, undefined ) { | ||||
'use strict'; | ||||
var DataTable = $.fn.dataTable; | ||||
/* | ||||
* Set the default display controller to be Semantic UI modal | ||||
*/ | ||||
DataTable.Editor.defaults.display = "semanticui"; | ||||
/* | ||||
* Change the default classes from Editor to be classes for Bootstrap | ||||
*/ | ||||
$.extend( true, $.fn.dataTable.Editor.classes, { | ||||
"header": { | ||||
"wrapper": "DTE_Header header" | ||||
}, | ||||
"body": { | ||||
"wrapper": "DTE_Body content" | ||||
}, | ||||
"footer": { | ||||
"wrapper": "DTE_Footer actions" | ||||
}, | ||||
"form": { | ||||
"tag": "ui form", | ||||
"button": "ui button", | ||||
"buttonInternal": "ui button", | ||||
"content": 'DTE_Form_Content' | ||||
}, | ||||
"field": { | ||||
"wrapper": "DTE_Field inline fields", | ||||
"label": "right aligned five wide field", | ||||
"input": "eight wide field DTE_Field_Input", | ||||
"error": "error has-error", | ||||
"msg-labelInfo": "ui small", | ||||
"msg-info": "ui small", | ||||
"msg-message": "ui message small", | ||||
"msg-error": "ui error message small", | ||||
"multiValue": "ui message multi-value", | ||||
"multiInfo": "small", | ||||
"multiRestore": "ui message multi-restore" | ||||
}, | ||||
inline: { | ||||
wrapper: "DTE DTE_Inline ui form" | ||||
}, | ||||
bubble: { | ||||
table: "DTE_Bubble_Table ui form", | ||||
bg: "ui dimmer modals page transition visible active" | ||||
} | ||||
} ); | ||||
$.extend( true, DataTable.ext.buttons, { | ||||
create: { | ||||
formButtons: { | ||||
className: 'primary' | ||||
} | ||||
}, | ||||
edit: { | ||||
formButtons: { | ||||
className: 'primary' | ||||
} | ||||
}, | ||||
remove: { | ||||
formButtons: { | ||||
className: 'negative' | ||||
} | ||||
} | ||||
} ); | ||||
DataTable.Editor.fieldTypes.datatable.tableClass = 'ui table'; | ||||
/* | ||||
* Bootstrap display controller - this is effectively a proxy to the Bootstrap | ||||
* modal control. | ||||
*/ | ||||
// Single shared model for all Editor instances | ||||
const dom = { | ||||
modal: $('<div class="ui modal DTED"></div>'), | ||||
close: $('<i class="close icon"/>') | ||||
} | ||||
let shown = false; | ||||
let lastAppend; | ||||
DataTable.Editor.display.semanticui = $.extend( true, {}, DataTable.Editor.models.displayController, { | ||||
/* | ||||
* API methods | ||||
*/ | ||||
init: function ( dte ) { | ||||
// Make select lists semantic ui dropdowns if possible | ||||
if ($.fn.dropdown) { | ||||
dte.on( 'displayOrder.dtesu open.dtesu', function ( e, display, action, form ) { | ||||
$.each( dte.s.fields, function ( key, field ) { | ||||
$('select', field.node()) | ||||
.addClass('fluid') | ||||
.dropdown(); | ||||
} ); | ||||
} ); | ||||
} | ||||
return DataTable.Editor.display.semanticui; | ||||
}, | ||||
open: function ( dte, append, callback ) { | ||||
var modal = dom.modal; | ||||
var appendChildren = $(append).children(); | ||||
// Because we can't use a single element, we need to insert the existing | ||||
// children back into their previous host so that can be reused later | ||||
if (lastAppend) { | ||||
modal.children().appendTo(lastAppend); | ||||
} | ||||
lastAppend = append; | ||||
// Clean up any existing elements and then insert the elements to | ||||
// display. In Semantic UI we need to have the header, content and | ||||
// actions at the top level of the modal rather than as children of a | ||||
// wrapper. | ||||
modal | ||||
.children() | ||||
.detach(); | ||||
modal | ||||
.append( appendChildren ) | ||||
.prepend( modal.children('.header') ) // order is important | ||||
.addClass( append.className ) | ||||
.prepend( dom.close ); | ||||
dom.close | ||||
.attr('title', dte.i18n.close) | ||||
.off( 'click.dte-se' ) | ||||
.on( 'click.dte-se', function (e) { | ||||
dte.close('icon'); | ||||
return false; | ||||
} ); | ||||
$(document) | ||||
.off('click.dte-se') | ||||
.on('click.dte-se', 'div.ui.dimmer.modals', function (e) { | ||||
if ( $(e.target).hasClass('dimmer') ) { | ||||
dte.background(); | ||||
} | ||||
} ); | ||||
if ( shown ) { | ||||
if ( callback ) { | ||||
callback(); | ||||
} | ||||
return; | ||||
} | ||||
shown = true; | ||||
$(modal) | ||||
.modal( 'setting', { | ||||
autofocus: false, | ||||
closable: false, | ||||
onVisible: function () { | ||||
// Can only give elements focus when shown | ||||
if ( dte.s.setFocus ) { | ||||
dte.s.setFocus.focus(); | ||||
} | ||||
if ( callback ) { | ||||
callback(); | ||||
} | ||||
}, | ||||
onHidden: function () { | ||||
$(append).append( appendChildren ); | ||||
shown = false; | ||||
} | ||||
} ) | ||||
.modal( 'show' ); | ||||
}, | ||||
close: function ( dte, callback ) { | ||||
if ( ! shown ) { | ||||
if ( callback ) { | ||||
callback(); | ||||
} | ||||
return; | ||||
} | ||||
dom.modal.modal('hide'); | ||||
lastAppend = null; | ||||
shown = false; | ||||
if ( callback ) { | ||||
callback(); | ||||
} | ||||
}, | ||||
node: function ( dte ) { | ||||
return dom.modal[0]; | ||||
} | ||||
} ); | ||||
return DataTable.Editor; | ||||
})); | ||||
return Editor; | ||||
})); | ||||