@mantine/core 5.3.3 → 5.4.0
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/ColorInput/ColorInput.js +10 -1
- package/cjs/ColorInput/ColorInput.js.map +1 -1
- package/cjs/ColorPicker/AlphaSlider/AlphaSlider.js +2 -1
- package/cjs/ColorPicker/AlphaSlider/AlphaSlider.js.map +1 -1
- package/cjs/ColorPicker/ColorPicker.js +14 -1
- package/cjs/ColorPicker/ColorPicker.js.map +1 -1
- package/cjs/ColorPicker/ColorSlider/ColorSlider.js +13 -1
- package/cjs/ColorPicker/ColorSlider/ColorSlider.js.map +1 -1
- package/cjs/ColorPicker/HueSlider/HueSlider.js +2 -1
- package/cjs/ColorPicker/HueSlider/HueSlider.js.map +1 -1
- package/cjs/ColorPicker/Saturation/Saturation.js +9 -0
- package/cjs/ColorPicker/Saturation/Saturation.js.map +1 -1
- package/cjs/ColorPicker/Swatches/Swatches.js +8 -3
- package/cjs/ColorPicker/Swatches/Swatches.js.map +1 -1
- package/cjs/Group/Group.js +1 -10
- package/cjs/Group/Group.js.map +1 -1
- package/cjs/Group/Group.styles.js +6 -6
- package/cjs/Group/Group.styles.js.map +1 -1
- package/cjs/List/ListItem/ListItem.js +1 -1
- package/cjs/List/ListItem/ListItem.js.map +1 -1
- package/cjs/MultiSelect/MultiSelect.js +15 -12
- package/cjs/MultiSelect/MultiSelect.js.map +1 -1
- package/cjs/Pagination/Pagination.js +14 -11
- package/cjs/Pagination/Pagination.js.map +1 -1
- package/cjs/PasswordInput/PasswordInput.js +22 -10
- package/cjs/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/Select/Select.js +8 -1
- package/cjs/Select/Select.js.map +1 -1
- package/cjs/SimpleGrid/SimpleGrid.js +2 -2
- package/cjs/SimpleGrid/SimpleGrid.js.map +1 -1
- package/cjs/SimpleGrid/SimpleGrid.styles.js +14 -4
- package/cjs/SimpleGrid/SimpleGrid.styles.js.map +1 -1
- package/cjs/Slider/RangeSlider/RangeSlider.js +10 -7
- package/cjs/Slider/RangeSlider/RangeSlider.js.map +1 -1
- package/cjs/Slider/Slider/Slider.js +11 -7
- package/cjs/Slider/Slider/Slider.js.map +1 -1
- package/cjs/Switch/Switch.js +12 -3
- package/cjs/Switch/Switch.js.map +1 -1
- package/cjs/Switch/SwitchGroup/SwitchGroup.js +98 -0
- package/cjs/Switch/SwitchGroup/SwitchGroup.js.map +1 -0
- package/cjs/Switch/SwitchGroup.context.js +13 -0
- package/cjs/Switch/SwitchGroup.context.js.map +1 -0
- package/cjs/ThemeIcon/ThemeIcon.styles.js.map +1 -1
- package/esm/ColorInput/ColorInput.js +10 -1
- package/esm/ColorInput/ColorInput.js.map +1 -1
- package/esm/ColorPicker/AlphaSlider/AlphaSlider.js +2 -1
- package/esm/ColorPicker/AlphaSlider/AlphaSlider.js.map +1 -1
- package/esm/ColorPicker/ColorPicker.js +14 -1
- package/esm/ColorPicker/ColorPicker.js.map +1 -1
- package/esm/ColorPicker/ColorSlider/ColorSlider.js +14 -2
- package/esm/ColorPicker/ColorSlider/ColorSlider.js.map +1 -1
- package/esm/ColorPicker/HueSlider/HueSlider.js +2 -1
- package/esm/ColorPicker/HueSlider/HueSlider.js.map +1 -1
- package/esm/ColorPicker/Saturation/Saturation.js +10 -1
- package/esm/ColorPicker/Saturation/Saturation.js.map +1 -1
- package/esm/ColorPicker/Swatches/Swatches.js +8 -3
- package/esm/ColorPicker/Swatches/Swatches.js.map +1 -1
- package/esm/Group/Group.js +1 -10
- package/esm/Group/Group.js.map +1 -1
- package/esm/Group/Group.styles.js +6 -6
- package/esm/Group/Group.styles.js.map +1 -1
- package/esm/List/ListItem/ListItem.js +1 -1
- package/esm/List/ListItem/ListItem.js.map +1 -1
- package/esm/MultiSelect/MultiSelect.js +16 -13
- package/esm/MultiSelect/MultiSelect.js.map +1 -1
- package/esm/Pagination/Pagination.js +14 -11
- package/esm/Pagination/Pagination.js.map +1 -1
- package/esm/PasswordInput/PasswordInput.js +23 -11
- package/esm/PasswordInput/PasswordInput.js.map +1 -1
- package/esm/Select/Select.js +8 -1
- package/esm/Select/Select.js.map +1 -1
- package/esm/SimpleGrid/SimpleGrid.js +2 -2
- package/esm/SimpleGrid/SimpleGrid.js.map +1 -1
- package/esm/SimpleGrid/SimpleGrid.styles.js +14 -4
- package/esm/SimpleGrid/SimpleGrid.styles.js.map +1 -1
- package/esm/Slider/RangeSlider/RangeSlider.js +10 -7
- package/esm/Slider/RangeSlider/RangeSlider.js.map +1 -1
- package/esm/Slider/Slider/Slider.js +11 -7
- package/esm/Slider/Slider/Slider.js.map +1 -1
- package/esm/Switch/Switch.js +12 -3
- package/esm/Switch/Switch.js.map +1 -1
- package/esm/Switch/SwitchGroup/SwitchGroup.js +90 -0
- package/esm/Switch/SwitchGroup/SwitchGroup.js.map +1 -0
- package/esm/Switch/SwitchGroup.context.js +8 -0
- package/esm/Switch/SwitchGroup.context.js.map +1 -0
- package/esm/ThemeIcon/ThemeIcon.styles.js.map +1 -1
- package/lib/ColorInput/ColorInput.d.ts.map +1 -1
- package/lib/ColorPicker/AlphaSlider/AlphaSlider.d.ts.map +1 -1
- package/lib/ColorPicker/ColorPicker.d.ts +2 -0
- package/lib/ColorPicker/ColorPicker.d.ts.map +1 -1
- package/lib/ColorPicker/ColorSlider/ColorSlider.d.ts +1 -0
- package/lib/ColorPicker/ColorSlider/ColorSlider.d.ts.map +1 -1
- package/lib/ColorPicker/HueSlider/HueSlider.d.ts.map +1 -1
- package/lib/ColorPicker/Saturation/Saturation.d.ts +2 -1
- package/lib/ColorPicker/Saturation/Saturation.d.ts.map +1 -1
- package/lib/ColorPicker/Swatches/Swatches.d.ts +2 -1
- package/lib/ColorPicker/Swatches/Swatches.d.ts.map +1 -1
- package/lib/Group/Group.d.ts.map +1 -1
- package/lib/Group/Group.styles.d.ts +2 -2
- package/lib/Group/Group.styles.d.ts.map +1 -1
- package/lib/MultiSelect/MultiSelect.d.ts +2 -0
- package/lib/MultiSelect/MultiSelect.d.ts.map +1 -1
- package/lib/Pagination/Pagination.d.ts +2 -0
- package/lib/Pagination/Pagination.d.ts.map +1 -1
- package/lib/PasswordInput/PasswordInput.d.ts +6 -0
- package/lib/PasswordInput/PasswordInput.d.ts.map +1 -1
- package/lib/Select/Select.d.ts +2 -0
- package/lib/Select/Select.d.ts.map +1 -1
- package/lib/SimpleGrid/SimpleGrid.d.ts +3 -1
- package/lib/SimpleGrid/SimpleGrid.d.ts.map +1 -1
- package/lib/SimpleGrid/SimpleGrid.styles.d.ts +2 -0
- package/lib/SimpleGrid/SimpleGrid.styles.d.ts.map +1 -1
- package/lib/Slider/RangeSlider/RangeSlider.d.ts +2 -0
- package/lib/Slider/RangeSlider/RangeSlider.d.ts.map +1 -1
- package/lib/Slider/Slider/Slider.d.ts +2 -0
- package/lib/Slider/Slider/Slider.d.ts.map +1 -1
- package/lib/Switch/Switch.d.ts +7 -1
- package/lib/Switch/Switch.d.ts.map +1 -1
- package/lib/Switch/SwitchGroup/SwitchGroup.d.ts +26 -0
- package/lib/Switch/SwitchGroup/SwitchGroup.d.ts.map +1 -0
- package/lib/Switch/SwitchGroup.context.d.ts +11 -0
- package/lib/Switch/SwitchGroup.context.d.ts.map +1 -0
- package/lib/Switch/index.d.ts +1 -0
- package/lib/Switch/index.d.ts.map +1 -1
- package/lib/ThemeIcon/ThemeIcon.styles.d.ts +1 -1
- package/lib/ThemeIcon/ThemeIcon.styles.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorPicker.js","sources":["../../src/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import React, { useState, useRef, forwardRef } from 'react';\nimport { useDidUpdate, useUncontrolled } from '@mantine/hooks';\nimport { DefaultProps, MantineSize, Selectors, useComponentDefaultProps } from '@mantine/styles';\nimport { Box } from '../Box';\nimport { ColorSwatch } from '../ColorSwatch/ColorSwatch';\nimport { convertHsvaTo, isColorValid, parseColor } from './converters';\nimport { ColorSliderStylesNames } from './ColorSlider/ColorSlider';\nimport { HueSlider } from './HueSlider/HueSlider';\nimport { AlphaSlider } from './AlphaSlider/AlphaSlider';\nimport { Saturation, SaturationStylesNames } from './Saturation/Saturation';\nimport { Swatches, SwatchesStylesNames } from './Swatches/Swatches';\nimport { ThumbStylesNames } from './Thumb/Thumb';\nimport { HsvaColor } from './types';\nimport useStyles from './ColorPicker.styles';\n\nexport type ColorPickerStylesNames =\n | Selectors<typeof useStyles>\n | ColorSliderStylesNames\n | SwatchesStylesNames\n | SaturationStylesNames\n | ThumbStylesNames;\n\nexport interface ColorPickerBaseProps {\n /** Controlled component value */\n value?: string;\n\n /** Uncontrolled component default value */\n defaultValue?: string;\n\n /** Called when color changes */\n onChange?(color: string): void;\n\n /** Color format */\n format?: 'hex' | 'rgba' | 'rgb' | 'hsl' | 'hsla';\n\n /** Set to false to display swatches only */\n withPicker?: boolean;\n\n /** Predefined colors */\n swatches?: string[];\n\n /** Number of swatches displayed in one row */\n swatchesPerRow?: number;\n\n /** Predefined component size */\n size?: MantineSize;\n}\n\nexport interface ColorPickerProps\n extends DefaultProps<ColorPickerStylesNames>,\n ColorPickerBaseProps,\n Omit<React.ComponentPropsWithoutRef<'div'>, 'onChange' | 'value' | 'defaultValue'> {\n /** Force picker to take 100% width of its container */\n fullWidth?: boolean;\n\n /** Should interactive elements be focusable */\n focusable?: boolean;\n\n /** Static selector base */\n __staticSelector?: string;\n\n /** Saturation slider aria-label */\n saturationLabel?: string;\n\n /** Hue slider aria-label */\n hueLabel?: string;\n\n /** Alpha slider aria-label */\n alphaLabel?: string;\n}\n\nconst SWATCH_SIZES = {\n xs: 26,\n sm: 34,\n md: 42,\n lg: 50,\n xl: 54,\n};\n\nconst defaultProps: Partial<ColorPickerProps> = {\n swatchesPerRow: 10,\n size: 'sm',\n withPicker: true,\n focusable: true,\n __staticSelector: 'ColorPicker',\n};\n\nexport const ColorPicker = forwardRef<HTMLDivElement, ColorPickerProps>(\n (props: ColorPickerProps, ref) => {\n const {\n value,\n defaultValue,\n onChange,\n format,\n swatches,\n swatchesPerRow,\n size,\n withPicker,\n fullWidth,\n focusable,\n __staticSelector,\n saturationLabel,\n hueLabel,\n alphaLabel,\n className,\n styles,\n classNames,\n unstyled,\n ...others\n } = useComponentDefaultProps('ColorPicker', defaultProps, props);\n\n const { classes, cx, theme } = useStyles(\n { size, fullWidth },\n { classNames, styles, name: __staticSelector, unstyled }\n );\n const formatRef = useRef(format);\n const valueRef = useRef<string>(null);\n const updateRef = useRef(true);\n const withAlpha = format === 'rgba' || format === 'hsla';\n\n const [_value, setValue] = useUncontrolled({\n value,\n defaultValue,\n finalValue: '#FFFFFF',\n onChange,\n });\n\n const [parsed, setParsed] = useState(parseColor(_value));\n\n const handleChange = (color: Partial<HsvaColor>) => {\n updateRef.current = false;\n setParsed((current) => {\n const next = { ...current, ...color };\n valueRef.current = convertHsvaTo(formatRef.current, next);\n return next;\n });\n\n setValue(valueRef.current);\n\n // Does not work any other way\n setTimeout(() => {\n updateRef.current = true;\n }, 0);\n };\n\n useDidUpdate(() => {\n if (isColorValid(value) && updateRef.current) {\n setParsed(parseColor(value));\n updateRef.current = true;\n }\n }, [value]);\n\n useDidUpdate(() => {\n formatRef.current = format;\n setValue(convertHsvaTo(format, parsed));\n }, [format]);\n\n return (\n <Box className={cx(classes.wrapper, className)} ref={ref} {...others}>\n {withPicker && (\n <>\n <Saturation\n value={parsed}\n onChange={handleChange}\n color={_value}\n styles={styles}\n classNames={classNames}\n size={size}\n focusable={focusable}\n saturationLabel={saturationLabel}\n __staticSelector={__staticSelector}\n />\n\n <div className={classes.body}>\n <div className={classes.sliders}>\n <HueSlider\n value={parsed.h}\n onChange={(h) => handleChange({ h })}\n size={size}\n styles={styles}\n classNames={classNames}\n focusable={focusable}\n aria-label={hueLabel}\n __staticSelector={__staticSelector}\n />\n\n {withAlpha && (\n <AlphaSlider\n value={parsed.a}\n onChange={(a) => handleChange({ a })}\n size={size}\n color={convertHsvaTo('hex', parsed)}\n style={{ marginTop: 6 }}\n styles={styles}\n classNames={classNames}\n focusable={focusable}\n aria-label={alphaLabel}\n __staticSelector={__staticSelector}\n />\n )}\n </div>\n\n {withAlpha && (\n <ColorSwatch\n color={_value}\n radius=\"sm\"\n size={theme.fn.size({ size, sizes: SWATCH_SIZES })}\n className={classes.preview}\n />\n )}\n </div>\n </>\n )}\n\n {Array.isArray(swatches) && (\n <Swatches\n data={swatches}\n style={{ marginTop: 5 }}\n swatchesPerRow={swatchesPerRow}\n focusable={focusable}\n classNames={classNames}\n styles={styles}\n __staticSelector={__staticSelector}\n setValue={setValue}\n />\n )}\n </Box>\n );\n }\n);\n\nColorPicker.displayName = '@mantine/core/ColorPicker';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ColorPicker.js","sources":["../../src/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import React, { useState, useRef, forwardRef } from 'react';\nimport { useDidUpdate, useUncontrolled } from '@mantine/hooks';\nimport { DefaultProps, MantineSize, Selectors, useComponentDefaultProps } from '@mantine/styles';\nimport { Box } from '../Box';\nimport { ColorSwatch } from '../ColorSwatch/ColorSwatch';\nimport { convertHsvaTo, isColorValid, parseColor } from './converters';\nimport { ColorSliderStylesNames } from './ColorSlider/ColorSlider';\nimport { HueSlider } from './HueSlider/HueSlider';\nimport { AlphaSlider } from './AlphaSlider/AlphaSlider';\nimport { Saturation, SaturationStylesNames } from './Saturation/Saturation';\nimport { Swatches, SwatchesStylesNames } from './Swatches/Swatches';\nimport { ThumbStylesNames } from './Thumb/Thumb';\nimport { HsvaColor } from './types';\nimport useStyles from './ColorPicker.styles';\n\nexport type ColorPickerStylesNames =\n | Selectors<typeof useStyles>\n | ColorSliderStylesNames\n | SwatchesStylesNames\n | SaturationStylesNames\n | ThumbStylesNames;\n\nexport interface ColorPickerBaseProps {\n /** Controlled component value */\n value?: string;\n\n /** Uncontrolled component default value */\n defaultValue?: string;\n\n /** Called when color changes */\n onChange?(color: string): void;\n\n /** Called when user stops dragging thumb or changes value with arrows */\n onChangeEnd?(color: string): void;\n\n /** Color format */\n format?: 'hex' | 'rgba' | 'rgb' | 'hsl' | 'hsla';\n\n /** Set to false to display swatches only */\n withPicker?: boolean;\n\n /** Predefined colors */\n swatches?: string[];\n\n /** Number of swatches displayed in one row */\n swatchesPerRow?: number;\n\n /** Predefined component size */\n size?: MantineSize;\n}\n\nexport interface ColorPickerProps\n extends DefaultProps<ColorPickerStylesNames>,\n ColorPickerBaseProps,\n Omit<React.ComponentPropsWithoutRef<'div'>, 'onChange' | 'value' | 'defaultValue'> {\n /** Force picker to take 100% width of its container */\n fullWidth?: boolean;\n\n /** Should interactive elements be focusable */\n focusable?: boolean;\n\n /** Static selector base */\n __staticSelector?: string;\n\n /** Saturation slider aria-label */\n saturationLabel?: string;\n\n /** Hue slider aria-label */\n hueLabel?: string;\n\n /** Alpha slider aria-label */\n alphaLabel?: string;\n}\n\nconst SWATCH_SIZES = {\n xs: 26,\n sm: 34,\n md: 42,\n lg: 50,\n xl: 54,\n};\n\nconst defaultProps: Partial<ColorPickerProps> = {\n swatchesPerRow: 10,\n size: 'sm',\n withPicker: true,\n focusable: true,\n __staticSelector: 'ColorPicker',\n};\n\nexport const ColorPicker = forwardRef<HTMLDivElement, ColorPickerProps>(\n (props: ColorPickerProps, ref) => {\n const {\n value,\n defaultValue,\n onChange,\n onChangeEnd,\n format,\n swatches,\n swatchesPerRow,\n size,\n withPicker,\n fullWidth,\n focusable,\n __staticSelector,\n saturationLabel,\n hueLabel,\n alphaLabel,\n className,\n styles,\n classNames,\n unstyled,\n ...others\n } = useComponentDefaultProps('ColorPicker', defaultProps, props);\n\n const { classes, cx, theme } = useStyles(\n { size, fullWidth },\n { classNames, styles, name: __staticSelector, unstyled }\n );\n const formatRef = useRef(format);\n const valueRef = useRef<string>(null);\n const updateRef = useRef(true);\n const withAlpha = format === 'rgba' || format === 'hsla';\n\n const [_value, setValue] = useUncontrolled({\n value,\n defaultValue,\n finalValue: '#FFFFFF',\n onChange,\n });\n\n const [parsed, setParsed] = useState(parseColor(_value));\n\n const handleChange = (color: Partial<HsvaColor>) => {\n updateRef.current = false;\n setParsed((current) => {\n const next = { ...current, ...color };\n valueRef.current = convertHsvaTo(formatRef.current, next);\n return next;\n });\n\n setValue(valueRef.current);\n\n // Does not work any other way\n setTimeout(() => {\n updateRef.current = true;\n }, 0);\n };\n\n useDidUpdate(() => {\n if (isColorValid(value) && updateRef.current) {\n setParsed(parseColor(value));\n updateRef.current = true;\n }\n }, [value]);\n\n useDidUpdate(() => {\n formatRef.current = format;\n setValue(convertHsvaTo(format, parsed));\n }, [format]);\n\n return (\n <Box className={cx(classes.wrapper, className)} ref={ref} {...others}>\n {withPicker && (\n <>\n <Saturation\n value={parsed}\n onChange={handleChange}\n onChangeEnd={({ s, v }) =>\n onChangeEnd?.(convertHsvaTo(formatRef.current, { ...parsed, s, v }))\n }\n color={_value}\n styles={styles}\n classNames={classNames}\n size={size}\n focusable={focusable}\n saturationLabel={saturationLabel}\n __staticSelector={__staticSelector}\n />\n\n <div className={classes.body}>\n <div className={classes.sliders}>\n <HueSlider\n value={parsed.h}\n onChange={(h) => handleChange({ h })}\n onChangeEnd={(h) =>\n onChangeEnd?.(convertHsvaTo(formatRef.current, { ...parsed, h }))\n }\n size={size}\n styles={styles}\n classNames={classNames}\n focusable={focusable}\n aria-label={hueLabel}\n __staticSelector={__staticSelector}\n />\n\n {withAlpha && (\n <AlphaSlider\n value={parsed.a}\n onChange={(a) => handleChange({ a })}\n onChangeEnd={(a) => {\n onChangeEnd?.(convertHsvaTo(formatRef.current, { ...parsed, a }));\n }}\n size={size}\n color={convertHsvaTo('hex', parsed)}\n style={{ marginTop: 6 }}\n styles={styles}\n classNames={classNames}\n focusable={focusable}\n aria-label={alphaLabel}\n __staticSelector={__staticSelector}\n />\n )}\n </div>\n\n {withAlpha && (\n <ColorSwatch\n color={_value}\n radius=\"sm\"\n size={theme.fn.size({ size, sizes: SWATCH_SIZES })}\n className={classes.preview}\n />\n )}\n </div>\n </>\n )}\n\n {Array.isArray(swatches) && (\n <Swatches\n data={swatches}\n style={{ marginTop: 5 }}\n swatchesPerRow={swatchesPerRow}\n focusable={focusable}\n classNames={classNames}\n styles={styles}\n __staticSelector={__staticSelector}\n setValue={setValue}\n onChangeEnd={(color) => {\n onChangeEnd?.(convertHsvaTo(format, parseColor(color)));\n }}\n />\n )}\n </Box>\n );\n }\n);\n\nColorPicker.displayName = '@mantine/core/ColorPicker';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { forwardRef, useState } from 'react';
|
|
1
|
+
import React, { forwardRef, useState, useRef } from 'react';
|
|
2
2
|
import { useMove, useDidUpdate, useMergedRef, clampUseMovePosition } from '@mantine/hooks';
|
|
3
3
|
import { Thumb } from '../Thumb/Thumb.js';
|
|
4
4
|
import useStyles from './ColorSlider.styles.js';
|
|
@@ -39,6 +39,7 @@ const ColorSlider = forwardRef((_a, ref) => {
|
|
|
39
39
|
var _b = _a, {
|
|
40
40
|
value,
|
|
41
41
|
onChange,
|
|
42
|
+
onChangeEnd,
|
|
42
43
|
maxValue,
|
|
43
44
|
round,
|
|
44
45
|
size = "md",
|
|
@@ -53,6 +54,7 @@ const ColorSlider = forwardRef((_a, ref) => {
|
|
|
53
54
|
} = _b, others = __objRest(_b, [
|
|
54
55
|
"value",
|
|
55
56
|
"onChange",
|
|
57
|
+
"onChangeEnd",
|
|
56
58
|
"maxValue",
|
|
57
59
|
"round",
|
|
58
60
|
"size",
|
|
@@ -67,8 +69,17 @@ const ColorSlider = forwardRef((_a, ref) => {
|
|
|
67
69
|
]);
|
|
68
70
|
const { classes, cx } = useStyles({ size }, { classNames, styles, name: __staticSelector, unstyled });
|
|
69
71
|
const [position, setPosition] = useState({ y: 0, x: value / maxValue });
|
|
72
|
+
const positionRef = useRef(position);
|
|
70
73
|
const getChangeValue = (val) => round ? Math.round(val * maxValue) : val * maxValue;
|
|
71
|
-
const { ref: sliderRef } = useMove(({ x }) =>
|
|
74
|
+
const { ref: sliderRef } = useMove(({ x, y }) => {
|
|
75
|
+
positionRef.current = { x, y };
|
|
76
|
+
onChange(getChangeValue(x));
|
|
77
|
+
}, {
|
|
78
|
+
onScrubEnd: () => {
|
|
79
|
+
const { x } = positionRef.current;
|
|
80
|
+
onChangeEnd(getChangeValue(x));
|
|
81
|
+
}
|
|
82
|
+
});
|
|
72
83
|
useDidUpdate(() => {
|
|
73
84
|
setPosition({ y: 0, x: value / maxValue });
|
|
74
85
|
}, [value]);
|
|
@@ -76,6 +87,7 @@ const ColorSlider = forwardRef((_a, ref) => {
|
|
|
76
87
|
event.preventDefault();
|
|
77
88
|
const _position = clampUseMovePosition(pos);
|
|
78
89
|
onChange(getChangeValue(_position.x));
|
|
90
|
+
onChangeEnd(getChangeValue(_position.x));
|
|
79
91
|
};
|
|
80
92
|
const handleKeyDown = (event) => {
|
|
81
93
|
switch (event.key) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorSlider.js","sources":["../../../src/ColorPicker/ColorSlider/ColorSlider.tsx"],"sourcesContent":["import React, { useState, forwardRef } from 'react';\nimport {\n useMove,\n clampUseMovePosition,\n useDidUpdate,\n UseMovePosition,\n useMergedRef,\n} from '@mantine/hooks';\nimport { DefaultProps, MantineSize, Selectors } from '@mantine/styles';\nimport { Box } from '../../Box';\nimport { Thumb, ThumbStylesNames } from '../Thumb/Thumb';\nimport useStyles from './ColorSlider.styles';\n\nexport type ColorSliderStylesNames =\n | Exclude<Selectors<typeof useStyles>, 'sliderThumb'>\n | ThumbStylesNames;\n\nexport interface BaseColorSliderProps\n extends DefaultProps<ColorSliderStylesNames>,\n Omit<React.ComponentPropsWithoutRef<'div'>, 'value' | 'onChange'> {\n value: number;\n onChange(value: number): void;\n size?: MantineSize;\n focusable?: boolean;\n __staticSelector?: string;\n}\n\nexport interface ColorSliderProps extends BaseColorSliderProps {\n maxValue: number;\n overlays: React.CSSProperties[];\n round: boolean;\n thumbColor?: string;\n}\n\nexport const ColorSlider = forwardRef<HTMLDivElement, ColorSliderProps>(\n (\n {\n value,\n onChange,\n maxValue,\n round,\n size = 'md',\n thumbColor = 'transparent',\n __staticSelector = 'ColorSlider',\n focusable = true,\n overlays,\n classNames,\n styles,\n className,\n unstyled,\n ...others\n }: ColorSliderProps,\n ref\n ) => {\n const { classes, cx } = useStyles(\n { size },\n { classNames, styles, name: __staticSelector, unstyled }\n );\n const [position, setPosition] = useState({ y: 0, x: value / maxValue });\n const getChangeValue = (val: number) => (round ? Math.round(val * maxValue) : val * maxValue);\n const { ref: sliderRef } = useMove(({ x }) => onChange(getChangeValue(x)));\n\n useDidUpdate(() => {\n setPosition({ y: 0, x: value / maxValue });\n }, [value]);\n\n const handleArrow = (event: React.KeyboardEvent<HTMLDivElement>, pos: UseMovePosition) => {\n event.preventDefault();\n const _position = clampUseMovePosition(pos);\n onChange(getChangeValue(_position.x));\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowRight': {\n handleArrow(event, { x: position.x + 0.05, y: position.y });\n break;\n }\n\n case 'ArrowLeft': {\n handleArrow(event, { x: position.x - 0.05, y: position.y });\n break;\n }\n }\n };\n\n const layers = overlays.map((overlay, index) => (\n <div className={classes.sliderOverlay} style={overlay} key={index} />\n ));\n\n return (\n <Box\n {...others}\n ref={useMergedRef(sliderRef, ref)}\n className={cx(classes.slider, className)}\n role=\"slider\"\n aria-valuenow={value}\n aria-valuemax={maxValue}\n aria-valuemin={0}\n tabIndex={focusable ? 0 : -1}\n onKeyDown={handleKeyDown}\n >\n {layers}\n\n <Thumb\n __staticSelector={__staticSelector}\n classNames={classNames}\n styles={styles}\n position={position}\n style={{ top: 1, backgroundColor: thumbColor }}\n className={classes.sliderThumb}\n size={size}\n />\n </Box>\n );\n }\n);\n\nColorSlider.displayName = '@mantine/core/ColorSlider';\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ColorSlider.js","sources":["../../../src/ColorPicker/ColorSlider/ColorSlider.tsx"],"sourcesContent":["import React, { useState, forwardRef, useRef } from 'react';\nimport {\n useMove,\n clampUseMovePosition,\n useDidUpdate,\n UseMovePosition,\n useMergedRef,\n} from '@mantine/hooks';\nimport { DefaultProps, MantineSize, Selectors } from '@mantine/styles';\nimport { Box } from '../../Box';\nimport { Thumb, ThumbStylesNames } from '../Thumb/Thumb';\nimport useStyles from './ColorSlider.styles';\n\nexport type ColorSliderStylesNames =\n | Exclude<Selectors<typeof useStyles>, 'sliderThumb'>\n | ThumbStylesNames;\n\nexport interface BaseColorSliderProps\n extends DefaultProps<ColorSliderStylesNames>,\n Omit<React.ComponentPropsWithoutRef<'div'>, 'value' | 'onChange'> {\n value: number;\n onChange(value: number): void;\n onChangeEnd(value: number): void;\n size?: MantineSize;\n focusable?: boolean;\n __staticSelector?: string;\n}\n\nexport interface ColorSliderProps extends BaseColorSliderProps {\n maxValue: number;\n overlays: React.CSSProperties[];\n round: boolean;\n thumbColor?: string;\n}\n\nexport const ColorSlider = forwardRef<HTMLDivElement, ColorSliderProps>(\n (\n {\n value,\n onChange,\n onChangeEnd,\n maxValue,\n round,\n size = 'md',\n thumbColor = 'transparent',\n __staticSelector = 'ColorSlider',\n focusable = true,\n overlays,\n classNames,\n styles,\n className,\n unstyled,\n ...others\n }: ColorSliderProps,\n ref\n ) => {\n const { classes, cx } = useStyles(\n { size },\n { classNames, styles, name: __staticSelector, unstyled }\n );\n const [position, setPosition] = useState({ y: 0, x: value / maxValue });\n const positionRef = useRef(position);\n const getChangeValue = (val: number) => (round ? Math.round(val * maxValue) : val * maxValue);\n const { ref: sliderRef } = useMove(\n ({ x, y }) => {\n positionRef.current = { x, y };\n onChange(getChangeValue(x));\n },\n {\n onScrubEnd: () => {\n const { x } = positionRef.current;\n onChangeEnd(getChangeValue(x));\n },\n }\n );\n\n useDidUpdate(() => {\n setPosition({ y: 0, x: value / maxValue });\n }, [value]);\n\n const handleArrow = (event: React.KeyboardEvent<HTMLDivElement>, pos: UseMovePosition) => {\n event.preventDefault();\n const _position = clampUseMovePosition(pos);\n onChange(getChangeValue(_position.x));\n onChangeEnd(getChangeValue(_position.x));\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowRight': {\n handleArrow(event, { x: position.x + 0.05, y: position.y });\n break;\n }\n\n case 'ArrowLeft': {\n handleArrow(event, { x: position.x - 0.05, y: position.y });\n break;\n }\n }\n };\n\n const layers = overlays.map((overlay, index) => (\n <div className={classes.sliderOverlay} style={overlay} key={index} />\n ));\n\n return (\n <Box\n {...others}\n ref={useMergedRef(sliderRef, ref)}\n className={cx(classes.slider, className)}\n role=\"slider\"\n aria-valuenow={value}\n aria-valuemax={maxValue}\n aria-valuemin={0}\n tabIndex={focusable ? 0 : -1}\n onKeyDown={handleKeyDown}\n >\n {layers}\n\n <Thumb\n __staticSelector={__staticSelector}\n classNames={classNames}\n styles={styles}\n position={position}\n style={{ top: 1, backgroundColor: thumbColor }}\n className={classes.sliderThumb}\n size={size}\n />\n </Box>\n );\n }\n);\n\nColorSlider.displayName = '@mantine/core/ColorSlider';\n"],"names":[],"mappings":"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"}
|
|
@@ -33,11 +33,12 @@ var __objRest = (source, exclude) => {
|
|
|
33
33
|
return target;
|
|
34
34
|
};
|
|
35
35
|
const HueSlider = forwardRef((_a, ref) => {
|
|
36
|
-
var _b = _a, { value, onChange } = _b, others = __objRest(_b, ["value", "onChange"]);
|
|
36
|
+
var _b = _a, { value, onChange, onChangeEnd } = _b, others = __objRest(_b, ["value", "onChange", "onChangeEnd"]);
|
|
37
37
|
return /* @__PURE__ */ React.createElement(ColorSlider, __spreadProps(__spreadValues({}, others), {
|
|
38
38
|
ref,
|
|
39
39
|
value,
|
|
40
40
|
onChange,
|
|
41
|
+
onChangeEnd,
|
|
41
42
|
maxValue: 360,
|
|
42
43
|
thumbColor: `hsl(${value}, 100%, 50%)`,
|
|
43
44
|
round: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HueSlider.js","sources":["../../../src/ColorPicker/HueSlider/HueSlider.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { ColorSlider, BaseColorSliderProps } from '../ColorSlider/ColorSlider';\n\nexport type HueSliderProps = BaseColorSliderProps;\n\nexport const HueSlider = forwardRef<HTMLDivElement, HueSliderProps>(\n ({ value, onChange, ...others }: HueSliderProps, ref) => (\n <ColorSlider\n {...others}\n ref={ref}\n value={value}\n onChange={onChange}\n maxValue={360}\n thumbColor={`hsl(${value}, 100%, 50%)`}\n round\n overlays={[\n {\n backgroundImage:\n 'linear-gradient(to right,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(170,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(360,100%,50%))',\n },\n {\n boxShadow: 'rgba(0, 0, 0, .1) 0px 0px 0px 1px inset, rgb(0, 0, 0, .15) 0px 0px 4px inset',\n },\n ]}\n />\n )\n);\n\nHueSlider.displayName = '@mantine/core/HueSlider';\n"],"names":[],"mappings":";;;AAAA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,IAAI,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzC,IAAI,iBAAiB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACzD,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAChK,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,mBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK;AACrC,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB,EAAE,KAAK,IAAI,IAAI,IAAI,MAAM;AACzB,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACpE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE,IAAI,MAAM,IAAI,IAAI,IAAI,mBAAmB;AAC3C,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE;AAClD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACtE,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,KAAK;AACL,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAGU,MAAC,SAAS,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK;AACjD,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"HueSlider.js","sources":["../../../src/ColorPicker/HueSlider/HueSlider.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { ColorSlider, BaseColorSliderProps } from '../ColorSlider/ColorSlider';\n\nexport type HueSliderProps = BaseColorSliderProps;\n\nexport const HueSlider = forwardRef<HTMLDivElement, HueSliderProps>(\n ({ value, onChange, onChangeEnd, ...others }: HueSliderProps, ref) => (\n <ColorSlider\n {...others}\n ref={ref}\n value={value}\n onChange={onChange}\n onChangeEnd={onChangeEnd}\n maxValue={360}\n thumbColor={`hsl(${value}, 100%, 50%)`}\n round\n overlays={[\n {\n backgroundImage:\n 'linear-gradient(to right,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(170,100%,50%),hsl(240,100%,50%),hsl(300,100%,50%),hsl(360,100%,50%))',\n },\n {\n boxShadow: 'rgba(0, 0, 0, .1) 0px 0px 0px 1px inset, rgb(0, 0, 0, .15) 0px 0px 4px inset',\n },\n ]}\n />\n )\n);\n\nHueSlider.displayName = '@mantine/core/HueSlider';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useState, useEffect } from 'react';
|
|
1
|
+
import React, { useState, useRef, useEffect } from 'react';
|
|
2
2
|
import { useMove, clampUseMovePosition } from '@mantine/hooks';
|
|
3
3
|
import { Thumb } from '../Thumb/Thumb.js';
|
|
4
4
|
import useStyles from './Saturation.styles.js';
|
|
@@ -7,6 +7,7 @@ import { convertHsvaTo } from '../converters/converters.js';
|
|
|
7
7
|
function Saturation({
|
|
8
8
|
value,
|
|
9
9
|
onChange,
|
|
10
|
+
onChangeEnd,
|
|
10
11
|
focusable = true,
|
|
11
12
|
__staticSelector = "saturation",
|
|
12
13
|
size,
|
|
@@ -18,8 +19,15 @@ function Saturation({
|
|
|
18
19
|
}) {
|
|
19
20
|
const { classes } = useStyles({ size }, { classNames, styles, name: __staticSelector, unstyled });
|
|
20
21
|
const [position, setPosition] = useState({ x: value.s / 100, y: 1 - value.v / 100 });
|
|
22
|
+
const positionRef = useRef(position);
|
|
21
23
|
const { ref } = useMove(({ x, y }) => {
|
|
24
|
+
positionRef.current = { x, y };
|
|
22
25
|
onChange({ s: Math.round(x * 100), v: Math.round((1 - y) * 100) });
|
|
26
|
+
}, {
|
|
27
|
+
onScrubEnd: () => {
|
|
28
|
+
const { x, y } = positionRef.current;
|
|
29
|
+
onChangeEnd({ s: Math.round(x * 100), v: Math.round((1 - y) * 100) });
|
|
30
|
+
}
|
|
23
31
|
});
|
|
24
32
|
useEffect(() => {
|
|
25
33
|
setPosition({ x: value.s / 100, y: 1 - value.v / 100 });
|
|
@@ -28,6 +36,7 @@ function Saturation({
|
|
|
28
36
|
event.preventDefault();
|
|
29
37
|
const _position = clampUseMovePosition(pos);
|
|
30
38
|
onChange({ s: Math.round(_position.x * 100), v: Math.round((1 - _position.y) * 100) });
|
|
39
|
+
onChangeEnd({ s: Math.round(_position.x * 100), v: Math.round((1 - _position.y) * 100) });
|
|
31
40
|
};
|
|
32
41
|
const handleKeyDown = (event) => {
|
|
33
42
|
switch (event.key) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Saturation.js","sources":["../../../src/ColorPicker/Saturation/Saturation.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { useMove, clampUseMovePosition, UseMovePosition } from '@mantine/hooks';\nimport { DefaultProps, MantineSize, Selectors } from '@mantine/styles';\nimport { HsvaColor } from '../types';\nimport { Thumb, ThumbStylesNames } from '../Thumb/Thumb';\nimport useStyles from './Saturation.styles';\nimport { convertHsvaTo } from '../converters';\n\nexport type SaturationStylesNames =\n | Exclude<Selectors<typeof useStyles>, 'saturationOverlay' | 'saturationThumb'>\n | ThumbStylesNames;\n\ninterface SaturationProps extends DefaultProps<SaturationStylesNames> {\n value: HsvaColor;\n onChange(color: Partial<HsvaColor>): void;\n saturationLabel?: string;\n size: MantineSize;\n color: string;\n focusable?: boolean;\n __staticSelector?: string;\n}\n\nexport function Saturation({\n value,\n onChange,\n focusable = true,\n __staticSelector = 'saturation',\n size,\n color,\n saturationLabel,\n classNames,\n styles,\n unstyled,\n}: SaturationProps) {\n const { classes } = useStyles({ size }, { classNames, styles, name: __staticSelector, unstyled });\n const [position, setPosition] = useState({ x: value.s / 100, y: 1 - value.v / 100 });\n\n const { ref } = useMove(({ x, y }) => {\n
|
|
1
|
+
{"version":3,"file":"Saturation.js","sources":["../../../src/ColorPicker/Saturation/Saturation.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport { useMove, clampUseMovePosition, UseMovePosition } from '@mantine/hooks';\nimport { DefaultProps, MantineSize, Selectors } from '@mantine/styles';\nimport { HsvaColor } from '../types';\nimport { Thumb, ThumbStylesNames } from '../Thumb/Thumb';\nimport useStyles from './Saturation.styles';\nimport { convertHsvaTo } from '../converters';\n\nexport type SaturationStylesNames =\n | Exclude<Selectors<typeof useStyles>, 'saturationOverlay' | 'saturationThumb'>\n | ThumbStylesNames;\n\ninterface SaturationProps extends DefaultProps<SaturationStylesNames> {\n value: HsvaColor;\n onChange(color: Partial<HsvaColor>): void;\n onChangeEnd(color: Partial<HsvaColor>): void;\n saturationLabel?: string;\n size: MantineSize;\n color: string;\n focusable?: boolean;\n __staticSelector?: string;\n}\n\nexport function Saturation({\n value,\n onChange,\n onChangeEnd,\n focusable = true,\n __staticSelector = 'saturation',\n size,\n color,\n saturationLabel,\n classNames,\n styles,\n unstyled,\n}: SaturationProps) {\n const { classes } = useStyles({ size }, { classNames, styles, name: __staticSelector, unstyled });\n const [position, setPosition] = useState({ x: value.s / 100, y: 1 - value.v / 100 });\n const positionRef = useRef(position);\n\n const { ref } = useMove(\n ({ x, y }) => {\n positionRef.current = { x, y };\n onChange({ s: Math.round(x * 100), v: Math.round((1 - y) * 100) });\n },\n {\n onScrubEnd: () => {\n const { x, y } = positionRef.current;\n onChangeEnd({ s: Math.round(x * 100), v: Math.round((1 - y) * 100) });\n },\n }\n );\n\n useEffect(() => {\n setPosition({ x: value.s / 100, y: 1 - value.v / 100 });\n }, [value.s, value.v]);\n\n const handleArrow = (event: React.KeyboardEvent<HTMLDivElement>, pos: UseMovePosition) => {\n event.preventDefault();\n const _position = clampUseMovePosition(pos);\n onChange({ s: Math.round(_position.x * 100), v: Math.round((1 - _position.y) * 100) });\n onChangeEnd({ s: Math.round(_position.x * 100), v: Math.round((1 - _position.y) * 100) });\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'ArrowUp': {\n handleArrow(event, { y: position.y - 0.05, x: position.x });\n break;\n }\n\n case 'ArrowDown': {\n handleArrow(event, { y: position.y + 0.05, x: position.x });\n break;\n }\n\n case 'ArrowRight': {\n handleArrow(event, { x: position.x + 0.05, y: position.y });\n break;\n }\n\n case 'ArrowLeft': {\n handleArrow(event, { x: position.x - 0.05, y: position.y });\n break;\n }\n }\n };\n\n return (\n <div\n className={classes.saturation}\n ref={ref}\n role=\"slider\"\n aria-label={saturationLabel}\n aria-valuenow={position.x}\n aria-valuetext={convertHsvaTo('rgba', value)}\n tabIndex={focusable ? 0 : -1}\n onKeyDown={handleKeyDown}\n >\n <div\n className={classes.saturationOverlay}\n style={{ backgroundColor: `hsl(${value.h}, 100%, 50%)` }}\n />\n\n <div\n className={classes.saturationOverlay}\n style={{ backgroundImage: 'linear-gradient(90deg, #fff, transparent)' }}\n />\n\n <div\n className={classes.saturationOverlay}\n style={{ backgroundImage: 'linear-gradient(0deg, #000, transparent)' }}\n />\n\n <Thumb\n __staticSelector={__staticSelector}\n classNames={classNames}\n styles={styles}\n position={position}\n className={classes.saturationThumb}\n style={{ backgroundColor: color }}\n size={size}\n />\n </div>\n );\n}\n\nSaturation.displayName = '@mantine/core/Saturation';\n"],"names":[],"mappings":"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"}
|
|
@@ -39,7 +39,8 @@ function Swatches(_a) {
|
|
|
39
39
|
styles,
|
|
40
40
|
__staticSelector = "color-picker",
|
|
41
41
|
unstyled,
|
|
42
|
-
setValue
|
|
42
|
+
setValue,
|
|
43
|
+
onChangeEnd
|
|
43
44
|
} = _b, others = __objRest(_b, [
|
|
44
45
|
"data",
|
|
45
46
|
"swatchesPerRow",
|
|
@@ -48,7 +49,8 @@ function Swatches(_a) {
|
|
|
48
49
|
"styles",
|
|
49
50
|
"__staticSelector",
|
|
50
51
|
"unstyled",
|
|
51
|
-
"setValue"
|
|
52
|
+
"setValue",
|
|
53
|
+
"onChangeEnd"
|
|
52
54
|
]);
|
|
53
55
|
const { classes } = useStyles({ swatchesPerRow }, { classNames, styles, name: __staticSelector, unstyled });
|
|
54
56
|
const colors = data.map((color, index) => /* @__PURE__ */ React.createElement(ColorSwatch, {
|
|
@@ -58,7 +60,10 @@ function Swatches(_a) {
|
|
|
58
60
|
color,
|
|
59
61
|
key: index,
|
|
60
62
|
radius: "sm",
|
|
61
|
-
onClick: () =>
|
|
63
|
+
onClick: () => {
|
|
64
|
+
setValue(color);
|
|
65
|
+
onChangeEnd == null ? void 0 : onChangeEnd(color);
|
|
66
|
+
},
|
|
62
67
|
style: { cursor: "pointer" },
|
|
63
68
|
"aria-label": color,
|
|
64
69
|
tabIndex: focusable ? 0 : -1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Swatches.js","sources":["../../../src/ColorPicker/Swatches/Swatches.tsx"],"sourcesContent":["import React from 'react';\nimport { DefaultProps, Selectors } from '@mantine/styles';\nimport { ColorSwatch } from '../../ColorSwatch/ColorSwatch';\nimport useStyles from './Swatches.styles';\n\nexport type SwatchesStylesNames = Selectors<typeof useStyles>;\n\nexport interface SwatchesProps\n extends DefaultProps<SwatchesStylesNames>,\n Omit<React.ComponentPropsWithoutRef<'div'>, 'onSelect'> {\n data: string[];\n swatchesPerRow?: number;\n focusable?: boolean;\n __staticSelector?: string;\n setValue(value: string): void;\n}\n\nexport function Swatches({\n data,\n swatchesPerRow = 10,\n focusable = true,\n classNames,\n styles,\n __staticSelector = 'color-picker',\n unstyled,\n setValue,\n ...others\n}: SwatchesProps) {\n const { classes } = useStyles(\n { swatchesPerRow },\n { classNames, styles, name: __staticSelector, unstyled }\n );\n\n const colors = data.map((color, index) => (\n <ColorSwatch\n className={classes.swatch}\n component=\"button\"\n type=\"button\"\n color={color}\n key={index}\n radius=\"sm\"\n onClick={() => setValue(color)}\n style={{ cursor: 'pointer' }}\n aria-label={color}\n tabIndex={focusable ? 0 : -1}\n />\n ));\n\n return (\n <div className={classes.swatches} {...others}>\n {colors}\n </div>\n );\n}\n\nSwatches.displayName = '@mantine/core/Swatches';\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Swatches.js","sources":["../../../src/ColorPicker/Swatches/Swatches.tsx"],"sourcesContent":["import React from 'react';\nimport { DefaultProps, Selectors } from '@mantine/styles';\nimport { ColorSwatch } from '../../ColorSwatch/ColorSwatch';\nimport useStyles from './Swatches.styles';\n\nexport type SwatchesStylesNames = Selectors<typeof useStyles>;\n\nexport interface SwatchesProps\n extends DefaultProps<SwatchesStylesNames>,\n Omit<React.ComponentPropsWithoutRef<'div'>, 'onSelect'> {\n data: string[];\n swatchesPerRow?: number;\n focusable?: boolean;\n onChangeEnd?: (color: string) => void;\n __staticSelector?: string;\n setValue(value: string): void;\n}\n\nexport function Swatches({\n data,\n swatchesPerRow = 10,\n focusable = true,\n classNames,\n styles,\n __staticSelector = 'color-picker',\n unstyled,\n setValue,\n onChangeEnd,\n ...others\n}: SwatchesProps) {\n const { classes } = useStyles(\n { swatchesPerRow },\n { classNames, styles, name: __staticSelector, unstyled }\n );\n\n const colors = data.map((color, index) => (\n <ColorSwatch\n className={classes.swatch}\n component=\"button\"\n type=\"button\"\n color={color}\n key={index}\n radius=\"sm\"\n onClick={() => {\n setValue(color);\n onChangeEnd?.(color);\n }}\n style={{ cursor: 'pointer' }}\n aria-label={color}\n tabIndex={focusable ? 0 : -1}\n />\n ));\n\n return (\n <div className={classes.swatches} {...others}>\n {colors}\n </div>\n );\n}\n\nSwatches.displayName = '@mantine/core/Swatches';\n"],"names":[],"mappings":"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"}
|
package/esm/Group/Group.js
CHANGED
|
@@ -47,19 +47,10 @@ const Group = forwardRef((props, ref) => {
|
|
|
47
47
|
position,
|
|
48
48
|
count: filteredChildren.length
|
|
49
49
|
}, { unstyled, name: "Group" });
|
|
50
|
-
const items = filteredChildren.map((child) => {
|
|
51
|
-
var _a2;
|
|
52
|
-
if (typeof child === "object" && child !== null && "props" in child) {
|
|
53
|
-
return React.cloneElement(child, {
|
|
54
|
-
className: cx(classes.child, (_a2 = child.props) == null ? void 0 : _a2.className)
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
return child;
|
|
58
|
-
});
|
|
59
50
|
return /* @__PURE__ */ React.createElement(Box, __spreadValues({
|
|
60
51
|
className: cx(classes.root, className),
|
|
61
52
|
ref
|
|
62
|
-
}, others),
|
|
53
|
+
}, others), filteredChildren);
|
|
63
54
|
});
|
|
64
55
|
Group.displayName = "@mantine/core/Group";
|
|
65
56
|
|
package/esm/Group/Group.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Group.js","sources":["../../src/Group/Group.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { DefaultProps, MantineNumberSize, useComponentDefaultProps } from '@mantine/styles';\nimport { Box } from '../Box';\nimport { filterFalsyChildren } from './filter-falsy-children/filter-falsy-children';\nimport useStyles, { GroupPosition } from './Group.styles';\n\nexport interface GroupProps extends DefaultProps, React.ComponentPropsWithoutRef<'div'> {\n /** Defines justify-content property */\n position?: GroupPosition;\n\n /** Defined flex-wrap property */\n noWrap?: boolean;\n\n /** Defines flex-grow property for each element, true -> 1, false -> 0 */\n grow?: boolean;\n\n /** Space between elements */\n spacing?: MantineNumberSize;\n\n /** Defines align-items css property */\n align?: React.CSSProperties['alignItems'];\n}\n\nconst defaultProps: Partial<GroupProps> = {\n position: 'left',\n spacing: 'md',\n};\n\nexport const Group = forwardRef<HTMLDivElement, GroupProps>((props: GroupProps, ref) => {\n const { className, position, align, children, noWrap, grow, spacing, unstyled, ...others } =\n useComponentDefaultProps('Group', defaultProps, props);\n\n const filteredChildren = filterFalsyChildren(children);\n const { classes, cx } = useStyles(\n {\n align,\n grow,\n noWrap,\n spacing,\n position,\n count: filteredChildren.length,\n },\n { unstyled, name: 'Group' }\n );\n\n
|
|
1
|
+
{"version":3,"file":"Group.js","sources":["../../src/Group/Group.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { DefaultProps, MantineNumberSize, useComponentDefaultProps } from '@mantine/styles';\nimport { Box } from '../Box';\nimport { filterFalsyChildren } from './filter-falsy-children/filter-falsy-children';\nimport useStyles, { GroupPosition } from './Group.styles';\n\nexport interface GroupProps extends DefaultProps, React.ComponentPropsWithoutRef<'div'> {\n /** Defines justify-content property */\n position?: GroupPosition;\n\n /** Defined flex-wrap property */\n noWrap?: boolean;\n\n /** Defines flex-grow property for each element, true -> 1, false -> 0 */\n grow?: boolean;\n\n /** Space between elements */\n spacing?: MantineNumberSize;\n\n /** Defines align-items css property */\n align?: React.CSSProperties['alignItems'];\n}\n\nconst defaultProps: Partial<GroupProps> = {\n position: 'left',\n spacing: 'md',\n};\n\nexport const Group = forwardRef<HTMLDivElement, GroupProps>((props: GroupProps, ref) => {\n const { className, position, align, children, noWrap, grow, spacing, unstyled, ...others } =\n useComponentDefaultProps('Group', defaultProps, props);\n\n const filteredChildren = filterFalsyChildren(children);\n const { classes, cx } = useStyles(\n {\n align,\n grow,\n noWrap,\n spacing,\n position,\n count: filteredChildren.length,\n },\n { unstyled, name: 'Group' }\n );\n\n return (\n <Box className={cx(classes.root, className)} ref={ref} {...others}>\n {filteredChildren}\n </Box>\n );\n});\n\nGroup.displayName = '@mantine/core/Group';\n"],"names":[],"mappings":"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"}
|
|
@@ -14,12 +14,12 @@ var useStyles = createStyles((theme, { spacing, position, noWrap, grow, align, c
|
|
|
14
14
|
alignItems: align || "center",
|
|
15
15
|
flexWrap: noWrap ? "nowrap" : "wrap",
|
|
16
16
|
justifyContent: GROUP_POSITIONS[position],
|
|
17
|
-
gap: theme.fn.size({ size: spacing, sizes: theme.spacing })
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
gap: theme.fn.size({ size: spacing, sizes: theme.spacing }),
|
|
18
|
+
"& > *": {
|
|
19
|
+
boxSizing: "border-box",
|
|
20
|
+
maxWidth: grow ? `calc(${100 / count}% - ${theme.fn.size({ size: spacing, sizes: theme.spacing }) - theme.fn.size({ size: spacing, sizes: theme.spacing }) / count}px)` : void 0,
|
|
21
|
+
flexGrow: grow ? 1 : 0
|
|
22
|
+
}
|
|
23
23
|
}
|
|
24
24
|
}));
|
|
25
25
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Group.styles.js","sources":["../../src/Group/Group.styles.ts"],"sourcesContent":["import React from 'react';\nimport { createStyles, MantineNumberSize } from '@mantine/styles';\n\nexport type GroupPosition = 'right' | 'center' | 'left' | 'apart';\n\nexport interface GroupStylesParams {\n position: GroupPosition;\n noWrap: boolean;\n grow: boolean;\n spacing: MantineNumberSize;\n align: React.CSSProperties['alignItems'];\n count: number;\n}\n\nexport const GROUP_POSITIONS = {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end',\n apart: 'space-between',\n};\n\nexport default createStyles(\n (theme, { spacing, position, noWrap, grow, align, count }: GroupStylesParams) => ({\n root: {\n boxSizing: 'border-box',\n display: 'flex',\n flexDirection: 'row',\n alignItems: align || 'center',\n flexWrap: noWrap ? 'nowrap' : 'wrap',\n justifyContent: GROUP_POSITIONS[position],\n gap: theme.fn.size({ size: spacing, sizes: theme.spacing }),\n
|
|
1
|
+
{"version":3,"file":"Group.styles.js","sources":["../../src/Group/Group.styles.ts"],"sourcesContent":["import React from 'react';\nimport { createStyles, MantineNumberSize } from '@mantine/styles';\n\nexport type GroupPosition = 'right' | 'center' | 'left' | 'apart';\n\nexport interface GroupStylesParams {\n position: GroupPosition;\n noWrap: boolean;\n grow: boolean;\n spacing: MantineNumberSize;\n align: React.CSSProperties['alignItems'];\n count: number;\n}\n\nexport const GROUP_POSITIONS = {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end',\n apart: 'space-between',\n};\n\nexport default createStyles(\n (theme, { spacing, position, noWrap, grow, align, count }: GroupStylesParams) => ({\n root: {\n boxSizing: 'border-box',\n display: 'flex',\n flexDirection: 'row',\n alignItems: align || 'center',\n flexWrap: noWrap ? 'nowrap' : 'wrap',\n justifyContent: GROUP_POSITIONS[position],\n gap: theme.fn.size({ size: spacing, sizes: theme.spacing }),\n '& > *': {\n boxSizing: 'border-box',\n maxWidth: grow\n ? `calc(${100 / count}% - ${\n theme.fn.size({ size: spacing, sizes: theme.spacing }) -\n theme.fn.size({ size: spacing, sizes: theme.spacing }) / count\n }px)`\n : undefined,\n flexGrow: grow ? 1 : 0,\n },\n },\n })\n);\n"],"names":[],"mappings":";;AACY,MAAC,eAAe,GAAG;AAC/B,EAAE,IAAI,EAAE,YAAY;AACpB,EAAE,MAAM,EAAE,QAAQ;AAClB,EAAE,KAAK,EAAE,UAAU;AACnB,EAAE,KAAK,EAAE,eAAe;AACxB,EAAE;AACF,gBAAe,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;AAC3F,EAAE,IAAI,EAAE;AACR,IAAI,SAAS,EAAE,YAAY;AAC3B,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,aAAa,EAAE,KAAK;AACxB,IAAI,UAAU,EAAE,KAAK,IAAI,QAAQ;AACjC,IAAI,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM;AACxC,IAAI,cAAc,EAAE,eAAe,CAAC,QAAQ,CAAC;AAC7C,IAAI,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAC/D,IAAI,OAAO,EAAE;AACb,MAAM,SAAS,EAAE,YAAY;AAC7B,MAAM,QAAQ,EAAE,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtL,MAAM,QAAQ,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC;AAC5B,KAAK;AACL,GAAG;AACH,CAAC,CAAC,CAAC;;;;;"}
|
|
@@ -45,7 +45,7 @@ function ListItem(_a) {
|
|
|
45
45
|
className: classes.itemWrapper
|
|
46
46
|
}, _icon && /* @__PURE__ */ React.createElement("span", {
|
|
47
47
|
className: classes.itemIcon
|
|
48
|
-
}, _icon),
|
|
48
|
+
}, _icon), children));
|
|
49
49
|
}
|
|
50
50
|
ListItem.displayName = "@mantine/core/ListItem";
|
|
51
51
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItem.js","sources":["../../../src/List/ListItem/ListItem.tsx"],"sourcesContent":["import React from 'react';\nimport { DefaultProps, Selectors, useContextStylesApi } from '@mantine/styles';\nimport { Box } from '../../Box';\nimport { useListContext } from '../List.context';\nimport useStyles from './ListItem.styles';\n\nexport type ListItemStylesNames = Selectors<typeof useStyles>;\n\nexport interface ListItemProps\n extends DefaultProps<ListItemStylesNames>,\n React.ComponentPropsWithoutRef<'li'> {\n /** Icon to replace bullet */\n icon?: React.ReactNode;\n\n /** Item content */\n children: React.ReactNode;\n}\n\nexport function ListItem({ className, children, icon, ...others }: ListItemProps) {\n const { icon: ctxIcon, spacing, center } = useListContext();\n const { classNames, styles, unstyled } = useContextStylesApi();\n const _icon = icon || ctxIcon;\n const { classes, cx } = useStyles(\n { spacing, center },\n { classNames, styles, unstyled, name: 'List' }\n );\n\n return (\n <Box\n component=\"li\"\n className={cx(classes.item, { [classes.withIcon]: _icon }, className)}\n {...others}\n >\n <div className={classes.itemWrapper}>\n {_icon && <span className={classes.itemIcon}>{_icon}</span>}\n
|
|
1
|
+
{"version":3,"file":"ListItem.js","sources":["../../../src/List/ListItem/ListItem.tsx"],"sourcesContent":["import React from 'react';\nimport { DefaultProps, Selectors, useContextStylesApi } from '@mantine/styles';\nimport { Box } from '../../Box';\nimport { useListContext } from '../List.context';\nimport useStyles from './ListItem.styles';\n\nexport type ListItemStylesNames = Selectors<typeof useStyles>;\n\nexport interface ListItemProps\n extends DefaultProps<ListItemStylesNames>,\n React.ComponentPropsWithoutRef<'li'> {\n /** Icon to replace bullet */\n icon?: React.ReactNode;\n\n /** Item content */\n children: React.ReactNode;\n}\n\nexport function ListItem({ className, children, icon, ...others }: ListItemProps) {\n const { icon: ctxIcon, spacing, center } = useListContext();\n const { classNames, styles, unstyled } = useContextStylesApi();\n const _icon = icon || ctxIcon;\n const { classes, cx } = useStyles(\n { spacing, center },\n { classNames, styles, unstyled, name: 'List' }\n );\n\n return (\n <Box\n component=\"li\"\n className={cx(classes.item, { [classes.withIcon]: _icon }, className)}\n {...others}\n >\n <div className={classes.itemWrapper}>\n {_icon && <span className={classes.itemIcon}>{_icon}</span>}\n {children}\n </div>\n </Box>\n );\n}\n\nListItem.displayName = '@mantine/core/ListItem';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { forwardRef, useRef, useState } from 'react';
|
|
2
|
-
import { useId,
|
|
2
|
+
import { useId, useUncontrolled, useScrollIntoView, useDidUpdate, useMergedRef } from '@mantine/hooks';
|
|
3
3
|
import { getDefaultZIndex, useComponentDefaultProps, extractSystemStyles } from '@mantine/styles';
|
|
4
4
|
import { groupOptions } from '@mantine/utils';
|
|
5
5
|
import { DefaultValue } from './DefaultValue/DefaultValue.js';
|
|
@@ -123,6 +123,7 @@ const MultiSelect = forwardRef((props, ref) => {
|
|
|
123
123
|
clearButtonLabel,
|
|
124
124
|
variant,
|
|
125
125
|
onSearchChange,
|
|
126
|
+
searchValue,
|
|
126
127
|
disabled,
|
|
127
128
|
initiallyOpened,
|
|
128
129
|
radius,
|
|
@@ -192,6 +193,7 @@ const MultiSelect = forwardRef((props, ref) => {
|
|
|
192
193
|
"clearButtonLabel",
|
|
193
194
|
"variant",
|
|
194
195
|
"onSearchChange",
|
|
196
|
+
"searchValue",
|
|
195
197
|
"disabled",
|
|
196
198
|
"initiallyOpened",
|
|
197
199
|
"radius",
|
|
@@ -235,7 +237,12 @@ const MultiSelect = forwardRef((props, ref) => {
|
|
|
235
237
|
const [dropdownOpened, _setDropdownOpened] = useState(initiallyOpened);
|
|
236
238
|
const [hovered, setHovered] = useState(-1);
|
|
237
239
|
const [direction, setDirection] = useState("column");
|
|
238
|
-
const [
|
|
240
|
+
const [_searchValue, handleSearchChange] = useUncontrolled({
|
|
241
|
+
value: searchValue,
|
|
242
|
+
defaultValue: "",
|
|
243
|
+
finalValue: void 0,
|
|
244
|
+
onChange: onSearchChange
|
|
245
|
+
});
|
|
239
246
|
const [IMEOpen, setIMEOpen] = useState(false);
|
|
240
247
|
const { scrollIntoView, targetRef, scrollableRef } = useScrollIntoView({
|
|
241
248
|
duration: 0,
|
|
@@ -250,10 +257,6 @@ const MultiSelect = forwardRef((props, ref) => {
|
|
|
250
257
|
const handler = opened ? onDropdownOpen : onDropdownClose;
|
|
251
258
|
typeof handler === "function" && handler();
|
|
252
259
|
};
|
|
253
|
-
const handleSearchChange = (val) => {
|
|
254
|
-
typeof onSearchChange === "function" && onSearchChange(val);
|
|
255
|
-
setSearchValue(val);
|
|
256
|
-
};
|
|
257
260
|
const formattedData = data.map((item) => typeof item === "string" ? { label: item, value: item } : item);
|
|
258
261
|
const sortedData = groupOptions({ data: formattedData });
|
|
259
262
|
const [_value, setValue] = useUncontrolled({
|
|
@@ -283,7 +286,7 @@ const MultiSelect = forwardRef((props, ref) => {
|
|
|
283
286
|
const filteredData = filterData({
|
|
284
287
|
data: sortedData,
|
|
285
288
|
searchable,
|
|
286
|
-
searchValue,
|
|
289
|
+
searchValue: _searchValue,
|
|
287
290
|
limit,
|
|
288
291
|
filter,
|
|
289
292
|
value: _value
|
|
@@ -299,7 +302,7 @@ const MultiSelect = forwardRef((props, ref) => {
|
|
|
299
302
|
};
|
|
300
303
|
useDidUpdate(() => {
|
|
301
304
|
setHovered(-1);
|
|
302
|
-
}, [
|
|
305
|
+
}, [_searchValue]);
|
|
303
306
|
useDidUpdate(() => {
|
|
304
307
|
if (!disabled && _value.length > data.length) {
|
|
305
308
|
setDropdownOpened(false);
|
|
@@ -423,7 +426,7 @@ const MultiSelect = forwardRef((props, ref) => {
|
|
|
423
426
|
break;
|
|
424
427
|
}
|
|
425
428
|
case "Backspace": {
|
|
426
|
-
if (_value.length > 0 &&
|
|
429
|
+
if (_value.length > 0 && _searchValue.length === 0) {
|
|
427
430
|
setValue(_value.slice(0, -1));
|
|
428
431
|
setDropdownOpened(true);
|
|
429
432
|
if (maxSelectedValues) {
|
|
@@ -498,9 +501,9 @@ const MultiSelect = forwardRef((props, ref) => {
|
|
|
498
501
|
valuesOverflow.current = false;
|
|
499
502
|
}
|
|
500
503
|
};
|
|
501
|
-
if (isCreatable && shouldCreate(
|
|
502
|
-
createLabel = getCreateLabel(
|
|
503
|
-
filteredData.push({ label:
|
|
504
|
+
if (isCreatable && shouldCreate(_searchValue, sortedData)) {
|
|
505
|
+
createLabel = getCreateLabel(_searchValue);
|
|
506
|
+
filteredData.push({ label: _searchValue, value: _searchValue, creatable: true });
|
|
504
507
|
}
|
|
505
508
|
const shouldRenderDropdown = !readOnly && (filteredData.length > 0 ? dropdownOpened : dropdownOpened && !!nothingFound);
|
|
506
509
|
return /* @__PURE__ */ React.createElement(Input.Wrapper, __spreadValues(__spreadValues({
|
|
@@ -601,7 +604,7 @@ const MultiSelect = forwardRef((props, ref) => {
|
|
|
601
604
|
[classes.searchInputEmpty]: _value.length === 0
|
|
602
605
|
}),
|
|
603
606
|
onKeyDown: handleInputKeydown,
|
|
604
|
-
value:
|
|
607
|
+
value: _searchValue,
|
|
605
608
|
onChange: handleInputChange,
|
|
606
609
|
onFocus: handleInputFocus,
|
|
607
610
|
onBlur: handleInputBlur,
|