@viur/shop-components 0.0.1-dev.2 → 0.0.1-dev.4

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.
@@ -1,18 +1,17 @@
1
1
  <template>
2
- <sl-card class="card">
2
+ <sl-card class="viur-shop-item-card-card">
3
3
  <img
4
- slot="image"
5
- :src="getImage(item)"
6
- :alt="item.shop_name"
7
- class="card-image"
8
- />
9
- <h3 class="card-headline"> {{ item.shop_name }}</h3>
10
- <h4 class="card-subline">B 21 x H 6,5 x T 19 cm</h4>
11
- <div class="price">
12
- {{ item.shop_price_retail }}
13
- </div>
14
- <div class="card-footer" slot="footer">
15
- <!-- <sl-button-group label="Amount">
4
+ slot="image"
5
+ :src="getImage(item)"
6
+ :alt="item.shop_name"
7
+ loading="lazy"
8
+ class="viur-shop-item-card-image"
9
+ />
10
+ <h3 class="viur-shop-item-card-headline">{{ item.shop_name }}</h3>
11
+ <h4 class="viur-shop-item-card-subline">B 21 x H 6,5 x T 19 cm</h4>
12
+ <div class="viur-shop-item-card-price">{{ item.shop_price_retail }} €</div>
13
+ <div class="viur-shop-item-card-footer" slot="footer">
14
+ <!-- <sl-button-group label="Amount">
16
15
  <sl-tooltip content="Remove">
17
16
  <sl-icon-button
18
17
  variant="primary"
@@ -44,136 +43,123 @@
44
43
  </sl-icon-button>
45
44
  </sl-tooltip>
46
45
  </sl-button-group> -->
47
- <sl-button
48
- size="small"
49
- class="add-to-cart-btn"
50
- variant="primary"
51
- title="Add to cart"
52
- @click.stop="cartStore.addToCart(item.key, cartStore.state.currentCart)"
53
- >
54
- <sl-icon name="bag-plus"
55
- slot="prefix"
56
- ></sl-icon>
57
-
58
- In den Warenkorb
59
- </sl-button>
60
-
61
- <sl-button
62
- size="small"
63
- outline
64
- class="add-to-favourites-btn"
65
- variant="primary"
66
- title="Add to favourites"
67
- >
68
- <sl-icon name="heart"
69
- slot="prefix"
70
- ></sl-icon>
71
- </sl-button>
72
-
73
-
74
- </div>
46
+ <sl-button
47
+ size="small"
48
+ class="viur-shop-item-card-add-to-cart-btn"
49
+ variant="primary"
50
+ title="Add to cart"
51
+ @click.stop="cartStore.addToCart(item.key, cartStore.state.basket)"
52
+ >
53
+ <sl-icon name="bag-plus" slot="prefix"></sl-icon>
54
+
55
+ In den Warenkorb
56
+ </sl-button>
57
+
58
+ <sl-button
59
+ size="small"
60
+ outline
61
+ class="viur-shop-item-card-add-to-favourites-btn"
62
+ variant="primary"
63
+ title="Add to favourites"
64
+ >
65
+ <sl-icon name="heart" slot="prefix"></sl-icon>
66
+ </sl-button>
67
+ </div>
75
68
  </sl-card>
76
69
  </template>
77
70
 
78
- <script>
79
- import {Request} from "@viur/vue-utils";
71
+ <script setup>
72
+ import { Request } from "@viur/vue-utils";
73
+ import { useCartStore } from "../../../stores/cart";
80
74
 
