@douyinfe/semi-ui 2.22.2 → 2.23.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/css/semi.css +8 -1
  2. package/dist/css/semi.min.css +1 -1
  3. package/dist/umd/semi-ui.js +278 -233
  4. package/dist/umd/semi-ui.js.map +1 -1
  5. package/dist/umd/semi-ui.min.js +1 -1
  6. package/dist/umd/semi-ui.min.js.map +1 -1
  7. package/lib/cjs/anchor/index.d.ts +1 -1
  8. package/lib/cjs/autoComplete/index.d.ts +1 -1
  9. package/lib/cjs/button/Button.d.ts +1 -1
  10. package/lib/cjs/button/buttonGroup.d.ts +1 -1
  11. package/lib/cjs/button/index.d.ts +1 -1
  12. package/lib/cjs/datePicker/datePicker.d.ts +1 -1
  13. package/lib/cjs/form/baseForm.d.ts +5 -5
  14. package/lib/cjs/form/errorMessage.d.ts +2 -1
  15. package/lib/cjs/form/field.d.ts +1 -1
  16. package/lib/cjs/form/hooks/useFormState.d.ts +2 -1
  17. package/lib/cjs/form/interface.d.ts +15 -15
  18. package/lib/cjs/image/image.js +12 -0
  19. package/lib/cjs/image/interface.d.ts +1 -1
  20. package/lib/cjs/image/preview.d.ts +1 -1
  21. package/lib/cjs/image/preview.js +2 -2
  22. package/lib/cjs/image/previewImage.d.ts +1 -1
  23. package/lib/cjs/image/previewImage.js +1 -1
  24. package/lib/cjs/image/previewInner.d.ts +1 -1
  25. package/lib/cjs/image/previewInner.js +13 -5
  26. package/lib/cjs/input/index.d.ts +1 -1
  27. package/lib/cjs/input/inputGroup.d.ts +1 -1
  28. package/lib/cjs/locale/source/tr_TR.js +2 -2
  29. package/lib/cjs/navigation/Item.d.ts +4 -1
  30. package/lib/cjs/navigation/Item.js +18 -5
  31. package/lib/cjs/navigation/index.d.ts +7 -1
  32. package/lib/cjs/navigation/index.js +4 -2
  33. package/lib/cjs/navigation/nav-context.d.ts +1 -0
  34. package/lib/cjs/rating/index.d.ts +1 -1
  35. package/lib/cjs/rating/item.d.ts +1 -1
  36. package/lib/cjs/switch/index.d.ts +1 -1
  37. package/lib/cjs/table/Body/index.js +2 -2
  38. package/lib/cjs/table/Table.d.ts +2 -2
  39. package/lib/cjs/table/Table.js +3 -2
  40. package/lib/cjs/table/index.d.ts +1 -1
  41. package/lib/cjs/tabs/TabPane.js +4 -3
  42. package/lib/cjs/tabs/interface.d.ts +1 -0
  43. package/lib/cjs/tagInput/index.d.ts +2 -2
  44. package/lib/cjs/tagInput/index.js +6 -4
  45. package/lib/cjs/timePicker/TimePicker.d.ts +1 -1
  46. package/lib/cjs/timePicker/index.d.ts +1 -1
  47. package/lib/cjs/transfer/index.d.ts +1 -0
  48. package/lib/cjs/transfer/index.js +7 -1
  49. package/lib/es/anchor/index.d.ts +1 -1
  50. package/lib/es/autoComplete/index.d.ts +1 -1
  51. package/lib/es/button/Button.d.ts +1 -1
  52. package/lib/es/button/buttonGroup.d.ts +1 -1
  53. package/lib/es/button/index.d.ts +1 -1
  54. package/lib/es/datePicker/datePicker.d.ts +1 -1
  55. package/lib/es/form/baseForm.d.ts +5 -5
  56. package/lib/es/form/errorMessage.d.ts +2 -1
  57. package/lib/es/form/field.d.ts +1 -1
  58. package/lib/es/form/hooks/useFormState.d.ts +2 -1
  59. package/lib/es/form/interface.d.ts +15 -15
  60. package/lib/es/image/image.js +11 -0
  61. package/lib/es/image/interface.d.ts +1 -1
  62. package/lib/es/image/preview.d.ts +1 -1
  63. package/lib/es/image/preview.js +2 -2
  64. package/lib/es/image/previewImage.d.ts +1 -1
  65. package/lib/es/image/previewImage.js +1 -1
  66. package/lib/es/image/previewInner.d.ts +1 -1
  67. package/lib/es/image/previewInner.js +13 -5
  68. package/lib/es/input/index.d.ts +1 -1
  69. package/lib/es/input/inputGroup.d.ts +1 -1
  70. package/lib/es/locale/source/tr_TR.js +2 -2
  71. package/lib/es/navigation/Item.d.ts +4 -1
  72. package/lib/es/navigation/Item.js +18 -5
  73. package/lib/es/navigation/index.d.ts +7 -1
  74. package/lib/es/navigation/index.js +4 -2
  75. package/lib/es/navigation/nav-context.d.ts +1 -0
  76. package/lib/es/rating/index.d.ts +1 -1
  77. package/lib/es/rating/item.d.ts +1 -1
  78. package/lib/es/switch/index.d.ts +1 -1
  79. package/lib/es/table/Body/index.js +3 -3
  80. package/lib/es/table/Table.d.ts +2 -2
  81. package/lib/es/table/Table.js +3 -2
  82. package/lib/es/table/index.d.ts +1 -1
  83. package/lib/es/tabs/TabPane.js +4 -3
  84. package/lib/es/tabs/interface.d.ts +1 -0
  85. package/lib/es/tagInput/index.d.ts +2 -2
  86. package/lib/es/tagInput/index.js +6 -4
  87. package/lib/es/timePicker/TimePicker.d.ts +1 -1
  88. package/lib/es/timePicker/index.d.ts +1 -1
  89. package/lib/es/transfer/index.d.ts +1 -0
  90. package/lib/es/transfer/index.js +7 -1
  91. package/package.json +7 -7
