179 lines
5.2 KiB
PHP
179 lines
5.2 KiB
PHP
<span class="ie-wrap">
|
|
<a
|
|
href="javascript:void(0);"
|
|
class="{{ $class }}"
|
|
data-editinline="popover"
|
|
data-temp="grid-editinline-{{ $type }}-{{ $name }}"
|
|
data-value="{{ $value }}"
|
|
data-original="{{ $value }}"
|
|
data-key="{{ $key }}"
|
|
data-name="{{ $name }}"
|
|
data-url="{!! $url !!}"
|
|
data-refresh="{{ $refresh }}"
|
|
>
|
|
<span class="ie-display">
|
|
{{ $display }}
|
|
@if(! $display)
|
|
<i class="feather icon-edit-2"></i>
|
|
@endif
|
|
</span>
|
|
</a>
|
|
</span>
|
|
|
|
<template>
|
|
<template id="grid-editinline-{{ $type }}-{{ $name }}">
|
|
<div class="ie-content ie-content-{{ $name }}" data-type="{{ $type }}">
|
|
<div class="ie-container">
|
|
@yield('field')
|
|
<div class="error"></div>
|
|
</div>
|
|
<div class="ie-action">
|
|
<button class="btn btn-primary btn-sm ie-submit">{{ __('admin.submit') }}</button>
|
|
<button class="btn btn-white btn-sm ie-cancel">{{ __('admin.cancel') }}</button>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
<style>
|
|
.ie-action button {
|
|
margin: 10px 0 10px 10px;
|
|
float: right;
|
|
}
|
|
[data-editinline="popover"] {
|
|
border-bottom:dashed 1px @primary;
|
|
color: @primary;
|
|
display: inline-block;
|
|
}
|
|
body.dark-mode [data-editinline="popover"] {
|
|
color: @primary;
|
|
border-color: @primary;
|
|
}
|
|
</style>
|
|
|
|
<script>
|
|
function hide() {
|
|
$('[data-editinline="popover"]').popover('hide');
|
|
}
|
|
|
|
$('.{{ $class }}').popover({
|
|
html: true,
|
|
container: 'body',
|
|
trigger: 'manual',
|
|
sanitize: false,
|
|
placement: function (context, source) {
|
|
var position = $(source).position();
|
|
if (position.left < 100) return "right";
|
|
if (position.top < 110) return "bottom";
|
|
if ($(window).height() - $(source).offset().top < 370) {
|
|
return 'top';
|
|
}
|
|
return "bottom";
|
|
},
|
|
content: function () {
|
|
var $trigger = $(this);
|
|
var $template = $($('template#'+$(this).data('temp')).html());
|
|
|
|
@yield('popover-content')
|
|
|
|
return $template.prop("outerHTML");
|
|
}
|
|
}).on('shown.bs.popover', function (e) {
|
|
|
|
var $popover = $($(this).data('bs.popover').tip).find('.ie-content');
|
|
var $display = $(this).parents('.ie-wrap').find('.ie-display');
|
|
var $trigger = $(this);
|
|
|
|
$popover.data('display', $display);
|
|
$popover.data('trigger', $trigger);
|
|
|
|
@yield('popover-shown')
|
|
|
|
}).click(function () {
|
|
hide();
|
|
$(this).popover('toggle');
|
|
});
|
|
</script>
|
|
|
|
<script>
|
|
function hide() {
|
|
$('[data-editinline="popover"]').popover('hide');
|
|
}
|
|
|
|
$(document).off('click', '.ie-content .ie-cancel').on('click', '.ie-content .ie-cancel', hide)
|
|
|
|
$(document).off('click', '.ie-content .ie-submit').on('click', '.ie-content .ie-submit', function () {
|
|
var $popover = $(this).closest('.ie-content'),
|
|
$trigger = $popover.data('trigger'),
|
|
name = $trigger.data('name'),
|
|
original = $trigger.data('original'),
|
|
refresh = $trigger.data('refresh'),
|
|
val,
|
|
label;
|
|
|
|
switch($popover.data('type')) {
|
|
case 'input':
|
|
case 'textarea':
|
|
val = $popover.find('.ie-input').val();
|
|
label = val;
|
|
break;
|
|
case 'checkbox':
|
|
val = [];
|
|
label = [];
|
|
$popover.find('.ie-input:checked').each(function(){
|
|
val.push($(this).val());
|
|
label.push($(this).parent().text());
|
|
});
|
|
label = label.join(';');
|
|
break;
|
|
case 'radio':
|
|
val = $popover.find('.ie-input:checked').val();
|
|
label = $popover.find('.ie-input:checked').parent().text();
|
|
break;
|
|
}
|
|
|
|
if (val == original) {
|
|
hide();
|
|
return;
|
|
}
|
|
|
|
Dcat.NP.start();
|
|
|
|
var data = {};
|
|
|
|
if (name.indexOf('.') === -1) {
|
|
data[name] = val;
|
|
} else {
|
|
name = name.split('.');
|
|
|
|
data[name[0]] = {};
|
|
data[name[0]][name[1]] = val;
|
|
}
|
|
data['_inline_edit_'] = 1;
|
|
|
|
$.put({
|
|
url: $trigger.data('url'),
|
|
data: data,
|
|
error:function(a,b,c) {
|
|
Dcat.handleAjaxError(a, b, c);
|
|
},
|
|
}).done(function (res) {
|
|
Dcat.NP.done();
|
|
var data = res.data;
|
|
if (res.status === true) {
|
|
Dcat.success(data.message);
|
|
var $display = $popover.data('display');
|
|
$display.text(label);
|
|
if (! label) {
|
|
$display.html('<i class="feather icon-edit-2"></i>');
|
|
}
|
|
$trigger.data('value', val).data('original', val);
|
|
hide();
|
|
refresh && Dcat.reload();
|
|
} else {
|
|
Dcat.error(data.message);
|
|
}
|
|
});
|
|
});
|
|
</script>
|