sard-uniapp 1.16.0 → 1.17.1

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 (56) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/components/config/index.d.ts +1 -0
  3. package/components/config/index.js +1 -0
  4. package/components/count-down/count-down.vue +5 -3
  5. package/components/datetime-picker/common.d.ts +3 -0
  6. package/components/datetime-picker/datetime-picker.d.ts +9 -2
  7. package/components/datetime-picker-input/common.d.ts +3 -1
  8. package/components/datetime-picker-input/datetime-picker-input.d.ts +9 -2
  9. package/components/datetime-picker-popout/common.d.ts +2 -3
  10. package/components/datetime-range-picker/common.d.ts +2 -3
  11. package/components/datetime-range-picker-input/common.d.ts +3 -1
  12. package/components/datetime-range-picker-input/datetime-range-picker-input.d.ts +9 -2
  13. package/components/datetime-range-picker-popout/common.d.ts +2 -3
  14. package/components/picker/common.d.ts +11 -0
  15. package/components/picker/index.scss +0 -13
  16. package/components/picker/picker.d.ts +9 -2
  17. package/components/picker/picker.vue +31 -9
  18. package/components/picker/variables.scss +4 -1
  19. package/components/picker-input/common.d.ts +3 -1
  20. package/components/picker-input/picker-input.d.ts +9 -2
  21. package/components/picker-input/picker-input.vue +25 -1
  22. package/components/picker-item/common.d.ts +12 -0
  23. package/components/picker-item/common.js +1 -0
  24. package/components/picker-item/index.d.ts +1 -0
  25. package/components/picker-item/index.js +1 -0
  26. package/components/picker-item/index.scss +12 -0
  27. package/components/picker-item/picker-item.d.ts +10 -0
  28. package/components/picker-item/picker-item.vue +41 -0
  29. package/components/picker-popout/common.d.ts +2 -3
  30. package/components/picker-popout/common.js +1 -1
  31. package/components/picker-popout/picker-popout.vue +32 -4
  32. package/components/popup/popup.vue +29 -4
  33. package/components/step/common.d.ts +22 -0
  34. package/components/step/common.js +1 -0
  35. package/components/step/index.d.ts +1 -0
  36. package/components/step/index.js +1 -0
  37. package/components/step/index.scss +215 -0
  38. package/components/step/step.d.ts +10 -0
  39. package/components/step/step.vue +97 -0
  40. package/components/steps/common.d.ts +18 -1
  41. package/components/steps/common.js +1 -0
  42. package/components/steps/index.d.ts +1 -1
  43. package/components/steps/index.scss +0 -216
  44. package/components/steps/steps.d.ts +10 -2
  45. package/components/steps/steps.vue +34 -56
  46. package/components/tree/common.d.ts +11 -0
  47. package/components/tree/index.d.ts +1 -1
  48. package/components/tree/tree.d.ts +8 -2
  49. package/components/tree/tree.vue +28 -5
  50. package/components/tree/variables.scss +2 -2
  51. package/components/tree-node/index.scss +2 -1
  52. package/components/tree-node/tree-node.vue +25 -3
  53. package/global.d.ts +2 -0
  54. package/index.d.ts +2 -0
  55. package/index.js +2 -0
  56. package/package.json +2 -2
@@ -5,7 +5,7 @@
5
5
  <!-- #ifdef MP -->
6
6
  <root-portal>
7
7
  <!-- #endif -->
8
- <view class="sar-portal">
8
+ <view v-show="pageVisible" class="sar-portal">
9
9
  <sar-overlay
10
10
  v-if="overlay"
11
11
  :visible="visible"
@@ -17,13 +17,25 @@
17
17
  :root-class="overlayClass"
18
18
  @click="onOverlayClick"
19
19
  />
20
+ <!-- #ifndef MP -->
20
21
  <view
22
+ v-bind="$attrs"
21
23
  :class="popupClass"
22
24
  :style="popupStyle"
23
25
  @transitionend="onTransitionEnd"
24
26
  >
25
27
  <slot></slot>
26
28
  </view>
