inline edit
HTML
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/notify/0.4.2/notify.min.js"></script>
<div class="container">
<div class="row">
<ul class="nav nav-tabs" id="employerDetailTabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="settings-tab" data-toggle="tab" href="#settings" role="tab" aria-controls="settings" aria-selected="true">Settings</a>
</li>
</ul>
</div>
<div class="row">
<div class="modal fade" id="progessDialog" data-backdrop="static" data-keyboard="false" tabindex="-1" role="dialog" aria-labelledby="progessDialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
<h5 class="modal-title" id="progessDialoglLabel">Processing...</h5>
<div class="progress">
<div class="progress-bar progress-bar-striped bg-info" role="progressbar" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div>
</div>
</div>
</div>
</div>
</div>
<div class="tab-content" id="employerDetailsTabContent">
<div class="tab-pane fade show active" id="settings" role="tabpanel" aria-labelledby="settings-tab">
<ul class="list">
<li>
<h3>Site.Administrator</h3>
<div class="list-data">
<p class="inline-edit" title="Click to edit" data-key="1" style="width: 150px;">555</p>
<p> </p>
<p id="dateUpdated1">
Updated: 2017-12-26
</p>
</div>
...
CSS
p.hover {
background: #fffbe1;
border: 1px solid #4D868E;
width: 150px;
padding: 8px;
}
body {
padding-top: 140px;
padding-bottom: 20px;
font-family: 'Lato', sans-serif;
font-weight: 400;
background-color: #F6F8FB;
-webkit-font-smoothing: antialiased;
}
h1
/*Main serif message on top*/
{
font-family: 'Lora', serif;
color: #535252;
font-weight: 700;
font-size: 28px;
}
h2
/*Card/page Titles*/
{
font-family: 'Lato', sans-serif;
color: #535252;
font-weight: 700;
font-size: 22px;
}
h3 {
font-family: 'Lato', sans-serif;
color: #535252;
font-weight: 400;
font-size: 16px;
}
h4
/*subtle paragraph titles*/
{
font-family: 'Lato', sans-serif;
color: #4D868E;
font-weight: 400;
font-size: 16px;
}
p {
font-family: 'Lato', sans-serif;
color: #535252;
font-weight: 400;
font-size: 14px;
}
a,
a:visited {
color: #54C2B9
}
a:focus,
a:hover {
color: #4D868E
}
hr {
width: 100%;
height: 2px;
background-color: rgba(173, 176, 176, 0.25);
border: 0px;
}
.card {
border-radius: 4px;
background-color: #FFFFFF;
box-shadow: 0 4px 0 0 rgba(77, 134, 142, 0.1);
border: 0px;
width: 100%;
padding: 25px;
margin-bottom: 30px;
}
.title-search {
margin-bottom: 35px;
}
.title-search .form-group {
margin-bottom: .25rem;
}
.title-search .input-group {
align-items: center;
}
.title-search h2 {
margin-right: 15px;
margin-bottom: 0;
}
.title-search input {
max-width: 195px;
}
/* Wrapping element */
/* Set some basic padding to keep content from hitting the edges */
.body-content {
padding-left: 15px;
padding-right: 15px;
}
.header-logo {
background-image: url(/images/header-logo2.png);
height: 49px;
width: 80px;
z-index: 20;
background-repeat: no-repeat;
background-size: 70px;
margin-left: -30px;
}
footer {
margin-top: 150px;
}
footer img {
...
JavaScript
function setUpdateMode(el) {
const Update_Mode = "Update";
el.text = Update_Mode;
$(el).removeClass("btn-primary").addClass("btn-success");
}
function setEditMode(el) {
const Edit_Mode = "Edit";
$(el).text(Edit_Mode);
$(el).removeClass("btn-success").addClass("btn-primary");
const hiddenPrevious = $("#previousValue");
hiddenPrevious.val("");
}
function toggleMode(el, key) {
const inline = $(`p.inline-edit[data-key='${key}']`);
if (inline) {
inline.click();
const Edit_Mode = "Edit";
if (el.text === Edit_Mode) {
setUpdateMode(el);
} else {
//ajax call to save
// update date
setEditMode(el);
}
}
}
function showError(result) {
document.getElementById("resultStatus").value = result.status;
document.getElementById("resultMessage").value = result.completionMessage;
$("#results").toggle();
}
var updateConfig = function(id, value) {
var result,
error,
data = {
id: id,
value: value
};
$("#progessDialog").modal();
let update = new Promise(function(resolve, reject) {
$.ajax({
type: "POST",
url: "/echo/json",
data: {
json: JSON.encode({
status: "Updated",
completetionMessage: "Setting updated successfully."
}),
delay: 2
}
})
.done(function(resp) {
if (resp) {
debugger;
if (resp.status === "Not Updated") {
showError(resp);
$("#progessDialog").modal("hide");
$("#notification").notify(resp.completionMessage, {
className: "danger",
autoHide: true,
position: "top right"
});
resolve(resp);
} else {
debugger;
const dateUpdated = (new Date()).toISOString().split('T')[0];
const dateUpdatedEl = $(`p#dateUpdated${id}`);
dateUpdatedEl.text(`Updated: ${dateUpdated}`);
$("#progessDialog").modal("hide");
...