Guest User

Untitled

a guest
Feb 14th, 2018
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.21 KB | None | 0 0
  1. settings
  2. |- panel ( or 'category' if you like )
  3. |- name
  4. |- text
  5. |- icon
  6. |- isOk
  7. |- fields
  8. |- name
  9. |- text
  10. |- isOk
  11. |- value
  12.  
  13. <template>
  14. <section class="section">
  15. <div class="conatiner">
  16.  
  17. <div class="columns">
  18. <nav class="settings-list panel column is-one-quarter">
  19. <p class="panel-heading">
  20. <i class="fas fa-cogs"></i> settings
  21. </p>
  22. <a v-for="panel in settings" class="panel-block" @click=" currentPanel = panel " :class="{ 'is-active': currentPanel == panel }">
  23. <i :class=" panel.icon "></i> &nbsp; {{ panel.text }}
  24. </a>
  25. </nav>
  26.  
  27. <nav v-if="currentPanel != null" class="settings-view panel column">
  28. <p class="panel-heading">
  29. {{ settings[ currentPanel ].text }}
  30. </p>
  31. <div class="panel-block panel-content">
  32. <div v-for=" field in currentPanel.fields " class="settings-field">
  33. <label class="label subtitle is-4">{{ field.text }}</label>
  34. <input class="input title is-4" :class=" !field.isOk " :disabled=" field.name == 'username' " type="text" v-model=" field.value ">
  35. </div>
  36. </div>
  37. <div class="panel-block panel-footer">
  38. <a class="button is-success" :class=" { 'is-loading': isSaving } " :disabled=" !settings[ currentPanel ].isOk "><i class="fas fa-save"></i></a>
  39. </div>
  40. </nav>
  41. </div>
  42.  
  43. </div>
  44. </section>
  45. </template>
  46.  
  47. <script>
  48. let sha1 = require('sha1')
  49.  
  50. function numberWithSpaces(x) {
  51. return x.toString().replace(/B(?=(d{3})+(?!d))/g, " ")
  52. }
  53.  
  54. export default {
  55. name: 'settings',
  56. data () {
  57. return {
  58. title: 'Innstillinger',
  59. currentPanel: null,
  60. isSaving: false,
  61. settings: {
  62. personalDetails: {
  63. name: 'personalDetails',
  64. text: 'Personal details',
  65. icon: 'fas fa-user',
  66. isOk: true,
  67. fields: {
  68. username: {
  69. name: 'username',
  70. text: 'Username',
  71. value: 'mrMilkSteak69', //this.$store.state.users.user.username,
  72. isOk: true
  73. },
  74. firstname: {
  75. name: 'firstname',
  76. text: 'First name',
  77. value: 'Charlie', //this.$store.state.users.user.firstname,
  78. isOk: true
  79. },
  80. lastname: {
  81. name: 'lastname',
  82. text: 'Last name',
  83. value: 'Kelly', //this.$store.state.users.user.lastname,
  84. isOk: true
  85. }
  86. }
  87. },
  88. newPassword: {
  89. name: 'newPassword',
  90. text: 'New password',
  91. icon: 'fas fa-key',
  92. isOk: false,
  93. fields: {
  94. oldPassword: {
  95. name: 'oldPassword',
  96. text: 'Old password',
  97. value: null,
  98. isOk: true
  99. },
  100. newPassword: {
  101. name: 'newPassword',
  102. text: 'New password',
  103. value: null,
  104. isOk: true
  105. }
  106. }
  107. }
  108. }
  109. }
  110. },
  111. methods: {
  112. save: function () {
  113.  
  114. }
  115. },
  116. beforeMount: function() {
  117. this.$store.dispatch( 'users/check').then( response => {
  118. if (!response) {
  119. this.$router.push("/login")
  120. }
  121. }, error => {
  122. console.log(error)
  123. this.$router.push("/login")
  124. })
  125. }
  126. }
  127. </script>
  128.  
  129. <!-- Add "scoped" attribute to limit CSS to this component only -->
  130. <style scoped lang="scss">
  131. @import "../assets/theme";
  132. @import "../assets/utils";
  133. h1 {
  134. font-weight: normal;
  135. }
  136. ul {
  137. list-style-type: none;
  138. padding: 0;
  139. }
  140. li {
  141. display: inline-block;
  142. margin: 0 10px;
  143. }
  144. a {
  145. color: #42b983;
  146. }
  147. .green {
  148. color: green;
  149. }
  150. .red {
  151. color: red;
  152. }
  153. .settings-list {
  154. a {
  155. text-align: left;
  156. }
  157. }
  158. .panel-content {
  159. display: block;
  160.  
  161. .settings-field {
  162. margin: 25px;
  163.  
  164. label {
  165. margin-bottom: 0;
  166. padding-left: 9px;
  167. text-align: left;
  168. }
  169. .input {
  170. border-width: 0;
  171. margin-top: 0;
  172. border-bottom-width: 2px;
  173. padding-left: 9px;
  174. padding-top: 0;
  175. box-shadow: none;
  176. }
  177. }
  178. .panel-footer {
  179. position: relative;
  180.  
  181. a.button {
  182. position: absolute;
  183. right: 0;
  184. width: 100px;
  185. }
  186. }
  187. }
  188. </style>
Add Comment
Please, Sign In to add comment