@vc-shell/framework 1.0.93 → 1.0.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/core/utilities/camelize.ts +5 -0
  3. package/core/utilities/generateId.ts +3 -0
  4. package/core/utilities/index.ts +2 -0
  5. package/core/utilities/kebabToCamel.ts +1 -1
  6. package/dist/core/utilities/camelize.d.ts +2 -0
  7. package/dist/core/utilities/camelize.d.ts.map +1 -0
  8. package/dist/core/utilities/generateId.d.ts +2 -0
  9. package/dist/core/utilities/generateId.d.ts.map +1 -0
  10. package/dist/core/utilities/index.d.ts +2 -0
  11. package/dist/core/utilities/index.d.ts.map +1 -1
  12. package/dist/core/utilities/kebabToCamel.d.ts +1 -0
  13. package/dist/core/utilities/kebabToCamel.d.ts.map +1 -1
  14. package/dist/framework.mjs +9353 -9100
  15. package/dist/index.css +1 -1
  16. package/dist/tsconfig.tsbuildinfo +1 -1
  17. package/dist/ui/components/molecules/index.d.ts +1 -0
  18. package/dist/ui/components/molecules/index.d.ts.map +1 -1
  19. package/dist/ui/components/molecules/vc-editor/index.d.ts +10 -0
  20. package/dist/ui/components/molecules/vc-editor/index.d.ts.map +1 -1
  21. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts +1 -0
  22. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts.map +1 -1
  23. package/dist/ui/components/molecules/vc-input/index.d.ts +20 -0
  24. package/dist/ui/components/molecules/vc-input/index.d.ts.map +1 -1
  25. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts +8 -0
  26. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts.map +1 -1
  27. package/dist/ui/components/molecules/vc-multivalue/index.d.ts +44 -0
  28. package/dist/ui/components/molecules/vc-multivalue/index.d.ts.map +1 -0
  29. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts +70 -0
  30. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts.map +1 -0
  31. package/dist/ui/components/molecules/vc-select/index.d.ts +8 -0
  32. package/dist/ui/components/molecules/vc-select/index.d.ts.map +1 -1
  33. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts +8 -0
  34. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts.map +1 -1
  35. package/dist/ui/components/molecules/vc-textarea/index.d.ts +20 -0
  36. package/dist/ui/components/molecules/vc-textarea/index.d.ts.map +1 -1
  37. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts +2 -0
  38. package/dist/ui/components/molecules/vc-textarea/vc-textarea.vue.d.ts.map +1 -1
  39. package/dist/ui/components/organisms/vc-dynamic-property/index.d.ts +27 -12
  40. package/dist/ui/components/organisms/vc-dynamic-property/index.d.ts.map +1 -1
  41. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts +27 -12
  42. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts.map +1 -1
  43. package/dist/ui/types/index.d.ts +1 -0
  44. package/dist/ui/types/index.d.ts.map +1 -1
  45. package/package.json +3 -3
  46. package/ui/components/molecules/index.ts +1 -0
  47. package/ui/components/molecules/vc-editor/vc-editor.vue +3 -9
  48. package/ui/components/molecules/vc-input/vc-input.vue +10 -0
  49. package/ui/components/molecules/vc-multivalue/index.ts +3 -0
  50. package/ui/components/molecules/vc-multivalue/vc-multivalue.vue +406 -0
  51. package/ui/components/molecules/vc-select/vc-select.vue +4 -0
  52. package/ui/components/molecules/vc-textarea/vc-textarea.vue +4 -0
  53. package/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue +47 -23
  54. package/ui/types/index.ts +1 -0
