Skip to content

Commit

Permalink
feature: Badge field (#66)
Browse files Browse the repository at this point in the history
Co-authored-by: Adrian Marin <adrian@adrianthedev.com>
  • Loading branch information
mihaimdm22 and adrianthedev committed Jul 3, 2020
1 parent 27afeba commit 618ba9a
Show file tree
Hide file tree
Showing 66 changed files with 352 additions and 115 deletions.
2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@
]
}
]
}
}
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ group :development, :test do
gem 'database_cleaner'

gem 'ruby-debug-ide', require: false
gem 'debase'
end

group :development, :test do
Expand Down
4 changes: 4 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,9 @@ GEM
concurrent-ruby (1.1.6)
crass (1.0.6)
database_cleaner (1.8.5)
debase (0.2.4.1)
debase-ruby_core_source (>= 0.10.2)
debase-ruby_core_source (0.10.9)
devise (4.7.2)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
Expand Down Expand Up @@ -301,6 +304,7 @@ DEPENDENCIES
byebug
capybara (>= 2.15)
database_cleaner
debase
devise
dotenv-rails
factory_bot_rails
Expand Down
28 changes: 28 additions & 0 deletions app/frontend/js/components/BadgeComponent.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<template>
<span :class="classes" v-text="label"/>
</template>

<script>
export default {
props: {
type: String,
label: String,
},
computed: {
classes() {
const classes = ['whitespace-no-wrap', 'rounded-full', 'uppercase', 'px-2', 'text-xs', 'font-bold', 'text-white']
const backgrounds = {
info: 'blue',
success: 'green',
danger: 'red',
warning: 'yellow',
}
classes.push(`bg-${backgrounds[this.type]}-500`)
return classes.join(' ')
},
},
}
</script>
4 changes: 2 additions & 2 deletions app/frontend/js/components/Edit/BelongsTo.vue
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@
v-model="selectedValue"
:disabled="disabled"
>
<option value="" v-text="placeholder"></option>
<option value="" v-text="placeholder"/>
<option v-for="option in options"
:key="option.value"
:value="option.value"
v-text="option.label"
></option>
/>
</select>
</div>
<template #extra>
Expand Down
8 changes: 5 additions & 3 deletions app/frontend/js/components/Edit/SelectField.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
v-model="value"
>
<option value="null" disabled>{{field.placeholder}}</option>
<option v-for="(option, key) in field.options" :value="key" :key="key">
{{option}}
</option>
<option v-for="(option, key) in field.options"
:value="key"
:key="key"
v-text="option"
/>
</select>
</edit-field-wrapper>
</template>
Expand Down
3 changes: 3 additions & 0 deletions app/frontend/js/components/EmptyDash.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<template>
<span>—</span>
</template>
2 changes: 1 addition & 1 deletion app/frontend/js/components/HeadingComponent.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<p v-if="asHtml" v-html="value"></p>
<div v-else v-text="value" class="font-semibold uppercase"></div>
</template>
<p v-else>-</p>
<empty-dash v-else />
</div>
</div>
</template>
Expand Down
26 changes: 26 additions & 0 deletions app/frontend/js/components/Index/BadgeField.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<template>
<index-field-wrapper :field="field">
<Badge v-if="badgeLabel"
:type="badgeType"
:label="badgeLabel"
/>
<empty-dash v-else />
</index-field-wrapper>
</template>

<script>
import Badge from '@/js/components/BadgeComponent.vue'
export default {
props: ['field'],
components: { Badge },
computed: {
badgeType() {
return this.field.value.type
},
badgeLabel() {
return this.field.value.label
},
},
}
</script>
2 changes: 1 addition & 1 deletion app/frontend/js/components/Index/BelongsTo.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<template>
<index-field-wrapper :field="field">
<div v-if="field.value" v-text="field.value"></div>
<div v-else>-</div>
<empty-dash v-else />
</index-field-wrapper>
</template>

Expand Down
3 changes: 2 additions & 1 deletion app/frontend/js/components/Index/BooleanField.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<template>
<index-field-wrapper :field="field" class="text-center">
{{value}}
<div v-if="value" v-text="value"></div>
<empty-dash v-else />
</index-field-wrapper>
</template>

Expand Down
4 changes: 1 addition & 3 deletions app/frontend/js/components/Index/BooleanGroupField.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@
<div v-bind:key="index">{{ emoji(val) }} {{ label(key) }}</div>
</template>
</div>
<template v-else>
-
</template>
<empty-dash v-else />
</template>
<button @click="toggleView" v-else>
View
Expand Down
9 changes: 4 additions & 5 deletions app/frontend/js/components/Index/DatetimeField.vue
Original file line number Diff line number Diff line change
@@ -1,22 +1,21 @@
<template>
<index-field-wrapper :field="field">
{{value}}
<div v-if="value" v-text="value"/>
<empty-dash v-else />
</index-field-wrapper>
</template>

<script>
import moment from 'moment'
export default {
data: () => ({}),
props: ['field'],
computed: {
value() {
if (this.field.value) return moment(new Date(this.field.value)).format(this.field.format)
return '-'
return null
},
},
methods: {},
mounted() {},
}
</script>
4 changes: 0 additions & 4 deletions app/frontend/js/components/Index/FieldWrapper.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,6 @@

