diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-09-12 09:47:01 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-09-12 09:47:01 +0700 |
| commit | 916973828a2088cf6d5d867ec7a9aefe9f95bf0d (patch) | |
| tree | 02075b4606b6f0c538b0e7833322f9142cbcf51c | |
| parent | de08ef4031c69550e32b2e8d18abc76c1030fe4d (diff) | |
| parent | fc1d22565e08db8c49fa21b498ec1e02455c5c9b (diff) | |
Merge branch 'master' into development
| -rw-r--r-- | next.config.js | 1 | ||||
| -rw-r--r-- | src/lib/product/api/productApi.js | 2 | ||||
| -rw-r--r-- | src/lib/product/api/variantApi.js | 2 | ||||
| -rw-r--r-- | src/lib/product/components/Product/ProductDesktop.jsx | 13 | ||||
| -rw-r--r-- | src/lib/product/components/Product/ProductMobile.jsx | 26 | ||||
| -rw-r--r-- | src/lib/shipment/components/Shipments.jsx | 5 | ||||
| -rw-r--r-- | src/styles/globals.css | 20 |
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'>🗲</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'>🗲</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 |
