@mantine/core 7.0.0-alpha.19 → 7.0.0-alpha.20
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/AppShell/AppShellMediaStyles/get-variables/get-variables.js.map +1 -1
- package/cjs/components/Blockquote/Blockquote.js +1 -1
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Card/Card.context.js +13 -0
- package/cjs/components/Card/Card.context.js.map +1 -0
- package/cjs/components/Card/Card.js +88 -0
- package/cjs/components/Card/Card.js.map +1 -0
- package/cjs/components/Card/Card.module.css.js +8 -0
- package/cjs/components/Card/Card.module.css.js.map +1 -0
- package/cjs/components/Card/CardSection/CardSection.js +79 -0
- package/cjs/components/Card/CardSection/CardSection.js.map +1 -0
- package/cjs/components/Collapse/Collapse.js +1 -1
- package/cjs/components/FileInput/FileInput.js +156 -0
- package/cjs/components/FileInput/FileInput.js.map +1 -0
- package/cjs/components/Grid/GridVariables.js.map +1 -1
- package/cjs/components/Group/Group.js +15 -4
- package/cjs/components/Group/Group.js.map +1 -1
- package/cjs/components/Image/Image.js +129 -0
- package/cjs/components/Image/Image.js.map +1 -0
- package/cjs/components/Image/Image.module.css.js +8 -0
- package/cjs/components/Image/Image.module.css.js.map +1 -0
- package/cjs/components/Indicator/Indicator.js +134 -0
- package/cjs/components/Indicator/Indicator.js.map +1 -0
- package/cjs/components/Indicator/Indicator.module.css.js +8 -0
- package/cjs/components/Indicator/Indicator.module.css.js.map +1 -0
- package/cjs/components/Indicator/get-position-variables/get-position-variables.js +46 -0
- package/cjs/components/Indicator/get-position-variables/get-position-variables.js.map +1 -0
- package/cjs/components/Input/InputLabel/InputLabel.js +1 -1
- package/cjs/components/JsonInput/JsonInput.js +117 -0
- package/cjs/components/JsonInput/JsonInput.js.map +1 -0
- package/cjs/components/JsonInput/validate-json/validate-json.js +18 -0
- package/cjs/components/JsonInput/validate-json/validate-json.js.map +1 -0
- package/cjs/components/Modal/Modal.js +5 -3
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/ModalRoot.js +1 -1
- package/cjs/components/Modal/ModalRoot.js.map +1 -1
- package/cjs/components/ModalBase/ModalBaseContent.js.map +1 -1
- package/cjs/components/Overlay/Overlay.js +1 -1
- package/cjs/components/Paper/Paper.js +1 -1
- package/cjs/components/PasswordInput/PasswordInput.js +253 -0
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -0
- package/cjs/components/PasswordInput/PasswordInput.module.css.js +8 -0
- package/cjs/components/PasswordInput/PasswordInput.module.css.js.map +1 -0
- package/cjs/components/PasswordInput/PasswordToggleIcon.js +33 -0
- package/cjs/components/PasswordInput/PasswordToggleIcon.js.map +1 -0
- package/cjs/components/PinInput/PinInput.js +292 -0
- package/cjs/components/PinInput/PinInput.js.map +1 -0
- package/cjs/components/PinInput/PinInput.module.css.js +8 -0
- package/cjs/components/PinInput/PinInput.module.css.js.map +1 -0
- package/cjs/components/PinInput/create-pin-array/create-pin-array.js +20 -0
- package/cjs/components/PinInput/create-pin-array/create-pin-array.js.map +1 -0
- package/cjs/components/Popover/Popover.js +6 -6
- package/cjs/components/Popover/Popover.js.map +1 -1
- package/cjs/components/Popover/PopoverTarget/PopoverTarget.js +1 -1
- package/cjs/components/ScrollArea/ScrollArea.js +2 -2
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarVisible.js +1 -1
- package/cjs/components/Textarea/Textarea.js +73 -0
- package/cjs/components/Textarea/Textarea.js.map +1 -0
- package/cjs/components/Tooltip/TooltipFloating/use-floating-tooltip.js +5 -5
- package/cjs/components/Tooltip/TooltipFloating/use-floating-tooltip.js.map +1 -1
- package/cjs/components/Tooltip/use-tooltip.js +2 -4
- package/cjs/components/Tooltip/use-tooltip.js.map +1 -1
- package/cjs/core/Box/Box.js.map +1 -1
- package/cjs/core/factory/create-polymorphic-component.js.map +1 -1
- package/cjs/core/factory/factory.js.map +1 -1
- package/cjs/core/styles-api/use-styles/use-styles.js.map +1 -1
- package/cjs/core/utils/get-size/get-size.js +3 -0
- package/cjs/core/utils/get-size/get-size.js.map +1 -1
- package/cjs/index.css +1281 -1067
- package/cjs/index.js +74 -56
- package/cjs/index.js.map +1 -1
- package/esm/components/AppShell/AppShellMediaStyles/get-variables/get-variables.js.map +1 -1
- package/esm/components/Blockquote/Blockquote.js +1 -1
- package/esm/components/Button/Button.js.map +1 -1
- package/esm/components/Card/Card.context.js +8 -0
- package/esm/components/Card/Card.context.js.map +1 -0
- package/esm/components/Card/Card.js +80 -0
- package/esm/components/Card/Card.js.map +1 -0
- package/esm/components/Card/Card.module.css.js +4 -0
- package/esm/components/Card/Card.module.css.js.map +1 -0
- package/esm/components/Card/CardSection/CardSection.js +71 -0
- package/esm/components/Card/CardSection/CardSection.js.map +1 -0
- package/esm/components/Collapse/Collapse.js +1 -1
- package/esm/components/FileInput/FileInput.js +148 -0
- package/esm/components/FileInput/FileInput.js.map +1 -0
- package/esm/components/Grid/GridVariables.js.map +1 -1
- package/esm/components/Group/Group.js +15 -4
- package/esm/components/Group/Group.js.map +1 -1
- package/esm/components/Image/Image.js +121 -0
- package/esm/components/Image/Image.js.map +1 -0
- package/esm/components/Image/Image.module.css.js +4 -0
- package/esm/components/Image/Image.module.css.js.map +1 -0
- package/esm/components/Indicator/Indicator.js +126 -0
- package/esm/components/Indicator/Indicator.js.map +1 -0
- package/esm/components/Indicator/Indicator.module.css.js +4 -0
- package/esm/components/Indicator/Indicator.module.css.js.map +1 -0
- package/esm/components/Indicator/get-position-variables/get-position-variables.js +42 -0
- package/esm/components/Indicator/get-position-variables/get-position-variables.js.map +1 -0
- package/esm/components/Input/InputLabel/InputLabel.js +1 -1
- package/esm/components/JsonInput/JsonInput.js +109 -0
- package/esm/components/JsonInput/JsonInput.js.map +1 -0
- package/esm/components/JsonInput/validate-json/validate-json.js +14 -0
- package/esm/components/JsonInput/validate-json/validate-json.js.map +1 -0
- package/esm/components/Modal/Modal.js +5 -3
- package/esm/components/Modal/Modal.js.map +1 -1
- package/esm/components/Modal/ModalRoot.js +1 -1
- package/esm/components/Modal/ModalRoot.js.map +1 -1
- package/esm/components/ModalBase/ModalBaseContent.js.map +1 -1
- package/esm/components/Overlay/Overlay.js +1 -1
- package/esm/components/Paper/Paper.js +1 -1
- package/esm/components/PasswordInput/PasswordInput.js +244 -0
- package/esm/components/PasswordInput/PasswordInput.js.map +1 -0
- package/esm/components/PasswordInput/PasswordInput.module.css.js +4 -0
- package/esm/components/PasswordInput/PasswordInput.module.css.js.map +1 -0
- package/esm/components/PasswordInput/PasswordToggleIcon.js +25 -0
- package/esm/components/PasswordInput/PasswordToggleIcon.js.map +1 -0
- package/esm/components/PinInput/PinInput.js +284 -0
- package/esm/components/PinInput/PinInput.js.map +1 -0
- package/esm/components/PinInput/PinInput.module.css.js +4 -0
- package/esm/components/PinInput/PinInput.module.css.js.map +1 -0
- package/esm/components/PinInput/create-pin-array/create-pin-array.js +16 -0
- package/esm/components/PinInput/create-pin-array/create-pin-array.js.map +1 -0
- package/esm/components/Popover/Popover.js +6 -6
- package/esm/components/Popover/Popover.js.map +1 -1
- package/esm/components/Popover/PopoverTarget/PopoverTarget.js +1 -1
- package/esm/components/ScrollArea/ScrollArea.js +2 -2
- package/esm/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarVisible.js +1 -1
- package/esm/components/Textarea/Textarea.js +64 -0
- package/esm/components/Textarea/Textarea.js.map +1 -0
- package/esm/components/Tooltip/TooltipFloating/use-floating-tooltip.js +5 -5
- package/esm/components/Tooltip/TooltipFloating/use-floating-tooltip.js.map +1 -1
- package/esm/components/Tooltip/use-tooltip.js +2 -4
- package/esm/components/Tooltip/use-tooltip.js.map +1 -1
- package/esm/core/Box/Box.js.map +1 -1
- package/esm/core/factory/create-polymorphic-component.js.map +1 -1
- package/esm/core/factory/factory.js.map +1 -1
- package/esm/core/styles-api/use-styles/use-styles.js.map +1 -1
- package/esm/core/utils/get-size/get-size.js +3 -0
- package/esm/core/utils/get-size/get-size.js.map +1 -1
- package/esm/index.css +1281 -1067
- package/esm/index.js +36 -27
- package/esm/index.js.map +1 -1
- package/esm/styles/Card.css +1 -0
- package/esm/styles/Image.css +1 -0
- package/esm/styles/Indicator.css +1 -0
- package/esm/styles/Input.css +1 -1
- package/esm/styles/Modal.css +1 -1
- package/esm/styles/PasswordInput.css +1 -0
- package/esm/styles/PinInput.css +1 -0
- package/lib/components/Accordion/Accordion.context.d.ts +1 -1
- package/lib/components/Accordion/Accordion.d.ts +1 -1
- package/lib/components/Accordion/AccordionChevron.d.ts +1 -1
- package/lib/components/Accordion/AccordionItem.context.d.ts +1 -1
- package/lib/components/AppShell/AppShell.context.d.ts +1 -1
- package/lib/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.d.ts +1 -2
- package/lib/components/AppShell/AppShellMediaStyles/get-padding-value/get-padding-value.d.ts +1 -1
- package/lib/components/AppShell/AppShellMediaStyles/get-variables/get-variables.d.ts +3 -3
- package/lib/components/Avatar/AvatarPlaceholderIcon.d.ts +1 -1
- package/lib/components/Button/Button.d.ts +3 -0
- package/lib/components/Card/Card.context.d.ts +11 -0
- package/lib/components/Card/Card.d.ts +56 -0
- package/lib/components/Card/CardSection/CardSection.d.ts +35 -0
- package/lib/components/Card/index.d.ts +4 -0
- package/lib/components/Checkbox/CheckIcon.d.ts +2 -2
- package/lib/components/Chip/ChipGroup/ChipGroup.d.ts +1 -1
- package/lib/components/Chip/ChipGroup.context.d.ts +1 -1
- package/lib/components/ColorPicker/ColorPicker.context.d.ts +1 -1
- package/lib/components/ColorPicker/Saturation/Saturation.d.ts +1 -2
- package/lib/components/Combobox/Combobox.context.d.ts +1 -1
- package/lib/components/Combobox/Combobox.d.ts +1 -1
- package/lib/components/Combobox/OptionsDropdown/OptionsDropdown.d.ts +1 -1
- package/lib/components/CopyButton/CopyButton.d.ts +1 -1
- package/lib/components/Drawer/Drawer.context.d.ts +1 -1
- package/lib/components/FileInput/FileInput.d.ts +45 -0
- package/lib/components/FileInput/index.d.ts +2 -0
- package/lib/components/Grid/Grid.context.d.ts +1 -1
- package/lib/components/Grid/GridCol/GridColVariables.d.ts +1 -2
- package/lib/components/Grid/GridVariables.d.ts +1 -2
- package/lib/components/Group/Group.d.ts +1 -0
- package/lib/components/HoverCard/HoverCard.context.d.ts +1 -1
- package/lib/components/HoverCard/HoverCard.d.ts +1 -1
- package/lib/components/HoverCard/HoverCardDropdown/HoverCardDropdown.d.ts +1 -1
- package/lib/components/Image/Image.d.ts +44 -0
- package/lib/components/Image/index.d.ts +2 -0
- package/lib/components/Indicator/Indicator.d.ts +44 -0
- package/lib/components/Indicator/Indicator.types.d.ts +4 -0
- package/lib/components/Indicator/get-position-variables/get-position-variables.d.ts +3 -0
- package/lib/components/Indicator/index.d.ts +2 -0
- package/lib/components/Input/InputWrapper.context.d.ts +1 -1
- package/lib/components/Input/use-input-props.d.ts +50 -40
- package/lib/components/JsonInput/JsonInput.d.ts +30 -0
- package/lib/components/JsonInput/index.d.ts +2 -0
- package/lib/components/JsonInput/validate-json/validate-json.d.ts +1 -0
- package/lib/components/Menu/Menu.context.d.ts +1 -1
- package/lib/components/Menu/Menu.d.ts +2 -2
- package/lib/components/Menu/MenuItem/MenuItem.d.ts +1 -1
- package/lib/components/Modal/Modal.context.d.ts +1 -1
- package/lib/components/Modal/ModalRoot.d.ts +1 -1
- package/lib/components/ModalBase/ModalBase.context.d.ts +1 -1
- package/lib/components/ModalBase/ModalBaseContent.d.ts +5 -1
- package/lib/components/ModalBase/NativeScrollArea.d.ts +1 -1
- package/lib/components/NativeSelect/NativeSelectOption.d.ts +1 -2
- package/lib/components/Pagination/Pagination.context.d.ts +1 -1
- package/lib/components/Pagination/Pagination.icons.d.ts +5 -5
- package/lib/components/Pagination/PaginationItems/PaginationItems.d.ts +1 -2
- package/lib/components/PasswordInput/PasswordInput.d.ts +36 -0
- package/lib/components/PasswordInput/PasswordToggleIcon.d.ts +6 -0
- package/lib/components/PasswordInput/index.d.ts +2 -0
- package/lib/components/Pill/PillGroup.context.d.ts +1 -1
- package/lib/components/PillsInput/PillsInput.context.d.ts +1 -1
- package/lib/components/PinInput/PinInput.d.ts +66 -0
- package/lib/components/PinInput/create-pin-array/create-pin-array.d.ts +1 -0
- package/lib/components/PinInput/index.d.ts +2 -0
- package/lib/components/Popover/Popover.context.d.ts +1 -1
- package/lib/components/Popover/Popover.d.ts +1 -1
- package/lib/components/Popover/use-popover.d.ts +38 -1
- package/lib/components/Portal/OptionalPortal.d.ts +1 -2
- package/lib/components/Progress/Progress.context.d.ts +1 -1
- package/lib/components/Rating/Rating.context.d.ts +1 -1
- package/lib/components/Rating/RatingItem/RatingItem.d.ts +1 -1
- package/lib/components/Rating/StarSymbol/StarIcon.d.ts +1 -1
- package/lib/components/Rating/StarSymbol/StarSymbol.d.ts +1 -2
- package/lib/components/RingProgress/Curve/Curve.d.ts +1 -1
- package/lib/components/ScrollArea/ScrollArea.context.d.ts +1 -1
- package/lib/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.context.d.ts +1 -1
- package/lib/components/SimpleGrid/SimpleGridVariables.d.ts +1 -2
- package/lib/components/Slider/Marks/Marks.d.ts +1 -1
- package/lib/components/Slider/Slider.context.d.ts +1 -1
- package/lib/components/Slider/Track/Track.d.ts +1 -1
- package/lib/components/Table/Table.context.d.ts +1 -1
- package/lib/components/Tabs/Tabs.context.d.ts +1 -1
- package/lib/components/Textarea/Textarea.d.ts +21 -0
- package/lib/components/Textarea/index.d.ts +2 -0
- package/lib/components/Tooltip/TooltipFloating/use-floating-tooltip.d.ts +3 -3
- package/lib/components/Tooltip/TooltipGroup/TooltipGroup.d.ts +1 -1
- package/lib/components/Tooltip/use-tooltip.d.ts +4 -4
- package/lib/components/Transition/Transition.d.ts +1 -1
- package/lib/components/VisuallyHidden/VisuallyHidden.d.ts +1 -1
- package/lib/components/index.d.ts +19 -11
- package/lib/core/DirectionProvider/DirectionProvider.d.ts +1 -1
- package/lib/core/InlineStyles/InlineStyles.d.ts +1 -1
- package/lib/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.d.ts +1 -1
- package/lib/core/MantineProvider/MantineClasses/MantineClasses.d.ts +1 -2
- package/lib/core/MantineProvider/MantineCssVariables/MantineCssVariables.d.ts +1 -2
- package/lib/core/MantineProvider/MantineProvider.d.ts +1 -1
- package/lib/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.d.ts +1 -1
- package/lib/core/factory/factory.d.ts +1 -1
- package/lib/core/styles-api/use-styles/use-styles.d.ts +1 -1
- package/lib/core/utils/create-optional-context/create-optional-context.d.ts +1 -1
- package/lib/core/utils/create-safe-context/create-safe-context.d.ts +1 -1
- package/lib/core/utils/get-size/get-size.d.ts +6 -6
- package/package.json +9 -9
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import React, { useState, useRef, useEffect } from 'react';
|
|
2
|
+
import { useId, useUncontrolled } from '@mantine/hooks';
|
|
3
|
+
import { createPinArray } from './create-pin-array/create-pin-array.js';
|
|
4
|
+
import classes from './PinInput.module.css.js';
|
|
5
|
+
import { Group } from '../Group/Group.js';
|
|
6
|
+
import { Input } from '../Input/Input.js';
|
|
7
|
+
import { InputBase } from '../InputBase/InputBase.js';
|
|
8
|
+
import { factory } from '../../core/factory/factory.js';
|
|
9
|
+
import { useProps } from '../../core/MantineProvider/use-props/use-props.js';
|
|
10
|
+
import { useStyles } from '../../core/styles-api/use-styles/use-styles.js';
|
|
11
|
+
import { useResolvedStylesApi } from '../../core/styles-api/use-resolved-styles-api/use-resolved-styles-api.js';
|
|
12
|
+
import { createVarsResolver } from '../../core/styles-api/create-vars-resolver/create-vars-resolver.js';
|
|
13
|
+
import { getSize } from '../../core/utils/get-size/get-size.js';
|
|
14
|
+
|
|
15
|
+
var __defProp = Object.defineProperty;
|
|
16
|
+
var __defProps = Object.defineProperties;
|
|
17
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
18
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
19
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
20
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
21
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
22
|
+
var __spreadValues = (a, b) => {
|
|
23
|
+
for (var prop in b || (b = {}))
|
|
24
|
+
if (__hasOwnProp.call(b, prop))
|
|
25
|
+
__defNormalProp(a, prop, b[prop]);
|
|
26
|
+
if (__getOwnPropSymbols)
|
|
27
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
28
|
+
if (__propIsEnum.call(b, prop))
|
|
29
|
+
__defNormalProp(a, prop, b[prop]);
|
|
30
|
+
}
|
|
31
|
+
return a;
|
|
32
|
+
};
|
|
33
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
34
|
+
var __objRest = (source, exclude) => {
|
|
35
|
+
var target = {};
|
|
36
|
+
for (var prop in source)
|
|
37
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
38
|
+
target[prop] = source[prop];
|
|
39
|
+
if (source != null && __getOwnPropSymbols)
|
|
40
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
41
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
42
|
+
target[prop] = source[prop];
|
|
43
|
+
}
|
|
44
|
+
return target;
|
|
45
|
+
};
|
|
46
|
+
const regex = {
|
|
47
|
+
number: /^[0-9]+$/,
|
|
48
|
+
alphanumeric: /^[a-zA-Z0-9]+$/i
|
|
49
|
+
};
|
|
50
|
+
const defaultProps = {
|
|
51
|
+
size: "sm",
|
|
52
|
+
gap: "sm",
|
|
53
|
+
length: 4,
|
|
54
|
+
manageFocus: true,
|
|
55
|
+
oneTimeCode: true,
|
|
56
|
+
placeholder: "\u25CB",
|
|
57
|
+
type: "alphanumeric",
|
|
58
|
+
ariaLabel: "PinInput"
|
|
59
|
+
};
|
|
60
|
+
const varsResolver = createVarsResolver((_, { size }) => ({
|
|
61
|
+
root: {
|
|
62
|
+
"--pin-input-size": getSize(size != null ? size : defaultProps.size, "pin-input-size")
|
|
63
|
+
}
|
|
64
|
+
}));
|
|
65
|
+
const PinInput = factory((props, ref) => {
|
|
66
|
+
const _a = useProps("PinInput", defaultProps, props), {
|
|
67
|
+
name,
|
|
68
|
+
form,
|
|
69
|
+
className,
|
|
70
|
+
value,
|
|
71
|
+
defaultValue,
|
|
72
|
+
variant,
|
|
73
|
+
gap,
|
|
74
|
+
style,
|
|
75
|
+
size,
|
|
76
|
+
classNames,
|
|
77
|
+
styles,
|
|
78
|
+
unstyled,
|
|
79
|
+
length,
|
|
80
|
+
onChange,
|
|
81
|
+
onComplete,
|
|
82
|
+
manageFocus,
|
|
83
|
+
autoFocus,
|
|
84
|
+
error,
|
|
85
|
+
radius,
|
|
86
|
+
disabled,
|
|
87
|
+
oneTimeCode,
|
|
88
|
+
placeholder,
|
|
89
|
+
type,
|
|
90
|
+
mask,
|
|
91
|
+
readOnly,
|
|
92
|
+
inputType,
|
|
93
|
+
inputMode,
|
|
94
|
+
ariaLabel,
|
|
95
|
+
vars
|
|
96
|
+
} = _a, others = __objRest(_a, [
|
|
97
|
+
"name",
|
|
98
|
+
"form",
|
|
99
|
+
"className",
|
|
100
|
+
"value",
|
|
101
|
+
"defaultValue",
|
|
102
|
+
"variant",
|
|
103
|
+
"gap",
|
|
104
|
+
"style",
|
|
105
|
+
"size",
|
|
106
|
+
"classNames",
|
|
107
|
+
"styles",
|
|
108
|
+
"unstyled",
|
|
109
|
+
"length",
|
|
110
|
+
"onChange",
|
|
111
|
+
"onComplete",
|
|
112
|
+
"manageFocus",
|
|
113
|
+
"autoFocus",
|
|
114
|
+
"error",
|
|
115
|
+
"radius",
|
|
116
|
+
"disabled",
|
|
117
|
+
"oneTimeCode",
|
|
118
|
+
"placeholder",
|
|
119
|
+
"type",
|
|
120
|
+
"mask",
|
|
121
|
+
"readOnly",
|
|
122
|
+
"inputType",
|
|
123
|
+
"inputMode",
|
|
124
|
+
"ariaLabel",
|
|
125
|
+
"vars"
|
|
126
|
+
]);
|
|
127
|
+
const uuid = useId(name);
|
|
128
|
+
const getStyles = useStyles({
|
|
129
|
+
name: "PinInput",
|
|
130
|
+
classes,
|
|
131
|
+
props,
|
|
132
|
+
className,
|
|
133
|
+
style,
|
|
134
|
+
classNames,
|
|
135
|
+
styles,
|
|
136
|
+
unstyled,
|
|
137
|
+
vars,
|
|
138
|
+
varsResolver
|
|
139
|
+
});
|
|
140
|
+
const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi({
|
|
141
|
+
classNames,
|
|
142
|
+
styles,
|
|
143
|
+
props
|
|
144
|
+
});
|
|
145
|
+
const [focusedIndex, setFocusedIndex] = useState(-1);
|
|
146
|
+
const [_value, setValues] = useUncontrolled({
|
|
147
|
+
value,
|
|
148
|
+
defaultValue,
|
|
149
|
+
finalValue: "",
|
|
150
|
+
onChange
|
|
151
|
+
});
|
|
152
|
+
const inputsRef = useRef([]);
|
|
153
|
+
const validate = (code) => {
|
|
154
|
+
const re = type instanceof RegExp ? type : type && type in regex ? regex[type] : null;
|
|
155
|
+
return re == null ? void 0 : re.test(code);
|
|
156
|
+
};
|
|
157
|
+
const focusInputField = (dir, index) => {
|
|
158
|
+
if (!manageFocus)
|
|
159
|
+
return;
|
|
160
|
+
if (dir === "next") {
|
|
161
|
+
const nextIndex = index + 1;
|
|
162
|
+
inputsRef.current[nextIndex < (length != null ? length : 0) ? nextIndex : index].focus();
|
|
163
|
+
}
|
|
164
|
+
if (dir === "prev") {
|
|
165
|
+
const nextIndex = index - 1;
|
|
166
|
+
inputsRef.current[nextIndex > -1 ? nextIndex : index].focus();
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
const setFieldValue = (val, index) => {
|
|
170
|
+
const values = [...createPinArray(length != null ? length : 0, _value)];
|
|
171
|
+
values[index] = val;
|
|
172
|
+
setValues(values.join(""));
|
|
173
|
+
};
|
|
174
|
+
const handleChange = (event, index) => {
|
|
175
|
+
const inputValue = event.target.value;
|
|
176
|
+
const nextChar = inputValue.length > 1 ? inputValue.split("")[inputValue.length - 1] : inputValue;
|
|
177
|
+
const isValid = validate(nextChar);
|
|
178
|
+
if (isValid) {
|
|
179
|
+
setFieldValue(nextChar, index);
|
|
180
|
+
focusInputField("next", index);
|
|
181
|
+
} else {
|
|
182
|
+
setFieldValue("", index);
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
const handleKeyDown = (event, index) => {
|
|
186
|
+
if (event.key === "ArrowLeft") {
|
|
187
|
+
event.preventDefault();
|
|
188
|
+
focusInputField("prev", index);
|
|
189
|
+
} else if (event.key === "ArrowRight") {
|
|
190
|
+
event.preventDefault();
|
|
191
|
+
focusInputField("next", index);
|
|
192
|
+
} else if (event.key === "Delete") {
|
|
193
|
+
event.preventDefault();
|
|
194
|
+
setFieldValue("", index);
|
|
195
|
+
} else if (event.key === "Backspace") {
|
|
196
|
+
event.preventDefault();
|
|
197
|
+
setFieldValue("", index);
|
|
198
|
+
if (length === index + 1) {
|
|
199
|
+
if (event.target.value === "") {
|
|
200
|
+
focusInputField("prev", index);
|
|
201
|
+
}
|
|
202
|
+
} else {
|
|
203
|
+
focusInputField("prev", index);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
const handleFocus = (event, index) => {
|
|
208
|
+
event.target.select();
|
|
209
|
+
setFocusedIndex(index);
|
|
210
|
+
};
|
|
211
|
+
const handleBlur = () => {
|
|
212
|
+
setFocusedIndex(-1);
|
|
213
|
+
};
|
|
214
|
+
const handlePaste = (event) => {
|
|
215
|
+
event.preventDefault();
|
|
216
|
+
const copyValue = event.clipboardData.getData("Text");
|
|
217
|
+
const isValid = validate(copyValue);
|
|
218
|
+
if (isValid) {
|
|
219
|
+
setValues(copyValue);
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
useEffect(() => {
|
|
223
|
+
if (_value.length !== length)
|
|
224
|
+
return;
|
|
225
|
+
onComplete == null ? void 0 : onComplete(_value);
|
|
226
|
+
}, [_value]);
|
|
227
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
228
|
+
Group,
|
|
229
|
+
__spreadProps(__spreadValues(__spreadValues({}, others), getStyles("root")), {
|
|
230
|
+
role: "group",
|
|
231
|
+
id: uuid,
|
|
232
|
+
gap,
|
|
233
|
+
ref,
|
|
234
|
+
unstyled,
|
|
235
|
+
wrap: "nowrap",
|
|
236
|
+
variant,
|
|
237
|
+
__size: size
|
|
238
|
+
}),
|
|
239
|
+
createPinArray(length != null ? length : 0, _value).map((char, index) => /* @__PURE__ */ React.createElement(
|
|
240
|
+
Input,
|
|
241
|
+
__spreadProps(__spreadValues({
|
|
242
|
+
component: "input"
|
|
243
|
+
}, getStyles("pinInput", {
|
|
244
|
+
style: {
|
|
245
|
+
"--_input-padding": "0",
|
|
246
|
+
"--_input-text-align": "center"
|
|
247
|
+
}
|
|
248
|
+
})), {
|
|
249
|
+
classNames: resolvedClassNames,
|
|
250
|
+
styles: resolvedStyles,
|
|
251
|
+
size,
|
|
252
|
+
__staticSelector: "PinInput",
|
|
253
|
+
id: `${uuid}-${index + 1}`,
|
|
254
|
+
key: `${uuid}-${index}`,
|
|
255
|
+
inputMode: inputMode || (type === "number" ? "numeric" : "text"),
|
|
256
|
+
onChange: (event) => handleChange(event, index),
|
|
257
|
+
onKeyDown: (event) => handleKeyDown(event, index),
|
|
258
|
+
onFocus: (event) => handleFocus(event, index),
|
|
259
|
+
onBlur: handleBlur,
|
|
260
|
+
onPaste: handlePaste,
|
|
261
|
+
type: inputType || (mask ? "password" : type === "number" ? "tel" : "text"),
|
|
262
|
+
radius,
|
|
263
|
+
error,
|
|
264
|
+
variant,
|
|
265
|
+
disabled,
|
|
266
|
+
ref: (node) => {
|
|
267
|
+
inputsRef.current[index] = node;
|
|
268
|
+
},
|
|
269
|
+
autoComplete: oneTimeCode ? "one-time-code" : "off",
|
|
270
|
+
placeholder: focusedIndex === index ? "" : placeholder,
|
|
271
|
+
value: char,
|
|
272
|
+
autoFocus: autoFocus && index === 0,
|
|
273
|
+
unstyled,
|
|
274
|
+
"aria-label": ariaLabel,
|
|
275
|
+
readOnly
|
|
276
|
+
})
|
|
277
|
+
))
|
|
278
|
+
), /* @__PURE__ */ React.createElement("input", { type: "hidden", name, form, value: _value }));
|
|
279
|
+
});
|
|
280
|
+
PinInput.classes = __spreadValues(__spreadValues({}, classes), InputBase.classes);
|
|
281
|
+
PinInput.displayName = "@mantine/core/PinInput";
|
|
282
|
+
|
|
283
|
+
export { PinInput };
|
|
284
|
+
//# sourceMappingURL=PinInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PinInput.js","sources":["../../../src/components/PinInput/PinInput.tsx"],"sourcesContent":["import React, { useRef, useState, useEffect } from 'react';\nimport { useUncontrolled, useId } from '@mantine/hooks';\nimport {\n BoxProps,\n ElementProps,\n Factory,\n MantineRadius,\n MantineSize,\n MantineSpacing,\n StylesApiProps,\n createVarsResolver,\n factory,\n getSize,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '../../core';\nimport { Group } from '../Group';\nimport { Input } from '../Input';\nimport { createPinArray } from './create-pin-array/create-pin-array';\nimport classes from './PinInput.module.css';\nimport { InputBase } from '../InputBase';\n\nconst regex = {\n number: /^[0-9]+$/,\n alphanumeric: /^[a-zA-Z0-9]+$/i,\n};\n\nexport type PinInputStylesNames = 'root' | 'pinInput' | 'input';\n\nexport type PinInputCssVariables = {\n root: '--pin-input-size';\n};\n\nexport interface PinInputProps\n extends BoxProps,\n StylesApiProps<PinInputFactory>,\n ElementProps<'div', 'onChange'> {\n /** Hidden input name attribute */\n name?: string;\n\n /** Hidden input form attribute */\n form?: string;\n\n /** Key of `theme.spacing` or any valid CSS value for `gap`, numbers are converted to rem, `'md'` by default */\n gap?: MantineSpacing | (string & {}) | number;\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius, numbers are converted to rem, `theme.defaultRadius` by default */\n radius?: MantineRadius | (string & {}) | number;\n\n /** Controls inputs `width` and `height`, `'sm'` by default */\n size?: MantineSize;\n\n /** If set, the first input is focused when component is mounted, `false` by default */\n autoFocus?: boolean;\n\n /** Controlled component value */\n value?: string;\n\n /** Uncontrolled component default value */\n defaultValue?: string;\n\n /** Called when value changes */\n onChange?(value: string): void;\n\n /** Called when all inputs have value */\n onComplete?(value: string): void;\n\n /** Inputs placeholder, `'○'` by default */\n placeholder?: string;\n\n /** Determines whether focus should be moved automatically to the next input once filled, `true` by default */\n manageFocus?: boolean;\n\n /** Determines whether `autocomplete=\"one-time-code\"` attribute should be set on all inputs, `true` by default */\n oneTimeCode?: boolean;\n\n /** Base id used for all inputs, generated randomly by default */\n id?: string;\n\n /** Disables all inputs */\n disabled?: boolean;\n\n /** Adds error styles to all inputs */\n error?: boolean;\n\n /** Allowed values, `'alphanumeric'` by default */\n type?: 'alphanumeric' | 'number' | RegExp;\n\n /** Changes input type to `\"password\"`, `false` by default */\n mask?: boolean;\n\n /** Number of input boxes, `4` by default */\n length?: number;\n\n /** Determines whether input content can be edited */\n readOnly?: boolean;\n\n /** Inputs `type` attribute, inferred from the `type` prop if not specified */\n inputType?: React.HTMLInputTypeAttribute;\n\n /** `inputmode` attribute, inferred from the `type` prop if not specified */\n inputMode?:\n | 'none'\n | 'text'\n | 'tel'\n | 'url'\n | 'email'\n | 'numeric'\n | 'decimal'\n | 'search'\n | undefined;\n\n /** `aria-label` for the inputs */\n ariaLabel?: string;\n}\n\nexport type PinInputFactory = Factory<{\n props: PinInputProps;\n ref: HTMLInputElement;\n stylesNames: PinInputStylesNames;\n vars: PinInputCssVariables;\n}>;\n\nconst defaultProps: Partial<PinInputProps> = {\n size: 'sm',\n gap: 'sm',\n length: 4,\n manageFocus: true,\n oneTimeCode: true,\n placeholder: '○',\n type: 'alphanumeric',\n ariaLabel: 'PinInput',\n};\n\nconst varsResolver = createVarsResolver<PinInputFactory>((_, { size }) => ({\n root: {\n '--pin-input-size': getSize(size ?? defaultProps.size, 'pin-input-size'),\n },\n}));\n\nexport const PinInput = factory<PinInputFactory>((props, ref) => {\n const {\n name,\n form,\n className,\n value,\n defaultValue,\n variant,\n gap,\n style,\n size,\n classNames,\n styles,\n unstyled,\n length,\n onChange,\n onComplete,\n manageFocus,\n autoFocus,\n error,\n radius,\n disabled,\n oneTimeCode,\n placeholder,\n type,\n mask,\n readOnly,\n inputType,\n inputMode,\n ariaLabel,\n vars,\n ...others\n } = useProps('PinInput', defaultProps, props);\n\n const uuid = useId(name);\n\n const getStyles = useStyles<PinInputFactory>({\n name: 'PinInput',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<PinInputFactory>({\n classNames,\n styles,\n props,\n });\n\n const [focusedIndex, setFocusedIndex] = useState(-1);\n\n const [_value, setValues] = useUncontrolled({\n value,\n defaultValue,\n finalValue: '',\n onChange,\n });\n\n const inputsRef = useRef<Array<HTMLInputElement>>([]);\n\n const validate = (code: string) => {\n const re = type instanceof RegExp ? type : type && type in regex ? regex[type] : null;\n return re?.test(code);\n };\n\n const focusInputField = (dir: 'next' | 'prev', index: number) => {\n if (!manageFocus) return;\n\n if (dir === 'next') {\n const nextIndex = index + 1;\n inputsRef.current[nextIndex < (length ?? 0) ? nextIndex : index].focus();\n }\n\n if (dir === 'prev') {\n const nextIndex = index - 1;\n\n inputsRef.current[nextIndex > -1 ? nextIndex : index].focus();\n }\n };\n\n const setFieldValue = (val: string, index: number) => {\n const values = [...createPinArray(length ?? 0, _value)];\n values[index] = val;\n setValues(values.join(''));\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>, index: number) => {\n const inputValue = event.target.value;\n const nextChar =\n inputValue.length > 1 ? inputValue.split('')[inputValue.length - 1] : inputValue;\n\n const isValid = validate(nextChar);\n\n if (isValid) {\n setFieldValue(nextChar, index);\n focusInputField('next', index);\n } else {\n setFieldValue('', index);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>, index: number) => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n focusInputField('prev', index);\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n focusInputField('next', index);\n } else if (event.key === 'Delete') {\n event.preventDefault();\n setFieldValue('', index);\n } else if (event.key === 'Backspace') {\n event.preventDefault();\n setFieldValue('', index);\n if (length === index + 1) {\n if ((event.target as HTMLInputElement).value === '') {\n focusInputField('prev', index);\n }\n } else {\n focusInputField('prev', index);\n }\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>, index: number) => {\n event.target.select();\n setFocusedIndex(index);\n };\n\n const handleBlur = () => {\n setFocusedIndex(-1);\n };\n\n const handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n event.preventDefault();\n const copyValue = event.clipboardData.getData('Text');\n const isValid = validate(copyValue);\n\n if (isValid) {\n setValues(copyValue);\n }\n };\n\n useEffect(() => {\n if (_value.length !== length) return;\n\n onComplete?.(_value);\n }, [_value]);\n\n return (\n <>\n <Group\n {...others}\n {...getStyles('root')}\n role=\"group\"\n id={uuid}\n gap={gap}\n ref={ref}\n unstyled={unstyled}\n wrap=\"nowrap\"\n variant={variant}\n __size={size}\n >\n {createPinArray(length ?? 0, _value).map((char, index) => (\n <Input\n component=\"input\"\n {...getStyles('pinInput', {\n style: {\n '--_input-padding': '0',\n '--_input-text-align': 'center',\n } as React.CSSProperties,\n })}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n size={size}\n __staticSelector=\"PinInput\"\n id={`${uuid}-${index + 1}`}\n key={`${uuid}-${index}`}\n inputMode={inputMode || (type === 'number' ? 'numeric' : 'text')}\n onChange={(event) => handleChange(event, index)}\n onKeyDown={(event) => handleKeyDown(event, index)}\n onFocus={(event) => handleFocus(event, index)}\n onBlur={handleBlur}\n onPaste={handlePaste}\n type={inputType || (mask ? 'password' : type === 'number' ? 'tel' : 'text')}\n radius={radius}\n error={error}\n variant={variant}\n disabled={disabled}\n ref={(node) => {\n inputsRef.current[index] = node!;\n }}\n autoComplete={oneTimeCode ? 'one-time-code' : 'off'}\n placeholder={focusedIndex === index ? '' : placeholder}\n value={char}\n autoFocus={autoFocus && index === 0}\n unstyled={unstyled}\n aria-label={ariaLabel}\n readOnly={readOnly}\n />\n ))}\n </Group>\n\n <input type=\"hidden\" name={name} form={form} value={_value} />\n </>\n );\n});\n\nPinInput.classes = { ...classes, ...InputBase.classes };\nPinInput.displayName = '@mantine/core/PinInput';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PinInput.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
function createPinArray(length, value) {
|
|
2
|
+
if (length < 1) {
|
|
3
|
+
return [];
|
|
4
|
+
}
|
|
5
|
+
const values = new Array(length).fill("");
|
|
6
|
+
if (value) {
|
|
7
|
+
const splitted = value.trim().split("");
|
|
8
|
+
for (let i = 0; i < Math.min(length, splitted.length); i += 1) {
|
|
9
|
+
values[i] = splitted[i];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return values;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { createPinArray };
|
|
16
|
+
//# sourceMappingURL=create-pin-array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-pin-array.js","sources":["../../../../src/components/PinInput/create-pin-array/create-pin-array.ts"],"sourcesContent":["export function createPinArray(length: number, value: string): string[] {\n if (length < 1) {\n return [];\n }\n\n const values = new Array<string>(length).fill('');\n\n if (value) {\n const splitted = value.trim().split('');\n for (let i = 0; i < Math.min(length, splitted.length); i += 1) {\n values[i] = splitted[i];\n }\n }\n\n return values;\n}\n"],"names":[],"mappings":"AAAO,SAAS,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE;AAC9C,EAAE,IAAI,MAAM,GAAG,CAAC,EAAE;AAClB,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC5C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACnE,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB;;;;"}
|
|
@@ -7,11 +7,11 @@ import { PopoverDropdown } from './PopoverDropdown/PopoverDropdown.js';
|
|
|
7
7
|
import classes from './Popover.module.css.js';
|
|
8
8
|
import { getFloatingPosition } from '../Floating/get-floating-position/get-floating-position.js';
|
|
9
9
|
import { getDefaultZIndex } from '../../core/utils/get-default-z-index/get-default-z-index.js';
|
|
10
|
-
import { createVarsResolver } from '../../core/styles-api/create-vars-resolver/create-vars-resolver.js';
|
|
11
|
-
import { getRadius, getShadow } from '../../core/utils/get-size/get-size.js';
|
|
12
10
|
import { useProps } from '../../core/MantineProvider/use-props/use-props.js';
|
|
13
11
|
import { useStyles } from '../../core/styles-api/use-styles/use-styles.js';
|
|
14
12
|
import { useDirection } from '../../core/DirectionProvider/DirectionProvider.js';
|
|
13
|
+
import { createVarsResolver } from '../../core/styles-api/create-vars-resolver/create-vars-resolver.js';
|
|
14
|
+
import { getRadius, getShadow } from '../../core/utils/get-size/get-size.js';
|
|
15
15
|
|
|
16
16
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
17
17
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
@@ -175,16 +175,16 @@ function Popover(_props) {
|
|
|
175
175
|
const reference = useCallback(
|
|
176
176
|
(node) => {
|
|
177
177
|
setTargetNode(node);
|
|
178
|
-
popover.floating.
|
|
178
|
+
popover.floating.refs.setReference(node);
|
|
179
179
|
},
|
|
180
|
-
[popover.floating.
|
|
180
|
+
[popover.floating.refs.setReference]
|
|
181
181
|
);
|
|
182
182
|
const floating = useCallback(
|
|
183
183
|
(node) => {
|
|
184
184
|
setDropdownNode(node);
|
|
185
|
-
popover.floating.
|
|
185
|
+
popover.floating.refs.setFloating(node);
|
|
186
186
|
},
|
|
187
|
-
[popover.floating.
|
|
187
|
+
[popover.floating.refs.setFloating]
|
|
188
188
|
);
|
|
189
189
|
return /* @__PURE__ */ React.createElement(
|
|
190
190
|
PopoverContextProvider,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popover.js","sources":["../../../src/components/Popover/Popover.tsx"],"sourcesContent":["/* eslint-disable react/no-unused-prop-types */\nimport React, { useRef, useState, useCallback } from 'react';\nimport { useId, useClickOutside } from '@mantine/hooks';\nimport {\n MantineShadow,\n getDefaultZIndex,\n useProps,\n MantineRadius,\n useDirection,\n useStyles,\n Factory,\n createVarsResolver,\n getRadius,\n getShadow,\n StylesApiProps,\n ExtendComponent,\n} from '../../core';\nimport { TransitionOverride } from '../Transition';\nimport {\n getFloatingPosition,\n FloatingAxesOffsets,\n FloatingPosition,\n ArrowPosition,\n} from '../Floating';\nimport { PortalProps } from '../Portal';\nimport { usePopover } from './use-popover';\nimport { PopoverContextProvider } from './Popover.context';\nimport { PopoverWidth, PopoverMiddlewares } from './Popover.types';\nimport { PopoverTarget } from './PopoverTarget/PopoverTarget';\nimport { PopoverDropdown } from './PopoverDropdown/PopoverDropdown';\nimport classes from './Popover.module.css';\n\nexport type PopoverStylesNames = 'dropdown' | 'arrow';\nexport type PopoverCssVariables = {\n dropdown: '--popover-radius' | '--popover-shadow';\n};\n\nexport interface __PopoverProps {\n /** Dropdown position relative to the target element, `'bottom'` by default */\n position?: FloatingPosition;\n\n /** Offset of the dropdown element, `8` by default */\n offset?: number | FloatingAxesOffsets;\n\n /** Called when dropdown position changes */\n onPositionChange?(position: FloatingPosition): void;\n\n /** `useEffect` dependencies to force update dropdown position, `[]` by default */\n positionDependencies?: any[];\n\n /** Called when dropdown closes */\n onClose?(): void;\n\n /** Called when dropdown opens */\n onOpen?(): void;\n\n /** If set dropdown will not be unmounted from the DOM when it is hidden, `display: none` styles will be added instead, `false` by default */\n keepMounted?: boolean;\n\n /** Props passed down to the `Transition` component that used to animate dropdown presence, use to configure duration and animation type, `{ duration: 150, transition: 'fade' }` by default */\n transitionProps?: TransitionOverride;\n\n /** Dropdown width, or `'target'` to make dropdown width the same as target element, `'max-content'` by default */\n width?: PopoverWidth;\n\n /** Floating ui middlewares to configure position handling, `{ flip: true, shift: true, inline: false }` by default */\n middlewares?: PopoverMiddlewares;\n\n /** Determines whether component should have an arrow, `false` by default */\n withArrow?: boolean;\n\n /** Arrow size in px, `7` by default */\n arrowSize?: number;\n\n /** Arrow offset in px, `5` by default */\n arrowOffset?: number;\n\n /** Arrow `border-radius` in px, `0` by default */\n arrowRadius?: number;\n\n /** Arrow position */\n arrowPosition?: ArrowPosition;\n\n /** Determines whether dropdown should be rendered within the `Portal`, `true` by default */\n withinPortal?: boolean;\n\n /** Props to pass down to the `Portal` when `withinPortal` is true */\n portalProps?: Omit<PortalProps, 'children'>;\n\n /** Dropdown `z-index`, `300` by default */\n zIndex?: React.CSSProperties['zIndex'];\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius, `theme.defaultRadius` by default */\n radius?: MantineRadius | (string & {}) | number;\n\n /** Key of `theme.shadows` or any other valid CSS `box-shadow` value */\n shadow?: MantineShadow | (string & {});\n\n /** If set, popover dropdown will not be rendered */\n disabled?: boolean;\n\n /** Determines whether focus should be automatically returned to control when dropdown closes, `false` by default */\n returnFocus?: boolean;\n}\n\nexport interface PopoverProps extends __PopoverProps, StylesApiProps<PopoverFactory> {\n __staticSelector?: string;\n\n /** `Popover.Target` and `Popover.Dropdown` components */\n children?: React.ReactNode;\n\n /** Initial opened state for uncontrolled component */\n defaultOpened?: boolean;\n\n /** Controlled dropdown opened state */\n opened?: boolean;\n\n /** Called with current state when dropdown opens or closes */\n onChange?(opened: boolean): void;\n\n /** Determines whether dropdown should be closed on outside clicks, `true` by default */\n closeOnClickOutside?: boolean;\n\n /** Events that trigger outside clicks */\n clickOutsideEvents?: string[];\n\n /** Determines whether focus should be trapped within dropdown, `false` by default */\n trapFocus?: boolean;\n\n /** Determines whether dropdown should be closed when `Escape` key is pressed, `true` by default */\n closeOnEscape?: boolean;\n\n /** id base to create accessibility connections */\n id?: string;\n\n /** Determines whether dropdown and target elements should have accessible roles, `true` by default */\n withRoles?: boolean;\n}\n\nexport type PopoverFactory = Factory<{\n props: PopoverProps;\n stylesNames: PopoverStylesNames;\n vars: PopoverCssVariables;\n}>;\n\nconst defaultProps: Partial<PopoverProps> = {\n position: 'bottom',\n offset: 8,\n positionDependencies: [],\n transitionProps: { transition: 'fade', duration: 150 },\n middlewares: { flip: true, shift: true, inline: false },\n arrowSize: 7,\n arrowOffset: 5,\n arrowRadius: 0,\n arrowPosition: 'side',\n closeOnClickOutside: true,\n withinPortal: true,\n closeOnEscape: true,\n trapFocus: false,\n withRoles: true,\n returnFocus: false,\n clickOutsideEvents: ['mousedown', 'touchstart'],\n zIndex: getDefaultZIndex('popover'),\n __staticSelector: 'Popover',\n width: 'max-content',\n};\n\nconst varsResolver = createVarsResolver<PopoverFactory>((_, { radius, shadow }) => ({\n dropdown: {\n '--popover-radius': getRadius(radius),\n '--popover-shadow': getShadow(shadow),\n },\n}));\n\nexport function Popover(_props: PopoverProps) {\n const props = useProps('Popover', defaultProps, _props);\n const {\n children,\n position,\n offset,\n onPositionChange,\n positionDependencies,\n opened,\n transitionProps,\n width,\n middlewares,\n withArrow,\n arrowSize,\n arrowOffset,\n arrowRadius,\n arrowPosition,\n unstyled,\n classNames,\n styles,\n closeOnClickOutside,\n withinPortal,\n portalProps,\n closeOnEscape,\n clickOutsideEvents,\n trapFocus,\n onClose,\n onOpen,\n onChange,\n zIndex,\n radius,\n shadow,\n id,\n defaultOpened,\n __staticSelector,\n withRoles,\n disabled,\n returnFocus,\n variant,\n keepMounted,\n vars,\n ...others\n } = props;\n\n const getStyles = useStyles<PopoverFactory>({\n name: __staticSelector!,\n props,\n classes,\n classNames,\n styles,\n unstyled,\n rootSelector: 'dropdown',\n vars,\n varsResolver,\n });\n\n const arrowRef = useRef<HTMLDivElement | null>(null);\n const [targetNode, setTargetNode] = useState<HTMLElement | null>(null);\n const [dropdownNode, setDropdownNode] = useState<HTMLElement | null>(null);\n const { dir } = useDirection();\n\n const uid = useId(id);\n const popover = usePopover({\n middlewares,\n width,\n position: getFloatingPosition(dir, position!),\n offset: typeof offset === 'number' ? offset + (withArrow ? arrowSize! / 2 : 0) : offset!,\n arrowRef,\n arrowOffset: arrowOffset!,\n onPositionChange,\n positionDependencies,\n opened,\n defaultOpened,\n onChange,\n onOpen,\n onClose,\n });\n\n useClickOutside(() => closeOnClickOutside && popover.onClose(), clickOutsideEvents, [\n targetNode,\n dropdownNode,\n ]);\n\n const reference = useCallback(\n (node: HTMLElement) => {\n setTargetNode(node);\n popover.floating.reference(node);\n },\n [popover.floating.reference]\n );\n\n const floating = useCallback(\n (node: HTMLElement) => {\n setDropdownNode(node);\n popover.floating.floating(node);\n },\n [popover.floating.floating]\n );\n\n return (\n <PopoverContextProvider\n value={{\n returnFocus,\n disabled,\n controlled: popover.controlled,\n reference,\n floating,\n x: popover.floating.x!,\n y: popover.floating.y!,\n arrowX: popover.floating?.middlewareData?.arrow?.x!,\n arrowY: popover.floating?.middlewareData?.arrow?.y!,\n opened: popover.opened,\n arrowRef,\n transitionProps,\n width,\n withArrow,\n arrowSize: arrowSize!,\n arrowOffset: arrowOffset!,\n arrowRadius: arrowRadius!,\n arrowPosition: arrowPosition!,\n placement: popover.floating.placement,\n trapFocus,\n withinPortal,\n portalProps,\n zIndex,\n radius,\n shadow,\n closeOnEscape,\n onClose: popover.onClose,\n onToggle: popover.onToggle,\n getTargetId: () => `${uid}-target`,\n getDropdownId: () => `${uid}-dropdown`,\n withRoles,\n targetProps: others,\n __staticSelector: __staticSelector!,\n classNames,\n styles,\n unstyled,\n variant,\n keepMounted,\n getStyles,\n }}\n >\n {children}\n </PopoverContextProvider>\n );\n}\n\nPopover.Target = PopoverTarget;\nPopover.Dropdown = PopoverDropdown;\nPopover.displayName = '@mantine/core/Popover';\nPopover.extend = (input: ExtendComponent<PopoverFactory>) => input;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Popover.js","sources":["../../../src/components/Popover/Popover.tsx"],"sourcesContent":["/* eslint-disable react/no-unused-prop-types */\nimport React, { useRef, useState, useCallback } from 'react';\nimport { useId, useClickOutside } from '@mantine/hooks';\nimport {\n MantineShadow,\n getDefaultZIndex,\n useProps,\n MantineRadius,\n useDirection,\n useStyles,\n Factory,\n createVarsResolver,\n getRadius,\n getShadow,\n StylesApiProps,\n ExtendComponent,\n} from '../../core';\nimport { TransitionOverride } from '../Transition';\nimport {\n getFloatingPosition,\n FloatingAxesOffsets,\n FloatingPosition,\n ArrowPosition,\n} from '../Floating';\nimport { PortalProps } from '../Portal';\nimport { usePopover } from './use-popover';\nimport { PopoverContextProvider } from './Popover.context';\nimport { PopoverWidth, PopoverMiddlewares } from './Popover.types';\nimport { PopoverTarget } from './PopoverTarget/PopoverTarget';\nimport { PopoverDropdown } from './PopoverDropdown/PopoverDropdown';\nimport classes from './Popover.module.css';\n\nexport type PopoverStylesNames = 'dropdown' | 'arrow';\nexport type PopoverCssVariables = {\n dropdown: '--popover-radius' | '--popover-shadow';\n};\n\nexport interface __PopoverProps {\n /** Dropdown position relative to the target element, `'bottom'` by default */\n position?: FloatingPosition;\n\n /** Offset of the dropdown element, `8` by default */\n offset?: number | FloatingAxesOffsets;\n\n /** Called when dropdown position changes */\n onPositionChange?(position: FloatingPosition): void;\n\n /** `useEffect` dependencies to force update dropdown position, `[]` by default */\n positionDependencies?: any[];\n\n /** Called when dropdown closes */\n onClose?(): void;\n\n /** Called when dropdown opens */\n onOpen?(): void;\n\n /** If set dropdown will not be unmounted from the DOM when it is hidden, `display: none` styles will be added instead, `false` by default */\n keepMounted?: boolean;\n\n /** Props passed down to the `Transition` component that used to animate dropdown presence, use to configure duration and animation type, `{ duration: 150, transition: 'fade' }` by default */\n transitionProps?: TransitionOverride;\n\n /** Dropdown width, or `'target'` to make dropdown width the same as target element, `'max-content'` by default */\n width?: PopoverWidth;\n\n /** Floating ui middlewares to configure position handling, `{ flip: true, shift: true, inline: false }` by default */\n middlewares?: PopoverMiddlewares;\n\n /** Determines whether component should have an arrow, `false` by default */\n withArrow?: boolean;\n\n /** Arrow size in px, `7` by default */\n arrowSize?: number;\n\n /** Arrow offset in px, `5` by default */\n arrowOffset?: number;\n\n /** Arrow `border-radius` in px, `0` by default */\n arrowRadius?: number;\n\n /** Arrow position */\n arrowPosition?: ArrowPosition;\n\n /** Determines whether dropdown should be rendered within the `Portal`, `true` by default */\n withinPortal?: boolean;\n\n /** Props to pass down to the `Portal` when `withinPortal` is true */\n portalProps?: Omit<PortalProps, 'children'>;\n\n /** Dropdown `z-index`, `300` by default */\n zIndex?: React.CSSProperties['zIndex'];\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius, `theme.defaultRadius` by default */\n radius?: MantineRadius | (string & {}) | number;\n\n /** Key of `theme.shadows` or any other valid CSS `box-shadow` value */\n shadow?: MantineShadow | (string & {});\n\n /** If set, popover dropdown will not be rendered */\n disabled?: boolean;\n\n /** Determines whether focus should be automatically returned to control when dropdown closes, `false` by default */\n returnFocus?: boolean;\n}\n\nexport interface PopoverProps extends __PopoverProps, StylesApiProps<PopoverFactory> {\n __staticSelector?: string;\n\n /** `Popover.Target` and `Popover.Dropdown` components */\n children?: React.ReactNode;\n\n /** Initial opened state for uncontrolled component */\n defaultOpened?: boolean;\n\n /** Controlled dropdown opened state */\n opened?: boolean;\n\n /** Called with current state when dropdown opens or closes */\n onChange?(opened: boolean): void;\n\n /** Determines whether dropdown should be closed on outside clicks, `true` by default */\n closeOnClickOutside?: boolean;\n\n /** Events that trigger outside clicks */\n clickOutsideEvents?: string[];\n\n /** Determines whether focus should be trapped within dropdown, `false` by default */\n trapFocus?: boolean;\n\n /** Determines whether dropdown should be closed when `Escape` key is pressed, `true` by default */\n closeOnEscape?: boolean;\n\n /** id base to create accessibility connections */\n id?: string;\n\n /** Determines whether dropdown and target elements should have accessible roles, `true` by default */\n withRoles?: boolean;\n}\n\nexport type PopoverFactory = Factory<{\n props: PopoverProps;\n stylesNames: PopoverStylesNames;\n vars: PopoverCssVariables;\n}>;\n\nconst defaultProps: Partial<PopoverProps> = {\n position: 'bottom',\n offset: 8,\n positionDependencies: [],\n transitionProps: { transition: 'fade', duration: 150 },\n middlewares: { flip: true, shift: true, inline: false },\n arrowSize: 7,\n arrowOffset: 5,\n arrowRadius: 0,\n arrowPosition: 'side',\n closeOnClickOutside: true,\n withinPortal: true,\n closeOnEscape: true,\n trapFocus: false,\n withRoles: true,\n returnFocus: false,\n clickOutsideEvents: ['mousedown', 'touchstart'],\n zIndex: getDefaultZIndex('popover'),\n __staticSelector: 'Popover',\n width: 'max-content',\n};\n\nconst varsResolver = createVarsResolver<PopoverFactory>((_, { radius, shadow }) => ({\n dropdown: {\n '--popover-radius': getRadius(radius),\n '--popover-shadow': getShadow(shadow),\n },\n}));\n\nexport function Popover(_props: PopoverProps) {\n const props = useProps('Popover', defaultProps, _props);\n const {\n children,\n position,\n offset,\n onPositionChange,\n positionDependencies,\n opened,\n transitionProps,\n width,\n middlewares,\n withArrow,\n arrowSize,\n arrowOffset,\n arrowRadius,\n arrowPosition,\n unstyled,\n classNames,\n styles,\n closeOnClickOutside,\n withinPortal,\n portalProps,\n closeOnEscape,\n clickOutsideEvents,\n trapFocus,\n onClose,\n onOpen,\n onChange,\n zIndex,\n radius,\n shadow,\n id,\n defaultOpened,\n __staticSelector,\n withRoles,\n disabled,\n returnFocus,\n variant,\n keepMounted,\n vars,\n ...others\n } = props;\n\n const getStyles = useStyles<PopoverFactory>({\n name: __staticSelector!,\n props,\n classes,\n classNames,\n styles,\n unstyled,\n rootSelector: 'dropdown',\n vars,\n varsResolver,\n });\n\n const arrowRef = useRef<HTMLDivElement | null>(null);\n const [targetNode, setTargetNode] = useState<HTMLElement | null>(null);\n const [dropdownNode, setDropdownNode] = useState<HTMLElement | null>(null);\n const { dir } = useDirection();\n\n const uid = useId(id);\n const popover = usePopover({\n middlewares,\n width,\n position: getFloatingPosition(dir, position!),\n offset: typeof offset === 'number' ? offset + (withArrow ? arrowSize! / 2 : 0) : offset!,\n arrowRef,\n arrowOffset: arrowOffset!,\n onPositionChange,\n positionDependencies,\n opened,\n defaultOpened,\n onChange,\n onOpen,\n onClose,\n });\n\n useClickOutside(() => closeOnClickOutside && popover.onClose(), clickOutsideEvents, [\n targetNode,\n dropdownNode,\n ]);\n\n const reference = useCallback(\n (node: HTMLElement) => {\n setTargetNode(node);\n popover.floating.refs.setReference(node);\n },\n [popover.floating.refs.setReference]\n );\n\n const floating = useCallback(\n (node: HTMLElement) => {\n setDropdownNode(node);\n popover.floating.refs.setFloating(node);\n },\n [popover.floating.refs.setFloating]\n );\n\n return (\n <PopoverContextProvider\n value={{\n returnFocus,\n disabled,\n controlled: popover.controlled,\n reference,\n floating,\n x: popover.floating.x!,\n y: popover.floating.y!,\n arrowX: popover.floating?.middlewareData?.arrow?.x!,\n arrowY: popover.floating?.middlewareData?.arrow?.y!,\n opened: popover.opened,\n arrowRef,\n transitionProps,\n width,\n withArrow,\n arrowSize: arrowSize!,\n arrowOffset: arrowOffset!,\n arrowRadius: arrowRadius!,\n arrowPosition: arrowPosition!,\n placement: popover.floating.placement,\n trapFocus,\n withinPortal,\n portalProps,\n zIndex,\n radius,\n shadow,\n closeOnEscape,\n onClose: popover.onClose,\n onToggle: popover.onToggle,\n getTargetId: () => `${uid}-target`,\n getDropdownId: () => `${uid}-dropdown`,\n withRoles,\n targetProps: others,\n __staticSelector: __staticSelector!,\n classNames,\n styles,\n unstyled,\n variant,\n keepMounted,\n getStyles,\n }}\n >\n {children}\n </PopoverContextProvider>\n );\n}\n\nPopover.Target = PopoverTarget;\nPopover.Dropdown = PopoverDropdown;\nPopover.displayName = '@mantine/core/Popover';\nPopover.extend = (input: ExtendComponent<PopoverFactory>) => input;\n"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@ import { cloneElement } from 'react';
|
|
|
2
2
|
import cx from 'clsx';
|
|
3
3
|
import { useMergedRef } from '@mantine/hooks';
|
|
4
4
|
import { usePopoverContext } from '../Popover.context.js';
|
|
5
|
-
import { factory } from '../../../core/factory/factory.js';
|
|
6
5
|
import { isElement } from '../../../core/utils/is-element/is-element.js';
|
|
6
|
+
import { factory } from '../../../core/factory/factory.js';
|
|
7
7
|
import { useProps } from '../../../core/MantineProvider/use-props/use-props.js';
|
|
8
8
|
|
|
9
9
|
var __defProp = Object.defineProperty;
|
|
@@ -6,11 +6,11 @@ import { ScrollAreaViewport } from './ScrollAreaViewport/ScrollAreaViewport.js';
|
|
|
6
6
|
import classes from './ScrollArea.module.css.js';
|
|
7
7
|
import { ScrollAreaThumb } from './ScrollAreaThumb/ScrollAreaThumb.js';
|
|
8
8
|
import { factory } from '../../core/factory/factory.js';
|
|
9
|
-
import { useProps } from '../../core/MantineProvider/use-props/use-props.js';
|
|
10
9
|
import { useStyles } from '../../core/styles-api/use-styles/use-styles.js';
|
|
11
|
-
import { Box } from '../../core/Box/Box.js';
|
|
12
10
|
import { createVarsResolver } from '../../core/styles-api/create-vars-resolver/create-vars-resolver.js';
|
|
13
11
|
import { rem } from '../../core/utils/units-converters/rem.js';
|
|
12
|
+
import { useProps } from '../../core/MantineProvider/use-props/use-props.js';
|
|
13
|
+
import { Box } from '../../core/Box/Box.js';
|
|
14
14
|
|
|
15
15
|
var __defProp = Object.defineProperty;
|
|
16
16
|
var __defProps = Object.defineProperties;
|
|
@@ -2,10 +2,10 @@ import React, { forwardRef, useRef, useState } from 'react';
|
|
|
2
2
|
import { useScrollAreaContext } from '../ScrollArea.context.js';
|
|
3
3
|
import { ScrollAreaScrollbarX } from './ScrollbarX.js';
|
|
4
4
|
import { ScrollAreaScrollbarY } from './ScrollbarY.js';
|
|
5
|
+
import { useDirection } from '../../../core/DirectionProvider/DirectionProvider.js';
|
|
5
6
|
import { getThumbRatio } from '../utils/get-thumb-ratio.js';
|
|
6
7
|
import { getThumbOffsetFromScroll } from '../utils/get-thumb-offset-from-scroll.js';
|
|
7
8
|
import { getScrollPositionFromPointer } from '../utils/get-scroll-position-from-pointer.js';
|
|
8
|
-
import { useDirection } from '../../../core/DirectionProvider/DirectionProvider.js';
|
|
9
9
|
|
|
10
10
|
var __defProp = Object.defineProperty;
|
|
11
11
|
var __defProps = Object.defineProperties;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import TextareaAutosize from 'react-textarea-autosize';
|
|
3
|
+
import { InputBase } from '../InputBase/InputBase.js';
|
|
4
|
+
import { factory } from '../../core/factory/factory.js';
|
|
5
|
+
import { useProps } from '../../core/MantineProvider/use-props/use-props.js';
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __defProps = Object.defineProperties;
|
|
9
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
10
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
13
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
14
|
+
var __spreadValues = (a, b) => {
|
|
15
|
+
for (var prop in b || (b = {}))
|
|
16
|
+
if (__hasOwnProp.call(b, prop))
|
|
17
|
+
__defNormalProp(a, prop, b[prop]);
|
|
18
|
+
if (__getOwnPropSymbols)
|
|
19
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
20
|
+
if (__propIsEnum.call(b, prop))
|
|
21
|
+
__defNormalProp(a, prop, b[prop]);
|
|
22
|
+
}
|
|
23
|
+
return a;
|
|
24
|
+
};
|
|
25
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
26
|
+
var __objRest = (source, exclude) => {
|
|
27
|
+
var target = {};
|
|
28
|
+
for (var prop in source)
|
|
29
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
30
|
+
target[prop] = source[prop];
|
|
31
|
+
if (source != null && __getOwnPropSymbols)
|
|
32
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
33
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
34
|
+
target[prop] = source[prop];
|
|
35
|
+
}
|
|
36
|
+
return target;
|
|
37
|
+
};
|
|
38
|
+
const defaultProps = {
|
|
39
|
+
size: "sm"
|
|
40
|
+
};
|
|
41
|
+
const Textarea = factory((props, ref) => {
|
|
42
|
+
const _a = useProps(
|
|
43
|
+
"Textarea",
|
|
44
|
+
defaultProps,
|
|
45
|
+
props
|
|
46
|
+
), { autosize, maxRows, minRows, __staticSelector } = _a, others = __objRest(_a, ["autosize", "maxRows", "minRows", "__staticSelector"]);
|
|
47
|
+
const autosizeProps = autosize ? { maxRows, minRows } : {};
|
|
48
|
+
return /* @__PURE__ */ React.createElement(
|
|
49
|
+
InputBase,
|
|
50
|
+
__spreadValues(__spreadProps(__spreadValues({
|
|
51
|
+
component: autosize ? TextareaAutosize : "textarea",
|
|
52
|
+
ref
|
|
53
|
+
}, others), {
|
|
54
|
+
__staticSelector: __staticSelector || "Textarea",
|
|
55
|
+
multiline: true,
|
|
56
|
+
"data-no-overflow": autosize && maxRows === void 0 || void 0
|
|
57
|
+
}), autosizeProps)
|
|
58
|
+
);
|
|
59
|
+
});
|
|
60
|
+
Textarea.classes = InputBase.classes;
|
|
61
|
+
Textarea.displayName = "@mantine/core/Textarea";
|
|
62
|
+
|
|
63
|
+
export { Textarea };
|
|
64
|
+
//# sourceMappingURL=Textarea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Textarea.js","sources":["../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":["import React from 'react';\nimport TextareaAutosize from 'react-textarea-autosize';\nimport { factory, ElementProps, useProps, Factory } from '../../core';\nimport { InputBase, InputBaseProps } from '../InputBase';\nimport { __InputStylesNames } from '../Input';\n\nexport interface TextareaProps extends InputBaseProps, ElementProps<'textarea', 'size'> {\n /** Determines whether the textarea height should grow with its content, `false` by default */\n autosize?: boolean;\n\n /** Maximum rows for autosize textarea to grow, ignored if `autosize` prop is not set */\n maxRows?: number;\n\n /** Minimum rows of autosize textarea, ignored if `autosize` prop is not set */\n minRows?: number;\n}\n\nexport type TextareaFactory = Factory<{\n props: TextareaProps;\n ref: HTMLInputElement;\n stylesNames: __InputStylesNames;\n}>;\n\nconst defaultProps: Partial<TextareaProps> = {\n size: 'sm',\n};\n\nexport const Textarea = factory<TextareaFactory>((props, ref) => {\n const { autosize, maxRows, minRows, __staticSelector, ...others } = useProps(\n 'Textarea',\n defaultProps,\n props\n );\n\n const autosizeProps = autosize ? { maxRows, minRows } : {};\n\n return (\n <InputBase<any>\n component={autosize ? TextareaAutosize : 'textarea'}\n ref={ref}\n {...others}\n __staticSelector={__staticSelector || 'Textarea'}\n multiline\n data-no-overflow={(autosize && maxRows === undefined) || undefined}\n {...autosizeProps}\n />\n );\n});\n\nTextarea.classes = InputBase.classes;\nTextarea.displayName = '@mantine/core/Textarea';\n"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ function useFloatingTooltip({
|
|
|
7
7
|
}) {
|
|
8
8
|
const [opened, setOpened] = useState(false);
|
|
9
9
|
const boundaryRef = useRef();
|
|
10
|
-
const { x, y,
|
|
10
|
+
const { x, y, elements, refs, update, placement } = useFloating({
|
|
11
11
|
placement: position,
|
|
12
12
|
middleware: [
|
|
13
13
|
shift({
|
|
@@ -21,7 +21,7 @@ function useFloatingTooltip({
|
|
|
21
21
|
const verticalOffset = placement.includes("bottom") ? offset : position.includes("top") ? offset * -1 : 0;
|
|
22
22
|
const handleMouseMove = useCallback(
|
|
23
23
|
({ clientX, clientY }) => {
|
|
24
|
-
|
|
24
|
+
refs.setPositionReference({
|
|
25
25
|
getBoundingClientRect() {
|
|
26
26
|
return {
|
|
27
27
|
width: 0,
|
|
@@ -36,7 +36,7 @@ function useFloatingTooltip({
|
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
},
|
|
39
|
-
[reference]
|
|
39
|
+
[elements.reference]
|
|
40
40
|
);
|
|
41
41
|
useEffect(() => {
|
|
42
42
|
if (refs.floating.current) {
|
|
@@ -54,8 +54,8 @@ function useFloatingTooltip({
|
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
return void 0;
|
|
57
|
-
}, [reference, refs.floating.current, update, handleMouseMove, opened]);
|
|
58
|
-
return { handleMouseMove, x, y, opened, setOpened, boundaryRef, floating };
|
|
57
|
+
}, [elements.reference, refs.floating.current, update, handleMouseMove, opened]);
|
|
58
|
+
return { handleMouseMove, x, y, opened, setOpened, boundaryRef, floating: refs.setFloating };
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
export { useFloatingTooltip };
|