@licklist/design 0.69.3 → 0.69.4

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 (28) hide show
  1. package/dist/events/edit-event-modal/utils/getDefaultProductSet.d.ts.map +1 -1
  2. package/dist/events/edit-event-modal/utils/getDefaultProductSet.js +3 -1
  3. package/dist/iframe/activity-card/ActivityCard.d.ts +5 -4
  4. package/dist/iframe/activity-card/ActivityCard.d.ts.map +1 -1
  5. package/dist/iframe/activity-card/ActivityCard.js +52 -40
  6. package/dist/product-set/card/ProductSetCard.d.ts.map +1 -1
  7. package/dist/product-set/card/ProductSetCard.js +10 -0
  8. package/dist/product-set/control/ProductSetControl.d.ts +4 -0
  9. package/dist/product-set/control/ProductSetControl.d.ts.map +1 -1
  10. package/dist/product-set/control/ProductSetControl.js +30 -3
  11. package/dist/product-set/control/ProductSetImageControl.d.ts +2 -0
  12. package/dist/product-set/control/ProductSetImageControl.d.ts.map +1 -0
  13. package/dist/product-set/control/ProductSetImageControl.js +279 -0
  14. package/dist/product-set/form/MobileFooter.d.ts.map +1 -1
  15. package/dist/styles/activity-card/{GridActivitiesCard.scss → ActivitiesCard.scss} +19 -5
  16. package/dist/styles/activity-card/ListActivitiesCard.scss +12 -42
  17. package/dist/styles/activity-card/_index.scss +1 -1
  18. package/package.json +2 -2
  19. package/src/events/edit-event-modal/utils/getDefaultProductSet.ts +2 -0
  20. package/src/iframe/activity-card/ActivityCard.tsx +35 -24
  21. package/src/product-set/card/ProductSetCard.tsx +15 -2
  22. package/src/product-set/control/ProductSetControl.tsx +52 -52
  23. package/src/product-set/control/ProductSetImageControl.tsx +97 -0
  24. package/src/product-set/form/MobileFooter.tsx +1 -3
  25. package/src/styles/activity-card/{GridActivitiesCard.scss → ActivitiesCard.scss} +19 -5
  26. package/src/styles/activity-card/ListActivitiesCard.scss +12 -42
  27. package/src/styles/activity-card/_index.scss +1 -1
  28. package/yarn.lock +57 -31
