mediacube-ui 0.1.346 → 0.1.347

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 (108) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/0.mediacube-ui.umd.js +50 -0
  3. package/dist/assets/img/icons.3b7d59b2f49c67a2a3a4566b8ab233fd.svg +1 -0
  4. package/dist/assets/img/no_table_data.236cd56f46cfb71fc363b008d4ca70d5.png +0 -0
  5. package/dist/assets/img/no_user.e0030d6e54e2400e1181fd22b83cf8ae.png +0 -0
  6. package/dist/mediacube-ui.umd.js +1 -0
  7. package/package.json +14 -16
  8. package/src/assets/tokens/tokens.json +5 -0
  9. package/dist/mediacube-ui.common.js +0 -378
  10. package/src/elements/McAvatar/McAvatar.vue +0 -274
  11. package/src/elements/McBadge/McBadge.vue +0 -148
  12. package/src/elements/McButton/McButton.vue +0 -841
  13. package/src/elements/McChip/McChip.vue +0 -300
  14. package/src/elements/McCropper/McCropper.vue +0 -133
  15. package/src/elements/McDate/McDate.vue +0 -105
  16. package/src/elements/McDatePicker/McDatePicker.vue +0 -902
  17. package/src/elements/McField/McFieldCheckbox/McFieldCheckbox.vue +0 -332
  18. package/src/elements/McField/McFieldRadio/McFieldRadioButton/McFieldRadioButton.vue +0 -201
  19. package/src/elements/McField/McFieldRadio/McFieldRadioGroup/McFieldRadioGroup.vue +0 -194
  20. package/src/elements/McField/McFieldSelect/McFieldSelect.vue +0 -1087
  21. package/src/elements/McField/McFieldText/McFieldText.vue +0 -969
  22. package/src/elements/McField/McFieldToggle/McFieldToggle.vue +0 -268
  23. package/src/elements/McInfinityLoadingIndicator/McInfinityLoadingIndicator.vue +0 -97
  24. package/src/elements/McNotification/McNotification.vue +0 -209
  25. package/src/elements/McProgress/McProgress.vue +0 -218
  26. package/src/elements/McRangeSlider/McRangeSlider.vue +0 -195
  27. package/src/elements/McSeparator/McSeparator.vue +0 -143
  28. package/src/elements/McSlideUpDown/McSlideUpDown.vue +0 -157
  29. package/src/elements/McSvgIcon/McSvgIcon.vue +0 -127
  30. package/src/elements/McTabs/McTab/McTab.vue +0 -187
  31. package/src/elements/McTabs/McTabs/McTabs.vue +0 -531
  32. package/src/elements/McTitle/McTitle.vue +0 -365
  33. package/src/elements/McTooltip/McTooltip.vue +0 -334
  34. package/src/helpers/consts.js +0 -3
  35. package/src/helpers/delayedAction.js +0 -26
  36. package/src/helpers/storybookFunctions.js +0 -20
  37. package/src/helpers/storybookVariables.js +0 -24
  38. package/src/mixins/equalFieldHeight.js +0 -59
  39. package/src/mixins/fieldErrors.js +0 -28
  40. package/src/patterns/McAccordion/McAccordion.vue +0 -53
  41. package/src/patterns/McCells/McCell/McCell.vue +0 -101
  42. package/src/patterns/McChat/McChat.vue +0 -305
  43. package/src/patterns/McChat/McChatComment/McChatComment.vue +0 -265
  44. package/src/patterns/McChat/McChatForm/McChatForm.vue +0 -147
  45. package/src/patterns/McCollapse/McCollapse.vue +0 -280
  46. package/src/patterns/McDrawer/McDrawer.vue +0 -146
  47. package/src/patterns/McDropdown/McDropdown.vue +0 -247
  48. package/src/patterns/McDropdown/McDropdownPanel/McDropdownPanel.vue +0 -40
  49. package/src/patterns/McFakeScroll/McFakeScroll.vue +0 -277
  50. package/src/patterns/McFilter/McFilter.vue +0 -847
  51. package/src/patterns/McFilter/McFilterChip/McFilterChip.vue +0 -83
  52. package/src/patterns/McFilter/McFilterTags/McFilterTags.vue +0 -374
  53. package/src/patterns/McFilter/McFilterTypeDate/McFilterTypeDate.vue +0 -70
  54. package/src/patterns/McFilter/McFilterTypeRange/McFilterTypeRange.vue +0 -132
  55. package/src/patterns/McFilter/McFilterTypeRelation/McFilterTypeRelation.vue +0 -221
  56. package/src/patterns/McFilter/McFilterTypeSimple/McFilterTypeSimple.vue +0 -161
  57. package/src/patterns/McFilter/McFilterTypeText/McFilterTypeText.vue +0 -62
  58. package/src/patterns/McGrid/McGridCol/McGridCol.vue +0 -165
  59. package/src/patterns/McGrid/McGridRow/McGridRow.vue +0 -158
  60. package/src/patterns/McModal/McModal.vue +0 -680
  61. package/src/patterns/McOverlay/McOverlay.vue +0 -78
  62. package/src/patterns/McPreview/McPreview.vue +0 -118
  63. package/src/patterns/McSideBar/McSideBar/McSideBar.vue +0 -387
  64. package/src/patterns/McSideBar/McSideBarBottom/McSideBarBottom.vue +0 -125
  65. package/src/patterns/McSideBar/McSideBarButton/McSideBarButton.vue +0 -252
  66. package/src/patterns/McSideBar/McSideBarCenter/McSideBarCenter.vue +0 -367
  67. package/src/patterns/McSideBar/McSideBarTop/McSideBarTop.vue +0 -238
  68. package/src/patterns/McStack/McStack.vue +0 -158
  69. package/src/patterns/McTable/McTable/McTable.vue +0 -854
  70. package/src/patterns/McTable/McTableCol/McTableCol.vue +0 -296
  71. package/src/patterns/McTableCard/McTableCard.vue +0 -135
  72. package/src/patterns/McTableCard/McTableCardHeader/McTableCardHeader.vue +0 -74
  73. package/src/patterns/McTopBar/McTopBar.vue +0 -153
  74. package/src/patterns/McWrapScroll/McWrapScroll.vue +0 -291
  75. package/src/styles/_functions.scss +0 -187
  76. package/src/styles/_mixins.scss +0 -612
  77. package/src/styles/_spacing.scss +0 -33
  78. package/src/styles/_variables.scss +0 -23
  79. package/src/styles/global.scss +0 -308
  80. package/src/styles/main.scss +0 -4
  81. package/src/styles/table.scss +0 -10
  82. package/src/styles/toast.scss +0 -55
  83. package/src/templates/layouts/McContentFixed/McContentFixed.vue +0 -60
  84. package/src/templates/layouts/McMain/McMain.vue +0 -115
  85. package/src/templates/layouts/McRoot/McRoot.vue +0 -45
  86. package/src/tokens/animations.scss +0 -9
  87. package/src/tokens/border-radius.scss +0 -26
  88. package/src/tokens/box-shadows.scss +0 -28
  89. package/src/tokens/colors.scss +0 -82
  90. package/src/tokens/durations.scss +0 -7
  91. package/src/tokens/easings.scss +0 -6
  92. package/src/tokens/font-families.scss +0 -8
  93. package/src/tokens/font-sizes.scss +0 -23
  94. package/src/tokens/font-weights.scss +0 -9
  95. package/src/tokens/gradients.scss +0 -19
  96. package/src/tokens/letter-spacings.scss +0 -6
  97. package/src/tokens/line-heights.scss +0 -22
  98. package/src/tokens/media-queries.scss +0 -32
  99. package/src/tokens/opacities.scss +0 -8
  100. package/src/tokens/sizes.scss +0 -47
  101. package/src/tokens/spacings.scss +0 -38
  102. package/src/tokens/z-indexes.scss +0 -14
  103. package/src/utils/dayjs.js +0 -19
  104. package/src/utils/filters.js +0 -11
  105. package/src/utils/getTokens.js +0 -41
  106. package/src/utils/load-icons.js +0 -3
  107. package/src/utils/treeSearch.js +0 -30
  108. package/src/utils/webFontLoader.js +0 -12
