Fix SelectMultipleEnumComponent as ti should be (generate array of integers)
This commit is contained in:
parent
16fe3773a9
commit
cc24e547d2
2 changed files with 19 additions and 17 deletions
|
|
@ -82,13 +82,13 @@
|
|||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent } from "vue";
|
||||
import type VueTagsInput from "@sipec/vue3-tags-input";
|
||||
import { VueTagsInput as VueTagsInputCls } from "@sipec/vue3-tags-input";
|
||||
import slugify from "slugify";
|
||||
import { defineComponent } from "vue";
|
||||
import parseLaravelErrorMessages from "./../modules/parseLaravelErrorMessages";
|
||||
import route from "./../modules/route";
|
||||
import trans from "./../modules/trans";
|
||||
import parseLaravelErrorMessages from "./../modules/parseLaravelErrorMessages";
|
||||
|
||||
export default defineComponent({
|
||||
name: "SelectMultipleEnumComponent",
|
||||
|
|
@ -145,7 +145,7 @@ export default defineComponent({
|
|||
this.intName = data.name;
|
||||
this.intLabel = data.label;
|
||||
this.intHelper = data.helper;
|
||||
this.intAllItems = this.parseTags(data.itemsList);
|
||||
this.intAllItems = (data.itemsList as CustomTag[]).map(item => {item.text = item.label; return item;});
|
||||
this.intSelectedItem = this.parseTags(data.itemsSelected);
|
||||
this.intPlaceholder = data.placeholder;
|
||||
this.intItemLimit = data.itemLimit;
|
||||
|
|
@ -156,18 +156,20 @@ export default defineComponent({
|
|||
this.checkSpecificItem();
|
||||
},
|
||||
methods: {
|
||||
parseTags(intSelectedItem: CustomTag[]): CustomTag[] {
|
||||
return intSelectedItem.map((intItem: CustomTag) => {
|
||||
if (!intItem.value)
|
||||
intItem = this.intAllItems
|
||||
.filter((intItemEnum) => {
|
||||
return intItemEnum.value == intItem.id;
|
||||
})
|
||||
.shift() as CustomTag;
|
||||
intItem.id = String(intItem.value);
|
||||
intItem.text = String(intItem.label);
|
||||
return intItem;
|
||||
parseTags(intSelectedItem: number[]): CustomTag[] {
|
||||
const out: CustomTag[] = [];
|
||||
intSelectedItem.forEach((intItem: number) => {
|
||||
const selectedItem = this.intAllItems.find(item=> item.value === intItem);
|
||||
if (!selectedItem) {
|
||||
throw new Error(`Could not find enum ${intItem}`);
|
||||
}
|
||||
out.push({
|
||||
id: String(selectedItem.value),
|
||||
value: String(selectedItem.value),
|
||||
text: String(selectedItem.text)
|
||||
} as LaravelModel as CustomTag);
|
||||
});
|
||||
return out;
|
||||
},
|
||||
/**
|
||||
* Add item
|
||||
|
|
|
|||
6
resources/ts/index.d.ts
vendored
6
resources/ts/index.d.ts
vendored
|
|
@ -1,7 +1,7 @@
|
|||
export {};
|
||||
export { };
|
||||
|
||||
import { AxiosStatic } from "axios";
|
||||
import type VueTagsInput from "@sipec/vue3-tags-input";
|
||||
import { AxiosStatic } from "axios";
|
||||
|
||||
// * Recursive List<string>
|
||||
type StringList = Record<PropertyKey, string>;
|
||||
|
|
@ -30,7 +30,7 @@ type NestedNumberList = NestedNumberListInterface | NumberList | number;
|
|||
type ModelList = Array<Model>;
|
||||
|
||||
declare global {
|
||||
type CustomTag = LaravelModel & VueTagsInput.ITag;
|
||||
type CustomTag = LaravelModel & VueTagsInput.ITag & {name:string,label:string, value:number|string};
|
||||
type LaravelModel = Model;
|
||||
type LaravelModelList = ModelList;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue