Skip to content

Commit d263f5c

Browse files
committed
feat: export base box component
1 parent 3991efa commit d263f5c

File tree

5 files changed

+48
-43
lines changed

5 files changed

+48
-43
lines changed

packages/common-enums/src/components.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export const componentNames = [
88
"BaseInput",
99
"BaseSelect",
1010
"BaseWrapper",
11+
"BaseBox",
1112
"BaseErrorBoundary",
1213
// icon
1314
"Icon",

packages/components-vue/src/components/loader/Content.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
</template>
4141
<LoaderSimple v-else-if="!noLoader" :label="label" :theme="theme" />
4242
</div>
43-
<BaseWrapper v-else :wrap="!unwrap" :el="el" :class="$attrs.class">
43+
<BaseWrapper v-else :wrap="!unwrap" :el="el" v-bind="$attrs">
4444
<div v-if="loading && !noLoader" class="back --overlay is--active">
4545
<LoaderSimple :label="label" :theme="theme" />
4646
</div>

packages/components-vue/src/components/slider/Simple.vue

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
<template>
2-
<header
2+
<LoaderContent
33
ref="wrapperRef"
4+
:loading="loading"
5+
content
46
class="xamu-slider"
7+
el="header"
8+
:theme="theme"
59
@mouseover="mouseOnTabs = true"
610
@mouseleave="mouseOnTabs = false"
711
>
@@ -19,7 +23,6 @@
1923
>
2024
<slot></slot>
2125
</component>
22-
<LoaderSimple v-if="loading" :theme="theme" />
2326
</div>
2427
<ul
2528
v-if="childCount > 1 && controls"
@@ -64,7 +67,7 @@
6467
</li>
6568
</ul>
6669
</div>
67-
</header>
70+
</LoaderContent>
6871
</template>
6972

7073
<script setup lang="ts">
@@ -78,7 +81,7 @@
7881
import IconFa from "../icon/Fa.vue";
7982
import ActionButton from "../action/Button.vue";
8083
import ActionButtonToggle from "../action/ButtonToggle.vue";
81-
import LoaderSimple from "../loader/Simple.vue";
84+
import LoaderContent from "../loader/Content.vue";
8285
8386
import { useHelpers } from "../../composables/utils";
8487
import type { iUseThemeProps } from "../../types/props";
@@ -284,8 +287,6 @@
284287
* Set slider interval
285288
*/
286289
function launchInterval() {
287-
loading.value = true;
288-
289290
if (!sliderRef.value || !sliderContainerRef.value) return;
290291
291292
const slides = Array.from(sliderRef.value.children || []) as HTMLElement[];
@@ -307,7 +308,6 @@
307308
308309
debouncedTab(false);
309310
}, props.intervalDuration);
310-
loading.value = false;
311311
}
312312
313313
/**
@@ -318,7 +318,9 @@
318318
// lifecycle
319319
if (isBrowser) {
320320
onMounted(() => {
321+
loading.value = true;
321322
launchInterval();
323+
loading.value = false;
322324
});
323325
324326
onBeforeUnmount(() => {

packages/components-vue/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export { default as BaseAction } from "./components/base/Action.vue";
44
export { default as BaseInput } from "./components/base/Input.vue";
55
export { default as BaseSelect } from "./components/base/Select.vue";
66
export { default as BaseWrapper } from "./components/base/Wrapper.vue";
7+
export { default as BaseBox } from "./components/base/Box.vue";
78
export { default as BaseErrorBoundary } from "./components/base/ErrorBoundary.vue";
89

910
// icon

packages/styles/src/components/action/_box.scss

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@
3636
@include module.flex-box(column, nowrap, flex-start, stretch);
3737

3838
@layer defaults {
39-
> :not(:last-child) {
40-
// @defaults mBottom
41-
margin-bottom: 1rem;
39+
& {
40+
// @defaults
41+
gap: 1rem;
4242
}
4343
}
4444
}
@@ -115,7 +115,30 @@
115115
}
116116
}
117117

118-
> .#{module.$component-box} {
118+
// Square shape
119+
// this assummes there is only one child
120+
//
121+
// @group Modifiers
122+
&[class*="--square"] {
123+
margin-left: auto;
124+
margin-right: auto;
125+
overflow: hidden;
126+
127+
&::before {
128+
content: "";
129+
display: block;
130+
width: 100%;
131+
height: 0;
132+
padding-bottom: 100%;
133+
}
134+
135+
> * {
136+
position: absolute;
137+
top: 50%;
138+
left: 50%;
139+
transform: translate(-50%, -50%);
140+
}
141+
119142
&:has(img) {
120143
padding: 0;
121144
}
@@ -128,38 +151,16 @@
128151
}
129152
}
130153
}
154+
}
131155

132-
// Square shape
133-
// this assummes there is only one child
134-
//
135-
// @group Modifiers
136-
@include module.extend-maps(
137-
module.$element-sizes,
138-
meta.get-function("box-square-size-selector"),
139-
md,
140-
".#{module.$prefix-default}--square"
141-
)
142-
using($name, $value, $is-default) {
143-
width: $value;
144-
margin-left: auto;
145-
margin-right: auto;
146-
overflow: hidden;
147-
148-
&::before {
149-
content: "";
150-
display: block;
151-
width: 100%;
152-
height: 0;
153-
padding-bottom: 100%;
154-
}
155-
156-
> * {
157-
position: absolute;
158-
top: 50%;
159-
left: 50%;
160-
transform: translate(-50%, -50%);
161-
}
162-
}
156+
@include module.extend-maps(
157+
module.$element-sizes,
158+
meta.get-function("box-square-size-selector"),
159+
md,
160+
".#{module.$prefix-default}--square"
161+
)
162+
using($name, $value, $is-default) {
163+
width: $value;
163164
}
164165
}
165166
}

0 commit comments

Comments
 (0)