Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(deps): update dependency @mantine/hooks to v7 - autoclosed #65

Closed
wants to merge 1 commit into from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Sep 23, 2023

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@mantine/hooks (source) 6.0.11 -> 7.13.1 age adoption passing confidence

Release Notes

mantinedev/mantine (@​mantine/hooks)

v7.13.1

Compare Source

v7.13.0: 🎇

Compare Source

View changelog with demos on mantine.dev website

Container queries support in Grid

You can now use container queries
in Grid component. With container queries, all responsive values
are adjusted based on the container width, not the viewport width.

Example of using container queries. To see how the grid changes, resize the root element
of the demo with the resize handle located at the bottom right corner of the demo:

import { Grid } from '@​mantine/core';

function Demo() {
  return (
    // Wrapper div is added for demonstration purposes only,
    // it is not required in real projects
    <div style={{ resize: 'horizontal', overflow: 'hidden', maxWidth: '100%' }}>
      <Grid
        type="container"
        breakpoints={{ xs: '100px', sm: '200px', md: '300px', lg: '400px', xl: '500px' }}
      >
        <Col span={{ base: 12, md: 6, lg: 3 }}>1</Col>
        <Col span={{ base: 12, md: 6, lg: 3 }}>2</Col>
        <Col span={{ base: 12, md: 6, lg: 3 }}>3</Col>
        <Col span={{ base: 12, md: 6, lg: 3 }}>4</Col>
      </Grid>
    </div>
  );
}
CompositeChart component

New CompositeChart component allows using Line, Area and Bar charts together in a single chart:

import { CompositeChart } from '@&#8203;mantine/charts';
import { data } from './data';

function Demo() {
  return (
    <CompositeChart
      h={300}
      data={data}
      dataKey="date"
      unit="$"
      maxBarWidth={30}
      series={[
        { name: 'Tomatoes', color: 'rgba(18, 120, 255, 0.2)', type: 'bar' },
        { name: 'Apples', color: 'red.8', type: 'line' },
        { name: 'Oranges', color: 'yellow.8', type: 'area' },
      ]}
    />
  );
}
Points labels

LineChart and AreaChart now support withPointLabels prop to display labels on data points:

import { LineChart } from '@&#8203;mantine/charts';
import { data } from './data';

function Demo() {
  return (
    <LineChart
      h={300}
      data={data}
      dataKey="date"
      withLegend
      withPointLabels
      series={[
        { name: 'Apples', color: 'indigo.6' },
        { name: 'Oranges', color: 'blue.6' },
      ]}
    />
  );
}

ScatterChart also supports point labels, but also allows to control which axis should display labels with pointLabels prop:

import { ScatterChart } from '@&#8203;mantine/charts';
import { data } from './data';

function Demo() {
  return (
    <ScatterChart
      h={350}
      data={data}
      dataKey={{ x: 'age', y: 'BMI' }}
      xAxisLabel="Age"
      yAxisLabel="BMI"
      pointLabels="x"
    />
  );
}
BarChart: Mixed stacks

You can now control how BarChart series are stacked by setting stackId property in series object:

import { BarChart } from '@&#8203;mantine/charts';
import { data } from './data';

function Demo() {
  return (
    <BarChart
      h={300}
      data={data}
      dataKey="month"
      series={[
        { name: 'Smartphones', color: 'violet.6', stackId: 'a' },
        { name: 'Laptops', color: 'blue.6', stackId: 'b' },
        { name: 'Tablets', color: 'teal.6', stackId: 'b' },
      ]}
    />
  );
}
BarChart: Minimum bar size

BarChart now supports minBarSize prop to set the minimum size of the bar in px:

import { BarChart } from '@&#8203;mantine/charts';
import { data } from './data';

function Demo() {
  return (
    <BarChart
      h={300}
      data={data}
      dataKey="month"
      withLegend
      series={[
        { name: 'Smartphones', color: 'violet.6' },
        { name: 'Laptops', color: 'blue.6' },
        { name: 'Tablets', color: 'teal.6' },
      ]}
    />
  );
}
Help Center updates
Other changes
  • New demo has been added to Chip component with an example of how to deselect radio chip
  • BarChart now supports maxBarWidth prop to set the maximum width of each bar in px

v7.12.2

Compare Source

