@licklist/design 0.44.467 → 0.44.469

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.
Files changed (20) hide show
  1. package/dist/iframe/order-process/components/CategoryProduct/CategoryProduct.d.ts.map +1 -1
  2. package/dist/iframe/order-process/components/CategoryProduct/CategoryProduct.js +1 -1
  3. package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.d.ts +24 -0
  4. package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.d.ts.map +1 -0
  5. package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.js +1 -0
  6. package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/index.d.ts +2 -0
  7. package/dist/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/index.d.ts.map +1 -0
  8. package/dist/iframe/order-process/components/StepsForm/StepsForm.d.ts +0 -2
  9. package/dist/iframe/order-process/components/StepsForm/StepsForm.d.ts.map +1 -1
  10. package/dist/iframe/order-process/components/StepsForm/StepsForm.js +1 -1
  11. package/dist/styles/iframe-events/Event.scss +33 -15
  12. package/dist/styles/iframe-page/PageBody.scss +8 -6
  13. package/package.json +1 -1
  14. package/src/iframe/order-process/OrderProcess.stories.tsx +3 -0
  15. package/src/iframe/order-process/components/CategoryProduct/CategoryProduct.tsx +11 -47
  16. package/src/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.tsx +118 -0
  17. package/src/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/index.ts +1 -0
  18. package/src/iframe/order-process/components/StepsForm/StepsForm.tsx +0 -26
  19. package/src/styles/iframe-events/Event.scss +33 -15
  20. package/src/styles/iframe-page/PageBody.scss +8 -6
