bootstrap.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. document.addEventListener("DOMContentLoaded", function() {
  2. FormHandler.handleSubmitButtons();
  3. let touchHandler = new TouchHandler();
  4. touchHandler.listen();
  5. let navHandler = new NavHandler();
  6. let keyboardHandler = new KeyboardHandler();
  7. keyboardHandler.on("g u", () => navHandler.goToPage("unread"));
  8. keyboardHandler.on("g b", () => navHandler.goToPage("starred"));
  9. keyboardHandler.on("g h", () => navHandler.goToPage("history"));
  10. keyboardHandler.on("g f", () => navHandler.goToPage("feeds"));
  11. keyboardHandler.on("g c", () => navHandler.goToPage("categories"));
  12. keyboardHandler.on("g s", () => navHandler.goToPage("settings"));
  13. keyboardHandler.on("ArrowLeft", () => navHandler.goToPrevious());
  14. keyboardHandler.on("ArrowRight", () => navHandler.goToNext());
  15. keyboardHandler.on("j", () => navHandler.goToPrevious());
  16. keyboardHandler.on("p", () => navHandler.goToPrevious());
  17. keyboardHandler.on("k", () => navHandler.goToNext());
  18. keyboardHandler.on("n", () => navHandler.goToNext());
  19. keyboardHandler.on("h", () => navHandler.goToPage("previous"));
  20. keyboardHandler.on("l", () => navHandler.goToPage("next"));
  21. keyboardHandler.on("o", () => navHandler.openSelectedItem());
  22. keyboardHandler.on("v", () => navHandler.openOriginalLink());
  23. keyboardHandler.on("m", () => navHandler.toggleEntryStatus());
  24. keyboardHandler.on("A", () => navHandler.markPageAsRead());
  25. keyboardHandler.on("s", () => navHandler.saveEntry());
  26. keyboardHandler.on("d", () => navHandler.fetchOriginalContent());
  27. keyboardHandler.on("f", () => navHandler.toggleBookmark());
  28. keyboardHandler.on("?", () => navHandler.showKeyboardShortcuts());
  29. keyboardHandler.on("/", (e) => navHandler.setFocusToSearchInput(e));
  30. keyboardHandler.on("Escape", () => ModalHandler.close());
  31. keyboardHandler.listen();
  32. let mouseHandler = new MouseHandler();
  33. mouseHandler.onClick("a[data-save-entry]", (event) => {
  34. event.preventDefault();
  35. EntryHandler.saveEntry(event.target);
  36. });
  37. mouseHandler.onClick("a[data-toggle-bookmark]", (event) => {
  38. event.preventDefault();
  39. EntryHandler.toggleBookmark(event.target);
  40. });
  41. mouseHandler.onClick("a[data-toggle-status]", (event) => {
  42. event.preventDefault();
  43. let currentItem = DomHelper.findParent(event.target, "item");
  44. if (currentItem) {
  45. EntryHandler.toggleEntryStatus(currentItem);
  46. }
  47. });
  48. mouseHandler.onClick("a[data-fetch-content-entry]", (event) => {
  49. event.preventDefault();
  50. EntryHandler.fetchOriginalContent(event.target);
  51. });
  52. mouseHandler.onClick("a[data-on-click=markPageAsRead]", () => navHandler.markPageAsRead());
  53. mouseHandler.onClick("a[data-confirm]", (event) => {
  54. (new ConfirmHandler()).handle(event);
  55. });
  56. mouseHandler.onClick("a[data-action=search]", (event) => {
  57. navHandler.setFocusToSearchInput(event);
  58. });
  59. if (document.documentElement.clientWidth < 600) {
  60. let menuHandler = new MenuHandler();
  61. mouseHandler.onClick(".logo", () => menuHandler.toggleMainMenu());
  62. mouseHandler.onClick(".header nav li", (event) => menuHandler.clickMenuListItem(event));
  63. }
  64. if ("serviceWorker" in navigator) {
  65. let scriptElement = document.getElementById("service-worker-script");
  66. if (scriptElement) {
  67. navigator.serviceWorker.register(scriptElement.src);
  68. }
  69. }
  70. });