@vc-shell/framework 1.0.86 → 1.0.88

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.
@@ -19,7 +19,7 @@ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_T
19
19
  remove: any;
20
20
  };
21
21
  disableDrag: boolean;
22
- }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("preview" | "edit" | "remove")[], "preview" | "edit" | "remove", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
22
+ }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("remove" | "preview" | "edit")[], "remove" | "preview" | "edit", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
23
23
  readonly: boolean;
24
24
  actions: () => {
25
25
  name: any;
@@ -30,8 +30,8 @@ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_T
30
30
  disableDrag: boolean;
31
31
  }>>> & {
32
32
  onEdit?: (...args: any[]) => any;
33
- onPreview?: (...args: any[]) => any;
34
33
  onRemove?: (...args: any[]) => any;
34
+ onPreview?: (...args: any[]) => any;
35
35
  }, {
36
36
  disableDrag: boolean;
37
37
  actions: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vc-shell/framework",
3
- "version": "1.0.86",
3
+ "version": "1.0.88",
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.86",
59
- "@vc-shell/config-generator": "^1.0.86",
58
+ "@vc-shell/api-client-generator": "^1.0.88",
59
+ "@vc-shell/config-generator": "^1.0.88",
60
60
  "@vitejs/plugin-vue": "^4.2.3",
61
61
  "sass": "^1.62.1",
62
62
  "typescript": "~5.0.4",
@@ -13,6 +13,11 @@
13
13
  v-show="$isMobile.value ? !blades.length : blades.length <= 1"
14
14
  :key="route.path"
15
15
  :ref="(el: CoreBladeExposed) => setParentRef(el, Component)"
16
+ v-element-hover="
17
+ (state) => {
18
+ setActiveBlade(state, Component.type as Component);
19
+ }
20
+ "
16
21
  :closable="false"
17
22
  :options="workspaceOptions"
18
23
  :expanded="blades.length === 0"
@@ -39,6 +44,11 @@
39
44
  :is="blade.blade"
40
45
  v-show="i >= blades.length - ($isMobile.value ? 1 : 2)"
41
46
  :ref="(el: CoreBladeExposed) => setBladesRef(el, blade)"
47
+ v-element-hover="
48
+ (state) => {
49
+ setActiveBlade(state, blade.blade);
50
+ }
51
+ "
42
52
  :param="blade.param"
43
53
  :closable="i >= 0"
44
54
  :expanded="i === blades.length - 1"
@@ -59,6 +69,7 @@
59
69
 
60
70
  <script lang="ts" setup>
61
71
  import { computed, ref, VNode } from "vue";
72
+ import type { Component } from "vue";
62
73
  import { useRoute } from "vue-router";
63
74
  import {
64
75
  IBladeContainer,
@@ -69,6 +80,8 @@ import {
69
80
  BladeConstructor,
70
81
  } from "./../../../../../shared";
71
82
  import { ErrorInterceptor } from "./../../../error-interceptor";
83
+ import { vElementHover } from "@vueuse/components";
84
+ import * as _ from "lodash-es";
72
85
 
73
86
  export interface Props {
74
87
  blades: IBladeContainer[];
@@ -82,6 +95,8 @@ export interface Emits {
82
95
  (event: "onParentCall", args: { id: number; args: IParentCallArgs }): void;
83
96
  }
84
97
 
98
+ const activeBlade = ref();
99
+
85
100
  const emit = defineEmits<Emits>();
86
101
 
87
102
  withDefaults(defineProps<Props>(), {
@@ -95,6 +110,19 @@ const state = ref<IBladeRef[]>([]);
95
110
 
96
111
  const visibleBlades = computed(() => bladesRefs.value.slice(-2));
97
112
 
113
+ const setActiveBlade = (state: boolean, el: Component) => {
114
+ const blade = bladesRefs.value.find((item) => _.isEqual(item.blade.blade, el));
115
+ if (blade) {
116
+ if (state) {
117
+ activeBlade.value = el;
118
+ Object.assign(blade, { active: true });
119
+ } else {
120
+ activeBlade.value = undefined;
121
+ Object.assign(blade, { active: false });
122
+ }
123
+ }
124
+ };
125
+
98
126
  function handleMaximizeBlade(id: number, expand: boolean) {
99
127
  state.value = visibleBlades.value?.map((x: IBladeRef) => {
100
128
  if (x.blade.idx === id) {
@@ -112,6 +140,7 @@ function setParentRef(el: CoreBladeExposed, bladeNode: VNode) {
112
140
  if (el && bladeNode) {
113
141
  bladesRefs.value = [
114
142
  {
143
+ active: _.isEqual(activeBlade.value, bladeNode.type),
115
144
  exposed: el,
116
145
  blade: {
117
146
  blade: bladeNode.type as BladeConstructor,
@@ -127,7 +156,7 @@ function setBladesRef(el: CoreBladeExposed, blade: IBladeContainer) {
127
156
  if (el && el !== null && blade) {
128
157
  const isExists = bladesRefs.value.some((item) => item.blade.idx === blade.idx);
129
158
  if (!isExists) {
130
- bladesRefs.value.push({ exposed: el, blade });
159
+ bladesRefs.value.push({ active: _.isEqual(activeBlade.value, blade), exposed: el, blade });
131
160
  }
132
161
  }
133
162
  }
@@ -39,6 +39,7 @@ interface IUseBladeNavigation {
39
39
  readonly workspaceParam: Ref<string>;
40
40
  readonly lastBladeData: Ref<BladeData>;
41
41
  bladesRefs: Ref<IBladeRef[]>;
42
+ activeBlade: Ref<IBladeContainer>;
42
43
  openBlade: <Blade extends ComponentPublicInstance = ComponentPublicInstance>(
43
44
  { blade, param, options, onOpen, onClose }: IBladeEvent<Blade>,
44
45
  isWorkspace?: boolean
@@ -59,7 +60,7 @@ interface IUseBladeNavigation {
59
60
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
61
  const workspaceOptions: Ref<Record<string, any>> = ref();
61
62
  const workspaceParam: Ref<string> = ref();
62
-
63
+ const activeBlade = ref();
63
64
  const lastBladeData = useLocalStorage<BladeData>("VC_BLADE_DATA", {});
64
65
 
65
66
  export function useBladeNavigation(): IUseBladeNavigation {
@@ -124,34 +125,38 @@ export function useBladeNavigation(): IUseBladeNavigation {
124
125
  return;
125
126
  }
126
127
 
127
- // caller blade component from instance
128
- const instanceComponent = instance && instance.vnode.type;
128
+ // caller blade component
129
+ const instanceComponent =
130
+ navigationInstance.bladesRefs.value.find((item) => item.active)?.blade?.blade ??
131
+ (instance && instance.vnode.type);
129
132
 
130
- // Caller blade index in blades array
131
- const callerIndex = navigationInstance.bladesRefs.value.findIndex((item) => {
132
- return _.isEqual(item.blade.blade, instanceComponent);
133
- });
133
+ if (instanceComponent) {
134
+ // Caller blade index in blades array
135
+ const callerIndex = navigationInstance.bladesRefs.value.findIndex((item) => {
136
+ return _.isEqual(item.blade.blade, instanceComponent);
137
+ });
134
138
 
135
- // Trying to determine if the calling blade already has a child in order to replace it
136
- const isBladeAlreadyExist =
137
- callerIndex >= 0 ? navigationInstance.bladesRefs.value[callerIndex + 1]?.blade.blade : undefined;
139
+ // Trying to determine if the calling blade already has a child in order to replace it
140
+ const isBladeAlreadyExist =
141
+ callerIndex >= 0 ? navigationInstance.bladesRefs.value[callerIndex + 1]?.blade.blade : undefined;
138
142
 
139
- // Blade we want to open
140
- const bladeComponent = unref(blade);
143
+ // Blade we want to open
144
+ const bladeComponent = unref(blade);
141
145
 
142
- // Check if caller blade has idx
143
- const index = instanceComponent?.idx ? instanceComponent.idx : 0;
146
+ // Check if caller blade has idx
147
+ const index = instanceComponent?.idx ? instanceComponent.idx : 0;
144
148
 
145
- if (isBladeAlreadyExist === undefined) {
146
- bladeComponent.idx = index ? index + 1 : 1;
147
- } else if (isBladeAlreadyExist) {
148
- await closeBlade(
149
- navigationInstance.blades.value.findIndex((x: IBladeContainer) => x.idx === isBladeAlreadyExist.idx)
150
- );
151
- bladeComponent.idx = isBladeAlreadyExist.idx;
152
- }
153
- if (!isPrevented.value) {
154
- await addBlade(bladeComponent, param, options, onOpen, onClose, index);
149
+ if (isBladeAlreadyExist === undefined) {
150
+ bladeComponent.idx = index ? index + 1 : 1;
151
+ } else if (isBladeAlreadyExist) {
152
+ await closeBlade(
153
+ navigationInstance.blades.value.findIndex((x: IBladeContainer) => x.idx === isBladeAlreadyExist.idx)
154
+ );
155
+ bladeComponent.idx = isBladeAlreadyExist.idx;
156
+ }
157
+ if (!isPrevented.value) {
158
+ await addBlade(bladeComponent, param, options, onOpen, onClose, index);
159
+ }
155
160
  }
156
161
  }
157
162
 
@@ -296,6 +301,7 @@ export function useBladeNavigation(): IUseBladeNavigation {
296
301
  workspaceOptions: computed(() => workspaceOptions.value),
297
302
  workspaceParam: computed(() => workspaceParam.value),
298
303
  lastBladeData: computed(() => lastBladeData.value),
304
+ activeBlade,
299
305
  bladesRefs: navigationInstance.bladesRefs,
300
306
  openBlade,
301
307
  closeBlade,
@@ -72,6 +72,7 @@ export interface IBladeRef {
72
72
  exposed: CoreBladeExposed;
73
73
  blade: IBladeContainer;
74
74
  expanded?: boolean;
75
+ active?: boolean;
75
76
  }
76
77
 
77
78
  export interface BladeNavigationPlugin {
@@ -870,7 +870,7 @@ async function onSearch(value: string) {
870
870
  }
871
871
  } else {
872
872
  optionsTemp.value = optionsList.value.filter((x) => {
873
- return x[getOptionLabel.value(x)].toLowerCase().includes(filterString.value.toLowerCase());
873
+ return x[props.optionLabel as string].toLowerCase().includes(filterString.value.toLowerCase());
874
874
  });
875
875
  }
876
876
  }