@webitel/ui-sdk 2.0.15 → 2.0.16-11

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": "2.0.15",
3
+ "version": "2.0.16-11",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve-lib": "vue-cli-service serve",
@@ -7,7 +7,10 @@
7
7
  >
8
8
  <slot name="activator"></slot>
9
9
  <template #popper="{ hide }">
10
- <ul class="wt-context-menu__menu">
10
+ <ul
11
+ class="wt-context-menu__menu"
12
+ :style="`width: ${width}; min-width: ${minWidth}; max-width: ${maxWidth};`"
13
+ >
11
14
  <li
12
15
  class="wt-context-menu__option-wrapper"
13
16
  v-for="(option, index) in options"
@@ -42,6 +45,18 @@ export default {
42
45
  type: Boolean,
43
46
  default: false,
44
47
  },
48
+ width: {
49
+ type: [String],
50
+ default: 'auto',
51
+ },
52
+ minWidth: {
53
+ type: [String],
54
+ default: '160px',
55
+ },
56
+ maxWidth: {
57
+ type: [String],
58
+ default: '300px',
59
+ },
45
60
  },
46
61
  methods: {
47
62
  handleOptionClick({ option, index, hide }) {
@@ -59,8 +74,6 @@ export default {
59
74
 
60
75
  .wt-context-menu__menu {
61
76
  @extend %typo-body-2;
62
- min-width: var(--context-menu-min-width);
63
- max-width: var(--context-menu-max-width);
64
77
  background-color: var(--context-menu-background-color);
65
78
  border-radius: var(--border-radius);
66
79
  box-shadow: var(--box-shadow);
@@ -29,7 +29,7 @@ export default {
29
29
  color: {
30
30
  type: String,
31
31
  default: 'default',
32
- options: ['default', 'contrast', 'active', 'accent', 'disabled', 'success', 'danger', 'transfer', 'job', 'hold', 'secondary-50'],
32
+ options: ['default', 'contrast', 'active', 'accent', 'secondary', 'disabled', 'success', 'danger', 'transfer', 'job', 'hold', 'secondary-50'],
33
33
  },
34
34
  iconPrefix: {
35
35
  type: String,
@@ -85,6 +85,10 @@ svg {
85
85
  fill: var(--icon-color-active);
86
86
  }
87
87
 
88
+ &-secondary .wt-icon__icon {
89
+ fill: var(--secondary-color);
90
+ }
91
+
88
92
  &-success .wt-icon__icon {
89
93
  fill: var(--icon-color-success);
90
94
  }
@@ -14,7 +14,7 @@ export default {
14
14
  color: {
15
15
  type: String,
16
16
  default: 'contrast',
17
- description: '["main", "contrast"]',
17
+ description: '["main", "contrast", "icon"]',
18
18
  },
19
19
  },
20
20
  };
@@ -44,6 +44,9 @@ export default {
44
44
  &--main circle {
45
45
  stroke: var(--main-color);
46
46
  }
47
+ &--icon circle {
48
+ stroke: var(--icon-color);
49
+ }
47
50
  }
48
51
 
49
52
  @keyframes rotate {
@@ -40,6 +40,7 @@ import WtFiltersPanelWrapper from './organisms/wt-filters-panel-wrapper/wt-filte
40
40
  import WtHeaderActions from './organisms/wt-app-header/wt-header-actions.vue';
41
41
  import WtErrorPage from './organisms/wt-error-page/wt-error-page.vue';
42
42
  import WtHeadline from './organisms/wt-headline/wt-headline.vue';
43
+ import WtHeadlineNav from './organisms/wt-headline-nav/wt-headline-nav.vue';
43
44
  import WtNavigationBar from './organisms/wt-navigation-bar/wt-navigation-bar.vue';
44
45
  import WtNotificationsBar from './organisms/wt-notifications-bar/wt-notifications-bar.vue';
45
46
  import WtPageWrapper from './organisms/wt-page-wrapper/wt-page-wrapper.vue';
@@ -84,6 +85,7 @@ const Components = {
84
85
  WtTextarea,
85
86
  WtAppHeader,
86
87
  WtHeadline,
88
+ WtHeadlineNav,
87
89
  WtNavigationBar,
88
90
  WtAppNavigator,
89
91
  WtFiltersPanelWrapper,
@@ -13,10 +13,13 @@
13
13
  type="search"
14
14
  v-on="listeners"
15
15
  >
16
- <wt-icon
17
- class="wt-search-bar__search-icon"
18
- icon="search"
19
- ></wt-icon>
16
+ <div class="wt-search-bar__search-icon">
17
+ <slot name="search-icon">
18
+ <wt-icon
19
+ icon="search"
20
+ ></wt-icon>
21
+ </slot>
22
+ </div>
20
23
  <wt-icon-btn
21
24
  class="wt-search-bar__reset-icon-btn"
22
25
  :class="{ 'hidden': !value }"
@@ -112,6 +115,7 @@
112
115
  }
113
116
 
114
117
  .wt-search-bar__search-icon {
118
+ line-height: 0;
115
119
  position: absolute;
116
120
  top: 50%;
117
121
  left: var(--input-icon-margin);
@@ -0,0 +1,13 @@
1
+ import { shallowMount } from '@vue/test-utils';
2
+ import WtHeadlineNav from '../wt-headline-nav.vue';
3
+
4
+ describe('WtHeadlineNav', () => {
5
+ it('renders a component', () => {
6
+ const wrapper = shallowMount(WtHeadlineNav, {
7
+ propsData: {
8
+ path: [],
9
+ },
10
+ });
11
+ expect(wrapper.isVisible()).toBe(true);
12
+ });
13
+ });
@@ -0,0 +1,85 @@
1
+ <template>
2
+ <nav class="wt-headline-nav">
3
+ <div
4
+ class="wt-headline-nav__wrapper"
5
+ v-for="(singlePath, key) of path"
6
+ :key="key"
7
+ >
8
+ <span v-if="key !== 0" class="wt-headline-nav__indicator"></span>
9
+ <h1 class="wt-headline-nav__title">
10
+ <router-link
11
+ v-if="singlePath.route"
12
+ class="wt-headline-nav__text wt-headline-nav__title-link"
13
+ :to="singlePath.route"
14
+ >{{ singlePath.name }}
15
+ </router-link>
16
+ <span v-else class="wt-headline-nav__text">{{ singlePath.name }}</span>
17
+ </h1>
18
+ </div>
19
+ </nav>
20
+ </template>
21
+
22
+ <script>
23
+ export default {
24
+ name: 'wt-headline-nav',
25
+ props: {
26
+ path: {
27
+ type: Array,
28
+ required: true,
29
+ // PATH EXAMPLE
30
+ // default: () => [
31
+ // { name: 'directory' },
32
+ // { name: 'users', route: '/directory/users' },
33
+ // { name: 'adm', route: '/directory/users/3' },
34
+ // ],
35
+ },
36
+ },
37
+ };
38
+ </script>
39
+
40
+ <style lang="scss" scoped>
41
+ .wt-headline-nav {
42
+ display: flex;
43
+ align-items: center;
44
+ }
45
+
46
+ .wt-headline-nav__wrapper {
47
+ display: flex;
48
+ align-items: center;
49
+ }
50
+
51
+ .wt-headline-nav__indicator {
52
+ display: inline-block;
53
+ width: var(--headline-nav-indicator-size);
54
+ height: var(--headline-nav-indicator-size);
55
+ margin: 0 var(--headline-nav-indicator-margin);
56
+ background: var(--icon-color);
57
+ border-radius: 50%;
58
+ flex-shrink: 0;
59
+ }
60
+
61
+ .wt-headline-nav__title {
62
+ @extend %typo-subtitle-1;
63
+ }
64
+
65
+ .wt-headline-nav__text {
66
+ color: var(--text-outline-color);
67
+ }
68
+
69
+ .wt-headline-nav__wrapper:last-child {
70
+ min-width: 0;
71
+
72
+ .wt-headline-nav__indicator {
73
+ background: var(--icon-color-accent);
74
+ }
75
+
76
+ .wt-headline-nav__title {
77
+ overflow: hidden;
78
+ text-overflow: ellipsis;
79
+ }
80
+
81
+ .wt-headline-nav__text {
82
+ color: var(--text-primary-color);
83
+ }
84
+ }
85
+ </style>
@@ -32,6 +32,7 @@
32
32
  @import "molecules/wt-button-select/variables";
33
33
 
34
34
  @import "organisms/wt-headline/variables";
35
+ @import "organisms/wt-headline-nav/variables";
35
36
  @import "organisms/wt-app-header/variables";
36
37
  @import "organisms/wt-navigation-bar/variables";
37
38
  @import "organisms/wt-notifications-bar/variables";
@@ -1,7 +1,4 @@
1
1
  :root {
2
- --context-menu-min-width : 160px;
3
- --context-menu-max-width : 300px;
4
-
5
2
  --context-menu-option-color--hover: var(--secondary-color);
6
3
 
7
4
  --context-menu-background-color: var(--main-color);
@@ -0,0 +1,5 @@
1
+
2
+ :root {
3
+ --headline-nav-indicator-size: 6px;
4
+ --headline-nav-indicator-margin: 19px;
5
+ }
@@ -34,6 +34,7 @@ const AdminSections = Object.freeze({
34
34
  // INTEGRATIONS
35
35
  STORAGE: 'storage', // scope: storage_profile
36
36
  COGNITIVE_PROFILES: 'cognitive-profiles', // scope: cognitive_profile
37
+ EMAIL_PROFILES: 'email-profiles', // scope: email_profile
37
38
 
38
39
  // PERMISSIONS
39
40
  OBJECTS: 'objects', // permissions: add
@@ -38,6 +38,7 @@ export default {
38
38
  to: 'To',
39
39
  tts: 'Text-to-Speech',
40
40
  state: 'State',
41
+ refresh: 'Refresh',
41
42
  },
42
43
  // yak zhe ya zaebalsya povtoriaty odni i ti sami slova!!!!
43
44
  vocabulary: {
@@ -45,6 +46,14 @@ export default {
45
46
  voice: 'Voice',
46
47
  format: 'Format',
47
48
  text: 'Text',
49
+ yes: 'Yes',
50
+ no: 'No',
51
+ description: 'Description',
52
+ login: 'Login',
53
+ host: 'Host',
54
+ time: 'Time',
55
+ channel: 'Channel',
56
+ file: 'File',
48
57
  },
49
58
  // date-related texts
50
59
  date: {
@@ -144,6 +153,7 @@ export default {
144
153
  [AdminSections.QUEUES]: 'Queues',
145
154
  [AdminSections.STORAGE]: 'Storage',
146
155
  [AdminSections.COGNITIVE_PROFILES]: 'Cognitive profiles',
156
+ [AdminSections.EMAIL_PROFILES]: 'Email profiles',
147
157
  [AdminSections.MEDIA]: 'Media',
148
158
  [AdminSections.BLACKLIST]: 'Call lists',
149
159
  [AdminSections.ROLES]: 'Roles',
@@ -38,12 +38,21 @@ export default {
38
38
  to: 'До',
39
39
  tts: 'Text-to-Speech',
40
40
  state: 'Состояние',
41
+ refresh: 'Обновить',
41
42
  },
42
43
  vocabulary: {
43
44
  language: 'Язык',
44
45
  voice: 'Голос',
45
46
  format: 'Формат',
46
47
  text: 'Текст',
48
+ yes: 'Да',
49
+ no: 'Нет',
50
+ description: 'Описание',
51
+ login: 'Логин',
52
+ host: 'Хост',
53
+ time: 'Время',
54
+ channel: 'Канал',
55
+ file: 'Файл',
47
56
  },
48
57
  // date-related texts
49
58
  date: {
@@ -143,6 +152,7 @@ export default {
143
152
  [AdminSections.QUEUES]: 'Очереди',
144
153
  [AdminSections.STORAGE]: 'Хранилища',
145
154
  [AdminSections.COGNITIVE_PROFILES]: 'Языковые профили',
155
+ [AdminSections.EMAIL_PROFILES]: 'Email профили',
146
156
  [AdminSections.ROLES]: 'Роли',
147
157
  [AdminSections.OBJECTS]: 'Разделы',
148
158
  },
@@ -38,12 +38,21 @@ export default {
38
38
  to: 'До',
39
39
  tts: 'Text-to-Speech',
40
40
  state: 'Стан',
41
+ refresh: 'Оновити',
41
42
  },
42
43
  vocabulary: {
43
44
  language: 'Мова',
44
45
  voice: 'Голос',
45
46
  format: 'Формат',
46
47
  text: 'Текст',
48
+ yes: 'Так',
49
+ no: 'Ні',
50
+ description: 'Опис',
51
+ login: 'Логін',
52
+ host: 'Хост',
53
+ time: 'Час',
54
+ channel: 'Канал',
55
+ file: 'Файл',
47
56
  },
48
57
  // date-related texts
49
58
  date: {
@@ -143,6 +152,7 @@ export default {
143
152
  [AdminSections.QUEUES]: 'Черги',
144
153
  [AdminSections.STORAGE]: 'Сховища',
145
154
  [AdminSections.COGNITIVE_PROFILES]: 'Мовні профілі',
155
+ [AdminSections.EMAIL_PROFILES]: 'Email профілі',
146
156
  [AdminSections.ROLES]: 'Ролі',
147
157
  [AdminSections.OBJECTS]: 'Розділи',
148
158
  },
@@ -128,6 +128,10 @@ const applicationsAccess = (value = true) => ({
128
128
  _enabled: value,
129
129
  _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSections.COGNITIVE_PROFILES}`,
130
130
  },
131
+ [AdminSections.EMAIL_PROFILES]: {
132
+ _enabled: value,
133
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSections.EMAIL_PROFILES}`,
134
+ },
131
135
  [AdminSections.ROLES]: {
132
136
  _enabled: value,
133
137
  _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSections.ROLES}`,