RowSelector.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace Tests\Browser\Components\Grid;
  3. use Laravel\Dusk\Browser;
  4. use Tests\Browser\Components\Component;
  5. /**
  6. * 行选择器.
  7. */
  8. class RowSelector extends Component
  9. {
  10. /**
  11. * 获取组件的 root selector.
  12. *
  13. * @return string
  14. */
  15. public function selector()
  16. {
  17. return '@container';
  18. }
  19. /**
  20. * 浏览器包含组件的断言
  21. *
  22. * @param Browser $browser
  23. * @return void
  24. */
  25. public function assert(Browser $browser)
  26. {
  27. // $browser->assertVisible('table:visible thead th .checkbox-grid');
  28. }
  29. /**
  30. * 读取组件的元素快捷方式.
  31. *
  32. * @return array
  33. */
  34. public function elements()
  35. {
  36. return [
  37. '@container' => '#grid-table',
  38. '@all' => 'input.select-all',
  39. '@item' => 'input.grid-row-checkbox',
  40. ];
  41. }
  42. /**
  43. * 选中.
  44. *
  45. * @param Browser $browser
  46. * @param string|array $value
  47. * @return Browser
  48. */
  49. public function choose(Browser $browser, $value)
  50. {
  51. foreach ((array) $value as $v) {
  52. $browser->script(
  53. <<<JS
  54. setTimeout(function () {
  55. $('{$this->formatSelector($browser, '@item')}[data-id="{$v}"]').prop('checked', true);
  56. }, 10)
  57. JS
  58. );
  59. }
  60. return $browser;
  61. }
  62. /**
  63. * 选中所有.
  64. *
  65. * @param Browser $browser
  66. * @return Browser
  67. */
  68. public function selectAll(Browser $browser)
  69. {
  70. $browser->script("Dcat.ready(
  71. setTimeout(function () {
  72. $('{$this->formatSelector($browser)} .select-all').first().click()
  73. }, 10)
  74. );");
  75. return $browser;
  76. }
  77. }