@@ -37,7 +37,7 @@ export interface TagInputProps {
37
37
  insetLabel?: React.ReactNode;
38
38
  insetLabelId?: string;
39
39
  prefix?: React.ReactNode;
40
- renderTagItem?: (value: string, index: number) => React.ReactNode;
40
+ renderTagItem?: (value: string, index: number, onClose: () => void) => React.ReactNode;
41
41
  separator?: string | string[] | null;
42
42
  showClear?: boolean;
43
43
  size?: Size;
@@ -89,7 +89,7 @@ declare class TagInput extends BaseComponent<TagInputProps, TagInputState> {
89
89
  onAdd: PropTypes.Requireable<(...args: any[]) => any>;
90
90
  onRemove: PropTypes.Requireable<(...args: any[]) => any>;
91
91
  onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
92
- size: PropTypes.Requireable<"default" | "small" | "large">;
92
+ size: PropTypes.Requireable<"small" | "default" | "large">;
93
93
  validateStatus: PropTypes.Requireable<"default" | "error" | "warning" | "success">;
94
94
  prefix: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
95
95
  suffix: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
@@ -152,20 +152,22 @@ class TagInput extends _baseComponent.default {
152
152
  return tagsArray.map((value, index) => {
153
153
  const elementKey = showIconHandler ? value : "".concat(index).concat(value);
154
154
 
155
+ const onClose = () => {
156
+ !disabled && this.handleTagClose(index);
157
+ };
158
+
155
159
  if ((0, _isFunction2.default)(renderTagItem)) {
156
160
  return showIconHandler ? /*#__PURE__*/_react.default.createElement("div", {
157
161
  className: itemWrapperCls,
158
162
  key: elementKey
159
- }, /*#__PURE__*/_react.default.createElement(DragHandle, null), renderTagItem(value, index)) : renderTagItem(value, index);
163
+ }, /*#__PURE__*/_react.default.createElement(DragHandle, null), renderTagItem(value, index, onClose)) : renderTagItem(value, index, onClose);
160
164
  } else {
161
165
  return /*#__PURE__*/_react.default.createElement(_tag.default, {
162
166
  className: tagCls,
163
167
  color: "white",
164
168
  size: size === 'small' ? 'small' : 'large',
165
169
  type: "light",
166
- onClose: () => {
167
- !disabled && this.handleTagClose(index);
168
- },
170
+ onClose: onClose,
169
171
  closable: !disabled,
170
172
  key: elementKey,
171
173
  visible: true,
@@ -125,7 +125,7 @@ export default class TimePicker extends BaseComponent<TimePickerProps, TimePicke
125
125
  secondStep: PropTypes.Requireable<number>;
126
126
  focusOnOpen: PropTypes.Requireable<boolean>;
127
127
  autoFocus: PropTypes.Requireable<boolean>;
128
- size: PropTypes.Requireable<"default" | "small" | "large">;
128
+ size: PropTypes.Requireable<"small" | "default" | "large">;
129
129
  panels: PropTypes.Requireable<PropTypes.InferProps<{
130
130
  panelHeader: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
131
131
  panelFooter: PropTypes.Requireable<NonNullable<PropTypes.ReactNodeLike>>;
@@ -46,7 +46,7 @@ export default class LocaleTimePicker extends React.PureComponent<LocalePickerPr
46
46
  secondStep: import("prop-types").Requireable<number>;
47
47
  focusOnOpen: import("prop-types").Requireable<boolean>;
48
48
  autoFocus: import("prop-types").Requireable<boolean>;
49
- size: import("prop-types").Requireable<"default" | "small" | "large">;
49
+ size: import("prop-types").Requireable<"small" | "default" | "large">;
50
50
  panels: import("prop-types").Requireable<import("prop-types").InferProps<{
51
51
  panelHeader: import("prop-types").Requireable<NonNullable<import("prop-types").ReactNodeLike>>;
52
52
  panelFooter: import("prop-types").Requireable<NonNullable<import("prop-types").ReactNodeLike>>;
@@ -152,6 +152,7 @@ declare class Transfer extends BaseComponent<TransferProps, TransferState> {
152
152
  static getDerivedStateFromProps(props: TransferProps, state: TransferState): TransferState;
153
153
  get adapter(): TransferAdapter<TransferProps, TransferState>;
154
154
  onInputChange(value: string): void;
155
+ search(value: string): void;
155
156
  onSelectOrRemove(item: ResolvedDataItem): void;
156
157
  onSortEnd(callbackProps: OnSortEndProps): void;
157
158
  renderFilter(locale: Locale['Transfer']): JSX.Element;
@@ -155,7 +155,13 @@ class Transfer extends _baseComponent.default {
155
155
  }
156
156
 
157
157
  onInputChange(value) {
158
- this.foundation.handleInputChange(value);
158
+ this.foundation.handleInputChange(value, true);
159
+ }
160
+
161
+ search(value) {
162
+ // The search method is used to provide the user with a manually triggered search
163
+ // Since the method is manually called by the user, setting the second parameter to false does not trigger the onSearch callback to notify the user
164
+ this.foundation.handleInputChange(value, false);
159
165
  }
160
166
 
161
167
  onSelectOrRemove(item) {
@@ -39,7 +39,7 @@ declare class Anchor extends BaseComponent<AnchorProps, AnchorState> {
39
39
  static contextType: React.Context<ContextValue>;
40
40
  static Link: typeof Link;
41
41
  static PropTypes: {
42
- size: PropTypes.Requireable<"default" | "small">;
42
+ size: PropTypes.Requireable<"small" | "default">;
43
43
  railTheme: PropTypes.Requireable<"primary" | "tertiary" | "muted">;
44
44
  className: PropTypes.Requireable<string>;
45
45
  style: PropTypes.Requireable<object>;
@@ -123,7 +123,7 @@ declare class AutoComplete<T extends AutoCompleteItems> extends BaseComponent<Au
123
123
  renderSelectedItem: PropTypes.Requireable<(...args: any[]) => any>;
124
124
  suffix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
125
125
  showClear: PropTypes.Requireable<boolean>;
126
- size: PropTypes.Requireable<"default" | "small" | "large">;
126
+ size: PropTypes.Requireable<"small" | "default" | "large">;
127
127
  style: PropTypes.Requireable<object>;
128
128
  stopPropagation: PropTypes.Requireable<NonNullable<string | boolean>>;
129
129
  maxHeight: PropTypes.Requireable<NonNullable<string | number>>;
@@ -47,7 +47,7 @@ export default class Button extends PureComponent<ButtonProps> {
47
47
  disabled: PropTypes.Requireable<boolean>;
48
48
  prefixCls: PropTypes.Requireable<string>;
49
49
  style: PropTypes.Requireable<object>;
50
- size: PropTypes.Requireable<"default" | "small" | "large">;
50
+ size: PropTypes.Requireable<"small" | "default" | "large">;
51
51
  type: PropTypes.Requireable<"warning" | "primary" | "tertiary" | "secondary" | "danger">;
52
52
  block: PropTypes.Requireable<boolean>;
53
53
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
@@ -18,7 +18,7 @@ export default class ButtonGroup extends BaseComponent<ButtonGroupProps> {
18
18
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
19
19
  disabled: PropTypes.Requireable<boolean>;
20
20
  type: PropTypes.Requireable<string>;
21
- size: PropTypes.Requireable<"default" | "small" | "large">;
21
+ size: PropTypes.Requireable<"small" | "default" | "large">;
22
22
  theme: PropTypes.Requireable<"solid" | "light" | "borderless">;
23
23
  'aria-label': PropTypes.Requireable<string>;
24
24
  };
@@ -22,7 +22,7 @@ declare class Button extends React.PureComponent<ButtonProps> {
22
22
  onMouseEnter: import("prop-types").Requireable<(...args: any[]) => any>;
23
23
  onMouseLeave: import("prop-types").Requireable<(...args: any[]) => any>;
24
24
  disabled: import("prop-types").Requireable<boolean>;
25
- size: import("prop-types").Requireable<"default" | "small" | "large">;
25
+ size: import("prop-types").Requireable<"small" | "default" | "large">;
26
26
  type: import("prop-types").Requireable<"warning" | "primary" | "tertiary" | "secondary" | "danger">;
27
27
  block: import("prop-types").Requireable<boolean>;
28
28
  onClick: import("prop-types").Requireable<(...args: any[]) => any>;
@@ -44,7 +44,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
44
44
  'aria-labelledby': PropTypes.Requireable<string>;
45
45
  'aria-required': PropTypes.Requireable<boolean>;
46
46
  type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
47
- size: PropTypes.Requireable<"default" | "small" | "large">;
47
+ size: PropTypes.Requireable<"small" | "default" | "large">;
48
48
  density: PropTypes.Requireable<"default" | "compact">;
49
49
  defaultValue: PropTypes.Requireable<NonNullable<string | number | object>>;
50
50
  value: PropTypes.Requireable<NonNullable<string | number | object>>;
@@ -11,7 +11,7 @@ import { BaseFormProps, FormApi } from './interface';
11
11
  interface BaseFormState {
12
12
  formId: string;
13
13
  }
14
- declare class Form extends BaseComponent<BaseFormProps, BaseFormState> {
14
+ declare class Form<Values extends Record<string, any> = any> extends BaseComponent<BaseFormProps<Values>, BaseFormState> {
15
15
  static propTypes: {
16
16
  'aria-label': PropTypes.Requireable<string>;
17
17
  onSubmit: PropTypes.Requireable<(...args: any[]) => any>;
@@ -128,7 +128,7 @@ declare class Form extends BaseComponent<BaseFormProps, BaseFormState> {
128
128
  preventScroll?: boolean;
129
129
  showRestTagsPopover?: boolean;
130
130
  restTagsPopoverProps?: import("../popover").PopoverProps;
131
- } & Pick<import("../tooltip").TooltipProps, "stopPropagation" | "motion" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & React.RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
131
+ } & Pick<import("../tooltip").TooltipProps, "motion" | "stopPropagation" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & React.RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
132
132
  static Checkbox: React.ComponentType<import("utility-types").Subtract<import("./interface").CommonFieldProps, import("./interface").RadioCheckboxExcludeProps> & import("../checkbox").CheckboxProps & import("./interface").RCIncludeType>;
133
133
  static CheckboxGroup: React.ComponentType<import("utility-types").Subtract<import("../checkbox").CheckboxGroupProps, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & React.RefAttributes<any>>;
134
134
  static Radio: React.ComponentType<import("utility-types").Subtract<import("./interface").CommonFieldProps, import("./interface").RadioCheckboxExcludeProps> & import("../radio").RadioProps & import("./interface").RCIncludeType>;
@@ -148,11 +148,11 @@ declare class Form extends BaseComponent<BaseFormProps, BaseFormState> {
148
148
  static InputGroup: typeof FormInputGroup;
149
149
  static Label: typeof Label;
150
150
  static Section: typeof Section;
151
- formApi: FormApi;
152
- constructor(props: BaseFormProps);
151
+ formApi: FormApi<Values>;
152
+ constructor(props: BaseFormProps<Values>);
153
153
  componentDidMount(): void;
154
154
  componentWillUnmount(): void;
155
- get adapter(): BaseFormAdapter<BaseFormProps, BaseFormState>;
155
+ get adapter(): BaseFormAdapter<BaseFormProps<Values>, BaseFormState, Values>;
156
156
  get content(): React.ReactNode;
157
157
  submit(e: React.FormEvent<HTMLFormElement>): void;
158
158
  reset(e: React.FormEvent<HTMLFormElement>): void;
@@ -1,6 +1,7 @@
1
1
  import React, { PureComponent } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- export declare type ReactFieldError = Array<any> | React.ReactNode;
3
+ import type { BasicFieldError } from '@douyinfe/semi-foundation/lib/es/form/interface';
4
+ export declare type ReactFieldError = BasicFieldError | React.ReactNode;
4
5
  export interface ErrorMessageProps {
5
6
  error?: ReactFieldError;
6
7
  className?: string;
@@ -76,7 +76,7 @@ declare const FormSelect: import("react").ComponentType<import("utility-types").
76
76
  preventScroll?: boolean;
77
77
  showRestTagsPopover?: boolean;
78
78
  restTagsPopoverProps?: import("../popover").PopoverProps;
79
- } & Pick<import("../tooltip").TooltipProps, "stopPropagation" | "motion" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & import("react").RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
79
+ } & Pick<import("../tooltip").TooltipProps, "motion" | "stopPropagation" | "getPopupContainer" | "spacing" | "mouseEnterDelay" | "autoAdjustOverflow" | "mouseLeaveDelay"> & import("react").RefAttributes<any> & import("./interface").CommonFieldProps, import("./interface").CommonexcludeType>> & import("./interface").SelectStatic;
80
80
  declare const FormCheckboxGroup: import("react").ComponentType<import("utility-types").Subtract<import("../checkbox/checkboxGroup").CheckboxGroupProps, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & import("react").RefAttributes<any>>;
81
81
  declare const FormCheckbox: import("react").ComponentType<import("utility-types").Subtract<import("./interface").CommonFieldProps, import("./interface").RadioCheckboxExcludeProps> & import("../checkbox/checkbox").CheckboxProps & import("./interface").RCIncludeType>;
82
82
  declare const FormRadioGroup: import("react").ComponentType<import("utility-types").Subtract<import("../radio/radioGroup").RadioGroupProps, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps & import("react").RefAttributes<any>>;
@@ -1,2 +1,3 @@
1
- declare function useFormState(): import("@douyinfe/semi-foundation/lib/es/form/interface").FormState<any>;
1
+ import { FormState } from '@douyinfe/semi-foundation/lib/es/form/interface';
2
+ declare function useFormState<T extends Record<string, any> = any>(): FormState<T>;
2
3
  export default useFormState;
@@ -1,16 +1,16 @@
1
1
  import * as React from 'react';
2
2
  import { Subtract } from 'utility-types';
3
3
  import type { RuleItem } from 'async-validator';
4
- import { Options as scrollIntoViewOptions } from 'scroll-into-view-if-needed';
5
- import { BaseFormApi as FormApi, FormState, WithFieldOption } from '@douyinfe/semi-foundation/lib/es/form/interface';
6
- import { SelectProps } from '../select/index';
4
+ import type { Options as scrollIntoViewOptions } from 'scroll-into-view-if-needed';
5
+ import type { BaseFormApi as FormApi, FormState, WithFieldOption, AllErrors } from '@douyinfe/semi-foundation/lib/es/form/interface';
6
+ import type { SelectProps } from '../select/index';
7
7
  import Option from '../select/option';
8
8
  import OptGroup from '../select/optionGroup';
9
- import { CheckboxProps } from '../checkbox/index';
10
- import { RadioProps } from '../radio/index';
9
+ import type { CheckboxProps } from '../checkbox/index';
10
+ import type { RadioProps } from '../radio/index';
11
11
  import { ReactFieldError as FieldError } from './errorMessage';
12
- import { LabelProps } from './label';
13
- export { FormState, FormApi, WithFieldOption, RuleItem };
12
+ import type { LabelProps } from './label';
13
+ export type { FormState, FormApi, WithFieldOption, RuleItem };
14
14
  export declare type CommonFieldProps = {
15
15
  /** Field is required (except Form. Checkbox within the Group, Form. Radio) */
16
16
  field: string;
@@ -81,19 +81,19 @@ export interface FormFCChild<K extends Record<string, any> = any> {
81
81
  values: K;
82
82
  formApi: FormApi<K>;
83
83
  }
84
- export interface BaseFormProps extends Omit<React.FormHTMLAttributes<HTMLFormElement>, 'children' | 'onChange'> {
84
+ export interface BaseFormProps<Values extends Record<string, any> = any> extends Omit<React.FormHTMLAttributes<HTMLFormElement>, 'children' | 'onChange' | 'onSubmit' | 'onReset'> {
85
85
  'aria-label'?: React.AriaAttributes['aria-label'];
86
- onSubmit?: (values: Record<string, any>) => void;
87
- onSubmitFail?: (errors: Record<string, FieldError>, values: any) => void;
86
+ onSubmit?: (values: Values) => void;
87
+ onSubmitFail?: (errors: Record<keyof Values, FieldError>, values: Partial<Values>) => void;
88
88
  onReset?: () => void;
89
- onValueChange?: (values: Record<string, any>, changedValue: Record<string, any>) => void;
90
- onChange?: (formState: FormState) => void;
91
- validateFields?: (values: Record<string, any>) => string | Record<string, any>;
89
+ onValueChange?: (values: Values, changedValue: Partial<Values>) => void;
90
+ onChange?: (formState: FormState<Values>) => void;
91
+ validateFields?: (values: Values) => string | Partial<AllErrors<Values>>;
92
92
  /** Use this if you want to populate the form with initial values. */
93
- initValues?: Record<string, any>;
93
+ initValues?: Values;
94
94
  id?: string;
95
95
  /** getFormApi will be call once when Form mounted, u can save formApi reference in your component */
96
- getFormApi?: (formApi: FormApi) => void;
96
+ getFormApi?: (formApi: FormApi<Values>) => void;
97
97
  style?: React.CSSProperties;
98
98
  className?: string;
99
99
  layout?: 'horizontal' | 'vertical';
@@ -1,4 +1,5 @@
1
1
  import _isObject from "lodash/isObject";
2
+ import _isBoolean from "lodash/isBoolean";
2
3
 
3
4
  /* eslint-disable jsx-a11y/click-events-have-key-events */
4
5
 
@@ -131,6 +132,16 @@ export default class Image extends BaseComponent {
131
132
  willUpdateStates.loadStatus = "loading";
132
133
  }
133
134
 
135
+ if (_isObject(props.preview)) {
136
+ const {
137
+ visible
138
+ } = props.preview;
139
+
140
+ if (_isBoolean(visible)) {
141
+ willUpdateStates.previewVisible = visible;
142
+ }
143
+ }
144
+
134
145
  return willUpdateStates;
135
146
  }
136
147
 
@@ -60,7 +60,7 @@ export interface PreviewProps extends BaseProps {
60
60
  onPrev?: (index: number) => void;
61
61
  onNext?: (index: number) => void;
62
62
  onRatioChange?: (type: RatioType) => void;
63
- onRotateChange?: (angle: number) => void;
63
+ onRotateLeft?: (angle: number) => void;
64
64
  onDownload?: (src: string, index: number) => void;
65
65
  }
66
66
  export interface MenuProps {
@@ -44,8 +44,8 @@ export default class Preview extends BaseComponent<PreviewProps, PreviewState> {
44
44
  onPrev: PropTypes.Requireable<(...args: any[]) => any>;
45
45
  onNext: PropTypes.Requireable<(...args: any[]) => any>;
46
46
  onDownload: PropTypes.Requireable<(...args: any[]) => any>;
47
+ onRotateLeft: PropTypes.Requireable<(...args: any[]) => any>;
47
48
  onRatioChange: PropTypes.Requireable<(...args: any[]) => any>;
48
- onRotateChange: PropTypes.Requireable<(...args: any[]) => any>;
49
49
  };
50
50
  static defaultProps: {
51
51
  src: any[];
@@ -220,8 +220,8 @@ Preview.propTypes = {
220
220
  onPrev: PropTypes.func,
221
221
  onNext: PropTypes.func,
222
222
  onDownload: PropTypes.func,
223
- onRatioChange: PropTypes.func,
224
- onRotateChange: PropTypes.func
223
+ onRotateLeft: PropTypes.func,
224
+ onRatioChange: PropTypes.func
225
225
  };
226
226
  Preview.defaultProps = {
227
227
  src: [],
@@ -13,7 +13,7 @@ export default class PreviewImage extends BaseComponent<PreviewImageProps, Previ
13
13
  zoomStep: PropTypes.Requireable<number>;
14
14
  zoom: PropTypes.Requireable<number>;
15
15
  ratio: PropTypes.Requireable<string>;
16
- disableDownload: PropTypes.Requireable<number>;
16
+ disableDownload: PropTypes.Requireable<boolean>;
17
17
  clickZoom: PropTypes.Requireable<number>;
18
18
  setRatio: PropTypes.Requireable<(...args: any[]) => any>;
19
19
  onZoom: PropTypes.Requireable<(...args: any[]) => any>;
@@ -223,7 +223,7 @@ PreviewImage.propTypes = {
223
223
  zoomStep: PropTypes.number,
224
224
  zoom: PropTypes.number,
225
225
  ratio: PropTypes.string,
226
- disableDownload: PropTypes.number,
226
+ disableDownload: PropTypes.bool,
227
227
  clickZoom: PropTypes.number,
228
228
  setRatio: PropTypes.func,
229
229
  onZoom: PropTypes.func,
@@ -45,7 +45,7 @@ export default class PreviewInner extends BaseComponent<PreviewInnerProps, Previ
45
45
  onNext: PropTypes.Requireable<(...args: any[]) => any>;
46
46
  onDownload: PropTypes.Requireable<(...args: any[]) => any>;
47
47
  onRatioChange: PropTypes.Requireable<(...args: any[]) => any>;
48
- onRotateChange: PropTypes.Requireable<(...args: any[]) => any>;
48
+ onRotateLeft: PropTypes.Requireable<(...args: any[]) => any>;
49
49
  };
50
50
  static defaultProps: {
51
51
  showTooltip: boolean;
@@ -105,11 +105,19 @@ export default class PreviewInner extends BaseComponent {
105
105
  get adapter() {
106
106
  return Object.assign(Object.assign({}, super.adapter), {
107
107
  getIsInGroup: () => this.isInGroup(),
108
- notifyChange: index => {
108
+ notifyChange: (index, direction) => {
109
109
  const {
110
- onChange
110
+ onChange,
111
+ onPrev,
112
+ onNext
111
113
  } = this.props;
112
114
  _isFunction(onChange) && onChange(index);
115
+
116
+ if (direction === "prev") {
117
+ onPrev && onPrev(index);
118
+ } else {
119
+ onNext && onNext(index);
120
+ }
113
121
  },
114
122
  notifyZoom: (zoom, increase) => {
115
123
  const {
@@ -143,9 +151,9 @@ export default class PreviewInner extends BaseComponent {
143
151
  },
144
152
  notifyRotateChange: angle => {
145
153
  const {
146
- onRotateChange
154
+ onRotateLeft
147
155
  } = this.props;
148
- _isFunction(onRotateChange) && onRotateChange(angle);
156
+ _isFunction(onRotateLeft) && onRotateLeft(angle);
149
157
  },
150
158
  notifyDownload: (src, index) => {
151
159
  const {
@@ -403,7 +411,7 @@ PreviewInner.propTypes = {
403
411
  onNext: PropTypes.func,
404
412
  onDownload: PropTypes.func,
405
413
  onRatioChange: PropTypes.func,
406
- onRotateChange: PropTypes.func
414
+ onRotateLeft: PropTypes.func
407
415
  };
408
416
  PreviewInner.defaultProps = {
409
417
  showTooltip: false,
@@ -82,7 +82,7 @@ declare class Input extends BaseComponent<InputProps, InputState> {
82
82
  showClear: PropTypes.Requireable<boolean>;
83
83
  hideSuffix: PropTypes.Requireable<boolean>;
84
84
  placeholder: PropTypes.Requireable<any>;
85
- size: PropTypes.Requireable<"default" | "small" | "large">;
85
+ size: PropTypes.Requireable<"small" | "default" | "large">;
86
86
  className: PropTypes.Requireable<string>;
87
87
  style: PropTypes.Requireable<object>;
88
88
  validateStatus: PropTypes.Requireable<"default" | "error" | "warning" | "success">;
@@ -21,7 +21,7 @@ export default class inputGroup extends BaseComponent<InputGroupProps, InputGrou
21
21
  static propTypes: {
22
22
  className: PropTypes.Requireable<string>;
23
23
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
24
- size: PropTypes.Requireable<"default" | "small" | "large">;
24
+ size: PropTypes.Requireable<"small" | "default" | "large">;
25
25
  style: PropTypes.Requireable<object>;
26
26
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
27
27
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
@@ -80,8 +80,8 @@ const local = {
80
80
  Wed: 'Çar',
81
81
  Thu: 'Perş',
82
82
  Fri: 'Cum',
83
- Sat: 'Oturdu',
84
- Sun: 'Güneş'
83
+ Sat: 'Cmt',
84
+ Sun: 'Paz'
85
85
  },
86
86
  localeFormatToken: {
87
87
  FORMAT_SWITCH_DATE: 'yyyy-MM-dd'
@@ -12,6 +12,7 @@ export interface NavItemProps extends ItemProps, BaseProps {
12
12
  level?: number;
13
13
  link?: string;
14
14
  linkOptions?: React.AnchorHTMLAttributes<HTMLAnchorElement>;
15
+ tabIndex?: number;
15
16
  text?: React.ReactNode;
16
17
  tooltipHideDelay?: number;
17
18
  tooltipShowDelay?: number;
@@ -45,6 +46,7 @@ export default class NavItem extends BaseComponent<NavItemProps, NavItemState> {
45
46
  link: PropTypes.Requireable<string>;
46
47
  linkOptions: PropTypes.Requireable<object>;
47
48
  disabled: PropTypes.Requireable<boolean>;
49
+ tabIndex: PropTypes.Requireable<number>;
48
50
  };
49
51
  static defaultProps: {
50
52
  isSubNav: boolean;
@@ -55,6 +57,7 @@ export default class NavItem extends BaseComponent<NavItemProps, NavItemState> {
55
57
  onMouseEnter: (...args: any[]) => void;
56
58
  onMouseLeave: (...args: any[]) => void;
57
59
  disabled: boolean;
60
+ tabIndex: number;
58
61
  };
59
62
  foundation: ItemFoundation;
60
63
  context: NavContextType;
@@ -66,5 +69,5 @@ export default class NavItem extends BaseComponent<NavItemProps, NavItemState> {
66
69
  wrapTooltip: (node: React.ReactNode) => JSX.Element;
67
70
  handleClick: (e: React.MouseEvent) => void;
68
71
  handleKeyPress: (e: React.KeyboardEvent) => void;
69
- render(): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
72
+ render(): React.ReactNode;
70
73
  }
@@ -148,7 +148,8 @@ export default class NavItem extends BaseComponent {
148
148
  link,
149
149
  linkOptions,
150
150
  disabled,
151
- level = 0
151
+ level = 0,
152
+ tabIndex
152
153
  } = this.props;
153
154
  const {
154
155
  mode,
@@ -211,7 +212,8 @@ export default class NavItem extends BaseComponent {
211
212
  ["".concat(clsPrefix, "-sub")]: isSubNav,
212
213
  ["".concat(clsPrefix, "-selected")]: selected && !isSubNav,
213
214
  ["".concat(clsPrefix, "-collapsed")]: isCollapsed,
214
- ["".concat(clsPrefix, "-disabled")]: disabled
215
+ ["".concat(clsPrefix, "-disabled")]: disabled,
216
+ ["".concat(clsPrefix, "-has-link")]: typeof link === 'string'
215
217
  });
216
218
  const ariaProps = {
217
219
  'aria-disabled': disabled
@@ -228,7 +230,7 @@ export default class NavItem extends BaseComponent {
228
230
  React.createElement("li", Object.assign({
229
231
  // if role = menuitem, the narration will read all expanded li
230
232
  role: isSubNav ? null : "menuitem",
231
- tabIndex: isSubNav ? -1 : 0
233
+ tabIndex: isSubNav ? -1 : tabIndex
232
234
  }, ariaProps, {
233
235
  style: style,
234
236
  ref: this.setItemRef,
@@ -245,6 +247,15 @@ export default class NavItem extends BaseComponent {
245
247
  itemDom = this.wrapTooltip(itemDom);
246
248
  }
247
249
 
250
+ if (typeof this.context.renderWrapper === 'function') {
251
+ return this.context.renderWrapper({
252
+ itemElement: itemDom,
253
+ isSubNav: isSubNav,
254
+ isInSubNav: isInSubNav,
255
+ props: this.props
256
+ });
257
+ }
258
+
248
259
  return itemDom;
249
260
  }
250
261
 
@@ -267,7 +278,8 @@ NavItem.propTypes = {
267
278
  isSubNav: PropTypes.bool,
268
279
  link: PropTypes.string,
269
280
  linkOptions: PropTypes.object,
270
- disabled: PropTypes.bool
281
+ disabled: PropTypes.bool,
282
+ tabIndex: PropTypes.number
271
283
  };
272
284
  NavItem.defaultProps = {
273
285
  isSubNav: false,
@@ -277,5 +289,6 @@ NavItem.defaultProps = {
277
289
  onClick: _noop,
278
290
  onMouseEnter: _noop,
279
291
  onMouseLeave: _noop,
280
- disabled: false
292
+ disabled: false,
293
+ tabIndex: 0
281
294
  };
@@ -1,5 +1,5 @@
1
1
  import BaseComponent, { BaseProps } from '../_base/baseComponent';
2
- import React from 'react';
2
+ import React, { ReactElement, ReactNode } from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { NavigationAdapter } from '@douyinfe/semi-foundation/lib/es/navigation/foundation';
5
5
  import SubNav, { SubNavProps } from './SubNav';
@@ -63,6 +63,12 @@ export interface NavProps extends BaseProps {
63
63
  isOpen: boolean;
64
64
  }) => void;
65
65
  onSelect?: (data: OnSelectedData) => void;
66
+ renderWrapper?: ({ itemElement, isSubNav, isInSubNav, props }: {
67
+ itemElement: ReactElement;
68
+ isInSubNav: boolean;
69
+ isSubNav: boolean;
70
+ props: NavItemProps | SubNavProps;
71
+ }) => ReactNode;
66
72
  }
67
73
  export interface NavState {
68
74
  isCollapsed: boolean;
@@ -205,7 +205,8 @@ class Nav extends BaseComponent {
205
205
  footer,
206
206
  header,
207
207
  toggleIconPosition,
208
- limitIndent
208
+ limitIndent,
209
+ renderWrapper
209
210
  } = this.props;
210
211
  const {
211
212
  selectedKeys,
@@ -310,7 +311,8 @@ class Nav extends BaseComponent {
310
311
  locale,
311
312
  prefixCls,
312
313
  toggleIconPosition,
313
- limitIndent
314
+ limitIndent,
315
+ renderWrapper
314
316
  }
315
317
  }, /*#__PURE__*/React.createElement("div", {
316
318
  className: finalCls,
@@ -18,6 +18,7 @@ export interface NavContextType {
18
18
  subNavCloseDelay?: NavProps['subNavCloseDelay'];
19
19
  subNavOpenDelay?: NavProps['subNavOpenDelay'];
20
20
  canUpdateOpenKeys?: boolean;
21
+ renderWrapper?: NavProps['renderWrapper'];
21
22
  }
22
23
  declare const NavContext: React.Context<NavContextType>;
23
24
  export default NavContext;
@@ -69,7 +69,7 @@ export default class Rating extends BaseComponent<RatingProps, RatingState> {
69
69
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
70
70
  onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
71
71
  autoFocus: PropTypes.Requireable<boolean>;
72
- size: PropTypes.Requireable<NonNullable<number | "default" | "small">>;
72
+ size: PropTypes.Requireable<NonNullable<number | "small" | "default">>;
73
73
  tooltips: PropTypes.Requireable<string[]>;
74
74
  id: PropTypes.Requireable<string>;
75
75
  preventScroll: PropTypes.Requireable<boolean>;
@@ -40,7 +40,7 @@ export default class Item extends BaseComponent<RatingItemProps, RatingItemState
40
40
  disabled: PropTypes.Requireable<boolean>;
41
41
  count: PropTypes.Requireable<number>;
42
42
  ariaLabelPrefix: PropTypes.Requireable<string>;
43
- size: PropTypes.Requireable<NonNullable<number | "default" | "small">>;
43
+ size: PropTypes.Requireable<NonNullable<number | "small" | "default">>;
44
44
  'aria-describedby': PropTypes.Requireable<string>;
45
45
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
46
46
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
@@ -45,7 +45,7 @@ declare class Switch extends BaseComponent<SwitchProps, SwitchState> {
45
45
  onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
46
46
  onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
47
47
  style: PropTypes.Requireable<object>;
48
- size: PropTypes.Requireable<"default" | "small" | "large">;
48
+ size: PropTypes.Requireable<"small" | "default" | "large">;
49
49
  uncheckedText: PropTypes.Requireable<PropTypes.ReactNodeLike>;
50
50
  id: PropTypes.Requireable<string>;
51
51
  };