plugin-ui-for-kzt 0.0.23 → 0.0.27

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 (93) hide show
  1. package/dist/assets/0e28e37419c99ac65b12.png +0 -0
  2. package/dist/assets/264165b2b0e8a6840eb0.png +0 -0
  3. package/dist/components/BaseBadge/BaseBadge.vue.d.ts +2 -2
  4. package/dist/components/BaseButton/BaseButton.vue.d.ts +1 -1
  5. package/dist/components/BaseCalendar/BaseCalendar.vue.d.ts +10 -1
  6. package/dist/components/BaseCheckbox/BaseCheckbox.vue.d.ts +2 -2
  7. package/dist/components/{DataTable/DataTable.vue.d.ts → BaseDefaultPages/BaseDefaultPages.vue.d.ts} +8 -6
  8. package/dist/components/BaseDropdown/BaseDropdown.vue.d.ts +1 -1
  9. package/dist/components/BaseInput/BaseInput.vue.d.ts +4 -4
  10. package/dist/components/BaseInputCalendar/BaseInputCalendar.vue.d.ts +11 -4
  11. package/dist/components/BaseInputCurrency/BaseInputCurrency.vue.d.ts +3 -3
  12. package/dist/components/BaseInputEmail/BaseInputEmail.vue.d.ts +2 -2
  13. package/dist/components/BaseInputPhone/BaseInputPhone.vue.d.ts +2 -2
  14. package/dist/components/{Tooltip/Tooltip.vue.d.ts → BasePageLoader/BasePageLoader.vue.d.ts} +24 -11
  15. package/dist/components/BasePagination/BasePagination.vue.d.ts +1 -1
  16. package/dist/components/BaseRadio/BaseRadio.vue.d.ts +2 -2
  17. package/dist/components/BaseSegmentedButtons/BaseSegmentedButtons.vue.d.ts +1 -1
  18. package/dist/components/BaseSelect/BaseSelect.vue.d.ts +2 -2
  19. package/dist/components/BaseTable/BaseTable.vue.d.ts +44 -0
  20. package/dist/components/BaseTag/BaseTag.vue.d.ts +1 -1
  21. package/dist/components/BaseTextarea/BaseTextarea.vue.d.ts +2 -2
  22. package/dist/components/BaseToast/BaseToast.vue.d.ts +69 -0
  23. package/dist/components/BaseToggle/BaseToggle.vue.d.ts +2 -2
  24. package/dist/composables/useToast.d.ts +2 -0
  25. package/dist/index.d.ts +6 -5
  26. package/dist/index.js +1 -1
  27. package/dist/plugins/toastPlugin.d.ts +4 -0
  28. package/dist/sprite.svg +1 -1
  29. package/dist/store/toast.d.ts +8 -0
  30. package/example/App.vue +12 -38
  31. package/package.json +1 -1
  32. package/src/assets/404.png +0 -0
  33. package/src/assets/icons/arrow-down-stick.svg +4 -0
  34. package/src/assets/icons/edit-table.svg +5 -0
  35. package/src/assets/icons/ellipsis.svg +5 -0
  36. package/src/assets/icons/loading-page-default.svg +4 -0
  37. package/src/assets/icons/loading-page-error.svg +6 -0
  38. package/src/assets/icons/loading-page-success.svg +5 -0
  39. package/src/assets/icons/loading-page-warning.svg +6 -0
  40. package/src/assets/icons/more-dots.svg +5 -0
  41. package/src/assets/icons/time-table.svg +7 -0
  42. package/src/assets/icons/toast-error.svg +3 -0
  43. package/src/assets/icons/toast-info.svg +3 -0
  44. package/src/assets/icons/toast-success.svg +3 -0
  45. package/src/assets/icons/toast-warning.svg +3 -0
  46. package/src/assets/icons/trash-table.svg +7 -0
  47. package/src/assets/tech-work.png +0 -0
  48. package/src/components/BaseCalendar/BaseCalendar.vue +2 -0
  49. package/src/components/BaseChips/BaseChips.vue +3 -1
  50. package/src/components/BaseDefaultPages/BaseDefaultPages.vue +140 -0
  51. package/src/components/BaseDefaultPages/README.md +128 -0
  52. package/src/components/BaseOpenedListItem/BaseOpenedListItem.vue +3 -3
  53. package/src/components/BasePageLoader/BasePageLoader.vue +211 -0
  54. package/src/components/BasePageLoader/README.md +80 -0
  55. package/src/components/BaseSelect/BaseSelect.vue +8 -3
  56. package/src/components/BaseTable/BaseTable.vue +411 -0
  57. package/src/components/BaseTable/README.md +294 -0
  58. package/src/components/BaseToast/BaseToast.vue +200 -0
  59. package/src/components/BaseToast/README.md +103 -0
  60. package/src/components/BaseTooltip/BaseTooltip.vue +1 -0
  61. package/src/components/BaseUpload/BaseUpload.vue +1 -1
  62. package/src/composables/useToast.ts +10 -0
  63. package/src/index.ts +17 -13
  64. package/src/plugins/toastPlugin.ts +100 -0
  65. package/src/store/toast.ts +59 -0
  66. package/src/styles/root.scss +2 -0
  67. package/src/styles/toast.scss +36 -0
  68. package/src/types/calendar.d.ts +1 -0
  69. package/src/types/default-pages.d.ts +6 -0
  70. package/src/types/loading-page.d.ts +12 -0
  71. package/src/types/pagination.d.ts +1 -0
  72. package/src/types/table.d.ts +33 -0
  73. package/src/types/toast.d.ts +25 -0
  74. package/webpack.config.js +12 -0
  75. package/dist/components/Spinner/Spinner.vue.d.ts +0 -20
  76. package/dist/components/Toaster/Toaster.vue.d.ts +0 -80
  77. package/dist/components/Toaster/timer.d.ts +0 -12
  78. package/dist/plugins/toasterPlugin.d.ts +0 -26
  79. package/src/components/DataTable/DataTable.vue +0 -169
  80. package/src/components/DataTable/README.md +0 -57
  81. package/src/components/Spinner/README.md +0 -35
  82. package/src/components/Spinner/Spinner.vue +0 -60
  83. package/src/components/Toaster/README.md +0 -70
  84. package/src/components/Toaster/Toaster.vue +0 -235
  85. package/src/components/Toaster/timer.ts +0 -45
  86. package/src/components/Tooltip/README.md +0 -37
  87. package/src/components/Tooltip/Tooltip.vue +0 -96
  88. package/src/components/icons/CloseIcon.vue +0 -5
  89. package/src/components/icons/ErrorIcon.vue +0 -7
  90. package/src/components/icons/InfoIcon.vue +0 -7
  91. package/src/components/icons/SuccessIcon.vue +0 -6
  92. package/src/components/icons/WarningIcon.vue +0 -7
  93. package/src/plugins/toasterPlugin.ts +0 -179
