Skip to content

Commit 31d4eb2

Browse files
New frontend (#31)
1 parent b9e178e commit 31d4eb2

17 files changed

+334
-76
lines changed

composer.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"prefer-stable": true,
1919
"require": {
2020
"php": "^8.0",
21+
"blade-ui-kit/blade-icons": "^1.8",
2122
"rapidez/core": "^3.0|^4.0"
2223
},
2324
"autoload": {
@@ -26,7 +27,10 @@
2627
}
2728
},
2829
"config": {
29-
"sort-packages": true
30+
"sort-packages": true,
31+
"allow-plugins": {
32+
"php-http/discovery": true
33+
}
3034
},
3135
"extra": {
3236
"laravel": {

lang/nl.json

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
11
{
22
"Add Your Review": "Voeg uw review toe",
3+
"Are you familiar with this article? Share your experience with others and let us know what you think!": "Bent u bekend met dit artikel? Deel uw ervaring met andere en laat weten wat u er van vindt!",
34
"Be the first to write a review": "Schrijf de eerste review",
5+
"Load more reviews": "Toon meer reviews",
46
"Nickname": "Nickname",
5-
"No reviews found": "Geen reviews gevonden",
6-
"Rating": "Rating",
7+
"No reviews yet": "Nog geen reviews",
8+
"Product reviews": "Product reviews",
9+
"Rating": "Beoordeling",
710
"Review": "Review",
11+
"Reviews": "Reviews",
12+
"Review|:count Reviews": "Review|:count Reviews",
13+
"Share your experience": "Deel uw ervaring",
814
"Submit Review": "Review indienen",
915
"Summary": "Summary",
10-
"You submitted your review for moderation.": "Uw review is in behandeling."
16+
"Title of your review": "Titel van uw review",
17+
"What do you think of this product?": "Wat vindt u van dit product?",
18+
"Write a review": "Schrijf een review",
19+
"You submitted your review for moderation.": "Uw review is in behandeling.",
20+
"Your name": "Uw naam"
1121
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<script>
2+
export default {
3+
data: () => ({
4+
reviews: null,
5+
reviewPage: 1,
6+
}),
7+
render() {
8+
return this.$scopedSlots.default(this);
9+
},
10+
methods: {
11+
addReviews(data, response) {
12+
if (this.reviews === null) {
13+
this.reviews = [];
14+
}
15+
16+
if (!response?.data?.products?.items.length) {
17+
return
18+
}
19+
if (response.data.products.items[0].reviews.items.length > 0) {
20+
this.reviews.push(
21+
...response.data.products.items[0].reviews.items
22+
);
23+
}
24+
25+
},
26+
nextPage() {
27+
this.reviewPage++;
28+
},
29+
},
30+
};
31+
</script>

resources/js/package.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Vue.component('LoadMoreReviews', () => import('./components/Reviews/LoadMoreReviews.vue'))

resources/svg/star.svg

Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@props(['score', 'maxScore' => '100'])
2+
<div
3+
{{ $attributes->class('bg-emphasis relative h-2.5 rounded-full ring-px ring-emerald-600 overflow-hidden') }}>
4+
<div
5+
class="absolute inset-0 rounded-full bg-emerald-600"
6+
:style="'width: calc(' + {{ $score }} + ' / {{ $maxScore }} * 100%)'"
7+
></div>
8+
</div>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<div
2+
class="w-full py-7 lg:px-8 lg:mb-5 border-t first:border-0 rounded lg:first:border lg:border"
3+
itemprop="review"
4+
itemtype="https://schema.org/Review"
5+
itemscope
6+
>
7+
<div>
8+
<meta itemprop="ratingValue" :content="review.average_rating" />
9+
<meta itemprop="bestRating" content="100" />
10+
<div class="lg:flex lg:items-center">
11+
<span class="inline-block align-text-bottom">
12+
<x-rapidez-reviews::stars score="review.average_rating" />
13+
</span>
14+
</div>
15+
</div>
16+
<strong class="block mt-2.5 font-bold text" itemprop="name">
17+
@{{ review.summary }}
18+
</strong>
19+
<p class="mt-2.5 text" itemprop="reviewBody">
20+
@{{ review.text }}
21+
</p>
22+
<p
23+
class="flex items-center mt-5 text-sm text"
24+
itemprop="author"
25+
itemtype="https://schema.org/Person"
26+
itemscope
27+
>
28+
<span itemprop="name">@{{ review.nickname }}</span>
29+
<span class="bg-emphasis mx-2.5 h-1 w-1 rounded-full"></span>
30+
<span>@{{ new Date(review.created_at).toLocaleDateString() }}</span>
31+
</p>
32+
</div>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<graphql-mutation
2+
query='@include('rapidez-reviews::queries.reviews', compact('sku'))'
3+
v-slot="{ mutate }"
4+
:variables="{ page: reviewPage + 1, pageSize: 3 }"
5+
:callback="addReviews"
6+
>
7+
<x-rapidez::button.outline
8+
v-if="reviews.length > 0 && reviews.length < {{ $reviews_count ?? 0 }}"
9+
v-on:click="nextPage(); mutate()"
10+
class="self-center"
11+
>
12+
@lang('Load more reviews')
13+
</x-rapidez::button.outline>
14+
</graphql-mutation>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
@if($product->reviews_score)
2+
<div itemprop="aggregateRating" itemtype="https://schema.org/AggregateRating" itemscope>
3+
<meta itemprop="reviewCount" content="{{ $product->reviews_count }}" />
4+
<meta itemprop="ratingValue" content="{{ $product->reviews_score }}" />
5+
<meta itemprop="bestRating" content="100" />
6+
</div>
7+
@endif
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<div class="w-full py-7 lg:px-7 lg:mb-5 lg:border rounded">
2+
<div>
3+
<div class="md:flex md:items-center">
4+
<span class="inline-block align-text-bottom">
5+
<x-rapidez-reviews::stars score="100" />
6+
</span>
7+
</div>
8+
</div>
9+
<strong class="block mt-2.5 font-bold text">
10+
@lang('Be the first to write a review')
11+
</strong>
12+
<p class="flex items-center mt-5 text-sm text">
13+
{{ $product->name }}
14+
</p>
15+
<x-rapidez::button.outline for="review-form" class="mt-6 justify-self-start">
16+
@lang('Write a review')
17+
</x-rapidez::button.outline>
18+
</div>

0 commit comments

Comments
 (0)