@vc-shell/framework 1.0.46 → 1.0.48

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 (62) hide show
  1. package/core/plugins/index.ts +2 -1
  2. package/core/plugins/moment/humanize.ts +77 -0
  3. package/core/plugins/moment/index.ts +1 -0
  4. package/core/plugins/moment/moment.ts +29 -0
  5. package/core/types/index.ts +10 -5
  6. package/dist/core/plugins/index.d.ts +2 -1
  7. package/dist/core/plugins/index.d.ts.map +1 -1
  8. package/dist/core/plugins/moment/humanize.d.ts +3 -0
  9. package/dist/core/plugins/moment/humanize.d.ts.map +1 -0
  10. package/dist/core/plugins/moment/index.d.ts +2 -0
  11. package/dist/core/plugins/moment/index.d.ts.map +1 -0
  12. package/dist/core/plugins/moment/moment.d.ts +13 -0
  13. package/dist/core/plugins/moment/moment.d.ts.map +1 -0
  14. package/dist/core/types/index.d.ts +12 -6
  15. package/dist/core/types/index.d.ts.map +1 -1
  16. package/dist/framework.js +96 -81
  17. package/dist/index.d.ts +1 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/style.css +1 -1
  20. package/dist/tsconfig.tsbuildinfo +1 -1
  21. package/dist/ui/components/index.d.ts +0 -1
  22. package/dist/ui/components/index.d.ts.map +1 -1
  23. package/dist/ui/components/molecules/vc-input/index.d.ts +1 -1
  24. package/dist/ui/components/molecules/vc-input/index.d.ts.map +1 -1
  25. package/dist/ui/components/molecules/vc-input/vc-input-model.d.ts +1 -5
  26. package/dist/ui/components/molecules/vc-input/vc-input-model.d.ts.map +1 -1
  27. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency-model.d.ts +4 -10
  28. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency-model.d.ts.map +1 -1
  29. package/dist/ui/components/molecules/vc-select/index.d.ts.map +1 -1
  30. package/dist/ui/components/molecules/vc-select/vc-select-model.d.ts +5 -12
  31. package/dist/ui/components/molecules/vc-select/vc-select-model.d.ts.map +1 -1
  32. package/dist/ui/types/index.d.ts +6 -6
  33. package/dist/ui/types/index.d.ts.map +1 -1
  34. package/dist/ui/types/ts-helpers.d.ts +4 -5
  35. package/dist/ui/types/ts-helpers.d.ts.map +1 -1
  36. package/dist/vite.config.d.ts.map +1 -1
  37. package/package.json +4 -4
  38. package/ui/components/atoms/vc-icon/vc-icon.vue +1 -1
  39. package/ui/components/index.ts +0 -1
  40. package/ui/components/molecules/vc-input/index.ts +1 -1
  41. package/ui/components/molecules/vc-input/vc-input-model.ts +2 -5
  42. package/ui/components/molecules/vc-input/vc-input.vue +2 -2
  43. package/ui/components/molecules/vc-input-currency/vc-input-currency-model.ts +4 -10
  44. package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +2 -5
  45. package/ui/components/molecules/vc-select/index.ts +1 -0
  46. package/ui/components/molecules/vc-select/vc-select-model.ts +6 -13
  47. package/ui/components/molecules/vc-select/vc-select.vue +3 -2
  48. package/ui/components/molecules/vc-slider/vc-slider.vue +7 -3
  49. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +1 -1
  50. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue +6 -8
  51. package/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue +2 -0
  52. package/ui/components/organisms/vc-app/vc-app.vue +5 -1
  53. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue +22 -36
  54. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +7 -5
  55. package/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue +9 -4
  56. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue +2 -5
  57. package/ui/components/organisms/vc-table/vc-table.vue +80 -133
  58. package/ui/types/index.ts +5 -17
  59. package/ui/types/ts-helpers.ts +7 -21
  60. package/dist/framework.js.map +0 -1
  61. package/ui/components/molecules/vc-currency-input/vc-input.vue +0 -436
  62. package/ui/components/molecules/vc-multivalue/vc-multivalue.vue +0 -447
