feat: Color Theme page UI + color picker + toggle
This commit is contained in:
@@ -75,6 +75,7 @@ import modalProfile2faComponent from './components/modal-profile-2fa.vue'
|
||||
import modalUpgradeSystemComponent from './components/modal-upgrade-system.vue'
|
||||
import pageLoaderComponent from './components/page-loader.vue'
|
||||
import searchComponent from './components/search.vue'
|
||||
import toggleComponent from './components/toggle.vue'
|
||||
import treeComponent from './components/tree.vue'
|
||||
|
||||
import adminEditUserComponent from './pages/admin-edit-user.component.js'
|
||||
@@ -189,6 +190,7 @@ $(() => {
|
||||
pageLoader: pageLoaderComponent,
|
||||
search: searchComponent,
|
||||
sourceView: sourceViewComponent,
|
||||
toggle: toggleComponent,
|
||||
tree: treeComponent
|
||||
},
|
||||
store,
|
||||
|
@@ -1,14 +1,40 @@
|
||||
<template lang="pug">
|
||||
p.control
|
||||
input.input(type='text', placeholder='#F0F0F0', v-model='color')
|
||||
.colorpicker
|
||||
.colorpicker-choice(v-for='color in colors', :class='["is-" + color, color === currentColor ? "is-active" : ""]', @click='setColor(color)')
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'color-picker',
|
||||
props: ['currentColor'],
|
||||
data () {
|
||||
return {
|
||||
color: '000000'
|
||||
colors: [
|
||||
'red',
|
||||
'pink',
|
||||
'purple',
|
||||
'deep-purple',
|
||||
'indigo',
|
||||
'blue',
|
||||
'light-blue',
|
||||
'cyan',
|
||||
'teal',
|
||||
'green',
|
||||
'light-green',
|
||||
'lime',
|
||||
'yellow',
|
||||
'amber',
|
||||
'orange',
|
||||
'deep-orange',
|
||||
'brown',
|
||||
'grey',
|
||||
'blue-grey'
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
setColor(color) {
|
||||
this.currentColor = color
|
||||
}
|
||||
}
|
||||
}
|
||||
|
21
client/js/components/toggle.vue
Normal file
21
client/js/components/toggle.vue
Normal file
@@ -0,0 +1,21 @@
|
||||
<template lang="pug">
|
||||
.toggle(:class='{ "is-active": currentValue }', @click='changeToggle')
|
||||
.toggle-container
|
||||
.toggle-pin
|
||||
.toggle-text {{ desc }}
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'toggle',
|
||||
props: ['currentValue', 'desc'],
|
||||
data () {
|
||||
return { }
|
||||
},
|
||||
methods: {
|
||||
changeToggle() {
|
||||
this.currentValue = !this.currentValue
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
@@ -14,6 +14,7 @@ $primary: 'indigo';
|
||||
@import 'components/alert';
|
||||
@import 'components/button';
|
||||
@import 'components/collapsable-nav';
|
||||
@import 'components/color-picker';
|
||||
@import 'components/footer';
|
||||
@import 'components/form';
|
||||
@import 'components/grid';
|
||||
@@ -25,6 +26,7 @@ $primary: 'indigo';
|
||||
@import 'components/search';
|
||||
@import 'components/sidebar';
|
||||
@import 'components/table';
|
||||
@import 'components/toggle';
|
||||
@import 'components/typography';
|
||||
|
||||
@import 'libs/nucleo-icons';
|
||||
|
32
client/scss/components/color-picker.scss
Normal file
32
client/scss/components/color-picker.scss
Normal file
@@ -0,0 +1,32 @@
|
||||
.colorpicker {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 60px;
|
||||
|
||||
&-choice {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border: 1px solid #FFF;
|
||||
transition: all .2s ease;
|
||||
cursor: pointer;
|
||||
|
||||
&.is-active, &:hover {
|
||||
border-width: 5px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
@each $color, $colorvalue in $material-colors {
|
||||
&.is-#{$color} {
|
||||
background-color: mc($color, '500');
|
||||
border-color: mc($color,'500');
|
||||
|
||||
&.is-active, &:hover {
|
||||
border-color: mc($color,'300');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
53
client/scss/components/toggle.scss
Normal file
53
client/scss/components/toggle.scss
Normal file
@@ -0,0 +1,53 @@
|
||||
.toggle {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
height: 24px;
|
||||
cursor: pointer;
|
||||
margin: 5px 5px 5px 0;
|
||||
|
||||
& + & {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
&-container {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
height: 24px;
|
||||
width: 50px;
|
||||
background-color: mc('grey', '300');
|
||||
border-radius: 12px;
|
||||
padding: 2px;
|
||||
transition: background-color .5s ease;
|
||||
}
|
||||
|
||||
&-pin {
|
||||
display: flex;
|
||||
background-color: #FFF;
|
||||
border-radius:10px;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
transition: all .5s ease;
|
||||
}
|
||||
|
||||
&-text {
|
||||
padding-left: 10px;
|
||||
color: mc('grey', '700');
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.toggle-container {
|
||||
background-color: mc('grey', '400');
|
||||
}
|
||||
}
|
||||
|
||||
&.is-active {
|
||||
.toggle-container {
|
||||
background-color: mc('indigo', '500');
|
||||
}
|
||||
.toggle-pin {
|
||||
margin-left: 28px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user