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,221 +0,0 @@
1
- <template>
2
- <component
3
- :is="component"
4
- v-model="selectedOptionValue"
5
- :options="computedOptions"
6
- :internal-search="!isAjax"
7
- :placeholder="computedPlaceholder"
8
- :loading="loading"
9
- :disabled="relationType === 'exists'"
10
- hide-selected
11
- class="mc-filter-type-relation"
12
- name="relation_select"
13
- @search-change="handleSearchChange"
14
- >
15
- <div slot="header" class="mc-filter-type-relation__header">
16
- <mc-title>{{ placeholders.condition }}</mc-title>
17
- <div class="mc-filter-type-relation__buttons">
18
- <mc-button
19
- v-for="relation in relations"
20
- :key="relation"
21
- :variation="relationType === relation ? 'purple' : 'dark-gray-outline'"
22
- @click="() => changeRelationType(relation)"
23
- >
24
- {{ placeholders.actions[`${relation === 'exists' ? 'empty' : relation}`] }}
25
- </mc-button>
26
- </div>
27
- </div>
28
- </component>
29
- </template>
30
-
31
- <script>
32
- import _uniqWith from 'lodash/uniqWith'
33
- import _isEqual from 'lodash/isEqual'
34
- import _debounce from 'lodash/debounce'
35
- import _isEmpty from 'lodash/isEmpty'
36
- import McButton from '../../../elements/McButton/McButton'
37
- import McTitle from '../../../elements/McTitle/McTitle'
38
- import McFieldSelect from '../../../elements/McField/McFieldSelect/McFieldSelect'
39
- import McFieldText from '../../../elements/McField/McFieldText/McFieldText'
40
-
41
- export default {
42
- name: 'McFilterTypeRelation',
43
- components: {
44
- McButton,
45
- McTitle,
46
- McFieldSelect,
47
- McFieldText,
48
- },
49
- props: {
50
- /**
51
- * Значение
52
- */
53
- value: {
54
- // type: [String, Number],
55
- default: null,
56
- },
57
- /**
58
- * Объект выбранного
59
- * фильтра
60
- */
61
- filter: {
62
- type: Object,
63
- default: () => {},
64
- },
65
- /**
66
- * Переводы локализаций
67
- */
68
- placeholders: {
69
- type: Object,
70
- required: true,
71
- },
72
- /**
73
- * Текущее значение
74
- * добавленных фильтров
75
- */
76
- currentValues: {
77
- type: Object,
78
- default: () => {},
79
- },
80
- },
81
- data() {
82
- return {
83
- relations: ['is', 'is_not', 'exists'],
84
- relationType: 'is',
85
- ajaxOptions: [],
86
- loading: false,
87
- }
88
- },
89
- computed: {
90
- component() {
91
- return this.filter.is_text ? 'mc-field-text' : 'mc-field-select'
92
- },
93
- computedPlaceholder() {
94
- return this.filter.placeholder || this.filter.is_text ? this.placeholders.enter : this.placeholders.choose
95
- },
96
- computedOptions() {
97
- let options = this.isAjax ? this.ajaxOptions : this.filter.options || []
98
-
99
- if (!_isEmpty(this.currentValues) && this.filter.value in this.currentValues) {
100
- const category = this.currentValues[this.filter.value]
101
- let selected = []
102
- for (let [key, val] of Object.entries(category)) {
103
- if (key === 'exists') {
104
- return []
105
- }
106
- selected = [...selected, ...(Array.isArray(val) ? val : [[val]])]
107
- }
108
- options = options.filter(o => !selected.includes(String(o.value)))
109
- }
110
-
111
- return options
112
- },
113
- isAjax() {
114
- return typeof this.filter.getAjaxOptions === 'function'
115
- },
116
- selectedOptionValue: {
117
- get() {
118
- let val = this.value
119
- if (val) {
120
- for (let [relationKey, relationVal] of Object.entries(this.value)) {
121
- if (relationKey === 'exists') {
122
- val = null
123
- } else {
124
- val = relationVal[0]
125
- }
126
- }
127
- if (this.isAjax && val) {
128
- this.addAjaxOption(val)
129
- }
130
- }
131
- return val
132
- },
133
- set(val) {
134
- if (this.relationType === 'exists') return
135
- this.setValue(val)
136
- },
137
- },
138
- },
139
- watch: {
140
- value: {
141
- handler(val) {
142
- if (val) {
143
- for (let relationKey of Object.keys(val)) {
144
- this.relationType = relationKey
145
- }
146
- }
147
- },
148
- immediate: true,
149
- },
150
- filter() {
151
- this.relationType = 'is'
152
- this.$nextTick(() => (this.ajaxOptions = []))
153
- },
154
- },
155
- methods: {
156
- changeRelationType(relation) {
157
- if (this.relationType === relation) return
158
- this.relationType = relation
159
- this.setValue(this.selectedOptionValue)
160
- },
161
- async setAjaxOptions(value) {
162
- this.loading = true
163
- this.ajaxOptions = await this.filter.getAjaxOptions(value)
164
- this.loading = false
165
- },
166
- async addAjaxOption(value) {
167
- const option = await this.filter.getAjaxOne(value)
168
- this.ajaxOptions = _uniqWith([...this.ajaxOptions, option], _isEqual)
169
- },
170
- handleSearchChange(value) {
171
- if (!this.isAjax || !value) return
172
- this.debounceHandler(this.setAjaxOptions.bind(null, value))
173
- },
174
- debounceHandler: _debounce(method => method(), 500),
175
- setValue(value) {
176
- let currentValue = null
177
- let currentValueName = null
178
- const hasVal = value || Number.isInteger(value)
179
- if (this.relationType !== 'exists' && hasVal) {
180
- const name = this.filter.is_text
181
- ? value
182
- : this.computedOptions.find(o => String(o.value) === String(value))?.name
183
- currentValue = { [this.relationType]: [String(value)] }
184
- currentValueName = { [this.relationType]: { [String(value)]: name } }
185
- }
186
-
187
- if (this.relationType === 'exists' && !this.currentValues[this.filter.value]) {
188
- currentValue = { ['exists']: [0] }
189
- currentValueName = { ['exists']: [0] }
190
- }
191
- /**
192
- * Событие по изменению значения
193
- */
194
- this.$emit('input', currentValue, currentValueName)
195
- },
196
- },
197
- }
198
- </script>
199
-
200
- <style lang="scss">
201
- @import '../../../styles/mixins';
202
- .mc-filter-type-relation {
203
- $block-name: &;
204
- width: 300px;
205
- &__header {
206
- display: flex;
207
- align-items: center;
208
- justify-content: space-between;
209
- margin-bottom: -$space-50;
210
- margin-top: -$space-50;
211
- }
212
- &__buttons {
213
- display: flex;
214
- @include child-indent-right($space-50);
215
- .mc-button {
216
- height: $size-300;
217
- padding: $space-50 $space-150;
218
- }
219
- }
220
- }
221
- </style>
@@ -1,161 +0,0 @@
1
- <template>
2
- <mc-field-select
3
- v-model="selectedOptionValue"
4
- :options="computedOptions"
5
- :internal-search="!isAjax"
6
- :placeholder="computedPlaceholder"
7
- :loading="loading"
8
- class="mc-filter-type-simple"
9
- name="simple_select"
10
- @search-change="handleSearchChange"
11
- >
12
- <div slot="header" class="mc-filter-type-simple__header">
13
- <mc-title>{{ placeholders.simple }}</mc-title>
14
- </div>
15
- </mc-field-select>
16
- </template>
17
-
18
- <script>
19
- import _uniqWith from 'lodash/uniqWith'
20
- import _isEqual from 'lodash/isEqual'
21
- import _debounce from 'lodash/debounce'
22
- import _isEmpty from 'lodash/isEmpty'
23
- import McTitle from '../../../elements/McTitle/McTitle'
24
- import McFieldSelect from '../../../elements/McField/McFieldSelect/McFieldSelect'
25
-
26
- export default {
27
- name: 'McFilterTypeSimple',
28
- components: {
29
- McTitle,
30
- McFieldSelect,
31
- },
32
- props: {
33
- /**
34
- * Значение
35
- */
36
- value: {
37
- // type: [String, Number],
38
- default: null,
39
- },
40
- /**
41
- * Объект выбранного
42
- * фильтра
43
- */
44
- filter: {
45
- type: Object,
46
- default: () => {},
47
- },
48
- /**
49
- * Переводы локализаций
50
- */
51
- placeholders: {
52
- type: Object,
53
- required: true,
54
- },
55
- /**
56
- * Текущее значение
57
- * добавленных фильтров
58
- */
59
- currentValues: {
60
- type: Object,
61
- default: () => {},
62
- },
63
- asd: {
64
- type: Object,
65
- default: () => {},
66
- },
67
- },
68
- data() {
69
- return {
70
- ajaxOptions: [],
71
- loading: false,
72
- }
73
- },
74
- computed: {
75
- computedPlaceholder() {
76
- return this.filter.placeholder || this.filter.is_text ? this.placeholders.enter : this.placeholders.choose
77
- },
78
- computedOptions() {
79
- let options = this.isAjax ? this.ajaxOptions : this.filter.options || []
80
-
81
- if (!_isEmpty(this.currentValues) && this.filter.value in this.currentValues) {
82
- const category = this.currentValues[this.filter.value]
83
- let selected = []
84
- for (let [key, val] of Object.entries(category)) {
85
- selected = [...selected, ...(Array.isArray(val) ? val : [[val]])]
86
- }
87
- options = options.filter(o => !selected.includes(String(o.value)))
88
- }
89
-
90
- return options
91
- },
92
- isAjax() {
93
- return typeof this.filter.getAjaxOptions === 'function'
94
- },
95
- selectedOptionValue: {
96
- get() {
97
- let val = this.value
98
- if (val) {
99
- if (this.isAjax && val) {
100
- this.addAjaxOption(val)
101
- }
102
- }
103
- return val
104
- },
105
- set(val) {
106
- this.setValue(val)
107
- },
108
- },
109
- },
110
- watch: {
111
- filter() {
112
- this.$nextTick(() => (this.ajaxOptions = []))
113
- },
114
- },
115
- methods: {
116
- async setAjaxOptions(value) {
117
- this.loading = true
118
- this.ajaxOptions = await this.filter.getAjaxOptions(value)
119
- this.loading = false
120
- },
121
- async addAjaxOption(value) {
122
- const option = await this.filter.getAjaxOne(value)
123
- this.ajaxOptions = _uniqWith([...this.ajaxOptions, option], _isEqual)
124
- },
125
- handleSearchChange(value) {
126
- if (!this.isAjax || !value) return
127
- this.debounceHandler(this.setAjaxOptions.bind(null, value))
128
- },
129
- debounceHandler: _debounce(method => method(), 500),
130
- setValue(value) {
131
- /**
132
- * Событие по изменению значения
133
- */
134
- this.$emit('input', value, this.computedOptions.find(o => String(o.value) === String(value))?.name)
135
- },
136
- },
137
- }
138
- </script>
139
-
140
- <style lang="scss">
141
- @import '../../../styles/mixins';
142
- .mc-filter-type-simple {
143
- $block-name: &;
144
- width: 300px;
145
- &__header {
146
- display: flex;
147
- align-items: center;
148
- justify-content: space-between;
149
- margin-bottom: -$space-50;
150
- margin-top: -$space-50;
151
- }
152
- &__buttons {
153
- display: flex;
154
- @include child-indent-right($space-50);
155
- .mc-button {
156
- height: $size-300;
157
- padding: $space-50 $space-150;
158
- }
159
- }
160
- }
161
- </style>
@@ -1,62 +0,0 @@
1
- <template>
2
- <mc-field-text
3
- v-model="text"
4
- :placeholder="filter.placeholder || placeholders.enter"
5
- class="mc-filter-type-text"
6
- name="condition_text"
7
- />
8
- </template>
9
-
10
- <script>
11
- import McFieldText from '../../../elements/McField/McFieldText/McFieldText'
12
- export default {
13
- name: 'McFilterTypeText',
14
- components: {
15
- McFieldText,
16
- },
17
- props: {
18
- /**
19
- * Значение
20
- */
21
- value: {
22
- type: String,
23
- default: '',
24
- },
25
- /**
26
- * Объект выбранного
27
- * фильтра
28
- */
29
- filter: {
30
- type: Object,
31
- default: () => {},
32
- },
33
- /**
34
- * Переводы локализаций
35
- */
36
- placeholders: {
37
- type: Object,
38
- required: true,
39
- },
40
- },
41
- computed: {
42
- text: {
43
- get() {
44
- return this.value
45
- },
46
- set(val) {
47
- /**
48
- * Событие по изменению значения
49
- */
50
- this.$emit('input', val)
51
- },
52
- },
53
- },
54
- }
55
- </script>
56
-
57
- <style lang="scss">
58
- .mc-filter-type-text {
59
- $block-name: &;
60
- width: 300px;
61
- }
62
- </style>
@@ -1,165 +0,0 @@
1
- <template>
2
- <div :class="classes" :style="styles" class="mc-grid-col">
3
- <!-- @slot Слот контента -->
4
- <slot />
5
- </div>
6
- </template>
7
-
8
- <script>
9
- import _upperFirst from 'lodash/upperFirst'
10
- const values = ['span', 'order', 'offset', 'push', 'pull']
11
- const sizes = ['xs', 's', 'm', 'l', 'xl', 'xxl']
12
- const props = {}
13
-
14
- values.forEach(value => {
15
- sizes.forEach(size => {
16
- props[`${value}-${size}`] = { type: Number }
17
- })
18
- })
19
-
20
- export default {
21
- name: 'McGridCol',
22
- inject: ['provideData'],
23
- props: {
24
- /**
25
- * Кол-во колонок (всего 12)
26
- */
27
- span: { type: Number },
28
-
29
- /**
30
- * Очерёдность
31
- */
32
- order: { type: Number },
33
-
34
- /**
35
- * Отступ (margin-left)
36
- */
37
- offset: { type: Number },
38
-
39
- /**
40
- * Отступ (left)
41
- */
42
- push: { type: Number },
43
-
44
- /**
45
- * Отступ (right)
46
- */
47
- pull: { type: Number },
48
-
49
- ...props,
50
-
51
- /**
52
- * Автоматически тянущаяся колонка
53
- * на всё свободное пространство
54
- */
55
- stretchSelf: {
56
- type: Boolean,
57
- default: false,
58
- },
59
-
60
- /**
61
- * Основа флекса, которая является начальным размером элемента
62
- * (указывать с единицами измерения: px, %...)
63
- */
64
- basis: {
65
- type: String,
66
- default: 'auto',
67
- },
68
- },
69
-
70
- computed: {
71
- classes() {
72
- const list = {}
73
- values.forEach(value => {
74
- list[`mc-grid-col--${value}-${this[value]}`] = this[value]
75
- sizes.forEach(size => {
76
- const sizeValue = this[`${value}${_upperFirst(size)}`]
77
- list[`mc-grid-col--${value}-${size}-${sizeValue}`] = sizeValue
78
- })
79
- })
80
- return list
81
- },
82
-
83
- styles() {
84
- let colStyle = {}
85
-
86
- if (this.provideData.gutterX !== 0) {
87
- colStyle['padding-left'] = `${this.provideData.gutterX / 2}px`
88
- colStyle['padding-right'] = `${this.provideData.gutterX / 2}px`
89
- }
90
-
91
- if (this.provideData.gutterY !== 0) {
92
- colStyle['padding-top'] = `${this.provideData.gutterY / 2}px`
93
- colStyle['padding-bottom'] = `${this.provideData.gutterY / 2}px`
94
- }
95
-
96
- if (this.stretchSelf) {
97
- colStyle['flex'] = `1 0 ${this.basis}`
98
- } else if (this.basis !== 'auto') {
99
- colStyle['flex'] = `0 0 ${this.basis}`
100
- }
101
-
102
- return this.order ? { ...colStyle, order: this.order } : colStyle
103
- },
104
- },
105
- }
106
- </script>
107
-
108
- <style lang="scss">
109
- .mc-grid-col {
110
- $block-name: &;
111
-
112
- $cols: 12;
113
-
114
- display: block;
115
- position: relative;
116
- max-width: 100%;
117
-
118
- @mixin generate-col($viewport: '') {
119
- @for $i from 1 through $cols {
120
- &--span#{$viewport}-#{$i} {
121
- flex: 0 0 calc((#{$i} / #{$cols}) * 100%);
122
- max-width: calc((#{$i} / #{$cols}) * 100%);
123
- }
124
-
125
- &--push#{$viewport}-#{$i} {
126
- inset-inline-start: calc((#{$i} / #{$cols}) * 100%);
127
- }
128
-
129
- &--pull#{$viewport}-#{$i} {
130
- inset-inline-end: calc((#{$i} / #{$cols}) * 100%);
131
- }
132
-
133
- &--offset#{$viewport}-#{$i} {
134
- margin-inline-start: calc((#{$i} / #{$cols}) * 100%);
135
- }
136
-
137
- &--order#{$viewport}-#{$i} {
138
- order: #{$i};
139
- }
140
- }
141
- }
142
-
143
- @include generate-col('');
144
-
145
- @media #{$media-query-xs} {
146
- @include generate-col('-xs');
147
- }
148
-
149
- @media #{$media-query-s} {
150
- @include generate-col('-s');
151
- }
152
-
153
- @media #{$media-query-m} {
154
- @include generate-col('-m');
155
- }
156
-
157
- @media #{$media-query-l} {
158
- @include generate-col('-l');
159
- }
160
-
161
- @media #{$media-query-xl} {
162
- @include generate-col('-xl');
163
- }
164
- }
165
- </style>