adata-ui 0.3.73 → 0.3.74

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 (96) hide show
  1. package/README.md +7 -7
  2. package/babel.config.js +5 -5
  3. package/package.json +76 -76
  4. package/public/index.html +17 -17
  5. package/public/logo.svg +4 -4
  6. package/src/App.vue +25 -25
  7. package/src/assets/_text_field.scss +224 -224
  8. package/src/assets/facebook.svg +4 -4
  9. package/src/assets/instagram.svg +6 -6
  10. package/src/assets/logo-desktop-main.svg +8 -8
  11. package/src/assets/logo-desktop.svg +9 -9
  12. package/src/assets/logo-mobile-main.svg +4 -4
  13. package/src/assets/logo-mobile.svg +9 -9
  14. package/src/assets/logo-white-desktop.svg +8 -8
  15. package/src/assets/style.scss +1 -1
  16. package/src/assets/telegram.svg +4 -4
  17. package/src/assets/tiktok.svg +4 -4
  18. package/src/assets/up-down.svg +3 -3
  19. package/src/assets/youtube.svg +5 -5
  20. package/src/components/Alert/Alert.stories.js +17 -17
  21. package/src/components/Alert/Alert.vue +63 -63
  22. package/src/components/BottomNavigationBar/ABottomNavigationBar.vue +160 -160
  23. package/src/components/BottomNavigationBar/BottomNavigationBar.stories.js +24 -24
  24. package/src/components/Button/AButton.vue +231 -231
  25. package/src/components/Button/Button.stories.js +23 -23
  26. package/src/components/Checkbox/ACheckbox.vue +114 -114
  27. package/src/components/Checkbox/Checkbox.stories.js +15 -15
  28. package/src/components/CheckboxMenu/CheckboxMenu.stories.js +23 -23
  29. package/src/components/CheckboxMenu/CheckboxMenu.vue +108 -108
  30. package/src/components/ErrorPages/BadGateway.vue +224 -224
  31. package/src/components/ErrorPages/Forbidden.vue +468 -468
  32. package/src/components/ErrorPages/InternalServerError.vue +275 -275
  33. package/src/components/ErrorPages/NotFound.vue +995 -995
  34. package/src/components/ErrorPages/Unavailable.vue +3705 -3705
  35. package/src/components/Footer/Footer.stories.js +20 -20
  36. package/src/components/Footer/Footer.vue +292 -292
  37. package/src/components/Header/ChildLinks.vue +141 -122
  38. package/src/components/Header/Header.stories.js +56 -56
  39. package/src/components/Header/Header.vue +1289 -1289
  40. package/src/components/Header/InfoHeader.vue +319 -319
  41. package/src/components/Header/Profile.vue +670 -670
  42. package/src/components/Header/ProfileMenu.vue +291 -276
  43. package/src/components/Header/ProfileMobile.vue +308 -308
  44. package/src/components/Header/ProfileOld.vue +781 -781
  45. package/src/components/InternalServerError/InternalServerError.stories.js +16 -16
  46. package/src/components/InternalServerError/InternalServerError.vue +262 -262
  47. package/src/components/Introduction.stories.mdx +7 -7
  48. package/src/components/Loader/Loader.stories.js +24 -24
  49. package/src/components/Loader/Loader.vue +325 -325
  50. package/src/components/MailTo/MailTo.stories.js +14 -14
  51. package/src/components/MailTo/MailTo.vue +258 -258
  52. package/src/components/NavIcon/ANavIcon.vue +49 -49
  53. package/src/components/NavIcon/NavIcon.stories.js +14 -14
  54. package/src/components/PasswordField/PasswordField.stories.js +16 -16
  55. package/src/components/PasswordField/PasswordField.vue +77 -77
  56. package/src/components/SearchTextField/SearchTextField.stories.js +77 -77
  57. package/src/components/SearchTextField/SearchTextField.vue +230 -230
  58. package/src/components/ServiceSlider/AServiceSlider.vue +782 -782
  59. package/src/components/ServiceSlider/ServiceSlider.stories.js +20 -20
  60. package/src/components/Table/ATable.vue +117 -117
  61. package/src/components/Table/Table.stories.js +15 -15
  62. package/src/components/TextArea/TextArea.stories.js +17 -17
  63. package/src/components/TextArea/TextArea.vue +116 -116
  64. package/src/components/TextError/TextError.stories.js +15 -15
  65. package/src/components/TextError/TextError.vue +57 -57
  66. package/src/components/TextField/TextField.stories.js +17 -17
  67. package/src/components/TextField/TextField.vue +107 -107
  68. package/src/components/index.js +54 -54
  69. package/src/components/newComponents/FooterNew/FooterBottom.vue +153 -153
  70. package/src/components/newComponents/FooterNew/FooterItem.vue +113 -113
  71. package/src/components/newComponents/FooterNew/FooterNew.stories.js +20 -20
  72. package/src/components/newComponents/FooterNew/FooterNew.vue +39 -39
  73. package/src/components/newComponents/FooterNew/FooterTop.vue +321 -321
  74. package/src/components/transitions/SlideToggle.vue +55 -55
  75. package/src/components/transitions/VerticalMobileToggle.vue +75 -75
  76. package/src/configs/icons.js +112 -112
  77. package/src/configs/profileDropDown.js +134 -134
  78. package/src/main.js +12 -12
  79. package/dist/adata-ui.common.js +0 -12969
  80. package/dist/adata-ui.common.js.map +0 -1
  81. package/dist/adata-ui.css +0 -1
  82. package/dist/adata-ui.umd.js +0 -12979
  83. package/dist/adata-ui.umd.js.map +0 -1
  84. package/dist/adata-ui.umd.min.js +0 -7
  85. package/dist/adata-ui.umd.min.js.map +0 -1
  86. package/dist/demo.html +0 -10
  87. package/dist/img/facebook.797d820f.svg +0 -4
  88. package/dist/img/instagram.8a77381c.svg +0 -6
  89. package/dist/img/logo-desktop-main.4d169395.svg +0 -8
  90. package/dist/img/logo-mobile-main.397bce24.svg +0 -4
  91. package/dist/img/logo-white-desktop.7d0e3481.svg +0 -8
  92. package/dist/img/telegram.be0d1008.svg +0 -4
  93. package/dist/img/tiktok.eaeb39cb.svg +0 -4
  94. package/dist/img/up-down.e2b28f72.svg +0 -3
  95. package/dist/img/youtube.125aace6.svg +0 -5
  96. package/package-lock.json +0 -26218
