hasmanytab.blade.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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-{{$columnClass}}">
  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-{{$columnClass}}-forms">
  33. @foreach($forms as $pk => $form)
  34. <div class="tab-pane fields-group has-many-{{$columnClass}}-form @if ($form == reset($forms)) active @endif" id="{{ $relationName . '_' . $pk }}">
  35. {!! $form->render() !!}
  36. </div>
  37. @endforeach
  38. </div>
  39. <template class="nav-tab-tpl">
  40. <li class="new nav-item">
  41. <a href="#{{ $relationName . '_new_' . \Dcat\Admin\Form\NestedForm::DEFAULT_KEY_NAME }}" class="nav-link" data-toggle="tab">
  42. &nbsp;New {{ \Dcat\Admin\Form\NestedForm::DEFAULT_KEY_NAME }} <i class="feather icon-alert-circle text-red d-none"></i>
  43. </a>
  44. <i class="close-tab feather icon-trash text-red" ></i>
  45. </li>
  46. </template>
  47. <template class="pane-tpl">
  48. <div class="tab-pane fields-group new" id="{{ $relationName . '_new_' . Dcat\Admin\Form\NestedForm::DEFAULT_KEY_NAME }}">
  49. {!! $template !!}
  50. </div>
  51. </template>
  52. </div>
  53. <script>
  54. var container = '.has-many-{{ $columnClass }}';
  55. $(container+' > .nav').off('click', 'i.close-tab').on('click', 'i.close-tab', function(){
  56. var $navTab = $(this).siblings('a');
  57. var $pane = $($navTab.attr('href'));
  58. if( $pane.hasClass('new') ){
  59. $pane.remove();
  60. }else{
  61. $pane.removeClass('active').find('.{{ Dcat\Admin\Form\NestedForm::REMOVE_FLAG_CLASS }}').val(1);
  62. }
  63. if($navTab.closest('li').hasClass('active')){
  64. $navTab.closest('li').remove();
  65. $(container+' > .nav > li:nth-child(1) > a').click();
  66. }else{
  67. $navTab.closest('li').remove();
  68. }
  69. });
  70. var nestedIndex = {!! $count !!};
  71. function replaceNestedFormIndex(value) {
  72. return String(value).replace(/{{ Dcat\Admin\Form\NestedForm::DEFAULT_KEY_NAME }}/g, nestedIndex);
  73. }
  74. $(container+' > .header').off('click', '.add').on('click', '.add', function(){
  75. nestedIndex++;
  76. var navTabHtml = replaceNestedFormIndex($(container+' > template.nav-tab-tpl').html());
  77. var paneHtml = replaceNestedFormIndex($(container+' > template.pane-tpl').html());
  78. $(container+' > .nav').append(navTabHtml);
  79. $(container+' > .tab-content').append(paneHtml);
  80. $(container+' > .nav > li:last-child a').click();
  81. });
  82. if ($('.has-error').length) {
  83. $('.has-error').parent('.tab-pane').each(function () {
  84. var tabId = '#'+$(this).attr('id');
  85. $('li a[href="'+tabId+'"] i').removeClass('d-none');
  86. });
  87. var first = $('.has-error:first').parent().attr('id');
  88. $('li a[href="#'+first+'"]').tab('show');
  89. }
  90. </script>