29
+ <!-- #endif -->
30
+ <!-- #ifdef MP -->
31
+ <view
32
+ :class="popupClass"
33
+ :style="popupStyle"
34
+ @transitionend="onTransitionEnd"
35
+ >
36
+ <slot></slot>
37
+ </view>
38
+ <!-- #endif -->
27
39
  </view>
28
40
  <!-- #ifdef MP -->
29
41
  </root-portal>
@@ -36,7 +48,8 @@
36
48
  <script>
37
49
  import { mergeDefaults as _mergeDefaults, defineComponent as _defineComponent } from "vue";
38
50
  import { computed, reactive, ref, toRef } from "vue";
39
- import { classNames, stringifyStyle, createBem } from "../../utils";
51
+ import { onHide, onShow } from "@dcloudio/uni-app";
52
+ import { classNames, stringifyStyle, createBem, isWeb } from "../../utils";
40
53
  import { useTransition, useZIndex } from "../../use";
41
54
  import SarOverlay from "../overlay/overlay.vue";
42
55
  import {
@@ -51,7 +64,8 @@ export default _defineComponent({
51
64
  options: {
52
65
  virtualHost: true,
53
66
  styleIsolation: "shared"
54
- }
67
+ },
68
+ inheritAttrs: false
55
69
  },
56
70
  __name: "popup",
57
71
  props: _mergeDefaults({
@@ -100,6 +114,17 @@ export default _defineComponent({
100
114
  const onOverlayClick = (event) => {
101
115
  emit("overlay-click", event);
102
116
  };
117
+ const pageVisible = ref(true);
118
+ onShow(() => {
119
+ if (isWeb) {
120
+ pageVisible.value = true;
121
+ }
122
+ });
123
+ onHide(() => {
124
+ if (isWeb) {
125
+ pageVisible.value = false;
126
+ }
127
+ });
103
128
  const popupClass = computed(() => {
104
129
  return classNames(
105
130
  bem.b(),
@@ -116,7 +141,7 @@ export default _defineComponent({
116
141
  transitionDuration: props.duration + "ms"
117
142
  });
118
143
  });
119
- const __returned__ = { props, emit, bem, zIndex, increaseZIndex, callVisibleHook, keepRenderClass, onVisibleHook, realVisible, transitionClass, onTransitionEnd, onOverlayClick, popupClass, popupStyle, SarOverlay };
144
+ const __returned__ = { props, emit, bem, zIndex, increaseZIndex, callVisibleHook, keepRenderClass, onVisibleHook, realVisible, transitionClass, onTransitionEnd, onOverlayClick, pageVisible, popupClass, popupStyle, SarOverlay };
120
145
  return __returned__;
121
146
  }
122
147
  });
@@ -0,0 +1,22 @@
1
+ import { type StyleValue } from 'vue';
2
+ import { type StepsStatus } from '../steps/common';
3
+ export interface StepProps {
4
+ rootStyle?: StyleValue;
5
+ rootClass?: string;
6
+ status?: StepsStatus;
7
+ name?: string;
8
+ description?: string;
9
+ index: number;
10
+ }
11
+ export interface StepSlots {
12
+ default?(props: {
13
+ status: StepsStatus;
14
+ }): any;
15
+ icon?(props: {
16
+ status: StepsStatus;
17
+ }): any;
18
+ }
19
+ export interface StepEmits {
20
+ }
21
+ export interface StepExpose {
22
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export type { StepProps, StepSlots, StepEmits, StepExpose } from './common';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,215 @@
1
+ @use '../style/base' as *;
2
+
3
+ @include bem(step) {
4
+ @include b() {
5
+ @include universal;
6
+ flex: 1;
7
+ font-size: var(--sar-steps-step-font-size);
8
+
9
+ &:first-child {
10
+ @include e(line-before) {
11
+ opacity: 0;
12
+ }
13
+ }
14
+
15
+ &:last-child {
16
+ flex: none;
17
+ white-space: nowrap;
18
+
19
+ @include e(line) {
20
+ display: none;
21
+ }
22
+
23
+ @include e(line-after) {
24
+ opacity: 0;
25
+ }
26
+ }
27
+
28
+ @include m(behind) {
29
+ @include e(line) {
30
+ background-color: var(--sar-steps-line-active-color);
31
+ }
32
+ }
33
+
34
+ @include m(self) {
35
+ @include e(line-before) {
36
+ background-color: var(--sar-steps-line-active-color);
37
+ }
38
+ }
39
+
40
+ @include m(finish) {
41
+ @include e(icon) {
42
+ color: var(--sar-steps-icon-finish-color);
43
+ }
44
+
45
+ @include e(body) {
46
+ color: var(--sar-steps-text-finish-color);
47
+ }
48
+ }
49
+
50
+ @include m(process) {
51
+ @include e(icon) {
52
+ color: var(--sar-steps-icon-process-color);
53
+ }
54
+
55
+ @include e(body) {
56
+ color: var(--sar-steps-text-process-color);
57
+ }
58
+ }
59
+
60
+ @include m(wait) {
61
+ @include e(icon) {
62
+ color: var(--sar-steps-icon-wait-color);
63
+ }
64
+
65
+ @include e(body) {
66
+ color: var(--sar-steps-text-wait-color);
67
+ }
68
+ }
69
+
70
+ @include m(error) {
71
+ @include e(icon) {
72
+ color: var(--sar-steps-icon-error-color);
73
+ }
74
+
75
+ @include e(body) {
76
+ color: var(--sar-steps-text-error-color);
77
+ }
78
+ }
79
+ }
80
+
81
+ @include e(header) {
82
+ @include universal;
83
+ flex-direction: row;
84
+ align-items: center;
85
+ padding-top: var(--sar-steps-header-gap-y);
86
+ padding-bottom: var(--sar-steps-header-gap-y);
87
+ }
88
+
89
+ @include e(line) {
90
+ @include universal;
91
+ height: var(--sar-steps-line-thickness);
92
+ width: 0;
93
+ flex-grow: 1;
94
+ flex-shrink: 1;
95
+ flex-basis: 0;
96
+ margin-left: var(--sar-steps-line-gap);
97
+ margin-right: var(--sar-steps-line-gap);
98
+ background-color: var(--sar-steps-line-color);
99
+ }
100
+
101
+ @include e(line-before) {
102
+ display: none;
103
+ }
104
+
105
+ @include e(icon) {
106
+ @include universal;
107
+ font-size: var(--sar-steps-icon-font-size);
108
+ }
109
+
110
+ @include e(body) {
111
+ @include universal;
112
+ }
113
+
114
+ @include e(name) {
115
+ font-size: var(--sar-steps-name-font-size);
116
+ }
117
+
118
+ @include e(description) {
119
+ margin-top: var(--sar-steps-description-margin-top);
120
+ font-size: var(--sar-steps-description-font-size);
121
+ color: var(--sar-steps-description-color);
122
+ }
123
+
124
+ @include m(vertical) {
125
+ flex-direction: row;
126
+ min-height: var(--sar-steps-step-min-height);
127
+
128
+ &:last-child {
129
+ @include e(line) {
130
+ white-space: unset;
131
+ }
132
+ }
133
+
134
+ @include e(header) {
135
+ top: calc(
136
+ var(--sar-steps-header-vertical-top) + var(--sar-steps-body-padding-y)
137
+ );
138
+ flex: none;
139
+ flex-direction: column;
140
+ padding-top: 0;
141
+ padding-bottom: 0;
142
+ padding-left: var(--sar-steps-header-gap-x);
143
+ padding-right: var(--sar-steps-header-gap-x);
144
+ }
145
+
146
+ @include e(line) {
147
+ width: var(--sar-steps-line-thickness);
148
+ height: 0;
149
+ margin-left: 0;
150
+ margin-right: 0;
151
+ margin-top: var(--sar-steps-line-gap);
152
+ margin-bottom: var(--sar-steps-line-gap);
153
+ }
154
+
155
+ @include e(body) {
156
+ flex: 1;
157
+ padding-top: var(--sar-steps-body-padding-y);
158
+ padding-bottom: var(--sar-steps-body-padding-y);
159
+ }
160
+ }
161
+
162
+ @include m(center) {
163
+ justify-content: center;
164
+
165
+ &:last-child {
166
+ flex: 1;
167
+ white-space: unset;
168
+
169
+ @include e(line) {
170
+ display: flex;
171
+ }
172
+ }
173
+
174
+ @include e(line-before) {
175
+ display: flex;
176
+ margin-left: 0;
177
+ }
178
+
179
+ @include e(line-after) {
180
+ margin-right: 0;
181
+ }
182
+
183
+ @include e(body) {
184
+ align-items: center;
185
+ }
186
+ }
187
+
188
+ @include m-intersect(center, vertical) {
189
+ justify-content: center;
190
+ align-items: center;
191
+
192
+ &:last-child {
193
+ flex: 1;
194
+ white-space: unset;
195
+ }
196
+
197
+ @include e(header) {
198
+ top: 0;
199
+ align-self: stretch;
200
+ }
201
+
202
+ @include e(line-before) {
203
+ margin-top: 0;
204
+ }
205
+
206
+ @include e(line-after) {
207
+ margin-bottom: 0;
208
+ }
209
+
210
+ @include e(body) {
211
+ justify-content: center;
212
+ align-items: flex-start;
213
+ }
214
+ }
215
+ }
@@ -0,0 +1,10 @@
1
+ import { type StepProps, type StepSlots } from './common';
2
+ declare function __VLS_template(): Readonly<StepSlots> & StepSlots;
3
+ declare const __VLS_component: import("vue").DefineComponent<StepProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<StepProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
4
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
5
+ export default _default;
6
+ type __VLS_WithTemplateSlots<T, S> = T & {
7
+ new (): {
8
+ $slots: S;
9
+ };
10
+ };
@@ -0,0 +1,97 @@
1
+ <template>
2
+ <view :class="stepClass" :style="stepStyle">
3
+ <view :class="bem.e('header')">
4
+ <view :class="classNames(bem.e('line'), bem.e('line-before'))"></view>
5
+ <view :class="bem.e('icon')">
6
+ <slot name="icon" :status="currentStatus">
7
+ <sar-icon
8
+ :family="context.iconFamily || 'sari'"
9
+ :name="statusIcon"
10
+ :size="context.iconSize"
11
+ />
12
+ </slot>
13
+ </view>
14
+ <view :class="classNames(bem.e('line'), bem.e('line-after'))"></view>
15
+ </view>
16
+ <view :class="bem.e('body')">
17
+ <slot :status="currentStatus">
18
+ <view :class="bem.e('name')">{{ name }}</view>
19
+ <view v-if="description" :class="bem.e('description')">
20
+ {{ description }}
21
+ </view>
22
+ </slot>
23
+ </view>
24
+ </view>
25
+ </template>
26
+
27
+ <script>
28
+ import { defineComponent as _defineComponent } from "vue";
29
+ import { computed, inject } from "vue";
30
+ import SarIcon from "../icon/icon.vue";
31
+ import { classNames, stringifyStyle, createBem } from "../../utils";
32
+ import { stepsContextSymbol } from "../steps/common";
33
+ export default _defineComponent({
34
+ components: {
35
+ SarIcon,
36
+ },
37
+ ...{
38
+ options: {
39
+ virtualHost: true,
40
+ styleIsolation: "shared"
41
+ }
42
+ },
43
+ __name: "step",
44
+ props: {
45
+ rootStyle: { type: [Boolean, null, String, Object, Array], required: false, skipCheck: true },
46
+ rootClass: { type: String, required: false },
47
+ status: { type: String, required: false },
48
+ name: { type: String, required: false },
49
+ description: { type: String, required: false },
50
+ index: { type: Number, required: true }
51
+ },
52
+ setup(__props, { expose: __expose }) {
53
+ const props = __props;
54
+ __expose({});
55
+ const bem = createBem("step");
56
+ const context = inject(stepsContextSymbol);
57
+ if (!context) {
58
+ throw new Error("Step must be included in Steps.");
59
+ }
60
+ const currentStatus = computed(() => {
61
+ return props.status ?? (props.index < context.current ? "finish" : props.index === context.current ? context.status ?? "process" : "wait");
62
+ });
63
+ const statusIcon = computed(() => {
64
+ return {
65
+ finish: context.finishIcon,
66
+ process: context.processIcon,
67
+ wait: context.waitIcon,
68
+ error: context.errorIcon
69
+ }[currentStatus.value];
70
+ });
71
+ const position = computed(() => {
72
+ return props.index < context.current ? "behind" : context.current === props.index ? "self" : "front";
73
+ });
74
+ const stepClass = computed(() => {
75
+ return classNames(
76
+ bem.b(),
77
+ bem.m("center", context.center),
78
+ bem.m(currentStatus.value),
79
+ bem.m(position.value),
80
+ bem.m(context.direction),
81
+ props.rootClass
82
+ );
83
+ });
84
+ const stepStyle = computed(() => {
85
+ return stringifyStyle(props.rootStyle);
86
+ });
87
+ const __returned__ = { props, bem, context, currentStatus, statusIcon, position, stepClass, stepStyle, SarIcon, get classNames() {
88
+ return classNames;
89
+ } };
90
+ return __returned__;
91
+ }
92
+ });
93
+ </script>
94
+
95
+ <style lang="scss">
96
+ @import './index.scss';
97
+ </style>
@@ -1,4 +1,4 @@
1
- import { type StyleValue } from 'vue';
1
+ import { InjectionKey, type StyleValue } from 'vue';
2
2
  export type StepsStatus = 'wait' | 'process' | 'error' | 'finish';
3
3
  export interface StepsItem {
4
4
  status?: StepsStatus;
@@ -23,9 +23,26 @@ export interface StepsProps {
23
23
  export declare const defaultStepsProps: {
24
24
  current: number;
25
25
  center: boolean;
26
+ itemList: () => never[];
26
27
  direction: StepsProps["direction"];
27
28
  finishIcon: string;
28
29
  processIcon: string;
29
30
  waitIcon: string;
30
31
  errorIcon: string;
31
32
  };
33
+ export interface StepsSlots {
34
+ default?(props: Record<string, never>): any;
35
+ }
36
+ export interface StepsContext {
37
+ current: number;
38
+ center?: boolean;
39
+ direction?: StepsProps['direction'];
40
+ iconFamily?: string;
41
+ iconSize?: string;
42
+ finishIcon?: string;
43
+ processIcon?: string;
44
+ waitIcon?: string;
45
+ errorIcon?: string;
46
+ status?: StepsStatus;
47
+ }
48
+ export declare const stepsContextSymbol: InjectionKey<StepsContext>;
@@ -1,2 +1,3 @@
1
1
  import { defaultConfig } from '../config';
2
2
  export const defaultStepsProps = defaultConfig.steps;
3
+ export const stepsContextSymbol = Symbol('steps-context');
@@ -1 +1 @@
1
- export type { StepsStatus, StepsItem, StepsProps } from './common';
1
+ export type { StepsProps, StepsSlots, StepsContext, StepsStatus, StepsItem, } from './common';
@@ -8,224 +8,8 @@
8
8
  align-items: flex-start;
9
9
  }
10
10
 
11
- @include e(step) {
12
- @include universal;
13
- flex: 1;
14
- font-size: var(--sar-steps-step-font-size);
15
-
16
- &:first-child {
17
- @include e(line-before) {
18
- opacity: 0;
19
- }
20
- }
21
-
22
- &:last-child {
23
- flex: none;
24
- white-space: nowrap;
25
-
26
- @include e(line) {
27
- display: none;
28
- }
29
-
30
- @include e(line-after) {
31
- opacity: 0;
32
- }
33
- }
34
-
35
- @include m(behind) {
36
- @include e(line) {
37
- background-color: var(--sar-steps-line-active-color);
38
- }
39
- }
40
-
41
- @include m(self) {
42
- @include e(line-before) {
43
- background-color: var(--sar-steps-line-active-color);
44
- }
45
- }
46
-
47
- @include m(finish) {
48
- @include e(icon) {
49
- color: var(--sar-steps-icon-finish-color);
50
- }
51
-
52
- @include e(body) {
53
- color: var(--sar-steps-text-finish-color);
54
- }
55
- }
56
-
57
- @include m(process) {
58
- @include e(icon) {
59
- color: var(--sar-steps-icon-process-color);
60
- }
61
-
62
- @include e(body) {
63
- color: var(--sar-steps-text-process-color);
64
- }
65
- }
66
-
67
- @include m(wait) {
68
- @include e(icon) {
69
- color: var(--sar-steps-icon-wait-color);
70
- }
71
-
72
- @include e(body) {
73
- color: var(--sar-steps-text-wait-color);
74
- }
75
- }
76
-
77
- @include m(error) {
78
- @include e(icon) {
79
- color: var(--sar-steps-icon-error-color);
80
- }
81
-
82
- @include e(body) {
83
- color: var(--sar-steps-text-error-color);
84
- }
85
- }
86
- }
87
-
88
- @include e(header) {
89
- @include universal;
90
- flex-direction: row;
91
- align-items: center;
92
- padding-top: var(--sar-steps-header-gap-y);
93
- padding-bottom: var(--sar-steps-header-gap-y);
94
- }
95
-
96
- @include e(line) {
97
- @include universal;
98
- height: var(--sar-steps-line-thickness);
99
- width: 0;
100
- flex-grow: 1;
101
- flex-shrink: 1;
102
- flex-basis: 0;
103
- margin-left: var(--sar-steps-line-gap);
104
- margin-right: var(--sar-steps-line-gap);
105
- background-color: var(--sar-steps-line-color);
106
- }
107
-
108
- @include e(line-before) {
109
- display: none;
110
- }
111
-
112
- @include e(icon) {
113
- @include universal;
114
- font-size: var(--sar-steps-icon-font-size);
115
- }
116
-
117
- @include e(body) {
118
- @include universal;
119
- }
120
-
121
- @include e(name) {
122
- font-size: var(--sar-steps-name-font-size);
123
- }
124
-
125
- @include e(description) {
126
- margin-top: var(--sar-steps-description-margin-top);
127
- font-size: var(--sar-steps-description-font-size);
128
- color: var(--sar-steps-description-color);
129
- }
130
-
131
11
  @include m(vertical) {
132
12
  flex-direction: column;
133
13
  align-items: stretch;
134
-
135
- @include e(step) {
136
- flex-direction: row;
137
- min-height: var(--sar-steps-step-min-height);
138
-
139
- &:last-child {
140
- @include e(line) {
141
- white-space: unset;
142
- }
143
- }
144
- }
145
-
146
- @include e(header) {
147
- top: calc(
148
- var(--sar-steps-header-vertical-top) + var(--sar-steps-body-padding-y)
149
- );
150
- flex: none;
151
- flex-direction: column;
152
- padding-top: 0;
153
- padding-bottom: 0;
154
- padding-left: var(--sar-steps-header-gap-x);
155
- padding-right: var(--sar-steps-header-gap-x);
156
- }
157
-
158
- @include e(line) {
159
- width: var(--sar-steps-line-thickness);
160
- height: 0;
161
- margin-left: 0;
162
- margin-right: 0;
163
- margin-top: var(--sar-steps-line-gap);
164
- margin-bottom: var(--sar-steps-line-gap);
165
- }
166
-
167
- @include e(body) {
168
- flex: 1;
169
- padding-top: var(--sar-steps-body-padding-y);
170
- padding-bottom: var(--sar-steps-body-padding-y);
171
- }
172
- }
173
-
174
- @include m(center) {
175
- @include e(step) {
176
- justify-content: center;
177
-
178
- &:last-child {
179
- flex: 1;
180
- white-space: unset;
181
-
182
- @include e(line) {
183
- display: flex;
184
- }
185
- }
186
- }
187
-
188
- @include e(line-before) {
189
- display: flex;
190
- margin-left: 0;
191
- }
192
-
193
- @include e(line-after) {
194
- margin-right: 0;
195
- }
196
-
197
- @include e(body) {
198
- align-items: center;
199
- }
200
- }
201
-
202
- @include m-intersect(center, vertical) {
203
- @include e(step) {
204
- justify-content: center;
205
- align-items: center;
206
-
207
- &:last-child {
208
- flex: 1;
209
- white-space: unset;
210
- }
211
- }
212
-
213
- @include e(header) {
214
- top: 0;
215
- align-self: stretch;
216
- }
217
-
218
- @include e(line-before) {
219
- margin-top: 0;
220
- }
221
-
222
- @include e(line-after) {
223
- margin-bottom: 0;
224
- }
225
-
226
- @include e(body) {
227
- justify-content: center;
228
- align-items: flex-start;
229
- }
230
14
  }
231
15
  }