What's Changed
  • [@mantine/hooks] use-idle: Fix idle countdown not starting if the user did non interact with the page (#​6683)
  • [@mantine/core] ScrollArea: Fix onBottomReached prop not being available in ScrollArea.Autosize component
  • [@mantine/core] Remove children from Checkbox, Radio and Switch types to avoid accidental errors
  • [@mantine/core] TypographyStylesProvider: Fix incorrect table styles in dark color scheme
  • [@mantine/form] Fix error thrown for nullable values dirty status check (#​6672)
  • [@mantine/core] Badge: Fix unexpected change to block layout, fix incorrect alignment when fixed width is set (#​6698, #​6680)
  • [@mantine/core] ScrollArea: Fix pointer-events being left as none after interaction with scrollbar (#​6681)
  • [@mantine/core] Tabs: Fix keepMounted prop being added as attribute to Tabs.Panel DOM element (#​6711)
  • [@mantine/core] Tree: Add initialCheckedState support (#​6697)
  • [@mantine/spotlight] Fix SpotlightRoot component not being exported (#​6710)
  • [@mantine/dropzone] Add 7z and rar mime types exports (#​6702)
  • [@mantine/dates] DatePickerInput: Fix incorrect hovered date logic when the component receives value update with partial selected date range (#​6718)
  • [@mantine/dates] Fix valueFormatter prop being added to DateTimePicker types
  • [@mantine/core] Badge: Fix right/left sections height affecting the alignment of the label
  • [@mantine/core] Menu: Fix accessibility warning in devtools when the Menu is opened (#​6644)
New Contributors

Full Changelog: mantinedev/mantine@7.12.1...7.12.2

v7.12.1

Compare Source

What's Changed
  • [@mantine/dates] DateInput: Fix default date being set to the current date when minDate is set to the future (#​6646)
  • [@mantine/core] ScrollArea: Fix incorrect thumb::before styles
  • [@mantine/core] Fix incorrect active styles of buttons used inside disabled fieldset
  • [@mantine/form] Fix form.watch callbacks not being fired when form.initialize is called (#​6639)
  • [@mantine/core] Switch: Fix Switch shrinking when large label or description is used (#​6531)
  • [@mantine/core] Combobox: Fix Combobox.Search overflow when ScrollArea is used in the dropdown (#​6562)
  • [@mantine/core] Accordion: Add missing withProps function (#​6564)
  • [@mantine/core] Pill: Fix remove icon overflowing pill container if its background color was changed with Styles API (#​6565)
  • [@mantine/core] PinInput: Allow passing props to individual input elements depending on index with getInputProps (#​6588)
  • [@mantine/charts]: Fix LineChart Legend and Tooltip to support nested names (#​6536)
  • [@mantine/core] Tooltip: Add missing Tooltip.Group.extend function (#​6576)
  • [@mantine/spotlight] Fix limit prop not working correctly with actions groups (#​6632)
  • [@mantine/core] Badge: Fix text overflow not being handled correctly (#​6629)
  • [@mantine/core] SegmentedControl: Add data-disabled attribute to the root element to simplify styling with Styles API (#​6625)
  • [@mantine/core] SegmentedControl: Fix initial position of indicator being broken when the component is used inside other element that has transitions on mount (#​6622)
  • [@mantine/core] TagsInput: Fix onKeyDown prop not working (#​6569)
  • [@mantine/charts] PieChart: Fix valueFormatter not working on outside labels (#​6616)
  • [@mantine/core] Popover: Fix apply function of size middleware not being handled correctly (#​6598)
  • [@mantine/core] Chip: Fix incorrect checked padding for size="xl" (#​6586)
  • [@mantine/dates] TimeInput: Fix incorrect focus styles of am/pm input (#​6579)
  • [@mantine/hook] use-os: Fix incorrect iPadOS detection (#​6535)
  • [@mantine/core] DatePickerInput: Fix incorrect aria-label being set on the input element (#​6530)
  • [@mantine/core] Menu: Fix incorrect Escape key handling inside Modal (#​6580)
New Contributors

Full Changelog: mantinedev/mantine@7.12.0...7.12.1

v7.12.0: 🌟

Compare Source

View changelog with demos on mantine.dev website

Notifications at any position

It is now possible to display notifications at any position on the screen
with @​mantine/notifications package:

import { Button } from '@&#8203;mantine/core';
import { notifications } from '@&#8203;mantine/notifications';

const positions = [
  'top-left',
  'top-right',
  'bottom-left',
  'bottom-right',
  'top-center',
  'bottom-center',
] as const;

function Demo() {
  const buttons = positions.map((position) => (
    <Button
      key={position}
      onClick={() =>
        notifications.show({
          title: `Notification at ${position}`,
          message: `Notification at ${position} message`,
          position,
        })
      }
    >
      {position}
    </Button>
  ));

  return <Group>{buttons}</Group>;
}

Subscribe to notifications state

You can now subscribe to notifications state changes with useNotifications hook:

import { Button } from '@&#8203;mantine/core';
import { notifications } from '@&#8203;mantine/notifications';

function Demo() {
  return (
    <Button
      onClick={() =>
        notifications.show({
          title: 'Default notification',
          message: 'Do not forget to star Mantine on GitHub! 🌟',
        })
      }
    >
      Show notification
    </Button>
  );
}

SemiCircleProgress component

New SemiCircleProgress component:

import { SemiCircleProgress } from '@&#8203;mantine/core';

function Demo() {
  return (
    <SemiCircleProgress
      fillDirection="left-to-right"
      orientation="up"
      filledSegmentColor="blue"
      size={200}
      thickness={12}
      value={40}
      label="Label"
    />
  );
}

Tree checked state

Tree component now supports checked state:

import { IconChevronDown } from '@&#8203;tabler/icons-react';
import { Checkbox, Group, RenderTreeNodePayload, Tree } from '@&#8203;mantine/core';
import { data } from './data';

const renderTreeNode = ({
  node,
  expanded,
  hasChildren,
  elementProps,
  tree,
}: RenderTreeNodePayload) => {
  const checked = tree.isNodeChecked(node.value);
  const indeterminate = tree.isNodeIndeterminate(node.value);

  return (
    <Group gap="xs" {...elementProps}>
      <Checkbox.Indicator
        checked={checked}
        indeterminate={indeterminate}
        onClick={() => (!checked ? tree.checkNode(node.value) : tree.uncheckNode(node.value))}
      />

      <Group gap={5} onClick={() => tree.toggleExpanded(node.value)}>
        <span>{node.label}</span>

        {hasChildren && (
          <IconChevronDown
            size={14}
            style={{ transform: expanded ? 'rotate(180deg)' : 'rotate(0deg)' }}
          />
        )}
      </Group>
    </Group>
  );
};

function Demo() {
  return <Tree data={data} levelOffset={23} expandOnClick={false} renderNode={renderTreeNode} />;
}

Disable specific features in postcss-preset-mantine

You can now disable specific features of the postcss-preset-mantine
by setting them to false in the configuration object. This feature is available starting from
[email protected].

module.exports = {
  'postcss-preset-mantine': {
    features: {
      // Turn off `light-dark` function
      lightDarkFunction: false,

      // Turn off `postcss-nested` plugin
      nested: false,

      // Turn off `lighten`, `darken` and `alpha` functions
      colorMixAlpha: false,

      // Turn off `rem` and `em` functions
      remEmFunctions: false,

      // Turn off `postcss-mixins` plugin
      mixins: false,
    },
  },
};

Help Center updates

Other changes

  • use-interval hook now supports autoInvoke option to start the interval automatically when the component mounts.
  • use-form with mode="uncontrolled" now triggers additional rerender when dirty state changes to allow subscribing to form state changes.
  • ScrollArea component now supports onTopReached and onBottomReached props. The functions are called when the user scrolls to the top or bottom of the scroll area.
  • Accordion.Panel component now supports onTransitionEnd prop that is called when the panel animation completes.

v7.11.2

Compare Source

v7.11.1

Compare Source

What's Changed
  • [@mantine/core] Add option to display nothingFoundMessage when data is empty in Select and MultiSelect components (#​6477)
  • [@mantine/core] Tooltip: Add defaultOpened prop support (#​6466)
  • [@mantine/core] PinInput: Fix incorrect rtl logic (#​6382)
  • [@mantine/core] Popover: Fix floatingStrategy="fixed" not having position:fixed styles (#​6419)
  • [@mantine/spotlight] Fix spotlight not working correctly with shadow DOM (#​6400)
  • [@mantine/form] Fix onValuesChange using stale values (#​6392)
  • [@mantine/carousel] Fix onSlideChange using stale props values (#​6393)
  • [@mantine/charts] Fix unexpected padding on the right side of the chart in BarChart, AreaChart and LineChart components (#​6467)
  • [@mantine/core] Select: Fix onChange being called with the already selected if it has been picked from the dropdown (#​6468)
  • [@mantine/dates] DatePickerInput: Fix highlightToday not working (#​6471)
  • [@mantine/core] NumberInput: Fix incorrect handling of numbers larger than max safe integer on blur (#​6407)
  • [@mantine/core] Tooltip: Fix tooltip arrow being incompatible with headless mode (#​6458)
  • [@mantine/core] ActionIcon: Fix loading styles inconsistency with Button component (#​6460)
  • [@mantine/charts] PieChart: Fix key error for duplicated name data (#​6067)
  • [@mantine/core] Modal: Fix removeScrollProps.ref not being compatible with React 19 (#​6446)
  • [@mantine/core] TagsInput: Fix selectFirstOptionOnChange prop not working (#​6337)
  • [@mantine/hooks] use-eye-dropper: Fix Opera being incorrectly detected as a supported browser (#​6307)
  • [@mantine/core] Fix :host selector now working correctly in cssVariablesSelector of MantineProvider (#​6404)
  • [@mantine/core] TagsInput: Fix onChange being called twice when Enter key is pressed in some cases (#​6416)
  • [@mantine/modals] Fix Modal overrides type augmentation not working with TypeScript 5.5 (#​6443)
  • [@mantine/core] Tree: Fix levelOffset prop being added to the root DOM element (#​6461)
New Contributors

Full Changelog: mantinedev/mantine@7.11.0...7.11.1

v7.11.0: 👁️

Compare Source

View changelog with demos on mantine.dev website

withProps function

All Mantine components now have withProps static function that can be used to
add default props to the component:

import { IMaskInput } from 'react-imask';
import { Button, InputBase } from '@&#8203;mantine/core';

const LinkButton = Button.withProps({
  component: 'a',
  target: '_blank',
  rel: 'noreferrer',
  variant: 'subtle',
});

const PhoneInput = InputBase.withProps({
  mask: '+7 (000) 000-0000',
  component: IMaskInput,
  label: 'Your phone number',
  placeholder: 'Your phone number',
});

function Demo() {
  return (
    <>
      {/* You can pass additional props to components created with `withProps` */}
      <LinkButton href="https://mantine.dev">Mantine website</LinkButton>

      {/* Component props override default props defined in `withProps` */}
      <PhoneInput placeholder="Personal phone" />
    </>
  );
}
Avatar initials

Avatar component now supports displaying initials with auto generated color based on the given name value.
To display initials instead of the default placeholder, set name prop
to the name of the person, for example, name="John Doe". If the name
is set, you can use color="initials" to generate color based on the name:

import { Avatar, Group } from '@&#8203;mantine/core';

const names = [
  'John Doe',
  'Jane Mol',
  'Alex Lump',
  'Sarah Condor',
  'Mike Johnson',
  'Kate Kok',
  'Tom Smith',
];

function Demo() {
  const avatars = names.map((name) => <Avatar key={name} name={name} color="initials" />);
  return <Group>{avatars}</Group>;
}
BubbleChart component

New BubbleChart component:

import { BubbleChart } from '@&#8203;mantine/charts';
import { data } from './data';

function Demo() {
  return (
    <BubbleChart
      h={60}
      data={data}
      range={[16, 225]}
      label="Sales/hour"
      color="lime.6"
      dataKey={{ x: 'hour', y: 'index', z: 'value' }}
    />
  );
}
BarChart waterfall type

BarChart component now supports waterfall type
which is useful for visualizing changes in values over time:

import { BarChart } from '@&#8203;mantine/charts';
import { data } from './data';

function Demo() {
  return (
    <BarChart
      h={300}
      data={data}
      dataKey="item"
      type="waterfall"
      series={[{ name: 'Effective tax rate in %', color: 'blue' }]}
      withLegend
    />
  );
}
LineChart gradient type

LineChart component now supports gradient type
which renders line chart with gradient fill:

import { LineChart } from '@&#8203;mantine/charts';
import { data } from './data';

function Demo() {
  return (
    <LineChart
      h={300}
      data={data}
      series={[{ name: 'temperature', label: 'Avg. Temperature' }]}
      dataKey="date"
      type="gradient"
      gradientStops={[
        { offset: 0, color: 'red.6' },
        { offset: 20, color: 'orange.6' },
        { offset: 40, color: 'yellow.5' },
        { offset: 70, color: 'lime.5' },
        { offset: 80, color: 'cyan.5' },
        { offset: 100, color: 'blue.5' },
      ]}
      strokeWidth={5}
      curveType="natural"
      yAxisProps={{ domain: [-25, 40] }}
      valueFormatter={(value) => `${value}°C`}
    />
  );
}
Right Y axis

LineChart, BarChart and AreaChart components
now support rightYAxis prop which renders additional Y axis on the right side of the chart:

import { LineChart } from '@&#8203;mantine/charts';
import { data } from './data';

function Demo() {
  return (
    <LineChart
      h={300}
      data={data}
      dataKey="name"
      withRightYAxis
      yAxisLabel="uv"
      rightYAxisLabel="pv"
      series={[
        { name: 'uv', color: 'pink.6' },
        { name: 'pv', color: 'cyan.6', yAxisId: 'right' },
      ]}
    />
  );
}
RadarChart legend

RadarChart component now supports legend:

import { RadarChart } from '@&#8203;mantine/charts';
import { data } from './data';

function Demo() {
  return (
    <RadarChart
      h={300}
      data={data}
      dataKey="product"
      withPolarRadiusAxis
      withLegend
      series={[
        { name: 'Sales January', color: 'blue.6', opacity: 0.2 },
        { name: 'Sales February', color: 'orange.6', opacity: 0.2 },
      ]}
    />
  );
}
TagsInput acceptValueOnBlur

TagsInput component behavior has been changed. Now By default,
if the user types in a value and blurs the input, the value is added to the list.
You can change this behavior by setting acceptValueOnBlur to false. In this case, the value is added
only when the user presses Enter or clicks on a suggestion.

import { TagsInput } from '@&#8203;mantine/core';

function Demo() {
  return (
    <>
      <TagsInput
        label="Value IS accepted on blur"
        placeholder="Enter text, then blur the field"
        data={['React', 'Angular', 'Svelte']}
        acceptValueOnBlur
      />
      <TagsInput
        label="Value IS NOT accepted on blur"
        placeholder="Enter text, then blur the field"
        data={['React', 'Angular', 'Svelte']}
        acceptValueOnBlur={false}
        mt="md"
      />
    </>
  );
}
Transition delay

Transition component now supports enterDelay and exitDelay props to delay transition start:

import { useState } from 'react';
import { Button, Flex, Paper, Transition } from '@&#8203;mantine/core';

export function Demo() {
  const [opened, setOpened] = useState(false);

  return (
    <Flex maw={200} pos="relative" justify="center" m="auto">
      <Button onClick={() => setOpened(true)}>Open dropdown</Button>

      <Transition mounted={opened} transition="pop" enterDelay={500} exitDelay={300}>
        {(transitionStyle) => (
          <Paper
            shadow="md"
            p="xl"
            h={120}
            pos="absolute"
            inset={0}
            bottom="auto"
            onClick={() => setOpened(false)}
            style={{ ...transitionStyle, zIndex: 1 }}
          >
            Click to close
          </Paper>
        )}
      </Transition>
    </Flex>
  );
}
Documentation updates
Other changes
  • Pagination component now supports hideWithOnePage prop which hides pagination when there is only one page
  • Spoiler component now supports controlled expanded state with expanded and onExpandedChange props
  • Burger component now supports lineSize prop to change lines height
  • Calendar, DatePicker and other similar components now support highlightToday prop to highlight today's date

v7.10.2

Compare Source

What's Changed

  • [@mantine/core] Select: Fix incorrect state changes handling when both value and searchValue are controlled (#​6272)
  • [@mantine/core] Stepper: Fix autoContrast prop being added to the DOM element
  • [@mantine/charts] PieChart: Fix inner label not using formatted value (#​6328)
  • [@mantine/core] Fix incorrect color resolving logic in border style prop resolver (#​6326)
  • [@mantine/modals] Fix incorrect styles of the confirmation modal when it is used without any description (#​6325)
  • [@mantine/core] ScrollArea: Fix click events being triggered when scrollbar drag is released over an interactive element in Firefox (#​6354)
  • [@mantine/core] Combobox: Fix clicks on footer and header triggering dropdown close (#​6344)
  • [@mantine/core] PasswordInput: Fix withErrorStyles prop being passed to the DOM element (#​6348)

New Contributors

Full Changelog: mantinedev/mantine@7.10.1...7.10.2

v7.10.1

Compare Source

What's Changed
  • [@mantine/charts] BarChart: Add waterfall type (#​6231)
  • [@mantine/form] Fix form.setFieldError called inside form.onSubmit not working correctly in some cases (#​6101)
  • [@mantine/core] SegmentedControl: Fix false error reported by React 18.3+ for incorrect key prop usage
  • [@mantine/hooks] use-fetch: Fix incorrect error handling (#​6278)
  • [@mantine/core] Fix bd style prop not being applied in some components (#​6282)
  • [@mantine/core] NumberInput: Fix incorrect leading zeros handling (#​6232)
  • [@mantine/core] NumberInput: Fix incorrect logic while editing decimal values (#​6232)
  • [@mantine/core] ScrollArea: Fix scrollbar flickering on reveal with hover and scroll types (#​6218)
  • [@mantine/hooks] Update use-throttled-* hooks to emit updates on trailing edges (#​6257)
  • [@mantine/core] Input: Add inputSize prop to set size html attribute on the input element
New Contributors

Full Changelog: mantinedev/mantine@7.10.0...7.10.1

v7.10.0: 😎

Compare Source

View changelog with demos on mantine.dev website

Tree component

New Tree component:

import { IconFolder, IconFolderOpen } from '@&#8203;tabler/icons-react';
import { Group, RenderTreeNodePayload, Tree } from '@&#8203;mantine/core';
import { CssIcon, NpmIcon, TypeScriptCircleIcon } from '@&#8203;mantinex/dev-icons';
import { data, dataCode } from './data';
import classes from './Demo.module.css';

interface FileIconProps {
  name: string;
  isFolder: boolean;
  expanded: boolean;
}

function FileIcon({ name, isFolder, expanded }: FileIconProps) {
  if (name.endsWith('package.json')) {
    return <NpmIcon size={14} />;
  }

  if (name.endsWith('.ts') || name.endsWith('.tsx') || name.endsWith('tsconfig.json')) {
    return <TypeScriptCircleIcon size={14} />;
  }

  if (name.endsWith('.css')) {
    return <CssIcon size={14} />;
  }

  if (isFolder) {
    return expanded ? (
      <IconFolderOpen color="var(--mantine-color-yellow-9)" size={14} stroke={2.5} />
    ) : (
      <IconFolder color="var(--mantine-color-yellow-9)" size={14} stroke={2.5} />
    );
  }

  return null;
}

function Leaf({ node, expanded, hasChildren, elementProps }: RenderTreeNodePayload) {
  return (
    <Group gap={5} {...elementProps}>
      <FileIcon name={node.value} isFolder={hasChildren} expanded={expanded} />
      <span>{node.label}</span>
    </Group>
  );
}

function Demo() {
  return (
    <Tree
      classNames={classes}
      selectOnClick
      clearSelectionOnOutsideClick
      data={data}
      renderNode={(payload) => <Leaf {...payload} />}
    />
  );
}
form.getInputNode

New form.getInputNode(path) handler returns input DOM node for the given field path.
Form example, it can be used to focus input on form submit if there is an error:

import { Button, Group, TextInput } from '@&#8203;mantine/core';
import { isEmail, isNotEmpty, useForm } from '@&#8203;mantine/form';

function Demo() {
  const form = useForm({
    mode: 'uncontrolled',
    initialValues: {
      name: '',
      email: '',
    },

    validate: {
      name: isNotEmpty('Name is required'),
      email: isEmail('Invalid email'),
    },
  });

  return (
    <form
      onSubmit={form.onSubmit(
        (values) => console.log(values),
        (errors) => {
          const firstErrorPath = Object.keys(errors)[0];
          form.getInputNode(firstErrorPath)?.focus();
        }
      )}
    >
      <TextInput
        withAsterisk
        label="Your name"
        placeholder="Your name"
        key={form.key('name')}
        {...form.getInputProps('name')}
      />

      <TextInput
        withAsterisk
        label="Your email"
        placeholder="[email protected]"
        key={form.key('email')}
        {...form.getInputProps('email')}
      />

      <Group justify="flex-end" mt="md">
        <Button type="submit">Submit</Button>
      </Group>
    </form>
  );
}
Container queries in SimpleGrid

You can now use container queries
in SimpleGrid component. With container queries, grid columns and spacing
will be adjusted based on the container width, not the viewport width.

Example of using container queries. To see how the grid changes, resize the root element
of the demo with the resize handle located at the bottom right corner of the demo:

import { SimpleGrid } from '@&#8203;mantine/core';

function Demo() {
  return (
    // Wrapper div is added for demonstration purposes only,
    // it is not required in real projects
    <div style={{ resize: 'horizontal', overflow: 'hidden', maxWidth: '100%' }}>
      <SimpleGrid
        type="container"
        cols={{ base: 1, '300px': 2, '500px': 5 }}
        spacing={{ base: 10, '300px': 'xl' }}
      >
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
      </SimpleGrid>
    </div>
  );
}
Checkbox and Radio indicators

New Checkbox.Indicator and Radio.Indicator
components look exactly the same as Checkbox and Radio components, but they do not
have any semantic meaning, they are just visual representations of checkbox and radio states.

Checkbox.Indicator component:

import { Checkbox, Group } from '@&#8203;mantine/core';

function Demo() {
  return (
    <Group>
      <Checkbox.Indicator />
      <Checkbox.Indicator checked />
      <Checkbox.Indicator indeterminate />
      <Checkbox.Indicator disabled />
      <Checkbox.Indicator disabled checked />
      <Checkbox.Indicator disabled indeterminate />
    </Group>
  );
}

Radio.Indicator component:

import { Group, Radio } from '@&#8203;mantine/core';

function Demo() {
  return (
    <Group>
      <Radio.Indicator />
      <Radio.Indicator checked />
      <Radio.Indicator disabled />
      <Radio.Indicator disabled checked />
    </Group>
  );
}
Checkbox and Radio cards

New Checkbox.Card and Radio.Card
components can be used as replacements for Checkbox and Radio to build custom cards/buttons/etc.
that work as checkboxes and radios. Components are accessible by default and support the same
keyboard interactions as input[type="checkbox"] and input[type="radio"].

Checkbox.Card component:

import { useState } from 'react';
import { Checkbox, Group, Text } from '@&#8203;mantine/core';
import classes from './Demo.module.css';

function Demo() {
  const [checked, setChecked] = useState(false);

  return (
    <Checkbox.Card
      className={classes.root}
      radius="md"
      checked={checked}
      onClick={() => setChecked((c) => !c)}
    >
      <Group wrap="nowrap" align="flex-start">
        <Checkbox.Indicator />
        <div>
          <Text className={classes.label}>@&#8203;mantine/core</Text>
          <Text className={classes.description}>
            Core components library: inputs, buttons, overlays, etc.
          </Text>
        </div>
      </Group>
    </Checkbox.Card>
  );
}

Checkbox.Card component with Checkbox.Group:

import { useState } from 'react';
import { Checkbox, Group, Stack, Text } from '@&#8203;mantine/core';
import classes from './Demo.module.css';

const data = [
  {
    name: '@&#8203;mantine/core',
    description: 'Core components library: inputs, buttons, overlays, etc.',
  },
  { name: '@&#8203;mantine/hooks', description: 'Collection of reusable hooks for React applications.' },
  { name: '@&#8203;mantine/notifications', description: 'Notifications system' },
];

function Demo() {
  const [value, setValue] = useState<string[]>([]);

  const cards = data.map((item) => (
    <Checkbox.Card className={classes.root} radius="md" value={item.name} key={item.name}>
      <Group wrap="nowrap" align="flex-start">
        <Checkbox.Indicator />
        <div>
          <Text className={classes.label}>{item.name}</Text>
          <Text className={classes.description}>{item.description}</Text>
        </div>
      </Group>
    </Checkbox.Card>
  ));

  return (
    <>
      <Checkbox.Group
        value={value}
        onChange={setValue}
        label="Pick packages to install"
        description="Choose all packages that you will need in your application"
      >
        <Stack pt="md" gap="xs">
          {cards}
        </Stack>
      </Checkbox.Group>

      <Text fz="xs" mt="md">
        CurrentValue: {value.join(', ') || '–'}
      </Text>
    </>
  );
}

Radio.Card component:

import { useState } from 'react';
import { Group, Radio, Text } from '@&#8203;mantine/core';
import classes from './Demo.module.css';

function Demo() {
  const [checked, setChecked] = useState(false);

  return (
    <Radio.Card
      className={classes.root}
      radius="md"
      checked={checked}
      onClick={() => setChecked((c) => !c)}
    >
      <Group wrap="nowrap" align="flex-start">
        <Radio.Indicator />
        <div>
          <Text className={classes.label}>@&#8203;mantine/core</Text>
          <Text className={classes.description}>
            Core components library: inputs, buttons, overlays, etc.
          </Text>
        </div>
      </Group>
    </Radio.Card>
  );
}

Radio.Card component with Radio.Group:

import { useState } from 'react';
import { Group, Radio, Stack, Text } from '@&#8203;mantine/core';
import classes from './Demo.module.css';

const data = [
  {
    name: '@&#8203;mantine/core',
    description: 'Core components library: inputs, buttons, overlays, etc.',
  },
  { name: '@&#8203;mantine/hooks', description: 'Collection of reusable hooks for React applications.' },
  { name: '@&#8203;mantine/notifications', description: 'Notifications system' },
];

function Demo() {
  const [value, setValue] = useState<string | null>(null);

  const cards = data.map((item) => (
    <Radio.Card className={classes.root} radius="md" value={item.name} key={item.name}>
      <Group wrap="nowrap" align="flex-start">
        <Radio.Indicator />
        <div>
          <Text className={classes.label}>{item.name}</Text>
          <Text className={classes.description}>{item.description}</Text>
        </div>
      </Group>
    </Radio.Card>
  ));

  return (
    <>
      <Radio.Group
        value={value}
        onChange={setValue}
        label="Pick one package to install"
        description="Choose a package that you will need in your application"
      >
        <Stack pt="md" gap="xs">
          {cards}
        </Stack>
      </Radio.Group>

      <Text fz="xs" mt="md">
        CurrentValue: {value || '–'}
      </Text>
    </>
  );
}
bd style prop

New bd style prop can be used to set border CSS property.
It is available in all components that support style props.

Border width value is automatically converted to rem. For border color you can reference
theme colors similar to other style props:

import { Box } from '@&#8203;mantine/core';

function Demo() {
  return <Box bd="1px solid red.5" />;
}

v7.9.2

Compare Source

What's Changed

  • [@mantine/dates] DateTimePicker: Fix some of timeInputProps not being respected (#​6204)
  • [@mantine/core] NavLink: Add react-router support to display active route (#​6180)
  • [@mantine/core] Fix nonce attribute not being set on <style /> tag generated in color scheme switching script
  • [@mantine/core] Input: Fix incorrect margins when input wrapper order is explicitly set
  • [@mantine/core] Pagination: Fix types definition being incompatible with @​tabler/icons-react 3.x
  • [@mantine/charts] Fix incorrect tooltip position in LineChart, AreaChart and BarChart with vertical orientation
  • [@mantine/core] Rating: Fix readOnly prop now working on touch devices (#​6202)
  • [@mantine/core] TagsInput: Fix existing search value being ignored in onPaste even handler (#​6073)
  • [@mantine/core] TagsInput: Improve clearable prop logic related to dropdown (#​6115)

New Contributors

Full Changelog: mantinedev/mantine@7.9.1...7.9.2

v7.9.1

Compare Source

What's Changed
  • [@mantine/core] Fix theme.scale being ignored in Input, Paper and Table border styles
  • [@mantine/core] Fix virtualColor function requring use client in Next.js
  • [@mantine/core] FloatingIndicator: Fix incorrect resize observer logic (#​6129)
  • [@mantine/core] NumberInput: Fix incorrect allowNegative handling with up/down arrows (#​6170)
  • [@mantine/core] Fix error={true} prop set on Checkbox, Radio and Switch rendering unxpected error element with margin
  • [@mantine/core] SegmentedControl: Fix theme.primaryColor not being respected in the focus ring styles
  • [@mantine/core] CloseButton: Fix incorrect specificity of some selectors
  • [@mantine/core] Fix incorrect aria-label handling in Select, Autocomplete, MultiSelect and TagsInputs components (#​6123)
  • [@mantine/core] Modal: Prevent onClose from being called when modal is not opened (#​6156)
  • [@mantine/core] PasswordInput: Fix duplicated password visibility icon in Edge browser (#​6126)
  • [@mantine/hooks] use-hash: Fix hash value not being updated correctly (#​6145)
  • [@mantine/emotion] Fix incorrect transform logic that was causing extra hooks to render (#​6159)
New Contributors

Configuration

📅 Schedule: Branch creation - "before 6am on Saturday" in timezone America/Chicago, Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot added the dependencies Pull requests that update a dependency file label Sep 23, 2023
@vercel
Copy link

vercel bot commented Sep 23, 2023

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
games-ewal-net ❌ Failed (Inspect) Sep 30, 2024 9:35am

@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from ca77ff6 to 31f4a95 Compare September 26, 2023 05:24
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 31f4a95 to 94aec42 Compare September 26, 2023 09:26
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 94aec42 to a962819 Compare September 28, 2023 13:24
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from a962819 to 7931804 Compare October 2, 2023 16:43
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 7931804 to 0705658 Compare October 2, 2023 19:30
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 0705658 to 93eef3d Compare October 12, 2023 11:14
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 93eef3d to 124ef6b Compare October 19, 2023 09:45
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 124ef6b to 756748a Compare October 26, 2023 07:03
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 756748a to 9bef0dc Compare October 26, 2023 17:05
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 9bef0dc to 2036d32 Compare November 6, 2023 18:24
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 2036d32 to 2e8a285 Compare November 7, 2023 16:11
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 2e8a285 to b554521 Compare November 13, 2023 11:31
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from b554521 to 066de71 Compare December 4, 2023 09:49
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 066de71 to abb5cd0 Compare December 7, 2023 13:19
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from d0ddcea to 513b126 Compare July 2, 2024 12:20
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 513b126 to 81bb29c Compare July 13, 2024 16:12
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 81bb29c to bddcb71 Compare August 5, 2024 17:40
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from bddcb71 to 4a7b235 Compare August 6, 2024 02:33
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch 2 times, most recently from 1d6a1f9 to 463d631 Compare August 6, 2024 02:39
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 463d631 to 2cba738 Compare August 6, 2024 18:36
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 2cba738 to fea29d0 Compare August 6, 2024 18:40
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from fea29d0 to a1067ee Compare August 6, 2024 22:08
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from a1067ee to 915fe8d Compare August 12, 2024 14:02
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 915fe8d to 00bb7f4 Compare August 30, 2024 13:51
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 00bb7f4 to 968225b Compare September 26, 2024 08:43
@renovate renovate bot force-pushed the renovate/major-mantine-monorepo branch from 968225b to 3370d74 Compare September 30, 2024 09:35
@ervwalter ervwalter closed this Sep 30, 2024
@renovate renovate bot changed the title fix(deps): update dependency @mantine/hooks to v7 fix(deps): update dependency @mantine/hooks to v7 - autoclosed Sep 30, 2024
@renovate renovate bot deleted the renovate/major-mantine-monorepo branch September 30, 2024 19:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant