@mantine/core 9.0.2 → 9.1.1
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/cjs/components/Blockquote/Blockquote.cjs +5 -6
- package/cjs/components/Blockquote/Blockquote.cjs.map +1 -1
- package/cjs/components/Card/Card.cjs +1 -1
- package/cjs/components/Card/Card.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxClearButton/ComboboxClearButton.cjs +1 -1
- package/cjs/components/Combobox/ComboboxClearButton/ComboboxClearButton.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs +1 -0
- package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.cjs +2 -1
- package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs +1 -0
- package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs.map +1 -1
- package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs +18 -12
- package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs.map +1 -1
- package/cjs/components/Flex/Flex.cjs +7 -2
- package/cjs/components/Flex/Flex.cjs.map +1 -1
- package/cjs/components/FloatingIndicator/FloatingIndicator.cjs +1 -2
- package/cjs/components/FloatingIndicator/FloatingIndicator.cjs.map +1 -1
- package/cjs/components/Highlight/highlighter/highlighter.cjs +3 -3
- package/cjs/components/Highlight/highlighter/highlighter.cjs.map +1 -1
- package/cjs/components/MaskInput/MaskInput.cjs +24 -0
- package/cjs/components/MaskInput/MaskInput.cjs.map +1 -0
- package/cjs/components/MaskInput/use-mask-input-props.cjs +29 -0
- package/cjs/components/MaskInput/use-mask-input-props.cjs.map +1 -0
- package/cjs/components/MultiSelect/MultiSelect.cjs.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.cjs +1 -1
- package/cjs/components/PasswordInput/PasswordInput.cjs.map +1 -1
- package/cjs/components/Popover/Popover.context.cjs.map +1 -1
- package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs +1 -1
- package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs.map +1 -1
- package/cjs/components/Radio/Radio.module.cjs.map +1 -1
- package/cjs/components/Rating/Rating.cjs +1 -2
- package/cjs/components/Rating/Rating.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollArea.cjs +24 -10
- package/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
- package/cjs/components/Select/Select.cjs.map +1 -1
- package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs +2 -0
- package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs.map +1 -1
- package/cjs/components/Slider/Marks/Marks.cjs +3 -2
- package/cjs/components/Slider/Marks/Marks.cjs.map +1 -1
- package/cjs/components/Slider/Marks/is-mark-filled.cjs +2 -1
- package/cjs/components/Slider/Marks/is-mark-filled.cjs.map +1 -1
- package/cjs/components/Slider/Slider/Slider.cjs +12 -3
- package/cjs/components/Slider/Slider/Slider.cjs.map +1 -1
- package/cjs/components/Slider/Track/Track.cjs +3 -2
- package/cjs/components/Slider/Track/Track.cjs.map +1 -1
- package/cjs/components/Tabs/Tabs.cjs +3 -1
- package/cjs/components/Tabs/Tabs.cjs.map +1 -1
- package/cjs/components/Tabs/Tabs.context.cjs.map +1 -1
- package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs +2 -1
- package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs.map +1 -1
- package/cjs/components/Tree/FlatTreeNode.cjs +103 -0
- package/cjs/components/Tree/FlatTreeNode.cjs.map +1 -0
- package/cjs/components/Tree/Tree.cjs +12 -2
- package/cjs/components/Tree/Tree.cjs.map +1 -1
- package/cjs/components/Tree/Tree.module.cjs.map +1 -1
- package/cjs/components/Tree/TreeNode.cjs +70 -27
- package/cjs/components/Tree/TreeNode.cjs.map +1 -1
- package/cjs/components/Tree/filter-tree-data/filter-tree-data.cjs +23 -0
- package/cjs/components/Tree/filter-tree-data/filter-tree-data.cjs.map +1 -0
- package/cjs/components/Tree/flatten-tree-data/flatten-tree-data.cjs +28 -0
- package/cjs/components/Tree/flatten-tree-data/flatten-tree-data.cjs.map +1 -0
- package/cjs/components/Tree/get-children-nodes-values/get-children-nodes-values.cjs +1 -0
- package/cjs/components/Tree/merge-async-children/merge-async-children.cjs +32 -0
- package/cjs/components/Tree/merge-async-children/merge-async-children.cjs.map +1 -0
- package/cjs/components/Tree/move-tree-node/move-tree-node.cjs +78 -0
- package/cjs/components/Tree/move-tree-node/move-tree-node.cjs.map +1 -0
- package/cjs/components/Tree/use-tree-node-drag-drop.cjs +127 -0
- package/cjs/components/Tree/use-tree-node-drag-drop.cjs.map +1 -0
- package/cjs/components/Tree/use-tree.cjs +176 -26
- package/cjs/components/Tree/use-tree.cjs.map +1 -1
- package/cjs/core/Box/Box.cjs +6 -2
- package/cjs/core/Box/Box.cjs.map +1 -1
- package/cjs/core/InlineStyles/InlineStyles.cjs +14 -2
- package/cjs/core/InlineStyles/InlineStyles.cjs.map +1 -1
- package/cjs/core/InlineStyles/hash-styles.cjs +15 -0
- package/cjs/core/InlineStyles/hash-styles.cjs.map +1 -0
- package/cjs/core/MantineProvider/Mantine.context.cjs +4 -0
- package/cjs/core/MantineProvider/Mantine.context.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineProvider.cjs +3 -2
- package/cjs/core/MantineProvider/MantineProvider.cjs.map +1 -1
- package/cjs/core/styles-api/use-resolved-styles-api/use-resolved-styles-api.cjs +2 -2
- package/cjs/core/styles-api/use-resolved-styles-api/use-resolved-styles-api.cjs.map +1 -1
- package/cjs/index.cjs +16 -0
- package/esm/components/Blockquote/Blockquote.mjs +5 -6
- package/esm/components/Blockquote/Blockquote.mjs.map +1 -1
- package/esm/components/Card/Card.mjs +1 -1
- package/esm/components/Card/Card.mjs.map +1 -1
- package/esm/components/Combobox/ComboboxClearButton/ComboboxClearButton.mjs +1 -1
- package/esm/components/Combobox/ComboboxClearButton/ComboboxClearButton.mjs.map +1 -1
- package/esm/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.mjs +1 -0
- package/esm/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.mjs.map +1 -1
- package/esm/components/Combobox/ComboboxSearch/ComboboxSearch.mjs +2 -1
- package/esm/components/Combobox/ComboboxSearch/ComboboxSearch.mjs.map +1 -1
- package/esm/components/Combobox/ComboboxTarget/ComboboxTarget.mjs +1 -0
- package/esm/components/Combobox/ComboboxTarget/ComboboxTarget.mjs.map +1 -1
- package/esm/components/Combobox/use-combobox-target-props/use-combobox-target-props.mjs +18 -12
- package/esm/components/Combobox/use-combobox-target-props/use-combobox-target-props.mjs.map +1 -1
- package/esm/components/Flex/Flex.mjs +7 -2
- package/esm/components/Flex/Flex.mjs.map +1 -1
- package/esm/components/FloatingIndicator/FloatingIndicator.mjs +1 -2
- package/esm/components/FloatingIndicator/FloatingIndicator.mjs.map +1 -1
- package/esm/components/Highlight/highlighter/highlighter.mjs +3 -3
- package/esm/components/Highlight/highlighter/highlighter.mjs.map +1 -1
- package/esm/components/MaskInput/MaskInput.mjs +23 -0
- package/esm/components/MaskInput/MaskInput.mjs.map +1 -0
- package/esm/components/MaskInput/use-mask-input-props.mjs +28 -0
- package/esm/components/MaskInput/use-mask-input-props.mjs.map +1 -0
- package/esm/components/MultiSelect/MultiSelect.mjs.map +1 -1
- package/esm/components/PasswordInput/PasswordInput.mjs +1 -1
- package/esm/components/PasswordInput/PasswordInput.mjs.map +1 -1
- package/esm/components/Popover/Popover.context.mjs.map +1 -1
- package/esm/components/Popover/PopoverDropdown/PopoverDropdown.mjs +1 -1
- package/esm/components/Popover/PopoverDropdown/PopoverDropdown.mjs.map +1 -1
- package/esm/components/Radio/Radio.module.mjs.map +1 -1
- package/esm/components/Rating/Rating.mjs +1 -2
- package/esm/components/Rating/Rating.mjs.map +1 -1
- package/esm/components/ScrollArea/ScrollArea.mjs +25 -11
- package/esm/components/ScrollArea/ScrollArea.mjs.map +1 -1
- package/esm/components/Select/Select.mjs.map +1 -1
- package/esm/components/SemiCircleProgress/SemiCircleProgress.mjs +2 -0
- package/esm/components/SemiCircleProgress/SemiCircleProgress.mjs.map +1 -1
- package/esm/components/Slider/Marks/Marks.mjs +3 -2
- package/esm/components/Slider/Marks/Marks.mjs.map +1 -1
- package/esm/components/Slider/Marks/is-mark-filled.mjs +2 -1
- package/esm/components/Slider/Marks/is-mark-filled.mjs.map +1 -1
- package/esm/components/Slider/Slider/Slider.mjs +12 -3
- package/esm/components/Slider/Slider/Slider.mjs.map +1 -1
- package/esm/components/Slider/Track/Track.mjs +3 -2
- package/esm/components/Slider/Track/Track.mjs.map +1 -1
- package/esm/components/Tabs/Tabs.context.mjs.map +1 -1
- package/esm/components/Tabs/Tabs.mjs +3 -1
- package/esm/components/Tabs/Tabs.mjs.map +1 -1
- package/esm/components/Tabs/TabsPanel/TabsPanel.mjs +2 -1
- package/esm/components/Tabs/TabsPanel/TabsPanel.mjs.map +1 -1
- package/esm/components/Tree/FlatTreeNode.mjs +102 -0
- package/esm/components/Tree/FlatTreeNode.mjs.map +1 -0
- package/esm/components/Tree/Tree.mjs +13 -3
- package/esm/components/Tree/Tree.mjs.map +1 -1
- package/esm/components/Tree/Tree.module.mjs.map +1 -1
- package/esm/components/Tree/TreeNode.mjs +70 -27
- package/esm/components/Tree/TreeNode.mjs.map +1 -1
- package/esm/components/Tree/filter-tree-data/filter-tree-data.mjs +22 -0
- package/esm/components/Tree/filter-tree-data/filter-tree-data.mjs.map +1 -0
- package/esm/components/Tree/flatten-tree-data/flatten-tree-data.mjs +28 -0
- package/esm/components/Tree/flatten-tree-data/flatten-tree-data.mjs.map +1 -0
- package/esm/components/Tree/get-children-nodes-values/get-children-nodes-values.mjs +1 -1
- package/esm/components/Tree/merge-async-children/merge-async-children.mjs +32 -0
- package/esm/components/Tree/merge-async-children/merge-async-children.mjs.map +1 -0
- package/esm/components/Tree/move-tree-node/move-tree-node.mjs +78 -0
- package/esm/components/Tree/move-tree-node/move-tree-node.mjs.map +1 -0
- package/esm/components/Tree/use-tree-node-drag-drop.mjs +126 -0
- package/esm/components/Tree/use-tree-node-drag-drop.mjs.map +1 -0
- package/esm/components/Tree/use-tree.mjs +177 -27
- package/esm/components/Tree/use-tree.mjs.map +1 -1
- package/esm/core/Box/Box.mjs +7 -3
- package/esm/core/Box/Box.mjs.map +1 -1
- package/esm/core/InlineStyles/InlineStyles.mjs +14 -2
- package/esm/core/InlineStyles/InlineStyles.mjs.map +1 -1
- package/esm/core/InlineStyles/hash-styles.mjs +15 -0
- package/esm/core/InlineStyles/hash-styles.mjs.map +1 -0
- package/esm/core/MantineProvider/Mantine.context.mjs +4 -1
- package/esm/core/MantineProvider/Mantine.context.mjs.map +1 -1
- package/esm/core/MantineProvider/MantineProvider.mjs +3 -2
- package/esm/core/MantineProvider/MantineProvider.mjs.map +1 -1
- package/esm/core/styles-api/use-resolved-styles-api/use-resolved-styles-api.mjs +2 -2
- package/esm/core/styles-api/use-resolved-styles-api/use-resolved-styles-api.mjs.map +1 -1
- package/esm/index.mjs +9 -2
- package/lib/components/Combobox/ComboboxClearButton/ComboboxClearButton.d.ts +1 -1
- package/lib/components/Combobox/use-combobox-target-props/use-combobox-target-props.d.ts +3 -1
- package/lib/components/MaskInput/MaskInput.d.ts +68 -0
- package/lib/components/MaskInput/index.d.ts +7 -0
- package/lib/components/MaskInput/use-mask-input-props.d.ts +428 -0
- package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
- package/lib/components/Popover/Popover.context.d.ts +1 -1
- package/lib/components/Select/Select.d.ts +1 -1
- package/lib/components/Slider/Marks/Marks.d.ts +2 -1
- package/lib/components/Slider/Marks/is-mark-filled.d.ts +2 -1
- package/lib/components/Slider/Slider/Slider.d.ts +2 -0
- package/lib/components/Slider/Track/Track.d.ts +2 -1
- package/lib/components/Tabs/Tabs.context.d.ts +1 -0
- package/lib/components/Tabs/Tabs.d.ts +2 -0
- package/lib/components/Tree/FlatTreeNode.d.ts +31 -0
- package/lib/components/Tree/Tree.d.ts +31 -1
- package/lib/components/Tree/TreeNode.d.ts +9 -2
- package/lib/components/Tree/filter-tree-data/filter-tree-data.d.ts +4 -0
- package/lib/components/Tree/flatten-tree-data/flatten-tree-data.d.ts +15 -0
- package/lib/components/Tree/index.d.ts +10 -0
- package/lib/components/Tree/merge-async-children/merge-async-children.d.ts +2 -0
- package/lib/components/Tree/move-tree-node/move-tree-node.d.ts +11 -0
- package/lib/components/Tree/use-tree-node-drag-drop.d.ts +30 -0
- package/lib/components/Tree/use-tree.d.ts +19 -1
- package/lib/components/index.d.ts +1 -0
- package/lib/core/InlineStyles/InlineStyles.d.ts +2 -1
- package/lib/core/InlineStyles/hash-styles.d.ts +2 -0
- package/lib/core/InlineStyles/index.d.ts +1 -0
- package/lib/core/MantineProvider/Mantine.context.d.ts +2 -0
- package/lib/core/MantineProvider/MantineProvider.d.ts +3 -1
- package/lib/core/MantineProvider/index.d.ts +1 -1
- package/lib/core/styles-api/use-resolved-styles-api/use-resolved-styles-api.d.ts +2 -2
- package/package.json +5 -5
- package/styles/Radio.css +3 -2
- package/styles/Radio.layer.css +3 -2
- package/styles/Tree.css +66 -0
- package/styles/Tree.layer.css +66 -0
- package/styles.css +69 -2
- package/styles.layer.css +69 -2
|
@@ -39,7 +39,7 @@ export interface SelectProps<Value extends Primitive = string> extends BoxProps,
|
|
|
39
39
|
/** Props passed down to the hidden input */
|
|
40
40
|
hiddenInputProps?: Omit<React.ComponentProps<'input'>, 'value'>;
|
|
41
41
|
/** A function to render content of the option, replaces the default content of the option */
|
|
42
|
-
renderOption?: (item: ComboboxLikeRenderOptionInput<ComboboxItem
|
|
42
|
+
renderOption?: (item: ComboboxLikeRenderOptionInput<ComboboxItem<Value>>) => React.ReactNode;
|
|
43
43
|
/** Props passed down to the underlying `ScrollArea` component in the dropdown */
|
|
44
44
|
scrollAreaProps?: ScrollAreaProps;
|
|
45
45
|
/** Controls color of the default chevron, by default depends on the color scheme */
|
|
@@ -7,8 +7,9 @@ export interface MarksProps {
|
|
|
7
7
|
offset: number | undefined;
|
|
8
8
|
disabled: boolean | undefined;
|
|
9
9
|
inverted: boolean | undefined;
|
|
10
|
+
startPointValue?: number;
|
|
10
11
|
}
|
|
11
|
-
export declare function Marks({ marks, min, max, disabled, value, offset, inverted }: MarksProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
export declare function Marks({ marks, min, max, disabled, value, offset, inverted, startPointValue, }: MarksProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
13
|
export declare namespace Marks {
|
|
13
14
|
var displayName: string;
|
|
14
15
|
}
|
|
@@ -6,6 +6,7 @@ interface IsMarkFilled {
|
|
|
6
6
|
offset?: number;
|
|
7
7
|
value: number;
|
|
8
8
|
inverted?: boolean;
|
|
9
|
+
startPointValue?: number;
|
|
9
10
|
}
|
|
10
|
-
export declare function isMarkFilled({ mark, offset, value, inverted }: IsMarkFilled): boolean;
|
|
11
|
+
export declare function isMarkFilled({ mark, offset, value, inverted, startPointValue, }: IsMarkFilled): boolean;
|
|
11
12
|
export {};
|
|
@@ -51,6 +51,8 @@ export interface SliderProps extends BoxProps, StylesApiProps<SliderFactory>, El
|
|
|
51
51
|
scale?: (value: number) => number;
|
|
52
52
|
/** Determines whether track value representation should be inverted @default false */
|
|
53
53
|
inverted?: boolean;
|
|
54
|
+
/** Value at which the filled bar starts. When set, the bar extends from this point toward the current value. Ignored when `inverted` is set. */
|
|
55
|
+
startPointValue?: number;
|
|
54
56
|
/** Slider orientation @default 'horizontal' */
|
|
55
57
|
orientation?: 'horizontal' | 'vertical';
|
|
56
58
|
/** Props passed down to the hidden input */
|
|
@@ -9,12 +9,13 @@ export interface TrackProps {
|
|
|
9
9
|
min: number;
|
|
10
10
|
max: number;
|
|
11
11
|
value: number;
|
|
12
|
+
startPointValue?: number;
|
|
12
13
|
children: React.ReactNode;
|
|
13
14
|
disabled: boolean | undefined;
|
|
14
15
|
inverted: boolean | undefined;
|
|
15
16
|
containerProps?: React.ComponentProps<'div'>;
|
|
16
17
|
}
|
|
17
|
-
export declare function Track({ filled, children, offset, disabled, marksOffset, inverted, containerProps, ...others }: TrackProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare function Track({ filled, children, offset, disabled, marksOffset, inverted, startPointValue, containerProps, ...others }: TrackProps): import("react/jsx-runtime").JSX.Element;
|
|
18
19
|
export declare namespace Track {
|
|
19
20
|
var displayName: string;
|
|
20
21
|
}
|
|
@@ -15,6 +15,7 @@ export interface TabsContextValue {
|
|
|
15
15
|
radius: string | number | undefined;
|
|
16
16
|
inverted: boolean | undefined;
|
|
17
17
|
keepMounted: boolean | undefined;
|
|
18
|
+
keepMountedMode: 'activity' | 'display-none' | undefined;
|
|
18
19
|
placement: 'right' | 'left' | undefined;
|
|
19
20
|
unstyled: boolean | undefined;
|
|
20
21
|
getStyles: GetStylesApi<TabsFactory>;
|
|
@@ -37,6 +37,8 @@ export interface TabsProps extends BoxProps, StylesApiProps<TabsFactory>, Elemen
|
|
|
37
37
|
inverted?: boolean;
|
|
38
38
|
/** If set to `false`, `Tabs.Panel` content will be unmounted when the associated tab is not active @default true */
|
|
39
39
|
keepMounted?: boolean;
|
|
40
|
+
/** Controls how inactive tabs content is hidden when `keepMounted` is `true`, `'activity'` – hidden with `Activity` component, `'display-none'` – hidden with `display: none` styles @default 'activity' */
|
|
41
|
+
keepMountedMode?: 'activity' | 'display-none';
|
|
40
42
|
/** If set, adjusts text color based on background color for `pills` variant */
|
|
41
43
|
autoContrast?: boolean;
|
|
42
44
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { RenderNode, TreeNodeData } from './Tree';
|
|
2
|
+
import type { TreeController } from './use-tree';
|
|
3
|
+
export interface FlatTreeNodeProps {
|
|
4
|
+
/** Node data from tree data */
|
|
5
|
+
node: TreeNodeData;
|
|
6
|
+
/** Nesting level of the node, starts at 1 */
|
|
7
|
+
level: number;
|
|
8
|
+
/** Value of the parent node, `null` for root nodes */
|
|
9
|
+
parent: string | null;
|
|
10
|
+
/** Whether the node has children */
|
|
11
|
+
hasChildren: boolean;
|
|
12
|
+
/** Whether the node is expanded */
|
|
13
|
+
expanded: boolean;
|
|
14
|
+
/** Tree controller instance, return value of `useTree` hook */
|
|
15
|
+
tree: TreeController;
|
|
16
|
+
/** If set, tree node with children is expanded on click @default true */
|
|
17
|
+
expandOnClick?: boolean;
|
|
18
|
+
/** If set, tree node is selected on click @default false */
|
|
19
|
+
selectOnClick?: boolean;
|
|
20
|
+
/** If set, tree node with children is expanded on space key press @default true */
|
|
21
|
+
expandOnSpace?: boolean;
|
|
22
|
+
/** If set, tree node is checked on space key press @default false */
|
|
23
|
+
checkOnSpace?: boolean;
|
|
24
|
+
/** A function to render tree node label */
|
|
25
|
+
renderNode?: RenderNode;
|
|
26
|
+
/** Style to apply to the root element, used for virtualizer positioning */
|
|
27
|
+
style?: React.CSSProperties;
|
|
28
|
+
/** Tab index for the node */
|
|
29
|
+
tabIndex?: number;
|
|
30
|
+
}
|
|
31
|
+
export declare const FlatTreeNode: import("react").MemoExoticComponent<({ node, level, parent, hasChildren, expanded, tree, expandOnClick, selectOnClick, expandOnSpace, checkOnSpace, renderNode, style, tabIndex, }: FlatTreeNodeProps) => import("react/jsx-runtime").JSX.Element>;
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import { BoxProps, ElementProps, Factory, MantineSpacing, StylesApiProps } from '../../core';
|
|
2
|
+
import type { TreeDragDropPayload } from './move-tree-node/move-tree-node';
|
|
3
|
+
import type { TreeAllowDrop, TreeDragHandleProps } from './use-tree-node-drag-drop';
|
|
2
4
|
import { TreeController } from './use-tree';
|
|
3
5
|
export interface TreeNodeData {
|
|
4
6
|
label: React.ReactNode;
|
|
5
7
|
value: string;
|
|
6
8
|
nodeProps?: Record<string, any>;
|
|
7
9
|
children?: TreeNodeData[];
|
|
10
|
+
hasChildren?: boolean;
|
|
8
11
|
}
|
|
9
12
|
export interface RenderTreeNodePayload {
|
|
10
13
|
/** Node level in the tree */
|
|
11
14
|
level: number;
|
|
12
15
|
/** `true` if the node is expanded, applicable only for nodes with `children` */
|
|
13
16
|
expanded: boolean;
|
|
14
|
-
/** `true` if the node has non-empty `children` array */
|
|
17
|
+
/** `true` if the node has non-empty `children` array or `hasChildren` is set to `true` in the data */
|
|
15
18
|
hasChildren: boolean;
|
|
16
19
|
/** `true` if the node is selected */
|
|
17
20
|
selected: boolean;
|
|
21
|
+
/** `true` if the node's children are currently being loaded */
|
|
22
|
+
isLoading: boolean;
|
|
23
|
+
/** Error from the last failed load attempt, or `null` */
|
|
24
|
+
loadError: Error | null;
|
|
18
25
|
/** Node data from the `data` prop of `Tree` */
|
|
19
26
|
node: TreeNodeData;
|
|
20
27
|
/** Tree controller instance, return value of `useTree` hook */
|
|
@@ -26,13 +33,26 @@ export interface RenderTreeNodePayload {
|
|
|
26
33
|
onClick: (event: React.MouseEvent) => void;
|
|
27
34
|
'data-selected': boolean | undefined;
|
|
28
35
|
'data-value': string;
|
|
36
|
+
draggable?: boolean;
|
|
37
|
+
onDragStart?: (event: React.DragEvent) => void;
|
|
38
|
+
onDragOver?: (event: React.DragEvent) => void;
|
|
39
|
+
onDragLeave?: (event: React.DragEvent) => void;
|
|
40
|
+
onDrop?: (event: React.DragEvent) => void;
|
|
41
|
+
onDragEnd?: (event: React.DragEvent) => void;
|
|
29
42
|
};
|
|
43
|
+
/** Props to spread into the drag handle element when `withDragHandle` is set on `Tree`.
|
|
44
|
+
* `undefined` when `withDragHandle` is not enabled or drag-and-drop is disabled. */
|
|
45
|
+
dragHandleProps: TreeDragHandleProps | undefined;
|
|
30
46
|
}
|
|
31
47
|
export type RenderNode = (payload: RenderTreeNodePayload) => React.ReactNode;
|
|
32
48
|
export type TreeStylesNames = 'root' | 'node' | 'subtree' | 'label';
|
|
33
49
|
export type TreeCssVariables = {
|
|
34
50
|
root: '--level-offset';
|
|
35
51
|
};
|
|
52
|
+
export interface TreeDragState {
|
|
53
|
+
draggedValue: string | null;
|
|
54
|
+
currentDropTarget: HTMLElement | null;
|
|
55
|
+
}
|
|
36
56
|
export interface TreeProps extends BoxProps, StylesApiProps<TreeFactory>, ElementProps<'ul'> {
|
|
37
57
|
/** Data used to render nodes */
|
|
38
58
|
data: TreeNodeData[];
|
|
@@ -56,6 +76,16 @@ export interface TreeProps extends BoxProps, StylesApiProps<TreeFactory>, Elemen
|
|
|
56
76
|
allowRangeSelection?: boolean;
|
|
57
77
|
/** If set, subtree content is kept mounted when collapsed. React 19 `Activity` is used to preserve state. @default false */
|
|
58
78
|
keepMounted?: boolean;
|
|
79
|
+
/** Called when a node is dropped on another node, enables drag-and-drop when provided */
|
|
80
|
+
onDragDrop?: (payload: TreeDragDropPayload) => void;
|
|
81
|
+
/** Called for each potential drop target to determine whether a drop is allowed.
|
|
82
|
+
* When it returns `false`, the drop indicator is hidden and the drop is rejected. */
|
|
83
|
+
allowDrop?: TreeAllowDrop;
|
|
84
|
+
/** If set, drag-and-drop must be initiated from an element that spreads `dragHandleProps`
|
|
85
|
+
* from the `renderNode` payload, rather than anywhere on the node. @default false */
|
|
86
|
+
withDragHandle?: boolean;
|
|
87
|
+
/** If set, connecting lines are rendered showing parent-child relationships @default false */
|
|
88
|
+
withLines?: boolean;
|
|
59
89
|
}
|
|
60
90
|
export type TreeFactory = Factory<{
|
|
61
91
|
props: TreeProps;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { GetStylesApi } from '../../core';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TreeDragDropPayload } from './move-tree-node/move-tree-node';
|
|
3
|
+
import type { RenderNode, TreeDragState, TreeFactory, TreeNodeData } from './Tree';
|
|
3
4
|
import type { TreeController } from './use-tree';
|
|
5
|
+
import { TreeAllowDrop } from './use-tree-node-drag-drop';
|
|
4
6
|
interface TreeNodeProps {
|
|
5
7
|
node: TreeNodeData;
|
|
6
8
|
getStyles: GetStylesApi<TreeFactory>;
|
|
@@ -16,8 +18,13 @@ interface TreeNodeProps {
|
|
|
16
18
|
expandOnSpace: boolean | undefined;
|
|
17
19
|
checkOnSpace: boolean | undefined;
|
|
18
20
|
keepMounted: boolean | undefined;
|
|
21
|
+
onDragDrop: ((payload: TreeDragDropPayload) => void) | undefined;
|
|
22
|
+
allowDrop: TreeAllowDrop | undefined;
|
|
23
|
+
withDragHandle: boolean | undefined;
|
|
24
|
+
dragStateRef: React.RefObject<TreeDragState>;
|
|
25
|
+
data: TreeNodeData[];
|
|
19
26
|
}
|
|
20
|
-
export declare function TreeNode({ node, getStyles, rootIndex, controller, expandOnClick, selectOnClick, isSubtree, level, renderNode, flatValues, allowRangeSelection, expandOnSpace, checkOnSpace, keepMounted, }: TreeNodeProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export declare function TreeNode({ node, getStyles, rootIndex, controller, expandOnClick, selectOnClick, isSubtree, level, renderNode, flatValues, allowRangeSelection, expandOnSpace, checkOnSpace, keepMounted, onDragDrop, allowDrop, withDragHandle, dragStateRef, data, }: TreeNodeProps): import("react/jsx-runtime").JSX.Element;
|
|
21
28
|
export declare namespace TreeNode {
|
|
22
29
|
var displayName: string;
|
|
23
30
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TreeNodeData } from '../Tree';
|
|
2
|
+
export type TreeNodeFilter = (query: string, node: TreeNodeData) => boolean;
|
|
3
|
+
export declare function defaultTreeNodeFilter(query: string, node: TreeNodeData): boolean;
|
|
4
|
+
export declare function filterTreeData(data: TreeNodeData[], query: string, filter?: TreeNodeFilter): TreeNodeData[];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TreeNodeData } from '../Tree';
|
|
2
|
+
import type { TreeExpandedState } from '../use-tree';
|
|
3
|
+
export interface FlattenedTreeNodeData {
|
|
4
|
+
/** Node data from tree data */
|
|
5
|
+
node: TreeNodeData;
|
|
6
|
+
/** Nesting level of the node, starts at 1 */
|
|
7
|
+
level: number;
|
|
8
|
+
/** Value of the parent node, `null` for root nodes */
|
|
9
|
+
parent: string | null;
|
|
10
|
+
/** Whether the node has children */
|
|
11
|
+
hasChildren: boolean;
|
|
12
|
+
/** Whether the node is expanded */
|
|
13
|
+
expanded: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function flattenTreeData(data: TreeNodeData[], expandedState: TreeExpandedState): FlattenedTreeNodeData[];
|
|
@@ -3,4 +3,14 @@ import type { RenderTreeNodePayload, TreeCssVariables, TreeFactory, TreeNodeData
|
|
|
3
3
|
import type { UseTreeInput, UseTreeReturnType } from './use-tree';
|
|
4
4
|
export { Tree } from './Tree';
|
|
5
5
|
export { useTree, getTreeExpandedState } from './use-tree';
|
|
6
|
+
export { mergeAsyncChildren } from './merge-async-children/merge-async-children';
|
|
7
|
+
export { moveTreeNode } from './move-tree-node/move-tree-node';
|
|
8
|
+
export { filterTreeData, defaultTreeNodeFilter } from './filter-tree-data/filter-tree-data';
|
|
9
|
+
export { flattenTreeData } from './flatten-tree-data/flatten-tree-data';
|
|
10
|
+
export { FlatTreeNode } from './FlatTreeNode';
|
|
6
11
|
export type { TreeProps, TreeStylesNames, TreeFactory, TreeCssVariables, TreeNodeData, RenderTreeNodePayload, UseTreeInput, UseTreeReturnType, CheckedNodeStatus, };
|
|
12
|
+
export type { TreeNodeFilter } from './filter-tree-data/filter-tree-data';
|
|
13
|
+
export type { TreeDragDropPosition, TreeDragDropPayload } from './move-tree-node/move-tree-node';
|
|
14
|
+
export type { FlattenedTreeNodeData } from './flatten-tree-data/flatten-tree-data';
|
|
15
|
+
export type { FlatTreeNodeProps } from './FlatTreeNode';
|
|
16
|
+
export type { TreeAllowDrop, TreeDragHandleProps } from './use-tree-node-drag-drop';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { TreeNodeData } from '../Tree';
|
|
2
|
+
export type TreeDragDropPosition = 'before' | 'after' | 'inside';
|
|
3
|
+
export interface TreeDragDropPayload {
|
|
4
|
+
/** Value of the dragged node */
|
|
5
|
+
draggedNode: string;
|
|
6
|
+
/** Value of the target node */
|
|
7
|
+
targetNode: string;
|
|
8
|
+
/** Position relative to the target node */
|
|
9
|
+
position: TreeDragDropPosition;
|
|
10
|
+
}
|
|
11
|
+
export declare function moveTreeNode(data: TreeNodeData[], payload: TreeDragDropPayload): TreeNodeData[];
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { TreeDragDropPayload } from './move-tree-node/move-tree-node';
|
|
2
|
+
import type { TreeDragState, TreeNodeData } from './Tree';
|
|
3
|
+
export type TreeAllowDrop = (payload: TreeDragDropPayload) => boolean;
|
|
4
|
+
interface UseTreeNodeDragDropInput {
|
|
5
|
+
nodeValue: string;
|
|
6
|
+
hasChildren: boolean;
|
|
7
|
+
data: TreeNodeData[];
|
|
8
|
+
onDragDrop: ((payload: TreeDragDropPayload) => void) | undefined;
|
|
9
|
+
dragStateRef: React.RefObject<TreeDragState>;
|
|
10
|
+
allowDrop: TreeAllowDrop | undefined;
|
|
11
|
+
withDragHandle: boolean | undefined;
|
|
12
|
+
}
|
|
13
|
+
export interface TreeDragHandleProps {
|
|
14
|
+
onMouseDown: (event: React.MouseEvent) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare function useTreeNodeDragDrop({ nodeValue, hasChildren, data, onDragDrop, dragStateRef, allowDrop, withDragHandle, }: UseTreeNodeDragDropInput): {
|
|
17
|
+
readonly elementProps: {};
|
|
18
|
+
readonly dragHandleProps: undefined;
|
|
19
|
+
} | {
|
|
20
|
+
elementProps: {
|
|
21
|
+
draggable: boolean;
|
|
22
|
+
onDragStart: (event: React.DragEvent) => void;
|
|
23
|
+
onDragOver: (event: React.DragEvent) => void;
|
|
24
|
+
onDragLeave: (event: React.DragEvent) => void;
|
|
25
|
+
onDrop: (event: React.DragEvent) => void;
|
|
26
|
+
onDragEnd: (event: React.DragEvent) => void;
|
|
27
|
+
};
|
|
28
|
+
dragHandleProps: TreeDragHandleProps | undefined;
|
|
29
|
+
};
|
|
30
|
+
export {};
|
|
@@ -27,8 +27,18 @@ export interface UseTreeInput {
|
|
|
27
27
|
onNodeExpand?: (value: string) => void;
|
|
28
28
|
/** Called with the node value when it is collapsed */
|
|
29
29
|
onNodeCollapse?: (value: string) => void;
|
|
30
|
+
/** Called when a node with `hasChildren: true` is expanded for the first time.
|
|
31
|
+
* The callback should update the tree data with loaded children.
|
|
32
|
+
*/
|
|
33
|
+
onLoadChildren?: (nodeValue: string) => Promise<void>;
|
|
34
|
+
/** When `true`, checking a parent does not affect children and vice versa.
|
|
35
|
+
* Each node's checked state is fully independent. @default false
|
|
36
|
+
*/
|
|
37
|
+
checkStrictly?: boolean;
|
|
30
38
|
}
|
|
31
39
|
export interface UseTreeReturnType {
|
|
40
|
+
/** When `true`, each node's checked state is independent (no parent-child cascading) */
|
|
41
|
+
checkStrictly: boolean;
|
|
32
42
|
/** Determines whether multiple node can be selected at a time */
|
|
33
43
|
multiple: boolean;
|
|
34
44
|
/** A record of `node.value` and boolean values that represent nodes expanded state */
|
|
@@ -81,6 +91,14 @@ export interface UseTreeReturnType {
|
|
|
81
91
|
isNodeChecked: (value: string) => boolean;
|
|
82
92
|
/** Returns `true` if node with provided value is indeterminate */
|
|
83
93
|
isNodeIndeterminate: (value: string) => boolean;
|
|
94
|
+
/** Returns `true` if the node's children are currently being loaded */
|
|
95
|
+
isNodeLoading: (value: string) => boolean;
|
|
96
|
+
/** Returns the error from the last failed load attempt for the given node, or `null` */
|
|
97
|
+
getNodeLoadError: (value: string) => Error | null;
|
|
98
|
+
/** Programmatically triggers loading of a node's children */
|
|
99
|
+
loadNode: (value: string) => Promise<void>;
|
|
100
|
+
/** Clears the loaded cache for a node, causing it to re-fetch on next expand */
|
|
101
|
+
invalidateNode: (value: string) => void;
|
|
84
102
|
}
|
|
85
|
-
export declare function useTree({ initialSelectedState, expandedState, initialCheckedState, checkedState, initialExpandedState, selectedState, multiple, onNodeCollapse, onNodeExpand, onCheckedStateChange, onSelectedStateChange, onExpandedStateChange, }?: UseTreeInput): UseTreeReturnType;
|
|
103
|
+
export declare function useTree({ initialSelectedState, expandedState, initialCheckedState, checkedState, initialExpandedState, selectedState, multiple, onNodeCollapse, onNodeExpand, onCheckedStateChange, onSelectedStateChange, onExpandedStateChange, onLoadChildren, checkStrictly, }?: UseTreeInput): UseTreeReturnType;
|
|
86
104
|
export type TreeController = ReturnType<typeof useTree>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { InlineStylesInput } from './styles-to-string/styles-to-string';
|
|
2
2
|
export interface InlineStylesProps extends InlineStylesInput, Omit<React.ComponentProps<'style'>, keyof InlineStylesInput> {
|
|
3
|
+
deduplicate?: boolean;
|
|
3
4
|
}
|
|
4
|
-
export declare function InlineStyles(props:
|
|
5
|
+
export declare function InlineStyles({ deduplicate, ...props }: InlineStylesProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { InlineStyles } from './InlineStyles';
|
|
2
|
+
export { hashStyleProps } from './hash-styles';
|
|
2
3
|
export { stylesToString } from './styles-to-string/styles-to-string';
|
|
3
4
|
export type { InlineStylesInput, InlineStylesMediaQuery, } from './styles-to-string/styles-to-string';
|
|
4
5
|
export type { InlineStylesProps } from './InlineStyles';
|
|
@@ -17,6 +17,7 @@ interface MantineContextValue {
|
|
|
17
17
|
headless?: boolean;
|
|
18
18
|
stylesTransform?: MantineStylesTransform;
|
|
19
19
|
env?: 'default' | 'test';
|
|
20
|
+
deduplicateInlineStyles?: boolean;
|
|
20
21
|
}
|
|
21
22
|
export declare const MantineContext: import("react").Context<MantineContextValue | null>;
|
|
22
23
|
export declare function useMantineContext(): MantineContextValue;
|
|
@@ -28,4 +29,5 @@ export declare function useMantineIsHeadless(): boolean | undefined;
|
|
|
28
29
|
export declare function useMantineSxTransform(): (() => (sx: any) => string) | undefined;
|
|
29
30
|
export declare function useMantineStylesTransform(): (() => (styles: any, payload: any) => Record<string, string>) | undefined;
|
|
30
31
|
export declare function useMantineEnv(): "default" | "test";
|
|
32
|
+
export declare function useMantineDeduplicateInlineStyles(): boolean | undefined;
|
|
31
33
|
export {};
|
|
@@ -34,12 +34,14 @@ export interface MantineProviderProps {
|
|
|
34
34
|
withGlobalClasses?: boolean;
|
|
35
35
|
/** An object to transform `styles` and `sx` props into css classes, can be used with CSS-in-JS libraries */
|
|
36
36
|
stylesTransform?: MantineStylesTransform;
|
|
37
|
+
/** Determines whether inline styles with identical content should be deduplicated using React 19 style hoisting. When enabled, components with the same responsive style props share a single `<style />` tag instead of each generating their own. @default false */
|
|
38
|
+
deduplicateInlineStyles?: boolean;
|
|
37
39
|
/** Your application */
|
|
38
40
|
children?: React.ReactNode;
|
|
39
41
|
/** Environment at which the provider is used, `'test'` environment disables all transitions and portals */
|
|
40
42
|
env?: 'default' | 'test';
|
|
41
43
|
}
|
|
42
|
-
export declare function MantineProvider({ theme, children, getStyleNonce, withStaticClasses, withGlobalClasses, deduplicateCssVariables, withCssVariables, cssVariablesSelector, classNamesPrefix, colorSchemeManager, defaultColorScheme, getRootElement, cssVariablesResolver, forceColorScheme, stylesTransform, env, }: MantineProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
export declare function MantineProvider({ theme, children, getStyleNonce, withStaticClasses, withGlobalClasses, deduplicateCssVariables, withCssVariables, cssVariablesSelector, classNamesPrefix, colorSchemeManager, defaultColorScheme, getRootElement, cssVariablesResolver, forceColorScheme, stylesTransform, env, deduplicateInlineStyles, }: MantineProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
43
45
|
export declare namespace MantineProvider {
|
|
44
46
|
var displayName: string;
|
|
45
47
|
}
|
|
@@ -6,7 +6,7 @@ export * from './ColorSchemeScript';
|
|
|
6
6
|
export { DEFAULT_THEME } from './default-theme';
|
|
7
7
|
export { validateMantineTheme, mergeMantineTheme } from './merge-mantine-theme';
|
|
8
8
|
export { MantineProvider, HeadlessMantineProvider } from './MantineProvider';
|
|
9
|
-
export { MantineContext, useMantineContext, useMantineClassNamesPrefix, useMantineStyleNonce, useMantineCssVariablesResolver, useMantineWithStaticClasses, useMantineIsHeadless, useMantineSxTransform, useMantineStylesTransform, useMantineEnv, } from './Mantine.context';
|
|
9
|
+
export { MantineContext, useMantineContext, useMantineClassNamesPrefix, useMantineStyleNonce, useMantineCssVariablesResolver, useMantineWithStaticClasses, useMantineIsHeadless, useMantineSxTransform, useMantineStylesTransform, useMantineEnv, useMantineDeduplicateInlineStyles, } from './Mantine.context';
|
|
10
10
|
export { useMantineTheme, useSafeMantineTheme, MantineThemeContext, MantineThemeProvider, } from './MantineThemeProvider';
|
|
11
11
|
export type { MantineThemeProviderProps } from './MantineThemeProvider';
|
|
12
12
|
export type { MantineProviderProps, HeadlessMantineProviderProps } from './MantineProvider';
|
|
@@ -7,6 +7,6 @@ export interface UseResolvedStylesApiInput<Payload extends FactoryPayload> {
|
|
|
7
7
|
stylesCtx?: Record<string, any>;
|
|
8
8
|
}
|
|
9
9
|
export declare function useResolvedStylesApi<Payload extends FactoryPayload>({ classNames, styles, props, stylesCtx, }: UseResolvedStylesApiInput<Payload>): {
|
|
10
|
-
resolvedClassNames: Partial<Record<string, string
|
|
11
|
-
resolvedStyles: Record<string, any
|
|
10
|
+
resolvedClassNames: Partial<Record<string, string>> | undefined;
|
|
11
|
+
resolvedStyles: Record<string, any> | undefined;
|
|
12
12
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mantine/core",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.1.1",
|
|
4
4
|
"description": "React components library focused on usability, accessibility and developer experience",
|
|
5
5
|
"homepage": "https://mantine.dev/",
|
|
6
6
|
"license": "MIT",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"directory": "packages/@mantine/core"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
"@mantine/hooks": "9.
|
|
46
|
+
"@mantine/hooks": "9.1.1",
|
|
47
47
|
"react": "^19.2.0",
|
|
48
48
|
"react-dom": "^19.2.0"
|
|
49
49
|
},
|
|
@@ -52,12 +52,12 @@
|
|
|
52
52
|
"clsx": "^2.1.1",
|
|
53
53
|
"react-number-format": "^5.4.5",
|
|
54
54
|
"react-remove-scroll": "^2.7.2",
|
|
55
|
-
"type-fest": "^5.
|
|
55
|
+
"type-fest": "^5.6.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@mantine-tests/core": "workspace:*",
|
|
59
59
|
"@mantine/hooks": "workspace:*",
|
|
60
|
-
"react": "19.2.
|
|
61
|
-
"react-dom": "19.2.
|
|
60
|
+
"react": "19.2.5",
|
|
61
|
+
"react-dom": "19.2.5"
|
|
62
62
|
}
|
|
63
63
|
}
|
package/styles/Radio.css
CHANGED
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
.m_f3ed6b2b {
|
|
30
30
|
color: var(--radio-icon-color);
|
|
31
31
|
opacity: var(--radio-icon-opacity, 0);
|
|
32
|
+
translate: -50% -50%;
|
|
32
33
|
transform: var(--radio-icon-transform, scale(0.2) translateY(calc(0.625rem * var(--mantine-scale))));
|
|
33
34
|
transition:
|
|
34
35
|
opacity 100ms ease,
|
|
@@ -37,8 +38,8 @@
|
|
|
37
38
|
width: var(--radio-icon-size);
|
|
38
39
|
height: var(--radio-icon-size);
|
|
39
40
|
position: absolute;
|
|
40
|
-
top:
|
|
41
|
-
left:
|
|
41
|
+
top: 50%;
|
|
42
|
+
left: 50%;
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
.m_8a3dbb89 {
|
package/styles/Radio.layer.css
CHANGED
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
.m_f3ed6b2b {
|
|
30
30
|
color: var(--radio-icon-color);
|
|
31
31
|
opacity: var(--radio-icon-opacity, 0);
|
|
32
|
+
translate: -50% -50%;
|
|
32
33
|
transform: var(--radio-icon-transform, scale(0.2) translateY(calc(0.625rem * var(--mantine-scale))));
|
|
33
34
|
transition:
|
|
34
35
|
opacity 100ms ease,
|
|
@@ -37,8 +38,8 @@
|
|
|
37
38
|
width: var(--radio-icon-size);
|
|
38
39
|
height: var(--radio-icon-size);
|
|
39
40
|
position: absolute;
|
|
40
|
-
top:
|
|
41
|
-
left:
|
|
41
|
+
top: 50%;
|
|
42
|
+
left: 50%;
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
.m_8a3dbb89 {
|
package/styles/Tree.css
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
.m_f698e191 {
|
|
2
2
|
--level-offset: var(--mantine-spacing-lg);
|
|
3
|
+
--tree-line-width: calc(0.0625rem * var(--mantine-scale));
|
|
4
|
+
--tree-line-color: var(--mantine-color-default-border);
|
|
3
5
|
margin: 0;
|
|
4
6
|
padding: 0;
|
|
5
7
|
user-select: none;
|
|
@@ -24,6 +26,7 @@
|
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
.m_dc283425 {
|
|
29
|
+
position: relative;
|
|
27
30
|
padding-inline-start: var(--label-offset);
|
|
28
31
|
}
|
|
29
32
|
|
|
@@ -34,3 +37,66 @@
|
|
|
34
37
|
:where([data-mantine-color-scheme='dark']) .m_dc283425:where([data-selected]) {
|
|
35
38
|
background-color: var(--mantine-color-dark-5);
|
|
36
39
|
}
|
|
40
|
+
|
|
41
|
+
.m_dc283425:where([data-dragging]) {
|
|
42
|
+
opacity: 0.4;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.m_dc283425:where([data-drag-over='before'])::before {
|
|
46
|
+
content: '';
|
|
47
|
+
position: absolute;
|
|
48
|
+
top: -1px;
|
|
49
|
+
inset-inline-start: var(--label-offset, 0);
|
|
50
|
+
inset-inline-end: 0;
|
|
51
|
+
height: 2px;
|
|
52
|
+
background-color: var(--mantine-primary-color-filled);
|
|
53
|
+
pointer-events: none;
|
|
54
|
+
z-index: 1;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.m_dc283425:where([data-drag-over='after'])::after {
|
|
58
|
+
content: '';
|
|
59
|
+
position: absolute;
|
|
60
|
+
bottom: -1px;
|
|
61
|
+
inset-inline-start: var(--label-offset, 0);
|
|
62
|
+
inset-inline-end: 0;
|
|
63
|
+
height: 2px;
|
|
64
|
+
background-color: var(--mantine-primary-color-filled);
|
|
65
|
+
pointer-events: none;
|
|
66
|
+
z-index: 1;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.m_dc283425:where([data-drag-over='inside']) {
|
|
70
|
+
background-color: var(--mantine-primary-color-light);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
:where([data-with-lines]) .m_f6970eb1 {
|
|
74
|
+
position: relative;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
:where([data-with-lines]) .m_75f3ecf > .m_f6970eb1::before {
|
|
78
|
+
content: '';
|
|
79
|
+
position: absolute;
|
|
80
|
+
top: calc(0.75rem * var(--mantine-scale));
|
|
81
|
+
inset-inline-start: calc(var(--label-offset) - var(--level-offset) / 2);
|
|
82
|
+
width: calc(var(--level-offset) / 2);
|
|
83
|
+
height: 0;
|
|
84
|
+
border-top: var(--tree-line-width) solid var(--tree-line-color);
|
|
85
|
+
pointer-events: none;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
:where([data-with-lines]) .m_75f3ecf > .m_f6970eb1::after {
|
|
89
|
+
content: '';
|
|
90
|
+
position: absolute;
|
|
91
|
+
top: 0;
|
|
92
|
+
bottom: 0;
|
|
93
|
+
inset-inline-start: calc(var(--label-offset) - var(--level-offset) / 2);
|
|
94
|
+
width: 0;
|
|
95
|
+
border-inline-start: var(--tree-line-width) solid var(--tree-line-color);
|
|
96
|
+
pointer-events: none;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
:where([data-with-lines]) .m_75f3ecf > .m_f6970eb1:last-child::after {
|
|
100
|
+
bottom: auto;
|
|
101
|
+
height: calc(0.75rem * var(--mantine-scale));
|
|
102
|
+
}
|