ContextMenuActions.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace Dcat\Admin\Grid\Displayers;
  3. use Dcat\Admin\Admin;
  4. class ContextMenuActions extends DropdownActions
  5. {
  6. /**
  7. * {@inheritdoc}
  8. */
  9. protected function addScript()
  10. {
  11. parent::addScript();
  12. $script = <<<'JS'
  13. (function () {
  14. $("body").on("contextmenu", "table#grid-table tr", function(e) {
  15. $('#grid-context-menu .dropdown-menu').hide();
  16. var menu = $(this).find('td .grid-dropdown-actions .dropdown-menu');
  17. console.log(menu.html());
  18. var index = $(this).index();
  19. if (menu.length) {
  20. menu.attr('index', index).detach().appendTo('#grid-context-menu');
  21. } else {
  22. menu = $('#grid-context-menu .dropdown-menu[index='+index+']');
  23. }
  24. var height = 0;
  25. if (menu.height() > (document.body.clientHeight - e.pageY)) {
  26. menu.css({left: e.pageX+10, top: e.pageY - menu.height()}).show();
  27. } else {
  28. menu.css({left: e.pageX+10, top: e.pageY-10}).show();
  29. }
  30. return false;
  31. });
  32. $(document).on('click',function(){
  33. $('#grid-context-menu .dropdown-menu').hide();
  34. })
  35. $('#grid-context-menu').click('a', function () {
  36. $('#grid-context-menu .dropdown-menu').hide();
  37. });
  38. })();
  39. JS;
  40. Admin::script($script);
  41. }
  42. /**
  43. * {@inheritdoc}
  44. */
  45. public function display($callback = null)
  46. {
  47. Admin::html('<div id="grid-context-menu"></div>');
  48. Admin::style('.column-__actions__ {display: none !important;}');
  49. return parent::display($callback);
  50. }
  51. }