@@ -1,11 +1,13 @@
1
1
  declare const _default: <T>(__VLS_props: {
2
2
  property: T;
3
3
  modelValue: any;
4
- optionsGetter: (property: T, keyword?: string) => Promise<unknown[]>;
4
+ optionsGetter: (property: T, keyword?: string, locale?: string) => Promise<unknown[]> | unknown[];
5
5
  required: boolean;
6
- multivalue: boolean;
6
+ multivalue?: boolean;
7
+ multilanguage?: boolean;
8
+ currentLanguage?: string;
7
9
  valueType: string;
8
- dictionary: boolean;
10
+ dictionary?: boolean;
9
11
  name: string;
10
12
  optionsValue?: string;
11
13
  optionsLabel?: string;
@@ -19,15 +21,18 @@ declare const _default: <T>(__VLS_props: {
19
21
  regex: string;
20
22
  };
21
23
  disabled?: boolean;
24
+ placeholder?: string;
22
25
  } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, __VLS_ctx?: Pick<{
23
26
  props: {
24
27
  property: T;
25
28
  modelValue: any;
26
- optionsGetter: (property: T, keyword?: string) => Promise<unknown[]>;
29
+ optionsGetter: (property: T, keyword?: string, locale?: string) => Promise<unknown[]> | unknown[];
27
30
  required: boolean;
28
- multivalue: boolean;
31
+ multivalue?: boolean;
32
+ multilanguage?: boolean;
33
+ currentLanguage?: string;
29
34
  valueType: string;
30
- dictionary: boolean;
35
+ dictionary?: boolean;
31
36
  name: string;
32
37
  optionsValue?: string;
33
38
  optionsLabel?: string;
@@ -41,6 +46,7 @@ declare const _default: <T>(__VLS_props: {
41
46
  regex: string;
42
47
  };
43
48
  disabled?: boolean;
49
+ placeholder?: string;
44
50
  };
45
51
  expose(exposed: {}): void;
46
52
  attrs: any;
@@ -50,17 +56,20 @@ declare const _default: <T>(__VLS_props: {
50
56
  readonly property: T;
51
57
  readonly value: any;
52
58
  readonly dictionary?: any[];
59
+ readonly locale?: string;
53
60
  }];
54
61
  };
55
62
  }, "slots" | "attrs" | "emit">, __VLS_setup?: {
56
63
  props: {
57
64
  property: T;
58
65
  modelValue: any;
59
- optionsGetter: (property: T, keyword?: string) => Promise<unknown[]>;
66
+ optionsGetter: (property: T, keyword?: string, locale?: string) => Promise<unknown[]> | unknown[];
60
67
  required: boolean;
61
- multivalue: boolean;
68
+ multivalue?: boolean;
69
+ multilanguage?: boolean;
70
+ currentLanguage?: string;
62
71
  valueType: string;
63
- dictionary: boolean;
72
+ dictionary?: boolean;
64
73
  name: string;
65
74
  optionsValue?: string;
66
75
  optionsLabel?: string;
@@ -74,6 +83,7 @@ declare const _default: <T>(__VLS_props: {
74
83
  regex: string;
75
84
  };
76
85
  disabled?: boolean;
86
+ placeholder?: string;
77
87
  };
78
88
  expose(exposed: {}): void;
79
89
  attrs: any;
@@ -83,6 +93,7 @@ declare const _default: <T>(__VLS_props: {
83
93
  readonly property: T;
84
94
  readonly value: any;
85
95
  readonly dictionary?: any[];
96
+ readonly locale?: string;
86
97
  }];
87
98
  };
88
99
  }) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
@@ -92,11 +103,13 @@ declare const _default: <T>(__VLS_props: {
92
103
  props: {
93
104
  property: T;
94
105
  modelValue: any;
95
- optionsGetter: (property: T, keyword?: string) => Promise<unknown[]>;
106
+ optionsGetter: (property: T, keyword?: string, locale?: string) => Promise<unknown[]> | unknown[];
96
107
  required: boolean;
97
- multivalue: boolean;
108
+ multivalue?: boolean;
109
+ multilanguage?: boolean;
110
+ currentLanguage?: string;
98
111
  valueType: string;
99
- dictionary: boolean;
112
+ dictionary?: boolean;
100
113
  name: string;
101
114
  optionsValue?: string;
102
115
  optionsLabel?: string;
@@ -110,6 +123,7 @@ declare const _default: <T>(__VLS_props: {
110
123
  regex: string;
111
124
  };
112
125
  disabled?: boolean;
126
+ placeholder?: string;
113
127
  };
114
128
  expose(exposed: {}): void;
115
129
  attrs: any;
@@ -119,6 +133,7 @@ declare const _default: <T>(__VLS_props: {
119
133
  readonly property: T;
120
134
  readonly value: any;
121
135
  readonly dictionary?: any[];
136
+ readonly locale?: string;
122
137
  }];
123
138
  };
124
139
  };
@@ -1 +1 @@
1
- {"version":3,"file":"vc-dynamic-property.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.ts"],"names":[],"mappings":";;gBAiegB,GAAG;2CACwB,MAAM,KAAK,QAAQ,OAAO,EAAE,CAAC;cAC1D,OAAO;gBACL,OAAO;eACR,MAAM;gBACL,OAAO;UACb,MAAM;mBACG,MAAM;mBACN,MAAM;mBACN;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,EAAE;YACK;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf;eACU,OAAO;;;;oBAlBN,GAAG;+CACwB,MAAM,KAAK,QAAQ,OAAO,EAAE,CAAC;kBAC1D,OAAO;oBACL,OAAO;mBACR,MAAM;oBACL,OAAO;cACb,MAAM;uBACG,MAAM;uBACN,MAAM;uBACN;YACb,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,EAAE;gBACK;YACN,GAAG,EAAE,MAAM,CAAC;YACZ,GAAG,EAAE,MAAM,CAAC;YACZ,KAAK,EAAE,MAAM,CAAC;SACf;mBACU,OAAO;;yBAOiB,IAAI;WACpC,GAAG;;;;;4BAL6D,GAAG;kCAAwB,GAAG,EAAE;;;;;;oBArBvF,GAAG;+CACwB,MAAM,KAAK,QAAQ,OAAO,EAAE,CAAC;kBAC1D,OAAO;oBACL,OAAO;mBACR,MAAM;oBACL,OAAO;cACb,MAAM;uBACG,MAAM;uBACN,MAAM;uBACN;YACb,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,EAAE;gBACK;YACN,GAAG,EAAE,MAAM,CAAC;YACZ,GAAG,EAAE,MAAM,CAAC;YACZ,KAAK,EAAE,MAAM,CAAC;SACf;mBACU,OAAO;;yBAOiB,IAAI;WACpC,GAAG;;;;;4BAL6D,GAAG;kCAAwB,GAAG,EAAE;;;;;;;;;wBArBvF,GAAG;mDACwB,MAAM,KAAK,QAAQ,OAAO,EAAE,CAAC;sBAC1D,OAAO;wBACL,OAAO;uBACR,MAAM;wBACL,OAAO;kBACb,MAAM;2BACG,MAAM;2BACN,MAAM;2BACN;gBACb,IAAI,CAAC,EAAE,MAAM,CAAC;gBACd,YAAY,CAAC,EAAE,MAAM,CAAC;aACvB,EAAE;oBACK;gBACN,GAAG,EAAE,MAAM,CAAC;gBACZ,GAAG,EAAE,MAAM,CAAC;gBACZ,KAAK,EAAE,MAAM,CAAC;aACf;uBACU,OAAO;;6BAOiB,IAAI;eACpC,GAAG;;;;;gCAL6D,GAAG;sCAAwB,GAAG,EAAE;;;;;AA/evG,wBAwfkE"}
1
+ {"version":3,"file":"vc-dynamic-property.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.ts"],"names":[],"mappings":";;gBAgfgB,GAAG;2CACwB,MAAM,WAAW,MAAM,KAAK,QAAQ,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE;cACvF,OAAO;iBACJ,OAAO;oBACJ,OAAO;sBACL,MAAM;eACb,MAAM;iBACJ,OAAO;UACd,MAAM;mBACG,MAAM;mBACN,MAAM;mBACN;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,EAAE;YACK;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf;eACU,OAAO;kBACJ,MAAM;;;;oBArBR,GAAG;+CACwB,MAAM,WAAW,MAAM,KAAK,QAAQ,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE;kBACvF,OAAO;qBACJ,OAAO;wBACJ,OAAO;0BACL,MAAM;mBACb,MAAM;qBACJ,OAAO;cACd,MAAM;uBACG,MAAM;uBACN,MAAM;uBACN;YACb,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,EAAE;gBACK;YACN,GAAG,EAAE,MAAM,CAAC;YACZ,GAAG,EAAE,MAAM,CAAC;YACZ,KAAK,EAAE,MAAM,CAAC;SACf;mBACU,OAAO;sBACJ,MAAM;;yBASe,IAAI;WACpC,GAAG;;;;;4BANwC,GAAG;kCAAwB,GAAG,EAAE;8BAAoB,MAAM;;;;;;oBAzB5F,GAAG;+CACwB,MAAM,WAAW,MAAM,KAAK,QAAQ,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE;kBACvF,OAAO;qBACJ,OAAO;wBACJ,OAAO;0BACL,MAAM;mBACb,MAAM;qBACJ,OAAO;cACd,MAAM;uBACG,MAAM;uBACN,MAAM;uBACN;YACb,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,EAAE;gBACK;YACN,GAAG,EAAE,MAAM,CAAC;YACZ,GAAG,EAAE,MAAM,CAAC;YACZ,KAAK,EAAE,MAAM,CAAC;SACf;mBACU,OAAO;sBACJ,MAAM;;yBASe,IAAI;WACpC,GAAG;;;;;4BANwC,GAAG;kCAAwB,GAAG,EAAE;8BAAoB,MAAM;;;;;;;;;wBAzB5F,GAAG;mDACwB,MAAM,WAAW,MAAM,KAAK,QAAQ,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE;sBACvF,OAAO;yBACJ,OAAO;4BACJ,OAAO;8BACL,MAAM;uBACb,MAAM;yBACJ,OAAO;kBACd,MAAM;2BACG,MAAM;2BACN,MAAM;2BACN;gBACb,IAAI,CAAC,EAAE,MAAM,CAAC;gBACd,YAAY,CAAC,EAAE,MAAM,CAAC;aACvB,EAAE;oBACK;gBACN,GAAG,EAAE,MAAM,CAAC;gBACZ,GAAG,EAAE,MAAM,CAAC;gBACZ,KAAK,EAAE,MAAM,CAAC;aACf;uBACU,OAAO;0BACJ,MAAM;;6BASe,IAAI;eACpC,GAAG;;;;;gCANwC,GAAG;sCAAwB,GAAG,EAAE;kCAAoB,MAAM;;;;;AAlgB5G,wBA4gBkE"}
@@ -33,6 +33,7 @@ declare module "@vue/runtime-core" {
33
33
  VcSelect: (typeof VcShellComponents)["VcSelect"];
34
34
  VcSlider: (typeof VcShellComponents)["VcSlider"];
35
35
  VcTextarea: (typeof VcShellComponents)["VcTextarea"];
36
+ VcMultivalue: (typeof VcShellComponents)["VcMultivalue"];
36
37
  VcApp: (typeof VcShellComponents)["VcApp"];
37
38
  VcBlade: (typeof VcShellComponents)["VcBlade"];
38
39
  VcDynamicProperty: (typeof VcShellComponents)["VcDynamicProperty"];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../ui/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../ui/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vc-shell/framework",
3
- "version": "1.0.93",
3
+ "version": "1.0.95",
4
4
  "main": "./dist/framework.mjs",
5
5
  "module": "./dist/framework.mjs",
6
6
  "types": "./dist/index.d.ts",
@@ -55,8 +55,8 @@
55
55
  "whatwg-fetch": "^3.6.2"
56
56
  },
