adata-ui 0.1.77 → 0.1.80

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.
@@ -0,0 +1,300 @@
1
+ <template>
2
+ <div class="menu_mobile">
3
+ <div @click="$emit('changeValue')" class="empty-space"></div>
4
+ <div class="menu-wrapper">
5
+ <div class="mobile-table-head">
6
+ <div class="mobile-table-head-left" @click.stop="$emit('close')">
7
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
8
+ <path d="M9.9996 8.00317L5.9996 12.0097L9.99958 16.0032" stroke="#007AFF" stroke-width="1.2"
9
+ stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
10
+ <path d="M6 12L18 12" stroke="#007AFF" stroke-width="1.2" stroke-miterlimit="10" stroke-linecap="round"
11
+ stroke-linejoin="round"/>
12
+ </svg>
13
+ <span>{{ email }}</span>
14
+ </div>
15
+ </div>
16
+ <div class="mobile-table-body">
17
+ <p>Тариф {{ rate }}</p>
18
+ <p>Суточный лимит запросов: <span>{{ +limitRemaining }}</span></p>
19
+ <p>Остаток дней по тарифу: <span>{{ daysLeft }}</span></p>
20
+ <a :href="profileDropDown[0][mode] || '/'" class="button">Увеличить лимит запросов</a>
21
+ </div>
22
+ <div class="mobile-table-item">
23
+ <p class="mobile-table-item__title">
24
+ Платежи
25
+ </p>
26
+ <div class="mobile-table-item__text">
27
+ <p>Текущий баланс: <span>{{ balance + " ₸" }}</span></p>
28
+ <a
29
+ :href="profileDropDown[1][mode]"
30
+ onclick="return false"
31
+ @click="showModal(profileDropDown[1][mode])"
32
+ class="button"
33
+ >
34
+ Пополнить
35
+ </a>
36
+ </div>
37
+ <a :href="profileDropDown[2][mode]" class="p">История платежей</a>
38
+ </div>
39
+ <div class="mobile-table-item">
40
+ <p class="mobile-table-item__title">
41
+ Профиль пользователя
42
+ </p>
43
+ <div
44
+ v-for="(item, id) in profileDropDown.filter(el => el.children)"
45
+ :key="'child' + id"
46
+ class="mobile-table-item__text wrapped"
47
+ >
48
+ <div @click="openOneCloseOthers(id)" class="wrapped__text" :class="{'active': item.opened}">
49
+ <p>{{ item.name }}</p>
50
+ <div class="svg-wrapper" :class="{'rotated': item.opened}">
51
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
52
+ <path d="M4.5 9L12 15L19.5 9" stroke="#2C3E50" stroke-linecap="round" stroke-linejoin="round"/>
53
+ </svg>
54
+ </div>
55
+ </div>
56
+ <SlideToggle v-slot="{ animationClass }">
57
+ <div v-show="item.opened" class="mobile-table-item__children">
58
+ <a v-for="(elem, id) in item.children" :key="'elem' + id" :href="elem[mode]">{{ elem.name }}</a>
59
+ </div>
60
+ </SlideToggle>
61
+ </div>
62
+ </div>
63
+ <div class="mobile-table-item">
64
+ <p class="mobile-table-item__title">
65
+ Общие настройки
66
+ </p>
67
+ <a :href="profileDropDown[3][mode]" class="p">Личная информация</a>
68
+ </div>
69
+ <div class="menu_mobile-footer">
70
+ <button class="sign" @click="$emit('logout')">
71
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
72
+ <path d="M16.5 15L19.5 12L16.5 9" stroke="white" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
73
+ <path d="M15 16.875L15 19.5L4.5 19.5L4.5 4.5L15 4.5L15 6.5625" stroke="white" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
74
+ <path d="M19 12H8" stroke="white" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
75
+ </svg>
76
+ <span>Выход</span>
77
+ </button>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </template>
82
+
83
+ <script>
84
+ import {profileDropDown} from "../../configs/profileDropDown";
85
+ import SlideToggle from "../transitions/SlideToggle";
86
+
87
+ export default {
88
+ name: "ProfileMobile",
89
+ props: {
90
+ email: {
91
+ type: String,
92
+ required: true
93
+ },
94
+ balance: {
95
+ type: [Number, String],
96
+ default: ""
97
+ },
98
+ rate: {
99
+ type: String,
100
+ default: 'Базовый'
101
+ },
102
+ limitRemaining: {
103
+ type: Number,
104
+ default: 0
105
+ },
106
+ daysLeft: {
107
+ type: String,
108
+ defailt: ""
109
+ },
110
+ mode: {
111
+ type: String,
112
+ required: true
113
+ },
114
+ activeTabKey: {
115
+ type: String,
116
+ default: ""
117
+ }
118
+ },
119
+ components: {
120
+ SlideToggle
121
+ },
122
+ data() {
123
+ return {
124
+ profileDropDown
125
+ }
126
+ },
127
+ mounted() {
128
+ const item = this.activeTabKey ? this.profileDropDown.find(el => el.key && el.key.includes(this.activeTabKey)) : null;
129
+ if(item) this.$set(item, 'opened', true);
130
+ },
131
+ methods: {
132
+ openOneCloseOthers(id) {
133
+ const array = this.profileDropDown.filter(el => el.children);
134
+ array.forEach((el, idx) => {
135
+ if(id === idx) this.$set(el, 'opened', !el.opened);
136
+ else this.$set(el, 'opened', false);
137
+ })
138
+ },
139
+ async showModal(url) {
140
+ if (window.location.href.includes(url)) {
141
+ this.$emit("setIsReplenishModal", true);
142
+ this.setShowModal(true);
143
+ } else {
144
+ await window.open(url + "&modal=show", "_blank");
145
+ }
146
+ }
147
+ }
148
+ }
149
+ </script>
150
+
151
+ <style lang="scss" scoped>
152
+ .rotated {
153
+ svg {
154
+ transform: rotate(180deg);
155
+ }
156
+ }
157
+
158
+ .empty-space {
159
+ background: none!important;
160
+ }
161
+
162
+ .mobile-table-head-left {
163
+ display: flex;
164
+ align-items: center;
165
+ gap: 8px;
166
+ svg {
167
+ background: rgba(0, 122, 255, 0.12);
168
+ border-radius: 50%;
169
+ width: 24px;
170
+ height: 24px;
171
+ }
172
+ }
173
+
174
+ .mobile-table {
175
+ &-body {
176
+ background: rgba(236, 239, 241, 0.6);
177
+ border-bottom: 0.5px solid rgba(157, 163, 172, 0.5);
178
+ padding: 12px 20px;
179
+ p, a.p {
180
+ display: flex;
181
+ justify-content: space-between;
182
+ align-items: center;
183
+ color: #2C3E50;
184
+ font-size: 12px;
185
+ margin-bottom: 8px;
186
+ &:first-child {
187
+ font-weight: 600;
188
+ font-size: 14px;
189
+ }
190
+ span {
191
+ background: #007AFF;
192
+ color: #fff;
193
+ padding: 2px 8px;
194
+ border-radius: 100px;
195
+ }
196
+ }
197
+ a.button {
198
+ border: none;
199
+ background: transparent;
200
+ display: flex;
201
+ justify-content: center;
202
+ align-items: center;
203
+ color: #007AFF;
204
+ font-size: 14px;
205
+ font-weight: 600;
206
+ margin: 20px auto 0;
207
+ }
208
+ }
209
+ &-item {
210
+ padding: 12px 20px;
211
+ border-bottom: 0.5px solid rgba(157, 163, 172, 0.5);
212
+ p, a.p {
213
+ &.mobile-table-item__title {
214
+ color: #71757A;
215
+ font-size: 12px;
216
+ font-weight: 400;
217
+ margin-bottom: 12px;
218
+ }
219
+ &:not(.mobile-table-item__title) {
220
+ font-size: 14px;
221
+ font-weight: 400;
222
+ color: #2C3E50;
223
+ span {
224
+ color: #698096;
225
+ font-weight: 500;
226
+ background: #ECEFF1;
227
+ border-radius: 100px;
228
+ padding: 2px 8px;
229
+ }
230
+ }
231
+ }
232
+ &__text {
233
+ display: flex;
234
+ justify-content: space-between;
235
+ font-size: 14px;
236
+ font-weight: 400;
237
+ margin-bottom: 12px;
238
+ flex-wrap: wrap;
239
+ align-items: center;
240
+ color: #2C3E50;
241
+ row-gap: 12px;
242
+ a.button {
243
+ background: transparent;
244
+ border: none;
245
+ color: #007AFF;
246
+ font-size: 14px;
247
+ font-weight: 600;
248
+ }
249
+ &.wrapped {
250
+ flex-wrap: wrap;
251
+ align-items: center;
252
+ margin-bottom: 0;
253
+ .wrapped__text {
254
+ display: flex;
255
+ justify-content: space-between;
256
+ align-items: center;
257
+ padding: 10px 20px;
258
+ width: 100%;
259
+ &.active {
260
+ background: #E5E5E5;
261
+ border-left: 3px solid #007aff;
262
+ margin-top: 12px;
263
+ }
264
+ }
265
+ .mobile-table-item__children {
266
+ padding: 0 20px 0 36px;
267
+ display: flex;
268
+ flex-direction: column;
269
+ width: 100%;
270
+ gap: 16px;
271
+ margin-bottom: 12px;
272
+ a {
273
+ font-size: 14px;
274
+ color: #2C3E50;
275
+ font-weight: 400;
276
+ text-decoration: none;
277
+ &:visited, &:active {
278
+ color: #2C3E50;
279
+ }
280
+ }
281
+ }
282
+ }
283
+ &:last-child {
284
+ margin-bottom: 0;
285
+ }
286
+ }
287
+ &:nth-child(4) {
288
+ padding: 12px 0;
289
+ .mobile-table-item__title {
290
+ padding: 0 20px;
291
+ margin-bottom: 0;
292
+ }
293
+ }
294
+ &:nth-child(5) {
295
+ padding-bottom: 36px;
296
+ border-bottom: none;
297
+ }
298
+ }
299
+ }
300
+ </style>
@@ -3,13 +3,13 @@ import Loader from './Loader.vue'
3
3
  export default {
4
4
  title: 'Loader',
5
5
  component: Loader,
6
- template: '<loader />'
6
+ template: '<a-loader />'
7
7
  }
