Examples of code I've written in PHP, Javascript, SCSS, etc.
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

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