LoginBlock.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <script>
  2. // import Vue from 'vue'
  3. import { mapState } from 'pinia'
  4. // import router from 'vuejs/route'
  5. import { UserStore } from '@/stores/user'
  6. export default {
  7. setup() {
  8. const userStore = UserStore()
  9. return { userStore }
  10. },
  11. // router,
  12. // props: ['title', 'block'],
  13. data () {
  14. return {
  15. template: null,
  16. mail: '',
  17. passwd: ''
  18. }
  19. },
  20. computed: {
  21. ...mapState(UserStore,['loginMessage'])
  22. },
  23. methods: {
  24. // ...mapActions({
  25. // userLogin: 'User/userLogin',
  26. // openCloseHamMenu: 'Common/openCloseHamMenu'
  27. // }),
  28. onSubmitLogin (event) {
  29. console.log("onSubmitLogin", event, this.mail, this.passwd);
  30. this.userStore.userLogin({
  31. mail: this.mail,
  32. pass: this.passwd
  33. }).then(() => {
  34. console.log('LoginBlock user logged-in then')
  35. })
  36. // this.userLogin({
  37. // mail: this.mail,
  38. // pass: this.password
  39. // })
  40. // moved to user.js store
  41. // .then(() => {
  42. // console.log('LoginBlock user logged-in')
  43. // this.openCloseHamMenu(false)
  44. // this.$router.push({
  45. // name: 'base'
  46. // })
  47. // })
  48. }
  49. }
  50. }
  51. </script>
  52. <template>
  53. <div id="login-block">
  54. <span>connexion</span>
  55. <form action="" @submit.prevent="onSubmitLogin">
  56. <input type="email" placeholder="email" name="email" v-model="mail">
  57. <input type="password" placeholder="mot de passe" name="passwd" v-model="passwd">
  58. <input type="submit" value="se connecter">
  59. <p v-if="loginMessage">{{ loginMessage }}</p>
  60. </form>
  61. </div>
  62. </template>
  63. <style lang="scss" scoped>
  64. $pad: 1em;
  65. #login-block{
  66. position: relative;
  67. span{
  68. display: inline-block;
  69. @include btn();
  70. }
  71. form{
  72. background-color: #fff;
  73. border-radius: 5px;
  74. padding: 0 $pad;
  75. position: absolute;
  76. bottom: 100%;
  77. left: -$pad;
  78. >*{
  79. margin: 0 0 0.5em 0;
  80. }
  81. overflow: hidden;
  82. max-height:1px;
  83. opacity: 0;
  84. $delay: 4s;
  85. transition: opacity 0.3s ease-out $delay,max-height 0.3s ease-out $delay, padding 0.3s ease-out $delay + 0.1s;
  86. }
  87. &:hover{
  88. form{
  89. box-shadow: 0 0 5px $btns_back;
  90. padding: $pad;
  91. max-height: 100px;
  92. opacity: 1;
  93. transition: opacity 0.3s ease-out,max-height 0.3s ease-out, padding 0.3s ease-out 0.1s;
  94. }
  95. }
  96. }
  97. </style>