@hh.ru/magritte-ui-tree-selector 1.6.0 → 1.6.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/Action.d.ts +1 -1
- package/Item.d.ts +3 -3
- package/Item.js +1 -1
- package/{ItemContent-36f7db0a.js → ItemContent-DTW_UZ-z.js} +2 -2
- package/{ItemContent-36f7db0a.js.map → ItemContent-DTW_UZ-z.js.map} +1 -1
- package/ItemContent.d.ts +2 -2
- package/ItemContent.js +1 -1
- package/ItemsList.d.ts +3 -3
- package/ItemsList.js +1 -1
- package/MobileItem.d.ts +2 -2
- package/MobileItemsList.d.ts +2 -2
- package/MobileParentItem.d.ts +3 -3
- package/TreeSelector.d.ts +3 -3
- package/TreeSelector.js +1 -1
- package/TreeSelectorDummy.d.ts +3 -3
- package/TreeSelectorDummy.js +1 -1
- package/TreeSelectorItemBase.d.ts +2 -2
- package/TreeSelectorItemBase.js.map +1 -1
- package/collection/treeCollection.d.ts +1 -1
- package/collection/treeCollection.js.map +1 -1
- package/collection/treeCollectionHelper.d.ts +2 -2
- package/collection/types.d.ts +1 -1
- package/index.css +45 -45
- package/index.d.ts +4 -4
- package/index.js +1 -1
- package/package.json +19 -18
- package/strategy/createSingleValueToggler.d.ts +1 -1
- package/strategy/createTreeCollectionToggler.d.ts +3 -3
- package/strategy/dummyToggle.d.ts +1 -1
- package/strategy/immutableSelectionStrategy.d.ts +3 -3
- package/strategy/selectionStrategy.d.ts +3 -3
- package/strategy/types.d.ts +1 -1
- package/types.d.ts +2 -2
- package/useAnimationTimeout.js +1 -1
- package/useDisabled.d.ts +2 -2
- package/useIndeterminate.d.ts +2 -2
- package/useSelected.d.ts +3 -3
package/Action.d.ts
CHANGED
package/Item.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PropsWithChildren, ReactElement } from 'react';
|
|
2
|
-
import TreeCollection from '
|
|
3
|
-
import { AdditionalDefault, IdCollectionPredicate, TreeModel } from '
|
|
4
|
-
import { RenderItem } from '
|
|
2
|
+
import TreeCollection from '@hh.ru/magritte-ui-tree-selector/collection/treeCollection';
|
|
3
|
+
import { AdditionalDefault, IdCollectionPredicate, TreeModel } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
4
|
+
import { RenderItem } from '@hh.ru/magritte-ui-tree-selector/types';
|
|
5
5
|
interface ItemProps<A extends AdditionalDefault> extends PropsWithChildren {
|
|
6
6
|
collection: TreeCollection<A>;
|
|
7
7
|
parentId?: string;
|
package/Item.js
CHANGED
|
@@ -3,7 +3,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
3
3
|
import { memo, useMemo, useRef, Children } from 'react';
|
|
4
4
|
import { TransitionGroup, CSSTransition } from 'react-transition-group';
|
|
5
5
|
import classnames from 'classnames';
|
|
6
|
-
import { s as styles, I as ItemContent } from './ItemContent-
|
|
6
|
+
import { s as styles, I as ItemContent } from './ItemContent-DTW_UZ-z.js';
|
|
7
7
|
import '@hh.ru/magritte-ui-icon/icon';
|
|
8
8
|
import './Action.js';
|
|
9
9
|
import '@hh.ru/magritte-ui-checkbox-radio';
|
|
@@ -7,7 +7,7 @@ import { Action } from './Action.js';
|
|
|
7
7
|
import { TreeSelectorItemBase } from './TreeSelectorItemBase.js';
|
|
8
8
|
import { Text } from '@hh.ru/magritte-ui-typography';
|
|
9
9
|
|
|
10
|
-
var styles = {"item-animation-timeout":"magritte-item-animation-timeout___pbOyZ_1-6-
|
|
10
|
+
var styles = {"item-animation-timeout":"magritte-item-animation-timeout___pbOyZ_1-6-2","itemAnimationTimeout":"magritte-item-animation-timeout___pbOyZ_1-6-2","wrapper":"magritte-wrapper___GHKV6_1-6-2","letter":"magritte-letter___yZOCU_1-6-2","icon":"magritte-icon___kO3Fj_1-6-2","space":"magritte-space___xTO79_1-6-2","iconActive":"magritte-iconActive___4yrG5_1-6-2","iconUp":"magritte-iconUp___mpXV6_1-6-2","content":"magritte-content___ZRc6R_1-6-2","with-shift":"magritte-with-shift___ZErxZ_1-6-2","withShift":"magritte-with-shift___ZErxZ_1-6-2","with-indent":"magritte-with-indent___MH9Vy_1-6-2","withIndent":"magritte-with-indent___MH9Vy_1-6-2","item":"magritte-item___2LtOL_1-6-2","children":"magritte-children___kq-eq_1-6-2","with-two-boxes":"magritte-with-two-boxes___LWOy2_1-6-2","withTwoBoxes":"magritte-with-two-boxes___LWOy2_1-6-2","with-three-boxes":"magritte-with-three-boxes___cyVao_1-6-2","withThreeBoxes":"magritte-with-three-boxes___cyVao_1-6-2"};
|
|
11
11
|
|
|
12
12
|
const ItemContentComponent = ({ item, hasAction, hasChildren, letter, isExpanded, isDisabled, onExpansion, hasLetterOnLevel, isSelected, onChange, isIndeterminate, singleChoice, hasDot, maxControlsOnLevel, isSearch, renderItemForDesktop = TreeSelectorItemBase, }) => {
|
|
13
13
|
const handleExpandableClick = useCallback(() => onExpansion && onExpansion(item.id), [item.id, onExpansion]);
|
|
@@ -21,4 +21,4 @@ const ItemContentComponent = ({ item, hasAction, hasChildren, letter, isExpanded
|
|
|
21
21
|
const ItemContent = memo(ItemContentComponent);
|
|
22
22
|
|
|
23
23
|
export { ItemContent as I, styles as s };
|
|
24
|
-
//# sourceMappingURL=ItemContent-
|
|
24
|
+
//# sourceMappingURL=ItemContent-DTW_UZ-z.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemContent-
|
|
1
|
+
{"version":3,"file":"ItemContent-DTW_UZ-z.js","sources":["../src/ItemContent.tsx"],"sourcesContent":["import { ReactElement, useCallback, memo } from 'react';\nimport classnames from 'classnames';\n\nimport { ChevronUpOutlinedSize24, DotFilledSize24 } from '@hh.ru/magritte-ui-icon/icon';\nimport { Action } from '@hh.ru/magritte-ui-tree-selector/Action';\nimport { TreeSelectorItemBase } from '@hh.ru/magritte-ui-tree-selector/TreeSelectorItemBase';\nimport { AdditionalDefault, TreeModel } from '@hh.ru/magritte-ui-tree-selector/collection/types';\nimport { RenderItem } from '@hh.ru/magritte-ui-tree-selector/types';\nimport { Text } from '@hh.ru/magritte-ui-typography';\n\nimport styles from './tree-selector-item.less';\n\ninterface ItemContent<A extends AdditionalDefault> {\n item: TreeModel<A>;\n hasChildren: boolean;\n hasAction: boolean;\n letter?: string;\n onExpansion: (id: string) => void;\n isExpanded: boolean;\n isSelected: boolean;\n isDisabled: boolean;\n onChange: (id: string, isSelected: boolean) => void;\n isIndeterminate: boolean;\n singleChoice?: boolean;\n hasLetterOnLevel: boolean;\n hasDot: boolean;\n maxControlsOnLevel: number;\n renderItemForDesktop?: RenderItem;\n isSearch: boolean;\n}\n\nconst ItemContentComponent = <A extends AdditionalDefault>({\n item,\n hasAction,\n hasChildren,\n letter,\n isExpanded,\n isDisabled,\n onExpansion,\n hasLetterOnLevel,\n isSelected,\n onChange,\n isIndeterminate,\n singleChoice,\n hasDot,\n maxControlsOnLevel,\n isSearch,\n renderItemForDesktop = TreeSelectorItemBase,\n}: ItemContent<A>): ReactElement => {\n const handleExpandableClick = useCallback(() => onExpansion && onExpansion(item.id), [item.id, onExpansion]);\n const currentActionCount = +hasDot + +hasAction + +hasChildren;\n const neededSpacesCount = maxControlsOnLevel - currentActionCount;\n\n const input = hasAction ? (\n <Action\n selected={isSelected}\n onChange={onChange}\n id={item.id}\n indeterminate={isIndeterminate}\n singleChoice={singleChoice}\n />\n ) : undefined;\n\n return (\n <div className={styles.wrapper}>\n {(letter || hasLetterOnLevel) && (\n <div className={styles.letter}>\n {letter && (\n <Text typography=\"subtitle-1-semibold\" style=\"secondary\" Element=\"span\">\n {letter}\n </Text>\n )}\n </div>\n )}\n {hasDot && (\n <div className={styles.icon}>\n <DotFilledSize24 initial=\"tertiary\" />\n </div>\n )}\n\n {[...Array(neededSpacesCount).keys()].map((_, i) => (\n <div key={i} className={styles.space} />\n ))}\n\n {hasChildren && (\n <div\n className={classnames(styles.icon, styles.iconActive, {\n [styles.iconUp]: isExpanded,\n })}\n onClick={handleExpandableClick}\n >\n <ChevronUpOutlinedSize24 initial=\"tertiary\" />\n </div>\n )}\n {renderItemForDesktop({ disabled: isDisabled, input, item, isSearch, isParent: hasChildren })}\n </div>\n );\n};\n\nexport const ItemContent = memo(ItemContentComponent);\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;AA+BA,MAAM,oBAAoB,GAAG,CAA8B,EACvD,IAAI,EACJ,SAAS,EACT,WAAW,EACX,MAAM,EACN,UAAU,EACV,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,MAAM,EACN,kBAAkB,EAClB,QAAQ,EACR,oBAAoB,GAAG,oBAAoB,GAC9B,KAAkB;IAC/B,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;IAC7G,MAAM,kBAAkB,GAAG,CAAC,MAAM,GAAG,CAAC,SAAS,GAAG,CAAC,WAAW,CAAC;AAC/D,IAAA,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAElE,IAAA,MAAM,KAAK,GAAG,SAAS,IACnBA,GAAA,CAAC,MAAM,EAAA,EACH,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,IAAI,CAAC,EAAE,EACX,aAAa,EAAE,eAAe,EAC9B,YAAY,EAAE,YAAY,EAC5B,CAAA,IACF,SAAS,CAAC;IAEd,QACIC,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,OAAO,EAAA,QAAA,EAAA,CACzB,CAAC,MAAM,IAAI,gBAAgB,MACxBD,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,MAAM,EACxB,QAAA,EAAA,MAAM,KACHA,GAAC,CAAA,IAAI,IAAC,UAAU,EAAC,qBAAqB,EAAC,KAAK,EAAC,WAAW,EAAC,OAAO,EAAC,MAAM,EAAA,QAAA,EAClE,MAAM,EAAA,CACJ,CACV,EACC,CAAA,CACT,EACA,MAAM,KACHA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,IAAI,EACvB,QAAA,EAAAA,GAAA,CAAC,eAAe,EAAC,EAAA,OAAO,EAAC,UAAU,EAAG,CAAA,EAAA,CACpC,CACT,EAEA,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAC3CA,GAAa,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,KAAK,EAA1B,EAAA,CAAC,CAA6B,CAC3C,CAAC,EAED,WAAW,KACRA,GACI,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE;AAClD,oBAAA,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU;AAC9B,iBAAA,CAAC,EACF,OAAO,EAAE,qBAAqB,YAE9BA,GAAC,CAAA,uBAAuB,EAAC,EAAA,OAAO,EAAC,UAAU,EAAA,CAAG,EAC5C,CAAA,CACT,EACA,oBAAoB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAA,EAAA,CAC3F,EACR;AACN,CAAC,CAAC;MAEW,WAAW,GAAG,IAAI,CAAC,oBAAoB;;;;"}
|
package/ItemContent.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReactElement } from 'react';
|
|
2
|
-
import { AdditionalDefault, TreeModel } from '
|
|
3
|
-
import { RenderItem } from '
|
|
2
|
+
import { AdditionalDefault, TreeModel } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
3
|
+
import { RenderItem } from '@hh.ru/magritte-ui-tree-selector/types';
|
|
4
4
|
interface ItemContent<A extends AdditionalDefault> {
|
|
5
5
|
item: TreeModel<A>;
|
|
6
6
|
hasChildren: boolean;
|
package/ItemContent.js
CHANGED
|
@@ -6,7 +6,7 @@ import '@hh.ru/magritte-ui-icon/icon';
|
|
|
6
6
|
import './Action.js';
|
|
7
7
|
import './TreeSelectorItemBase.js';
|
|
8
8
|
import '@hh.ru/magritte-ui-typography';
|
|
9
|
-
export { I as ItemContent } from './ItemContent-
|
|
9
|
+
export { I as ItemContent } from './ItemContent-DTW_UZ-z.js';
|
|
10
10
|
import '@hh.ru/magritte-ui-checkbox-radio';
|
|
11
11
|
import '@hh.ru/magritte-ui-cell';
|
|
12
12
|
//# sourceMappingURL=ItemContent.js.map
|
package/ItemsList.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ReactElement } from 'react';
|
|
2
|
-
import TreeCollection from '
|
|
3
|
-
import { AdditionalDefault, IdCollectionPredicate, TreeModel } from '
|
|
4
|
-
import { RenderItem } from '
|
|
2
|
+
import TreeCollection from '@hh.ru/magritte-ui-tree-selector/collection/treeCollection';
|
|
3
|
+
import { AdditionalDefault, IdCollectionPredicate, TreeModel } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
4
|
+
import { RenderItem } from '@hh.ru/magritte-ui-tree-selector/types';
|
|
5
5
|
interface ItemsListProps<A extends AdditionalDefault> {
|
|
6
6
|
items: TreeModel<A>[];
|
|
7
7
|
collection: TreeCollection<A>;
|
package/ItemsList.js
CHANGED
|
@@ -4,7 +4,7 @@ import { Item } from './Item.js';
|
|
|
4
4
|
import 'react';
|
|
5
5
|
import 'react-transition-group';
|
|
6
6
|
import 'classnames';
|
|
7
|
-
import './ItemContent-
|
|
7
|
+
import './ItemContent-DTW_UZ-z.js';
|
|
8
8
|
import '@hh.ru/magritte-ui-icon/icon';
|
|
9
9
|
import './Action.js';
|
|
10
10
|
import '@hh.ru/magritte-ui-checkbox-radio';
|
package/MobileItem.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReactElement } from 'react';
|
|
2
|
-
import { AdditionalDefault, TreeModel } from '
|
|
3
|
-
import { RenderItem } from '
|
|
2
|
+
import { AdditionalDefault, TreeModel } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
3
|
+
import { RenderItem } from '@hh.ru/magritte-ui-tree-selector/types';
|
|
4
4
|
interface MobileItemProps<A extends AdditionalDefault> {
|
|
5
5
|
item: TreeModel<A>;
|
|
6
6
|
singleChoice?: boolean;
|
package/MobileItemsList.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { AdditionalDefault, TreeModel } from '
|
|
3
|
-
import { ListControls, TreeSelectorDummyProps } from '
|
|
2
|
+
import { AdditionalDefault, TreeModel } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
3
|
+
import { ListControls, TreeSelectorDummyProps } from '@hh.ru/magritte-ui-tree-selector/types';
|
|
4
4
|
export declare const MobileItemsList: import("react").ForwardRefExoticComponent<{
|
|
5
5
|
selected: string[];
|
|
6
6
|
disabled: string[];
|
package/MobileParentItem.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ReactElement } from 'react';
|
|
2
|
-
import TreeCollection from '
|
|
3
|
-
import { AdditionalDefault, TreeModel } from '
|
|
4
|
-
import { RenderItem } from '
|
|
2
|
+
import TreeCollection from '@hh.ru/magritte-ui-tree-selector/collection/treeCollection';
|
|
3
|
+
import { AdditionalDefault, TreeModel } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
4
|
+
import { RenderItem } from '@hh.ru/magritte-ui-tree-selector/types';
|
|
5
5
|
interface MobileParentItemProps<A extends AdditionalDefault> {
|
|
6
6
|
collection: TreeCollection<A>;
|
|
7
7
|
item: TreeModel<A>;
|
package/TreeSelector.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { AdditionalDefault } from '
|
|
3
|
-
import { ListControls } from '
|
|
4
|
-
export declare const TreeSelector: import("react").ForwardRefExoticComponent<import("
|
|
2
|
+
import { AdditionalDefault } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
3
|
+
import { ListControls } from '@hh.ru/magritte-ui-tree-selector/types';
|
|
4
|
+
export declare const TreeSelector: import("react").ForwardRefExoticComponent<import("@hh.ru/magritte-ui-tree-selector/types").BaseTreeSelectorProps<AdditionalDefault> & {
|
|
5
5
|
onChange: (allSelected: string[], id: string, isSelected: boolean) => void;
|
|
6
6
|
collapseToParentId?: boolean | undefined;
|
|
7
7
|
maxSelected?: number | undefined;
|
package/TreeSelector.js
CHANGED
|
@@ -12,7 +12,7 @@ import './ItemsList.js';
|
|
|
12
12
|
import './Item.js';
|
|
13
13
|
import 'react-transition-group';
|
|
14
14
|
import 'classnames';
|
|
15
|
-
import './ItemContent-
|
|
15
|
+
import './ItemContent-DTW_UZ-z.js';
|
|
16
16
|
import '@hh.ru/magritte-ui-icon/icon';
|
|
17
17
|
import './Action.js';
|
|
18
18
|
import '@hh.ru/magritte-ui-checkbox-radio';
|
package/TreeSelectorDummy.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { AdditionalDefault } from '
|
|
3
|
-
import { ListControls } from '
|
|
4
|
-
export declare const TreeSelectorDummy: import("react").ForwardRefExoticComponent<import("
|
|
2
|
+
import { AdditionalDefault } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
3
|
+
import { ListControls } from '@hh.ru/magritte-ui-tree-selector/types';
|
|
4
|
+
export declare const TreeSelectorDummy: import("react").ForwardRefExoticComponent<import("@hh.ru/magritte-ui-tree-selector/types").BaseTreeSelectorProps<AdditionalDefault> & import("@hh.ru/magritte-ui-tree-selector/types").DummyProps & import("react").RefAttributes<ListControls>>;
|
package/TreeSelectorDummy.js
CHANGED
|
@@ -14,7 +14,7 @@ import { useRenderInput } from './useRenderInput.js';
|
|
|
14
14
|
import './Item.js';
|
|
15
15
|
import 'react-transition-group';
|
|
16
16
|
import 'classnames';
|
|
17
|
-
import './ItemContent-
|
|
17
|
+
import './ItemContent-DTW_UZ-z.js';
|
|
18
18
|
import '@hh.ru/magritte-ui-icon/icon';
|
|
19
19
|
import './Action.js';
|
|
20
20
|
import '@hh.ru/magritte-ui-checkbox-radio';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ReactElement } from 'react';
|
|
2
|
-
import { AdditionalDefault } from '
|
|
3
|
-
import { RenderItemProps } from '
|
|
2
|
+
import { AdditionalDefault } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
3
|
+
import { RenderItemProps } from '@hh.ru/magritte-ui-tree-selector/types';
|
|
4
4
|
export declare const TreeSelectorItemBase: <A extends AdditionalDefault>({ disabled, input, item, isXS, labelRight, }: RenderItemProps<A>) => ReactElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeSelectorItemBase.js","sources":["../src/TreeSelectorItemBase.tsx"],"sourcesContent":["import { ReactElement } from 'react';\n\nimport { Cell, CellText } from '@hh.ru/magritte-ui-cell';\nimport { AdditionalDefault } from '@hh.ru/magritte-ui-tree-selector/collection/types';\nimport { RenderItemProps } from '@hh.ru/magritte-ui-tree-selector/types';\n\nexport const TreeSelectorItemBase = <A extends AdditionalDefault>({\n disabled,\n input,\n item,\n isXS,\n labelRight,\n}: RenderItemProps<A>): ReactElement => {\n const cellProps = {\n [isXS ? 'right' : 'left']: input,\n ...(isXS && labelRight && { right: labelRight }),\n };\n return (\n <Cell disabled={disabled} {...cellProps} align=\"top\">\n <CellText>{item.text}</CellText>\n </Cell>\n );\n};\n"],"names":["_jsx"],"mappings":";;;AAMa,MAAA,oBAAoB,GAAG,CAA8B,EAC9D,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,UAAU,GACO,KAAkB;AACnC,IAAA,MAAM,SAAS,GAAG;QACd,CAAC,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK;QAChC,IAAI,IAAI,IAAI,UAAU,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE
|
|
1
|
+
{"version":3,"file":"TreeSelectorItemBase.js","sources":["../src/TreeSelectorItemBase.tsx"],"sourcesContent":["import { ReactElement } from 'react';\n\nimport { Cell, CellText } from '@hh.ru/magritte-ui-cell';\nimport { AdditionalDefault } from '@hh.ru/magritte-ui-tree-selector/collection/types';\nimport { RenderItemProps } from '@hh.ru/magritte-ui-tree-selector/types';\n\nexport const TreeSelectorItemBase = <A extends AdditionalDefault>({\n disabled,\n input,\n item,\n isXS,\n labelRight,\n}: RenderItemProps<A>): ReactElement => {\n const cellProps = {\n [isXS ? 'right' : 'left']: input,\n ...(isXS && labelRight && { right: labelRight }),\n };\n return (\n <Cell disabled={disabled} {...cellProps} align=\"top\">\n <CellText>{item.text}</CellText>\n </Cell>\n );\n};\n"],"names":["_jsx"],"mappings":";;;AAMa,MAAA,oBAAoB,GAAG,CAA8B,EAC9D,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,UAAU,GACO,KAAkB;AACnC,IAAA,MAAM,SAAS,GAAG;QACd,CAAC,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK;QAChC,IAAI,IAAI,IAAI,UAAU,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;KAClD,CAAC;IACF,QACIA,IAAC,IAAI,EAAA,EAAC,QAAQ,EAAE,QAAQ,EAAM,GAAA,SAAS,EAAE,KAAK,EAAC,KAAK,EAAA,QAAA,EAChDA,GAAC,CAAA,QAAQ,EAAE,EAAA,QAAA,EAAA,IAAI,CAAC,IAAI,EAAA,CAAY,EAC7B,CAAA,EACT;AACN;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AdditionalDefault, TreeModel, WalkCallback, ModelPredicate, ModelData } from '
|
|
1
|
+
import { AdditionalDefault, TreeModel, WalkCallback, ModelPredicate, ModelData } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
2
2
|
/**
|
|
3
3
|
* Многоцелевая иерархическая коллекция,
|
|
4
4
|
* свободная от специфического поведения компонентов
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeCollection.js","sources":["../../src/collection/treeCollection.ts"],"sourcesContent":["import {\n AdditionalDefault,\n TreeModel,\n WalkCallback,\n ModelPredicate,\n ModelData,\n} from '@hh.ru/magritte-ui-tree-selector/collection/types';\n\nconst createModel = <A extends AdditionalDefault>(attrs: TreeModel<A>): TreeModel<A> => {\n const id = attrs.id;\n if (typeof id !== 'string') {\n throw new Error(`Invalid ID: \"${JSON.stringify(id)}\"`);\n }\n const model: TreeModel<A> = {\n id: attrs.id,\n text: attrs.text,\n ...('additional' in attrs ? { additional: attrs.additional } : {}),\n };\n return model;\n};\n\n/**\n * Многоцелевая иерархическая коллекция,\n * свободная от специфического поведения компонентов\n */\nclass TreeCollection<A extends AdditionalDefault = never> {\n protected models: TreeModel<A>[] = [];\n protected topLevelModels: TreeModel<A>[] = [];\n\n protected modelsById: Record<string, TreeModel<A>> = {};\n protected childrenById: Record<string, string[]> = {};\n\n protected parentsById: Record<string, string[]> = {};\n\n /**\n * Создаёт из объекта модель и добавляет в коллекцию.\n * Не добавляет модель в коллекцию, если модель с таким id уже существует\n */\n addModel(attrs: TreeModel<A>, parentId?: string): void {\n const model = createModel(attrs);\n const id = model.id;\n if (typeof this.getModel(id) === 'undefined') {\n this.models.push(model);\n this.modelsById[id] = model;\n }\n if (parentId) {\n this.parentsById[id] = this.parentsById[id] || [];\n this.parentsById[id].push(parentId);\n this.childrenById[parentId] = this.childrenById[parentId] || [];\n this.childrenById[parentId].push(id);\n } else {\n this.topLevelModels.push(model);\n }\n }\n\n toList(): TreeModel<A>[] {\n return this.models.slice();\n }\n\n getTopLevel(): TreeModel<A>[] {\n return this.topLevelModels.slice();\n }\n\n /** Возвращает модель по ID или `undefined` */\n getModel(id: string): TreeModel<A> | undefined {\n return this.modelsById.hasOwnProperty(id) ? this.modelsById[id] : undefined;\n }\n\n _getModelLevel(id: string, level = 0): number {\n const parentId = this.getParentId(id);\n if (!parentId) {\n return level;\n }\n return this._getModelLevel(parentId, level + 1);\n }\n\n getModelLevel(id: string): number {\n return this._getModelLevel(id);\n }\n\n /** Возвращает существующие в коллекции модели по IDs */\n getExistModels(ids: string[]): TreeModel<A>[] {\n return ids.reduce((result: TreeModel<A>[], id) => {\n const model = this.getModel(id);\n if (model) {\n result.push(model);\n }\n return result;\n }, []);\n }\n\n /** Возвращает ID родителя по ID модели или `undefined` */\n getParentId(id: string): string | undefined {\n return this.parentsById.hasOwnProperty(id) ? this.parentsById[id][0] : undefined;\n }\n\n /**\n * Возвращает модель первого родителя по ID или `undefined`.\n */\n getParent(id: string): TreeModel<A> | undefined {\n const parentId = this.getParentId(id);\n return parentId ? this.getModel(parentId) : undefined;\n }\n\n /** Возвращает массив IDs ближайших родителей по ID модели */\n getParentIdsDuplicates(id: string): string[] {\n return this.parentsById.hasOwnProperty(id) ? this.parentsById[id] : [];\n }\n\n /** Возвращает массив ID родителей от ближних к дальним */\n getParentIds(id: string, resultIds: string[] = []): string[] {\n const parentId = this.getParentIdsDuplicates(id);\n if (parentId.length) {\n resultIds.push(...parentId);\n parentId.forEach((id) => this.getParentIds(id, resultIds));\n }\n return resultIds;\n }\n\n /** Возвращает массив моделей родителей от ближнего к дальнему */\n getParents(id: string): TreeModel<A>[] {\n const parendIds = this.getParentIds(id);\n return this.getExistModels(parendIds);\n }\n\n /** Возвращает наличие дочерних моделей по ID родителя */\n hasChildren(id: string): boolean {\n return this.childrenById.hasOwnProperty(id);\n }\n\n /** Возвращает список ID дочерних по ID родителя */\n getChildrenIds(id: string): string[] {\n return this.hasChildren(id) ? this.childrenById[id].slice() : [];\n }\n\n /** Возвращает список дочерних моделей по ID родителя */\n getChildren(id: string): TreeModel<A>[] {\n const childrenIds = this.getChildrenIds(id);\n return this.getExistModels(childrenIds);\n }\n\n /**\n * Рекурсивно проходит по списку моделей, применяет к каждой модели переданную функцию.\n * items Список моделей для обработки.\n * callback Вызываемая функция.\n * [parents] Массив моделей родителей от ближнего к дальнему.\n * Используется в случаях, когда на вход поступают модели из середины дерева, имеющие своих родителей.\n */\n _walk(items: TreeModel<A>[], callback: WalkCallback<A>, parents?: TreeModel<A>[]): void {\n const currentParents = parents ? parents.slice() : [];\n items.forEach((item) => {\n callback(item, currentParents);\n const children = this.getChildren(item.id);\n if (children && children.length) {\n this._walk(children, callback, [item].concat(currentParents));\n }\n });\n }\n\n /** Рекурсивно проходит по дереву, применяет к каждой модели переданную функцию */\n walk(callback: WalkCallback<A>): void {\n this._walk(this.getTopLevel(), callback);\n }\n\n /**\n * Рекурсивно проходит по дочерним элементам указанной модели, применяет к каждому переданную функцию.\n * id ID модели, с которой начинать обход.\n * callback Вызываемая функция.\n */\n walkChildren(id: string, callback: WalkCallback<A>): void {\n const children = this.getChildren(id);\n if (children.length) {\n const parents = this.getExistModels([id]).concat(this.getParents(id));\n this._walk(children, callback, parents);\n }\n }\n\n /**\n * Проходит по родителям модели до самого верха, применяет к каждому указанную функцию.\n * id ID текущей модели.\n * callback Вызываемая функция.\n */\n walkParents(id: string, callback: WalkCallback<A>): void {\n const parents = this.getParents(id);\n while (parents.length) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const firstParent = parents.shift()!;\n callback(firstParent, parents.slice());\n }\n }\n\n /**\n * Возвращает коллекцию в виде дерева.\n * filter Функция-фильтр.\n * Если указана, оставляет в дереве только те элементы, для которых вернулось `true`.\n */\n toTree(filter?: ModelPredicate): ModelData<A>[] {\n const filteredTree: ModelData<A>[] = [];\n const modelsById: Record<string, ModelData<A>> = {};\n this.walk((model, parents) => {\n if (!filter || filter(model)) {\n const treeItem = { ...model };\n modelsById[model.id] = treeItem;\n if (parents.length === 0) {\n filteredTree.push(treeItem);\n } else {\n const parent = modelsById[parents[0].id];\n if (!parent.items) {\n parent.items = [];\n }\n parent.items.push(treeItem);\n }\n }\n });\n return filteredTree;\n }\n}\n\nexport default TreeCollection;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"treeCollection.js","sources":["../../src/collection/treeCollection.ts"],"sourcesContent":["import {\n AdditionalDefault,\n TreeModel,\n WalkCallback,\n ModelPredicate,\n ModelData,\n} from '@hh.ru/magritte-ui-tree-selector/collection/types';\n\nconst createModel = <A extends AdditionalDefault>(attrs: TreeModel<A>): TreeModel<A> => {\n const id = attrs.id;\n if (typeof id !== 'string') {\n throw new Error(`Invalid ID: \"${JSON.stringify(id)}\"`);\n }\n const model: TreeModel<A> = {\n id: attrs.id,\n text: attrs.text,\n ...('additional' in attrs ? { additional: attrs.additional } : {}),\n };\n return model;\n};\n\n/**\n * Многоцелевая иерархическая коллекция,\n * свободная от специфического поведения компонентов\n */\nclass TreeCollection<A extends AdditionalDefault = never> {\n protected models: TreeModel<A>[] = [];\n protected topLevelModels: TreeModel<A>[] = [];\n\n protected modelsById: Record<string, TreeModel<A>> = {};\n protected childrenById: Record<string, string[]> = {};\n\n protected parentsById: Record<string, string[]> = {};\n\n /**\n * Создаёт из объекта модель и добавляет в коллекцию.\n * Не добавляет модель в коллекцию, если модель с таким id уже существует\n */\n addModel(attrs: TreeModel<A>, parentId?: string): void {\n const model = createModel(attrs);\n const id = model.id;\n if (typeof this.getModel(id) === 'undefined') {\n this.models.push(model);\n this.modelsById[id] = model;\n }\n if (parentId) {\n this.parentsById[id] = this.parentsById[id] || [];\n this.parentsById[id].push(parentId);\n this.childrenById[parentId] = this.childrenById[parentId] || [];\n this.childrenById[parentId].push(id);\n } else {\n this.topLevelModels.push(model);\n }\n }\n\n toList(): TreeModel<A>[] {\n return this.models.slice();\n }\n\n getTopLevel(): TreeModel<A>[] {\n return this.topLevelModels.slice();\n }\n\n /** Возвращает модель по ID или `undefined` */\n getModel(id: string): TreeModel<A> | undefined {\n return this.modelsById.hasOwnProperty(id) ? this.modelsById[id] : undefined;\n }\n\n _getModelLevel(id: string, level = 0): number {\n const parentId = this.getParentId(id);\n if (!parentId) {\n return level;\n }\n return this._getModelLevel(parentId, level + 1);\n }\n\n getModelLevel(id: string): number {\n return this._getModelLevel(id);\n }\n\n /** Возвращает существующие в коллекции модели по IDs */\n getExistModels(ids: string[]): TreeModel<A>[] {\n return ids.reduce((result: TreeModel<A>[], id) => {\n const model = this.getModel(id);\n if (model) {\n result.push(model);\n }\n return result;\n }, []);\n }\n\n /** Возвращает ID родителя по ID модели или `undefined` */\n getParentId(id: string): string | undefined {\n return this.parentsById.hasOwnProperty(id) ? this.parentsById[id][0] : undefined;\n }\n\n /**\n * Возвращает модель первого родителя по ID или `undefined`.\n */\n getParent(id: string): TreeModel<A> | undefined {\n const parentId = this.getParentId(id);\n return parentId ? this.getModel(parentId) : undefined;\n }\n\n /** Возвращает массив IDs ближайших родителей по ID модели */\n getParentIdsDuplicates(id: string): string[] {\n return this.parentsById.hasOwnProperty(id) ? this.parentsById[id] : [];\n }\n\n /** Возвращает массив ID родителей от ближних к дальним */\n getParentIds(id: string, resultIds: string[] = []): string[] {\n const parentId = this.getParentIdsDuplicates(id);\n if (parentId.length) {\n resultIds.push(...parentId);\n parentId.forEach((id) => this.getParentIds(id, resultIds));\n }\n return resultIds;\n }\n\n /** Возвращает массив моделей родителей от ближнего к дальнему */\n getParents(id: string): TreeModel<A>[] {\n const parendIds = this.getParentIds(id);\n return this.getExistModels(parendIds);\n }\n\n /** Возвращает наличие дочерних моделей по ID родителя */\n hasChildren(id: string): boolean {\n return this.childrenById.hasOwnProperty(id);\n }\n\n /** Возвращает список ID дочерних по ID родителя */\n getChildrenIds(id: string): string[] {\n return this.hasChildren(id) ? this.childrenById[id].slice() : [];\n }\n\n /** Возвращает список дочерних моделей по ID родителя */\n getChildren(id: string): TreeModel<A>[] {\n const childrenIds = this.getChildrenIds(id);\n return this.getExistModels(childrenIds);\n }\n\n /**\n * Рекурсивно проходит по списку моделей, применяет к каждой модели переданную функцию.\n * items Список моделей для обработки.\n * callback Вызываемая функция.\n * [parents] Массив моделей родителей от ближнего к дальнему.\n * Используется в случаях, когда на вход поступают модели из середины дерева, имеющие своих родителей.\n */\n _walk(items: TreeModel<A>[], callback: WalkCallback<A>, parents?: TreeModel<A>[]): void {\n const currentParents = parents ? parents.slice() : [];\n items.forEach((item) => {\n callback(item, currentParents);\n const children = this.getChildren(item.id);\n if (children && children.length) {\n this._walk(children, callback, [item].concat(currentParents));\n }\n });\n }\n\n /** Рекурсивно проходит по дереву, применяет к каждой модели переданную функцию */\n walk(callback: WalkCallback<A>): void {\n this._walk(this.getTopLevel(), callback);\n }\n\n /**\n * Рекурсивно проходит по дочерним элементам указанной модели, применяет к каждому переданную функцию.\n * id ID модели, с которой начинать обход.\n * callback Вызываемая функция.\n */\n walkChildren(id: string, callback: WalkCallback<A>): void {\n const children = this.getChildren(id);\n if (children.length) {\n const parents = this.getExistModels([id]).concat(this.getParents(id));\n this._walk(children, callback, parents);\n }\n }\n\n /**\n * Проходит по родителям модели до самого верха, применяет к каждому указанную функцию.\n * id ID текущей модели.\n * callback Вызываемая функция.\n */\n walkParents(id: string, callback: WalkCallback<A>): void {\n const parents = this.getParents(id);\n while (parents.length) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const firstParent = parents.shift()!;\n callback(firstParent, parents.slice());\n }\n }\n\n /**\n * Возвращает коллекцию в виде дерева.\n * filter Функция-фильтр.\n * Если указана, оставляет в дереве только те элементы, для которых вернулось `true`.\n */\n toTree(filter?: ModelPredicate): ModelData<A>[] {\n const filteredTree: ModelData<A>[] = [];\n const modelsById: Record<string, ModelData<A>> = {};\n this.walk((model, parents) => {\n if (!filter || filter(model)) {\n const treeItem = { ...model };\n modelsById[model.id] = treeItem;\n if (parents.length === 0) {\n filteredTree.push(treeItem);\n } else {\n const parent = modelsById[parents[0].id];\n if (!parent.items) {\n parent.items = [];\n }\n parent.items.push(treeItem);\n }\n }\n });\n return filteredTree;\n }\n}\n\nexport default TreeCollection;\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import TreeCollection from '
|
|
2
|
-
import { AdditionalDefault, WalkCallback, ModelData, TreeFilter } from '
|
|
1
|
+
import TreeCollection from '@hh.ru/magritte-ui-tree-selector/collection/treeCollection';
|
|
2
|
+
import { AdditionalDefault, WalkCallback, ModelData, TreeFilter } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
3
3
|
/**
|
|
4
4
|
* Рекурсивно проходит по списку моделей, применяет к каждой модели переданную функцию.
|
|
5
5
|
*/
|
package/collection/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import TreeCollection from '
|
|
1
|
+
import TreeCollection from '@hh.ru/magritte-ui-tree-selector/collection/treeCollection';
|
|
2
2
|
export type AdditionalDefault = Record<string, never>;
|
|
3
3
|
export interface TreeModel<A extends AdditionalDefault = never> {
|
|
4
4
|
id: string;
|
package/index.css
CHANGED
|
@@ -1,45 +1,28 @@
|
|
|
1
1
|
:root{
|
|
2
|
-
--magritte-semantic-animation-ease-in-out-
|
|
3
|
-
--magritte-semantic-animation-ease-in-out-
|
|
2
|
+
--magritte-semantic-animation-ease-in-out-100-timing-function-v18-2-1:cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
3
|
+
--magritte-semantic-animation-ease-in-out-100-duration-v18-2-1:100ms;
|
|
4
|
+
--magritte-semantic-animation-ease-in-out-200-timing-function-v18-2-1:cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
5
|
+
--magritte-semantic-animation-ease-in-out-200-duration-v18-2-1:200ms;
|
|
4
6
|
}
|
|
5
|
-
.magritte-item-animation-
|
|
7
|
+
.magritte-item-animation-timeout___pbOyZ_1-6-2{
|
|
6
8
|
transition:height 500ms ease;
|
|
7
|
-
transition-timing-function:var(--magritte-semantic-animation-ease-in-out-200-timing-function-v18-2-
|
|
9
|
+
transition-timing-function:var(--magritte-semantic-animation-ease-in-out-200-timing-function-v18-2-1);
|
|
8
10
|
overflow:hidden;
|
|
9
11
|
--animation-duration:0ms;
|
|
10
12
|
transition-duration:var(--animation-duration);
|
|
11
13
|
}
|
|
12
14
|
@media (prefers-reduced-motion: no-preference){
|
|
13
|
-
.magritte-item-animation-
|
|
14
|
-
--animation-duration:var(--magritte-semantic-animation-ease-in-out-200-duration-v18-2-
|
|
15
|
+
.magritte-item-animation-timeout___pbOyZ_1-6-2{
|
|
16
|
+
--animation-duration:var(--magritte-semantic-animation-ease-in-out-200-duration-v18-2-1);
|
|
15
17
|
}
|
|
16
18
|
}
|
|
17
|
-
|
|
18
|
-
:root{
|
|
19
|
-
--magritte-semantic-animation-ease-in-out-100-timing-function-v18-2-0:cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
20
|
-
--magritte-semantic-animation-ease-in-out-100-duration-v18-2-0:100ms;
|
|
21
|
-
--magritte-semantic-animation-ease-in-out-200-timing-function-v18-2-0:cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
22
|
-
--magritte-semantic-animation-ease-in-out-200-duration-v18-2-0:200ms;
|
|
23
|
-
}
|
|
24
|
-
.magritte-item-animation-timeout___pbOyZ_1-6-0{
|
|
25
|
-
transition:height 500ms ease;
|
|
26
|
-
transition-timing-function:var(--magritte-semantic-animation-ease-in-out-200-timing-function-v18-2-0);
|
|
27
|
-
overflow:hidden;
|
|
28
|
-
--animation-duration:0ms;
|
|
29
|
-
transition-duration:var(--animation-duration);
|
|
30
|
-
}
|
|
31
|
-
@media (prefers-reduced-motion: no-preference){
|
|
32
|
-
.magritte-item-animation-timeout___pbOyZ_1-6-0{
|
|
33
|
-
--animation-duration:var(--magritte-semantic-animation-ease-in-out-200-duration-v18-2-0);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
.magritte-wrapper___GHKV6_1-6-0{
|
|
19
|
+
.magritte-wrapper___GHKV6_1-6-2{
|
|
37
20
|
display:flex;
|
|
38
21
|
padding:12px 0;
|
|
39
22
|
gap:12px;
|
|
40
23
|
align-items:flex-start;
|
|
41
24
|
}
|
|
42
|
-
.magritte-letter___yZOCU_1-6-
|
|
25
|
+
.magritte-letter___yZOCU_1-6-2{
|
|
43
26
|
width:24px;
|
|
44
27
|
height:24px;
|
|
45
28
|
display:flex;
|
|
@@ -47,55 +30,72 @@
|
|
|
47
30
|
justify-content:center;
|
|
48
31
|
flex-shrink:0;
|
|
49
32
|
}
|
|
50
|
-
.magritte-icon___kO3Fj_1-6-
|
|
51
|
-
.magritte-space___xTO79_1-6-
|
|
33
|
+
.magritte-icon___kO3Fj_1-6-2,
|
|
34
|
+
.magritte-space___xTO79_1-6-2{
|
|
52
35
|
flex-shrink:0;
|
|
53
36
|
line-height:0;
|
|
54
37
|
width:24px;
|
|
55
38
|
}
|
|
56
|
-
.magritte-icon___kO3Fj_1-6-
|
|
39
|
+
.magritte-icon___kO3Fj_1-6-2{
|
|
57
40
|
transform:rotate(0);
|
|
58
41
|
}
|
|
59
|
-
.magritte-iconActive___4yrG5_1-6-
|
|
42
|
+
.magritte-iconActive___4yrG5_1-6-2{
|
|
60
43
|
cursor:pointer;
|
|
61
44
|
}
|
|
62
|
-
.magritte-iconUp___mpXV6_1-6-
|
|
45
|
+
.magritte-iconUp___mpXV6_1-6-2{
|
|
63
46
|
transform:rotate(-180deg);
|
|
64
47
|
}
|
|
65
48
|
@media (prefers-reduced-motion: no-preference){
|
|
66
|
-
.magritte-icon___kO3Fj_1-6-
|
|
49
|
+
.magritte-icon___kO3Fj_1-6-2{
|
|
67
50
|
transition-property:transform;
|
|
68
|
-
transition-duration:var(--magritte-semantic-animation-ease-in-out-100-duration-v18-2-
|
|
69
|
-
transition-timing-function:var(--magritte-semantic-animation-ease-in-out-100-timing-function-v18-2-
|
|
51
|
+
transition-duration:var(--magritte-semantic-animation-ease-in-out-100-duration-v18-2-1);
|
|
52
|
+
transition-timing-function:var(--magritte-semantic-animation-ease-in-out-100-timing-function-v18-2-1);
|
|
70
53
|
}
|
|
71
54
|
}
|
|
72
|
-
.magritte-content___ZRc6R_1-6-
|
|
55
|
+
.magritte-content___ZRc6R_1-6-2{
|
|
73
56
|
flex-grow:1;
|
|
74
57
|
}
|
|
75
|
-
.magritte-with-shift___ZErxZ_1-6-
|
|
58
|
+
.magritte-with-shift___ZErxZ_1-6-2{
|
|
76
59
|
margin-left:-36px;
|
|
77
60
|
}
|
|
78
|
-
.magritte-with-indent___MH9Vy_1-6-
|
|
61
|
+
.magritte-with-indent___MH9Vy_1-6-2{
|
|
79
62
|
margin-left:36px;
|
|
80
63
|
}
|
|
81
|
-
.magritte-item___2LtOL_1-6-
|
|
64
|
+
.magritte-item___2LtOL_1-6-2 > .magritte-children___kq-eq_1-6-2{
|
|
82
65
|
padding-left:36px;
|
|
83
66
|
}
|
|
84
|
-
.magritte-item___2LtOL_1-6-
|
|
67
|
+
.magritte-item___2LtOL_1-6-2.magritte-with-two-boxes___LWOy2_1-6-2 > .magritte-children___kq-eq_1-6-2{
|
|
85
68
|
padding-left:72px;
|
|
86
69
|
}
|
|
87
|
-
.magritte-item___2LtOL_1-6-
|
|
70
|
+
.magritte-item___2LtOL_1-6-2.magritte-with-three-boxes___cyVao_1-6-2 > .magritte-children___kq-eq_1-6-2{
|
|
88
71
|
padding-left:108px;
|
|
89
72
|
}
|
|
90
|
-
.magritte-children___kq-eq_1-6-
|
|
73
|
+
.magritte-children___kq-eq_1-6-2{
|
|
74
|
+
transition:height 500ms ease;
|
|
75
|
+
transition-timing-function:var(--magritte-semantic-animation-ease-in-out-200-timing-function-v18-2-1);
|
|
76
|
+
overflow:hidden;
|
|
77
|
+
--animation-duration:0ms;
|
|
78
|
+
transition-duration:var(--animation-duration);
|
|
79
|
+
}
|
|
80
|
+
@media (prefers-reduced-motion: no-preference){
|
|
81
|
+
.magritte-children___kq-eq_1-6-2{
|
|
82
|
+
--animation-duration:var(--magritte-semantic-animation-ease-in-out-200-duration-v18-2-1);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
:root{
|
|
87
|
+
--magritte-semantic-animation-ease-in-out-200-timing-function-v18-2-1:cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
88
|
+
--magritte-semantic-animation-ease-in-out-200-duration-v18-2-1:200ms;
|
|
89
|
+
}
|
|
90
|
+
.magritte-item-animation-timeout___Pdli9_1-6-2{
|
|
91
91
|
transition:height 500ms ease;
|
|
92
|
-
transition-timing-function:var(--magritte-semantic-animation-ease-in-out-200-timing-function-v18-2-
|
|
92
|
+
transition-timing-function:var(--magritte-semantic-animation-ease-in-out-200-timing-function-v18-2-1);
|
|
93
93
|
overflow:hidden;
|
|
94
94
|
--animation-duration:0ms;
|
|
95
95
|
transition-duration:var(--animation-duration);
|
|
96
96
|
}
|
|
97
97
|
@media (prefers-reduced-motion: no-preference){
|
|
98
|
-
.magritte-
|
|
99
|
-
--animation-duration:var(--magritte-semantic-animation-ease-in-out-200-duration-v18-2-
|
|
98
|
+
.magritte-item-animation-timeout___Pdli9_1-6-2{
|
|
99
|
+
--animation-duration:var(--magritte-semantic-animation-ease-in-out-200-duration-v18-2-1);
|
|
100
100
|
}
|
|
101
101
|
}
|
package/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from '
|
|
2
|
-
export * from '
|
|
3
|
-
export * from '
|
|
4
|
-
export * from '
|
|
1
|
+
export * from '@hh.ru/magritte-ui-tree-selector/TreeSelector';
|
|
2
|
+
export * from '@hh.ru/magritte-ui-tree-selector/TreeSelectorDummy';
|
|
3
|
+
export * from '@hh.ru/magritte-ui-tree-selector/TreeSelectorItemBase';
|
|
4
|
+
export * from '@hh.ru/magritte-ui-tree-selector/types';
|
package/index.js
CHANGED
|
@@ -20,7 +20,7 @@ import './ItemsList.js';
|
|
|
20
20
|
import './Item.js';
|
|
21
21
|
import 'react-transition-group';
|
|
22
22
|
import 'classnames';
|
|
23
|
-
import './ItemContent-
|
|
23
|
+
import './ItemContent-DTW_UZ-z.js';
|
|
24
24
|
import '@hh.ru/magritte-ui-icon/icon';
|
|
25
25
|
import './Action.js';
|
|
26
26
|
import '@hh.ru/magritte-ui-checkbox-radio';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hh.ru/magritte-ui-tree-selector",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.2",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"sideEffects": [
|
|
@@ -16,23 +16,24 @@
|
|
|
16
16
|
"eslint-test": "yarn root:eslint-test $(pwd)",
|
|
17
17
|
"ts-config": "yarn root:ts-config $(pwd)",
|
|
18
18
|
"ts-check": "yarn root:ts-check $(pwd)",
|
|
19
|
-
"test": "yarn root:test $(pwd)"
|
|
19
|
+
"test": "yarn root:test $(pwd)",
|
|
20
|
+
"watch": "yarn root:watch $(pwd)"
|
|
20
21
|
},
|
|
21
22
|
"dependencies": {
|
|
22
|
-
"@hh.ru/magritte-common-func-utils": "1.3.
|
|
23
|
-
"@hh.ru/magritte-common-fuzzy-search": "1.0.
|
|
24
|
-
"@hh.ru/magritte-design-tokens": "18.2.
|
|
25
|
-
"@hh.ru/magritte-ui-breakpoint": "4.0.
|
|
26
|
-
"@hh.ru/magritte-ui-card": "6.0.
|
|
27
|
-
"@hh.ru/magritte-ui-cell": "3.0.
|
|
28
|
-
"@hh.ru/magritte-ui-checkable-card": "3.0.
|
|
29
|
-
"@hh.ru/magritte-ui-checkbox-radio": "3.0.
|
|
30
|
-
"@hh.ru/magritte-ui-icon": "7.1.
|
|
31
|
-
"@hh.ru/magritte-ui-input": "5.0.
|
|
32
|
-
"@hh.ru/magritte-ui-mock-component": "1.0.
|
|
33
|
-
"@hh.ru/magritte-ui-spacing": "2.0.
|
|
34
|
-
"@hh.ru/magritte-ui-theme-provider": "1.1.
|
|
35
|
-
"@hh.ru/magritte-ui-typography": "3.0.
|
|
23
|
+
"@hh.ru/magritte-common-func-utils": "1.3.7",
|
|
24
|
+
"@hh.ru/magritte-common-fuzzy-search": "1.0.5",
|
|
25
|
+
"@hh.ru/magritte-design-tokens": "18.2.1",
|
|
26
|
+
"@hh.ru/magritte-ui-breakpoint": "4.0.3",
|
|
27
|
+
"@hh.ru/magritte-ui-card": "6.0.9",
|
|
28
|
+
"@hh.ru/magritte-ui-cell": "3.0.2",
|
|
29
|
+
"@hh.ru/magritte-ui-checkable-card": "3.0.12",
|
|
30
|
+
"@hh.ru/magritte-ui-checkbox-radio": "3.0.5",
|
|
31
|
+
"@hh.ru/magritte-ui-icon": "7.1.9",
|
|
32
|
+
"@hh.ru/magritte-ui-input": "5.0.25",
|
|
33
|
+
"@hh.ru/magritte-ui-mock-component": "1.0.11",
|
|
34
|
+
"@hh.ru/magritte-ui-spacing": "2.0.25",
|
|
35
|
+
"@hh.ru/magritte-ui-theme-provider": "1.1.25",
|
|
36
|
+
"@hh.ru/magritte-ui-typography": "3.0.12"
|
|
36
37
|
},
|
|
37
38
|
"peerDependencies": {
|
|
38
39
|
"classnames": ">=2.3.2",
|
|
@@ -42,5 +43,5 @@
|
|
|
42
43
|
"publishConfig": {
|
|
43
44
|
"access": "public"
|
|
44
45
|
},
|
|
45
|
-
"gitHead": "
|
|
46
|
-
}
|
|
46
|
+
"gitHead": "bdbcf07ae5f66002ea09633961d0c9c008c70cd6"
|
|
47
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import TreeCollection from '
|
|
2
|
-
import { AdditionalDefault, IdCollectionPredicate } from '
|
|
3
|
-
import { Toggler } from '
|
|
1
|
+
import TreeCollection from '@hh.ru/magritte-ui-tree-selector/collection/treeCollection';
|
|
2
|
+
import { AdditionalDefault, IdCollectionPredicate } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
3
|
+
import { Toggler } from '@hh.ru/magritte-ui-tree-selector/strategy/types';
|
|
4
4
|
/**
|
|
5
5
|
* Создаёт переключатель элементов в наборе с учётом иерархии элементов:
|
|
6
6
|
* — если выбран или сброшен родитель, выбираются или сбрасываются все его потомки;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import TreeCollection from '
|
|
2
|
-
import { AdditionalDefault } from '
|
|
3
|
-
import { StrategyOptions } from '
|
|
1
|
+
import TreeCollection from '@hh.ru/magritte-ui-tree-selector/collection/treeCollection';
|
|
2
|
+
import { AdditionalDefault } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
3
|
+
import { StrategyOptions } from '@hh.ru/magritte-ui-tree-selector/strategy/types';
|
|
4
4
|
declare class ImmutableSelectionStrategy<A extends AdditionalDefault = never> {
|
|
5
5
|
private strategy;
|
|
6
6
|
constructor(collection: TreeCollection<A>, options: StrategyOptions);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import TreeCollection from '
|
|
2
|
-
import { AdditionalDefault } from '
|
|
3
|
-
import { StrategyOptions } from '
|
|
1
|
+
import TreeCollection from '@hh.ru/magritte-ui-tree-selector/collection/treeCollection';
|
|
2
|
+
import { AdditionalDefault } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
3
|
+
import { StrategyOptions } from '@hh.ru/magritte-ui-tree-selector/strategy/types';
|
|
4
4
|
/**
|
|
5
5
|
* Стратегия переключения флага `selected` для иерархической коллекции.
|
|
6
6
|
*/
|
package/strategy/types.d.ts
CHANGED
package/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReactElement, ReactNode } from 'react';
|
|
2
|
-
import TreeCollection from '
|
|
3
|
-
import { AdditionalDefault, IdCollectionPredicate, TreeFilter, TreeModel } from '
|
|
2
|
+
import TreeCollection from '@hh.ru/magritte-ui-tree-selector/collection/treeCollection';
|
|
3
|
+
import { AdditionalDefault, IdCollectionPredicate, TreeFilter, TreeModel } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
4
4
|
interface ChildrenProps {
|
|
5
5
|
renderTreeSelector: () => ReactElement;
|
|
6
6
|
renderInput: () => ReactElement;
|
package/useAnimationTimeout.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import './index.css';
|
|
2
2
|
import { useState, useLayoutEffect } from 'react';
|
|
3
3
|
|
|
4
|
-
var styles = {"item-animation-timeout":"magritte-item-animation-timeout___Pdli9_1-6-
|
|
4
|
+
var styles = {"item-animation-timeout":"magritte-item-animation-timeout___Pdli9_1-6-2","itemAnimationTimeout":"magritte-item-animation-timeout___Pdli9_1-6-2"};
|
|
5
5
|
|
|
6
6
|
const useAnimationTimeout = () => {
|
|
7
7
|
const [animationTimeout, setAnimationTimeout] = useState(0);
|
package/useDisabled.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AdditionalDefault } from '
|
|
2
|
-
import { TreeSelectorProps } from '
|
|
1
|
+
import { AdditionalDefault } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
2
|
+
import { TreeSelectorProps } from '@hh.ru/magritte-ui-tree-selector/types';
|
|
3
3
|
type UseDisabledHookProps<A extends AdditionalDefault> = {
|
|
4
4
|
selected: string[];
|
|
5
5
|
} & Pick<TreeSelectorProps<A>, 'disabled' | 'collection' | 'maxSelected'>;
|
package/useIndeterminate.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import TreeCollection from '
|
|
2
|
-
import { AdditionalDefault } from '
|
|
1
|
+
import TreeCollection from '@hh.ru/magritte-ui-tree-selector/collection/treeCollection';
|
|
2
|
+
import { AdditionalDefault } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
3
3
|
/**
|
|
4
4
|
* Возвращает массив ID элементов дерева, у которых есть и выбранные, и невыбранные потомки.
|
|
5
5
|
*/
|
package/useSelected.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AdditionalDefault } from '
|
|
2
|
-
import ImmutableSelectionStrategy from '
|
|
3
|
-
import { TreeSelectorProps } from '
|
|
1
|
+
import { AdditionalDefault } from '@hh.ru/magritte-ui-tree-selector/collection/types';
|
|
2
|
+
import ImmutableSelectionStrategy from '@hh.ru/magritte-ui-tree-selector/strategy/immutableSelectionStrategy';
|
|
3
|
+
import { TreeSelectorProps } from '@hh.ru/magritte-ui-tree-selector/types';
|
|
4
4
|
type UseSelectedHookProps<A extends AdditionalDefault> = {
|
|
5
5
|
strategy: ImmutableSelectionStrategy<A>;
|
|
6
6
|
} & Pick<TreeSelectorProps<A>, 'value' | 'onChange' | 'collapseToParentId' | 'maxSelected' | 'collection'>;
|