@unifiedsoftware/react-ui 1.0.14 → 1.0.15

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/dist/index.mjs CHANGED
@@ -1115,20 +1115,571 @@ var Toolbar = (props) => {
1115
1115
  };
1116
1116
  var Toolbar_default = Toolbar;
1117
1117
 
1118
+ // src/components/Select/SelectClient.tsx
1119
+ import { filterBy } from "@progress/kendo-data-query";
1120
+ import {
1121
+ ComboBox
1122
+ } from "@progress/kendo-react-dropdowns";
1123
+ import { useEffect as useEffect6, useRef as useRef7, useState as useState4 } from "react";
1124
+ import { jsx as jsx18 } from "react/jsx-runtime";
1125
+ var SelectClient = ({
1126
+ value: valueProp,
1127
+ data: propData,
1128
+ filter: filterProp,
1129
+ keyField: keyField2 = "key",
1130
+ textField: textField3 = "text",
1131
+ placeholder,
1132
+ virtual,
1133
+ filterable,
1134
+ disabled,
1135
+ loading,
1136
+ className,
1137
+ onChange,
1138
+ onFilterChange
1139
+ }) => {
1140
+ const [value, setValue] = useState4(valueProp);
1141
+ const [filter, setFilter] = useState4(filterProp);
1142
+ const handleChange = (event) => {
1143
+ const value2 = event.target.value || null;
1144
+ if (valueProp !== void 0) {
1145
+ onChange(value2);
1146
+ } else {
1147
+ setValue(value2);
1148
+ }
1149
+ };
1150
+ const pageSize3 = virtual == null ? void 0 : virtual.pageSize;
1151
+ const filteredData = useRef7([]);
1152
+ const [state, setState] = useState4({
1153
+ skip: 0,
1154
+ total: propData.total,
1155
+ subsetData: propData.items.slice(0, pageSize3)
1156
+ });
1157
+ const handleFilterChange = (event) => {
1158
+ if (pageSize3) {
1159
+ filteredData.current = filterBy(propData.items.slice(), event.filter);
1160
+ const data = filteredData.current.slice(0, pageSize3);
1161
+ setState({
1162
+ subsetData: data,
1163
+ skip: 0,
1164
+ total: filteredData.current.length
1165
+ });
1166
+ }
1167
+ const filter2 = event.filter.value;
1168
+ if (filterProp !== void 0) {
1169
+ onFilterChange == null ? void 0 : onFilterChange(filter2);
1170
+ } else {
1171
+ setFilter(filter2);
1172
+ }
1173
+ };
1174
+ const handlePageChange = (event) => {
1175
+ if (pageSize3) {
1176
+ const skip = event.page.skip;
1177
+ const take = event.page.take;
1178
+ const newSubsetData = filteredData.current.slice(skip, skip + take);
1179
+ setState(__spreadProps(__spreadValues({}, state), { subsetData: newSubsetData, skip }));
1180
+ }
1181
+ };
1182
+ useEffect6(() => {
1183
+ if (valueProp !== void 0) {
1184
+ setValue(valueProp);
1185
+ }
1186
+ }, [valueProp]);
1187
+ useEffect6(() => {
1188
+ setFilter(filterProp);
1189
+ }, [filterProp]);
1190
+ useEffect6(() => {
1191
+ if (pageSize3) {
1192
+ filteredData.current = propData.items.slice();
1193
+ }
1194
+ }, [propData]);
1195
+ return /* @__PURE__ */ jsx18(
1196
+ ComboBox,
1197
+ {
1198
+ value,
1199
+ data: pageSize3 ? state.subsetData : propData.items,
1200
+ placeholder,
1201
+ dataItemKey: keyField2,
1202
+ textField: textField3,
1203
+ filterable,
1204
+ filter,
1205
+ virtual: pageSize3 ? {
1206
+ total: state.total,
1207
+ pageSize: pageSize3,
1208
+ skip: state.skip
1209
+ } : void 0,
1210
+ disabled,
1211
+ loading,
1212
+ className,
1213
+ onChange: handleChange,
1214
+ onFilterChange: handleFilterChange,
1215
+ onPageChange: handlePageChange
1216
+ }
1217
+ );
1218
+ };
1219
+ var SelectClient_default = SelectClient;
1220
+
1221
+ // src/components/Select/SelectServer.tsx
1222
+ import {
1223
+ ComboBox as ComboBox2
1224
+ } from "@progress/kendo-react-dropdowns";
1225
+ import { cloneElement as cloneElement4, useCallback, useEffect as useEffect7, useRef as useRef8, useState as useState5 } from "react";
1226
+ import { jsx as jsx19 } from "react/jsx-runtime";
1227
+ var textField = "ContactName";
1228
+ var emptyItem = { [textField]: "loading ...", CustomerID: 0 };
1229
+ var pageSize = 10;
1230
+ var loadingData = [];
1231
+ while (loadingData.length < pageSize) {
1232
+ loadingData.push(__spreadValues({}, emptyItem));
1233
+ }
1234
+ var SelectServer = ({
1235
+ data: dataProp,
1236
+ value: valueProp,
1237
+ keyField: keyField2 = "key",
1238
+ textField: textField3 = "text",
1239
+ placeholder,
1240
+ virtual,
1241
+ filterable,
1242
+ filter: filterProp = "",
1243
+ disabled,
1244
+ loading,
1245
+ className,
1246
+ onChange,
1247
+ onDataChange,
1248
+ onFilterChange,
1249
+ getData,
1250
+ renderItem
1251
+ }) => {
1252
+ var _a;
1253
+ const dataCaching = useRef8([]);
1254
+ const pendingRequest = useRef8();
1255
+ const requestStarted = useRef8(false);
1256
+ const emptyItem3 = { [keyField2]: 0, [textField3]: "loading ..." };
1257
+ const [loadingData3, setLoadingData] = useState5([]);
1258
+ const [data, setData] = useState5(dataProp.items);
1259
+ const [total, setTotal] = useState5(0);
1260
+ const [value, setValue] = useState5(valueProp);
1261
+ const [filter, setFilter] = useState5(filterProp);
1262
+ const pageSize3 = (_a = virtual == null ? void 0 : virtual.pageSize) != null ? _a : 10;
1263
+ const skipRef = useRef8(0);
1264
+ const resetCach = () => {
1265
+ dataCaching.current.length = 0;
1266
+ };
1267
+ const requestData = useCallback((state) => {
1268
+ const { skip } = state;
1269
+ if (requestStarted.current) {
1270
+ clearTimeout(pendingRequest.current);
1271
+ pendingRequest.current = setTimeout(() => {
1272
+ requestData(state);
1273
+ }, 50);
1274
+ return;
1275
+ }
1276
+ requestStarted.current = true;
1277
+ getData(state).then(({ items, total: total2 }) => {
1278
+ items.forEach((item, index) => {
1279
+ dataCaching.current[index + skip] = item;
1280
+ });
1281
+ if (skip === skipRef.current) {
1282
+ setData(items);
1283
+ setTotal(total2);
1284
+ onDataChange == null ? void 0 : onDataChange({ items, total: total2 });
1285
+ }
1286
+ requestStarted.current = false;
1287
+ }).catch(() => {
1288
+ requestStarted.current = false;
1289
+ });
1290
+ }, []);
1291
+ const handleFilterChange = useCallback((event) => {
1292
+ const filter2 = event.filter.value;
1293
+ if (filterProp !== void 0) {
1294
+ onFilterChange == null ? void 0 : onFilterChange(filter2);
1295
+ } else {
1296
+ setFilter(filter2);
1297
+ }
1298
+ resetCach();
1299
+ requestData({ skip: 0, filter: filter2 });
1300
+ setData(loadingData3);
1301
+ skipRef.current = 0;
1302
+ }, []);
1303
+ const shouldRequestData = useCallback((skip) => {
1304
+ for (let i = 0; i < pageSize3; i++) {
1305
+ if (!dataCaching.current[skip + i]) {
1306
+ return true;
1307
+ }
1308
+ }
1309
+ return false;
1310
+ }, []);
1311
+ const getCachedData = useCallback((skip) => {
1312
+ const data2 = [];
1313
+ for (let i = 0; i < pageSize3; i++) {
1314
+ data2.push(dataCaching.current[i + skip] || emptyItem3);
1315
+ }
1316
+ return data2;
1317
+ }, []);
1318
+ const pageChange = useCallback(
1319
+ (event) => {
1320
+ if (filter !== void 0) {
1321
+ const newSkip = event.page.skip;
1322
+ if (shouldRequestData(newSkip)) {
1323
+ requestData({ skip: newSkip, filter });
1324
+ }
1325
+ const data2 = getCachedData(newSkip);
1326
+ setData(data2);
1327
+ skipRef.current = newSkip;
1328
+ }
1329
+ },
1330
+ [getCachedData, requestData, shouldRequestData, filter]
1331
+ );
1332
+ const handleChange = useCallback((event) => {
1333
+ const value2 = event.target.value;
1334
+ if (value2 && value2[textField3] === emptyItem3[textField3]) {
1335
+ return;
1336
+ }
1337
+ if (valueProp !== void 0) {
1338
+ onChange(value2);
1339
+ } else {
1340
+ setValue(value2);
1341
+ }
1342
+ }, []);
1343
+ const handleItemRender = (li, itemProps) => {
1344
+ const itemChildren = renderItem == null ? void 0 : renderItem(itemProps.dataItem);
1345
+ if (!itemChildren)
1346
+ return cloneElement4(li, li.props);
1347
+ return cloneElement4(li, li.props, itemChildren);
1348
+ };
1349
+ useEffect7(() => {
1350
+ const pageSize4 = 10;
1351
+ const loadingData4 = [];
1352
+ while (loadingData4.length < pageSize4) {
1353
+ loadingData4.push(emptyItem3);
1354
+ }
1355
+ setLoadingData(loadingData4);
1356
+ }, []);
1357
+ useEffect7(() => {
1358
+ if (valueProp !== void 0) {
1359
+ setValue(valueProp);
1360
+ }
1361
+ }, [valueProp]);
1362
+ useEffect7(() => {
1363
+ if (filterProp !== void 0) {
1364
+ setFilter(filterProp);
1365
+ }
1366
+ }, [filterProp]);
1367
+ useEffect7(() => {
1368
+ requestData({ skip: 0, filter });
1369
+ return () => {
1370
+ resetCach();
1371
+ };
1372
+ }, [filter, requestData]);
1373
+ useEffect7(() => {
1374
+ setData(dataProp.items);
1375
+ }, [dataProp]);
1376
+ return /* @__PURE__ */ jsx19(
1377
+ ComboBox2,
1378
+ {
1379
+ data,
1380
+ value,
1381
+ placeholder,
1382
+ dataItemKey: keyField2,
1383
+ textField: textField3,
1384
+ filterable,
1385
+ onFilterChange: handleFilterChange,
1386
+ virtual: {
1387
+ pageSize: pageSize3,
1388
+ skip: skipRef.current,
1389
+ total
1390
+ },
1391
+ disabled,
1392
+ loading,
1393
+ className,
1394
+ onChange: handleChange,
1395
+ onPageChange: pageChange,
1396
+ itemRender: handleItemRender
1397
+ }
1398
+ );
1399
+ };
1400
+ var SelectServer_default = SelectServer;
1401
+
1402
+ // src/components/Select/Select.tsx
1403
+ import { jsx as jsx20 } from "react/jsx-runtime";
1404
+ var Select = (props) => {
1405
+ return props.filterMode === "client" ? /* @__PURE__ */ jsx20(SelectClient_default, __spreadValues({}, props)) : /* @__PURE__ */ jsx20(SelectServer_default, __spreadValues({}, props));
1406
+ };
1407
+ var Select_default = Select;
1408
+
1409
+ // src/components/MultiSelect/MultiSelectClient.tsx
1410
+ import { filterBy as filterBy2 } from "@progress/kendo-data-query";
1411
+ import {
1412
+ MultiSelect
1413
+ } from "@progress/kendo-react-dropdowns";
1414
+ import { useEffect as useEffect8, useRef as useRef9, useState as useState6 } from "react";
1415
+ import { jsx as jsx21 } from "react/jsx-runtime";
1416
+ var textField2 = "text";
1417
+ var keyField = "key";
1418
+ var emptyItem2 = { [textField2]: "loading ...", [keyField]: 0 };
1419
+ var pageSize2 = 10;
1420
+ var loadingData2 = [];
1421
+ while (loadingData2.length < pageSize2) {
1422
+ loadingData2.push(__spreadValues({}, emptyItem2));
1423
+ }
1424
+ var SelectClient2 = ({
1425
+ data: dataProp,
1426
+ value: valueProp,
1427
+ keyField: keyField2 = "key",
1428
+ textField: textField3 = "text",
1429
+ placeholder,
1430
+ virtual,
1431
+ filterable,
1432
+ filter: filterProp,
1433
+ disabled,
1434
+ loading,
1435
+ className,
1436
+ onChange,
1437
+ onFilterChange
1438
+ }) => {
1439
+ const [value, setValue] = useState6(valueProp);
1440
+ const [filter, setFilter] = useState6(filterProp);
1441
+ const handleChange = (event) => {
1442
+ onChange(event.target.value);
1443
+ };
1444
+ const pageSize3 = virtual == null ? void 0 : virtual.pageSize;
1445
+ const filteredData = useRef9([]);
1446
+ const [state, setState] = useState6({
1447
+ skip: 0,
1448
+ total: dataProp.total,
1449
+ subsetData: dataProp.items.slice(0, pageSize3)
1450
+ });
1451
+ const handleFilterChange = (event) => {
1452
+ if (pageSize3) {
1453
+ filteredData.current = filterBy2(dataProp.items.slice(), event.filter);
1454
+ const data = filteredData.current.slice(0, pageSize3);
1455
+ setState({
1456
+ subsetData: data,
1457
+ skip: 0,
1458
+ total: filteredData.current.length
1459
+ });
1460
+ }
1461
+ onFilterChange == null ? void 0 : onFilterChange(event.filter.value);
1462
+ };
1463
+ const pageChange = (event) => {
1464
+ if (pageSize3) {
1465
+ const skip = event.page.skip;
1466
+ const take = event.page.take;
1467
+ const newSubsetData = filteredData.current.slice(skip, skip + take);
1468
+ setState(__spreadProps(__spreadValues({}, state), { subsetData: newSubsetData, skip }));
1469
+ }
1470
+ };
1471
+ useEffect8(() => {
1472
+ setValue(valueProp);
1473
+ }, [valueProp]);
1474
+ useEffect8(() => {
1475
+ setFilter(filterProp);
1476
+ }, [filterProp]);
1477
+ useEffect8(() => {
1478
+ if (pageSize3) {
1479
+ filteredData.current = dataProp.items.slice();
1480
+ }
1481
+ }, [dataProp]);
1482
+ return /* @__PURE__ */ jsx21(
1483
+ MultiSelect,
1484
+ {
1485
+ value,
1486
+ data: pageSize3 ? state.subsetData : dataProp.items,
1487
+ placeholder,
1488
+ dataItemKey: keyField2,
1489
+ textField: textField3,
1490
+ filterable,
1491
+ filter,
1492
+ virtual: pageSize3 ? {
1493
+ total: state.total,
1494
+ pageSize: pageSize3,
1495
+ skip: state.skip
1496
+ } : void 0,
1497
+ disabled,
1498
+ loading,
1499
+ className,
1500
+ onChange: handleChange,
1501
+ onFilterChange: handleFilterChange,
1502
+ onPageChange: pageChange
1503
+ }
1504
+ );
1505
+ };
1506
+ var MultiSelectClient_default = SelectClient2;
1507
+
1508
+ // src/components/MultiSelect/MultiSelectServer.tsx
1509
+ import {
1510
+ MultiSelect as MultiSelect2
1511
+ } from "@progress/kendo-react-dropdowns";
1512
+ import { useCallback as useCallback2, useEffect as useEffect9, useRef as useRef10, useState as useState7 } from "react";
1513
+ import { jsx as jsx22 } from "react/jsx-runtime";
1514
+ var MultiSelectServer = ({
1515
+ data: dataProp,
1516
+ value: valueProp,
1517
+ keyField: keyField2 = "key",
1518
+ textField: textField3 = "text",
1519
+ placeholder,
1520
+ virtual,
1521
+ filterable,
1522
+ filter: filterProp = "",
1523
+ disabled,
1524
+ loading,
1525
+ className,
1526
+ onDataChange,
1527
+ onChange,
1528
+ onFilterChange,
1529
+ getData
1530
+ }) => {
1531
+ var _a;
1532
+ const dataCaching = useRef10([]);
1533
+ const pendingRequest = useRef10();
1534
+ const requestStarted = useRef10(false);
1535
+ const emptyItem3 = { [keyField2]: 0, [textField3]: "loading ..." };
1536
+ const [loadingData3, setLoadingData] = useState7([]);
1537
+ const [data, setData] = useState7(dataProp.items);
1538
+ const [total, setTotal] = useState7(0);
1539
+ const [value, setValue] = useState7(valueProp);
1540
+ const [filter, setFilter] = useState7(filterProp);
1541
+ const pageSize3 = (_a = virtual == null ? void 0 : virtual.pageSize) != null ? _a : 10;
1542
+ const skipRef = useRef10(0);
1543
+ const resetCach = () => {
1544
+ dataCaching.current.length = 0;
1545
+ };
1546
+ const requestData = useCallback2((state) => {
1547
+ if (requestStarted.current) {
1548
+ clearTimeout(pendingRequest.current);
1549
+ pendingRequest.current = setTimeout(() => {
1550
+ requestData(state);
1551
+ }, 50);
1552
+ return;
1553
+ }
1554
+ requestStarted.current = true;
1555
+ getData(state).then(({ items, total: total2 }) => {
1556
+ const { skip } = state;
1557
+ items.forEach((item, index) => {
1558
+ dataCaching.current[index + skip] = item;
1559
+ });
1560
+ if (skip === skipRef.current) {
1561
+ setData(items);
1562
+ setTotal(total2);
1563
+ onDataChange == null ? void 0 : onDataChange({ items, total: total2 });
1564
+ }
1565
+ requestStarted.current = false;
1566
+ }).catch(() => {
1567
+ requestStarted.current = false;
1568
+ });
1569
+ }, []);
1570
+ const handleFilterChange = useCallback2((event) => {
1571
+ const filter2 = event.filter.value;
1572
+ resetCach();
1573
+ requestData({ skip: 0, filter: filter2 });
1574
+ setData(loadingData3);
1575
+ skipRef.current = 0;
1576
+ setFilter(filter2);
1577
+ onFilterChange == null ? void 0 : onFilterChange(filter2);
1578
+ }, []);
1579
+ const shouldRequestData = useCallback2((skip) => {
1580
+ for (let i = 0; i < pageSize3; i++) {
1581
+ if (!dataCaching.current[skip + i]) {
1582
+ return true;
1583
+ }
1584
+ }
1585
+ return false;
1586
+ }, []);
1587
+ const getCachedData = useCallback2((skip) => {
1588
+ const data2 = [];
1589
+ for (let i = 0; i < pageSize3; i++) {
1590
+ data2.push(dataCaching.current[i + skip] || emptyItem3);
1591
+ }
1592
+ return data2;
1593
+ }, []);
1594
+ const pageChange = useCallback2(
1595
+ (event) => {
1596
+ const newSkip = event.page.skip;
1597
+ if (shouldRequestData(newSkip)) {
1598
+ requestData({ skip: newSkip, filter });
1599
+ }
1600
+ const data2 = getCachedData(newSkip);
1601
+ setData(data2);
1602
+ skipRef.current = newSkip;
1603
+ },
1604
+ [getCachedData, requestData, shouldRequestData, filter]
1605
+ );
1606
+ const handleChange = useCallback2((event) => {
1607
+ const value2 = event.target.value;
1608
+ if (value2 && value2[textField3] === emptyItem3[textField3]) {
1609
+ return;
1610
+ }
1611
+ setValue(value2);
1612
+ onChange(value2);
1613
+ }, []);
1614
+ useEffect9(() => {
1615
+ const pageSize4 = 10;
1616
+ const loadingData4 = [];
1617
+ while (loadingData4.length < pageSize4) {
1618
+ loadingData4.push(emptyItem3);
1619
+ }
1620
+ setLoadingData(loadingData4);
1621
+ }, []);
1622
+ useEffect9(() => {
1623
+ setData(dataProp.items);
1624
+ }, [dataProp]);
1625
+ useEffect9(() => {
1626
+ setValue(valueProp);
1627
+ }, [valueProp]);
1628
+ useEffect9(() => {
1629
+ setFilter(filterProp);
1630
+ }, [filterProp]);
1631
+ useEffect9(() => {
1632
+ requestData({ skip: 0, filter });
1633
+ return () => {
1634
+ resetCach();
1635
+ };
1636
+ }, [filter, requestData]);
1637
+ return /* @__PURE__ */ jsx22(
1638
+ MultiSelect2,
1639
+ {
1640
+ data,
1641
+ value,
1642
+ placeholder,
1643
+ dataItemKey: keyField2,
1644
+ textField: textField3,
1645
+ filterable,
1646
+ onFilterChange: handleFilterChange,
1647
+ virtual: {
1648
+ pageSize: pageSize3,
1649
+ skip: skipRef.current,
1650
+ total
1651
+ },
1652
+ disabled,
1653
+ loading,
1654
+ className,
1655
+ onChange: handleChange,
1656
+ onPageChange: pageChange
1657
+ }
1658
+ );
1659
+ };
1660
+ var MultiSelectServer_default = MultiSelectServer;
1661
+
1662
+ // src/components/MultiSelect/MultiSelect.tsx
1663
+ import { jsx as jsx23 } from "react/jsx-runtime";
1664
+ var MultiSelect3 = (props) => {
1665
+ return props.filterMode === "client" ? /* @__PURE__ */ jsx23(MultiSelectClient_default, __spreadValues({}, props)) : /* @__PURE__ */ jsx23(MultiSelectServer_default, __spreadValues({}, props));
1666
+ };
1667
+ var MultiSelect_default = MultiSelect3;
1668
+
1118
1669
  // src/hooks/useLocalStorage.tsx
