@mantine/core 9.1.0 → 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.
Files changed (83) hide show
  1. package/cjs/components/Card/Card.cjs +1 -1
  2. package/cjs/components/Card/Card.cjs.map +1 -1
  3. package/cjs/components/Combobox/ComboboxClearButton/ComboboxClearButton.cjs +1 -1
  4. package/cjs/components/Combobox/ComboboxClearButton/ComboboxClearButton.cjs.map +1 -1
  5. package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs +1 -0
  6. package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs.map +1 -1
  7. package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.cjs +2 -1
  8. package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.cjs.map +1 -1
  9. package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs +1 -0
  10. package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs.map +1 -1
  11. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs +18 -12
  12. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs.map +1 -1
  13. package/cjs/components/Highlight/highlighter/highlighter.cjs +3 -3
  14. package/cjs/components/Highlight/highlighter/highlighter.cjs.map +1 -1
  15. package/cjs/components/MultiSelect/MultiSelect.cjs.map +1 -1
  16. package/cjs/components/PasswordInput/PasswordInput.cjs +1 -1
  17. package/cjs/components/PasswordInput/PasswordInput.cjs.map +1 -1
  18. package/cjs/components/Popover/Popover.context.cjs.map +1 -1
  19. package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs +1 -1
  20. package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs.map +1 -1
  21. package/cjs/components/Radio/Radio.module.cjs.map +1 -1
  22. package/cjs/components/ScrollArea/ScrollArea.cjs +24 -10
  23. package/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
  24. package/cjs/components/Select/Select.cjs.map +1 -1
  25. package/cjs/components/Tree/FlatTreeNode.cjs +2 -1
  26. package/cjs/components/Tree/FlatTreeNode.cjs.map +1 -1
  27. package/cjs/components/Tree/Tree.cjs +3 -1
  28. package/cjs/components/Tree/Tree.cjs.map +1 -1
  29. package/cjs/components/Tree/TreeNode.cjs +10 -5
  30. package/cjs/components/Tree/TreeNode.cjs.map +1 -1
  31. package/cjs/components/Tree/use-tree-node-drag-drop.cjs +46 -15
  32. package/cjs/components/Tree/use-tree-node-drag-drop.cjs.map +1 -1
  33. package/cjs/core/styles-api/use-resolved-styles-api/use-resolved-styles-api.cjs +2 -2
  34. package/cjs/core/styles-api/use-resolved-styles-api/use-resolved-styles-api.cjs.map +1 -1
  35. package/esm/components/Card/Card.mjs +1 -1
  36. package/esm/components/Card/Card.mjs.map +1 -1
  37. package/esm/components/Combobox/ComboboxClearButton/ComboboxClearButton.mjs +1 -1
  38. package/esm/components/Combobox/ComboboxClearButton/ComboboxClearButton.mjs.map +1 -1
  39. package/esm/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.mjs +1 -0
  40. package/esm/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.mjs.map +1 -1
  41. package/esm/components/Combobox/ComboboxSearch/ComboboxSearch.mjs +2 -1
  42. package/esm/components/Combobox/ComboboxSearch/ComboboxSearch.mjs.map +1 -1
  43. package/esm/components/Combobox/ComboboxTarget/ComboboxTarget.mjs +1 -0
  44. package/esm/components/Combobox/ComboboxTarget/ComboboxTarget.mjs.map +1 -1
  45. package/esm/components/Combobox/use-combobox-target-props/use-combobox-target-props.mjs +18 -12
  46. package/esm/components/Combobox/use-combobox-target-props/use-combobox-target-props.mjs.map +1 -1
  47. package/esm/components/Highlight/highlighter/highlighter.mjs +3 -3
  48. package/esm/components/Highlight/highlighter/highlighter.mjs.map +1 -1
  49. package/esm/components/MultiSelect/MultiSelect.mjs.map +1 -1
  50. package/esm/components/PasswordInput/PasswordInput.mjs +1 -1
  51. package/esm/components/PasswordInput/PasswordInput.mjs.map +1 -1
  52. package/esm/components/Popover/Popover.context.mjs.map +1 -1
  53. package/esm/components/Popover/PopoverDropdown/PopoverDropdown.mjs +1 -1
  54. package/esm/components/Popover/PopoverDropdown/PopoverDropdown.mjs.map +1 -1
  55. package/esm/components/Radio/Radio.module.mjs.map +1 -1
  56. package/esm/components/ScrollArea/ScrollArea.mjs +25 -11
  57. package/esm/components/ScrollArea/ScrollArea.mjs.map +1 -1
  58. package/esm/components/Select/Select.mjs.map +1 -1
  59. package/esm/components/Tree/FlatTreeNode.mjs +2 -1
  60. package/esm/components/Tree/FlatTreeNode.mjs.map +1 -1
  61. package/esm/components/Tree/Tree.mjs +3 -1
  62. package/esm/components/Tree/Tree.mjs.map +1 -1
  63. package/esm/components/Tree/TreeNode.mjs +10 -5
  64. package/esm/components/Tree/TreeNode.mjs.map +1 -1
  65. package/esm/components/Tree/use-tree-node-drag-drop.mjs +45 -15
  66. package/esm/components/Tree/use-tree-node-drag-drop.mjs.map +1 -1
  67. package/esm/core/styles-api/use-resolved-styles-api/use-resolved-styles-api.mjs +2 -2
  68. package/esm/core/styles-api/use-resolved-styles-api/use-resolved-styles-api.mjs.map +1 -1
  69. package/lib/components/Combobox/ComboboxClearButton/ComboboxClearButton.d.ts +1 -1
  70. package/lib/components/Combobox/use-combobox-target-props/use-combobox-target-props.d.ts +3 -1
  71. package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
  72. package/lib/components/Popover/Popover.context.d.ts +1 -1
  73. package/lib/components/Select/Select.d.ts +1 -1
  74. package/lib/components/Tree/Tree.d.ts +10 -0
  75. package/lib/components/Tree/TreeNode.d.ts +4 -1
  76. package/lib/components/Tree/index.d.ts +1 -0
  77. package/lib/components/Tree/use-tree-node-drag-drop.d.ts +19 -7
  78. package/lib/core/styles-api/use-resolved-styles-api/use-resolved-styles-api.d.ts +2 -2
  79. package/package.json +2 -2
  80. package/styles/Radio.css +3 -2
  81. package/styles/Radio.layer.css +3 -2
  82. package/styles.css +3 -2
  83. package/styles.layer.css +3 -2
