@webitel/ui-sdk 25.4.31 → 25.4.33

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webitel/ui-sdk",
3
- "version": "25.4.31",
3
+ "version": "25.4.33",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "dev": "vite",
@@ -1,4 +1,6 @@
1
1
  :root {
2
+ --wt-label-padding: var(--spacing-2xs) var(--spacing-xs);
3
+
2
4
  --wt-label-color: var(--text-main-color);
3
5
  --wt-label-error-color: var(--text-error-color);
4
6
  --wt-label-disabled-color: var(--text-disabled-color);
@@ -39,13 +39,14 @@ export default {
39
39
  @use '../../css/main.scss';
40
40
 
41
41
  .wt-label {
42
- @extend %typo-body-1;
42
+ @extend %typo-subtitle-2;
43
43
 
44
44
  display: flex;
45
45
  align-items: center;
46
46
  cursor: text;
47
47
  transition: var(--transition);
48
48
  color: var(--wt-label-color);
49
+ padding: var(--wt-label-padding);
49
50
 
50
51
  &--invalid {
51
52
  color: var(--wt-label-error-color);
@@ -468,7 +468,7 @@ export default {
468
468
  },
469
469
  empty: {
470
470
  text: {
471
- empty: 'Записи в разделе еще не созданы',
471
+ empty: 'Записи еще не созданы',
472
472
  filters: 'К сожалению, ни одна запись не соответствует вашим критериям',
473
473
  },
474
474
  },
@@ -468,7 +468,7 @@ export default {
468
468
  },
469
469
  empty: {
470
470
  text: {
471
- empty: 'Записи у розділі ще не створені',
471
+ empty: 'Записи ще не створені',
472
472
  filters: 'На жаль, жоден запис не відповідає вашим критеріям',
473
473
  },
474
474
  },
@@ -3,7 +3,7 @@
3
3
  v-if="props.previewMode && model"
4
4
  >
5
5
  <wt-label>
6
- {{ t('reusable.description') }}
6
+ {{ t('vocabulary.description') }}
7
7
  </wt-label>
8
8
  <p>
9
9
  {{ model }}
@@ -13,7 +13,7 @@
13
13
  <wt-textarea
14
14
  v-if="!props.previewMode"
15
15
  :value="model"
16
- :label="t('reusable.description')"
16
+ :label="t('vocabulary.description')"
17
17
  @input="model = $event"
18
18
  />
19
19
  </template>
@@ -3,7 +3,9 @@
3
3
  <wt-label>
4
4
  {{ t('webitelUI.filters.filterName') }}
5
5
  </wt-label>
6
- <dynamic-filter-panel-wrapper>
6
+ <dynamic-filter-panel-wrapper
7
+ size="sm"
8
+ >
7
9
  <template #filters>
8
10
  <dynamic-filter-preview
9
11
  v-for="(filter) of props.filters"
@@ -6,7 +6,7 @@
6
6
  />
7
7
  <wt-popup
8
8
  :shown="showPresetsList"
9
- size="sm"
9
+ size="md"
10
10
  @close="showPresetsList = false"
11
11
  >
12
12
  <template #title>
@@ -28,9 +28,9 @@
28
28
 
29
29
  <section class="available-presets-list">
30
30
  <preset-preview
31
- v-for="(preset, index) of dataList"
31
+ v-for="(preset) of dataList"
32
32
  :key="preset.id"
33
- :collapsed="!!index"
33
+ collapsed
34
34
  :is-selected="preset === selectedPreset"
35
35
  :preset="preset"
36
36
  @preset:select="selectedPreset = preset"
@@ -67,7 +67,7 @@
67
67
 
68
68
  <script lang="ts" setup>
69
69
  import {type StoreDefinition, storeToRefs } from "pinia";
70
- import {computed, inject, ref, watch} from "vue";
70
+ import {computed, inject, ref, watch, onUnmounted} from "vue";
71
71
  import {useI18n} from "vue-i18n";
72
72
 
73
73
  import {WtButton, WtEmpty, WtPopup, WtSearchBar, WtIconAction} from "../../../../../../components/index";
@@ -112,18 +112,6 @@ const {
112
112
  } = presetsStore;
113
113
 
114
114
  updateSize(1000);
115
-
116
- const {
117
- showEmpty,
118
- image: imageEmpty,
119
- text: textEmpty,
120
- } = useTableEmpty({
121
- dataList,
122
- isLoading,
123
- error,
124
- filters: computed(() => filtersManager.value.getAllValues()),
125
- });
126
-
127
115
  filtersManager.value.addFilter({name: 'presetNamespace', value: props.namespace});
128
116
 
129
117
  const search = computed({
@@ -135,13 +123,31 @@ const search = computed({
135
123
  }
136
124
  });
137
125
 
126
+ const {
127
+ showEmpty,
128
+ image: imageEmpty,
129
+ text: textEmpty,
130
+ } = useTableEmpty({
131
+ dataList,
132
+ isLoading,
133
+ error,
134
+ filters: computed(() => {
135
+ return {
136
+ search: search.value,
137
+ };
138
+ }),
139
+ });
140
+
138
141
  watch(showPresetsList, () => {
139
142
  initialize();
140
143
 
141
144
  watch(showPresetsList, (value) => {
142
145
  if (value) {
143
146
  search.value = '';
144
- loadDataList();
147
+ /* search.value reset causes re-fetch as filter change, so
148
+ loadDataList() is commented.
149
+ TODO: implement ability to set filters "silently" and refactor this code */
150
+ // loadDataList();
145
151
  }
146
152
  });
147
153
  }, {once: true});
@@ -159,8 +165,9 @@ const applySelectedPreset = () => {
159
165
  const updatePreset = async ({preset, onSuccess, onFailure}) => {
160
166
  try {
161
167
  await PresetQueryAPI.update({
162
- item: { ...preset, section: props.namespace },
168
+ item: { ...preset },
163
169
  id: preset.id,
170
+ namespace: preset.namespace,
164
171
  });
165
172
  eventBus.$emit('notification', {
166
173
  type: 'success',
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <wt-popup
3
- size="sm"
3
+ size="md"
4
4
  @close="emit('close')"
5
5
  >
6
6
  <template #title>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <wt-popup
3
- size="sm"
3
+ size="md"
4
4
  @close="emit('close')"
5
5
  >
6
6
  <template #title>
@@ -118,6 +118,7 @@ const save = () => {
118
118
  display: flex;
119
119
  flex-direction: column;
120
120
  gap: var(--spacing-sm);
121
+ margin-bottom: var(--spacing-sm);
121
122
  }
122
123
 
123
124
  .save-preset-filters-preview-wrapper {
@@ -1,5 +1,8 @@
1
1
  <template>
2
- <div class="dynamic-filter-panel-wrapper">
2
+ <div
3
+ class="dynamic-filter-panel-wrapper"
4
+ :class="`dynamic-filter-panel-wrapper--${props.size}`"
5
+ >
3
6
  <div class="dynamic-filter-panel-wrapper__filters">
4
7
  <slot name="filters" />
5
8
  </div>
@@ -10,23 +13,42 @@
10
13
  </div>
11
14
  </template>
12
15
 
16
+ <script setup lang="ts">
17
+ import { ComponentSize } from '../../../../../enums';
18
+
19
+ const props = withDefaults(defineProps<{
20
+ size?: ComponentSize;
21
+ }>(), {
22
+ size: ComponentSize.MD,
23
+ });
24
+ </script>
25
+
13
26
  <style lang="scss" scoped>
14
27
  .dynamic-filter-panel-wrapper {
15
28
  display: grid;
16
29
  grid-gap: var(--spacing-sm);
17
30
  align-items: center;
18
31
  grid-template-columns: 1fr auto;
32
+ }
19
33
 
20
- &__filters {
21
- display: flex;
22
- flex-wrap: wrap;
23
- align-items: center;
24
- grid-gap: var(--spacing-sm);
25
- }
34
+ .dynamic-filter-panel-wrapper__filters {
35
+ display: flex;
36
+ flex-wrap: wrap;
37
+ align-items: center;
38
+ grid-gap: var(--spacing-sm);
39
+ }
26
40
 
27
- &__actions {
28
- display: flex;
29
- grid-gap: var(--spacing-sm);
41
+ .dynamic-filter-panel-wrapper__actions {
42
+ display: flex;
43
+ grid-gap: var(--spacing-sm);
44
+ }
45
+
46
+ .dynamic-filter-panel-wrapper {
47
+ &--sm {
48
+ .dynamic-filter-panel-wrapper__filters,
49
+ .dynamic-filter-panel-wrapper__actions, {
50
+ grid-gap: var(--spacing-xs);
51
+ }
30
52
  }
31
53
  }
32
54
  </style>