plugin-ui-for-kzt 0.0.16 → 0.0.18
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/dist/components/BaseBadge/BaseBadge.vue.d.ts +49 -0
- package/dist/components/BaseBadge/BaseBadgeGroup.vue.d.ts +30 -0
- package/dist/components/BaseButton/BaseButton.vue.d.ts +3 -3
- package/dist/components/BaseCheckbox/BaseCheckbox.vue.d.ts +4 -4
- package/dist/components/BaseChips/BaseChips.vue.d.ts +27 -0
- package/dist/components/BaseDropdown/BaseDropdown.vue.d.ts +3 -3
- package/dist/components/BaseInput/BaseInput.vue.d.ts +5 -5
- package/dist/components/BaseInputCalendar/BaseInputCalendar.vue.d.ts +5 -5
- package/dist/components/BaseInputCurrency/BaseInputCurrency.vue.d.ts +5 -5
- package/dist/components/BaseInputEmail/BaseInputEmail.vue.d.ts +5 -5
- package/dist/components/BaseInputPhone/BaseInputPhone.vue.d.ts +5 -5
- package/dist/components/BaseModal/BaseModal.vue.d.ts +4 -0
- package/dist/components/BaseOpenedListItem/BaseOpenedListItem.vue.d.ts +3 -3
- package/dist/components/BasePagination/BasePagination.vue.d.ts +1 -1
- package/dist/components/BaseRadio/BaseRadio.vue.d.ts +4 -4
- package/dist/components/BaseSegmentedButtons/BaseSegmentedButtons.vue.d.ts +3 -3
- package/dist/components/BaseSelect/BaseSelect.vue.d.ts +4 -4
- package/dist/components/BaseSiteInput/BaseSiteInput.vue.d.ts +1 -1
- package/dist/components/BaseSwiper/BaseSwiper.vue.d.ts +57 -0
- package/dist/components/BaseTag/BaseTag.vue.d.ts +61 -0
- package/dist/components/BaseTextarea/BaseTextarea.vue.d.ts +5 -5
- package/dist/components/BaseToggle/BaseToggle.vue.d.ts +4 -4
- package/dist/components/BaseUpload/BaseUpload.vue.d.ts +31 -0
- package/dist/components/{Modal/Modal.vue.d.ts → BaseUpload/ImageModal.vue.d.ts} +2 -10
- package/dist/components/Toaster/Toaster.vue.d.ts +4 -4
- package/dist/composables/useModal.d.ts +7 -0
- package/dist/index.d.ts +9 -3
- package/dist/index.js +1 -1
- package/dist/plugins/modalPlugin.d.ts +0 -13
- package/dist/sprite.svg +1 -1
- package/dist/store/modal.d.ts +154 -9
- package/example/App.vue +129 -295
- package/example/MyCustomModal.vue +37 -0
- package/package.json +1 -1
- package/src/assets/icons/add.svg +4 -0
- package/src/assets/icons/arrow-left-circle.svg +3 -0
- package/src/assets/icons/arrow-right-circle.svg +3 -0
- package/src/assets/icons/arrow-up.svg +4 -0
- package/src/assets/icons/close-circle.svg +5 -0
- package/src/assets/icons/close.svg +4 -0
- package/src/assets/icons/document-text.svg +4 -0
- package/src/assets/icons/export.svg +5 -0
- package/src/assets/icons/gallery.svg +5 -0
- package/src/assets/icons/notification-icon.svg +7 -0
- package/src/assets/icons/search-zoom-in.svg +6 -0
- package/src/assets/icons/star.svg +3 -0
- package/src/assets/icons/trash.svg +7 -0
- package/src/assets/icons/upload.svg +5 -0
- package/src/components/BaseBadge/BaseBadge.vue +188 -0
- package/src/components/BaseBadge/BaseBadgeGroup.vue +120 -0
- package/src/components/BaseBadge/README.md +127 -0
- package/src/components/BaseBreadCrumbs/BaseBreadCrumbs.vue +3 -3
- package/src/components/BaseButton/BaseButton.vue +29 -122
- package/src/components/BaseChips/BaseChips.vue +182 -0
- package/src/components/BaseChips/README.md +64 -0
- package/src/components/BaseInput/BaseInput.vue +5 -3
- package/src/components/BaseModal/BaseModal.vue +189 -0
- package/src/components/BaseOpenedListItem/BaseOpenedListItem.vue +4 -4
- package/src/components/BasePagination/BasePagination.vue +146 -123
- package/src/components/BaseSiteInput/BaseSiteInput.vue +26 -9
- package/src/components/BaseSwiper/BaseSwiper.vue +229 -0
- package/src/components/BaseTag/BaseTag.vue +245 -0
- package/src/components/BaseTag/README.md +125 -0
- package/src/components/BaseTextarea/BaseTextarea.vue +8 -14
- package/src/components/BaseUpload/BaseUpload.vue +392 -0
- package/src/components/BaseUpload/ImageModal.vue +25 -0
- package/src/composables/useModal.ts +14 -0
- package/src/index.ts +38 -19
- package/src/plugins/modalPlugin.ts +92 -76
- package/src/store/modal.ts +39 -16
- package/src/styles/root.scss +3 -0
- package/src/types/badge.d.ts +19 -0
- package/src/types/chips.d.ts +10 -0
- package/src/types/modal.d.ts +8 -0
- package/src/types/pagination.d.ts +2 -2
- package/src/types/swiper.d.ts +17 -0
- package/src/types/tag.d.ts +14 -0
- package/src/types/uploadedFile.d.ts +13 -0
- package/src/types/utils.d.ts +1 -1
- package/dist/types/index.d.ts +0 -5
- package/src/components/Modal/Modal.vue +0 -149
- package/src/components/Modal/README.md +0 -47
- package/src/types/index.ts +0 -7
|
@@ -83,7 +83,8 @@ const classList = computed(() => [
|
|
|
83
83
|
appearance: none;
|
|
84
84
|
cursor: pointer;
|
|
85
85
|
user-select: none;
|
|
86
|
-
transition: all var(--
|
|
86
|
+
transition: all var(--transition);
|
|
87
|
+
|
|
87
88
|
|
|
88
89
|
&.--is-loading {
|
|
89
90
|
@include loading-element;
|
|
@@ -158,10 +159,6 @@ const classList = computed(() => [
|
|
|
158
159
|
color: var(--primary-black-white);
|
|
159
160
|
background: var(--primary-blue);
|
|
160
161
|
|
|
161
|
-
i,svg {
|
|
162
|
-
color: var(--primary-black-white) !important;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
162
|
@include hover {
|
|
166
163
|
background: var(--primary-blue-800);
|
|
167
164
|
}
|
|
@@ -171,16 +168,14 @@ const classList = computed(() => [
|
|
|
171
168
|
}
|
|
172
169
|
|
|
173
170
|
@include focused {
|
|
174
|
-
outline: 4px
|
|
171
|
+
outline-width: 4px !important;
|
|
172
|
+
outline-color: var(--effects-primary-focus) !important;
|
|
173
|
+
outline-style: solid;
|
|
175
174
|
}
|
|
176
175
|
|
|
177
176
|
@include is-disabled-state {
|
|
178
177
|
color: var(--primary-blue-100);
|
|
179
178
|
background: var(--primary-blue-300);
|
|
180
|
-
|
|
181
|
-
i,svg {
|
|
182
|
-
color: var(--primary-blue-100) !important;
|
|
183
|
-
}
|
|
184
179
|
}
|
|
185
180
|
}
|
|
186
181
|
|
|
@@ -188,10 +183,6 @@ const classList = computed(() => [
|
|
|
188
183
|
color: var(--primary-black-800);
|
|
189
184
|
background: var(--primary-black-200);
|
|
190
185
|
|
|
191
|
-
i,svg {
|
|
192
|
-
color: var(--primary-black-800) !important;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
186
|
@include hover {
|
|
196
187
|
color: var(--primary-black-900);
|
|
197
188
|
background: var(--primary-black-300);
|
|
@@ -202,16 +193,14 @@ const classList = computed(() => [
|
|
|
202
193
|
}
|
|
203
194
|
|
|
204
195
|
@include focused {
|
|
205
|
-
outline: 4px
|
|
196
|
+
outline-width: 4px !important;
|
|
197
|
+
outline-color: var(--effects-primary-focus) !important;
|
|
198
|
+
outline-style: solid;
|
|
206
199
|
}
|
|
207
200
|
|
|
208
201
|
@include is-disabled-state {
|
|
209
202
|
color: var(--primary-black-400);
|
|
210
203
|
background: var(--primary-black-100);
|
|
211
|
-
|
|
212
|
-
i,svg {
|
|
213
|
-
color: var(--primary-black-400) !important;
|
|
214
|
-
}
|
|
215
204
|
}
|
|
216
205
|
}
|
|
217
206
|
|
|
@@ -220,18 +209,10 @@ const classList = computed(() => [
|
|
|
220
209
|
background: transparent;
|
|
221
210
|
border: 1px solid var(--primary-black-400);
|
|
222
211
|
|
|
223
|
-
i,svg {
|
|
224
|
-
color: var(--primary-black-600) !important;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
212
|
@include hover {
|
|
228
213
|
color: var(--primary-black-700);
|
|
229
214
|
text-decoration: none;
|
|
230
215
|
border: 1px solid var(--primary-black-500);
|
|
231
|
-
|
|
232
|
-
i,svg {
|
|
233
|
-
color: var(--primary-black-700) !important;
|
|
234
|
-
}
|
|
235
216
|
}
|
|
236
217
|
|
|
237
218
|
@include pressed {
|
|
@@ -241,16 +222,14 @@ const classList = computed(() => [
|
|
|
241
222
|
|
|
242
223
|
@include focused {
|
|
243
224
|
border: 1px solid var(--primary-black-400);
|
|
244
|
-
outline: 4px
|
|
225
|
+
outline-width: 4px !important;
|
|
226
|
+
outline-color: var(--effects-primary-focus) !important;
|
|
227
|
+
outline-style: solid;
|
|
245
228
|
}
|
|
246
229
|
|
|
247
230
|
@include is-disabled-state {
|
|
248
231
|
color: var(--primary-black-400);
|
|
249
232
|
border: 1px solid var(--primary-black-300);
|
|
250
|
-
|
|
251
|
-
i,svg {
|
|
252
|
-
color: var(--primary-black-400) !important;
|
|
253
|
-
}
|
|
254
233
|
}
|
|
255
234
|
}
|
|
256
235
|
|
|
@@ -259,18 +238,10 @@ const classList = computed(() => [
|
|
|
259
238
|
background: transparent;
|
|
260
239
|
border: 1px solid var(--primary-blue);
|
|
261
240
|
|
|
262
|
-
i,svg {
|
|
263
|
-
color: var(--primary-blue) !important;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
241
|
@include hover {
|
|
267
242
|
color: var(--primary-blue-800);
|
|
268
243
|
text-decoration: none;
|
|
269
244
|
border: 1px solid var(--primary-blue-800);
|
|
270
|
-
|
|
271
|
-
i,svg {
|
|
272
|
-
color: var(--primary-blue-800) !important;
|
|
273
|
-
}
|
|
274
245
|
}
|
|
275
246
|
|
|
276
247
|
@include pressed {
|
|
@@ -279,16 +250,14 @@ const classList = computed(() => [
|
|
|
279
250
|
}
|
|
280
251
|
|
|
281
252
|
@include focused {
|
|
282
|
-
outline: 4px
|
|
253
|
+
outline-width: 4px !important;
|
|
254
|
+
outline-color: var(--effects-primary-focus) !important;
|
|
255
|
+
outline-style: solid;
|
|
283
256
|
}
|
|
284
257
|
|
|
285
258
|
@include is-disabled-state {
|
|
286
259
|
color: var(--primary-black-400);
|
|
287
260
|
border: 1px solid var(--primary-black-300);
|
|
288
|
-
|
|
289
|
-
i,svg {
|
|
290
|
-
color: var(--primary-black-400) !important;
|
|
291
|
-
}
|
|
292
261
|
}
|
|
293
262
|
}
|
|
294
263
|
|
|
@@ -296,17 +265,9 @@ const classList = computed(() => [
|
|
|
296
265
|
color: var(--primary-black-600);
|
|
297
266
|
background: transparent;
|
|
298
267
|
|
|
299
|
-
i,svg {
|
|
300
|
-
color: var(--primary-black-600) !important;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
268
|
@include hover {
|
|
304
269
|
color: var(--primary-black-700);
|
|
305
270
|
background: var(--primary-black-100);
|
|
306
|
-
|
|
307
|
-
i,svg {
|
|
308
|
-
color: var(--primary-black-700) !important;
|
|
309
|
-
}
|
|
310
271
|
}
|
|
311
272
|
|
|
312
273
|
@include pressed {
|
|
@@ -316,15 +277,13 @@ const classList = computed(() => [
|
|
|
316
277
|
|
|
317
278
|
@include focused {
|
|
318
279
|
background: rgb(255 255 255 / 10%);
|
|
319
|
-
outline: 4px
|
|
280
|
+
outline-width: 4px !important;
|
|
281
|
+
outline-color: var(--effects-primary-focus) !important;
|
|
282
|
+
outline-style: solid;
|
|
320
283
|
}
|
|
321
284
|
|
|
322
285
|
@include is-disabled-state {
|
|
323
286
|
color: var(--primary-black-400);
|
|
324
|
-
|
|
325
|
-
i,svg {
|
|
326
|
-
color: var(--primary-black-400) !important;
|
|
327
|
-
}
|
|
328
287
|
}
|
|
329
288
|
}
|
|
330
289
|
|
|
@@ -332,18 +291,10 @@ const classList = computed(() => [
|
|
|
332
291
|
color: var(--primary-blue);
|
|
333
292
|
background: transparent;
|
|
334
293
|
|
|
335
|
-
i,svg {
|
|
336
|
-
color: var(--primary-blue) !important;
|
|
337
|
-
}
|
|
338
|
-
|
|
339
294
|
@include hover {
|
|
340
295
|
color: var(--primary-blue-900);
|
|
341
296
|
text-decoration: none;
|
|
342
297
|
background: var(--primary-blue-100);
|
|
343
|
-
|
|
344
|
-
i,svg {
|
|
345
|
-
color: var(--primary-blue-900) !important;
|
|
346
|
-
}
|
|
347
298
|
}
|
|
348
299
|
|
|
349
300
|
@include pressed {
|
|
@@ -353,15 +304,13 @@ const classList = computed(() => [
|
|
|
353
304
|
|
|
354
305
|
@include focused {
|
|
355
306
|
background: rgb(255 255 255 / 10%);
|
|
356
|
-
outline: 4px
|
|
307
|
+
outline-width: 4px !important;
|
|
308
|
+
outline-color: var(--effects-primary-focus) !important;
|
|
309
|
+
outline-style: solid;
|
|
357
310
|
}
|
|
358
311
|
|
|
359
312
|
@include is-disabled-state {
|
|
360
313
|
color: var(--primary-black-400);
|
|
361
|
-
|
|
362
|
-
i,svg {
|
|
363
|
-
color: var(--primary-black-400) !important;
|
|
364
|
-
}
|
|
365
314
|
}
|
|
366
315
|
}
|
|
367
316
|
|
|
@@ -371,37 +320,23 @@ const classList = computed(() => [
|
|
|
371
320
|
background: transparent;
|
|
372
321
|
padding: var(--corner-radius-xxs);
|
|
373
322
|
|
|
374
|
-
i,svg {
|
|
375
|
-
color: var(--primary-blue) !important;
|
|
376
|
-
}
|
|
377
|
-
|
|
378
323
|
@include hover {
|
|
379
324
|
color: var(--secondary-text-link-hover);
|
|
380
|
-
|
|
381
|
-
i,svg {
|
|
382
|
-
color: var(--primary-blue-700) !important;
|
|
383
|
-
}
|
|
384
325
|
}
|
|
385
326
|
|
|
386
327
|
@include pressed {
|
|
387
328
|
color: var(--secondary-text-link-pressed);
|
|
388
|
-
|
|
389
|
-
i,svg {
|
|
390
|
-
color: var(--primary-blue-700) !important;
|
|
391
|
-
}
|
|
392
329
|
}
|
|
393
330
|
|
|
394
331
|
@include focused {
|
|
395
332
|
background: rgb(255 255 255 / 10%);
|
|
396
|
-
outline: 4px
|
|
333
|
+
outline-width: 4px !important;
|
|
334
|
+
outline-color: var(--effects-primary-focus) !important;
|
|
335
|
+
outline-style: solid;
|
|
397
336
|
}
|
|
398
337
|
|
|
399
338
|
@include is-disabled-state {
|
|
400
339
|
color: var(--secondary-text-link-disabled);
|
|
401
|
-
|
|
402
|
-
i,svg {
|
|
403
|
-
color: var(--primary-black-400) !important;
|
|
404
|
-
}
|
|
405
340
|
}
|
|
406
341
|
}
|
|
407
342
|
|
|
@@ -411,37 +346,23 @@ const classList = computed(() => [
|
|
|
411
346
|
background: transparent;
|
|
412
347
|
padding: var(--corner-radius-xxs);
|
|
413
348
|
|
|
414
|
-
i,svg {
|
|
415
|
-
color: var(--error-red) !important;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
349
|
@include hover {
|
|
419
350
|
color: var(--error-red-light-01);
|
|
420
|
-
|
|
421
|
-
i,svg {
|
|
422
|
-
color: var(--error-red-light-01) !important;
|
|
423
|
-
}
|
|
424
351
|
}
|
|
425
352
|
|
|
426
353
|
@include pressed {
|
|
427
354
|
color: var(--error-red-deep);
|
|
428
|
-
|
|
429
|
-
i,svg {
|
|
430
|
-
color: var(--error-red-deep) !important;
|
|
431
|
-
}
|
|
432
355
|
}
|
|
433
356
|
|
|
434
357
|
@include focused {
|
|
435
358
|
background: rgb(255 255 255 / 10%);
|
|
436
|
-
outline: 4px
|
|
359
|
+
outline-width: 4px !important;
|
|
360
|
+
outline-color: var(--effects-primary-focus) !important;
|
|
361
|
+
outline-style: solid;
|
|
437
362
|
}
|
|
438
363
|
|
|
439
364
|
@include is-disabled-state {
|
|
440
365
|
color: var(--primary-black-400);
|
|
441
|
-
|
|
442
|
-
i,svg {
|
|
443
|
-
color: var(--primary-black-400) !important;
|
|
444
|
-
}
|
|
445
366
|
}
|
|
446
367
|
}
|
|
447
368
|
|
|
@@ -451,38 +372,24 @@ const classList = computed(() => [
|
|
|
451
372
|
text-decoration: underline;
|
|
452
373
|
padding: var(--corner-radius-xxs);
|
|
453
374
|
|
|
454
|
-
i,svg {
|
|
455
|
-
color: var(--primary-black) !important;
|
|
456
|
-
}
|
|
457
|
-
|
|
458
375
|
@include hover {
|
|
459
376
|
color: var(--secondary-text-gray-link-hover);
|
|
460
|
-
|
|
461
|
-
i,svg {
|
|
462
|
-
color: var(--primary-black-500) !important;
|
|
463
|
-
}
|
|
464
377
|
}
|
|
465
378
|
|
|
466
379
|
@include pressed {
|
|
467
380
|
color: var(--secondary-text-gray-link-pressed);
|
|
468
|
-
|
|
469
|
-
i,svg {
|
|
470
|
-
color: var(--primary-black-700) !important;
|
|
471
|
-
}
|
|
472
381
|
}
|
|
473
382
|
|
|
474
383
|
@include focused {
|
|
475
384
|
background: rgb(255 255 255 / 10%);
|
|
476
|
-
outline: 4px
|
|
385
|
+
outline-width: 4px !important;
|
|
386
|
+
outline-color: var(--effects-primary-focus) !important;
|
|
387
|
+
outline-style: solid;
|
|
477
388
|
}
|
|
478
389
|
|
|
479
390
|
@include is-disabled-state {
|
|
480
391
|
color: var(--secondary-text-gray-link-disabled);
|
|
481
392
|
border-bottom: none;
|
|
482
|
-
|
|
483
|
-
i,svg {
|
|
484
|
-
color: var(--primary-black-400) !important;
|
|
485
|
-
}
|
|
486
393
|
}
|
|
487
394
|
}
|
|
488
395
|
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="base-chips" :class="classList">
|
|
3
|
+
<button class="base-chips__wrapper">
|
|
4
|
+
<div class="base-chips__content">
|
|
5
|
+
<div v-if="iconName" class="base-chips__icon">
|
|
6
|
+
<base-icon
|
|
7
|
+
:name="iconName"
|
|
8
|
+
:size="props.size"
|
|
9
|
+
/>
|
|
10
|
+
</div>
|
|
11
|
+
<div class="base-chips__text">{{ text }}</div>
|
|
12
|
+
<div v-if="count" class="base-chips__count">{{ count }}</div>
|
|
13
|
+
</div>
|
|
14
|
+
</button>
|
|
15
|
+
</div>
|
|
16
|
+
</template>
|
|
17
|
+
|
|
18
|
+
<script setup lang="ts">
|
|
19
|
+
import type { ICoreChipsProps } from '../../types/chips';
|
|
20
|
+
import { useKitSize } from '../../composables/kit/size';
|
|
21
|
+
import BaseIcon from '../BaseIcon/BaseIcon.vue';
|
|
22
|
+
import { computed } from 'vue';
|
|
23
|
+
|
|
24
|
+
const props = withDefaults(defineProps<ICoreChipsProps>(), {
|
|
25
|
+
size: 'medium',
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
const { sizeClassList } = useKitSize(props);
|
|
29
|
+
|
|
30
|
+
const classList = computed(() => [
|
|
31
|
+
sizeClassList.value,
|
|
32
|
+
{ '--is-active': props.active }
|
|
33
|
+
]);
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<style lang="scss">
|
|
37
|
+
@import '../../styles/variables';
|
|
38
|
+
@import '../../styles/root';
|
|
39
|
+
|
|
40
|
+
.base-chips {
|
|
41
|
+
$chip: &;
|
|
42
|
+
|
|
43
|
+
button {
|
|
44
|
+
border: none;
|
|
45
|
+
outline: none;
|
|
46
|
+
margin: 0;
|
|
47
|
+
padding: 0;
|
|
48
|
+
display: block;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&__wrapper {
|
|
52
|
+
overflow: hidden;
|
|
53
|
+
cursor: pointer;
|
|
54
|
+
height: 100%;
|
|
55
|
+
width: fit-content;
|
|
56
|
+
background: var(--primary-black-200);
|
|
57
|
+
color: var(--primary-black-800);
|
|
58
|
+
transition: all var(--transition);
|
|
59
|
+
|
|
60
|
+
@include hover {
|
|
61
|
+
background: var(--primary-black-300);
|
|
62
|
+
color: var(--primary-black-900);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@include focused {
|
|
66
|
+
background: var(--primary-black-200);
|
|
67
|
+
color: var(--primary-black-800);
|
|
68
|
+
outline-width: 4px;
|
|
69
|
+
outline-color: var(--effects-primary-focus);
|
|
70
|
+
outline-style: solid;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@include pressed {
|
|
74
|
+
background: var(--primary-black-400);
|
|
75
|
+
color: var(--primary-black);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
&__content {
|
|
80
|
+
display: flex;
|
|
81
|
+
align-items: center;
|
|
82
|
+
justify-content: center;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&.--is-active {
|
|
86
|
+
#{$chip}__wrapper {
|
|
87
|
+
background: var(--primary-blue);
|
|
88
|
+
color: var(--primary-black-white);
|
|
89
|
+
|
|
90
|
+
@include hover {
|
|
91
|
+
background: var(--primary-black-300);
|
|
92
|
+
color: var(--primary-black-900);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@include pressed {
|
|
96
|
+
background: var(--primary-black-400);
|
|
97
|
+
color: var(--primary-black);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
&.--extra-small-size {
|
|
103
|
+
#{$chip} {
|
|
104
|
+
&__content {
|
|
105
|
+
padding: var(--spacing-2s) var(--spacing-m);
|
|
106
|
+
gap: var(--spacing-xs);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
&__wrapper {
|
|
110
|
+
height: 32px;
|
|
111
|
+
font: var(--typography-text-s-medium);
|
|
112
|
+
border-radius: var(--corner-radius-xl);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
&__count {
|
|
116
|
+
transform: translateY(-3px);
|
|
117
|
+
font: var(--typography-text-xs-medium);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
&.--small-size {
|
|
123
|
+
#{$chip} {
|
|
124
|
+
&__content {
|
|
125
|
+
padding: var(--spacing-s) var(--spacing-l);
|
|
126
|
+
gap: var(--spacing-s);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
&__wrapper {
|
|
130
|
+
height: 40px;
|
|
131
|
+
font: var(--typography-text-m-medium);
|
|
132
|
+
border-radius: var(--corner-radius-xl);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
&__count {
|
|
136
|
+
transform: translateY(-3px);
|
|
137
|
+
font: var(--typography-text-xs-medium);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
&.--medium-size {
|
|
143
|
+
#{$chip} {
|
|
144
|
+
&__content {
|
|
145
|
+
padding: var(--spacing-2m) var(--spacing-l);
|
|
146
|
+
gap: var(--spacing-s);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
&__wrapper {
|
|
150
|
+
height: 48px;
|
|
151
|
+
font: var(--typography-text-l-medium);
|
|
152
|
+
border-radius: var(--corner-radius-xl);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
&__count {
|
|
156
|
+
transform: translateY(-4px);
|
|
157
|
+
font: var(--typography-text-s-medium);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
&.--large-size {
|
|
163
|
+
#{$chip} {
|
|
164
|
+
&__content {
|
|
165
|
+
padding: var(--spacing-2l) var(--spacing-l);
|
|
166
|
+
gap: var(--spacing-s);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
&__wrapper {
|
|
170
|
+
height: 56px;
|
|
171
|
+
font: var(--typography-text-l-medium);
|
|
172
|
+
border-radius: var(--corner-radius-2xl);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
&__count {
|
|
176
|
+
transform: translateY(-5px);
|
|
177
|
+
font: var(--typography-text-s-medium);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
</style>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Документация по использованию компонента BaseChips
|
|
2
|
+
|
|
3
|
+
Компонент `BaseChips` — это повторно используемый компонент Vue, предназначенный для отображения чипа (небольшого интерактивного элемента) с настраиваемым текстом, иконкой, количеством и размером. Он поддерживает различные состояния (активное, при наведении, фокусировка, нажатие) с плавными переходами и стилизуется в соответствии с предопределённой дизайн-системой.
|
|
4
|
+
|
|
5
|
+
## Содержание
|
|
6
|
+
- [Использование](#использование)
|
|
7
|
+
- [Свойства (Props)](#свойства-props)
|
|
8
|
+
- [События (Events)](#события-events)
|
|
9
|
+
- [Слоты (Slots)](#слоты-slots)
|
|
10
|
+
- [Стилизация](#стилизация)
|
|
11
|
+
|
|
12
|
+
## Использование
|
|
13
|
+
|
|
14
|
+
Используйте компонент `BaseChips` для отображения чипа с текстом, опциональной иконкой и количеством. Компонент поддерживает разные размеры и состояние активности.
|
|
15
|
+
|
|
16
|
+
## Свойства (Props)
|
|
17
|
+
|
|
18
|
+
| Свойство | Тип | Значение по умолчанию | Описание |
|
|
19
|
+
|-------------|-------------|-----------------------|----------------------------------------------|
|
|
20
|
+
| `text` | `string` | Обязательно | Основной текст, отображаемый внутри чипа. |
|
|
21
|
+
| `active` | `boolean` | `false` | Определяет, находится ли чип в активном состоянии. |
|
|
22
|
+
| `iconName` | `string` | `undefined` | Название иконки для отображения (требуется BaseIcon). |
|
|
23
|
+
| `count` | `number` | `undefined` | Число для отображения в чипе. |
|
|
24
|
+
| `size` | `'extra-small' | 'small' | 'medium' | 'large'` | `medium` | Размер чипа (влияет на высоту, шрифт и отступы). |
|
|
25
|
+
|
|
26
|
+
## События (Events)
|
|
27
|
+
|
|
28
|
+
Компонент не выбрасывает событий напрямую, но его поведение зависит от состояния `active`, которое можно управлять через родительский компонент.
|
|
29
|
+
|
|
30
|
+
## Слоты (Slots)
|
|
31
|
+
|
|
32
|
+
Компонент не предоставляет пользовательских слотов. Содержимое (текст, иконка, количество) определяется через пропсы.
|
|
33
|
+
|
|
34
|
+
## Стилизация
|
|
35
|
+
|
|
36
|
+
Стилизация может быть расширена через кастомные классы или модификации через `:deep()` в родительском компоненте.
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Динамическое переключение состояния
|
|
40
|
+
```vue
|
|
41
|
+
<template>
|
|
42
|
+
<base-chips
|
|
43
|
+
:text="'Динамический чип'"
|
|
44
|
+
:active="isActive"
|
|
45
|
+
icon-name="check"
|
|
46
|
+
:count="count"
|
|
47
|
+
size="large"
|
|
48
|
+
@click="toggleActive"
|
|
49
|
+
/>
|
|
50
|
+
</template>
|
|
51
|
+
|
|
52
|
+
<script setup>
|
|
53
|
+
import { ref } from 'vue';
|
|
54
|
+
import BaseChips from '/components/BaseChips/BaseChips.vue';
|
|
55
|
+
|
|
56
|
+
const isActive = ref(false);
|
|
57
|
+
const count = ref(5);
|
|
58
|
+
|
|
59
|
+
const toggleActive = () => {
|
|
60
|
+
isActive.value = !isActive.value;
|
|
61
|
+
count.value += 1;
|
|
62
|
+
};
|
|
63
|
+
</script>
|
|
64
|
+
```
|
|
@@ -83,7 +83,7 @@ function handleInput(event: Event) {
|
|
|
83
83
|
@import '../../styles/root';
|
|
84
84
|
|
|
85
85
|
.base-input {
|
|
86
|
-
width:
|
|
86
|
+
width: 100%;
|
|
87
87
|
$input: &;
|
|
88
88
|
|
|
89
89
|
&__wrapper {
|
|
@@ -91,17 +91,18 @@ function handleInput(event: Event) {
|
|
|
91
91
|
display: flex;
|
|
92
92
|
flex-direction: column;
|
|
93
93
|
align-items: flex-start;
|
|
94
|
-
width:
|
|
94
|
+
width: 100%;
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
&__field {
|
|
98
98
|
flex: 1;
|
|
99
|
-
width:
|
|
99
|
+
width: 100%;
|
|
100
100
|
height: 100%;
|
|
101
101
|
color: var(--primary-text-primary);
|
|
102
102
|
background: var(--bg-light);
|
|
103
103
|
border: 1px solid var(--primary-black-300);
|
|
104
104
|
outline: none;
|
|
105
|
+
transition: all var(--transition);
|
|
105
106
|
|
|
106
107
|
&::placeholder {
|
|
107
108
|
color: var(--primary-text-tertiary);
|
|
@@ -151,6 +152,7 @@ function handleInput(event: Event) {
|
|
|
151
152
|
display: flex;
|
|
152
153
|
flex-direction: column;
|
|
153
154
|
gap: 6px;
|
|
155
|
+
width: 100%;
|
|
154
156
|
}
|
|
155
157
|
|
|
156
158
|
&__label-text {
|