jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
67 lines (66 loc) • 2.37 kB
TypeScript
import React from 'react';
import type { Option, Options, PickClassStyleType, RendererProps, SchemaClassName } from 'jamis-core';
export type CascaderOption = {
text?: string;
value?: string | number;
color?: string;
disabled?: boolean;
children?: Options;
className?: SchemaClassName;
[key: string]: any;
};
export interface CascaderProps extends Omit<RendererProps, 'pickClassStyle'>, PickClassStyleType {
cascade?: boolean;
noResultsText?: string;
withChildren?: boolean;
onlyChildren?: boolean;
hideNodePathLabel?: boolean;
value?: (number | string | Option)[];
activeColor?: string;
optionRender?: ({ option, selected }: {
option: CascaderOption;
selected: boolean;
}) => React.ReactNode;
onClose?: () => void;
onConfirm?: (param: any) => void;
multiple?: boolean;
}
export type CascaderTab = {
options: Options;
};
export interface CascaderState {
selectedOptions: Options;
activeTab: number;
tabs: Array<{
options: Options;
}>;
disableConfirm: boolean;
}
export default class Cascader extends React.Component<CascaderProps, CascaderState> {
static defaultProps: {
labelField: string;
valueField: string;
};
tabsRef: React.RefObject<HTMLDivElement>;
tabRef: React.RefObject<HTMLDivElement>;
constructor(props: CascaderProps);
componentDidMount(): void;
handleTabSelect(index: number): void;
getOptionParent(option: Option): any;
dealParentSelect(option: Option, selectedOptions: Options): Options;
flattenTreeWithLeafNodes(option: Option): any[];
adjustOptionSelect(option: Option): boolean;
getSelectedChildNum(option: Option): number;
dealOptionDisable(selectedOptions: Options): void;
dealChildrenSelect(option: Option, selectedOptions: Options): Options;
getParentTree: (option: Option, arr: Options) => Options;
onSelect(option: CascaderOption, tabIndex: number): void;
onNextClick(option: CascaderOption, tabIndex: number): void;
getSubmitOptions(selectedOptions: Options): Options;
confirm(): void;
getSelectedOptions(): Option[];
renderOption(option: CascaderOption, tabIndex: number): JSX.Element;
renderOptions(options: Options, tabIndex: number): JSX.Element;
renderTabs(): JSX.Element;
render(): JSX.Element;
}