@voicenter-team/voicenter-ui-plus 3.0.0 → 3.0.2

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 (85) hide show
  1. package/library/assets/assets/sass/main.css +1 -1
  2. package/library/assets/components/VcButton/VcButton.css +1 -1
  3. package/library/assets/components/VcButton/VcButtonIcon.css +1 -1
  4. package/library/assets/components/VcDelimitedList/VcDelimitedList.css +1 -1
  5. package/library/assets/components/VcExcelUploader/VcExcelFileUploadBlock.css +1 -1
  6. package/library/assets/components/VcModal/VcModal.css +1 -1
  7. package/library/assets/components/VcSoundplayer/VcSoundPlayer.css +1 -1
  8. package/library/assets/components/VcSplitButton/VcSplitButton.css +1 -1
  9. package/library/assets/components/VcTable/VcTable.css +1 -1
  10. package/library/assets/entity/components/Form/VcBaseVerticalForm.css +1 -1
  11. package/library/assets/entity/components/Table/VcEntityListTable.css +1 -1
  12. package/library/assets/entity/components/Tabs/VcEntityEditableTabs.css +1 -1
  13. package/library/components/VcButton/VcButton.vue.mjs +3 -2
  14. package/library/components/VcButton/VcButtonIcon.vue.mjs +92 -5
  15. package/library/components/VcButton/VcButtonIcon.vue3.mjs +5 -0
  16. package/library/components/VcButton/VcToggleButton.vue.mjs +20 -7
  17. package/library/components/VcDelimitedList/VcDelimitedList.vue.mjs +194 -5
  18. package/library/components/VcDelimitedList/VcDelimitedList.vue3.mjs +5 -0
  19. package/library/components/VcExcelUploader/VcExcelFileUploadBlock.vue.mjs +140 -5
  20. package/library/components/VcExcelUploader/VcExcelFileUploadBlock.vue3.mjs +5 -0
  21. package/library/components/VcExcelUploader/VcExcelFileUploader.vue.mjs +6 -5
  22. package/library/components/VcExcelUploader/VcFileImportParseResultBlock.vue.mjs +5 -3
  23. package/library/components/VcExcelUploader/VcFileImportResultBindDataTable.vue.mjs +21 -18
  24. package/library/components/VcExtendedDatetimeRangePicker/VcExtendedDatetimeRangePickerQuickOptionsSelection.vue.mjs +4 -3
  25. package/library/components/VcFileUploader/VcFileUploader.vue2.mjs +11 -9
  26. package/library/components/VcHtmlEditor/VcHtmlEditorToolbar.vue.mjs +10 -9
  27. package/library/components/VcIcon/VcIcon.vue.mjs +7 -3
  28. package/library/components/VcJsonSchema/Components/JsonSchemaEditor.vue.mjs +8 -7
  29. package/library/components/VcJsonSchema/PropertySetup/JsonSchemaPropertyModal.vue.mjs +10 -9
  30. package/library/components/VcMdEditor/ParameterNode.vue2.mjs +6 -5
  31. package/library/components/VcMdEditor/VcMdEditor.vue.mjs +8 -7
  32. package/library/components/VcPagination/VcPaginationButton.vue.mjs +3 -2
  33. package/library/components/VcSelect/VcSelect.vue.mjs +9 -5
  34. package/library/components/VcSoundplayer/VcSoundPlayer.vue.mjs +274 -5
  35. package/library/components/VcSoundplayer/VcSoundPlayer.vue3.mjs +5 -0
  36. package/library/components/VcSplitButton/VcSplitButton.vue.mjs +4 -3
  37. package/library/components/VcTable/VcTable.vue.mjs +1072 -6
  38. package/library/components/VcTable/VcTable.vue4.mjs +6 -0
  39. package/library/components/VcTree/VcTreeSelect.vue.mjs +8 -7
  40. package/library/entity/components/Button/VcEntityDeleteIconButton.vue.mjs +3 -2
  41. package/library/entity/components/Button/VcEntityEditIconButton.vue.mjs +3 -2
  42. package/library/entity/components/Form/VcBaseVerticalForm.vue.mjs +95 -5
  43. package/library/entity/components/Form/VcBaseVerticalForm.vue3.mjs +5 -0
  44. package/library/entity/components/Form/VcEntityVerticalCreateForm.vue.mjs +3 -2
  45. package/library/entity/components/Form/VcEntityVerticalEditForm.vue.mjs +9 -8
  46. package/library/entity/components/Table/VcEntityListTable.vue.mjs +414 -5
  47. package/library/entity/components/Table/VcEntityListTable.vue3.mjs +5 -0
  48. package/library/entity/components/Tabs/VcEntityEditableTabs.vue.mjs +287 -5
  49. package/library/entity/components/Tabs/VcEntityEditableTabs.vue3.mjs +5 -0
  50. package/library/index.mjs +8 -0
  51. package/library/index.mjs.br +0 -0
  52. package/library/index.mjs.gz +0 -0
  53. package/library/plugin.mjs +272 -264
  54. package/library/plugin.mjs.br +0 -0
  55. package/library/plugin.mjs.gz +0 -0
  56. package/library/style.css +12 -12
  57. package/library/style.css.br +0 -0
  58. package/library/style.css.gz +0 -0
  59. package/library/types/components/VcButton/VcButton.vue.d.ts +1 -1
  60. package/library/types/components/VcButton/VcToggleButton.vue.d.ts +4 -0
  61. package/library/types/components/VcDelimitedList/VcDelimitedList.vue.d.ts +1 -2
  62. package/library/types/components/VcIcon/VcIcon.vue.d.ts +1 -0
  63. package/library/types/components/VcLoading/VcLoading.vue.d.ts +1 -1
  64. package/library/types/components/VcOtpInput/VcOtpInput.vue.d.ts +1 -1
  65. package/library/types/components/VcSelect/VcInfiniteScrollSelect.vue.d.ts +2 -2
  66. package/library/types/components/VcSelect/VcSelect.vue.d.ts +3 -3
  67. package/library/types/components/VcSelect/VcSelectGrouped.vue.d.ts +4 -4
  68. package/library/types/components/VcSipFlow/VcSipFlow.vue.d.ts +1 -1
  69. package/library/types/components/VcSplitButton/VcSplitButton.vue.d.ts +1 -1
  70. package/library/types/components/VcSwitch/VcSwitch.vue.d.ts +3 -3
  71. package/library/types/components/VcTable/VcTable.vue.d.ts +17 -17
  72. package/library/types/components/VcTree/VcTree.vue.d.ts +3 -3
  73. package/library/types/components/VcTree/VcTreeSelect.vue.d.ts +3 -3
  74. package/library/types/types/OptionAndConfig.types.d.ts +1 -1
  75. package/library/types/types/VcTable.types.d.ts +2 -2
  76. package/library/types/types/VcTree.types.d.ts +2 -2
  77. package/package.json +1 -1
  78. package/library/components/VcButton/VcButtonIcon.vue2.mjs +0 -92
  79. package/library/components/VcDelimitedList/VcDelimitedList.vue2.mjs +0 -195
  80. package/library/components/VcExcelUploader/VcExcelFileUploadBlock.vue2.mjs +0 -141
  81. package/library/components/VcSoundplayer/VcSoundPlayer.vue2.mjs +0 -275
  82. package/library/components/VcTable/VcTable.vue2.mjs +0 -1069
  83. package/library/entity/components/Form/VcBaseVerticalForm.vue2.mjs +0 -96
  84. package/library/entity/components/Table/VcEntityListTable.vue2.mjs +0 -413
  85. package/library/entity/components/Tabs/VcEntityEditableTabs.vue2.mjs +0 -288