@@ -0,0 +1,140 @@
1
+ <template>
2
+ <div class="base-default-pages">
3
+ <div class="base-default-pages__wrapper">
4
+ <div
5
+ class="base-default-pages__image-container"
6
+ :class="imageContainer"
7
+ >
8
+ <img
9
+ :src="imagePath"
10
+ alt="image"
11
+ class="base-default-pages__image"
12
+ />
13
+ </div>
14
+ <div class="base-default-pages__content">
15
+ <div class="base-default-pages__text-wrapper">
16
+ <h1 class="base-default-pages__title">{{ title }}</h1>
17
+ <p class="base-default-pages__description">{{ description }}</p>
18
+ </div>
19
+ <base-button
20
+ size="medium"
21
+ color="primary"
22
+ class="base-default-pages__button"
23
+ @click="$emit('click-button')"
24
+ >
25
+ {{ buttonText }}
26
+ </base-button>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ </template>
31
+
32
+ <script setup lang="ts">
33
+ import { computed } from 'vue';
34
+ import BaseButton from '../BaseButton/BaseButton.vue';
35
+ import type { IDefaultPagesProps } from '../../types/default-pages';
36
+
37
+ const props = defineProps<IDefaultPagesProps>();
38
+
39
+ const imagePath = computed(()=> require(`@/assets/${props.type}.png`))
40
+ const imageContainer = computed<string[]>(()=> [
41
+ `base-default-pages__image-container--${props.type}`
42
+ ])
43
+ </script>
44
+
45
+ <style scoped lang="scss">
46
+ @import '../../styles/variables';
47
+ @import '../../styles/root';
48
+
49
+ .base-default-pages {
50
+ &,
51
+ &__wrapper,
52
+ &__text-wrapper,
53
+ &__content {
54
+ display: flex;
55
+ flex-direction: column;
56
+ align-items: center;
57
+ text-align: center;
58
+ width: 100%;
59
+ height: 100%;
60
+ }
61
+
62
+ &__wrapper {
63
+ align-items: center;
64
+ justify-content: center;
65
+ gap: var(--spacing-l);
66
+ max-width: 996px;
67
+ background: var(--bg-light);
68
+ padding: var(--spacing-l) 0;
69
+
70
+ @media #{$tablet} {
71
+ gap: 0;
72
+ }
73
+ }
74
+
75
+ &__title {
76
+ font: var(--typography-h3-medium);
77
+ color: var(--primary-text-primary);
78
+
79
+ @media #{$tablet} {
80
+ font: var(--typography-h1-medium);
81
+ }
82
+ }
83
+
84
+ &__description {
85
+ font: var(--typography-text-m-regular);
86
+ color: var(--primary-text-tertiary);
87
+
88
+ @media #{$tablet} {
89
+ font: var(--typography-h4-regular);
90
+ }
91
+ }
92
+
93
+ &__text-wrapper {
94
+ gap: var(--spacing-s);
95
+ }
96
+
97
+ &__content {
98
+ gap: var(--spacing-2xl);
99
+ }
100
+
101
+ &__image {
102
+ width: 100%;
103
+ height: 100%;
104
+ object-fit: cover;
105
+ }
106
+
107
+ &__image-container {
108
+ width: 100%;
109
+ height: 100%;
110
+ }
111
+
112
+ &__image-container--tech-work {
113
+ max-width: 334px;
114
+ max-height: 345px;
115
+
116
+ @media #{$tablet} {
117
+ max-width: 595px;
118
+ max-height: 614px;
119
+ }
120
+ }
121
+
122
+ &__image-container--404 {
123
+ max-width: 335px;
124
+ max-height: 249px;
125
+
126
+ @media #{$tablet} {
127
+ max-width: 996px;
128
+ max-height: 614px;
129
+ }
130
+ }
131
+
132
+ &__button {
133
+ width: 100%;
134
+
135
+ @media #{$tablet} {
136
+ max-width: 335px;
137
+ }
138
+ }
139
+ }
140
+ </style>
@@ -0,0 +1,128 @@
1
+ # 📚 Документация компонента **BaseDefaultPages.vue**
2
+
3
+ > **Назначение** – единый «шаблон страниц» (404, технические работы и т.п.), который выводит заголовок, описание, кнопку и сопутствующую иллюстрацию.
4
+ > Компонент полностью стилизован через BEM‑классы, использует переменные CSS (см. `variables.scss` и `root.scss`) и поддерживает адаптивную разметку.
5
+
6
+ ## <a name="api-компонента"></a>API компонента
7
+
8
+ ### <a name="пропсы"></a>Пропсы
9
+
10
+ | Prop | Тип | Обязательность | Описание | Пример значения |
11
+ |--------------|--------------------------------------|----------------|------------------------------------------------------------------------------------------------|-----------------|
12
+ | `title` | `string` | **да** | Текст заголовка ( `<h1>` ). | `"Ошибка 404"` |
13
+ | `description`| `string` | **да** | Текст описания под заголовком ( `<p>` ). | `"Неправильно набранный адрес..."` |
14
+ | `buttonText` | `string` | **да** | Текст кнопки **BaseButton**. | `"На главную"` |
15
+ | `type` | `'tech-work' \| '404'` | **да** | Ключ, который определяет: <br>· Какой PNG‑файл будет подгружен (`tech-work.png` / `404.png`).<br>· Какой BEM‑модификатор будет добавлен к контейнеру изображения (`base-default-pages__image-container--tech-work` / `...--404`). | `'404'` |
16
+
17
+ > **Тип `type`** жестко ограничен перечислением. При добавлении нового типа необходимо расширить тип и добавить соответствующие стили/изображения (см. раздел **[Как добавить новый тип страницы]**).
18
+
19
+ ### <a name="тип-iddefaultpagesprops"></a>Тип `IDefaultPagesProps`
20
+
21
+ ```ts
22
+ /**
23
+ * Параметры компонента BaseDefaultPages.
24
+ *
25
+ * @property {string} title Заголовок страницы.
26
+ * @property {string} description Описание (подзаголовок).
27
+ * @property {string} buttonText Текст кнопки.
28
+ * @property {'tech-work'|'404'} type Тип страницы, определяющий изображение и размеры.
29
+ */
30
+ export interface IDefaultPagesProps {
31
+ title: string;
32
+ description: string;
33
+ buttonText: string;
34
+ type: 'tech-work' | '404';
35
+ }
36
+ ```
37
+
38
+ ### <a name="вычисляемые-свойства"></a>Внутренние вычисляемые свойства
39
+
40
+ | Свойство | Тип | Описание |
41
+ |----------|------|----------|
42
+ | `imagePath` | `ComputedRef<string>` | Генерирует путь к изображению: `require('@/assets/${props.type}.png')`. При смене `type` автоматически меняет изображение. |
43
+ | `imageContainer` | `ComputedRef<string[]>` | Возвращает массив CSS‑классов, включающий модификатор: `['base-default-pages__image-container--${props.type}']`. Позволяет менять размеры контейнера в зависимости от типа. |
44
+
45
+ ---
46
+
47
+ ## <a name="пример-использования"></a>Пример использования
48
+
49
+ ```vue
50
+ <!-- DemoPage.vue -->
51
+ <template>
52
+ <div class="demo-page">
53
+ <h1>Plugin UI KZT – Компоненты</h1>
54
+
55
+ <section class="pages-list">
56
+ <!-- 404 -->
57
+ <BaseDefaultPages v-bind="data404" @click-button="goHome" />
58
+
59
+ <!-- Технические работы -->
60
+ <BaseDefaultPages v-bind="dataTechWork" @click-button="goHome" />
61
+ </section>
62
+ </div>
63
+ </template>
64
+
65
+ <script setup lang="ts">
66
+ import { ref } from 'vue';
67
+ import BaseDefaultPages from '@/components/BaseDefaultPages/BaseDefaultPages.vue';
68
+
69
+ const data404 = ref({
70
+ title: 'Ошибка 404',
71
+ description:
72
+ 'Неправильно набранный адрес, или такой страницы больше не существует',
73
+ buttonText: 'На главную',
74
+ type: '404',
75
+ });
76
+
77
+ const dataTechWork = ref({
78
+ title: 'Технические работы',
79
+ description: 'Приносим свои извинения, попробуйте зайти позже',
80
+ buttonText: 'На главную',
81
+ type: 'tech-work',
82
+ });
83
+
84
+ // Пример простого навигационного обратного вызова
85
+ const goHome = () => {
86
+ // например, router.push('/')
87
+ console.log('Перенаправление на главную');
88
+ };
89
+ </script>
90
+
91
+ <style scoped lang="scss">
92
+ .demo-page {
93
+ padding: var(--spacing-l);
94
+ }
95
+ .pages-list {
96
+ display: flex;
97
+ flex-direction: column;
98
+ gap: var(--spacing-2xl);
99
+ }
100
+ </style>
101
+
102
+ ## <a name="как-добавить-новый-тип-страницы"></a>Как добавить новый тип страницы
103
+
104
+ 1. **Добавьте PNG‑файл** в каталог `src/assets/` с именем `<new-type>.png` (например, `maintenance.png`).
105
+ 2. **Обновите тип пропса** в `IDefaultPagesProps`:
106
+
107
+ ```ts
108
+ export interface IDefaultPagesProps {
109
+ // …
110
+ type: 'tech-work' | '404' | 'maintenance';
111
+ }
112
+ ```
113
+
114
+ 3. **Создайте/добавьте модификатор** в SCSS:
115
+
116
+ ```scss
117
+ .base-default-pages__image-container--maintenance {
118
+ max-width: 400px;
119
+ max-height: 300px;
120
+
121
+ @media #{$tablet} {
122
+ max-width: 800px;
123
+ max-height: 600px;
124
+ }
125
+ }
126
+ ```
127
+
128
+ 4. **(Опционально) Добавьте адаптивные стили** для заголовка/описания, если требуется особый дизайн.
@@ -157,7 +157,7 @@ const actualComponent = computed(() => {
157
157
  #{$item} {
158
158
  &__wrapper {
159
159
  gap: var(--spacing-s);
160
- height: 40px;
160
+ min-height: 40px;
161
161
  padding: var(--spacing-s) var(--spacing-2l);
162
162
  }
163
163
 
@@ -177,7 +177,7 @@ const actualComponent = computed(() => {
177
177
  #{$item} {
178
178
  &__wrapper {
179
179
  gap: var(--spacing-m);
180
- height: 48px;
180
+ min-height: 48px;
181
181
  padding: var(--spacing-m) var(--spacing-2l);
182
182
  }
183
183
 
@@ -197,7 +197,7 @@ const actualComponent = computed(() => {
197
197
  #{$item} {
198
198
  &__wrapper {
199
199
  gap: var(--spacing-l);
200
- height: 60px;
200
+ min-height: 60px;
201
201
  padding: var(--spacing-2l) var(--spacing-l);
202
202
  }
203
203
 
@@ -0,0 +1,211 @@
1
+ <template>
2
+ <div class="base-page-loader" :class="classList" :aria-busy="loading">
3
+ <div class="base-page-loader__overlay" :class="{ 'base-page-loader__overlay--modal': modal }"></div>
4
+ <div class="base-page-loader__wrapper">
5
+ <div class="base-page-loader__icon-container">
6
+ <transition-group name="icon-fade" tag="div">
7
+ <base-icon
8
+ v-if="loading"
9
+ key="loading"
10
+ class="base-page-loader__icon base-page-loader__icon--animation"
11
+ size="custom"
12
+ name="loading-page-default"
13
+ />
14
+ <base-icon
15
+ v-else-if="iconType"
16
+ key="status"
17
+ class="base-page-loader__icon base-page-loader__icon--after-loading"
18
+ size="custom"
19
+ :name="iconName"
20
+ />
21
+ </transition-group>
22
+ </div>
23
+ <transition name="icon-fade">
24
+ <div v-if="message" class="base-page-loader__message">
25
+ {{ message }}
26
+ </div>
27
+ </transition>
28
+ </div>
29
+ </div>
30
+ </template>
31
+
32
+ <script setup lang="ts">
33
+ import { computed } from 'vue';
34
+ import BaseIcon from '../BaseIcon/BaseIcon.vue';
35
+ import { useKitSize } from '../../composables/kit/size';
36
+ import type { TPageLoaderProps } from '../../types/loading-page';
37
+
38
+ const props = withDefaults(defineProps<TPageLoaderProps>(), {
39
+ size: 'medium',
40
+ loading: true,
41
+ message: '',
42
+ modal: false,
43
+ });
44
+
45
+ const { sizeClassList } = useKitSize(props);
46
+
47
+ const classList = computed(() => [
48
+ ...sizeClassList.value,
49
+ 'base-page-loader',
50
+ { '--modal': props.modal },
51
+ ]);
52
+
53
+ const iconName = computed(() => {
54
+ switch (props.iconType) {
55
+ case 'success':
56
+ return 'loading-page-success';
57
+ case 'warning':
58
+ return 'loading-page-warning';
59
+ case 'error':
60
+ return 'loading-page-error';
61
+ default:
62
+ return 'loading-page-success';
63
+ }
64
+ });
65
+ </script>
66
+
67
+ <style scoped lang="scss">
68
+ @import '../../styles/variables';
69
+ @import '../../styles/root';
70
+
71
+ .base-page-loader {
72
+ $loader: &;
73
+
74
+ position: relative;
75
+ width: 100%;
76
+ height: 100%;
77
+ display: flex;
78
+ align-items: center;
79
+ justify-content: center;
80
+ z-index: 1000;
81
+
82
+ &__overlay {
83
+ position: absolute;
84
+ top: 0;
85
+ left: 0;
86
+ width: 100%;
87
+ height: 100%;
88
+ background: rgba(0, 0, 0, 0.5);
89
+ z-index: 1;
90
+ }
91
+
92
+ &__wrapper {
93
+ position: relative;
94
+ z-index: 2;
95
+ display: flex;
96
+ flex-direction: column;
97
+ align-items: center;
98
+ justify-content: center;
99
+ gap: 12px;
100
+ width: auto;
101
+ min-width: 120px;
102
+ }
103
+
104
+ &__icon-container {
105
+ position: relative;
106
+ width: 56px;
107
+ height: 56px;
108
+ }
109
+
110
+ &__icon {
111
+ position: absolute;
112
+ top: 0;
113
+ left: 0;
114
+
115
+ &--animation {
116
+ animation: loader-circle 1s linear infinite;
117
+ }
118
+ }
119
+
120
+ &__message {
121
+ font: var(--typography-text-m-regular);
122
+ color: var(--primary-text-primary);
123
+ text-align: center;
124
+ }
125
+
126
+ &.--small-size {
127
+ #{$loader}__icon-container {
128
+ width: 32px;
129
+ height: 32px;
130
+ }
131
+
132
+ #{$loader}__icon {
133
+ width: 32px;
134
+ height: 32px;
135
+ }
136
+
137
+ #{$loader}__message {
138
+ font: var(--typography-text-s-regular);
139
+ }
140
+ }
141
+
142
+ &.--medium-size {
143
+ #{$loader}__icon-container {
144
+ width: 48px;
145
+ height: 48px;
146
+ }
147
+
148
+ #{$loader}__icon {
149
+ width: 48px;
150
+ height: 48px;
151
+ }
152
+
153
+ #{$loader}__message {
154
+ font: var(--typography-text-m-regular);
155
+ }
156
+ }
157
+
158
+ &.--large-size {
159
+ #{$loader}__icon-container {
160
+ width: 56px;
161
+ height: 56px;
162
+ }
163
+
164
+ #{$loader}__icon {
165
+ width: 56px;
166
+ height: 56px;
167
+ }
168
+
169
+ #{$loader}__message {
170
+ font: var(--typography-text-l-regular);
171
+ }
172
+ }
173
+
174
+ &.--modal {
175
+ #{$loader}__overlay {
176
+ background: rgba(0, 0, 0, 0.7);
177
+ }
178
+
179
+ #{$loader}__wrapper {
180
+ background: var(--bg-light);
181
+ border-radius: 20px;
182
+ padding: 48px 120px;
183
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
184
+ }
185
+ }
186
+ }
187
+
188
+ @keyframes loader-circle {
189
+ 0% {
190
+ transform: rotate(0deg);
191
+ }
192
+ 100% {
193
+ transform: rotate(360deg);
194
+ }
195
+ }
196
+
197
+ .icon-fade-enter-active,
198
+ .icon-fade-leave-active {
199
+ transition: opacity 0.3s ease;
200
+ }
201
+
202
+ .icon-fade-enter-from,
203
+ .icon-fade-leave-to {
204
+ opacity: 0;
205
+ }
206
+
207
+ .icon-fade-enter-to,
208
+ .icon-fade-leave-from {
209
+ opacity: 1;
210
+ }
211
+ </style>
@@ -0,0 +1,80 @@
1
+ BasePageLoader — это переиспользуемый Vue 3 компонент для отображения индикатора загрузки с опциональным оверлеем, текстом и иконками состояния. Компонент предназначен для показа процесса загрузки и результатов (успех, предупреждение, ошибка) с плавными анимациями.
2
+
3
+ Оверлей: Полупрозрачный фон, покрывающий всё пространство компонента, с возможностью настройки для модального режима.
4
+ Иконки: Показывает анимированную иконку загрузки во время loading: true и иконку состояния (success, warning, error) при loading: false.
5
+ Анимации: Плавное переключение иконок с использованием opacity для избежания "прыжков".
6
+ Сообщение: Опциональный текст, отображаемый под иконкой, с плавным появлением/исчезновением.
7
+ Модальный режим: Поддержка отображения контента в виде модального окна с белым фоном и тенью.
8
+ Размеры: Поддержка трех размеров (small, medium, large) для иконок.
9
+
10
+
11
+ Пропсы
12
+
13
+ size - string - medium
14
+ Размер компонента: small, medium, large. Влияет на размер иконки и текста.
15
+
16
+ loading - boolean - true
17
+ Показывает иконку загрузки, если true, или иконку состояния, если false.
18
+
19
+ iconType - TIconType ( success | error | warning ) - success
20
+ Тип иконки состояния, отображаемой после загрузки.
21
+
22
+ message - string - ''
23
+ Опциональный текст сообщения, отображаемый под иконкой.
24
+
25
+ modal - boolean - false
26
+ Включает модальный режим с белым фоном и тенью для контента.
27
+
28
+
29
+ Использование
30
+ Базовый пример
31
+ <template>
32
+ <div style="width: 100%; height: 400px;">
33
+ <BasePageLoader
34
+ :loading="isLoading"
35
+ iconType="success"
36
+ message="Processing your request..."
37
+ size="large"
38
+ />
39
+ </div>
40
+ </template>
41
+
42
+ <script setup lang="ts">
43
+ import { ref } from 'vue';
44
+ import BasePageLoader from './BasePageLoader.vue';
45
+
46
+ const isLoading = ref(true);
47
+
48
+ // Симуляция завершения загрузки
49
+ setTimeout(() => {
50
+ isLoading.value = false;
51
+ }, 3000);
52
+ </script>
53
+
54
+ Модальный режим
55
+ <template>
56
+ <div style="width: 100%; height: 400px;">
57
+ <BasePageLoader
58
+ :loading="isLoading"
59
+ iconType="error"
60
+ message="An error occurred"
61
+ size="medium"
62
+ :modal="true"
63
+ />
64
+ </div>
65
+ </template>
66
+
67
+ <script setup lang="ts">
68
+ import { ref } from 'vue';
69
+ import BasePageLoader from './BasePageLoader.vue';
70
+
71
+ const isLoading = ref(true);
72
+
73
+ setTimeout(() => {
74
+ isLoading.value = false;
75
+ }, 3000);
76
+ </script>
77
+
78
+
79
+ Модальный режим
80
+ В модальном режиме (modal: true):
@@ -98,6 +98,7 @@ import 'vue-virtual-scroller/dist/vue-virtual-scroller.css';
98
98
  import { DynamicScroller, DynamicScrollerItem } from 'vue-virtual-scroller';
99
99
  import type { ICoreSelectProps, TSelectValue, ICoreSelectBaseProps, ICoreSelectOption, ISelectSlotProps } from '../../types/input';
100
100
  import BaseDropdown from '../BaseDropdown/BaseDropdown.vue';
101
+ import BaseIcon from '../BaseIcon/BaseIcon.vue';
101
102
  import BaseOpenedListItem from '../BaseOpenedListItem/BaseOpenedListItem.vue';
102
103
  import { useKitSize } from '../../composables/kit/size';
103
104
  import { useKitState } from '../../composables/kit/state';
@@ -222,6 +223,10 @@ defineSlots<{
222
223
  border-radius: var(--corner-radius-m);
223
224
  }
224
225
 
226
+ &__header_value {
227
+ color: var(--primary-text-primary);
228
+ }
229
+
225
230
  &__placeholder {
226
231
  @include text-clamp(1);
227
232
 
@@ -257,7 +262,7 @@ defineSlots<{
257
262
 
258
263
  &.--small-size {
259
264
  #{$select} {
260
- &__header_value {
265
+ &__header_value, &__placeholder {
261
266
  font: var(--typography-text-m-regular);
262
267
  }
263
268
 
@@ -280,7 +285,7 @@ defineSlots<{
280
285
 
281
286
  &.--medium-size {
282
287
  #{$select} {
283
- &__header_value {
288
+ &__header_value, &__placeholder {
284
289
  font: var(--typography-text-m-regular);
285
290
  }
286
291
 
@@ -298,7 +303,7 @@ defineSlots<{
298
303
 
299
304
  &.--large-size {
300
305
  #{$select} {
301
- &__header_value {
306
+ &__header_value, &__placeholder {
302
307
  font: var(--typography-text-l-regular);
303
308
  }
304
309