Examples of code I've written in PHP, Javascript, SCSS, etc.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

117 lignes
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. }