@knovator/pagecreator-admin 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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);
@@ -6947,7 +6942,7 @@ const WidgetForm = ({
6947
6942
  let valueToSet = '';
6948
6943
  if (formState === 'UPDATE') {
6949
6944
  if (data[constants.widgetTypeAccessor] === constants.tabsWidgetTypeValue) {
6950
- collectionItems = data[constants.tabsAccessor][activeTab]['collectionItems'];
6945
+ collectionItems = data[constants.tabsAccessor][activeTab] ? data[constants.tabsAccessor][activeTab]['collectionItems'] : [];
6951
6946
  valueToSet = `${constants.tabsAccessor}.${activeTab}.${constants.tabCollectionItemsAccessor}`;
6952
6947
  } else if (Array.isArray(data[constants.collectionItemsAccessor]) && data[constants.collectionItemsAccessor].length > 0) {
6953
6948
  collectionItems = data[constants.collectionItemsAccessor];
@@ -7047,7 +7042,19 @@ const WidgetForm = ({
7047
7042
  if (Array.isArray(selectedCollectionItems) && selectedCollectionItems.length > 0) {
7048
7043
  formData['collectionItems'] = selectedCollectionItems.map(item => item.value);
7049
7044
  }
7050
- onWidgetFormSubmit(formData);
7045
+ let items = [...(getValues(constants.webItems) || []), ...(getValues(constants.mobileItems) || [])];
7046
+ items = items.map(_a => {
7047
+ var item = __rest(_a, ["_id", "__v", "widgetId"]);
7048
+ if (item['img'] && item['img']['_id']) {
7049
+ item['img'] = item['img']['_id'];
7050
+ } else if (typeof item['img'] !== 'string' || !item['img']) {
7051
+ delete item['img'];
7052
+ }
7053
+ return item;
7054
+ });
7055
+ onWidgetFormSubmit(Object.assign(Object.assign({}, formData), {
7056
+ items
7057
+ }));
7051
7058
  };
7052
7059
  const onCollectionIndexChange = result => {
7053
7060
  const {
@@ -7210,65 +7217,6 @@ const WidgetForm = ({
7210
7217
  customStyles: reactSelectStyles || {},
7211
7218
  selectKey: selectedCollectionType === null || selectedCollectionType === void 0 ? void 0 : selectedCollectionType.value
7212
7219
  }];
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
7220
  if (!canAdd || !canUpdate) return null;
7273
7221
  return /*#__PURE__*/React__default["default"].createElement("div", {
7274
7222
  className: "khb_form"
@@ -7306,38 +7254,36 @@ const WidgetForm = ({
7306
7254
  formatItem: formatListItem,
7307
7255
  listCode: selectedCollectionType === null || selectedCollectionType === void 0 ? void 0 : selectedCollectionType.value
7308
7256
  }), itemsEnabled && selectedWidgetType !== 'Tabs' && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(ItemsAccordian, {
7309
- collapseId: "webItems",
7257
+ clearError: clearErrors,
7258
+ collapseId: constants.webItems,
7310
7259
  title: t('widget.webItems'),
7311
- id: "webItems",
7312
- schema: itemFormSchema,
7313
- show: webItemsVisible,
7314
- itemsData: webItems,
7260
+ id: constants.webItems,
7261
+ setError: setError,
7262
+ show: webItemsVisible || !!(errors && (errors === null || errors === void 0 ? void 0 : errors[constants.webItems])),
7315
7263
  toggleShow: setWebItemsVisible,
7316
- onDataSubmit: onItemFormSubmit,
7317
7264
  itemType: "Web",
7318
- widgetId: data === null || data === void 0 ? void 0 : data._id,
7319
- onDelete: onDeleteItem,
7265
+ name: constants.webItems,
7266
+ errors: errors,
7267
+ control: control,
7268
+ register: register,
7269
+ loading: loading,
7320
7270
  addText: t('addButtonText'),
7321
- cancelText: t('cancelButtonText'),
7322
- saveText: t('saveButtonText'),
7323
- editText: t('editButtonText'),
7324
7271
  deleteText: t('deleteButtonText')
7325
7272
  }), /*#__PURE__*/React__default["default"].createElement(ItemsAccordian, {
7326
- collapseId: "mobileItems",
7273
+ clearError: clearErrors,
7274
+ collapseId: constants.mobileItems,
7327
7275
  title: t('widget.mobileItems'),
7328
- id: "mobileItems",
7329
- schema: itemFormSchema,
7330
- show: mobileItemsVisible,
7331
- itemsData: mobileItems,
7276
+ id: constants.mobileItems,
7277
+ name: constants.mobileItems,
7278
+ setError: setError,
7279
+ loading: loading,
7280
+ show: mobileItemsVisible || !!(errors && (errors === null || errors === void 0 ? void 0 : errors[constants.mobileItems])),
7332
7281
  toggleShow: setMobileItemsVisible,
7333
- onDataSubmit: onItemFormSubmit,
7334
7282
  itemType: "Mobile",
7335
- widgetId: data === null || data === void 0 ? void 0 : data._id,
7336
- onDelete: onDeleteItem,
7283
+ errors: errors,
7284
+ control: control,
7285
+ register: register,
7337
7286
  addText: t('addButtonText'),
7338
- cancelText: t('cancelButtonText'),
7339
- saveText: t('saveButtonText'),
7340
- editText: t('editButtonText'),
7341
7287
  deleteText: t('deleteButtonText')
7342
7288
  })));
7343
7289
  };
@@ -7483,7 +7429,6 @@ const Widget = ({
7483
7429
  itemData,
7484
7430
  getWidgets,
7485
7431
  onCofirmDeleteWidget,
7486
- onDeleteItem,
7487
7432
  onImageRemove,
7488
7433
  onImageUpload,
7489
7434
  onPartialUpdateWidget,
@@ -7497,11 +7442,7 @@ const Widget = ({
7497
7442
  totalRecords,
7498
7443
  currentPage,
7499
7444
  pageSize,
7500
- setCurrentPage,
7501
- // Item
7502
- itemsList,
7503
- itemsLoading,
7504
- onItemFormSubmit
7445
+ setCurrentPage
7505
7446
  } = useWidget({
7506
7447
  canList: derivedPermissions.list,
7507
7448
  routes,
@@ -7520,7 +7461,6 @@ const Widget = ({
7520
7461
  loader: loader,
7521
7462
  onWidgetFormSubmit: onWidgetFormSubmit,
7522
7463
  data: itemData,
7523
- onDeleteItem: onDeleteItem,
7524
7464
  getWidgets: getWidgets,
7525
7465
  onImageRemove: onImageRemove,
7526
7466
  onImageUpload: onImageUpload,
@@ -7538,11 +7478,6 @@ const Widget = ({
7538
7478
  currentPage: currentPage,
7539
7479
  pageSize: pageSize,
7540
7480
  setCurrentPage: setCurrentPage,
7541
- // Item
7542
- webItems: itemsList.web,
7543
- mobileItems: itemsList.mobile,
7544
- itemsLoading: itemsLoading,
7545
- onItemFormSubmit: onItemFormSubmit,
7546
7481
  // Permissions
7547
7482
  canAdd: derivedPermissions.add,
7548
7483
  canDelete: derivedPermissions.delete,