@vc-shell/framework 1.0.244 → 1.0.246

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 (43) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/core/composables/index.ts +1 -0
  3. package/core/composables/useAppInsights/index.ts +42 -0
  4. package/core/composables/useErrorHandler/index.ts +9 -7
  5. package/core/plugins/signalR/index.ts +8 -5
  6. package/dist/core/composables/index.d.ts +1 -0
  7. package/dist/core/composables/index.d.ts.map +1 -1
  8. package/dist/core/composables/useAppInsights/index.d.ts +12 -0
  9. package/dist/core/composables/useAppInsights/index.d.ts.map +1 -0
  10. package/dist/core/composables/useErrorHandler/index.d.ts.map +1 -1
  11. package/dist/core/plugins/signalR/index.d.ts.map +1 -1
  12. package/dist/framework.js +21818 -20975
  13. package/dist/index.css +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  16. package/dist/shared/modules/dynamic/factories/types/index.d.ts +2 -0
  17. package/dist/shared/modules/dynamic/factories/types/index.d.ts.map +1 -1
  18. package/dist/shared/modules/dynamic/helpers/nodeBuilder.d.ts.map +1 -1
  19. package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts +2 -0
  20. package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts.map +1 -1
  21. package/dist/tsconfig.tsbuildinfo +1 -1
  22. package/dist/ui/components/molecules/vc-editor/vc-editor.stories.d.ts +397 -3
  23. package/dist/ui/components/molecules/vc-editor/vc-editor.stories.d.ts.map +1 -1
  24. 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
  25. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts.map +1 -1
  26. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue.d.ts +1 -0
  27. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue.d.ts.map +1 -1
  28. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  29. package/package.json +5 -4
  30. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +17 -21
  31. package/shared/modules/dynamic/factories/types/index.ts +2 -0
  32. package/shared/modules/dynamic/helpers/nodeBuilder.ts +1 -0
  33. package/shared/modules/dynamic/pages/dynamic-blade-form.vue +7 -1
  34. package/ui/components/molecules/vc-editor/vc-editor.stories.ts +1 -0
  35. package/ui/components/molecules/vc-editor/vc-editor.vue +4 -0
  36. package/ui/components/molecules/vc-select/vc-select.vue +3 -0
  37. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue +17 -14
  38. package/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue +14 -10
  39. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue +3 -0
  40. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +1 -0
  41. package/ui/components/organisms/vc-table/vc-table.vue +10 -4
  42. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts +0 -42
  43. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import type { Meta, StoryFn } from "@storybook/vue3";
2
2
  import { VcEditor } from "./";
3
+ import { default as Delta } from "@vueup/vue-quill/node_modules/quill-delta";
3
4
 
4
5
  export default {
5
6
  title: "molecules/VcEditor",
@@ -175,6 +175,10 @@ function onTextChange() {
175
175
  }
176
176
  }
177
177
  }
178
+
179
+ defineExpose({
180
+ quillRef,
181
+ });
178
182
  </script>
179
183
 
180
184
  <style lang="scss">
@@ -62,6 +62,7 @@
62
62
  {{ prefix }}
63
63
  </div>
64
64
  <div
65
+ data-test-id="dropdown-toggle"
65
66
  class="tw-appearance-none tw-border-none tw-outline-none tw-min-h-[var(--select-height)] tw-flex tw-items-center tw-w-full tw-box-border tw-cursor-pointer invalid:tw-text-[color:var(--select-placeholder-color)] tw-truncate"
66
67
  @click.stop="toggleDropdown"
67
68
  >
@@ -223,6 +224,7 @@
223
224
  v-if="isOpened"
224
225
  ref="dropdownRef"
225
226
  v-on-click-outside="[toggleDropdown, { ignore: [dropdownToggleRef] }]"
227
+ data-test-id="dropdown"
226
228
  class="tw-flex tw-flex-col tw-box-border tw-max-h-[300px] tw-h-auto tw-z-[101] tw-overflow-hidden tw-absolute tw-bg-[color:var(--select-background-color)] tw-border tw-border-solid tw-border-[color:var(--select-border-color)] tw-border-t-[color:var(--select-background-color)] tw-rounded-b-[var(--select-border-radius)] tw-p-2"
227
229
  :style="dropdownStyle"
228
230
  >
@@ -250,6 +252,7 @@
250
252
  v-else
251
253
  :key="i"
252
254
  class="tw-flex tw-items-center tw-min-h-[36px] tw-my-1 tw-box-border tw-px-2 tw-rounded-[3px] tw-cursor-pointer hover:tw-bg-[#eff7fc]"
