Office UI Fabric - How to apply css styles to existing components
up vote
1
down vote
favorite
I'm using the provided components and every time I need to change a component style I wonder what's the proper way to do it.
Lets say I need to change the IconButton background color when it's disabled.
https://codepen.io/elsl/pen/KrQQdV
If I provide a theme, how am I supposed to know which palette/semanticColor is used by that component?
const iconsTheme = Fabric.createTheme({
semanticColors: {
disabledBackground: "#ff9933"
}
});
<Fabric.IconButton
iconProps={{iconName:'ChevronRight'}}
disabled
theme={iconsTheme}
/>
If I provide an IButtonStyles, how am I supposed to know that the property name is "rootDisabled.backgroundColor"?
const iconButtonStyles: IButtonStyles = {
rootDisabled: {
backgroundColor: "#ff0000",
}
};
<Fabric.IconButton
iconProps={{iconName:'CalculatorEqualTo'}}
disabled
styles={iconButtonStyles}
/>
For both these options, I had to dig into the component's source code on github to find out.
Is this the expected/correct way?
If so, between creating a Theme or an IStyle which would be the ideal/best practice?
reactjs office-ui-fabric office-fabric
add a comment |
up vote
1
down vote
favorite
I'm using the provided components and every time I need to change a component style I wonder what's the proper way to do it.
Lets say I need to change the IconButton background color when it's disabled.
https://codepen.io/elsl/pen/KrQQdV
If I provide a theme, how am I supposed to know which palette/semanticColor is used by that component?
const iconsTheme = Fabric.createTheme({
semanticColors: {
disabledBackground: "#ff9933"
}
});
<Fabric.IconButton
iconProps={{iconName:'ChevronRight'}}
disabled
theme={iconsTheme}
/>
If I provide an IButtonStyles, how am I supposed to know that the property name is "rootDisabled.backgroundColor"?
const iconButtonStyles: IButtonStyles = {
rootDisabled: {
backgroundColor: "#ff0000",
}
};
<Fabric.IconButton
iconProps={{iconName:'CalculatorEqualTo'}}
disabled
styles={iconButtonStyles}
/>
For both these options, I had to dig into the component's source code on github to find out.
Is this the expected/correct way?
If so, between creating a Theme or an IStyle which would be the ideal/best practice?
reactjs office-ui-fabric office-fabric
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I'm using the provided components and every time I need to change a component style I wonder what's the proper way to do it.
Lets say I need to change the IconButton background color when it's disabled.
https://codepen.io/elsl/pen/KrQQdV
If I provide a theme, how am I supposed to know which palette/semanticColor is used by that component?
const iconsTheme = Fabric.createTheme({
semanticColors: {
disabledBackground: "#ff9933"
}
});
<Fabric.IconButton
iconProps={{iconName:'ChevronRight'}}
disabled
theme={iconsTheme}
/>
If I provide an IButtonStyles, how am I supposed to know that the property name is "rootDisabled.backgroundColor"?
const iconButtonStyles: IButtonStyles = {
rootDisabled: {
backgroundColor: "#ff0000",
}
};
<Fabric.IconButton
iconProps={{iconName:'CalculatorEqualTo'}}
disabled
styles={iconButtonStyles}
/>
For both these options, I had to dig into the component's source code on github to find out.
Is this the expected/correct way?
If so, between creating a Theme or an IStyle which would be the ideal/best practice?
reactjs office-ui-fabric office-fabric
I'm using the provided components and every time I need to change a component style I wonder what's the proper way to do it.
Lets say I need to change the IconButton background color when it's disabled.
https://codepen.io/elsl/pen/KrQQdV
If I provide a theme, how am I supposed to know which palette/semanticColor is used by that component?
const iconsTheme = Fabric.createTheme({
semanticColors: {
disabledBackground: "#ff9933"
}
});
<Fabric.IconButton
iconProps={{iconName:'ChevronRight'}}
disabled
theme={iconsTheme}
/>
If I provide an IButtonStyles, how am I supposed to know that the property name is "rootDisabled.backgroundColor"?
const iconButtonStyles: IButtonStyles = {
rootDisabled: {
backgroundColor: "#ff0000",
}
};
<Fabric.IconButton
iconProps={{iconName:'CalculatorEqualTo'}}
disabled
styles={iconButtonStyles}
/>
For both these options, I had to dig into the component's source code on github to find out.
Is this the expected/correct way?
If so, between creating a Theme or an IStyle which would be the ideal/best practice?
const iconsTheme = Fabric.createTheme({
semanticColors: {
disabledBackground: "#ff9933"
}
});
<Fabric.IconButton
iconProps={{iconName:'ChevronRight'}}
disabled
theme={iconsTheme}
/>
const iconsTheme = Fabric.createTheme({
semanticColors: {
disabledBackground: "#ff9933"
}
});
<Fabric.IconButton
iconProps={{iconName:'ChevronRight'}}
disabled
theme={iconsTheme}
/>
const iconButtonStyles: IButtonStyles = {
rootDisabled: {
backgroundColor: "#ff0000",
}
};
<Fabric.IconButton
iconProps={{iconName:'CalculatorEqualTo'}}
disabled
styles={iconButtonStyles}
/>
const iconButtonStyles: IButtonStyles = {
rootDisabled: {
backgroundColor: "#ff0000",
}
};
<Fabric.IconButton
iconProps={{iconName:'CalculatorEqualTo'}}
disabled
styles={iconButtonStyles}
/>
reactjs office-ui-fabric office-fabric
reactjs office-ui-fabric office-fabric
asked Nov 22 at 15:22
Eduardo
233
233
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
Theme vs IStyles
I would say, use a Theme if you want all Fabric components to have the same customization.
Use the styles
property if you just want to customize that specific component (or that one specific instance of the component).
How to discover the styling hooks if using IStyles
There are four ways that comes to mind.
- Look at the documentation (e.g. https://developer.microsoft.com/en-us/fabric#/components/dropdown, look at the
IDropdownStyles
interface)
(screenshot) - Utilize IntelliSense if you're using an editor like Visual Studio Code, which automatically enumerates the IComponentStyles and provides documentation if any.
- Inspecting the DOM often provides hints (the hook areas usually look like
{area}-{number}
soroot-33
for instance where the "area" name isroot
. - Read the source code.
Unfortunately for option 1 and option 2, Fabric React isn't super consistent with the IComponentStyles
documentation so not all components have equally descriptive comments and in those cases, you may need to fallback to option 3 and option 4.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
Theme vs IStyles
I would say, use a Theme if you want all Fabric components to have the same customization.
Use the styles
property if you just want to customize that specific component (or that one specific instance of the component).
How to discover the styling hooks if using IStyles
There are four ways that comes to mind.
- Look at the documentation (e.g. https://developer.microsoft.com/en-us/fabric#/components/dropdown, look at the
IDropdownStyles
interface)
(screenshot) - Utilize IntelliSense if you're using an editor like Visual Studio Code, which automatically enumerates the IComponentStyles and provides documentation if any.
- Inspecting the DOM often provides hints (the hook areas usually look like
{area}-{number}
soroot-33
for instance where the "area" name isroot
. - Read the source code.
Unfortunately for option 1 and option 2, Fabric React isn't super consistent with the IComponentStyles
documentation so not all components have equally descriptive comments and in those cases, you may need to fallback to option 3 and option 4.
add a comment |
up vote
1
down vote
accepted
Theme vs IStyles
I would say, use a Theme if you want all Fabric components to have the same customization.
Use the styles
property if you just want to customize that specific component (or that one specific instance of the component).
How to discover the styling hooks if using IStyles
There are four ways that comes to mind.
- Look at the documentation (e.g. https://developer.microsoft.com/en-us/fabric#/components/dropdown, look at the
IDropdownStyles
interface)
(screenshot) - Utilize IntelliSense if you're using an editor like Visual Studio Code, which automatically enumerates the IComponentStyles and provides documentation if any.
- Inspecting the DOM often provides hints (the hook areas usually look like
{area}-{number}
soroot-33
for instance where the "area" name isroot
. - Read the source code.
Unfortunately for option 1 and option 2, Fabric React isn't super consistent with the IComponentStyles
documentation so not all components have equally descriptive comments and in those cases, you may need to fallback to option 3 and option 4.
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
Theme vs IStyles
I would say, use a Theme if you want all Fabric components to have the same customization.
Use the styles
property if you just want to customize that specific component (or that one specific instance of the component).
How to discover the styling hooks if using IStyles
There are four ways that comes to mind.
- Look at the documentation (e.g. https://developer.microsoft.com/en-us/fabric#/components/dropdown, look at the
IDropdownStyles
interface)
(screenshot) - Utilize IntelliSense if you're using an editor like Visual Studio Code, which automatically enumerates the IComponentStyles and provides documentation if any.
- Inspecting the DOM often provides hints (the hook areas usually look like
{area}-{number}
soroot-33
for instance where the "area" name isroot
. - Read the source code.
Unfortunately for option 1 and option 2, Fabric React isn't super consistent with the IComponentStyles
documentation so not all components have equally descriptive comments and in those cases, you may need to fallback to option 3 and option 4.
Theme vs IStyles
I would say, use a Theme if you want all Fabric components to have the same customization.
Use the styles
property if you just want to customize that specific component (or that one specific instance of the component).
How to discover the styling hooks if using IStyles
There are four ways that comes to mind.
- Look at the documentation (e.g. https://developer.microsoft.com/en-us/fabric#/components/dropdown, look at the
IDropdownStyles
interface)
(screenshot) - Utilize IntelliSense if you're using an editor like Visual Studio Code, which automatically enumerates the IComponentStyles and provides documentation if any.
- Inspecting the DOM often provides hints (the hook areas usually look like
{area}-{number}
soroot-33
for instance where the "area" name isroot
. - Read the source code.
Unfortunately for option 1 and option 2, Fabric React isn't super consistent with the IComponentStyles
documentation so not all components have equally descriptive comments and in those cases, you may need to fallback to option 3 and option 4.
answered Nov 27 at 5:35
Cliff Koh
261
261
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53434038%2foffice-ui-fabric-how-to-apply-css-styles-to-existing-components%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown