@knovator/pagecreator-admin 0.7.3 → 0.7.5

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
@@ -1757,7 +1757,8 @@ const TRANSLATION_PAIRS_WIDGET = {
1757
1757
  'widget.tabDeleteTitle': 'Are you sure you want to delete this tab?',
1758
1758
  'widget.widgetTitleInfo': 'HTML is supported',
1759
1759
  'widget.minPerRow': 'Value must be greater than zero',
1760
- 'widget.actionsLabel': 'Actions'
1760
+ 'widget.actionsLabel': 'Actions',
1761
+ 'widget.tabNameRequired': 'Tab Name is required'
1761
1762
  };
1762
1763
  const TRANSLATION_PAIRS_ITEM = {
1763
1764
  'item.title': 'Title',
@@ -4230,6 +4231,7 @@ const DeleteModal = ({
4230
4231
  confirm,
4231
4232
  typeHerePlaceholder
4232
4233
  }) => {
4234
+ var _a;
4233
4235
  const [userInput, setUserInput] = React.useState('');
4234
4236
  React.useEffect(() => {
4235
4237
  setUserInput('');
@@ -4250,13 +4252,14 @@ const DeleteModal = ({
4250
4252
  className: "khb_delete-actions"
4251
4253
  }, /*#__PURE__*/React__default["default"].createElement(Input, {
4252
4254
  placeholder: typeHerePlaceholder || TRANSLATION_PAIRS_COMMON.typeHerePlaceholder,
4255
+ wrapperClassName: "w-full",
4253
4256
  className: "khb_delete-input",
4254
4257
  value: userInput,
4255
4258
  onChange: e => setUserInput(e.target.value)
4256
4259
  }), /*#__PURE__*/React__default["default"].createElement("div", {
4257
4260
  className: "khb_delete-buttons"
4258
4261
  }, /*#__PURE__*/React__default["default"].createElement(Button, {
4259
- disabled: userInput !== (itemData === null || itemData === void 0 ? void 0 : itemData['name']),
4262
+ disabled: userInput.toString().trim() !== ((_a = itemData === null || itemData === void 0 ? void 0 : itemData['name']) === null || _a === void 0 ? void 0 : _a.trim()),
4260
4263
  onClick: onConfirmDelete
4261
4264
  }, confirm || TRANSLATION_PAIRS_COMMON.confirm)))) : null;
4262
4265
  };
@@ -6580,6 +6583,7 @@ const TabItem = ({
6580
6583
  deleteTitle,
6581
6584
  onRemoveTab,
6582
6585
  register,
6586
+ error,
6583
6587
  noButtonText,
6584
6588
  yesButtonText
6585
6589
  }) => {
@@ -6587,8 +6591,13 @@ const TabItem = ({
6587
6591
  type: "text",
6588
6592
  className: "khb_tabs-input",
6589
6593
  autoFocus: true,
6594
+ style: {
6595
+ display: 'block'
6596
+ },
6590
6597
  disabled: isDisabled
6591
- }, register || {})), showDelete ? /*#__PURE__*/React__default["default"].createElement(ConfirmPopOver, {
6598
+ }, register || {})), error && /*#__PURE__*/React__default["default"].createElement("p", {
6599
+ className: "khb_input-error "
6600
+ }, error), showDelete ? /*#__PURE__*/React__default["default"].createElement(ConfirmPopOver, {
6592
6601
  onConfirm: onRemoveTab,
6593
6602
  title: deleteTitle,
6594
6603
  confirmText: yesButtonText,
@@ -6599,6 +6608,7 @@ const TabItem = ({
6599
6608
  };
6600
6609
 
6601
6610
  const Tabs = ({
6611
+ errors,
6602
6612
  activeTab,
6603
6613
  setActiveTab,
6604
6614
  options,
@@ -6615,6 +6625,7 @@ const Tabs = ({
6615
6625
  itemsPlaceholder,
6616
6626
  formatOptionLabel,
6617
6627
  tabCollectionItems,
6628
+ tabNameRequiredText,
6618
6629
  onCollectionItemsIndexChange
6619
6630
  }) => {
6620
6631
  const {
@@ -6641,6 +6652,7 @@ const Tabs = ({
6641
6652
  }, /*#__PURE__*/React__default["default"].createElement(reactTabs.TabList, {
6642
6653
  className: "khb_tabs-list"
6643
6654
  }, tabFields === null || tabFields === void 0 ? void 0 : tabFields.map((field, index) => {
6655
+ var _a, _b, _c;
6644
6656
  return /*#__PURE__*/React__default["default"].createElement(reactTabs.Tab, {
6645
6657
  key: field.id,
6646
6658
  className: classNames__default["default"]('khb_tabs-item', {
@@ -6649,11 +6661,14 @@ const Tabs = ({
6649
6661
  }, /*#__PURE__*/React__default["default"].createElement(TabItem, {
6650
6662
  key: field.id,
6651
6663
  deleteTitle: deleteTitle,
6652
- register: register(`tabs.${index}.name`),
6664
+ register: register(`tabs.${index}.name`, {
6665
+ required: tabNameRequiredText
6666
+ }),
6653
6667
  onRemoveTab: () => {
6654
6668
  removeField(index);
6655
6669
  setActiveTab(index === 0 ? 0 : index - 1);
6656
6670
  },
6671
+ error: (_c = (_b = (_a = errors === null || errors === void 0 ? void 0 : errors['tabs']) === null || _a === void 0 ? void 0 : _a[index]) === null || _b === void 0 ? void 0 : _b.name) === null || _c === void 0 ? void 0 : _c.message,
6657
6672
  noButtonText: noButtonText,
6658
6673
  yesButtonText: yesButtonText,
6659
6674
  showDelete: (tabFields === null || tabFields === void 0 ? void 0 : tabFields.length) > 1
@@ -7099,6 +7114,8 @@ const WidgetForm = ({
7099
7114
  deleteTitle: t('widget.tabDeleteTitle'),
7100
7115
  yesButtonText: t('yesButtonText'),
7101
7116
  noButtonText: t('cancelButtonText'),
7117
+ errors: errors,
7118
+ tabNameRequiredText: t('widget.tabNameRequired'),
7102
7119
  itemsPlaceholder: `Select ${selectedCollectionType === null || selectedCollectionType === void 0 ? void 0 : selectedCollectionType.label}...`,
7103
7120
  loadOptions: onChangeSearch,
7104
7121
  isItemsLoading: collectionDataLoading,
package/index.css CHANGED
@@ -682,9 +682,6 @@ video {
682
682
  text-overflow: ellipsis;
683
683
  white-space: nowrap;
684
684
  }
685
- .whitespace-nowrap {
686
- white-space: nowrap;
687
- }
688
685
  .whitespace-pre-wrap {
689
686
  white-space: pre-wrap;
690
687
  }
@@ -926,26 +923,26 @@ video {
926
923
  --tw-text-opacity: 1;
927
924
  color: rgb(17 24 39 / var(--tw-text-opacity));
928
925
  }
929
- .text-gray-500 {
930
- --tw-text-opacity: 1;
931
- color: rgb(107 114 128 / var(--tw-text-opacity));
932
- }
933
926
  .text-gray-700 {
934
927
  --tw-text-opacity: 1;
935
928
  color: rgb(55 65 81 / var(--tw-text-opacity));
936
929
  }
937
- .text-gray-400 {
930
+ .text-gray-500 {
938
931
  --tw-text-opacity: 1;
939
- color: rgb(156 163 175 / var(--tw-text-opacity));
932
+ color: rgb(107 114 128 / var(--tw-text-opacity));
940
933
  }
941
- .text-red-600 {
934
+ .text-gray-400 {
942
935
  --tw-text-opacity: 1;
943
- color: rgb(220 38 38 / var(--tw-text-opacity));
936
+ color: rgb(156 163 175 / var(--tw-text-opacity));
944
937
  }
945
938
  .text-black {
946
939
  --tw-text-opacity: 1;
947
940
  color: rgb(0 0 0 / var(--tw-text-opacity));
948
941
  }
942
+ .text-red-600 {
943
+ --tw-text-opacity: 1;
944
+ color: rgb(220 38 38 / var(--tw-text-opacity));
945
+ }
949
946
  .opacity-100 {
950
947
  opacity: 1;
951
948
  }
@@ -1023,23 +1020,6 @@ video {
1023
1020
  --tw-ring-opacity: 1;
1024
1021
  --tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
1025
1022
  }
1026
- @media (prefers-color-scheme: dark) {
1027
-
1028
- .khb_btn-primary {
1029
- --tw-bg-opacity: 1;
1030
- background-color: rgb(37 99 235 / var(--tw-bg-opacity));
1031
- }
1032
-
1033
- .khb_btn-primary:hover {
1034
- --tw-bg-opacity: 1;
1035
- background-color: rgb(29 78 216 / var(--tw-bg-opacity));
1036
- }
1037
-
1038
- .khb_btn-primary:focus {
1039
- --tw-ring-opacity: 1;
1040
- --tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity));
1041
- }
1042
- }
1043
1023
  .khb_btn-primary:disabled {
1044
1024
  --tw-bg-opacity: 1;
1045
1025
  background-color: rgb(30 64 175 / var(--tw-bg-opacity));
@@ -1079,23 +1059,6 @@ video {
1079
1059
  --tw-ring-opacity: 1;
1080
1060
  --tw-ring-color: rgb(134 239 172 / var(--tw-ring-opacity));
1081
1061
  }
1082
- @media (prefers-color-scheme: dark) {
1083
-
1084
- .khb_btn-success {
1085
- --tw-bg-opacity: 1;
1086
- background-color: rgb(22 163 74 / var(--tw-bg-opacity));
1087
- }
1088
-
1089
- .khb_btn-success:hover {
1090
- --tw-bg-opacity: 1;
1091
- background-color: rgb(21 128 61 / var(--tw-bg-opacity));
1092
- }
1093
-
1094
- .khb_btn-success:focus {
1095
- --tw-ring-opacity: 1;
1096
- --tw-ring-color: rgb(22 101 52 / var(--tw-ring-opacity));
1097
- }
1098
- }
1099
1062
  .khb_btn-danger {
1100
1063
  --tw-bg-opacity: 1;
1101
1064
  background-color: rgb(185 28 28 / var(--tw-bg-opacity));
@@ -1110,23 +1073,6 @@ video {
1110
1073
  --tw-ring-opacity: 1;
1111
1074
  --tw-ring-color: rgb(252 165 165 / var(--tw-ring-opacity));
1112
1075
  }
1113
- @media (prefers-color-scheme: dark) {
1114
-
1115
- .khb_btn-danger {
1116
- --tw-bg-opacity: 1;
1117
- background-color: rgb(220 38 38 / var(--tw-bg-opacity));
1118
- }
1119
-
1120
- .khb_btn-danger:hover {
1121
- --tw-bg-opacity: 1;
1122
- background-color: rgb(185 28 28 / var(--tw-bg-opacity));
1123
- }
1124
-
1125
- .khb_btn-danger:focus {
1126
- --tw-ring-opacity: 1;
1127
- --tw-ring-color: rgb(127 29 29 / var(--tw-ring-opacity));
1128
- }
1129
- }
1130
1076
  .khb_btn-danger:disabled {
1131
1077
  --tw-bg-opacity: 1;
1132
1078
  background-color: rgb(153 27 27 / var(--tw-bg-opacity));
@@ -1207,13 +1153,6 @@ video {
1207
1153
  --tw-text-opacity: 1;
1208
1154
  color: rgb(107 114 128 / var(--tw-text-opacity));
1209
1155
  }
1210
- @media (prefers-color-scheme: dark) {
1211
-
1212
- .khb_table {
1213
- --tw-text-opacity: 1;
1214
- color: rgb(156 163 175 / var(--tw-text-opacity));
1215
- }
1216
- }
1217
1156
  .khb_thead {
1218
1157
  --tw-bg-opacity: 1;
1219
1158
  background-color: rgb(249 250 251 / var(--tw-bg-opacity));
@@ -1223,15 +1162,6 @@ video {
1223
1162
  --tw-text-opacity: 1;
1224
1163
  color: rgb(55 65 81 / var(--tw-text-opacity));
1225
1164
  }
1226
- @media (prefers-color-scheme: dark) {
1227
-
1228
- .khb_thead {
1229
- --tw-bg-opacity: 1;
1230
- background-color: rgb(55 65 81 / var(--tw-bg-opacity));
1231
- --tw-text-opacity: 1;
1232
- color: rgb(156 163 175 / var(--tw-text-opacity));
1233
- }
1234
- }
1235
1165
  .khb_table-heading {
1236
1166
  padding-top: 0.75rem;
1237
1167
  padding-bottom: 0.75rem;
@@ -1247,20 +1177,6 @@ video {
1247
1177
  --tw-bg-opacity: 1;
1248
1178
  background-color: rgb(249 250 251 / var(--tw-bg-opacity));
1249
1179
  }
1250
- @media (prefers-color-scheme: dark) {
1251
-
1252
- .khb_table-row {
1253
- --tw-border-opacity: 1;
1254
- border-color: rgb(55 65 81 / var(--tw-border-opacity));
1255
- --tw-bg-opacity: 1;
1256
- background-color: rgb(31 41 55 / var(--tw-bg-opacity));
1257
- }
1258
-
1259
- .khb_table-row:hover {
1260
- --tw-bg-opacity: 1;
1261
- background-color: rgb(75 85 99 / var(--tw-bg-opacity));
1262
- }
1263
- }
1264
1180
  .khb_table-row-heading {
1265
1181
  white-space: nowrap;
1266
1182
  padding-top: 1rem;
@@ -1271,13 +1187,6 @@ video {
1271
1187
  --tw-text-opacity: 1;
1272
1188
  color: rgb(17 24 39 / var(--tw-text-opacity));
1273
1189
  }
1274
- @media (prefers-color-scheme: dark) {
1275
-
1276
- .khb_table-row-heading {
1277
- --tw-text-opacity: 1;
1278
- color: rgb(255 255 255 / var(--tw-text-opacity));
1279
- }
1280
- }
1281
1190
  .khb_table-row-data {
1282
1191
  padding-top: 0.75rem;
1283
1192
  padding-bottom: 0.75rem;
@@ -1317,23 +1226,6 @@ video {
1317
1226
  --tw-ring-opacity: 1;
1318
1227
  --tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
1319
1228
  }
1320
- @media (prefers-color-scheme: dark) {
1321
-
1322
- .khb_actions-update {
1323
- --tw-bg-opacity: 1;
1324
- background-color: rgb(37 99 235 / var(--tw-bg-opacity));
1325
- }
1326
-
1327
- .khb_actions-update:hover {
1328
- --tw-bg-opacity: 1;
1329
- background-color: rgb(29 78 216 / var(--tw-bg-opacity));
1330
- }
1331
-
1332
- .khb_actions-update:focus {
1333
- --tw-ring-opacity: 1;
1334
- --tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity));
1335
- }
1336
- }
1337
1229
  .khb_actions-update:disabled {
1338
1230
  --tw-bg-opacity: 1;
1339
1231
  background-color: rgb(30 64 175 / var(--tw-bg-opacity));
@@ -1376,23 +1268,6 @@ video {
1376
1268
  --tw-ring-opacity: 1;
1377
1269
  --tw-ring-color: rgb(252 165 165 / var(--tw-ring-opacity));
1378
1270
  }
1379
- @media (prefers-color-scheme: dark) {
1380
-
1381
- .khb_actions-delete {
1382
- --tw-bg-opacity: 1;
1383
- background-color: rgb(220 38 38 / var(--tw-bg-opacity));
1384
- }
1385
-
1386
- .khb_actions-delete:hover {
1387
- --tw-bg-opacity: 1;
1388
- background-color: rgb(185 28 28 / var(--tw-bg-opacity));
1389
- }
1390
-
1391
- .khb_actions-delete:focus {
1392
- --tw-ring-opacity: 1;
1393
- --tw-ring-color: rgb(127 29 29 / var(--tw-ring-opacity));
1394
- }
1395
- }
1396
1271
  .khb_actions-delete:disabled {
1397
1272
  --tw-bg-opacity: 1;
1398
1273
  background-color: rgb(153 27 27 / var(--tw-bg-opacity));
@@ -1424,37 +1299,16 @@ video {
1424
1299
  --tw-text-opacity: 1;
1425
1300
  color: rgb(107 114 128 / var(--tw-text-opacity));
1426
1301
  }
1427
- @media (prefers-color-scheme: dark) {
1428
-
1429
- .khb_pagination-total {
1430
- --tw-text-opacity: 1;
1431
- color: rgb(156 163 175 / var(--tw-text-opacity));
1432
- }
1433
- }
1434
1302
  .khb_pagination-total-showing {
1435
1303
  font-weight: 600;
1436
1304
  --tw-text-opacity: 1;
1437
1305
  color: rgb(17 24 39 / var(--tw-text-opacity));
1438
1306
  }
1439
- @media (prefers-color-scheme: dark) {
1440
-
1441
- .khb_pagination-total-showing {
1442
- --tw-text-opacity: 1;
1443
- color: rgb(255 255 255 / var(--tw-text-opacity));
1444
- }
1445
- }
1446
1307
  .khb_pagination-total-items {
1447
1308
  font-weight: 600;
1448
1309
  --tw-text-opacity: 1;
1449
1310
  color: rgb(17 24 39 / var(--tw-text-opacity));
1450
1311
  }
1451
- @media (prefers-color-scheme: dark) {
1452
-
1453
- .khb_pagination-total-items {
1454
- --tw-text-opacity: 1;
1455
- color: rgb(255 255 255 / var(--tw-text-opacity));
1456
- }
1457
- }
1458
1312
  .khb_pagination-actions {
1459
1313
  display: inline-flex;
1460
1314
  align-items: center;
@@ -1523,13 +1377,6 @@ video {
1523
1377
  --tw-text-opacity: 1;
1524
1378
  color: rgb(220 38 38 / var(--tw-text-opacity));
1525
1379
  }
1526
- @media (prefers-color-scheme: dark) {
1527
-
1528
- .khb_input-error {
1529
- --tw-text-opacity: 1;
1530
- color: rgb(239 68 68 / var(--tw-text-opacity));
1531
- }
1532
- }
1533
1380
  .khb_input-xs {
1534
1381
  padding: 0.375rem;
1535
1382
  font-size: 0.875rem;
@@ -1554,13 +1401,6 @@ video {
1554
1401
  --tw-text-opacity: 1;
1555
1402
  color: rgb(17 24 39 / var(--tw-text-opacity));
1556
1403
  }
1557
- @media (prefers-color-scheme: dark) {
1558
-
1559
- .khb_input-label {
1560
- --tw-text-opacity: 1;
1561
- color: rgb(209 213 219 / var(--tw-text-opacity));
1562
- }
1563
- }
1564
1404
  .khb_input-label-required {
1565
1405
  --tw-text-opacity: 1;
1566
1406
  color: rgb(220 38 38 / var(--tw-text-opacity));
@@ -2273,23 +2113,6 @@ input:checked + .slider:before {
2273
2113
  --tw-ring-opacity: 1;
2274
2114
  --tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
2275
2115
  }
2276
- @media (prefers-color-scheme: dark) {
2277
-
2278
- .khb_tabs-add {
2279
- --tw-bg-opacity: 1;
2280
- background-color: rgb(37 99 235 / var(--tw-bg-opacity));
2281
- }
2282
-
2283
- .khb_tabs-add:hover {
2284
- --tw-bg-opacity: 1;
2285
- background-color: rgb(29 78 216 / var(--tw-bg-opacity));
2286
- }
2287
-
2288
- .khb_tabs-add:focus {
2289
- --tw-ring-opacity: 1;
2290
- --tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity));
2291
- }
2292
- }
2293
2116
  .khb_tabs-add:disabled {
2294
2117
  --tw-bg-opacity: 1;
2295
2118
  background-color: rgb(30 64 175 / var(--tw-bg-opacity));
@@ -2366,10 +2189,6 @@ input:checked + .slider:before {
2366
2189
  --tw-bg-opacity: 1;
2367
2190
  background-color: rgb(153 27 27 / var(--tw-bg-opacity));
2368
2191
  }
2369
- .hover\:bg-gray-50:hover {
2370
- --tw-bg-opacity: 1;
2371
- background-color: rgb(249 250 251 / var(--tw-bg-opacity));
2372
- }
2373
2192
  .hover\:bg-gray-200:hover {
2374
2193
  --tw-bg-opacity: 1;
2375
2194
  background-color: rgb(229 231 235 / var(--tw-bg-opacity));
@@ -2396,79 +2215,10 @@ input:checked + .slider:before {
2396
2215
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2397
2216
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2398
2217
  }
2399
- .focus\:ring-blue-300:focus {
2400
- --tw-ring-opacity: 1;
2401
- --tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
2402
- }
2403
- .focus\:ring-green-300:focus {
2404
- --tw-ring-opacity: 1;
2405
- --tw-ring-color: rgb(134 239 172 / var(--tw-ring-opacity));
2406
- }
2407
- .focus\:ring-red-300:focus {
2408
- --tw-ring-opacity: 1;
2409
- --tw-ring-color: rgb(252 165 165 / var(--tw-ring-opacity));
2410
- }
2411
2218
  .focus\:ring-blue-500:focus {
2412
2219
  --tw-ring-opacity: 1;
2413
2220
  --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
2414
2221
  }
2415
- @media (prefers-color-scheme: dark) {
2416
-
2417
- .dark\:border-gray-700 {
2418
- --tw-border-opacity: 1;
2419
- border-color: rgb(55 65 81 / var(--tw-border-opacity));
2420
- }
2421
-
2422
- .dark\:bg-blue-600 {
2423
- --tw-bg-opacity: 1;
2424
- background-color: rgb(37 99 235 / var(--tw-bg-opacity));
2425
- }
2426
-
2427
- .dark\:bg-green-600 {
2428
- --tw-bg-opacity: 1;
2429
- background-color: rgb(22 163 74 / var(--tw-bg-opacity));
2430
- }
2431
-
2432
- .dark\:bg-red-600 {
2433
- --tw-bg-opacity: 1;
2434
- background-color: rgb(220 38 38 / var(--tw-bg-opacity));
2435
- }
2436
-
2437
- .dark\:bg-gray-700 {
2438
- --tw-bg-opacity: 1;
2439
- background-color: rgb(55 65 81 / var(--tw-bg-opacity));
2440
- }
2441
-
2442
- .dark\:bg-gray-800 {
2443
- --tw-bg-opacity: 1;
2444
- background-color: rgb(31 41 55 / var(--tw-bg-opacity));
2445
- }
2446
-
2447
- .dark\:hover\:bg-blue-700:hover {
2448
- --tw-bg-opacity: 1;
2449
- background-color: rgb(29 78 216 / var(--tw-bg-opacity));
2450
- }
2451
-
2452
- .dark\:hover\:bg-green-700:hover {
2453
- --tw-bg-opacity: 1;
2454
- background-color: rgb(21 128 61 / var(--tw-bg-opacity));
2455
- }
2456
-
2457
- .dark\:hover\:bg-red-700:hover {
2458
- --tw-bg-opacity: 1;
2459
- background-color: rgb(185 28 28 / var(--tw-bg-opacity));
2460
- }
2461
-
2462
- .dark\:focus\:ring-green-800:focus {
2463
- --tw-ring-opacity: 1;
2464
- --tw-ring-color: rgb(22 101 52 / var(--tw-ring-opacity));
2465
- }
2466
-
2467
- .dark\:focus\:ring-red-900:focus {
2468
- --tw-ring-opacity: 1;
2469
- --tw-ring-color: rgb(127 29 29 / var(--tw-ring-opacity));
2470
- }
2471
- }
2472
2222
  @media (min-width: 640px) {
2473
2223
 
2474
2224
  .sm\:my-8 {
package/index.js CHANGED
@@ -1745,7 +1745,8 @@ const TRANSLATION_PAIRS_WIDGET = {
1745
1745
  'widget.tabDeleteTitle': 'Are you sure you want to delete this tab?',
1746
1746
  'widget.widgetTitleInfo': 'HTML is supported',
1747
1747
  'widget.minPerRow': 'Value must be greater than zero',
1748
- 'widget.actionsLabel': 'Actions'
1748
+ 'widget.actionsLabel': 'Actions',
1749
+ 'widget.tabNameRequired': 'Tab Name is required'
1749
1750
  };
1750
1751
  const TRANSLATION_PAIRS_ITEM = {
1751
1752
  'item.title': 'Title',
@@ -4218,6 +4219,7 @@ const DeleteModal = ({
4218
4219
  confirm,
4219
4220
  typeHerePlaceholder
4220
4221
  }) => {
4222
+ var _a;
4221
4223
  const [userInput, setUserInput] = useState('');
4222
4224
  useEffect(() => {
4223
4225
  setUserInput('');
@@ -4238,13 +4240,14 @@ const DeleteModal = ({
4238
4240
  className: "khb_delete-actions"
4239
4241
  }, /*#__PURE__*/React.createElement(Input, {
4240
4242
  placeholder: typeHerePlaceholder || TRANSLATION_PAIRS_COMMON.typeHerePlaceholder,
4243
+ wrapperClassName: "w-full",
4241
4244
  className: "khb_delete-input",
4242
4245
  value: userInput,
4243
4246
  onChange: e => setUserInput(e.target.value)
4244
4247
  }), /*#__PURE__*/React.createElement("div", {
4245
4248
  className: "khb_delete-buttons"
4246
4249
  }, /*#__PURE__*/React.createElement(Button, {
4247
- disabled: userInput !== (itemData === null || itemData === void 0 ? void 0 : itemData['name']),
4250
+ disabled: userInput.toString().trim() !== ((_a = itemData === null || itemData === void 0 ? void 0 : itemData['name']) === null || _a === void 0 ? void 0 : _a.trim()),
4248
4251
  onClick: onConfirmDelete
4249
4252
  }, confirm || TRANSLATION_PAIRS_COMMON.confirm)))) : null;
4250
4253
  };
@@ -6568,6 +6571,7 @@ const TabItem = ({
6568
6571
  deleteTitle,
6569
6572
  onRemoveTab,
6570
6573
  register,
6574
+ error,
6571
6575
  noButtonText,
6572
6576
  yesButtonText
6573
6577
  }) => {
@@ -6575,8 +6579,13 @@ const TabItem = ({
6575
6579
  type: "text",
6576
6580
  className: "khb_tabs-input",
6577
6581
  autoFocus: true,
6582
+ style: {
6583
+ display: 'block'
6584
+ },
6578
6585
  disabled: isDisabled
6579
- }, register || {})), showDelete ? /*#__PURE__*/React.createElement(ConfirmPopOver, {
6586
+ }, register || {})), error && /*#__PURE__*/React.createElement("p", {
6587
+ className: "khb_input-error "
6588
+ }, error), showDelete ? /*#__PURE__*/React.createElement(ConfirmPopOver, {
6580
6589
  onConfirm: onRemoveTab,
6581
6590
  title: deleteTitle,
6582
6591
  confirmText: yesButtonText,
@@ -6587,6 +6596,7 @@ const TabItem = ({
6587
6596
  };
6588
6597
 
6589
6598
  const Tabs = ({
6599
+ errors,
6590
6600
  activeTab,
6591
6601
  setActiveTab,
6592
6602
  options,
@@ -6603,6 +6613,7 @@ const Tabs = ({
6603
6613
  itemsPlaceholder,
6604
6614
  formatOptionLabel,
6605
6615
  tabCollectionItems,
6616
+ tabNameRequiredText,
6606
6617
  onCollectionItemsIndexChange
6607
6618
  }) => {
6608
6619
  const {
@@ -6629,6 +6640,7 @@ const Tabs = ({
6629
6640
  }, /*#__PURE__*/React.createElement(TabList, {
6630
6641
  className: "khb_tabs-list"
6631
6642
  }, tabFields === null || tabFields === void 0 ? void 0 : tabFields.map((field, index) => {
6643
+ var _a, _b, _c;
6632
6644
  return /*#__PURE__*/React.createElement(Tab, {
6633
6645
  key: field.id,
6634
6646
  className: classNames('khb_tabs-item', {
@@ -6637,11 +6649,14 @@ const Tabs = ({
6637
6649
  }, /*#__PURE__*/React.createElement(TabItem, {
6638
6650
  key: field.id,
6639
6651
  deleteTitle: deleteTitle,
6640
- register: register(`tabs.${index}.name`),
6652
+ register: register(`tabs.${index}.name`, {
6653
+ required: tabNameRequiredText
6654
+ }),
6641
6655
  onRemoveTab: () => {
6642
6656
  removeField(index);
6643
6657
  setActiveTab(index === 0 ? 0 : index - 1);
6644
6658
  },
6659
+ error: (_c = (_b = (_a = errors === null || errors === void 0 ? void 0 : errors['tabs']) === null || _a === void 0 ? void 0 : _a[index]) === null || _b === void 0 ? void 0 : _b.name) === null || _c === void 0 ? void 0 : _c.message,
6645
6660
  noButtonText: noButtonText,
6646
6661
  yesButtonText: yesButtonText,
6647
6662
  showDelete: (tabFields === null || tabFields === void 0 ? void 0 : tabFields.length) > 1
@@ -7087,6 +7102,8 @@ const WidgetForm = ({
7087
7102
  deleteTitle: t('widget.tabDeleteTitle'),
7088
7103
  yesButtonText: t('yesButtonText'),
7089
7104
  noButtonText: t('cancelButtonText'),
7105
+ errors: errors,
7106
+ tabNameRequiredText: t('widget.tabNameRequired'),
7090
7107
  itemsPlaceholder: `Select ${selectedCollectionType === null || selectedCollectionType === void 0 ? void 0 : selectedCollectionType.label}...`,
7091
7108
  loadOptions: onChangeSearch,
7092
7109
  isItemsLoading: collectionDataLoading,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knovator/pagecreator-admin",
3
- "version": "0.7.3",
3
+ "version": "0.7.5",
4
4
  "dependencies": {
5
5
  "classnames": "^2.3.1",
6
6
  "react-beautiful-dnd": "^13.1.0",
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import { TabItemProps } from '../../../../types';
3
- declare const TabItem: ({ showDelete, isDisabled, deleteTitle, onRemoveTab, register, noButtonText, yesButtonText, }: TabItemProps) => JSX.Element;
3
+ declare const TabItem: ({ showDelete, isDisabled, deleteTitle, onRemoveTab, register, error, noButtonText, yesButtonText, }: TabItemProps) => JSX.Element;
4
4
  export default TabItem;
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import { TabsProps } from '../../../../types';
3
- declare const Tabs: ({ activeTab, setActiveTab, options, control, register, listCode, formatItem, deleteTitle, loadOptions, customStyles, noButtonText, yesButtonText, isItemsLoading, itemsPlaceholder, formatOptionLabel, tabCollectionItems, onCollectionItemsIndexChange, }: TabsProps) => JSX.Element;
3
+ declare const Tabs: ({ errors, activeTab, setActiveTab, options, control, register, listCode, formatItem, deleteTitle, loadOptions, customStyles, noButtonText, yesButtonText, isItemsLoading, itemsPlaceholder, formatOptionLabel, tabCollectionItems, tabNameRequiredText, onCollectionItemsIndexChange, }: TabsProps) => JSX.Element;
4
4
  export default Tabs;
@@ -87,6 +87,7 @@ declare const TRANSLATION_PAIRS_WIDGET: {
87
87
  'widget.widgetTitleInfo': string;
88
88
  'widget.minPerRow': string;
89
89
  'widget.actionsLabel': string;
90
+ 'widget.tabNameRequired': string;
90
91
  };
91
92
  declare const TRANSLATION_PAIRS_ITEM: {
92
93
  'item.title': string;
@@ -242,6 +242,7 @@ export interface TabItemProps {
242
242
  register?: any;
243
243
  noButtonText: string;
244
244
  yesButtonText: string;
245
+ error?: string;
245
246
  }
246
247
  export interface TabsProps {
247
248
  activeTab: number;
@@ -255,6 +256,7 @@ export interface TabsProps {
255
256
  }[];
256
257
  deleteTitle: string;
257
258
  listCode: string;
259
+ tabNameRequiredText: string;
258
260
  noButtonText: string;
259
261
  yesButtonText: string;
260
262
  itemsPlaceholder?: string;
@@ -263,6 +265,9 @@ export interface TabsProps {
263
265
  formatItem?: (code: string, data: any) => JSX.Element;
264
266
  onCollectionItemsIndexChange: (index: number, data: DropResult) => void;
265
267
  tabCollectionItems: any[];
268
+ errors?: {
269
+ [key: string]: any;
270
+ };
266
271
  customStyles?: any;
267
272
  loadOptions?: (value?: string, callback?: (options: OptionType[]) => void) => Promise<OptionType[]>;
268
273
  }