123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- <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>
|