@@ -1,670 +1,670 @@
1
- <template>
2
- <div class="profile" :class="{ active: active }">
3
- <div v-click-outside="() => { active = false; }">
4
- <div class="profile__inner">
5
- <div class="profile__item" @click="active = !active">
6
- <div v-show="isAuthenticated" class="profile__item-link">
7
- <span class="desktop">{{ email }}</span>
8
- <svg
9
- width="18"
10
- height="18"
11
- fill="#25476AFF"
12
- class="desktop arrow-svg"
13
- :class="{ rotate: active }"
14
- xmlns="http://www.w3.org/2000/svg"
15
- viewBox="0 0 16 16"
16
- >
17
- <path fill="none" d="M0 0h16v16H0z"></path>
18
- <path
19
- fill="none"
20
- d="M3 6.5L8 10l5-3.5"
21
- stroke="#2C3E50"
22
- stroke-linecap="round"
23
- stroke-linejoin="round"
24
- ></path>
25
- </svg>
26
- </div>
27
- <button
28
- @click.prevent="goAuth"
29
- class="sign"
30
- v-show="!isAuthenticated"
31
- >
32
- <svg
33
- width="18"
34
- height="18"
35
- fill="#25476AFF"
36
- xmlns="http://www.w3.org/2000/svg"
37
- viewBox="0 0 16 16"
38
- class="desktop"
39
- >
40
- <path fill="#fff" d="M0 0h16v16H0z" stroke="none"></path>
41
- <path
42
- d="M8 10l2-2.054L8.077 6"
43
- stroke-miterlimit="10"
44
- stroke-linecap="round"
45
- stroke-linejoin="round"
46
- ></path>
47
- <path
48
- d="M6 4.1V2h8v12H6v-1.65M9 8H2"
49
- stroke-miterlimit="10"
50
- stroke-linecap="round"
51
- stroke-linejoin="round"
52
- ></path>
53
- </svg>
54
- <span class="sign_text">Вход</span>
55
- </button>
56
- </div>
57
- </div>
58
- <SlideToggle v-slot="{ animationClass }">
59
- <profile-menu
60
- v-if="isAuthenticated"
61
- v-show="active"
62
- :class="animationClass"
63
- @logout="logout"
64
- :balance="balance"
65
- :rate="rate"
66
- :mode="mode"
67
- :tab="tab"
68
- />
69
- </SlideToggle>
70
- </div>
71
- </div>
72
- </template>
73
-
74
- <script>
75
- import { profileDropDown } from "../../configs/profileDropDown";
76
- import SlideToggle from "../transitions/SlideToggle";
77
- import vClickOutside from "v-click-outside";
78
- import ProfileMenu from "./ProfileMenu";
79
-
80
- export default {
81
- directives: {
82
- clickOutside: vClickOutside.directive,
83
- },
84
- props: {
85
- mode: {
86
- type: String,
87
- required: true,
88
- validator: function (value) {
89
- return ["prod", "dev", "staging"].indexOf(value) !== -1;
90
- },
91
- },
92
- isAuthenticated: {
93
- type: Boolean,
94
- default: false,
95
- },
96
- email: {
97
- type: String,
98
- default: "",
99
- },
100
- loginUrl: {
101
- type: String,
102
- default: "",
103
- required: true,
104
- },
105
- activeTabKey: {
106
- type: String,
107
- default: "",
108
- required: true,
109
- },
110
- rate: {
111
- type: String,
112
- default: ""
113
- },
114
- balance: {
115
- type: [Number, String],
116
- default: 0
117
- },
118
- tab: {
119
- type: String,
120
- default: ""
121
- }
122
- },
123
- components: {
124
- ProfileMenu,
125
- SlideToggle,
126
- },
127
- data() {
128
- return {
129
- profileDropDown,
130
- active: false,
131
- chosenElem: {
132
- children: [],
133
- },
134
- };
135
- },
136
- mounted() {
137
- const item = this.activeTabKey ? this.profileDropDown.find(el => el.key && el.key.includes(this.activeTabKey)) : null;
138
- if(item && window && window.innerWidth > 850) {
139
- this.chosenElem = item;
140
- this.chosenElem.opened = true;
141
- }
142
- },
143
- computed: {
144
- someMobileOpened() {
145
- return this.profileDropDown.filter(
146
- (el) => el.opened && el.children.length > 0
147
- );
148
- },
149
- },
150
- methods: {
151
- setShowModal(bool) {
152
- this.$emit("setShowModal", bool);
153
- },
154
- logout() {
155
- this.$emit("logout");
156
- },
157
- preventLink(disabled, e) {
158
- if (disabled) {
159
- e.preventDefault();
160
- }
161
- },
162
- async showModal(url, name) {
163
- if (name.includes("Текущий")) {
164
- if (window.location.href.includes(url)) {
165
- this.$emit("setIsReplenishModal", true);
166
- this.setShowModal(true);
167
- } else {
168
- await window.open(url + "&modal=show", "_self");
169
- }
170
- }
171
- },
172
- handleClick(url, name) {
173
- if (!name.includes("Текущий")) {
174
- window.open(url, name === 'Избранные' ? '_blank' : '_self');
175
- }
176
- },
177
- rotateItem(index) {
178
- this.chosenElem = this.profileDropDown[index];
179
- const array = this.profileDropDown;
180
- array.forEach((el, idx) => {
181
- if (index === idx) {
182
- this.$set(el, 'opened', !el.opened);
183
- } else this.$set(el, 'opened', false)
184
- });
185
- },
186
- goAuth() {
187
- const fullPath = encodeURIComponent(window.location.toString());
188
- if (window) {
189
- window.location.href = `${this.loginUrl}?url=${fullPath}`;
190
- }
191
- },
192
- },
193
- };
194
- </script>
195
-
196
- <style lang="scss">
197
- a {
198
- text-decoration: none;
199
- background-color: transparent;
200
- }
201
-
202
- svg {
203
- transition: all 0.3s linear;
204
- }
205
-
206
- svg.rotated {
207
- transform: rotate(180deg);
208
- }
209
-
210
- .gray-text {
211
- font-size: 12px;
212
- line-height: 14px;
213
- font-weight: 400;
214
- color: #2c3e50;
215
- padding: 10px 16px;
216
- cursor: pointer;
217
- }
218
-
219
- .profile {
220
- position: relative;
221
-
222
- &__inner {
223
- padding: 0;
224
- display: flex;
225
- align-items: center;
226
- }
227
-
228
- &__item {
229
- font-size: 14px;
230
- font-weight: 600;
231
- margin: 0;
232
- padding: 8px 0;
233
- white-space: nowrap;
234
- cursor: pointer;
235
-
236
- &-link {
237
- display: flex;
238
- align-items: center;
239
- font-size: 14px;
240
-
241
- &:first-child {
242
- @media (max-width: 1025px) {
243
- display: none;
244
- }
245
- }
246
-
247
- &:nth-child(2) {
248
- display: none;
249
- @media (max-width: 1025px) {
250
- display: flex;
251
- }
252
- }
253
- }
254
-
255
- span {
256
- white-space: nowrap;
257
- margin: 0 7px;
258
- }
259
-
260
- .arrow-svg {
261
- transition: all 0.3s;
262
- vertical-align: middle;
263
- width: 16px;
264
- height: 16px;
265
- transform: rotate(0deg);
266
-
267
- &.rotate {
268
- transform: rotate(180deg);
269
- }
270
- }
271
- }
272
-
273
- .profile-menu {
274
- //width: 368px;
275
- //height: 100%;
276
- position: absolute;
277
- right: 0;
278
- top: 100%;
279
- background-color: #fff;
280
- box-shadow: 0px 3px 6px #959cb140;
281
- border-radius: 2px;
282
- z-index: 10000;
283
- @media (max-width: 1025px) {
284
- display: none;
285
- }
286
-
287
- &__items {
288
- font-size: 12px;
289
- line-height: 14px;
290
- font-weight: 400;
291
- color: #2c3e50;
292
- cursor: pointer;
293
-
294
- span.balance {
295
- padding: 2px 8px;
296
- color: #698096;
297
- background: #ECEFF1;
298
- border-radius: 100px;
299
- }
300
-
301
- .rate-item {
302
- display: flex;
303
- justify-content: space-between;
304
- align-items: center;
305
- width: 100%;
306
- color: #007aff;
307
- font-size: 14px;
308
- font-weight: 600;
309
- span.rate {
310
- color: #2C3E50;
311
- font-size: 12px;
312
- }
313
- }
314
-
315
- div:not(:last-child) > a > .gray-text {
316
- border-bottom: 0.5px solid #bdc7ce;
317
- }
318
-
319
- div:not(:last-child) > .gray-text {
320
- border-bottom: 0.5px solid #bdc7ce;
321
-
322
- & + div {
323
- padding: 10px 16px;
324
- }
325
- }
326
-
327
- div
328
- > .gray-text:not(.profile-menu__balance-link):not(.profile-menu__links) {
329
- padding: 0;
330
-
331
- a {
332
- color: #2c3e50;
333
-
334
- &:visited {
335
- color: #2c3e50;
336
- }
337
- }
338
- }
339
- }
340
-
341
- &__item__child {
342
- padding: 0 16px 0 32px;
343
- height: 40px;
344
- display: flex;
345
- border-top: 0.5px solid #bdc7ce;
346
- align-items: center;
347
-
348
- &:hover {
349
- background: #2c3e500c;
350
- }
351
-
352
- span {
353
- display: flex;
354
- align-items: center;
355
-
356
- svg {
357
- margin-right: 5px;
358
-
359
- path {
360
- fill: #2c3e500c !important;
361
- }
362
- }
363
- }
364
- }
365
-
366
- &__item__children {
367
- padding: 0 16px;
368
- display: flex;
369
- justify-content: space-between;
370
- align-items: center;
371
- height: 40px;
372
-
373
- &:hover {
374
- background: #2c3e500c;
375
- }
376
-
377
- &.active {
378
- background: #ECEFF1;
379
- border-left: 3px solid #007aff;
380
- }
381
- }
382
-
383
- &__balance-link {
384
- display: flex;
385
- align-items: center;
386
- justify-content: space-between;
387
- height: 40px;
388
- padding: 0 16px;
389
-
390
- &:hover {
391
- background: #2c3e500d;
392
- }
393
-
394
- &:not(:last-child) {
395
- border-bottom: 1px solid #eef0f5;
396
- }
397
- }
398
-
399
- &__balance {
400
- font-size: 14px;
401
- font-weight: 600;
402
- color: #007aff;
403
- white-space: nowrap;
404
- }
405
-
406
- &__links {
407
- display: flex;
408
- align-items: center;
409
- align-content: center;
410
- height: 40px;
411
- padding: 0 16px;
412
-
413
- &:hover {
414
- background: linear-gradient(0deg, rgba(236, 239, 241, 0.5), rgba(236, 239, 241, 0.5)), #FFFFFF;
415
- }
416
-
417
- &:not(:last-child) {
418
- border-bottom: 1px solid #eef0f5;
419
- }
420
- }
421
- }
422
- }
423
-
424
- .sign {
425
- height: 40px;
426
- background: transparent;
427
- border: none;
428
- border-radius: 0 0 2px 2px;
429
- display: flex;
430
- align-items: center;
431
- justify-content: center;
432
- cursor: pointer;
433
-
434
- &:hover {
435
- svg {
436
- stroke: #71757a !important;
437
- }
438
-
439
- span {
440
- color: #71757a;
441
- }
442
- }
443
-
444
- &:active {
445
- svg {
446
- stroke: #9da3ac !important;
447
- }
448
-
449
- span {
450
- color: #9da3ac;
451
- }
452
- }
453
-
454
- svg {
455
- margin-right: 8px;
456
- fill: none !important;
457
- stroke: #2c3e50 !important;
458
- @media (max-width: 1025px) {
459
- stroke: none !important;
460
- margin-right: 24px;
461
- }
462
- }
463
-
464
- span {
465
- font-weight: 600;
466
- font-size: 14px;
467
- line-height: 16px;
468
- color: #2c3e50;
469
- margin: 0 0;
470
- }
471
- }
472
-
473
- .requests {
474
- &__link {
475
- font-size: 12px;
476
- line-height: 16px;
477
- font-weight: 400;
478
- padding: 12px;
479
- color: var(--newColor);
480
- white-space: nowrap;
481
- margin: 0 6px 0 0;
482
- @media (max-width: 1025px) {
483
- display: none;
484
- }
485
-
486
- svg {
487
- vertical-align: middle;
488
- width: 20px;
489
- height: 20px;
490
- margin-right: 4px;
491
- margin-bottom: 2px;
492
- }
493
-
494
- span {
495
- color: #2c3e50;
496
- font-weight: 600;
497
- }
498
- }
499
- }
500
-
501
- .user {
502
- display: none;
503
- @media (max-width: 1025px) {
504
- width: 24px;
505
- height: 24px;
506
- margin-right: 24px;
507
- display: flex;
508
- }
509
- }
510
-
511
- .exit-mobile {
512
- display: none;
513
- @media (max-width: 1025px) {
514
- display: block;
515
- width: 24px;
516
- height: 24px;
517
- margin-right: 12px;
518
- }
519
- }
520
-
521
- .mobile-table {
522
- display: none;
523
- @media (max-width: 1025px) {
524
- display: block;
525
- }
526
-
527
- &-head {
528
- padding: 0 16px;
529
- background: #f4f4f4;
530
- display: flex;
531
- align-items: center;
532
- justify-content: space-between;
533
- width: 100%;
534
- height: 40px;
535
-
536
- p {
537
- font-weight: 600;
538
- font-size: 17px;
539
- line-height: 19px;
540
- color: #2c3e50;
541
- }
542
-
543
- svg {
544
- width: 18px;
545
- height: 18px;
546
- @media (max-width: 1025px) {
547
- width: 24px;
548
- height: 24px;
549
- }
550
- }
551
-
552
- &-chosen {
553
- position: relative;
554
-
555
- & > div {
556
- position: absolute;
557
- }
558
-
559
- p {
560
- text-align: center;
561
- width: 100%;
562
- }
563
- }
564
- }
565
- }
566
-
567
- .profile-menu-mobile {
568
- height: 100%;
569
-
570
- .bb > a,
571
- .bb > a:visited {
572
- color: #000;
573
- }
574
-
575
- &__inner {
576
- display: flex;
577
- flex-direction: column;
578
- height: 72%;
579
- }
580
-
581
- &__links,
582
- &__item {
583
- padding: 0 16px;
584
- height: 52px;
585
- border: 1px solid #9da3ac;
586
- border-bottom: none;
587
- font-size: 14px;
588
- display: flex;
589
- align-items: center;
590
- }
591
-
592
- &__balance-link {
593
- padding: 0 16px;
594
- height: 52px;
595
- border: 1px solid #9da3ac;
596
- border-bottom: none;
597
- font-size: 14px;
598
- display: flex;
599
- justify-content: space-between;
600
- }
601
-
602
- &__balance {
603
- color: #1e88e5;
604
- font-size: 16px;
605
- white-space: nowrap;
606
- display: flex;
607
- align-items: center;
608
-
609
- &-items {
610
- display: flex;
611
- flex-direction: column;
612
- justify-content: center;
613
-
614
- &__upper-text {
615
- font-weight: normal;
616
- font-size: 10px;
617
- line-height: 14px;
618
- color: #69797d;
619
- margin-bottom: 4px;
620
- }
621
-
622
- &__bot-text {
623
- font-weight: 600;
624
- font-size: 12px;
625
- line-height: 16px;
626
- color: #2c3e50;
627
- }
628
- }
629
- }
630
- }
631
-
632
- .exit-mob {
633
- background: #ffcd33;
634
- border-radius: 2px;
635
- height: 40px;
636
- display: flex;
637
- align-items: center;
638
- justify-content: center;
639
- cursor: pointer;
640
- font-weight: normal;
641
- font-size: 16px;
642
- line-height: 16px;
643
- color: #2c3e50;
644
- margin: 16px 16px 0;
645
-
646
- svg {
647
- margin-right: 8px;
648
- fill: none !important;
649
- }
650
- }
651
-
652
- .bb {
653
- &:last-child {
654
- border-bottom: 1px solid #9da3ac;
655
- }
656
- }
657
-
658
- .button-inner {
659
- display: flex;
660
- align-items: center;
661
- justify-content: space-between;
662
- width: 100%;
663
- }
664
-
665
- .sign_text {
666
- @media (max-width: 1025px) {
667
- display: none;
668
- }
669
- }
670
- </style>
1
+ <template>
2
+ <div class="profile" :class="{ active: active }">
3
+ <div v-click-outside="() => { active = false; }">
4
+ <div class="profile__inner">
5
+ <div class="profile__item" @click="active = !active">
6
+ <div v-show="isAuthenticated" class="profile__item-link">
7
+ <span class="desktop">{{ email }}</span>
8
+ <svg
9
+ width="18"
10
+ height="18"
11
+ fill="#25476AFF"
12
+ class="desktop arrow-svg"
13
+ :class="{ rotate: active }"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ viewBox="0 0 16 16"
16
+ >
17
+ <path fill="none" d="M0 0h16v16H0z"></path>
18
+ <path
19
+ fill="none"
20
+ d="M3 6.5L8 10l5-3.5"
21
+ stroke="#2C3E50"
22
+ stroke-linecap="round"
23
+ stroke-linejoin="round"
24
+ ></path>
25
+ </svg>
26
+ </div>
27
+ <button
28
+ @click.prevent="goAuth"
29
+ class="sign"
30
+ v-show="!isAuthenticated"
31
+ >
32
+ <svg
33
+ width="18"
34
+ height="18"
35
+ fill="#25476AFF"
36
+ xmlns="http://www.w3.org/2000/svg"
37
+ viewBox="0 0 16 16"
38
+ class="desktop"
39
+ >
40
+ <path fill="#fff" d="M0 0h16v16H0z" stroke="none"></path>
41
+ <path
42
+ d="M8 10l2-2.054L8.077 6"
43
+ stroke-miterlimit="10"
44
+ stroke-linecap="round"
45
+ stroke-linejoin="round"
46
+ ></path>
47
+ <path
48
+ d="M6 4.1V2h8v12H6v-1.65M9 8H2"
49
+ stroke-miterlimit="10"
50
+ stroke-linecap="round"
51
+ stroke-linejoin="round"
52
+ ></path>
53
+ </svg>
54
+ <span class="sign_text">Вход</span>
55
+ </button>
56
+ </div>
57
+ </div>
58
+ <SlideToggle v-slot="{ animationClass }">
59
+ <profile-menu
60
+ v-if="isAuthenticated"
61
+ v-show="active"
62
+ :class="animationClass"
63
+ @logout="logout"
64
+ :balance="balance"
65
+ :rate="rate"
66
+ :mode="mode"
67
+ :tab="tab"
68
+ />
69
+ </SlideToggle>
70
+ </div>
71
+ </div>
72
+ </template>
73
+
74
+ <script>
75
+ import { profileDropDown } from "../../configs/profileDropDown";
76
+ import SlideToggle from "../transitions/SlideToggle";
77
+ import vClickOutside from "v-click-outside";
78
+ import ProfileMenu from "./ProfileMenu";
79
+
80
+ export default {
81
+ directives: {
82
+ clickOutside: vClickOutside.directive,
83
+ },
84
+ props: {
85
+ mode: {
86
+ type: String,
87
+ required: true,
88
+ validator: function (value) {
89
+ return ["prod", "dev", "staging"].indexOf(value) !== -1;
90
+ },
91
+ },
92
+ isAuthenticated: {
93
+ type: Boolean,
94
+ default: false,
95
+ },
96
+ email: {
97
+ type: String,
98
+ default: "",
99
+ },
100
+ loginUrl: {
101
+ type: String,
102
+ default: "",
103
+ required: true,
104
+ },
105
+ activeTabKey: {
106
+ type: String,
107
+ default: "",
108
+ required: true,
109
+ },
110
+ rate: {
111
+ type: String,
112
+ default: ""
113
+ },
114
+ balance: {
115
+ type: [Number, String],
116
+ default: 0
117
+ },
118
+ tab: {
119
+ type: String,
120
+ default: ""
121
+ }
122
+ },
123
+ components: {
124
+ ProfileMenu,
125
+ SlideToggle,
126
+ },
127
+ data() {
128
+ return {
129
+ profileDropDown,
130
+ active: false,
131
+ chosenElem: {
132
+ children: [],
133
+ },
134
+ };
135
+ },
136
+ mounted() {
137
+ const item = this.activeTabKey ? this.profileDropDown.find(el => el.key && el.key.includes(this.activeTabKey)) : null;
138
+ if(item && window && window.innerWidth > 850) {
139
+ this.chosenElem = item;
140
+ this.chosenElem.opened = true;
141
+ }
142
+ },
143
+ computed: {
144
+ someMobileOpened() {
145
+ return this.profileDropDown.filter(
146
+ (el) => el.opened && el.children.length > 0
147
+ );
148
+ },
149
+ },
150
+ methods: {
151
+ setShowModal(bool) {
152
+ this.$emit("setShowModal", bool);
153
+ },
154
+ logout() {
155
+ this.$emit("logout");
156
+ },
157
+ preventLink(disabled, e) {
158
+ if (disabled) {
159
+ e.preventDefault();
160
+ }
161
+ },
162
+ async showModal(url, name) {
163
+ if (name.includes("Текущий")) {
164
+ if (window.location.href.includes(url)) {
165
+ this.$emit("setIsReplenishModal", true);
166
+ this.setShowModal(true);
167
+ } else {
168
+ await window.open(url + "&modal=show", "_self");
169
+ }
170
+ }
171
+ },
172
+ handleClick(url, name) {
173
+ if (!name.includes("Текущий")) {
174
+ window.open(url, name === 'Избранные' ? '_blank' : '_self');
175
+ }
176
+ },
177
+ rotateItem(index) {
178
+ this.chosenElem = this.profileDropDown[index];
179
+ const array = this.profileDropDown;
180
+ array.forEach((el, idx) => {
181
+ if (index === idx) {
182
+ this.$set(el, 'opened', !el.opened);
183
+ } else this.$set(el, 'opened', false)
184
+ });
185
+ },
186
+ goAuth() {
187
+ const fullPath = encodeURIComponent(window.location.toString());
188
+ if (window) {
189
+ window.location.href = `${this.loginUrl}?url=${fullPath}`;
190
+ }
191
+ },
192
+ },
193
+ };
194
+ </script>
195
+
196
+ <style lang="scss">
197
+ a {
198
+ text-decoration: none;
199
+ background-color: transparent;
200
+ }
201
+
202
+ svg {
203
+ transition: all 0.3s linear;
204
+ }
205
+
206
+ svg.rotated {
207
+ transform: rotate(180deg);
208
+ }
209
+
210
+ .gray-text {
211
+ font-size: 12px;
212
+ line-height: 14px;
213
+ font-weight: 400;
214
+ color: #2c3e50;
215
+ padding: 10px 16px;
216
+ cursor: pointer;
217
+ }
218
+
219
+ .profile {
220
+ position: relative;
221
+
222
+ &__inner {
223
+ padding: 0;
224
+ display: flex;
225
+ align-items: center;
226
+ }
227
+
228
+ &__item {
229
+ font-size: 14px;
230
+ font-weight: 600;
231
+ margin: 0;
232
+ padding: 8px 0;
233
+ white-space: nowrap;
234
+ cursor: pointer;
235
+
236
+ &-link {
237
+ display: flex;
238
+ align-items: center;
239
+ font-size: 14px;
240
+
241
+ &:first-child {
242
+ @media (max-width: 1025px) {
243
+ display: none;
244
+ }
245
+ }
246
+
247
+ &:nth-child(2) {
248
+ display: none;
249
+ @media (max-width: 1025px) {
250
+ display: flex;
251
+ }
252
+ }
253
+ }
254
+
255
+ span {
256
+ white-space: nowrap;
257
+ margin: 0 7px;
258
+ }
259
+
260
+ .arrow-svg {
261
+ transition: all 0.3s;
262
+ vertical-align: middle;
263
+ width: 16px;
264
+ height: 16px;
265
+ transform: rotate(0deg);
266
+
267
+ &.rotate {
268
+ transform: rotate(180deg);
269
+ }
270
+ }
271
+ }
272
+
273
+ .profile-menu {
274
+ //width: 368px;
275
+ //height: 100%;
276
+ position: absolute;
277
+ right: 0;
278
+ top: 100%;
279
+ background-color: #fff;
280
+ box-shadow: 0px 3px 6px #959cb140;
281
+ border-radius: 2px;
282
+ z-index: 10000;
283
+ @media (max-width: 1025px) {
284
+ display: none;
285
+ }
286
+
287
+ &__items {
288
+ font-size: 12px;
289
+ line-height: 14px;
290
+ font-weight: 400;
291
+ color: #2c3e50;
292
+ cursor: pointer;
293
+
294
+ span.balance {
295
+ padding: 2px 8px;
296
+ color: #698096;
297
+ background: #ECEFF1;
298
+ border-radius: 100px;
299
+ }
300
+
301
+ .rate-item {
302
+ display: flex;
303
+ justify-content: space-between;
304
+ align-items: center;
305
+ width: 100%;
306
+ color: #007aff;
307
+ font-size: 14px;
308
+ font-weight: 600;
309
+ span.rate {
310
+ color: #2C3E50;
311
+ font-size: 12px;
312
+ }
313
+ }
314
+
315
+ div:not(:last-child) > a > .gray-text {
316
+ border-bottom: 0.5px solid #bdc7ce;
317
+ }
318
+
319
+ div:not(:last-child) > .gray-text {
320
+ border-bottom: 0.5px solid #bdc7ce;
321
+
322
+ & + div {
323
+ padding: 10px 16px;
324
+ }
325
+ }
326
+
327
+ div
328
+ > .gray-text:not(.profile-menu__balance-link):not(.profile-menu__links) {
329
+ padding: 0;
330
+
331
+ a {
332
+ color: #2c3e50;
333
+
334
+ &:visited {
335
+ color: #2c3e50;
336
+ }
337
+ }
338
+ }
339
+ }
340
+
341
+ &__item__child {
342
+ padding: 0 16px 0 32px;
343
+ height: 40px;
344
+ display: flex;
345
+ border-top: 0.5px solid #bdc7ce;
346
+ align-items: center;
347
+
348
+ &:hover {
349
+ background: #2c3e500c;
350
+ }
351
+
352
+ span {
353
+ display: flex;
354
+ align-items: center;
355
+
356
+ svg {
357
+ margin-right: 5px;
358
+
359
+ path {
360
+ fill: #2c3e500c !important;
361
+ }
362
+ }
363
+ }
364
+ }
365
+
366
+ &__item__children {
367
+ padding: 0 16px;
368
+ display: flex;
369
+ justify-content: space-between;
370
+ align-items: center;
371
+ height: 40px;
372
+
373
+ &:hover {
374
+ background: #2c3e500c;
375
+ }
376
+
377
+ &.active {
378
+ background: #ECEFF1;
379
+ border-left: 3px solid #007aff;
380
+ }
381
+ }
382
+
383
+ &__balance-link {
384
+ display: flex;
385
+ align-items: center;
386
+ justify-content: space-between;
387
+ height: 40px;
388
+ padding: 0 16px;
389
+
390
+ &:hover {
391
+ background: #2c3e500d;
392
+ }
393
+
394
+ &:not(:last-child) {
395
+ border-bottom: 1px solid #eef0f5;
396
+ }
397
+ }
398
+
399
+ &__balance {
400
+ font-size: 14px;
401
+ font-weight: 600;
402
+ color: #007aff;
403
+ white-space: nowrap;
404
+ }
405
+
406
+ &__links {
407
+ display: flex;
408
+ align-items: center;
409
+ align-content: center;
410
+ height: 40px;
411
+ padding: 0 16px;
412
+
413
+ &:hover {
414
+ background: linear-gradient(0deg, rgba(236, 239, 241, 0.5), rgba(236, 239, 241, 0.5)), #FFFFFF;
415
+ }
416
+
417
+ &:not(:last-child) {
418
+ border-bottom: 1px solid #eef0f5;
419
+ }
420
+ }
421
+ }
422
+ }
423
+
424
+ .sign {
425
+ height: 40px;
426
+ background: transparent;
427
+ border: none;
428
+ border-radius: 0 0 2px 2px;
429
+ display: flex;
430
+ align-items: center;
431
+ justify-content: center;
432
+ cursor: pointer;
433
+
434
+ &:hover {
435
+ svg {
436
+ stroke: #71757a !important;
437
+ }
438
+
439
+ span {
440
+ color: #71757a;
441
+ }
442
+ }
443
+
444
+ &:active {
445
+ svg {
446
+ stroke: #9da3ac !important;
447
+ }
448
+
449
+ span {
450
+ color: #9da3ac;
451
+ }
452
+ }
453
+
454
+ svg {
455
+ margin-right: 8px;
456
+ fill: none !important;
457
+ stroke: #2c3e50 !important;
458
+ @media (max-width: 1025px) {
459
+ stroke: none !important;
460
+ margin-right: 24px;
461
+ }
462
+ }
463
+
464
+ span {
465
+ font-weight: 600;
466
+ font-size: 14px;
467
+ line-height: 16px;
468
+ color: #2c3e50;
469
+ margin: 0 0;
470
+ }
471
+ }
472
+
473
+ .requests {
474
+ &__link {
475
+ font-size: 12px;
476
+ line-height: 16px;
477
+ font-weight: 400;
478
+ padding: 12px;
479
+ color: var(--newColor);
480
+ white-space: nowrap;
481
+ margin: 0 6px 0 0;
482
+ @media (max-width: 1025px) {
483
+ display: none;
484
+ }
485
+
486
+ svg {
487
+ vertical-align: middle;
488
+ width: 20px;
489
+ height: 20px;
490
+ margin-right: 4px;
491
+ margin-bottom: 2px;
492
+ }
493
+
494
+ span {
495
+ color: #2c3e50;
496
+ font-weight: 600;
497
+ }
498
+ }
499
+ }
500
+
501
+ .user {
502
+ display: none;
503
+ @media (max-width: 1025px) {
504
+ width: 24px;
505
+ height: 24px;
506
+ margin-right: 24px;
507
+ display: flex;
508
+ }
509
+ }
510
+
511
+ .exit-mobile {
512
+ display: none;
513
+ @media (max-width: 1025px) {
514
+ display: block;
515
+ width: 24px;
516
+ height: 24px;
517
+ margin-right: 12px;
518
+ }
519
+ }
520
+
521
+ .mobile-table {
522
+ display: none;
523
+ @media (max-width: 1025px) {
524
+ display: block;
525
+ }
526
+
527
+ &-head {
528
+ padding: 0 16px;
529
+ background: #f4f4f4;
530
+ display: flex;
531
+ align-items: center;
532
+ justify-content: space-between;
533
+ width: 100%;
534
+ height: 40px;
535
+
536
+ p {
537
+ font-weight: 600;
538
+ font-size: 17px;
539
+ line-height: 19px;
540
+ color: #2c3e50;
541
+ }
542
+
543
+ svg {
544
+ width: 18px;
545
+ height: 18px;
546
+ @media (max-width: 1025px) {
547
+ width: 24px;
548
+ height: 24px;
549
+ }
550
+ }
551
+
552
+ &-chosen {
553
+ position: relative;
554
+
555
+ & > div {
556
+ position: absolute;
557
+ }
558
+
559
+ p {
560
+ text-align: center;
561
+ width: 100%;
562
+ }
563
+ }
564
+ }
565
+ }
566
+
567
+ .profile-menu-mobile {
568
+ height: 100%;
569
+
570
+ .bb > a,
571
+ .bb > a:visited {
572
+ color: #000;
573
+ }
574
+
575
+ &__inner {
576
+ display: flex;
577
+ flex-direction: column;
578
+ height: 72%;
579
+ }
580
+
581
+ &__links,
582
+ &__item {
583
+ padding: 0 16px;
584
+ height: 52px;
585
+ border: 1px solid #9da3ac;
586
+ border-bottom: none;
587
+ font-size: 14px;
588
+ display: flex;
589
+ align-items: center;
590
+ }
591
+
592
+ &__balance-link {
593
+ padding: 0 16px;
594
+ height: 52px;
595
+ border: 1px solid #9da3ac;
596
+ border-bottom: none;
597
+ font-size: 14px;
598
+ display: flex;
599
+ justify-content: space-between;
600
+ }
601
+
602
+ &__balance {
603
+ color: #1e88e5;
604
+ font-size: 16px;
605
+ white-space: nowrap;
606
+ display: flex;
607
+ align-items: center;
608
+
609
+ &-items {
610
+ display: flex;
611
+ flex-direction: column;
612
+ justify-content: center;
613
+
614
+ &__upper-text {
615
+ font-weight: normal;
616
+ font-size: 10px;
617
+ line-height: 14px;
618
+ color: #69797d;
619
+ margin-bottom: 4px;
620
+ }
621
+
622
+ &__bot-text {
623
+ font-weight: 600;
624
+ font-size: 12px;
625
+ line-height: 16px;
626
+ color: #2c3e50;
627
+ }
628
+ }
629
+ }
630
+ }
631
+
632
+ .exit-mob {
633
+ background: #ffcd33;
634
+ border-radius: 2px;
635
+ height: 40px;
636
+ display: flex;
637
+ align-items: center;
638
+ justify-content: center;
639
+ cursor: pointer;
640
+ font-weight: normal;
641
+ font-size: 16px;
642
+ line-height: 16px;
643
+ color: #2c3e50;
644
+ margin: 16px 16px 0;
645
+
646
+ svg {
647
+ margin-right: 8px;
648
+ fill: none !important;
649
+ }
650
+ }
651
+
652
+ .bb {
653
+ &:last-child {
654
+ border-bottom: 1px solid #9da3ac;
655
+ }
656
+ }
657
+
658
+ .button-inner {
659
+ display: flex;
660
+ align-items: center;
661
+ justify-content: space-between;
662
+ width: 100%;
663
+ }
664
+
665
+ .sign_text {
666
+ @media (max-width: 1025px) {
667
+ display: none;
668
+ }
669
+ }
670
+ </style>