@mantine/core 9.0.0-alpha.6 → 9.0.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/cjs/components/Autocomplete/Autocomplete.cjs +1 -0
  2. package/cjs/components/Autocomplete/Autocomplete.cjs.map +1 -1
  3. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs +1 -0
  4. package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs.map +1 -1
  5. package/cjs/components/MultiSelect/MultiSelect.cjs +1 -0
  6. package/cjs/components/MultiSelect/MultiSelect.cjs.map +1 -1
  7. package/cjs/components/PasswordInput/PasswordInput.cjs +2 -0
  8. package/cjs/components/PasswordInput/PasswordInput.cjs.map +1 -1
  9. package/cjs/components/Popover/PopoverTarget/PopoverTarget.cjs +2 -2
  10. package/cjs/components/Popover/PopoverTarget/PopoverTarget.cjs.map +1 -1
  11. package/cjs/components/Radio/Radio.cjs +1 -1
  12. package/cjs/components/Radio/Radio.cjs.map +1 -1
  13. package/cjs/components/Select/Select.cjs +7 -6
  14. package/cjs/components/Select/Select.cjs.map +1 -1
  15. package/cjs/components/TagsInput/TagsInput.cjs +1 -0
  16. package/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
  17. package/esm/components/Autocomplete/Autocomplete.mjs +1 -0
  18. package/esm/components/Autocomplete/Autocomplete.mjs.map +1 -1
  19. package/esm/components/Combobox/use-combobox-target-props/use-combobox-target-props.mjs +1 -0
  20. package/esm/components/Combobox/use-combobox-target-props/use-combobox-target-props.mjs.map +1 -1
  21. package/esm/components/MultiSelect/MultiSelect.mjs +1 -0
  22. package/esm/components/MultiSelect/MultiSelect.mjs.map +1 -1
  23. package/esm/components/PasswordInput/PasswordInput.mjs +2 -0
  24. package/esm/components/PasswordInput/PasswordInput.mjs.map +1 -1
  25. package/esm/components/Popover/PopoverTarget/PopoverTarget.mjs +2 -2
  26. package/esm/components/Popover/PopoverTarget/PopoverTarget.mjs.map +1 -1
  27. package/esm/components/Radio/Radio.mjs +1 -1
  28. package/esm/components/Radio/Radio.mjs.map +1 -1
  29. package/esm/components/Select/Select.mjs +7 -6
  30. package/esm/components/Select/Select.mjs.map +1 -1
  31. package/esm/components/TagsInput/TagsInput.mjs +1 -0
  32. package/esm/components/TagsInput/TagsInput.mjs.map +1 -1
  33. package/esm/core/utils/get-env/get-env.mjs +1 -1
  34. package/esm/core/utils/get-env/get-env.mjs.map +1 -1
  35. package/lib/components/Combobox/use-combobox-target-props/use-combobox-target-props.d.ts +0 -16
  36. package/lib/components/Input/InputClearSection/InputClearSection.d.ts +1 -1
  37. package/lib/components/Input/use-input-props.d.ts +18 -18
  38. package/lib/components/Popover/use-popover.d.ts +2 -2
  39. package/lib/core/MantineProvider/color-functions/get-contrast-color/get-contrast-color.d.ts +2 -2
  40. package/package.json +4 -4
  41. package/cjs/components/MaskInput/MaskInput.cjs +0 -24
  42. package/cjs/components/MaskInput/MaskInput.cjs.map +0 -1
  43. package/cjs/components/MaskInput/use-mask-input-props.cjs +0 -29
  44. package/cjs/components/MaskInput/use-mask-input-props.cjs.map +0 -1
  45. package/cjs/components/Pagination/PaginationLabel/PaginationLabel.cjs +0 -33
  46. package/cjs/components/Pagination/PaginationLabel/PaginationLabel.cjs.map +0 -1
  47. package/cjs/components/RollingNumber/DigitColumn.cjs +0 -41
  48. package/cjs/components/RollingNumber/DigitColumn.cjs.map +0 -1
  49. package/cjs/components/RollingNumber/RollingNumber.cjs +0 -100
  50. package/cjs/components/RollingNumber/RollingNumber.cjs.map +0 -1
  51. package/cjs/components/RollingNumber/RollingNumber.module.cjs +0 -12
  52. package/cjs/components/RollingNumber/RollingNumber.module.cjs.map +0 -1
  53. package/cjs/components/RollingNumber/build-value.cjs +0 -22
  54. package/cjs/components/RollingNumber/build-value.cjs.map +0 -1
  55. package/cjs/components/RollingNumber/get-digit-parts.cjs +0 -40
  56. package/cjs/components/RollingNumber/get-digit-parts.cjs.map +0 -1
  57. package/cjs/components/RollingNumber/get-render-slots.cjs +0 -78
  58. package/cjs/components/RollingNumber/get-render-slots.cjs.map +0 -1
  59. package/cjs/components/Tree/FlatTreeNode.cjs +0 -102
  60. package/cjs/components/Tree/FlatTreeNode.cjs.map +0 -1
  61. package/cjs/components/Tree/filter-tree-data/filter-tree-data.cjs +0 -23
  62. package/cjs/components/Tree/filter-tree-data/filter-tree-data.cjs.map +0 -1
  63. package/cjs/components/Tree/flatten-tree-data/flatten-tree-data.cjs +0 -28
  64. package/cjs/components/Tree/flatten-tree-data/flatten-tree-data.cjs.map +0 -1
  65. package/cjs/components/Tree/merge-async-children/merge-async-children.cjs +0 -32
  66. package/cjs/components/Tree/merge-async-children/merge-async-children.cjs.map +0 -1
  67. package/cjs/components/Tree/move-tree-node/move-tree-node.cjs +0 -78
  68. package/cjs/components/Tree/move-tree-node/move-tree-node.cjs.map +0 -1
  69. package/cjs/components/Tree/use-tree-node-drag-drop.cjs +0 -96
  70. package/cjs/components/Tree/use-tree-node-drag-drop.cjs.map +0 -1
  71. package/cjs/components/TreeSelect/TreeSelect.cjs +0 -594
  72. package/cjs/components/TreeSelect/TreeSelect.cjs.map +0 -1
  73. package/cjs/components/TreeSelect/TreeSelect.module.cjs +0 -16
  74. package/cjs/components/TreeSelect/TreeSelect.module.cjs.map +0 -1
  75. package/cjs/components/TreeSelect/TreeSelectOption.cjs +0 -91
  76. package/cjs/components/TreeSelect/TreeSelectOption.cjs.map +0 -1
  77. package/cjs/components/TreeSelect/flatten-tree-select-data.cjs +0 -34
  78. package/cjs/components/TreeSelect/flatten-tree-select-data.cjs.map +0 -1
  79. package/cjs/components/TreeSelect/get-checked-values-by-strategy.cjs +0 -30
  80. package/cjs/components/TreeSelect/get-checked-values-by-strategy.cjs.map +0 -1
  81. package/esm/components/MaskInput/MaskInput.mjs +0 -23
  82. package/esm/components/MaskInput/MaskInput.mjs.map +0 -1
  83. package/esm/components/MaskInput/use-mask-input-props.mjs +0 -28
  84. package/esm/components/MaskInput/use-mask-input-props.mjs.map +0 -1
  85. package/esm/components/Pagination/PaginationLabel/PaginationLabel.mjs +0 -32
  86. package/esm/components/Pagination/PaginationLabel/PaginationLabel.mjs.map +0 -1
  87. package/esm/components/RollingNumber/DigitColumn.mjs +0 -40
  88. package/esm/components/RollingNumber/DigitColumn.mjs.map +0 -1
  89. package/esm/components/RollingNumber/RollingNumber.mjs +0 -99
  90. package/esm/components/RollingNumber/RollingNumber.mjs.map +0 -1
  91. package/esm/components/RollingNumber/RollingNumber.module.mjs +0 -12
  92. package/esm/components/RollingNumber/RollingNumber.module.mjs.map +0 -1
  93. package/esm/components/RollingNumber/build-value.mjs +0 -22
  94. package/esm/components/RollingNumber/build-value.mjs.map +0 -1
  95. package/esm/components/RollingNumber/get-digit-parts.mjs +0 -40
  96. package/esm/components/RollingNumber/get-digit-parts.mjs.map +0 -1
  97. package/esm/components/RollingNumber/get-render-slots.mjs +0 -78
  98. package/esm/components/RollingNumber/get-render-slots.mjs.map +0 -1
  99. package/esm/components/Tree/FlatTreeNode.mjs +0 -101
  100. package/esm/components/Tree/FlatTreeNode.mjs.map +0 -1
  101. package/esm/components/Tree/filter-tree-data/filter-tree-data.mjs +0 -22
  102. package/esm/components/Tree/filter-tree-data/filter-tree-data.mjs.map +0 -1
  103. package/esm/components/Tree/flatten-tree-data/flatten-tree-data.mjs +0 -28
  104. package/esm/components/Tree/flatten-tree-data/flatten-tree-data.mjs.map +0 -1
  105. package/esm/components/Tree/merge-async-children/merge-async-children.mjs +0 -32
  106. package/esm/components/Tree/merge-async-children/merge-async-children.mjs.map +0 -1
  107. package/esm/components/Tree/move-tree-node/move-tree-node.mjs +0 -78
  108. package/esm/components/Tree/move-tree-node/move-tree-node.mjs.map +0 -1
  109. package/esm/components/Tree/use-tree-node-drag-drop.mjs +0 -96
  110. package/esm/components/Tree/use-tree-node-drag-drop.mjs.map +0 -1
  111. package/esm/components/TreeSelect/TreeSelect.mjs +0 -593
  112. package/esm/components/TreeSelect/TreeSelect.mjs.map +0 -1
  113. package/esm/components/TreeSelect/TreeSelect.module.mjs +0 -16
  114. package/esm/components/TreeSelect/TreeSelect.module.mjs.map +0 -1
  115. package/esm/components/TreeSelect/TreeSelectOption.mjs +0 -90
  116. package/esm/components/TreeSelect/TreeSelectOption.mjs.map +0 -1
  117. package/esm/components/TreeSelect/flatten-tree-select-data.mjs +0 -34
  118. package/esm/components/TreeSelect/flatten-tree-select-data.mjs.map +0 -1
  119. package/esm/components/TreeSelect/get-checked-values-by-strategy.mjs +0 -29
  120. package/esm/components/TreeSelect/get-checked-values-by-strategy.mjs.map +0 -1
  121. package/lib/components/MaskInput/MaskInput.d.ts +0 -68
  122. package/lib/components/MaskInput/index.d.ts +0 -7
  123. package/lib/components/MaskInput/use-mask-input-props.d.ts +0 -428
  124. package/lib/components/Pagination/PaginationLabel/PaginationLabel.d.ts +0 -22
  125. package/lib/components/RollingNumber/DigitColumn.d.ts +0 -10
  126. package/lib/components/RollingNumber/RollingNumber.d.ts +0 -39
  127. package/lib/components/RollingNumber/build-value.d.ts +0 -10
  128. package/lib/components/RollingNumber/get-digit-parts.d.ts +0 -12
  129. package/lib/components/RollingNumber/get-render-slots.d.ts +0 -35
  130. package/lib/components/RollingNumber/index.d.ts +0 -9
  131. package/lib/components/Tree/FlatTreeNode.d.ts +0 -34
  132. package/lib/components/Tree/filter-tree-data/filter-tree-data.d.ts +0 -4
  133. package/lib/components/Tree/flatten-tree-data/flatten-tree-data.d.ts +0 -15
  134. package/lib/components/Tree/merge-async-children/merge-async-children.d.ts +0 -2
  135. package/lib/components/Tree/move-tree-node/move-tree-node.d.ts +0 -11
  136. package/lib/components/Tree/use-tree-node-drag-drop.d.ts +0 -18
  137. package/lib/components/TreeSelect/TreeSelect.d.ts +0 -122
  138. package/lib/components/TreeSelect/TreeSelectOption.d.ts +0 -29
  139. package/lib/components/TreeSelect/flatten-tree-select-data.d.ts +0 -12
  140. package/lib/components/TreeSelect/get-checked-values-by-strategy.d.ts +0 -4
  141. package/lib/components/TreeSelect/index.d.ts +0 -13
  142. package/styles/RollingNumber.css +0 -50
  143. package/styles/RollingNumber.layer.css +0 -51
  144. package/styles/TreeSelect.css +0 -113
  145. package/styles/TreeSelect.layer.css +0 -114