@@ -1,7 +1,289 @@
1
- import _sfc_main from "./VcEntityEditableTabs.vue2.mjs";
2
- import '../../../assets/entity/components/Tabs/VcEntityEditableTabs.css';/* empty css */
3
- import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.mjs";
4
- const VcEntityEditableTabs = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4ce6470f"]]);
1
+ import '../../../assets/entity/components/Tabs/VcEntityEditableTabs.css';
2
+ import { defineComponent, ref, computed, watch, openBlock, createBlock, isRef, unref, withCtx, createElementBlock, Fragment, renderList, renderSlot, createCommentVNode } from "vue";
3
+ import { LIST_TAB_QUERY_VALUE, CREATE_TAB_QUERY_VALUE } from "../../../enum/constants.mjs";
4
+ import _sfc_main$1 from "../../../components/VcTabs/VcTabs.vue.mjs";
5
+ import '../../../assets/components/VcTabs/VcTabPane.css';import '../../../assets/components/VcTabs/VcTabs.css';/* empty css */
6
+ import { useVModel } from "@vueuse/core";
7
+ import { isEqual } from "lodash-es";
8
+ import { useTabsEditableDataProvide } from "../../composable/useEntityTabsProvideInject.mjs";
9
+ import _sfc_main$2 from "../../../components/VcTabs/VcTabPane.vue.mjs";
10
+ /* empty css */
11
+ import { Plus, Pencil, List } from "@lucide/vue";
12
+ const _sfc_main = /* @__PURE__ */ defineComponent({
13
+ __name: "VcEntityEditableTabs",
14
+ props: {
15
+ entity: {},
16
+ entityMethodDataType: { default: void 0 },
17
+ hideCreateTab: { type: Boolean, default: false },
18
+ lazyLoad: { type: Boolean, default: false },
19
+ modelValue: { default: LIST_TAB_QUERY_VALUE },
20
+ queryTabName: { default: "" },
21
+ confirmClose: { type: Function, default: void 0 },
22
+ tabListIcon: { default: () => List },
23
+ tabEditIcon: { default: () => Pencil },
24
+ tabCreateIcon: { default: () => Plus }
25
+ },
26
+ emits: ["update:modelValue", "close-tab", "tab-change", "permission-error"],
27
+ setup(__props, { expose: __expose, emit: __emit }) {
28
+ const TAB_ICONS = {
29
+ list: List,
30
+ edit: Pencil,
31
+ add: Plus
32
+ };
33
+ const props = __props;
34
+ const emit = __emit;
35
+ const vcTabs = ref(null);
36
+ const editTabs = ref([]);
37
+ const activeTabModel = useVModel(
38
+ props,
39
+ "modelValue",
40
+ emit
41
+ );
42
+ const editableTabsData = ref({});
43
+ const dataTabs = computed(() => {
44
+ const listTab = {
45
+ name: LIST_TAB_QUERY_VALUE,
46
+ icon: props.tabListIcon ?? TAB_ICONS.list,
47
+ label: props.entity.entityTypeListLabelTranslations
48
+ };
49
+ const editTabsList = [
50
+ ...editTabs.value
51
+ ];
52
+ const tabs = [
53
+ listTab,
54
+ ...editTabsList
55
+ ];
56
+ if (!props.hideCreateTab) {
57
+ return [
58
+ ...tabs,
59
+ {
60
+ name: CREATE_TAB_QUERY_VALUE,
61
+ icon: props.tabCreateIcon ?? TAB_ICONS.add,
62
+ label: "",
63
+ navClass: "create-nav-tab",
64
+ disabled: !props.entity.canCreate()
65
+ }
66
+ ];
67
+ } else {
68
+ return tabs;
69
+ }
70
+ });
71
+ function isTabActive(tabName) {
72
+ return activeTabModel.value === tabName;
73
+ }
74
+ function setActiveTabByRouteQueryValue() {
75
+ const queryTabName = props.queryTabName;
76
+ if (typeof queryTabName !== "string") {
77
+ return;
78
+ }
79
+ const tabFromOpened = dataTabs.value.find(({ name }) => name === queryTabName);
80
+ if (tabFromOpened) {
81
+ if (queryTabName === CREATE_TAB_QUERY_VALUE && !props.entity.canCreate()) {
82
+ return;
83
+ }
84
+ activeTabModel.value = tabFromOpened.name;
85
+ } else {
86
+ try {
87
+ const parsedQueryTabName = parseInt(queryTabName);
88
+ if (isNaN(parsedQueryTabName)) return;
89
+ props.entity.info(parsedQueryTabName).then((res) => {
90
+ const _res = res;
91
+ if (!_res) {
92
+ return;
93
+ }
94
+ if (props.entity.canEdit(_res)) {
95
+ openEditTab(_res);
96
+ } else {
97
+ emit("permission-error", {
98
+ tabName: queryTabName,
99
+ response: _res
100
+ });
101
+ }
102
+ });
103
+ } catch {
104
+ console.error("Error while trying to load data for id:", queryTabName);
105
+ }
106
+ }
107
+ }
108
+ function onActiveTabChange(tabName) {
109
+ emit("tab-change", tabName);
110
+ }
111
+ function openEditTab(entityData) {
112
+ if (!entityData) {
113
+ return;
114
+ }
115
+ const entityName = props.entity.getEntityName(entityData) || "";
116
+ const tabName = createTabName(entityData);
117
+ if (!tabName) {
118
+ console.error("Cannot extract name from", entityData);
119
+ return;
120
+ }
121
+ const isTabOpened = dataTabs.value.find(({ name }) => name === tabName);
122
+ if (!isTabOpened) {
123
+ const newTab = {
124
+ entityData,
125
+ label: entityName,
126
+ name: tabName
127
+ };
128
+ editTabs.value.push(newTab);
129
+ }
130
+ activeTabModel.value = tabName;
131
+ }
132
+ function checkTabDataIsUpdated(tabName, entityTabData) {
133
+ const editableData = editableTabsData.value[+tabName];
134
+ let isEditable = false;
135
+ if (entityTabData && editableData) {
136
+ const _entityTabData = entityTabData;
137
+ Object.keys(_entityTabData).forEach((key) => {
138
+ const _key = key;
139
+ const _objectValue = _entityTabData[_key];
140
+ if (!Array.isArray(_objectValue)) {
141
+ if (typeof _objectValue === "object") {
142
+ if (!isEqual(_objectValue, _entityTabData[_key])) {
143
+ isEditable = true;
144
+ }
145
+ } else {
146
+ if (_objectValue !== _entityTabData[_key]) {
147
+ isEditable = true;
148
+ }
149
+ }
150
+ }
151
+ });
152
+ }
153
+ return isEditable;
154
+ }
155
+ function onTabRemove(tabName) {
156
+ const tabIndex = editTabs.value.findIndex(({ name }) => name === tabName);
157
+ const _entityTabData = editTabs.value[tabIndex].entityData;
158
+ const isUpdated = checkTabDataIsUpdated(tabName, _entityTabData);
159
+ if (isUpdated && props.confirmClose) {
160
+ props.confirmClose(_entityTabData).then((res) => {
161
+ if (res) {
162
+ removeTab(tabName);
163
+ }
164
+ });
165
+ } else {
166
+ removeTab(tabName);
167
+ }
168
+ }
169
+ function clearEditableData(tabName) {
170
+ if (editableTabsData.value[tabName]) {
171
+ delete editableTabsData.value[tabName];
172
+ }
173
+ }
174
+ function createTabName(entity) {
175
+ if (!entity) return void 0;
176
+ const entityId = props.entity.getEntityId(entity);
177
+ return entityId == null ? void 0 : entityId.toString();
178
+ }
179
+ function removeTab(tabName) {
180
+ const tabIndex = editTabs.value.findIndex(({ name }) => name === tabName);
181
+ if (tabIndex !== -1) {
182
+ if (isTabActive(tabName)) {
183
+ openListTab();
184
+ }
185
+ editTabs.value.splice(tabIndex, 1);
186
+ clearEditableData(tabName);
187
+ }
188
+ emit("close-tab", tabName);
189
+ }
190
+ function closeActiveTab() {
191
+ onTabRemove(activeTabModel.value);
192
+ }
193
+ function getTabIcon(tab) {
194
+ if (tab.name === CREATE_TAB_QUERY_VALUE || tab.name === LIST_TAB_QUERY_VALUE) {
195
+ return tab.icon;
196
+ }
197
+ return props.tabEditIcon ?? TAB_ICONS.edit;
198
+ }
199
+ function openListTab() {
200
+ activeTabModel.value = LIST_TAB_QUERY_VALUE;
201
+ }
202
+ function openCreateTab() {
203
+ activeTabModel.value = CREATE_TAB_QUERY_VALUE;
204
+ }
205
+ function setFirstActiveTab() {
206
+ var _a;
207
+ (_a = vcTabs.value) == null ? void 0 : _a.setFirstActiveTab();
208
+ }
209
+ function setLastActiveTab() {
210
+ var _a;
211
+ (_a = vcTabs.value) == null ? void 0 : _a.setLastActiveTab();
212
+ }
213
+ function togglePreviousTab() {
214
+ var _a;
215
+ (_a = vcTabs.value) == null ? void 0 : _a.togglePreviousTab();
216
+ }
217
+ function toggleNextTab() {
218
+ var _a;
219
+ (_a = vcTabs.value) == null ? void 0 : _a.toggleNextTab();
220
+ }
221
+ watch(activeTabModel, onActiveTabChange);
222
+ setActiveTabByRouteQueryValue();
223
+ useTabsEditableDataProvide({
224
+ editableModels: editableTabsData,
225
+ updateEditableModel: (data) => {
226
+ const _id = props.entity.getEntityId(data.value);
227
+ if (_id !== void 0) {
228
+ editableTabsData.value[_id] = data;
229
+ }
230
+ }
231
+ });
232
+ __expose({
233
+ createTabName,
234
+ removeTab,
235
+ closeActiveTab,
236
+ openEditTab,
237
+ openListTab,
238
+ openCreateTab,
239
+ setFirstActiveTab,
240
+ setLastActiveTab,
241
+ togglePreviousTab,
242
+ toggleNextTab,
243
+ getActiveTab: () => activeTabModel.value
244
+ });
245
+ return (_ctx, _cache) => {
246
+ return openBlock(), createBlock(_sfc_main$1, {
247
+ ref_key: "vcTabs",
248
+ ref: vcTabs,
249
+ modelValue: unref(activeTabModel),
250
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(activeTabModel) ? activeTabModel.value = $event : null),
251
+ class: "vc-editable-tabs",
252
+ "open-by-form-validate": false,
253
+ "nav-scrollable": "",
254
+ onTabRemove
255
+ }, {
256
+ default: withCtx(() => [
257
+ (openBlock(true), createElementBlock(Fragment, null, renderList(dataTabs.value, (tabItem, index) => {
258
+ return openBlock(), createBlock(_sfc_main$2, {
259
+ key: tabItem.name || `edit-tab-${index + 1}`,
260
+ name: tabItem.name,
261
+ index,
262
+ label: tabItem.label,
263
+ closable: tabItem.name !== "list" && tabItem.name !== "create",
264
+ icon: getTabIcon(tabItem),
265
+ lazy: __props.lazyLoad,
266
+ disabled: tabItem.disabled,
267
+ "nav-class": tabItem.navClass,
268
+ class: "pt-3"
269
+ }, {
270
+ default: withCtx(() => [
271
+ tabItem.name === "list" ? renderSlot(_ctx.$slots, "tab-list", { key: 0 }) : tabItem.name === "create" ? renderSlot(_ctx.$slots, "tab-create", { key: 1 }) : tabItem.entityData ? renderSlot(_ctx.$slots, "tab-edit", {
272
+ key: 2,
273
+ index,
274
+ tabData: tabItem,
275
+ entity: tabItem.entityData
276
+ }) : createCommentVNode("", true)
277
+ ]),
278
+ _: 2
279
+ }, 1032, ["name", "index", "label", "closable", "icon", "lazy", "disabled", "nav-class"]);
280
+ }), 128))
281
+ ]),
282
+ _: 3
283
+ }, 8, ["modelValue"]);
284
+ };
285
+ }
286
+ });
5
287
  export {
6
- VcEntityEditableTabs as default
288
+ _sfc_main as default
7
289
  };