1119
- import { useCallback, useEffect as useEffect7, useState as useState4 } from "react";
1670
+ import { useCallback as useCallback3, useEffect as useEffect11, useState as useState8 } from "react";
1120
1671
 
1121
1672
  // src/hooks/useEventListener.tsx
1122
- import { useRef as useRef7 } from "react";
1673
+ import { useRef as useRef11 } from "react";
1123
1674
 
1124
1675
  // src/hooks/useIsomorphicLayoutEffect.tsx
1125
- import { useEffect as useEffect6, useLayoutEffect } from "react";
1126
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect6;
1676
+ import { useEffect as useEffect10, useLayoutEffect } from "react";
1677
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect10;
1127
1678
  var useIsomorphicLayoutEffect_default = useIsomorphicLayoutEffect;
1128
1679
 
1129
1680
  // src/hooks/useEventListener.tsx
1130
1681
  function useEventListener(handler) {
1131
- const savedHandler = useRef7(handler);
1682
+ const savedHandler = useRef11(handler);
1132
1683
  useIsomorphicLayoutEffect_default(() => {
1133
1684
  savedHandler.current = handler;
1134
1685
  }, [handler]);
@@ -1137,7 +1688,7 @@ var useEventListener_default = useEventListener;
1137
1688
 
1138
1689
  // src/hooks/useLocalStorage.tsx
1139
1690
  function useLocalStorage(key, initialValue) {
1140
- const readValue = useCallback(() => {
1691
+ const readValue = useCallback3(() => {
1141
1692
  if (typeof window === "undefined") {
1142
1693
  return initialValue;
1143
1694
  }
@@ -1149,8 +1700,8 @@ function useLocalStorage(key, initialValue) {
1149
1700
  return initialValue;
1150
1701
  }
1151
1702
  }, [initialValue, key]);
1152
- const [storedValue, setStoredValue] = useState4(readValue);
1153
- const setValue = useCallback(
1703
+ const [storedValue, setStoredValue] = useState8(readValue);
1704
+ const setValue = useCallback3(
1154
1705
  (value) => {
1155
1706
  if (typeof window == "undefined") {
1156
1707
  console.warn(`Tried setting localStorage key \u201C${key}\u201D even though environment is not a client`);
@@ -1166,10 +1717,10 @@ function useLocalStorage(key, initialValue) {
1166
1717
  },
1167
1718
  [key, storedValue]
1168
1719
  );
1169
- useEffect7(() => {
1720
+ useEffect11(() => {
1170
1721
  setStoredValue(readValue());
1171
1722
  }, []);
1172
- const handleStorageChange = useCallback(() => {
1723
+ const handleStorageChange = useCallback3(() => {
1173
1724
  setStoredValue(readValue());
1174
1725
  }, [readValue]);
1175
1726
  useEventListener_default("storage", handleStorageChange);
@@ -1180,28 +1731,27 @@ function parseJSON(value) {
1180
1731
  try {
1181
1732
  return value === "undefined" ? void 0 : JSON.parse(value != null ? value : "");
1182
1733
  } catch (e) {
1183
- console.log("parsing error on", { value });
1184
1734
  return void 0;
1185
1735
  }
1186
1736
  }
1187
1737
 
1188
1738
  // src/hooks/usePrevious.tsx
1189
- import { useEffect as useEffect8, useRef as useRef8 } from "react";
1739
+ import { useEffect as useEffect12, useRef as useRef12 } from "react";
1190
1740
  var usePrevious = (value) => {
1191
- const ref = useRef8();
1192
- useEffect8(() => {
1741
+ const ref = useRef12();
1742
+ useEffect12(() => {
1193
1743
  ref.current = value;
1194
1744
  });
1195
1745
  return ref.current;
1196
1746
  };
1197
1747
 
1198
1748
  // src/hooks/useStep.tsx
1199
- import { useCallback as useCallback2, useMemo as useMemo4, useState as useState5 } from "react";
1749
+ import { useCallback as useCallback4, useMemo as useMemo4, useState as useState9 } from "react";
1200
1750
  var useStep = (maxStep) => {
1201
- const [currentStep, setCurrentStep] = useState5(1);
1751
+ const [currentStep, setCurrentStep] = useState9(1);
1202
1752
  const canGoToNextStep = useMemo4(() => currentStep + 1 <= maxStep, [currentStep, maxStep]);
1203
1753
  const canGoToPrevStep = useMemo4(() => currentStep - 1 >= 1, [currentStep]);
1204
- const setStep = useCallback2(
1754
+ const setStep = useCallback4(
1205
1755
  (step) => {
1206
1756
  const newStep = step instanceof Function ? step(currentStep) : step;
1207
1757
  if (newStep >= 1 && newStep <= maxStep) {
@@ -1212,17 +1762,17 @@ var useStep = (maxStep) => {
1212
1762
  },
1213
1763
  [maxStep, currentStep]
1214
1764
  );
1215
- const goToNextStep = useCallback2(() => {
1765
+ const goToNextStep = useCallback4(() => {
1216
1766
  if (canGoToNextStep) {
1217
1767
  setCurrentStep((step) => step + 1);
1218
1768
  }
1219
1769
  }, [canGoToNextStep]);
1220
- const goToPrevStep = useCallback2(() => {
1770
+ const goToPrevStep = useCallback4(() => {
1221
1771
  if (canGoToPrevStep) {
1222
1772
  setCurrentStep((step) => step - 1);
1223
1773
  }
1224
1774
  }, [canGoToPrevStep]);
1225
- const reset = useCallback2(() => {
1775
+ const reset = useCallback4(() => {
1226
1776
  setCurrentStep(1);
1227
1777
  }, []);
1228
1778
  return [
@@ -1254,7 +1804,9 @@ export {
1254
1804
  MenuItem_default as MenuItem,
1255
1805
  MenuSubmenu_default as MenuSubmenu,
1256
1806
  MenuValueContext_default as MenuValueContext,
1807
+ MultiSelect_default as MultiSelect,
1257
1808
  Portal_default as Portal,
1809
+ Select_default as Select,
1258
1810
  Tab,
1259
1811
  Tabs,
1260
1812
  Toolbar_default as Toolbar,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unifiedsoftware/react-ui",
3
- "version": "1.0.14",
3
+ "version": "1.0.15",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -21,6 +21,8 @@
21
21
  "react-dom": "^16.0.0 || ^17.0.2 || ^18.2.0"
22
22
  },
23
23
  "dependencies": {
24
+ "@progress/kendo-react-dropdowns": "^5.16.1",
25
+ "@progress/kendo-data-query": "^1.6.0",
24
26
  "clsx": "^2.0.0",
25
27
  "merge-refs": "^1.2.1",
26
28
  "react-merge-refs": "^2.1.1",