@vc-shell/framework 1.0.224 → 1.0.226
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.
- package/CHANGELOG.md +24 -0
- package/dist/framework.js +1084 -1059
- package/dist/index.css +1 -1
- package/dist/shared/modules/dynamic/components/fields/Table.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/Checkbox.stories.d.ts +8 -8
- package/dist/shared/modules/dynamic/components/fields/storybook/InputCurrency.stories.d.ts +8 -8
- package/dist/shared/modules/dynamic/components/fields/storybook/RadioButtonGroup.stories.d.ts +8 -8
- package/dist/shared/modules/dynamic/factories/base/useDetailsFactory.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/factories/types/index.d.ts +1 -1
- package/dist/shared/modules/dynamic/factories/types/index.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/helpers/nodeBuilder.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/types/index.d.ts +14 -6
- package/dist/shared/modules/dynamic/types/index.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts +16 -0
- package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts +6 -3
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
- package/package.json +4 -4
- package/shared/modules/dynamic/components/fields/Table.ts +1 -2
- package/shared/modules/dynamic/factories/base/useDetailsFactory.ts +7 -4
- package/shared/modules/dynamic/factories/types/index.ts +1 -1
- package/shared/modules/dynamic/helpers/nodeBuilder.ts +15 -0
- package/shared/modules/dynamic/types/index.ts +14 -6
- package/ui/components/atoms/vc-tooltip/vc-tooltip.vue +11 -9
- package/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue +21 -10
- package/ui/components/organisms/vc-table/vc-table.vue +26 -17
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
import { Placement } from "@floating-ui/vue";
|
|
2
2
|
export interface Props {
|
|
3
3
|
placement?: Placement;
|
|
4
|
+
offset?: {
|
|
5
|
+
crossAxis?: number;
|
|
6
|
+
mainAxis?: number;
|
|
7
|
+
};
|
|
4
8
|
}
|
|
5
9
|
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
|
|
6
10
|
placement: string;
|
|
11
|
+
offset: () => {
|
|
12
|
+
crossAxis: number;
|
|
13
|
+
mainAxis: number;
|
|
14
|
+
};
|
|
7
15
|
}>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
|
|
8
16
|
placement: string;
|
|
17
|
+
offset: () => {
|
|
18
|
+
crossAxis: number;
|
|
19
|
+
mainAxis: number;
|
|
20
|
+
};
|
|
9
21
|
}>>>, {
|
|
10
22
|
placement: Placement;
|
|
23
|
+
offset: {
|
|
24
|
+
crossAxis?: number | undefined;
|
|
25
|
+
mainAxis?: number | undefined;
|
|
26
|
+
};
|
|
11
27
|
}, {}>, Readonly<{
|
|
12
28
|
default: void;
|
|
13
29
|
tooltip?: void | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc-tooltip.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/atoms/vc-tooltip/vc-tooltip.vue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,SAAS,
|
|
1
|
+
{"version":3,"file":"vc-tooltip.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/atoms/vc-tooltip/vc-tooltip.vue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,SAAS,EAA4B,MAAM,kBAAkB,CAAC;AAE3F,MAAM,WAAW,KAAK;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;;;;;;;;;;;;;;;;;;;;;;;;;;AAwKD,wBAAwG;AACxG,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC;AACxD,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}
|
|
@@ -11,8 +11,9 @@ export interface TableItem {
|
|
|
11
11
|
declare const _default: <T extends string | TableItem>(__VLS_props: {
|
|
12
12
|
onClick?: (() => any) | undefined;
|
|
13
13
|
onSelect?: (() => any) | undefined;
|
|
14
|
-
|
|
14
|
+
items: T[];
|
|
15
15
|
actionBuilder?: ((item: T) => IActionBuilderResult[] | undefined) | undefined;
|
|
16
|
+
index: number;
|
|
16
17
|
onSwipeStart?: ((id: string) => any) | undefined;
|
|
17
18
|
swipingItem?: string | undefined;
|
|
18
19
|
isSelected?: boolean | undefined;
|
|
@@ -26,8 +27,9 @@ declare const _default: <T extends string | TableItem>(__VLS_props: {
|
|
|
26
27
|
props: {
|
|
27
28
|
onClick?: (() => any) | undefined;
|
|
28
29
|
onSelect?: (() => any) | undefined;
|
|
29
|
-
|
|
30
|
+
items: T[];
|
|
30
31
|
actionBuilder?: ((item: T) => IActionBuilderResult[] | undefined) | undefined;
|
|
32
|
+
index: number;
|
|
31
33
|
onSwipeStart?: ((id: string) => any) | undefined;
|
|
32
34
|
swipingItem?: string | undefined;
|
|
33
35
|
isSelected?: boolean | undefined;
|
|
@@ -45,8 +47,9 @@ declare const _default: <T extends string | TableItem>(__VLS_props: {
|
|
|
45
47
|
props: {
|
|
46
48
|
onClick?: (() => any) | undefined;
|
|
47
49
|
onSelect?: (() => any) | undefined;
|
|
48
|
-
|
|
50
|
+
items: T[];
|
|
49
51
|
actionBuilder?: ((item: T) => IActionBuilderResult[] | undefined) | undefined;
|
|
52
|
+
index: number;
|
|
50
53
|
onSwipeStart?: ((id: string) => any) | undefined;
|
|
51
54
|
swipingItem?: string | undefined;
|
|
52
55
|
isSelected?: boolean | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc-table-mobile-item.vue.d.ts","sourceRoot":"","sources":["../../../../../../../ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAKpE,MAAM,WAAW,KAAK;IACpB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;CACzB;AACD,MAAM,WAAW,SAAS;IAExB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACjB,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAClC;;;;
|
|
1
|
+
{"version":3,"file":"vc-table-mobile-item.vue.d.ts","sourceRoot":"","sources":["../../../../../../../ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAKpE,MAAM,WAAW,KAAK;IACpB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;CACzB;AACD,MAAM,WAAW,SAAS;IAExB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACjB,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAClC;;;;WAsgBQ,CAAC,EAAE;4BACa,CAAC,KAAK,oBAAoB,EAAE,GAAG,SAAS;WAGxD,MAAM;;;;;WAQR,GAAG;;yBA3CoB,GAAG;;;yCA0CjB,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,KAAG,IAAI;;;;eAXhD,CAAC,EAAE;gCACa,CAAC,KAAK,oBAAoB,EAAE,GAAG,SAAS;eAGxD,MAAM;;;;;oBAOC,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;WAClD,GAAG;;yBA3CoB,GAAG;;;;;;;;;;mBA+BxB,CAAC,EAAE;oCACa,CAAC,KAAK,oBAAoB,EAAE,GAAG,SAAS;mBAGxD,MAAM;;;;;wBAOC,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;eAClD,GAAG;;6BA3CoB,GAAG;;;;;AApejC,wBAohB2E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc-table.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/organisms/vc-table/vc-table.vue.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,QAAQ,EACR,GAAG,EAWJ,MAAM,KAAK,CAAC;AAGb,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAO/E,OAAO,iCAAiC,CAAC;AACzC,OAAO,gCAAgC,CAAC;AAIxC,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACjB,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAClC;;;;;;;
|
|
1
|
+
{"version":3,"file":"vc-table.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/organisms/vc-table/vc-table.vue.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.
|
|
3
|
+
"version": "1.0.226",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/framework.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -60,9 +60,9 @@
|
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@types/dompurify": "^3.0.5",
|
|
62
62
|
"@types/quill": "^2.0.14",
|
|
63
|
-
"@vc-shell/api-client-generator": "^1.0.
|
|
64
|
-
"@vc-shell/config-generator": "^1.0.
|
|
65
|
-
"@vc-shell/ts-config": "^1.0.
|
|
63
|
+
"@vc-shell/api-client-generator": "^1.0.226",
|
|
64
|
+
"@vc-shell/config-generator": "^1.0.226",
|
|
65
|
+
"@vc-shell/ts-config": "^1.0.226",
|
|
66
66
|
"@vitejs/plugin-vue": "^5.0.3",
|
|
67
67
|
"sass": "^1.69.6",
|
|
68
68
|
"shx": "^0.3.4",
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { useTableTemplates } from "./../../composables";
|
|
3
|
-
import { Component, ExtractPropTypes, computed, h, inject,
|
|
3
|
+
import { Component, ExtractPropTypes, computed, h, inject, toValue, unref } from "vue";
|
|
4
4
|
import { Table } from "../factories";
|
|
5
5
|
import componentProps from "./props";
|
|
6
6
|
import { TableSchema } from "../../types";
|
|
7
7
|
import { useI18n } from "vue-i18n";
|
|
8
8
|
import { unrefNested } from "../../helpers/unrefNested";
|
|
9
9
|
import { setModel } from "../../helpers/setters";
|
|
10
|
-
import { safeIn } from "../../helpers/safeIn";
|
|
11
10
|
import { IActionBuilderResult, ITableColumns } from "../../../../../core/types";
|
|
12
11
|
|
|
13
12
|
type TableItemData<T> = {
|
|
@@ -52,10 +52,10 @@ export const useDetailsFactory = <Item extends { id?: string }>(factoryParams: U
|
|
|
52
52
|
|
|
53
53
|
const validationState = computed(
|
|
54
54
|
(): IValidationState<Item> => ({
|
|
55
|
-
dirty: isDirty.value,
|
|
55
|
+
dirty: isDirty.value || isModified.value,
|
|
56
56
|
valid: isFormValid.value,
|
|
57
57
|
modified: isModified.value,
|
|
58
|
-
disabled: isDisabled.value,
|
|
58
|
+
disabled: isDisabled.value || !isModified.value,
|
|
59
59
|
validated: !isDisabled.value && isModified.value,
|
|
60
60
|
cachedValue: itemTemp.value,
|
|
61
61
|
errorBag: errorBag.value,
|
|
@@ -64,7 +64,7 @@ export const useDetailsFactory = <Item extends { id?: string }>(factoryParams: U
|
|
|
64
64
|
setFieldValue,
|
|
65
65
|
setValues,
|
|
66
66
|
resetModified,
|
|
67
|
-
|
|
67
|
+
resetValidationState,
|
|
68
68
|
validate,
|
|
69
69
|
}),
|
|
70
70
|
);
|
|
@@ -80,12 +80,15 @@ export const useDetailsFactory = <Item extends { id?: string }>(factoryParams: U
|
|
|
80
80
|
const resetModified = createUnrefFn((data: Item, updateInitial = false) => {
|
|
81
81
|
if (updateInitial) {
|
|
82
82
|
item.value = data;
|
|
83
|
+
|
|
84
|
+
resetValidationState();
|
|
83
85
|
}
|
|
84
86
|
|
|
85
87
|
itemTemp.value = _.cloneDeep(data);
|
|
86
88
|
}) as (data: MaybeRef<Item | undefined> | ComputedRef<Item | undefined>, updateInitial?: MaybeRef<boolean>) => void;
|
|
87
89
|
|
|
88
|
-
const
|
|
90
|
+
const resetValidationState = () => {
|
|
91
|
+
isModified.value = false;
|
|
89
92
|
isDirty = ref(false);
|
|
90
93
|
};
|
|
91
94
|
|
|
@@ -32,7 +32,7 @@ export interface IValidationState<Item> {
|
|
|
32
32
|
data: MaybeRef<Item | undefined> | ComputedRef<Item | undefined>,
|
|
33
33
|
updateInitial?: MaybeRef<boolean>,
|
|
34
34
|
) => void;
|
|
35
|
-
|
|
35
|
+
resetValidationState: () => void;
|
|
36
36
|
validate: FormContext["validate"];
|
|
37
37
|
errorBag: Partial<Record<string, string[]>>;
|
|
38
38
|
}
|
|
@@ -87,6 +87,20 @@ function nodeBuilder<
|
|
|
87
87
|
controlSchema.disabled &&
|
|
88
88
|
disabledHandler(controlSchema.disabled, bladeContext));
|
|
89
89
|
|
|
90
|
+
// TODO add to docs
|
|
91
|
+
const onBlur = (event: Event) => {
|
|
92
|
+
if (safeIn("onBlur", controlSchema) && controlSchema.onBlur) {
|
|
93
|
+
const method = controlSchema.onBlur.method;
|
|
94
|
+
if (method && bladeContext.scope?.[method] && typeof bladeContext.scope[method] === "function") {
|
|
95
|
+
bladeContext.scope[method]({
|
|
96
|
+
event,
|
|
97
|
+
property: controlSchema.property,
|
|
98
|
+
context: unrefNested(internalContext),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
|
|
90
104
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
91
105
|
const onUpdateModelValue = async (e: any) => {
|
|
92
106
|
if (safeIn("property", controlSchema) && controlSchema.property) {
|
|
@@ -118,6 +132,7 @@ function nodeBuilder<
|
|
|
118
132
|
label: computed(() => (typeof label !== "undefined" ? t(label) : undefined)),
|
|
119
133
|
hint: computed(() => (typeof hint !== "undefined" ? t(hint) : undefined)),
|
|
120
134
|
disabled,
|
|
135
|
+
onBlur,
|
|
121
136
|
name,
|
|
122
137
|
rules,
|
|
123
138
|
placeholder: computed(() => (typeof placeholder !== "undefined" ? t(placeholder) : undefined)),
|
|
@@ -256,6 +256,14 @@ export interface SchemaBase {
|
|
|
256
256
|
visibility?: {
|
|
257
257
|
method: string;
|
|
258
258
|
};
|
|
259
|
+
/**
|
|
260
|
+
* Method that is called when component emits `blur` event.
|
|
261
|
+
* @description Method should be defined in the blade `scope`.
|
|
262
|
+
* @type {{ method: string }}
|
|
263
|
+
*/
|
|
264
|
+
onBlur?: {
|
|
265
|
+
method: string;
|
|
266
|
+
};
|
|
259
267
|
/** Flag to indicate if the component supports multilanguage.
|
|
260
268
|
* @type {boolean}
|
|
261
269
|
*/
|
|
@@ -396,7 +404,7 @@ export interface MultivalueSchema extends SchemaBase {
|
|
|
396
404
|
hint?: string;
|
|
397
405
|
}
|
|
398
406
|
|
|
399
|
-
export interface TextareaSchema extends SchemaBase {
|
|
407
|
+
export interface TextareaSchema extends Omit<SchemaBase, "onBlur"> {
|
|
400
408
|
/**
|
|
401
409
|
* Component type for textarea.
|
|
402
410
|
* @type {"vc-textarea"}
|
|
@@ -655,7 +663,7 @@ export interface InputCurrencySchema extends Omit<SchemaBase, "multilanguage"> {
|
|
|
655
663
|
* Editor schema interface.
|
|
656
664
|
* @interface
|
|
657
665
|
*/
|
|
658
|
-
export interface EditorSchema extends SchemaBase {
|
|
666
|
+
export interface EditorSchema extends Omit<SchemaBase, "onBlur"> {
|
|
659
667
|
/**
|
|
660
668
|
* Component type for editor.
|
|
661
669
|
* @type {"vc-editor"}
|
|
@@ -701,7 +709,7 @@ export interface DynamicPropertiesSchema
|
|
|
701
709
|
* @interface
|
|
702
710
|
*/
|
|
703
711
|
export interface GallerySchema
|
|
704
|
-
extends Omit<SchemaBase, "placeholder" | "multilanguage" | "update" | "horizontalSeparator"> {
|
|
712
|
+
extends Omit<SchemaBase, "placeholder" | "multilanguage" | "update" | "horizontalSeparator" | "onBlur"> {
|
|
705
713
|
/**
|
|
706
714
|
* Component type for the gallery.
|
|
707
715
|
* @type {"vc-gallery"}
|
|
@@ -781,7 +789,7 @@ export interface WidgetsSchema extends Pick<SchemaBase, "id" | "horizontalSepara
|
|
|
781
789
|
children: string[];
|
|
782
790
|
}
|
|
783
791
|
|
|
784
|
-
export interface CheckboxSchema extends Omit<SchemaBase, "multilanguage" | "placeholder"> {
|
|
792
|
+
export interface CheckboxSchema extends Omit<SchemaBase, "multilanguage" | "placeholder" | "onBlur"> {
|
|
785
793
|
/**
|
|
786
794
|
* Component type for checkbox.
|
|
787
795
|
* @type {"vc-checkbox"}
|
|
@@ -803,7 +811,7 @@ export interface CheckboxSchema extends Omit<SchemaBase, "multilanguage" | "plac
|
|
|
803
811
|
falseValue?: boolean;
|
|
804
812
|
}
|
|
805
813
|
|
|
806
|
-
export interface RadioButtonSchema extends Omit<SchemaBase, "multilanguage" | "placeholder"> {
|
|
814
|
+
export interface RadioButtonSchema extends Omit<SchemaBase, "multilanguage" | "placeholder" | "onBlur"> {
|
|
807
815
|
/**
|
|
808
816
|
* Component type for radio button.
|
|
809
817
|
* @type {"vc-radio-button-group"}
|
|
@@ -869,7 +877,7 @@ export interface FieldsetSchema extends Pick<SchemaBase, "id" | "visibility" | "
|
|
|
869
877
|
* Switch schema interface.
|
|
870
878
|
* @interface
|
|
871
879
|
*/
|
|
872
|
-
export interface SwitchSchema extends Omit<SchemaBase, "placeholder" | "multilanguage"> {
|
|
880
|
+
export interface SwitchSchema extends Omit<SchemaBase, "placeholder" | "multilanguage" | "onBlur"> {
|
|
873
881
|
/**
|
|
874
882
|
* Component type for switch.
|
|
875
883
|
* @type {"vc-switch"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
v-if="tooltipVisible"
|
|
15
15
|
ref="tooltipRef"
|
|
16
16
|
:style="floatingStyles"
|
|
17
|
-
class="tw-absolute tw-z-[101] tw-bg-white tw-border tw-border-solid tw-border-[color:#eef0f2] tw-shadow-[1px_1px_8px_rgba(126,142,157,0.25)] tw-rounded-[3px] tw-text-[color:#8e9daa] tw-font-normal tw-py-1 tw-px-2
|
|
17
|
+
class="tw-absolute tw-z-[101] tw-bg-white tw-border tw-border-solid tw-border-[color:#eef0f2] tw-shadow-[1px_1px_8px_rgba(126,142,157,0.25)] tw-rounded-[3px] tw-text-[color:#8e9daa] tw-font-normal tw-py-1 tw-px-2"
|
|
18
18
|
>
|
|
19
19
|
<slot name="tooltip"></slot>
|
|
20
20
|
</span>
|
|
@@ -23,14 +23,22 @@
|
|
|
23
23
|
</template>
|
|
24
24
|
|
|
25
25
|
<script lang="ts" setup>
|
|
26
|
-
import { useFloating, shift, Placement, offset } from "@floating-ui/vue";
|
|
26
|
+
import { useFloating, shift, Placement, offset as floatingOffset } from "@floating-ui/vue";
|
|
27
27
|
import { ref } from "vue";
|
|
28
28
|
export interface Props {
|
|
29
29
|
placement?: Placement;
|
|
30
|
+
offset?: {
|
|
31
|
+
crossAxis?: number;
|
|
32
|
+
mainAxis?: number;
|
|
33
|
+
};
|
|
30
34
|
}
|
|
31
35
|
|
|
32
36
|
const props = withDefaults(defineProps<Props>(), {
|
|
33
37
|
placement: "bottom-end",
|
|
38
|
+
offset: () => ({
|
|
39
|
+
crossAxis: 5,
|
|
40
|
+
mainAxis: 5,
|
|
41
|
+
}),
|
|
34
42
|
});
|
|
35
43
|
|
|
36
44
|
defineSlots<{
|
|
@@ -44,13 +52,7 @@ const tooltipRef = ref<HTMLElement | null>(null);
|
|
|
44
52
|
|
|
45
53
|
const { floatingStyles } = useFloating(tooltipCompRef, tooltipRef, {
|
|
46
54
|
placement: props.placement,
|
|
47
|
-
middleware: [
|
|
48
|
-
offset({
|
|
49
|
-
crossAxis: 5,
|
|
50
|
-
mainAxis: 5,
|
|
51
|
-
}),
|
|
52
|
-
shift(),
|
|
53
|
-
],
|
|
55
|
+
middleware: [floatingOffset(props.offset), shift()],
|
|
54
56
|
});
|
|
55
57
|
</script>
|
|
56
58
|
|
package/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
<div
|
|
29
29
|
class="tw-flex tw-grow tw-basis-[1] tw-flex-col tw-justify-center tw-items-center tw-text-white"
|
|
30
30
|
:class="[`vc-table-mobile__item-action_${leftSwipeActions[0].type}`]"
|
|
31
|
-
@click.stop="leftSwipeActions?.[0].clickHandler(
|
|
31
|
+
@click.stop="leftSwipeActions?.[0].clickHandler(items[index] as T, index)"
|
|
32
32
|
>
|
|
33
33
|
<VcIcon :icon="leftSwipeActions[0].icon" />
|
|
34
34
|
<div class="tw-mt-1 tw-text-lg tw-text-center">
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
:key="`rightSwipeAction-${index}`"
|
|
50
50
|
class="tw-flex tw-grow tw-basis-[1] tw-flex-col tw-justify-center tw-items-center tw-text-white"
|
|
51
51
|
:class="[`vc-table-mobile__item-action_${action.type}`]"
|
|
52
|
-
@click.stop="action.clickHandler(
|
|
52
|
+
@click.stop="action.clickHandler(items[index] as T, index)"
|
|
53
53
|
>
|
|
54
54
|
<VcIcon :icon="action.icon" />
|
|
55
55
|
<div class="tw-mt-1 tw-text-lg tw-text-center">
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
v-for="(itemAction, i) in itemActions"
|
|
96
96
|
:key="i"
|
|
97
97
|
class="tw-flex tw-grow tw-shrink-0 tw-flex-col tw-items-center tw-text-[#319ed4] tw-my-2 tw-box-border tw-p-1 tw-max-w-[80px]"
|
|
98
|
-
@click="itemAction.clickHandler(
|
|
98
|
+
@click="itemAction.clickHandler(items[index] as T, index)"
|
|
99
99
|
>
|
|
100
100
|
<VcIcon
|
|
101
101
|
:icon="itemAction.icon"
|
|
@@ -116,10 +116,10 @@
|
|
|
116
116
|
</template>
|
|
117
117
|
|
|
118
118
|
<script lang="ts" setup generic="T extends TableItem | string">
|
|
119
|
-
import { Ref, computed, ref, onMounted, watch, onUpdated } from "vue";
|
|
119
|
+
import { Ref, computed, ref, onMounted, watch, onUpdated, nextTick } from "vue";
|
|
120
120
|
import { IActionBuilderResult } from "../../../../../../core/types";
|
|
121
121
|
import { useI18n } from "vue-i18n";
|
|
122
|
-
import { useSwipe } from "@vueuse/core";
|
|
122
|
+
import { useSwipe, watchDebounced } from "@vueuse/core";
|
|
123
123
|
import { vOnClickOutside } from "@vueuse/components";
|
|
124
124
|
|
|
125
125
|
export interface Emits {
|
|
@@ -134,10 +134,11 @@ export interface TableItem {
|
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
const props = defineProps<{
|
|
137
|
-
|
|
137
|
+
items: T[];
|
|
138
138
|
actionBuilder?: (item: T) => IActionBuilderResult[] | undefined;
|
|
139
139
|
swipingItem?: string;
|
|
140
140
|
isSelected?: boolean;
|
|
141
|
+
index: number;
|
|
141
142
|
}>();
|
|
142
143
|
|
|
143
144
|
const emit = defineEmits<Emits>();
|
|
@@ -156,8 +157,9 @@ const { isSwiping, lengthX } = useSwipe(target, {
|
|
|
156
157
|
threshold: 0,
|
|
157
158
|
onSwipeStart() {
|
|
158
159
|
getActions();
|
|
159
|
-
|
|
160
|
-
|
|
160
|
+
const item = props.items[props.index];
|
|
161
|
+
if (typeof item !== "string") {
|
|
162
|
+
emit("swipeStart", item.id);
|
|
161
163
|
}
|
|
162
164
|
if (containerWidth.value) {
|
|
163
165
|
reset();
|
|
@@ -207,7 +209,8 @@ const leftSwipeActions = computed(
|
|
|
207
209
|
watch(
|
|
208
210
|
() => props.swipingItem,
|
|
209
211
|
(newVal) => {
|
|
210
|
-
|
|
212
|
+
const item = props.items[props.index];
|
|
213
|
+
if (typeof item !== "string" && newVal !== item.id) {
|
|
211
214
|
left.value = "0";
|
|
212
215
|
actionsWidth.value = "0";
|
|
213
216
|
}
|
|
@@ -222,6 +225,14 @@ onUpdated(() => {
|
|
|
222
225
|
adjustHeight();
|
|
223
226
|
});
|
|
224
227
|
|
|
228
|
+
watchDebounced(
|
|
229
|
+
() => props.items,
|
|
230
|
+
() => {
|
|
231
|
+
adjustHeight();
|
|
232
|
+
},
|
|
233
|
+
{ deep: true, debounce: 450 },
|
|
234
|
+
);
|
|
235
|
+
|
|
225
236
|
function reset() {
|
|
226
237
|
left.value = "0";
|
|
227
238
|
actionsWidth.value = "0";
|
|
@@ -243,7 +254,7 @@ const direction = computed(() => {
|
|
|
243
254
|
function getActions() {
|
|
244
255
|
if (!(itemActions.value && itemActions.value.length)) {
|
|
245
256
|
if (props.actionBuilder && typeof props.actionBuilder === "function") {
|
|
246
|
-
itemActions.value = props.actionBuilder(props.
|
|
257
|
+
itemActions.value = props.actionBuilder(props.items[props.index]);
|
|
247
258
|
}
|
|
248
259
|
}
|
|
249
260
|
}
|
|
@@ -70,7 +70,8 @@
|
|
|
70
70
|
<VcTableMobileItem
|
|
71
71
|
v-for="(item, i) in items"
|
|
72
72
|
:key="i"
|
|
73
|
-
:
|
|
73
|
+
:index="i"
|
|
74
|
+
:items="items"
|
|
74
75
|
:action-builder="itemActionBuilder"
|
|
75
76
|
:swiping-item="mobileSwipeItem"
|
|
76
77
|
:is-selected="isSelected(item)"
|
|
@@ -326,7 +327,7 @@
|
|
|
326
327
|
v-if="
|
|
327
328
|
enableItemActions && itemActionBuilder && typeof item === 'object' && selectedRowIndex === itemIndex
|
|
328
329
|
"
|
|
329
|
-
class="tw-absolute tw-flex tw-right-
|
|
330
|
+
class="tw-absolute tw-flex tw-right-[10px] actions tw-h-full tw-bg-[#f4f8fb]"
|
|
330
331
|
:class="{
|
|
331
332
|
'group-hover:!tw-bg-[#dfeef9]': hasClickListener,
|
|
332
333
|
}"
|
|
@@ -339,11 +340,16 @@
|
|
|
339
340
|
v-for="(itemAction, i) in itemActions[itemIndex]"
|
|
340
341
|
:key="i"
|
|
341
342
|
:class="[
|
|
342
|
-
'tw-text-[#319ed4] tw-cursor-pointer tw-w-[22px] tw-h-[22px] tw-flex tw-items-center tw-justify-center',
|
|
343
|
+
'tw-text-[#319ed4] tw-cursor-pointer tw-w-[22px] tw-h-[22px] tw-flex tw-items-center tw-justify-center hover:tw-text-[#257fad]',
|
|
343
344
|
]"
|
|
344
345
|
@click.stop="itemAction.clickHandler(item, itemIndex)"
|
|
345
346
|
>
|
|
346
|
-
<VcTooltip
|
|
347
|
+
<VcTooltip
|
|
348
|
+
placement="bottom"
|
|
349
|
+
:offset="{
|
|
350
|
+
mainAxis: 5,
|
|
351
|
+
}"
|
|
352
|
+
>
|
|
347
353
|
<VcIcon
|
|
348
354
|
:icon="itemAction.icon"
|
|
349
355
|
size="m"
|
|
@@ -603,22 +609,25 @@ const mobileTemplateRenderer = ({ item, index }: { item: TableItem | string; ind
|
|
|
603
609
|
"div",
|
|
604
610
|
{ class: "tw-border-b tw-border-solid tw-border-b-[#e3e7ec] tw-p-3 tw-gap-2 tw-flex tw-flex-wrap" },
|
|
605
611
|
props.columns.map((x) => {
|
|
606
|
-
return h("div", { class: "tw-grow tw-w-[33%] tw-ml-3 tw-truncate" }, [
|
|
612
|
+
return h("div", { class: "tw-grow tw-w-[33%] tw-ml-3 tw-truncate", key: `mobile-view-item-${index}` }, [
|
|
607
613
|
h(VcLabel, { class: "tw-mb-1 tw-truncate", required: x?.rules?.required }, () => toValue(x.title)),
|
|
608
614
|
slots[`item_${x.id}`]
|
|
609
|
-
? slots[`item_${x.id}`]({ item, cell: x, index })
|
|
615
|
+
? slots[`item_${x.id}`]?.({ item, cell: x, index })
|
|
610
616
|
: [
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
617
|
+
typeof item === "object"
|
|
618
|
+
? h(VcTableCell, {
|
|
619
|
+
cell: { ...x, class: "!tw-justify-start" },
|
|
620
|
+
item,
|
|
621
|
+
key: `mobile-view-cell-${index}`,
|
|
622
|
+
class: "tw-mb-4",
|
|
623
|
+
editing: props.editing,
|
|
624
|
+
index,
|
|
625
|
+
onUpdate: (event) => {
|
|
626
|
+
emit("onEditComplete", { event: event, index });
|
|
627
|
+
},
|
|
628
|
+
onBlur: (event) => emit("onCellBlur", event),
|
|
629
|
+
})
|
|
630
|
+
: undefined,
|
|
622
631
|
],
|
|
623
632
|
]);
|
|
624
633
|
}),
|