@vc-shell/framework 1.1.0-alpha.2 → 1.1.0-alpha.4
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/core/composables/index.ts +18 -17
- package/core/composables/useDashboard/index.ts +19 -0
- package/core/composables/{useGlobalSearch.ts → useGlobalSearch/index.ts} +3 -5
- package/core/composables/useWidgets/index.ts +19 -18
- package/core/plugins/modularity/loader.ts +2 -1
- package/core/services/dashboard-service.ts +121 -0
- package/core/services/widget-service.ts +1 -4
- package/dist/core/composables/index.d.ts +1 -0
- package/dist/core/composables/index.d.ts.map +1 -1
- package/dist/core/composables/useDashboard/index.d.ts +5 -0
- package/dist/core/composables/useDashboard/index.d.ts.map +1 -0
- package/dist/core/composables/{useGlobalSearch.d.ts → useGlobalSearch/index.d.ts} +1 -1
- package/dist/core/composables/useGlobalSearch/index.d.ts.map +1 -0
- package/dist/core/plugins/modularity/loader.d.ts.map +1 -1
- package/dist/core/services/dashboard-service.d.ts +33 -0
- package/dist/core/services/dashboard-service.d.ts.map +1 -0
- package/dist/core/services/widget-service.d.ts.map +1 -1
- package/dist/framework.js +235 -225
- package/dist/{index-DkfZxmI7.js → index-8LELHzw9.js} +1 -1
- package/dist/{index-Dn54TX9M.js → index-9lJxZE5w.js} +1 -1
- package/dist/{index-BbLSuXfB.js → index-B1YR_MYV.js} +1 -1
- package/dist/{index-CUuop2Pm.js → index-BA98L1jI.js} +1 -1
- package/dist/{index-B7KsNz2e.js → index-BAeTsi-X.js} +1 -1
- package/dist/{index-q2J1GObW.js → index-BBYyHeYA.js} +1 -1
- package/dist/{index-DQXUkbse.js → index-BrUitdDo.js} +1 -1
- package/dist/{index-DY3kTJtR.js → index-BuO5ByG9.js} +1 -1
- package/dist/{index-DnpVJexS.js → index-CJ5I7vTn.js} +1 -1
- package/dist/{index-D8YubeMT.js → index-CWKrD2Cd.js} +1 -1
- package/dist/{index-D7HzlheD.js → index-Cf9Tz1ql.js} +1 -1
- package/dist/{index-h6Tp1RYq.js → index-CrxFDC2b.js} +1 -1
- package/dist/{index-D5mVNTjP.js → index-D1JchciU.js} +1 -1
- package/dist/{index-3eLJLrzP.js → index-DLtsQ_PJ.js} +31277 -31144
- package/dist/{index-Yc2AandF.js → index-DVljTjbf.js} +1 -1
- package/dist/{index-DdgLwPZH.js → index-RwX3kiZh.js} +28 -28
- package/dist/{index-lE5Ov0XL.js → index-xLYzNPa7.js} +1 -1
- package/dist/index.css +1 -1
- package/dist/injection-keys.d.ts +28 -0
- package/dist/injection-keys.d.ts.map +1 -1
- package/dist/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue.d.ts.map +1 -1
- package/dist/shared/components/dashboard-widget-card/dashboard-widget-card.vue.d.ts +25 -0
- package/dist/shared/components/dashboard-widget-card/dashboard-widget-card.vue.d.ts.map +1 -0
- package/dist/shared/components/dashboard-widget-card/index.d.ts +2 -0
- package/dist/shared/components/dashboard-widget-card/index.d.ts.map +1 -0
- package/dist/shared/components/draggable-dashboard/DraggableDashboard.vue.d.ts +6 -0
- package/dist/shared/components/draggable-dashboard/DraggableDashboard.vue.d.ts.map +1 -0
- package/dist/shared/components/draggable-dashboard/_internal/DashboardWidget.vue.d.ts +20 -0
- package/dist/shared/components/draggable-dashboard/_internal/DashboardWidget.vue.d.ts.map +1 -0
- package/dist/shared/components/draggable-dashboard/composables/useDashboardDragAndDrop.d.ts +354 -0
- package/dist/shared/components/draggable-dashboard/composables/useDashboardDragAndDrop.d.ts.map +1 -0
- package/dist/shared/components/draggable-dashboard/composables/useDashboardGrid.d.ts +12 -0
- package/dist/shared/components/draggable-dashboard/composables/useDashboardGrid.d.ts.map +1 -0
- package/dist/shared/components/draggable-dashboard/index.d.ts +2 -0
- package/dist/shared/components/draggable-dashboard/index.d.ts.map +1 -0
- package/dist/shared/components/draggable-dashboard/types.d.ts +80 -0
- package/dist/shared/components/draggable-dashboard/types.d.ts.map +1 -0
- package/dist/shared/components/index.d.ts +2 -0
- package/dist/shared/components/index.d.ts.map +1 -1
- package/dist/shared/components/user-dropdown-button/_internal/user-info.vue.d.ts.map +1 -1
- package/dist/shared/components/user-dropdown-button/_internal/user-sidebar.vue.d.ts +1 -1
- package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts.map +1 -1
- package/dist/shared/composables/useMenuExpanded.d.ts +2 -0
- package/dist/shared/composables/useMenuExpanded.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/Button.stories.d.ts +0 -41
- package/dist/shared/modules/dynamic/components/fields/storybook/Button.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/Card.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/common/templates.d.ts +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/common/templates.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts +2 -25
- package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -1
- package/dist/tailwind.config.d.ts +1 -81
- package/dist/tailwind.config.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/ui/components/atoms/vc-button/vc-button.stories.d.ts +169 -734
- package/dist/ui/components/atoms/vc-button/vc-button.stories.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts +18 -2
- package/dist/ui/components/atoms/vc-button/vc-button.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-card/index.d.ts +2 -0
- package/dist/ui/components/atoms/vc-card/index.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-card/vc-card.stories.d.ts +12 -0
- package/dist/ui/components/atoms/vc-card/vc-card.stories.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-card/vc-card.vue.d.ts +2 -0
- package/dist/ui/components/atoms/vc-card/vc-card.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-icon/icons/GridDotsIcon.vue.d.ts +18 -0
- package/dist/ui/components/atoms/vc-icon/icons/GridDotsIcon.vue.d.ts.map +1 -0
- package/dist/ui/components/atoms/vc-icon/icons/ShoppingCardIcon.vue.d.ts +18 -0
- package/dist/ui/components/atoms/vc-icon/icons/ShoppingCardIcon.vue.d.ts.map +1 -0
- package/dist/ui/components/atoms/vc-icon/icons/index.d.ts +2 -0
- package/dist/ui/components/atoms/vc-icon/icons/index.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/composables/useAppMenuState.d.ts +2 -0
- package/dist/ui/components/organisms/vc-app/_internal/composables/useAppMenuState.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarHeader.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts +0 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue.d.ts +2 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/vc-app.stories.d.ts +13 -67
- package/dist/ui/components/organisms/vc-app/vc-app.stories.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts +5 -65
- package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/{vc-table-header/vc-table-header.vue.d.ts → vc-table-columns-header/vc-table-columns-header.vue.d.ts} +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-columns-header/vc-table-columns-header.vue.d.ts.map +1 -0
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-header/vc-table-header.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-view/vc-table-mobile-view.vue.d.ts +33 -3
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-view/vc-table-mobile-view.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/composables/useTableRowReorder.d.ts.map +1 -1
- package/package.json +10 -5
- package/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue +1 -3
- package/shared/components/dashboard-widget-card/dashboard-widget-card.vue +67 -0
- package/shared/components/dashboard-widget-card/index.ts +1 -0
- package/shared/components/draggable-dashboard/DraggableDashboard.vue +369 -0
- package/shared/components/draggable-dashboard/_internal/DashboardWidget.vue +133 -0
- package/shared/components/draggable-dashboard/composables/useDashboardDragAndDrop.ts +547 -0
- package/shared/components/draggable-dashboard/composables/useDashboardGrid.ts +250 -0
- package/shared/components/draggable-dashboard/index.ts +1 -0
- package/shared/components/draggable-dashboard/types.ts +91 -0
- package/shared/components/index.ts +2 -0
- package/shared/components/user-dropdown-button/_internal/user-info.vue +25 -12
- package/shared/components/user-dropdown-button/user-dropdown-button.vue +3 -3
- package/shared/composables/useMenuExpanded.ts +24 -0
- package/shared/modules/assets/components/assets-details/assets-details.vue +1 -1
- package/shared/modules/dynamic/components/fields/storybook/Button.stories.ts +186 -247
- package/shared/modules/dynamic/components/fields/storybook/Card.stories.ts +175 -176
- package/shared/modules/dynamic/components/fields/storybook/common/templates.ts +8 -8
- package/shared/modules/dynamic/pages/dynamic-blade-list.vue +153 -187
- package/tailwind.config.ts +127 -126
- package/ui/components/atoms/vc-button/vc-button.stories.ts +1 -16
- package/ui/components/atoms/vc-button/vc-button.vue +74 -63
- package/ui/components/atoms/vc-card/vc-card.stories.ts +102 -102
- package/ui/components/atoms/vc-card/vc-card.vue +164 -159
- package/ui/components/atoms/vc-icon/icons/GridDotsIcon.vue +22 -0
- package/ui/components/atoms/vc-icon/icons/ShoppingCardIcon.vue +16 -0
- package/ui/components/atoms/vc-icon/icons/index.ts +2 -0
- package/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue +1 -1
- package/ui/components/molecules/vc-field/vc-field.vue +1 -1
- package/ui/components/organisms/vc-app/_internal/composables/useAppMenuState.ts +12 -1
- package/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarContent.vue +1 -2
- package/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarHeader.vue +5 -2
- package/ui/components/organisms/vc-app/_internal/vc-app-bar/_internal/AppBarOverlay.vue +0 -1
- package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +275 -110
- package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue +81 -37
- package/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue +7 -5
- package/ui/components/organisms/vc-app/vc-app.vue +30 -16
- package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-buttons/desktop/vc-blade-toolbar-desktop.vue +1 -1
- package/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue +5 -7
- package/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/{vc-table-header/vc-table-header.vue → vc-table-columns-header/vc-table-columns-header.vue} +23 -21
- package/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-row/vc-table-row.vue +1 -0
- package/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/vc-table-desktop-view.vue +1 -1
- package/ui/components/organisms/vc-table/_internal/vc-table-header/vc-table-header.vue +12 -1
- package/ui/components/organisms/vc-table/_internal/vc-table-mobile-view/vc-table-mobile-view.vue +45 -2
- package/ui/components/organisms/vc-table/composables/useTableColumnReorder.ts +5 -5
- package/ui/components/organisms/vc-table/composables/useTableColumnResize.ts +1 -1
- package/ui/components/organisms/vc-table/composables/useTableRowReorder.ts +1 -0
- package/core/services/toolbarbus-service.ts +0 -34
- package/dist/core/composables/useGlobalSearch.d.ts.map +0 -1
- package/dist/core/services/toolbarbus-service.d.ts +0 -10
- package/dist/core/services/toolbarbus-service.d.ts.map +0 -1
- package/dist/ui/components/organisms/vc-app/composables/useToolbarSlots.d.ts +0 -5
- package/dist/ui/components/organisms/vc-app/composables/useToolbarSlots.d.ts.map +0 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-header/vc-table-header.vue.d.ts.map +0 -1
- package/ui/components/organisms/vc-app/composables/useToolbarSlots.ts +0 -37
|
@@ -31,23 +31,32 @@
|
|
|
31
31
|
/>
|
|
32
32
|
</div>
|
|
33
33
|
<div
|
|
34
|
-
v-if="expand"
|
|
35
|
-
class="vc-app-menu-
|
|
34
|
+
v-if="!expand && !icon"
|
|
35
|
+
class="vc-app-menu-link__icon-letters"
|
|
36
36
|
>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
{{ twoLettersTitle(title) }}
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
<Transition name="opacity">
|
|
40
41
|
<div
|
|
41
|
-
v-
|
|
42
|
-
class="vc-app-menu-link__title
|
|
42
|
+
v-show="expand"
|
|
43
|
+
class="vc-app-menu-link__title"
|
|
43
44
|
>
|
|
44
|
-
<
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
<div class="vc-app-menu-link__title-truncate">
|
|
46
|
+
{{ title }}
|
|
47
|
+
</div>
|
|
48
|
+
<div
|
|
49
|
+
v-if="(!!children?.length && expand) || false"
|
|
50
|
+
class="vc-app-menu-link__title-icon"
|
|
51
|
+
>
|
|
52
|
+
<VcIcon
|
|
53
|
+
class="vc-app-menu-item__title-icon"
|
|
54
|
+
:icon="isOpened ? ChevronUpIcon : ChevronDownIcon"
|
|
55
|
+
size="m"
|
|
56
|
+
></VcIcon>
|
|
57
|
+
</div>
|
|
49
58
|
</div>
|
|
50
|
-
</
|
|
59
|
+
</Transition>
|
|
51
60
|
</div>
|
|
52
61
|
</VcTooltip>
|
|
53
62
|
</div>
|
|
@@ -92,7 +101,7 @@
|
|
|
92
101
|
>
|
|
93
102
|
<div
|
|
94
103
|
v-if="nested.icon"
|
|
95
|
-
class="vc-app-menu-link__icon"
|
|
104
|
+
class="vc-app-menu-link__icon vc-app-menu-link__icon--child"
|
|
96
105
|
:class="{
|
|
97
106
|
'vc-app-menu-link__icon-collapsed': !expand,
|
|
98
107
|
}"
|
|
@@ -103,12 +112,23 @@
|
|
|
103
112
|
size="m"
|
|
104
113
|
/>
|
|
105
114
|
</div>
|
|
106
|
-
<
|
|
107
|
-
v-if="expand"
|
|
108
|
-
class="vc-app-menu-
|
|
115
|
+
<div
|
|
116
|
+
v-if="!expand && !nested.icon"
|
|
117
|
+
class="vc-app-menu-link__icon-letters"
|
|
109
118
|
>
|
|
110
|
-
{{ nested.title }}
|
|
111
|
-
</
|
|
119
|
+
{{ twoLettersTitle(nested.title) }}
|
|
120
|
+
</div>
|
|
121
|
+
<Transition name="opacity">
|
|
122
|
+
<p
|
|
123
|
+
v-show="expand"
|
|
124
|
+
class="vc-app-menu-link__child-item-title"
|
|
125
|
+
:class="{
|
|
126
|
+
'vc-app-menu-link__child-item-title--no-icon': !nested.icon,
|
|
127
|
+
}"
|
|
128
|
+
>
|
|
129
|
+
{{ nested.title }}
|
|
130
|
+
</p>
|
|
131
|
+
</Transition>
|
|
112
132
|
</div>
|
|
113
133
|
</div>
|
|
114
134
|
</router-link>
|
|
@@ -118,7 +138,7 @@
|
|
|
118
138
|
</template>
|
|
119
139
|
|
|
120
140
|
<script lang="ts" setup>
|
|
121
|
-
import { ref, watch, computed, onMounted } from "vue";
|
|
141
|
+
import { ref, watch, computed, onMounted, Component, MaybeRef, unref } from "vue";
|
|
122
142
|
import { MenuItem } from "./../../../../../../../../../core/types";
|
|
123
143
|
import { VcIcon } from "./../../../../../../../";
|
|
124
144
|
import { useRoute } from "vue-router";
|
|
@@ -128,7 +148,7 @@ import ChevronDownIcon from "./../../../../../../../atoms/vc-icon/icons/ChevronD
|
|
|
128
148
|
export interface Props {
|
|
129
149
|
children?: MenuItem[];
|
|
130
150
|
sticky?: boolean;
|
|
131
|
-
icon: string;
|
|
151
|
+
icon: string | Component;
|
|
132
152
|
title?: string;
|
|
133
153
|
url?: string;
|
|
134
154
|
expand?: boolean;
|
|
@@ -188,6 +208,15 @@ const isActive = (url: string) => {
|
|
|
188
208
|
}
|
|
189
209
|
};
|
|
190
210
|
|
|
211
|
+
const twoLettersTitle = (title: MaybeRef<string> | undefined) => {
|
|
212
|
+
// get first letters in title words and combine them. Two letters maximum
|
|
213
|
+
return unref(title)
|
|
214
|
+
?.split(" ")
|
|
215
|
+
.slice(0, 2)
|
|
216
|
+
.map((word) => word[0])
|
|
217
|
+
.join("");
|
|
218
|
+
};
|
|
219
|
+
|
|
191
220
|
onMounted(() => {
|
|
192
221
|
const storedState = localStorage.getItem(`vc_menu_${props.id}_isOpened`);
|
|
193
222
|
if (storedState) {
|
|
@@ -204,6 +233,7 @@ watch(isOpened, (newValue) => {
|
|
|
204
233
|
:root {
|
|
205
234
|
--app-menu-item-height: 38px;
|
|
206
235
|
--app-menu-item-icon-width: 16px;
|
|
236
|
+
--app-menu-item-icon-width-container: 23px;
|
|
207
237
|
--app-menu-item-icon-color: var(--neutrals-600);
|
|
208
238
|
--app-menu-item-icon-color-active: var(--primary-700);
|
|
209
239
|
--app-menu-item-background-color-hover: var(--neutrals-100);
|
|
@@ -218,6 +248,7 @@ watch(isOpened, (newValue) => {
|
|
|
218
248
|
|
|
219
249
|
.vc-app-menu-link {
|
|
220
250
|
@apply tw-cursor-pointer tw-w-full;
|
|
251
|
+
@apply tw-transition-transform tw-duration-[0] tw-ease-in-out #{!important};
|
|
221
252
|
|
|
222
253
|
&:hover .vc-app-menu-link__item:not(.vc-app-menu-link__item_active) {
|
|
223
254
|
@apply tw-bg-[var(--app-menu-item-background-color-hover)] tw-bg-opacity-50 tw-rounded;
|
|
@@ -238,14 +269,9 @@ watch(isOpened, (newValue) => {
|
|
|
238
269
|
&__item {
|
|
239
270
|
@apply tw-flex tw-items-center tw-w-full tw-h-[var(--app-menu-item-height)]
|
|
240
271
|
tw-border-none tw-flex-nowrap tw-box-border tw-cursor-pointer tw-relative
|
|
241
|
-
tw-uppercase tw-select-none tw-px-2;
|
|
272
|
+
tw-uppercase tw-select-none tw-px-2 tw-gap-4;
|
|
242
273
|
|
|
243
274
|
&_collapsed {
|
|
244
|
-
@apply tw-justify-center;
|
|
245
|
-
|
|
246
|
-
.vc-app-menu-link__title {
|
|
247
|
-
@apply tw-hidden;
|
|
248
|
-
}
|
|
249
275
|
}
|
|
250
276
|
|
|
251
277
|
&_active {
|
|
@@ -278,7 +304,15 @@ watch(isOpened, (newValue) => {
|
|
|
278
304
|
&__icon {
|
|
279
305
|
@apply tw-text-[color:var(--app-menu-item-icon-color)]
|
|
280
306
|
tw-overflow-hidden tw-flex
|
|
281
|
-
tw-justify-center tw-shrink-0 tw-transition-[color] tw-duration-200 tw-w-[var(--app-menu-item-icon-width)];
|
|
307
|
+
tw-justify-center tw-shrink-0 tw-transition-[color] tw-duration-200 tw-w-[var(--app-menu-item-icon-width-container)];
|
|
308
|
+
|
|
309
|
+
&--child {
|
|
310
|
+
// @apply tw-mr-5;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
&__icon-letters {
|
|
315
|
+
@apply tw-shrink-0 tw-w-[24px] tw-h-[24px] tw-rounded-full tw-flex tw-items-center tw-justify-center tw-text-xxs tw-leading-[10px] tw-font-extrabold tw-text-[var(--neutrals-500)] tw-border-[2px] tw-border-[var(--neutrals-500)];
|
|
282
316
|
}
|
|
283
317
|
|
|
284
318
|
&__title {
|
|
@@ -287,7 +321,7 @@ watch(isOpened, (newValue) => {
|
|
|
287
321
|
tw-font-normal
|
|
288
322
|
tw-leading-normal
|
|
289
323
|
tw-normal-case
|
|
290
|
-
|
|
324
|
+
|
|
291
325
|
[transition:color_0.2s_ease]
|
|
292
326
|
tw-opacity-100 tw-w-full tw-flex tw-justify-between tw-items-center;
|
|
293
327
|
}
|
|
@@ -301,11 +335,11 @@ watch(isOpened, (newValue) => {
|
|
|
301
335
|
}
|
|
302
336
|
|
|
303
337
|
&__title-icon {
|
|
304
|
-
@apply tw-ml-3
|
|
338
|
+
@apply tw-ml-3;
|
|
305
339
|
}
|
|
306
340
|
|
|
307
341
|
&__icon-content {
|
|
308
|
-
@apply tw-text-center;
|
|
342
|
+
@apply tw-text-center tw-text-[length:var(--app-menu-item-icon-width)];
|
|
309
343
|
}
|
|
310
344
|
|
|
311
345
|
&__child {
|
|
@@ -314,17 +348,17 @@ watch(isOpened, (newValue) => {
|
|
|
314
348
|
|
|
315
349
|
&__child-item {
|
|
316
350
|
@apply tw-cursor-pointer tw-min-w-0 tw-flex tw-h-[var(--app-menu-item-height)]
|
|
317
|
-
tw-items-center tw-transition-[padding] tw-duration-150 tw-w-
|
|
351
|
+
tw-items-center tw-transition-[padding] tw-duration-150 tw-w-full tw-py-2 tw-px-3
|
|
318
352
|
tw-text-[color:var(--app-menu-item-title-color)] tw-text-sm
|
|
319
353
|
hover:tw-bg-[var(--app-menu-item-background-color-hover)]
|
|
320
|
-
hover:tw-text-[color:var(--app-menu-item-title-color-active)];
|
|
354
|
+
hover:tw-text-[color:var(--app-menu-item-title-color-active)] tw-gap-5;
|
|
321
355
|
|
|
322
356
|
&_expanded {
|
|
323
|
-
@apply tw-pl-
|
|
357
|
+
@apply tw-pl-7 tw-w-full #{!important};
|
|
324
358
|
}
|
|
325
359
|
|
|
326
360
|
&_collapsed {
|
|
327
|
-
@apply tw-
|
|
361
|
+
@apply tw-pl-2;
|
|
328
362
|
}
|
|
329
363
|
|
|
330
364
|
&_active {
|
|
@@ -339,7 +373,7 @@ watch(isOpened, (newValue) => {
|
|
|
339
373
|
}
|
|
340
374
|
|
|
341
375
|
&__child-item-title {
|
|
342
|
-
@apply tw-truncate
|
|
376
|
+
@apply tw-truncate;
|
|
343
377
|
}
|
|
344
378
|
|
|
345
379
|
&__child-item-link {
|
|
@@ -355,7 +389,17 @@ watch(isOpened, (newValue) => {
|
|
|
355
389
|
}
|
|
356
390
|
|
|
357
391
|
&__icon-collapsed {
|
|
358
|
-
@apply tw-p-0;
|
|
392
|
+
@apply tw-p-0 tw-m-0;
|
|
359
393
|
}
|
|
360
394
|
}
|
|
395
|
+
|
|
396
|
+
.opacity-enter-active,
|
|
397
|
+
.opacity-leave-active {
|
|
398
|
+
transition: opacity 0.3s ease;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
.opacity-enter-from,
|
|
402
|
+
.opacity-leave-to {
|
|
403
|
+
opacity: 0;
|
|
404
|
+
}
|
|
361
405
|
</style>
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
:class="{
|
|
6
6
|
'vc-app-menu--mobile': $isMobile.value,
|
|
7
7
|
'vc-app-menu--collapsed': $isDesktop.value && !isExpanded,
|
|
8
|
+
'vc-app-menu--hover-expanded': isHoverExpanded,
|
|
8
9
|
}"
|
|
9
10
|
>
|
|
10
11
|
<div
|
|
@@ -12,6 +13,7 @@
|
|
|
12
13
|
:class="{
|
|
13
14
|
'vc-app-menu__inner--desktop': $isDesktop.value,
|
|
14
15
|
'vc-app-menu__inner--collapsed': $isDesktop.value && !isExpanded,
|
|
16
|
+
'vc-app-menu__inner--hover-expanded': isHoverExpanded,
|
|
15
17
|
}"
|
|
16
18
|
>
|
|
17
19
|
<!-- Show scrollable area with menu items -->
|
|
@@ -32,8 +34,8 @@
|
|
|
32
34
|
:icon="item.groupIcon || item.icon"
|
|
33
35
|
:title="item.title as string"
|
|
34
36
|
:children="item.children"
|
|
35
|
-
:expand="$isDesktop.value ? isExpanded : true"
|
|
36
|
-
@click="handleMenuItemClick(
|
|
37
|
+
:expand="$isDesktop.value ? isExpanded || isHoverExpanded : true"
|
|
38
|
+
@click="handleMenuItemClick(item, $event)"
|
|
37
39
|
/>
|
|
38
40
|
</div>
|
|
39
41
|
</VcContainer>
|
|
@@ -77,7 +79,7 @@ const emit = defineEmits<Emits>();
|
|
|
77
79
|
|
|
78
80
|
const isMobile = inject("isMobile") as Ref<boolean>;
|
|
79
81
|
const { menuItems } = useMenuService();
|
|
80
|
-
const { isExpanded } = useMenuExpanded();
|
|
82
|
+
const { isExpanded, isHoverExpanded } = useMenuExpanded();
|
|
81
83
|
const { closeAll } = useAppMenuState();
|
|
82
84
|
|
|
83
85
|
const handleMenuItemClick = (item: MenuItem, nestedItem?: MenuItem) => {
|
|
@@ -105,8 +107,8 @@ const isMenuVisible = computed(() => {
|
|
|
105
107
|
--app-backdrop-overlay: rgb(from var(--app-backdrop-overlay-bg) r g b / 75%);
|
|
106
108
|
|
|
107
109
|
--app-backdrop-shadow-color: var(--additional-950);
|
|
108
|
-
--app-backdrop-shadow:
|
|
109
|
-
1px 1px 22px rgb(from var(--notification-dropdown-shadow-color) r g b / 7%);
|
|
110
|
+
--app-backdrop-shadow:
|
|
111
|
+
0 -6px 6px var(--additional-50), 1px 1px 22px rgb(from var(--notification-dropdown-shadow-color) r g b / 7%);
|
|
110
112
|
}
|
|
111
113
|
|
|
112
114
|
.vc-app-menu {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
:title="title"
|
|
22
22
|
:disable-menu="disableMenu"
|
|
23
23
|
@backlink:click="closeBlade(blades.length - 1)"
|
|
24
|
-
@logo:click="
|
|
24
|
+
@logo:click="operateLogoClick"
|
|
25
25
|
>
|
|
26
26
|
<template #app-switcher>
|
|
27
27
|
<slot name="app-switcher">
|
|
@@ -32,9 +32,12 @@
|
|
|
32
32
|
</slot>
|
|
33
33
|
</template>
|
|
34
34
|
|
|
35
|
-
<template
|
|
35
|
+
<!-- <template
|
|
36
|
+
v-if="$slots['logo:append']"
|
|
37
|
+
#logo:append
|
|
38
|
+
>
|
|
36
39
|
<slot name="logo:append"></slot>
|
|
37
|
-
</template>
|
|
40
|
+
</template> -->
|
|
38
41
|
|
|
39
42
|
<!-- Toolbar slot -->
|
|
40
43
|
<template #toolbar>
|
|
@@ -58,7 +61,7 @@
|
|
|
58
61
|
|
|
59
62
|
<template #user-dropdown>
|
|
60
63
|
<UserDropdownButton
|
|
61
|
-
:avatar="avatar"
|
|
64
|
+
:avatar-url="avatar"
|
|
62
65
|
:name="name"
|
|
63
66
|
:role="role"
|
|
64
67
|
/>
|
|
@@ -80,7 +83,7 @@
|
|
|
80
83
|
</template>
|
|
81
84
|
|
|
82
85
|
<script lang="ts" setup>
|
|
83
|
-
import { h, inject, provide, computed } from "vue";
|
|
86
|
+
import { h, inject, provide, computed, useAttrs } from "vue";
|
|
84
87
|
import VcAppBar from "./_internal/vc-app-bar/vc-app-bar.vue";
|
|
85
88
|
import VcAppMenu from "./_internal/vc-app-menu/vc-app-menu.vue";
|
|
86
89
|
import {
|
|
@@ -93,9 +96,8 @@ import {
|
|
|
93
96
|
} from "./../../../../shared/components";
|
|
94
97
|
import { useNotifications, useUser } from "../../../../core/composables";
|
|
95
98
|
import { useRoute, useRouter } from "vue-router";
|
|
96
|
-
import { watchOnce
|
|
99
|
+
import { watchOnce } from "@vueuse/core";
|
|
97
100
|
import { MenuItem } from "../../../../core/types";
|
|
98
|
-
import { useToolbarSlots } from "./composables/useToolbarSlots";
|
|
99
101
|
import { useSettingsMenu, SettingsMenuKey } from "../../../../shared/composables/useSettingsMenu";
|
|
100
102
|
import { LanguageSelector } from "../../../../shared/components/language-selector";
|
|
101
103
|
import { ThemeSelector } from "../../../../shared/components/theme-selector";
|
|
@@ -103,6 +105,8 @@ import { ChangePasswordButton } from "../../../../shared/components/change-passw
|
|
|
103
105
|
import { LogoutButton } from "../../../../shared/components/logout-button";
|
|
104
106
|
import { useI18n } from "vue-i18n";
|
|
105
107
|
import { createGlobalSearch } from "../../../../core/composables/useGlobalSearch";
|
|
108
|
+
import { provideDashboardService } from "../../../../core/composables/useDashboard";
|
|
109
|
+
import { DynamicModulesKey } from "../../../../injection-keys";
|
|
106
110
|
|
|
107
111
|
export interface Props {
|
|
108
112
|
isReady: boolean;
|
|
@@ -113,8 +117,13 @@ export interface Props {
|
|
|
113
117
|
name?: string;
|
|
114
118
|
disableMenu?: boolean;
|
|
115
119
|
role?: string;
|
|
120
|
+
// кастомное поведение при клике на лого
|
|
116
121
|
}
|
|
117
122
|
|
|
123
|
+
const emit = defineEmits<{
|
|
124
|
+
(e: "logo-click", goToRoot: () => void): void;
|
|
125
|
+
}>();
|
|
126
|
+
|
|
118
127
|
defineOptions({
|
|
119
128
|
inheritAttrs: false,
|
|
120
129
|
});
|
|
@@ -122,20 +131,18 @@ defineOptions({
|
|
|
122
131
|
defineSlots<{
|
|
123
132
|
"app-switcher": void;
|
|
124
133
|
toolbar: void;
|
|
125
|
-
"
|
|
126
|
-
"toolbar:language-selector": void;
|
|
127
|
-
"toolbar:theme-selector": void;
|
|
128
|
-
"logo:append": void;
|
|
134
|
+
// "logo:append": void;
|
|
129
135
|
}>();
|
|
130
136
|
|
|
131
137
|
const props = defineProps<Props>();
|
|
132
138
|
|
|
139
|
+
const attrs = useAttrs();
|
|
140
|
+
|
|
133
141
|
console.debug("vc-app: Init vc-app");
|
|
134
142
|
|
|
135
143
|
const internalRoutes = inject("bladeRoutes") as BladeRoutesRecord[];
|
|
136
|
-
const dynamicModules = inject(
|
|
144
|
+
const dynamicModules = inject(DynamicModulesKey, undefined);
|
|
137
145
|
const router = useRouter();
|
|
138
|
-
createGlobalSearch();
|
|
139
146
|
|
|
140
147
|
const { openBlade, closeBlade, resolveBladeByName, blades, goToRoot } = useBladeNavigation();
|
|
141
148
|
const { appsList, switchApp, getApps } = useAppSwitcher();
|
|
@@ -143,9 +150,10 @@ const { appsList, switchApp, getApps } = useAppSwitcher();
|
|
|
143
150
|
const { loadFromHistory } = useNotifications();
|
|
144
151
|
const route = useRoute();
|
|
145
152
|
const { isAuthenticated } = useUser();
|
|
146
|
-
const routes = router.getRoutes();
|
|
147
153
|
|
|
148
|
-
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
const routes = router.getRoutes();
|
|
149
157
|
|
|
150
158
|
const settingsMenu = useSettingsMenu();
|
|
151
159
|
provide(SettingsMenuKey, settingsMenu);
|
|
@@ -200,6 +208,10 @@ const onMenuItemClick = function (item: MenuItem) {
|
|
|
200
208
|
}
|
|
201
209
|
};
|
|
202
210
|
|
|
211
|
+
const operateLogoClick = () => {
|
|
212
|
+
emit("logo-click", openRoot);
|
|
213
|
+
};
|
|
214
|
+
|
|
203
215
|
const openRoot = async () => {
|
|
204
216
|
const isPrevented = await closeBlade(1);
|
|
205
217
|
|
|
@@ -219,7 +231,9 @@ watchOnce(
|
|
|
219
231
|
);
|
|
220
232
|
|
|
221
233
|
provide("internalRoutes", internalRoutes);
|
|
222
|
-
provide(
|
|
234
|
+
provide(DynamicModulesKey, dynamicModules);
|
|
235
|
+
provideDashboardService();
|
|
236
|
+
createGlobalSearch();
|
|
223
237
|
</script>
|
|
224
238
|
|
|
225
239
|
<style lang="scss">
|
package/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue
CHANGED
|
@@ -65,9 +65,6 @@
|
|
|
65
65
|
<script lang="ts" setup>
|
|
66
66
|
import VcTableFilter from "./../vc-table-filter/vc-table-filter.vue";
|
|
67
67
|
import { VcInput } from "./../../../../molecules";
|
|
68
|
-
import { inject, ref, watch, computed } from "vue";
|
|
69
|
-
import { useGlobalSearch } from "../../../../../../core/composables/useGlobalSearch";
|
|
70
|
-
import { useBladeNavigation } from "../../../../../../shared";
|
|
71
68
|
|
|
72
69
|
export interface Props {
|
|
73
70
|
searchValue?: string;
|
|
@@ -81,15 +78,16 @@ export interface Emits {
|
|
|
81
78
|
(event: "search:change", value: string): void;
|
|
82
79
|
}
|
|
83
80
|
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
defineProps<Props>();
|
|
82
|
+
defineEmits<Emits>();
|
|
86
83
|
</script>
|
|
87
84
|
|
|
88
85
|
<style lang="scss">
|
|
89
86
|
:root {
|
|
90
87
|
--table-base-header-border-color: var(--base-border-color, var(--neutrals-200));
|
|
91
88
|
--table-base-header-input-icon-color: var(--neutrals-300);
|
|
92
|
-
--table-base-header-padding:
|
|
89
|
+
--table-base-header-padding-horizontal: 12px;
|
|
90
|
+
--table-base-header-padding-vertical: 9px;
|
|
93
91
|
--table-base-header-mobile-padding: 30px;
|
|
94
92
|
}
|
|
95
93
|
|
|
@@ -102,7 +100,7 @@ const emit = defineEmits<Emits>();
|
|
|
102
100
|
}
|
|
103
101
|
|
|
104
102
|
&--desktop {
|
|
105
|
-
@apply tw-
|
|
103
|
+
@apply tw-px-[var(--table-base-header-padding-horizontal)] tw-py-[var(--table-base-header-padding-vertical)];
|
|
106
104
|
}
|
|
107
105
|
|
|
108
106
|
&__filter-mobile {
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
ref="headerRef"
|
|
4
|
-
class="vc-table-header"
|
|
4
|
+
class="vc-table-columns-header"
|
|
5
5
|
@mouseenter="$emit('headerMouseOver', true)"
|
|
6
6
|
@mouseleave="$emit('headerMouseOver', false)"
|
|
7
7
|
>
|
|
8
|
-
<div class="vc-table-header__row">
|
|
8
|
+
<div class="vc-table-columns-header__row">
|
|
9
9
|
<div
|
|
10
10
|
v-if="multiselect && items && items.length"
|
|
11
|
-
class="vc-table-header__checkbox"
|
|
11
|
+
class="vc-table-columns-header__checkbox"
|
|
12
12
|
>
|
|
13
|
-
<div class="vc-table-header__checkbox-content">
|
|
13
|
+
<div class="vc-table-columns-header__checkbox-content">
|
|
14
14
|
<VcCheckbox
|
|
15
15
|
:model-value="headerCheckbox"
|
|
16
16
|
size="m"
|
|
@@ -18,17 +18,17 @@
|
|
|
18
18
|
@click.stop
|
|
19
19
|
/>
|
|
20
20
|
</div>
|
|
21
|
-
<div class="vc-table-header__checkbox-resizer" />
|
|
21
|
+
<div class="vc-table-columns-header__checkbox-resizer" />
|
|
22
22
|
</div>
|
|
23
23
|
<div
|
|
24
24
|
v-for="(item, index) in filteredCols"
|
|
25
25
|
:id="item.id"
|
|
26
26
|
:key="item.id"
|
|
27
|
-
class="vc-table-header__cell"
|
|
27
|
+
class="vc-table-columns-header__cell"
|
|
28
28
|
:class="[
|
|
29
29
|
{
|
|
30
|
-
'vc-table-header__cell--sortable': item.sortable,
|
|
31
|
-
'vc-table-header__cell--last': index === filteredCols.length - 1,
|
|
30
|
+
'vc-table-columns-header__cell--sortable': item.sortable,
|
|
31
|
+
'vc-table-columns-header__cell--last': index === filteredCols.length - 1,
|
|
32
32
|
},
|
|
33
33
|
item.align ? tableAlignment[item.align] : '',
|
|
34
34
|
]"
|
|
@@ -40,18 +40,18 @@
|
|
|
40
40
|
@drop="reorderableColumns && onColumnHeaderDrop($event, item)"
|
|
41
41
|
@click="$emit('headerClick', item)"
|
|
42
42
|
>
|
|
43
|
-
<div class="vc-table-header__cell-content">
|
|
44
|
-
<div class="vc-table-header__cell-title">
|
|
43
|
+
<div class="vc-table-columns-header__cell-content">
|
|
44
|
+
<div class="vc-table-columns-header__cell-title">
|
|
45
45
|
<span
|
|
46
46
|
v-if="editing && item.rules?.required"
|
|
47
|
-
class="vc-table-header__cell-required"
|
|
47
|
+
class="vc-table-columns-header__cell-required"
|
|
48
48
|
>*</span
|
|
49
49
|
>
|
|
50
50
|
<slot :name="`header_${item.id}`">{{ item.title }}</slot>
|
|
51
51
|
</div>
|
|
52
52
|
<div
|
|
53
53
|
v-if="sortField === item.id"
|
|
54
|
-
class="vc-table-header__cell-sort-icon"
|
|
54
|
+
class="vc-table-columns-header__cell-sort-icon"
|
|
55
55
|
>
|
|
56
56
|
<VcIcon
|
|
57
57
|
size="xs"
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
</div>
|
|
61
61
|
<div
|
|
62
62
|
v-else
|
|
63
|
-
class="vc-table-header__cell-sort-icons"
|
|
63
|
+
class="vc-table-columns-header__cell-sort-icons"
|
|
64
64
|
>
|
|
65
65
|
<VcIcon
|
|
66
66
|
size="xs"
|
|
@@ -73,9 +73,9 @@
|
|
|
73
73
|
</div>
|
|
74
74
|
</div>
|
|
75
75
|
<div
|
|
76
|
-
class="vc-table-header__cell-resizer"
|
|
76
|
+
class="vc-table-columns-header__cell-resizer"
|
|
77
77
|
:class="{
|
|
78
|
-
'vc-table-header__cell-resizer--cursor': resizableColumns,
|
|
78
|
+
'vc-table-columns-header__cell-resizer--cursor': resizableColumns,
|
|
79
79
|
}"
|
|
80
80
|
@mousedown.stop="resizableColumns && handleMouseDown($event, item)"
|
|
81
81
|
/>
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
|
|
84
84
|
<div
|
|
85
85
|
v-if="isHeaderHover && expanded"
|
|
86
|
-
class="vc-table-header__column-switcher"
|
|
86
|
+
class="vc-table-columns-header__column-switcher"
|
|
87
87
|
>
|
|
88
88
|
<VcTableColumnSwitcher
|
|
89
89
|
:items="internalColumnsSorted"
|
|
@@ -96,18 +96,18 @@
|
|
|
96
96
|
|
|
97
97
|
<div
|
|
98
98
|
ref="resizer"
|
|
99
|
-
class="vc-table-header__resizer"
|
|
99
|
+
class="vc-table-columns-header__resizer"
|
|
100
100
|
/>
|
|
101
101
|
<div
|
|
102
102
|
ref="reorderRef"
|
|
103
|
-
class="vc-table-header__reorder-ref"
|
|
103
|
+
class="vc-table-columns-header__reorder-ref"
|
|
104
104
|
/>
|
|
105
105
|
</div>
|
|
106
106
|
</template>
|
|
107
107
|
|
|
108
108
|
<script lang="ts" setup generic="T extends TableItem | string">
|
|
109
109
|
import { toRefs, ref } from "vue";
|
|
110
|
-
import { VcCheckbox, VcIcon } from "
|
|
110
|
+
import { VcCheckbox, VcIcon } from "../../../../../..";
|
|
111
111
|
import VcTableColumnSwitcher from "../../../vc-table-column-switcher/vc-table-column-switcher.vue";
|
|
112
112
|
import type { ITableColumns, TableItem, TableColPartial } from "../../../../types";
|
|
113
113
|
import { useTableColumnReorder } from "../../../../composables/useTableColumnReorder";
|
|
@@ -168,9 +168,11 @@ const { resizer, handleMouseDown } = useTableColumnResize(internalColumns, () =>
|
|
|
168
168
|
<style lang="scss">
|
|
169
169
|
:root {
|
|
170
170
|
--table-header-height: 60px;
|
|
171
|
+
--table-header-border-color: var(--base-border-color, var(--neutrals-200));
|
|
171
172
|
}
|
|
172
173
|
|
|
173
|
-
.vc-table-header {
|
|
174
|
+
.vc-table-columns-header {
|
|
175
|
+
@apply tw-border-y tw-border-[color:var(--table-header-border-color)] tw-border-solid;
|
|
174
176
|
&__row {
|
|
175
177
|
@apply tw-flex tw-flex-row [box-shadow:var(--table-header-border)] tw-bg-[--table-header-bg];
|
|
176
178
|
}
|
|
@@ -194,7 +196,7 @@ const { resizer, handleMouseDown } = useTableColumnResize(internalColumns, () =>
|
|
|
194
196
|
@apply tw-cursor-pointer;
|
|
195
197
|
|
|
196
198
|
&:hover {
|
|
197
|
-
.vc-table-header__cell-sort-icons {
|
|
199
|
+
.vc-table-columns-header__cell-sort-icons {
|
|
198
200
|
@apply tw-visible;
|
|
199
201
|
}
|
|
200
202
|
}
|
package/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/vc-table-desktop-view.vue
CHANGED
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
|
|
90
90
|
<script lang="ts" setup generic="T extends TableItem | string">
|
|
91
91
|
import { toRefs, MaybeRef, useSlots } from "vue";
|
|
92
|
-
import VcTableHeader from "./_internal/vc-table-header/vc-table-header.vue";
|
|
92
|
+
import VcTableHeader from "./_internal/vc-table-columns-header/vc-table-columns-header.vue";
|
|
93
93
|
import VcTableSelectAllHeader from "./_internal/vc-table-select-all-header/vc-table-select-all-header.vue";
|
|
94
94
|
import VcTableBody from "./_internal/vc-table-body/vc-table-body.vue";
|
|
95
95
|
import type { ITableColumns, TableItem, TableColPartial, StatusImage } from "../../types";
|
|
@@ -23,6 +23,7 @@ import { VNode, computed, inject, Ref, h, useSlots } from "vue";
|
|
|
23
23
|
import { useGlobalSearch } from "../../../../../../core/composables/useGlobalSearch";
|
|
24
24
|
import { BladeInstance } from "../../../../../../injection-keys";
|
|
25
25
|
import VcTableBaseHeader from "../vc-table-base-header/vc-table-base-header.vue";
|
|
26
|
+
import { IBladeInstance } from "../../../../../../shared";
|
|
26
27
|
|
|
27
28
|
const props = defineProps<{
|
|
28
29
|
hasHeaderSlot: boolean;
|
|
@@ -44,7 +45,17 @@ defineSlots<{
|
|
|
44
45
|
header: (props: { header: VNode }) => VNode;
|
|
45
46
|
}>();
|
|
46
47
|
|
|
47
|
-
const blade = inject(
|
|
48
|
+
const blade = inject(
|
|
49
|
+
BladeInstance,
|
|
50
|
+
computed(
|
|
51
|
+
(): Partial<IBladeInstance> => ({
|
|
52
|
+
navigation: {
|
|
53
|
+
idx: 0,
|
|
54
|
+
instance: null,
|
|
55
|
+
},
|
|
56
|
+
}),
|
|
57
|
+
),
|
|
58
|
+
);
|
|
48
59
|
const globalSearch = useGlobalSearch();
|
|
49
60
|
const isMobile = inject("isMobile") as Ref<boolean>;
|
|
50
61
|
const slots = useSlots();
|