@licklist/design 0.68.4 → 0.68.5-dev.0
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.
- package/dist/affiliate/form/AffiliateForm.d.ts.map +1 -1
- package/dist/auth/Login/LoginComponent.js +2 -1
- package/dist/calendar/components/CalendarButtons/CalendarButtons.d.ts.map +1 -1
- package/dist/calendar/components/CalendarButtons/CalendarButtons.js +35 -40
- package/dist/events/edit-event-modal/IntervalInput.d.ts.map +1 -1
- package/dist/events/edit-event-modal/IntervalInput.js +7 -1
- package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.d.ts.map +1 -1
- package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.js +0 -1
- package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.d.ts.map +1 -1
- package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.js +24 -23
- package/dist/events/edit-event-modal/utils/getDefaultProductSet.d.ts.map +1 -1
- package/dist/events/edit-event-modal/utils/getDefaultProductSet.js +0 -1
- package/dist/iframe/event/event-card/IframeEventCard.d.ts.map +1 -1
- package/dist/iframe/event/event-card/IframeEventCard.js +2 -2
- package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.d.ts.map +1 -1
- package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.js +2 -0
- package/dist/iframe/payment/order-items-table/utils/paymentSummary.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/layout/DropDown.d.ts +2 -1
- package/dist/layout/DropDown.d.ts.map +1 -1
- package/dist/modals/confirmation/ConfirmModal.d.ts +3 -1
- package/dist/modals/confirmation/ConfirmModal.d.ts.map +1 -1
- package/dist/modals/confirmation/ConfirmModal.js +172 -8
- package/dist/product-set/card/ProductSetCard.d.ts +6 -2
- package/dist/product-set/card/ProductSetCard.d.ts.map +1 -1
- package/dist/product-set/card/ProductSetCard.js +30 -11
- package/dist/product-set/control/DateInput.d.ts.map +1 -1
- package/dist/product-set/control/DateInput.js +2 -2
- package/dist/product-set/form/ProductCategoriesControl.d.ts.map +1 -1
- package/dist/product-set/form/ProductCategoriesControl.js +48 -2
- package/dist/product-set/form/ProductSetForm.d.ts +4 -1
- package/dist/product-set/form/ProductSetForm.d.ts.map +1 -1
- package/dist/product-set/form/ProductSetForm.js +59 -1
- package/dist/product-set/form/ProductSetNameControl.d.ts +6 -0
- package/dist/product-set/form/ProductSetNameControl.d.ts.map +1 -0
- package/dist/product-set/form/ProductSetNameControl.js +35 -0
- package/dist/product-set/form/ProductZonesControl.d.ts.map +1 -1
- package/dist/product-set/form/ProductZonesControl.js +0 -2
- package/dist/product-set/form/SelectCategoryModal.d.ts +12 -0
- package/dist/product-set/form/SelectCategoryModal.d.ts.map +1 -1
- package/dist/product-set/form/SelectCategoryModal.js +1 -1
- package/dist/product-set/form/SubProductsControl.d.ts.map +1 -1
- package/dist/product-set/form/SubProductsControl.js +0 -3
- package/dist/product-set/form/VenueMapsControl.d.ts.map +1 -1
- package/dist/product-set/form/VenueMapsControl.js +0 -3
- package/dist/product-set/form/index.d.ts +1 -0
- package/dist/product-set/form/index.d.ts.map +1 -1
- package/dist/product-set/product/ProductControl.d.ts.map +1 -1
- package/dist/product-set/utils/index.d.ts +7 -0
- package/dist/product-set/utils/index.d.ts.map +1 -1
- package/dist/product-set/utils/index.js +10 -1
- package/dist/sales/booking/results/components/ResultCard.d.ts.map +1 -1
- package/dist/sales/booking/results/components/ResultCard.js +0 -2
- package/dist/snippet/snippet-template/preview/Preview.d.ts.map +1 -1
- package/dist/snippet/snippet-template/preview/Preview.js +6 -0
- package/dist/sortable-tree/SortableTreeItem.d.ts +2 -1
- package/dist/sortable-tree/SortableTreeItem.d.ts.map +1 -1
- package/dist/sortable-tree/SortableTreeItem.js +10 -4
- package/dist/styles/iframe-events/Calendar.scss +0 -1
- package/dist/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
- package/dist/styles/product-set/ProductSetForm.scss +22 -0
- package/dist/styles/sales/BookingResults.scss +1 -1
- package/dist/tiptap-editor/TipTapMenu/extensions/constants.d.ts +2 -0
- package/dist/tiptap-editor/TipTapMenu/extensions/constants.d.ts.map +1 -0
- package/dist/tiptap-editor/TipTapMenu/extensions/constants.js +3 -0
- package/dist/tiptap-editor/TipTapMenu/extensions/utils.d.ts +1 -1
- package/dist/tiptap-editor/TipTapMenu/extensions/utils.d.ts.map +1 -1
- package/dist/tiptap-editor/TipTapMenu/extensions/utils.js +3 -1
- package/dist/typeahead/Typeahead.d.ts +5 -1
- package/dist/typeahead/Typeahead.d.ts.map +1 -1
- package/dist/typeahead/Typeahead.js +9 -2
- package/package.json +9 -7
- package/src/affiliate/form/AffiliateForm.tsx +1 -0
- package/src/auth/Login/LoginComponent.tsx +1 -1
- package/src/calendar/components/CalendarButtons/CalendarButtons.tsx +29 -28
- package/src/events/edit-event-modal/IntervalInput.tsx +8 -1
- package/src/events/edit-event-modal/component/EditEventForm/EditEventForm.tsx +0 -1
- package/src/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.tsx +82 -85
- package/src/events/edit-event-modal/utils/getDefaultProductSet.ts +0 -1
- package/src/iframe/event/event-card/IframeEventCard.tsx +30 -29
- package/src/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.tsx +1 -0
- package/src/iframe/payment/order-items-table/utils/paymentSummary.tsx +1 -0
- package/src/layout/DropDown.tsx +2 -1
- package/src/modals/confirmation/ConfirmModal.tsx +19 -3
- package/src/product-set/card/ProductSetCard.tsx +47 -8
- package/src/product-set/control/DateInput.tsx +2 -1
- package/src/product-set/form/ProductCategoriesControl.tsx +37 -1
- package/src/product-set/form/ProductSetForm.tsx +17 -2
- package/src/product-set/form/ProductSetNameControl.tsx +27 -0
- package/src/product-set/form/ProductZonesControl.tsx +1 -4
- package/src/product-set/form/SelectCategoryModal.tsx +2 -2
- package/src/product-set/form/SubProductsControl.tsx +0 -3
- package/src/product-set/form/VenueMapsControl.tsx +0 -3
- package/src/product-set/form/index.ts +1 -0
- package/src/product-set/product/ProductControl.tsx +0 -1
- package/src/product-set/product/advanced-options/AdvancedOptions.tsx +1 -1
- package/src/product-set/product-zone/ProductZoneControl.tsx +1 -1
- package/src/product-set/utils/index.ts +11 -0
- package/src/sales/booking/results/components/ResultCard.tsx +0 -2
- package/src/snippet/snippet-template/preview/Preview.tsx +6 -0
- package/src/sortable-tree/SortableTreeItem.tsx +6 -0
- package/src/styles/iframe-events/Calendar.scss +0 -1
- package/src/styles/iframe-external-modal/IframeExternalModal.scss +2 -2
- package/src/styles/product-set/ProductSetForm.scss +22 -0
- package/src/styles/sales/BookingResults.scss +1 -1
- package/src/tiptap-editor/TipTapMenu/extensions/constants.ts +1 -0
- package/src/tiptap-editor/TipTapMenu/extensions/utils.ts +4 -1
- package/src/typeahead/Typeahead.tsx +15 -1
- package/yarn.lock +40 -14
- package/dist/assets/iframe/selectArrow.svg.js +0 -17
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useEffect } from 'react'
|
|
1
|
+
import { useEffect, useState } from 'react'
|
|
2
2
|
import { FormValues } from '@licklist/plugins/dist/types/services/Form/hook-form-service'
|
|
3
3
|
import { Button, Form, Col, Row } from 'react-bootstrap'
|
|
4
4
|
import { FormProvider, useForm } from 'react-hook-form'
|
|
@@ -22,16 +22,21 @@ import { Step } from '../types'
|
|
|
22
22
|
import { ProductSetContextProvider, ProductSetLoadingContext } from './context'
|
|
23
23
|
import { SelectItem } from '../../types/generic/SelectItem'
|
|
24
24
|
import { checkAvailableTimesErrors, getFilteredTemplates } from '../utils'
|
|
25
|
+
import { ErrorModal } from '../../iframe/order-process/components/ErrorModal'
|
|
25
26
|
|
|
26
27
|
export interface WithIsLoading {
|
|
27
28
|
isLoading: boolean
|
|
28
29
|
}
|
|
30
|
+
export interface WithIdOptional {
|
|
31
|
+
id?: number
|
|
32
|
+
}
|
|
33
|
+
|
|
29
34
|
export interface WithId {
|
|
30
35
|
id: number
|
|
31
36
|
}
|
|
32
37
|
export interface ProductSetFormValues
|
|
33
38
|
extends FormValues,
|
|
34
|
-
|
|
39
|
+
WithIdOptional,
|
|
35
40
|
ProductSetControlValues {
|
|
36
41
|
steps: Step[]
|
|
37
42
|
isOverrides?: boolean
|
|
@@ -84,6 +89,7 @@ export function ProductSetForm({
|
|
|
84
89
|
onApproveDialog,
|
|
85
90
|
onDeclineDialog,
|
|
86
91
|
} = useDialogContext()
|
|
92
|
+
const [errorMessage, setErrorMessage] = useState('')
|
|
87
93
|
|
|
88
94
|
const form = useForm<ProductSetFormValues>({
|
|
89
95
|
defaultValues,
|
|
@@ -121,6 +127,9 @@ export function ProductSetForm({
|
|
|
121
127
|
if (!serverErrors) {
|
|
122
128
|
return
|
|
123
129
|
}
|
|
130
|
+
if (Array.isArray(serverErrors) && serverErrors[0]) {
|
|
131
|
+
setErrorMessage(serverErrors[0])
|
|
132
|
+
}
|
|
124
133
|
FormErrorService.handleServerErrors(serverErrors, setError)
|
|
125
134
|
}, [serverErrors, setError])
|
|
126
135
|
|
|
@@ -156,6 +165,12 @@ export function ProductSetForm({
|
|
|
156
165
|
onDecline={onDeclineDialog}
|
|
157
166
|
/>
|
|
158
167
|
|
|
168
|
+
<ErrorModal
|
|
169
|
+
message={errorMessage}
|
|
170
|
+
isOpen={!!errorMessage}
|
|
171
|
+
onClose={() => setErrorMessage('')}
|
|
172
|
+
/>
|
|
173
|
+
|
|
159
174
|
<FormProvider {...form}>
|
|
160
175
|
<Form onSubmit={form.handleSubmit(submitHandler(onSubmitAndRedirect))}>
|
|
161
176
|
<ProductSetLoadingContext.Consumer>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Form } from 'react-bootstrap'
|
|
2
|
+
import { useTranslation } from 'react-i18next'
|
|
3
|
+
|
|
4
|
+
export const ProductSetNameControl = ({
|
|
5
|
+
value,
|
|
6
|
+
onChange,
|
|
7
|
+
error,
|
|
8
|
+
}: {
|
|
9
|
+
value: string
|
|
10
|
+
onChange: (value: string) => void
|
|
11
|
+
error?: string
|
|
12
|
+
}) => {
|
|
13
|
+
const { t } = useTranslation(['Design'])
|
|
14
|
+
return (
|
|
15
|
+
<Form.Group>
|
|
16
|
+
<Form.Label>{t('Design:ProductSetName')}*</Form.Label>
|
|
17
|
+
<Form.Control
|
|
18
|
+
value={value}
|
|
19
|
+
maxLength={255}
|
|
20
|
+
onChange={(e) => onChange(e.target.value)}
|
|
21
|
+
placeholder={t('Design:placeholderProductSetName')}
|
|
22
|
+
isInvalid={Boolean(error)}
|
|
23
|
+
/>
|
|
24
|
+
<Form.Control.Feedback type="invalid">{error}</Form.Control.Feedback>
|
|
25
|
+
</Form.Group>
|
|
26
|
+
)
|
|
27
|
+
}
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
} from 'react-icons/fa'
|
|
26
26
|
import { ProductSetLoadingContext } from './context'
|
|
27
27
|
|
|
28
|
-
const CATEGORY_TYPES_NAMES = {
|
|
28
|
+
export const CATEGORY_TYPES_NAMES = {
|
|
29
29
|
menuItems: CATEGORY_TYPE_MENU_ITEMS,
|
|
30
30
|
tickets: CATEGORY_TYPE_TICKETS,
|
|
31
31
|
bookings: CATEGORY_TYPE_BOOKINGS,
|
|
@@ -33,7 +33,7 @@ const CATEGORY_TYPES_NAMES = {
|
|
|
33
33
|
fixedDuration: CATEGORY_TYPE_FIXED_DURATION,
|
|
34
34
|
} as const
|
|
35
35
|
|
|
36
|
-
type CategoryConfig = { label: string; icon: ReactElement }
|
|
36
|
+
export type CategoryConfig = { label: string; icon: ReactElement }
|
|
37
37
|
|
|
38
38
|
const MAIN_CATEGORIES: Partial<Record<CategoryType, CategoryConfig>> = {
|
|
39
39
|
[CATEGORY_TYPES_NAMES.tickets]: {
|
|
@@ -70,9 +70,6 @@ export function SubProductsControl({
|
|
|
70
70
|
images: subProducts[index]?.images as Image[],
|
|
71
71
|
}
|
|
72
72
|
// @ts-expect-error TS2345
|
|
73
|
-
// @TODO fix prod type error
|
|
74
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
75
|
-
// @ts-ignore
|
|
76
73
|
append(subProductCopy)
|
|
77
74
|
}}
|
|
78
75
|
/>
|
|
@@ -46,9 +46,6 @@ export const VenueMapsControl = ({
|
|
|
46
46
|
url={image.url}
|
|
47
47
|
name={name}
|
|
48
48
|
points={points}
|
|
49
|
-
// @TODO fix prod type error
|
|
50
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
51
|
-
// @ts-ignore
|
|
52
49
|
products={products}
|
|
53
50
|
pointProducts={pointProducts}
|
|
54
51
|
onPointProductsChange={onPointProductsChange}
|
|
@@ -3,6 +3,7 @@ import { SmsTemplate } from '@licklist/core/dist/DataMapper/Notification/SmsTemp
|
|
|
3
3
|
import { TFunction } from 'react-i18next'
|
|
4
4
|
import { UseFormSetError } from 'react-hook-form'
|
|
5
5
|
import { checkIfZoneCategory } from '@licklist/plugins'
|
|
6
|
+
import { ProductSet } from '@licklist/core/dist/DataMapper/Product/ProductSetDataMapper'
|
|
6
7
|
import { TemplateItem } from '../control/ProductSetControl'
|
|
7
8
|
import { ProductSetFormValues } from '../form/ProductSetForm'
|
|
8
9
|
|
|
@@ -12,6 +13,11 @@ interface CheckAvailableTimesErrors {
|
|
|
12
13
|
t: TFunction
|
|
13
14
|
}
|
|
14
15
|
|
|
16
|
+
export interface MenuTypeheadItem {
|
|
17
|
+
id: number
|
|
18
|
+
label: string
|
|
19
|
+
value: number
|
|
20
|
+
}
|
|
15
21
|
export const moveArrayElements = <T>(
|
|
16
22
|
array: T[],
|
|
17
23
|
prevIndex: number,
|
|
@@ -83,3 +89,8 @@ export const checkAvailableTimesErrors = ({
|
|
|
83
89
|
})
|
|
84
90
|
return hasError
|
|
85
91
|
}
|
|
92
|
+
|
|
93
|
+
export const getTypeHeadItemsFromMenus = (
|
|
94
|
+
menus?: (ProductSet | ProductSetFormValues)[],
|
|
95
|
+
): MenuTypeheadItem[] =>
|
|
96
|
+
menus?.map((menu) => ({ id: menu.id, value: menu.id, label: menu.name }))
|
|
@@ -307,6 +307,7 @@ export function Preview({
|
|
|
307
307
|
productCategoryId: 57,
|
|
308
308
|
productGroupId: null,
|
|
309
309
|
availableQuantity: 980,
|
|
310
|
+
zoneId: null,
|
|
310
311
|
name: 'Cofee',
|
|
311
312
|
description: '',
|
|
312
313
|
price: 15,
|
|
@@ -315,6 +316,8 @@ export function Preview({
|
|
|
315
316
|
maxQuantity: 15,
|
|
316
317
|
totalQuantity: 980,
|
|
317
318
|
type: 'sale' as const,
|
|
319
|
+
capacity: 0,
|
|
320
|
+
duration: 0,
|
|
318
321
|
weight: 0,
|
|
319
322
|
isAvailable: true,
|
|
320
323
|
isSoldOut: false,
|
|
@@ -333,6 +336,7 @@ export function Preview({
|
|
|
333
336
|
productCategoryId: 57,
|
|
334
337
|
productGroupId: null,
|
|
335
338
|
availableQuantity: 980,
|
|
339
|
+
zoneId: null,
|
|
336
340
|
name: 'Cofee 2',
|
|
337
341
|
description: '',
|
|
338
342
|
price: 15,
|
|
@@ -341,6 +345,8 @@ export function Preview({
|
|
|
341
345
|
maxQuantity: 15,
|
|
342
346
|
totalQuantity: 980,
|
|
343
347
|
type: 'sale' as const,
|
|
348
|
+
capacity: 0,
|
|
349
|
+
duration: 0,
|
|
344
350
|
weight: 0,
|
|
345
351
|
isAvailable: true,
|
|
346
352
|
isSoldOut: false,
|
|
@@ -33,6 +33,7 @@ export interface SortableTreeItemProps {
|
|
|
33
33
|
body: ReactNode
|
|
34
34
|
children?: ReactNode
|
|
35
35
|
preItem?: ReactNode
|
|
36
|
+
itemButton?: ReactNode
|
|
36
37
|
postItem?: ReactNode
|
|
37
38
|
sortableItems?: string[]
|
|
38
39
|
isExpanded?: boolean
|
|
@@ -82,6 +83,7 @@ export function SortableTreeItem({
|
|
|
82
83
|
secondaryBadge,
|
|
83
84
|
setIsExpanded,
|
|
84
85
|
isOverride,
|
|
86
|
+
itemButton,
|
|
85
87
|
}: SortableTreeItemProps) {
|
|
86
88
|
const [expanded, setExpanded] = useState(isExpanded)
|
|
87
89
|
const [isModalVisible, setIsModalVisible] = useState(isNewAdded)
|
|
@@ -287,9 +289,13 @@ export function SortableTreeItem({
|
|
|
287
289
|
className={clsx(
|
|
288
290
|
'sortable-tree-item-title',
|
|
289
291
|
modalLabel && 'sortable-tree-product-set-element-title',
|
|
292
|
+
'd-flex justify-content-between',
|
|
290
293
|
)}
|
|
291
294
|
>
|
|
292
295
|
{title}
|
|
296
|
+
<div className="sortable-tree-item-subtitle">
|
|
297
|
+
{itemButton}
|
|
298
|
+
</div>
|
|
293
299
|
</span>
|
|
294
300
|
{!expanded && (
|
|
295
301
|
<span className="sortable-tree-item-subtitle">
|
|
@@ -15,7 +15,7 @@ body[bkdt-scrollable='false'] .bkdt-mask {
|
|
|
15
15
|
left: 0;
|
|
16
16
|
width: 100%;
|
|
17
17
|
height: 100%;
|
|
18
|
-
z-index:
|
|
18
|
+
z-index: 2147483646;
|
|
19
19
|
background-color: rgba(0, 0, 0, 0.5);
|
|
20
20
|
display: none;
|
|
21
21
|
}
|
|
@@ -24,7 +24,7 @@ body[bkdt-scrollable='false'] .bkdt-mask {
|
|
|
24
24
|
position: fixed;
|
|
25
25
|
top: 0;
|
|
26
26
|
left: 0;
|
|
27
|
-
z-index:
|
|
27
|
+
z-index: 2147483647;
|
|
28
28
|
display: none;
|
|
29
29
|
width: 100%;
|
|
30
30
|
height: 100%;
|
|
@@ -15,10 +15,12 @@
|
|
|
15
15
|
height: 2.5rem;
|
|
16
16
|
border-width: 2px;
|
|
17
17
|
padding: 2px;
|
|
18
|
+
|
|
18
19
|
label,
|
|
19
20
|
.btn-switch-indicator {
|
|
20
21
|
border-radius: 0.375rem !important;
|
|
21
22
|
}
|
|
23
|
+
|
|
22
24
|
label {
|
|
23
25
|
height: 2rem;
|
|
24
26
|
}
|
|
@@ -34,6 +36,7 @@
|
|
|
34
36
|
margin-top: 1.5rem;
|
|
35
37
|
margin-bottom: 1.5rem;
|
|
36
38
|
}
|
|
39
|
+
|
|
37
40
|
@include media-breakpoint-down(sm) {
|
|
38
41
|
padding: 1.5rem 1rem;
|
|
39
42
|
margin-top: 0.5rem;
|
|
@@ -59,10 +62,21 @@
|
|
|
59
62
|
background-color: #ffdbdb;
|
|
60
63
|
color: #d52902;
|
|
61
64
|
}
|
|
65
|
+
|
|
62
66
|
.category-badge {
|
|
63
67
|
background-color: #e8f4f6;
|
|
64
68
|
color: #1a93aa;
|
|
65
69
|
}
|
|
70
|
+
|
|
71
|
+
.item-icon {
|
|
72
|
+
display: flex;
|
|
73
|
+
justify-items: center;
|
|
74
|
+
align-items: center;
|
|
75
|
+
font-size: 0.65rem;
|
|
76
|
+
padding: 0.2rem;
|
|
77
|
+
margin-right: 1rem;
|
|
78
|
+
}
|
|
79
|
+
|
|
66
80
|
.product-badge {
|
|
67
81
|
background-color: #e9f5ea;
|
|
68
82
|
color: #269b36;
|
|
@@ -75,10 +89,12 @@
|
|
|
75
89
|
|
|
76
90
|
.product-set-mobile-modal {
|
|
77
91
|
margin: 0;
|
|
92
|
+
|
|
78
93
|
.modal-content {
|
|
79
94
|
border-radius: 1rem 1rem 0 0;
|
|
80
95
|
border-width: 0;
|
|
81
96
|
margin: 0;
|
|
97
|
+
|
|
82
98
|
.modal-body {
|
|
83
99
|
padding: 1rem 0;
|
|
84
100
|
}
|
|
@@ -100,18 +116,22 @@
|
|
|
100
116
|
font-weight: 600;
|
|
101
117
|
font-size: 0.625rem;
|
|
102
118
|
}
|
|
119
|
+
|
|
103
120
|
.product-set-subtitle-dot {
|
|
104
121
|
margin-right: 0.375rem;
|
|
105
122
|
width: 0.375rem;
|
|
106
123
|
height: 0.375rem;
|
|
107
124
|
border-radius: 3px;
|
|
108
125
|
}
|
|
126
|
+
|
|
109
127
|
.product-set-subtitle-category-dot {
|
|
110
128
|
background-color: #269b36;
|
|
111
129
|
}
|
|
130
|
+
|
|
112
131
|
.product-set-subtitle-step-dot {
|
|
113
132
|
background-color: #1a93aa;
|
|
114
133
|
}
|
|
134
|
+
|
|
115
135
|
.product-set-subtitle-product-dot {
|
|
116
136
|
background-color: #269b36;
|
|
117
137
|
}
|
|
@@ -156,6 +176,7 @@
|
|
|
156
176
|
justify-self: flex-end;
|
|
157
177
|
align-items: flex-end;
|
|
158
178
|
}
|
|
179
|
+
|
|
159
180
|
.small-badge {
|
|
160
181
|
font-size: 0.5rem;
|
|
161
182
|
height: 1rem;
|
|
@@ -163,6 +184,7 @@
|
|
|
163
184
|
padding: 0 0.2rem;
|
|
164
185
|
margin-bottom: 0.2rem;
|
|
165
186
|
}
|
|
187
|
+
|
|
166
188
|
.product-set-save-btn-wrapper {
|
|
167
189
|
padding-left: 0 !important;
|
|
168
190
|
display: flex;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const EMOJI_URL = "https://cdnjs.cloudflare.com/ajax/libs/emojione/2.2.7/assets/svg/";
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { parse } from 'twemoji-parser'
|
|
2
|
+
import { EMOJI_URL } from './constants'
|
|
2
3
|
|
|
3
4
|
function parseTwemoji(emoji: string) {
|
|
4
5
|
const [twemoji] = parse(emoji)
|
|
5
6
|
|
|
7
|
+
const emojiPathUrl = EMOJI_URL.concat(twemoji.url.split("/").slice(-1));
|
|
8
|
+
|
|
6
9
|
return {
|
|
7
|
-
src:
|
|
10
|
+
src: emojiPathUrl,
|
|
8
11
|
alt: twemoji.text,
|
|
9
12
|
class: 'emoji',
|
|
10
13
|
draggable: 'false',
|
|
@@ -12,10 +12,13 @@ export interface TypeaheadProps {
|
|
|
12
12
|
placeholder: string
|
|
13
13
|
isRequired?: boolean
|
|
14
14
|
name: string
|
|
15
|
+
value?: TypeaheadOptions
|
|
15
16
|
isMultipleChoise?: boolean
|
|
16
17
|
noOptionsMessage: string
|
|
17
18
|
isInvalid?: boolean
|
|
18
19
|
isCouponForm?: boolean
|
|
20
|
+
containerStyles?: CSSObjectWithLabel
|
|
21
|
+
onChangeValue?: (value: TypeaheadOptions) => void
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
function Typeahead({
|
|
@@ -24,6 +27,9 @@ function Typeahead({
|
|
|
24
27
|
isRequired = false,
|
|
25
28
|
isMultipleChoise,
|
|
26
29
|
name = '',
|
|
30
|
+
value,
|
|
31
|
+
onChangeValue,
|
|
32
|
+
containerStyles,
|
|
27
33
|
isCouponForm = false,
|
|
28
34
|
noOptionsMessage = '',
|
|
29
35
|
isInvalid,
|
|
@@ -53,15 +59,23 @@ function Typeahead({
|
|
|
53
59
|
render={({ field }) => (
|
|
54
60
|
<Select
|
|
55
61
|
placeholder={placeholder}
|
|
56
|
-
value={field.value}
|
|
62
|
+
value={value ?? field.value}
|
|
57
63
|
isMulti={isMultipleChoise}
|
|
58
64
|
styles={{
|
|
65
|
+
container: (base) => ({
|
|
66
|
+
...base,
|
|
67
|
+
...containerStyles,
|
|
68
|
+
}),
|
|
59
69
|
control: (base) => ({
|
|
60
70
|
...base,
|
|
61
71
|
...getStyle(),
|
|
62
72
|
}),
|
|
63
73
|
}}
|
|
64
74
|
onChange={(value) => {
|
|
75
|
+
if (onChangeValue) {
|
|
76
|
+
onChangeValue(value)
|
|
77
|
+
return
|
|
78
|
+
}
|
|
65
79
|
field.onChange(value)
|
|
66
80
|
}}
|
|
67
81
|
options={options}
|
package/yarn.lock
CHANGED
|
@@ -2554,9 +2554,35 @@ __metadata:
|
|
|
2554
2554
|
languageName: node
|
|
2555
2555
|
linkType: hard
|
|
2556
2556
|
|
|
2557
|
-
"@licklist/core@npm:0.
|
|
2558
|
-
version: 0.
|
|
2559
|
-
resolution: "@licklist/core@npm:0.
|
|
2557
|
+
"@licklist/core@npm:0.29.1-dev.2":
|
|
2558
|
+
version: 0.29.1-dev.2
|
|
2559
|
+
resolution: "@licklist/core@npm:0.29.1-dev.2"
|
|
2560
|
+
dependencies:
|
|
2561
|
+
"@sentry/browser": "npm:6.2.0"
|
|
2562
|
+
axios: "npm:0.26.0"
|
|
2563
|
+
i18next: "npm:19.4.5"
|
|
2564
|
+
luxon: "npm:3.5.0"
|
|
2565
|
+
react: "npm:17.0.2"
|
|
2566
|
+
react-dom: "npm:17.0.2"
|
|
2567
|
+
react-i18next: "npm:11.8.8"
|
|
2568
|
+
react-intl: "npm:6.6.8"
|
|
2569
|
+
uuid: "npm:9.0.0"
|
|
2570
|
+
wait-for-expect: "npm:3.0.2"
|
|
2571
|
+
peerDependencies:
|
|
2572
|
+
"@licklist/eslint-config": 0.5.5
|
|
2573
|
+
axios: 0.26.0
|
|
2574
|
+
luxon: 3.5.0
|
|
2575
|
+
react: 17.0.2
|
|
2576
|
+
react-dom: 17.0.2
|
|
2577
|
+
react-i18next: 11.8.8
|
|
2578
|
+
react-intl: 6.6.8
|
|
2579
|
+
checksum: 10c0/cacb058eb075b8e42fe9135877aa90f5104b661a0a99addbadfe916604ee35d468d07f9ce4e349fad573015044977bf77821b92dc385bab23393bc4d72677c4f
|
|
2580
|
+
languageName: node
|
|
2581
|
+
linkType: hard
|
|
2582
|
+
|
|
2583
|
+
"@licklist/core@npm:0.30.0-dev.0":
|
|
2584
|
+
version: 0.30.0-dev.0
|
|
2585
|
+
resolution: "@licklist/core@npm:0.30.0-dev.0"
|
|
2560
2586
|
dependencies:
|
|
2561
2587
|
"@sentry/browser": "npm:6.2.0"
|
|
2562
2588
|
axios: "npm:0.26.0"
|
|
@@ -2576,7 +2602,7 @@ __metadata:
|
|
|
2576
2602
|
react-dom: 17.0.2
|
|
2577
2603
|
react-i18next: 11.8.8
|
|
2578
2604
|
react-intl: 6.6.8
|
|
2579
|
-
checksum: 10c0/
|
|
2605
|
+
checksum: 10c0/0254119edd1b01abeb3cdce66d26a56098860bfb5e0a8ec1d98ac2da3eb28b1cb8f7b2315a07ca3bd905eb25c349d65a4a4dab44e53466968b1b50012eec10bd
|
|
2580
2606
|
languageName: node
|
|
2581
2607
|
linkType: hard
|
|
2582
2608
|
|
|
@@ -2591,9 +2617,9 @@ __metadata:
|
|
|
2591
2617
|
"@dnd-kit/utilities": "npm:2.0.0"
|
|
2592
2618
|
"@fortawesome/fontawesome-svg-core": "npm:1.2.34"
|
|
2593
2619
|
"@fortawesome/free-solid-svg-icons": "npm:5.15.2"
|
|
2594
|
-
"@licklist/core": "npm:0.30.
|
|
2620
|
+
"@licklist/core": "npm:0.30.0-dev.0"
|
|
2595
2621
|
"@licklist/eslint-config": "npm:0.5.6"
|
|
2596
|
-
"@licklist/plugins": "npm:0.33.
|
|
2622
|
+
"@licklist/plugins": "npm:0.33.0-dev.0"
|
|
2597
2623
|
"@mdx-js/react": "npm:1.6.22"
|
|
2598
2624
|
"@popperjs/core": "npm:2.11.8"
|
|
2599
2625
|
"@react-aria/utils": "npm:3.9.0"
|
|
@@ -2713,9 +2739,9 @@ __metadata:
|
|
|
2713
2739
|
vite-plugin-svgr: "npm:4.2.0"
|
|
2714
2740
|
vite-tsconfig-paths: "npm:5.0.1"
|
|
2715
2741
|
peerDependencies:
|
|
2716
|
-
"@licklist/core": 0.30.
|
|
2742
|
+
"@licklist/core": 0.30.0-dev.0
|
|
2717
2743
|
"@licklist/eslint-config": 0.5.6
|
|
2718
|
-
"@licklist/plugins": 0.33.
|
|
2744
|
+
"@licklist/plugins": 0.33.0-dev.0
|
|
2719
2745
|
lodash: 4.17.21
|
|
2720
2746
|
luxon: 3.5.0
|
|
2721
2747
|
react: 17.0.2
|
|
@@ -2745,11 +2771,11 @@ __metadata:
|
|
|
2745
2771
|
languageName: node
|
|
2746
2772
|
linkType: hard
|
|
2747
2773
|
|
|
2748
|
-
"@licklist/plugins@npm:0.33.
|
|
2749
|
-
version: 0.33.
|
|
2750
|
-
resolution: "@licklist/plugins@npm:0.33.
|
|
2774
|
+
"@licklist/plugins@npm:0.33.0-dev.0":
|
|
2775
|
+
version: 0.33.0-dev.0
|
|
2776
|
+
resolution: "@licklist/plugins@npm:0.33.0-dev.0"
|
|
2751
2777
|
dependencies:
|
|
2752
|
-
"@licklist/core": "npm:0.
|
|
2778
|
+
"@licklist/core": "npm:0.29.1-dev.2"
|
|
2753
2779
|
"@ungap/url-search-params": "npm:0.2.2"
|
|
2754
2780
|
axios: "npm:0.26.0"
|
|
2755
2781
|
history: "npm:4.10.1"
|
|
@@ -2770,7 +2796,7 @@ __metadata:
|
|
|
2770
2796
|
rrule: "npm:2.6.8"
|
|
2771
2797
|
use-debounce: "npm:7.0.1"
|
|
2772
2798
|
peerDependencies:
|
|
2773
|
-
"@licklist/core": 0.
|
|
2799
|
+
"@licklist/core": 0.29.1-dev.2
|
|
2774
2800
|
"@licklist/eslint-config": 0.5.6
|
|
2775
2801
|
axios: 0.26.0
|
|
2776
2802
|
lodash: 4.17.21
|
|
@@ -2782,7 +2808,7 @@ __metadata:
|
|
|
2782
2808
|
react-loader: 2.4.7
|
|
2783
2809
|
react-query: 3.34.12
|
|
2784
2810
|
react-router-dom: 5.2.0
|
|
2785
|
-
checksum: 10c0/
|
|
2811
|
+
checksum: 10c0/cdf57c38578b30926a323f0caf80a93c43fadc032dcd79d749de92ca6d7c3b47a8ac6bdf56547a56e0581094434ecd30880e5298161cb0fa97705e369ba799f1
|
|
2786
2812
|
languageName: node
|
|
2787
2813
|
linkType: hard
|
|
2788
2814
|
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
var _path;
|
|
4
|
-
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
5
|
-
const SvgSelectArrow = props => /*#__PURE__*/React.createElement("svg", _extends({
|
|
6
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
7
|
-
width: 12,
|
|
8
|
-
height: 12,
|
|
9
|
-
fill: "none"
|
|
10
|
-
}, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
|
|
11
|
-
fill: "currentColor",
|
|
12
|
-
fillRule: "evenodd",
|
|
13
|
-
d: "M.759 1.34A1 1 0 0 1 2.28.487l7.61 4.66a1 1 0 0 1 0 1.706l-7.61 4.66a1 1 0 0 1-1.522-.852z",
|
|
14
|
-
clipRule: "evenodd"
|
|
15
|
-
})));
|
|
16
|
-
|
|
17
|
-
export { SvgSelectArrow as ReactComponent };
|