@@ -1 +1 @@
1
- {"version":3,"file":"getDefaultProductSet.d.ts","sourceRoot":"","sources":["../../../../src/events/edit-event-modal/utils/getDefaultProductSet.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACX,MAAM,6DAA6D,CAAA;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAA;AAE/E,eAAO,MAAM,gBAAgB,gBACd,UAAU,GAAG,IAAI,qBACX,OAAO,KACzB,oBAqCD,CAAA"}
1
+ {"version":3,"file":"getDefaultProductSet.d.ts","sourceRoot":"","sources":["../../../../src/events/edit-event-modal/utils/getDefaultProductSet.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACX,MAAM,6DAA6D,CAAA;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAA;AAE/E,eAAO,MAAM,gBAAgB,gBACd,UAAU,GAAG,IAAI,qBACX,OAAO,KACzB,oBAuCD,CAAA"}
@@ -100,10 +100,12 @@ function _object_without_properties_loose(source, excluded) {
100
100
  }
101
101
  var getDefaultValues = function(productSet, hasNoRecurrences) {
102
102
  var _productSet_mailTemplates, _productSet_smsTemplates, _productSet_steps;
103
- var _productSet_id, _productSet_name, _productSet_type, _productSet_termsAndConditions, _productSet_operationalCost, _productSet_relyOnPeopleType, _productSet_thankYouPageUrl, _productSet_steps_map, _productSet_menuRecurrences;
103
+ var _productSet_id, _productSet_name, _productSet_description, _productSet_type, _productSet_termsAndConditions, _productSet_operationalCost, _productSet_relyOnPeopleType, _productSet_thankYouPageUrl, _productSet_steps_map, _productSet_menuRecurrences;
104
104
  return {
105
105
  id: (_productSet_id = productSet === null || productSet === void 0 ? void 0 : productSet.id) !== null && _productSet_id !== void 0 ? _productSet_id : 0,
106
106
  name: (_productSet_name = productSet === null || productSet === void 0 ? void 0 : productSet.name) !== null && _productSet_name !== void 0 ? _productSet_name : '',
107
+ description: (_productSet_description = productSet === null || productSet === void 0 ? void 0 : productSet.description) !== null && _productSet_description !== void 0 ? _productSet_description : '',
108
+ image: productSet === null || productSet === void 0 ? void 0 : productSet.image,
107
109
  type: (_productSet_type = productSet === null || productSet === void 0 ? void 0 : productSet.type) !== null && _productSet_type !== void 0 ? _productSet_type : DEFAULT_PRODUCT_SET_TYPE,
108
110
  termsAndConditions: (_productSet_termsAndConditions = productSet === null || productSet === void 0 ? void 0 : productSet.termsAndConditions) !== null && _productSet_termsAndConditions !== void 0 ? _productSet_termsAndConditions : '',
109
111
  operationalCost: (_productSet_operationalCost = productSet === null || productSet === void 0 ? void 0 : productSet.operationalCost) !== null && _productSet_operationalCost !== void 0 ? _productSet_operationalCost : DEFAULT_OPERATIONAL_COST_TYPE,
@@ -1,16 +1,17 @@
1
1
  import { ReactNode } from 'react';
2
+ import { Image } from '@licklist/core/dist/DataMapper/Media/ImageDataMapper';
2
3
  export declare const LAYOUT_GRID = "grid";
3
4
  export declare const LAYOUT_LIST = "list";
4
- type Layout = typeof LAYOUT_GRID | typeof LAYOUT_LIST;
5
5
  export type ActivityCardProps = {
6
6
  title: ReactNode;
7
7
  duration: ReactNode;
8
8
  price: ReactNode;
9
+ description?: ReactNode;
9
10
  onSelect: () => void;
10
11
  isSelected: boolean;
11
- layout?: Layout;
12
+ layout?: typeof LAYOUT_GRID | typeof LAYOUT_LIST;
12
13
  availableTimes?: string | null;
14
+ image?: Image | null;
13
15
  };
14
- export declare const ActivityCard: ({ title, duration, price, availableTimes, onSelect, isSelected, layout, }: ActivityCardProps) => import("react/jsx-runtime").JSX.Element;
15
- export {};
16
+ export declare const ActivityCard: ({ title, duration, price, description, availableTimes, image, onSelect, isSelected, layout, }: ActivityCardProps) => import("react/jsx-runtime").JSX.Element;
16
17
  //# sourceMappingURL=ActivityCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityCard.d.ts","sourceRoot":"","sources":["../../../src/iframe/activity-card/ActivityCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGjC,eAAO,MAAM,WAAW,SAAS,CAAA;AACjC,eAAO,MAAM,WAAW,SAAS,CAAA;AAEjC,KAAK,MAAM,GAAG,OAAO,WAAW,GAAG,OAAO,WAAW,CAAA;AAErD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,CAAA;AAED,eAAO,MAAM,YAAY,8EAStB,iBAAiB,4CAwCnB,CAAA"}
1
+ {"version":3,"file":"ActivityCard.d.ts","sourceRoot":"","sources":["../../../src/iframe/activity-card/ActivityCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,sDAAsD,CAAA;AAE5E,eAAO,MAAM,WAAW,SAAS,CAAA;AACjC,eAAO,MAAM,WAAW,SAAS,CAAA;AAEjC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,EAAE,SAAS,CAAA;IAChB,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,WAAW,GAAG,OAAO,WAAW,CAAA;IAChD,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,YAAY,kGAUtB,iBAAiB,4CAiDnB,CAAA"}
@@ -1,63 +1,75 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import clsx from 'clsx';
3
3
 
4
4
  var LAYOUT_GRID = 'grid';
5
5
  var LAYOUT_LIST = 'list';
6
6
  var ActivityCard = function(param) {
7
- var title = param.title, duration = param.duration, price = param.price, availableTimes = param.availableTimes, // image,
8
- onSelect = param.onSelect, isSelected = param.isSelected, _param_layout = param.layout, layout = _param_layout === void 0 ? LAYOUT_GRID : _param_layout;
7
+ var title = param.title, duration = param.duration, price = param.price, description = param.description, availableTimes = param.availableTimes, image = param.image, onSelect = param.onSelect, isSelected = param.isSelected, _param_layout = param.layout, layout = _param_layout === void 0 ? LAYOUT_GRID : _param_layout;
9
8
  if (layout === LAYOUT_GRID) {
10
- return /*#__PURE__*/ jsx("button", {
9
+ return /*#__PURE__*/ jsxs("button", {
11
10
  type: "button",
12
- className: clsx('activity-card', isSelected && 'active'),
11
+ className: clsx('activity-card', {
12
+ active: isSelected
13
+ }),
13
14
  onClick: onSelect,
14
- children: /*#__PURE__*/ jsxs("div", {
15
- className: clsx('d-flex', 'flex-column'),
16
- children: [
17
- /*#__PURE__*/ jsx("div", {
18
- className: "activity-card-title",
19
- children: title
20
- }),
21
- duration && /*#__PURE__*/ jsx("div", {
22
- children: duration
23
- }),
24
- price && /*#__PURE__*/ jsx("div", {
25
- children: price
26
- })
27
- ]
28
- })
29
- });
30
- }
31
- return /*#__PURE__*/ jsxs("div", {
32
- role: "button",
33
- onClick: onSelect,
34
- onKeyPress: onSelect,
35
- tabIndex: 0,
36
- children: [
37
- /*#__PURE__*/ jsx("div", {
38
- className: clsx('list-activity-card', {
39
- active: isSelected
15
+ children: [
16
+ image && /*#__PURE__*/ jsx("img", {
17
+ src: image.url,
18
+ alt: typeof title === 'string' ? title : ''
40
19
  }),
41
- children: /*#__PURE__*/ jsxs("div", {
42
- className: "description",
20
+ /*#__PURE__*/ jsxs("div", {
43
21
  children: [
44
22
  /*#__PURE__*/ jsx("div", {
45
- className: "title mb-2",
23
+ className: "activity-card-title",
46
24
  children: title
47
25
  }),
48
- availableTimes && /*#__PURE__*/ jsx("div", {
49
- children: availableTimes
50
- }),
51
26
  duration && /*#__PURE__*/ jsx("div", {
52
- children: /*#__PURE__*/ jsx("p", {
53
- children: duration
54
- })
27
+ children: duration
55
28
  }),
56
29
  price && /*#__PURE__*/ jsx("div", {
57
30
  children: price
31
+ }),
32
+ description && /*#__PURE__*/ jsx("div", {
33
+ className: "mt-2 activity-card-description",
34
+ children: description
58
35
  })
59
36
  ]
60
37
  })
38
+ ]
39
+ });
40
+ }
41
+ return /*#__PURE__*/ jsxs("button", {
42
+ type: "button",
43
+ onClick: onSelect,
44
+ className: clsx('activity-card list-activity-card', {
45
+ active: isSelected
46
+ }),
47
+ children: [
48
+ image && /*#__PURE__*/ jsx("img", {
49
+ src: image.url,
50
+ alt: typeof title === 'string' ? title : ''
51
+ }),
52
+ /*#__PURE__*/ jsxs("div", {
53
+ className: "activity-card-info",
54
+ children: [
55
+ /*#__PURE__*/ jsx("div", {
56
+ className: "activity-card-title mb-2",
57
+ children: title
58
+ }),
59
+ availableTimes && /*#__PURE__*/ jsx("div", {
60
+ children: availableTimes
61
+ }),
62
+ duration && /*#__PURE__*/ jsx("div", {
63
+ children: duration
64
+ }),
65
+ price && /*#__PURE__*/ jsx("div", {
66
+ children: price
67
+ }),
68
+ description && /*#__PURE__*/ jsx("div", {
69
+ className: "mt-2 activity-card-description",
70
+ children: description
71
+ })
72
+ ]
61
73
  }),
62
74
  /*#__PURE__*/ jsx("hr", {
63
75
  className: "list-activity-card-hr"
@@ -1 +1 @@
1
- {"version":3,"file":"ProductSetCard.d.ts","sourceRoot":"","sources":["../../../src/product-set/card/ProductSetCard.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAA;AAMtF,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAc,EACd,aAAoB,EACpB,QAAY,GACb,EAAE,mBAAmB,2CAyGrB"}
1
+ {"version":3,"file":"ProductSetCard.d.ts","sourceRoot":"","sources":["../../../src/product-set/card/ProductSetCard.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAA;AAMtF,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAc,EACd,aAAoB,EACpB,QAAY,GACb,EAAE,mBAAmB,2CAsHrB"}
@@ -120,6 +120,11 @@ function ProductSetCard(param) {
120
120
  /*#__PURE__*/ jsx(ListGroup.Item, {
121
121
  action: true,
122
122
  as: "div",
123
+ role: "button",
124
+ tabIndex: 0,
125
+ onClick: function(e) {
126
+ return e.stopPropagation();
127
+ },
123
128
  children: Boolean(onCopy) && /*#__PURE__*/ jsx(ConfirmModal, {
124
129
  children: function(confirm) {
125
130
  return /*#__PURE__*/ jsx(MenuButton, {
@@ -137,6 +142,11 @@ function ProductSetCard(param) {
137
142
  action: true,
138
143
  className: "text-danger",
139
144
  as: "div",
145
+ role: "button",
146
+ tabIndex: 0,
147
+ onClick: function(e) {
148
+ return e.stopPropagation();
149
+ },
140
150
  children: Boolean(onRemove) && /*#__PURE__*/ jsx(ConfirmModal, {
141
151
  children: function(confirm) {
142
152
  return /*#__PURE__*/ jsx(MenuButton, {
@@ -3,6 +3,7 @@ import { FieldSet } from '@licklist/core/dist/DataMapper/Order/FieldSetDataMappe
3
3
  import { EmailTemplate } from '@licklist/core/dist/DataMapper/Notification/EmailTemplateDataMapper';
4
4
  import { SmsTemplate } from '@licklist/core/dist/DataMapper/Notification/SmsTemplateDataMapper';
5
5
  import { WorkHour } from '@licklist/core/dist/DataMapper/Provider/WorkHourDataMapper';
6
+ import { Image } from '@licklist/core/dist/DataMapper/Media/ImageDataMapper';
6
7
  import { SelectItem } from '../../types/generic/SelectItem';
7
8
  import { DateAndRecurrenceInputValues } from './DateAndRecurrenceInput';
8
9
  import { Step } from '../types';
@@ -13,6 +14,8 @@ export interface TemplateItem {
13
14
  }
14
15
  export interface ProductSetControlValues extends DateAndRecurrenceInputValues {
15
16
  name: string;
17
+ description?: string;
18
+ image?: Image;
16
19
  type: ProductSetType;
17
20
  termsAndConditions: string;
18
21
  thankYouPageUrl: string;
@@ -23,6 +26,7 @@ export interface ProductSetControlValues extends DateAndRecurrenceInputValues {
23
26
  steps: Step[];
24
27
  emailTemplates?: TemplateItem[];
25
28
  smsTemplates?: TemplateItem[];
29
+ localImageBlobURL?: string;
26
30
  }
27
31
  export interface ProductSetControlShared {
28
32
  fee?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ProductSetControl.d.ts","sourceRoot":"","sources":["../../../src/product-set/control/ProductSetControl.tsx"],"names":[],"mappings":"AAIA,OAAO,EAOL,mBAAmB,EACnB,cAAc,EAEd,gBAAgB,EACjB,MAAM,6DAA6D,CAAA;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,yDAAyD,CAAA;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,qEAAqE,CAAA;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,mEAAmE,CAAA;AAG/F,OAAO,EAAE,QAAQ,EAAE,MAAM,4DAA4D,CAAA;AAGrF,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,EAIL,4BAA4B,EAC7B,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAgB/B,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,aAAa,GAAG,WAAW,CAAA;IAClC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,uBAAwB,SAAQ,4BAA4B;IAC3E,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,cAAc,CAAA;IACpB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,mBAAmB,CAAA;IACpC,aAAa,CAAC,EAAE,UAAU,EAAE,CAAA;IAC5B,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;IAC/B,YAAY,CAAC,EAAE,YAAY,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;IAChC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;IAC/B,YAAY,CAAC,EAAE,YAAY,EAAE,CAAA;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAA;IACjC,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,WAAW,EACX,SAAS,EACT,GAAU,EACV,SAAc,EACd,cAAmB,EACnB,YAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,4BAAoC,EACpC,WAAmB,EACnB,oBAA4B,EAC5B,QAAQ,GACT,EAAE,sBAAsB,2CAyTxB"}
1
+ {"version":3,"file":"ProductSetControl.d.ts","sourceRoot":"","sources":["../../../src/product-set/control/ProductSetControl.tsx"],"names":[],"mappings":"AAIA,OAAO,EAOL,mBAAmB,EACnB,cAAc,EAEd,gBAAgB,EACjB,MAAM,6DAA6D,CAAA;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,yDAAyD,CAAA;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,qEAAqE,CAAA;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,mEAAmE,CAAA;AAG/F,OAAO,EAAE,QAAQ,EAAE,MAAM,4DAA4D,CAAA;AAErF,OAAO,EAAE,KAAK,EAAE,MAAM,sDAAsD,CAAA;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,EAEL,4BAA4B,EAC7B,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAmB/B,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,aAAa,GAAG,WAAW,CAAA;IAClC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,uBAAwB,SAAQ,4BAA4B;IAC3E,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,IAAI,EAAE,cAAc,CAAA;IACpB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,mBAAmB,CAAA;IACpC,aAAa,CAAC,EAAE,UAAU,EAAE,CAAA;IAC5B,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;IAC/B,YAAY,CAAC,EAAE,YAAY,EAAE,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;IAChC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;IAC/B,YAAY,CAAC,EAAE,YAAY,EAAE,CAAA;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAA;IACjC,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,WAAW,EACX,SAAS,EACT,GAAU,EACV,SAAc,EACd,cAAmB,EACnB,YAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,4BAAoC,EACpC,WAAmB,EACnB,oBAA4B,EAC5B,QAAQ,GACT,EAAE,sBAAsB,2CAoTxB"}
@@ -14,6 +14,7 @@ import TutorialGifCard from './TutorialGifCard.js';
14
14
  import { StepsControl } from '../form/StepsControl.js';
15
15
  import { Typeahead } from '../../typeahead/Typeahead.js';
16
16
  import { DateInput } from './DateInput.js';
17
+ import { ProductSetImageControl } from './ProductSetImageControl.js';
17
18
  import WarningMessage from '../../static/WarningMessage.js';
18
19
 
19
20
  function _define_property(obj, key, value) {
@@ -72,9 +73,10 @@ var _obj;
72
73
  var OPERATIONAL_COST_TITLES = (_obj = {}, _define_property(_obj, OPERATIONAL_COST_PROVIDER, 'operationalCostProvider'), _define_property(_obj, OPERATIONAL_COST_CUSTOMER, 'operationalCostCustomer'), _obj);
73
74
  var _obj1;
74
75
  var RELY_ON_PEOPLE_TYPE_TITLES = (_obj1 = {}, _define_property(_obj1, RELY_ON_PEOPLE_PRODUCT_CAPACITY_QUANTITY, 'peopleProductCapacityQuantity'), _define_property(_obj1, RELY_ON_PEOPLE_PRODUCT_QUANTITY, 'peopleProductQuantity'), _define_property(_obj1, RELY_ON_PEOPLE_QUANTITY, 'peopleQuantity'), _obj1);
76
+ var MAX_DESCRIPTION_LENGTH = 100;
75
77
  function ProductSetControl(param) {
76
78
  var companyName = param.companyName, isLoading = param.isLoading, _param_fee = param.fee, fee = _param_fee === void 0 ? '5%' : _param_fee, _param_fieldSets = param.fieldSets, fieldSets = _param_fieldSets === void 0 ? [] : _param_fieldSets, _param_emailTemplates = param.emailTemplates, emailTemplates = _param_emailTemplates === void 0 ? [] : _param_emailTemplates, _param_smsTemplates = param.smsTemplates, smsTemplates = _param_smsTemplates === void 0 ? [] : _param_smsTemplates, isEventEditProductSet = param.isEventEditProductSet, isCreateAction = param.isCreateAction, showEmailTemplate = param.showEmailTemplate, showSmsTemplate = param.showSmsTemplate, workHours = param.workHours, _param_providerHasBookingManagement = param.providerHasBookingManagement, providerHasBookingManagement = _param_providerHasBookingManagement === void 0 ? false : _param_providerHasBookingManagement, _param_isOverrides = param.isOverrides, isOverrides = _param_isOverrides === void 0 ? false : _param_isOverrides, _param_isCreateNewOverrides = param.isCreateNewOverrides, isCreateNewOverrides = _param_isCreateNewOverrides === void 0 ? false : _param_isCreateNewOverrides, timeZone = param.timeZone;
77
- var _errors_name;
79
+ var _errors_name, _errors_description;
78
80
  var t = useTranslation([
79
81
  'Design',
80
82
  'Validation',
@@ -83,6 +85,7 @@ function ProductSetControl(param) {
83
85
  var _useFormContext = useFormContext(), register = _useFormContext.register, control = _useFormContext.control, errors = _useFormContext.formState.errors, watch = _useFormContext.watch, setError = _useFormContext.setError, clearErrors = _useFormContext.clearErrors;
84
86
  var steps = watch('steps');
85
87
  var nameId = useId();
88
+ var descriptionId = useId();
86
89
  var termsAndConditionsId = useId();
87
90
  var relyOnPeopleTypeId = useId();
88
91
  var showSmsTemplateSelector = showSmsTemplate && !isOverrides;
@@ -141,6 +144,31 @@ function ProductSetControl(param) {
141
144
  })
142
145
  ]
143
146
  }),
147
+ /*#__PURE__*/ jsxs(Form.Group, {
148
+ controlId: descriptionId,
149
+ children: [
150
+ /*#__PURE__*/ jsx(Form.Label, {
151
+ children: t('Design:description')
152
+ }),
153
+ /*#__PURE__*/ jsx(Form.Control, _object_spread_props(_object_spread({}, register('description', {
154
+ maxLength: {
155
+ value: MAX_DESCRIPTION_LENGTH,
156
+ message: t('Validation:fieldMaxLength', {
157
+ attribute: t('description'),
158
+ max: MAX_DESCRIPTION_LENGTH
159
+ })
160
+ }
161
+ })), {
162
+ as: "textarea",
163
+ isInvalid: Boolean(errors.description)
164
+ })),
165
+ /*#__PURE__*/ jsx(Form.Control.Feedback, {
166
+ type: "invalid",
167
+ children: (_errors_description = errors.description) === null || _errors_description === void 0 ? void 0 : _errors_description.message
168
+ })
169
+ ]
170
+ }),
171
+ /*#__PURE__*/ jsx(ProductSetImageControl, {}),
144
172
  showDateSelector ? /*#__PURE__*/ jsx(DateInput, {
145
173
  workHours: isZoneAdded ? workHours : undefined,
146
174
  isLoading: isLoading,
@@ -308,7 +336,6 @@ function ProductSetControl(param) {
308
336
  name: "fieldSetId",
309
337
  render: function(param) {
310
338
  var field = param.field;
311
- var fieldValue = Number(field.value);
312
339
  return /*#__PURE__*/ jsxs(Fragment, {
313
340
  children: [
314
341
  /*#__PURE__*/ jsx(Form.Label, {
@@ -316,7 +343,7 @@ function ProductSetControl(param) {
316
343
  }),
317
344
  /*#__PURE__*/ jsxs(Form.Control, {
318
345
  onChange: field.onChange,
319
- value: fieldValue,
346
+ value: Number(field.value),
320
347
  as: "select",
321
348
  disabled: isOverrides,
322
349
  isInvalid: HookFormService.isInvalid('fieldSetId', errors),
@@ -0,0 +1,2 @@
1
+ export declare const ProductSetImageControl: () => import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ProductSetImageControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductSetImageControl.d.ts","sourceRoot":"","sources":["../../../src/product-set/control/ProductSetImageControl.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,sBAAsB,+CAsFlC,CAAA"}
@@ -0,0 +1,279 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useFormContext } from 'react-hook-form';
3
+ import { useImages, HookFormService } from '@licklist/plugins';
4
+ import { IMAGE_TYPE_IMAGE } from '@licklist/core/dist/DataMapper/Media/ImageDataMapper';
5
+ import { useCallback, useEffect } from 'react';
6
+ import { Form } from 'react-bootstrap';
7
+ import { FileUpload } from '../../file-upload/FileUpload.js';
8
+ import { useTranslation } from 'react-i18next';
9
+ import { isEqual } from 'lodash';
10
+
11
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
12
+ try {
13
+ var info = gen[key](arg);
14
+ var value = info.value;
15
+ } catch (error) {
16
+ reject(error);
17
+ return;
18
+ }
19
+ if (info.done) {
20
+ resolve(value);
21
+ } else {
22
+ Promise.resolve(value).then(_next, _throw);
23
+ }
24
+ }
25
+ function _async_to_generator(fn) {
26
+ return function() {
27
+ var self = this, args = arguments;
28
+ return new Promise(function(resolve, reject) {
29
+ var gen = fn.apply(self, args);
30
+ function _next(value) {
31
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
32
+ }
33
+ function _throw(err) {
34
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
35
+ }
36
+ _next(undefined);
37
+ });
38
+ };
39
+ }
40
+ function _define_property(obj, key, value) {
41
+ if (key in obj) {
42
+ Object.defineProperty(obj, key, {
43
+ value: value,
44
+ enumerable: true,
45
+ configurable: true,
46
+ writable: true
47
+ });
48
+ } else {
49
+ obj[key] = value;
50
+ }
51
+ return obj;
52
+ }
53
+ function _object_spread(target) {
54
+ for(var i = 1; i < arguments.length; i++){
55
+ var source = arguments[i] != null ? arguments[i] : {};
56
+ var ownKeys = Object.keys(source);
57
+ if (typeof Object.getOwnPropertySymbols === "function") {
58
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
59
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
60
+ }));
61
+ }
62
+ ownKeys.forEach(function(key) {
63
+ _define_property(target, key, source[key]);
64
+ });
65
+ }
66
+ return target;
67
+ }
68
+ function ownKeys(object, enumerableOnly) {
69
+ var keys = Object.keys(object);
70
+ if (Object.getOwnPropertySymbols) {
71
+ var symbols = Object.getOwnPropertySymbols(object);
72
+ if (enumerableOnly) {
73
+ symbols = symbols.filter(function(sym) {
74
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
75
+ });
76
+ }
77
+ keys.push.apply(keys, symbols);
78
+ }
79
+ return keys;
80
+ }
81
+ function _object_spread_props(target, source) {
82
+ source = source != null ? source : {};
83
+ if (Object.getOwnPropertyDescriptors) {
84
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
85
+ } else {
86
+ ownKeys(Object(source)).forEach(function(key) {
87
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
88
+ });
89
+ }
90
+ return target;
91
+ }
92
+ function _ts_generator(thisArg, body) {
93
+ var f, y, t, g, _ = {
94
+ label: 0,
95
+ sent: function() {
96
+ if (t[0] & 1) throw t[1];
97
+ return t[1];
98
+ },
99
+ trys: [],
100
+ ops: []
101
+ };
102
+ return g = {
103
+ next: verb(0),
104
+ "throw": verb(1),
105
+ "return": verb(2)
106
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
107
+ return this;
108
+ }), g;
109
+ function verb(n) {
110
+ return function(v) {
111
+ return step([
112
+ n,
113
+ v
114
+ ]);
115
+ };
116
+ }
117
+ function step(op) {
118
+ if (f) throw new TypeError("Generator is already executing.");
119
+ while(_)try {
120
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
121
+ if (y = 0, t) op = [
122
+ op[0] & 2,
123
+ t.value
124
+ ];
125
+ switch(op[0]){
126
+ case 0:
127
+ case 1:
128
+ t = op;
129
+ break;
130
+ case 4:
131
+ _.label++;
132
+ return {
133
+ value: op[1],
134
+ done: false
135
+ };
136
+ case 5:
137
+ _.label++;
138
+ y = op[1];
139
+ op = [
140
+ 0
141
+ ];
142
+ continue;
143
+ case 7:
144
+ op = _.ops.pop();
145
+ _.trys.pop();
146
+ continue;
147
+ default:
148
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
149
+ _ = 0;
150
+ continue;
151
+ }
152
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
153
+ _.label = op[1];
154
+ break;
155
+ }
156
+ if (op[0] === 6 && _.label < t[1]) {
157
+ _.label = t[1];
158
+ t = op;
159
+ break;
160
+ }
161
+ if (t && _.label < t[2]) {
162
+ _.label = t[2];
163
+ _.ops.push(op);
164
+ break;
165
+ }
166
+ if (t[2]) _.ops.pop();
167
+ _.trys.pop();
168
+ continue;
169
+ }
170
+ op = body.call(thisArg, _);
171
+ } catch (e) {
172
+ op = [
173
+ 6,
174
+ e
175
+ ];
176
+ y = 0;
177
+ } finally{
178
+ f = t = 0;
179
+ }
180
+ if (op[0] & 5) throw op[1];
181
+ return {
182
+ value: op[0] ? op[1] : void 0,
183
+ done: true
184
+ };
185
+ }
186
+ }
187
+ var ProductSetImageControl = function() {
188
+ var t = useTranslation('Design').t;
189
+ var _useFormContext = useFormContext(), errors = _useFormContext.formState.errors, setValue = _useFormContext.setValue, watch = _useFormContext.watch, clearErrors = _useFormContext.clearErrors;
190
+ var currentProductSet = watch();
191
+ var _useImages = useImages(null), images = _useImages.images, handleImageRemove = _useImages.handleImageRemove, handleImageUploading = _useImages.handleImageUploading, isImageUploading = _useImages.isLoading, setImages = _useImages.setImages;
192
+ var onFilesChange = useCallback(function() {
193
+ var _ref = _async_to_generator(function(files) {
194
+ var uploadedFiles;
195
+ return _ts_generator(this, function(_state) {
196
+ switch(_state.label){
197
+ case 0:
198
+ return [
199
+ 4,
200
+ handleImageUploading(files, IMAGE_TYPE_IMAGE)
201
+ ];
202
+ case 1:
203
+ uploadedFiles = _state.sent();
204
+ if (!uploadedFiles) return [
205
+ 2
206
+ ];
207
+ setValue('localImageBlobURL', URL.createObjectURL(files[0]));
208
+ return [
209
+ 2
210
+ ];
211
+ }
212
+ });
213
+ });
214
+ return function(files) {
215
+ return _ref.apply(this, arguments);
216
+ };
217
+ }(), // eslint-disable-next-line react-hooks/exhaustive-deps
218
+ [
219
+ handleImageUploading
220
+ ]);
221
+ var onImageRemove = useCallback(function(id, path) {
222
+ handleImageRemove(id, path);
223
+ setValue('localImageBlobURL', undefined);
224
+ }, // eslint-disable-next-line react-hooks/exhaustive-deps
225
+ [
226
+ handleImageRemove
227
+ ]);
228
+ useEffect(function() {
229
+ if (!currentProductSet || !currentProductSet.image) return;
230
+ setImages([
231
+ _object_spread_props(_object_spread({}, currentProductSet.image), {
232
+ url: currentProductSet.image.url || (currentProductSet === null || currentProductSet === void 0 ? void 0 : currentProductSet.localImageBlobURL)
233
+ })
234
+ ]);
235
+ // eslint-disable-next-line react-hooks/exhaustive-deps
236
+ }, [
237
+ currentProductSet === null || currentProductSet === void 0 ? void 0 : currentProductSet.image
238
+ ]);
239
+ useEffect(function() {
240
+ if (isEqual(images[0], currentProductSet === null || currentProductSet === void 0 ? void 0 : currentProductSet.image)) return;
241
+ setValue('image', images[0] || null);
242
+ if (images[0]) {
243
+ clearErrors('image');
244
+ }
245
+ // eslint-disable-next-line react-hooks/exhaustive-deps
246
+ }, [
247
+ images
248
+ ]);
249
+ return /*#__PURE__*/ jsxs(Form.Group, {
250
+ controlId: "name",
251
+ children: [
252
+ /*#__PURE__*/ jsx(Form.Control, {
253
+ isInvalid: HookFormService.isInvalid('image', errors),
254
+ hidden: true
255
+ }),
256
+ /*#__PURE__*/ jsx(FileUpload, {
257
+ onFilesChange: onFilesChange,
258
+ allowedExtensions: [
259
+ 'jpeg',
260
+ 'jpg',
261
+ 'png'
262
+ ],
263
+ subTitle: ".jpeg .jpg .png",
264
+ enablePreview: true,
265
+ onFileRemove: onImageRemove,
266
+ defaultFiles: images,
267
+ isLoading: isImageUploading,
268
+ withIcon: true,
269
+ title: t('Design:addImage')
270
+ }),
271
+ /*#__PURE__*/ jsx(Form.Control.Feedback, {
272
+ type: "invalid",
273
+ children: HookFormService.getErrors('image', errors)
274
+ })
275
+ ]
276
+ });
277
+ };
278
+
279
+ export { ProductSetImageControl };
@@ -1 +1 @@
1
- {"version":3,"file":"MobileFooter.d.ts","sourceRoot":"","sources":["../../../src/product-set/form/MobileFooter.tsx"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,4CAY3B"}
1
+ {"version":3,"file":"MobileFooter.d.ts","sourceRoot":"","sources":["../../../src/product-set/form/MobileFooter.tsx"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,4CAU3B"}
@@ -11,10 +11,7 @@
11
11
  background-color: #fff;
12
12
  font-size: 0.8rem;
13
13
  background-color: $snippet-product-set-background-color;
14
-
15
- div {
16
- text-align: left;
17
- }
14
+ text-align: left;
18
15
 
19
16
  &.active {
20
17
  border: 2px solid #0e8be1;
@@ -23,7 +20,24 @@
23
20
  &-title {
24
21
  font-weight: 600;
25
22
  line-height: 1.25rem;
26
- cursor: pointer;
27
23
  font-size: 0.875rem;
28
24
  }
25
+
26
+ img {
27
+ max-height: 100%;
28
+ max-width: 100%;
29
+ object-fit: cover;
30
+ aspect-ratio: 1.2/1;
31
+ margin-bottom: 0.8rem;
32
+ border-radius: 0.5rem;
33
+ }
34
+
35
+ &-description {
36
+ line-clamp: 5;
37
+ -webkit-line-clamp: 5;
38
+ overflow: hidden;
39
+ text-overflow: ellipsis;
40
+ display: -webkit-box;
41
+ -webkit-box-orient: vertical;
42
+ }
29
43
  }