<script>
export default {
data: () => ({}),
props: ['field'],
computed: {},
methods: {},
mounted() {},
}
</script>
2 changes: 1 addition & 1 deletion app/frontend/js/components/Index/FileField.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
v-if="this.field.value"
download
></a>
<div v-else>-</div>
<empty-dash v-else />
</index-field-wrapper>
</template>

Expand Down
7 changes: 4 additions & 3 deletions app/frontend/js/components/Index/FilesField.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<template>
<index-field-wrapper :field="field">
{{filedLabel}}
<div v-if="value" v-text="value"/>
<empty-dash v-else />
</index-field-wrapper>
</template>

Expand All @@ -10,12 +11,12 @@ import pluralize from 'pluralize'
export default {
props: ['field'],
computed: {
filedLabel() {
value() {
if (this.field.value && this.field.value.length > 0) {
return `${this.field.value.length} ${pluralize(this.field.name, this.field.value.length)}`
}
return '-'
return null
},
},
}
Expand Down
2 changes: 1 addition & 1 deletion app/frontend/js/components/Index/Filters/SelectFilter.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
:class="inputClasses"
class="select-input w-full"
>
<option value="">-</option>
<option value=""></option>
<option v-for="(value, name) in filter.options"
:value="name"
v-text="value"
Expand Down
2 changes: 1 addition & 1 deletion app/frontend/js/components/Index/HasOne.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<template>
<index-field-wrapper :field="field">
<div v-if="field.value" v-text="field.value"></div>
<div v-else>-</div>
<empty-dash v-else />
</index-field-wrapper>
</template>

Expand Down
7 changes: 2 additions & 5 deletions app/frontend/js/components/Index/IdField.vue
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
<template>
<index-field-wrapper :field="field" class="w-12">
{{field.value}}
<div v-if="field.value" v-text="field.value"></div>
<empty-dash v-else />
</index-field-wrapper>
</template>

<script>
export default {
data: () => ({}),
props: ['field'],
computed: {},
methods: {},
mounted() {},
}
</script>
7 changes: 2 additions & 5 deletions app/frontend/js/components/Index/NumberField.vue
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
<template>
<index-field-wrapper :field="field">
{{field.value}}
<div v-if="field.value" v-text="field.value"></div>
<empty-dash v-else />
</index-field-wrapper>
</template>

<script>
export default {
data: () => ({}),
props: ['field'],
computed: {},
methods: {},
mounted() {},
}
</script>
7 changes: 2 additions & 5 deletions app/frontend/js/components/Index/PasswordField.vue
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
<template>
<index-field-wrapper :field="field">
{{field.value}}
<div v-if="field.value" v-text="field.value"></div>
<empty-dash v-else />
</index-field-wrapper>
</template>

<script>
export default {
data: () => ({}),
props: ['field'],
computed: {},
methods: {},
mounted() {},
}
</script>
3 changes: 2 additions & 1 deletion app/frontend/js/components/Index/SelectField.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<template>
<index-field-wrapper :field="field">
{{value}}
<div v-if="value" v-text="value"></div>
<empty-dash v-else />
</index-field-wrapper>
</template>

Expand Down
3 changes: 2 additions & 1 deletion app/frontend/js/components/Index/TextField.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<template>
<index-field-wrapper :field="field">
{{field.value}}
<div v-if="field.value" v-text="field.value"></div>
<empty-dash v-else />
</index-field-wrapper>
</template>

Expand Down
3 changes: 2 additions & 1 deletion app/frontend/js/components/Index/TextareaField.vue
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
<index-field-wrapper :field="field">
<a href="javascript:void(0)" @click="open = true" v-if="!open">more</a>
<div v-if="open">
{{field.value}}
<div v-if="field.value" v-text="field.value"></div>
<empty-dash v-else />
</div>
</index-field-wrapper>
</template>
Expand Down
26 changes: 26 additions & 0 deletions app/frontend/js/components/Show/BadgeField.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<template>
<show-field-wrapper :field="field" :index="index">
<Badge v-if="badgeLabel"
:type="badgeType"
:label="badgeLabel"
/>
<empty-dash v-else />
</show-field-wrapper>
</template>

<script>
import Badge from '@/js/components/BadgeComponent.vue'
export default {
props: ['field', 'index'],
components: { Badge },
computed: {
badgeType() {
return this.field.value.type
},
badgeLabel() {
return this.field.value.label
},
},
}
</script>
2 changes: 1 addition & 1 deletion app/frontend/js/components/Show/BelongsTo.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<router-link :to="field.link"
v-if="field.link"
v-text="field.value"></router-link>
<div v-else>-</div>
<empty-dash v-else />
</show-field-wrapper>
</template>

Expand Down
3 changes: 2 additions & 1 deletion app/frontend/js/components/Show/BooleanField.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<template>
<show-field-wrapper :field="field" :index="index">
{{value}}
<div v-if="value" v-text="value"></div>
<empty-dash v-else />
</show-field-wrapper>
</template>

Expand Down
4 changes: 1 addition & 3 deletions app/frontend/js/components/Show/BooleanGroupField.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@
<div v-bind:key="index">{{ emoji(val) }} {{ label(key) }}</div>
</template>
</div>
<template v-else>
-
</template>
<empty-dash v-else />
</show-field-wrapper>
</template>

Expand Down

0 comments on commit 618ba9a

Please sign in to comment.