@@ -4,9 +4,11 @@ interface UseComboboxTargetPropsInput {
4
4
  withKeyboardNavigation: boolean | undefined;
5
5
  withExpandedAttribute: boolean | undefined;
6
6
  onKeyDown: React.KeyboardEventHandler<HTMLInputElement> | undefined;
7
+ onClick: React.MouseEventHandler<HTMLInputElement> | undefined;
7
8
  autoComplete: string | undefined;
8
9
  }
9
- export declare function useComboboxTargetProps({ onKeyDown, withKeyboardNavigation, withAriaAttributes, withExpandedAttribute, targetType, autoComplete, }: UseComboboxTargetPropsInput): {
10
+ export declare function useComboboxTargetProps({ onKeyDown, onClick, withKeyboardNavigation, withAriaAttributes, withExpandedAttribute, targetType, autoComplete, }: UseComboboxTargetPropsInput): {
10
11
  onKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
12
+ onClick: (event: React.MouseEvent<HTMLInputElement>) => void;
11
13
  };
12
14
  export {};
@@ -47,7 +47,7 @@ export interface MultiSelectProps<Value extends Primitive = string> extends BoxP
47
47
  /** Divider used to separate values in the hidden input `value` attribute @default ',' */
48
48
  hiddenInputValuesDivider?: string;
49
49
  /** A function to render content of the option, replaces the default content of the option */
50
- renderOption?: (item: ComboboxLikeRenderOptionInput<ComboboxItem>) => React.ReactNode;
50
+ renderOption?: (item: ComboboxLikeRenderOptionInput<ComboboxItem<Value>>) => React.ReactNode;
51
51
  /** A function to render content of the pill */
52
52
  renderPill?: (props: ComboboxRenderPillInput<Value>) => React.ReactNode;
53
53
  /** Props passed down to the underlying `ScrollArea` component in the dropdown */
@@ -45,7 +45,7 @@ export interface PopoverContextValue {
45
45
  variant: string | undefined;
46
46
  keepMounted: boolean | undefined;
47
47
  getStyles: GetStylesApi<PopoverFactory>;
48
- resolvedStyles: Record<string, any>;
48
+ resolvedStyles: Record<string, any> | undefined;
49
49
  floatingStrategy: FloatingStrategy | undefined;
50
50
  referenceHidden: boolean | undefined;
51
51
  }
@@ -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>) => React.ReactNode;
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 */
@@ -1,5 +1,6 @@
1
1
  import { BoxProps, ElementProps, Factory, MantineSpacing, StylesApiProps } from '../../core';