@@ -1 +0,0 @@
1
- {"version":3,"file":"TreeSelect.mjs","names":["useId","classes"],"sources":["../../../src/components/TreeSelect/TreeSelect.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useId, useUncontrolled } from '@mantine/hooks';\nimport {\n BoxProps,\n ElementProps,\n extractStyleProps,\n Factory,\n genericFactory,\n MantineColor,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '../../core';\nimport { Combobox, ComboboxLikeStylesNames, useCombobox } from '../Combobox';\nimport {\n __BaseInputProps,\n __InputStylesNames,\n ClearSectionMode,\n InputClearButtonProps,\n InputVariant,\n} from '../Input';\nimport { InputBase } from '../InputBase';\nimport { Pill } from '../Pill';\nimport { PillsInput } from '../PillsInput';\nimport { ScrollArea, ScrollAreaProps } from '../ScrollArea';\nimport type { TreeNodeData } from '../Tree';\nimport { filterTreeData } from '../Tree/filter-tree-data/filter-tree-data';\nimport {\n findTreeNode,\n getChildrenNodesValues,\n} from '../Tree/get-children-nodes-values/get-children-nodes-values';\nimport { isNodeChecked } from '../Tree/is-node-checked/is-node-checked';\nimport { isNodeIndeterminate } from '../Tree/is-node-indeterminate/is-node-indeterminate';\nimport { getTreeExpandedState, TreeExpandedState } from '../Tree/use-tree';\nimport { flattenTreeSelectData } from './flatten-tree-select-data';\nimport {\n CheckedStrategy,\n checkedToValue,\n expandToLeafChecked,\n} from './get-checked-values-by-strategy';\nimport { TreeSelectOption, TreeSelectRenderNodePayload } from './TreeSelectOption';\nimport classes from './TreeSelect.module.css';\n\nexport type TreeSelectStylesNames =\n | __InputStylesNames\n | ComboboxLikeStylesNames\n | 'pill'\n | 'pillsList'\n | 'inputField';\n\nexport type TreeSelectMode = 'single' | 'multiple' | 'checkbox';\n\nexport type TreeSelectValue<Mode extends TreeSelectMode> = Mode extends 'single'\n ? string | null\n : string[];\n\nexport interface TreeSelectProps<Mode extends TreeSelectMode = 'single'>\n extends\n BoxProps,\n __BaseInputProps,\n StylesApiProps<TreeSelectFactory>,\n ElementProps<'input', 'size' | 'value' | 'defaultValue' | 'onChange'> {\n /** Tree data */\n data: TreeNodeData[];\n\n /** Selection mode: 'single', 'multiple', or 'checkbox' (with cascade) @default 'single' */\n mode?: Mode;\n\n /** Controlled value */\n value?: TreeSelectValue<Mode>;\n\n /** Default value */\n defaultValue?: TreeSelectValue<Mode>;\n\n /** Called when value changes */\n onChange?: (value: TreeSelectValue<Mode>) => void;\n\n /** Disables parent-child cascade in checkbox mode @default false */\n checkStrictly?: boolean;\n\n /** Controls which checked nodes appear in value/pills in checkbox mode @default 'child' */\n checkedStrategy?: CheckedStrategy;\n\n /** Default expanded node values */\n defaultExpandedValues?: string[];\n\n /** Expand all nodes by default @default false */\n defaultExpandAll?: boolean;\n\n /** Controlled expanded state */\n expandedValues?: string[];\n\n /** Called when expanded state changes */\n onExpandedChange?: (values: string[]) => void;\n\n /** Also toggle expand when clicking a parent node (not just the chevron) @default false */\n expandOnClick?: boolean;\n\n /** Enables search filtering @default false */\n searchable?: boolean;\n\n /** Controlled search value */\n searchValue?: string;\n\n /** Default search value */\n defaultSearchValue?: string;\n\n /** Called when search changes */\n onSearchChange?: (value: string) => void;\n\n /** Custom filter function */\n filter?: (query: string, node: TreeNodeData) => boolean;\n\n /** Message when no nodes match search */\n nothingFoundMessage?: React.ReactNode;\n\n /** Allows deselecting in single mode @default true */\n allowDeselect?: boolean;\n\n /** Shows clear button @default false */\n clearable?: boolean;\n\n /** Determines how the clear button and rightSection are rendered @default 'both' */\n clearSectionMode?: ClearSectionMode;\n\n /** Props for the clear button */\n clearButtonProps?: InputClearButtonProps;\n\n /** Maximum selectable values (multiple/checkbox mode) */\n maxValues?: number;\n\n /** Maximum displayed pills before \"+N more\" */\n maxDisplayedValues?: number;\n\n /** Content shown when values overflow maxDisplayedValues */\n maxDisplayedValuesContent?: React.ReactNode | ((overflow: number) => React.ReactNode);\n\n /** Called with removed value in multiple/checkbox mode */\n onRemove?: (value: string) => void;\n\n /** Called when clear button is clicked */\n onClear?: () => void;\n\n /** Custom node rendering in the dropdown */\n renderNode?: (payload: TreeSelectRenderNodePayload) => React.ReactNode;\n\n /** Show tree connection lines between parent and child nodes @default true */\n withLines?: boolean;\n\n /** Props for the hidden input */\n hiddenInputProps?: Omit<React.ComponentProps<'input'>, 'value'>;\n\n /** Divider for hidden input values @default ',' */\n hiddenInputValuesDivider?: string;\n\n /** Props for the ScrollArea in the dropdown */\n scrollAreaProps?: ScrollAreaProps;\n\n /** Controls the default chevron color */\n chevronColor?: MantineColor;\n\n /** Max dropdown height @default 220 */\n maxDropdownHeight?: number | string;\n\n /** Controlled dropdown state */\n dropdownOpened?: boolean;\n\n /** Default dropdown state */\n defaultDropdownOpened?: boolean;\n\n /** Called when dropdown opens */\n onDropdownOpen?: () => void;\n\n /** Called when dropdown closes */\n onDropdownClose?: () => void;\n\n /** Props passed to the underlying Combobox */\n comboboxProps?: Record<string, any>;\n\n /** Clear search on selection change @default true */\n clearSearchOnChange?: boolean;\n\n /** Opens dropdown on focus (searchable mode) @default true */\n openOnFocus?: boolean;\n}\n\nexport type TreeSelectFactory = Factory<{\n props: TreeSelectProps;\n ref: HTMLInputElement;\n stylesNames: TreeSelectStylesNames;\n variant: InputVariant;\n signature: <Mode extends TreeSelectMode = 'single'>(\n props: TreeSelectProps<Mode>\n ) => React.JSX.Element;\n}>;\n\nconst defaultProps = {\n mode: 'single',\n allowDeselect: true,\n checkedStrategy: 'child',\n maxValues: Infinity,\n hiddenInputValuesDivider: ',',\n clearSearchOnChange: true,\n openOnFocus: true,\n size: 'sm',\n withLines: true,\n} satisfies Partial<TreeSelectProps<TreeSelectMode>>;\n\nconst clearSectionOffset: Record<string, number> = {\n xs: 41,\n sm: 50,\n md: 60,\n lg: 72,\n xl: 89,\n};\n\nfunction getAncestorsToNode(value: string, nodes: TreeNodeData[]): string[] | null {\n for (const node of nodes) {\n if (node.value === value) {\n return [];\n }\n if (Array.isArray(node.children)) {\n const path = getAncestorsToNode(value, node.children);\n if (path !== null) {\n return [node.value, ...path];\n }\n }\n }\n return null;\n}\n\nexport const TreeSelect = genericFactory<TreeSelectFactory>((_props) => {\n const props = useProps('TreeSelect', defaultProps as any, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n size,\n data,\n mode,\n value,\n defaultValue,\n onChange,\n checkStrictly,\n checkedStrategy,\n defaultExpandedValues,\n defaultExpandAll,\n expandedValues,\n onExpandedChange,\n expandOnClick,\n searchable,\n searchValue,\n defaultSearchValue,\n onSearchChange,\n filter,\n nothingFoundMessage,\n allowDeselect,\n clearable,\n clearSectionMode,\n clearButtonProps,\n maxValues,\n maxDisplayedValues,\n maxDisplayedValuesContent,\n onRemove,\n onClear,\n renderNode,\n withLines,\n hiddenInputProps,\n hiddenInputValuesDivider,\n scrollAreaProps,\n chevronColor,\n maxDropdownHeight,\n dropdownOpened,\n defaultDropdownOpened,\n onDropdownOpen,\n onDropdownClose,\n comboboxProps,\n clearSearchOnChange,\n openOnFocus,\n variant,\n onKeyDown,\n onFocus,\n onBlur,\n onClick,\n readOnly,\n disabled,\n radius,\n rightSection,\n rightSectionWidth,\n rightSectionPointerEvents,\n rightSectionProps,\n leftSection,\n leftSectionWidth,\n leftSectionPointerEvents,\n leftSectionProps,\n inputContainer,\n inputWrapperOrder,\n withAsterisk,\n labelProps,\n descriptionProps,\n errorProps,\n wrapperProps,\n description,\n label,\n error,\n withErrorStyles,\n name,\n form,\n id,\n placeholder,\n required,\n mod,\n attributes,\n ...others\n } = props;\n\n const isMulti = mode === 'multiple' || mode === 'checkbox';\n const isCheckbox = mode === 'checkbox';\n const _id = useId(id);\n\n const combobox = useCombobox({\n opened: dropdownOpened,\n defaultOpened: defaultDropdownOpened,\n onDropdownOpen: () => {\n onDropdownOpen?.();\n combobox.updateSelectedOptionIndex('active', { scrollIntoView: true });\n },\n onDropdownClose: () => {\n onDropdownClose?.();\n combobox.resetSelectedOption();\n },\n });\n\n const initialExpanded = useMemo(() => {\n if (defaultExpandAll) {\n return getTreeExpandedState(data, '*');\n }\n if (defaultExpandedValues) {\n return getTreeExpandedState(data, defaultExpandedValues);\n }\n return getTreeExpandedState(data, []);\n }, []);\n\n const expandedToRecord = useCallback(\n (values: string[] | undefined): TreeExpandedState | undefined => {\n if (!values) {\n return undefined;\n }\n return getTreeExpandedState(data, values);\n },\n [data]\n );\n\n const [_expandedState, setExpandedState] = useUncontrolled<TreeExpandedState>({\n value: expandedToRecord(expandedValues),\n defaultValue: initialExpanded,\n finalValue: {},\n onChange: (val) => {\n if (onExpandedChange) {\n onExpandedChange(\n Object.entries(val)\n .filter(([, v]) => v)\n .map(([k]) => k)\n );\n }\n },\n });\n\n const toggleExpand = useCallback(\n (nodeValue: string) => {\n setExpandedState({ ..._expandedState, [nodeValue]: !_expandedState[nodeValue] });\n },\n [_expandedState]\n );\n\n const initialSearchValue = useMemo(() => {\n if (mode !== 'single' || !defaultValue) {\n return '';\n }\n const node = findTreeNode(defaultValue as string, data);\n return node ? (typeof node.label === 'string' ? node.label : '') : '';\n }, []);\n\n const [_searchValue, setSearchValue] = useUncontrolled({\n value: searchValue,\n defaultValue: defaultSearchValue,\n finalValue: initialSearchValue,\n onChange: onSearchChange,\n });\n\n const handleSearchChange = (val: string) => {\n setSearchValue(val);\n combobox.resetSelectedOption();\n };\n\n const [_value, setValue] = useUncontrolled({\n value: value as any,\n defaultValue: defaultValue as any,\n finalValue: isMulti ? [] : null,\n onChange,\n });\n\n const internalChecked = useMemo(() => {\n if (!isCheckbox || !_value || !Array.isArray(_value)) {\n return [];\n }\n if (checkStrictly) {\n return _value;\n }\n return expandToLeafChecked(_value, data);\n }, [isCheckbox, _value, data, checkStrictly]);\n\n const filteredData = useMemo(() => {\n if (!searchable || !_searchValue) {\n return data;\n }\n if (mode === 'single' && _value) {\n const node = findTreeNode(_value as string, data);\n if (node && _searchValue === (typeof node.label === 'string' ? node.label : '')) {\n return data;\n }\n }\n return filterTreeData(data, _searchValue, filter);\n }, [data, _searchValue, filter, searchable, mode, _value]);\n\n const expandedForRender = useMemo(() => {\n if (_searchValue && filteredData !== data) {\n const expanded = { ..._expandedState };\n const expandFilteredParents = (nodes: TreeNodeData[]) => {\n for (const node of nodes) {\n if (Array.isArray(node.children) && node.children.length > 0) {\n expanded[node.value] = true;\n expandFilteredParents(node.children);\n }\n }\n };\n expandFilteredParents(filteredData);\n return expanded;\n }\n return _expandedState;\n }, [filteredData, _expandedState, _searchValue, data]);\n\n const flatNodes = useMemo(\n () => flattenTreeSelectData(filteredData, expandedForRender),\n [filteredData, expandedForRender]\n );\n\n const flatNodesRef = useRef(flatNodes);\n flatNodesRef.current = flatNodes;\n\n const nodeLookup = useMemo(() => {\n const lookup: Record<string, TreeNodeData> = {};\n const walk = (nodes: TreeNodeData[]) => {\n for (const node of nodes) {\n lookup[node.value] = node;\n if (Array.isArray(node.children)) {\n walk(node.children);\n }\n }\n };\n walk(data);\n return lookup;\n }, [data]);\n\n const getNodeLabel = (nodeValue: string): string => {\n const node = nodeLookup[nodeValue];\n if (!node) {\n return nodeValue;\n }\n return typeof node.label === 'string' ? node.label : nodeValue;\n };\n\n const getStyles = useStyles<TreeSelectFactory>({\n name: 'TreeSelect',\n classes: {} as any,\n props: props as any,\n classNames,\n styles,\n unstyled,\n attributes,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<TreeSelectFactory>({\n props,\n styles,\n classNames,\n });\n\n const {\n styleProps,\n rest: { type, autoComplete, ...rest },\n } = extractStyleProps(others);\n\n const handleOptionSubmit = (val: string) => {\n if (mode === 'single') {\n if (expandOnClick) {\n const node = findTreeNode(val, data);\n if (node && Array.isArray(node.children) && node.children.length > 0) {\n toggleExpand(val);\n return;\n }\n }\n const nextValue = allowDeselect && val === _value ? null : val;\n setValue(nextValue);\n combobox.closeDropdown();\n if (clearSearchOnChange) {\n handleSearchChange(nextValue ? getNodeLabel(nextValue) : '');\n }\n } else if (mode === 'multiple') {\n if (expandOnClick) {\n const node = findTreeNode(val, data);\n if (node && Array.isArray(node.children) && node.children.length > 0) {\n toggleExpand(val);\n return;\n }\n }\n if (clearSearchOnChange) {\n setSearchValue('');\n }\n const arr = (_value as string[]) || [];\n if (arr.includes(val)) {\n setValue(arr.filter((v: string) => v !== val));\n onRemove?.(val);\n } else if (arr.length < (maxValues ?? Infinity)) {\n setValue([...arr, val]);\n }\n } else if (mode === 'checkbox') {\n if (clearSearchOnChange) {\n setSearchValue('');\n }\n const nodeChecked = checkStrictly\n ? internalChecked.includes(val)\n : isNodeChecked(val, data, internalChecked);\n\n let newInternalChecked: string[];\n if (checkStrictly) {\n newInternalChecked = nodeChecked\n ? internalChecked.filter((v) => v !== val)\n : [...internalChecked, val];\n } else {\n const childLeaves = getChildrenNodesValues(val, data);\n if (nodeChecked) {\n newInternalChecked = internalChecked.filter((v) => !childLeaves.includes(v));\n } else {\n newInternalChecked = [...new Set([...internalChecked, ...childLeaves])];\n }\n }\n\n const newValue = checkedToValue(newInternalChecked, data, checkedStrategy!);\n if (!nodeChecked && newValue.length > (maxValues ?? Infinity)) {\n return;\n }\n setValue(newValue);\n\n if (expandOnClick) {\n const node = findTreeNode(val, data);\n if (node && Array.isArray(node.children) && node.children.length > 0) {\n if (!_expandedState[val]) {\n toggleExpand(val);\n }\n }\n }\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(event);\n\n if (event.key === ' ' && !searchable && isMulti) {\n event.preventDefault();\n combobox.toggleDropdown();\n }\n\n if (event.key === 'Backspace' && _searchValue.length === 0 && isMulti) {\n const arr = (_value as string[]) || [];\n if (arr.length > 0) {\n const removed = arr[arr.length - 1];\n onRemove?.(removed);\n setValue(arr.slice(0, -1));\n }\n }\n\n if (!combobox.dropdownOpened) {\n return;\n }\n\n const index = combobox.getSelectedOptionIndex();\n if (index < 0 || index >= flatNodesRef.current.length) {\n return;\n }\n\n const currentNode = flatNodesRef.current[index];\n\n if (event.key === 'ArrowRight') {\n if (currentNode.hasChildren && !currentNode.expanded) {\n event.preventDefault();\n toggleExpand(currentNode.node.value);\n }\n }\n\n if (event.key === 'ArrowLeft') {\n if (currentNode.hasChildren && currentNode.expanded) {\n event.preventDefault();\n toggleExpand(currentNode.node.value);\n } else if (currentNode.parent) {\n event.preventDefault();\n const parentIndex = flatNodesRef.current.findIndex(\n (n) => n.node.value === currentNode.parent\n );\n if (parentIndex >= 0) {\n combobox.selectOption(parentIndex);\n }\n }\n }\n };\n\n useEffect(() => {\n if (mode !== 'single' || !searchable) {\n return;\n }\n if (value === null) {\n handleSearchChange('');\n } else if (typeof value === 'string') {\n handleSearchChange(getNodeLabel(value));\n }\n }, [value]);\n\n const prevDropdownOpenedRef = useRef(false);\n useEffect(() => {\n if (combobox.dropdownOpened && !prevDropdownOpenedRef.current && searchable && _value) {\n const targets = Array.isArray(_value) ? _value : [_value];\n const newExpanded = { ..._expandedState };\n let changed = false;\n for (const target of targets) {\n const ancestors = getAncestorsToNode(target as string, data);\n if (ancestors) {\n for (const a of ancestors) {\n if (!newExpanded[a]) {\n newExpanded[a] = true;\n changed = true;\n }\n }\n }\n }\n if (changed) {\n setExpandedState(newExpanded);\n requestAnimationFrame(() => {\n combobox.updateSelectedOptionIndex('active', { scrollIntoView: true });\n });\n }\n }\n prevDropdownOpenedRef.current = combobox.dropdownOpened;\n });\n\n const clearButton = (\n <Combobox.ClearButton\n {...clearButtonProps}\n onClear={() => {\n onClear?.();\n setValue(isMulti ? [] : null);\n handleSearchChange('');\n }}\n />\n );\n\n const hasValue = isMulti\n ? Array.isArray(_value) && _value.length > 0\n : _value != null && _value !== '';\n const _clearable = clearable && hasValue && !disabled && !readOnly;\n\n const singleDisplayLabel = useMemo(() => {\n if (mode !== 'single' || !_value) {\n return '';\n }\n return getNodeLabel(_value as string);\n }, [mode, _value, nodeLookup]);\n\n const displayValues = useMemo(() => {\n if (!isMulti || !Array.isArray(_value)) {\n return [];\n }\n return _value as string[];\n }, [isMulti, _value]);\n\n const pillsListStyle =\n _clearable && isMulti\n ? { paddingInlineEnd: clearSectionOffset[size as string] ?? clearSectionOffset.sm }\n : undefined;\n\n const visiblePills =\n maxDisplayedValues != null ? displayValues.slice(0, maxDisplayedValues) : displayValues;\n\n const overflowCount =\n maxDisplayedValues != null ? Math.max(0, displayValues.length - maxDisplayedValues) : 0;\n\n const pills = visiblePills.map((item, index) => (\n <Pill\n key={`${item}-${index}`}\n withRemoveButton={!readOnly}\n onRemove={() => {\n if (isCheckbox) {\n const childLeaves = checkStrictly ? [item] : getChildrenNodesValues(item, data);\n const newInternal = internalChecked.filter((v) => !childLeaves.includes(v));\n setValue(checkedToValue(newInternal, data, checkedStrategy!));\n } else {\n setValue((_value as string[]).filter((v: string) => v !== item));\n }\n onRemove?.(item);\n }}\n unstyled={unstyled}\n disabled={disabled}\n {...getStyles('pill')}\n >\n {getNodeLabel(item)}\n </Pill>\n ));\n\n if (overflowCount > 0) {\n const overflowContent =\n typeof maxDisplayedValuesContent === 'function'\n ? maxDisplayedValuesContent(overflowCount)\n : maxDisplayedValuesContent || `+${overflowCount} more`;\n pills.push(\n <Pill key=\"__overflow\" unstyled={unstyled} disabled={disabled} {...getStyles('pill')}>\n {overflowContent}\n </Pill>\n );\n }\n\n const isEmpty = flatNodes.length === 0;\n\n const options = flatNodes.map((flatNode) => {\n const isSelected =\n mode === 'single'\n ? _value === flatNode.node.value\n : mode === 'multiple'\n ? ((_value as string[]) || []).includes(flatNode.node.value)\n : false;\n\n const nodeChecked = isCheckbox\n ? checkStrictly\n ? internalChecked.includes(flatNode.node.value)\n : isNodeChecked(flatNode.node.value, data, internalChecked)\n : false;\n\n const nodeIndeterminate =\n isCheckbox && !checkStrictly\n ? isNodeIndeterminate(flatNode.node.value, data, internalChecked)\n : false;\n\n return (\n <TreeSelectOption\n key={flatNode.node.value}\n node={flatNode.node}\n level={flatNode.level}\n expanded={flatNode.expanded}\n hasChildren={flatNode.hasChildren}\n selected={isSelected}\n checked={nodeChecked}\n indeterminate={nodeIndeterminate}\n showCheckbox={isCheckbox}\n isLastChild={flatNode.isLastChild}\n lineGuides={flatNode.lineGuides}\n withLines={!!withLines}\n onToggleExpand={toggleExpand}\n renderNode={renderNode}\n />\n );\n });\n\n const dropdown = (\n <Combobox.Dropdown hidden={readOnly || disabled}>\n <Combobox.Options className={classes.optionsWrapper}>\n <ScrollArea.Autosize\n mah={maxDropdownHeight ?? 220}\n type=\"scroll\"\n scrollbarSize=\"var(--combobox-padding)\"\n offsetScrollbars=\"y\"\n {...scrollAreaProps}\n >\n {options}\n </ScrollArea.Autosize>\n {isEmpty && nothingFoundMessage && <Combobox.Empty>{nothingFoundMessage}</Combobox.Empty>}\n </Combobox.Options>\n </Combobox.Dropdown>\n );\n\n if (isMulti) {\n return (\n <>\n <Combobox\n store={combobox}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n size={size}\n readOnly={readOnly}\n __staticSelector=\"TreeSelect\"\n attributes={attributes}\n onOptionSubmit={handleOptionSubmit}\n {...comboboxProps}\n >\n <Combobox.DropdownTarget>\n <PillsInput\n {...styleProps}\n __staticSelector=\"TreeSelect\"\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n size={size}\n className={className}\n style={style}\n variant={variant}\n disabled={disabled}\n radius={radius}\n __defaultRightSection={\n <Combobox.Chevron\n size={size}\n error={error}\n unstyled={unstyled}\n color={chevronColor}\n />\n }\n __clearSection={clearButton}\n __clearable={_clearable}\n __clearSectionMode={clearSectionMode}\n rightSection={rightSection}\n rightSectionPointerEvents={rightSectionPointerEvents || 'none'}\n rightSectionWidth={rightSectionWidth}\n rightSectionProps={rightSectionProps}\n leftSection={leftSection}\n leftSectionWidth={leftSectionWidth}\n leftSectionPointerEvents={leftSectionPointerEvents}\n leftSectionProps={leftSectionProps}\n inputContainer={inputContainer}\n inputWrapperOrder={inputWrapperOrder}\n withAsterisk={withAsterisk}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n wrapperProps={wrapperProps}\n description={description}\n label={label}\n error={error}\n withErrorStyles={withErrorStyles}\n __stylesApiProps={{\n ...props,\n rightSectionPointerEvents: rightSectionPointerEvents || 'none',\n multiline: true,\n }}\n pointer={!searchable}\n onClick={() => (searchable ? combobox.openDropdown() : combobox.toggleDropdown())}\n data-expanded={combobox.dropdownOpened || undefined}\n id={_id}\n required={required}\n mod={mod}\n attributes={attributes}\n >\n <Pill.Group\n attributes={attributes}\n disabled={disabled}\n unstyled={unstyled}\n {...getStyles('pillsList', { style: pillsListStyle })}\n >\n {pills}\n <Combobox.EventsTarget autoComplete={autoComplete}>\n <PillsInput.Field\n {...rest}\n id={_id}\n placeholder={placeholder}\n type={!searchable && !placeholder ? 'hidden' : 'visible'}\n {...getStyles('inputField')}\n unstyled={unstyled}\n onFocus={(event) => {\n onFocus?.(event);\n if (openOnFocus && searchable) {\n combobox.openDropdown();\n }\n }}\n onBlur={(event) => {\n onBlur?.(event);\n combobox.closeDropdown();\n handleSearchChange('');\n }}\n onKeyDown={handleKeyDown}\n value={_searchValue}\n onChange={(event) => {\n handleSearchChange(event.currentTarget.value);\n if (searchable) {\n combobox.openDropdown();\n }\n }}\n disabled={disabled}\n readOnly={readOnly || !searchable}\n pointer={!searchable}\n />\n </Combobox.EventsTarget>\n </Pill.Group>\n </PillsInput>\n </Combobox.DropdownTarget>\n {dropdown}\n </Combobox>\n <Combobox.HiddenInput\n name={name}\n valuesDivider={hiddenInputValuesDivider}\n value={_value}\n form={form}\n disabled={disabled}\n {...hiddenInputProps}\n />\n </>\n );\n }\n\n return (\n <>\n <Combobox\n store={combobox}\n __staticSelector=\"TreeSelect\"\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n readOnly={readOnly}\n size={size}\n attributes={attributes}\n onOptionSubmit={handleOptionSubmit}\n {...comboboxProps}\n >\n <Combobox.Target targetType={searchable ? 'input' : 'button'} autoComplete={autoComplete}>\n <InputBase\n id={_id}\n __defaultRightSection={\n <Combobox.Chevron\n size={size}\n error={error}\n unstyled={unstyled}\n color={chevronColor}\n />\n }\n __clearSection={clearButton}\n __clearable={_clearable}\n __clearSectionMode={clearSectionMode}\n rightSection={rightSection}\n rightSectionPointerEvents={rightSectionPointerEvents || 'none'}\n {...rest}\n {...styleProps}\n size={size}\n __staticSelector=\"TreeSelect\"\n disabled={disabled}\n readOnly={readOnly || !searchable}\n value={searchable ? _searchValue : singleDisplayLabel}\n onChange={(event) => {\n handleSearchChange(event.currentTarget.value);\n combobox.openDropdown();\n }}\n onFocus={(event) => {\n if (openOnFocus && searchable) {\n combobox.openDropdown();\n }\n onFocus?.(event);\n }}\n onBlur={(event) => {\n if (searchable) {\n combobox.closeDropdown();\n }\n handleSearchChange(_value ? getNodeLabel(_value as string) : '');\n onBlur?.(event);\n }}\n onClick={(event) => {\n searchable ? combobox.openDropdown() : combobox.toggleDropdown();\n onClick?.(event);\n }}\n onKeyDown={handleKeyDown}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n pointer={!searchable}\n error={error}\n attributes={attributes}\n className={className}\n style={style}\n variant={variant}\n radius={radius}\n leftSection={leftSection}\n leftSectionWidth={leftSectionWidth}\n leftSectionPointerEvents={leftSectionPointerEvents}\n leftSectionProps={leftSectionProps}\n rightSectionWidth={rightSectionWidth}\n rightSectionProps={rightSectionProps}\n inputContainer={inputContainer}\n inputWrapperOrder={inputWrapperOrder}\n withAsterisk={withAsterisk}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n wrapperProps={wrapperProps}\n description={description}\n label={label}\n withErrorStyles={withErrorStyles}\n placeholder={placeholder}\n required={required}\n mod={mod}\n />\n </Combobox.Target>\n {dropdown}\n </Combobox>\n <Combobox.HiddenInput\n value={_value}\n name={name}\n form={form}\n disabled={disabled}\n {...hiddenInputProps}\n />\n </>\n );\n});\n\nTreeSelect.classes = { ...InputBase.classes, ...Combobox.classes };\nTreeSelect.displayName = '@mantine/core/TreeSelect';\n"],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- "use client";
2
- //#region packages/@mantine/core/src/components/TreeSelect/TreeSelect.module.css
3
- var TreeSelect_module_default = {
4
- "optionsWrapper": "m_529d33e8",
5
- "option": "m_28bb748",
6
- "expandIcon": "m_aa3e3f86",
7
- "checkIcon": "m_eaa4cdee",
8
- "label": "m_ffe3a9c1",
9
- "guideLine": "m_57207d5d",
10
- "branchVertical": "m_41b9db0b",
11
- "branchHorizontal": "m_1246e79"
12
- };
13
- //#endregion
14
- export { TreeSelect_module_default as default };
15
-
16
- //# sourceMappingURL=TreeSelect.module.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TreeSelect.module.mjs","names":[],"sources":["../../../src/components/TreeSelect/TreeSelect.module.css"],"sourcesContent":[".optionsWrapper {\n --ts-level-offset: 20px;\n --ts-line-width: rem(1px);\n --ts-line-color: var(--mantine-color-default-border);\n --ts-option-padding-y: 4px;\n --ts-option-padding-x: 8px;\n}\n\n.option {\n display: flex;\n align-items: center;\n gap: 6px;\n position: relative;\n padding: var(--ts-option-padding-y) var(--ts-option-padding-x);\n padding-inline-start: var(--ts-option-padding-x);\n}\n\n.expandIcon {\n display: flex;\n align-items: center;\n justify-content: center;\n --_ts-expand-icon-size: calc(1.45 * var(--combobox-option-fz, var(--mantine-font-size-sm)));\n width: var(--_ts-expand-icon-size);\n min-width: var(--_ts-expand-icon-size);\n height: var(--_ts-expand-icon-size);\n border-radius: var(--mantine-radius-sm);\n cursor: pointer;\n color: var(--mantine-color-dimmed);\n transform: rotate(-90deg);\n\n :where([data-combobox-selected]) & {\n color: var(--mantine-color-white);\n }\n\n @mixin where-rtl {\n transform: rotate(90deg);\n }\n\n &:where([data-expanded]) {\n transform: rotate(0deg);\n }\n\n @mixin hover {\n @mixin where-light {\n background-color: var(--mantine-color-gray-1);\n }\n\n @mixin where-dark {\n background-color: var(--mantine-color-dark-5);\n }\n }\n}\n\n.checkIcon {\n opacity: 0.4;\n width: 0.8em;\n min-width: 0.8em;\n height: 0.8em;\n margin-inline-start: auto;\n\n :where([data-combobox-selected]) & {\n opacity: 1;\n }\n}\n\n.label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Tree lines */\n.guideLine {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 0;\n border-inline-start: var(--ts-line-width) solid var(--ts-line-color);\n pointer-events: none;\n}\n\n.branchVertical {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 0;\n border-inline-start: var(--ts-line-width) solid var(--ts-line-color);\n pointer-events: none;\n\n &:where([data-last]) {\n bottom: auto;\n height: 50%;\n }\n}\n\n.branchHorizontal {\n position: absolute;\n top: 50%;\n height: 0;\n border-top: var(--ts-line-width) solid var(--ts-line-color);\n pointer-events: none;\n}\n"],"mappings":""}
@@ -1,90 +0,0 @@
1
- "use client";
2
- import { AccordionChevron } from "../Accordion/AccordionChevron.mjs";
3
- import { Combobox } from "../Combobox/Combobox.mjs";
4
- import { CheckIcon } from "../Checkbox/CheckIcon.mjs";
5
- import { CheckboxIndicator } from "../Checkbox/CheckboxIndicator/CheckboxIndicator.mjs";
6
- import TreeSelect_module_default from "./TreeSelect.module.mjs";
7
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
- //#region packages/@mantine/core/src/components/TreeSelect/TreeSelectOption.tsx
9
- const LEVEL_OFFSET = 20;
10
- const BASE_PADDING = 8;
11
- const LINE_CONTENT_GAP = 5;
12
- const OPTION_GAP = 6;
13
- function TreeSelectOption({ node, level, expanded, hasChildren, selected, checked, indeterminate, showCheckbox, isLastChild, lineGuides, withLines, onToggleExpand, renderNode }) {
14
- const indentPx = (level - 1) * LEVEL_OFFSET;
15
- const handleExpandClick = (event) => {
16
- event.stopPropagation();
17
- event.preventDefault();
18
- onToggleExpand(node.value);
19
- };
20
- const handleExpandMouseDown = (event) => {
21
- event.preventDefault();
22
- };
23
- const customContent = renderNode ? renderNode({
24
- node,
25
- level,
26
- expanded,
27
- hasChildren,
28
- selected,
29
- checked,
30
- indeterminate
31
- }) : null;
32
- const lineElements = withLines && level > 1 ? /* @__PURE__ */ jsxs(Fragment, { children: [
33
- lineGuides.map((show, g) => show ? /* @__PURE__ */ jsx("span", {
34
- className: TreeSelect_module_default.guideLine,
35
- style: { insetInlineStart: BASE_PADDING + (g + 1) * LEVEL_OFFSET - LEVEL_OFFSET / 2 }
36
- }, `g${g}`) : null),
37
- /* @__PURE__ */ jsx("span", {
38
- className: TreeSelect_module_default.branchVertical,
39
- "data-last": isLastChild || void 0,
40
- style: { insetInlineStart: BASE_PADDING + (level - 1) * LEVEL_OFFSET - LEVEL_OFFSET / 2 }
41
- }),
42
- /* @__PURE__ */ jsx("span", {
43
- className: TreeSelect_module_default.branchHorizontal,
44
- style: {
45
- insetInlineStart: BASE_PADDING + (level - 1) * LEVEL_OFFSET - LEVEL_OFFSET / 2,
46
- width: LEVEL_OFFSET / 2
47
- }
48
- })
49
- ] }) : null;
50
- const isActive = selected || checked;
51
- const showCheckMark = !showCheckbox && isActive;
52
- return /* @__PURE__ */ jsxs(Combobox.Option, {
53
- value: node.value,
54
- disabled: node.nodeProps?.disabled,
55
- active: isActive,
56
- className: TreeSelect_module_default.option,
57
- style: { paddingInlineStart: BASE_PADDING + indentPx + (withLines && level > 1 ? LINE_CONTENT_GAP : 0) + (!hasChildren ? OPTION_GAP : 0) },
58
- "aria-selected": isActive,
59
- children: [lineElements, customContent || /* @__PURE__ */ jsxs(Fragment, { children: [
60
- hasChildren && /* @__PURE__ */ jsx("span", {
61
- className: TreeSelect_module_default.expandIcon,
62
- "data-expanded": expanded || void 0,
63
- onClick: handleExpandClick,
64
- onKeyDown: (e) => {
65
- if (e.key === "Enter") handleExpandClick(e);
66
- },
67
- onMouseDown: handleExpandMouseDown,
68
- role: "button",
69
- tabIndex: -1,
70
- "aria-label": expanded ? "Collapse" : "Expand",
71
- children: /* @__PURE__ */ jsx(AccordionChevron, { size: "80%" })
72
- }),
73
- showCheckbox && /* @__PURE__ */ jsx(CheckboxIndicator, {
74
- checked: checked || indeterminate,
75
- indeterminate: !checked && indeterminate,
76
- size: "18px"
77
- }),
78
- /* @__PURE__ */ jsx("span", {
79
- className: TreeSelect_module_default.label,
80
- children: node.label
81
- }),
82
- showCheckMark && /* @__PURE__ */ jsx(CheckIcon, { className: TreeSelect_module_default.checkIcon })
83
- ] })]
84
- });
85
- }
86
- TreeSelectOption.displayName = "@mantine/core/TreeSelectOption";
87
- //#endregion
88
- export { TreeSelectOption };
89
-
90
- //# sourceMappingURL=TreeSelectOption.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TreeSelectOption.mjs","names":["classes"],"sources":["../../../src/components/TreeSelect/TreeSelectOption.tsx"],"sourcesContent":["import { AccordionChevron } from '../Accordion';\nimport { CheckboxIndicator } from '../Checkbox/CheckboxIndicator/CheckboxIndicator';\nimport { CheckIcon } from '../Checkbox/CheckIcon';\nimport { Combobox } from '../Combobox';\nimport type { TreeNodeData } from '../Tree';\nimport classes from './TreeSelect.module.css';\n\nconst LEVEL_OFFSET = 20;\nconst BASE_PADDING = 8;\nconst LINE_CONTENT_GAP = 5;\nconst OPTION_GAP = 6;\n\nexport interface TreeSelectOptionProps {\n node: TreeNodeData;\n level: number;\n expanded: boolean;\n hasChildren: boolean;\n selected: boolean;\n checked: boolean;\n indeterminate: boolean;\n showCheckbox: boolean;\n isLastChild: boolean;\n lineGuides: boolean[];\n withLines: boolean;\n onToggleExpand: (value: string) => void;\n renderNode?: (payload: TreeSelectRenderNodePayload) => React.ReactNode;\n}\n\nexport interface TreeSelectRenderNodePayload {\n node: TreeNodeData;\n level: number;\n expanded: boolean;\n hasChildren: boolean;\n selected: boolean;\n checked: boolean;\n indeterminate: boolean;\n}\n\nexport function TreeSelectOption({\n node,\n level,\n expanded,\n hasChildren,\n selected,\n checked,\n indeterminate,\n showCheckbox,\n isLastChild,\n lineGuides,\n withLines,\n onToggleExpand,\n renderNode,\n}: TreeSelectOptionProps) {\n const indentPx = (level - 1) * LEVEL_OFFSET;\n\n const handleExpandClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n onToggleExpand(node.value);\n };\n\n const handleExpandMouseDown = (event: React.MouseEvent) => {\n event.preventDefault();\n };\n\n const customContent = renderNode\n ? renderNode({ node, level, expanded, hasChildren, selected, checked, indeterminate })\n : null;\n\n const lineElements =\n withLines && level > 1 ? (\n <>\n {lineGuides.map((show, g) =>\n show ? (\n <span\n key={`g${g}`}\n className={classes.guideLine}\n style={{ insetInlineStart: BASE_PADDING + (g + 1) * LEVEL_OFFSET - LEVEL_OFFSET / 2 }}\n />\n ) : null\n )}\n <span\n className={classes.branchVertical}\n data-last={isLastChild || undefined}\n style={{\n insetInlineStart: BASE_PADDING + (level - 1) * LEVEL_OFFSET - LEVEL_OFFSET / 2,\n }}\n />\n <span\n className={classes.branchHorizontal}\n style={{\n insetInlineStart: BASE_PADDING + (level - 1) * LEVEL_OFFSET - LEVEL_OFFSET / 2,\n width: LEVEL_OFFSET / 2,\n }}\n />\n </>\n ) : null;\n\n const isActive = selected || checked;\n const showCheckMark = !showCheckbox && isActive;\n\n return (\n <Combobox.Option\n value={node.value}\n disabled={node.nodeProps?.disabled}\n active={isActive}\n className={classes.option}\n style={{\n paddingInlineStart:\n BASE_PADDING +\n indentPx +\n (withLines && level > 1 ? LINE_CONTENT_GAP : 0) +\n (!hasChildren ? OPTION_GAP : 0),\n }}\n aria-selected={isActive}\n >\n {lineElements}\n {customContent || (\n <>\n {hasChildren && (\n <span\n className={classes.expandIcon}\n data-expanded={expanded || undefined}\n onClick={handleExpandClick}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n handleExpandClick(e as any);\n }\n }}\n onMouseDown={handleExpandMouseDown}\n role=\"button\"\n tabIndex={-1}\n aria-label={expanded ? 'Collapse' : 'Expand'}\n >\n <AccordionChevron size=\"80%\" />\n </span>\n )}\n {showCheckbox && (\n <CheckboxIndicator\n checked={checked || indeterminate}\n indeterminate={!checked && indeterminate}\n size=\"18px\"\n />\n )}\n <span className={classes.label}>{node.label}</span>\n {showCheckMark && <CheckIcon className={classes.checkIcon} />}\n </>\n )}\n </Combobox.Option>\n );\n}\n\nTreeSelectOption.displayName = '@mantine/core/TreeSelectOption';\n"],"mappings":";;;;;;;;AAOA,MAAM,eAAe;AACrB,MAAM,eAAe;AACrB,MAAM,mBAAmB;AACzB,MAAM,aAAa;AA4BnB,SAAgB,iBAAiB,EAC/B,MACA,OACA,UACA,aACA,UACA,SACA,eACA,cACA,aACA,YACA,WACA,gBACA,cACwB;CACxB,MAAM,YAAY,QAAQ,KAAK;CAE/B,MAAM,qBAAqB,UAA4B;AACrD,QAAM,iBAAiB;AACvB,QAAM,gBAAgB;AACtB,iBAAe,KAAK,MAAM;;CAG5B,MAAM,yBAAyB,UAA4B;AACzD,QAAM,gBAAgB;;CAGxB,MAAM,gBAAgB,aAClB,WAAW;EAAE;EAAM;EAAO;EAAU;EAAa;EAAU;EAAS;EAAe,CAAC,GACpF;CAEJ,MAAM,eACJ,aAAa,QAAQ,IACnB,qBAAA,UAAA,EAAA,UAAA;EACG,WAAW,KAAK,MAAM,MACrB,OACE,oBAAC,QAAD;GAEE,WAAWA,0BAAQ;GACnB,OAAO,EAAE,kBAAkB,gBAAgB,IAAI,KAAK,eAAe,eAAe,GAAG;GACrF,EAHK,IAAI,IAGT,GACA,KACL;EACD,oBAAC,QAAD;GACE,WAAWA,0BAAQ;GACnB,aAAW,eAAe,KAAA;GAC1B,OAAO,EACL,kBAAkB,gBAAgB,QAAQ,KAAK,eAAe,eAAe,GAC9E;GACD,CAAA;EACF,oBAAC,QAAD;GACE,WAAWA,0BAAQ;GACnB,OAAO;IACL,kBAAkB,gBAAgB,QAAQ,KAAK,eAAe,eAAe;IAC7E,OAAO,eAAe;IACvB;GACD,CAAA;EACD,EAAA,CAAA,GACD;CAEN,MAAM,WAAW,YAAY;CAC7B,MAAM,gBAAgB,CAAC,gBAAgB;AAEvC,QACE,qBAAC,SAAS,QAAV;EACE,OAAO,KAAK;EACZ,UAAU,KAAK,WAAW;EAC1B,QAAQ;EACR,WAAWA,0BAAQ;EACnB,OAAO,EACL,oBACE,eACA,YACC,aAAa,QAAQ,IAAI,mBAAmB,MAC5C,CAAC,cAAc,aAAa,IAChC;EACD,iBAAe;YAZjB,CAcG,cACA,iBACC,qBAAA,UAAA,EAAA,UAAA;GACG,eACC,oBAAC,QAAD;IACE,WAAWA,0BAAQ;IACnB,iBAAe,YAAY,KAAA;IAC3B,SAAS;IACT,YAAY,MAAM;AAChB,SAAI,EAAE,QAAQ,QACZ,mBAAkB,EAAS;;IAG/B,aAAa;IACb,MAAK;IACL,UAAU;IACV,cAAY,WAAW,aAAa;cAEpC,oBAAC,kBAAD,EAAkB,MAAK,OAAQ,CAAA;IAC1B,CAAA;GAER,gBACC,oBAAC,mBAAD;IACE,SAAS,WAAW;IACpB,eAAe,CAAC,WAAW;IAC3B,MAAK;IACL,CAAA;GAEJ,oBAAC,QAAD;IAAM,WAAWA,0BAAQ;cAAQ,KAAK;IAAa,CAAA;GAClD,iBAAiB,oBAAC,WAAD,EAAW,WAAWA,0BAAQ,WAAa,CAAA;GAC5D,EAAA,CAAA,CAEW;;;AAItB,iBAAiB,cAAc"}
@@ -1,34 +0,0 @@
1
- "use client";
2
- //#region packages/@mantine/core/src/components/TreeSelect/flatten-tree-select-data.ts
3
- function flattenTo(acc, data, expandedState, parent, level, parentGuides) {
4
- for (let i = 0; i < data.length; i++) {
5
- const node = data[i];
6
- const isLast = i === data.length - 1;
7
- const hasLoadedChildren = Array.isArray(node.children);
8
- const hasAsyncChildren = !!node.hasChildren && !hasLoadedChildren;
9
- const hasChildren = hasLoadedChildren || hasAsyncChildren;
10
- const expanded = expandedState[node.value] || false;
11
- acc.push({
12
- node,
13
- level,
14
- parent,
15
- hasChildren,
16
- expanded,
17
- isLastChild: isLast,
18
- lineGuides: parentGuides
19
- });
20
- if (expanded && hasLoadedChildren) {
21
- const childGuides = level >= 2 ? [...parentGuides, !isLast] : [];
22
- flattenTo(acc, node.children, expandedState, node.value, level + 1, childGuides);
23
- }
24
- }
25
- }
26
- function flattenTreeSelectData(data, expandedState) {
27
- const result = [];
28
- flattenTo(result, data, expandedState, null, 1, []);
29
- return result;
30
- }
31
- //#endregion
32
- export { flattenTreeSelectData };
33
-
34
- //# sourceMappingURL=flatten-tree-select-data.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flatten-tree-select-data.mjs","names":[],"sources":["../../../src/components/TreeSelect/flatten-tree-select-data.ts"],"sourcesContent":["import type { TreeNodeData } from '../Tree';\nimport type { TreeExpandedState } from '../Tree/use-tree';\n\nexport interface TreeSelectFlatNode {\n node: TreeNodeData;\n level: number;\n parent: string | null;\n hasChildren: boolean;\n expanded: boolean;\n isLastChild: boolean;\n lineGuides: boolean[];\n}\n\nfunction flattenTo(\n acc: TreeSelectFlatNode[],\n data: TreeNodeData[],\n expandedState: TreeExpandedState,\n parent: string | null,\n level: number,\n parentGuides: boolean[]\n): void {\n for (let i = 0; i < data.length; i++) {\n const node = data[i];\n const isLast = i === data.length - 1;\n const hasLoadedChildren = Array.isArray(node.children);\n const hasAsyncChildren = !!node.hasChildren && !hasLoadedChildren;\n const hasChildren = hasLoadedChildren || hasAsyncChildren;\n const expanded = expandedState[node.value] || false;\n\n acc.push({\n node,\n level,\n parent,\n hasChildren,\n expanded,\n isLastChild: isLast,\n lineGuides: parentGuides,\n });\n\n if (expanded && hasLoadedChildren) {\n const childGuides = level >= 2 ? [...parentGuides, !isLast] : [];\n flattenTo(acc, node.children!, expandedState, node.value, level + 1, childGuides);\n }\n }\n}\n\nexport function flattenTreeSelectData(\n data: TreeNodeData[],\n expandedState: TreeExpandedState\n): TreeSelectFlatNode[] {\n const result: TreeSelectFlatNode[] = [];\n flattenTo(result, data, expandedState, null, 1, []);\n return result;\n}\n"],"mappings":";;AAaA,SAAS,UACP,KACA,MACA,eACA,QACA,OACA,cACM;AACN,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;EACpC,MAAM,OAAO,KAAK;EAClB,MAAM,SAAS,MAAM,KAAK,SAAS;EACnC,MAAM,oBAAoB,MAAM,QAAQ,KAAK,SAAS;EACtD,MAAM,mBAAmB,CAAC,CAAC,KAAK,eAAe,CAAC;EAChD,MAAM,cAAc,qBAAqB;EACzC,MAAM,WAAW,cAAc,KAAK,UAAU;AAE9C,MAAI,KAAK;GACP;GACA;GACA;GACA;GACA;GACA,aAAa;GACb,YAAY;GACb,CAAC;AAEF,MAAI,YAAY,mBAAmB;GACjC,MAAM,cAAc,SAAS,IAAI,CAAC,GAAG,cAAc,CAAC,OAAO,GAAG,EAAE;AAChE,aAAU,KAAK,KAAK,UAAW,eAAe,KAAK,OAAO,QAAQ,GAAG,YAAY;;;;AAKvF,SAAgB,sBACd,MACA,eACsB;CACtB,MAAM,SAA+B,EAAE;AACvC,WAAU,QAAQ,MAAM,eAAe,MAAM,GAAG,EAAE,CAAC;AACnD,QAAO"}
@@ -1,29 +0,0 @@
1
- "use client";
2
- import { getChildrenNodesValues } from "../Tree/get-children-nodes-values/get-children-nodes-values.mjs";
3
- import { getAllCheckedNodes } from "../Tree/get-all-checked-nodes/get-all-checked-nodes.mjs";
4
- import { isNodeChecked } from "../Tree/is-node-checked/is-node-checked.mjs";
5
- //#region packages/@mantine/core/src/components/TreeSelect/get-checked-values-by-strategy.ts
6
- function expandToLeafChecked(value, data) {
7
- const leaves = /* @__PURE__ */ new Set();
8
- for (const v of value) for (const leaf of getChildrenNodesValues(v, data)) leaves.add(leaf);
9
- return Array.from(leaves);
10
- }
11
- function getTopmostCheckedParents(data, checkedState) {
12
- const result = [];
13
- for (const node of data) if (isNodeChecked(node.value, data, checkedState)) result.push(node.value);
14
- else if (Array.isArray(node.children) && node.children.length > 0) result.push(...getTopmostCheckedParents(node.children, checkedState));
15
- return result;
16
- }
17
- function checkedToValue(checkedState, data, strategy) {
18
- if (checkedState.length === 0) return [];
19
- switch (strategy) {
20
- case "child": return checkedState;
21
- case "all": return getAllCheckedNodes(data, checkedState).result.filter((n) => n.checked).map((n) => n.value);
22
- case "parent": return getTopmostCheckedParents(data, checkedState);
23
- default: return checkedState;
24
- }
25
- }
26
- //#endregion
27
- export { checkedToValue, expandToLeafChecked };
28
-
29
- //# sourceMappingURL=get-checked-values-by-strategy.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-checked-values-by-strategy.mjs","names":[],"sources":["../../../src/components/TreeSelect/get-checked-values-by-strategy.ts"],"sourcesContent":["import type { TreeNodeData } from '../Tree';\nimport { getAllCheckedNodes } from '../Tree/get-all-checked-nodes/get-all-checked-nodes';\nimport { getChildrenNodesValues } from '../Tree/get-children-nodes-values/get-children-nodes-values';\nimport { isNodeChecked } from '../Tree/is-node-checked/is-node-checked';\n\nexport type CheckedStrategy = 'all' | 'parent' | 'child';\n\nexport function expandToLeafChecked(value: string[], data: TreeNodeData[]): string[] {\n const leaves = new Set<string>();\n for (const v of value) {\n for (const leaf of getChildrenNodesValues(v, data)) {\n leaves.add(leaf);\n }\n }\n return Array.from(leaves);\n}\n\nfunction getTopmostCheckedParents(data: TreeNodeData[], checkedState: string[]): string[] {\n const result: string[] = [];\n for (const node of data) {\n if (isNodeChecked(node.value, data, checkedState)) {\n result.push(node.value);\n } else if (Array.isArray(node.children) && node.children.length > 0) {\n result.push(...getTopmostCheckedParents(node.children, checkedState));\n }\n }\n return result;\n}\n\nexport function checkedToValue(\n checkedState: string[],\n data: TreeNodeData[],\n strategy: CheckedStrategy\n): string[] {\n if (checkedState.length === 0) {\n return [];\n }\n\n switch (strategy) {\n case 'child':\n return checkedState;\n case 'all':\n return getAllCheckedNodes(data, checkedState)\n .result.filter((n) => n.checked)\n .map((n) => n.value);\n case 'parent':\n return getTopmostCheckedParents(data, checkedState);\n default:\n return checkedState;\n }\n}\n"],"mappings":";;;;;AAOA,SAAgB,oBAAoB,OAAiB,MAAgC;CACnF,MAAM,yBAAS,IAAI,KAAa;AAChC,MAAK,MAAM,KAAK,MACd,MAAK,MAAM,QAAQ,uBAAuB,GAAG,KAAK,CAChD,QAAO,IAAI,KAAK;AAGpB,QAAO,MAAM,KAAK,OAAO;;AAG3B,SAAS,yBAAyB,MAAsB,cAAkC;CACxF,MAAM,SAAmB,EAAE;AAC3B,MAAK,MAAM,QAAQ,KACjB,KAAI,cAAc,KAAK,OAAO,MAAM,aAAa,CAC/C,QAAO,KAAK,KAAK,MAAM;UACd,MAAM,QAAQ,KAAK,SAAS,IAAI,KAAK,SAAS,SAAS,EAChE,QAAO,KAAK,GAAG,yBAAyB,KAAK,UAAU,aAAa,CAAC;AAGzE,QAAO;;AAGT,SAAgB,eACd,cACA,MACA,UACU;AACV,KAAI,aAAa,WAAW,EAC1B,QAAO,EAAE;AAGX,SAAQ,UAAR;EACE,KAAK,QACH,QAAO;EACT,KAAK,MACH,QAAO,mBAAmB,MAAM,aAAa,CAC1C,OAAO,QAAQ,MAAM,EAAE,QAAQ,CAC/B,KAAK,MAAM,EAAE,MAAM;EACxB,KAAK,SACH,QAAO,yBAAyB,MAAM,aAAa;EACrD,QACE,QAAO"}
@@ -1,68 +0,0 @@
1
- import { BoxProps, ElementProps, Factory, StylesApiProps } from '../../core';
2
- import { __BaseInputProps, __InputStylesNames, InputVariant } from '../Input';
3
- export interface MaskInputProps extends BoxProps, __BaseInputProps, StylesApiProps<MaskInputFactory>, ElementProps<'input', 'size'> {
4
- /** Mask pattern string or array of string literals and RegExp objects */
5
- mask: string | Array<string | RegExp>;
6
- /** Override or extend the default token map */
7
- tokens?: Record<string, RegExp>;
8
- /** Called before masking on each keystroke, can return overrides for mask options */
9
- modify?: (value: string) => Partial<Pick<MaskInputProps, 'mask' | 'tokens' | 'slotChar' | 'separate'>> | undefined;
10
- /** When true, raw and display values are decoupled */
11
- separate?: boolean;
12
- /** Character displayed in unfilled slots, `"_"` by default */
13
- slotChar?: string | null;
14
- /** Show mask pattern even when field is empty and unfocused */
15
- alwaysShowMask?: boolean;
16
- /** Show mask placeholder on focus, `true` by default */
17
- showMaskOnFocus?: boolean;
18
- /** Transform each character before validation and insertion */
19
- transform?: (char: string) => string;
20
- /** Clear value on blur when mask is incomplete, `false` by default */
21
- autoClear?: boolean;
22
- /** Called on every change with raw and masked values */
23
- onChangeRaw?: (rawValue: string, maskedValue: string) => void;
24
- /** Called when all required mask slots are filled */
25
- onComplete?: (maskedValue: string, rawValue: string) => void;
26
- /** Escape hatch for advanced cursor/value manipulation */
27
- beforeMaskedStateChange?: (states: {
28
- previousState: {
29
- value: string;
30
- selection: {
31
- start: number;
32
- end: number;
33
- } | null;
34
- };
35
- currentState: {
36
- value: string;
37
- selection: {
38
- start: number;
39
- end: number;
40
- } | null;
41
- };
42
- nextState: {
43
- value: string;
44
- selection: {
45
- start: number;
46
- end: number;
47
- } | null;
48
- };
49
- }) => {
50
- value: string;
51
- selection: {
52
- start: number;
53
- end: number;
54
- } | null;
55
- };
56
- }
57
- export type MaskInputFactory = Factory<{
58
- props: MaskInputProps;
59
- variant: InputVariant;
60
- ref: HTMLInputElement;
61
- stylesNames: __InputStylesNames;
62
- }>;
63
- export declare const MaskInput: import("../..").MantineComponent<{
64
- props: MaskInputProps;
65
- variant: InputVariant;
66
- ref: HTMLInputElement;
67
- stylesNames: __InputStylesNames;
68
- }>;
@@ -1,7 +0,0 @@
1
- import type { MaskInputFactory, MaskInputProps } from './MaskInput';
2
- export { MaskInput } from './MaskInput';
3
- export type { MaskInputProps, MaskInputFactory };
4
- export declare namespace MaskInput {
5
- type Props = MaskInputProps;
6
- type Factory = MaskInputFactory;
7
- }