hasmanytab.blade.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <style>
  2. .nav-tabs > li:hover > i{
  3. display: inline;
  4. }
  5. .close-tab {
  6. position: absolute;
  7. font-size: 10px;
  8. top: 20px;
  9. right: 0;
  10. cursor: pointer;
  11. display: none;
  12. }
  13. </style>
  14. <div class="nav-tabs-custom has-many-{{$column}}">
  15. <div class="row header">
  16. <div class="{{$viewClass['label']}}"><h4 class="pull-right">{!! $label !!}</h4></div>
  17. <div class="{{$viewClass['field']}}" style="margin-bottom: 5px">
  18. <div class="add btn btn-outline-primary btn-sm"><i class="feather icon-plus"></i>&nbsp;{{ trans('admin.new') }}</div>
  19. </div>
  20. </div>
  21. <hr class="mb-0 mt-0">
  22. <ul class="nav nav-tabs">
  23. @foreach($forms as $pk => $form)
  24. <li class="nav-item ">
  25. <a href="#{{ $relationName . '_' . $pk }}" class="nav-link @if ($form == reset($forms)) active @endif " data-toggle="tab">
  26. {{ $pk }} <i class="feather icon-alert-circle text-red d-none"></i>
  27. </a>
  28. <i class="close-tab feather icon-trash text-red"></i>
  29. </li>
  30. @endforeach
  31. </ul>
  32. <div class="tab-content has-many-{{$column}}-forms">
  33. @foreach($forms as $pk => $form)
  34. <div class="tab-pane fields-group has-many-{{$column}}-form @if ($form == reset($forms)) active @endif" id="{{ $relationName . '_' . $pk }}">
  35. @foreach($form->fields() as $field)
  36. {!! $field->render() !!}
  37. @endforeach
  38. </div>
  39. @endforeach
  40. </div>
  41. <template class="nav-tab-tpl">
  42. <li class="new nav-item">
  43. <a href="#{{ $relationName . '_new_' . \Dcat\Admin\Form\NestedForm::DEFAULT_KEY_NAME }}" class="nav-link" data-toggle="tab">
  44. &nbsp;New {{ \Dcat\Admin\Form\NestedForm::DEFAULT_KEY_NAME }} <i class="feather icon-alert-circle text-red d-none"></i>
  45. </a>
  46. <i class="close-tab feather icon-trash text-red" ></i>
  47. </li>
  48. </template>
  49. <template class="pane-tpl">
  50. <div class="tab-pane fields-group new" id="{{ $relationName . '_new_' . Dcat\Admin\Form\NestedForm::DEFAULT_KEY_NAME }}">
  51. {!! $template !!}
  52. </div>
  53. </template>
  54. </div>
  55. <script>
  56. var container = '.has-many-{{ $column }}';
  57. $(container+' > .nav').off('click', 'i.close-tab').on('click', 'i.close-tab', function(){
  58. var $navTab = $(this).siblings('a');
  59. var $pane = $($navTab.attr('href'));
  60. if( $pane.hasClass('new') ){
  61. $pane.remove();
  62. }else{
  63. $pane.removeClass('active').find('.{{ Dcat\Admin\Form\NestedForm::REMOVE_FLAG_CLASS }}').val(1);
  64. }
  65. if($navTab.closest('li').hasClass('active')){
  66. $navTab.closest('li').remove();
  67. $(container+' > .nav > li:nth-child(1) > a').click();
  68. }else{
  69. $navTab.closest('li').remove();
  70. }
  71. });
  72. var nestedIndex = {!! $count !!};
  73. function replaceNestedFormIndex(value) {
  74. return String(value).replace(/{{ Dcat\Admin\Form\NestedForm::DEFAULT_KEY_NAME }}/g, nestedIndex);
  75. }
  76. $(container+' > .header').off('click', '.add').on('click', '.add', function(){
  77. nestedIndex++;
  78. var navTabHtml = replaceNestedFormIndex($(container+' > template.nav-tab-tpl').html());
  79. var paneHtml = replaceNestedFormIndex($(container+' > template.pane-tpl').html());
  80. $(container+' > .nav').append(navTabHtml);
  81. $(container+' > .tab-content').append(paneHtml);
  82. $(container+' > .nav > li:last-child a').click();
  83. {!! $templateScript !!}
  84. });
  85. if ($('.has-error').length) {
  86. $('.has-error').parent('.tab-pane').each(function () {
  87. var tabId = '#'+$(this).attr('id');
  88. $('li a[href="'+tabId+'"] i').removeClass('d-none');
  89. });
  90. var first = $('.has-error:first').parent().attr('id');
  91. $('li a[href="#'+first+'"]').tab('show');
  92. }
  93. </script>