2
2
  import type { TreeDragDropPayload } from './move-tree-node/move-tree-node';
3
+ import type { TreeAllowDrop, TreeDragHandleProps } from './use-tree-node-drag-drop';
3
4
  import { TreeController } from './use-tree';
4
5
  export interface TreeNodeData {
5
6
  label: React.ReactNode;
@@ -39,6 +40,9 @@ export interface RenderTreeNodePayload {
39
40
  onDrop?: (event: React.DragEvent) => void;
40
41
  onDragEnd?: (event: React.DragEvent) => void;
41
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;
42
46
  }
43
47
  export type RenderNode = (payload: RenderTreeNodePayload) => React.ReactNode;
44
48
  export type TreeStylesNames = 'root' | 'node' | 'subtree' | 'label';
@@ -74,6 +78,12 @@ export interface TreeProps extends BoxProps, StylesApiProps<TreeFactory>, Elemen
74
78
  keepMounted?: boolean;
75
79
  /** Called when a node is dropped on another node, enables drag-and-drop when provided */
76
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;
77
87
  /** If set, connecting lines are rendered showing parent-child relationships @default false */
78
88
  withLines?: boolean;
79
89
  }
@@ -2,6 +2,7 @@ import { GetStylesApi } from '../../core';
2
2
  import type { TreeDragDropPayload } from './move-tree-node/move-tree-node';
3
3
  import type { RenderNode, TreeDragState, TreeFactory, TreeNodeData } from './Tree';
4
4
  import type { TreeController } from './use-tree';
5
+ import { TreeAllowDrop } from './use-tree-node-drag-drop';
5
6
  interface TreeNodeProps {
6
7
  node: TreeNodeData;
7
8
  getStyles: GetStylesApi<TreeFactory>;
@@ -18,10 +19,12 @@ interface TreeNodeProps {
18
19
  checkOnSpace: boolean | undefined;
19
20
  keepMounted: boolean | undefined;
20
21
  onDragDrop: ((payload: TreeDragDropPayload) => void) | undefined;
22
+ allowDrop: TreeAllowDrop | undefined;
23
+ withDragHandle: boolean | undefined;
21
24
  dragStateRef: React.RefObject<TreeDragState>;
22
25
  data: TreeNodeData[];
23
26
  }
24
- export declare function TreeNode({ node, getStyles, rootIndex, controller, expandOnClick, selectOnClick, isSubtree, level, renderNode, flatValues, allowRangeSelection, expandOnSpace, checkOnSpace, keepMounted, onDragDrop, dragStateRef, data, }: 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;
25
28
  export declare namespace TreeNode {
26
29
  var displayName: string;
27
30
  }
@@ -13,3 +13,4 @@ export type { TreeNodeFilter } from './filter-tree-data/filter-tree-data';
13
13
  export type { TreeDragDropPosition, TreeDragDropPayload } from './move-tree-node/move-tree-node';
14
14
  export type { FlattenedTreeNodeData } from './flatten-tree-data/flatten-tree-data';
15
15
  export type { FlatTreeNodeProps } from './FlatTreeNode';
16
+ export type { TreeAllowDrop, TreeDragHandleProps } from './use-tree-node-drag-drop';
@@ -1,18 +1,30 @@
1
1
  import type { TreeDragDropPayload } from './move-tree-node/move-tree-node';
2
2
  import type { TreeDragState, TreeNodeData } from './Tree';
3
+ export type TreeAllowDrop = (payload: TreeDragDropPayload) => boolean;
3
4
  interface UseTreeNodeDragDropInput {
4
5
  nodeValue: string;
5
6
  hasChildren: boolean;
6
7
  data: TreeNodeData[];
7
8
  onDragDrop: ((payload: TreeDragDropPayload) => void) | undefined;
8
9
  dragStateRef: React.RefObject<TreeDragState>;
10
+ allowDrop: TreeAllowDrop | undefined;
11
+ withDragHandle: boolean | undefined;
9
12
  }
10
- export declare function useTreeNodeDragDrop({ nodeValue, hasChildren, data, onDragDrop, dragStateRef, }: UseTreeNodeDragDropInput): Record<string, never> | {
11
- draggable: true;
12
- onDragStart: (event: React.DragEvent) => void;
13
- onDragOver: (event: React.DragEvent) => void;
14
- onDragLeave: (event: React.DragEvent) => void;
15
- onDrop: (event: React.DragEvent) => void;
16
- onDragEnd: (event: React.DragEvent) => void;
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;
17
29
  };
18
30
  export {};
@@ -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.1.0",
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.1.0",
46
+ "@mantine/hooks": "9.1.1",
47
47
  "react": "^19.2.0",
48
48
  "react-dom": "^19.2.0"
49
49
  },
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: calc(50% - var(--radio-icon-size) / 2);
41
- left: calc(50% - var(--radio-icon-size) / 2);
41
+ top: 50%;
42
+ left: 50%;
42
43
  }
