Skip to content

feat: add support for style resets in makeStyles#450

Merged
layershifter merged 3 commits intomicrosoft:mainfrom
layershifter:feat/styles-remove
Apr 11, 2024
Merged

feat: add support for style resets in makeStyles#450
layershifter merged 3 commits intomicrosoft:mainfrom
layershifter:feat/styles-remove

Conversation

@layershifter
Copy link
Member

@layershifter layershifter commented Oct 6, 2023

Fixes #442.

This PR adds support for RESET values in makeStyles() calls, for example:

import { makeStyles, RESET } from '@griffel/react'

const useClasses = makeStyles({ 
  root: {
    color: RESET,
  }
});

function App() {
  // 💡 "classes.root" will be an empty string
  const classes = useClasses();

  return <div className={classes.root} />
}

In this case, nothing will be applied to a div. This feature becomes useful for merging cases, for example:

import { makeStyles, mergeClasses, RESET } from '@griffel/react';

const useClassesA = makeStyles({
  root: {
    color: 'red',
    backgroundColor: 'blue',
  },
});
const useClassesB = makeStyles({
  root: {
    color: RESET,
  },
});

function Component() {
  const classesA = useClassesA();
  const classesB = useClassesB();

  // 💡 After merging, the `color` property will be removed
  const className = mergeClasses(classesA.root, classesB.root);

  // 💡 If `RESET` value is set, it won't be added to the class
  return <div className={classesA} />;
}

Note on makeStyles() & makeResetStyles() combo

import { makeStyles, makeResetStyles, mergeClasses, RESET } from '@griffel/react';

const useClassesA = makeResetStyles({
  color: 'red',
  backgroundColor: 'blue',
});
const useClassesB = makeStyles({
  root: {
    color: RESET,
  },
});

function Component() {
  const classesA = useClassesA();
  const classesB = useClassesB();

  // 🔴  After merging, the `color` property from `makeResetStyles()` will be still applied
  const className = mergeClasses(classesA, classesB.root);
}

RESET values work only for makeStyles() calls i.e. it won't remove/reset values created by makeResetStyles().

@github-actions
Copy link

github-actions bot commented Mar 11, 2024

📊 Bundle size report

Package & Exports Baseline (minified/GZIP) PR Change
core
__styles (makeStyles)
1.662 kB
793 B
1.727 kB
832 B
65 B
39 B
core
makeStyles (runtime)
21.651 kB
8.202 kB
21.852 kB
8.301 kB
201 B
99 B
core
mergeClasses
1.821 kB
876 B
1.865 kB
900 B
44 B
24 B
react
__css
1.658 kB
774 B
1.723 kB
812 B
65 B
38 B
react
__styles
3.776 kB
1.668 kB
3.841 kB
1.705 kB
65 B
37 B
react
makeStyles (runtime)
23.803 kB
9.044 kB
24.002 kB
9.141 kB
199 B
97 B
Unchanged fixtures
Package & Exports Size (minified/GZIP)
core
__resetStyles (makeResetStyles)
273 B
197 B
core
makeResetStyles (runtime)
17.14 kB
6.569 kB
core
shorthands.padding()
4.781 kB
1.537 kB
react
makeResetStyles (runtime)
19.285 kB
7.429 kB
react
makeStaticStyles (runtime)
9.225 kB
4.051 kB
shadow-dom
createShadowDOMRenderer
3.468 kB
1.467 kB
🤖 This report was generated against 8428e184162e3b6187dcba208f2dc90068f4e0e8

@layershifter layershifter force-pushed the feat/styles-remove branch 10 times, most recently from 5409fbb to 8c69975 Compare April 8, 2024 09:30
@layershifter layershifter marked this pull request as ready for review April 8, 2024 10:47
@layershifter layershifter requested a review from a team as a code owner April 8, 2024 10:47
@layershifter layershifter force-pushed the feat/styles-remove branch 9 times, most recently from 9f78fb0 to 16478d2 Compare April 11, 2024 12:14
@layershifter layershifter merged commit 062a9d5 into microsoft:main Apr 11, 2024
@layershifter layershifter deleted the feat/styles-remove branch April 11, 2024 14:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

core: support removing property from existing set of styles

3 participants