diff --git a/packages/ui/src/components/auto-complete/AutoComplete.tsx b/packages/ui/src/components/auto-complete/AutoComplete.tsx index 677f3e3f..4fcd0755 100644 --- a/packages/ui/src/components/auto-complete/AutoComplete.tsx +++ b/packages/ui/src/components/auto-complete/AutoComplete.tsx @@ -31,6 +31,7 @@ export interface DAutoCompleteItem { export interface DAutoCompleteProps extends React.HTMLAttributes { dList: T[]; dVisible?: boolean; + dInitialVisible?: boolean; dLoading?: boolean; dVirtual?: boolean; dCustomItem?: (item: T) => React.ReactNode; @@ -49,6 +50,7 @@ function AutoComplete( children, dList, dVisible, + dInitialVisible = false, dLoading = false, dVirtual = false, dCustomItem, @@ -89,7 +91,7 @@ function AutoComplete( const canSelectItem = useCallback((item: T) => !item.disabled && !item.children, []); - const [visible, changeVisible] = useDValue(false, dVisible, onVisibleChange); + const [visible, changeVisible] = useDValue(dInitialVisible, dVisible, onVisibleChange); const [focusVisible, setFocusVisible] = useState(false); diff --git a/packages/ui/src/components/cascader/Cascader.tsx b/packages/ui/src/components/cascader/Cascader.tsx index cf9863de..9534a83c 100644 --- a/packages/ui/src/components/cascader/Cascader.tsx +++ b/packages/ui/src/components/cascader/Cascader.tsx @@ -49,6 +49,7 @@ export interface DCascaderProps> exten dList: T[]; dModel?: V | null | V[]; dVisible?: boolean; + dInitialVisible?: boolean; dPlaceholder?: string; dSize?: DSize; dLoading?: boolean; @@ -86,6 +87,7 @@ function Cascader>( dList, dModel, dVisible, + dInitialVisible = false, dPlaceholder, dSize, dLoading = false, @@ -163,7 +165,7 @@ function Cascader>( const [searchValue, changeSearchValue] = useDValue('', dSearchValue, onSearchValueChange); - const [visible, changeVisible] = useDValue(false, dVisible, onVisibleChange); + const [visible, changeVisible] = useDValue(dInitialVisible, dVisible, onVisibleChange); const formControlInject = useFormControl(dFormControl); const [_select, changeSelect] = useDValue( dMultiple ? [] : null, diff --git a/packages/ui/src/components/date-picker/DatePicker.tsx b/packages/ui/src/components/date-picker/DatePicker.tsx index 6b7987ff..21780869 100644 --- a/packages/ui/src/components/date-picker/DatePicker.tsx +++ b/packages/ui/src/components/date-picker/DatePicker.tsx @@ -29,6 +29,7 @@ export interface DDatePickerProps extends Omit(false, dVisible, onVisibleChange); + const [visible, changeVisible] = useDValue(dInitialVisible, dVisible, onVisibleChange); const size = dSize ?? gSize; const disabled = (dDisabled || gDisabled || dFormControl?.control.disabled) ?? false; diff --git a/packages/ui/src/components/drawer/Drawer.tsx b/packages/ui/src/components/drawer/Drawer.tsx index 03c79e44..c0fda985 100644 --- a/packages/ui/src/components/drawer/Drawer.tsx +++ b/packages/ui/src/components/drawer/Drawer.tsx @@ -20,6 +20,7 @@ import { DDrawerHeader } from './DrawerHeader'; export interface DDrawerProps extends React.HTMLAttributes { dVisible: boolean; + dInitialVisible?: boolean; dContainer?: DRefExtra | false; dPlacement?: 'top' | 'right' | 'bottom' | 'left'; dWidth?: number | string; @@ -51,6 +52,7 @@ export const DDrawer: { const { children, dVisible, + dInitialVisible = false, dContainer, dPlacement = 'right', dWidth = 400, @@ -127,7 +129,7 @@ export const DDrawer: { : `translateX(${(distance[dPlacement] / 3) * 2}px)`, }; - const [visible, changeVisible] = useDValue(false, dVisible, onClose); + const [visible, changeVisible] = useDValue(dInitialVisible, dVisible, onClose); const isFixed = isUndefined(dContainer); diff --git a/packages/ui/src/components/dropdown/Dropdown.tsx b/packages/ui/src/components/dropdown/Dropdown.tsx index 58d42522..a8328422 100644 --- a/packages/ui/src/components/dropdown/Dropdown.tsx +++ b/packages/ui/src/components/dropdown/Dropdown.tsx @@ -39,6 +39,7 @@ export interface DDropdownProps> children: React.ReactElement; dList: T[]; dVisible?: boolean; + dInitialVisible?: boolean; dPlacement?: 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-left' | 'bottom-right'; dTrigger?: 'hover' | 'click'; dArrow?: boolean; @@ -57,6 +58,7 @@ function Dropdown>( children, dList, dVisible, + dInitialVisible = false, dPlacement = 'bottom-right', dTrigger = 'hover', dArrow = false, @@ -157,7 +159,7 @@ function Dropdown>( setFocusIds(ids); }; - const [visible, _changeVisible] = useDValue(false, dVisible, onVisibleChange); + const [visible, _changeVisible] = useDValue(dInitialVisible, dVisible, onVisibleChange); const changeVisible = (visible: boolean) => { if (!visible) { setPopupIds([]); diff --git a/packages/ui/src/components/modal/Modal.tsx b/packages/ui/src/components/modal/Modal.tsx index c0b96949..6161713a 100644 --- a/packages/ui/src/components/modal/Modal.tsx +++ b/packages/ui/src/components/modal/Modal.tsx @@ -19,6 +19,7 @@ import { DModalHeader } from './ModalHeader'; export interface DModalProps extends React.HTMLAttributes { dVisible: boolean; + dInitialVisible?: boolean; dWidth?: number | string; dTop?: number | string; dZIndex?: number | string; @@ -48,6 +49,7 @@ export const DModal: { const { children, dVisible, + dInitialVisible = false, dWidth = 520, dTop = 100, dZIndex, @@ -96,7 +98,7 @@ export const DModal: { const topStyle = dTop + (isNumber(dTop) ? 'px' : ''); - const [visible, changeVisible] = useDValue(false, dVisible, onClose); + const [visible, changeVisible] = useDValue(dInitialVisible, dVisible, onClose); const maxZIndex = useMaxIndex(visible); const zIndex = (() => { diff --git a/packages/ui/src/components/popover/Popover.tsx b/packages/ui/src/components/popover/Popover.tsx index 13337462..5b8b5ddb 100644 --- a/packages/ui/src/components/popover/Popover.tsx +++ b/packages/ui/src/components/popover/Popover.tsx @@ -26,6 +26,7 @@ export interface DPopoverRef { export interface DPopoverProps extends Omit, 'children'> { children: React.ReactElement; dVisible?: boolean; + dInitialVisible?: boolean; dTrigger?: 'hover' | 'click'; dContainer?: DRefExtra | false; dPlacement?: DPopupPlacement; @@ -51,6 +52,7 @@ function Popover(props: DPopoverProps, ref: React.ForwardedRef): JS const { children, dVisible, + dInitialVisible = false, dTrigger = 'hover', dContainer, dPlacement = 'top', @@ -112,7 +114,7 @@ function Popover(props: DPopoverProps, ref: React.ForwardedRef): JS const titleId = `${dPrefix}popover-title-${uniqueId}`; const bodyId = `${dPrefix}popover-content-${uniqueId}`; - const [visible, changeVisible] = useDValue(false, dVisible, onVisibleChange); + const [visible, changeVisible] = useDValue(dInitialVisible, dVisible, onVisibleChange); const maxZIndex = useMaxIndex(visible); const zIndex = (() => { diff --git a/packages/ui/src/components/select/Select.tsx b/packages/ui/src/components/select/Select.tsx index 1107a314..d6384632 100644 --- a/packages/ui/src/components/select/Select.tsx +++ b/packages/ui/src/components/select/Select.tsx @@ -43,6 +43,7 @@ export interface DSelectProps> extends O dList: T[]; dModel?: V | null | V[]; dVisible?: boolean; + dInitialVisible?: boolean; dPlaceholder?: string; dSize?: DSize; dLoading?: boolean; @@ -82,6 +83,7 @@ function Select>( dList, dModel, dVisible, + dInitialVisible = false, dPlaceholder, dSize, dLoading = false, @@ -147,7 +149,7 @@ function Select>( const [focusVisible, setFocusVisible] = useState(false); - const [visible, changeVisible] = useDValue(false, dVisible, onVisibleChange); + const [visible, changeVisible] = useDValue(dInitialVisible, dVisible, onVisibleChange); const formControlInject = useFormControl(dFormControl); const [_select, changeSelect] = useDValue( dMultiple ? [] : null, diff --git a/packages/ui/src/components/time-picker/TimePicker.tsx b/packages/ui/src/components/time-picker/TimePicker.tsx index c074824f..5fdb6521 100644 --- a/packages/ui/src/components/time-picker/TimePicker.tsx +++ b/packages/ui/src/components/time-picker/TimePicker.tsx @@ -28,6 +28,7 @@ export interface DTimePickerProps extends Omit(false, dVisible, onVisibleChange); + const [visible, changeVisible] = useDValue(dInitialVisible, dVisible, onVisibleChange); const size = dSize ?? gSize; const disabled = (dDisabled || gDisabled || dFormControl?.control.disabled) ?? false; diff --git a/packages/ui/src/components/tooltip/Tooltip.tsx b/packages/ui/src/components/tooltip/Tooltip.tsx index 3a1a1125..17a0d822 100644 --- a/packages/ui/src/components/tooltip/Tooltip.tsx +++ b/packages/ui/src/components/tooltip/Tooltip.tsx @@ -22,6 +22,7 @@ export interface DTooltipRef { export interface DTooltipProps extends Omit, 'children'> { children: React.ReactElement; dVisible?: boolean; + dInitialVisible?: boolean; dTrigger?: 'hover' | 'click'; dContainer?: DRefExtra | false; dPlacement?: DPopupPlacement; @@ -43,6 +44,7 @@ function Tooltip(props: DTooltipProps, ref: React.ForwardedRef): JS const { children, dVisible, + dInitialVisible = false, dTrigger = 'hover', dContainer, dPlacement = 'top', @@ -91,7 +93,7 @@ function Tooltip(props: DTooltipProps, ref: React.ForwardedRef): JS const uniqueId = useId(); const id = restProps.id ?? `${dPrefix}tooltip-${uniqueId}`; - const [visible, changeVisible] = useDValue(false, dVisible, onVisibleChange); + const [visible, changeVisible] = useDValue(dInitialVisible, dVisible, onVisibleChange); const maxZIndex = useMaxIndex(visible); const zIndex = (() => { diff --git a/packages/ui/src/components/tree-select/TreeSelect.tsx b/packages/ui/src/components/tree-select/TreeSelect.tsx index b1c1e578..0f7757ae 100644 --- a/packages/ui/src/components/tree-select/TreeSelect.tsx +++ b/packages/ui/src/components/tree-select/TreeSelect.tsx @@ -41,6 +41,7 @@ export interface DTreeSelectProps> extends dModel?: V | null | V[]; dExpands?: V[]; dVisible?: boolean; + dInitialVisible?: boolean; dPlaceholder?: string; dSize?: DSize; dLoading?: boolean; @@ -81,6 +82,7 @@ function TreeSelect>( dModel, dExpands, dVisible, + dInitialVisible = false, dPlaceholder, dSize, dLoading = false, @@ -134,7 +136,7 @@ function TreeSelect>( const [searchValue, changeSearchValue] = useDValue('', dSearchValue, onSearchValueChange); - const [visible, changeVisible] = useDValue(false, dVisible, onVisibleChange); + const [visible, changeVisible] = useDValue(dInitialVisible, dVisible, onVisibleChange); const renderNodes = useMemo[]>( () =>