summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-09-12 09:47:01 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-09-12 09:47:01 +0700
commit916973828a2088cf6d5d867ec7a9aefe9f95bf0d (patch)
tree02075b4606b6f0c538b0e7833322f9142cbcf51c
parentde08ef4031c69550e32b2e8d18abc76c1030fe4d (diff)
parentfc1d22565e08db8c49fa21b498ec1e02455c5c9b (diff)
Merge branch 'master' into development
-rw-r--r--next.config.js1
-rw-r--r--src/lib/product/api/productApi.js2
-rw-r--r--src/lib/product/api/variantApi.js2
-rw-r--r--src/lib/product/components/Product/ProductDesktop.jsx13
-rw-r--r--src/lib/product/components/Product/ProductMobile.jsx26
-rw-r--r--src/lib/shipment/components/Shipments.jsx5
-rw-r--r--src/styles/globals.css20
7 files changed, 55 insertions, 14 deletions
diff --git a/next.config.js b/next.config.js
index 2f3f4396..8e1ceda3 100644
--- a/next.config.js
+++ b/next.config.js
@@ -9,6 +9,7 @@ const withPWA = require('next-pwa')({
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
+ distDir: process.env.BUILD_DIR || '.next',
webpack(config) {
config.module.rules.push({
test: /\.svg$/i,
diff --git a/src/lib/product/api/productApi.js b/src/lib/product/api/productApi.js
index 33f1265c..bc6169a4 100644
--- a/src/lib/product/api/productApi.js
+++ b/src/lib/product/api/productApi.js
@@ -2,7 +2,7 @@ import odooApi from '@/core/api/odooApi'
const productApi = async ({ id, headers = {} }) => {
if (!id) return
- const dataProduct = await odooApi('GET', `/api/v2/product/${id}`, {}, headers)
+ const dataProduct = await odooApi('GET', `/api/v3/product/${id}`, {}, headers)
return dataProduct
}
diff --git a/src/lib/product/api/variantApi.js b/src/lib/product/api/variantApi.js
index 47273dd7..06cf4c9e 100644
--- a/src/lib/product/api/variantApi.js
+++ b/src/lib/product/api/variantApi.js
@@ -2,7 +2,7 @@ import odooApi from '@/core/api/odooApi'
const variantApi = async ({ id, headers = {} }) => {
if (!id) return
- const dataProduct = await odooApi('GET', `/api/v2/product_variant/${id}`, {}, headers)
+ const dataProduct = await odooApi('GET', `/api/v3/product_variant/${id}`, {}, headers)
return dataProduct
}
diff --git a/src/lib/product/components/Product/ProductDesktop.jsx b/src/lib/product/components/Product/ProductDesktop.jsx
index 3b9296a8..618c35f5 100644
--- a/src/lib/product/components/Product/ProductDesktop.jsx
+++ b/src/lib/product/components/Product/ProductDesktop.jsx
@@ -197,7 +197,11 @@ const ProductDesktop = ({ products, wishlist, toggleWishlist }) => {
{product?.flashSale?.remainingTime > 0 && (
<div className={`absolute bottom-0 w-full`}>
<div className='absolute bottom-0 w-full h-full'>
- <ImageNext src={backgorundFlashSale || '/images/GAMBAR-BG-FLASH-SALE.jpg'} width={1000} height={100} />
+ <ImageNext
+ src={backgorundFlashSale || '/images/GAMBAR-BG-FLASH-SALE.jpg'}
+ width={1000}
+ height={100}
+ />
</div>
<div className='relative'>
<div className='flex gap-x-2 items-center p-2'>
@@ -553,7 +557,12 @@ const ProductDesktop = ({ products, wishlist, toggleWishlist }) => {
<tbody>
{product.variants.map((variant, index) => (
<tr key={variant.id}>
- <td>{variant.code}</td>
+ <td className='flex items-center justify-center gap-x-1'>
+ {variant.isFlashsale && (
+ <span className='blink-color-flash-sale'>&#128498;</span>
+ )}
+ {variant.code}
+ </td>
<td>{variant.attributes.join(', ') || '-'}</td>
<td>
{isLoadingSLA ? (
diff --git a/src/lib/product/components/Product/ProductMobile.jsx b/src/lib/product/components/Product/ProductMobile.jsx
index d25d0861..56f20aac 100644
--- a/src/lib/product/components/Product/ProductMobile.jsx
+++ b/src/lib/product/components/Product/ProductMobile.jsx
@@ -62,12 +62,25 @@ const ProductMobile = ({ product, wishlist, toggleWishlist }) => {
hasProgram: false
})
- const variantOptions = product.variants?.map((variant) => ({
- value: variant.id,
- label:
- (variant.code ? `[${variant.code}] ` : '') +
- (variant.attributes.length > 0 ? variant.attributes.join(', ') : product.name)
- }))
+ const variantOptions = product.variants?.map((variant) => {
+ let label = []
+ if (variant.isFlashsale) {
+ label.push("<span class='blink-color-flash-sale'>&#128498;</span>")
+ }
+ if (variant.code) {
+ label.push(`[${variant.code}]`)
+ }
+ if (variant.attributes.length > 0) {
+ label.push(variant.attributes.join(', '))
+ } else {
+ label.push(product.name)
+ }
+
+ return {
+ value: variant.id,
+ label: label.join(' ')
+ }
+ })
useEffect(() => {
const fetchData = async () => {
@@ -279,6 +292,7 @@ const ProductMobile = ({ product, wishlist, toggleWishlist }) => {
name='variant'
classNamePrefix='form-select'
options={variantOptions}
+ formatOptionLabel={({ label }) => <div dangerouslySetInnerHTML={{ __html: label }} />}
className='mt-2'
value={selectedVariant}
onChange={(option) => setSelectedVariant(option)}
diff --git a/src/lib/shipment/components/Shipments.jsx b/src/lib/shipment/components/Shipments.jsx
index 129e2496..115bbd3a 100644
--- a/src/lib/shipment/components/Shipments.jsx
+++ b/src/lib/shipment/components/Shipments.jsx
@@ -35,7 +35,6 @@ const Shipments = () => {
listShipments({ query: queryString })
)
const [idAWB, setIdAWB] = useState(null)
- console.log('ini shipmnets', shipments)
const pageCount = Math.ceil(shipments?.pickingTotal / limit)
let pageQuery = _.omit(query, ['limit', 'offset', 'context'])
@@ -75,7 +74,7 @@ const Shipments = () => {
<input
type='text'
className='form-input'
- placeholder='Cari Pengiriman...'
+ placeholder='Cari No. Resi / No. PO '
value={inputQuery}
onChange={(e) => setInputQuery(e.target.value)}
/>
@@ -196,7 +195,7 @@ const Shipments = () => {
<input
type='text'
className='form-input'
- placeholder='Cari Pengiriman...'
+ placeholder='Cari No. Resi / No. PO '
value={inputQuery}
onChange={(e) => setInputQuery(e.target.value)}
/>
diff --git a/src/styles/globals.css b/src/styles/globals.css
index af9f9bea..06ae7ca2 100644
--- a/src/styles/globals.css
+++ b/src/styles/globals.css
@@ -638,4 +638,22 @@ button {
30%, 50%, 70% { transform: translateX(-10px); }
40%, 60% { transform: translateX(10px); }
100% { transform: translateX(0); }
- }
+}
+
+.blink-color-flash-sale {
+ @apply text-body-1 md:text-title-sm;
+ transform: rotateY(180deg) rotateZ(120deg);
+ animation-name: blink-color-flash-sale;
+ animation-duration: 300ms;
+ animation-iteration-count: infinite;
+ animation-timing-function: linear;
+}
+
+@keyframes blink-color-flash-sale {
+ from {
+ @apply text-danger-500;
+ }
+ to {
+ @apply text-warning-500;
+ }
+} \ No newline at end of file