43
44
 
44
45
  .m_8a3dbb89 {
@@ -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: calc(50% - var(--radio-icon-size) / 2);
41
- left: calc(50% - var(--radio-icon-size) / 2);
41
+ top: 50%;
42
+ left: 50%;
42
43
  }
43
44
 
44
45
  .m_8a3dbb89 {
package/styles.css CHANGED
@@ -5820,6 +5820,7 @@ fieldset:disabled .m_8ee546b8,
5820
5820
  .m_f3ed6b2b {
5821
5821
  color: var(--radio-icon-color);
5822
5822
  opacity: var(--radio-icon-opacity, 0);
5823
+ translate: -50% -50%;
5823
5824
  transform: var(--radio-icon-transform, scale(0.2) translateY(calc(0.625rem * var(--mantine-scale))));
5824
5825
  transition:
5825
5826
  opacity 100ms ease,
@@ -5828,8 +5829,8 @@ fieldset:disabled .m_8ee546b8,
5828
5829
  width: var(--radio-icon-size);
5829
5830
  height: var(--radio-icon-size);
5830
5831
  position: absolute;
5831
- top: calc(50% - var(--radio-icon-size) / 2);
5832
- left: calc(50% - var(--radio-icon-size) / 2);
5832
+ top: 50%;
5833
+ left: 50%;
5833
5834
  }
5834
5835
 
5835
5836
  .m_8a3dbb89 {
package/styles.layer.css CHANGED
@@ -5820,6 +5820,7 @@ fieldset:disabled .m_8ee546b8,
5820
5820
  .m_f3ed6b2b {
5821
5821
  color: var(--radio-icon-color);
5822
5822
  opacity: var(--radio-icon-opacity, 0);
5823
+ translate: -50% -50%;
5823
5824
  transform: var(--radio-icon-transform, scale(0.2) translateY(calc(0.625rem * var(--mantine-scale))));
5824
5825
  transition:
5825
5826
  opacity 100ms ease,
@@ -5828,8 +5829,8 @@ fieldset:disabled .m_8ee546b8,
5828
5829
  width: var(--radio-icon-size);
5829
5830
  height: var(--radio-icon-size);
5830
5831
  position: absolute;
5831
- top: calc(50% - var(--radio-icon-size) / 2);
5832
- left: calc(50% - var(--radio-icon-size) / 2);
5832
+ top: 50%;
5833
+ left: 50%;
5833
5834
  }
5834
5835
 
5835
5836
  .m_8a3dbb89 {