@knovator/pagecreator-admin 0.6.0 → 0.7.1

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/index.cjs CHANGED
@@ -10,8 +10,8 @@ var reactHookForm = require('react-hook-form');
10
10
  var reactBeautifulDnd = require('react-beautiful-dnd');
11
11
  var CSSTransition = require('react-transition-group/CSSTransition');
12
12
  var reactDropzone = require('react-dropzone');
13
- var reactTabs = require('react-tabs');
14
13
  var reactTinyPopover = require('react-tiny-popover');
14
+ var reactTabs = require('react-tabs');
15
15
 
16
16
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
17
 
@@ -1646,6 +1646,18 @@ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1646
1646
  PERFORMANCE OF THIS SOFTWARE.
1647
1647
  ***************************************************************************** */
1648
1648
 
1649
+ function __rest(s, e) {
1650
+ var t = {};
1651
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
1652
+ t[p] = s[p];
1653
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
1654
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
1655
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
1656
+ t[p[i]] = s[p[i]];
1657
+ }
1658
+ return t;
1659
+ }
1660
+
1649
1661
  function __awaiter(thisArg, _arguments, P, generator) {
1650
1662
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1651
1663
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -1760,7 +1772,15 @@ const TRANSLATION_PAIRS_ITEM = {
1760
1772
  'item.uploadFile': 'Upload File',
1761
1773
  'item.dragDrop': 'or drag and drop',
1762
1774
  'item.allowedFormat': 'PNG, JPG, SVG up to 2 MB',
1763
- 'item.srcset': 'Srcset'
1775
+ 'item.srcset': 'Srcset',
1776
+ 'item.screenSizeRequired': 'ScreenSize is required',
1777
+ 'item.widthRequired': 'Width is required',
1778
+ 'item.heightRequired': 'Height is required',
1779
+ 'item.minScreenSize': 'ScreenSize should be greater than 0',
1780
+ 'item.minWidth': 'Width should be greater than 0',
1781
+ 'item.minHeight': 'Height should be greater than 0',
1782
+ 'item.titleRequired': 'Title is required',
1783
+ 'item.deleteTitle': 'Are you sure you want to delete this item?'
1764
1784
  };
1765
1785
  const TRANSLATION_PAIRS_PAGE = {
1766
1786
  'page.name': 'Name',
@@ -1791,7 +1811,6 @@ const Provider = ({
1791
1811
  onSuccess: _onSuccess = () => {},
1792
1812
  onLogout: _onLogout = () => {},
1793
1813
  switchClass: _switchClass = 'khb_switch',
1794
- itemsRoutesPrefix: _itemsRoutesPrefix = 'items',
1795
1814
  widgetRoutesPrefix: _widgetRoutesPrefix = 'widgets',
1796
1815
  pageRoutesPrefix: _pageRoutesPrefix = 'pages'
1797
1816
  }) => {
@@ -1803,7 +1822,6 @@ const Provider = ({
1803
1822
  onSuccess: _onSuccess,
1804
1823
  onLogout: _onLogout,
1805
1824
  switchClass: _switchClass,
1806
- itemsRoutesPrefix: _itemsRoutesPrefix,
1807
1825
  widgetRoutesPrefix: _widgetRoutesPrefix,
1808
1826
  pageRoutesPrefix: _pageRoutesPrefix
1809
1827
  }
@@ -2608,6 +2626,13 @@ const usePagination = ({
2608
2626
  };
2609
2627
 
2610
2628
  const apiList = {
2629
+ GET_ONE: ({
2630
+ prefix,
2631
+ id
2632
+ }) => ({
2633
+ url: `${prefix}/${id}`,
2634
+ method: 'GET'
2635
+ }),
2611
2636
  LIST: ({
2612
2637
  prefix
2613
2638
  }) => ({
@@ -3351,6 +3376,45 @@ const CustomReactSelect = ({
3351
3376
  }, error));
3352
3377
  };
3353
3378
 
3379
+ var call$7 = functionCall;
3380
+ var hasOwn$1 = hasOwnProperty_1;
3381
+ var isPrototypeOf$2 = objectIsPrototypeOf;
3382
+ var regExpFlags = regexpFlags$1;
3383
+
3384
+ var RegExpPrototype$1 = RegExp.prototype;
3385
+
3386
+ var regexpGetFlags = function (R) {
3387
+ var flags = R.flags;
3388
+ return flags === undefined && !('flags' in RegExpPrototype$1) && !hasOwn$1(R, 'flags') && isPrototypeOf$2(RegExpPrototype$1, R)
3389
+ ? call$7(regExpFlags, R) : flags;
3390
+ };
3391
+
3392
+ var PROPER_FUNCTION_NAME = functionName.PROPER;
3393
+ var defineBuiltIn$2 = defineBuiltIn$7;
3394
+ var anObject$5 = anObject$e;
3395
+ var $toString = toString$6;
3396
+ var fails$3 = fails$n;
3397
+ var getRegExpFlags = regexpGetFlags;
3398
+
3399
+ var TO_STRING = 'toString';
3400
+ var RegExpPrototype = RegExp.prototype;
3401
+ var nativeToString = RegExpPrototype[TO_STRING];
3402
+
3403
+ var NOT_GENERIC = fails$3(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
3404
+ // FF44- RegExp#toString has a wrong name
3405
+ var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING;
3406
+
3407
+ // `RegExp.prototype.toString` method
3408
+ // https://tc39.es/ecma262/#sec-regexp.prototype.tostring
3409
+ if (NOT_GENERIC || INCORRECT_NAME) {
3410
+ defineBuiltIn$2(RegExp.prototype, TO_STRING, function toString() {
3411
+ var R = anObject$5(this);
3412
+ var pattern = $toString(R.source);
3413
+ var flags = $toString(getRegExpFlags(R));
3414
+ return '/' + pattern + '/' + flags;
3415
+ }, { unsafe: true });
3416
+ }
3417
+
3354
3418
  const Close = ({
3355
3419
  srText,
3356
3420
  className
@@ -3392,27 +3456,19 @@ const Plus = ({
3392
3456
  const SrcSetInput = ({
3393
3457
  size,
3394
3458
  className,
3395
- index,
3396
- register,
3397
- errors,
3398
- name,
3399
- inputKey,
3459
+ rest,
3460
+ error,
3400
3461
  placeholder,
3401
3462
  disabled: _disabled = false
3402
3463
  }) => {
3403
- var _a, _b;
3404
3464
  return /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("input", Object.assign({
3405
3465
  className: classNames__default["default"]('khb_input', `khb_input-${size}`, className),
3406
3466
  type: 'number',
3407
3467
  placeholder: placeholder,
3408
- name: `srcset[${index}].${inputKey}`,
3409
3468
  disabled: _disabled
3410
- }, register(`srcset[${index}].${inputKey}`, {
3411
- required: `${name} Size is required`,
3412
- validate: value => Number(value) <= 0 ? `${inputKey} should be greater than 0` : true
3413
- }))), Array.isArray(errors) && errors[index] && /*#__PURE__*/React__default["default"].createElement("p", {
3469
+ }, rest || {})), error && /*#__PURE__*/React__default["default"].createElement("p", {
3414
3470
  className: "khb_input-error"
3415
- }, (_b = (_a = errors[index]) === null || _a === void 0 ? void 0 : _a[inputKey]) === null || _b === void 0 ? void 0 : _b['message']));
3471
+ }, error));
3416
3472
  };
3417
3473
  const SrcSet = ({
3418
3474
  label,
@@ -3424,7 +3480,9 @@ const SrcSet = ({
3424
3480
  wrapperClassName,
3425
3481
  control,
3426
3482
  errors,
3427
- disabled: _disabled2 = false
3483
+ name,
3484
+ disabled: _disabled2 = false,
3485
+ t
3428
3486
  }) => {
3429
3487
  const {
3430
3488
  fields,
@@ -3432,7 +3490,7 @@ const SrcSet = ({
3432
3490
  remove
3433
3491
  } = reactHookForm.useFieldArray({
3434
3492
  control,
3435
- name: 'srcset'
3493
+ name: name
3436
3494
  });
3437
3495
  return /*#__PURE__*/React__default["default"].createElement("div", {
3438
3496
  className: classNames__default["default"]('khb_input-wrapper', wrapperClassName)
@@ -3442,49 +3500,55 @@ const SrcSet = ({
3442
3500
  className: "khb_input-label-required"
3443
3501
  }, "*") : null), /*#__PURE__*/React__default["default"].createElement("div", {
3444
3502
  className: "khb_input-srcset-items"
3445
- }, fields === null || fields === void 0 ? void 0 : fields.map((item, index) => /*#__PURE__*/React__default["default"].createElement("div", {
3446
- key: index,
3447
- className: "khb_input-srcset"
3448
- }, /*#__PURE__*/React__default["default"].createElement(SrcSetInput, {
3449
- errors: errors,
3450
- index: index,
3451
- className: className,
3452
- inputKey: "screenSize",
3453
- name: "Screen Size",
3454
- size: _size,
3455
- placeholder: "Screen Size",
3456
- register: register,
3457
- disabled: _disabled2
3458
- }), /*#__PURE__*/React__default["default"].createElement("span", {
3459
- className: "p-2"
3460
- }, "="), /*#__PURE__*/React__default["default"].createElement(SrcSetInput, {
3461
- errors: errors,
3462
- index: index,
3463
- register: register,
3464
- className: className,
3465
- inputKey: "width",
3466
- name: "Width",
3467
- size: _size,
3468
- placeholder: "Width",
3469
- disabled: _disabled2
3470
- }), /*#__PURE__*/React__default["default"].createElement("span", {
3471
- className: "p-2"
3472
- }, "x"), /*#__PURE__*/React__default["default"].createElement(SrcSetInput, {
3473
- errors: errors,
3474
- index: index,
3475
- register: register,
3476
- className: className,
3477
- inputKey: "height",
3478
- name: "Height",
3479
- size: _size,
3480
- placeholder: "Height",
3481
- disabled: _disabled2
3503
+ }, fields === null || fields === void 0 ? void 0 : fields.map((item, index) => {
3504
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
3505
+ return /*#__PURE__*/React__default["default"].createElement("div", {
3506
+ key: index,
3507
+ className: "khb_input-srcset"
3508
+ }, /*#__PURE__*/React__default["default"].createElement(SrcSetInput, {
3509
+ error: (_c = (_b = (_a = errors === null || errors === void 0 ? void 0 : errors[index]) === null || _a === void 0 ? void 0 : _a['screenSize']) === null || _b === void 0 ? void 0 : _b.message) === null || _c === void 0 ? void 0 : _c.toString(),
3510
+ index: index,
3511
+ className: className,
3512
+ size: _size,
3513
+ placeholder: "Screen Size",
3514
+ rest: register(`${name}.${index}.screenSize`, {
3515
+ required: t('item.screenSizeRequired'),
3516
+ validate: value => Number(value) <= 0 ? t('item.minScreenSize') : true
3517
+ }),
3518
+ disabled: _disabled2
3519
+ }), /*#__PURE__*/React__default["default"].createElement("span", {
3520
+ className: "p-2"
3521
+ }, "="), /*#__PURE__*/React__default["default"].createElement(SrcSetInput, {
3522
+ error: (_f = (_e = (_d = errors === null || errors === void 0 ? void 0 : errors[index]) === null || _d === void 0 ? void 0 : _d['width']) === null || _e === void 0 ? void 0 : _e.message) === null || _f === void 0 ? void 0 : _f.toString(),
3523
+ index: index,
3524
+ rest: register(`${name}.${index}.width`, {
3525
+ required: t('item.widthRequired'),
3526
+ validate: value => Number(value) <= 0 ? t('item.minWidth') : true
3527
+ }),
3528
+ className: className,
3529
+ size: _size,
3530
+ placeholder: "Width",
3531
+ disabled: _disabled2
3532
+ }), /*#__PURE__*/React__default["default"].createElement("span", {
3533
+ className: "p-2"
3534
+ }, "x"), /*#__PURE__*/React__default["default"].createElement(SrcSetInput, {
3535
+ error: (_j = (_h = (_g = errors === null || errors === void 0 ? void 0 : errors[index]) === null || _g === void 0 ? void 0 : _g['height']) === null || _h === void 0 ? void 0 : _h.message) === null || _j === void 0 ? void 0 : _j.toString(),
3536
+ index: index,
3537
+ rest: register(`${name}.${index}.height`, {
3538
+ required: t('item.heightRequired'),
3539
+ validate: value => Number(value) <= 0 ? t('item.minHeight') : true
3540
+ }),
3541
+ className: className,
3542
+ size: _size,
3543
+ placeholder: "Height",
3544
+ disabled: _disabled2
3545
+ }), /*#__PURE__*/React__default["default"].createElement("button", {
3546
+ type: "button",
3547
+ className: "khb_btn khb_btn-danger khb_btn-xs",
3548
+ onClick: () => remove(index),
3549
+ disabled: _disabled2
3550
+ }, /*#__PURE__*/React__default["default"].createElement(Close, null)));
3482
3551
  }), /*#__PURE__*/React__default["default"].createElement("button", {
3483
- type: "button",
3484
- className: "khb_btn khb_btn-danger khb_btn-xs",
3485
- onClick: () => remove(index),
3486
- disabled: _disabled2
3487
- }, /*#__PURE__*/React__default["default"].createElement(Close, null)))), /*#__PURE__*/React__default["default"].createElement("button", {
3488
3552
  type: "button",
3489
3553
  disabled: _disabled2,
3490
3554
  onClick: () => append({
@@ -3494,7 +3558,7 @@ const SrcSet = ({
3494
3558
  }),
3495
3559
  className: "khb_btn khb_btn-primary khb_btn-xs"
3496
3560
  }, /*#__PURE__*/React__default["default"].createElement(Plus, {
3497
- className: "w-7 h-7"
3561
+ className: "khb_srcset-remove"
3498
3562
  }))), error && /*#__PURE__*/React__default["default"].createElement("p", {
3499
3563
  className: "khb_input-error "
3500
3564
  }, error));
@@ -3533,45 +3597,6 @@ const PageSearch = () => {
3533
3597
  });
3534
3598
  };
3535
3599
 
3536
- var call$7 = functionCall;
3537
- var hasOwn$1 = hasOwnProperty_1;
3538
- var isPrototypeOf$2 = objectIsPrototypeOf;
3539
- var regExpFlags = regexpFlags$1;
3540
-
3541
- var RegExpPrototype$1 = RegExp.prototype;
3542
-
3543
- var regexpGetFlags = function (R) {
3544
- var flags = R.flags;
3545
- return flags === undefined && !('flags' in RegExpPrototype$1) && !hasOwn$1(R, 'flags') && isPrototypeOf$2(RegExpPrototype$1, R)
3546
- ? call$7(regExpFlags, R) : flags;
3547
- };
3548
-
3549
- var PROPER_FUNCTION_NAME = functionName.PROPER;
3550
- var defineBuiltIn$2 = defineBuiltIn$7;
3551
- var anObject$5 = anObject$e;
3552
- var $toString = toString$6;
3553
- var fails$3 = fails$n;
3554
- var getRegExpFlags = regexpGetFlags;
3555
-
3556
- var TO_STRING = 'toString';
3557
- var RegExpPrototype = RegExp.prototype;
3558
- var nativeToString = RegExpPrototype[TO_STRING];
3559
-
3560
- var NOT_GENERIC = fails$3(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
3561
- // FF44- RegExp#toString has a wrong name
3562
- var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING;
3563
-
3564
- // `RegExp.prototype.toString` method
3565
- // https://tc39.es/ecma262/#sec-regexp.prototype.tostring
3566
- if (NOT_GENERIC || INCORRECT_NAME) {
3567
- defineBuiltIn$2(RegExp.prototype, TO_STRING, function toString() {
3568
- var R = anObject$5(this);
3569
- var pattern = $toString(R.source);
3570
- var flags = $toString(getRegExpFlags(R));
3571
- return '/' + pattern + '/' + flags;
3572
- }, { unsafe: true });
3573
- }
3574
-
3575
3600
  var aCallable$6 = aCallable$8;
3576
3601
  var toObject = toObject$5;
3577
3602
  var IndexedObject = indexedObject;
@@ -4138,13 +4163,23 @@ const Button = ({
4138
4163
  onClick,
4139
4164
  className,
4140
4165
  children,
4141
- disabled
4166
+ disabled,
4167
+ loading
4142
4168
  }) => {
4143
4169
  return /*#__PURE__*/React__default["default"].createElement("button", {
4144
4170
  className: classNames__default["default"]('khb_btn', `khb_btn-${_type}`, `khb_btn-${_size}`, className),
4145
4171
  onClick: onClick,
4146
- disabled: disabled
4147
- }, children);
4172
+ disabled: disabled || loading
4173
+ }, loading && /*#__PURE__*/React__default["default"].createElement("svg", {
4174
+ className: "khb_btn-loader",
4175
+ xmlns: "http://www.w3.org/2000/svg",
4176
+ width: "12",
4177
+ height: "13",
4178
+ viewBox: "0 0 12 13"
4179
+ }, /*#__PURE__*/React__default["default"].createElement("path", {
4180
+ // style={{ fill: kind }}
4181
+ d: "M5.5,12a1,1,0,1,1,1,1A1,1,0,0,1,5.5,12ZM1.75,10.5A1.25,1.25,0,1,1,3,11.75,1.25,1.25,0,0,1,1.75,10.5Zm7.531.031a.75.75,0,1,1,.75.75A.75.75,0,0,1,9.281,10.531ZM0,7A1.5,1.5,0,1,1,1.5,8.5,1.5,1.5,0,0,1,0,7ZM11,7a.5.5,0,1,1,.5.5A.5.5,0,0,1,11,7ZM1.875,4.637a1.62,1.62,0,0,1,0-2.275,1.582,1.582,0,0,1,2.253,0,1.62,1.62,0,0,1,0,2.275,1.582,1.582,0,0,1-2.253,0ZM4.5,2a2,2,0,1,1,2,2A2,2,0,0,1,4.5,2ZM9.75,3.5a.25.25,0,1,1,.25.25A.25.25,0,0,1,9.75,3.5Z"
4182
+ })), children);
4148
4183
  };
4149
4184
 
4150
4185
  const AddButton$1 = () => {
@@ -4447,7 +4482,7 @@ const FormActions = ({
4447
4482
  onClick: onSecondaryButtonClick
4448
4483
  }, _secondaryLabel), /*#__PURE__*/React__default["default"].createElement(Button, {
4449
4484
  onClick: onPrimaryButtonClick,
4450
- disabled: _loading
4485
+ loading: _loading
4451
4486
  }, _primaryLabel));
4452
4487
  };
4453
4488
 
@@ -4611,11 +4646,6 @@ const useWidget = ({
4611
4646
  imageBaseUrl
4612
4647
  }) => {
4613
4648
  const [list, setList] = React.useState([]);
4614
- const [itemsList, setItemsList] = React.useState({
4615
- web: [],
4616
- mobile: []
4617
- });
4618
- const [itemsLoading, setItemsLoading] = React.useState(false);
4619
4649
  const [loading, setLoading] = React.useState(false);
4620
4650
  const [totalPages, setTotalPages] = React.useState(0);
4621
4651
  const [totalRecords, setTotalRecords] = React.useState(0);
@@ -4631,8 +4661,7 @@ const useWidget = ({
4631
4661
  onError,
4632
4662
  onSuccess,
4633
4663
  onLogout,
4634
- widgetRoutesPrefix,
4635
- itemsRoutesPrefix
4664
+ widgetRoutesPrefix
4636
4665
  } = useProviderState();
4637
4666
  const {
4638
4667
  changeSearch,
@@ -4690,67 +4719,6 @@ const useWidget = ({
4690
4719
  setLoading(false);
4691
4720
  }
4692
4721
  }), [baseUrl, currentPageRef, limitRef, offsetRef, handleError, routes, token, widgetRoutesPrefix]);
4693
- const getItems = React.useCallback(id => __awaiter(void 0, void 0, void 0, function* () {
4694
- try {
4695
- setItemsLoading(true);
4696
- const api = getApiType({
4697
- routes,
4698
- action: 'ITEM',
4699
- prefix: itemsRoutesPrefix,
4700
- id
4701
- });
4702
- const response = yield commonApi({
4703
- baseUrl,
4704
- token,
4705
- method: api.method,
4706
- url: api.url,
4707
- onError: handleError(CALLBACK_CODES.GET_ALL)
4708
- });
4709
- if ((response === null || response === void 0 ? void 0 : response.code) === 'SUCCESS') {
4710
- setItemsLoading(false);
4711
- const itemsResponse = dataGatter(response).reduce((acc, itemItem) => {
4712
- if (itemItem['itemType'] === 'Web') acc.web.push(itemItem);else acc.mobile.push(itemItem);
4713
- return acc;
4714
- }, {
4715
- web: [],
4716
- mobile: []
4717
- });
4718
- return setItemsList(itemsResponse);
4719
- }
4720
- setItemsLoading(false);
4721
- } catch (error) {
4722
- setItemsLoading(false);
4723
- }
4724
- }), [baseUrl, handleError, routes, itemsRoutesPrefix, token]);
4725
- const onDeleteItem = id => __awaiter(void 0, void 0, void 0, function* () {
4726
- try {
4727
- setItemsLoading(true);
4728
- const api = getApiType({
4729
- routes,
4730
- action: 'DELETE',
4731
- prefix: itemsRoutesPrefix,
4732
- id
4733
- });
4734
- const response = yield commonApi({
4735
- baseUrl,
4736
- token,
4737
- method: api.method,
4738
- url: api.url,
4739
- onError: handleError(CALLBACK_CODES.DELETE)
4740
- });
4741
- if ((response === null || response === void 0 ? void 0 : response.code) === 'SUCCESS') {
4742
- setItemsLoading(false);
4743
- onSuccess(CALLBACK_CODES.DELETE, response === null || response === void 0 ? void 0 : response.code, response === null || response === void 0 ? void 0 : response.message);
4744
- if (itemData) getItems(itemData['_id']);
4745
- return;
4746
- }
4747
- setItemsLoading(false);
4748
- onError(CALLBACK_CODES.DELETE, response === null || response === void 0 ? void 0 : response.code, response === null || response === void 0 ? void 0 : response.message);
4749
- } catch (error) {
4750
- setItemsLoading(false);
4751
- onError(CALLBACK_CODES.DELETE, INTERNAL_ERROR_CODE, error.message);
4752
- }
4753
- });
4754
4722
  const onCofirmDeleteWidget = () => __awaiter(void 0, void 0, void 0, function* () {
4755
4723
  try {
4756
4724
  let proceed = true;
@@ -4813,6 +4781,7 @@ const useWidget = ({
4813
4781
  });
4814
4782
  if ((response === null || response === void 0 ? void 0 : response.code) === 'SUCCESS') {
4815
4783
  setList(oldListData => oldListData.map(item => item['_id'] === id ? response.data : item));
4784
+ if (response.message) onSuccess(CALLBACK_CODES.PARTIAL_UPDATE, response === null || response === void 0 ? void 0 : response.code, response === null || response === void 0 ? void 0 : response.message);
4816
4785
  } else {
4817
4786
  onError(CALLBACK_CODES.PARTIAL_UPDATE, response === null || response === void 0 ? void 0 : response.code, response === null || response === void 0 ? void 0 : response.message);
4818
4787
  }
@@ -4923,7 +4892,39 @@ const useWidget = ({
4923
4892
  setFormState(undefined);
4924
4893
  setItemData(null);
4925
4894
  };
4926
- const onChangeFormState = (state, data) => {
4895
+ const getAndSetWidget = id => __awaiter(void 0, void 0, void 0, function* () {
4896
+ try {
4897
+ setLoading(true);
4898
+ const api = getApiType({
4899
+ routes,
4900
+ action: 'GET_ONE',
4901
+ prefix: widgetRoutesPrefix,
4902
+ id
4903
+ });
4904
+ const response = yield commonApi({
4905
+ baseUrl,
4906
+ token,
4907
+ url: api.url,
4908
+ method: api.method,
4909
+ onError: handleError(CALLBACK_CODES.GET_SINGLE)
4910
+ });
4911
+ if ((response === null || response === void 0 ? void 0 : response.code) === 'SUCCESS') {
4912
+ setLoading(false);
4913
+ const data = response === null || response === void 0 ? void 0 : response.data;
4914
+ if (Array.isArray(data.items)) {
4915
+ const items = JSON.parse(JSON.stringify(data.items));
4916
+ data.webItems = items.filter(item => item.itemType === 'Web');
4917
+ data.mobileItems = items.filter(item => item.itemType === 'Mobile');
4918
+ delete data.items;
4919
+ }
4920
+ setItemData(data);
4921
+ }
4922
+ } catch (error) {
4923
+ setLoading(false);
4924
+ onError(CALLBACK_CODES.UPDATE, '', error.message);
4925
+ }
4926
+ });
4927
+ const onChangeFormState = (state, data) => __awaiter(void 0, void 0, void 0, function* () {
4927
4928
  setFormState(state);
4928
4929
  // fetch ItemsTypes & WidgetTypes if needed
4929
4930
  if (state === 'ADD' || state === 'UPDATE') {
@@ -4932,52 +4933,14 @@ const useWidget = ({
4932
4933
  }
4933
4934
  // get Item data if widget is updating
4934
4935
  if (state === 'UPDATE' && data) {
4935
- if (data['itemsType'] === 'Image') {
4936
- getItems(data['_id']);
4937
- }
4938
- setItemData(data);
4936
+ getAndSetWidget(data['_id']);
4939
4937
  } else if (state === 'ADD') {
4940
4938
  // reset Item data if widget is adding
4941
- setItemsList({
4942
- web: [],
4943
- mobile: []
4944
- });
4945
4939
  setItemData(null);
4946
4940
  } else if (state === 'DELETE' && data) {
4947
4941
  setItemData(data);
4948
4942
  setFormState(state);
4949
4943
  }
4950
- };
4951
- const onItemFormSubmit = (state, data, updateId) => __awaiter(void 0, void 0, void 0, function* () {
4952
- setItemsLoading(true);
4953
- const code = state === 'ADD' ? CALLBACK_CODES.CREATE : CALLBACK_CODES.UPDATE;
4954
- try {
4955
- const api = getApiType({
4956
- routes,
4957
- action: state === 'ADD' ? 'CREATE' : 'UPDATE',
4958
- prefix: itemsRoutesPrefix,
4959
- id: updateId
4960
- });
4961
- const response = yield commonApi({
4962
- baseUrl,
4963
- token,
4964
- data,
4965
- url: api.url,
4966
- method: api.method,
4967
- onError: handleError(code)
4968
- });
4969
- if ((response === null || response === void 0 ? void 0 : response.code) === 'SUCCESS') {
4970
- setItemsLoading(false);
4971
- onSuccess(code, response === null || response === void 0 ? void 0 : response.code, response === null || response === void 0 ? void 0 : response.message);
4972
- if (itemData) getItems(itemData['_id']);
4973
- } else {
4974
- setItemsLoading(false);
4975
- onError(code, response === null || response === void 0 ? void 0 : response.code, response === null || response === void 0 ? void 0 : response.message);
4976
- }
4977
- } catch (error) {
4978
- setItemsLoading(false);
4979
- onError(code, INTERNAL_ERROR_CODE, error.message);
4980
- }
4981
4944
  });
4982
4945
  // Image Upload operations
4983
4946
  const onImageUpload = file => __awaiter(void 0, void 0, void 0, function* () {
@@ -5063,7 +5026,6 @@ const useWidget = ({
5063
5026
  itemData,
5064
5027
  onChangeFormState,
5065
5028
  onCloseForm,
5066
- onDeleteItem,
5067
5029
  onWidgetFormSubmit,
5068
5030
  onCofirmDeleteWidget,
5069
5031
  onPartialUpdateWidget,
@@ -5074,11 +5036,7 @@ const useWidget = ({
5074
5036
  changeSearch,
5075
5037
  collectionDataLoading,
5076
5038
  getCollectionData,
5077
- collectionData,
5078
- // Items
5079
- itemsList,
5080
- itemsLoading,
5081
- onItemFormSubmit
5039
+ collectionData
5082
5040
  };
5083
5041
  };
5084
5042
 
@@ -6196,11 +6154,6 @@ const WidgetContextProvider = ({
6196
6154
  canDelete: _canDelete = false,
6197
6155
  loader: _loader = /*#__PURE__*/React__default["default"].createElement("span", null),
6198
6156
  onPartialUpdateWidget: _onPartialUpdateWidget = () => Promise.resolve(),
6199
- // Item
6200
- webItems: _webItems = [],
6201
- mobileItems: _mobileItems = [],
6202
- itemsLoading: _itemsLoading = false,
6203
- onItemFormSubmit: _onItemFormSubmit = () => {},
6204
6157
  reactSelectStyles: _reactSelectStyles = {},
6205
6158
  // other
6206
6159
  children
@@ -6248,12 +6201,7 @@ const WidgetContextProvider = ({
6248
6201
  columns: _columns,
6249
6202
  data: _data,
6250
6203
  canDelete: _canDelete,
6251
- loader: _loader,
6252
- // Item
6253
- webItems: _webItems,
6254
- mobileItems: _mobileItems,
6255
- itemsLoading: _itemsLoading,
6256
- onItemFormSubmit: _onItemFormSubmit
6204
+ loader: _loader
6257
6205
  }
6258
6206
  }, children);
6259
6207
  };
@@ -6401,6 +6349,72 @@ $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') },
6401
6349
  }
6402
6350
  });
6403
6351
 
6352
+ const ChevronDown = ({
6353
+ srText,
6354
+ className
6355
+ }) => {
6356
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, srText ? /*#__PURE__*/React__default["default"].createElement("span", {
6357
+ className: "khb_sr-only"
6358
+ }, srText) : null, /*#__PURE__*/React__default["default"].createElement("svg", {
6359
+ xmlns: "http://www.w3.org/2000/svg",
6360
+ viewBox: "-5 -8 24 24",
6361
+ width: "24",
6362
+ fill: "currentColor",
6363
+ className: className
6364
+ }, /*#__PURE__*/React__default["default"].createElement("path", {
6365
+ d: "M7.071 5.314l4.95-4.95a1 1 0 1 1 1.414 1.414L7.778 7.435a1 1 0 0 1-1.414 0L.707 1.778A1 1 0 1 1 2.121.364l4.95 4.95z"
6366
+ })));
6367
+ };
6368
+
6369
+ const ChevronUp = ({
6370
+ srText,
6371
+ className
6372
+ }) => {
6373
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, srText ? /*#__PURE__*/React__default["default"].createElement("span", {
6374
+ className: "khb_sr-only"
6375
+ }, srText) : null, /*#__PURE__*/React__default["default"].createElement("svg", {
6376
+ xmlns: "http://www.w3.org/2000/svg",
6377
+ viewBox: "-5 -7.5 24 24",
6378
+ width: "24",
6379
+ fill: "currentColor",
6380
+ className: className
6381
+ }, /*#__PURE__*/React__default["default"].createElement("path", {
6382
+ d: "M7.071 2.828l-4.95 4.95A1 1 0 0 1 .707 6.364L6.364.707a1 1 0 0 1 1.414 0l5.657 5.657a1 1 0 0 1-1.414 1.414l-4.95-4.95z"
6383
+ })));
6384
+ };
6385
+
6386
+ const Accordian = ({
6387
+ id,
6388
+ className,
6389
+ children,
6390
+ open,
6391
+ onToggle,
6392
+ title,
6393
+ collapseId,
6394
+ footerContent
6395
+ }) => {
6396
+ return /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("h2", {
6397
+ id: id
6398
+ }, /*#__PURE__*/React__default["default"].createElement("button", {
6399
+ type: "button",
6400
+ className: "khb_accordian-header",
6401
+ "data-accordion-target": `#${collapseId}`,
6402
+ "aria-expanded": "true",
6403
+ "aria-controls": collapseId,
6404
+ onClick: () => onToggle && onToggle(!open)
6405
+ }, /*#__PURE__*/React__default["default"].createElement("span", null, title), open ? /*#__PURE__*/React__default["default"].createElement(ChevronUp, null) : /*#__PURE__*/React__default["default"].createElement(ChevronDown, null))), /*#__PURE__*/React__default["default"].createElement("div", {
6406
+ id: collapseId,
6407
+ className: classNames__default["default"]('khb_accordian-body', {
6408
+ hidden: !open
6409
+ }),
6410
+ "aria-labelledby": id
6411
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
6412
+ className: "khb_accordian-content"
6413
+ }, children), footerContent && /*#__PURE__*/React__default["default"].createElement("div", {
6414
+ className: "khb_accordian-footer"
6415
+ }, footerContent)));
6416
+ };
6417
+
6404
6418
  const ImageUpload = ({
6405
6419
  className,
6406
6420
  text,
@@ -6411,6 +6425,7 @@ const ImageUpload = ({
6411
6425
  imgId: _imgId = '',
6412
6426
  onImageUpload,
6413
6427
  onImageRemove,
6428
+ clearError,
6414
6429
  baseUrl,
6415
6430
  disabled: _disabled = false
6416
6431
  }) => {
@@ -6429,7 +6444,7 @@ const ImageUpload = ({
6429
6444
  onDrop: (acceptedFiles, rejectedFiles) => __awaiter(void 0, void 0, void 0, function* () {
6430
6445
  var _a, _b, _c;
6431
6446
  try {
6432
- onError('');
6447
+ if (typeof clearError === 'function') clearError();
6433
6448
  if ((acceptedFiles === null || acceptedFiles === void 0 ? void 0 : acceptedFiles.length) > 0) {
6434
6449
  const regex = /\.(png|jpeg|jpg|webp|svg)$/gi;
6435
6450
  const files = acceptedFiles.filter(file => regex.test(file.name));
@@ -6475,174 +6490,127 @@ const ImageUpload = ({
6475
6490
  className: "khb_img-wrapper-del"
6476
6491
  }, /*#__PURE__*/React__default["default"].createElement(Close, null)));
6477
6492
  };
6478
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
6493
+ if (!isEmpty(img) && isString(img) && img) {
6494
+ return /*#__PURE__*/React__default["default"].createElement("div", {
6495
+ className: "khb_img-upload-wrapper-1"
6496
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
6497
+ className: "khb_img-upload-wrapper-2"
6498
+ }, /*#__PURE__*/React__default["default"].createElement("div", null, showImage(img))));
6499
+ }
6500
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", Object.assign({}, getRootProps(), {
6479
6501
  className: "khb_img-upload-wrapper-1"
6480
- }, /*#__PURE__*/React__default["default"].createElement("div", {
6481
- className: "khb_img-upload-wrapper-2"
6482
- }, !isEmpty(img) && isString(img) && img ? showImage(img) : /*#__PURE__*/React__default["default"].createElement("div", Object.assign({}, getRootProps({
6483
- className
6484
- })), /*#__PURE__*/React__default["default"].createElement("input", Object.assign({
6502
+ }), /*#__PURE__*/React__default["default"].createElement("input", Object.assign({
6485
6503
  disabled: _disabled
6486
6504
  }, getInputProps(), {
6487
6505
  id: "file-upload"
6488
- })), text))), error && /*#__PURE__*/React__default["default"].createElement("p", {
6506
+ })), /*#__PURE__*/React__default["default"].createElement("label", {
6507
+ htmlFor: "file-upload",
6508
+ className: "khb_img-upload-wrapper-2"
6509
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
6510
+ className: className
6511
+ }, text))), error && /*#__PURE__*/React__default["default"].createElement("p", {
6489
6512
  className: "khb_input-error"
6490
6513
  }, error));
6491
6514
  };
6492
6515
  var ImageUpload$1 = /*#__PURE__*/React__default["default"].memo(ImageUpload);
6493
6516
 
6494
- const ChevronDown = ({
6495
- srText,
6496
- className
6497
- }) => {
6498
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, srText ? /*#__PURE__*/React__default["default"].createElement("span", {
6499
- className: "khb_sr-only"
6500
- }, srText) : null, /*#__PURE__*/React__default["default"].createElement("svg", {
6501
- xmlns: "http://www.w3.org/2000/svg",
6502
- viewBox: "-5 -8 24 24",
6503
- width: "24",
6504
- fill: "currentColor",
6505
- className: className
6506
- }, /*#__PURE__*/React__default["default"].createElement("path", {
6507
- d: "M7.071 5.314l4.95-4.95a1 1 0 1 1 1.414 1.414L7.778 7.435a1 1 0 0 1-1.414 0L.707 1.778A1 1 0 1 1 2.121.364l4.95 4.95z"
6508
- })));
6509
- };
6510
-
6511
- const ChevronUp = ({
6512
- srText,
6513
- className
6514
- }) => {
6515
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, srText ? /*#__PURE__*/React__default["default"].createElement("span", {
6516
- className: "khb_sr-only"
6517
- }, srText) : null, /*#__PURE__*/React__default["default"].createElement("svg", {
6518
- xmlns: "http://www.w3.org/2000/svg",
6519
- viewBox: "-5 -7.5 24 24",
6520
- width: "24",
6521
- fill: "currentColor",
6522
- className: className
6523
- }, /*#__PURE__*/React__default["default"].createElement("path", {
6524
- d: "M7.071 2.828l-4.95 4.95A1 1 0 0 1 .707 6.364L6.364.707a1 1 0 0 1 1.414 0l5.657 5.657a1 1 0 0 1-1.414 1.414l-4.95-4.95z"
6525
- })));
6526
- };
6527
-
6528
- const Accordian = ({
6529
- id,
6530
- className,
6517
+ const ConfirmPopOver = ({
6531
6518
  children,
6532
- open,
6533
- onToggle,
6519
+ onConfirm,
6534
6520
  title,
6535
- collapseId,
6536
- footerContent
6521
+ confirmText: _confirmText = 'Yes',
6522
+ cancelText: _cancelText = 'No'
6537
6523
  }) => {
6538
- return /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("h2", {
6539
- id: id
6540
- }, /*#__PURE__*/React__default["default"].createElement("button", {
6541
- type: "button",
6542
- className: "khb_accordian-header",
6543
- "data-accordion-target": `#${collapseId}`,
6544
- "aria-expanded": "true",
6545
- "aria-controls": collapseId,
6546
- onClick: () => onToggle && onToggle(!open)
6547
- }, /*#__PURE__*/React__default["default"].createElement("span", null, title), open ? /*#__PURE__*/React__default["default"].createElement(ChevronUp, null) : /*#__PURE__*/React__default["default"].createElement(ChevronDown, null))), /*#__PURE__*/React__default["default"].createElement("div", {
6548
- id: collapseId,
6549
- className: classNames__default["default"]('khb_accordian-body', {
6550
- hidden: !open
6551
- }),
6552
- "aria-labelledby": id
6524
+ const [isPopoverOpen, setIsPopoverOpen] = React.useState(false);
6525
+ const onConfirmClick = () => {
6526
+ setIsPopoverOpen(false);
6527
+ onConfirm();
6528
+ };
6529
+ return /*#__PURE__*/React__default["default"].createElement(reactTinyPopover.Popover, {
6530
+ containerClassName: "khb_confirm-popover",
6531
+ isOpen: isPopoverOpen,
6532
+ padding: 10,
6533
+ onClickOutside: () => setIsPopoverOpen(false),
6534
+ content: () => /*#__PURE__*/React__default["default"].createElement("div", {
6535
+ className: "khb_confirm-popover-content"
6536
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
6537
+ className: "khb_confirm-popover-title"
6538
+ }, title), /*#__PURE__*/React__default["default"].createElement("div", {
6539
+ className: "khb_confirm-popover-footer"
6540
+ }, /*#__PURE__*/React__default["default"].createElement(Button, {
6541
+ type: "secondary",
6542
+ onClick: () => setIsPopoverOpen(false)
6543
+ }, _cancelText), /*#__PURE__*/React__default["default"].createElement(Button, {
6544
+ type: "primary",
6545
+ onClick: onConfirmClick
6546
+ }, _confirmText)))
6553
6547
  }, /*#__PURE__*/React__default["default"].createElement("div", {
6554
- className: "khb_accordian-content"
6555
- }, children), footerContent && /*#__PURE__*/React__default["default"].createElement("div", {
6556
- className: "khb_accordian-footer"
6557
- }, footerContent)));
6548
+ onClick: () => setIsPopoverOpen(true)
6549
+ }, children));
6558
6550
  };
6559
6551
 
6560
6552
  const ItemsAccordian = ({
6561
- schema,
6562
- onDataSubmit,
6563
6553
  show,
6564
6554
  title,
6565
6555
  id,
6566
- itemsData,
6567
6556
  collapseId,
6568
6557
  toggleShow,
6558
+ loading,
6559
+ name,
6560
+ errors,
6561
+ control,
6562
+ register,
6563
+ setError,
6569
6564
  itemType,
6570
- widgetId,
6571
- onDelete,
6565
+ clearError,
6572
6566
  addText: _addText = 'Add',
6573
- saveText: _saveText = 'Save',
6574
- cancelText: _cancelText = 'Cancel',
6575
- deleteText: _deleteText = 'Delete',
6576
- editText: _editText = 'Edit'
6567
+ deleteText: _deleteText = 'Delete'
6577
6568
  }) => {
6578
- const [data, setData] = React.useState([]);
6579
- const formRefs = React.useRef([]);
6569
+ const {
6570
+ baseUrl
6571
+ } = useProviderState();
6572
+ const {
6573
+ onImageUpload,
6574
+ onImageRemove,
6575
+ t,
6576
+ imageBaseUrl
6577
+ } = useWidgetState();
6580
6578
  const [itemsShow, setItemsShow] = React.useState([]);
6581
- const [editingItemIndex, setEditingItemIndex] = React.useState();
6582
- React.useEffect(() => {
6583
- if (Array.isArray(itemsData)) {
6584
- setData(itemsData);
6585
- formRefs.current = itemsData.map(() => null);
6586
- setItemsShow(itemsData.map(() => false));
6587
- }
6588
- }, [itemsData]);
6589
- const onItemFormSubmitClick = index => {
6590
- var _a;
6591
- (_a = formRefs.current[index]) === null || _a === void 0 ? void 0 : _a.dispatchEvent(new Event('submit', {
6592
- cancelable: true,
6593
- bubbles: true
6594
- }));
6595
- };
6596
- const onItemFormSubmit = (index, formData) => {
6597
- var _a;
6598
- const state = index === editingItemIndex && data[index] ? 'UPDATE' : 'ADD';
6599
- const finalData = Object.assign(Object.assign({}, formData), {
6600
- widgetId,
6601
- itemType,
6602
- sequence: index
6603
- });
6604
- if (finalData['img'] && finalData['img']['_id']) {
6605
- const id = finalData['img']['_id'];
6606
- finalData['img'] = id;
6607
- }
6608
- onDataSubmit(state, finalData, state === 'UPDATE' ? (_a = data[index]) === null || _a === void 0 ? void 0 : _a['_id'] : undefined);
6609
- setEditingItemIndex(undefined);
6610
- };
6579
+ const {
6580
+ fields: items,
6581
+ append: appendItem,
6582
+ remove: removeItem
6583
+ } = reactHookForm.useFieldArray({
6584
+ name,
6585
+ control
6586
+ });
6611
6587
  const onItemsToggleClick = (index, status) => {
6588
+ var _a;
6612
6589
  const newItemsShow = [...itemsShow];
6613
- const newStatus = typeof status === 'undefined' ? !newItemsShow[index] : status;
6614
- newItemsShow.fill(false);
6590
+ const newStatus = ((_a = errors === null || errors === void 0 ? void 0 : errors[name]) === null || _a === void 0 ? void 0 : _a[index]) ? true : typeof status === 'undefined' ? !newItemsShow[index] : status;
6615
6591
  newItemsShow[index] = newStatus;
6616
6592
  setItemsShow(newItemsShow);
6617
6593
  };
6618
- const onItemRemoveClick = index => {
6619
- const newItemsShow = [...itemsShow];
6620
- newItemsShow.splice(index, 1);
6621
- setItemsShow(newItemsShow);
6622
- formRefs.current.splice(index, 1);
6623
- };
6624
- const onItemAddClick = () => {
6625
- const newItemsShow = [...itemsShow];
6626
- newItemsShow.push(false);
6627
- setItemsShow(newItemsShow);
6628
- formRefs.current.push(null);
6629
- onItemsToggleClick(newItemsShow.length - 1);
6630
- };
6631
- const onItemEditClick = index => {
6632
- setEditingItemIndex(index);
6633
- };
6634
- const onItemCancelClick = index => {
6635
- if (!data[index]) {
6636
- onItemRemoveClick(index);
6637
- } else {
6638
- setEditingItemIndex(undefined);
6594
+ React.useEffect(() => {
6595
+ var _a, _b;
6596
+ if (errors && ((_a = errors === null || errors === void 0 ? void 0 : errors[name]) === null || _a === void 0 ? void 0 : _a.length) > 0) {
6597
+ (_b = errors === null || errors === void 0 ? void 0 : errors[name]) === null || _b === void 0 ? void 0 : _b.forEach((errorItem, index) => {
6598
+ if (errorItem) onItemsToggleClick(index, true);
6599
+ });
6639
6600
  }
6640
- onItemsToggleClick(index, false);
6641
- };
6642
- const onDeleteClick = index => {
6643
- var _a;
6644
- onDelete((_a = data[index]) === null || _a === void 0 ? void 0 : _a['_id']);
6645
- onItemRemoveClick(index);
6601
+ // eslint-disable-next-line react-hooks/exhaustive-deps
6602
+ }, [errors, name, errors === null || errors === void 0 ? void 0 : errors[name]]);
6603
+ const addTab = index => {
6604
+ appendItem({
6605
+ title: '',
6606
+ subtitle: '',
6607
+ altText: '',
6608
+ link: '',
6609
+ img: '',
6610
+ srcset: [],
6611
+ itemType,
6612
+ sequence: index
6613
+ });
6646
6614
  };
6647
6615
  return /*#__PURE__*/React__default["default"].createElement(Accordian, {
6648
6616
  open: show,
@@ -6652,76 +6620,107 @@ const ItemsAccordian = ({
6652
6620
  id: id,
6653
6621
  footerContent: /*#__PURE__*/React__default["default"].createElement(Button, {
6654
6622
  size: "sm",
6655
- onClick: onItemAddClick,
6656
- disabled: !widgetId
6623
+ disabled: loading,
6624
+ onClick: () => addTab(items.length)
6657
6625
  }, _addText)
6658
6626
  }, /*#__PURE__*/React__default["default"].createElement("div", {
6659
6627
  className: "khb_item-items"
6660
- }, itemsShow.map((status, index) => /*#__PURE__*/React__default["default"].createElement(Accordian, {
6661
- key: index,
6662
- open: status,
6663
- onToggle: () => onItemsToggleClick(index),
6664
- title: `Item ${index + 1}`,
6665
- collapseId: `${id}-item-content-${index}`,
6666
- id: `${id}-item-${index}`,
6667
- footerContent: editingItemIndex === index || !data[index] ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Button, {
6668
- size: "sm",
6669
- onClick: () => onItemFormSubmitClick(index)
6670
- }, _saveText), /*#__PURE__*/React__default["default"].createElement(Button, {
6671
- type: "secondary",
6672
- size: "sm",
6673
- onClick: () => onItemCancelClick(index)
6674
- }, _cancelText)) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Button, {
6675
- size: "sm",
6676
- onClick: () => onItemEditClick(index)
6677
- }, _editText), /*#__PURE__*/React__default["default"].createElement(Button, {
6678
- type: "danger",
6679
- size: "sm",
6680
- onClick: () => onDeleteClick(index)
6681
- }, _deleteText))
6682
- }, /*#__PURE__*/React__default["default"].createElement(Form, {
6683
- schema: schema,
6684
- data: data[index],
6685
- onSubmit: data => onItemFormSubmit(index, data),
6686
- ref: el => formRefs.current[index] = el,
6687
- enable: editingItemIndex === index || !data[index],
6688
- isUpdating: editingItemIndex === index
6689
- })))));
6690
- };
6691
-
6692
- const ConfirmPopOver = ({
6693
- children,
6694
- onConfirm,
6695
- title,
6696
- confirmText: _confirmText = 'Yes',
6697
- cancelText: _cancelText = 'No'
6698
- }) => {
6699
- const [isPopoverOpen, setIsPopoverOpen] = React.useState(false);
6700
- const onConfirmClick = () => {
6701
- setIsPopoverOpen(false);
6702
- onConfirm();
6703
- };
6704
- return /*#__PURE__*/React__default["default"].createElement(reactTinyPopover.Popover, {
6705
- containerClassName: "khb_confirm-popover",
6706
- isOpen: isPopoverOpen,
6707
- padding: 10,
6708
- onClickOutside: () => setIsPopoverOpen(false),
6709
- content: () => /*#__PURE__*/React__default["default"].createElement("div", {
6710
- className: "khb_confirm-popover-content"
6628
+ }, items === null || items === void 0 ? void 0 : items.map((field, index) => {
6629
+ var _a, _b, _c, _d, _e, _f;
6630
+ return /*#__PURE__*/React__default["default"].createElement(Accordian, {
6631
+ key: index,
6632
+ open: itemsShow[index],
6633
+ onToggle: () => onItemsToggleClick(index),
6634
+ title: `Item ${index + 1}`,
6635
+ collapseId: `${id}-item-content-${index}`,
6636
+ id: `${id}-item-${index}`,
6637
+ footerContent: /*#__PURE__*/React__default["default"].createElement(ConfirmPopOver, {
6638
+ onConfirm: () => removeItem(index),
6639
+ title: t('item.deleteTitle'),
6640
+ confirmText: t('yesButtonText'),
6641
+ cancelText: t('cancelButtonText')
6642
+ }, /*#__PURE__*/React__default["default"].createElement(Button, {
6643
+ type: "danger",
6644
+ size: "sm",
6645
+ disabled: loading
6646
+ }, _deleteText))
6711
6647
  }, /*#__PURE__*/React__default["default"].createElement("div", {
6712
- className: "khb_confirm-popover-title"
6713
- }, title), /*#__PURE__*/React__default["default"].createElement("div", {
6714
- className: "khb_confirm-popover-footer"
6715
- }, /*#__PURE__*/React__default["default"].createElement(Button, {
6716
- type: "secondary",
6717
- onClick: () => setIsPopoverOpen(false)
6718
- }, _cancelText), /*#__PURE__*/React__default["default"].createElement(Button, {
6719
- type: "primary",
6720
- onClick: onConfirmClick
6721
- }, _confirmText)))
6722
- }, /*#__PURE__*/React__default["default"].createElement("div", {
6723
- onClick: () => setIsPopoverOpen(true)
6724
- }, children));
6648
+ className: "khb-form-items"
6649
+ }, /*#__PURE__*/React__default["default"].createElement(Input, {
6650
+ rest: register(`${name}.${index}.title`, {
6651
+ required: t('item.titleRequired')
6652
+ }),
6653
+ label: t('item.title'),
6654
+ error: (_d = (_c = (_b = (_a = errors[name]) === null || _a === void 0 ? void 0 : _a[index]) === null || _b === void 0 ? void 0 : _b['title']) === null || _c === void 0 ? void 0 : _c.message) === null || _d === void 0 ? void 0 : _d.toString(),
6655
+ type: 'text',
6656
+ className: "w-full p-2",
6657
+ placeholder: t('item.titlePlaceholder'),
6658
+ required: true
6659
+ }), /*#__PURE__*/React__default["default"].createElement(Input, {
6660
+ rest: register(`${name}.${index}.subtitle`),
6661
+ label: t('item.subtitle'),
6662
+ type: 'text',
6663
+ className: "w-full p-2",
6664
+ placeholder: t('item.subTitlePlaceholder')
6665
+ }), /*#__PURE__*/React__default["default"].createElement(Input, {
6666
+ rest: register(`${name}.${index}.altText`),
6667
+ label: t('item.altText'),
6668
+ type: 'text',
6669
+ className: "w-full p-2",
6670
+ placeholder: t('item.altTextPlaceholder')
6671
+ }), /*#__PURE__*/React__default["default"].createElement(Input, {
6672
+ rest: register(`${name}.${index}.link`),
6673
+ label: t('item.link'),
6674
+ type: 'url',
6675
+ className: "w-full p-2",
6676
+ placeholder: t('item.linkPlaceholder')
6677
+ }), /*#__PURE__*/React__default["default"].createElement(Input.SrcSet, {
6678
+ control: control,
6679
+ register: register,
6680
+ label: t(`item.srcset`),
6681
+ name: `${name}.${index}.srcset`,
6682
+ errors: (_f = (_e = errors[name]) === null || _e === void 0 ? void 0 : _e[index]) === null || _f === void 0 ? void 0 : _f['srcset'],
6683
+ t: t
6684
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
6685
+ className: "kms_input-wrapper"
6686
+ }, /*#__PURE__*/React__default["default"].createElement("label", {
6687
+ className: "kms_input-label"
6688
+ }, t('item.image')), /*#__PURE__*/React__default["default"].createElement(reactHookForm.Controller, {
6689
+ control: control,
6690
+ name: `${name}.${index}.img`,
6691
+ render: ({
6692
+ field
6693
+ }) => {
6694
+ var _a, _b, _c, _d;
6695
+ return /*#__PURE__*/React__default["default"].createElement(ImageUpload$1, {
6696
+ imgId: field.value,
6697
+ clearError: () => clearError(`${name}.${index}.img`),
6698
+ maxSize: 10485760,
6699
+ onError: msg => setError(`${name}.${index}.img`, {
6700
+ type: 'custom',
6701
+ message: msg
6702
+ }),
6703
+ error: (_d = (_c = (_b = (_a = errors[name]) === null || _a === void 0 ? void 0 : _a[index]) === null || _b === void 0 ? void 0 : _b['img']) === null || _c === void 0 ? void 0 : _c.message) === null || _d === void 0 ? void 0 : _d.toString(),
6704
+ setImgId: value => {
6705
+ field.onChange(value);
6706
+ },
6707
+ baseUrl: imageBaseUrl ? imageBaseUrl : baseUrl,
6708
+ text: /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
6709
+ className: "khb_img-text-wrapper"
6710
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
6711
+ className: "khb_img-text-label"
6712
+ }, /*#__PURE__*/React__default["default"].createElement("span", null, t('item.uploadFile'))), /*#__PURE__*/React__default["default"].createElement("p", {
6713
+ className: "khb_img-text-1"
6714
+ }, t('item.dragDrop'))), /*#__PURE__*/React__default["default"].createElement("p", {
6715
+ className: "khb_img-text-2"
6716
+ }, t('item.allowedFormat'))),
6717
+ onImageUpload: onImageUpload,
6718
+ onImageRemove: onImageRemove,
6719
+ className: "khb_img-upload-wrapper-3"
6720
+ });
6721
+ }
6722
+ }))));
6723
+ })));
6725
6724
  };
6726
6725
 
6727
6726
  const TabItem = ({
@@ -6860,6 +6859,8 @@ const constants = {
6860
6859
  carouselWidgetTypeValue: 'Carousel',
6861
6860
  imageItemsTypeValue: 'Image',
6862
6861
  tabsAccessor: 'tabs',
6862
+ webItems: 'webItems',
6863
+ mobileItems: 'mobileItems',
6863
6864
  tabCollectionItemsAccessor: 'collectionItems'
6864
6865
  };
6865
6866
  const WidgetForm = ({
@@ -6876,13 +6877,13 @@ const WidgetForm = ({
6876
6877
  setValue,
6877
6878
  control,
6878
6879
  watch,
6880
+ clearErrors,
6879
6881
  setError,
6880
6882
  getValues
6881
6883
  } = reactHookForm.useForm({
6882
6884
  shouldUnregister: false
6883
6885
  });
6884
6886
  const {
6885
- baseUrl,
6886
6887
  switchClass
6887
6888
  } = useProviderState();
6888
6889
  const {
@@ -6890,23 +6891,17 @@ const WidgetForm = ({
6890
6891
  data,
6891
6892
  canAdd,
6892
6893
  canUpdate,
6893
- webItems,
6894
- mobileItems,
6895
6894
  formState,
6896
6895
  itemsTypes,
6897
6896
  widgetTypes,
6898
- onItemFormSubmit,
6897
+ loading,
6899
6898
  onWidgetFormSubmit,
6900
- onDeleteItem,
6901
- onImageRemove,
6902
- onImageUpload,
6903
6899
  getCollectionData,
6904
6900
  collectionData,
6905
6901
  collectionDataLoading,
6906
6902
  formatListItem,
6907
6903
  formatOptionLabel,
6908
- reactSelectStyles,
6909
- imageBaseUrl
6904
+ reactSelectStyles
6910
6905
  } = useWidgetState();
6911
6906
  const callerRef = React.useRef(null);
6912
6907
  const [activeTab, setActiveTab] = React.useState(0);
@@ -6917,6 +6912,8 @@ const WidgetForm = ({
6917
6912
  const [selectedCollectionItems, setSelectedCollectionItems] = React.useState([]);
6918
6913
  const [tabCollectionItems, setTabCollectionItems] = React.useState([]);
6919
6914
  const [selectedCollectionType, setSelectedCollectionType] = React.useState();
6915
+ const [collectionItemsUpdated, setCollectionItemsUpdated] = React.useState(false);
6916
+ const [tabCollectionItemsUpdated, setTabCollectionItemsUpdated] = React.useState([]);
6920
6917
  React.useEffect(() => {
6921
6918
  if (data && formState === 'UPDATE') {
6922
6919
  setSelectedWidgetType(data === null || data === void 0 ? void 0 : data.widgetType);
@@ -6929,7 +6926,7 @@ const WidgetForm = ({
6929
6926
  setSelectedCollectionType(itemsTypes.find(item => item.value === (data === null || data === void 0 ? void 0 : data.collectionName)));
6930
6927
  }
6931
6928
  }
6932
- }, [data, formState, collectionData, itemsTypes, setValue]);
6929
+ }, [data, formState, itemsTypes]);
6933
6930
  React.useEffect(() => {
6934
6931
  if (formState === 'ADD') {
6935
6932
  setSelectedCollectionItems([]);
@@ -6947,10 +6944,13 @@ const WidgetForm = ({
6947
6944
  let valueToSet = '';
6948
6945
  if (formState === 'UPDATE') {
6949
6946
  if (data[constants.widgetTypeAccessor] === constants.tabsWidgetTypeValue) {
6950
- collectionItems = data[constants.tabsAccessor][activeTab]['collectionItems'];
6947
+ collectionItems = data[constants.tabsAccessor][activeTab] ? data[constants.tabsAccessor][activeTab]['collectionItems'] : [];
6951
6948
  valueToSet = `${constants.tabsAccessor}.${activeTab}.${constants.tabCollectionItemsAccessor}`;
6952
6949
  } else if (Array.isArray(data[constants.collectionItemsAccessor]) && data[constants.collectionItemsAccessor].length > 0) {
6953
- collectionItems = data[constants.collectionItemsAccessor];
6950
+ if (collectionItemsUpdated) collectionItems = selectedCollectionItems.map(
6951
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
6952
+ // @ts-ignore
6953
+ collectionItem => collectionItem._id);else collectionItems = data[constants.collectionItemsAccessor];
6954
6954
  // valueToSet = constants.collectionItemsAccessor;
6955
6955
  }
6956
6956
  }
@@ -6973,9 +6973,16 @@ const WidgetForm = ({
6973
6973
  })) || [];
6974
6974
  selectedOptions = selectedOptions.filter(obj => !!obj.value);
6975
6975
  if (valueToSet) {
6976
- setValue(valueToSet, selectedOptions);
6976
+ // only set tabcollection items, when they are not set
6977
+ if (!tabCollectionItemsUpdated[activeTab]) {
6978
+ const updatedArr = tabCollectionItemsUpdated;
6979
+ updatedArr[activeTab] = true;
6980
+ setTabCollectionItemsUpdated(updatedArr);
6981
+ setValue(valueToSet, selectedOptions);
6982
+ }
6977
6983
  } else {
6978
6984
  setSelectedCollectionItems(selectedOptions);
6985
+ setCollectionItemsUpdated(true);
6979
6986
  }
6980
6987
  }
6981
6988
  }, collectionItems);
@@ -7047,7 +7054,19 @@ const WidgetForm = ({
7047
7054
  if (Array.isArray(selectedCollectionItems) && selectedCollectionItems.length > 0) {
7048
7055
  formData['collectionItems'] = selectedCollectionItems.map(item => item.value);
7049
7056
  }
7050
- onWidgetFormSubmit(formData);
7057
+ let items = [...(getValues(constants.webItems) || []), ...(getValues(constants.mobileItems) || [])];
7058
+ items = items.map(_a => {
7059
+ var item = __rest(_a, ["_id", "__v", "widgetId"]);
7060
+ if (item['img'] && item['img']['_id']) {
7061
+ item['img'] = item['img']['_id'];
7062
+ } else if (typeof item['img'] !== 'string' || !item['img']) {
7063
+ delete item['img'];
7064
+ }
7065
+ return item;
7066
+ });
7067
+ onWidgetFormSubmit(Object.assign(Object.assign({}, formData), {
7068
+ items
7069
+ }));
7051
7070
  };
7052
7071
  const onCollectionIndexChange = result => {
7053
7072
  const {
@@ -7210,65 +7229,6 @@ const WidgetForm = ({
7210
7229
  customStyles: reactSelectStyles || {},
7211
7230
  selectKey: selectedCollectionType === null || selectedCollectionType === void 0 ? void 0 : selectedCollectionType.value
7212
7231
  }];
7213
- const itemFormSchema = [{
7214
- label: `${t('item.title')}`,
7215
- required: true,
7216
- accessor: 'title',
7217
- type: 'text',
7218
- placeholder: t('item.titlePlaceholder')
7219
- }, {
7220
- label: `${t('item.subtitle')}`,
7221
- accessor: 'subtitle',
7222
- type: 'text',
7223
- placeholder: t('item.subTitlePlaceholder')
7224
- }, {
7225
- label: `${t('item.altText')}`,
7226
- accessor: 'altText',
7227
- type: 'text',
7228
- placeholder: t('item.altTextPlaceholder')
7229
- }, {
7230
- label: `${t('item.link')}`,
7231
- required: true,
7232
- accessor: 'link',
7233
- type: 'url',
7234
- placeholder: t('item.linkPlaceholder')
7235
- }, {
7236
- label: `${t('item.srcset')}`,
7237
- accessor: 'srcset',
7238
- type: 'srcset'
7239
- }, {
7240
- label: t('item.image'),
7241
- accessor: 'img',
7242
- Input: ({
7243
- field,
7244
- error,
7245
- setError,
7246
- disabled
7247
- }) => /*#__PURE__*/React__default["default"].createElement(ImageUpload$1, {
7248
- imgId: field.value,
7249
- maxSize: 10485760,
7250
- onError: setError,
7251
- error: error,
7252
- setImgId: value => {
7253
- field.onChange(value);
7254
- },
7255
- baseUrl: imageBaseUrl ? imageBaseUrl : baseUrl,
7256
- disabled: disabled,
7257
- text: /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
7258
- className: "khb_img-text-wrapper"
7259
- }, /*#__PURE__*/React__default["default"].createElement("label", {
7260
- htmlFor: "file-upload",
7261
- className: "khb_img-text-label"
7262
- }, /*#__PURE__*/React__default["default"].createElement("span", null, t('item.uploadFile'))), /*#__PURE__*/React__default["default"].createElement("p", {
7263
- className: "khb_img-text-1"
7264
- }, t('item.dragDrop'))), /*#__PURE__*/React__default["default"].createElement("p", {
7265
- className: "khb_img-text-2"
7266
- }, t('item.allowedFormat'))),
7267
- onImageUpload: onImageUpload,
7268
- onImageRemove: onImageRemove,
7269
- className: "khb_img-upload-wrapper-3"
7270
- })
7271
- }];
7272
7232
  if (!canAdd || !canUpdate) return null;
7273
7233
  return /*#__PURE__*/React__default["default"].createElement("div", {
7274
7234
  className: "khb_form"
@@ -7306,38 +7266,36 @@ const WidgetForm = ({
7306
7266
  formatItem: formatListItem,
7307
7267
  listCode: selectedCollectionType === null || selectedCollectionType === void 0 ? void 0 : selectedCollectionType.value
7308
7268
  }), itemsEnabled && selectedWidgetType !== 'Tabs' && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(ItemsAccordian, {
7309
- collapseId: "webItems",
7269
+ clearError: clearErrors,
7270
+ collapseId: constants.webItems,
7310
7271
  title: t('widget.webItems'),
7311
- id: "webItems",
7312
- schema: itemFormSchema,
7313
- show: webItemsVisible,
7314
- itemsData: webItems,
7272
+ id: constants.webItems,
7273
+ setError: setError,
7274
+ show: webItemsVisible || !!(errors && (errors === null || errors === void 0 ? void 0 : errors[constants.webItems])),
7315
7275
  toggleShow: setWebItemsVisible,
7316
- onDataSubmit: onItemFormSubmit,
7317
7276
  itemType: "Web",
7318
- widgetId: data === null || data === void 0 ? void 0 : data._id,
7319
- onDelete: onDeleteItem,
7277
+ name: constants.webItems,
7278
+ errors: errors,
7279
+ control: control,
7280
+ register: register,
7281
+ loading: loading,
7320
7282
  addText: t('addButtonText'),
7321
- cancelText: t('cancelButtonText'),
7322
- saveText: t('saveButtonText'),
7323
- editText: t('editButtonText'),
7324
7283
  deleteText: t('deleteButtonText')
7325
7284
  }), /*#__PURE__*/React__default["default"].createElement(ItemsAccordian, {
7326
- collapseId: "mobileItems",
7285
+ clearError: clearErrors,
7286
+ collapseId: constants.mobileItems,
7327
7287
  title: t('widget.mobileItems'),
7328
- id: "mobileItems",
7329
- schema: itemFormSchema,
7330
- show: mobileItemsVisible,
7331
- itemsData: mobileItems,
7288
+ id: constants.mobileItems,
7289
+ name: constants.mobileItems,
7290
+ setError: setError,
7291
+ loading: loading,
7292
+ show: mobileItemsVisible || !!(errors && (errors === null || errors === void 0 ? void 0 : errors[constants.mobileItems])),
7332
7293
  toggleShow: setMobileItemsVisible,
7333
- onDataSubmit: onItemFormSubmit,
7334
7294
  itemType: "Mobile",
7335
- widgetId: data === null || data === void 0 ? void 0 : data._id,
7336
- onDelete: onDeleteItem,
7295
+ errors: errors,
7296
+ control: control,
7297
+ register: register,
7337
7298
  addText: t('addButtonText'),
7338
- cancelText: t('cancelButtonText'),
7339
- saveText: t('saveButtonText'),
7340
- editText: t('editButtonText'),
7341
7299
  deleteText: t('deleteButtonText')
7342
7300
  })));
7343
7301
  };
@@ -7483,7 +7441,6 @@ const Widget = ({
7483
7441
  itemData,
7484
7442
  getWidgets,
7485
7443
  onCofirmDeleteWidget,
7486
- onDeleteItem,
7487
7444
  onImageRemove,
7488
7445
  onImageUpload,
7489
7446
  onPartialUpdateWidget,
@@ -7497,11 +7454,7 @@ const Widget = ({
7497
7454
  totalRecords,
7498
7455
  currentPage,
7499
7456
  pageSize,
7500
- setCurrentPage,
7501
- // Item
7502
- itemsList,
7503
- itemsLoading,
7504
- onItemFormSubmit
7457
+ setCurrentPage
7505
7458
  } = useWidget({
7506
7459
  canList: derivedPermissions.list,
7507
7460
  routes,
@@ -7520,7 +7473,6 @@ const Widget = ({
7520
7473
  loader: loader,
7521
7474
  onWidgetFormSubmit: onWidgetFormSubmit,
7522
7475
  data: itemData,
7523
- onDeleteItem: onDeleteItem,
7524
7476
  getWidgets: getWidgets,
7525
7477
  onImageRemove: onImageRemove,
7526
7478
  onImageUpload: onImageUpload,
@@ -7538,11 +7490,6 @@ const Widget = ({
7538
7490
  currentPage: currentPage,
7539
7491
  pageSize: pageSize,
7540
7492
  setCurrentPage: setCurrentPage,
7541
- // Item
7542
- webItems: itemsList.web,
7543
- mobileItems: itemsList.mobile,
7544
- itemsLoading: itemsLoading,
7545
- onItemFormSubmit: onItemFormSubmit,
7546
7493
  // Permissions
7547
7494
  canAdd: derivedPermissions.add,
7548
7495
  canDelete: derivedPermissions.delete,