57
57
  "devDependencies": {
58
- "@vc-shell/api-client-generator": "^1.0.93",
59
- "@vc-shell/config-generator": "^1.0.93",
58
+ "@vc-shell/api-client-generator": "^1.0.95",
59
+ "@vc-shell/config-generator": "^1.0.95",
60
60
  "@vitejs/plugin-vue": "^4.2.3",
61
61
  "sass": "^1.62.1",
62
62
  "typescript": "~5.0.4",
@@ -11,3 +11,4 @@ export * from "./vc-rating";
11
11
  export * from "./vc-select";
12
12
  export * from "./vc-slider";
13
13
  export * from "./vc-textarea";
14
+ export * from "./vc-multivalue";
@@ -13,7 +13,7 @@
13
13
  v-if="label"
14
14
  class="tw-mb-2"
15
15
  :required="required"
16
- :multilanguage="true"
16
+ :multilanguage="multilanguage"
17
17
  :current-language="currentLanguage"
18
18
  >
19
19
  <span>{{ label }}</span>
@@ -65,13 +65,12 @@ export interface Props {
65
65
  tooltip?: string;
66
66
  errorMessage?: string;
67
67
  assetsFolder: string;
68
- //languages?: string[];
68
+ multilanguage?: boolean;
69
69
  currentLanguage?: string;
70
70
  }
71
71
 
72
72
  export interface Emits {
73
73
  (event: "update:modelValue", value: string | number | Date | null | undefined): void;
74
- //(event: "update:currentLanguage", value: string): void;
75
74
  }
76
75
 
77
76
  const { getAccessToken } = useUser();
@@ -97,13 +96,8 @@ const toolbar = {
97
96
  "blockquote",
98
97
  { list: "ordered" },
99
98
  { list: "bullet" },
100
- //{ language: [props.currentLanguage, ...props.languages.filter((lang) => lang !== props.currentLanguage)] },
101
99
  ],
102
- handlers: {
103
- // language: function (value: string) {
104
- // emit("update:currentLanguage", value);
105
- // },
106
- },
100
+ handlers: {},
107
101
  };
