Examples of code I've written in PHP, Javascript, SCSS, etc.
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

117 linhas
3.4 KiB

  1. import RegisterArea from './register-area/register-area.vue'
  2. import Panel from './panel/panel.vue'
  3. import '../scss/main.scss'
  4. import { createApp } from 'vue'
  5. importAll(require.context('../images', false, /\.(png|jpe?g|svg)$/))
  6. let heroText = document.querySelectorAll(".landing-hero h2,.landing-hero p")
  7. let registerToggles = document.querySelectorAll(".register-btn, .register-area\
  8. .cancel-button, .services-cards button")
  9. let token = getCookie('XSRF-TOKEN')
  10. function importAll(r) {
  11. return r.keys().map(r)
  12. }
  13. function getCookie(name) {
  14. var re = new RegExp(name + "=([^;]+)")
  15. var value = re.exec(document.cookie)
  16. return (value != null) ? unescape(value[1]) : null
  17. }
  18. function getToken() {
  19. return fetch("/sanctum/csrf-cookie", {
  20. method: 'GET'
  21. }).then( () => {
  22. token = getCookie('XSRF-TOKEN')
  23. return token
  24. })
  25. }
  26. function login(event) {
  27. getToken().then(fetch("/login", {
  28. method: 'POST',
  29. headers: {'Content-Type': 'application/json',
  30. 'Accept': 'application/json',
  31. 'X-XSRF-TOKEN': token},
  32. body: JSON.stringify({"email":
  33. document.getElementById("login_email").value,
  34. "password": document.getElementById("login_password").value}),
  35. }).then(response => {
  36. if (response.ok) {
  37. window.location.assign("/panel")
  38. } else {
  39. document.querySelector("#login_form .error").innerText =
  40. "Invalid credentials."
  41. }
  42. }))
  43. event.preventDefault()
  44. // event.stopPropogation()
  45. }
  46. //Attempt to resend the verification link
  47. function resendLink(event) {
  48. fetch("/resend-verification", {
  49. method: 'POST',
  50. headers: {'Content-Type': 'application/json',
  51. 'Accept': 'application/json',
  52. 'X-XSRF-TOKEN': token},
  53. }).then(response => {
  54. if (response.ok) {
  55. event.target.parentNode.getElementsByTagName('h3')[0].innerText =
  56. "The link has been resent."
  57. } else {
  58. event.target.parentNode.getElementsByTagName('h3')[0].innerText =
  59. `${response.status} : ${response.statusText}`
  60. }})
  61. event.preventDefault();
  62. }
  63. function toggleNav() {
  64. heroText.forEach(item => {
  65. item.classList.toggle("hidden")
  66. })
  67. document.querySelector("nav form.login").classList.toggle("active")
  68. this.classList.toggle("toggled")
  69. }
  70. if (window.location.pathname == '/') {
  71. document.getElementById('nav_toggle').addEventListener('click', toggleNav)
  72. document.querySelector('#login_form button').addEventListener('click', login)
  73. const app = createApp(RegisterArea).mount('#app')
  74. // app.token = token
  75. if (!token) {app.token = getToken()}
  76. //Triggers for registration menu
  77. for (let i = 0; i < registerToggles.length; i++) {
  78. registerToggles[i].addEventListener("click", function() {
  79. document.querySelector(".register-area").classList.add("active")
  80. app.active = 'register'
  81. })
  82. }
  83. document.getElementById("forgot-password-btn").onclick = event => {
  84. document.querySelector(".register-area").classList.add("active")
  85. app.active = 'forgot'
  86. event.preventDefault()
  87. }
  88. //FAQ collapsibles
  89. let cols = document.getElementsByClassName("collapsible");
  90. for (let i = 0; i < cols.length; i++) {
  91. cols[i].addEventListener("click", function() {
  92. this.classList.toggle("active");
  93. });
  94. }
  95. } else if (window.location.pathname == '/verify-email') {
  96. document.getElementById('resend_verification').addEventListener("click", resendLink)
  97. } else if (window.location.pathname == '/panel') {
  98. const app = createApp(Panel).mount('#panel')
  99. getToken().then(()=> {app.token = token})
  100. window.onhashchange = ()=>{app.active = location.hash}
  101. }