You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
4.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/* simple scripts file for Themes.guide Bootstrap 4 theme templates */
// init Bootstrap tooltips & popovers
$("[data-toggle=popover]").popover();
$("[data-toggle=tooltip]").tooltip();
/* copy demo sources to clipboard */
function copyTextToClipboard(text) {
var textArea = document.createElement("textarea");
textArea.style.position = 'fixed';
textArea.style.top = 0;
textArea.style.left = 0;
textArea.style.width = '2em';
textArea.style.height = '2em';
textArea.style.padding = 0;
textArea.style.border = 'none';
textArea.style.outline = 'none';
textArea.style.boxShadow = 'none';
textArea.style.background = 'transparent';
textArea.value = text;
document.body.appendChild(textArea);
textArea.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'successful' : 'unsuccessful';
console.log('Copying text command was ' + msg);
} catch (err) {
console.log('Oops, unable to copy');
}
document.body.removeChild(textArea);
return false;
}
var modalCode = $('<div id="modalCode" class="modal fade" />');
var modalDialog = $('<div class="modal-dialog modal-dialog-centered modal-lg" />');
var modalContent = $('<div class="modal-content" />');
var modalHeader = $('<div class="modal-header align-items-center"><h3 class="mb-0">Source Code</h3><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button></div>');
var modalBody = $('<div class="modal-body d-block py-3"><span class="badge badge-dark font-weight-light mb-2">The following markup was copied to the clipboard...</span><textarea id="code" class="form-control" rows="10" wrap="off"></textarea></div>');
modalHeader.appendTo(modalContent);
modalBody.appendTo(modalContent);
modalContent.appendTo(modalDialog);
modalDialog.appendTo(modalCode);
modalCode.appendTo('body');
var css = ".copyable{position:relative}.copyable .copyable-trigger{color:#333;background-color:rgba(255,255,255,.8);border:1px #888 solid;border-radius:4px;position:absolute;padding:3px 6px;top:0;right:0;z-index:102;text-decoration:none;font-family:monospace;font-size:11px;cursor:pointer;display:none}.copyable:hover .copyable-trigger{display:inline-block}";
$("head").append($(document.createElement("style"))
.html(css)
);
$('main').find('.card, .btn-group, .btn, .navbar, .modal, .form-group, .list-group, .alert, .progress, .table-responsive, .jumbotron, .badge, .nav').each(function(){
var $this = $(this);
var content = $this.get(0).outerHTML;
var arrayOfLines = content.match(/[^\r\n]+/g);
var secondLine = 0;
for (var l in arrayOfLines) {
var tabCount;
if (l>0) {
tabCount = ((arrayOfLines[l]||'').match(/[\s{4}|\t{1}]\S/g)||[]).length;
if (l==1) { secondLine = tabCount }
arrayOfLines[l] = arrayOfLines[l].replace(/\t{1}/g,'~');
arrayOfLines[l] = arrayOfLines[l].replace(/\s{4}/g,'~');
for (var i=0;i<secondLine+1;i++) {
arrayOfLines[l] = arrayOfLines[l].replace(/~/,'');
}
arrayOfLines[l] = arrayOfLines[l].replace(/~/g,'\t');
}
}
content = arrayOfLines.join('\n');
var title = "Click to view/copy source";
$this.addClass("copyable");
var trigger = $("<a href class='copyable-trigger'>&lt;&gt;</a>");
$this.append(trigger);
trigger.tooltip({
title: title,
placement: 'bottom',
trigger: 'hover'
});
trigger.on('click',function(e){
copyTextToClipboard(content);
$("#code").text(content);
$("#modalCode").modal('show');
return false;
});
});