@synerise/ds-manageable-list 1.7.11 → 1.7.13
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/CHANGELOG.md +8 -0
- package/dist/AddBlankItem/AddBlankItem.d.ts +2 -2
- package/dist/AddBlankItem/AddBlankItem.js +19 -22
- package/dist/AddBlankItem/AddBlankItem.styles.d.ts +2 -2
- package/dist/AddBlankItem/AddBlankItem.styles.js +9 -5
- package/dist/AddBlankItem/AddBlankItem.types.d.ts +1 -1
- package/dist/AddBlankItem/AddBlankItem.types.js +1 -1
- package/dist/AddItem/AddItem.d.ts +3 -3
- package/dist/AddItem/AddItem.js +14 -18
- package/dist/AddItem/AddItem.styles.d.ts +1 -1
- package/dist/AddItem/AddItem.styles.js +6 -3
- package/dist/AddItem/AddItem.types.d.ts +1 -1
- package/dist/AddItem/AddItem.types.js +1 -1
- package/dist/AddItemWithName/AddItemWithName.d.ts +2 -2
- package/dist/AddItemWithName/AddItemWithName.js +30 -43
- package/dist/AddItemWithName/AddItemWithName.styles.d.ts +2 -2
- package/dist/AddItemWithName/AddItemWithName.styles.js +9 -5
- package/dist/AddItemWithName/AddItemWithName.types.d.ts +1 -1
- package/dist/AddItemWithName/AddItemWithName.types.js +1 -1
- package/dist/Item/BlankItem/BlankItem.d.ts +2 -2
- package/dist/Item/BlankItem/BlankItem.js +43 -61
- package/dist/Item/BlankItem/BlankItem.styles.d.ts +4 -4
- package/dist/Item/BlankItem/BlankItem.styles.js +26 -21
- package/dist/Item/BlankItem/BlankItem.types.d.ts +3 -3
- package/dist/Item/BlankItem/BlankItem.types.js +1 -1
- package/dist/Item/ContentItem/ContentItem.d.ts +43 -43
- package/dist/Item/ContentItem/ContentItem.js +58 -99
- package/dist/Item/ContentItem/ContentItem.styles.d.ts +45 -45
- package/dist/Item/ContentItem/ContentItem.styles.js +76 -85
- package/dist/Item/ContentItem/ContentItem.types.d.ts +4 -4
- package/dist/Item/ContentItem/ContentItem.types.js +1 -1
- package/dist/Item/ContentItem/ContentItemHeader.d.ts +2 -2
- package/dist/Item/ContentItem/ContentItemHeader.js +88 -134
- package/dist/Item/DraggableItem.d.ts +2 -2
- package/dist/Item/DraggableItem.js +26 -27
- package/dist/Item/FilterItem/FilterItem.d.ts +43 -43
- package/dist/Item/FilterItem/FilterItem.js +74 -140
- package/dist/Item/FilterItem/FilterItem.styles.d.ts +3 -3
- package/dist/Item/FilterItem/FilterItem.styles.js +17 -27
- package/dist/Item/FilterItem/FilterItem.types.d.ts +2 -2
- package/dist/Item/FilterItem/FilterItem.types.js +1 -1
- package/dist/Item/Item.d.ts +2 -2
- package/dist/Item/Item.js +39 -90
- package/dist/Item/Item.styles.d.ts +9 -9
- package/dist/Item/Item.styles.js +50 -48
- package/dist/Item/Item.types.d.ts +1 -1
- package/dist/Item/Item.types.js +1 -1
- package/dist/Item/ItemActions/ItemActions.d.ts +2 -2
- package/dist/Item/ItemActions/ItemActions.js +41 -43
- package/dist/Item/ItemActions/ItemActions.styles.d.ts +1 -1
- package/dist/Item/ItemActions/ItemActions.styles.js +9 -7
- package/dist/Item/ItemActions/ItemActions.types.d.ts +2 -2
- package/dist/Item/ItemActions/ItemActions.types.js +1 -1
- package/dist/Item/ItemMeta/ItemMeta.d.ts +2 -2
- package/dist/Item/ItemMeta/ItemMeta.js +27 -22
- package/dist/Item/ItemMeta/ItemMeta.styles.d.ts +2 -2
- package/dist/Item/ItemMeta/ItemMeta.styles.js +9 -7
- package/dist/Item/ItemMeta/ItemMeta.types.js +1 -1
- package/dist/Item/ItemName/ItemName.d.ts +2 -2
- package/dist/Item/ItemName/ItemName.js +36 -55
- package/dist/Item/ItemName/ItemName.types.d.ts +2 -2
- package/dist/Item/ItemName/ItemName.types.js +1 -1
- package/dist/Item/ItemNameLarge/ItemNameLarge.d.ts +2 -2
- package/dist/Item/ItemNameLarge/ItemNameLarge.js +17 -13
- package/dist/Item/ItemNameLarge/ItemNameLarge.types.d.ts +1 -1
- package/dist/Item/ItemNameLarge/ItemNameLarge.types.js +1 -1
- package/dist/Item/SimpleItem/SimpleItem.d.ts +7 -7
- package/dist/Item/SimpleItem/SimpleItem.js +34 -56
- package/dist/Item/SimpleItem/SimpleItem.types.d.ts +2 -2
- package/dist/Item/SimpleItem/SimpleItem.types.js +1 -1
- package/dist/ManageableList.d.ts +4 -4
- package/dist/ManageableList.js +106 -164
- package/dist/ManageableList.styles.d.ts +2 -2
- package/dist/ManageableList.styles.js +12 -11
- package/dist/ManageableList.types.d.ts +2 -2
- package/dist/ManageableList.types.js +18 -14
- package/dist/hooks/useTexts.d.ts +1 -1
- package/dist/hooks/useTexts.js +31 -89
- package/dist/index.js +12 -5
- package/dist/modules.d.js +1 -1
- package/dist/modules.d.ts +0 -0
- package/package.json +21 -21
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import {
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { Props } from './SimpleItem.types';
|
|
3
3
|
declare const SimpleItem: (({ item, onRemove, onSelect, onUpdate, texts, additionalActions, selected, }: Props) => React.JSX.Element) & {
|
|
4
|
-
ItemContainer: import(
|
|
4
|
+
ItemContainer: import('styled-components').StyledComponent<"div", any, {
|
|
5
5
|
isSelected: boolean;
|
|
6
6
|
isDisabled: boolean;
|
|
7
7
|
}, never>;
|
|
8
|
-
ItemLabelWrapper: import(
|
|
8
|
+
ItemLabelWrapper: import('styled-components').StyledComponent<"div", any, {
|
|
9
9
|
largeSize?: boolean;
|
|
10
10
|
}, never>;
|
|
11
|
-
ItemLabelWithIcon: import(
|
|
12
|
-
ItemLabel: import(
|
|
13
|
-
DescriptionIcon: import(
|
|
11
|
+
ItemLabelWithIcon: import('styled-components').StyledComponent<"span", any, {}, never>;
|
|
12
|
+
ItemLabel: import('styled-components').StyledComponent<"span", any, {}, never>;
|
|
13
|
+
DescriptionIcon: import('styled-components').StyledComponent<React.ForwardRefExoticComponent<import('@synerise/ds-icon').BaseIconProps & Omit<React.HTMLAttributes<HTMLDivElement>, keyof import('@synerise/ds-icon').BaseIconProps> & import('@synerise/ds-utils').DataAttributes & React.RefAttributes<HTMLDivElement>>, any, {}, never>;
|
|
14
14
|
};
|
|
15
15
|
export default SimpleItem;
|
|
@@ -1,65 +1,43 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback } from "react";
|
|
3
|
+
import Icon from "@synerise/ds-icon";
|
|
4
|
+
import List from "@synerise/ds-list";
|
|
5
|
+
import { useTexts } from "../../hooks/useTexts.js";
|
|
6
|
+
import { DescriptionIcon, ItemLabel, ItemLabelWithIcon, ItemLabelWrapper, ItemContainer } from "../Item.styles.js";
|
|
7
|
+
import ItemActions from "../ItemActions/ItemActions.js";
|
|
8
|
+
import ItemName from "../ItemName/ItemName.js";
|
|
9
|
+
const SimpleItemComponent = ({
|
|
10
|
+
item,
|
|
11
|
+
onRemove,
|
|
12
|
+
onSelect,
|
|
13
|
+
onUpdate,
|
|
14
|
+
texts,
|
|
15
|
+
additionalActions,
|
|
16
|
+
selected
|
|
17
|
+
}) => {
|
|
18
|
+
const [editMode, setEditMode] = useState(false);
|
|
19
|
+
const allTexts = useTexts(texts);
|
|
20
|
+
const updateName = useCallback((updateParams) => {
|
|
21
21
|
setEditMode(false);
|
|
22
22
|
onUpdate && onUpdate(updateParams);
|
|
23
23
|
}, [onUpdate]);
|
|
24
|
-
|
|
25
|
-
!editMode &&
|
|
24
|
+
const handleSelect = useCallback(() => {
|
|
25
|
+
!editMode && onSelect?.({
|
|
26
26
|
id: item.id
|
|
27
|
-
})
|
|
27
|
+
});
|
|
28
28
|
}, [onSelect, item.id, editMode]);
|
|
29
|
-
|
|
29
|
+
const enterEditMode = useCallback(() => {
|
|
30
30
|
setEditMode(true);
|
|
31
31
|
}, []);
|
|
32
|
-
return
|
|
33
|
-
isDisabled: !!item.disabled,
|
|
34
|
-
"data-active": !!selected,
|
|
35
|
-
isSelected: !!selected
|
|
36
|
-
}, /*#__PURE__*/React.createElement(List.Item, {
|
|
37
|
-
icon: /*#__PURE__*/React.createElement(Icon, {
|
|
38
|
-
className: "ds-manageable-list-item-icon",
|
|
39
|
-
component: item.icon,
|
|
40
|
-
size: 24
|
|
41
|
-
}),
|
|
42
|
-
onSelect: handleSelect,
|
|
43
|
-
actions: /*#__PURE__*/React.createElement(ItemActions, {
|
|
44
|
-
item: item,
|
|
45
|
-
editAction: enterEditMode,
|
|
46
|
-
removeAction: onRemove,
|
|
47
|
-
editActionTooltip: allTexts.itemActionRenameTooltip,
|
|
48
|
-
duplicateActionTooltip: allTexts.itemActionDuplicateTooltip,
|
|
49
|
-
removeActionTooltip: allTexts.itemActionDeleteTooltip,
|
|
50
|
-
additionalActions: additionalActions
|
|
51
|
-
})
|
|
52
|
-
}, /*#__PURE__*/React.createElement(ItemName, {
|
|
53
|
-
item: item,
|
|
54
|
-
editMode: editMode,
|
|
55
|
-
onUpdate: updateName
|
|
56
|
-
})));
|
|
32
|
+
return /* @__PURE__ */ jsx(ItemContainer, { isDisabled: !!item.disabled, "data-active": !!selected, isSelected: !!selected, children: /* @__PURE__ */ jsx(List.Item, { icon: /* @__PURE__ */ jsx(Icon, { className: "ds-manageable-list-item-icon", component: item.icon, size: 24 }), onSelect: handleSelect, actions: /* @__PURE__ */ jsx(ItemActions, { item, editAction: enterEditMode, removeAction: onRemove, editActionTooltip: allTexts.itemActionRenameTooltip, duplicateActionTooltip: allTexts.itemActionDuplicateTooltip, removeActionTooltip: allTexts.itemActionDeleteTooltip, additionalActions }), children: /* @__PURE__ */ jsx(ItemName, { item, editMode, onUpdate: updateName }) }) });
|
|
57
33
|
};
|
|
58
|
-
|
|
59
|
-
ItemContainer
|
|
60
|
-
ItemLabelWrapper
|
|
61
|
-
ItemLabelWithIcon
|
|
62
|
-
ItemLabel
|
|
63
|
-
DescriptionIcon
|
|
34
|
+
const SimpleItem = Object.assign(SimpleItemComponent, {
|
|
35
|
+
ItemContainer,
|
|
36
|
+
ItemLabelWrapper,
|
|
37
|
+
ItemLabelWithIcon,
|
|
38
|
+
ItemLabel,
|
|
39
|
+
DescriptionIcon
|
|
64
40
|
});
|
|
65
|
-
export
|
|
41
|
+
export {
|
|
42
|
+
SimpleItem as default
|
|
43
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import { ReactText } from 'react';
|
|
2
|
+
import { AdditionalAction, ItemProps, Texts } from '../../ManageableList.types';
|
|
3
3
|
export type Props = {
|
|
4
4
|
item: ItemProps;
|
|
5
5
|
onRemove?: (removeParams: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
|
package/dist/ManageableList.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import {
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ManageableListProps } from './ManageableList.types';
|
|
3
3
|
declare const ManageableList: (<T extends object>({ className, onItemAdd, onItemSelect, onItemDuplicate, onItemRemove, onItemEdit, onChangeOrder, items, maxToShowItems, visibleItemsLimit, loading, type, addButtonDisabled, changeOrderDisabled, greyBackground, placeholder, selectedItemId, searchQuery, expanderDisabled, onExpand, expandedIds, texts, changeOrderByButtons, additionalActions, style, renderItem, renderCustomToggleButton, }: ManageableListProps<T>) => React.JSX.Element) & {
|
|
4
|
-
ManageableListContainer: import(
|
|
4
|
+
ManageableListContainer: import('styled-components').StyledComponent<"div", any, {
|
|
5
5
|
listType: string;
|
|
6
6
|
greyBackground: boolean;
|
|
7
7
|
}, never>;
|
|
8
|
-
ShowMoreButton: import(
|
|
8
|
+
ShowMoreButton: import('styled-components').StyledComponent<"div", any, {}, never>;
|
|
9
9
|
};
|
|
10
10
|
export default ManageableList;
|
package/dist/ManageableList.js
CHANGED
|
@@ -1,190 +1,132 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import List from
|
|
4
|
-
import {
|
|
5
|
-
import AddBlankItem from
|
|
6
|
-
import AddItem from
|
|
7
|
-
import AddItemWithName from
|
|
8
|
-
import { DraggableItem } from
|
|
9
|
-
import Item from
|
|
10
|
-
import
|
|
11
|
-
import { ListType } from
|
|
12
|
-
import { useTexts } from
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
renderCustomToggleButton = _ref.renderCustomToggleButton;
|
|
49
|
-
var _useState = useState(false),
|
|
50
|
-
allItemsVisible = _useState[0],
|
|
51
|
-
setAllItemsVisible = _useState[1];
|
|
52
|
-
var _useState2 = useState(),
|
|
53
|
-
draggedItem = _useState2[0],
|
|
54
|
-
setDraggedItem = _useState2[1];
|
|
55
|
-
var allTexts = useTexts(texts);
|
|
56
|
-
var visibleLimit = visibleItemsLimit || maxToShowItems;
|
|
57
|
-
var getExpandedIds = useCallback(function () {
|
|
58
|
-
return expandedIds !== undefined ? expandedIds : items.filter(function (item) {
|
|
59
|
-
return item.expanded;
|
|
60
|
-
}).map(function (item) {
|
|
61
|
-
return item.id;
|
|
62
|
-
});
|
|
1
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback, useEffect, useMemo } from "react";
|
|
3
|
+
import List from "@synerise/ds-list";
|
|
4
|
+
import { SortableContainer, DragOverlay } from "@synerise/ds-sortable";
|
|
5
|
+
import AddBlankItem from "./AddBlankItem/AddBlankItem.js";
|
|
6
|
+
import AddItem from "./AddItem/AddItem.js";
|
|
7
|
+
import AddItemWithName from "./AddItemWithName/AddItemWithName.js";
|
|
8
|
+
import { DraggableItem } from "./Item/DraggableItem.js";
|
|
9
|
+
import Item from "./Item/Item.js";
|
|
10
|
+
import { ShowMoreButton, ManageableListContainer } from "./ManageableList.styles.js";
|
|
11
|
+
import { ListType } from "./ManageableList.types.js";
|
|
12
|
+
import { useTexts } from "./hooks/useTexts.js";
|
|
13
|
+
const ManageableListComponent = ({
|
|
14
|
+
className,
|
|
15
|
+
onItemAdd,
|
|
16
|
+
onItemSelect,
|
|
17
|
+
onItemDuplicate,
|
|
18
|
+
onItemRemove,
|
|
19
|
+
onItemEdit,
|
|
20
|
+
onChangeOrder,
|
|
21
|
+
items,
|
|
22
|
+
maxToShowItems,
|
|
23
|
+
visibleItemsLimit,
|
|
24
|
+
loading,
|
|
25
|
+
type = ListType.DEFAULT,
|
|
26
|
+
addButtonDisabled = false,
|
|
27
|
+
changeOrderDisabled = false,
|
|
28
|
+
greyBackground = false,
|
|
29
|
+
placeholder,
|
|
30
|
+
selectedItemId,
|
|
31
|
+
searchQuery,
|
|
32
|
+
expanderDisabled,
|
|
33
|
+
onExpand,
|
|
34
|
+
expandedIds,
|
|
35
|
+
texts,
|
|
36
|
+
changeOrderByButtons = false,
|
|
37
|
+
additionalActions,
|
|
38
|
+
style,
|
|
39
|
+
renderItem = () => /* @__PURE__ */ jsx(Fragment, {}),
|
|
40
|
+
renderCustomToggleButton
|
|
41
|
+
}) => {
|
|
42
|
+
const [allItemsVisible, setAllItemsVisible] = useState(false);
|
|
43
|
+
const [draggedItem, setDraggedItem] = useState();
|
|
44
|
+
const allTexts = useTexts(texts);
|
|
45
|
+
const visibleLimit = visibleItemsLimit || maxToShowItems;
|
|
46
|
+
const getExpandedIds = useCallback(() => {
|
|
47
|
+
return expandedIds !== void 0 ? expandedIds : items.filter((item) => item.expanded).map((item) => item.id);
|
|
63
48
|
}, [expandedIds, items]);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
setAllExpandedIds = _useState3[1];
|
|
67
|
-
useEffect(function () {
|
|
49
|
+
const [allExpandedIds, setAllExpandedIds] = useState(getExpandedIds());
|
|
50
|
+
useEffect(() => {
|
|
68
51
|
setAllExpandedIds(getExpandedIds());
|
|
69
52
|
}, [expandedIds, items, getExpandedIds]);
|
|
70
|
-
|
|
53
|
+
const getItemsOverLimit = useMemo(() => {
|
|
71
54
|
if (visibleLimit) {
|
|
72
55
|
return items.length - visibleLimit;
|
|
73
56
|
}
|
|
74
57
|
return 0;
|
|
75
58
|
}, [items, visibleLimit]);
|
|
76
|
-
|
|
59
|
+
const visibleItems = useMemo(() => {
|
|
77
60
|
return allItemsVisible ? items : items.slice(0, visibleLimit);
|
|
78
61
|
}, [allItemsVisible, visibleLimit, items]);
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
62
|
+
const buttonLabel = useMemo(() => allItemsVisible ? allTexts.showLessLabel : allTexts.showMoreLabel, [allItemsVisible, allTexts.showLessLabel, allTexts.showMoreLabel]);
|
|
63
|
+
const buttonLabelDiff = useMemo(() => allItemsVisible ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
64
|
+
"- ",
|
|
65
|
+
getItemsOverLimit,
|
|
66
|
+
" ",
|
|
67
|
+
allTexts.less,
|
|
68
|
+
" "
|
|
69
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
70
|
+
"+ ",
|
|
71
|
+
getItemsOverLimit,
|
|
72
|
+
" ",
|
|
73
|
+
allTexts.more,
|
|
74
|
+
" "
|
|
75
|
+
] }), [allItemsVisible, getItemsOverLimit, allTexts.less, allTexts.more]);
|
|
76
|
+
const toggleAllItems = useCallback(() => {
|
|
86
77
|
setAllItemsVisible(!allItemsVisible);
|
|
87
78
|
}, [allItemsVisible]);
|
|
88
|
-
|
|
79
|
+
const createItem = useCallback(() => {
|
|
89
80
|
onItemAdd && onItemAdd();
|
|
90
81
|
}, [onItemAdd]);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return i.id !== item.id;
|
|
94
|
-
}));
|
|
82
|
+
const onMoveTop = useCallback((item) => {
|
|
83
|
+
const newOrder = [item, ...items.filter((i) => i.id !== item.id)];
|
|
95
84
|
onChangeOrder && onChangeOrder(newOrder);
|
|
96
85
|
}, [items, onChangeOrder]);
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
return i.id !== item.id;
|
|
100
|
-
}), [item]);
|
|
86
|
+
const onMoveBottom = useCallback((item) => {
|
|
87
|
+
const newOrder = [...items.filter((i) => i.id !== item.id), item];
|
|
101
88
|
onChangeOrder && onChangeOrder(newOrder);
|
|
102
89
|
}, [items, onChangeOrder]);
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
return
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
isDragPlaceholder: (draggedItem == null ? void 0 : draggedItem.id) === item.id && index > -1,
|
|
109
|
-
isFirst: index === 0,
|
|
110
|
-
isLast: index + 1 === items.length,
|
|
111
|
-
listType: type,
|
|
112
|
-
onSelect: onItemSelect,
|
|
113
|
-
onUpdate: onItemEdit,
|
|
114
|
-
onRemove: onItemRemove,
|
|
115
|
-
onDuplicate: onItemDuplicate,
|
|
116
|
-
onExpand: onExpand,
|
|
117
|
-
onMoveTop: changeOrderByButtons ? onMoveTop : undefined,
|
|
118
|
-
onMoveBottom: changeOrderByButtons ? onMoveBottom : undefined,
|
|
119
|
-
item: item,
|
|
120
|
-
draggable: draggable,
|
|
121
|
-
changeOrderDisabled: changeOrderDisabled,
|
|
122
|
-
greyBackground: greyBackground,
|
|
123
|
-
selected: Boolean(item.id === selectedItemId),
|
|
124
|
-
texts: allTexts,
|
|
125
|
-
searchQuery: searchQuery,
|
|
126
|
-
hideExpander: expanderDisabled,
|
|
127
|
-
expanded: allExpandedIds && allExpandedIds.includes(item.id),
|
|
128
|
-
additionalActions: additionalActions,
|
|
129
|
-
renderItem: renderItem
|
|
130
|
-
});
|
|
131
|
-
}, [draggedItem == null ? void 0 : draggedItem.id, items.length, type, onItemSelect, onItemEdit, onItemRemove, onItemDuplicate, onExpand, changeOrderByButtons, onMoveTop, onMoveBottom, changeOrderDisabled, greyBackground, selectedItemId, allTexts, searchQuery, expanderDisabled, allExpandedIds, additionalActions, renderItem]);
|
|
132
|
-
var toggleMoreItemsButton = visibleLimit && items.length > visibleLimit ? renderCustomToggleButton && renderCustomToggleButton({
|
|
90
|
+
const getItem = useCallback((item, index, draggable) => {
|
|
91
|
+
const Component = draggable ? DraggableItem : Item;
|
|
92
|
+
return /* @__PURE__ */ jsx(Component, { isDragOverlay: index === -1, isDragPlaceholder: draggedItem?.id === item.id && index > -1, isFirst: index === 0, isLast: index + 1 === items.length, listType: type, onSelect: onItemSelect, onUpdate: onItemEdit, onRemove: onItemRemove, onDuplicate: onItemDuplicate, onExpand, onMoveTop: changeOrderByButtons ? onMoveTop : void 0, onMoveBottom: changeOrderByButtons ? onMoveBottom : void 0, item, draggable, changeOrderDisabled, greyBackground, selected: Boolean(item.id === selectedItemId), texts: allTexts, searchQuery, hideExpander: expanderDisabled, expanded: allExpandedIds && allExpandedIds.includes(item.id), additionalActions, renderItem }, item.id);
|
|
93
|
+
}, [draggedItem?.id, items.length, type, onItemSelect, onItemEdit, onItemRemove, onItemDuplicate, onExpand, changeOrderByButtons, onMoveTop, onMoveBottom, changeOrderDisabled, greyBackground, selectedItemId, allTexts, searchQuery, expanderDisabled, allExpandedIds, additionalActions, renderItem]);
|
|
94
|
+
const toggleMoreItemsButton = visibleLimit && items.length > visibleLimit ? renderCustomToggleButton && renderCustomToggleButton({
|
|
133
95
|
onClick: toggleAllItems,
|
|
134
|
-
allItemsVisible
|
|
96
|
+
allItemsVisible,
|
|
135
97
|
total: items.length,
|
|
136
98
|
limit: visibleLimit
|
|
137
|
-
}) ||
|
|
138
|
-
|
|
139
|
-
"
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
99
|
+
}) || /* @__PURE__ */ jsxs(ShowMoreButton, { onClick: toggleAllItems, "data-testid": "show-more-button", children: [
|
|
100
|
+
/* @__PURE__ */ jsx("span", { children: buttonLabelDiff }),
|
|
101
|
+
/* @__PURE__ */ jsx("strong", { children: buttonLabel })
|
|
102
|
+
] }) : null;
|
|
103
|
+
const handleDragStart = useCallback(({
|
|
104
|
+
active
|
|
105
|
+
}) => {
|
|
106
|
+
const stepIndex = visibleItems.findIndex((item) => item.id === active.id);
|
|
107
|
+
setDraggedItem({
|
|
108
|
+
...visibleItems[stepIndex],
|
|
147
109
|
index: stepIndex
|
|
148
|
-
})
|
|
110
|
+
});
|
|
149
111
|
}, [visibleItems]);
|
|
150
|
-
|
|
151
|
-
setDraggedItem(
|
|
112
|
+
const handleDragEnd = useCallback(() => {
|
|
113
|
+
setDraggedItem(void 0);
|
|
152
114
|
}, []);
|
|
153
|
-
return
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
onItemAdd: onItemAdd,
|
|
161
|
-
disabled: addButtonDisabled
|
|
162
|
-
|
|
163
|
-
}), onChangeOrder && !changeOrderDisabled ? /*#__PURE__*/React.createElement(SortableContainer, {
|
|
164
|
-
axis: "y",
|
|
165
|
-
onDragStart: handleDragStart,
|
|
166
|
-
onDragEnd: handleDragEnd,
|
|
167
|
-
onDragCancel: handleDragEnd,
|
|
168
|
-
onOrderChange: onChangeOrder,
|
|
169
|
-
items: visibleItems
|
|
170
|
-
}, visibleItems.map(function (item, index) {
|
|
171
|
-
return getItem(item, index, true);
|
|
172
|
-
}), /*#__PURE__*/React.createElement(DragOverlay, null, draggedItem && /*#__PURE__*/React.createElement(React.Fragment, null, getItem(draggedItem, -1, false)))) : /*#__PURE__*/React.createElement(List, {
|
|
173
|
-
loading: loading,
|
|
174
|
-
dataSource: visibleItems,
|
|
175
|
-
renderItem: getItem
|
|
176
|
-
}), toggleMoreItemsButton, (type === ListType.CONTENT || type === ListType.CONTENT_LARGE) && Boolean(onItemAdd) && /*#__PURE__*/React.createElement(AddItem, {
|
|
177
|
-
addItemLabel: allTexts.addItemLabel,
|
|
178
|
-
onItemAdd: createItem,
|
|
179
|
-
disabled: addButtonDisabled
|
|
180
|
-
}), type === ListType.BLANK && Boolean(onItemAdd) && /*#__PURE__*/React.createElement(AddBlankItem, {
|
|
181
|
-
addItemLabel: allTexts.addItemLabel,
|
|
182
|
-
onItemAdd: createItem,
|
|
183
|
-
disabled: addButtonDisabled
|
|
184
|
-
}));
|
|
115
|
+
return /* @__PURE__ */ jsxs(ManageableListContainer, { className: `ds-manageable-list ${className || ""}`, listType: type, greyBackground, style, children: [
|
|
116
|
+
type === ListType.DEFAULT && Boolean(onItemAdd) && /* @__PURE__ */ jsx(AddItemWithName, { addItemLabel: allTexts.addItemLabel, onItemAdd, disabled: addButtonDisabled, placeholder }),
|
|
117
|
+
onChangeOrder && !changeOrderDisabled ? /* @__PURE__ */ jsxs(SortableContainer, { axis: "y", onDragStart: handleDragStart, onDragEnd: handleDragEnd, onDragCancel: handleDragEnd, onOrderChange: onChangeOrder, items: visibleItems, children: [
|
|
118
|
+
visibleItems.map((item, index) => getItem(item, index, true)),
|
|
119
|
+
/* @__PURE__ */ jsx(DragOverlay, { children: draggedItem && /* @__PURE__ */ jsx(Fragment, { children: getItem(draggedItem, -1, false) }) })
|
|
120
|
+
] }) : /* @__PURE__ */ jsx(List, { loading, dataSource: visibleItems, renderItem: getItem }),
|
|
121
|
+
toggleMoreItemsButton,
|
|
122
|
+
(type === ListType.CONTENT || type === ListType.CONTENT_LARGE) && Boolean(onItemAdd) && /* @__PURE__ */ jsx(AddItem, { addItemLabel: allTexts.addItemLabel, onItemAdd: createItem, disabled: addButtonDisabled }),
|
|
123
|
+
type === ListType.BLANK && Boolean(onItemAdd) && /* @__PURE__ */ jsx(AddBlankItem, { addItemLabel: allTexts.addItemLabel, onItemAdd: createItem, disabled: addButtonDisabled })
|
|
124
|
+
] });
|
|
185
125
|
};
|
|
186
|
-
|
|
187
|
-
ManageableListContainer
|
|
188
|
-
ShowMoreButton
|
|
126
|
+
const ManageableList = Object.assign(ManageableListComponent, {
|
|
127
|
+
ManageableListContainer,
|
|
128
|
+
ShowMoreButton
|
|
189
129
|
});
|
|
190
|
-
export
|
|
130
|
+
export {
|
|
131
|
+
ManageableList as default
|
|
132
|
+
};
|
|
@@ -2,6 +2,6 @@ type ManageableListProps = {
|
|
|
2
2
|
listType: string;
|
|
3
3
|
greyBackground: boolean;
|
|
4
4
|
};
|
|
5
|
-
export declare const ManageableListContainer: import(
|
|
6
|
-
export declare const ShowMoreButton: import(
|
|
5
|
+
export declare const ManageableListContainer: import('styled-components').StyledComponent<"div", any, ManageableListProps, never>;
|
|
6
|
+
export declare const ShowMoreButton: import('styled-components').StyledComponent<"div", any, {}, never>;
|
|
7
7
|
export {};
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import styled from
|
|
2
|
-
import { ListType } from
|
|
3
|
-
|
|
1
|
+
import styled from "styled-components";
|
|
2
|
+
import { ListType } from "./ManageableList.types.js";
|
|
3
|
+
const ManageableListContainer = /* @__PURE__ */ styled.div.withConfig({
|
|
4
4
|
displayName: "ManageableListstyles__ManageableListContainer",
|
|
5
5
|
componentId: "sc-1pshmn-0"
|
|
6
|
-
})(["display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:", ";& > div{width:100%;padding:0;}.ant-list{width:100%;padding:0;}.ant-spin-nested-loading{width:100%;}"],
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export var ShowMoreButton = styled.div.withConfig({
|
|
6
|
+
})(["display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:", ";& > div{width:100%;padding:0;}.ant-list{width:100%;padding:0;}.ant-spin-nested-loading{width:100%;}"], ({
|
|
7
|
+
listType
|
|
8
|
+
}) => listType === ListType.CONTENT ? "24px" : "0");
|
|
9
|
+
const ShowMoreButton = /* @__PURE__ */ styled.div.withConfig({
|
|
11
10
|
displayName: "ManageableListstyles__ShowMoreButton",
|
|
12
11
|
componentId: "sc-1pshmn-1"
|
|
13
|
-
})(["background:transparent;outline:0;cursor:pointer;&&{padding:16px 8px;margin:0;}&:hover{color:", ";}strong{font-weight:500;}"],
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
})(["background:transparent;outline:0;cursor:pointer;&&{padding:16px 8px;margin:0;}&:hover{color:", ";}strong{font-weight:500;}"], (props) => props.theme.palette["blue-600"]);
|
|
13
|
+
export {
|
|
14
|
+
ManageableListContainer,
|
|
15
|
+
ShowMoreButton
|
|
16
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { CSSProperties, HTMLAttributes, ReactElement, ReactNode, ReactText } from 'react';
|
|
2
|
+
import { ExactlyOne } from '@synerise/ds-utils';
|
|
3
3
|
export declare enum ExpansionBehaviour {
|
|
4
4
|
DEFAULT = "default",
|
|
5
5
|
ACCORDION = "accordion",
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
return
|
|
6
|
-
}({});
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return
|
|
14
|
-
}({});
|
|
1
|
+
var ExpansionBehaviour = /* @__PURE__ */ ((ExpansionBehaviour2) => {
|
|
2
|
+
ExpansionBehaviour2["DEFAULT"] = "default";
|
|
3
|
+
ExpansionBehaviour2["ACCORDION"] = "accordion";
|
|
4
|
+
ExpansionBehaviour2["CUSTOM"] = "custom";
|
|
5
|
+
return ExpansionBehaviour2;
|
|
6
|
+
})(ExpansionBehaviour || {});
|
|
7
|
+
var ListType = /* @__PURE__ */ ((ListType2) => {
|
|
8
|
+
ListType2["DEFAULT"] = "default";
|
|
9
|
+
ListType2["BLANK"] = "blank";
|
|
10
|
+
ListType2["CONTENT"] = "content";
|
|
11
|
+
ListType2["CONTENT_LARGE"] = "content-large";
|
|
12
|
+
ListType2["FILTER"] = "filter";
|
|
13
|
+
return ListType2;
|
|
14
|
+
})(ListType || {});
|
|
15
|
+
export {
|
|
16
|
+
ExpansionBehaviour,
|
|
17
|
+
ListType
|
|
18
|
+
};
|
package/dist/hooks/useTexts.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Texts } from '../ManageableList.types';
|
|
2
2
|
export declare const useTexts: (defaultTexts?: Partial<Texts>) => Texts;
|