255
+ data-test-id="option"
253
256
  :class="{ 'tw-bg-[#eff7fc]': item.selected }"
254
257
  @click="item.toggleOption(item.opt)"
255
258
  >
@@ -1,10 +1,6 @@
1
1
  <template>
2
2
  <div
3
- class="vc-app-menu-link tw-cursor-pointer tw-group"
4
- :class="{
5
- 'tw-px-[19px]': ($isDesktop.value && expand) || $isMobile.value,
6
- 'tw-pl-[19px] tw-pr-[4px]': $isDesktop.value && !expand,
7
- }"
3
+ class="vc-app-menu-link tw-cursor-pointer tw-group tw-px-[19px]"
8
4
  @click="onMenuItemClick"
9
5
  >
10
6
  <div
@@ -14,6 +10,7 @@
14
10
  'vc-app-menu-item_active': isMenuItemActive,
15
11
  'vc-app-menu-item_no-hover': !children?.length,
16
12
  'vc-app-menu-item_child-opened': expand && isOpened,
13
+ 'vc-app-menu-item_collapsed': !expand,
17
14
  },
18
15
  ]"
19
16
  >
@@ -59,11 +56,8 @@
59
56
  custom
60
57
  >
61
58
  <div
62
- :class="{
63
- 'tw-px-[19px] ': ($isDesktop.value && expand) || $isMobile.value,
64
- 'tw-pl-[19px] tw-pr-[4px] ': $isDesktop.value && !expand,
65
- }"
66
- class="vc-app-menu-item__child-item-link tw-cursor-pointer tw-z-[2]"
59
+ class="vc-app-menu-item__child-item-link tw-cursor-pointer tw-z-[2] tw-px-[19px]"
60
+ :data-test-id="nested.routeId"
67
61
  @click="$emit('onClick', nested)"
68
62
  >
69
63
  <div
@@ -71,9 +65,10 @@
71
65
  :class="[
72
66
  {
73
67
  'vc-app-menu-item__child-item_active': isActive(nested.url ?? ''),
74
- 'tw-pl-[21px]': expand,
68
+ 'vc-app-menu-item__child-item_collapsed': !expand,
69
+ 'tw-pl-[21px] tw-w-full ': expand,
75
70
  },
76
- 'vc-app-menu-item__child-item tw-min-w-0 tw-flex tw-w-full tw-h-[var(--app-menu-item-height)] tw-items-center',
71
+ 'vc-app-menu-item__child-item tw-min-w-0 tw-flex tw-h-[var(--app-menu-item-height)] tw-items-center [transition:padding_150ms_cubic-bezier(0.2,0,0,1)_0s] ',
77
72
  ]"
78
73
  >
79
74
  <div
@@ -188,7 +183,7 @@ const isActive = (url: string) => {
188
183
  --app-menu-item-active-icon: #2e3d4e;
189
184
  }
190
185
 