@@ -0,0 +1,5 @@
1
+ import _sfc_main from "./VcEntityEditableTabs.vue.mjs";
2
+ import '../../../assets/entity/components/Tabs/VcEntityEditableTabs.css';/* empty css */
3
+ export {
4
+ _sfc_main as default
5
+ };
package/library/index.mjs CHANGED
@@ -2,6 +2,7 @@ import './assets/assets/sass/main.css';/* empty css */
2
2
  import { default as default2 } from "./components/VcButton/VcButton.vue.mjs";
3
3
  /* empty css */
4
4
  import { default as default3 } from "./components/VcButton/VcButtonIcon.vue.mjs";
5
+ /* empty css */
5
6
  import { default as default4 } from "./components/VcButton/VcToggleButton.vue.mjs";
6
7
  /* empty css */
7
8
  import { default as default5 } from "./components/VcInput/VcInput.vue.mjs";
@@ -85,6 +86,8 @@ import { default as default46 } from "./components/VcDropdown/VcDropdown.vue.mjs
85
86
  import { default as default47 } from "./components/VcDropdown/VcDropdownItem.vue.mjs";
86
87
  /* empty css */
87
88
  import { default as default48 } from "./components/VcTable/VcTable.vue.mjs";
89
+ /* empty css */
90
+ /* empty css */
88
91
  import { default as default49 } from "./components/VcPagination/VcPagination.vue.mjs";
