mediacube-ui 0.1.345 → 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 (109) hide show
  1. package/CHANGELOG.md +4 -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/icons.svg +1 -1
  9. package/src/assets/tokens/tokens.json +5 -0
  10. package/dist/mediacube-ui.common.js +0 -378
  11. package/src/elements/McAvatar/McAvatar.vue +0 -274
  12. package/src/elements/McBadge/McBadge.vue +0 -148
  13. package/src/elements/McButton/McButton.vue +0 -841
  14. package/src/elements/McChip/McChip.vue +0 -300
  15. package/src/elements/McCropper/McCropper.vue +0 -133
  16. package/src/elements/McDate/McDate.vue +0 -105
  17. package/src/elements/McDatePicker/McDatePicker.vue +0 -902
  18. package/src/elements/McField/McFieldCheckbox/McFieldCheckbox.vue +0 -332
  19. package/src/elements/McField/McFieldRadio/McFieldRadioButton/McFieldRadioButton.vue +0 -201
  20. package/src/elements/McField/McFieldRadio/McFieldRadioGroup/McFieldRadioGroup.vue +0 -194
  21. package/src/elements/McField/McFieldSelect/McFieldSelect.vue +0 -1087
  22. package/src/elements/McField/McFieldText/McFieldText.vue +0 -969
  23. package/src/elements/McField/McFieldToggle/McFieldToggle.vue +0 -268
  24. package/src/elements/McInfinityLoadingIndicator/McInfinityLoadingIndicator.vue +0 -97
  25. package/src/elements/McNotification/McNotification.vue +0 -209
  26. package/src/elements/McProgress/McProgress.vue +0 -218
  27. package/src/elements/McRangeSlider/McRangeSlider.vue +0 -195
  28. package/src/elements/McSeparator/McSeparator.vue +0 -143
  29. package/src/elements/McSlideUpDown/McSlideUpDown.vue +0 -157
  30. package/src/elements/McSvgIcon/McSvgIcon.vue +0 -127
  31. package/src/elements/McTabs/McTab/McTab.vue +0 -187
  32. package/src/elements/McTabs/McTabs/McTabs.vue +0 -531
  33. package/src/elements/McTitle/McTitle.vue +0 -365
  34. package/src/elements/McTooltip/McTooltip.vue +0 -334
  35. package/src/helpers/consts.js +0 -3
  36. package/src/helpers/delayedAction.js +0 -26
  37. package/src/helpers/storybookFunctions.js +0 -20
  38. package/src/helpers/storybookVariables.js +0 -24
  39. package/src/mixins/equalFieldHeight.js +0 -59
  40. package/src/mixins/fieldErrors.js +0 -28
  41. package/src/patterns/McAccordion/McAccordion.vue +0 -53
  42. package/src/patterns/McCells/McCell/McCell.vue +0 -101
  43. package/src/patterns/McChat/McChat.vue +0 -305
  44. package/src/patterns/McChat/McChatComment/McChatComment.vue +0 -265
  45. package/src/patterns/McChat/McChatForm/McChatForm.vue +0 -147
  46. package/src/patterns/McCollapse/McCollapse.vue +0 -280
  47. package/src/patterns/McDrawer/McDrawer.vue +0 -146
  48. package/src/patterns/McDropdown/McDropdown.vue +0 -247
  49. package/src/patterns/McDropdown/McDropdownPanel/McDropdownPanel.vue +0 -40
  50. package/src/patterns/McFakeScroll/McFakeScroll.vue +0 -277
  51. package/src/patterns/McFilter/McFilter.vue +0 -847
  52. package/src/patterns/McFilter/McFilterChip/McFilterChip.vue +0 -83
  53. package/src/patterns/McFilter/McFilterTags/McFilterTags.vue +0 -374
  54. package/src/patterns/McFilter/McFilterTypeDate/McFilterTypeDate.vue +0 -70
  55. package/src/patterns/McFilter/McFilterTypeRange/McFilterTypeRange.vue +0 -132
  56. package/src/patterns/McFilter/McFilterTypeRelation/McFilterTypeRelation.vue +0 -221
  57. package/src/patterns/McFilter/McFilterTypeSimple/McFilterTypeSimple.vue +0 -161
  58. package/src/patterns/McFilter/McFilterTypeText/McFilterTypeText.vue +0 -62
  59. package/src/patterns/McGrid/McGridCol/McGridCol.vue +0 -165
  60. package/src/patterns/McGrid/McGridRow/McGridRow.vue +0 -158
  61. package/src/patterns/McModal/McModal.vue +0 -680
  62. package/src/patterns/McOverlay/McOverlay.vue +0 -78
  63. package/src/patterns/McPreview/McPreview.vue +0 -118
  64. package/src/patterns/McSideBar/McSideBar/McSideBar.vue +0 -387
  65. package/src/patterns/McSideBar/McSideBarBottom/McSideBarBottom.vue +0 -125
  66. package/src/patterns/McSideBar/McSideBarButton/McSideBarButton.vue +0 -252
  67. package/src/patterns/McSideBar/McSideBarCenter/McSideBarCenter.vue +0 -367
  68. package/src/patterns/McSideBar/McSideBarTop/McSideBarTop.vue +0 -238
  69. package/src/patterns/McStack/McStack.vue +0 -158
  70. package/src/patterns/McTable/McTable/McTable.vue +0 -854
  71. package/src/patterns/McTable/McTableCol/McTableCol.vue +0 -296
  72. package/src/patterns/McTableCard/McTableCard.vue +0 -135
  73. package/src/patterns/McTableCard/McTableCardHeader/McTableCardHeader.vue +0 -74
  74. package/src/patterns/McTopBar/McTopBar.vue +0 -153
  75. package/src/patterns/McWrapScroll/McWrapScroll.vue +0 -291
  76. package/src/styles/_functions.scss +0 -187
  77. package/src/styles/_mixins.scss +0 -612
  78. package/src/styles/_spacing.scss +0 -33
  79. package/src/styles/_variables.scss +0 -23
  80. package/src/styles/global.scss +0 -308
  81. package/src/styles/main.scss +0 -4
  82. package/src/styles/table.scss +0 -10
  83. package/src/styles/toast.scss +0 -55
  84. package/src/templates/layouts/McContentFixed/McContentFixed.vue +0 -60
  85. package/src/templates/layouts/McMain/McMain.vue +0 -115
  86. package/src/templates/layouts/McRoot/McRoot.vue +0 -45
  87. package/src/tokens/animations.scss +0 -9
  88. package/src/tokens/border-radius.scss +0 -26
  89. package/src/tokens/box-shadows.scss +0 -28
  90. package/src/tokens/colors.scss +0 -82
  91. package/src/tokens/durations.scss +0 -7
  92. package/src/tokens/easings.scss +0 -6
  93. package/src/tokens/font-families.scss +0 -8
  94. package/src/tokens/font-sizes.scss +0 -23
  95. package/src/tokens/font-weights.scss +0 -9
  96. package/src/tokens/gradients.scss +0 -18
  97. package/src/tokens/letter-spacings.scss +0 -6
  98. package/src/tokens/line-heights.scss +0 -22
  99. package/src/tokens/media-queries.scss +0 -32
  100. package/src/tokens/opacities.scss +0 -8
  101. package/src/tokens/sizes.scss +0 -47
  102. package/src/tokens/spacings.scss +0 -38
  103. package/src/tokens/z-indexes.scss +0 -14
  104. package/src/utils/dayjs.js +0 -19
  105. package/src/utils/filters.js +0 -11
  106. package/src/utils/getTokens.js +0 -41
  107. package/src/utils/load-icons.js +0 -3
  108. package/src/utils/treeSearch.js +0 -30
  109. package/src/utils/webFontLoader.js +0 -12
