Search.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. export default class Search {
  2. constructor(currentPage, totalPages, onPageChange, replicateChanges){
  3. this.currentPage = currentPage;
  4. this.totalPages = totalPages;
  5. this.onPageChange = onPageChange;
  6. this.replicateChanges = replicateChanges;
  7. }
  8. render(){
  9. const paginationHolder = document.createElement('div');
  10. paginationHolder.classList.add('col-12', 'col-md-3');
  11. this.paginationSearch = document.createElement('div');
  12. this.paginationSearch.classList.add('search', 'input-group','col-md-3', 'col-sm-12');
  13. this.textualNumber = document.createElement('input');
  14. this.textualNumber.classList.add('form-control', 'form-control-sm');
  15. this.textualNumber.setAttribute('type', 'number');
  16. this.textualNumber.setAttribute('min', 1);
  17. this.textualNumber.setAttribute('max', this.totalPages);
  18. this.textualNumber.value = this.currentPage;
  19. this.textualNumber.addEventListener('blur', (event) => {
  20. let page = event.target.value;
  21. if(page > this.totalPages){
  22. page = this.totalPages;
  23. this.textualNumber.value = this.totalPages;
  24. }
  25. if(page < 1){
  26. page = 1;
  27. this.textualNumber.value = page;
  28. }
  29. this.replicateChanges(page);
  30. this.onPageChange(page);
  31. });
  32. this.textualNumber.addEventListener('keydown', (event) => {
  33. if (event.key === 'Enter') {
  34. console.log('reberberbrte');
  35. }
  36. });
  37. //this.paginationSearch.appendChild(this.textualNumber);
  38. this.append(this.textualNumber);
  39. this.selectNumber = document.createElement('select');
  40. this.selectNumber.classList.add('form-select', 'form-select-sm')
  41. for(let i = 1; i < this.totalPages; i++){
  42. const selectOption = document.createElement('option');
  43. selectOption.innerText = i;
  44. selectOption.setAttribute('value', i);
  45. this.selectNumber.appendChild(selectOption);
  46. }
  47. this.selectNumber.addEventListener('change', (event) => {
  48. this.replicateChanges(event.target.value);
  49. this.onPageChange(event.target.value);
  50. });
  51. //this.paginationSearch.appendChild(this.selectNumber);
  52. this.append(this.selectNumber);
  53. const recordsPerPage = document.createElement('select');
  54. recordsPerPage.classList.add('form-select', 'form-select-sm')
  55. for(let i = 1; i < 10; i++){
  56. const selectOption = document.createElement('option');
  57. selectOption.innerText = i * 25;
  58. selectOption.setAttribute('value', i * 25);
  59. recordsPerPage.appendChild(selectOption);
  60. }
  61. recordsPerPage.addEventListener('change', (event) => {
  62. //console.log(event.target.value)
  63. //this.replicateChanges(event.target.value);
  64. });
  65. //this.paginationSearch.appendChild(recordsPerPage);
  66. this.append(recordsPerPage)
  67. paginationHolder.appendChild(this.paginationSearch);
  68. return paginationHolder;
  69. }
  70. updateSearch(pageNumber, perPage) {
  71. this.selectNumber.value = pageNumber;
  72. this.textualNumber.value = pageNumber;
  73. }
  74. searchChange(){
  75. }
  76. append(element){
  77. let container = document.createElement('div');
  78. container.classList.add('col-4');
  79. container.appendChild(element);
  80. this.paginationSearch.appendChild(container);
  81. }
  82. }