8
8
 
9
9
  const Template = (args, { argTypes }) => ({
10
10
  components: { Loader },
11
11
  props: Object.keys(argTypes),
12
- template: '<loader />',
12
+ template: '<a-loader />',
13
13
  })
14
14
 
15
15
  export const Simple = Template.bind({})
@@ -65,7 +65,7 @@
65
65
  </div>
66
66
  <h2 class="mail__title">Интересует больше данных?</h2>
67
67
  <p class="mail__text">
68
- Мы обязательно ответим вам <br />
68
+ Мы обязательно ответим Вам <br />
69
69
  в кратчайшие сроки.
70
70
  </p>
71
71
  <form class="mail__form" novalidate>
@@ -182,6 +182,11 @@ export default {
182
182
  </script>
183
183
 
184
184
  <style lang="scss" scoped>
185
+ * {
186
+ padding: 0;
187
+ margin: 0;
188
+ box-sizing: border-box;
189
+ }
185
190
  .mail {
186
191
  padding: 50px 0px;
187
192
  @media (max-width: 560px) {
@@ -210,8 +215,8 @@ export default {
210
215
  top: 50%;
211
216
  left: 50%;
212
217
  z-index: 1;
213
- width: 80px;
214
- height: 80px;
218
+ width: 100px;
219
+ height: 100px;
215
220
  transform: translate(-50%, -50%);
216
221
  background: rgba(189, 199, 206, 0.15);
217
222
  border-radius: 100%;
@@ -222,6 +227,8 @@ export default {
222
227
  width: 120px;
223
228
  height: 120px;
224
229
  object-fit: contain;
230
+ position: relative;
231
+ z-index: 2;
225
232
  }
226
233
  &__text {
227
234
  font-size: 16px;
@@ -0,0 +1,16 @@
1
+ import APasswordField from "./SearchMultiCategory.vue";
2
+
3
+ export default {
4
+ title: 'PasswordField',
5
+ component: APasswordField,
6
+ template: "<a-password-field label='Example'></a-password-field>"
7
+ }
8
+
9
+ const Template = (args, { argTypes }) => ({
10
+ components: { APasswordField },
11
+ props: Object.keys(argTypes),
12
+ template: '<a-password-field v-bind="$props"></a-password-field>'
13
+ })
14
+
15
+ export const BasePasswordField = Template.bind({});
16
+ BasePasswordField.args = {label: 'Password'}
@@ -0,0 +1,75 @@
1
+ <template>
2
+ <div class="adt-text-block">
3
+ <div class="adt-text-block__field">
4
+ <input
5
+ ref="input"
6
+ :type="type"
7
+ :value="value"
8
+ required
9
+ @input="$emit('input', $event.target.value)"
10
+ class="adt-text-block__input"
11
+ :class="{ error: !!errorText }"
12
+ />
13
+ <label class="adt-text-block__label">{{ label }}</label>
14
+ <div v-if="showPassword" @click="showPassword = false" class="adt-text-block__icon desktop">
15
+ <svg width="12" height="12" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 511.992 511.992" id="openedEye">
16
+ <path
17
+ d="M510.096 249.937c-4.032-5.867-100.928-143.275-254.101-143.275-131.435 0-248.555 136.619-253.483 142.443-3.349 3.968-3.349 9.792 0 13.781C7.44 268.71 124.56 405.329 255.995 405.329S504.549 268.71 509.477 262.886c3.094-3.669 3.371-8.981.619-12.949zM255.995 383.996c-105.365 0-205.547-100.48-230.997-128 25.408-27.541 125.483-128 230.997-128 123.285 0 210.304 100.331 231.552 127.424-24.534 26.645-125.291 128.576-231.552 128.576z"></path>
18
+ <path
19
+ d="M255.995 170.662c-47.061 0-85.333 38.272-85.333 85.333s38.272 85.333 85.333 85.333 85.333-38.272 85.333-85.333-38.272-85.333-85.333-85.333zm0 149.334c-35.285 0-64-28.715-64-64s28.715-64 64-64 64 28.715 64 64-28.715 64-64 64z"></path>
20
+ </svg>
21
+ </div>
22
+ <div v-else @click="showPassword = true" class="adt-text-block__icon desktop">
23
+ <svg width="12" height="12" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512.001 512.001" id="closedEye">
24
+ <path
25
+ d="M316.332 195.662c-4.16-4.16-10.923-4.16-15.083 0s-4.16 10.944 0 15.083c12.075 12.075 18.752 28.139 18.752 45.248 0 35.285-28.715 64-64 64-17.109 0-33.173-6.656-45.248-18.752-4.16-4.16-10.923-4.16-15.083 0-4.16 4.139-4.16 10.923 0 15.083 16.085 16.128 37.525 25.003 60.331 25.003 47.061 0 85.333-38.272 85.333-85.333 0-22.807-8.874-44.247-25.002-60.332zm-45.462-23.531c-4.843-.853-9.792-1.472-14.869-1.472-47.061 0-85.333 38.272-85.333 85.333 0 5.077.619 10.027 1.493 14.869.917 5.163 5.419 8.811 10.475 8.811.619 0 1.237-.043 1.877-.171 5.781-1.024 9.664-6.571 8.64-12.352-.661-3.627-1.152-7.317-1.152-11.157 0-35.285 28.715-64 64-64 3.84 0 7.531.491 11.157 1.131 5.675 1.152 11.328-2.859 12.352-8.64 1.024-5.781-2.858-11.328-8.64-12.352z"></path>
26
+ <path
27
+ d="M509.462 249.102c-2.411-2.859-60.117-70.208-139.712-111.445-5.163-2.709-11.669-.661-14.379 4.587-2.709 5.227-.661 11.669 4.587 14.379 61.312 31.744 110.293 81.28 127.04 99.371-25.429 27.541-125.504 128-230.997 128-35.797 0-71.872-8.64-107.264-25.707-5.248-2.581-11.669-.341-14.229 4.971-2.581 5.291-.341 11.669 4.971 14.229 38.293 18.496 77.504 27.84 116.523 27.84 131.435 0 248.555-136.619 253.483-142.443 3.369-3.969 3.348-9.793-.023-13.782zM325.996 118.947c-24.277-8.171-47.829-12.288-69.995-12.288-131.435 0-248.555 136.619-253.483 142.443-3.115 3.669-3.371 9.003-.597 12.992 1.472 2.112 36.736 52.181 97.856 92.779a10.48 10.48 0 005.888 1.792c3.435 0 6.827-1.664 8.875-4.8 3.264-4.885 1.92-11.52-2.987-14.763-44.885-29.845-75.605-65.877-87.104-80.533 24.555-26.667 125.291-128.576 231.552-128.576 19.861 0 41.131 3.755 63.189 11.157 5.589 2.005 11.648-1.088 13.504-6.699 1.878-5.589-1.109-11.626-6.698-13.504z"></path>
28
+ <path
29
+ d="M444.865 67.128c-4.16-4.16-10.923-4.16-15.083 0L67.116 429.795c-4.16 4.16-4.16 10.923 0 15.083a10.716 10.716 0 007.552 3.115c2.731 0 5.461-1.045 7.531-3.115L444.865 82.211c4.16-4.16 4.16-10.923 0-15.083z"></path>
30
+ </svg>
31
+ </div>
32
+ </div>
33
+ <div class="adt-text-block__error" v-if="!!errorText">
34
+ <svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" id="icon__attention">
35
+ <path d="M8.5 4C8.5 3.72386 8.27614 3.5 8 3.5C7.72386 3.5 7.5 3.72386 7.5 4H8.5ZM7.5 9C7.5 9.27614 7.72386 9.5 8 9.5C8.27614 9.5 8.5 9.27614 8.5 9H7.5ZM7.5 4V9H8.5V4H7.5Z" fill="#FF2E43"/>
36
+ <path d="M8.5 11C8.5 10.7239 8.27614 10.5 8 10.5C7.72386 10.5 7.5 10.7239 7.5 11H8.5ZM7.5 11.5C7.5 11.7761 7.72386 12 8 12C8.27614 12 8.5 11.7761 8.5 11.5H7.5ZM7.5 11V11.5H8.5V11H7.5Z" fill="#FF2E43"/>
37
+ <circle cx="8" cy="8" r="7" stroke="#FF2E43"/>
38
+ </svg>
39
+ {{ errorText }}
40
+ </div>
41
+ </div>
42
+ </template>
43
+
44
+ <script>
45
+ import '../../assets/style.scss';
46
+
47
+ export default {
48
+ name: "PasswordField",
49
+ props: {
50
+ errorText: {
51
+ type: String,
52
+ default: ""
53
+ },
54
+ label: {
55
+ type: String,
56
+ required: true,
57
+ },
58
+ value: {
59
+ type: [String, null],
60
+ required: true,
61
+ }
62
+ },
63
+ data() {
64
+ return {
65
+ showPassword: false
66
+ }
67
+ },
68
+ computed: {
69
+ type() {
70
+ return this.showPassword ? "text" : "password";
71
+ }
72
+ }
73
+ }
74
+ </script>
75
+
@@ -11,6 +11,7 @@ import AFooter from "./Footer/Footer";
11
11
  import ASearchTextField from "./SearchTextField/SearchTextField";
12
12
  import AMailTo from "./MailTo/MailTo";
13
13
  import ATable from "./Table/ATable";
14
+ import ALoader from "./Loader/Loader";
14
15
 
15
16
  const Components = {
16
17
  ACheckbox,
@@ -24,6 +25,7 @@ const Components = {
24
25
  ASearchTextField,
25
26
  AMailTo,
26
27
  ATable,
28
+ ALoader,
27
29
  ACheckboxMenu
28
30
  };
29
31
 
@@ -1,15 +1,6 @@
1
1
  export const profileDropDown = [
2
2
  {
3
3
  id: 1,
4
- name: "Общие настройки",
5
- dev: "https://adtdev.kz/profile?tab=general",
6
- staging: "https://adada.kz/profile?tab=general",
7
- prod: "https://adata.kz/profile?tab=general",
8
- disabled: false,
9
- withoutArray: true
10
- },
11
- {
12
- id: 2,
13
4
  name: "Увеличить лимит запросов",
14
5
  dev: "https://adtdev.kz/profile?tab=tariffs",
15
6
  staging: "https://adada.kz/profile?tab=tariffs",
@@ -18,8 +9,8 @@ export const profileDropDown = [
18
9
  withoutArray: true
19
10
  },
20
11
  {
21
- id: 3,
22
- name: "Текущий баланс: 0 ₸",
12
+ id: 2,
13
+ name: "Текущий баланс: ",
23
14
  dev: "https://adtdev.kz/profile?tab=tariffs",
24
15
  staging: "https://adada.kz/profile?tab=tariffs",
25
16
  prod: "https://adata.kz/profile?tab=tariffs",
@@ -28,7 +19,7 @@ export const profileDropDown = [
28
19
  withoutArray: true
29
20
  },
30
21
  {
31
- id: 4,
22
+ id: 3,
32
23
  name: "Историй платежей",
33
24
  dev: "https://adtdev.kz/profile?tab=payments",
34
25
  staging: "https://adada.kz/profile?tab=payments",
@@ -36,10 +27,20 @@ export const profileDropDown = [
36
27
  disabled: false,
37
28
  withoutArray: true
38
29
  },
30
+ {
31
+ id: 4,
32
+ name: "Общие настройки",
33
+ dev: "https://adtdev.kz/profile?tab=general",
34
+ staging: "https://adada.kz/profile?tab=general",
35
+ prod: "https://adata.kz/profile?tab=general",
36
+ disabled: false,
37
+ withoutArray: true
38
+ },
39
39
  {
40
40
  id: 5,
41
41
  name: "Контрагенты",
42
42
  opened: false,
43
+ key: 'counterparty',
43
44
  children: [
44
45
  {
45
46
  id: 8,
@@ -69,6 +70,7 @@ export const profileDropDown = [
69
70
  id: 6,
70
71
  name: "Работа",
71
72
  opened: false,
73
+ key: 'work',
72
74
  children: [
73
75
  {
74
76
  id: 10,
@@ -103,6 +105,7 @@ export const profileDropDown = [
103
105
  id: 7,
104
106
  name: "Тендеры",
105
107
  opened: false,
108
+ key: 'tenders',
106
109
  children: [
107
110
  {
108
111
  id: 17,