Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .storybook/preview-head-template.html
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@
display: none;
}

#docs-root div[class^='fluent-provider'] {
#docs-root div[class^='fui-FluentProvider'] {

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, this should be renamed as well.

background: #faf9f8;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "export static classes for components",
"packageName": "@fluentui/react-accordion",
"email": "olfedias@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "export static classes for components",
"packageName": "@fluentui/react-provider",
"email": "olfedias@microsoft.com",
"dependentChangeType": "patch"
}
18 changes: 18 additions & 0 deletions packages/react-accordion/etc/react-accordion.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ import * as React_2 from 'react';
// @public
export const Accordion: ForwardRefComponent<AccordionProps>;

// @public (undocumented)
export const accordionClassName = "fui-Accordion";

// @public (undocumented)
export type AccordionCommons = {
navigable: boolean;
Expand All @@ -40,6 +43,9 @@ export type AccordionContextValues = {
// @public
export const AccordionHeader: ForwardRefComponent<AccordionHeaderProps>;

// @public (undocumented)
export const accordionHeaderClassName = "fui-AccordionHeader";

// @public (undocumented)
export type AccordionHeaderCommons = {
size: AccordionHeaderSize;
Expand Down Expand Up @@ -96,6 +102,9 @@ export type AccordionIndex = number | number[];
// @public
export const AccordionItem: ForwardRefComponent<AccordionItemProps>;

// @public (undocumented)
export const accordionItemClassName = "fui-AccordionItem";

// @public (undocumented)
export type AccordionItemCommons = {
disabled: boolean;
Expand Down Expand Up @@ -136,6 +145,9 @@ export type AccordionItemValue = unknown;
// @public
export const AccordionPanel: ForwardRefComponent<AccordionPanelProps>;

// @public (undocumented)
export const accordionPanelClassName = "fui-AccordionPanel";

// @public (undocumented)
export type AccordionPanelProps = ComponentProps<AccordionPanelSlots>;

Expand Down Expand Up @@ -217,12 +229,18 @@ export const useAccordionItemContext: () => AccordionItemContextValue;
// @public (undocumented)
export function useAccordionItemContextValues(state: AccordionItemState): AccordionItemContextValues;

// @public (undocumented)
export const useAccordionItemStyles: (state: AccordionItemState) => AccordionItemState;

// @public
export const useAccordionPanel: (props: AccordionPanelProps, ref: React_2.Ref<HTMLElement>) => AccordionPanelState;

// @public
export const useAccordionPanelStyles: (state: AccordionPanelState) => AccordionPanelState;

// @public (undocumented)
export const useAccordionStyles: (state: AccordionState) => AccordionState;

// (No @packageDocumentation comment for this package)

```
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { useAccordion } from './useAccordion';
import { useAccordionContextValues } from './useAccordionContextValues';
import type { AccordionProps } from './Accordion.types';
import type { ForwardRefComponent } from '@fluentui/react-utilities';
import { useAccordionStyles } from './useAccordionStyles';

/**
* Define a styled Accordion, using the `useAccordion` and `useAccordionStyles` hooks.
Expand All @@ -13,6 +14,8 @@ export const Accordion: ForwardRefComponent<AccordionProps> = React.forwardRef<H
const state = useAccordion(props, ref);
const contextValues = useAccordionContextValues(state);

useAccordionStyles(state);

return renderAccordion(state, contextValues);
},
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`Accordion renders a default state 1`] = `
<div>
<div
className="fui-Accordion"
>
Default Accordion
</div>
`;
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ export * from './Accordion';
export * from './Accordion.types';
export * from './renderAccordion';
export * from './useAccordion';
export * from './useAccordionStyles';
export * from './useAccordionContextValues';
export * from './AccordionContext';
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { mergeClasses } from '@fluentui/react-make-styles';
import type { AccordionState } from './Accordion.types';

export const accordionClassName = 'fui-Accordion';

export const useAccordionStyles = (state: AccordionState) => {
state.root.className = mergeClasses(accordionClassName, state.root.className);

return state;
};
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

exports[`AccordionHeader renders a default state 1`] = `
<div
className=""
className="fui-AccordionHeader"
role="heading"
>
<button
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import { makeStyles, mergeClasses } from '@fluentui/react-make-styles';
import { createFocusOutlineStyle } from '@fluentui/react-tabster';
import type { AccordionHeaderState } from './AccordionHeader.types';

export const accordionHeaderClassName = 'fui-AccordionHeader';

const useStyles = makeStyles({
// TODO: this should be extracted to another package
resetButton: {
Expand Down Expand Up @@ -87,6 +89,7 @@ const useStyles = makeStyles({
export const useAccordionHeaderStyles = (state: AccordionHeaderState) => {
const styles = useStyles();
state.root.className = mergeClasses(
accordionHeaderClassName,
styles.root,
state.inline && styles.rootInline,
state.disabled && styles.rootDisabled,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { useAccordionItemContextValues } from './useAccordionItemContextValues';
import { renderAccordionItem } from './renderAccordionItem';
import type { AccordionItemProps } from './AccordionItem.types';
import type { ForwardRefComponent } from '@fluentui/react-utilities';
import { useAccordionItemStyles } from './useAccordionItemStyles';

/**
* Define a styled AccordionItem, using the `useAccordionItem` and `useAccordionItemStyles` hooks.
Expand All @@ -12,6 +13,8 @@ export const AccordionItem: ForwardRefComponent<AccordionItemProps> = React.forw
const state = useAccordionItem(props, ref);
const contextValues = useAccordionItemContextValues(state);

useAccordionItemStyles(state);

return renderAccordionItem(state, contextValues);
});

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`AccordionItem renders a default state 1`] = `
<div>
<div
className="fui-AccordionItem"
>
Default AccordionItem
</div>
`;
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ export * from './renderAccordionItem';
export * from './useAccordionItem';
export * from './useAccordionItemContextValues';
export * from './AccordionItemContext';
export * from './useAccordionItemStyles';
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { mergeClasses } from '@fluentui/react-make-styles';
import type { AccordionItemState } from './AccordionItem.types';

export const accordionItemClassName = 'fui-AccordionItem';

export const useAccordionItemStyles = (state: AccordionItemState) => {
state.root.className = mergeClasses(accordionItemClassName, state.root.className);

return state;
};
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { makeStyles, mergeClasses } from '@fluentui/react-make-styles';
import type { AccordionPanelState } from './AccordionPanel.types';

export const accordionPanelClassName = 'fui-AccordionPanel';

/**
* Styles for the root slot
*/
Expand All @@ -14,7 +16,7 @@ const useStyles = makeStyles({
/** Applies style classnames to slots */
export const useAccordionPanelStyles = (state: AccordionPanelState) => {
const styles = useStyles();
state.root.className = mergeClasses(styles.root, state.root.className);
state.root.className = mergeClasses(accordionPanelClassName, styles.root, state.root.className);

return state;
};
6 changes: 6 additions & 0 deletions packages/react-provider/etc/react-provider.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ import { useTheme } from '@fluentui/react-shared-contexts';
// @public (undocumented)
export const FluentProvider: React_2.ForwardRefExoticComponent<FluentProviderProps & React_2.RefAttributes<HTMLElement>>;

// @public (undocumented)
export const fluentProviderClassName = "fui-FluentProvider";

// @public (undocumented)
export interface FluentProviderCommons {
dir: 'ltr' | 'rtl';
Expand Down Expand Up @@ -71,6 +74,9 @@ export const useFluentProvider: (props: FluentProviderProps, ref: React_2.Ref<HT
// @public (undocumented)
export function useFluentProviderContextValues(state: FluentProviderState): FluentProviderContextValues;

// @public
export const useFluentProviderStyles: (state: FluentProviderState) => FluentProviderState;

export { useTheme }

// (No @packageDocumentation comment for this package)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

exports[`FluentProvider renders a default state 1`] = `
<div
className="fluent-provider1"
className="fui-FluentProvider fui-FluentProvider1"
dir="ltr"
>
Default FluentProvider
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ export * from './FluentProvider';
export * from './FluentProvider.types';
export * from './renderFluentProvider';
export * from './useFluentProvider';
export * from './useFluentProviderStyles';
export * from './useFluentProviderContextValues';
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { makeStyles, mergeClasses } from '@fluentui/react-make-styles';
import type { FluentProviderState } from './FluentProvider.types';

export const fluentProviderClassName = 'fui-FluentProvider';

const useStyles = makeStyles({
root: theme => ({
color: theme.colorNeutralForeground1,
Expand All @@ -15,7 +17,7 @@ const useStyles = makeStyles({
export const useFluentProviderStyles = (state: FluentProviderState) => {
const styles = useStyles();

state.root.className = mergeClasses(state.themeClassName, styles.root, state.root.className);
state.root.className = mergeClasses(fluentProviderClassName, state.themeClassName, styles.root, state.root.className);

return state;
};
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ describe('useThemeStyleTag', () => {

expect(rule.selectorText).toEqual(`.${result.current}`);
expect(themeToCSSVariables).toHaveBeenCalledTimes(1);
expect(rule.cssText).toMatchInlineSnapshot(`".fluent-provider1 {--css-variable-1: 1; --css-variable-2: 2;}"`);
expect(rule.cssText).toMatchInlineSnapshot(`".fui-FluentProvider1 {--css-variable-1: 1; --css-variable-2: 2;}"`);
});

it('should update style tag on theme change', () => {
Expand All @@ -73,6 +73,6 @@ describe('useThemeStyleTag', () => {
const rule = sheet.cssRules[0] as CSSStyleRule;
expect(themeToCSSVariables).toHaveBeenCalledTimes(2);
expect(rule.selectorText).toEqual(`.${result.current}`);
expect(rule.cssText).toMatchInlineSnapshot(`".fluent-provider1 {--css-variable-update: xxx;}"`);
expect(rule.cssText).toMatchInlineSnapshot(`".fui-FluentProvider1 {--css-variable-update: xxx;}"`);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { useId, usePrevious } from '@fluentui/react-utilities';
import { themeToCSSVariables } from '@fluentui/react-theme';
import * as React from 'react';
import type { FluentProviderState } from './FluentProvider.types';
import { fluentProviderClassName } from './useFluentProviderStyles';

/**
* Writes a theme as css variables in a style tag on the provided targetDocument as a rule applied to a CSS class
Expand All @@ -11,7 +12,7 @@ import type { FluentProviderState } from './FluentProvider.types';
export const useThemeStyleTag = (options: Pick<FluentProviderState, 'theme' | 'targetDocument'>) => {
const { targetDocument, theme } = options;

const styleTagId = useId('fluent-provider');
const styleTagId = useId(fluentProviderClassName);

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's also reasonable to rename classname generated for CSS variables classes

const styleTag = React.useMemo(() => {
if (!targetDocument) {
return null;
Expand Down