89
92
  /* empty css */
90
93
  import { default as default50 } from "./components/VcTree/VcTree.vue.mjs";
@@ -97,6 +100,7 @@ import { default as default52 } from "./components/VcTransfer/VcTransfer.vue.mjs
97
100
  import { default as default53 } from "./components/VcTag/VcTag.vue.mjs";
98
101
  /* empty css */
99
102
  import { default as default54 } from "./components/VcDelimitedList/VcDelimitedList.vue.mjs";
103
+ /* empty css */
100
104
  import { default as default55 } from "./components/VcSparkline/VcSparkline.vue.mjs";
101
105
  import { default as default56 } from "./components/VcViewSwitcher/VcViewSwitcher.vue.mjs";
102
106
  /* empty css */
@@ -127,6 +131,7 @@ import { default as default70 } from "./components/VcMeterGroup/VcMeterGroupLabe
127
131
  import { default as default71 } from "./components/VcMdEditor/VcMdEditor.vue.mjs";
128
132
  import { default as default72 } from "./components/VcSystemUserPrompt/VcSystemUserPrompt.vue.mjs";
129
133
  import { default as default73 } from "./components/VcSoundplayer/VcSoundPlayer.vue.mjs";
134
+ /* empty css */
130
135
  import { default as default74 } from "./components/VcJsonSchema/VcJsonSchema.vue.mjs";
