@luscii-healthtech/web-ui 0.9.3 → 0.10.2
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/components/List/List.d.ts +1 -1
- package/dist/components/List/List.types.d.ts +5 -0
- package/dist/components/PaginationMenu/PaginationMenu.types.d.ts +1 -1
- package/dist/components/Tabbar/Tabbar.d.ts +6 -2
- package/dist/index.d.ts +2 -2
- package/dist/web-ui.cjs.development.js +94 -39
- package/dist/web-ui.cjs.development.js.map +1 -1
- package/dist/web-ui.cjs.production.min.js +1 -1
- package/dist/web-ui.cjs.production.min.js.map +1 -1
- package/dist/web-ui.esm.js +95 -40
- package/dist/web-ui.esm.js.map +1 -1
- package/package.json +3 -2
- package/src/components/List/List.tsx +53 -2
- package/src/components/List/List.types.ts +6 -0
- package/src/components/List/ListItem.tsx +3 -0
- package/src/components/PaginationMenu/PaginationMenu.types.ts +1 -1
- package/src/components/PaginationMenu/PaginationMenu.utils.ts +1 -1
- package/src/components/Tabbar/Tabbar.tsx +12 -13
- package/src/index.tsx +8 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { ListProps, ListItemProps, OnAssetLoadErrorPayload } from "./List.types";
|
|
3
3
|
export { ListProps, ListItemProps, OnAssetLoadErrorPayload };
|
|
4
|
-
export declare const List: ({ title, headerButton, headerTransparent, items, onAssetLoadError, }: ListProps) => JSX.Element;
|
|
4
|
+
export declare const List: ({ title, headerButton, headerTransparent, items, onAssetLoadError, onDragEnd, }: ListProps) => JSX.Element;
|
|
5
5
|
export default List;
|
|
@@ -19,6 +19,7 @@ export interface ListItemProps {
|
|
|
19
19
|
* The header is an optional <li> on top that contains the title and accessories (buttons)
|
|
20
20
|
*/
|
|
21
21
|
roundTop?: boolean;
|
|
22
|
+
isDraggable?: boolean;
|
|
22
23
|
}
|
|
23
24
|
export declare type OnAssetLoadErrorPayload = Pick<ListItemProps, "itemId" | "subtitle" | "title" | "icon">;
|
|
24
25
|
export declare type ListProps = {
|
|
@@ -27,4 +28,8 @@ export declare type ListProps = {
|
|
|
27
28
|
headerTransparent?: boolean;
|
|
28
29
|
items: ListItemProps[];
|
|
29
30
|
onAssetLoadError?: (payload: OnAssetLoadErrorPayload) => void;
|
|
31
|
+
onDragEnd?: (itemId: string | number, newIndex: number) => void;
|
|
30
32
|
};
|
|
33
|
+
export interface Dragula {
|
|
34
|
+
destroy?: () => void;
|
|
35
|
+
}
|
|
@@ -23,7 +23,7 @@ export interface PaginationMenuLargeProps {
|
|
|
23
23
|
resultCount?: number;
|
|
24
24
|
}
|
|
25
25
|
export declare type OnPaginationChange = (pageNumber: number, pageSize?: PageSize) => void;
|
|
26
|
-
export declare type PageSize =
|
|
26
|
+
export declare type PageSize = 25 | 50 | 75 | 100;
|
|
27
27
|
export interface Localization {
|
|
28
28
|
display: string;
|
|
29
29
|
page: string;
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { TabItemDetails } from "./TabbarItem";
|
|
3
|
-
interface TabbarProps {
|
|
3
|
+
export interface TabbarProps {
|
|
4
4
|
tabs?: TabItemDetails[];
|
|
5
5
|
selectedIndex?: number;
|
|
6
|
-
onSelect?: (
|
|
6
|
+
onSelect?: (params: {
|
|
7
|
+
index: number;
|
|
8
|
+
selectedTab: TabItemDetails;
|
|
9
|
+
}) => void;
|
|
7
10
|
className?: string;
|
|
8
11
|
}
|
|
12
|
+
export { TabItemDetails };
|
|
9
13
|
export declare const Tabbar: ({ tabs, selectedIndex, onSelect, className, }: TabbarProps) => JSX.Element;
|
|
10
14
|
export default Tabbar;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { default as Acknowledgement, ACKNOWLEDGEMENT_TYPE_OPTIONS, } from "./components/Acknowledgement/Acknowledgement";
|
|
2
2
|
export { default as Avatar } from "./components/Avatar/Avatar";
|
|
3
3
|
export { default as Badge } from "./components/Badge/Badge";
|
|
4
|
-
export { BaseButtonProps as NonPrimaryButtonProps, ButtonWithPendingStateProps as PrimaryButtonProps, ButtonDefinition } from "./components/ButtonV2/ButtonProps.type";
|
|
4
|
+
export { BaseButtonProps as NonPrimaryButtonProps, ButtonWithPendingStateProps as PrimaryButtonProps, ButtonDefinition, } from "./components/ButtonV2/ButtonProps.type";
|
|
5
5
|
export { PrimaryButton } from "./components/ButtonV2/PrimaryButton";
|
|
6
6
|
export { SecondaryButton } from "./components/ButtonV2/SecondaryButton";
|
|
7
7
|
export { TertiaryButton } from "./components/ButtonV2/TertiaryButton";
|
|
@@ -40,7 +40,7 @@ export { SettingsMenuButton, SettingsMenuButtonProps, } from "./components/Setti
|
|
|
40
40
|
export { Spinner } from "./components/Spinner/Spinner";
|
|
41
41
|
export { Steps } from "./components/Steps/Steps";
|
|
42
42
|
export { default as Switcher } from "./components/Switcher/Switcher";
|
|
43
|
-
export { default as Tabbar } from "./components/Tabbar/Tabbar";
|
|
43
|
+
export { default as Tabbar, TabbarProps, TabItemDetails, } from "./components/Tabbar/Tabbar";
|
|
44
44
|
export { default as TabLinks } from "./components/TabLinks/TabLinks";
|
|
45
45
|
export { default as Tag } from "./components/Tag/Tag";
|
|
46
46
|
export { default as TagGroup } from "./components/Tag/TagGroup";
|
|
@@ -17,6 +17,7 @@ require('react-datepicker/dist/react-datepicker.css');
|
|
|
17
17
|
var ClipboardJS = _interopDefault(require('clipboard'));
|
|
18
18
|
var ReactSelect = require('react-select');
|
|
19
19
|
var ReactSelect__default = _interopDefault(ReactSelect);
|
|
20
|
+
var dragula = _interopDefault(require('react-dragula'));
|
|
20
21
|
var debounce = _interopDefault(require('lodash.debounce'));
|
|
21
22
|
var ReactQuill = _interopDefault(require('react-quill'));
|
|
22
23
|
require('react-quill/dist/quill.snow.css');
|
|
@@ -2312,7 +2313,7 @@ var CustomSelect = /*#__PURE__*/React__default.forwardRef(function (props, _ref)
|
|
|
2312
2313
|
}));
|
|
2313
2314
|
});
|
|
2314
2315
|
|
|
2315
|
-
var PAGE_SIZES = [
|
|
2316
|
+
var PAGE_SIZES = [25, 50, 75, 100];
|
|
2316
2317
|
var PAGE_SIZE_OPTIONS = /*#__PURE__*/PAGE_SIZES.map(function (pageSize) {
|
|
2317
2318
|
return {
|
|
2318
2319
|
label: pageSize.toString(),
|
|
@@ -2599,6 +2600,24 @@ var EmptyIcon = function EmptyIcon(props) {
|
|
|
2599
2600
|
}));
|
|
2600
2601
|
};
|
|
2601
2602
|
|
|
2603
|
+
var DragIcon = function DragIcon(props) {
|
|
2604
|
+
return /*#__PURE__*/React__default.createElement("svg", {
|
|
2605
|
+
className: props.className,
|
|
2606
|
+
onClick: props.onClick,
|
|
2607
|
+
role: props.onClick ? "button" : undefined,
|
|
2608
|
+
width: "24",
|
|
2609
|
+
height: "24",
|
|
2610
|
+
viewBox: "0 0 24 24",
|
|
2611
|
+
fill: "none",
|
|
2612
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
2613
|
+
}, /*#__PURE__*/React__default.createElement("path", {
|
|
2614
|
+
fillRule: "evenodd",
|
|
2615
|
+
clipRule: "evenodd",
|
|
2616
|
+
d: "M8 4C7.44772 4 7 4.44772 7 5V7C7 7.55228 7.44772 8 8 8H10C10.5523 8 11 7.55228 11 7V5C11 4.44772 10.5523 4 10 4H8ZM14 4C13.4477 4 13 4.44772 13 5V7C13 7.55228 13.4477 8 14 8H16C16.5523 8 17 7.55228 17 7V5C17 4.44772 16.5523 4 16 4H14ZM7 11C7 10.4477 7.44772 10 8 10H10C10.5523 10 11 10.4477 11 11V13C11 13.5523 10.5523 14 10 14H8C7.44772 14 7 13.5523 7 13V11ZM14 10C13.4477 10 13 10.4477 13 11V13C13 13.5523 13.4477 14 14 14H16C16.5523 14 17 13.5523 17 13V11C17 10.4477 16.5523 10 16 10H14ZM7 17C7 16.4477 7.44772 16 8 16H10C10.5523 16 11 16.4477 11 17V19C11 19.5523 10.5523 20 10 20H8C7.44772 20 7 19.5523 7 19V17ZM14 16C13.4477 16 13 16.4477 13 17V19C13 19.5523 13.4477 20 14 20H16C16.5523 20 17 19.5523 17 19V17C17 16.4477 16.5523 16 16 16H14Z",
|
|
2617
|
+
fill: "currentColor"
|
|
2618
|
+
}));
|
|
2619
|
+
};
|
|
2620
|
+
|
|
2602
2621
|
var _excluded$9 = ["icon", "subtitle", "title", "accessories", "tooltipId", "onAssetLoadError", "roundTop"];
|
|
2603
2622
|
var ListItem = function ListItem(_ref) {
|
|
2604
2623
|
var icon = _ref.icon,
|
|
@@ -2641,9 +2660,12 @@ var ListItem = function ListItem(_ref) {
|
|
|
2641
2660
|
"hover:bg-blue-50 transition-colors ease-in-out duration-300": restProps.handleItemClick
|
|
2642
2661
|
}),
|
|
2643
2662
|
onClick: restProps.handleItemClick,
|
|
2663
|
+
"data-id": restProps.itemId,
|
|
2644
2664
|
"data-tip": restProps.itemId,
|
|
2645
2665
|
"data-for": tooltipId
|
|
2646
|
-
},
|
|
2666
|
+
}, restProps.isDraggable && /*#__PURE__*/React__default.createElement(DragIcon, {
|
|
2667
|
+
className: "text-slate-300"
|
|
2668
|
+
}), icon && typeof icon === "function" && /*#__PURE__*/React__default.createElement(icon, {
|
|
2647
2669
|
className: "w-6 h-6"
|
|
2648
2670
|
}), !loadIconError && icon && typeof icon === "string" && /*#__PURE__*/React__default.createElement("img", {
|
|
2649
2671
|
src: icon,
|
|
@@ -2668,8 +2690,60 @@ var List = function List(_ref) {
|
|
|
2668
2690
|
headerButton = _ref.headerButton,
|
|
2669
2691
|
headerTransparent = _ref.headerTransparent,
|
|
2670
2692
|
items = _ref.items,
|
|
2671
|
-
onAssetLoadError = _ref.onAssetLoadError
|
|
2693
|
+
onAssetLoadError = _ref.onAssetLoadError,
|
|
2694
|
+
onDragEnd = _ref.onDragEnd;
|
|
2695
|
+
var listRef = React.useRef(null);
|
|
2696
|
+
var dragulaRef = React.useRef(null);
|
|
2672
2697
|
var hasHeader = !!(title || headerButton);
|
|
2698
|
+
React.useEffect(function () {
|
|
2699
|
+
var _dragulaRef$current;
|
|
2700
|
+
|
|
2701
|
+
(_dragulaRef$current = dragulaRef.current) == null ? void 0 : _dragulaRef$current.destroy == null ? void 0 : _dragulaRef$current.destroy();
|
|
2702
|
+
|
|
2703
|
+
if (onDragEnd && items.length) {
|
|
2704
|
+
dragulaRef.current = setupDragging();
|
|
2705
|
+
}
|
|
2706
|
+
|
|
2707
|
+
return function () {
|
|
2708
|
+
var _dragulaRef$current2;
|
|
2709
|
+
|
|
2710
|
+
(_dragulaRef$current2 = dragulaRef.current) == null ? void 0 : _dragulaRef$current2.destroy == null ? void 0 : _dragulaRef$current2.destroy();
|
|
2711
|
+
};
|
|
2712
|
+
}, [items]);
|
|
2713
|
+
|
|
2714
|
+
var handleDragEnd = function handleDragEnd(element) {
|
|
2715
|
+
var draggedItemId = element.dataset["id"];
|
|
2716
|
+
|
|
2717
|
+
if (listRef.current && draggedItemId) {
|
|
2718
|
+
var itemIdsWithOldOrder = items.map(function (item) {
|
|
2719
|
+
return item.itemId.toString();
|
|
2720
|
+
});
|
|
2721
|
+
var itemIdsWithNewOrder = Array.from(listRef.current.children).map(function (child) {
|
|
2722
|
+
return child.dataset["id"];
|
|
2723
|
+
}).filter(function (itemId) {
|
|
2724
|
+
return !!itemId;
|
|
2725
|
+
});
|
|
2726
|
+
var oldIndexOfDraggedItemId = itemIdsWithOldOrder.indexOf(draggedItemId);
|
|
2727
|
+
var newIndexOfDraggedItemId = itemIdsWithNewOrder.indexOf(draggedItemId);
|
|
2728
|
+
|
|
2729
|
+
if (oldIndexOfDraggedItemId !== newIndexOfDraggedItemId) {
|
|
2730
|
+
onDragEnd == null ? void 0 : onDragEnd(draggedItemId, newIndexOfDraggedItemId);
|
|
2731
|
+
}
|
|
2732
|
+
}
|
|
2733
|
+
};
|
|
2734
|
+
|
|
2735
|
+
var setupDragging = function setupDragging() {
|
|
2736
|
+
if (onDragEnd) {
|
|
2737
|
+
var dragulaInstance = dragula([listRef.current], {
|
|
2738
|
+
revertOnSpill: true
|
|
2739
|
+
});
|
|
2740
|
+
dragulaInstance.on("dragend", handleDragEnd);
|
|
2741
|
+
return dragulaInstance;
|
|
2742
|
+
}
|
|
2743
|
+
|
|
2744
|
+
return null;
|
|
2745
|
+
};
|
|
2746
|
+
|
|
2673
2747
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
2674
2748
|
"data-test-id": "list-component"
|
|
2675
2749
|
}, (title || headerButton) && /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -2687,12 +2761,14 @@ var List = function List(_ref) {
|
|
|
2687
2761
|
}), !!headerButton && /*#__PURE__*/React__default.createElement("div", {
|
|
2688
2762
|
className: "space-x-3"
|
|
2689
2763
|
}, /*#__PURE__*/React__default.createElement(headerButton.buttonType, headerButton.buttonProps))), /*#__PURE__*/React__default.createElement("ul", {
|
|
2690
|
-
className: classNames("list-none")
|
|
2764
|
+
className: classNames("list-none"),
|
|
2765
|
+
ref: listRef
|
|
2691
2766
|
}, items.map(function (item) {
|
|
2692
2767
|
return /*#__PURE__*/React__default.createElement(ListItem, Object.assign({}, item, {
|
|
2693
2768
|
roundTop: !hasHeader || hasHeader && headerTransparent,
|
|
2694
2769
|
key: item.itemId,
|
|
2695
|
-
onAssetLoadError: onAssetLoadError
|
|
2770
|
+
onAssetLoadError: onAssetLoadError,
|
|
2771
|
+
isDraggable: !!onDragEnd
|
|
2696
2772
|
}));
|
|
2697
2773
|
})));
|
|
2698
2774
|
};
|
|
@@ -3944,35 +4020,32 @@ var TabbarItem = function TabbarItem(_ref) {
|
|
|
3944
4020
|
};
|
|
3945
4021
|
|
|
3946
4022
|
var Tabbar = function Tabbar(_ref) {
|
|
3947
|
-
var tabs = _ref.tabs,
|
|
4023
|
+
var _ref$tabs = _ref.tabs,
|
|
4024
|
+
tabs = _ref$tabs === void 0 ? [] : _ref$tabs,
|
|
3948
4025
|
selectedIndex = _ref.selectedIndex,
|
|
3949
4026
|
onSelect = _ref.onSelect,
|
|
3950
4027
|
_ref$className = _ref.className,
|
|
3951
4028
|
className = _ref$className === void 0 ? "" : _ref$className;
|
|
3952
4029
|
|
|
3953
|
-
var _useState = React.useState(
|
|
3954
|
-
|
|
3955
|
-
|
|
3956
|
-
|
|
3957
|
-
var _useState2 = React.useState(selectedIndex),
|
|
3958
|
-
innerSelectedIndex = _useState2[0],
|
|
3959
|
-
setInnerSelectedIndex = _useState2[1];
|
|
4030
|
+
var _useState = React.useState(selectedIndex),
|
|
4031
|
+
innerSelectedIndex = _useState[0],
|
|
4032
|
+
setInnerSelectedIndex = _useState[1];
|
|
3960
4033
|
|
|
3961
4034
|
React.useEffect(function () {
|
|
3962
|
-
|
|
3963
|
-
}, [
|
|
3964
|
-
React.useEffect(function () {
|
|
3965
|
-
setInnerSelectedIndex(innerSelectedIndex);
|
|
3966
|
-
}, [innerSelectedIndex]);
|
|
4035
|
+
setInnerSelectedIndex(selectedIndex);
|
|
4036
|
+
}, [selectedIndex]);
|
|
3967
4037
|
|
|
3968
4038
|
function handleOnTabSelect(index) {
|
|
3969
4039
|
setInnerSelectedIndex(index);
|
|
3970
|
-
onSelect == null ? void 0 : onSelect(
|
|
4040
|
+
onSelect == null ? void 0 : onSelect({
|
|
4041
|
+
index: index,
|
|
4042
|
+
selectedTab: tabs[index]
|
|
4043
|
+
});
|
|
3971
4044
|
}
|
|
3972
4045
|
|
|
3973
4046
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
3974
|
-
className: "flex flex-row w-full bg-white rounded-xl " + className
|
|
3975
|
-
},
|
|
4047
|
+
className: "flex flex-row w-full bg-white rounded-xl p-2 " + className
|
|
4048
|
+
}, tabs == null ? void 0 : tabs.map(function (tabItemProps, index) {
|
|
3976
4049
|
var _tabItemProps$dataTes;
|
|
3977
4050
|
|
|
3978
4051
|
var itemProps = _extends({
|
|
@@ -4478,24 +4551,6 @@ var DownArrowIcon = function DownArrowIcon(props) {
|
|
|
4478
4551
|
}));
|
|
4479
4552
|
};
|
|
4480
4553
|
|
|
4481
|
-
var DragIcon = function DragIcon(props) {
|
|
4482
|
-
return /*#__PURE__*/React__default.createElement("svg", {
|
|
4483
|
-
className: props.className,
|
|
4484
|
-
onClick: props.onClick,
|
|
4485
|
-
role: props.onClick ? "button" : undefined,
|
|
4486
|
-
width: "24",
|
|
4487
|
-
height: "24",
|
|
4488
|
-
viewBox: "0 0 24 24",
|
|
4489
|
-
fill: "none",
|
|
4490
|
-
xmlns: "http://www.w3.org/2000/svg"
|
|
4491
|
-
}, /*#__PURE__*/React__default.createElement("path", {
|
|
4492
|
-
fillRule: "evenodd",
|
|
4493
|
-
clipRule: "evenodd",
|
|
4494
|
-
d: "M8 4C7.44772 4 7 4.44772 7 5V7C7 7.55228 7.44772 8 8 8H10C10.5523 8 11 7.55228 11 7V5C11 4.44772 10.5523 4 10 4H8ZM14 4C13.4477 4 13 4.44772 13 5V7C13 7.55228 13.4477 8 14 8H16C16.5523 8 17 7.55228 17 7V5C17 4.44772 16.5523 4 16 4H14ZM7 11C7 10.4477 7.44772 10 8 10H10C10.5523 10 11 10.4477 11 11V13C11 13.5523 10.5523 14 10 14H8C7.44772 14 7 13.5523 7 13V11ZM14 10C13.4477 10 13 10.4477 13 11V13C13 13.5523 13.4477 14 14 14H16C16.5523 14 17 13.5523 17 13V11C17 10.4477 16.5523 10 16 10H14ZM7 17C7 16.4477 7.44772 16 8 16H10C10.5523 16 11 16.4477 11 17V19C11 19.5523 10.5523 20 10 20H8C7.44772 20 7 19.5523 7 19V17ZM14 16C13.4477 16 13 16.4477 13 17V19C13 19.5523 13.4477 20 14 20H16C16.5523 20 17 19.5523 17 19V17C17 16.4477 16.5523 16 16 16H14Z",
|
|
4495
|
-
fill: "currentColor"
|
|
4496
|
-
}));
|
|
4497
|
-
};
|
|
4498
|
-
|
|
4499
4554
|
var EmptyStateDashboardIcon = function EmptyStateDashboardIcon() {
|
|
4500
4555
|
return /*#__PURE__*/React__default.createElement("svg", {
|
|
4501
4556
|
width: "450",
|