81
- export default {
82
- props: {
83
- item: {
84
- type: Object,
85
- required: true
86
- }
75
+ const props = defineProps({
76
+ item: {
77
+ type: Object,
78
+ required: true,
87
79
  },
88
- setup(props, context) {
80
+ });
89
81
 
90
- function getImage(item) {
91
- let imageUrl =
92
- "https://images.unsplash.com/photo-1559209172-0ff8f6d49ff7?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=80";
93
- if (item.dk_artikel.dest.image) {
94
- return Request.downloadUrlFor(item.dk_artikel.dest.image);
95
- }
82
+ const cartStore = useCartStore();
96
83
 
97
- return imageUrl;
84
+ function getImage(item) {
85
+ let imageUrl =
86
+ "https://images.unsplash.com/photo-1559209172-0ff8f6d49ff7?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=80";
87
+ if (item.dk_artikel.dest.image) {
88
+ return Request.downloadUrlFor(item.dk_artikel.dest.image);
98
89
  }
99
90
 
100
- return {
101
- props,
102
- getImage
103
- }
104
- }
91
+ return imageUrl;
105
92
  }
106
93
  </script>
107
94
 
108
95
  <style scoped>
109
- .card {
96
+ .viur-shop-item-card-card {
110
97
  width: 100%;
111
98
 
112
- &::part(header){
99
+ &::part(header) {
113
100
  padding: var(--sl-spacing-medium) 0;
114
- }
101
+ }
115
102
 
116
- &::part(body){
103
+ &::part(body) {
117
104
  padding: var(--sl-spacing-medium) 0;
118
- }
105
+ }
119
106
 
120
- &::part(footer){
107
+ &::part(footer) {
121
108
  padding: var(--sl-spacing-medium) 0;
122
- }
109
+ }
123
110
 
124
- &:hover{
125
- .add-to-cart-btn{
111
+ &:hover {
112
+ .viur-shop-item-card-add-to-cart-btn {
126
113
  opacity: 1;
127
114
  }
128
115
 
129
- .card-headline{
130
- color: var(--sl-color-primary-500)
116
+ .viur-shop-item-card-headline {
117
+ color: var(--sl-color-primary-500);
131
118
  }
132
119
 
133
- .card-image{
120
+ .viur-shop-item-card-image {
134
121
  transform: scale(1.02);
135
122
  }
136
123
  }
137
124
  }
138
125
 
139
- .card-footer{
140
- display: flex;
141
- flex-direction: row;
142
- align-items: center;
143
- width: 100%;
126
+ .viur-shop-item-card-footer {
127
+ display: flex;
128
+ flex-direction: row;
129
+ align-items: center;
130
+ width: 100%;
144
131
  }
145
132
 
146
- .add-to-cart-btn{
147
- transition: all ease .3s;
133
+ .viur-shop-item-card-add-to-cart-btn {
134
+ transition: all ease 0.3s;
148
135
  margin-right: var(--sl-spacing-medium);
149
136
  opacity: 0;
150
137
  }
151
138
 
152
- .add-to-favourites-btn{
139
+ .viur-shop-item-card-add-to-favourites-btn {
153
140
  margin-left: auto;
154
141
  }
155
142
 
156
-
157
- .card-image {
143
+ .viur-shop-item-card-image {
158
144
  aspect-ratio: 1;
159
145
  object-fit: cover;
160
- transition: all ease .3s;
146
+ transition: all ease 0.3s;
161
147
  }
162
148
 
163
- .card-headline{
149
+ .viur-shop-item-card-headline {
164
150
  font-size: 1.1em;
165
151
  font-weight: bold;
166
152
  color: var(--ignt-basic-color-text);
167
153
  margin-bottom: var(--sl-spacing-2x-small);
168
- transition: all ease .3s;
154
+ transition: all ease 0.3s;
169
155
  }
170
156
 
171
- .card-subline{
157
+ .viur-shop-item-card-subline {
172
158
  color: var(--ignt-basic-color-text);
173
159
  margin-bottom: var(--sl-spacing-2x-small);
174
160
  }
175
161
 
176
- .price{
162
+ .viur-shop-item-card-price {
177
163
  font-size: 1.1em;
178
164
  font-weight: bold;
179
165
  color: var(--ignt-basic-color-text);
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div class="wrap">
3
- <div class="image-wrap">
4
- <sl-carousel class="carousel-thumbnails" navigation loop>
3
+ <div class="viur-shop-item-view-image-wrap">
4
+ <sl-carousel class="viur-shop-item-view-carousel-thumbnails" navigation loop>
5
5
  <sl-carousel-item>
6
6
  <img
7
7
  :alt="state.item.shop_name"
@@ -10,24 +10,24 @@
10
10
  </sl-carousel-item>
11
11
  </sl-carousel>
12
12
 
13
- <div class="thumbnails">
14
- <div class="thumbnails__scroller">
13
+ <div class="viur-shop-item-view-thumbnails">
14
+ <div class="viur-shop-item-view-thumbnails-scroller">
15
15
  <img :alt="state.item.shop_name"
16
- class="thumbnails__image active"
16
+ class="viur-shop-item-view-thumbnails-image active"
17
17
  :src="getImage(state.item)" />
18
18
  </div>
19
19
  </div>
20
20
  </div>
21
21
 
22
- <div class="info-wrap">
23
- <h1 class="headline">{{ state.item.shop_name }}</h1>
24
- <h2 class="subline">B 21 x H 6,5 x T 19 cm</h2>
22
+ <div class="viur-shop-item-view-info-wrap">
23
+ <h1 class="viur-shop-item-view-headline">{{ state.item.shop_name }}</h1>
24
+ <h2 class="viur-shop-item-view-subline">B 21 x H 6,5 x T 19 cm</h2>
25
25
 
26
- <div class="price">
26
+ <div class="viur-shop-item-view-price">
27
27
  {{ state.item.shop_price_retail }} €
28
28
  </div>
29
29
 
30
- <div class="paragraph">
30
+ <div class="viur-shop-item-view-paragraph">
31
31
  Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
32
32
  nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
33
33
  sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
@@ -38,10 +38,10 @@
38
38
  gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
39
39
  </div>
40
40
 
41
- <div class="btn-wrap">
41
+ <div class="viur-shop-item-view-btn-wrap">
42
42
  <sl-button
43
43
  size="small"
44
- class="add-to-cart-btn"
44
+ class="viur-shop-item-view-add-to-cart-btn"
45
45
  variant="primary"
46
46
  title="Add to cart"
47
47
  @click.stop="cartStore.addToCart(item.key, cartStore.state.currentCart)"
@@ -56,7 +56,7 @@
56
56
  <sl-button
57
57
  size="small"
58
58
  outline
59
- class="add-to-favourites-btn"
59
+ class="viur-shop-item-view-add-to-favourites-btn"
60
60
  variant="primary"
61
61
  title="Add to favourites"
62
62
  >
@@ -70,8 +70,8 @@
70
70
 
71
71
  </div>
72
72
  <br>
73
- <h1 class="headline">Ähnliche Artikel</h1>
74
- <div class="item-grid">
73
+ <h1 class="viur-shop-item-view-headline">Ähnliche Artikel</h1>
74
+ <div class="viur-shop-item-view-item-grid">
75
75
  <ItemCard :item="state.item">
76
76
  </ItemCard>
77
77
 
@@ -119,11 +119,11 @@ onBeforeMount(async () => {
119
119
  grid-template-columns: 45% minmax(0 ,1fr);
120
120
  }
121
121
 
122
- .info-wrap{
122
+ .viur-shop-item-view-info-wrap{
123
123
  padding: var(--sl-spacing-x-large);
124
124
  }
125
125
 
126
- .image-wrap{
126
+ .viur-shop-item-view-image-wrap{
127
127
  display: flex;
128
128
  flex-direction: column;
129
129
  }
@@ -164,59 +164,59 @@ onBeforeMount(async () => {
164
164
  }
165
165
  }
166
166
  }
167
- .thumbnails {
167
+
168
+ .viur-shop-item-view-thumbnails {
168
169
  display: flex;
169
170
  justify-content: start;
170
171
  margin-top: vaR(--sl-spacing-medium)
171
172
  }
172
173
 
173
- .thumbnails__scroller {
174
+ .viur-shop-item-view-thumbnails-scroller {
174
175
  display: flex;
175
176
  gap: var(--sl-spacing-small);
176
177
  overflow-x: auto;
177
178
  scrollbar-width: none;
178
179
  scroll-behavior: smooth;
179
180
  scroll-padding: var(--sl-spacing-small);
180
- }
181
181
 
182
- .thumbnails__scroller::-webkit-scrollbar {
183
- display: none;
182
+ &::-webkit-scrollbar {
183
+ display: none;
184
+ }
184
185
  }
185
186
 
186
- .thumbnails__image {
187
+ .viur-shop-item-view-thumbnails-image {
187
188
  width: 64px;
188
189
  height: 64px;
189
190
  object-fit: cover;
190
-
191
191
  opacity: 0.3;
192
192
  will-change: opacity;
193
193
  transition: 250ms opacity;
194
-
195
194
  cursor: pointer;
196
- }
197
195
 
198
- .thumbnails__image.active {
199
- opacity: 1;
196
+ &.active {
197
+ opacity: 1;
198
+ }
200
199
  }
201
200
 
202
- .headline{
201
+
202
+ .viur-shop-item-view-headline{
203
203
  margin-bottom: var(--sl-spacing-small);
204
204
  }
205
205
 
206
- .subline{
206
+ .viur-shop-item-view-subline{
207
207
  margin-bottom: var(--sl-spacing-small);
208
208
  }
209
209
 
210
- .price{
210
+ .viur-shop-item-view-price{
211
211
  font-size: 1.4em;
212
212
  margin-bottom: var(--sl-spacing-small);
213
213
  }
214
214
 
215
- .paragraph{
215
+ .viur-shop-item-view-paragraph{
216
216
  margin-bottom: var(--sl-spacing-x-large);
217
217
  }
218
218
 
219
- .btn-wrap{
219
+ .viur-shop-item-view-btn-wrap{
220
220
  display: flex;
221
221
  flex-direction: column;
222
222
 
@@ -225,7 +225,7 @@ onBeforeMount(async () => {
225
225
  }
226
226
  }
227
227
 
228
- .item-grid{
228
+ .viur-shop-item-view-item-grid{
229
229
  display: grid;
230
230
  grid-template-columns: repeat(4, minmax(0, 1fr));
231
231
  grid-gap: var(--sl-spacing-medium);
@@ -0,0 +1,100 @@
1
+ <template>
2
+ <order-view :tabs="state.tabs" @tabChange="handleTabs" />
3
+ </template>
4
+
5
+ <script setup>
6
+ import { onBeforeMount, reactive, shallowRef } from "vue";
7
+ import { ListRequest } from "@viur/vue-utils";
8
+
9
+ import CartView from "../../cart/CartView.vue";
10
+ import ConfirmView from "../../cart/ConfirmView.vue";
11
+ import OrderView from "./OrderView.vue";
12
+ import CategoryView from "../category/CategoryView.vue";
13
+ import OrderComplete from "./OrderComplete.vue";
14
+ import UserInformation from "../information/UserInformation.vue";
15
+ import UserInfoMulti from "../information/UserInfoMulti.vue";
16
+ import { useCartStore } from "../../../stores/cart";
17
+
18
+ const cartStore = useCartStore();
19
+
20
+ const state = reactive({
21
+ tabs: {
22
+ cart: {
23
+ component: shallowRef(CartView),
24
+ props: { sidebar: true, mode: "basket" },
25
+ displayName: "Warenkorb",
26
+ icon: { name: "cart", library: "hsk" },
27
+ position: 2,
28
+ disabled: false,
29
+ atShow: null,
30
+ atHide: null,
31
+ },
32
+ confirm: {
33
+ component: shallowRef(ConfirmView),
34
+ props: {},
35
+ displayName: "Bestellung prüfen",
36
+ icon: { name: "order-check", library: "hsk" },
37
+ position: 5,
38
+ disabled: false,
39
+ atShow: null,
40
+ atHide: null,
41
+ },
42
+ // order: {
43
+ // component: shallowRef(CategoryView),
44
+ // props: {
45
+ // listHandler: ListRequest("categorystore", {
46
+ // module: "variante",
47
+ // params: { type: "dk", limit: 99 },
48
+ // }),
49
+ // },
50
+ // displayName: "Artikel Bestellen",
51
+ // icon: { name: "cart-add", library: "hsk" },
52
+ // position: 1,
53
+ // disabled: false,
54
+ // atShow: null,
55
+ // atHide: null,
56
+ // },
57
+ orderComplete: {
58
+ component: shallowRef(OrderComplete),
59
+ props: {},
60
+ displayName: "Bestellung Abgeschlossen",
61
+ icon: { name: "order-confirmed", library: "hsk" },
62
+ position: 6,
63
+ disabled: true,
64
+ atShow: null,
65
+ atHide: null,
66
+ },
67
+ userInfo: {
68
+ component: shallowRef(UserInformation),
69
+ props: {},
70
+ displayName: "Daten Eingeben",
71
+ icon: { name: "user", library: "hsk" },
72
+ position: 3,
73
+ disabled: false,
74
+ atShow: null,
75
+ atHide: null,
76
+ },
77
+ userInfoMulti: {
78
+ component: shallowRef(UserInfoMulti),
79
+ props: {},
80
+ displayName: "Daten Eingeben (Multi)",
81
+ icon: { name: "user", library: "hsk" },
82
+ position: 4,
83
+ disabled: false,
84
+ atShow: null,
85
+ atHide: null,
86
+ },
87
+ },
88
+ });
89
+
90
+ function handleTabs(e) {
91
+ // console.dir("hier", e.target)
92
+ if (e?.detail.name === "confirm") {
93
+ state.tabs.orderComplete.disabled = false;
94
+ }
95
+ }
96
+
97
+ onBeforeMount(async () => {
98
+ await cartStore.getAdressStructure();
99
+ });
100
+ </script>
@@ -0,0 +1,41 @@
1
+ <template>
2
+ <div class="bind">
3
+ <h1 class="headline">Vielen Dank für Ihre Bestellung</h1>
4
+ <br>
5
+ <p class="paragraph">
6
+ <strong>Ihre Bestellnummer:</strong> 123345670
7
+ </p>
8
+ <p class="paragraph">
9
+ Wir haben Ihre Bestellung erhalten und werden diese schenllstmöglich bearbeiten.<br>
10
+ Sie erhalten in wenigen Minuten eine Bestätigung per E-Mail.
11
+
12
+ <div class="btn-wrap">
13
+ <sl-button size="medium">
14
+ Zur Startseite
15
+ </sl-button>
16
+
17
+ <sl-button variant="primary"
18
+ size="medium">
19
+ Weiter Einkaufen
20
+ </sl-button>
21
+ </div>
22
+ </p>
23
+
24
+ </div>
25
+ </template>
26
+
27
+ <script setup></script>
28
+
29
+ <style scoped>
30
+
31
+ .btn-wrap{
32
+ display: flex;
33
+ flex-direction: row;
34
+ flex-wrap: nowrap;
35
+ justify-content: space-between;
36
+ width: 100%;
37
+
38
+ margin-top: var(--sl-spacing-x-large);
39
+ }
40
+
41
+ </style>
@@ -0,0 +1,7 @@
1
+ <template>
2
+
3
+ HALLO
4
+ </template>
5
+
6
+ <script setup>
7
+ </script>