@@ -1,531 +0,0 @@
1
- <template>
2
- <div :class="classes" :style="styles">
3
- <div class="tabs-component">
4
- <mc-wrap-scroll tag-name="ul" role="tablist" scrollable class="tabs-component-tabs">
5
- <li
6
- v-for="(tab, i) in tabs"
7
- v-show="tab.isVisible"
8
- :key="i"
9
- :class="{ 'is-active': tab.isActive, 'is-disabled': tab.isDisabled }"
10
- class="tabs-component-tab"
11
- role="presentation"
12
- >
13
- <a
14
- :aria-controls="tab.hash"
15
- :aria-selected="tab.isActive"
16
- :href="tab.to || tab.href || tab.hash"
17
- class="tabs-component-tab-a"
18
- role="tab"
19
- @click="selectTab(tab.hash, $event)"
20
- v-html="tab.header"
21
- ></a>
22
- </li>
23
- </mc-wrap-scroll>
24
- <div class="tabs-component-panels">
25
- <slot />
26
- </div>
27
- </div>
28
- </div>
29
- </template>
30
-
31
- <script>
32
- import McWrapScroll from '../../../patterns/McWrapScroll/McWrapScroll'
33
- class ExpiringStorage {
34
- get(key) {
35
- const cached = JSON.parse(localStorage.getItem(key))
36
-
37
- if (!cached) return null
38
-
39
- const expires = new Date(cached.expires)
40
-
41
- if (expires < new Date()) {
42
- localStorage.removeItem(key)
43
- return null
44
- }
45
-
46
- return cached.value
47
- }
48
-
49
- set(key, value, lifeTimeInMinutes) {
50
- const currentTime = new Date().getTime()
51
- const expires = new Date(currentTime + lifeTimeInMinutes * 60000)
52
- localStorage.setItem(key, JSON.stringify({ value, expires }))
53
- }
54
- }
55
-
56
- const expiringStorage = new ExpiringStorage()
57
-
58
- export default {
59
- name: 'McTabs',
60
- components: {
61
- McWrapScroll,
62
- },
63
- props: {
64
- value: {
65
- type: String,
66
- },
67
- /**
68
- * Количество минут, когда
69
- * будет храниться в памяти
70
- * последний посещённый таб
71
- */
72
- cacheLifetime: {
73
- type: Number,
74
- default: 0,
75
- },
76
- useUrlFragment: {
77
- default: false,
78
- },
79
- defaultTabHash: {
80
- default: null,
81
- },
82
- /**
83
- * Размеры табов:
84
- * `body, caption, overline`
85
- */
86
- tabVariation: {
87
- type: String,
88
- default: 'caption',
89
- },
90
- /**
91
- * Цвет текста табов
92
- */
93
- color: {
94
- type: String,
95
- default: 'black',
96
- },
97
- /**
98
- * Цвет линии активного таба
99
- */
100
- accentColor: {
101
- type: String,
102
- default: 'purple',
103
- },
104
- /**
105
- * Заглавные буквы
106
- * табов
107
- */
108
- uppercase: {
109
- type: Boolean,
110
- default: false,
111
- },
112
- /**
113
- * Передаваемое состояние загрузки
114
- *
115
- * Нужно для метода switchingDisableTab
116
- * в случае, если состояние табов (active/disable)
117
- * задается динамически
118
- */
119
- loading: {
120
- type: Boolean,
121
- default: false,
122
- },
123
- /**
124
- * Закрепленные табы
125
- *
126
- * Добавляет верхнее расстояние
127
- * для табов для правильного отображения
128
- */
129
- sticky: {
130
- type: Boolean,
131
- default: false,
132
- },
133
- },
134
- data: () => ({
135
- children: [],
136
- activeTabHash: '',
137
- activeTabIndex: 0,
138
- lastActiveTabHash: '',
139
- }),
140
- computed: {
141
- classes() {
142
- return {
143
- 'mc-tabs': true,
144
- [`mc-tabs--tab-variation-${this.tabVariation}`]: this.tabVariation,
145
- [`mc-tabs--uppercase`]: this.uppercase,
146
- [`mc-tabs--sticky`]: this.sticky,
147
- }
148
- },
149
- styles() {
150
- return {
151
- ['--mc-tabs-color']: `var(--color-${this.color})`,
152
- ['--mc-tabs-accent-color']: `var(--color-${this.accentColor})`,
153
- }
154
- },
155
- activeTab: {
156
- get() {
157
- return this.value
158
- },
159
- set(value) {
160
- this.$emit('input', value)
161
- },
162
- },
163
- storageKey() {
164
- return `vue-tabs-component.cache.${window.location.host}${window.location.pathname}`
165
- },
166
- tabs() {
167
- return this.children.filter(tab => tab.$options.name === 'McTab')
168
- },
169
- visibleTabs() {
170
- return this.tabs.filter(tab => tab.visible)
171
- },
172
- },
173
- watch: {
174
- loading(val, oldVal) {
175
- if (!val && oldVal)
176
- this.$nextTick(() => {
177
- this.checkInitTab()
178
- })
179
- },
180
- activeTab(val, oldVal) {
181
- if (val !== oldVal)
182
- this.$nextTick(() => {
183
- this.checkInitTab()
184
- })
185
- },
186
- },
187
- created() {
188
- this.children = this.$children
189
- },
190
- mounted() {
191
- this.options = {
192
- useUrlFragment: this.useUrlFragment,
193
- defaultTabHash: this.defaultTabHash,
194
- }
195
- this.checkInitTab()
196
-
197
- window.addEventListener('hashchange', () => this.selectTab(window.location.hash))
198
-
199
- if (this.findTab(window.location.hash)) {
200
- this.selectTab(window.location.hash)
201
- return
202
- }
203
-
204
- const previousSelectedTabHash = expiringStorage.get(this.storageKey)
205
-
206
- if (this.findTab(previousSelectedTabHash)) {
207
- this.selectTab(previousSelectedTabHash)
208
- return
209
- }
210
-
211
- if (this.options.defaultTabHash !== null && this.findTab('#' + this.options.defaultTabHash)) {
212
- this.selectTab('#' + this.options.defaultTabHash)
213
- return
214
- }
215
-
216
- if (this.tabs.length && !this.activeTab) {
217
- this.selectTab(this.tabs[0].hash)
218
- }
219
- },
220
- updated() {
221
- this.$nextTick(() => {
222
- this.switchingDisableTab()
223
- })
224
- },
225
- methods: {
226
- checkInitTab() {
227
- if (this.activeTab) {
228
- const tab_component = this.visibleTabs.find(t => t.id === this.activeTab)
229
- const tab = tab_component || this.visibleTabs?.[0]
230
- tab?.hash && tab?.hash?.replace('#', '') && this.setActiveTab(tab.hash)
231
- }
232
- },
233
- setActiveTab(tabHash) {
234
- this.selectTab(tabHash)
235
- },
236
- changedHandler(e) {
237
- const lastActiveTab = this.getActiveTab()
238
- if (!lastActiveTab) return
239
- if (e.tab.href) {
240
- window.open(e.tab.href, '_blank')
241
- return
242
- }
243
- if (e.tab.to && this.$router) {
244
- this.$router.push(e.tab.to)
245
- return
246
- }
247
- if (!e.tab.href && !e.tab.to) this.activeTab = e?.tab?.id || e?.tab?.hash?.replace('#', '')
248
-
249
- /**
250
- * Событие при смене таба
251
- * @property {Object}
252
- */
253
- this.$emit('tab-changed', e)
254
- },
255
- setLastActiveTab(hash) {
256
- this.$nextTick(() => {
257
- this.setActiveTab(hash)
258
- })
259
- },
260
- switchingDisableTab() {
261
- /**
262
- * Переключает активный и в то
263
- * же время задизейбленный таб
264
- * на первый доступный
265
- */
266
- if (this.loading) return
267
- const activeTab = this.tabs?.find(tab => tab.isActive)
268
- if (!activeTab?.isDisabled) return
269
- const firstAvailableTab = this.tabs.find(tab => !tab?.isDisabled && !tab?.href && !tab?.to)
270
- firstAvailableTab && this.setActiveTab(firstAvailableTab.hash)
271
- },
272
- findTab(hash) {
273
- return this.tabs.find(tab => tab.hash === hash) || this.visibleTabs?.[0]
274
- },
275
-
276
- selectTab(selectedTabHash, event) {
277
- // See if we should store the hash in the url fragment.
278
- if (event && !this.options.useUrlFragment) {
279
- event.preventDefault()
280
- }
281
-
282
- const selectedTab = this.findTab(selectedTabHash)
283
-
284
- if (selectedTab.$listeners && selectedTab.$listeners.click) {
285
- selectedTab.$emit('click', event)
286
- return
287
- }
288
-
289
- if (!selectedTab) {
290
- return
291
- }
292
-
293
- if (selectedTab.isDisabled) {
294
- event.preventDefault()
295
- return
296
- }
297
-
298
- if (this.lastActiveTabHash === selectedTab.hash) {
299
- this.$emit('clicked', { tab: selectedTab })
300
- return
301
- }
302
-
303
- this.changedHandler({ tab: selectedTab })
304
-
305
- if (!!selectedTab.href || !!selectedTab.to) return
306
-
307
- this.tabs.forEach(tab => {
308
- tab.isActive = tab.hash === selectedTab.hash
309
- })
310
-
311
- this.activeTabHash = selectedTab.hash
312
- this.activeTabIndex = this.getTabIndex(selectedTabHash)
313
-
314
- this.lastActiveTabHash = this.activeTabHash = selectedTab.hash
315
-
316
- expiringStorage.set(this.storageKey, selectedTab.hash, this.cacheLifetime)
317
- },
318
-
319
- setTabVisible(hash, visible) {
320
- const tab = this.findTab(hash)
321
-
322
- if (!tab) {
323
- return
324
- }
325
-
326
- tab.isVisible = visible
327
-
328
- if (tab.isActive) {
329
- // If tab is active, set a different one as active.
330
- tab.isActive = visible
331
-
332
- this.tabs.every(tab => {
333
- if (tab.isVisible) {
334
- tab.isActive = true
335
-
336
- return false
337
- }
338
-
339
- return true
340
- })
341
- }
342
- },
343
-
344
- getTabIndex(hash) {
345
- const tab = this.findTab(hash)
346
-
347
- return this.tabs.indexOf(tab)
348
- },
349
-
350
- getTabHash(index) {
351
- const tab = this.tabs.find(tab => this.tabs.indexOf(tab) === index)
352
-
353
- if (!tab) {
354
- return
355
- }
356
-
357
- return tab.hash
358
- },
359
-
360
- getActiveTab() {
361
- return this.findTab(this.activeTabHash)
362
- },
363
-
364
- getActiveTabIndex() {
365
- return this.getTabIndex(this.activeTabHash)
366
- },
367
- },
368
- }
369
- </script>
370
-
371
- <style lang="scss">
372
- @import '../../../styles/mixins';
373
- @import '../../../tokens/z-indexes';
374
- @import '../../../tokens/font-families';
375
- .mc-tabs {
376
- $block-name: &;
377
-
378
- @mixin border() {
379
- &::before {
380
- @include pseudo();
381
- @include position(absolute, auto 0 0 0);
382
- height: 1px;
383
- background-color: $color-hover-gray;
384
- }
385
- }
386
-
387
- &--tab-variation {
388
- &-body {
389
- .tabs-component-tab-a {
390
- font-size: $font-size-300;
391
- line-height: $line-height-250;
392
- }
393
- }
394
- &-caption {
395
- .tabs-component-tab-a {
396
- font-size: $font-size-200;
397
- line-height: $line-height-200;
398
- }
399
- }
400
- &-overline {
401
- .tabs-component-tab-a {
402
- font-size: $font-size-100;
403
- line-height: $line-height-150;
404
- font-weight: $font-weight-medium;
405
- }
406
- }
407
- }
408
- .tabs-component-tab-a {
409
- color: var(--mc-tabs-color);
410
- }
411
-
412
- .tabs-component-tab-a {
413
- &::after {
414
- background-color: var(--mc-tabs-accent-color);
415
- }
416
- &:hover {
417
- color: var(--mc-tabs-accent-color);
418
- }
419
- }
420
- .tabs-component-tab.is-active {
421
- .tabs-component-tab-a {
422
- color: var(--mc-tabs-accent-color);
423
- font-weight: $font-weight-semi-bold;
424
- }
425
- }
426
-
427
- &--uppercase {
428
- .tabs-component-tabs {
429
- text-transform: uppercase;
430
- }
431
- }
432
-
433
- &--sticky {
434
- overflow: scroll;
435
-
436
- .tabs-component-tabs {
437
- position: sticky !important;
438
- top: 0;
439
- z-index: $z-index-sticky;
440
- background-color: $color-white;
441
- }
442
- }
443
-
444
- .tabs-component-tabs {
445
- @include reset-text-indents();
446
- position: relative;
447
- padding-left: 0;
448
- margin-top: 0;
449
- list-style-type: none;
450
- height: $space-350;
451
- @include border();
452
- }
453
-
454
- .tabs-component-tab {
455
- position: relative;
456
- flex: 0 0 auto;
457
- &:first-child {
458
- .tabs-component-tab-a {
459
- margin-left: 0;
460
- }
461
- }
462
- &:last-child {
463
- .tabs-component-tab-a {
464
- margin-right: 0;
465
- }
466
- }
467
-
468
- &.is-active {
469
- .tabs-component-tab-a {
470
- &::after {
471
- left: 0;
472
- right: 0;
473
- opacity: 1;
474
- }
475
- }
476
- }
477
- &.is-disabled {
478
- .tabs-component-tab-a {
479
- cursor: not-allowed;
480
- color: $color-outline-gray;
481
- }
482
- }
483
-
484
- &__tab-name {
485
- &::after {
486
- display: block;
487
- content: attr(data-name);
488
- font-weight: $font-weight-semi-bold;
489
- height: 0;
490
- overflow: hidden;
491
- visibility: hidden;
492
- }
493
- }
494
- &__icon {
495
- &-prepend {
496
- color: var(--mc-tab-icon-prepend-color);
497
- }
498
- &-append {
499
- color: var(--mc-tab-icon-append-color);
500
- }
501
- }
502
- }
503
-
504
- .tabs-component-tab-a {
505
- position: relative;
506
- display: inline-flex;
507
- font-family: $font-family-main;
508
- text-decoration: none;
509
- padding-bottom: $space-150;
510
- margin: 0 $space-150;
511
- cursor: pointer;
512
-
513
- @include child-indent-right($space-50);
514
- @include border();
515
- .las,
516
- .la {
517
- display: flex;
518
- align-items: center;
519
- }
520
-
521
- &::after {
522
- @include pseudo();
523
- @include position(null, null 50% 0 50%);
524
- opacity: 0;
525
- height: 2px;
526
- z-index: 1;
527
- transition: left 0.2s ease, right 0.2s ease, opacity 0.2s ease, color 0.2s ease;
528
- }
529
- }
530
- }
531
- </style>