191
- .vc-app-menu-link:hover .vc-app-menu-item {
186
+ .vc-app-menu-link:hover .vc-app-menu-item:not(.vc-app-menu-item_active) {
192
187
  @apply tw-bg-[color:var(--app-menu-item-background-color-hover)] tw-bg-opacity-50
193
188
  tw-rounded-[var(--app-menu-item-hover-radius)];
194
189
 
@@ -209,7 +204,7 @@ const isActive = (url: string) => {
209
204
  }
210
205
  }
211
206
 
212
- .vc-app-menu-item__child-item-link:hover .vc-app-menu-item__child-item {
207
+ .vc-app-menu-item__child-item-link:hover .vc-app-menu-item__child-item:not(.vc-app-menu-item__child-item_active) {
213
208
  @apply tw-bg-[color:var(--app-menu-item-background-color-hover)] tw-bg-opacity-50
214
209
  tw-rounded-[var(--app-menu-item-hover-radius)];
215
210
 
@@ -223,6 +218,10 @@ const isActive = (url: string) => {
223
218
  tw-border-none
224
219
  tw-flex-nowrap tw-box-border tw-cursor-pointer tw-relative tw-uppercase tw-select-none tw-py-[4px] tw-px-[8px];
225
220
 
221
+ &_collapsed {
222
+ @apply tw-w-[40px];
223
+ }
224
+
226
225
  &_active {
227
226
  @apply tw-bg-[color:var(--app-menu-item-background-color-active)]
228
227
  tw-rounded-[var(--app-menu-item-hover-radius)]
@@ -301,6 +300,10 @@ const isActive = (url: string) => {
301
300
  @apply tw-text-[color:var(--app-menu-item-icon-color-active)];
302
301
  }
303
302
  }
303
+
304
+ &_collapsed {
305
+ @apply tw-w-[40px];
306
+ }
304
307
  }
305
308
 
306
309
  &:hover:not(.vc-app-menu-item_active) {
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div
3
3
  v-if="isMenuVisible"
4
- class="vc-app-menu tw-relative tw-w-[var(--app-menu-width)] [transition:width_300ms_cubic-bezier(0.2,0,0,1)_0s] tw-pt-[22px]"
4
+ class="vc-app-menu tw-relative tw-w-[var(--app-menu-width)] [transition:width_300ms_cubic-bezier(0.2,0,0,1)_0s] tw-pt-[22px] -tw-mr-[8px]"
5
5
  :class="{
6
6
  'vc-app-menu_mobile tw-hidden !tw-fixed !tw-left-0 !tw-top-0 !tw-w-full !tw-bottom-0 !tw-z-[9999]':
7
7
  $isMobile.value,
@@ -19,13 +19,11 @@
19
19
  @click="isMobileVisible = false"
20
20
  ></div>
21
21
  <div
22
- class="!tw-absolute vc-app-menu__inner tw-flex tw-flex-col tw-h-full [transition:width_300ms_cubic-bezier(0.2,0,0,1)_0s] tw-z-[1001] tw-top-0 tw-bottom-0 tw-bg-[color:var(--app-background)]"
22
+ class="!tw-absolute vc-app-menu__inner tw-flex tw-flex-col tw-h-full [transition:width_150ms_cubic-bezier(0.2,0,0,1)_0s] tw-z-[1001] tw-top-0 tw-bottom-0 tw-bg-[color:var(--app-background)]"
23
23
  :class="{
24
24
  'tw-left-0 tw-pt-[22px]': $isDesktop.value,
25
25
  '!tw-w-[var(--app-menu-width-collapse)]': $isDesktop.value && !isExpanded && !isExpandedOver,
26
26
  'tw-w-[var(--app-menu-width)]': $isDesktop.value && (isExpanded || isExpandedOver),
27
- 'tw-shadow-none': $isDesktop.value && isExpanded,
28
- 'tw-shadow-[6px_0_5px_-2px_#3654751A]': $isDesktop.value && isExpandedOver,
29
27
  }"
30
28
  >
31
29
  <!-- Show menu close handler on mobile devices -->
@@ -62,14 +60,20 @@
62
60
  class="tw-grow tw-basis-0"
63
61
  >
64
62
  <div class="tw-gap-[5px] tw-flex tw-flex-col tw-h-full">
65
- <slot
66
- v-if="!$isDesktop.value"
67
- name="mobile"
68
- ></slot>
63
+ <div
64
+ v-if="$slots['mobile']"
65
+ class="tw-px-[19px]"
66
+ >
67
+ <slot
68
+ v-if="!$isDesktop.value"
69
+ name="mobile"
70
+ ></slot>
71
+ </div>
69
72
 
70
73
  <VcAppMenuItem
71
74
  v-for="item in menuItems"
72
75
  :key="item?.id"
76
+ :data-test-id="item?.routeId"
73
77
  :is-visible="
74
78
  $hasAccess(item.permissions!) && (item.children?.some((child) => $hasAccess(child.permissions!)) ?? true)
75
79
  "
@@ -147,7 +151,7 @@ function expandOverHandler(state: boolean) {
147
151
  if (isExpandedOver.value !== state) {
148
152
  isExpandedOver.value = state;
149
153
  }
150
- }, 200);
154
+ }, 50);
151
155
  } else {
152
156
  isExpandedOver.value = state;
153
157
  }
