@mantine/core 9.4.3-alpha.0 → 9.5.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/components/Accordion/Accordion.cjs +5 -2
- package/cjs/components/Accordion/Accordion.cjs.map +1 -1
- package/cjs/components/AngleSlider/AngleSlider.cjs +4 -1
- package/cjs/components/AngleSlider/AngleSlider.cjs.map +1 -1
- package/cjs/components/Avatar/AvatarGroup/AvatarGroup.cjs +15 -14
- package/cjs/components/Avatar/AvatarGroup/AvatarGroup.cjs.map +1 -1
- package/cjs/components/Cascader/Cascader.cjs +371 -0
- package/cjs/components/Cascader/Cascader.cjs.map +1 -0
- package/cjs/components/Cascader/Cascader.module.cjs +18 -0
- package/cjs/components/Cascader/Cascader.module.cjs.map +1 -0
- package/cjs/components/Cascader/CascaderColumns.cjs +136 -0
- package/cjs/components/Cascader/CascaderColumns.cjs.map +1 -0
- package/cjs/components/Cascader/flatten-cascader-paths.cjs +26 -0
- package/cjs/components/Cascader/flatten-cascader-paths.cjs.map +1 -0
- package/cjs/components/Cascader/get-cascader-columns.cjs +30 -0
- package/cjs/components/Cascader/get-cascader-columns.cjs.map +1 -0
- package/cjs/components/Cascader/get-cascader-path-options.cjs +19 -0
- package/cjs/components/Cascader/get-cascader-path-options.cjs.map +1 -0
- package/cjs/components/Cascader/use-cascader.cjs +135 -0
- package/cjs/components/Cascader/use-cascader.cjs.map +1 -0
- package/cjs/components/ColorPicker/converters/converters.cjs +5 -0
- package/cjs/components/ColorPicker/converters/parsers.cjs +5 -0
- package/cjs/components/Combobox/use-combobox/use-combobox.cjs +6 -2
- package/cjs/components/Combobox/use-combobox/use-combobox.cjs.map +1 -1
- package/cjs/components/ComboboxPopover/ComboboxPopover.cjs +2 -1
- package/cjs/components/ComboboxPopover/ComboboxPopover.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerStack.cjs +1 -1
- package/cjs/components/Drawer/DrawerStack.cjs.map +1 -1
- package/cjs/components/FloatingIndicator/FloatingIndicator.cjs +2 -1
- package/cjs/components/FloatingIndicator/FloatingIndicator.cjs.map +1 -1
- package/cjs/components/FloatingWindow/FloatingWindow.cjs +31 -10
- package/cjs/components/FloatingWindow/FloatingWindow.cjs.map +1 -1
- package/cjs/components/FloatingWindow/FloatingWindow.context.cjs +8 -0
- package/cjs/components/FloatingWindow/FloatingWindow.context.cjs.map +1 -0
- package/cjs/components/FloatingWindow/FloatingWindow.module.cjs.map +1 -1
- package/cjs/components/FloatingWindow/FloatingWindowResizeHandle.cjs +161 -0
- package/cjs/components/FloatingWindow/FloatingWindowResizeHandle.cjs.map +1 -0
- package/cjs/components/Modal/ModalStack.cjs +1 -1
- package/cjs/components/Modal/ModalStack.cjs.map +1 -1
- package/cjs/components/OverflowList/OverflowList.cjs +2 -1
- package/cjs/components/OverflowList/OverflowList.cjs.map +1 -1
- package/cjs/components/Pagination/PaginationEdges/PaginationEdges.cjs +1 -0
- package/cjs/components/ScrollArea/ScrollArea.cjs +7 -2
- package/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollArea.module.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.cjs +1 -0
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.cjs +8 -4
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.cjs +3 -1
- package/cjs/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.cjs.map +1 -1
- package/cjs/components/SimpleGrid/SimpleGridVariables.cjs +1 -1
- package/cjs/components/SimpleGrid/SimpleGridVariables.cjs.map +1 -1
- package/cjs/components/Slider/RangeSlider/RangeSlider.cjs +18 -11
- package/cjs/components/Slider/RangeSlider/RangeSlider.cjs.map +1 -1
- package/cjs/components/Table/Table.components.cjs +1 -0
- package/cjs/components/TagsInput/TagsInput.cjs +2 -1
- package/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
- package/cjs/components/Timeline/Timeline.cjs +5 -1
- package/cjs/components/Timeline/Timeline.cjs.map +1 -1
- package/cjs/components/Timeline/Timeline.module.cjs +2 -1
- package/cjs/components/Timeline/Timeline.module.cjs.map +1 -1
- package/cjs/components/Timeline/TimelineItem/TimelineItem.cjs +31 -20
- package/cjs/components/Timeline/TimelineItem/TimelineItem.cjs.map +1 -1
- package/cjs/components/Tree/TreeNode.cjs.map +1 -1
- package/cjs/components/Tree/use-tree.cjs +1 -1
- package/cjs/components/Tree/use-tree.cjs.map +1 -1
- package/cjs/components/TreeSelect/TreeSelect.cjs +3 -2
- package/cjs/components/TreeSelect/TreeSelect.cjs.map +1 -1
- package/cjs/core/Box/get-box-mod/get-box-mod.cjs +1 -0
- package/cjs/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs +6 -5
- package/cjs/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs.map +1 -1
- package/cjs/core/MantineProvider/merge-mantine-theme/merge-mantine-theme.cjs +2 -0
- package/cjs/core/MantineProvider/use-matches/use-matches.cjs +3 -2
- package/cjs/core/MantineProvider/use-matches/use-matches.cjs.map +1 -1
- package/cjs/index.cjs +7 -1
- package/esm/components/Accordion/Accordion.mjs +5 -2
- package/esm/components/Accordion/Accordion.mjs.map +1 -1
- package/esm/components/AngleSlider/AngleSlider.mjs +4 -1
- package/esm/components/AngleSlider/AngleSlider.mjs.map +1 -1
- package/esm/components/Avatar/AvatarGroup/AvatarGroup.mjs +15 -14
- package/esm/components/Avatar/AvatarGroup/AvatarGroup.mjs.map +1 -1
- package/esm/components/Cascader/Cascader.mjs +371 -0
- package/esm/components/Cascader/Cascader.mjs.map +1 -0
- package/esm/components/Cascader/Cascader.module.mjs +18 -0
- package/esm/components/Cascader/Cascader.module.mjs.map +1 -0
- package/esm/components/Cascader/CascaderColumns.mjs +135 -0
- package/esm/components/Cascader/CascaderColumns.mjs.map +1 -0
- package/esm/components/Cascader/flatten-cascader-paths.mjs +26 -0
- package/esm/components/Cascader/flatten-cascader-paths.mjs.map +1 -0
- package/esm/components/Cascader/get-cascader-columns.mjs +28 -0
- package/esm/components/Cascader/get-cascader-columns.mjs.map +1 -0
- package/esm/components/Cascader/get-cascader-path-options.mjs +19 -0
- package/esm/components/Cascader/get-cascader-path-options.mjs.map +1 -0
- package/esm/components/Cascader/use-cascader.mjs +135 -0
- package/esm/components/Cascader/use-cascader.mjs.map +1 -0
- package/esm/components/ColorPicker/converters/converters.mjs +1 -1
- package/esm/components/ColorPicker/converters/parsers.mjs +1 -1
- package/esm/components/Combobox/use-combobox/use-combobox.mjs +6 -2
- package/esm/components/Combobox/use-combobox/use-combobox.mjs.map +1 -1
- package/esm/components/ComboboxPopover/ComboboxPopover.mjs +2 -1
- package/esm/components/ComboboxPopover/ComboboxPopover.mjs.map +1 -1
- package/esm/components/Drawer/DrawerStack.mjs +1 -1
- package/esm/components/Drawer/DrawerStack.mjs.map +1 -1
- package/esm/components/FloatingIndicator/FloatingIndicator.mjs +2 -1
- package/esm/components/FloatingIndicator/FloatingIndicator.mjs.map +1 -1
- package/esm/components/FloatingWindow/FloatingWindow.context.mjs +8 -0
- package/esm/components/FloatingWindow/FloatingWindow.context.mjs.map +1 -0
- package/esm/components/FloatingWindow/FloatingWindow.mjs +32 -11
- package/esm/components/FloatingWindow/FloatingWindow.mjs.map +1 -1
- package/esm/components/FloatingWindow/FloatingWindow.module.mjs.map +1 -1
- package/esm/components/FloatingWindow/FloatingWindowResizeHandle.mjs +161 -0
- package/esm/components/FloatingWindow/FloatingWindowResizeHandle.mjs.map +1 -0
- package/esm/components/Modal/ModalStack.mjs +1 -1
- package/esm/components/Modal/ModalStack.mjs.map +1 -1
- package/esm/components/OverflowList/OverflowList.mjs +2 -1
- package/esm/components/OverflowList/OverflowList.mjs.map +1 -1
- package/esm/components/Pagination/PaginationEdges/PaginationEdges.mjs +1 -1
- package/esm/components/ScrollArea/ScrollArea.mjs +7 -2
- package/esm/components/ScrollArea/ScrollArea.mjs.map +1 -1
- package/esm/components/ScrollArea/ScrollArea.module.mjs.map +1 -1
- package/esm/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.mjs +1 -1
- package/esm/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.mjs +8 -4
- package/esm/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.mjs.map +1 -1
- package/esm/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.mjs +3 -2
- package/esm/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.mjs.map +1 -1
- package/esm/components/SimpleGrid/SimpleGridVariables.mjs +1 -1
- package/esm/components/SimpleGrid/SimpleGridVariables.mjs.map +1 -1
- package/esm/components/Slider/RangeSlider/RangeSlider.mjs +18 -11
- package/esm/components/Slider/RangeSlider/RangeSlider.mjs.map +1 -1
- package/esm/components/Table/Table.components.mjs +1 -1
- package/esm/components/TagsInput/TagsInput.mjs +2 -1
- package/esm/components/TagsInput/TagsInput.mjs.map +1 -1
- package/esm/components/Timeline/Timeline.mjs +5 -1
- package/esm/components/Timeline/Timeline.mjs.map +1 -1
- package/esm/components/Timeline/Timeline.module.mjs +2 -1
- package/esm/components/Timeline/Timeline.module.mjs.map +1 -1
- package/esm/components/Timeline/TimelineItem/TimelineItem.mjs +31 -20
- package/esm/components/Timeline/TimelineItem/TimelineItem.mjs.map +1 -1
- package/esm/components/Tree/TreeNode.mjs.map +1 -1
- package/esm/components/Tree/use-tree.mjs +1 -1
- package/esm/components/Tree/use-tree.mjs.map +1 -1
- package/esm/components/TreeSelect/TreeSelect.mjs +3 -2
- package/esm/components/TreeSelect/TreeSelect.mjs.map +1 -1
- package/esm/core/Box/get-box-mod/get-box-mod.mjs +1 -1
- package/esm/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.mjs +6 -5
- package/esm/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.mjs.map +1 -1
- package/esm/core/MantineProvider/merge-mantine-theme/merge-mantine-theme.mjs +1 -1
- package/esm/core/MantineProvider/use-matches/use-matches.mjs +3 -2
- package/esm/core/MantineProvider/use-matches/use-matches.mjs.map +1 -1
- package/esm/index.mjs +5 -2
- package/lib/components/Accordion/Accordion.d.ts +2 -0
- package/lib/components/Cascader/Cascader.d.ts +114 -0
- package/lib/components/Cascader/CascaderColumns.d.ts +36 -0
- package/lib/components/Cascader/flatten-cascader-paths.d.ts +12 -0
- package/lib/components/Cascader/get-cascader-columns.d.ts +4 -0
- package/lib/components/Cascader/get-cascader-path-options.d.ts +2 -0
- package/lib/components/Cascader/index.d.ts +12 -0
- package/lib/components/Cascader/use-cascader.d.ts +25 -0
- package/lib/components/FloatingWindow/FloatingWindow.context.d.ts +21 -0
- package/lib/components/FloatingWindow/FloatingWindow.d.ts +10 -5
- package/lib/components/FloatingWindow/FloatingWindowResizeHandle.d.ts +11 -0
- package/lib/components/FloatingWindow/index.d.ts +2 -0
- package/lib/components/ScrollArea/ScrollArea.d.ts +5 -0
- package/lib/components/Timeline/TimelineItem/TimelineItem.d.ts +5 -1
- package/lib/components/index.d.ts +1 -0
- package/package.json +3 -3
- package/styles/Cascader.css +215 -0
- package/styles/Cascader.layer.css +216 -0
- package/styles/FloatingWindow.css +2 -0
- package/styles/FloatingWindow.layer.css +2 -0
- package/styles/ScrollArea.css +58 -0
- package/styles/ScrollArea.layer.css +58 -0
- package/styles/Timeline.css +88 -14
- package/styles/Timeline.layer.css +88 -14
- package/styles.css +364 -14
- package/styles.layer.css +364 -14
|
@@ -20,6 +20,7 @@ const defaultProps = {
|
|
|
20
20
|
multiple: false,
|
|
21
21
|
loop: true,
|
|
22
22
|
disableChevronRotation: false,
|
|
23
|
+
disableCollapse: false,
|
|
23
24
|
chevronPosition: "right",
|
|
24
25
|
variant: "default",
|
|
25
26
|
chevronSize: "auto",
|
|
@@ -33,7 +34,7 @@ const varsResolver = require_create_vars_resolver.createVarsResolver((_, { trans
|
|
|
33
34
|
} }));
|
|
34
35
|
const Accordion = require_factory.genericFactory((_props) => {
|
|
35
36
|
const props = require_use_props.useProps("Accordion", defaultProps, _props);
|
|
36
|
-
const { classNames, className, style, styles, unstyled, vars, children, multiple, value, defaultValue, onChange, id, loop, transitionDuration, disableChevronRotation, chevronPosition, chevronSize, order, chevron, variant, radius, chevronIconSize, attributes, keepMounted, keepMountedMode, ...others } = props;
|
|
37
|
+
const { classNames, className, style, styles, unstyled, vars, children, multiple, value, defaultValue, onChange, id, loop, transitionDuration, disableChevronRotation, disableCollapse, chevronPosition, chevronSize, order, chevron, variant, radius, chevronIconSize, attributes, keepMounted, keepMountedMode, ...others } = props;
|
|
37
38
|
const uid = (0, _mantine_hooks.useId)(id);
|
|
38
39
|
const [_value, handleChange] = (0, _mantine_hooks.useUncontrolled)({
|
|
39
40
|
value,
|
|
@@ -43,7 +44,9 @@ const Accordion = require_factory.genericFactory((_props) => {
|
|
|
43
44
|
});
|
|
44
45
|
const isItemActive = (itemValue) => Array.isArray(_value) ? _value.includes(itemValue) : itemValue === _value;
|
|
45
46
|
const handleItemChange = (itemValue) => {
|
|
46
|
-
|
|
47
|
+
if (!Array.isArray(_value) && disableCollapse && itemValue === _value) return;
|
|
48
|
+
const nextValue = Array.isArray(_value) ? _value.includes(itemValue) ? _value.filter((selectedValue) => selectedValue !== itemValue) : [..._value, itemValue] : itemValue === _value ? null : itemValue;
|
|
49
|
+
handleChange(nextValue);
|
|
47
50
|
};
|
|
48
51
|
const getStyles = require_use_styles.useStyles({
|
|
49
52
|
name: "Accordion",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.cjs","names":["createVarsResolver","rem","getRadius","genericFactory","useProps","useStyles","AccordionProvider","getSafeId","AccordionChevron","Box","classes","AccordionItem","AccordionPanel","AccordionControl"],"sources":["../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import { useId, useUncontrolled } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n Factory,\n genericFactory,\n getRadius,\n getSafeId,\n MantineRadius,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { AccordionProvider } from './Accordion.context';\nimport { AccordionChevronPosition, AccordionHeadingOrder, AccordionValue } from './Accordion.types';\nimport { AccordionChevron } from './AccordionChevron';\nimport { AccordionControl, type AccordionControlProps } from './AccordionControl/AccordionControl';\nimport { AccordionItem, type AccordionItemProps } from './AccordionItem/AccordionItem';\nimport { AccordionPanel, type AccordionPanelProps } from './AccordionPanel/AccordionPanel';\nimport classes from './Accordion.module.css';\nimport type { AccordionItemContextValue } from './AccordionItem.context';\nexport type AccordionStylesNames =\n | 'root'\n | 'content'\n | 'item'\n | 'panel'\n | 'icon'\n | 'chevron'\n | 'label'\n | 'itemTitle'\n | 'control';\n\nexport type AccordionVariant = 'default' | 'contained' | 'filled' | 'separated';\nexport type AccordionCssVariables = {\n root: '--accordion-transition-duration' | '--accordion-chevron-size' | '--accordion-radius';\n};\n\nexport interface AccordionProps<Multiple extends boolean = false>\n extends\n BoxProps,\n StylesApiProps<AccordionFactory>,\n ElementProps<'div', 'value' | 'defaultValue' | 'onChange'> {\n /** If set, multiple items can be opened at the same time @default false */\n multiple?: Multiple;\n\n /** Controlled component value */\n value?: AccordionValue<Multiple>;\n\n /** Uncontrolled component default value */\n defaultValue?: AccordionValue<Multiple>;\n\n /** Called when value changes, payload type depends on `multiple` prop */\n onChange?: (value: AccordionValue<Multiple>) => void;\n\n /** If set, arrow keys loop through items (first to last and last to first) @default true */\n loop?: boolean;\n\n /** Transition duration in ms @default 200 */\n transitionDuration?: number;\n\n /** If set, chevron rotation is disabled @default false */\n disableChevronRotation?: boolean;\n\n /** Position of the chevron relative to the item label @default right */\n chevronPosition?: AccordionChevronPosition;\n\n /** Size of the chevron icon container @default auto */\n chevronSize?: number | string;\n\n /** Size of the default chevron icon. Ignored when `chevron` prop is set. Use `chevronSize` instead when using custom chevron. @default 16 */\n chevronIconSize?: number | string;\n\n /** Sets heading level (h2-h6) for `Accordion.Control` elements. Wraps each control in the corresponding heading tag, recommended to meet WAI-ARIA accessibility requirements. Has no visual effect. */\n order?: AccordionHeadingOrder;\n\n /** Custom chevron icon */\n chevron?: React.ReactNode;\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius. Numbers are converted to rem. @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** If set to `false`, panels are unmounted when collapsed. By default, panels stay mounted when collapsed. @default true */\n keepMounted?: boolean;\n\n /** Controls how inactive panels content is hidden when `keepMounted` is `true`, `'activity'` – hidden with `Activity` component, `'display-none'` – hidden with `display: none` styles @default 'activity' */\n keepMountedMode?: 'activity' | 'display-none';\n}\n\nexport type AccordionFactory = Factory<{\n props: AccordionProps;\n ref: HTMLDivElement;\n stylesNames: AccordionStylesNames;\n vars: AccordionCssVariables;\n variant: AccordionVariant;\n signature: <Multiple extends boolean = false>(\n props: AccordionProps<Multiple>\n ) => React.JSX.Element;\n staticComponents: {\n Item: typeof AccordionItem;\n Panel: typeof AccordionPanel;\n Control: typeof AccordionControl;\n Chevron: typeof AccordionChevron;\n };\n}>;\n\nconst defaultProps = {\n multiple: false,\n loop: true,\n disableChevronRotation: false,\n chevronPosition: 'right',\n variant: 'default',\n chevronSize: 'auto',\n chevronIconSize: 16,\n keepMountedMode: 'activity',\n} satisfies Partial<AccordionProps>;\n\nconst varsResolver = createVarsResolver<AccordionFactory>(\n (_, { transitionDuration, chevronSize, radius }) => ({\n root: {\n '--accordion-transition-duration':\n transitionDuration === undefined ? undefined : `${transitionDuration}ms`,\n '--accordion-chevron-size': chevronSize === undefined ? undefined : rem(chevronSize),\n '--accordion-radius': radius === undefined ? undefined : getRadius(radius),\n },\n })\n);\n\nexport const Accordion = genericFactory<AccordionFactory>((_props) => {\n const props = useProps('Accordion', defaultProps as any, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n children,\n multiple,\n value,\n defaultValue,\n onChange,\n id,\n loop,\n transitionDuration,\n disableChevronRotation,\n chevronPosition,\n chevronSize,\n order,\n chevron,\n variant,\n radius,\n chevronIconSize,\n attributes,\n keepMounted,\n keepMountedMode,\n ...others\n } = props;\n\n const uid = useId(id);\n const [_value, handleChange] = useUncontrolled({\n value,\n defaultValue,\n finalValue: multiple ? ([] as any) : null,\n onChange,\n });\n\n const isItemActive = (itemValue: string) =>\n Array.isArray(_value) ? _value.includes(itemValue) : itemValue === _value;\n\n const handleItemChange = (itemValue: string) => {\n const nextValue = Array.isArray(_value)\n ? _value.includes(itemValue)\n ? _value.filter((selectedValue) => selectedValue !== itemValue)\n : [..._value, itemValue]\n : itemValue === _value\n ? null\n : (itemValue as any);\n\n handleChange(nextValue);\n };\n\n const getStyles = useStyles<AccordionFactory>({\n name: 'Accordion',\n classes,\n props: props as AccordionProps,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n return (\n <AccordionProvider\n value={{\n isItemActive,\n onChange: handleItemChange,\n getControlId: getSafeId(\n `${uid}-control`,\n 'Accordion.Item component was rendered with invalid value or without value'\n ),\n getRegionId: getSafeId(\n `${uid}-panel`,\n 'Accordion.Item component was rendered with invalid value or without value'\n ),\n chevron: chevron === null ? null : chevron || <AccordionChevron size={chevronIconSize} />,\n transitionDuration,\n disableChevronRotation,\n chevronPosition,\n order,\n loop,\n getStyles,\n variant,\n unstyled,\n keepMounted,\n keepMountedMode,\n }}\n >\n <Box {...getStyles('root')} id={uid} {...others} variant={variant} data-accordion>\n {children}\n </Box>\n </AccordionProvider>\n );\n});\n\nAccordion.classes = classes;\nAccordion.varsResolver = varsResolver;\nAccordion.displayName = '@mantine/core/Accordion';\nAccordion.Item = AccordionItem;\nAccordion.Panel = AccordionPanel;\nAccordion.Control = AccordionControl;\nAccordion.Chevron = AccordionChevron;\n\nexport namespace Accordion {\n export type Props = AccordionProps;\n export type StylesNames = AccordionStylesNames;\n export type CssVariables = AccordionCssVariables;\n export type Factory = AccordionFactory;\n export type Variant = AccordionVariant;\n\n export namespace Control {\n export type Props = AccordionControlProps;\n }\n\n export namespace Item {\n export type Props = AccordionItemProps;\n export type Context = AccordionItemContextValue;\n }\n\n export namespace Panel {\n export type Props = AccordionPanelProps;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA4GA,MAAM,eAAe;CACnB,UAAU;CACV,MAAM;CACN,wBAAwB;CACxB,iBAAiB;CACjB,SAAS;CACT,aAAa;CACb,iBAAiB;CACjB,iBAAiB;AACnB;AAEA,MAAM,eAAeA,6BAAAA,oBAClB,GAAG,EAAE,oBAAoB,aAAa,cAAc,EACnD,MAAM;CACJ,mCACE,uBAAuB,KAAA,IAAY,KAAA,IAAY,GAAG,mBAAmB;CACvE,4BAA4B,gBAAgB,KAAA,IAAY,KAAA,IAAYC,YAAAA,IAAI,WAAW;CACnF,sBAAsB,WAAW,KAAA,IAAY,KAAA,IAAYC,iBAAAA,UAAU,MAAM;AAC3E,EACF,EACF;AAEA,MAAa,YAAYC,gBAAAA,gBAAkC,WAAW;CACpE,MAAM,QAAQC,kBAAAA,SAAS,aAAa,cAAqB,MAAM;CAC/D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,UACA,UACA,OACA,cACA,UACA,IACA,MACA,oBACA,wBACA,iBACA,aACA,OACA,SACA,SACA,QACA,iBACA,YACA,aACA,iBACA,GAAG,WACD;CAEJ,MAAM,OAAA,GAAA,eAAA,MAAA,CAAY,EAAE;CACpB,MAAM,CAAC,QAAQ,iBAAA,GAAA,eAAA,gBAAA,CAAgC;EAC7C;EACA;EACA,YAAY,WAAY,CAAC,IAAY;EACrC;CACF,CAAC;CAED,MAAM,gBAAgB,cACpB,MAAM,QAAQ,MAAM,IAAI,OAAO,SAAS,SAAS,IAAI,cAAc;CAErE,MAAM,oBAAoB,cAAsB;EAS9C,aARkB,MAAM,QAAQ,MAAM,IAClC,OAAO,SAAS,SAAS,IACvB,OAAO,QAAQ,kBAAkB,kBAAkB,SAAS,IAC5D,CAAC,GAAG,QAAQ,SAAS,IACvB,cAAc,SACZ,OACC,SAEe;CACxB;CAEA,MAAM,YAAYC,mBAAAA,UAA4B;EAC5C,MAAM;EACN,SAAA,yBAAA;EACO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,0BAAAA,mBAAD;EACE,OAAO;GACL;GACA,UAAU;GACV,cAAcC,oBAAAA,UACZ,GAAG,IAAI,WACP,2EACF;GACA,aAAaA,oBAAAA,UACX,GAAG,IAAI,SACP,2EACF;GACA,SAAS,YAAY,OAAO,OAAO,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAACC,yBAAAA,kBAAD,EAAkB,MAAM,gBAAkB,CAAA;GACxF;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;YAEA,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;GAAK,GAAI,UAAU,MAAM;GAAG,IAAI;GAAK,GAAI;GAAiB;GAAS,kBAAA;GAChE;EACE,CAAA;CACY,CAAA;AAEvB,CAAC;AAED,UAAU,UAAUC,yBAAAA;AACpB,UAAU,eAAe;AACzB,UAAU,cAAc;AACxB,UAAU,OAAOC,sBAAAA;AACjB,UAAU,QAAQC,uBAAAA;AAClB,UAAU,UAAUC,yBAAAA;AACpB,UAAU,UAAUL,yBAAAA"}
|
|
1
|
+
{"version":3,"file":"Accordion.cjs","names":["createVarsResolver","rem","getRadius","genericFactory","useProps","useStyles","AccordionProvider","getSafeId","AccordionChevron","Box","classes","AccordionItem","AccordionPanel","AccordionControl"],"sources":["../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import { useId, useUncontrolled } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n Factory,\n genericFactory,\n getRadius,\n getSafeId,\n MantineRadius,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { AccordionProvider } from './Accordion.context';\nimport { AccordionChevronPosition, AccordionHeadingOrder, AccordionValue } from './Accordion.types';\nimport { AccordionChevron } from './AccordionChevron';\nimport { AccordionControl, type AccordionControlProps } from './AccordionControl/AccordionControl';\nimport { AccordionItem, type AccordionItemProps } from './AccordionItem/AccordionItem';\nimport { AccordionPanel, type AccordionPanelProps } from './AccordionPanel/AccordionPanel';\nimport classes from './Accordion.module.css';\nimport type { AccordionItemContextValue } from './AccordionItem.context';\nexport type AccordionStylesNames =\n | 'root'\n | 'content'\n | 'item'\n | 'panel'\n | 'icon'\n | 'chevron'\n | 'label'\n | 'itemTitle'\n | 'control';\n\nexport type AccordionVariant = 'default' | 'contained' | 'filled' | 'separated';\nexport type AccordionCssVariables = {\n root: '--accordion-transition-duration' | '--accordion-chevron-size' | '--accordion-radius';\n};\n\nexport interface AccordionProps<Multiple extends boolean = false>\n extends\n BoxProps,\n StylesApiProps<AccordionFactory>,\n ElementProps<'div', 'value' | 'defaultValue' | 'onChange'> {\n /** If set, multiple items can be opened at the same time @default false */\n multiple?: Multiple;\n\n /** Controlled component value */\n value?: AccordionValue<Multiple>;\n\n /** Uncontrolled component default value */\n defaultValue?: AccordionValue<Multiple>;\n\n /** Called when value changes, payload type depends on `multiple` prop */\n onChange?: (value: AccordionValue<Multiple>) => void;\n\n /** If set, arrow keys loop through items (first to last and last to first) @default true */\n loop?: boolean;\n\n /** Transition duration in ms @default 200 */\n transitionDuration?: number;\n\n /** If set, chevron rotation is disabled @default false */\n disableChevronRotation?: boolean;\n\n /** If set, the open item cannot be collapsed by clicking it again, so one item always stays open. Only applies when `multiple` is `false`. @default false */\n disableCollapse?: boolean;\n\n /** Position of the chevron relative to the item label @default right */\n chevronPosition?: AccordionChevronPosition;\n\n /** Size of the chevron icon container @default auto */\n chevronSize?: number | string;\n\n /** Size of the default chevron icon. Ignored when `chevron` prop is set. Use `chevronSize` instead when using custom chevron. @default 16 */\n chevronIconSize?: number | string;\n\n /** Sets heading level (h2-h6) for `Accordion.Control` elements. Wraps each control in the corresponding heading tag, recommended to meet WAI-ARIA accessibility requirements. Has no visual effect. */\n order?: AccordionHeadingOrder;\n\n /** Custom chevron icon */\n chevron?: React.ReactNode;\n\n /** Key of `theme.radius` or any valid CSS value to set border-radius. Numbers are converted to rem. @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** If set to `false`, panels are unmounted when collapsed. By default, panels stay mounted when collapsed. @default true */\n keepMounted?: boolean;\n\n /** Controls how inactive panels content is hidden when `keepMounted` is `true`, `'activity'` – hidden with `Activity` component, `'display-none'` – hidden with `display: none` styles @default 'activity' */\n keepMountedMode?: 'activity' | 'display-none';\n}\n\nexport type AccordionFactory = Factory<{\n props: AccordionProps;\n ref: HTMLDivElement;\n stylesNames: AccordionStylesNames;\n vars: AccordionCssVariables;\n variant: AccordionVariant;\n signature: <Multiple extends boolean = false>(\n props: AccordionProps<Multiple>\n ) => React.JSX.Element;\n staticComponents: {\n Item: typeof AccordionItem;\n Panel: typeof AccordionPanel;\n Control: typeof AccordionControl;\n Chevron: typeof AccordionChevron;\n };\n}>;\n\nconst defaultProps = {\n multiple: false,\n loop: true,\n disableChevronRotation: false,\n disableCollapse: false,\n chevronPosition: 'right',\n variant: 'default',\n chevronSize: 'auto',\n chevronIconSize: 16,\n keepMountedMode: 'activity',\n} satisfies Partial<AccordionProps>;\n\nconst varsResolver = createVarsResolver<AccordionFactory>(\n (_, { transitionDuration, chevronSize, radius }) => ({\n root: {\n '--accordion-transition-duration':\n transitionDuration === undefined ? undefined : `${transitionDuration}ms`,\n '--accordion-chevron-size': chevronSize === undefined ? undefined : rem(chevronSize),\n '--accordion-radius': radius === undefined ? undefined : getRadius(radius),\n },\n })\n);\n\nexport const Accordion = genericFactory<AccordionFactory>((_props) => {\n const props = useProps('Accordion', defaultProps as any, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n children,\n multiple,\n value,\n defaultValue,\n onChange,\n id,\n loop,\n transitionDuration,\n disableChevronRotation,\n disableCollapse,\n chevronPosition,\n chevronSize,\n order,\n chevron,\n variant,\n radius,\n chevronIconSize,\n attributes,\n keepMounted,\n keepMountedMode,\n ...others\n } = props;\n\n const uid = useId(id);\n const [_value, handleChange] = useUncontrolled({\n value,\n defaultValue,\n finalValue: multiple ? ([] as any) : null,\n onChange,\n });\n\n const isItemActive = (itemValue: string) =>\n Array.isArray(_value) ? _value.includes(itemValue) : itemValue === _value;\n\n const handleItemChange = (itemValue: string) => {\n if (!Array.isArray(_value) && disableCollapse && itemValue === _value) {\n return;\n }\n\n const nextValue = Array.isArray(_value)\n ? _value.includes(itemValue)\n ? _value.filter((selectedValue) => selectedValue !== itemValue)\n : [..._value, itemValue]\n : itemValue === _value\n ? null\n : (itemValue as any);\n\n handleChange(nextValue);\n };\n\n const getStyles = useStyles<AccordionFactory>({\n name: 'Accordion',\n classes,\n props: props as AccordionProps,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n return (\n <AccordionProvider\n value={{\n isItemActive,\n onChange: handleItemChange,\n getControlId: getSafeId(\n `${uid}-control`,\n 'Accordion.Item component was rendered with invalid value or without value'\n ),\n getRegionId: getSafeId(\n `${uid}-panel`,\n 'Accordion.Item component was rendered with invalid value or without value'\n ),\n chevron: chevron === null ? null : chevron || <AccordionChevron size={chevronIconSize} />,\n transitionDuration,\n disableChevronRotation,\n chevronPosition,\n order,\n loop,\n getStyles,\n variant,\n unstyled,\n keepMounted,\n keepMountedMode,\n }}\n >\n <Box {...getStyles('root')} id={uid} {...others} variant={variant} data-accordion>\n {children}\n </Box>\n </AccordionProvider>\n );\n});\n\nAccordion.classes = classes;\nAccordion.varsResolver = varsResolver;\nAccordion.displayName = '@mantine/core/Accordion';\nAccordion.Item = AccordionItem;\nAccordion.Panel = AccordionPanel;\nAccordion.Control = AccordionControl;\nAccordion.Chevron = AccordionChevron;\n\nexport namespace Accordion {\n export type Props = AccordionProps;\n export type StylesNames = AccordionStylesNames;\n export type CssVariables = AccordionCssVariables;\n export type Factory = AccordionFactory;\n export type Variant = AccordionVariant;\n\n export namespace Control {\n export type Props = AccordionControlProps;\n }\n\n export namespace Item {\n export type Props = AccordionItemProps;\n export type Context = AccordionItemContextValue;\n }\n\n export namespace Panel {\n export type Props = AccordionPanelProps;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA+GA,MAAM,eAAe;CACnB,UAAU;CACV,MAAM;CACN,wBAAwB;CACxB,iBAAiB;CACjB,iBAAiB;CACjB,SAAS;CACT,aAAa;CACb,iBAAiB;CACjB,iBAAiB;AACnB;AAEA,MAAM,eAAeA,6BAAAA,oBAClB,GAAG,EAAE,oBAAoB,aAAa,cAAc,EACnD,MAAM;CACJ,mCACE,uBAAuB,KAAA,IAAY,KAAA,IAAY,GAAG,mBAAmB;CACvE,4BAA4B,gBAAgB,KAAA,IAAY,KAAA,IAAYC,YAAAA,IAAI,WAAW;CACnF,sBAAsB,WAAW,KAAA,IAAY,KAAA,IAAYC,iBAAAA,UAAU,MAAM;AAC3E,EACF,EACF;AAEA,MAAa,YAAYC,gBAAAA,gBAAkC,WAAW;CACpE,MAAM,QAAQC,kBAAAA,SAAS,aAAa,cAAqB,MAAM;CAC/D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,UACA,UACA,OACA,cACA,UACA,IACA,MACA,oBACA,wBACA,iBACA,iBACA,aACA,OACA,SACA,SACA,QACA,iBACA,YACA,aACA,iBACA,GAAG,WACD;CAEJ,MAAM,OAAA,GAAA,eAAA,MAAA,CAAY,EAAE;CACpB,MAAM,CAAC,QAAQ,iBAAA,GAAA,eAAA,gBAAA,CAAgC;EAC7C;EACA;EACA,YAAY,WAAY,CAAC,IAAY;EACrC;CACF,CAAC;CAED,MAAM,gBAAgB,cACpB,MAAM,QAAQ,MAAM,IAAI,OAAO,SAAS,SAAS,IAAI,cAAc;CAErE,MAAM,oBAAoB,cAAsB;EAC9C,IAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,mBAAmB,cAAc,QAC7D;EAGF,MAAM,YAAY,MAAM,QAAQ,MAAM,IAClC,OAAO,SAAS,SAAS,IACvB,OAAO,QAAQ,kBAAkB,kBAAkB,SAAS,IAC5D,CAAC,GAAG,QAAQ,SAAS,IACvB,cAAc,SACZ,OACC;EAEP,aAAa,SAAS;CACxB;CAEA,MAAM,YAAYC,mBAAAA,UAA4B;EAC5C,MAAM;EACN,SAAA,yBAAA;EACO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,0BAAAA,mBAAD;EACE,OAAO;GACL;GACA,UAAU;GACV,cAAcC,oBAAAA,UACZ,GAAG,IAAI,WACP,2EACF;GACA,aAAaA,oBAAAA,UACX,GAAG,IAAI,SACP,2EACF;GACA,SAAS,YAAY,OAAO,OAAO,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAACC,yBAAAA,kBAAD,EAAkB,MAAM,gBAAkB,CAAA;GACxF;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;YAEA,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;GAAK,GAAI,UAAU,MAAM;GAAG,IAAI;GAAK,GAAI;GAAiB;GAAS,kBAAA;GAChE;EACE,CAAA;CACY,CAAA;AAEvB,CAAC;AAED,UAAU,UAAUC,yBAAAA;AACpB,UAAU,eAAe;AACzB,UAAU,cAAc;AACxB,UAAU,OAAOC,sBAAAA;AACjB,UAAU,QAAQC,uBAAAA;AAClB,UAAU,UAAUC,yBAAAA;AACpB,UAAU,UAAUL,yBAAAA"}
|
|
@@ -30,7 +30,10 @@ const AngleSlider = require_factory.factory((_props) => {
|
|
|
30
30
|
onChange
|
|
31
31
|
});
|
|
32
32
|
const update = (val) => {
|
|
33
|
-
if (rootRef.current && !disabled)
|
|
33
|
+
if (rootRef.current && !disabled) {
|
|
34
|
+
const newValue = restrictToMarks && Array.isArray(marks) ? require_find_closest_number.findClosestNumber(val, marks.map((mark) => mark.value)) : val;
|
|
35
|
+
setValue(newValue);
|
|
36
|
+
}
|
|
34
37
|
};
|
|
35
38
|
const { ref: radialMoveRef } = (0, _mantine_hooks.useRadialMove)(update, {
|
|
36
39
|
step,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AngleSlider.cjs","names":["createVarsResolver","rem","factory","useProps","findClosestNumber","useStyles","Box","classes"],"sources":["../../../src/components/AngleSlider/AngleSlider.tsx"],"sourcesContent":["import { useRef } from 'react';\nimport { normalizeRadialValue, useMergedRef, useRadialMove, useUncontrolled } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n findClosestNumber,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport classes from './AngleSlider.module.css';\n\nexport type AngleSliderStylesNames = 'root' | 'thumb' | 'label' | 'marks' | 'mark';\nexport type AngleSliderCssVariables = {\n root: '--slider-size' | '--thumb-size';\n};\n\nexport interface AngleSliderProps\n extends BoxProps, StylesApiProps<AngleSliderFactory>, ElementProps<'div', 'onChange'> {\n /** Step between values @default 1 */\n step?: number;\n\n /** Controlled component value */\n value?: number;\n\n /** Uncontrolled component default value */\n defaultValue?: number;\n\n /** Called on value change */\n onChange?: (value: number) => void;\n\n /** Called after the selection is finished */\n onChangeEnd?: (value: number) => void;\n\n /** Called in `onMouseDown` and `onTouchStart` */\n onScrubStart?: () => void;\n\n /** Called in `onMouseUp` and `onTouchEnd` */\n onScrubEnd?: () => void;\n\n /** If set, the label is displayed inside the slider @default true */\n withLabel?: boolean;\n\n /** Array of marks displayed on the slider */\n marks?: { value: number; label?: string }[];\n\n /** Slider size in px @default 60 */\n size?: number;\n\n /** Size of the thumb in px. Calculated based on the `size` value by default. */\n thumbSize?: number;\n\n /** A function to format label based on the current value */\n formatLabel?: (value: number) => React.ReactNode;\n\n /** Sets `data-disabled` attribute, disables interactions */\n disabled?: boolean;\n\n /** If set, the selection is allowed only from the given marks array @default false */\n restrictToMarks?: boolean;\n\n /** Props passed down to the hidden input */\n hiddenInputProps?: React.ComponentProps<'input'>;\n\n /** Hidden input name, use with uncontrolled component */\n name?: string;\n}\n\nexport type AngleSliderFactory = Factory<{\n props: AngleSliderProps;\n ref: HTMLDivElement;\n stylesNames: AngleSliderStylesNames;\n vars: AngleSliderCssVariables;\n}>;\n\nconst defaultProps = {\n step: 1,\n withLabel: true,\n} satisfies Partial<AngleSliderProps>;\n\nconst varsResolver = createVarsResolver<AngleSliderFactory>((_, { size, thumbSize }) => ({\n root: {\n '--slider-size': rem(size),\n '--thumb-size': rem(thumbSize),\n },\n}));\n\nexport const AngleSlider = factory<AngleSliderFactory>((_props) => {\n const props = useProps('AngleSlider', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n step,\n value,\n defaultValue,\n onChange,\n onMouseDown,\n withLabel,\n marks,\n thumbSize,\n restrictToMarks,\n formatLabel,\n onChangeEnd,\n disabled,\n onTouchStart,\n name,\n hiddenInputProps,\n 'aria-label': ariaLabel,\n tabIndex,\n onScrubStart,\n onScrubEnd,\n mod,\n attributes,\n ref,\n ...others\n } = props;\n\n const rootRef = useRef<HTMLDivElement | null>(null);\n\n const [_value, setValue] = useUncontrolled({\n value,\n defaultValue,\n finalValue: 0,\n onChange,\n });\n\n const update = (val: number) => {\n if (rootRef.current && !disabled) {\n const newValue =\n restrictToMarks && Array.isArray(marks)\n ? findClosestNumber(\n val,\n marks.map((mark) => mark.value)\n )\n : val;\n\n setValue(newValue);\n }\n };\n\n const { ref: radialMoveRef } = useRadialMove(update, {\n step,\n onChangeEnd,\n onScrubStart,\n onScrubEnd,\n });\n\n const getStyles = useStyles<AngleSliderFactory>({\n name: 'AngleSlider',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (disabled) {\n return;\n }\n\n let newValue = _value;\n\n if (event.key === 'ArrowLeft' || event.key === 'ArrowDown') {\n event.preventDefault();\n if (_value === 0) {\n newValue = 359;\n } else {\n newValue = normalizeRadialValue(_value - step, step);\n }\n }\n\n if (event.key === 'ArrowRight' || event.key === 'ArrowUp') {\n event.preventDefault();\n if (_value === 359) {\n newValue = 0;\n } else {\n newValue = normalizeRadialValue(_value + step, step);\n }\n }\n\n if (event.key === 'Home') {\n newValue = 0;\n }\n\n if (event.key === 'End') {\n newValue = 359;\n }\n\n if (restrictToMarks && Array.isArray(marks)) {\n const markValues = marks.map((mark) => mark.value);\n const currentIndex = markValues.indexOf(_value);\n\n if (currentIndex !== -1) {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowDown') {\n newValue = markValues[currentIndex === 0 ? markValues.length - 1 : currentIndex - 1];\n } else if (event.key === 'ArrowRight' || event.key === 'ArrowUp') {\n newValue = markValues[currentIndex === markValues.length - 1 ? 0 : currentIndex + 1];\n } else {\n newValue = findClosestNumber(newValue, markValues);\n }\n } else {\n newValue = findClosestNumber(newValue, markValues);\n }\n }\n\n setValue(newValue);\n onChangeEnd?.(newValue);\n };\n\n const marksItems = marks?.map((mark, index) => (\n <div\n {...getStyles('mark', { style: { '--angle': `${mark.value}deg` } })}\n data-label={mark.label || undefined}\n key={index}\n />\n ));\n\n return (\n <Box\n ref={useMergedRef(ref, rootRef, radialMoveRef)}\n {...getStyles('root', { focusable: true })}\n mod={[{ disabled }, mod]}\n {...others}\n >\n {marksItems && marksItems.length > 0 && <div {...getStyles('marks')}>{marksItems}</div>}\n\n {withLabel && (\n <div {...getStyles('label')}>\n {typeof formatLabel === 'function' ? formatLabel(_value) : _value}\n </div>\n )}\n <div\n tabIndex={tabIndex ?? (disabled ? -1 : 0)}\n role=\"slider\"\n aria-valuemax={360}\n aria-valuemin={0}\n aria-valuenow={_value}\n onKeyDown={handleKeyDown}\n aria-label={ariaLabel}\n {...getStyles('thumb', { style: { transform: `rotate(${_value}deg)` } })}\n />\n <input type=\"hidden\" name={name} value={_value} {...hiddenInputProps} />\n </Box>\n );\n});\n\nAngleSlider.displayName = '@mantine/core/AngleSlider';\nAngleSlider.classes = classes;\nAngleSlider.varsResolver = varsResolver;\n\nexport namespace AngleSlider {\n export type Props = AngleSliderProps;\n export type StylesNames = AngleSliderStylesNames;\n export type CssVariables = AngleSliderCssVariables;\n export type Factory = AngleSliderFactory;\n}\n"],"mappings":";;;;;;;;;;;;;AAgFA,MAAM,eAAe;CACnB,MAAM;CACN,WAAW;AACb;AAEA,MAAM,eAAeA,6BAAAA,oBAAwC,GAAG,EAAE,MAAM,iBAAiB,EACvF,MAAM;CACJ,iBAAiBC,YAAAA,IAAI,IAAI;CACzB,gBAAgBA,YAAAA,IAAI,SAAS;AAC/B,EACF,EAAE;AAEF,MAAa,cAAcC,gBAAAA,SAA6B,WAAW;CACjE,MAAM,QAAQC,kBAAAA,SAAS,eAAe,cAAc,MAAM;CAC1D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,OACA,cACA,UACA,aACA,WACA,OACA,WACA,iBACA,aACA,aACA,UACA,cACA,MACA,kBACA,cAAc,WACd,UACA,cACA,YACA,KACA,YACA,KACA,GAAG,WACD;CAEJ,MAAM,WAAA,GAAA,MAAA,OAAA,CAAwC,IAAI;CAElD,MAAM,CAAC,QAAQ,aAAA,GAAA,eAAA,gBAAA,CAA4B;EACzC;EACA;EACA,YAAY;EACZ;CACF,CAAC;CAED,MAAM,UAAU,QAAgB;EAC9B,IAAI,QAAQ,WAAW,CAAC,UAStB,SAPE,mBAAmB,MAAM,QAAQ,KAAK,IAClCC,4BAAAA,kBACE,KACA,MAAM,KAAK,SAAS,KAAK,KAAK,CAChC,IACA,GAEW;CAErB;CAEA,MAAM,EAAE,KAAK,mBAAA,GAAA,eAAA,cAAA,CAAgC,QAAQ;EACnD;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,YAAYC,mBAAAA,UAA8B;EAC9C,MAAM;EACN,SAAA,2BAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,iBAAiB,UAA+C;EACpE,IAAI,UACF;EAGF,IAAI,WAAW;EAEf,IAAI,MAAM,QAAQ,eAAe,MAAM,QAAQ,aAAa;GAC1D,MAAM,eAAe;GACrB,IAAI,WAAW,GACb,WAAW;QAEX,YAAA,GAAA,eAAA,qBAAA,CAAgC,SAAS,MAAM,IAAI;EAEvD;EAEA,IAAI,MAAM,QAAQ,gBAAgB,MAAM,QAAQ,WAAW;GACzD,MAAM,eAAe;GACrB,IAAI,WAAW,KACb,WAAW;QAEX,YAAA,GAAA,eAAA,qBAAA,CAAgC,SAAS,MAAM,IAAI;EAEvD;EAEA,IAAI,MAAM,QAAQ,QAChB,WAAW;EAGb,IAAI,MAAM,QAAQ,OAChB,WAAW;EAGb,IAAI,mBAAmB,MAAM,QAAQ,KAAK,GAAG;GAC3C,MAAM,aAAa,MAAM,KAAK,SAAS,KAAK,KAAK;GACjD,MAAM,eAAe,WAAW,QAAQ,MAAM;GAE9C,IAAI,iBAAiB,IACnB,IAAI,MAAM,QAAQ,eAAe,MAAM,QAAQ,aAC7C,WAAW,WAAW,iBAAiB,IAAI,WAAW,SAAS,IAAI,eAAe;QAC7E,IAAI,MAAM,QAAQ,gBAAgB,MAAM,QAAQ,WACrD,WAAW,WAAW,iBAAiB,WAAW,SAAS,IAAI,IAAI,eAAe;QAElF,WAAWD,4BAAAA,kBAAkB,UAAU,UAAU;QAGnD,WAAWA,4BAAAA,kBAAkB,UAAU,UAAU;EAErD;EAEA,SAAS,QAAQ;EACjB,cAAc,QAAQ;CACxB;CAEA,MAAM,aAAa,OAAO,KAAK,MAAM,UACnC,iBAAA,GAAA,MAAA,cAAA,CAAC,OAAD;EACE,GAAI,UAAU,QAAQ,EAAE,OAAO,EAAE,WAAW,GAAG,KAAK,MAAM,KAAK,EAAE,CAAC;EAClE,cAAY,KAAK,SAAS,KAAA;EAC1B,KAAK;CACN,CAAA,CACF;CAED,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACE,YAAAA,KAAD;EACE,MAAA,GAAA,eAAA,aAAA,CAAkB,KAAK,SAAS,aAAa;EAC7C,GAAI,UAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;EACzC,KAAK,CAAC,EAAE,SAAS,GAAG,GAAG;EACvB,GAAI;YAJN;GAMG,cAAc,WAAW,SAAS,KAAK,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,GAAI,UAAU,OAAO;cAAI;GAAgB,CAAA;GAErF,aACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,GAAI,UAAU,OAAO;cACvB,OAAO,gBAAgB,aAAa,YAAY,MAAM,IAAI;GACxD,CAAA;GAEP,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IACE,UAAU,aAAa,WAAW,KAAK;IACvC,MAAK;IACL,iBAAe;IACf,iBAAe;IACf,iBAAe;IACf,WAAW;IACX,cAAY;IACZ,GAAI,UAAU,SAAS,EAAE,OAAO,EAAE,WAAW,UAAU,OAAO,MAAM,EAAE,CAAC;GACxE,CAAA;GACD,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;IAAO,MAAK;IAAe;IAAM,OAAO;IAAQ,GAAI;GAAmB,CAAA;EACpE;;AAET,CAAC;AAED,YAAY,cAAc;AAC1B,YAAY,UAAUC,2BAAAA;AACtB,YAAY,eAAe"}
|
|
1
|
+
{"version":3,"file":"AngleSlider.cjs","names":["createVarsResolver","rem","factory","useProps","findClosestNumber","useStyles","Box","classes"],"sources":["../../../src/components/AngleSlider/AngleSlider.tsx"],"sourcesContent":["import { useRef } from 'react';\nimport { normalizeRadialValue, useMergedRef, useRadialMove, useUncontrolled } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n findClosestNumber,\n rem,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport classes from './AngleSlider.module.css';\n\nexport type AngleSliderStylesNames = 'root' | 'thumb' | 'label' | 'marks' | 'mark';\nexport type AngleSliderCssVariables = {\n root: '--slider-size' | '--thumb-size';\n};\n\nexport interface AngleSliderProps\n extends BoxProps, StylesApiProps<AngleSliderFactory>, ElementProps<'div', 'onChange'> {\n /** Step between values @default 1 */\n step?: number;\n\n /** Controlled component value */\n value?: number;\n\n /** Uncontrolled component default value */\n defaultValue?: number;\n\n /** Called on value change */\n onChange?: (value: number) => void;\n\n /** Called after the selection is finished */\n onChangeEnd?: (value: number) => void;\n\n /** Called in `onMouseDown` and `onTouchStart` */\n onScrubStart?: () => void;\n\n /** Called in `onMouseUp` and `onTouchEnd` */\n onScrubEnd?: () => void;\n\n /** If set, the label is displayed inside the slider @default true */\n withLabel?: boolean;\n\n /** Array of marks displayed on the slider */\n marks?: { value: number; label?: string }[];\n\n /** Slider size in px @default 60 */\n size?: number;\n\n /** Size of the thumb in px. Calculated based on the `size` value by default. */\n thumbSize?: number;\n\n /** A function to format label based on the current value */\n formatLabel?: (value: number) => React.ReactNode;\n\n /** Sets `data-disabled` attribute, disables interactions */\n disabled?: boolean;\n\n /** If set, the selection is allowed only from the given marks array @default false */\n restrictToMarks?: boolean;\n\n /** Props passed down to the hidden input */\n hiddenInputProps?: React.ComponentProps<'input'>;\n\n /** Hidden input name, use with uncontrolled component */\n name?: string;\n}\n\nexport type AngleSliderFactory = Factory<{\n props: AngleSliderProps;\n ref: HTMLDivElement;\n stylesNames: AngleSliderStylesNames;\n vars: AngleSliderCssVariables;\n}>;\n\nconst defaultProps = {\n step: 1,\n withLabel: true,\n} satisfies Partial<AngleSliderProps>;\n\nconst varsResolver = createVarsResolver<AngleSliderFactory>((_, { size, thumbSize }) => ({\n root: {\n '--slider-size': rem(size),\n '--thumb-size': rem(thumbSize),\n },\n}));\n\nexport const AngleSlider = factory<AngleSliderFactory>((_props) => {\n const props = useProps('AngleSlider', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n step,\n value,\n defaultValue,\n onChange,\n onMouseDown,\n withLabel,\n marks,\n thumbSize,\n restrictToMarks,\n formatLabel,\n onChangeEnd,\n disabled,\n onTouchStart,\n name,\n hiddenInputProps,\n 'aria-label': ariaLabel,\n tabIndex,\n onScrubStart,\n onScrubEnd,\n mod,\n attributes,\n ref,\n ...others\n } = props;\n\n const rootRef = useRef<HTMLDivElement | null>(null);\n\n const [_value, setValue] = useUncontrolled({\n value,\n defaultValue,\n finalValue: 0,\n onChange,\n });\n\n const update = (val: number) => {\n if (rootRef.current && !disabled) {\n const newValue =\n restrictToMarks && Array.isArray(marks)\n ? findClosestNumber(\n val,\n marks.map((mark) => mark.value)\n )\n : val;\n\n setValue(newValue);\n }\n };\n\n const { ref: radialMoveRef } = useRadialMove(update, {\n step,\n onChangeEnd,\n onScrubStart,\n onScrubEnd,\n });\n\n const getStyles = useStyles<AngleSliderFactory>({\n name: 'AngleSlider',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (disabled) {\n return;\n }\n\n let newValue = _value;\n\n if (event.key === 'ArrowLeft' || event.key === 'ArrowDown') {\n event.preventDefault();\n if (_value === 0) {\n newValue = 359;\n } else {\n newValue = normalizeRadialValue(_value - step, step);\n }\n }\n\n if (event.key === 'ArrowRight' || event.key === 'ArrowUp') {\n event.preventDefault();\n if (_value === 359) {\n newValue = 0;\n } else {\n newValue = normalizeRadialValue(_value + step, step);\n }\n }\n\n if (event.key === 'Home') {\n newValue = 0;\n }\n\n if (event.key === 'End') {\n newValue = 359;\n }\n\n if (restrictToMarks && Array.isArray(marks)) {\n const markValues = marks.map((mark) => mark.value);\n const currentIndex = markValues.indexOf(_value);\n\n if (currentIndex !== -1) {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowDown') {\n newValue = markValues[currentIndex === 0 ? markValues.length - 1 : currentIndex - 1];\n } else if (event.key === 'ArrowRight' || event.key === 'ArrowUp') {\n newValue = markValues[currentIndex === markValues.length - 1 ? 0 : currentIndex + 1];\n } else {\n newValue = findClosestNumber(newValue, markValues);\n }\n } else {\n newValue = findClosestNumber(newValue, markValues);\n }\n }\n\n setValue(newValue);\n onChangeEnd?.(newValue);\n };\n\n const marksItems = marks?.map((mark, index) => (\n <div\n {...getStyles('mark', { style: { '--angle': `${mark.value}deg` } })}\n data-label={mark.label || undefined}\n key={index}\n />\n ));\n\n return (\n <Box\n ref={useMergedRef(ref, rootRef, radialMoveRef)}\n {...getStyles('root', { focusable: true })}\n mod={[{ disabled }, mod]}\n {...others}\n >\n {marksItems && marksItems.length > 0 && <div {...getStyles('marks')}>{marksItems}</div>}\n\n {withLabel && (\n <div {...getStyles('label')}>\n {typeof formatLabel === 'function' ? formatLabel(_value) : _value}\n </div>\n )}\n <div\n tabIndex={tabIndex ?? (disabled ? -1 : 0)}\n role=\"slider\"\n aria-valuemax={360}\n aria-valuemin={0}\n aria-valuenow={_value}\n onKeyDown={handleKeyDown}\n aria-label={ariaLabel}\n {...getStyles('thumb', { style: { transform: `rotate(${_value}deg)` } })}\n />\n <input type=\"hidden\" name={name} value={_value} {...hiddenInputProps} />\n </Box>\n );\n});\n\nAngleSlider.displayName = '@mantine/core/AngleSlider';\nAngleSlider.classes = classes;\nAngleSlider.varsResolver = varsResolver;\n\nexport namespace AngleSlider {\n export type Props = AngleSliderProps;\n export type StylesNames = AngleSliderStylesNames;\n export type CssVariables = AngleSliderCssVariables;\n export type Factory = AngleSliderFactory;\n}\n"],"mappings":"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"}
|
|
@@ -14,23 +14,24 @@ const varsResolver = require_create_vars_resolver.createVarsResolver((_, { spaci
|
|
|
14
14
|
const AvatarGroup = require_factory.factory((_props) => {
|
|
15
15
|
const props = require_use_props.useProps("AvatarGroup", null, _props);
|
|
16
16
|
const { classNames, className, style, styles, unstyled, vars, spacing, attributes, ...others } = props;
|
|
17
|
+
const getStyles = require_use_styles.useStyles({
|
|
18
|
+
name: "AvatarGroup",
|
|
19
|
+
classes: require_Avatar_module.default,
|
|
20
|
+
props,
|
|
21
|
+
className,
|
|
22
|
+
style,
|
|
23
|
+
classNames,
|
|
24
|
+
styles,
|
|
25
|
+
unstyled,
|
|
26
|
+
attributes,
|
|
27
|
+
vars,
|
|
28
|
+
varsResolver,
|
|
29
|
+
rootSelector: "group"
|
|
30
|
+
});
|
|
17
31
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AvatarGroupContext, {
|
|
18
32
|
value: { withinGroup: true },
|
|
19
33
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Box.Box, {
|
|
20
|
-
...
|
|
21
|
-
name: "AvatarGroup",
|
|
22
|
-
classes: require_Avatar_module.default,
|
|
23
|
-
props,
|
|
24
|
-
className,
|
|
25
|
-
style,
|
|
26
|
-
classNames,
|
|
27
|
-
styles,
|
|
28
|
-
unstyled,
|
|
29
|
-
attributes,
|
|
30
|
-
vars,
|
|
31
|
-
varsResolver,
|
|
32
|
-
rootSelector: "group"
|
|
33
|
-
})("group"),
|
|
34
|
+
...getStyles("group"),
|
|
34
35
|
...others
|
|
35
36
|
})
|
|
36
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarGroup.cjs","names":["createVarsResolver","getSpacing","factory","useProps","
|
|
1
|
+
{"version":3,"file":"AvatarGroup.cjs","names":["createVarsResolver","getSpacing","factory","useProps","useStyles","Box","classes"],"sources":["../../../../src/components/Avatar/AvatarGroup/AvatarGroup.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getSpacing,\n MantineSpacing,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../../core';\nimport classes from '../Avatar.module.css';\n\nexport interface AvatarGroupContextValue {\n withinGroup: boolean;\n}\n\nexport const AvatarGroupContext = createContext<AvatarGroupContextValue>({ withinGroup: false });\n\nexport type AvatarGroupStylesNames = 'group';\nexport type AvatarGroupCssVariables = {\n group: '--ag-spacing';\n};\n\nexport interface AvatarGroupProps\n extends BoxProps, StylesApiProps<AvatarGroupFactory>, ElementProps<'div'> {\n /** Negative space between Avatar components @default 'sm' */\n spacing?: MantineSpacing;\n}\n\nexport type AvatarGroupFactory = Factory<{\n props: AvatarGroupProps;\n ref: HTMLDivElement;\n stylesNames: AvatarGroupStylesNames;\n vars: AvatarGroupCssVariables;\n}>;\n\nconst varsResolver = createVarsResolver<AvatarGroupFactory>((_, { spacing }) => ({\n group: {\n '--ag-spacing': getSpacing(spacing),\n },\n}));\n\nexport const AvatarGroup = factory<AvatarGroupFactory>((_props) => {\n const props = useProps('AvatarGroup', null, _props);\n const { classNames, className, style, styles, unstyled, vars, spacing, attributes, ...others } =\n props;\n\n const getStyles = useStyles<AvatarGroupFactory>({\n name: 'AvatarGroup',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'group',\n });\n\n return (\n <AvatarGroupContext value={{ withinGroup: true }}>\n <Box {...getStyles('group')} {...others} />\n </AvatarGroupContext>\n );\n});\n\nAvatarGroup.classes = classes;\nAvatarGroup.varsResolver = varsResolver;\nAvatarGroup.displayName = '@mantine/core/AvatarGroup';\n"],"mappings":";;;;;;;;;;;AAoBA,MAAa,sBAAA,GAAA,MAAA,cAAA,CAA4D,EAAE,aAAa,MAAM,CAAC;AAoB/F,MAAM,eAAeA,6BAAAA,oBAAwC,GAAG,EAAE,eAAe,EAC/E,OAAO,EACL,gBAAgBC,iBAAAA,WAAW,OAAO,EACpC,EACF,EAAE;AAEF,MAAa,cAAcC,gBAAAA,SAA6B,WAAW;CACjE,MAAM,QAAQC,kBAAAA,SAAS,eAAe,MAAM,MAAM;CAClD,MAAM,EAAE,YAAY,WAAW,OAAO,QAAQ,UAAU,MAAM,SAAS,YAAY,GAAG,WACpF;CAEF,MAAM,YAAYC,mBAAAA,UAA8B;EAC9C,MAAM;EACN,SAAA,sBAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;CAChB,CAAC;CAED,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,oBAAD;EAAoB,OAAO,EAAE,aAAa,KAAK;YAC7C,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;GAAK,GAAI,UAAU,OAAO;GAAG,GAAI;EAAS,CAAA;CACxB,CAAA;AAExB,CAAC;AAED,YAAY,UAAUC,sBAAAA;AACtB,YAAY,eAAe;AAC3B,YAAY,cAAc"}
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
const require_use_props = require("../../core/MantineProvider/use-props/use-props.cjs");
|
|
3
|
+
const require_use_resolved_styles_api = require("../../core/styles-api/use-resolved-styles-api/use-resolved-styles-api.cjs");
|
|
4
|
+
const require_use_styles = require("../../core/styles-api/use-styles/use-styles.cjs");
|
|
5
|
+
const require_extract_style_props = require("../../core/Box/style-props/extract-style-props/extract-style-props.cjs");
|
|
6
|
+
const require_factory = require("../../core/factory/factory.cjs");
|
|
7
|
+
const require_ScrollArea = require("../ScrollArea/ScrollArea.cjs");
|
|
8
|
+
const require_InputBase = require("../InputBase/InputBase.cjs");
|
|
9
|
+
const require_use_combobox = require("../Combobox/use-combobox/use-combobox.cjs");
|
|
10
|
+
const require_Combobox = require("../Combobox/Combobox.cjs");
|
|
11
|
+
const require_CheckIcon = require("../Checkbox/CheckIcon.cjs");
|
|
12
|
+
const require_CascaderColumns = require("./CascaderColumns.cjs");
|
|
13
|
+
const require_flatten_cascader_paths = require("./flatten-cascader-paths.cjs");
|
|
14
|
+
const require_get_cascader_path_options = require("./get-cascader-path-options.cjs");
|
|
15
|
+
const require_use_cascader = require("./use-cascader.cjs");
|
|
16
|
+
const require_Cascader_module = require("./Cascader.module.cjs");
|
|
17
|
+
let react = require("react");
|
|
18
|
+
let _mantine_hooks = require("@mantine/hooks");
|
|
19
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
20
|
+
//#region packages/@mantine/core/src/components/Cascader/Cascader.tsx
|
|
21
|
+
const defaultProps = {
|
|
22
|
+
expandTrigger: "click",
|
|
23
|
+
changeOnSelect: false,
|
|
24
|
+
allowDeselect: true,
|
|
25
|
+
withCheckIcon: true,
|
|
26
|
+
checkIconPosition: "right",
|
|
27
|
+
withColumns: true,
|
|
28
|
+
searchable: false,
|
|
29
|
+
separator: "/",
|
|
30
|
+
maxDisplayedLevels: 3,
|
|
31
|
+
previousLevelsControlLabel: "Show previous levels",
|
|
32
|
+
nextLevelsControlLabel: "Show next levels",
|
|
33
|
+
maxDropdownHeight: 260,
|
|
34
|
+
openOnFocus: true,
|
|
35
|
+
size: "sm"
|
|
36
|
+
};
|
|
37
|
+
function optionLabelToString(option) {
|
|
38
|
+
return typeof option.label === "string" || typeof option.label === "number" ? String(option.label) : option.value;
|
|
39
|
+
}
|
|
40
|
+
function firstEnabledOptionIndex(options) {
|
|
41
|
+
return options.findIndex((option) => !option.disabled);
|
|
42
|
+
}
|
|
43
|
+
function lastEnabledOptionIndex(options) {
|
|
44
|
+
for (let index = options.length - 1; index >= 0; index -= 1) if (!options[index].disabled) return index;
|
|
45
|
+
return -1;
|
|
46
|
+
}
|
|
47
|
+
function joinPathLabels(options, separator) {
|
|
48
|
+
return options.map(optionLabelToString).join(` ${separator} `);
|
|
49
|
+
}
|
|
50
|
+
function defaultCascaderFilter(query, options, separator) {
|
|
51
|
+
const trimmed = query.trim().toLowerCase();
|
|
52
|
+
if (trimmed.length === 0) return true;
|
|
53
|
+
return joinPathLabels(options, separator).toLowerCase().includes(trimmed);
|
|
54
|
+
}
|
|
55
|
+
function defaultRenderSearchOption(options, separator) {
|
|
56
|
+
return options.map((option, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [index > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
57
|
+
"data-cascader-separator": true,
|
|
58
|
+
children: [
|
|
59
|
+
" ",
|
|
60
|
+
separator,
|
|
61
|
+
" "
|
|
62
|
+
]
|
|
63
|
+
}), option.label ?? option.value] }, option.value));
|
|
64
|
+
}
|
|
65
|
+
const Cascader = require_factory.factory((_props) => {
|
|
66
|
+
const props = require_use_props.useProps([
|
|
67
|
+
"Input",
|
|
68
|
+
"InputWrapper",
|
|
69
|
+
"Cascader"
|
|
70
|
+
], defaultProps, _props);
|
|
71
|
+
const { classNames, className, style, styles, unstyled, vars, size, data, value, defaultValue, onChange, changeOnSelect, closeOnSelect, allowDeselect, withCheckIcon, checkIconPosition, withColumns, expandTrigger, searchable, searchValue, defaultSearchValue, onSearchChange, filter, renderSearchOption, formatValue, renderOption, separator, columnWidth, maxDisplayedLevels, previousLevelsControlLabel, nextLevelsControlLabel, maxDropdownHeight, nothingFoundMessage, clearable, clearSectionMode, clearButtonProps, onClear, dropdownOpened, defaultDropdownOpened, onDropdownOpen, onDropdownClose, comboboxProps, scrollAreaProps, chevronColor, hiddenInputProps, openOnFocus, variant, onKeyDown, onFocus, onBlur, onClick, readOnly, disabled, radius, rightSection, rightSectionWidth, rightSectionPointerEvents, rightSectionProps, leftSection, leftSectionWidth, leftSectionPointerEvents, leftSectionProps, inputContainer, inputWrapperOrder, withAsterisk, labelProps, descriptionProps, errorProps, successProps, wrapperProps, description, label, error, success, withErrorStyles, withSuccessStyles, name, form, id, placeholder, required, mod, attributes, ...others } = props;
|
|
72
|
+
const _id = (0, _mantine_hooks.useId)(id);
|
|
73
|
+
const separatorString = typeof separator === "string" || typeof separator === "number" ? String(separator) : "/";
|
|
74
|
+
const combobox = require_use_combobox.useCombobox({
|
|
75
|
+
opened: dropdownOpened,
|
|
76
|
+
defaultOpened: defaultDropdownOpened,
|
|
77
|
+
onDropdownOpen: () => {
|
|
78
|
+
onDropdownOpen?.();
|
|
79
|
+
cascader.resetActivePath();
|
|
80
|
+
},
|
|
81
|
+
onDropdownClose: () => {
|
|
82
|
+
onDropdownClose?.();
|
|
83
|
+
if (searchable) setSearchValue(cascader.value ? displayString : "");
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
const shouldCloseOnSelect = closeOnSelect ?? !allowDeselect;
|
|
87
|
+
const cascader = require_use_cascader.useCascader({
|
|
88
|
+
data,
|
|
89
|
+
value,
|
|
90
|
+
defaultValue,
|
|
91
|
+
onChange,
|
|
92
|
+
changeOnSelect,
|
|
93
|
+
allowDeselect,
|
|
94
|
+
expandTrigger,
|
|
95
|
+
onLeafSelect: () => {
|
|
96
|
+
if (shouldCloseOnSelect) combobox.closeDropdown();
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
const getStyles = require_use_styles.useStyles({
|
|
100
|
+
name: "Cascader",
|
|
101
|
+
classes: require_Cascader_module.default,
|
|
102
|
+
props,
|
|
103
|
+
classNames,
|
|
104
|
+
styles,
|
|
105
|
+
unstyled,
|
|
106
|
+
attributes
|
|
107
|
+
});
|
|
108
|
+
const { resolvedClassNames, resolvedStyles } = require_use_resolved_styles_api.useResolvedStylesApi({
|
|
109
|
+
props,
|
|
110
|
+
styles,
|
|
111
|
+
classNames
|
|
112
|
+
});
|
|
113
|
+
const { styleProps, rest: { type, autoComplete, ...rest } } = require_extract_style_props.extractStyleProps(others);
|
|
114
|
+
const displayString = (0, react.useMemo)(() => {
|
|
115
|
+
if (cascader.pathOptions.length === 0 || !cascader.value) return "";
|
|
116
|
+
if (formatValue) {
|
|
117
|
+
const rendered = formatValue({
|
|
118
|
+
value: cascader.value,
|
|
119
|
+
options: cascader.pathOptions
|
|
120
|
+
});
|
|
121
|
+
if (typeof rendered === "string" || typeof rendered === "number") return String(rendered);
|
|
122
|
+
}
|
|
123
|
+
return joinPathLabels(cascader.pathOptions, separatorString);
|
|
124
|
+
}, [
|
|
125
|
+
cascader.pathOptions,
|
|
126
|
+
cascader.value,
|
|
127
|
+
formatValue,
|
|
128
|
+
separatorString
|
|
129
|
+
]);
|
|
130
|
+
const [_searchValue, setSearchValue] = (0, _mantine_hooks.useUncontrolled)({
|
|
131
|
+
value: searchValue,
|
|
132
|
+
defaultValue: defaultSearchValue,
|
|
133
|
+
finalValue: (0, react.useMemo)(() => {
|
|
134
|
+
if (!searchable || !defaultValue) return "";
|
|
135
|
+
return joinPathLabels(require_get_cascader_path_options.getCascaderPathOptions(data, defaultValue), separatorString);
|
|
136
|
+
}, []),
|
|
137
|
+
onChange: onSearchChange
|
|
138
|
+
});
|
|
139
|
+
const isSearching = !!searchable && _searchValue.trim().length > 0 && _searchValue !== displayString;
|
|
140
|
+
(0, react.useEffect)(() => {
|
|
141
|
+
if (searchable) setSearchValue(cascader.value ? displayString : "");
|
|
142
|
+
}, [cascader.value]);
|
|
143
|
+
const showFlatList = isSearching || !withColumns;
|
|
144
|
+
const flatPaths = (0, react.useMemo)(() => require_flatten_cascader_paths.flattenCascaderPaths(data), [data]);
|
|
145
|
+
const flatListItems = (0, react.useMemo)(() => {
|
|
146
|
+
if (!showFlatList) return [];
|
|
147
|
+
const base = flatPaths.filter((flatPath) => changeOnSelect ? true : flatPath.leaf);
|
|
148
|
+
if (!isSearching) return base;
|
|
149
|
+
return base.filter((flatPath) => filter ? filter(_searchValue, flatPath.options) : defaultCascaderFilter(_searchValue, flatPath.options, separatorString));
|
|
150
|
+
}, [
|
|
151
|
+
flatPaths,
|
|
152
|
+
showFlatList,
|
|
153
|
+
isSearching,
|
|
154
|
+
_searchValue,
|
|
155
|
+
changeOnSelect,
|
|
156
|
+
filter,
|
|
157
|
+
separatorString
|
|
158
|
+
]);
|
|
159
|
+
const canInteract = !readOnly && !disabled;
|
|
160
|
+
const handleSearchChange = (nextValue) => {
|
|
161
|
+
setSearchValue(nextValue);
|
|
162
|
+
if (canInteract) combobox.openDropdown();
|
|
163
|
+
};
|
|
164
|
+
const handleKeyDown = (event) => {
|
|
165
|
+
onKeyDown?.(event);
|
|
166
|
+
if (event.key === "Escape") {
|
|
167
|
+
combobox.closeDropdown();
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (showFlatList || !canInteract) return;
|
|
171
|
+
if (!combobox.dropdownOpened) {
|
|
172
|
+
if (event.key === "ArrowDown" || event.key === "ArrowUp" || event.key === "ArrowRight" || event.key === "Enter" || !searchable && event.key === " ") {
|
|
173
|
+
event.preventDefault();
|
|
174
|
+
cascader.setKeyboardNav(true);
|
|
175
|
+
combobox.openDropdown();
|
|
176
|
+
if (!cascader.value && (event.key === "ArrowDown" || event.key === "ArrowUp")) {
|
|
177
|
+
const rootIndex = event.key === "ArrowDown" ? firstEnabledOptionIndex(data) : lastEnabledOptionIndex(data);
|
|
178
|
+
if (rootIndex >= 0) cascader.setActivePath([data[rootIndex].value]);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (cascader.handleColumnsKeyDown(event)) event.preventDefault();
|
|
184
|
+
else if (!searchable && event.key === " ") event.preventDefault();
|
|
185
|
+
};
|
|
186
|
+
const clearButton = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Combobox.Combobox.ClearButton, {
|
|
187
|
+
...clearButtonProps,
|
|
188
|
+
onClear: () => {
|
|
189
|
+
onClear?.();
|
|
190
|
+
cascader.setValue(null);
|
|
191
|
+
cascader.setActivePath([]);
|
|
192
|
+
setSearchValue("");
|
|
193
|
+
combobox.focusTarget();
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
const hasValue = Array.isArray(cascader.value) && cascader.value.length > 0;
|
|
197
|
+
const _clearable = clearable && hasValue && !disabled && !readOnly;
|
|
198
|
+
const listId = _id ? `${_id}-cascader-list` : void 0;
|
|
199
|
+
const valueKey = cascader.value ? JSON.stringify(cascader.value) : null;
|
|
200
|
+
const dropdown = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Combobox.Combobox.Dropdown, {
|
|
201
|
+
hidden: readOnly || disabled,
|
|
202
|
+
style: showFlatList ? void 0 : { padding: 0 },
|
|
203
|
+
children: showFlatList ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_Combobox.Combobox.Options, {
|
|
204
|
+
"aria-label": typeof label === "string" ? label : void 0,
|
|
205
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ScrollArea.ScrollArea.Autosize, {
|
|
206
|
+
mah: maxDropdownHeight ?? 260,
|
|
207
|
+
type: "scroll",
|
|
208
|
+
scrollbarSize: "var(--combobox-padding)",
|
|
209
|
+
offsetScrollbars: "y",
|
|
210
|
+
...scrollAreaProps,
|
|
211
|
+
children: flatListItems.map((flatPath, index) => {
|
|
212
|
+
const pathKey = JSON.stringify(flatPath.path);
|
|
213
|
+
const active = valueKey !== null && pathKey === valueKey;
|
|
214
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Combobox.Combobox.Option, {
|
|
215
|
+
value: `${index}`,
|
|
216
|
+
active,
|
|
217
|
+
disabled: flatPath.disabled,
|
|
218
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
219
|
+
...getStyles("flatOption"),
|
|
220
|
+
children: [
|
|
221
|
+
active && withCheckIcon && checkIconPosition === "left" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_CheckIcon.CheckIcon, { ...getStyles("columnOptionCheck") }),
|
|
222
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
223
|
+
...getStyles("columnOptionLabel"),
|
|
224
|
+
children: renderSearchOption ? renderSearchOption(_searchValue, flatPath.options) : defaultRenderSearchOption(flatPath.options, separator)
|
|
225
|
+
}),
|
|
226
|
+
active && withCheckIcon && checkIconPosition !== "left" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_CheckIcon.CheckIcon, { ...getStyles("columnOptionCheck") })
|
|
227
|
+
]
|
|
228
|
+
})
|
|
229
|
+
}, pathKey);
|
|
230
|
+
})
|
|
231
|
+
}), flatListItems.length === 0 && nothingFoundMessage && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Combobox.Combobox.Empty, { children: nothingFoundMessage })]
|
|
232
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_CascaderColumns.CascaderColumns, {
|
|
233
|
+
data,
|
|
234
|
+
activePath: cascader.activePath,
|
|
235
|
+
value: cascader.value,
|
|
236
|
+
keyboardNav: cascader.keyboardNav,
|
|
237
|
+
withCheckIcon,
|
|
238
|
+
checkIconPosition,
|
|
239
|
+
renderOption,
|
|
240
|
+
columnWidth,
|
|
241
|
+
maxDisplayedLevels,
|
|
242
|
+
previousLevelsControlLabel,
|
|
243
|
+
nextLevelsControlLabel,
|
|
244
|
+
maxDropdownHeight,
|
|
245
|
+
nothingFoundMessage,
|
|
246
|
+
getStyles,
|
|
247
|
+
unstyled,
|
|
248
|
+
scrollAreaProps,
|
|
249
|
+
onOptionClick: cascader.handleOptionClick,
|
|
250
|
+
onOptionMouseEnter: cascader.handleOptionMouseEnter,
|
|
251
|
+
onColumnsMouseLeave: () => {
|
|
252
|
+
if (expandTrigger === "hover") cascader.setActivePath(cascader.value ?? []);
|
|
253
|
+
},
|
|
254
|
+
onPointerActivity: () => cascader.setKeyboardNav(false),
|
|
255
|
+
listId
|
|
256
|
+
})
|
|
257
|
+
});
|
|
258
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_Combobox.Combobox, {
|
|
259
|
+
store: combobox,
|
|
260
|
+
__staticSelector: "Cascader",
|
|
261
|
+
classNames: resolvedClassNames,
|
|
262
|
+
styles: resolvedStyles,
|
|
263
|
+
unstyled,
|
|
264
|
+
readOnly,
|
|
265
|
+
size,
|
|
266
|
+
attributes,
|
|
267
|
+
width: showFlatList ? "target" : "max-content",
|
|
268
|
+
position: "bottom-start",
|
|
269
|
+
onOptionSubmit: (val) => {
|
|
270
|
+
const index = Number(val);
|
|
271
|
+
const flatPath = flatListItems[index];
|
|
272
|
+
if (!flatPath || flatPath.disabled) return;
|
|
273
|
+
cascader.selectPath(flatPath.path);
|
|
274
|
+
cascader.setActivePath(flatPath.path);
|
|
275
|
+
if (shouldCloseOnSelect) combobox.closeDropdown();
|
|
276
|
+
},
|
|
277
|
+
...comboboxProps,
|
|
278
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Combobox.Combobox.Target, {
|
|
279
|
+
targetType: searchable ? "input" : "button",
|
|
280
|
+
withKeyboardNavigation: showFlatList,
|
|
281
|
+
autoComplete,
|
|
282
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_InputBase.InputBase, {
|
|
283
|
+
id: _id,
|
|
284
|
+
__defaultRightSection: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Combobox.Combobox.Chevron, {
|
|
285
|
+
size,
|
|
286
|
+
error,
|
|
287
|
+
unstyled,
|
|
288
|
+
color: chevronColor
|
|
289
|
+
}),
|
|
290
|
+
__clearSection: clearButton,
|
|
291
|
+
__clearable: _clearable,
|
|
292
|
+
__clearSectionMode: clearSectionMode,
|
|
293
|
+
rightSection,
|
|
294
|
+
rightSectionPointerEvents: rightSectionPointerEvents || "none",
|
|
295
|
+
...rest,
|
|
296
|
+
...styleProps,
|
|
297
|
+
size,
|
|
298
|
+
__staticSelector: "Cascader",
|
|
299
|
+
disabled,
|
|
300
|
+
readOnly: readOnly || !searchable,
|
|
301
|
+
value: searchable ? _searchValue : displayString,
|
|
302
|
+
onChange: (event) => handleSearchChange(event.currentTarget.value),
|
|
303
|
+
onFocus: (event) => {
|
|
304
|
+
if (openOnFocus && searchable && canInteract) combobox.openDropdown();
|
|
305
|
+
onFocus?.(event);
|
|
306
|
+
},
|
|
307
|
+
onBlur: (event) => {
|
|
308
|
+
combobox.closeDropdown();
|
|
309
|
+
onBlur?.(event);
|
|
310
|
+
},
|
|
311
|
+
onClick: (event) => {
|
|
312
|
+
if (canInteract) {
|
|
313
|
+
cascader.setKeyboardNav(false);
|
|
314
|
+
if (searchable) combobox.openDropdown();
|
|
315
|
+
else combobox.toggleDropdown();
|
|
316
|
+
}
|
|
317
|
+
onClick?.(event);
|
|
318
|
+
},
|
|
319
|
+
onKeyDown: handleKeyDown,
|
|
320
|
+
classNames: resolvedClassNames,
|
|
321
|
+
styles: resolvedStyles,
|
|
322
|
+
unstyled,
|
|
323
|
+
pointer: !searchable,
|
|
324
|
+
error,
|
|
325
|
+
success,
|
|
326
|
+
attributes,
|
|
327
|
+
className,
|
|
328
|
+
style,
|
|
329
|
+
variant,
|
|
330
|
+
radius,
|
|
331
|
+
leftSection,
|
|
332
|
+
leftSectionWidth,
|
|
333
|
+
leftSectionPointerEvents,
|
|
334
|
+
leftSectionProps,
|
|
335
|
+
rightSectionWidth,
|
|
336
|
+
rightSectionProps,
|
|
337
|
+
inputContainer,
|
|
338
|
+
inputWrapperOrder,
|
|
339
|
+
withAsterisk,
|
|
340
|
+
labelProps,
|
|
341
|
+
descriptionProps,
|
|
342
|
+
errorProps,
|
|
343
|
+
successProps,
|
|
344
|
+
wrapperProps,
|
|
345
|
+
description,
|
|
346
|
+
label,
|
|
347
|
+
withErrorStyles,
|
|
348
|
+
withSuccessStyles,
|
|
349
|
+
placeholder,
|
|
350
|
+
required,
|
|
351
|
+
mod
|
|
352
|
+
})
|
|
353
|
+
}), dropdown]
|
|
354
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Combobox.Combobox.HiddenInput, {
|
|
355
|
+
value: cascader.value,
|
|
356
|
+
name,
|
|
357
|
+
form,
|
|
358
|
+
disabled,
|
|
359
|
+
...hiddenInputProps
|
|
360
|
+
})] });
|
|
361
|
+
});
|
|
362
|
+
Cascader.classes = {
|
|
363
|
+
...require_InputBase.InputBase.classes,
|
|
364
|
+
...require_Combobox.Combobox.classes,
|
|
365
|
+
...require_Cascader_module.default
|
|
366
|
+
};
|
|
367
|
+
Cascader.displayName = "@mantine/core/Cascader";
|
|
368
|
+
//#endregion
|
|
369
|
+
exports.Cascader = Cascader;
|
|
370
|
+
|
|
371
|
+
//# sourceMappingURL=Cascader.cjs.map
|