mirror of
https://github.com/mokuappio/serverless-invoices.git
synced 2025-10-27 07:51:08 -04:00
Merge remote-tracking branch 'origin/main' into main
This commit is contained in:
12
package-lock.json
generated
12
package-lock.json
generated
@ -3143,8 +3143,7 @@
|
||||
"version": "4.6.0",
|
||||
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
|
||||
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"coa": {
|
||||
"version": "2.0.2",
|
||||
@ -7381,7 +7380,8 @@
|
||||
"lodash": {
|
||||
"version": "4.17.20",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
|
||||
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
|
||||
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.defaultsdeep": {
|
||||
"version": "4.6.1",
|
||||
@ -8822,8 +8822,7 @@
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
|
||||
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"pify": {
|
||||
"version": "4.0.1",
|
||||
@ -10348,8 +10347,7 @@
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
|
||||
"integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"dev": true
|
||||
},
|
||||
"rx-lite-aggregates": {
|
||||
"version": "4.0.8",
|
||||
|
||||
@ -16,7 +16,6 @@
|
||||
"dayjs": "^1.10.3",
|
||||
"es6-promise": "^4.2.6",
|
||||
"localforage": "^1.9.0",
|
||||
"lodash": "^4.17.20",
|
||||
"vue": "^2.6.10",
|
||||
"vue-autosuggest": "^2.2.0",
|
||||
"vue-multiselect": "^2.1.6",
|
||||
|
||||
@ -1,19 +0,0 @@
|
||||
<template>
|
||||
<div class="col-12 text-secondary text-center epmty-state">
|
||||
<div class="empty-state__task mt-5 mb-3 p-3 d-flex flex-column justify-content-between">
|
||||
<div class="empty-state__text"></div>
|
||||
<div class="col-4 p-0 d-flex flex-row align-items-center">
|
||||
<div class="empty-state__text"></div>
|
||||
<i class="material-icons md-10 text-caption ml-2">lens</i>
|
||||
</div>
|
||||
</div>
|
||||
<p class="mb-1">Drop Tasks here</p>
|
||||
<p>
|
||||
<small>Overdue and unscheduled tasks<br> end up in backlog</small>
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {};
|
||||
</script>
|
||||
@ -1,69 +0,0 @@
|
||||
<template>
|
||||
<div class="form-group color-picker">
|
||||
<label :for="field" v-if="label">{{ label }}</label>
|
||||
<b-dropdown variant="outline-secondary"
|
||||
right
|
||||
:disabled="disabled"
|
||||
class="w-100">
|
||||
<template slot="button-content">
|
||||
<i class="material-icons" v-if="value" :style="{ color: value }">lens</i>
|
||||
<!-- <span v-else>Choose color</span>-->
|
||||
</template>
|
||||
<b-dropdown-item-button v-for="color in colors"
|
||||
:key="color"
|
||||
@click="$emit('input', color)">
|
||||
<i class="material-icons" :style="{ color }">lens</i>
|
||||
</b-dropdown-item-button>
|
||||
</b-dropdown>
|
||||
<slot/>
|
||||
<AppError v-if="errors" :errors="errors" :field="field"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { BDropdown, BDropdownItemButton } from 'bootstrap-vue';
|
||||
import AppError from '@/components/form/AppError';
|
||||
import _ from 'lodash';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
AppError,
|
||||
BDropdown,
|
||||
BDropdownItemButton,
|
||||
},
|
||||
props: ['errors', 'label', 'value', 'field', 'disabled'],
|
||||
data() {
|
||||
return {
|
||||
colors: [
|
||||
'rgb(6, 170, 245)',
|
||||
'rgb(0, 0, 0)',
|
||||
'rgb(234, 70, 141)',
|
||||
'rgb(251, 139, 20)',
|
||||
'rgb(199, 116, 28)',
|
||||
|
||||
'rgb(75, 200, 0)',
|
||||
'rgb(137, 0, 0)',
|
||||
'rgb(225, 154, 134)',
|
||||
'rgb(197, 107, 255)',
|
||||
'rgb(32, 85, 0)',
|
||||
|
||||
'rgb(55, 80, 181)',
|
||||
'rgb(160, 26, 165)',
|
||||
'rgb(241, 195, 63)',
|
||||
'rgb(226, 5, 5)',
|
||||
'rgb(4, 187, 155)',
|
||||
],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.selectRandom();
|
||||
},
|
||||
methods: {
|
||||
selectRandom() {
|
||||
if (!this.value) {
|
||||
this.$emit('input', _.sample(this.colors));
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
@ -1,61 +0,0 @@
|
||||
<template>
|
||||
<div class="form-group">
|
||||
<label :for="field" v-if="label" :class="labelClasses">{{ label }}</label>
|
||||
<div :class="containerClasses">
|
||||
<textarea :disabled="disabled"
|
||||
:id="field"
|
||||
:placeholder="placeholder"
|
||||
class="form-control"
|
||||
:rows="rows"
|
||||
:class="[
|
||||
errors && errors.has(field) ? 'is-invalid' : '',
|
||||
size ? 'form-control-' + size : '',
|
||||
...inputClasses,
|
||||
]"
|
||||
:autocomplete="autocomplete"
|
||||
:maxlength="max"
|
||||
:value="value"
|
||||
@input="$emit('input', $event.target.value)"
|
||||
@change="$emit('change', $event.target.value)"
|
||||
@keydown.self.enter.exact="$emit('submit', $event.target.value)"
|
||||
:ref="field"
|
||||
>
|
||||
</textarea>
|
||||
</div>
|
||||
<slot></slot>
|
||||
<AppError v-if="errors" :errors="errors" :field="field"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import AppError from '@/components/form/AppError';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
AppError,
|
||||
},
|
||||
props: {
|
||||
errors: {},
|
||||
label: {},
|
||||
value: {},
|
||||
field: {},
|
||||
type: {},
|
||||
max: {},
|
||||
rows: {},
|
||||
disabled: {},
|
||||
placeholder: {},
|
||||
size: {},
|
||||
labelClasses: {},
|
||||
inputClasses: {},
|
||||
containerClasses: {},
|
||||
autocomplete: {
|
||||
default: 'on',
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
focus() {
|
||||
this.$refs[this.field].focus();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
@ -1,85 +0,0 @@
|
||||
<template>
|
||||
<div class="form-group typeahead">
|
||||
<VueAutosuggest
|
||||
ref="suggest"
|
||||
:input-props="{placeholder: placeholder, class: 'form-control form-control-sm tracker__input'}"
|
||||
:section-configs="config"
|
||||
:suggestions="suggestions"
|
||||
:value="value"
|
||||
:get-suggestion-value="getSuggestionValue"
|
||||
:should-render-suggestions="(size, loading) => size >= 0 && !loading && !closed"
|
||||
@input="onInput"
|
||||
@change="onChange"
|
||||
@blur="onBlur"
|
||||
@focus="onFocus"
|
||||
@selected="onSelected"
|
||||
>
|
||||
<template v-for="(_, name) in $scopedSlots" :slot="name" slot-scope="slotData">
|
||||
<slot :name="name" v-bind="slotData"/>
|
||||
</template>
|
||||
</VueAutosuggest>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { VueAutosuggest } from 'vue-autosuggest';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
VueAutosuggest,
|
||||
},
|
||||
props: {
|
||||
value: {},
|
||||
placeholder: {},
|
||||
options: {},
|
||||
labelField: {},
|
||||
sectionConfigs: {},
|
||||
filter: { default: (option, query) => (option[this.labelField].toLowerCase().indexOf(query.toLowerCase()) > -1) },
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
closed: true,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
suggestions() {
|
||||
return this.options.map(group => ({
|
||||
...group,
|
||||
data: group.data.filter(option => this.filter(option, this.value)),
|
||||
}))
|
||||
.filter(group => group.data.length > 0);
|
||||
},
|
||||
config() {
|
||||
return {
|
||||
default: { onSelected: this.onSelected },
|
||||
...this.sectionConfigs,
|
||||
};
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
getSuggestionValue(suggestion) {
|
||||
return suggestion.item[this.labelField];
|
||||
},
|
||||
onInput(query) {
|
||||
this.$emit('input', query);
|
||||
},
|
||||
onChange(event) {
|
||||
this.$emit('change', event.target.value);
|
||||
},
|
||||
onFocus() {
|
||||
this.closed = false;
|
||||
},
|
||||
onBlur() {
|
||||
this.closed = true;
|
||||
},
|
||||
onSelected(suggestion) {
|
||||
if (!suggestion) {
|
||||
this.$refs.suggest.$el.querySelector('input').blur();
|
||||
return false;
|
||||
}
|
||||
// Enter on no suggestion returns null
|
||||
this.$emit('selected', suggestion);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
Reference in New Issue
Block a user