部件
@cloud-ru/ds-uikit-product-widget -=YTET -伊甸园字幕组=- 翻译:.
Widget - контейнер продуктовой: TitleClickable в,опциональный也 SegmentControl、 слот 、 массив Button, kebab/drop list) * * 体 * * * * default 编号 : loading 编号 : error。 。 。 .
Когда
- {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}=======================================================================================================================================================================================================================================.
- {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
InfoBlock{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢. - +++++:主页 ++ (宽桌面),相接的 ++ kebab, ++ 版式 – ++ 页脚.
Когда не нужен Widget数字 :
-
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
- используйте
@cloud-ru/ds-blockили@cloud-ru/ds-card。 。 。 .
- используйте
-
说吧
- используйте
TitleClickable。 。 。 .
- используйте
-
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
- (原始内容存档于2017-10-12). qq数据-qq, qq qq qq qq qq qq.
-
✅
errorState.onClickUpdateи иstateобратно вdefault重试. -
❌
state='error'{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}请说InfoBlock{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢. -
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
wide, 初级 \ \ \ \. -
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}好吧 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}好吧 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}好吧 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得怎么样
wideпринудительно. -
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * ** ** ** ** ** ** *
PortalContextProvider说吧 说吧. -
-=YTET -伊甸园字幕组=- 翻译:
client:visible- островок изолирован. -
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
hidden: true{\fn黑体\fs20\shad2\2ah82\3ah20\4ah33\fscx95\3ch592001\be1}你觉得怎么样. -
===================================================================================================================================================================================
actions\ \ \ \ \ \children- 。 。 。 。 .
Анатомия
状态( 默认) default(中文(简体) )
Состояние WIDGET_STATE数字 :
default. . . . .children{\fn华文楷体\fs16\1che0e0e0}身体停止.loading- 骨架 \; 身体 -loadingState.loadingContent{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}骨架 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢loadingState.showSkeleton。 。 。 .error—— 说InfoBlockсerrorStateи иonClickUpdate页:1actions{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}请重新尝试一下 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}.
宽( 默认) false(中文(简体) )
false——遗产布局:外出-====================================================================================error) (中文(简体) ).true- 初级的 \ kebab \ \ \ \ \ \ \ \ \SegmentControl编号 :actionsChildren。 。 。 .
行动变式
Элемент actions[i] 受歧视的工会 variant (默认——已填充) Button:
filled编号 :outline编号 :tonal编号 :function编号 :simple. . . . .@cloud-ru/ds-button+tooltip。 。 。 .kebab—— 说ButtonKebab+ 键list.items(группы.droplist- ++++++++++++++.
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 Droplist из @cloud-ru/ds-list: \ 手机\ \ \ \ \ \ \ \ \ \ \ \ BottomSheet, 桌面 —— popover' 。 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 AdaptiveProvider。 。 。 .
校对:Soup hidden, (中文(简体) ), tooltip. Для: closeDroplistOnItemClick控件 open 编号 : onOpenChange。 。 。 .
槽数
header. . . . .TitleClickable数字 :title, (中文(简体) ),href, (中文(简体) ),icon, (中文(简体) ),avatar, (中文(简体) ),onClick,, , , , , , , ,children{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}身体吗.segmentControl. . . . .SegmentControl\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\width: full(原始内容存档于2017-09-29). qq桌面.actionsChildren. . . . . . . . . .loadingState编号 :errorState- 。 。 。 。 .
Установка
pnpm add @cloud-ru/ds-uikit-product-widget
import { Widget, BUTTON_TYPE, WIDGET_STATE } from '@cloud-ru/ds-uikit-product-widget'
Примеры
&% 分区控制
未控制 QQ 默认值
import { WIDTH } from '@cloud-ru/ds-segment-control';
import { Widget } from '@cloud-ru/ds-uikit-product-widget';
export function DefaultContent() {
return (
<Widget
header={{ title: 'Cloud servers', href: '#' }}
segmentControl={{
width: WIDTH.Full,
defaultValue: 'overview',
items: [
{ value: 'overview', label: 'Overview' },
{ value: 'events', label: 'Events' },
],
}}
>
Keep product metrics, shortcuts, and status details in one compact card.
</Widget>
);
}
宽桌面 {}
初等 QQ , 超额 kebab ; 门户网站 Context 提供 QQ 下拉
import { WIDTH } from '@cloud-ru/ds-segment-control';
import { BUTTON_TYPE, Widget } from '@cloud-ru/ds-uikit-product-widget';
import { useState } from 'react';
export function WithActions() {
const [lastAction, setLastAction] = useState<string | null>(null);
return (
<div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>
<Widget
wide
header={{ title: 'Managed databases', href: '#' }}
segmentControl={{
width: WIDTH.Auto,
defaultValue: 'overview',
items: [
{ value: 'overview', label: 'Overview' },
{ value: 'events', label: 'Events' },
],
}}
actions={[
{ label: 'Create', onClick: () => setLastAction('Create') },
{
variant: BUTTON_TYPE.Outline,
label: 'Settings',
onClick: () => setLastAction('Settings'),
},
{
variant: BUTTON_TYPE.Kebab,
list: {
items: [
{ content: { label: 'Export' }, onClick: () => setLastAction('Export') },
{ content: { label: 'Archive' }, onClick: () => setLastAction('Archive') },
],
},
},
]}
>
Actions are shown in the header for wide desktop widgets.
</Widget>
{lastAction ? <span>Last action: {lastAction}</span> : null}
</div>
);
}
正在装入
import { Widget } from '@cloud-ru/ds-uikit-product-widget';
export function LoadingState() {
return (
<Widget
header={{ title: 'Billing', href: '#' }}
state='loading'
loadingState={{ showSkeleton: true }}
actions={[{ label: 'Refresh' }]}
>
Billing summary
</Widget>
);
}
错误 {}
在点击 Update 时, 状态 {}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
import { Widget } from '@cloud-ru/ds-uikit-product-widget';
import { useState } from 'react';
export function ErrorState() {
const [state, setState] = useState<'default' | 'error'>('error');
return (
<Widget
header={{ title: 'Monitoring', href: '#' }}
state={state}
errorState={{
errorTitle: 'Metrics are unavailable',
errorDescription: 'Try reloading the widget.',
updateButtonLabel: 'Reload',
onClickUpdate: () => setState('default'),
}}
>
{state === 'error' ? 'Metrics' : 'Metrics loaded successfully.'}
</Widget>
);
}
道具
部件方案
| Prop | 类型 | 默认 | 说明 |
|---|---|---|---|
actions | Action | BaseAction | ButtonDroplistProps | ButtonKebabProps | —— 说 | {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢. |
actionsChildren | ReactNode | —— 说 | {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢. |
children | ReactNode | —— 说 | Контент. |
className | string | —— 说 | (原始内容存档于2018-09-29). CSS-класс. |
data-test-id | string | —— 说 | |
errorState | WidgetErrorStateProps | —— 说 | 错误. |
header | WidgetHeaderProps | —— 说 | Пропсы. |
loadingState | WidgetLoadingStateProps | —— 说 | 装入 装入. |
segmentControl | SegmentControlProps | —— 说 | QQ 分节控制 QQ . |
state | "default" | "error" | "loading" | —— 说 | Состояние. |
wide | boolean | —— 说 | [永久失效連結] 腾讯网. 手机 手机 手机wide && !isMobile) (中文(简体) ). |
相关类型
Action=:ButtonAction | OutlineAction | TonalAction | FunctionAction | SimpleAction | KebabAction | DroplistAction
基础行动
| Prop | 类型 | 默认 | 说明 |
|---|---|---|---|
hidden | boolean | undefined | —— 说 | Скрыть. |
tooltip | TooltipProps | —— 说 | {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}Tolotip... |
按键Droplist 程序
| Prop | 类型 | 默认 | 说明 |
|---|---|---|---|
button | ButtonProps | —— 说 | |
list | WidgetActionListProps | —— 说 |
按钮Kebab 可能性
| Prop | 类型 | 默认 | 说明 |
|---|---|---|---|
button | ButtonProps | —— 说 | |
list | WidgetActionListProps | —— 说 |
部件动作列表
| Prop | 类型 | 默认 | 说明 |
|---|---|---|---|
className | string | undefined | —— 说 | |
closeDroplistOnItemClick | boolean | undefined | —— 说 | |
items | WidgetActionListEntry | WidgetActionListGroup | WidgetActionListItem | —— 说 | |
onOpenChange | ((open: boolean) => void) | undefined | —— 说 | |
open | boolean | undefined | —— 说 |
部件错误状态Props
| Prop | 类型 | 默认 | 说明 |
|---|---|---|---|
errorDescription | string | undefined | —— 说 | Описание. |
errorIcon | IconPredefinedProps | —— 说 | QQ InfoBlock. (原始内容存档于2018-09-29). |
errorTitle | string | undefined | —— 说 | Заголовок. |
onClickUpdate | (event: MouseEvent<HTMLElement, MouseEvent>) => void | —— 说 | {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢. |
updateButtonLabel | string | undefined | —— 说 | Текст. |
部件页眉Props
| Prop | 类型 | 默认 | 说明 |
|---|---|---|---|
children | string | number | boolean | ReactElement<any, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | null | undefined | —— 说 | |
className | string | undefined | —— 说 | CSS - класс. |
data-test-id | string | undefined | —— 说 | |
href | string | —— 说 | |
icon | string | number | boolean | ReactElement<any, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | null | undefined | —— 说 | (原始内容存档于2019-10-12). QQ, 24×24. |
title | string | —— 说 | Текст. |
titleTag | ElementType | undefined | —— 说 | Семантический. |
部件连接状态
| Prop | 类型 | 默认 | 说明 |
|---|---|---|---|
loadingContent | string | number | boolean | ReactElement<any, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | null | undefined | —— 说 | {\fn华文仿宋\fs16\1cHD1D1D1}好. |
showSkeleton | boolean | undefined | —— 说 | {\fn黑体\fs20\shad2\2aH82\3aH20\4aH33\fscx95\3cH592001\be1}骨架 {\fn黑体\fs20\shad2\2aH82\3aH20\4aH33\fscx95\3cH592001\be1}骨架... |
WidgetState=:"default"|"error"|"loading"
Смотри
TitleClickable{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢.SegmentControl{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢.InfoBlockблок ошибкиstate='error'。 。 。 .
Адаптивность
Widget -=YTET -伊甸园字幕组=- 翻译: {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 AdaptiveProvider 页:1 @cloud-ru/ds-adaptiveAPI :
- 桌面 (по
wide{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢. - 移动 —— режим:
wide{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}请说出什么来.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ************************ <AdaptiveProvider> [永久失效連結] (中文(简体) ). Пропа layoutType у:источник也.
移动布局
宽 qq, 主页脚
import { AdaptiveProvider, LAYOUT_TYPE } from '@cloud-ru/ds-adaptive';
import { BUTTON_TYPE, Widget } from '@cloud-ru/ds-uikit-product-widget';
import { useState } from 'react';
export function MobileLayout() {
const [lastAction, setLastAction] = useState<string | null>(null);
return (
<AdaptiveProvider layoutType={LAYOUT_TYPE.Mobile}>
<div style={{ maxWidth: 360, display: 'flex', flexDirection: 'column', gap: 8 }}>
<Widget
wide
header={{ title: 'Object storage', href: '#' }}
actions={[
{ label: 'Upload', onClick: () => setLastAction('Upload') },
{
variant: BUTTON_TYPE.Kebab,
list: {
items: [
{
content: { label: 'Delete bucket' },
onClick: () => setLastAction('Delete bucket'),
},
],
},
},
]}
>
On mobile, wide is ignored: primary actions move to the footer, overflow goes to kebab.
</Widget>
{lastAction ? <span>Last action: {lastAction}</span> : null}
</div>
</AdaptiveProvider>
);
}
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
- Форс,не:
- Поддерево:
import { AdaptiveProvider } from '@cloud-ru/ds-adaptive' <AdaptiveProvider layoutType='mobile'> <Widget header={header} actions={actions}>{content}</Widget> </AdaptiveProvider> - – Отдельный –
withLayoutType(模块-镜, сахар:import { withLayoutType } from '@cloud-ru/ds-adaptive' import { Widget } from '@cloud-ru/ds-uikit-product-widget' const MobileWidget = withLayoutType(Widget, 'mobile')
Платформенные
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 WidgetProps。 。 。 .
| Проп | 桌面 | 移动 |
|---|---|---|
wide | используется | игнорируется (принудительно) |
Подробнее модели- Адаптивность-паттерн。 。 。 .