@@ -1 +1 @@
1
- {"version":3,"file":"CategoryProduct.d.ts","sourceRoot":"","sources":["../../../../../src/iframe/order-process/components/CategoryProduct/CategoryProduct.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,UAAU,oBAAoB;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,cAAc,CAAC,oBAAoB,CAAC,CAAC;CAC3D;AAED,eAAO,MAAM,eAAe,qEAKzB,oBAAoB,gBAuMtB,CAAC"}
1
+ {"version":3,"file":"CategoryProduct.d.ts","sourceRoot":"","sources":["../../../../../src/iframe/order-process/components/CategoryProduct/CategoryProduct.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,UAAU,oBAAoB;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,cAAc,CAAC,oBAAoB,CAAC,CAAC;CAC3D;AAED,eAAO,MAAM,eAAe,qEAKzB,oBAAoB,gBAmKtB,CAAC"}
@@ -1 +1 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var r=require("react"),i=e(r),t=require("@licklist/core/dist/Config"),n=require("react-i18next"),a=require("react-hook-form"),o=e(require("@licklist/plugins/dist/services/Form/HookFormService")),c=e(require("clsx")),u=require("react-intl"),d=require("../../../event/ticket-description/TicketDescription.js"),s=require("./components/NumberInput/NumberInput.js");exports.CategoryProduct=function(e){var l=e.product,m=e.category,p=e.canExpandDescription,v=void 0===p||p,y=e.productsWithErrors,f=u.useIntl().formatNumber,g=n.useTranslation(["Design","Validation"]).t,q=a.useFormContext(),E=q.control,N=q.clearErrors,x=q.setError,_=r.useMemo((function(){if(y){var e=y.find((function(e){return e.product_id===l.id}));return null==e?void 0:e.message}}),[y,l.id]),A=r.useMemo((function(){if(m.allowDeposits&&l.deposit&&!(null==l?void 0:l.isSoldOut))return l.deposit}),[m,l]);return r.useEffect((function(){_&&x("".concat(l.id),{message:_,type:"validate"})}),[_,l.id]),i.createElement(a.Controller,{control:E,name:"".concat(l.id),rules:{required:l.isRequired,validate:function(e){if(!e)return!0;var r=l.isRequired,i=void 0!==r&&r,t=l.maxAmount,n=void 0===t?0:t,a=l.minAmount,o=void 0===a?0:a,c=e.quantity,u=void 0===c?0:c;return!u&&!i||(!u&&i?g("Design:pleaseSelectAtLeastFrom",{min:1,type:"item",from:"this category"}):u<o?g("Validation:fieldMinNumber",{min:l.minAmount,attribute:l.name}):!(n&&u>=o&&n<u)||g("Validation:quantityMaxNumber",{max:l.maxAmount}))}},render:function(e){var r=e.field,n=r.onChange,a=r.value,u=void 0===a?{}:a,p=r.ref,y=e.fieldState,q=y.invalid,E=y.error;return i.createElement("div",{id:String(l.id),className:"iframe-event__category-product"},i.createElement("div",{className:c("iframe-event__product",q&&"error")},i.createElement(d.TicketDescription,{title:l.name,description:l.description,className:c("iframe-event__product-description"),images:l.images,isRequired:l.isRequired,canExpand:v})),i.createElement("div",{className:"iframe-event__product-price-wrapper"},i.createElement("span",{className:"product-price"},f(null!=A?A:l.price,{style:"currency",currency:t.Currency.GBP})),l.isSoldOut?i.createElement("div",{className:"iframe-event__sold-out-wrapper"},g("Design:soldOut")):i.createElement(s.NumberInput,{ref:p,onChange:function(e){n({id:l.id,name:l.name,deposit:A,price:l.price,productsCategoryId:m.id,quantity:e}),N("".concat(l.id))},onArrowDown:function(){n({id:l.id,name:l.name,deposit:A,price:l.price,productsCategoryId:m.id,quantity:(null==u?void 0:u.quantity)-1||0}),N("".concat(l.id))},onArrowUp:function(){var e;n({id:l.id,name:l.name,deposit:A,price:l.price,productsCategoryId:m.id,quantity:(null!==(e=null==u?void 0:u.quantity)&&void 0!==e?e:0)+1}),N("".concat(l.id))},min:0,disabled:l.isSoldOut,value:(null==u?void 0:u.quantity)||0,className:c(q&&"error")})),A&&!(null==m?void 0:m.remainderExpireAfter)&&i.createElement("div",{className:"mt-4"},g("Design:payNowAndUponArrival",{deposit:f(A,{style:"currency",currency:t.Currency.GBP}),remainder:f(l.price-A,{style:"currency",currency:t.Currency.GBP})})),A&&(null==m?void 0:m.remainderExpireAfter)>0&&i.createElement("div",{className:"mt-4"},g("Design:payNowAndReminderDays",{deposit:f(A,{style:"currency",currency:t.Currency.GBP}),remainder:f(l.price-A,{style:"currency",currency:t.Currency.GBP}),days:null==m?void 0:m.remainderExpireAfter})),q&&i.createElement("div",{className:"d-flex mt-3 w-100"},i.createElement("p",{className:"iframe-event__message-error"},o.hasError(E,"required")&&g("Design:pleaseSelectAtLeastFrom",{min:1,type:"item",from:"this category"}),o.hasError(E,"validate")&&E.message)))}})};
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var r=require("react"),t=e(r),i=require("@licklist/core/dist/Config"),n=require("react-i18next"),a=require("react-hook-form"),c=e(require("@licklist/plugins/dist/services/Form/HookFormService")),o=e(require("clsx")),s=require("react-intl"),u=require("../../../event/ticket-description/TicketDescription.js"),d=require("./components/ProductQuantityInput/ProductQuantityInput.js");exports.CategoryProduct=function(e){var l=e.product,m=e.category,p=e.canExpandDescription,y=void 0===p||p,f=e.productsWithErrors,v=s.useIntl().formatNumber,E=n.useTranslation(["Design","Validation"]).t,g=a.useFormContext(),q=g.control,x=g.clearErrors,N=g.setError,_=r.useMemo((function(){if(f){var e=f.find((function(e){return e.product_id===l.id}));return null==e?void 0:e.message}}),[f,l.id]),A=r.useMemo((function(){if(m.allowDeposits&&l.deposit&&!(null==l?void 0:l.isSoldOut))return l.deposit}),[m,l]);return r.useEffect((function(){_&&N("".concat(l.id),{message:_,type:"validate"})}),[_,l.id]),t.createElement(a.Controller,{control:q,name:"".concat(l.id),rules:{required:l.isRequired,validate:function(e){if(!e)return!0;var r=l.isRequired,t=void 0!==r&&r,i=l.maxAmount,n=void 0===i?0:i,a=l.minAmount,c=void 0===a?0:a,o=e.quantity,s=void 0===o?0:o;return!s&&!t||(!s&&t?E("Design:pleaseSelectAtLeastFrom",{min:1,type:"item",from:"this category"}):s<c?E("Validation:fieldMinNumber",{min:l.minAmount,attribute:l.name}):!(n&&s>=c&&n<s)||E("Validation:quantityMaxNumber",{max:l.maxAmount}))}},render:function(e){var r=e.field,n=r.onChange,a=r.value,s=void 0===a?{}:a,p=r.ref,f=e.fieldState,g=f.invalid,q=f.error;return t.createElement("div",{id:String(l.id),className:"iframe-event__category-product"},t.createElement("div",{className:o("iframe-event__product",g&&"error")},t.createElement(u.TicketDescription,{title:l.name,description:l.description,className:o("iframe-event__product-description"),images:l.images,isRequired:l.isRequired,canExpand:y})),t.createElement("div",{className:"iframe-event__product-price-wrapper"},t.createElement("span",{className:"product-price"},v(null!=A?A:l.price,{style:"currency",currency:i.Currency.GBP})),t.createElement(d.ProductQuantityInput,{onChange:n,productInfo:s,ref:p,clearErrors:x,product:l,category:m,invalid:g,deposit:A})),A&&!(null==m?void 0:m.remainderExpireAfter)&&t.createElement("div",{className:"mt-4"},E("Design:payNowAndUponArrival",{deposit:v(A,{style:"currency",currency:i.Currency.GBP}),remainder:v(l.price-A,{style:"currency",currency:i.Currency.GBP})})),A&&(null==m?void 0:m.remainderExpireAfter)>0&&t.createElement("div",{className:"mt-4"},E("Design:payNowAndReminderDays",{deposit:v(A,{style:"currency",currency:i.Currency.GBP}),remainder:v(l.price-A,{style:"currency",currency:i.Currency.GBP}),days:null==m?void 0:m.remainderExpireAfter})),g&&t.createElement("div",{className:"d-flex mt-3 w-100"},t.createElement("p",{className:"iframe-event__message-error"},c.hasError(q,"required")&&E("Design:pleaseSelectAtLeastFrom",{min:1,type:"item",from:"this category"}),c.hasError(q,"validate")&&q.message)))}})};
@@ -0,0 +1,24 @@
1
+ /// <reference types="react" />
2
+ import { FieldValues, RefCallBack, UseFormClearErrors } from "react-hook-form";
3
+ import { Product, ProductCategory } from "../../../../../../types";
4
+ interface FormOrderItem {
5
+ id: number;
6
+ name: string;
7
+ price: number;
8
+ productsCategoryId: number;
9
+ deposit?: number | null;
10
+ quantity: number;
11
+ }
12
+ interface ProductQuantityInputProps {
13
+ product: Product;
14
+ category: ProductCategory;
15
+ clearErrors: UseFormClearErrors<FieldValues>;
16
+ onChange: (value: FormOrderItem) => void;
17
+ deposit?: number;
18
+ ref: RefCallBack;
19
+ invalid: boolean;
20
+ productInfo: FormOrderItem;
21
+ }
22
+ export declare const ProductQuantityInput: ({ product, category, onChange, clearErrors, ref, productInfo, invalid, deposit, }: ProductQuantityInputProps) => JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=ProductQuantityInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductQuantityInput.d.ts","sourceRoot":"","sources":["../../../../../../src/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/ProductQuantityInput.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE/E,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEnE,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,yBAAyB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,WAAW,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,aAAa,CAAC;CAC5B;AAED,eAAO,MAAM,oBAAoB,sFAS9B,yBAAyB,gBAgF3B,CAAC"}
@@ -0,0 +1 @@
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("react")),i=require("react-i18next"),n=require("react-bootstrap"),r=e(require("clsx")),o=require("../NumberInput/NumberInput.js");exports.ProductQuantityInput=function(e){var u=e.product,a=e.category,d=e.onChange,c=e.clearErrors,l=e.ref,s=e.productInfo,p=e.invalid,m=e.deposit,y=i.useTranslation("Design").t;return u.isSoldOut?t.createElement("div",{className:"iframe-event__sold-out-wrapper"},y("Design:soldOut")):1===(null==u?void 0:u.maxAmount)?t.createElement(n.Button,{ref:l,disabled:u.isSoldOut,className:r("iframe-event__".concat((null==s?void 0:s.quantity)?"unselect-product":"select-product"),p&&"error"),onClick:function(){d({id:u.id,name:u.name,deposit:m,price:u.price,productsCategoryId:a.id,quantity:(null==s?void 0:s.quantity)?0:1})}},y("Design:".concat((null==s?void 0:s.quantity)?"unselect":"select"))):t.createElement(o.NumberInput,{ref:l,onChange:function(e){d({id:u.id,name:u.name,deposit:m,price:u.price,productsCategoryId:a.id,quantity:e}),c("".concat(u.id))},onArrowDown:function(){d({id:u.id,name:u.name,deposit:m,price:u.price,productsCategoryId:a.id,quantity:(null==s?void 0:s.quantity)-1||0}),c("".concat(u.id))},onArrowUp:function(){var e;d({id:u.id,name:u.name,deposit:m,price:u.price,productsCategoryId:a.id,quantity:(null!==(e=null==s?void 0:s.quantity)&&void 0!==e?e:0)+1}),c("".concat(u.id))},min:0,disabled:u.isSoldOut,value:(null==s?void 0:s.quantity)||0,className:r(p&&"error")})};
@@ -0,0 +1,2 @@
1
+ export { ProductQuantityInput } from "./ProductQuantityInput";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/iframe/order-process/components/CategoryProduct/components/ProductQuantityInput/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -2,8 +2,6 @@ import React from "react";
2
2
  import { ProductQuantityCheckResponse } from "@licklist/plugins/dist/types/Api/verifyStock";
3
3
  import { MenuStep } from "../../../../types";
4
4
  export interface StepsFormProps {
5
- relyOnPeopleCategoryIds?: number[];
6
- ticketCategoriesIds?: number[];
7
5
  step: MenuStep;
8
6
  isLastMenuStep: boolean;
9
7
  onSubmit: (values: Record<string, any>) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"StepsForm.d.ts","sourceRoot":"","sources":["../../../../../src/iframe/order-process/components/StepsForm/StepsForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAWf,OAAO,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC;AAG5F,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C,MAAM,WAAW,cAAc;IAC7B,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IAChD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACrD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACtD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kBAAkB,CAAC,EAAE,4BAA4B,CAAC,UAAU,CAAC,CAAC;CAC/D;AAED,oBAAY,YAAY,GAAG;IACzB,aAAa,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,SAAS,qFA0JrB,CAAC"}
1
+ {"version":3,"file":"StepsForm.d.ts","sourceRoot":"","sources":["../../../../../src/iframe/order-process/components/StepsForm/StepsForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAKN,MAAM,OAAO,CAAC;AAWf,OAAO,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC;AAE5F,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO7C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IAChD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACrD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACtD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kBAAkB,CAAC,EAAE,4BAA4B,CAAC,UAAU,CAAC,CAAC;CAC/D;AAED,oBAAY,YAAY,GAAG;IACzB,aAAa,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,SAAS,qFAoIrB,CAAC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,r=require("tslib"),t=require("react"),o=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,s=require("react-i18next"),u=require("react-bootstrap"),i=require("react-hook-form"),n=require("lodash"),l=require("@licklist/plugins/dist/hooks/Value/usePreviousValue"),a=require("@licklist/plugins/dist/utils/ScrollUtils"),c=require("@licklist/plugins/dist/utils/FormValues"),d=require("../../../event/event-details/components/number-of-people-input/NumberOfPeopleInput.js"),m=require("../Category/Category.js"),f=require("../../constants.js"),p=require("../CalendarStepsForm/components/ErrorModal.js"),E=require("../utils/category.js"),g="NO_ORDER_ITEMS_ERROR",v=t.forwardRef((function(e,v){var y=e.step,q=e.isLastMenuStep,F=e.relyOnPeopleCategoryIds,S=void 0===F?[]:F,C=e.ticketCategoriesIds,h=void 0===C?[]:C,O=e.setFormValues,V=e.defaultValues,_=e.onSubmit,b=e.setFormErrors,P=e.id,j=void 0===P?f.STEP_FORM_ID:P,I=e.productsWithErrors,k=i.useForm({defaultValues:V}),M=s.useTranslation(["Design","Validation"]).t,R=r.__read(t.useState(""),2),T=R[0],N=R[1],x=E.useCategory().verifyCategoryItems,B=k.control,D=k.formState.errors,K=k.getValues,W=k.setError,L=k.clearErrors,w=k.reset,A=i.useWatch({control:B}),H=l.usePreviousValue(D),U=t.useMemo((function(){if(h.length||!(null==S?void 0:S.length))return!1;var e=Object.values(A).filter(Boolean).filter((function(e){return S.includes(e.productsCategoryId)&&e.quantity>0&&!e.isSoldOut}));return Boolean(e.length)}),[A,S,h]);t.useImperativeHandle(v,(function(){return{getFormValues:function(){return K()}}})),t.useEffect((function(){I&&N(M("soldOutProduct"))}),[I]);return t.useEffect((function(){D&&setTimeout(L,0),O(A)}),[A]),t.useEffect((function(){c.isFormValuesEmpty(A)||L(g)}),[A,L]),t.useEffect((function(){w(V)}),[V]),t.useEffect((function(){!n.isEqual(D,H)&&b&&b(D)}),[D,H,b]),o.createElement(u.Form,{onSubmit:k.handleSubmit((function(e){if(q&&c.isFormValuesEmpty(e))return W(g,{}),void a.scrollToError(g);var r=x(e,y);if(r)return N(r.message),void W("category_".concat(r.id),{message:r.message});_(e)}),(function(e){a.scrollToError(c.getFirstErrorKey(e)),N(M("pleaseCheckSelectedProducts"))})),id:j},o.createElement(i.FormProvider,r.__assign({},k),o.createElement(p.ErrorModal,{isOpen:Boolean(T),messageKey:T,onClose:function(){return N("")}}),o.createElement("div",null,o.createElement("div",{className:"iframe-event"},o.createElement(m.Category,{productCategories:null==y?void 0:y.productCategories,productsWithErrors:I,errors:D}),U&&q&&o.createElement(d.NumberOfPeopleInput,null),D[g]&&o.createElement("div",{className:"d-flex m-5 justify-content-center form-error",id:g},o.createElement(s.Trans,{t:M,i18nKey:"pleaseSelectAtLeastFrom",values:{min:1,type:"item",from:"those categories"}}))))))}));exports.StepsForm=v;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,r=require("tslib"),t=require("react"),s=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,o=require("react-i18next"),i=require("react-bootstrap"),u=require("react-hook-form"),a=require("lodash"),l=require("@licklist/plugins/dist/hooks/Value/usePreviousValue"),n=require("@licklist/plugins/dist/utils/ScrollUtils"),c=require("@licklist/plugins/dist/utils/FormValues"),m=require("../Category/Category.js"),d=require("../../constants.js"),f=require("../CalendarStepsForm/components/ErrorModal.js"),E=require("../utils/category.js"),p="NO_ORDER_ITEMS_ERROR",g=t.forwardRef((function(e,g){var v=e.step,y=e.isLastMenuStep,q=e.setFormValues,F=e.defaultValues,S=e.onSubmit,V=e.setFormErrors,_=e.id,C=void 0===_?d.STEP_FORM_ID:_,h=e.productsWithErrors,b=u.useForm({defaultValues:F}),j=o.useTranslation(["Design","Validation"]).t,O=r.__read(t.useState(""),2),P=O[0],R=O[1],T=E.useCategory().verifyCategoryItems,k=b.control,M=b.formState.errors,x=b.getValues,I=b.setError,D=b.clearErrors,K=b.reset,N=u.useWatch({control:k}),W=l.usePreviousValue(M);t.useImperativeHandle(g,(function(){return{getFormValues:function(){return x()}}})),t.useEffect((function(){h&&R(j("soldOutProduct"))}),[h]);return t.useEffect((function(){M&&setTimeout(D,0),q(N)}),[N]),t.useEffect((function(){c.isFormValuesEmpty(N)||D(p)}),[N,D]),t.useEffect((function(){K(F)}),[F]),t.useEffect((function(){!a.isEqual(M,W)&&V&&V(M)}),[M,W,V]),s.createElement(i.Form,{onSubmit:b.handleSubmit((function(e){if(y&&c.isFormValuesEmpty(e))return I(p,{}),void n.scrollToError(p);var r=T(e,v);if(r)return R(r.message),void I("category_".concat(r.id),{message:r.message});S(e)}),(function(e){n.scrollToError(c.getFirstErrorKey(e)),R(j("pleaseCheckSelectedProducts"))})),id:C},s.createElement(u.FormProvider,r.__assign({},b),s.createElement(f.ErrorModal,{isOpen:Boolean(P),messageKey:P,onClose:function(){return R("")}}),s.createElement("div",null,s.createElement("div",{className:"iframe-event"},s.createElement(m.Category,{productCategories:null==v?void 0:v.productCategories,productsWithErrors:h,errors:M}),M[p]&&s.createElement("div",{className:"d-flex m-5 justify-content-center form-error",id:p},s.createElement(o.Trans,{t:j,i18nKey:"pleaseSelectAtLeastFrom",values:{min:1,type:"item",from:"those categories"}}))))))}));exports.StepsForm=g;
@@ -65,7 +65,7 @@
65
65
  .iframe-event__category-product {
66
66
  margin-top: 1rem;
67
67
  padding-bottom: 1rem;
68
-
68
+
69
69
  border-bottom: 2px solid $separator-color;
70
70
 
71
71
  &:first-child {
@@ -73,7 +73,7 @@
73
73
  }
74
74
  }
75
75
 
76
- &:not(:first-child){
76
+ &:not(:first-child) {
77
77
  .iframe-event__name {
78
78
  margin: 1rem 0;
79
79
  }
@@ -89,6 +89,24 @@
89
89
  }
90
90
  }
91
91
 
92
+ &__select-product {
93
+ width: 10.5rem !important;
94
+ margin-top: 1rem;
95
+ }
96
+
97
+ &__unselect-product {
98
+ margin-top: 1rem;
99
+ width: 10.5rem !important;
100
+ background-color: $snippet-elements-button-color !important;
101
+ color: $snippet-elements-button-background-color !important;
102
+ border: 1px solid $snippet-elements-button-background-color !important;
103
+ }
104
+
105
+ &__unselect-product.error,
106
+ &__select-product.error {
107
+ border: 1px solid red !important;
108
+ }
109
+
92
110
  &__product-price-wrapper {
93
111
  display: flex;
94
112
  align-items: center;
@@ -109,7 +127,7 @@
109
127
  }
110
128
 
111
129
  &__product-count {
112
- margin-left: 3rem;
130
+ margin-left: 1.5rem;
113
131
  }
114
132
 
115
133
  &__product-count.error {
@@ -143,7 +161,7 @@
143
161
  border-radius: $iframe-border-radius;
144
162
  font-size: 0.875rem;
145
163
  height: 2.25rem;
146
-
164
+
147
165
  &:active,
148
166
  &.active,
149
167
  &:hover,
@@ -156,25 +174,25 @@
156
174
  background-color: $snippet-elements-button-background-color;
157
175
  box-shadow: 0 0 0 $input-btn-focus-width $snippet-elements-button-background-color;
158
176
  }
159
-
177
+
160
178
  &:disabled {
161
179
  border: none;
162
180
  }
163
181
  }
164
-
182
+
165
183
  &:hover,
166
184
  &.hover,
167
185
  &:focus,
168
186
  &.focus {
169
187
  &:not(:disabled) {
170
- opacity: .7;
188
+ opacity: 0.7;
171
189
  }
172
190
  }
173
-
191
+
174
192
  &:active,
175
193
  &.active {
176
194
  &:not(:disabled) {
177
- opacity: .8;
195
+ opacity: 0.8;
178
196
  }
179
197
  }
180
198
  }
@@ -223,19 +241,19 @@
223
241
  &:focus,
224
242
  &.focus {
225
243
  &:not(:disabled) {
226
- opacity: .7;
244
+ opacity: 0.7;
227
245
  }
228
246
  }
229
247
 
230
248
  &:active,
231
249
  &.active {
232
250
  &:not(:disabled) {
233
- opacity: .8;
251
+ opacity: 0.8;
234
252
  }
235
253
  }
236
254
  }
237
255
 
238
- &__book-now{
256
+ &__book-now {
239
257
  margin: 1rem 0;
240
258
  position: fixed;
241
259
  left: 0;
@@ -260,15 +278,15 @@
260
278
  justify-content: center;
261
279
  width: 10.5rem;
262
280
  height: 2rem;
263
- color: #9D9D9D;
264
- background-color: #F3F3F3;
281
+ color: #9d9d9d;
282
+ background-color: #f3f3f3;
265
283
  border-radius: $iframe-border-radius;
266
284
  }
267
285
  }
268
286
 
269
287
  .people-input {
270
288
  .input-wrapper {
271
- justify-content: center
289
+ justify-content: center;
272
290
  }
273
291
 
274
292
  .iframe-event {
@@ -119,6 +119,7 @@
119
119
 
120
120
  &.show {
121
121
  overflow: scroll;
122
+ overflow-x: hidden;
122
123
  }
123
124
 
124
125
  @include media-breakpoint-down(sm) {
@@ -164,7 +165,8 @@
164
165
  }
165
166
  }
166
167
 
167
- input, select {
168
+ input,
169
+ select {
168
170
  border-radius: $iframe-border-radius;
169
171
  height: 2.25rem;
170
172
  padding: 0.25rem 0.5rem;
@@ -205,16 +207,16 @@
205
207
  &:focus,
206
208
  &.focus {
207
209
  &:not(:disabled) {
208
- background-color: darken(#0E8CE2, 10%);
209
- box-shadow: 0 0 0 $input-btn-focus-width darken(#0E8CE2, 10%);
210
+ background-color: darken(#0e8ce2, 10%);
211
+ box-shadow: 0 0 0 $input-btn-focus-width darken(#0e8ce2, 10%);
210
212
  }
211
213
  }
212
214
 
213
215
  &:active,
214
216
  &.active {
215
217
  &:not(:disabled) {
216
- background-color: darken(#0E8CE2, 10%);
217
- box-shadow: 0 0 0 $input-btn-focus-width darken(#0E8CE2, 10%);
218
+ background-color: darken(#0e8ce2, 10%);
219
+ box-shadow: 0 0 0 $input-btn-focus-width darken(#0e8ce2, 10%);
218
220
  }
219
221
  }
220
222
  }
@@ -229,7 +231,7 @@
229
231
  font-size: 0.875rem;
230
232
  height: 2.25rem;
231
233
 
232
- &:focus{
234
+ &:focus {
233
235
  box-shadow: unset;
234
236
  }
235
237
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@licklist/design",
3
- "version": "0.44.467",
3
+ "version": "0.44.469",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+ssh://git@bitbucket.org/artelogicsoft/licklist_design.git"
@@ -74,6 +74,9 @@ const productCategories = [
74
74
 
75
75
  price: 1,
76
76
  images: IMAGES,
77
+ maxAmount: 1,
78
+ minAmount: 1,
79
+ isRequired: true,
77
80
  },
78
81
  {
79
82
  id: 5,
@@ -7,8 +7,8 @@ import * as Config from "@licklist/core/dist/Config";
7
7
  import HookFormService from "@licklist/plugins/dist/services/Form/HookFormService";
8
8
  import { TicketDescription } from "../../../event/ticket-description";
9
9
  import { ProductCategory, Product } from "../../../../types";
10
- import { NumberInput } from "./components/NumberInput";
11
10
  import { StepsFormProps } from "../StepsForm/StepsForm";
11
+ import { ProductQuantityInput } from "./components/ProductQuantityInput";
12
12
 
13
13
  interface CategoryProductProps {
14
14
  product: Product;
@@ -126,52 +126,16 @@ export const CategoryProduct = ({
126
126
  currency: Config.Currency.GBP,
127
127
  })}
128
128
  </span>
129
- {product.isSoldOut ? (
130
- <div className="iframe-event__sold-out-wrapper">
131
- {t("Design:soldOut")}
132
- </div>
133
- ) : (
134
- <NumberInput
135
- ref={ref}
136
- onChange={(val) => {
137
- onChange({
138
- id: product.id,
139
- name: product.name,
140
- deposit,
141
- price: product.price,
142
- productsCategoryId: category.id,
143
- quantity: val,
144
- });
145
- clearErrors(`${product.id}` as const);
146
- }}
147
- onArrowDown={() => {
148
- onChange({
149
- id: product.id,
150
- name: product.name,
151
- deposit,
152
- price: product.price,
153
- productsCategoryId: category.id,
154
- quantity: productInfo?.quantity - 1 || 0,
155
- });
156
- clearErrors(`${product.id}` as const);
157
- }}
158
- onArrowUp={() => {
159
- onChange({
160
- id: product.id,
161
- name: product.name,
162
- deposit,
163
- price: product.price,
164
- productsCategoryId: category.id,
165
- quantity: (productInfo?.quantity ?? 0) + 1,
166
- });
167
- clearErrors(`${product.id}` as const);
168
- }}
169
- min={0}
170
- disabled={product.isSoldOut}
171
- value={productInfo?.quantity || 0}
172
- className={clsx(invalid && "error")}
173
- />
174
- )}
129
+ <ProductQuantityInput
130
+ onChange={onChange}
131
+ productInfo={productInfo}
132
+ ref={ref}
133
+ clearErrors={clearErrors}
134
+ product={product}
135
+ category={category}
136
+ invalid={invalid}
137
+ deposit={deposit}
138
+ />
175
139
  </div>
176
140
  {deposit && !category?.remainderExpireAfter && (
177
141
  <div className="mt-4">
@@ -0,0 +1,118 @@
1
+ import React from "react";
2
+ import clsx from "clsx";
3
+ import { Button } from "react-bootstrap";
4
+ import { useTranslation } from "react-i18next";
5
+ import { FieldValues, RefCallBack, UseFormClearErrors } from "react-hook-form";
6
+ import { NumberInput } from "../NumberInput";
7
+ import { Product, ProductCategory } from "../../../../../../types";
8
+
9
+ interface FormOrderItem {
10
+ id: number;
11
+ name: string;
12
+ price: number;
13
+ productsCategoryId: number;
14
+ deposit?: number | null;
15
+ quantity: number;
16
+ }
17
+
18
+ interface ProductQuantityInputProps {
19
+ product: Product;
20
+ category: ProductCategory;
21
+ clearErrors: UseFormClearErrors<FieldValues>;
22
+ onChange: (value: FormOrderItem) => void;
23
+ deposit?: number;
24
+ ref: RefCallBack;
25
+ invalid: boolean;
26
+ productInfo: FormOrderItem;
27
+ }
28
+
29
+ export const ProductQuantityInput = ({
30
+ product,
31
+ category,
32
+ onChange,
33
+ clearErrors,
34
+ ref,
35
+ productInfo,
36
+ invalid,
37
+ deposit,
38
+ }: ProductQuantityInputProps) => {
39
+ const { t } = useTranslation("Design");
40
+
41
+ const onClick = () => {
42
+ onChange({
43
+ id: product.id,
44
+ name: product.name,
45
+ deposit,
46
+ price: product.price,
47
+ productsCategoryId: category.id,
48
+ quantity: productInfo?.quantity ? 0 : 1,
49
+ });
50
+ };
51
+
52
+ if (product.isSoldOut) {
53
+ return (
54
+ <div className="iframe-event__sold-out-wrapper">
55
+ {t("Design:soldOut")}
56
+ </div>
57
+ );
58
+ }
59
+ if (product?.maxAmount === 1) {
60
+ return (
61
+ <Button
62
+ ref={ref}
63
+ disabled={product.isSoldOut}
64
+ className={clsx(
65
+ `iframe-event__${
66
+ productInfo?.quantity ? "unselect-product" : "select-product"
67
+ }`,
68
+ invalid && "error"
69
+ )}
70
+ onClick={onClick}
71
+ >
72
+ {t(`Design:${productInfo?.quantity ? "unselect" : "select"}`)}
73
+ </Button>
74
+ );
75
+ }
76
+ return (
77
+ <NumberInput
78
+ ref={ref}
79
+ onChange={(val) => {
80
+ onChange({
81
+ id: product.id,
82
+ name: product.name,
83
+ deposit,
84
+ price: product.price,
85
+ productsCategoryId: category.id,
86
+ quantity: val,
87
+ });
88
+ clearErrors(`${product.id}` as const);
89
+ }}
90
+ onArrowDown={() => {
91
+ onChange({
92
+ id: product.id,
93
+ name: product.name,
94
+ deposit,
95
+ price: product.price,
96
+ productsCategoryId: category.id,
97
+ quantity: productInfo?.quantity - 1 || 0,
98
+ });
99
+ clearErrors(`${product.id}` as const);
100
+ }}
101
+ onArrowUp={() => {
102
+ onChange({
103
+ id: product.id,
104
+ name: product.name,
105
+ deposit,
106
+ price: product.price,
107
+ productsCategoryId: category.id,
108
+ quantity: (productInfo?.quantity ?? 0) + 1,
109
+ });
110
+ clearErrors(`${product.id}` as const);
111
+ }}
112
+ min={0}
113
+ disabled={product.isSoldOut}
114
+ value={productInfo?.quantity || 0}
115
+ className={clsx(invalid && "error")}
116
+ />
117
+ );
118
+ };
@@ -0,0 +1 @@
1
+ export { ProductQuantityInput } from "./ProductQuantityInput";
@@ -1,6 +1,5 @@
1
1
  import React, {
2
2
  useEffect,
3
- useMemo,
4
3
  forwardRef,
5
4
  useImperativeHandle,
6
5
  useState,
@@ -17,7 +16,6 @@ import {
17
16
  } from "@licklist/plugins/dist/utils/FormValues";
18
17
  import { ProductQuantityCheckResponse } from "@licklist/plugins/dist/types/Api/verifyStock";
19
18
  import { Category } from "../Category";
20
- import { NumberOfPeopleInput } from "../../../event/event-details/components/number-of-people-input";
21
19
  import { MenuStep } from "../../../../types";
22
20
  import { STEP_FORM_ID } from "../../constants";
23
21
  import { ErrorModal } from "../CalendarStepsForm/components/ErrorModal";
@@ -26,8 +24,6 @@ import { useCategory } from "../utils/category";
26
24
  const NO_ORDER_ITEMS_ERROR = "NO_ORDER_ITEMS_ERROR";
27
25
 
28
26
  export interface StepsFormProps {
29
- relyOnPeopleCategoryIds?: number[];
30
- ticketCategoriesIds?: number[];
31
27
  step: MenuStep;
32
28
  isLastMenuStep: boolean;
33
29
  onSubmit: (values: Record<string, any>) => void;
@@ -47,8 +43,6 @@ export const StepsForm = forwardRef<StepsFormRef, StepsFormProps>(
47
43
  {
48
44
  step,
49
45
  isLastMenuStep,
50
- relyOnPeopleCategoryIds = [],
51
- ticketCategoriesIds = [],
52
46
  setFormValues,
53
47
  defaultValues,
54
48
  onSubmit,
@@ -74,22 +68,6 @@ export const StepsForm = forwardRef<StepsFormRef, StepsFormProps>(
74
68
  const formValues = useWatch({ control });
75
69
  const prevErrors = usePreviousValue(errors);
76
70
 
77
- const shouldShowPeopleInput = useMemo(() => {
78
- if (ticketCategoriesIds.length || !relyOnPeopleCategoryIds?.length) {
79
- return false;
80
- }
81
- const values = Object.values(formValues)
82
- .filter(Boolean)
83
- .filter(
84
- (product) =>
85
- relyOnPeopleCategoryIds.includes(product.productsCategoryId) &&
86
- product.quantity > 0 &&
87
- !product.isSoldOut
88
- );
89
-
90
- return Boolean(values.length);
91
- }, [formValues, relyOnPeopleCategoryIds, ticketCategoriesIds]);
92
-
93
71
  useImperativeHandle(ref, () => {
94
72
  return {
95
73
  getFormValues: () => getValues(),
@@ -174,10 +152,6 @@ export const StepsForm = forwardRef<StepsFormRef, StepsFormProps>(
174
152
  errors={errors}
175
153
  />
176
154
 
177
- {shouldShowPeopleInput && isLastMenuStep && (
178
- <NumberOfPeopleInput />
179
- )}
180
-
181
155
  {errors[NO_ORDER_ITEMS_ERROR] && (
182
156
  <div
183
157
  className="d-flex m-5 justify-content-center form-error"
@@ -65,7 +65,7 @@
65
65
  .iframe-event__category-product {
66
66
  margin-top: 1rem;
67
67
  padding-bottom: 1rem;
68
-
68
+
69
69
  border-bottom: 2px solid $separator-color;
70
70
 
71
71
  &:first-child {
@@ -73,7 +73,7 @@
73
73
  }
74
74
  }
75
75
 
76
- &:not(:first-child){
76
+ &:not(:first-child) {
77
77
  .iframe-event__name {
78
78
  margin: 1rem 0;
79
79
  }
@@ -89,6 +89,24 @@
89
89
  }
90
90
  }
91
91
 
92
+ &__select-product {
93
+ width: 10.5rem !important;
94
+ margin-top: 1rem;
95
+ }
96
+
97
+ &__unselect-product {
98
+ margin-top: 1rem;
99
+ width: 10.5rem !important;
100
+ background-color: $snippet-elements-button-color !important;
101
+ color: $snippet-elements-button-background-color !important;
102
+ border: 1px solid $snippet-elements-button-background-color !important;
103
+ }
104
+
105
+ &__unselect-product.error,
106
+ &__select-product.error {
107
+ border: 1px solid red !important;
108
+ }
109
+
92
110
  &__product-price-wrapper {
93
111
  display: flex;
94
112
  align-items: center;
@@ -109,7 +127,7 @@
109
127
  }
110
128
 
111
129
  &__product-count {
112
- margin-left: 3rem;
130
+ margin-left: 1.5rem;
113
131
  }
114
132
 
115
133
  &__product-count.error {
@@ -143,7 +161,7 @@
143
161
  border-radius: $iframe-border-radius;
144
162
  font-size: 0.875rem;
145
163
  height: 2.25rem;
146
-
164
+
147
165
  &:active,
148
166
  &.active,
149
167
  &:hover,
@@ -156,25 +174,25 @@
156
174
  background-color: $snippet-elements-button-background-color;
157
175
  box-shadow: 0 0 0 $input-btn-focus-width $snippet-elements-button-background-color;
158
176
  }
159
-
177
+
160
178
  &:disabled {
161
179
  border: none;
162
180
  }
163
181
  }
164
-
182
+
165
183
  &:hover,
166
184
  &.hover,
167
185
  &:focus,
168
186
  &.focus {
169
187
  &:not(:disabled) {
170
- opacity: .7;
188
+ opacity: 0.7;
171
189
  }
172
190
  }
173
-
191
+
174
192
  &:active,
175
193
  &.active {
176
194
  &:not(:disabled) {
177
- opacity: .8;
195
+ opacity: 0.8;
178
196
  }
179
197
  }
180
198
  }
@@ -223,19 +241,19 @@
223
241
  &:focus,
224
242
  &.focus {
225
243
  &:not(:disabled) {
226
- opacity: .7;
244
+ opacity: 0.7;
227
245
  }
228
246
  }
229
247
 
230
248
  &:active,
231
249
  &.active {
232
250
  &:not(:disabled) {
233
- opacity: .8;
251
+ opacity: 0.8;
234
252
  }
235
253
  }
236
254
  }
237
255
 
238
- &__book-now{
256
+ &__book-now {
239
257
  margin: 1rem 0;
240
258
  position: fixed;
241
259
  left: 0;
@@ -260,15 +278,15 @@
260
278
  justify-content: center;
261
279
  width: 10.5rem;
262
280
  height: 2rem;
263
- color: #9D9D9D;
264
- background-color: #F3F3F3;
281
+ color: #9d9d9d;
282
+ background-color: #f3f3f3;
265
283
  border-radius: $iframe-border-radius;
266
284
  }
267
285
  }
268
286
 
269
287
  .people-input {
270
288
  .input-wrapper {
271
- justify-content: center
289
+ justify-content: center;
272
290
  }
273
291
 
274
292
  .iframe-event {
@@ -119,6 +119,7 @@
119
119
 
120
120
  &.show {
121
121
  overflow: scroll;
122
+ overflow-x: hidden;
122
123
  }
123
124
 
124
125
  @include media-breakpoint-down(sm) {
@@ -164,7 +165,8 @@
164
165
  }
165
166
  }
166
167
 
167
- input, select {
168
+ input,
169
+ select {
168
170
  border-radius: $iframe-border-radius;
169
171
  height: 2.25rem;
170
172
  padding: 0.25rem 0.5rem;
@@ -205,16 +207,16 @@
205
207
  &:focus,
206
208
  &.focus {
207
209
  &:not(:disabled) {
208
- background-color: darken(#0E8CE2, 10%);
209
- box-shadow: 0 0 0 $input-btn-focus-width darken(#0E8CE2, 10%);
210
+ background-color: darken(#0e8ce2, 10%);
211
+ box-shadow: 0 0 0 $input-btn-focus-width darken(#0e8ce2, 10%);
210
212
  }
211
213
  }
212
214
 
213
215
  &:active,
214
216
  &.active {
215
217
  &:not(:disabled) {
216
- background-color: darken(#0E8CE2, 10%);
217
- box-shadow: 0 0 0 $input-btn-focus-width darken(#0E8CE2, 10%);
218
+ background-color: darken(#0e8ce2, 10%);
219
+ box-shadow: 0 0 0 $input-btn-focus-width darken(#0e8ce2, 10%);
218
220
  }
219
221
  }
220
222
  }
@@ -229,7 +231,7 @@
229
231
  font-size: 0.875rem;
230
232
  height: 2.25rem;
231
233
 
232
- &:focus{
234
+ &:focus {
233
235
  box-shadow: unset;
234
236
  }
235
237
  }