108
102
 
109
103
  const modules = {
@@ -16,6 +16,8 @@
16
16
  v-if="label"
17
17
  class="tw-mb-2"
18
18
  :required="required"
19
+ :multilanguage="multilanguage"
20
+ :current-language="currentLanguage"
19
21
  >
20
22
  <span>{{ label }}</span>
21
23
  <template
@@ -249,6 +251,14 @@ export interface Props {
249
251
  * Input required state
250
252
  */
251
253
  required?: boolean;
254
+ /**
255
+ * Input multilanguage state
256
+ */
257
+ multilanguage?: boolean;
258
+ /**
259
+ * Input current language
260
+ */
261
+ currentLanguage?: string;
252
262
  }
253
263
 
254
264
  export interface Emits {
@@ -0,0 +1,3 @@
1
+ import _Multivalue from "./vc-multivalue.vue";
2
+
3
+ export const VcMultivalue = _Multivalue as typeof _Multivalue;
@@ -0,0 +1,406 @@
1
+ <template>
2
+ <div
3
+ class="vc-multivalue"
4
+ :class="[
5
+ `vc-multivalue_${type}`,
6
+ {
7
+ 'vc-multivalue_opened': isOpened,
8
+ 'vc-multivalue_error tw-pb-[20px]': error,
9
+ 'vc-multivalue_disabled': disabled,
10
+ },
11
+ ]"
12
+ >
13
+ <!-- Input label -->
14
+ <VcLabel
15
+ v-if="label"
16
+ class="tw-mb-2"
17
+ :required="required"
18
+ :multilanguage="multilanguage"
19
+ :current-language="currentLanguage"
20
+ >
21
+ <span>{{ label }}</span>
22
+ <template
23
+ v-if="tooltip"
24
+ #tooltip
25
+ >{{ tooltip }}</template
26
+ >
27
+ </VcLabel>
28
+
29
+ <!-- Input field -->
30
+ <div
31
+ ref="dropdownToggleRef"
32
+ class="vc-multivalue__field-wrapper"
33
+ >
34
+ <div
35
+ v-for="(item, i) in modelValue"
36
+ :key="`${item?.id}_${generateId()}`"
37
+ class="vc-multivalue__field-value-wrapper"
38
+ >
39
+ <div
40
+ v-if="item"
41
+ class="vc-multivalue__field-value"
42
+ >
43
+ <span class="tw-truncate">{{
44
+ type === "number" ? Number(item[props.emitLabel]).toFixed(3) : item[props.emitLabel]
45
+ }}</span>
46
+ <VcIcon
47
+ v-if="!disabled"
48
+ class="vc-multivalue__field-value-clear"
49
+ icon="fas fa-times"
50
+ size="s"
51
+ @click="onDelete(i)"
52
+ ></VcIcon>
53
+ </div>
54
+ </div>
55
+
56
+ <template v-if="multivalue">
57
+ <div class="vc-multivalue__field vc-multivalue__field_dictionary tw-grow tw-basis-0 tw-p-2">
58
+ <VcButton
59
+ small
60
+ @click.stop="toggleDropdown"
61
+ >Add +</VcButton
62
+ >
63
+ <teleport to="#app">
64
+ <div
65
+ v-if="isOpened"
66
+ ref="dropdownRef"
67
+ v-on-click-outside="[toggleDropdown, { ignore: [dropdownToggleRef] }]"
68
+ class="vc-multivalue__dropdown"
69
+ :style="dropdownStyle"
70
+ >
71
+ <input
72
+ ref="searchRef"
73
+ class="vc-multivalue__search"
74
+ @input="onSearch"
75
+ />
76
+
77
+ <VcContainer
78
+ ref="root"
79
+ :no-padding="true"
80
+ >
81
+ <div
82
+ v-for="(item, i) in slicedDictionary"
83
+ :key="i"
84
+ class="vc-multivalue__item"
85
+ @click="onItemSelect(item)"
86
+ >
87
+ <slot
88
+ name="item"
89
+ :item="item"
90
+ >{{ item[optionLabel] }}</slot
91
+ >
92
+ </div>
93
+ </VcContainer>
94
+ </div>
95
+ </teleport>
96
+ </div>
97
+ </template>
98
+ <template v-else>
99
+ <input
100
+ v-model="value"
101
+ class="vc-multivalue__field tw-grow tw-basis-0 tw-pl-3"
102
+ :placeholder="placeholder"
103
+ :type="type"
104
+ :disabled="disabled"
105
+ @keypress.enter.stop.prevent="onInput"
106
+ />
107
+ </template>
108
+ </div>
109
+
110
+ <slot
111
+ v-if="errorMessage"
112
+ name="error"
113
+ >
114
+ <VcHint class="vc-multivalue__error tw-mt-1">
115
+ {{ errorMessage }}
116
+ </VcHint>
117
+ </slot>
118
+ </div>
119
+ </template>
120
+
121
+ <script lang="ts" setup generic="T extends {id?: string; alias?: string, languageCode?: string, value?:string}">
122
+ import { unref, nextTick, ref, computed } from "vue";
123
+ import { vOnClickOutside } from "@vueuse/components";
124
+ import { useFloating, UseFloatingReturn, offset, flip, shift, autoUpdate } from "@floating-ui/vue";
125
+ import { generateId } from "../../../../core/utilities";
126
+
127
+ export interface Props<T> {
128
+ placeholder?: string;
129
+ modelValue?: T[];
130
+ required?: boolean;
131
+ disabled?: boolean;
132
+ type?: "text" | "number";
133
+ label?: string;
134
+ tooltip?: string;
135
+ name?: string;
136
+ options?: T[];
137
+ optionValue?: string;
138
+ optionLabel?: string;
139
+ emitValue?: string;
140
+ emitLabel?: string;
141
+ multivalue?: boolean;
142
+ error?: boolean;
143
+ errorMessage?: string;
144
+ multilanguage?: boolean;
145
+ currentLanguage?: string;
146
+ }
147
+
148
+ export interface Emits<T> {
149
+ (event: "update:model-value", value: T[]): void;
150
+ (event: "close"): void;
151
+ (event: "search", value: string): void;
152
+ }
153
+
154
+ type FloatingInstanceType = UseFloatingReturn & {
155
+ middlewareData: {
156
+ sameWidthChangeBorders: {
157
+ borderTop?: string;
158
+ borderBottom?: string;
159
+ borderRadius?: string;
160
+ width?: string;
161
+ };
162
+ };
163
+ };
164
+
165
+ const props = withDefaults(defineProps<Props<T>>(), {
166
+ modelValue: () => [],
167
+ type: "text",
168
+ name: "Field",
169
+ options: () => [],
170
+ optionValue: "id",
171
+ optionLabel: "title",
172
+ emitValue: "valueId",
173
+ emitLabel: "value",
174
+ });
175
+
176
+ const emit = defineEmits<Emits<T>>();
177
+
178
+ const dropdownToggleRef = ref();
179
+ const dropdownRef = ref();
180
+ const root = ref();
181
+ const searchRef = ref();
182
+ const isOpened = ref(false);
183
+ const value = ref();
184
+
185
+ const popper = useFloating(dropdownToggleRef, dropdownRef, {
186
+ placement: "bottom",
187
+ whileElementsMounted: autoUpdate,
188
+ middleware: [
189
+ flip({ fallbackPlacements: ["top", "bottom"] }),
190
+ shift({ mainAxis: false }),
191
+ sameWidthChangeBorders(),
192
+ offset(-2),
193
+ ],
194
+ }) as FloatingInstanceType;
195
+
196
+ const dropdownStyle = computed(() => {
197
+ return {
198
+ top: `${popper.y.value ?? 0}px`,
199
+ left: `${popper.x.value ?? 0}px`,
200
+ ...popper.middlewareData.value.sameWidthChangeBorders,
201
+ };
202
+ });
203
+
204
+ const slicedDictionary = computed(() => {
205
+ return props.options?.filter((x) => {
206
+ return !props.modelValue?.find((item) => item[props.emitValue] === x[props.optionValue]);
207
+ });
208
+ });
209
+
210
+ // Handle input event to propertly validate value and emit changes
211
+ function onInput(e: KeyboardEvent) {
212
+ const newValue = (e.target as HTMLInputElement).value;
213
+ emit("update:model-value", [
214
+ ...props.modelValue,
215
+ { [props.emitLabel]: newValue, languageCode: props.currentLanguage } as T,
216
+ ]);
217
+ value.value = undefined;
218
+ }
219
+
220
+ function onItemSelect(item: T) {
221
+ emit("update:model-value", [
222
+ ...props.modelValue,
223
+ { [props.emitValue]: item[props.optionValue], [props.emitLabel]: item[props.optionLabel] } as T,
224
+ ]);
225
+ emit("close");
226
+ closeDropdown();
227
+ }
228
+
229
+ // Handle event to propertly remove particular value and emit changes
230
+ function onDelete(i: number) {
231
+ const result = unref(props.modelValue);
232
+ result.splice(i, 1);
233
+ emit("update:model-value", [...result]);
234
+ }
235
+
236
+ function sameWidthChangeBorders() {
237
+ return {
238
+ name: "sameWidthChangeBorders",
239
+ fn: ({ rects, placement, x, y }) => {
240
+ let borderTop;
241
+ let borderBottom;
242
+ let borderRadius;
243
+ if (placement === "top") {
244
+ borderTop = "1px solid var(--select-border-color)";
245
+ borderBottom = "1px solid var(--select-background-color)";
246
+ borderRadius = "var(--select-border-radius) var(--select-border-radius) 0 0";
247
+ } else {
248
+ borderBottom = "1px solid var(--select-border-color)";
249
+ borderTop = "1px solid var(--select-background-color)";
250
+ borderRadius = "0 0 var(--select-border-radius) var(--select-border-radius)";
251
+ }
252
+
253
+ const width = `${rects.reference.width}px`;
254
+
255
+ return {
256
+ x,
257
+ y,
258
+ data: {
259
+ borderTop,
260
+ borderBottom,
261
+ borderRadius,
262
+ width,
263
+ },
264
+ };
265
+ },
266
+ };
267
+ }
268
+
269
+ async function toggleDropdown() {
270
+ if (!props.disabled) {
271
+ if (isOpened.value) {
272
+ closeDropdown();
273
+ } else {
274
+ isOpened.value = true;
275
+
276
+ nextTick(() => {
277
+ searchRef?.value?.focus();
278
+ });
279
+ }
280
+ }
281
+ }
282
+
283
+ function closeDropdown() {
284
+ isOpened.value = false;
285
+ emit("close");
286
+ }
287
+
288
+ function onSearch(event: InputEvent) {
289
+ emit("search", (event.target as HTMLInputElement).value);
290
+ }
291
+ </script>
292
+
293
+ <style lang="scss">
294
+ :root {
295
+ --multivalue-height: 38px;
296
+ --multivalue-border-radius: 3px;
297
+ --multivalue-border-color: #d3dbe9;
298
+ --multivalue-border-color-error: #f14e4e;
299
+ --multivalue-background-color: #ffffff;
300
+ --multivalue-placeholder-color: #a5a5a5;
301
+
302
+ --select-height: 38px;
303
+ --select-border-radius: 3px;
304
+ --select-border-color: #d3dbe9;
305
+ --select-border-color-error: #f14e4e;
306
+ --select-background-color: #ffffff;
307
+ --select-background-color-disabled: #fafafa;
308
+ --select-placeholder-color: #a5a5a5;
309
+ --select-chevron-color: #43b0e6;
310
+ --select-chevron-color-hover: #319ed4;
311
+ }
312
+
313
+ .vc-multivalue {
314
+ @apply tw-overflow-hidden;
315
+
316
+ &_date,
317
+ &_datetime-local {
318
+ @apply tw-max-w-[220px];
319
+
320
+ .vc-app_mobile & {
321
+ @apply tw-max-w-full;
322
+ }
323
+ }
324
+
325
+ &__field-wrapper {
326
+ @apply tw-border tw-border-solid
327
+ tw-border-[color:var(--multivalue-border-color)]
328
+ tw-rounded-[var(--multivalue-border-radius)]
329
+ tw-bg-[color:var(--multivalue-background-color)]
330
+ tw-items-center
331
+ tw-flex
332
+ tw-flex-wrap;
333
+ }
334
+
335
+ &__dropdown {
336
+ @apply tw-flex tw-flex-col tw-box-border
337
+ tw-max-h-[300px] tw-z-10 tw-overflow-hidden
338
+ tw-absolute tw-bg-[color:var(--select-background-color)]
339
+ tw-border tw-border-solid tw-border-[color:var(--select-border-color)]
340
+ tw-border-t-[color:var(--select-background-color)]
341
+ tw-rounded-b-[var(--select-border-radius)]
342
+ tw-p-2;
343
+ }
344
+
345
+ &__search {
346
+ @apply tw-w-full tw-box-border tw-border tw-border-solid tw-border-[#eaecf2]
347
+ tw-rounded-[4px] tw-h-8 tw-leading-[32px]
348
+ tw-outline-none tw-mb-3 tw-px-2;
349
+ }
350
+
351
+ &__item {
352
+ @apply tw-flex tw-items-center tw-min-h-[36px] tw-px-2 tw-rounded-[3px] tw-cursor-pointer hover:tw-bg-[#eff7fc];
353
+ }
354
+
355
+ &_opened &__field-wrapper {
356
+ @apply tw-rounded-t-[var(--select-border-radius)];
357
+ }
358
+
359
+ &_error &__field-wrapper {
360
+ @apply tw-border tw-border-solid tw-border-[color:var(--multivalue-border-color-error)];
361
+ }
362
+
363
+ &__error {
364
+ @apply tw-text-[color:var(--multivalue-border-color-error)];
365
+ }
366
+
367
+ &__field {
368
+ @apply tw-border-none tw-outline-none tw-h-[var(--multivalue-height)]
369
+ tw-min-w-[120px] tw-box-border placeholder:tw-text-[color:var(--multivalue-placeholder-color)];
370
+
371
+ &::-webkit-input-placeholder {
372
+ @apply tw-text-[color:var(--multivalue-placeholder-color)];
373
+ }
374
+
375
+ &::-moz-placeholder {
376
+ @apply tw-text-[color:var(--multivalue-placeholder-color)];
377
+ }
378
+
379
+ &::-ms-placeholder {
380
+ @apply tw-text-[color:var(--multivalue-placeholder-color)];
381
+ }
382
+
383
+ &-value-wrapper {
384
+ @apply tw-h-[var(--multivalue-height)] tw-ml-2 tw-flex tw-items-center;
385
+ }
386
+
387
+ &-value {
388
+ @apply tw-bg-[#fbfdfe] tw-border tw-border-solid tw-border-[color:#bdd1df] tw-rounded-[2px]
389
+ tw-flex tw-items-center tw-h-[28px] tw-box-border tw-px-2 tw-max-w-[150px];
390
+
391
+ &-clear {
392
+ @apply tw-text-[#a9bfd2] tw-ml-2 tw-cursor-pointer;
393
+ }
394
+ }
395
+
396
+ &_dictionary {
397
+ @apply tw-h-auto tw-min-w-[auto];
398
+ }
399
+ }
400
+
401
+ &_disabled &__field-wrapper,
402
+ &_disabled &__field {
403
+ @apply tw-bg-[#fafafa] tw-text-[#424242];
404
+ }
405
+ }
406
+ </style>
@@ -13,6 +13,8 @@
13
13
  v-if="label"
14
14
  class="tw-mb-2"
15
15
  :required="required"
16
+ :multilanguage="multilanguage"
17
+ :current-language="currentLanguage"
16
18
  >
17
19
  <span>{{ label }}</span>
18
20
  <template
@@ -478,6 +480,8 @@ const props = withDefaults(
478
480
  * Input search activation
479
481
  */
480
482
  searchable?: boolean;
483
+ multilanguage?: boolean;
484
+ currentLanguage?: string;
481
485
  }>(),
482
486
  {
483
487
  optionValue: "id",
@@ -11,6 +11,8 @@
11
11
  v-if="label"
12
12
  class="tw-mb-2"
13
13
  :required="required"
14
+ :multilanguage="multilanguage"
15
+ :current-language="currentLanguage"
14
16
  >
15
17
  <span>{{ label }}</span>
16
18
  <template
@@ -58,6 +60,8 @@ export interface Props {
58
60
  name?: string;
59
61
  maxchars?: string;
60
62
  errorMessage?: string;
63
+ multilanguage?: boolean;
64
+ currentLanguage?: string;
61
65
  }
62
66
 
63
67
  export interface Emits {