@@ -1 +1,2 @@
1
- export * from './validation'
1
+ export * from "./validation";
2
+ export * from "./moment";
@@ -0,0 +1,77 @@
1
+ import _ from "lodash";
2
+ import { default as moment, Duration, RelativeTimeKey } from "moment";
3
+
4
+ type momentUnit = Extract<
5
+ moment.RelativeTimeKey,
6
+ "s" | "m" | "h" | "d" | "w" | "M" | "y"
7
+ >;
8
+
9
+ const momentUnits: momentUnit[] = ["s", "m", "h", "d", "w", "M", "y"];
10
+
11
+ const intlUnits = ["second", "minute", "hour", "day", "week", "month", "year"];
12
+
13
+ const intlNumberFormats = intlUnits.map((intlUnit) =>
14
+ Intl?.NumberFormat(moment.locale(), {
15
+ style: "unit",
16
+ unit: intlUnit,
17
+ unitDisplay: "long",
18
+ })
19
+ );
20
+
21
+ const getIntlNumberFormat = (unit: momentUnit) => {
22
+ return intlNumberFormats[momentUnits.indexOf(unit)];
23
+ };
24
+
25
+ // Workaround because of lacking precise (1 hour 42 minutes 35 seconds)
26
+ // duration formatting in moment and Intl
27
+ export function humanize(this: Duration & number, withSuffix: boolean): string {
28
+ const localeData = moment.localeData();
29
+
30
+ const units = _.clone(momentUnits);
31
+ const lastUnit = units.pop();
32
+
33
+ // format string as "value unit" (e.g. "35", "ss" => "35 seconds", "1", "dd" => "1 day")
34
+ const humanize = (unit: momentUnit, value: number) => {
35
+ // Use Intl if available to get proper formatting and pluralization:
36
+ // Intl: 1 day, 2 days
37
+ // moment: a day, 2 days
38
+ return Intl
39
+ ? getIntlNumberFormat(unit).format(value)
40
+ : localeData.relativeTime(
41
+ value,
42
+ true,
43
+ value === 1 ? unit : ((unit + unit) as RelativeTimeKey), // pluralize
44
+ this > 0
45
+ );
46
+ };
47
+
48
+ // convert duration to the map
49
+ // "1:42:35" => [{ key: "ss", value: 35 }, { key: "mm", value: 42 }, { key: "hh", value: 1 }]
50
+ let map = units.map((unit) => ({
51
+ unit,
52
+ value: this.get(unit),
53
+ }));
54
+ // add value of last unit as double-precision float, if it's greater than 0
55
+ map.push({
56
+ unit: lastUnit,
57
+ value: this.get(lastUnit) > 0 ? this.as(lastUnit) : 0,
58
+ });
59
+
60
+ // drop zero values from the beginning and the end of the array
61
+ // [{ y: 0 }, { m: 0 }, { d: 0 }, { h: 1 }, { m: 42 }, { s: 0 }] => [{ h: 1 }, { m: 42 }]
62
+ const isZeroValue = (item: { value: number }) => item.value === 0;
63
+ map = _.chain(map).dropWhile(isZeroValue).dropRightWhile(isZeroValue).value();
64
+
65
+ // convert map to array of formatted strings
66
+ // [{ key: "mm", value: 42 }, { key: "hh", value: 1 }] => ["42 minutes", "1 hour"]
67
+ const values = map.map((entry) => humanize(entry.unit, entry.value));
68
+
69
+ // ["42 minutes", "1 hour"] => "1 hour 42 minutes"
70
+ let result = values.reverse().join(" ");
71
+
72
+ if (withSuffix) {
73
+ result = localeData.pastFuture(this, result);
74
+ }
75
+
76
+ return result;
77
+ }
@@ -0,0 +1 @@
1
+ export { default as moment } from "./moment";
@@ -0,0 +1,29 @@
1
+ import { default as moment } from "moment";
2
+ import { humanize } from "./humanize";
3
+
4
+ declare module "moment" {
5
+ export type argAccuracy = "auto" | "precise";
6
+
7
+ interface Duration {
8
+ humanize(argWithSuffix?: boolean, argAccuracy?: argAccuracy): string;
9
+
10
+ humanize(argAccuracy?: argAccuracy): string;
11
+ }
12
+
13
+ // eslint-disable-next-line @typescript-eslint/no-namespace
14
+ namespace duration {
15
+ // eslint-disable-next-line no-var
16
+ export var fn: moment.Duration;
17
+ }
18
+ }
19
+
20
+ const humanizeOriginal = moment.duration.fn.humanize;
21
+ moment.duration.fn.humanize = function (...args: unknown[]): string {
22
+ if (args.includes("precise")) {
23
+ return humanize.apply(this, args);
24
+ }
25
+
26
+ return humanizeOriginal.apply(this, args);
27
+ };
28
+
29
+ export default moment;
@@ -22,12 +22,12 @@ export type IValidationRules = {
22
22
 
23
23
  export interface IBladeToolbar {
24
24
  id?: string;
25
- icon?: string;
26
- title?: string | ComputedRef<string>;
25
+ icon?: string | (() => string);
26
+ title?: string | unknown;
27
27
  isVisible?: boolean | unknown;
28
28
  isAccent?: boolean | ComputedRef<boolean>;
29
29
  component?: ExtendedComponent;
30
- bladeOptions?: Record<string, unknown> | unknown;
30
+ bladeOptions?: Record<string, unknown>;
31
31
  disabled?: boolean | ComputedRef<boolean>;
32
32
  dropdownItems?: IBladeDropdownItem[];
33
33
  clickHandler?(app?: Record<string, unknown> | IBladeElement): void;
@@ -49,11 +49,14 @@ export interface IActionBuilderResult {
49
49
  title: string;
50
50
  variant: string;
51
51
  leftActions?: boolean;
52
- clickHandler(): void;
52
+ clickHandler(item?: { id: string; }): void;
53
53
  }
54
54
 
55
55
  export interface IImage {
56
56
  sortOrder?: number;
57
+ title: string;
58
+ name: string;
59
+ url: string;
57
60
  }
58
61
 
59
62
  export interface AuthData {
@@ -77,7 +80,7 @@ export interface RequestPasswordResult {
77
80
  errorCode?: string;
78
81
  }
79
82
 
80
- export interface ITableColumns {
83
+ export type ITableColumns = {
81
84
  id: string;
82
85
  title: string | ComputedRef<string>;
83
86
  width?: number;
@@ -90,3 +93,5 @@ export interface ITableColumns {
90
93
  format?: string;
91
94
  align?: string;
92
95
  }
96
+
97
+ export type { ExtendedComponent }
@@ -1,2 +1,3 @@
1
- export * from './validation';
1
+ export * from "./validation";
2
+ export * from "./moment";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Duration } from "moment";
2
+ export declare function humanize(this: Duration & number, withSuffix: boolean): string;
3
+ //# sourceMappingURL=humanize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"humanize.d.ts","sourceRoot":"","sources":["../../../../core/plugins/moment/humanize.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,QAAQ,EAAmB,MAAM,QAAQ,CAAC;AAyBtE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,CAkD7E"}
@@ -0,0 +1,2 @@
1
+ export { default as moment } from "./moment";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/plugins/moment/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { default as moment } from "moment";
2
+ declare module "moment" {
3
+ type argAccuracy = "auto" | "precise";
4
+ interface Duration {
5
+ humanize(argWithSuffix?: boolean, argAccuracy?: argAccuracy): string;
6
+ humanize(argAccuracy?: argAccuracy): string;
7
+ }
8
+ namespace duration {
9
+ var fn: moment.Duration;
10
+ }
11
+ }
12
+ export default moment;
13
+ //# sourceMappingURL=moment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moment.d.ts","sourceRoot":"","sources":["../../../../core/plugins/moment/moment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAG3C,OAAO,QAAQ,QAAQ,CAAC;IACtB,KAAY,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;IAE7C,UAAU,QAAQ;QAChB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;QAErE,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;KAC7C;IAGD,UAAU,QAAQ,CAAC;QAEV,IAAI,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC;KAChC;CACF;AAWD,eAAe,MAAM,CAAC"}
@@ -15,12 +15,12 @@ export type IValidationRules = {
15
15
  };
16
16
  export interface IBladeToolbar {
17
17
  id?: string;
18
- icon?: string;
19
- title?: string | ComputedRef<string>;
18
+ icon?: string | (() => string);
19
+ title?: string | unknown;
20
20
  isVisible?: boolean | unknown;
21
21
  isAccent?: boolean | ComputedRef<boolean>;
22
22
  component?: ExtendedComponent;
23
- bladeOptions?: Record<string, unknown> | unknown;
23
+ bladeOptions?: Record<string, unknown>;
24
24
  disabled?: boolean | ComputedRef<boolean>;
25
25
  dropdownItems?: IBladeDropdownItem[];
26
26
  clickHandler?(app?: Record<string, unknown> | IBladeElement): void;
@@ -39,10 +39,15 @@ export interface IActionBuilderResult {
39
39
  title: string;
40
40
  variant: string;
41
41
  leftActions?: boolean;
42
- clickHandler(): void;
42
+ clickHandler(item?: {
43
+ id: string;
44
+ }): void;
43
45
  }
44
46
  export interface IImage {
45
47
  sortOrder?: number;
48
+ title: string;
49
+ name: string;
50
+ url: string;
46
51
  }
47
52
  export interface AuthData {
48
53
  accessToken?: string;
@@ -61,7 +66,7 @@ export interface RequestPasswordResult {
61
66
  error?: string;
62
67
  errorCode?: string;
63
68
  }
64
- export interface ITableColumns {
69
+ export type ITableColumns = {
65
70
  id: string;
66
71
  title: string | ComputedRef<string>;
67
72
  width?: number;
@@ -73,5 +78,6 @@ export interface ITableColumns {
73
78
  class?: string;
74
79
  format?: string;
75
80
  align?: string;
76
- }
81
+ };
82
+ export type { ExtendedComponent };
77
83
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,WAAW,EAAE,MAAM,KAAK,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAO5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1C,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IACjD,QAAQ,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1C,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACrC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,IAAI,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,IAAI,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,MAAM;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../core/types/index.ts"],"names":[],"mappings":"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"}