131
136
  /* empty css */
132
137
  import { VcCollapseProvideKey, VcEditableTabsDataToken, VcEntityListTableExternalPaginateToken, VcEntityToken, VcSoundPlayerProvideKey, VcTabPaneProvideKey, VcTabsProvideKey } from "./tokens/tokens.mjs";
@@ -185,8 +190,11 @@ import { default as default104 } from "./entity/components/Button/VcEntityEditIc
185
190
  import { default as default105 } from "./entity/components/Button/VcEntityRestoreButton.vue.mjs";
186
191
  import { default as default106 } from "./entity/components/Button/VcEntityStatusButton.vue.mjs";
187
192
  import { default as default107 } from "./entity/components/Tabs/VcEntityEditableTabs.vue.mjs";
193
+ /* empty css */
188
194
  import { default as default108 } from "./entity/components/Table/VcEntityListTable.vue.mjs";
195
+ /* empty css */
189
196
  import { default as default109 } from "./entity/components/Form/VcBaseVerticalForm.vue.mjs";
197
+ /* empty css */
190
198
  import { default as default110 } from "./entity/components/Form/VcEntityVerticalCreateForm.vue.mjs";
191
199
  import { default as default111 } from "./entity/components/Form/VcEntityVerticalEditForm.vue.mjs";
192
200
  import { default as default112 } from "./entity/components/Form/VcEntityEditPageForm.vue.mjs";
Binary file
Binary file