Skip to content

Commit f5ba2fa

Browse files
Additional styling and theme support
1 parent 2ae2c6f commit f5ba2fa

File tree

5 files changed

+29
-5
lines changed

5 files changed

+29
-5
lines changed

docs/documentation/docs/controls/ModernTaxonomyPicker.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,5 +70,6 @@ The ModernTaxonomyPicker control can be configured with the following properties
7070
| customPanelWidth | number | no | Custom panel width in pixels. |
7171
| onRenderItem | function | no | Modify the display of the items in the picker. |
7272
| onRenderSuggestionsItem | function | no | Modify the display of the items in the pickers suggestions list. |
73+
| themeVariant | IReadonlyTheme | no | The current loaded SharePoint theme/section background (More info: [Supporting section backgrounds](https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/guidance/supporting-section-backgrounds)). |
7374

7475
![](https://telemetry.sharepointpnp.com/sp-dev-fx-controls-react/wiki/controls/TaxonomyPicker)

src/controls/modernTaxonomyPicker/ModernTaxonomyPicker.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import { TermItemSuggestion } from './termItem/TermItemSuggestion';
3535
import { ModernTermPicker } from './modernTermPicker/ModernTermPicker';
3636
import { ITermItemProps } from './modernTermPicker/ModernTermPicker.types';
3737
import { TermItem } from './termItem/TermItem';
38+
import { IReadonlyTheme } from "@microsoft/sp-component-base";
3839

3940
export interface IModernTaxonomyPickerProps {
4041
allowMultipleSelections?: boolean;
@@ -51,6 +52,7 @@ export interface IModernTaxonomyPickerProps {
5152
onRenderSuggestionsItem?: (term: ITermInfo, itemProps: ISuggestionItemProps<ITermInfo>) => JSX.Element;
5253
placeHolder?: string;
5354
customPanelWidth?: number;
55+
themeVariant?: IReadonlyTheme;
5456
}
5557

5658
export function ModernTaxonomyPicker(props: IModernTaxonomyPickerProps) {
@@ -205,6 +207,7 @@ export function ModernTaxonomyPicker(props: IModernTaxonomyPickerProps) {
205207
}}
206208
onRenderSuggestionsItem={props.onRenderSuggestionsItem ?? onRenderSuggestionsItem}
207209
onRenderItem={props.onRenderItem ?? onRenderItem}
210+
themeVariant={props.themeVariant}
208211
/>
209212
</div>
210213
<div className={styles.termFieldButton}>
@@ -260,6 +263,7 @@ export function ModernTaxonomyPicker(props: IModernTaxonomyPickerProps) {
260263
onRenderItem={props.onRenderItem ?? onRenderItem}
261264
getTextFromItem={getTextFromItem}
262265
languageTag={currentLanguageTag}
266+
themeVariant={props.themeVariant}
263267
/>
264268
</div>
265269
)

src/controls/modernTaxonomyPicker/modernTermPicker/ModernTermPicker.types.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ import { IBasePickerProps } from "office-ui-fabric-react/lib/components/pickers/
33
import { IPickerItemProps } from "office-ui-fabric-react/lib/components/pickers/PickerItem.types";
44
import { IStyle, ITheme } from "office-ui-fabric-react/lib/Styling";
55
import { IStyleFunctionOrObject } from "office-ui-fabric-react/lib/Utilities";
6+
import { IReadonlyTheme } from "@microsoft/sp-component-base";
67

7-
export interface IModernTermPickerProps extends IBasePickerProps<ITermInfo> {}
8+
export interface IModernTermPickerProps extends IBasePickerProps<ITermInfo> {
9+
themeVariant?: IReadonlyTheme;
10+
}
811

912
export interface ITermItemProps extends IPickerItemProps<ITermInfo> {
1013
/** Additional CSS class(es) to apply to the TermItem root element. */

src/controls/modernTaxonomyPicker/taxonomyPanelContents/TaxonomyPanelContents.module.scss

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@
33
.taxonomyPanelContents {
44
.choiceOption {
55
color: "[theme: bodyText, default: #323130]";
6+
display: inline-block;
7+
padding-left: 26px;
8+
}
9+
10+
.disabledChoiceOption {
11+
color: "[theme: disabledBodyText, default: #323130]";
12+
display: inline-block;
613
padding-left: 26px;
714
}
815

@@ -15,6 +22,11 @@
1522
margin-left: 4px;
1623
}
1724

25+
.disabledCheckbox {
26+
color: "[theme: disabledBodyText, default: #323130]";
27+
margin-left: 4px;
28+
}
29+
1830
.selectedCheckbox {
1931
font-weight: bold;
2032
}

src/controls/modernTaxonomyPicker/taxonomyPanelContents/TaxonomyPanelContents.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import { css } from '@uifabric/utilities/lib/css';
4646
import * as strings from 'ControlStrings';
4747
import { useForceUpdate } from '@uifabric/react-hooks';
4848
import { ModernTermPicker } from '../modernTermPicker/ModernTermPicker';
49+
import { IReadonlyTheme } from "@microsoft/sp-component-base";
4950

5051
export interface ITaxonomyFormProps {
5152
context: BaseComponentContext;
@@ -64,6 +65,7 @@ export interface ITaxonomyFormProps {
6465
onRenderItem?: (props: IPickerItemProps<ITermInfo>) => JSX.Element;
6566
getTextFromItem: (item: ITermInfo, currentValue?: string) => string;
6667
languageTag: string;
68+
themeVariant?: IReadonlyTheme;
6769
}
6870

6971
export function TaxonomyPanelContents(props: ITaxonomyFormProps): React.ReactElement<ITaxonomyFormProps> {
@@ -282,7 +284,7 @@ export function TaxonomyPanelContents(props: ITaxonomyFormProps): React.ReactEle
282284
checked={isSelected}
283285
styles={selectedStyles}
284286
disabled={isDisabled}
285-
onRenderLabel={(p) => <span className={css(styles.checkbox, isSelected && styles.selectedCheckbox)} title={p.title}>
287+
onRenderLabel={(p) => <span className={css(!isDisabled && styles.checkbox, isDisabled && styles.disabledCheckbox, isSelected && styles.selectedCheckbox)} title={p.title}>
286288
{p.label}
287289
</span>}
288290
/>
@@ -296,7 +298,7 @@ export function TaxonomyPanelContents(props: ITaxonomyFormProps): React.ReactEle
296298
text: groupHeaderProps.group.name,
297299
styles: selectedStyle,
298300
onRenderLabel: (p) =>
299-
<span id={p.labelId} className={css(styles.choiceOption, isSelected && styles.selectedChoiceOption)}>
301+
<span id={p.labelId} className={css(!isDisabled && styles.choiceOption, isDisabled && styles.disabledChoiceOption, isSelected && styles.selectedChoiceOption)}>
300302
{p.text}
301303
</span>
302304
}];
@@ -322,8 +324,8 @@ export function TaxonomyPanelContents(props: ITaxonomyFormProps): React.ReactEle
322324

323325
const onRenderHeader = (headerProps: IGroupHeaderProps): JSX.Element => {
324326
const groupHeaderStyles: IStyleFunctionOrObject<IGroupHeaderStyleProps, IGroupHeaderStyles> = {
325-
expand: { height: 42, visibility: !headerProps.group.children || headerProps.group.level === 0 ? "hidden" : "visible" },
326-
expandIsCollapsed: { visibility: !headerProps.group.children || headerProps.group.level === 0 ? "hidden" : "visible" },
327+
expand: { height: 42, visibility: !headerProps.group.children || headerProps.group.level === 0 ? "hidden" : "visible", fontSize: 14 },
328+
expandIsCollapsed: { visibility: !headerProps.group.children || headerProps.group.level === 0 ? "hidden" : "visible", fontSize: 14 },
327329
check: { display: 'none' },
328330
headerCount: { display: 'none' },
329331
groupHeaderContainer: { height: 36, paddingTop: 3, paddingBottom: 3, paddingLeft: 3, paddingRight: 3, alignItems: 'center', },
@@ -337,6 +339,7 @@ export function TaxonomyPanelContents(props: ITaxonomyFormProps): React.ReactEle
337339
onRenderTitle={onRenderTitle}
338340
onToggleCollapse={onToggleCollapse}
339341
indentWidth={20}
342+
expandButtonProps={{style: {color: props.themeVariant?.semanticColors.bodyText}}}
340343
/>
341344
);
342345
};
@@ -441,6 +444,7 @@ export function TaxonomyPanelContents(props: ITaxonomyFormProps): React.ReactEle
441444
}}
442445
onRenderSuggestionsItem={props.onRenderSuggestionsItem}
443446
onRenderItem={props.onRenderItem}
447+
themeVariant={props.themeVariant}
444448
/>
445449
</div>
446450
</div>

0 commit comments

Comments
 (0)