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,218 +0,0 @@
1
- <script>
2
- export default {
3
- name: 'McProgress',
4
- functional: true,
5
- props: {
6
- /**
7
- * Процент
8
- *
9
- */
10
- percent: {
11
- type: Number,
12
- default: 0,
13
- },
14
- /**
15
- * Число для отображения, если не укказано, используется процент
16
- *
17
- */
18
- amount: {
19
- type: [String, Number, Boolean],
20
- default: null,
21
- },
22
- /**
23
- * Цвет
24
- *
25
- */
26
- color: {
27
- type: String,
28
- default: 'dark-gray',
29
- },
30
- /**
31
- * Цвет текста
32
- *
33
- */
34
- helpTextColor: {
35
- type: String,
36
- default: 'gray',
37
- },
38
- /**
39
- * Вспомогательный текст
40
- */
41
- helpText: {
42
- type: String,
43
- default: '',
44
- },
45
- /**
46
- * Ошибки
47
- */
48
- errors: {
49
- type: Array,
50
- default: () => [],
51
- },
52
- /**
53
- * Поменять местами подписи
54
- */
55
- reverseHeaders: {
56
- type: Boolean,
57
- default: false,
58
- },
59
- /**
60
- * Использовать моноширинный шрифт для percent и amount
61
- */
62
- monospaceNumbers: {
63
- type: Boolean,
64
- default: false,
65
- },
66
- },
67
- render(h, { props, data }) {
68
- const errorText = props.errors !== null && props.errors.length ? props.errors.join(', ') : ''
69
- const wrapperClasses = {
70
- 'mc-progress': true,
71
- 'mc-progress--error': errorText,
72
- ...(data.class || {}),
73
- }
74
-
75
- if (data.staticClass) {
76
- const staticClasses = data.staticClass.split(' ')
77
- staticClasses.forEach(c => c && (wrapperClasses[c] = true))
78
- }
79
-
80
- let style = {}
81
- if (props.color) style['--mc-progress-color'] = `var(--color-${props.color})`
82
- if (data.staticStyle) {
83
- style = data.staticStyle
84
- }
85
-
86
- const lineClasses = {
87
- 'mc-progress__line': true,
88
- }
89
-
90
- return h(
91
- 'div',
92
- {
93
- class: wrapperClasses,
94
- style,
95
- },
96
- [
97
- h(
98
- 'div',
99
- {
100
- class: ['mc-progress__top', { 'mc-progress__top--reverse-headers': props.reverseHeaders }],
101
- },
102
- [
103
- h(
104
- 'div',
105
- {
106
- class: {
107
- 'mc-progress__percent': true,
108
- 'mc-progress__percent--monospace': props.monospaceNumbers,
109
- },
110
- },
111
- [errorText ? 0 : props.amount || props.amount === 0 ? props.amount : `${props.percent}%`],
112
- ),
113
- props.helpText
114
- ? h(
115
- 'div',
116
- {
117
- class: ['mc-progress__help-text'],
118
- style: {
119
- ['--mc-progress-help-text-color']: `var(--color-${props.helpTextColor})`,
120
- },
121
- },
122
- [props.helpText],
123
- )
124
- : null,
125
- ],
126
- ),
127
- h(
128
- 'div',
129
- {
130
- class: 'mc-progress__wrapper-line',
131
- },
132
- [
133
- h('div', {
134
- class: lineClasses,
135
- style: { width: `${errorText ? 2 : Math.sign(props.percent) > 0 ? props.percent : 0}%` },
136
- }),
137
- ],
138
- ),
139
- errorText
140
- ? h(
141
- 'div',
142
- {
143
- class: 'mc-progress__errors-container',
144
- },
145
- [errorText],
146
- )
147
- : null,
148
- ],
149
- )
150
- },
151
- }
152
- </script>
153
-
154
- <style lang="scss">
155
- @import '../../tokens/border-radius';
156
- @import '../../tokens/font-families';
157
- .mc-progress {
158
- $block-name: &;
159
- --mc-progress-color: #{$color-dark-gray};
160
- --mc-progress-help-text-color: #{$color-gray};
161
- position: relative;
162
- width: 100%;
163
- font-family: $font-family-main;
164
- line-height: $line-height-200;
165
- font-size: $font-size-200;
166
- &__percent {
167
- flex-shrink: 0;
168
- color: var(--mc-progress-color);
169
- &--monospace {
170
- font-feature-settings: 'tnum';
171
- font-variant-numeric: tabular-nums;
172
- }
173
- }
174
- &--error {
175
- #{$block-name} {
176
- &__percent {
177
- color: $color-red;
178
- }
179
- &__line {
180
- background-color: $color-red;
181
- }
182
- }
183
- }
184
-
185
- &__top {
186
- display: flex;
187
- align-items: center;
188
- justify-content: space-between;
189
- margin-bottom: $space-100;
190
- &--reverse-headers {
191
- flex-direction: row-reverse;
192
- }
193
- }
194
-
195
- &__help-text {
196
- color: var(--mc-progress-help-text-color);
197
- }
198
-
199
- &__wrapper-line {
200
- height: $size-100;
201
- border-radius: $radius-100;
202
- background-color: $color-hover-gray;
203
- width: 100%;
204
- }
205
-
206
- &__line {
207
- height: 100%;
208
- border-radius: $radius-100;
209
- max-width: 100%;
210
- background-color: var(--mc-progress-color);
211
- }
212
-
213
- &__errors-container {
214
- margin-top: $space-150;
215
- color: $color-red;
216
- }
217
- }
218
- </style>
@@ -1,195 +0,0 @@
1
- <template>
2
- <vue-slider
3
- :class="classes"
4
- :style="styles"
5
- :value="newValue"
6
- :dot-size="20"
7
- :interval="step"
8
- :min="min"
9
- :max="max"
10
- :disabled="disabled"
11
- :lazy="lazy"
12
- :tooltip="tooltip"
13
- :tooltip-placement="tooltipPlacement"
14
- :tooltip-formatter="tooltipFormatter"
15
- @change="handleInput"
16
- @dragging="handleDrag"
17
- />
18
- </template>
19
-
20
- <script>
21
- import VueSlider from 'vue-slider-component'
22
- import 'vue-slider-component/theme/default.css'
23
-
24
- export default {
25
- name: 'McRangeSlider',
26
- components: {
27
- VueSlider,
28
- },
29
- props: {
30
- /**
31
- * Значение
32
- */
33
- value: {
34
- type: [Number, Array],
35
- required: true,
36
- },
37
- /**
38
- * Мин. значение
39
- */
40
- min: {
41
- type: Number,
42
- required: true,
43
- },
44
- /**
45
- * Макс. значение
46
- */
47
- max: {
48
- type: Number,
49
- required: true,
50
- },
51
- /**
52
- * The interval between two values.
53
- */
54
- step: {
55
- type: Number,
56
- default: 1,
57
- },
58
- /**
59
- * Цвет слайдера
60
- */
61
- color: {
62
- type: String,
63
- default: 'purple',
64
- },
65
- /**
66
- * Is it lazy to update the value.
67
- * Useful whenever you need to consume a high-loss operation
68
- */
69
- lazy: {
70
- type: Boolean,
71
- default: true,
72
- },
73
- /**
74
- * Whether to disable the component.
75
- */
76
- disabled: {
77
- type: Boolean,
78
- default: false,
79
- },
80
- /**
81
- * Control Tooltip display.
82
- * 'none' | 'always' | 'hover' | 'focus' | 'active'
83
- */
84
- tooltip: {
85
- type: String,
86
- default: 'hover',
87
- },
88
- /**
89
- * The placement of the Tooltip.
90
- * 'top' | 'right' | 'bottom' | 'left'
91
- */
92
- tooltipPlacement: {
93
- type: [String, Array],
94
- default: 'top',
95
- },
96
- /**
97
- * The placement of the Tooltip.
98
- * 'top' | 'right' | 'bottom' | 'left'
99
- */
100
- coloredTooltip: {
101
- type: Boolean,
102
- default: false,
103
- },
104
- },
105
- data() {
106
- return {
107
- newValue: this.value,
108
- }
109
- },
110
- computed: {
111
- classes() {
112
- return {
113
- 'mc-range-slider': true,
114
- [`mc-range-slider--color-${this.color}`]: this.color,
115
- 'mc-range-slider--colored-tooltip': this.coloredTooltip,
116
- }
117
- },
118
- styles() {
119
- return {
120
- ['--mc-range-slider-color']: `var(--color-${this.color})`,
121
- }
122
- },
123
- },
124
- methods: {
125
- handleInput(value) {
126
- /**
127
- * Событие по изменению значения
128
- * @property {Number}
129
- */
130
- this.$emit('input', value)
131
- },
132
- handleDrag(value) {
133
- /**
134
- * Событие по изменению значения
135
- * (если нужно отслеживать value в ленивом режиме)
136
- * @property {Number}
137
- */
138
- this.$emit('dragging', value)
139
- },
140
- tooltipFormatter(value) {
141
- if (Number(value) !== value) return value
142
- return ('' + value).replace(/\B(?=(\d{3})+(?!\d))/g, ' ')
143
- },
144
- },
145
- }
146
- </script>
147
-
148
- <style lang="scss">
149
- @import '../../tokens/box-shadows';
150
- .mc-range-slider {
151
- $block-name: &;
152
- --mc-range-slider-color: #{$color-purple};
153
-
154
- .vue-slider-dot-tooltip-inner {
155
- line-height: $line-height-200;
156
- font-size: $font-size-200;
157
- padding: $space-100 $space-150;
158
- background-color: $color-black;
159
- border-color: $color-black;
160
- }
161
- .vue-slider-process {
162
- background-color: var(--mc-range-slider-color);
163
- }
164
-
165
- .vue-slider-dot-handle-focus {
166
- box-shadow: $shadow-s;
167
- }
168
- .vue-slider-dot-handle {
169
- box-shadow: $shadow-s;
170
- &:hover {
171
- border: 2px solid var(--mc-range-slider-color);
172
- }
173
- &:active {
174
- border: 2px solid var(--mc-range-slider-color);
175
- }
176
- }
177
- &--colored-tooltip {
178
- .vue-slider-dot-tooltip-inner {
179
- background-color: var(--mc-range-slider-color);
180
- border-color: var(--mc-range-slider-color);
181
- padding: $space-100 $space-150;
182
- }
183
- }
184
- &.vue-slider {
185
- .vue-slider-rail {
186
- cursor: pointer;
187
- }
188
- &-disabled {
189
- .vue-slider-rail {
190
- cursor: auto;
191
- }
192
- }
193
- }
194
- }
195
- </style>
@@ -1,143 +0,0 @@
1
- <script>
2
- export default {
3
- name: 'McSeparator',
4
- functional: true,
5
- props: {
6
- /**
7
- * Толщина `s, m`
8
- */
9
- weight: {
10
- type: String,
11
- default: 's',
12
- },
13
- /**
14
- * Цвет (токены)
15
- */
16
- color: {
17
- type: String,
18
- default: 'outline-gray',
19
- },
20
- /**
21
- * Отступ слева и справа: 50, 200... ...1000
22
- */
23
- indentX: {
24
- type: String,
25
- default: '',
26
- },
27
- /**
28
- * Отступ сверху и снизу: 50, 200... ...1000
29
- */
30
- indentY: {
31
- type: String,
32
- default: '',
33
- },
34
- /**
35
- * Отступ сверху: 50, 200... ...1000
36
- */
37
- indentTop: {
38
- type: String,
39
- default: '',
40
- },
41
- /**
42
- * Отступ снизу: 50, 200... ...1000
43
- */
44
- indentBottom: {
45
- type: String,
46
- default: '',
47
- },
48
- /**
49
- * Отступ слева: 50, 200... ...1000
50
- */
51
- indentLeft: {
52
- type: String,
53
- default: '',
54
- },
55
- /**
56
- * Отступ справа: 50, 200... ...1000
57
- */
58
- indentRight: {
59
- type: String,
60
- default: '',
61
- },
62
- },
63
-
64
- render(h, { props, slots, data }) {
65
- const indents = {
66
- top: props.indentTop || props.indentY,
67
- bottom: props.indentBottom || props.indentY,
68
- left: props.indentLeft || props.indentX,
69
- right: props.indentRight || props.indentX,
70
- }
71
- const classes = {
72
- 'mc-separator': true,
73
- ...(data.class || {}),
74
- }
75
-
76
- if (data.staticClass) {
77
- const staticClasses = data.staticClass.split(' ')
78
- staticClasses.forEach(c => c && (classes[c] = true))
79
- }
80
-
81
- let style = {}
82
- if (props.color) style['--mc-separator-color'] = `var(--color-${props.color})`
83
- if (indents.top) style['--mc-separator-indent-top'] = `var(--space-${indents.top})`
84
- if (indents.bottom) style['--mc-separator-indent-bottom'] = `var(--space-${indents.bottom})`
85
- if (indents.left) style['--mc-separator-indent-left'] = `var(--space-${indents.left})`
86
- if (indents.right) style['--mc-separator-indent-right'] = `var(--space-${indents.right})`
87
- let weight
88
- switch (props.weight) {
89
- case 's': {
90
- weight = '1px'
91
- break
92
- }
93
- case 'm': {
94
- weight = '2px'
95
- }
96
- }
97
- if (weight) style['--mc-separator-weight'] = weight
98
- if (data.staticStyle) {
99
- style = data.staticStyle
100
- }
101
-
102
- return h(
103
- 'div',
104
- {
105
- class: classes,
106
- style,
107
- },
108
- [
109
- h(
110
- 'div',
111
- {
112
- class: 'mc-separator__wrapper',
113
- },
114
- slots()['default'],
115
- ),
116
- ],
117
- )
118
- },
119
- }
120
- </script>
121
-
122
- <style lang="scss">
123
- @import '../../styles/mixins';
124
- .mc-separator {
125
- $block-name: &;
126
- --mc-separator-color: initial;
127
- --mc-separator-indent-top: initial;
128
- --mc-separator-indent-bottom: initial;
129
- --mc-separator-indent-left: initial;
130
- --mc-separator-indent-right: initial;
131
- --mc-separator-weight: initial;
132
- width: 100%;
133
- margin-top: var(--mc-separator-indent-top);
134
- margin-bottom: var(--mc-separator-indent-bottom);
135
- margin-inline-start: var(--mc-separator-indent-left);
136
- margin-inline-end: var(--mc-separator-indent-right);
137
- height: var(--mc-separator-weight);
138
- &__wrapper {
139
- @include size(100%);
140
- background-color: var(--mc-separator-color);
141
- }
142
- }
143
- </style>
@@ -1,157 +0,0 @@
1
- <script>
2
- /**
3
- * Используется исключительно для mc-collapse
4
- */
5
- export default {
6
- name: 'McSlideUpDown',
7
- props: {
8
- /*
9
- * Состояние
10
- */
11
- active: {
12
- type: Boolean,
13
- default: false,
14
- },
15
- /*
16
- * Продолжительность тоггла
17
- */
18
- duration: {
19
- type: Number,
20
- default: 500,
21
- },
22
- /*
23
- * Если нужен другой тег
24
- */
25
- tag: {
26
- type: String,
27
- default: 'div',
28
- },
29
- /*
30
- * Применять ли атрибут hidden
31
- * к элементы при закрытии
32
- */
33
- useHidden: {
34
- type: Boolean,
35
- default: true,
36
- },
37
- },
38
-
39
- data: () => ({
40
- style: {},
41
- initial: false,
42
- hidden: false,
43
- }),
44
-
45
- computed: {
46
- el() {
47
- return this.$refs.container
48
- },
49
-
50
- attrs() {
51
- const attrs = {
52
- 'aria-hidden': !this.active,
53
- 'aria-expanded': this.active,
54
- }
55
-
56
- if (this.useHidden) {
57
- attrs.hidden = this.hidden
58
- }
59
-
60
- return attrs
61
- },
62
- },
63
-
64
- watch: {
65
- active() {
66
- this.layout()
67
- },
68
- },
69
-
70
- mounted() {
71
- this.layout()
72
- this.initial = true
73
- },
74
-
75
- created() {
76
- this.hidden = !this.active
77
- },
78
-
79
- methods: {
80
- layout() {
81
- if (this.active) {
82
- this.hidden = false
83
- /**
84
- * Событие перед началом открытия
85
- */
86
- this.$emit('slide-open-start')
87
- if (this.initial) {
88
- this.setHeight('0px', () => `${this.el.scrollHeight}px`)
89
- }
90
- } else {
91
- /**
92
- * Событие перед началом закрытия
93
- */
94
- this.$emit('slide-close-start')
95
- this.setHeight(`${this.el.scrollHeight}px`, () => '0px')
96
- }
97
- },
98
-
99
- asap(callback) {
100
- if (!this.initial) {
101
- callback()
102
- } else {
103
- this.$nextTick(callback)
104
- }
105
- },
106
-
107
- setHeight(temp, afterRelayout) {
108
- this.style = { height: temp }
109
-
110
- this.asap(() => {
111
- // force relayout so the animation will run
112
- this.__ = this.el.scrollHeight
113
-
114
- this.style = {
115
- height: afterRelayout(),
116
- overflow: 'hidden',
117
- 'transition-property': 'height',
118
- 'transition-duration': this.duration + 'ms',
119
- }
120
- })
121
- },
122
-
123
- onTransitionEnd() {
124
- if (this.active) {
125
- this.style = {}
126
- /**
127
- * Событие после открытия
128
- */
129
- this.$emit('slide-open-end')
130
- } else {
131
- this.style = {
132
- height: '0',
133
- overflow: 'hidden',
134
- }
135
- this.hidden = true
136
- /**
137
- * Событие после закрытия
138
- */
139
- this.$emit('slide-close-end')
140
- }
141
- },
142
- },
143
-
144
- render(h) {
145
- return h(
146
- this.tag,
147
- {
148
- style: this.style,
149
- attrs: this.attrs,
150
- ref: 'container',
151
- on: { transitionend: this.onTransitionEnd },
152
- },
153
- this.$slots.default,
154
- )
155
- },
156
- }
157
- </script>