@@ -161,7 +165,7 @@ defineExpose({
161
165
  <style lang="scss">
162
166
  :root {
163
167
  --app-menu-width: 230px;
164
- --app-menu-width-collapse: 63px;
168
+ --app-menu-width-collapse: 70px;
165
169
  --app-menu-background-color: #ffffff;
166
170
  --app-menu-version-color: #838d9a;
167
171
 
@@ -6,11 +6,13 @@
6
6
  'tw-border-l tw-border-solid tw-border-[color:#eef0f2]': separator === 'left',
7
7
  }"
8
8
  :title="title"
9
+ :data-test-id="id ?? 'vc-blade-toolbar-button'"
9
10
  @click="onClick"
10
11
  >
11
12
  <div ref="dropButtonRef">
12
13
  <div
13
14
  ref="bladeDropToggle"
15
+ type="button"
14
16
  class="vc-blade-toolbar-button__wrap"
15
17
  >
16
18
  <VcIcon
@@ -64,6 +66,7 @@ export interface Props {
64
66
  dropdownItems?: IBladeDropdownItem[];
65
67
  clickHandler?(): void;
66
68
  separator?: "left" | "right" | "both";
69
+ id?: string;
67
70
  }
68
71
 
69
72
  export interface Emits {
@@ -11,6 +11,7 @@
11
11
  >
12
12
  <VcBladeToolbarButton
13
13
  v-if="$hasAccess(item.permissions) && (item.isVisible === undefined || item.isVisible)"
14
+ :id="item.id"
14
15
  :is-expanded="isExpanded"
15
16
  :icon="item.icon"
16
17
  :title="unref(item.title)"
@@ -645,7 +645,7 @@ const draggedColumn = ref();
645
645
  const draggedElement = ref<HTMLElement>();
646
646
  const dropPosition = ref();
647
647
  const columnsInit = ref(true);
648
- const isHovered = ref(false);
648
+ const isHovered = ref(undefined) as Ref<{ item: T; state: boolean } | undefined>;
649
649
 
650
650
  // row reordering variables
651
651
  const draggedRow = ref<T>();
@@ -686,8 +686,8 @@ const renderCellSlot = ({ item, cell, index }: { item: T; cell: ITableColumns; i
686
686
  size: "m",
687
687
  modelValue: selection.value.includes(item),
688
688
  onClick: (e: Event) => e.stopPropagation(),
689
- onMouseover: () => (isHovered.value = true),
690
- onMouseout: () => (isHovered.value = false),
689
+ onMouseover: () => (isHovered.value = { state: true, item: item }),
690
+ onMouseout: () => (isHovered.value = { state: false, item: item }),
691
691
  "onUpdate:modelValue": () => {
692
692
  rowCheckbox(item);
693
693
  },
@@ -705,7 +705,13 @@ const renderCellSlot = ({ item, cell, index }: { item: T; cell: ITableColumns; i
705
705
  checkboxVisibilityHandler ? checkboxComponent : undefined,
706
706
  h(
707
707
  "div",
708
- { class: checkboxVisibilityHandler ? (isHovered.value ? "tw-opacity-5" : "tw-opacity-15") : "" },
708
+ {
709
+ class: checkboxVisibilityHandler
710
+ ? isHovered.value?.item === item && isHovered.value.state
711
+ ? "tw-opacity-5"
712
+ : "tw-opacity-15"
713
+ : "",
714
+ },
709
715
  !isSlotExist
710
716
  ? h(VcTableCell, {
711
717
  cell,
@@ -1,42 +0,0 @@
1
- import "@vueup/vue-quill/dist/vue-quill.snow.css";
2
- export interface Props {
3
- placeholder?: string;
4
- modelValue?: string;
5
- required?: boolean;
6
- disabled?: boolean;
7
- label?: string;
8
- tooltip?: string;
9
- errorMessage?: string;
10
- assetsFolder: string;
11
- multilanguage?: boolean;
12
- currentLanguage?: string;
13
- maxlength?: number;
14
- }
15
- export interface Emits {
16
- (event: "update:modelValue", value: string | number | Date | null | undefined): void;
17
- }
18
- declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<Props>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
19
- "update:modelValue": (value: string | number | Date | null | undefined) => void;
20
- }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<Props>>> & {
21
- "onUpdate:modelValue"?: ((value: string | number | Date | null | undefined) => any) | undefined;
22
- }, {}, {}>, Readonly<{
23
- error?: ((props: any) => any) | undefined;
24
- }> & {
25
- error?: ((props: any) => any) | undefined;
26
- }>;
27
- export default _default;
28
- type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
29
- type __VLS_TypePropsToRuntimeProps<T> = {
30
- [K in keyof T]-?: {} extends Pick<T, K> ? {
31
- type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
32
- } : {
33
- type: import('vue').PropType<T[K]>;
34
- required: true;
35
- };
36
- };
37
- type __VLS_WithTemplateSlots<T, S> = T & {
38
- new (): {
39
- $slots: S;
40
- };
41
- };
42
- //# sourceMappingURL=vc-editor.vue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vc-editor.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/molecules/vc-editor/vc-editor.vue.ts"],"names":[],"mappings":"AAGA,OAAO,0CAA0C,CAAC;AAKlD,MAAM,WAAW,KAAK;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,KAAK;IACpB,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;CACtF;;;;;;;;;;AA+PD,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,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}