Added Base form elements. Was kind of light on the notes though
parent
19a7dd3f31
commit
6a58aa50b3
@ -0,0 +1,86 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<button v-on="$listeners" v-bind="$attrs" class="button" :class="buttonClass">
|
||||||
|
<slot/>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// v-on="$listeners" means that this element inherits the listners of the parent component
|
||||||
|
export default {
|
||||||
|
inheritAttrs: false, // You still want this because it could but used for passing an attribute like disabled to your button
|
||||||
|
props: {
|
||||||
|
buttonClass: {
|
||||||
|
type: String
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.button {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: 52px;
|
||||||
|
padding: 0 40px;
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
border-radius: 6px;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 600;
|
||||||
|
white-space: nowrap;
|
||||||
|
transition: all 0.2s linear;
|
||||||
|
}
|
||||||
|
.button:hover {
|
||||||
|
-webkit-transform: scale(1.02);
|
||||||
|
transform: scale(1.02);
|
||||||
|
box-shadow: 0 7px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
|
||||||
|
}
|
||||||
|
.button:active {
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1);
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.button:focus {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
.button.-fill-gradient {
|
||||||
|
background: linear-gradient(to right, #16c0b0, #84cf6a);
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.button:disabled {
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
transform: scale(1);
|
||||||
|
box-shadow: none;
|
||||||
|
background: #eeeeee;
|
||||||
|
}
|
||||||
|
.button + .button {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
.button.-fill-gray {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
.button.-size-small {
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
.button.-icon-right {
|
||||||
|
text-align: left;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
.button.-icon-right > .icon {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
.button.-icon-left {
|
||||||
|
text-align: right;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
.button.-icon-left > .icon {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.button.-icon-center {
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,27 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<label v-if="label">{{ label }}</label>
|
||||||
|
<input :value="value" @input="updateValue" v-bind="$attrs">
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
inheritAttrs: false,
|
||||||
|
props: {
|
||||||
|
label: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
value: [String, Number]
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
updateValue() {
|
||||||
|
this.$emit('input', event.target.value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
@ -0,0 +1,33 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<label v-if="label">{{ label }}</label>
|
||||||
|
<select :value="value" @input="updateValue" v-bind="$attrs">
|
||||||
|
<option v-for="option in options" :key="option" :selected="option === value">{{ option }}</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
inheritAttrs: false,
|
||||||
|
props: {
|
||||||
|
options: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
value: [String, Number]
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
updateValue() {
|
||||||
|
this.$emit('input', event.target.value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
@ -0,0 +1,14 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1>Uh oh</h1>
|
||||||
|
<h3>It looks like you could be experiencing some network issues. Please click the back button and try again.</h3>
|
||||||
|
<router-link :to="{name: 'event-list'}">Back to the home page</router-link>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
@ -0,0 +1,21 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1>Ooops</h1>
|
||||||
|
<h3>The {{ resource }} you are looking for is not here.</h3>
|
||||||
|
<router-link :to="{name: 'event-list'}">Back to the home page</router-link>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
resource: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
Loading…
Reference in New Issue