Skip to content

Commit 82ef3d5

Browse files
committed
feat(ui): popup components support dInitialVisible
1 parent 8a4505d commit 82ef3d5

File tree

11 files changed

+33
-11
lines changed

11 files changed

+33
-11
lines changed

packages/ui/src/components/auto-complete/AutoComplete.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export interface DAutoCompleteItem {
3131
export interface DAutoCompleteProps<T extends DAutoCompleteItem> extends React.HTMLAttributes<HTMLDivElement> {
3232
dList: T[];
3333
dVisible?: boolean;
34+
dInitialVisible?: boolean;
3435
dLoading?: boolean;
3536
dVirtual?: boolean;
3637
dCustomItem?: (item: T) => React.ReactNode;
@@ -49,6 +50,7 @@ function AutoComplete<T extends DAutoCompleteItem>(
4950
children,
5051
dList,
5152
dVisible,
53+
dInitialVisible = false,
5254
dLoading = false,
5355
dVirtual = false,
5456
dCustomItem,
@@ -89,7 +91,7 @@ function AutoComplete<T extends DAutoCompleteItem>(
8991

9092
const canSelectItem = useCallback((item: T) => !item.disabled && !item.children, []);
9193

92-
const [visible, changeVisible] = useDValue<boolean>(false, dVisible, onVisibleChange);
94+
const [visible, changeVisible] = useDValue<boolean>(dInitialVisible, dVisible, onVisibleChange);
9395

9496
const [focusVisible, setFocusVisible] = useState(false);
9597

packages/ui/src/components/cascader/Cascader.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export interface DCascaderProps<V extends DId, T extends DCascaderItem<V>> exten
4949
dList: T[];
5050
dModel?: V | null | V[];
5151
dVisible?: boolean;
52+
dInitialVisible?: boolean;
5253
dPlaceholder?: string;
5354
dSize?: DSize;
5455
dLoading?: boolean;
@@ -86,6 +87,7 @@ function Cascader<V extends DId, T extends DCascaderItem<V>>(
8687
dList,
8788
dModel,
8889
dVisible,
90+
dInitialVisible = false,
8991
dPlaceholder,
9092
dSize,
9193
dLoading = false,
@@ -163,7 +165,7 @@ function Cascader<V extends DId, T extends DCascaderItem<V>>(
163165

164166
const [searchValue, changeSearchValue] = useDValue<string>('', dSearchValue, onSearchValueChange);
165167

166-
const [visible, changeVisible] = useDValue<boolean>(false, dVisible, onVisibleChange);
168+
const [visible, changeVisible] = useDValue<boolean>(dInitialVisible, dVisible, onVisibleChange);
167169
const formControlInject = useFormControl(dFormControl);
168170
const [_select, changeSelect] = useDValue<V | null | V[]>(
169171
dMultiple ? [] : null,

packages/ui/src/components/date-picker/DatePicker.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export interface DDatePickerProps extends Omit<React.HTMLAttributes<HTMLDivEleme
2929
dModel?: Date | null | [Date, Date];
3030
dFormat?: string;
3131
dVisible?: boolean;
32+
dInitialVisible?: boolean;
3233
dPlacement?: 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-left' | 'bottom-right';
3334
dOrder?: 'ascend' | 'descend' | false;
3435
dPlaceholder?: string | [string?, string?];
@@ -58,6 +59,7 @@ function DatePicker(props: DDatePickerProps, ref: React.ForwardedRef<DDateInputR
5859
dModel,
5960
dFormat,
6061
dVisible,
62+
dInitialVisible = false,
6163
dPlacement = 'bottom-left',
6264
dOrder = 'ascend',
6365
dPlaceholder,
@@ -90,7 +92,7 @@ function DatePicker(props: DDatePickerProps, ref: React.ForwardedRef<DDateInputR
9092

9193
const [t] = useTranslation();
9294

93-
const [visible, changeVisible] = useDValue<boolean>(false, dVisible, onVisibleChange);
95+
const [visible, changeVisible] = useDValue<boolean>(dInitialVisible, dVisible, onVisibleChange);
9496

9597
const size = dSize ?? gSize;
9698
const disabled = (dDisabled || gDisabled || dFormControl?.control.disabled) ?? false;

packages/ui/src/components/drawer/Drawer.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { DDrawerHeader } from './DrawerHeader';
2020

2121
export interface DDrawerProps extends React.HTMLAttributes<HTMLDivElement> {
2222
dVisible: boolean;
23+
dInitialVisible?: boolean;
2324
dContainer?: DRefExtra | false;
2425
dPlacement?: 'top' | 'right' | 'bottom' | 'left';
2526
dWidth?: number | string;
@@ -51,6 +52,7 @@ export const DDrawer: {
5152
const {
5253
children,
5354
dVisible,
55+
dInitialVisible = false,
5456
dContainer,
5557
dPlacement = 'right',
5658
dWidth = 400,
@@ -127,7 +129,7 @@ export const DDrawer: {
127129
: `translateX(${(distance[dPlacement] / 3) * 2}px)`,
128130
};
129131

130-
const [visible, changeVisible] = useDValue<boolean>(false, dVisible, onClose);
132+
const [visible, changeVisible] = useDValue<boolean>(dInitialVisible, dVisible, onClose);
131133

132134
const isFixed = isUndefined(dContainer);
133135

packages/ui/src/components/dropdown/Dropdown.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export interface DDropdownProps<ID extends DId, T extends DDropdownItem<ID>>
3939
children: React.ReactElement;
4040
dList: T[];
4141
dVisible?: boolean;
42+
dInitialVisible?: boolean;
4243
dPlacement?: 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-left' | 'bottom-right';
4344
dTrigger?: 'hover' | 'click';
4445
dArrow?: boolean;
@@ -57,6 +58,7 @@ function Dropdown<ID extends DId, T extends DDropdownItem<ID>>(
5758
children,
5859
dList,
5960
dVisible,
61+
dInitialVisible = false,
6062
dPlacement = 'bottom-right',
6163
dTrigger = 'hover',
6264
dArrow = false,
@@ -157,7 +159,7 @@ function Dropdown<ID extends DId, T extends DDropdownItem<ID>>(
157159
setFocusIds(ids);
158160
};
159161

160-
const [visible, _changeVisible] = useDValue<boolean>(false, dVisible, onVisibleChange);
162+
const [visible, _changeVisible] = useDValue<boolean>(dInitialVisible, dVisible, onVisibleChange);
161163
const changeVisible = (visible: boolean) => {
162164
if (!visible) {
163165
setPopupIds([]);

packages/ui/src/components/modal/Modal.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { DModalHeader } from './ModalHeader';
1919

2020
export interface DModalProps extends React.HTMLAttributes<HTMLDivElement> {
2121
dVisible: boolean;
22+
dInitialVisible?: boolean;
2223
dWidth?: number | string;
2324
dTop?: number | string;
2425
dZIndex?: number | string;
@@ -48,6 +49,7 @@ export const DModal: {
4849
const {
4950
children,
5051
dVisible,
52+
dInitialVisible = false,
5153
dWidth = 520,
5254
dTop = 100,
5355
dZIndex,
@@ -96,7 +98,7 @@ export const DModal: {
9698

9799
const topStyle = dTop + (isNumber(dTop) ? 'px' : '');
98100

99-
const [visible, changeVisible] = useDValue<boolean>(false, dVisible, onClose);
101+
const [visible, changeVisible] = useDValue<boolean>(dInitialVisible, dVisible, onClose);
100102

101103
const maxZIndex = useMaxIndex(visible);
102104
const zIndex = (() => {

packages/ui/src/components/popover/Popover.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export interface DPopoverRef {
2626
export interface DPopoverProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
2727
children: React.ReactElement;
2828
dVisible?: boolean;
29+
dInitialVisible?: boolean;
2930
dTrigger?: 'hover' | 'click';
3031
dContainer?: DRefExtra | false;
3132
dPlacement?: DPopupPlacement;
@@ -51,6 +52,7 @@ function Popover(props: DPopoverProps, ref: React.ForwardedRef<DPopoverRef>): JS
5152
const {
5253
children,
5354
dVisible,
55+
dInitialVisible = false,
5456
dTrigger = 'hover',
5557
dContainer,
5658
dPlacement = 'top',
@@ -112,7 +114,7 @@ function Popover(props: DPopoverProps, ref: React.ForwardedRef<DPopoverRef>): JS
112114
const titleId = `${dPrefix}popover-title-${uniqueId}`;
113115
const bodyId = `${dPrefix}popover-content-${uniqueId}`;
114116

115-
const [visible, changeVisible] = useDValue<boolean>(false, dVisible, onVisibleChange);
117+
const [visible, changeVisible] = useDValue<boolean>(dInitialVisible, dVisible, onVisibleChange);
116118

117119
const maxZIndex = useMaxIndex(visible);
118120
const zIndex = (() => {

packages/ui/src/components/select/Select.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export interface DSelectProps<V extends DId, T extends DSelectItem<V>> extends O
4343
dList: T[];
4444
dModel?: V | null | V[];
4545
dVisible?: boolean;
46+
dInitialVisible?: boolean;
4647
dPlaceholder?: string;
4748
dSize?: DSize;
4849
dLoading?: boolean;
@@ -82,6 +83,7 @@ function Select<V extends DId, T extends DSelectItem<V>>(
8283
dList,
8384
dModel,
8485
dVisible,
86+
dInitialVisible = false,
8587
dPlaceholder,
8688
dSize,
8789
dLoading = false,
@@ -147,7 +149,7 @@ function Select<V extends DId, T extends DSelectItem<V>>(
147149

148150
const [focusVisible, setFocusVisible] = useState(false);
149151

150-
const [visible, changeVisible] = useDValue<boolean>(false, dVisible, onVisibleChange);
152+
const [visible, changeVisible] = useDValue<boolean>(dInitialVisible, dVisible, onVisibleChange);
151153
const formControlInject = useFormControl(dFormControl);
152154
const [_select, changeSelect] = useDValue<V | null | V[]>(
153155
dMultiple ? [] : null,

packages/ui/src/components/time-picker/TimePicker.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export interface DTimePickerProps extends Omit<React.HTMLAttributes<HTMLDivEleme
2828
dModel?: Date | null | [Date, Date];
2929
dFormat?: string;
3030
dVisible?: boolean;
31+
dInitialVisible?: boolean;
3132
dPlacement?: 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-left' | 'bottom-right';
3233
dOrder?: 'ascend' | 'descend' | false;
3334
dPlaceholder?: string | [string?, string?];
@@ -61,6 +62,7 @@ function TimePicker(props: DTimePickerProps, ref: React.ForwardedRef<DTimePicker
6162
dModel,
6263
dFormat,
6364
dVisible,
65+
dInitialVisible = false,
6466
dPlacement = 'bottom-left',
6567
dOrder = 'ascend',
6668
dPlaceholder,
@@ -91,7 +93,7 @@ function TimePicker(props: DTimePickerProps, ref: React.ForwardedRef<DTimePicker
9193

9294
const [t] = useTranslation();
9395

94-
const [visible, changeVisible] = useDValue<boolean>(false, dVisible, onVisibleChange);
96+
const [visible, changeVisible] = useDValue<boolean>(dInitialVisible, dVisible, onVisibleChange);
9597

9698
const size = dSize ?? gSize;
9799
const disabled = (dDisabled || gDisabled || dFormControl?.control.disabled) ?? false;

packages/ui/src/components/tooltip/Tooltip.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export interface DTooltipRef {
2222
export interface DTooltipProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
2323
children: React.ReactElement;
2424
dVisible?: boolean;
25+
dInitialVisible?: boolean;
2526
dTrigger?: 'hover' | 'click';
2627
dContainer?: DRefExtra | false;
2728
dPlacement?: DPopupPlacement;
@@ -43,6 +44,7 @@ function Tooltip(props: DTooltipProps, ref: React.ForwardedRef<DTooltipRef>): JS
4344
const {
4445
children,
4546
dVisible,
47+
dInitialVisible = false,
4648
dTrigger = 'hover',
4749
dContainer,
4850
dPlacement = 'top',
@@ -91,7 +93,7 @@ function Tooltip(props: DTooltipProps, ref: React.ForwardedRef<DTooltipRef>): JS
9193
const uniqueId = useId();
9294
const id = restProps.id ?? `${dPrefix}tooltip-${uniqueId}`;
9395

94-
const [visible, changeVisible] = useDValue<boolean>(false, dVisible, onVisibleChange);
96+
const [visible, changeVisible] = useDValue<boolean>(dInitialVisible, dVisible, onVisibleChange);
9597

9698
const maxZIndex = useMaxIndex(visible);
9799
const zIndex = (() => {

0 commit comments

Comments
 (0)