Мы разрабатываем современные веб-части для сайтов связи O365 с использованием Office UI Fabric React.Я хочу использовать новый подход на основе ts для стилизации моих компонентов (см. Здесь) .Все работает довольно хорошо, за исключением того, что в нем не используется текущая тема сайта SharePoint, на котором он развернут.
Моя веб-часть была создана с использованием стандартных лесов Yeoman для веб-частей SharePoint (выбрав React в качестве платформы).
Мой код стиля выглядит следующим образом:
import { getTheme, FontWeights, mergeStyleSets } from 'office-ui-fabric-react/lib/Styling';
export interface IComponentClassNames {
locationBanner: string;
locationLabel: string;
locationValue: string;
editLocationButton: string;
findLocationButton: string;
}
const theme = getTheme();
export const getClassNames = (): IComponentClassNames => {
return mergeStyleSets({
locationBanner: {
display: 'inline-flex',
paddingLeft: '8px',
},
locationLabel: [
theme.fonts.large,
{
color: theme.palette.neutralPrimary
}
],
locationValue: {
color: theme.palette.themeDark
},
editLocationButton: {
paddingLeft: '20px'
},
findLocationButton: {
paddingLeft: '10px'
}
});
};
И затем в части рендеринга моего компонента я делаю следующее:
const {locationBanner, editLocationButton, findLocationButton, locationLabel, locationValue} = getClassNames();
И затем применяю это в атрибутах className-attribute,Это работает нормально, и стиль применяется - однако: getTheme()
возвращает тему по умолчанию (т.е. в основном синюю), а не ту, которая в настоящее время установлена на сайте SharePoint.Должен ли я каким-то образом передать тему моему компоненту (из веб-части) или как это должно работать?