文件
chen 301194963b
一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
feat: Initial clean release of CHM
2026-11-04 11:29:39 +08:00

58 行
1.4 KiB
TypeScript

import * as React from 'react';
import { Chip, ChipProps } from 'react-native-paper';
import { useMemo } from 'react';
import { connect } from 'react-redux';
import { AppState } from '../../../../../utils/types';
import { themeStyle } from '../../../../global-style';
type Props = {
themeId: number;
color?: string;
faded?: boolean;
onPress?: ()=> void;
icon?: string;
children: React.ReactNode;
};
const fadedStyle = { opacity: 0.87 };
const PluginChip: React.FC<Props> = props => {
const themeOverride = useMemo(() => {
const theme = themeStyle(props.themeId);
const foreground = props.color ?? theme.color;
const background = theme.backgroundColor;
return {
colors: {
secondaryContainer: background,
onSecondaryContainer: foreground,
primary: foreground,
outline: foreground,
onPrimary: foreground,
onSurfaceVariant: foreground,
},
};
}, [props.themeId, props.color]);
const accessibilityProps: Partial<ChipProps> = {};
if (!props.onPress) {
// Note: May have no effect until a future version of RN Paper.
// See https://github.com/callstack/react-native-paper/pull/4327
accessibilityProps.accessibilityRole = 'text';
}
return <Chip
theme={themeOverride}
style={props.faded ? fadedStyle : null}
mode='outlined'
{...accessibilityProps}
{...props}
/>;
};
export default connect((state: AppState) => {
return {
themeId: state.settings.theme,
};
})(PluginChip);