@@ -1,78 +0,0 @@
1
- <template>
2
- <section ref="overlay" class="mc-overlay" :style="styles">
3
- <div class="mc-overlay__background" />
4
- <section class="mc-overlay__spinner" />
5
- </section>
6
- </template>
7
-
8
- <script>
9
- export default {
10
- name: 'McOverlaySecond',
11
- props: {
12
- size: {
13
- type: [String, Number],
14
- default: 500,
15
- },
16
- backgroundColor: {
17
- type: String,
18
- default: 'white',
19
- },
20
- },
21
- computed: {
22
- styles() {
23
- return {
24
- '--mc-overlay-color': this.backgroundColor && `var(--color-${this.backgroundColor})`,
25
- '--mc-overlay-spinner-size': this.size && `var(--size-${this.size})`,
26
- }
27
- },
28
- },
29
- }
30
- </script>
31
-
32
- <style lang="scss">
33
- @import '../../tokens/z-indexes';
34
- .mc-overlay {
35
- $block-name: &;
36
- --mc-overlay-spinner-size: initial;
37
- --mc-overlay-color: initial;
38
- position: absolute;
39
- top: 0;
40
- inset-inline-start: 0;
41
- width: 100%;
42
- height: 100%;
43
- display: flex;
44
- align-items: center;
45
- justify-content: center;
46
- z-index: $z-index-overlay-page;
47
- &__background {
48
- position: absolute;
49
- left: 0;
50
- right: 0;
51
- width: 100%;
52
- height: 100%;
53
- background-color: var(--mc-overlay-color);
54
- opacity: 0.85;
55
- }
56
- &__spinner {
57
- display: block;
58
- border: 2px solid $color-purple;
59
- border-inline-start-color: transparent;
60
- border-radius: 50%;
61
- animation: rotate 1.5s infinite linear;
62
-
63
- width: var(--mc-overlay-spinner-size);
64
- min-width: var(--mc-overlay-spinner-size);
65
- height: var(--mc-overlay-spinner-size);
66
- min-height: var(--mc-overlay-spinner-size);
67
-
68
- @keyframes rotate {
69
- from {
70
- transform: rotate(0deg);
71
- }
72
- to {
73
- transform: rotate(360deg);
74
- }
75
- }
76
- }
77
- }
78
- </style>
@@ -1,118 +0,0 @@
1
- <template>
2
- <section :class="classes">
3
- <div v-if="$slots.left" class="mc-preview__left">
4
- <!-- @slot Слот слева -->
5
- <slot name="left" />
6
- </div>
7
- <div class="mc-preview__center">
8
- <div class="mc-preview__top">
9
- <!-- @slot Слот сверху -->
10
- <slot name="top" />
11
- </div>
12
- <div class="mc-preview__bottom">
13
- <!-- @slot Слот внизу -->
14
- <slot name="bottom" />
15
- </div>
16
- </div>
17
- <div v-if="$slots.right" class="mc-preview__right">
18
- <!-- @slot Слот справа -->
19
- <slot name="right" />
20
- </div>
21
- </section>
22
- </template>
23
-
24
- <script>
25
- export default {
26
- name: 'McPreview',
27
- props: {
28
- /**
29
- * Размеры:
30
- * `s, m, l`
31
- */
32
- size: {
33
- type: String,
34
- default: 'm',
35
- },
36
- },
37
- computed: {
38
- classes() {
39
- return {
40
- 'mc-preview': true,
41
- [`mc-preview--size-${this.size}`]: this.size,
42
- }
43
- },
44
- },
45
- }
46
- </script>
47
-
48
- <style lang="scss">
49
- @import '../../styles/mixins';
50
- .mc-preview {
51
- $block-name: &;
52
-
53
- @include reset-text-indents();
54
- display: flex;
55
- flex-wrap: nowrap;
56
- max-width: 100%;
57
-
58
- &__left {
59
- flex: 0 0 auto;
60
- &:empty {
61
- display: none;
62
- }
63
- }
64
-
65
- &__center {
66
- @include layout-flex-fix();
67
- flex: 1 1 auto;
68
- align-self: center;
69
- }
70
-
71
- &__top {
72
- &:empty {
73
- display: none;
74
- }
75
- }
76
-
77
- &__bottom {
78
- &:empty {
79
- display: none;
80
- }
81
- }
82
-
83
- &__right {
84
- flex: 0 0 auto;
85
- &:empty {
86
- display: none;
87
- }
88
- }
89
- @mixin previewIndents($indent, $bottom: '') {
90
- #{$block-name}__left {
91
- margin-inline-end: $indent;
92
- }
93
- #{$block-name}__right {
94
- margin-inline-start: $indent;
95
- }
96
- @if $bottom {
97
- #{$block-name}__bottom {
98
- margin-top: $bottom;
99
- }
100
- }
101
- }
102
-
103
- &--size {
104
- &-s {
105
- @include previewIndents($space-50);
106
- }
107
- &-m {
108
- @include previewIndents($space-100);
109
- }
110
- &-l {
111
- @include previewIndents($space-150, $space-50);
112
- }
113
- &-xl {
114
- @include previewIndents($space-200, $space-50);
115
- }
116
- }
117
- }
118
- </style>
@@ -1,387 +0,0 @@
1
- <template>
2
- <article ref="sidebar-wrapper" class="mc-side-bar-wrapper" :style="wrapperStyles">
3
- <section class="mc-side-bar-wrapper__backdrop" :class="backdropClasses" @click.stop.prevent="handleToggleSize">
4
- <div ref="sidebar" class="mc-side-bar" :class="sideBarClasses" :style="sideBarStyles" @click.stop>
5
- <mc-side-bar-top
6
- :logo-title="logoTitle"
7
- :logo-title-variation="logoTitleVariation"
8
- :logo-src="logoSrc"
9
- :logo-icon="logoIcon"
10
- :compact="prettyCompact"
11
- :menu-apps="menuApps"
12
- >
13
- <slot slot="title-append" name="title-append" />
14
- </mc-side-bar-top>
15
- <section class="mc-side-bar__scrollable-container">
16
- <mc-side-bar-center
17
- :title="menuMainTitle"
18
- :menu-main="menuMain"
19
- :counts="counts"
20
- :chatra-config="chatraConfig"
21
- :user="user"
22
- :compact="prettyCompact"
23
- @handlerChatraClick="$emit('chatraClick')"
24
- @open-side-bar="openSideBar"
25
- />
26
- <mc-side-bar-bottom
27
- :hide-text="hideText"
28
- :compact="prettyCompact"
29
- :hidden-mode="hiddenMode"
30
- :sidebar-width="width"
31
- @toggle-size="handleToggleSize"
32
- >
33
- <slot slot="bottom-message" name="bottom-message" />
34
- </mc-side-bar-bottom>
35
- </section>
36
- </div>
37
- </section>
38
- </article>
39
- </template>
40
-
41
- <script>
42
- import McSideBarTop from '../McSideBarTop/McSideBarTop'
43
- import McSideBarCenter from '../McSideBarCenter/McSideBarCenter'
44
- import McSideBarBottom from '../McSideBarBottom/McSideBarBottom'
45
- export default {
46
- name: 'McSideBar',
47
- components: {
48
- McSideBarTop,
49
- McSideBarCenter,
50
- McSideBarBottom,
51
- },
52
- provide() {
53
- const provideData = {}
54
- const properties = ['currentThemeConfig']
55
- properties.forEach(property => {
56
- Object.defineProperty(provideData, property, {
57
- enumerable: true,
58
- get: () => this[property],
59
- })
60
- })
61
- return { provideData }
62
- },
63
- props: {
64
- /**
65
- * Название сервиса
66
- *
67
- */
68
- logoTitle: {
69
- type: String,
70
- default: 'Dashboard',
71
- },
72
- /**
73
- * Размер текста названия сервиса
74
- *
75
- */
76
- logoTitleVariation: {
77
- type: String,
78
- default: 'subtitle',
79
- },
80
- /**
81
- * Путь до изображения
82
- *
83
- */
84
- logoSrc: {
85
- type: String,
86
- default: '',
87
- },
88
- /**
89
- * Имя иконки
90
- * заголовка
91
- */
92
- logoIcon: {
93
- type: String,
94
- default: '',
95
- },
96
- /**
97
- * Заголовок
98
- * центрального блока
99
- */
100
- menuMainTitle: {
101
- type: String,
102
- default: '',
103
- },
104
- /**
105
- * Центральное меню
106
- *
107
- */
108
- menuMain: {
109
- type: Array,
110
- default: () => [],
111
- },
112
- /**
113
- * Каунты для пунктов меню
114
- * вставляются в пункты с ключем 'count_key'
115
- *
116
- */
117
- counts: {
118
- type: Object,
119
- default: () => ({}),
120
- },
121
- /**
122
- * Меню приложений
123
- *
124
- */
125
- menuApps: {
126
- type: Array,
127
- default: () => [],
128
- },
129
- /**
130
- * Id чатры
131
- *
132
- */
133
- chatraConfig: {
134
- type: Object,
135
- default: null,
136
- },
137
- /**
138
- * Данные пользователя
139
- *
140
- */
141
- user: {
142
- type: Object,
143
- default: null,
144
- },
145
- /**
146
- * Текст кнопки
147
- * сворачивания меню
148
- */
149
- hideText: {
150
- type: String,
151
- default: '',
152
- },
153
- /**
154
- * Компактный вид
155
- */
156
- compact: {
157
- type: Boolean,
158
- default: false,
159
- },
160
- /**
161
- * Цветовая схема
162
- */
163
- variable: {
164
- type: String,
165
- default: 'black',
166
- },
167
- /**
168
- * Ширина сайдбара
169
- */
170
- width: {
171
- type: String,
172
- default: '216px',
173
- },
174
- /**
175
- * Ширина компактного сайдбара
176
- */
177
- compactWidth: {
178
- type: String,
179
- default: '58px',
180
- },
181
- /**
182
- * Брейкпоинт после которого
183
- * сайдбар становится абсолютным и появляется затемненный бэкдроп
184
- */
185
- absoluteBreakpoint: {
186
- type: Number,
187
- default: null,
188
- },
189
- /**
190
- * Брейкпоинт после которого
191
- * сайдбар полностью прячется
192
- */
193
- hiddenBreakpoint: {
194
- type: Number,
195
- default: null,
196
- },
197
- },
198
- data() {
199
- return {
200
- isHidden: false,
201
- prettyCompact: this.compact,
202
- hasCompactClass: this.compact,
203
- windowWidth: null,
204
- }
205
- },
206
- computed: {
207
- sideBarClasses() {
208
- return {
209
- 'mc-side-bar--compact': this.hasCompactClass,
210
- [this.currentThemeConfig.className]: true,
211
- }
212
- },
213
- sideBarStyles() {
214
- return {
215
- overflow: `${this.isHidden ? 'hidden' : 'visible'}`,
216
- width: this.hasCompactClass ? this.compactWidth : this.width,
217
- }
218
- },
219
- wrapperStyles() {
220
- const position =
221
- this.hiddenMode && this.hasCompactClass
222
- ? {
223
- position: 'absolute',
224
- left: `-${this.compactWidth}`,
225
- }
226
- : {}
227
-
228
- let width = {
229
- width: this.hasCompactClass ? this.compactWidth : this.width,
230
- }
231
- if (this.absoluteMode) {
232
- width.width = this.compactWidth
233
- }
234
- if (this.hiddenMode) {
235
- width.width = '0px'
236
- }
237
- return {
238
- ...width,
239
- ...position,
240
- }
241
- },
242
- backdropClasses() {
243
- return {
244
- 'mc-side-bar-wrapper__backdrop--full-width':
245
- !this.hasCompactClass && this.windowWidth < this.absoluteBreakpoint,
246
- }
247
- },
248
- absoluteMode() {
249
- return this.absoluteBreakpoint && this.windowWidth < this.absoluteBreakpoint
250
- },
251
- hiddenMode() {
252
- return this.hiddenBreakpoint && this.windowWidth < this.hiddenBreakpoint
253
- },
254
- currentThemeConfig() {
255
- return this.sidebarThemeConfig[this.variable] || this.sidebarThemeConfig['black']
256
- },
257
- sidebarThemeConfig() {
258
- return {
259
- black: {
260
- mode: 'black',
261
- className: 'mc-side-bar--color-theme-black',
262
- dropdownActivator: 'white',
263
- mainMenuLinks: {
264
- variable: 'gray-flat',
265
- secondaryColor: 'white',
266
- },
267
- closeButton: {
268
- variable: 'gray-link',
269
- secondaryColor: 'white',
270
- },
271
- },
272
- white: {
273
- mode: 'white',
274
- className: 'mc-side-bar--color-theme-white',
275
- dropdownActivator: 'black',
276
- mainMenuLinks: {
277
- variable: 'black-flat',
278
- secondaryColor: 'purple',
279
- },
280
- closeButton: {
281
- variable: 'black-link',
282
- secondaryColor: 'purple',
283
- },
284
- },
285
- }
286
- },
287
- },
288
- watch: {
289
- hasCompactClass(newValue) {
290
- if (newValue) {
291
- setTimeout(() => {
292
- this.prettyCompact = newValue
293
- }, 280)
294
- } else {
295
- this.prettyCompact = newValue
296
- }
297
- this.isHidden = true
298
- setTimeout(() => {
299
- this.isHidden = false
300
- }, 280)
301
- },
302
- compact(newValue) {
303
- this.hasCompactClass = newValue
304
- },
305
- absoluteMode: {
306
- immediate: true,
307
- handler(val) {
308
- this.$emit('absolute-mode', val)
309
- },
310
- },
311
- hiddenMode: {
312
- immediate: true,
313
- handler(val) {
314
- this.$emit('hidden-mode', val)
315
- },
316
- },
317
- },
318
- mounted() {
319
- if (this.absoluteBreakpoint || (this.hiddenBreakpoint && window)) {
320
- this.resize()
321
- window.addEventListener('resize', this.resize)
322
- }
323
- },
324
- beforeDestroy() {
325
- window.removeEventListener('resize', this.resize)
326
- },
327
- methods: {
328
- handleToggleSize() {
329
- this.hasCompactClass = !this.hasCompactClass
330
- this.$emit('compact', this.hasCompactClass)
331
- },
332
- openSideBar() {
333
- this.hasCompactClass = false
334
- this.$emit('compact', this.hasCompactClass)
335
- },
336
- resize() {
337
- this.windowWidth = window.innerWidth
338
- },
339
- },
340
- }
341
- </script>
342
-
343
- <style lang="scss">
344
- @import '../../../styles/mixins';
345
- .mc-side-bar {
346
- $block-name: &;
347
-
348
- display: flex;
349
- flex-direction: column;
350
- padding: $space-250 $space-100 $space-400;
351
- transition: width 300ms ease;
352
- overflow-x: hidden;
353
- overflow-y: auto;
354
- @include child-indent-bottom($space-400);
355
- &--color-theme-black {
356
- background-color: $color-black;
357
- }
358
- &--color-theme-white {
359
- background-color: $color-white;
360
- border-inline-end: 1px solid $color-hover-gray;
361
- }
362
- &__scrollable-container {
363
- @include hide-scrollbar;
364
- overflow-y: auto;
365
- overflow-x: hidden;
366
- height: 100%;
367
- display: flex;
368
- flex-direction: column;
369
- }
370
- &-wrapper {
371
- height: 100%;
372
- transition: width 300ms ease;
373
- &__backdrop {
374
- position: absolute;
375
- background-color: rgba($color-black, 0.6);
376
- z-index: 25;
377
- height: inherit;
378
- .mc-side-bar {
379
- height: inherit;
380
- }
381
- &--full-width {
382
- width: 100%;
383
- }
384
- }
385
- }
386
- }
387
- </style>
@@ -1,125 +0,0 @@
1
- <template>
2
- <div class="mc-side-bar-bottom" :class="classes">
3
- <div
4
- v-if="!compact && $slots['bottom-message']"
5
- class="mc-side-bar-bottom__slot-message"
6
- :style="messageStyles"
7
- >
8
- <slot name="bottom-message" />
9
- </div>
10
- <mc-side-bar-button
11
- v-if="!hiddenMode"
12
- class="mc-side-bar-bottom__hide-button"
13
- icon="arrow_backward"
14
- :title="hideText"
15
- :compact="compact"
16
- :variation="closeButtonProps.variable"
17
- :secondary-color="closeButtonProps.secondaryColor"
18
- @click="handleClick"
19
- />
20
- </div>
21
- </template>
22
-
23
- <script>
24
- import McSideBarButton from '../McSideBarButton/McSideBarButton'
25
- export default {
26
- name: 'McSideBarBottom',
27
- components: {
28
- McSideBarButton,
29
- },
30
- inject: ['provideData'],
31
- props: {
32
- /**
33
- * Текст кнопки
34
- * сворачивания меню
35
- */
36
- hideText: {
37
- type: String,
38
- default: '',
39
- },
40
- /**
41
- * Компактный вид
42
- */
43
- compact: {
44
- type: Boolean,
45
- default: false,
46
- },
47
- hiddenMode: {
48
- type: Boolean,
49
- default: false,
50
- },
51
- sidebarWidth: {
52
- type: String,
53
- default: null,
54
- },
55
- },
56
- data() {
57
- return {
58
- hasCompactClass: this.compact,
59
- }
60
- },
61
- computed: {
62
- closeButtonProps() {
63
- return this.provideData?.currentThemeConfig?.closeButton || {}
64
- },
65
- classes() {
66
- return {
67
- 'mc-side-bar-bottom--compact': this.hasCompactClass,
68
- }
69
- },
70
- messageStyles() {
71
- return {
72
- minWidth: this.sidebarWidth,
73
- }
74
- },
75
- },
76
- watch: {
77
- compact(newValue) {
78
- this.hasCompactClass = newValue
79
- },
80
- },
81
- methods: {
82
- handleClick() {
83
- if (this.hasCompactClass !== this.compact) return
84
- this.$emit('toggle-size', !this.compact)
85
- this.hasCompactClass = !this.hasCompactClass
86
- },
87
- },
88
- }
89
- </script>
90
-
91
- <style lang="scss">
92
- @import '../../../tokens/durations';
93
- .mc-side-bar-bottom {
94
- $block-name: &;
95
-
96
- display: flex;
97
- flex-direction: column;
98
- flex: 1 1 auto;
99
- justify-content: flex-end;
100
- min-height: max-content;
101
-
102
- &__hide-button {
103
- .mc-side-bar-button__icon {
104
- transition: transform $duration-s;
105
- }
106
- }
107
-
108
- &--compact {
109
- #{$block-name}__hide-button {
110
- .mc-side-bar-button__icon {
111
- transform: rotate(180deg);
112
- }
113
- }
114
- }
115
- &__slot-message {
116
- margin-inline-start: -$space-100;
117
- margin-inline-end: -$space-100;
118
- padding-inline-start: $space-100;
119
- padding-inline-end: $space-100;
120
- & + * {
121
- margin-top: $space-500;
122
- }
123
- }
124
- }
125
- </style>