dsh-plugin-core 0.32.0 → 0.33.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.
- package/dist/adv/explorer/FileBrowser.d.ts +58 -0
- package/dist/adv/explorer/FileBrowser.d.ts.map +1 -0
- package/dist/adv/explorer/FileBrowser.js +632 -0
- package/dist/adv/explorer/FileBrowser.js.map +1 -0
- package/dist/adv/explorer/crumb-nav.d.ts +45 -0
- package/dist/adv/explorer/crumb-nav.d.ts.map +1 -0
- package/dist/adv/explorer/crumb-nav.js +78 -0
- package/dist/adv/explorer/crumb-nav.js.map +1 -0
- package/dist/adv/explorer/crumbs-menu.d.ts +37 -0
- package/dist/adv/explorer/crumbs-menu.d.ts.map +1 -0
- package/dist/adv/explorer/crumbs-menu.js +102 -0
- package/dist/adv/explorer/crumbs-menu.js.map +1 -0
- package/dist/adv/explorer/explorer-css.d.ts +2 -0
- package/dist/adv/explorer/explorer-css.d.ts.map +1 -0
- package/dist/adv/explorer/explorer-css.generated.d.ts +2 -0
- package/dist/adv/explorer/explorer-css.generated.d.ts.map +1 -0
- package/dist/adv/explorer/explorer-css.generated.js +4 -0
- package/dist/adv/explorer/explorer-css.generated.js.map +1 -0
- package/dist/adv/explorer/explorer-css.js +3 -0
- package/dist/adv/explorer/explorer-css.js.map +1 -0
- package/dist/adv/explorer/fs-face.d.ts +36 -0
- package/dist/adv/explorer/fs-face.d.ts.map +1 -0
- package/dist/adv/explorer/fs-face.js +74 -0
- package/dist/adv/explorer/fs-face.js.map +1 -0
- package/dist/adv/explorer/index.d.ts +6 -0
- package/dist/adv/explorer/index.d.ts.map +1 -0
- package/dist/adv/explorer/index.js +6 -0
- package/dist/adv/explorer/index.js.map +1 -0
- package/dist/adv/explorer/landing.d.ts +26 -0
- package/dist/adv/explorer/landing.d.ts.map +1 -0
- package/dist/adv/explorer/landing.js +43 -0
- package/dist/adv/explorer/landing.js.map +1 -0
- package/dist/adv/explorer/open.d.ts +137 -0
- package/dist/adv/explorer/open.d.ts.map +1 -0
- package/dist/adv/explorer/open.js +350 -0
- package/dist/adv/explorer/open.js.map +1 -0
- package/dist/adv/explorer/picker-placement.d.ts +69 -0
- package/dist/adv/explorer/picker-placement.d.ts.map +1 -0
- package/dist/adv/explorer/picker-placement.js +122 -0
- package/dist/adv/explorer/picker-placement.js.map +1 -0
- package/dist/adv/explorer/preview/BytesPreview.d.ts +12 -0
- package/dist/adv/explorer/preview/BytesPreview.d.ts.map +1 -0
- package/dist/adv/explorer/preview/BytesPreview.js +60 -0
- package/dist/adv/explorer/preview/BytesPreview.js.map +1 -0
- package/dist/adv/explorer/preview/HtmlPreview.d.ts +17 -0
- package/dist/adv/explorer/preview/HtmlPreview.d.ts.map +1 -0
- package/dist/adv/explorer/preview/HtmlPreview.js +113 -0
- package/dist/adv/explorer/preview/HtmlPreview.js.map +1 -0
- package/dist/adv/explorer/preview/OfficePreview.d.ts +12 -0
- package/dist/adv/explorer/preview/OfficePreview.d.ts.map +1 -0
- package/dist/adv/explorer/preview/OfficePreview.js +63 -0
- package/dist/adv/explorer/preview/OfficePreview.js.map +1 -0
- package/dist/adv/explorer/preview/TextPreview.d.ts +18 -0
- package/dist/adv/explorer/preview/TextPreview.d.ts.map +1 -0
- package/dist/adv/explorer/preview/TextPreview.js +122 -0
- package/dist/adv/explorer/preview/TextPreview.js.map +1 -0
- package/dist/adv/explorer/preview/index.d.ts +24 -0
- package/dist/adv/explorer/preview/index.d.ts.map +1 -0
- package/dist/adv/explorer/preview/index.js +58 -0
- package/dist/adv/explorer/preview/index.js.map +1 -0
- package/dist/adv/explorer/preview/md-labels.d.ts +3 -0
- package/dist/adv/explorer/preview/md-labels.d.ts.map +1 -0
- package/dist/adv/explorer/preview/md-labels.js +12 -0
- package/dist/adv/explorer/preview/md-labels.js.map +1 -0
- package/dist/adv/explorer/preview-title-bar.d.ts +26 -0
- package/dist/adv/explorer/preview-title-bar.d.ts.map +1 -0
- package/dist/adv/explorer/preview-title-bar.js +48 -0
- package/dist/adv/explorer/preview-title-bar.js.map +1 -0
- package/dist/adv/explorer/types.d.ts +259 -0
- package/dist/adv/explorer/types.d.ts.map +1 -0
- package/dist/adv/explorer/types.js +379 -0
- package/dist/adv/explorer/types.js.map +1 -0
- package/dist/adv/session/SessionViewModal.d.ts +37 -0
- package/dist/adv/session/SessionViewModal.d.ts.map +1 -0
- package/dist/adv/session/SessionViewModal.js +1133 -0
- package/dist/adv/session/SessionViewModal.js.map +1 -0
- package/dist/adv/session/changes.d.ts +73 -0
- package/dist/adv/session/changes.d.ts.map +1 -0
- package/dist/adv/session/changes.js +134 -0
- package/dist/adv/session/changes.js.map +1 -0
- package/dist/adv/session/faces.d.ts +244 -0
- package/dist/adv/session/faces.d.ts.map +1 -0
- package/dist/adv/session/faces.js +17 -0
- package/dist/adv/session/faces.js.map +1 -0
- package/dist/adv/session/index.d.ts +7 -0
- package/dist/adv/session/index.d.ts.map +1 -0
- package/dist/adv/session/index.js +27 -0
- package/dist/adv/session/index.js.map +1 -0
- package/dist/adv/session/mirror/AskCard.d.ts +35 -0
- package/dist/adv/session/mirror/AskCard.d.ts.map +1 -0
- package/dist/adv/session/mirror/AskCard.js +131 -0
- package/dist/adv/session/mirror/AskCard.js.map +1 -0
- package/dist/adv/session/mirror/BashRow.d.ts +14 -0
- package/dist/adv/session/mirror/BashRow.d.ts.map +1 -0
- package/dist/adv/session/mirror/BashRow.js +143 -0
- package/dist/adv/session/mirror/BashRow.js.map +1 -0
- package/dist/adv/session/mirror/ChangedFileDiff.d.ts +25 -0
- package/dist/adv/session/mirror/ChangedFileDiff.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChangedFileDiff.js +178 -0
- package/dist/adv/session/mirror/ChangedFileDiff.js.map +1 -0
- package/dist/adv/session/mirror/ChangedFilesCard.d.ts +18 -0
- package/dist/adv/session/mirror/ChangedFilesCard.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChangedFilesCard.js +165 -0
- package/dist/adv/session/mirror/ChangedFilesCard.js.map +1 -0
- package/dist/adv/session/mirror/ChatGroupSeat.d.ts +24 -0
- package/dist/adv/session/mirror/ChatGroupSeat.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChatGroupSeat.js +135 -0
- package/dist/adv/session/mirror/ChatGroupSeat.js.map +1 -0
- package/dist/adv/session/mirror/ChatNodeSeat.d.ts +43 -0
- package/dist/adv/session/mirror/ChatNodeSeat.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChatNodeSeat.js +133 -0
- package/dist/adv/session/mirror/ChatNodeSeat.js.map +1 -0
- package/dist/adv/session/mirror/ChatView.d.ts +47 -0
- package/dist/adv/session/mirror/ChatView.d.ts.map +1 -0
- package/dist/adv/session/mirror/ChatView.js +138 -0
- package/dist/adv/session/mirror/ChatView.js.map +1 -0
- package/dist/adv/session/mirror/CommandCard.d.ts +20 -0
- package/dist/adv/session/mirror/CommandCard.d.ts.map +1 -0
- package/dist/adv/session/mirror/CommandCard.js +69 -0
- package/dist/adv/session/mirror/CommandCard.js.map +1 -0
- package/dist/adv/session/mirror/ContextInjectionRow.d.ts +18 -0
- package/dist/adv/session/mirror/ContextInjectionRow.d.ts.map +1 -0
- package/dist/adv/session/mirror/ContextInjectionRow.js +50 -0
- package/dist/adv/session/mirror/ContextInjectionRow.js.map +1 -0
- package/dist/adv/session/mirror/Deliverables.d.ts +24 -0
- package/dist/adv/session/mirror/Deliverables.d.ts.map +1 -0
- package/dist/adv/session/mirror/Deliverables.js +175 -0
- package/dist/adv/session/mirror/Deliverables.js.map +1 -0
- package/dist/adv/session/mirror/GenericCommandCard.d.ts +136 -0
- package/dist/adv/session/mirror/GenericCommandCard.d.ts.map +1 -0
- package/dist/adv/session/mirror/GenericCommandCard.js +948 -0
- package/dist/adv/session/mirror/GenericCommandCard.js.map +1 -0
- package/dist/adv/session/mirror/MessageIconActions.d.ts +16 -0
- package/dist/adv/session/mirror/MessageIconActions.d.ts.map +1 -0
- package/dist/adv/session/mirror/MessageIconActions.js +69 -0
- package/dist/adv/session/mirror/MessageIconActions.js.map +1 -0
- package/dist/adv/session/mirror/MessageItem.d.ts +93 -0
- package/dist/adv/session/mirror/MessageItem.d.ts.map +1 -0
- package/dist/adv/session/mirror/MessageItem.js +194 -0
- package/dist/adv/session/mirror/MessageItem.js.map +1 -0
- package/dist/adv/session/mirror/ReasoningRow.d.ts +11 -0
- package/dist/adv/session/mirror/ReasoningRow.d.ts.map +1 -0
- package/dist/adv/session/mirror/ReasoningRow.js +111 -0
- package/dist/adv/session/mirror/ReasoningRow.js.map +1 -0
- package/dist/adv/session/mirror/RunningStatus.d.ts +12 -0
- package/dist/adv/session/mirror/RunningStatus.d.ts.map +1 -0
- package/dist/adv/session/mirror/RunningStatus.js +57 -0
- package/dist/adv/session/mirror/RunningStatus.js.map +1 -0
- package/dist/adv/session/mirror/StatDialog.d.ts +20 -0
- package/dist/adv/session/mirror/StatDialog.d.ts.map +1 -0
- package/dist/adv/session/mirror/StatDialog.js +49 -0
- package/dist/adv/session/mirror/StatDialog.js.map +1 -0
- package/dist/adv/session/mirror/ToolDetails.d.ts +65 -0
- package/dist/adv/session/mirror/ToolDetails.d.ts.map +1 -0
- package/dist/adv/session/mirror/ToolDetails.js +268 -0
- package/dist/adv/session/mirror/ToolDetails.js.map +1 -0
- package/dist/adv/session/mirror/TurnProcessNodeView.d.ts +10 -0
- package/dist/adv/session/mirror/TurnProcessNodeView.d.ts.map +1 -0
- package/dist/adv/session/mirror/TurnProcessNodeView.js +57 -0
- package/dist/adv/session/mirror/TurnProcessNodeView.js.map +1 -0
- package/dist/adv/session/mirror/TurnTailNodeView.d.ts +57 -0
- package/dist/adv/session/mirror/TurnTailNodeView.d.ts.map +1 -0
- package/dist/adv/session/mirror/TurnTailNodeView.js +106 -0
- package/dist/adv/session/mirror/TurnTailNodeView.js.map +1 -0
- package/dist/adv/session/mirror/TurnTriggerNodeView.d.ts +16 -0
- package/dist/adv/session/mirror/TurnTriggerNodeView.d.ts.map +1 -0
- package/dist/adv/session/mirror/TurnTriggerNodeView.js +103 -0
- package/dist/adv/session/mirror/TurnTriggerNodeView.js.map +1 -0
- package/dist/adv/session/mirror/TurnUsagePanel.d.ts +21 -0
- package/dist/adv/session/mirror/TurnUsagePanel.d.ts.map +1 -0
- package/dist/adv/session/mirror/TurnUsagePanel.js +41 -0
- package/dist/adv/session/mirror/TurnUsagePanel.js.map +1 -0
- package/dist/adv/session/mirror/control-details.d.ts +9 -0
- package/dist/adv/session/mirror/control-details.d.ts.map +1 -0
- package/dist/adv/session/mirror/control-details.js +549 -0
- package/dist/adv/session/mirror/control-details.js.map +1 -0
- package/dist/adv/session/mirror/detail-i18n.d.ts +4 -0
- package/dist/adv/session/mirror/detail-i18n.d.ts.map +1 -0
- package/dist/adv/session/mirror/detail-i18n.js +153 -0
- package/dist/adv/session/mirror/detail-i18n.js.map +1 -0
- package/dist/adv/session/mirror/message-chrome.d.ts +39 -0
- package/dist/adv/session/mirror/message-chrome.d.ts.map +1 -0
- package/dist/adv/session/mirror/message-chrome.js +153 -0
- package/dist/adv/session/mirror/message-chrome.js.map +1 -0
- package/dist/adv/session/mirror/process-groups.d.ts +56 -0
- package/dist/adv/session/mirror/process-groups.d.ts.map +1 -0
- package/dist/adv/session/mirror/process-groups.js +204 -0
- package/dist/adv/session/mirror/process-groups.js.map +1 -0
- package/dist/adv/session/official-classes.d.ts +28 -0
- package/dist/adv/session/official-classes.d.ts.map +1 -0
- package/dist/adv/session/official-classes.js +152 -0
- package/dist/adv/session/official-classes.js.map +1 -0
- package/dist/adv/session/open-review.d.ts +13 -0
- package/dist/adv/session/open-review.d.ts.map +1 -0
- package/dist/adv/session/open-review.js +32 -0
- package/dist/adv/session/open-review.js.map +1 -0
- package/dist/adv/session/open-session-view.d.ts +19 -0
- package/dist/adv/session/open-session-view.d.ts.map +1 -0
- package/dist/adv/session/open-session-view.js +147 -0
- package/dist/adv/session/open-session-view.js.map +1 -0
- package/dist/adv/session/pending-inputs.d.ts +33 -0
- package/dist/adv/session/pending-inputs.d.ts.map +1 -0
- package/dist/adv/session/pending-inputs.js +130 -0
- package/dist/adv/session/pending-inputs.js.map +1 -0
- package/dist/adv/session/session-css.d.ts +2 -0
- package/dist/adv/session/session-css.d.ts.map +1 -0
- package/dist/adv/session/session-css.generated.d.ts +2 -0
- package/dist/adv/session/session-css.generated.d.ts.map +1 -0
- package/dist/adv/session/session-css.generated.js +4 -0
- package/dist/adv/session/session-css.generated.js.map +1 -0
- package/dist/adv/session/session-css.js +3 -0
- package/dist/adv/session/session-css.js.map +1 -0
- package/dist/adv/session/tail-follow.d.ts +29 -0
- package/dist/adv/session/tail-follow.d.ts.map +1 -0
- package/dist/adv/session/tail-follow.js +106 -0
- package/dist/adv/session/tail-follow.js.map +1 -0
- package/dist/ui/actions/Button.d.ts +102 -0
- package/dist/ui/actions/Button.d.ts.map +1 -0
- package/dist/ui/actions/Button.js +233 -0
- package/dist/ui/actions/Button.js.map +1 -0
- package/dist/ui/actions/button-css.generated.d.ts +2 -0
- package/dist/ui/actions/button-css.generated.d.ts.map +1 -0
- package/dist/ui/actions/button-css.generated.js +4 -0
- package/dist/ui/actions/button-css.generated.js.map +1 -0
- package/dist/ui/display/Card.d.ts +65 -0
- package/dist/ui/display/Card.d.ts.map +1 -0
- package/dist/ui/display/Card.js +109 -0
- package/dist/ui/display/Card.js.map +1 -0
- package/dist/ui/display/Chip.d.ts +28 -0
- package/dist/ui/display/Chip.d.ts.map +1 -0
- package/dist/ui/display/Chip.js +36 -0
- package/dist/ui/display/Chip.js.map +1 -0
- package/dist/ui/display/CodeViewer.d.ts +38 -0
- package/dist/ui/display/CodeViewer.d.ts.map +1 -0
- package/dist/ui/display/CodeViewer.js +107 -0
- package/dist/ui/display/CodeViewer.js.map +1 -0
- package/dist/ui/display/FieldHint.d.ts +18 -0
- package/dist/ui/display/FieldHint.d.ts.map +1 -0
- package/dist/ui/display/FieldHint.js +40 -0
- package/dist/ui/display/FieldHint.js.map +1 -0
- package/dist/ui/display/FlipText.d.ts +43 -0
- package/dist/ui/display/FlipText.d.ts.map +1 -0
- package/dist/ui/display/FlipText.js +59 -0
- package/dist/ui/display/FlipText.js.map +1 -0
- package/dist/ui/display/LiveText.d.ts +13 -0
- package/dist/ui/display/LiveText.d.ts.map +1 -0
- package/dist/ui/display/LiveText.js +19 -0
- package/dist/ui/display/LiveText.js.map +1 -0
- package/dist/ui/display/MarqueeText.d.ts +22 -0
- package/dist/ui/display/MarqueeText.d.ts.map +1 -0
- package/dist/ui/display/MarqueeText.js +52 -0
- package/dist/ui/display/MarqueeText.js.map +1 -0
- package/dist/ui/display/SectionHead.d.ts +35 -0
- package/dist/ui/display/SectionHead.d.ts.map +1 -0
- package/dist/ui/display/SectionHead.js +45 -0
- package/dist/ui/display/SectionHead.js.map +1 -0
- package/dist/ui/display/Surface.d.ts +43 -0
- package/dist/ui/display/Surface.d.ts.map +1 -0
- package/dist/ui/display/Surface.js +39 -0
- package/dist/ui/display/Surface.js.map +1 -0
- package/dist/ui/display/Table.d.ts +30 -0
- package/dist/ui/display/Table.d.ts.map +1 -0
- package/dist/ui/display/Table.js +96 -0
- package/dist/ui/display/Table.js.map +1 -0
- package/dist/ui/display/card-css.d.ts +2 -0
- package/dist/ui/display/card-css.d.ts.map +1 -0
- package/dist/ui/display/card-css.generated.d.ts +2 -0
- package/dist/ui/display/card-css.generated.d.ts.map +1 -0
- package/dist/ui/display/card-css.generated.js +4 -0
- package/dist/ui/display/card-css.generated.js.map +1 -0
- package/dist/ui/display/card-css.js +5 -0
- package/dist/ui/display/card-css.js.map +1 -0
- package/dist/ui/display/chip-css.d.ts +2 -0
- package/dist/ui/display/chip-css.d.ts.map +1 -0
- package/dist/ui/display/chip-css.generated.d.ts +2 -0
- package/dist/ui/display/chip-css.generated.d.ts.map +1 -0
- package/dist/ui/display/chip-css.generated.js +4 -0
- package/dist/ui/display/chip-css.generated.js.map +1 -0
- package/dist/ui/display/chip-css.js +12 -0
- package/dist/ui/display/chip-css.js.map +1 -0
- package/dist/ui/display/code-viewer-css.d.ts +2 -0
- package/dist/ui/display/code-viewer-css.d.ts.map +1 -0
- package/dist/ui/display/code-viewer-css.generated.d.ts +2 -0
- package/dist/ui/display/code-viewer-css.generated.d.ts.map +1 -0
- package/dist/ui/display/code-viewer-css.generated.js +4 -0
- package/dist/ui/display/code-viewer-css.generated.js.map +1 -0
- package/dist/ui/display/code-viewer-css.js +3 -0
- package/dist/ui/display/code-viewer-css.js.map +1 -0
- package/dist/ui/display/code-viewer-lang.d.ts +15 -0
- package/dist/ui/display/code-viewer-lang.d.ts.map +1 -0
- package/dist/ui/display/code-viewer-lang.js +190 -0
- package/dist/ui/display/code-viewer-lang.js.map +1 -0
- package/dist/ui/display/code-viewer-theme.d.ts +5 -0
- package/dist/ui/display/code-viewer-theme.d.ts.map +1 -0
- package/dist/ui/display/code-viewer-theme.js +138 -0
- package/dist/ui/display/code-viewer-theme.js.map +1 -0
- package/dist/ui/display/flip-css.d.ts +2 -0
- package/dist/ui/display/flip-css.d.ts.map +1 -0
- package/dist/ui/display/flip-css.generated.d.ts +2 -0
- package/dist/ui/display/flip-css.generated.d.ts.map +1 -0
- package/dist/ui/display/flip-css.generated.js +4 -0
- package/dist/ui/display/flip-css.generated.js.map +1 -0
- package/dist/ui/display/flip-css.js +4 -0
- package/dist/ui/display/flip-css.js.map +1 -0
- package/dist/ui/display/hint-css.generated.d.ts +2 -0
- package/dist/ui/display/hint-css.generated.d.ts.map +1 -0
- package/dist/ui/display/hint-css.generated.js +4 -0
- package/dist/ui/display/hint-css.generated.js.map +1 -0
- package/dist/ui/display/marquee-css.d.ts +2 -0
- package/dist/ui/display/marquee-css.d.ts.map +1 -0
- package/dist/ui/display/marquee-css.generated.d.ts +2 -0
- package/dist/ui/display/marquee-css.generated.d.ts.map +1 -0
- package/dist/ui/display/marquee-css.generated.js +4 -0
- package/dist/ui/display/marquee-css.generated.js.map +1 -0
- package/dist/ui/display/marquee-css.js +4 -0
- package/dist/ui/display/marquee-css.js.map +1 -0
- package/dist/ui/display/section-head-css.generated.d.ts +2 -0
- package/dist/ui/display/section-head-css.generated.d.ts.map +1 -0
- package/dist/ui/display/section-head-css.generated.js +4 -0
- package/dist/ui/display/section-head-css.generated.js.map +1 -0
- package/dist/ui/display/surface-css.d.ts +2 -0
- package/dist/ui/display/surface-css.d.ts.map +1 -0
- package/dist/ui/display/surface-css.generated.d.ts +2 -0
- package/dist/ui/display/surface-css.generated.d.ts.map +1 -0
- package/dist/ui/display/surface-css.generated.js +4 -0
- package/dist/ui/display/surface-css.generated.js.map +1 -0
- package/dist/ui/display/surface-css.js +7 -0
- package/dist/ui/display/surface-css.js.map +1 -0
- package/dist/ui/display/table-css.generated.d.ts +2 -0
- package/dist/ui/display/table-css.generated.d.ts.map +1 -0
- package/dist/ui/display/table-css.generated.js +4 -0
- package/dist/ui/display/table-css.generated.js.map +1 -0
- package/dist/ui/display/table-logic.d.ts +110 -0
- package/dist/ui/display/table-logic.d.ts.map +1 -0
- package/dist/ui/display/table-logic.js +81 -0
- package/dist/ui/display/table-logic.js.map +1 -0
- package/dist/ui/display/table-plain-css.generated.d.ts +2 -0
- package/dist/ui/display/table-plain-css.generated.d.ts.map +1 -0
- package/dist/ui/display/table-plain-css.generated.js +4 -0
- package/dist/ui/display/table-plain-css.generated.js.map +1 -0
- package/dist/ui/display/table-shared.d.ts +101 -0
- package/dist/ui/display/table-shared.d.ts.map +1 -0
- package/dist/ui/display/table-shared.js +229 -0
- package/dist/ui/display/table-shared.js.map +1 -0
- package/dist/ui/feedback/AlertModal.d.ts +41 -0
- package/dist/ui/feedback/AlertModal.d.ts.map +1 -0
- package/dist/ui/feedback/AlertModal.js +45 -0
- package/dist/ui/feedback/AlertModal.js.map +1 -0
- package/dist/ui/feedback/ConfirmModal.d.ts +50 -0
- package/dist/ui/feedback/ConfirmModal.d.ts.map +1 -0
- package/dist/ui/feedback/ConfirmModal.js +47 -0
- package/dist/ui/feedback/ConfirmModal.js.map +1 -0
- package/dist/ui/feedback/Loader.d.ts +49 -0
- package/dist/ui/feedback/Loader.d.ts.map +1 -0
- package/dist/ui/feedback/Loader.js +79 -0
- package/dist/ui/feedback/Loader.js.map +1 -0
- package/dist/ui/feedback/LoaderBar.d.ts +38 -0
- package/dist/ui/feedback/LoaderBar.d.ts.map +1 -0
- package/dist/ui/feedback/LoaderBar.js +79 -0
- package/dist/ui/feedback/LoaderBar.js.map +1 -0
- package/dist/ui/feedback/Loading.d.ts +69 -0
- package/dist/ui/feedback/Loading.d.ts.map +1 -0
- package/dist/ui/feedback/Loading.js +164 -0
- package/dist/ui/feedback/Loading.js.map +1 -0
- package/dist/ui/feedback/Modal.d.ts +73 -0
- package/dist/ui/feedback/Modal.d.ts.map +1 -0
- package/dist/ui/feedback/Modal.js +83 -0
- package/dist/ui/feedback/Modal.js.map +1 -0
- package/dist/ui/feedback/SideSheet.d.ts +70 -0
- package/dist/ui/feedback/SideSheet.d.ts.map +1 -0
- package/dist/ui/feedback/SideSheet.js +130 -0
- package/dist/ui/feedback/SideSheet.js.map +1 -0
- package/dist/ui/feedback/Toast.d.ts +45 -0
- package/dist/ui/feedback/Toast.d.ts.map +1 -0
- package/dist/ui/feedback/Toast.js +225 -0
- package/dist/ui/feedback/Toast.js.map +1 -0
- package/dist/ui/feedback/feedback-css.d.ts +2 -0
- package/dist/ui/feedback/feedback-css.d.ts.map +1 -0
- package/dist/ui/feedback/feedback-css.generated.d.ts +2 -0
- package/dist/ui/feedback/feedback-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/feedback-css.generated.js +4 -0
- package/dist/ui/feedback/feedback-css.generated.js.map +1 -0
- package/dist/ui/feedback/feedback-css.js +4 -0
- package/dist/ui/feedback/feedback-css.js.map +1 -0
- package/dist/ui/feedback/host-toast.d.ts +23 -0
- package/dist/ui/feedback/host-toast.d.ts.map +1 -0
- package/dist/ui/feedback/host-toast.js +34 -0
- package/dist/ui/feedback/host-toast.js.map +1 -0
- package/dist/ui/feedback/loader-bar-art.d.ts +6 -0
- package/dist/ui/feedback/loader-bar-art.d.ts.map +1 -0
- package/dist/ui/feedback/loader-bar-art.js +6 -0
- package/dist/ui/feedback/loader-bar-art.js.map +1 -0
- package/dist/ui/feedback/loader-bar-css.generated.d.ts +2 -0
- package/dist/ui/feedback/loader-bar-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/loader-bar-css.generated.js +4 -0
- package/dist/ui/feedback/loader-bar-css.generated.js.map +1 -0
- package/dist/ui/feedback/loader-css.generated.d.ts +2 -0
- package/dist/ui/feedback/loader-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/loader-css.generated.js +4 -0
- package/dist/ui/feedback/loader-css.generated.js.map +1 -0
- package/dist/ui/feedback/loading-css.generated.d.ts +2 -0
- package/dist/ui/feedback/loading-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/loading-css.generated.js +4 -0
- package/dist/ui/feedback/loading-css.generated.js.map +1 -0
- package/dist/ui/feedback/loading-host.d.ts +49 -0
- package/dist/ui/feedback/loading-host.d.ts.map +1 -0
- package/dist/ui/feedback/loading-host.js +57 -0
- package/dist/ui/feedback/loading-host.js.map +1 -0
- package/dist/ui/feedback/modal-host.d.ts +51 -0
- package/dist/ui/feedback/modal-host.d.ts.map +1 -0
- package/dist/ui/feedback/modal-host.js +170 -0
- package/dist/ui/feedback/modal-host.js.map +1 -0
- package/dist/ui/feedback/side-sheet-css.d.ts +2 -0
- package/dist/ui/feedback/side-sheet-css.d.ts.map +1 -0
- package/dist/ui/feedback/side-sheet-css.generated.d.ts +2 -0
- package/dist/ui/feedback/side-sheet-css.generated.d.ts.map +1 -0
- package/dist/ui/feedback/side-sheet-css.generated.js +4 -0
- package/dist/ui/feedback/side-sheet-css.generated.js.map +1 -0
- package/dist/ui/feedback/side-sheet-css.js +2 -0
- package/dist/ui/feedback/side-sheet-css.js.map +1 -0
- package/dist/ui/feedback/toast-host.d.ts +24 -0
- package/dist/ui/feedback/toast-host.d.ts.map +1 -0
- package/dist/ui/feedback/toast-host.js +20 -0
- package/dist/ui/feedback/toast-host.js.map +1 -0
- package/dist/ui/index.d.ts +44 -44
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +44 -44
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/infra/chevron.d.ts +22 -0
- package/dist/ui/infra/chevron.d.ts.map +1 -0
- package/dist/ui/infra/chevron.js +33 -0
- package/dist/ui/infra/chevron.js.map +1 -0
- package/dist/ui/infra/controls-css.d.ts +16 -0
- package/dist/ui/infra/controls-css.d.ts.map +1 -0
- package/dist/ui/infra/controls-css.js +26 -0
- package/dist/ui/infra/controls-css.js.map +1 -0
- package/dist/ui/infra/css.d.ts +35 -0
- package/dist/ui/infra/css.d.ts.map +1 -0
- package/dist/ui/infra/css.js +52 -0
- package/dist/ui/infra/css.js.map +1 -0
- package/dist/ui/infra/host-data.d.ts +119 -0
- package/dist/ui/infra/host-data.d.ts.map +1 -0
- package/dist/ui/infra/host-data.js +122 -0
- package/dist/ui/infra/host-data.js.map +1 -0
- package/dist/ui/infra/locale.d.ts +4 -0
- package/dist/ui/infra/locale.d.ts.map +1 -0
- package/dist/ui/infra/locale.js +17 -0
- package/dist/ui/infra/locale.js.map +1 -0
- package/dist/ui/infra/overlay-css.d.ts +2 -0
- package/dist/ui/infra/overlay-css.d.ts.map +1 -0
- package/dist/ui/infra/overlay-css.generated.d.ts +2 -0
- package/dist/ui/infra/overlay-css.generated.d.ts.map +1 -0
- package/dist/ui/infra/overlay-css.generated.js +4 -0
- package/dist/ui/infra/overlay-css.generated.js.map +1 -0
- package/dist/ui/infra/overlay-css.js +2 -0
- package/dist/ui/infra/overlay-css.js.map +1 -0
- package/dist/ui/infra/overlay.d.ts +62 -0
- package/dist/ui/infra/overlay.d.ts.map +1 -0
- package/dist/ui/infra/overlay.js +94 -0
- package/dist/ui/infra/overlay.js.map +1 -0
- package/dist/ui/infra/panel-css.d.ts +2 -0
- package/dist/ui/infra/panel-css.d.ts.map +1 -0
- package/dist/ui/infra/panel-css.generated.d.ts +2 -0
- package/dist/ui/infra/panel-css.generated.d.ts.map +1 -0
- package/dist/ui/infra/panel-css.generated.js +4 -0
- package/dist/ui/infra/panel-css.generated.js.map +1 -0
- package/dist/ui/infra/panel-css.js +2 -0
- package/dist/ui/infra/panel-css.js.map +1 -0
- package/dist/ui/infra/panel.d.ts +41 -0
- package/dist/ui/infra/panel.d.ts.map +1 -0
- package/dist/ui/infra/panel.js +37 -0
- package/dist/ui/infra/panel.js.map +1 -0
- package/dist/ui/infra/side-panel-css.d.ts +2 -0
- package/dist/ui/infra/side-panel-css.d.ts.map +1 -0
- package/dist/ui/infra/side-panel-css.generated.d.ts +2 -0
- package/dist/ui/infra/side-panel-css.generated.d.ts.map +1 -0
- package/dist/ui/infra/side-panel-css.generated.js +4 -0
- package/dist/ui/infra/side-panel-css.generated.js.map +1 -0
- package/dist/ui/infra/side-panel-css.js +2 -0
- package/dist/ui/infra/side-panel-css.js.map +1 -0
- package/dist/ui/infra/thenable.d.ts +9 -0
- package/dist/ui/infra/thenable.d.ts.map +1 -0
- package/dist/ui/infra/thenable.js +15 -0
- package/dist/ui/infra/thenable.js.map +1 -0
- package/dist/ui/infra/ticker.d.ts +8 -0
- package/dist/ui/infra/ticker.d.ts.map +1 -0
- package/dist/ui/infra/ticker.js +49 -0
- package/dist/ui/infra/ticker.js.map +1 -0
- package/dist/ui/infra/tooltip.d.ts +29 -0
- package/dist/ui/infra/tooltip.d.ts.map +1 -0
- package/dist/ui/infra/tooltip.js +10 -0
- package/dist/ui/infra/tooltip.js.map +1 -0
- package/dist/ui/inputs/Checkbox.d.ts +24 -0
- package/dist/ui/inputs/Checkbox.d.ts.map +1 -0
- package/dist/ui/inputs/Checkbox.js +35 -0
- package/dist/ui/inputs/Checkbox.js.map +1 -0
- package/dist/ui/inputs/DateTimePicker.d.ts +45 -0
- package/dist/ui/inputs/DateTimePicker.d.ts.map +1 -0
- package/dist/ui/inputs/DateTimePicker.js +462 -0
- package/dist/ui/inputs/DateTimePicker.js.map +1 -0
- package/dist/ui/inputs/Field.d.ts +125 -0
- package/dist/ui/inputs/Field.d.ts.map +1 -0
- package/dist/ui/inputs/Field.js +175 -0
- package/dist/ui/inputs/Field.js.map +1 -0
- package/dist/ui/inputs/InputGroup.d.ts +91 -0
- package/dist/ui/inputs/InputGroup.d.ts.map +1 -0
- package/dist/ui/inputs/InputGroup.js +125 -0
- package/dist/ui/inputs/InputGroup.js.map +1 -0
- package/dist/ui/inputs/ModelPicker.d.ts +48 -0
- package/dist/ui/inputs/ModelPicker.d.ts.map +1 -0
- package/dist/ui/inputs/ModelPicker.js +101 -0
- package/dist/ui/inputs/ModelPicker.js.map +1 -0
- package/dist/ui/inputs/Picker.d.ts +56 -0
- package/dist/ui/inputs/Picker.d.ts.map +1 -0
- package/dist/ui/inputs/Picker.js +244 -0
- package/dist/ui/inputs/Picker.js.map +1 -0
- package/dist/ui/inputs/Segmented.d.ts +99 -0
- package/dist/ui/inputs/Segmented.d.ts.map +1 -0
- package/dist/ui/inputs/Segmented.js +135 -0
- package/dist/ui/inputs/Segmented.js.map +1 -0
- package/dist/ui/inputs/Textarea.d.ts +36 -0
- package/dist/ui/inputs/Textarea.d.ts.map +1 -0
- package/dist/ui/inputs/Textarea.js +35 -0
- package/dist/ui/inputs/Textarea.js.map +1 -0
- package/dist/ui/inputs/WorkspacePicker.d.ts +35 -0
- package/dist/ui/inputs/WorkspacePicker.d.ts.map +1 -0
- package/dist/ui/inputs/WorkspacePicker.js +39 -0
- package/dist/ui/inputs/WorkspacePicker.js.map +1 -0
- package/dist/ui/inputs/datetime-css.generated.d.ts +2 -0
- package/dist/ui/inputs/datetime-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/datetime-css.generated.js +4 -0
- package/dist/ui/inputs/datetime-css.generated.js.map +1 -0
- package/dist/ui/inputs/datetime-logic.d.ts +102 -0
- package/dist/ui/inputs/datetime-logic.d.ts.map +1 -0
- package/dist/ui/inputs/datetime-logic.js +200 -0
- package/dist/ui/inputs/datetime-logic.js.map +1 -0
- package/dist/ui/inputs/field-css.generated.d.ts +2 -0
- package/dist/ui/inputs/field-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/field-css.generated.js +4 -0
- package/dist/ui/inputs/field-css.generated.js.map +1 -0
- package/dist/ui/inputs/input-group-css.generated.d.ts +2 -0
- package/dist/ui/inputs/input-group-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/input-group-css.generated.js +4 -0
- package/dist/ui/inputs/input-group-css.generated.js.map +1 -0
- package/dist/ui/inputs/picker-css.d.ts +2 -0
- package/dist/ui/inputs/picker-css.d.ts.map +1 -0
- package/dist/ui/inputs/picker-css.generated.d.ts +2 -0
- package/dist/ui/inputs/picker-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/picker-css.generated.js +4 -0
- package/dist/ui/inputs/picker-css.generated.js.map +1 -0
- package/dist/ui/inputs/picker-css.js +4 -0
- package/dist/ui/inputs/picker-css.js.map +1 -0
- package/dist/ui/inputs/picker-icons.d.ts +12 -0
- package/dist/ui/inputs/picker-icons.d.ts.map +1 -0
- package/dist/ui/inputs/picker-icons.js +29 -0
- package/dist/ui/inputs/picker-icons.js.map +1 -0
- package/dist/ui/inputs/picker-logic.d.ts +33 -0
- package/dist/ui/inputs/picker-logic.d.ts.map +1 -0
- package/dist/ui/inputs/picker-logic.js +68 -0
- package/dist/ui/inputs/picker-logic.js.map +1 -0
- package/dist/ui/inputs/segmented-css.generated.d.ts +2 -0
- package/dist/ui/inputs/segmented-css.generated.d.ts.map +1 -0
- package/dist/ui/inputs/segmented-css.generated.js +4 -0
- package/dist/ui/inputs/segmented-css.generated.js.map +1 -0
- package/dist/ui/layout/PanelDock.d.ts +132 -0
- package/dist/ui/layout/PanelDock.d.ts.map +1 -0
- package/dist/ui/layout/PanelDock.js +390 -0
- package/dist/ui/layout/PanelDock.js.map +1 -0
- package/dist/ui/layout/QuickToolbar.d.ts +54 -0
- package/dist/ui/layout/QuickToolbar.d.ts.map +1 -0
- package/dist/ui/layout/QuickToolbar.js +254 -0
- package/dist/ui/layout/QuickToolbar.js.map +1 -0
- package/dist/ui/layout/SplitGroup.d.ts +37 -0
- package/dist/ui/layout/SplitGroup.d.ts.map +1 -0
- package/dist/ui/layout/SplitGroup.js +36 -0
- package/dist/ui/layout/SplitGroup.js.map +1 -0
- package/dist/ui/layout/panel-dock-css.d.ts +2 -0
- package/dist/ui/layout/panel-dock-css.d.ts.map +1 -0
- package/dist/ui/layout/panel-dock-css.generated.d.ts +2 -0
- package/dist/ui/layout/panel-dock-css.generated.d.ts.map +1 -0
- package/dist/ui/layout/panel-dock-css.generated.js +4 -0
- package/dist/ui/layout/panel-dock-css.generated.js.map +1 -0
- package/dist/ui/layout/panel-dock-css.js +4 -0
- package/dist/ui/layout/panel-dock-css.js.map +1 -0
- package/dist/ui/layout/panel-dock-logic.d.ts +67 -0
- package/dist/ui/layout/panel-dock-logic.d.ts.map +1 -0
- package/dist/ui/layout/panel-dock-logic.js +110 -0
- package/dist/ui/layout/panel-dock-logic.js.map +1 -0
- package/dist/ui/layout/quick-toolbar-css.generated.d.ts +2 -0
- package/dist/ui/layout/quick-toolbar-css.generated.d.ts.map +1 -0
- package/dist/ui/layout/quick-toolbar-css.generated.js +4 -0
- package/dist/ui/layout/quick-toolbar-css.generated.js.map +1 -0
- package/dist/ui/layout/quick-toolbar-logic.d.ts +76 -0
- package/dist/ui/layout/quick-toolbar-logic.d.ts.map +1 -0
- package/dist/ui/layout/quick-toolbar-logic.js +40 -0
- package/dist/ui/layout/quick-toolbar-logic.js.map +1 -0
- package/dist/ui/layout/resizer.d.ts +29 -0
- package/dist/ui/layout/resizer.d.ts.map +1 -0
- package/dist/ui/layout/resizer.js +42 -0
- package/dist/ui/layout/resizer.js.map +1 -0
- package/dist/ui/layout/split-group-css.generated.d.ts +2 -0
- package/dist/ui/layout/split-group-css.generated.d.ts.map +1 -0
- package/dist/ui/layout/split-group-css.generated.js +4 -0
- package/dist/ui/layout/split-group-css.generated.js.map +1 -0
- package/dist/ui/navigation/Pagination.d.ts +59 -0
- package/dist/ui/navigation/Pagination.d.ts.map +1 -0
- package/dist/ui/navigation/Pagination.js +112 -0
- package/dist/ui/navigation/Pagination.js.map +1 -0
- package/dist/ui/navigation/pagination-css.generated.d.ts +2 -0
- package/dist/ui/navigation/pagination-css.generated.d.ts.map +1 -0
- package/dist/ui/navigation/pagination-css.generated.js +4 -0
- package/dist/ui/navigation/pagination-css.generated.js.map +1 -0
- package/dist/ui/navigation/pagination-logic.d.ts +36 -0
- package/dist/ui/navigation/pagination-logic.d.ts.map +1 -0
- package/dist/ui/navigation/pagination-logic.js +73 -0
- package/dist/ui/navigation/pagination-logic.js.map +1 -0
- package/dist/ui/official.js +2 -2
- package/dist/ui/official.js.map +1 -1
- package/dist/utils/i18n.d.ts +2 -2
- package/dist/utils/i18n.d.ts.map +1 -1
- package/dist/utils/i18n.js +1 -1
- package/dist/utils/i18n.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/design/architecture.md +9 -8
- package/docs/design/copywriting.md +23 -0
- package/docs/design/external/dsh-host.md +5 -5
- package/docs/design/structure.md +132 -128
- package/docs/design/style.md +5 -5
- package/docs/help/utils.doc.ts +3 -3
- package/docs/help/utils.md +3 -3
- package/docs/requirements.md +30 -290
- package/package.json +1 -1
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { createElement as h } from 'react';
|
|
2
|
+
import { t } from '../../utils/i18n.js';
|
|
3
|
+
import { ensureComponentStyles } from '../infra/css.js';
|
|
4
|
+
import { TABLE_BASE_CSS } from '../infra/controls-css.js';
|
|
5
|
+
import { Loader } from '../feedback/Loader.js';
|
|
6
|
+
import { SectionHead } from './SectionHead.js';
|
|
7
|
+
import { headerRows, isTableCellSpec, leafColumns, } from './table-logic.js';
|
|
8
|
+
function widthOf(width) {
|
|
9
|
+
if (width === undefined)
|
|
10
|
+
return undefined;
|
|
11
|
+
return typeof width === 'number' ? `${width}px` : width;
|
|
12
|
+
}
|
|
13
|
+
/** 列级水平内距(覆盖 density 档);不传交给 CSS。 */
|
|
14
|
+
function padStyle(column) {
|
|
15
|
+
return column.padding === undefined ? undefined : { paddingInline: `${column.padding}px` };
|
|
16
|
+
}
|
|
17
|
+
function alignClass(prefix, align) {
|
|
18
|
+
return align === undefined || align === 'left' ? '' : ` ${prefix}--${align}`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 某列在叶子序列里的位置决定画不画左竖线:
|
|
22
|
+
* 首列恒不画(那是外框的位置);其余列只在「想要线」时画。
|
|
23
|
+
* 分组列自己不写 `divider` 时,跟随它第一个叶子列 —— 组头的左缘和第一个子列的左缘
|
|
24
|
+
* 是同一条线,否则「组头无线、下面子列有线」会断成两截(2026-10-30 用户真机指出)。
|
|
25
|
+
*/
|
|
26
|
+
function dividerAttr(leafIndex, wanted) {
|
|
27
|
+
if (leafIndex === 0)
|
|
28
|
+
return undefined;
|
|
29
|
+
return wanted === true ? 'left' : undefined;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 表格共享渲染壳(**内部件,不进公开导出**)。
|
|
33
|
+
*
|
|
34
|
+
* 职责:基础层样式登记 + 语义化 `<table>` 结构 + 表头分组计算 + 行交互 + 列/单元格配置落地。
|
|
35
|
+
* 外观(表头底色 / 分隔线 / 悬浮 / 选中)由调用方的皮肤 CSS 负责:每个公开组件
|
|
36
|
+
* (`Table`、将来的 `TableGrid` / `TableZebra`)只 import 自己那份皮肤,并把自己的
|
|
37
|
+
* modifier class 传进来。这样消费方引哪个就只打包哪个 —— 绝不用 `variant` 汇总多份皮肤。
|
|
38
|
+
*/
|
|
39
|
+
export function tableShell(skinClass, props, options = {}) {
|
|
40
|
+
ensureComponentStyles('table-core', TABLE_BASE_CSS);
|
|
41
|
+
const tt = props.translate ?? t;
|
|
42
|
+
const headRows = headerRows(props.columns);
|
|
43
|
+
const leaves = leafColumns(props.columns);
|
|
44
|
+
const leafIndexByKey = new Map();
|
|
45
|
+
leaves.forEach((column, index) => {
|
|
46
|
+
leafIndexByKey.set(column.key, index);
|
|
47
|
+
});
|
|
48
|
+
const selected = new Set(props.selectedKeys ?? []);
|
|
49
|
+
const onRowClick = props.onRowClick;
|
|
50
|
+
const density = props.density ?? 'default';
|
|
51
|
+
const borders = props.borders ?? 'y';
|
|
52
|
+
/** 表头一行:分组表头按层级逐行渲染(每组重复渲染它,分组模式也要表头)。 */
|
|
53
|
+
const headRowOf = (cells, level) => h('tr', { key: `head-${level}`, className: 'dshpc-table__head-row' }, ...cells.map((cell) => {
|
|
54
|
+
const group = cell.colSpan > 1;
|
|
55
|
+
const firstLeafIndex = leafIndexByKey.get(cell.leafKeys[0] ?? '');
|
|
56
|
+
// 分组列没写 divider ⇒ 跟第一个叶子列走(两行列的左缘是同一条线)。
|
|
57
|
+
const firstLeaf = firstLeafIndex === undefined ? undefined : leaves[firstLeafIndex];
|
|
58
|
+
const className = `dshpc-table__head-cell${group ? ' dshpc-table__head-cell--group' : ''}${alignClass('dshpc-table__head-cell', cell.column.align)}`;
|
|
59
|
+
const tone = cell.column.headerTone;
|
|
60
|
+
return h('th', {
|
|
61
|
+
key: cell.column.key,
|
|
62
|
+
scope: group ? 'colgroup' : 'col',
|
|
63
|
+
colSpan: cell.colSpan > 1 ? cell.colSpan : undefined,
|
|
64
|
+
rowSpan: cell.rowSpan > 1 ? cell.rowSpan : undefined,
|
|
65
|
+
className,
|
|
66
|
+
style: padStyle(cell.column),
|
|
67
|
+
'data-divider': firstLeafIndex === undefined
|
|
68
|
+
? undefined
|
|
69
|
+
: dividerAttr(firstLeafIndex, cell.column.divider ?? firstLeaf?.divider),
|
|
70
|
+
'data-header-tone': tone === undefined || tone === 'default' ? undefined : tone,
|
|
71
|
+
}, cell.column.title);
|
|
72
|
+
}));
|
|
73
|
+
/**
|
|
74
|
+
* 跨行单元格(rowSpan)把上下几行连成一个视觉块:块里任意一行被选中,整块都算选中。
|
|
75
|
+
* 先按 rowSpan 求每行所属块的范围 [start, end],再判断块内有没有选中行 ——
|
|
76
|
+
* 不依赖点击的是块里的哪一行,也不要求调用方自己展开。
|
|
77
|
+
*/
|
|
78
|
+
const selectedBlocksOf = (rows) => {
|
|
79
|
+
const blocks = rows.map((_, index) => ({ start: index, end: index }));
|
|
80
|
+
rows.forEach((row, index) => {
|
|
81
|
+
for (const cell of Object.values(row.cells)) {
|
|
82
|
+
if (!isTableCellSpec(cell) || cell.rowSpan === undefined || cell.rowSpan <= 1)
|
|
83
|
+
continue;
|
|
84
|
+
const end = Math.min(index + cell.rowSpan - 1, rows.length - 1);
|
|
85
|
+
for (let line = index; line <= end; line += 1) {
|
|
86
|
+
const block = blocks[line];
|
|
87
|
+
if (block === undefined)
|
|
88
|
+
continue;
|
|
89
|
+
block.start = Math.min(block.start, index);
|
|
90
|
+
block.end = Math.max(block.end, end);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
return blocks.map((block) => {
|
|
95
|
+
for (let line = block.start; line <= block.end; line += 1) {
|
|
96
|
+
const row = rows[line];
|
|
97
|
+
if (row !== undefined && selected.has(row.key))
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
return false;
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
/** 一组数据行(选中 / 可点 / 单元格配置都在这里落地)。 */
|
|
104
|
+
const dataRowsOf = (rows, offset = 0) => {
|
|
105
|
+
const selectedBlocks = selectedBlocksOf(rows);
|
|
106
|
+
return rows.map((row, index) => h('tr', {
|
|
107
|
+
key: row.key,
|
|
108
|
+
className: 'dshpc-table__row',
|
|
109
|
+
'data-selected': selectedBlocks[index] === true ? 'true' : undefined,
|
|
110
|
+
'data-interactive': onRowClick === undefined ? undefined : 'true',
|
|
111
|
+
tabIndex: onRowClick === undefined ? undefined : 0,
|
|
112
|
+
onClick: onRowClick === undefined ? undefined : () => onRowClick(row, offset + index),
|
|
113
|
+
onKeyDown: onRowClick === undefined
|
|
114
|
+
? undefined
|
|
115
|
+
: (event) => {
|
|
116
|
+
if (event.key !== 'Enter' && event.key !== ' ')
|
|
117
|
+
return;
|
|
118
|
+
event.preventDefault();
|
|
119
|
+
onRowClick(row, offset + index);
|
|
120
|
+
},
|
|
121
|
+
}, ...leaves.map((column, leafIndex) => {
|
|
122
|
+
const cell = row.cells[column.key];
|
|
123
|
+
// 缺 key = 该格不渲染(上一行的 rowSpan 已经占了这个位置);要空格请显式传 null。
|
|
124
|
+
if (cell === undefined)
|
|
125
|
+
return null;
|
|
126
|
+
let spec;
|
|
127
|
+
let content;
|
|
128
|
+
if (isTableCellSpec(cell)) {
|
|
129
|
+
spec = cell;
|
|
130
|
+
content = cell.content;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
content = cell;
|
|
134
|
+
}
|
|
135
|
+
const align = spec?.align ?? column.align;
|
|
136
|
+
return h('td', {
|
|
137
|
+
key: column.key,
|
|
138
|
+
className: `dshpc-table__cell${alignClass('dshpc-table__cell', align)}`,
|
|
139
|
+
style: padStyle(column),
|
|
140
|
+
colSpan: spec?.colSpan !== undefined && spec.colSpan > 1 ? spec.colSpan : undefined,
|
|
141
|
+
rowSpan: spec?.rowSpan !== undefined && spec.rowSpan > 1 ? spec.rowSpan : undefined,
|
|
142
|
+
'data-divider': dividerAttr(leafIndex, column.divider),
|
|
143
|
+
}, content ?? null);
|
|
144
|
+
})));
|
|
145
|
+
};
|
|
146
|
+
const colSpan = leaves.length > 0 ? leaves.length : undefined;
|
|
147
|
+
const emptyRow = h('tr', { key: 'empty', className: 'dshpc-table__row' }, h('td', { className: 'dshpc-table__empty', colSpan }, props.emptyText ?? tt('tableEmpty')));
|
|
148
|
+
// 整表加载:只在一条数据都没有时占位,不遮挡已有行(追加下一页请用 loadingMore)。
|
|
149
|
+
const loadingRow = h('tr', { key: 'loading', className: 'dshpc-table__state-row' }, h('td', { className: 'dshpc-table__state-cell', colSpan }, h('div', {
|
|
150
|
+
className: 'dshpc-table__state dshpc-table__state--full',
|
|
151
|
+
style: props.loadingHeight === undefined ? undefined : { height: `${props.loadingHeight}px` },
|
|
152
|
+
}, h(Loader, { variant: 'blocks', size: 'xl', label: tt('tableLoading') }))));
|
|
153
|
+
// 底部加载态:只在给了 onLoadMore(开关)时渲染,且 loadingMore 优先于「没有更多」。
|
|
154
|
+
const infinite = props.onLoadMore !== undefined;
|
|
155
|
+
const loadingMore = infinite && props.loadingMore === true;
|
|
156
|
+
const showNoMore = infinite && !loadingMore && props.hasMore === false && props.noMoreText !== false;
|
|
157
|
+
const footerRows = [];
|
|
158
|
+
if (loadingMore) {
|
|
159
|
+
footerRows.push(h('tr', { key: 'more', className: 'dshpc-table__state-row dshpc-table__state-row--footer' }, h('td', { className: 'dshpc-table__state-cell', colSpan }, h('div', { className: 'dshpc-table__state' }, h(Loader, { variant: 'blocks', size: 'md', label: tt('tableLoadingMore') })))));
|
|
160
|
+
}
|
|
161
|
+
else if (showNoMore) {
|
|
162
|
+
footerRows.push(h('tr', { key: 'end', className: 'dshpc-table__state-row dshpc-table__state-row--footer' }, h('td', { className: 'dshpc-table__state-cell', colSpan }, h('div', { className: 'dshpc-table__state' }, h('span', { className: 'dshpc-table__state-text' }, props.noMoreText === undefined ? tt('tableNoMore') : props.noMoreText)))));
|
|
163
|
+
}
|
|
164
|
+
// 底部哨兵:IntersectionObserver 的落点;hasMore === false 时没有下一页,不必再监听。
|
|
165
|
+
const sentinelRow = infinite && props.hasMore !== false && options.sentinelRef !== undefined
|
|
166
|
+
? h('tr', {
|
|
167
|
+
key: 'sentinel',
|
|
168
|
+
ref: options.sentinelRef,
|
|
169
|
+
className: 'dshpc-table__sentinel',
|
|
170
|
+
'aria-hidden': 'true',
|
|
171
|
+
}, h('td', { colSpan }))
|
|
172
|
+
: null;
|
|
173
|
+
// 没有左右外框(y / none)且底部有状态行时,表底那条横线也去掉 ——
|
|
174
|
+
// 状态行只保留上方一条实线,否则图标下面会多出一条孤线(2026-10-31 用户定)。
|
|
175
|
+
const flatFoot = footerRows.length > 0 && (borders === 'y' || borders === 'none');
|
|
176
|
+
const tableClass = [
|
|
177
|
+
'dshpc-table',
|
|
178
|
+
skinClass,
|
|
179
|
+
`dshpc-table--density-${density}`,
|
|
180
|
+
`dshpc-table--borders-${borders}`,
|
|
181
|
+
props.striped === true ? 'dshpc-table--striped' : '',
|
|
182
|
+
flatFoot ? 'dshpc-table--foot-no-bottom' : '',
|
|
183
|
+
props.className ?? '',
|
|
184
|
+
]
|
|
185
|
+
.filter((s) => s !== '')
|
|
186
|
+
.join(' ');
|
|
187
|
+
// 分组模式下底部状态行 / 哨兵单独占一个 tbody,排在最后一组之后(不影响各组的表头归属)。
|
|
188
|
+
const groupFoot = footerRows.length > 0 || sentinelRow !== null
|
|
189
|
+
? h('tbody', { key: 'group-foot', className: 'dshpc-table__body' }, ...footerRows, sentinelRow)
|
|
190
|
+
: null;
|
|
191
|
+
const groups = props.groups ?? [];
|
|
192
|
+
const body = groups.length > 0
|
|
193
|
+
? [
|
|
194
|
+
...groups.map((group, groupIndex) => h('tbody', { key: group.key, className: 'dshpc-table__body dshpc-table__group-body' },
|
|
195
|
+
// 通栏标题行:横跨所有列,充当这一组的「大标题」。
|
|
196
|
+
h('tr', { className: 'dshpc-table__group-row' }, h('th', {
|
|
197
|
+
className: 'dshpc-table__group-cell',
|
|
198
|
+
scope: 'colgroup',
|
|
199
|
+
colSpan: leaves.length > 0 ? leaves.length : undefined,
|
|
200
|
+
},
|
|
201
|
+
// 标题的固定标签(短竖线)与排版归 SectionHead —— Table 只负责把标题装进通栏。
|
|
202
|
+
h(SectionHead, {
|
|
203
|
+
title: group.title,
|
|
204
|
+
accent: props.groupAccent ?? 'default',
|
|
205
|
+
flush: true,
|
|
206
|
+
}))),
|
|
207
|
+
// 每组自带表头:分组模式不放在 <thead>(一个 table 只能有一个 thead)
|
|
208
|
+
...headRows.map((cells, level) => headRowOf(cells, `g${groupIndex}-${level}`)), ...dataRowsOf(group.rows, 0))),
|
|
209
|
+
...(groupFoot === null ? [] : [groupFoot]),
|
|
210
|
+
]
|
|
211
|
+
: [
|
|
212
|
+
h('tbody', { key: 'body', className: 'dshpc-table__body' }, props.loading === true && (props.rows?.length ?? 0) === 0
|
|
213
|
+
? loadingRow
|
|
214
|
+
: props.rows !== undefined && props.rows.length > 0
|
|
215
|
+
? dataRowsOf(props.rows)
|
|
216
|
+
: emptyRow, ...footerRows, sentinelRow),
|
|
217
|
+
];
|
|
218
|
+
return h('table', { className: tableClass, style: props.style, 'aria-label': props.ariaLabel }, leaves.length === 0
|
|
219
|
+
? null
|
|
220
|
+
: h('colgroup', null, ...leaves.map((column) => h('col', {
|
|
221
|
+
key: column.key,
|
|
222
|
+
style: widthOf(column.width) === undefined ? undefined : { width: widthOf(column.width) },
|
|
223
|
+
}))),
|
|
224
|
+
// 有分组时,每组的表头在各自的 tbody 里;单一表时表头在 thead。
|
|
225
|
+
groups.length > 0
|
|
226
|
+
? null
|
|
227
|
+
: h('thead', { className: 'dshpc-table__head' }, ...headRows.map((cells, level) => headRowOf(cells, level))), ...body);
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=table-shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-shared.js","sourceRoot":"","sources":["../../../src/ui/display/table-shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createElement as h, type ReactNode } from 'react';
|
|
2
|
+
import { type ModalSize } from './Modal.js';
|
|
3
|
+
import { type Translate } from '../../utils/i18n.js';
|
|
4
|
+
/** Alert 信号档(图标 + 配色由头部 severity 图标承载)。 */
|
|
5
|
+
export type AlertSeverity = 'info' | 'success' | 'warning' | 'error';
|
|
6
|
+
export interface AlertModalProps {
|
|
7
|
+
/** 主标题(不传则整条头部消失,直接出说明文字)。 */
|
|
8
|
+
title?: ReactNode;
|
|
9
|
+
/** 说明文字 / 任意内容。 */
|
|
10
|
+
message?: ReactNode;
|
|
11
|
+
/** 信号档(默认 info)。 */
|
|
12
|
+
severity?: AlertSeverity;
|
|
13
|
+
/** 确认按钮文案(默认 i18n「知道了」)。 */
|
|
14
|
+
confirmText?: string;
|
|
15
|
+
/** 确认钮定宽(px 或任意 CSS 宽度值);loading 转圈会把按钮撑宽,定宽后不跳。 */
|
|
16
|
+
confirmWidth?: number | string;
|
|
17
|
+
/**
|
|
18
|
+
* loading 时是否保留按钮文案(默认 true)。传 `false`:loading 期间清文字、
|
|
19
|
+
* 锁在「有文案」的宽度上、只留一枚居中的圈(见 `Button.loadingText`)。
|
|
20
|
+
*/
|
|
21
|
+
loadingText?: boolean;
|
|
22
|
+
/** 点遮罩是否关闭(默认 true)。 */
|
|
23
|
+
closeOnMask?: boolean;
|
|
24
|
+
/** 锁死全部交互(含义见 `Modal.locked`):整框点不动、Tab 进不去、三条关闭路径同时失效。 */
|
|
25
|
+
locked?: boolean;
|
|
26
|
+
/** 外部驱动确认钮 loading(如别处正在刷新)。与按钮自己的异步状态取或。 */
|
|
27
|
+
confirmLoading?: boolean;
|
|
28
|
+
/** 底栏左侧的一行过程提示(换字即翻牌,超长省略 + hover 跑马灯)。不传 = 不占位。 */
|
|
29
|
+
notice?: string;
|
|
30
|
+
/** 尺寸档(默认 sm 确认框宽度)。 */
|
|
31
|
+
size?: ModalSize;
|
|
32
|
+
/** 点击确认 / 遮罩 / Esc 的统一出口(单按钮弹窗,关闭即确认);**返回 Promise 自动转圈 + 整框锁死**。 */
|
|
33
|
+
onConfirm?: () => unknown;
|
|
34
|
+
translate?: Translate;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 警告框(语义层,基于 Modal):单按钮 + 无 ✕ + severity 图标;无标题时整条头部消失。
|
|
38
|
+
* 样式封闭:按钮只暴露语义档(primary),不透传任意 className/style。
|
|
39
|
+
*/
|
|
40
|
+
export declare function AlertModal(props: AlertModalProps): ReturnType<typeof h>;
|
|
41
|
+
//# sourceMappingURL=AlertModal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AlertModal.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/AlertModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACpE,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAIvD,2CAA2C;AAC3C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AASpE,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,mBAAmB;IACnB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC9B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,wBAAwB;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wBAAwB;IACxB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,OAAO,CAAA;IACzB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CA+BvE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { createElement as h, useState } from 'react';
|
|
2
|
+
import { Modal } from './Modal.js';
|
|
3
|
+
import { Button } from '../actions/Button.js';
|
|
4
|
+
import { t } from '../../utils/i18n.js';
|
|
5
|
+
import { ensureComponentStyles } from '../infra/css.js';
|
|
6
|
+
import { FEEDBACK_CSS } from './feedback-css.js';
|
|
7
|
+
const SEVERITY_GLYPH = {
|
|
8
|
+
info: 'ⓘ',
|
|
9
|
+
success: '✓',
|
|
10
|
+
warning: '⚠',
|
|
11
|
+
error: '✕',
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* 警告框(语义层,基于 Modal):单按钮 + 无 ✕ + severity 图标;无标题时整条头部消失。
|
|
15
|
+
* 样式封闭:按钮只暴露语义档(primary),不透传任意 className/style。
|
|
16
|
+
*/
|
|
17
|
+
export function AlertModal(props) {
|
|
18
|
+
ensureComponentStyles('feedback', FEEDBACK_CSS);
|
|
19
|
+
const tt = props.translate ?? t;
|
|
20
|
+
const severity = props.severity ?? 'info';
|
|
21
|
+
const [running, setRunning] = useState(false);
|
|
22
|
+
// 在跑(自己点的或外部传的)⇒ 遮罩 / Esc 一律不关。
|
|
23
|
+
const busy = running || props.confirmLoading === true;
|
|
24
|
+
return h(Modal, {
|
|
25
|
+
icon: h('span', { className: `dshpc-alert-sev dshpc-alert-sev--${severity}` }, SEVERITY_GLYPH[severity]),
|
|
26
|
+
title: props.title,
|
|
27
|
+
size: props.size ?? 'sm',
|
|
28
|
+
hideHeader: props.title === undefined,
|
|
29
|
+
closable: false,
|
|
30
|
+
closeOnMask: props.closeOnMask,
|
|
31
|
+
busy,
|
|
32
|
+
locked: props.locked,
|
|
33
|
+
onClose: props.onConfirm,
|
|
34
|
+
notice: props.notice,
|
|
35
|
+
footer: h(Button, {
|
|
36
|
+
variant: 'primary',
|
|
37
|
+
width: props.confirmWidth,
|
|
38
|
+
loadingText: props.loadingText,
|
|
39
|
+
loading: props.confirmLoading === true,
|
|
40
|
+
onBusyChange: setRunning,
|
|
41
|
+
onClick: () => props.onConfirm?.(),
|
|
42
|
+
}, props.confirmText ?? tt('dialogOk')),
|
|
43
|
+
}, props.message ?? null);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=AlertModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AlertModal.js","sourceRoot":"","sources":["../../../src/ui/feedback/AlertModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AACpE,OAAO,EAAE,KAAK,EAAkB,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,CAAC,EAAkB,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKhD,MAAM,cAAc,GAAkC;IACpD,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;CACX,CAAA;AAiCD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,qBAAqB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAA;IACzC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,gCAAgC;IAChC,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,CAAA;IACrD,OAAO,CAAC,CACN,KAAK,EACL;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,oCAAoC,QAAQ,EAAE,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;QACxG,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,UAAU,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS;QACrC,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,IAAI;QACJ,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,SAAS;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,KAAK,CAAC,YAAY;YACzB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,OAAO,EAAE,KAAK,CAAC,cAAc,KAAK,IAAI;YACtC,YAAY,EAAE,UAAU;YACxB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE;SACnC,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;KACxC,EACD,KAAK,CAAC,OAAO,IAAI,IAAI,CACtB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { createElement as h, type ReactNode } from 'react';
|
|
2
|
+
import { type ModalSize } from './Modal.js';
|
|
3
|
+
import { type Translate } from '../../utils/i18n.js';
|
|
4
|
+
/** 确认钮语义档(决定确认钮外观)。 */
|
|
5
|
+
export type ConfirmTone = 'primary' | 'danger' | 'warning';
|
|
6
|
+
export interface ConfirmModalProps {
|
|
7
|
+
title?: ReactNode;
|
|
8
|
+
/** 说明文字 / 任意内容。 */
|
|
9
|
+
message?: ReactNode;
|
|
10
|
+
/** 确认钮语义档(默认 primary;danger=红 / warning=黄)。 */
|
|
11
|
+
tone?: ConfirmTone;
|
|
12
|
+
/** 确认钮文案(默认 i18n「确定」)。 */
|
|
13
|
+
confirmText?: string;
|
|
14
|
+
/** 取消钮文案(默认 i18n「取消」)。 */
|
|
15
|
+
cancelText?: string;
|
|
16
|
+
/** 确认钮定宽(px 或任意 CSS 宽度值);loading 转圈会把按钮撑宽,定宽后不跳。 */
|
|
17
|
+
confirmWidth?: number | string;
|
|
18
|
+
/** 取消钮定宽;同上。 */
|
|
19
|
+
cancelWidth?: number | string;
|
|
20
|
+
/**
|
|
21
|
+
* loading 时是否保留按钮文案(默认 true)。传 `false`:loading 期间按钮清文字、
|
|
22
|
+
* 锁在「有文案」的宽度上、只留一枚居中的圈,settle 后一起还原(见 `Button.loadingText`)。
|
|
23
|
+
*/
|
|
24
|
+
loadingText?: boolean;
|
|
25
|
+
/** 点遮罩是否关闭(默认 true;点了 = 取消)。 */
|
|
26
|
+
closeOnMask?: boolean;
|
|
27
|
+
/** 锁死全部交互(含义见 `Modal.locked`):整框点不动、Tab 进不去、三条关闭路径同时失效。 */
|
|
28
|
+
locked?: boolean;
|
|
29
|
+
/** 外部驱动确认钮 loading(如别处正在刷新)。与按钮自己的异步状态取或。 */
|
|
30
|
+
confirmLoading?: boolean;
|
|
31
|
+
/** 外部驱动取消钮 loading:同上。 */
|
|
32
|
+
cancelLoading?: boolean;
|
|
33
|
+
/** 底栏左侧的一行过程提示(换字即翻牌,超长省略 + hover 跑马灯)。不传 = 不占位。 */
|
|
34
|
+
notice?: string;
|
|
35
|
+
size?: ModalSize;
|
|
36
|
+
/** 确认回调;**返回 Promise 自动转圈 + 整框锁死**,settle 后恢复(关闭与否由你决定)。 */
|
|
37
|
+
onConfirm?: () => unknown;
|
|
38
|
+
/** 取消 / 遮罩 / Esc 回调;异步语义同 `onConfirm`。 */
|
|
39
|
+
onCancel?: () => unknown;
|
|
40
|
+
translate?: Translate;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 确认框(语义层,基于 Modal):双按钮(取消 outline + 确认语义档)、无 ✕;无标题时整条头部消失。
|
|
44
|
+
* 样式封闭:按钮只暴露语义档(tone → variant),不透传任意 className/style。
|
|
45
|
+
*
|
|
46
|
+
* 异步不在这里实现:`onConfirm` / `onCancel` 返回 Promise 时由 `Button` 自动转圈,
|
|
47
|
+
* 它再把「在跑」报上来,这里只负责把它转成 `Modal` 的 `busy`(锁死遮罩 / Esc)。
|
|
48
|
+
*/
|
|
49
|
+
export declare function ConfirmModal(props: ConfirmModalProps): ReturnType<typeof h>;
|
|
50
|
+
//# sourceMappingURL=ConfirmModal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmModal.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/ConfirmModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACpE,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEvD,uBAAuB;AACvB,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;AAE1D,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,mBAAmB;IACnB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC9B,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,gCAAgC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,OAAO,CAAA;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAA;IACxB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CA2C3E"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { createElement as h, useState } from 'react';
|
|
2
|
+
import { Modal } from './Modal.js';
|
|
3
|
+
import { Button } from '../actions/Button.js';
|
|
4
|
+
import { t } from '../../utils/i18n.js';
|
|
5
|
+
/**
|
|
6
|
+
* 确认框(语义层,基于 Modal):双按钮(取消 outline + 确认语义档)、无 ✕;无标题时整条头部消失。
|
|
7
|
+
* 样式封闭:按钮只暴露语义档(tone → variant),不透传任意 className/style。
|
|
8
|
+
*
|
|
9
|
+
* 异步不在这里实现:`onConfirm` / `onCancel` 返回 Promise 时由 `Button` 自动转圈,
|
|
10
|
+
* 它再把「在跑」报上来,这里只负责把它转成 `Modal` 的 `busy`(锁死遮罩 / Esc)。
|
|
11
|
+
*/
|
|
12
|
+
export function ConfirmModal(props) {
|
|
13
|
+
const tt = props.translate ?? t;
|
|
14
|
+
const tone = props.tone ?? 'primary';
|
|
15
|
+
const confirmVariant = tone === 'danger' ? 'danger' : tone === 'warning' ? 'warning' : 'primary';
|
|
16
|
+
const [confirmBusy, setConfirmBusy] = useState(false);
|
|
17
|
+
const [cancelBusy, setCancelBusy] = useState(false);
|
|
18
|
+
// 任一钮在跑(自己点的或外部传的)⇒ 整框不可关。
|
|
19
|
+
const busy = confirmBusy || cancelBusy || props.confirmLoading === true || props.cancelLoading === true;
|
|
20
|
+
return h(Modal, {
|
|
21
|
+
title: props.title,
|
|
22
|
+
size: props.size ?? 'sm',
|
|
23
|
+
hideHeader: props.title === undefined,
|
|
24
|
+
closable: false,
|
|
25
|
+
closeOnMask: props.closeOnMask,
|
|
26
|
+
busy,
|
|
27
|
+
locked: props.locked,
|
|
28
|
+
onClose: props.onCancel,
|
|
29
|
+
notice: props.notice,
|
|
30
|
+
footer: h('div', { style: { display: 'flex', gap: '8px', justifyContent: 'flex-end' } }, h(Button, {
|
|
31
|
+
variant: 'outline',
|
|
32
|
+
width: props.cancelWidth,
|
|
33
|
+
loadingText: props.loadingText,
|
|
34
|
+
loading: props.cancelLoading === true,
|
|
35
|
+
onBusyChange: setCancelBusy,
|
|
36
|
+
onClick: () => props.onCancel?.(),
|
|
37
|
+
}, props.cancelText ?? tt('cancel')), h(Button, {
|
|
38
|
+
variant: confirmVariant,
|
|
39
|
+
width: props.confirmWidth,
|
|
40
|
+
loadingText: props.loadingText,
|
|
41
|
+
loading: props.confirmLoading === true,
|
|
42
|
+
onBusyChange: setConfirmBusy,
|
|
43
|
+
onClick: () => props.onConfirm?.(),
|
|
44
|
+
}, props.confirmText ?? tt('confirm'))),
|
|
45
|
+
}, props.message ?? null);
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=ConfirmModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmModal.js","sourceRoot":"","sources":["../../../src/ui/feedback/ConfirmModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AACpE,OAAO,EAAE,KAAK,EAAkB,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,CAAC,EAAkB,MAAM,qBAAqB,CAAA;AA0CvD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAA;IACpC,MAAM,cAAc,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAChG,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,2BAA2B;IAC3B,MAAM,IAAI,GAAG,WAAW,IAAI,UAAU,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,CAAA;IACvG,OAAO,CAAC,CACN,KAAK,EACL;QACE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,UAAU,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS;QACrC,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,IAAI;QACJ,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,QAAQ;QACvB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,CAAC,CACP,KAAK,EACL,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,EACtE,CAAC,CAAC,MAAM,EAAE;YACR,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,KAAK,CAAC,WAAW;YACxB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,OAAO,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI;YACrC,YAAY,EAAE,aAAa;YAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;SAClC,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EACpC,CAAC,CAAC,MAAM,EAAE;YACR,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE,KAAK,CAAC,YAAY;YACzB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,OAAO,EAAE,KAAK,CAAC,cAAc,KAAK,IAAI;YACtC,YAAY,EAAE,cAAc;YAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE;SACnC,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CACvC;KACF,EACD,KAAK,CAAC,OAAO,IAAI,IAAI,CACtB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loader —— 统一的加载动画图标(UI 基础层 · 反馈族)。
|
|
3
|
+
*
|
|
4
|
+
* 一句话边界:**只画图标本身**。没有背景、没有内距、没有圆角、没有定位。
|
|
5
|
+
* 要圆角底就外面套 `Chip` / `Card`,要浮在屏幕上就自己包一层 fixed 容器 ——
|
|
6
|
+
* 背景与位置属于调用方,不属于这个控件。
|
|
7
|
+
*
|
|
8
|
+
* 两轴正交(不是两个组件,也不是 N×M 份样式):
|
|
9
|
+
* - `variant`:`ring` 开口弧旋转(默认)/ `blocks` 三块脉动
|
|
10
|
+
* - `size`:`xs` 12 / `sm` 16 / `md` 24(默认)/ `lg` 32 / `xl` 48
|
|
11
|
+
*
|
|
12
|
+
* 几何统一画在 `viewBox="0 0 24 24"` 里,尺寸档只改 `width` / `height` ⇒ 等比缩放,
|
|
13
|
+
* 描边与方块的视觉重量在各档一致(12px 下描边 1.5px,48px 下 6px)。
|
|
14
|
+
*
|
|
15
|
+
* 颜色:全程 `currentColor`,自动跟随所在按钮 / 标签的文字色,不给 color 轴
|
|
16
|
+
* (要换色在调用点给 `style={{ color }}` 即可,不必新增参数)。
|
|
17
|
+
*
|
|
18
|
+
* 无障碍:默认 `aria-hidden`(图标本身是装饰,语义由所在按钮的文字 / 卡片的
|
|
19
|
+
* `role="status"` 承担);要让它自己承担语义时传 `label`,此时输出 `role="status"`。
|
|
20
|
+
*
|
|
21
|
+
* 扩展新形态:在 `LoaderVariant` 加一个值 + 本文件加一支几何 + `loader.css` 加一段规则,
|
|
22
|
+
* 不新增导出(形态由数据决定时直接传字符串即可,见 docs/help/ui.md)。
|
|
23
|
+
*/
|
|
24
|
+
import { createElement as h } from 'react';
|
|
25
|
+
/** 尺寸档:只影响 width / height,几何等比缩放。 */
|
|
26
|
+
export type LoaderSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
27
|
+
/** 形态档。 */
|
|
28
|
+
export type LoaderVariant = 'ring' | 'blocks';
|
|
29
|
+
export interface LoaderProps {
|
|
30
|
+
/** 形态,默认 `ring`。 */
|
|
31
|
+
variant?: LoaderVariant;
|
|
32
|
+
/** 尺寸档,默认 `md`。 */
|
|
33
|
+
size?: LoaderSize;
|
|
34
|
+
/**
|
|
35
|
+
* 无障碍文案。不传 = 纯装饰(`aria-hidden`);传了 = 输出 `role="status"` 并由它播报。
|
|
36
|
+
* 按钮里、加载卡里这类**旁边已有文字**的场景不要传。
|
|
37
|
+
*/
|
|
38
|
+
label?: string;
|
|
39
|
+
/** 追加 class(只允许补布局,不许覆盖外观)。 */
|
|
40
|
+
className?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 渲染一个加载动画图标。
|
|
44
|
+
*
|
|
45
|
+
* @param props 见 {@link LoaderProps}。
|
|
46
|
+
* @returns `<svg>` 元素(inline,不占额外行高)。
|
|
47
|
+
*/
|
|
48
|
+
export declare function Loader(props: LoaderProps): ReturnType<typeof h>;
|
|
49
|
+
//# sourceMappingURL=Loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loader.d.ts","sourceRoot":"","sources":["../../../src/ui/feedback/Loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,MAAM,OAAO,CAAA;AAI1C,qCAAqC;AACrC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAEzD,WAAW;AACX,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE7C,MAAM,WAAW,WAAW;IAC1B,oBAAoB;IACpB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,mBAAmB;IACnB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAqCD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAiB/D"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loader —— 统一的加载动画图标(UI 基础层 · 反馈族)。
|
|
3
|
+
*
|
|
4
|
+
* 一句话边界:**只画图标本身**。没有背景、没有内距、没有圆角、没有定位。
|
|
5
|
+
* 要圆角底就外面套 `Chip` / `Card`,要浮在屏幕上就自己包一层 fixed 容器 ——
|
|
6
|
+
* 背景与位置属于调用方,不属于这个控件。
|
|
7
|
+
*
|
|
8
|
+
* 两轴正交(不是两个组件,也不是 N×M 份样式):
|
|
9
|
+
* - `variant`:`ring` 开口弧旋转(默认)/ `blocks` 三块脉动
|
|
10
|
+
* - `size`:`xs` 12 / `sm` 16 / `md` 24(默认)/ `lg` 32 / `xl` 48
|
|
11
|
+
*
|
|
12
|
+
* 几何统一画在 `viewBox="0 0 24 24"` 里,尺寸档只改 `width` / `height` ⇒ 等比缩放,
|
|
13
|
+
* 描边与方块的视觉重量在各档一致(12px 下描边 1.5px,48px 下 6px)。
|
|
14
|
+
*
|
|
15
|
+
* 颜色:全程 `currentColor`,自动跟随所在按钮 / 标签的文字色,不给 color 轴
|
|
16
|
+
* (要换色在调用点给 `style={{ color }}` 即可,不必新增参数)。
|
|
17
|
+
*
|
|
18
|
+
* 无障碍:默认 `aria-hidden`(图标本身是装饰,语义由所在按钮的文字 / 卡片的
|
|
19
|
+
* `role="status"` 承担);要让它自己承担语义时传 `label`,此时输出 `role="status"`。
|
|
20
|
+
*
|
|
21
|
+
* 扩展新形态:在 `LoaderVariant` 加一个值 + 本文件加一支几何 + `loader.css` 加一段规则,
|
|
22
|
+
* 不新增导出(形态由数据决定时直接传字符串即可,见 docs/help/ui.md)。
|
|
23
|
+
*/
|
|
24
|
+
import { createElement as h } from 'react';
|
|
25
|
+
import { ensureComponentStyles } from '../infra/css.js';
|
|
26
|
+
import { LOADER_CSS } from '../infra/controls-css.js';
|
|
27
|
+
/** 形态一:约 265° 的开口弧(周长 59.7,画 44 的空缺留 15.7)。 */
|
|
28
|
+
function ringNode() {
|
|
29
|
+
return h('circle', {
|
|
30
|
+
cx: 12,
|
|
31
|
+
cy: 12,
|
|
32
|
+
r: 9.5,
|
|
33
|
+
fill: 'none',
|
|
34
|
+
stroke: 'currentColor',
|
|
35
|
+
strokeWidth: 3,
|
|
36
|
+
strokeLinecap: 'round',
|
|
37
|
+
strokeDasharray: '44 15.7',
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 形态二:三个圆角短条,横向三等分。
|
|
42
|
+
* 每个 7.2×6.0 —— 正方形在 24px 档看着像「方点」,用户 2026-10-30 指出太丑。
|
|
43
|
+
* 间隔 0.6,左右各留 0.6;三块总宽 22.8,垂直居中于 24 高。
|
|
44
|
+
*/
|
|
45
|
+
function blockNodes() {
|
|
46
|
+
const cells = [0, 1, 2];
|
|
47
|
+
return cells.map((i) => h('rect', {
|
|
48
|
+
key: i,
|
|
49
|
+
className: 'dshpc-loader__node',
|
|
50
|
+
x: 0.6 + i * 7.8,
|
|
51
|
+
y: 9,
|
|
52
|
+
width: 7.2,
|
|
53
|
+
height: 6,
|
|
54
|
+
rx: 1.5,
|
|
55
|
+
fill: 'currentColor',
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 渲染一个加载动画图标。
|
|
60
|
+
*
|
|
61
|
+
* @param props 见 {@link LoaderProps}。
|
|
62
|
+
* @returns `<svg>` 元素(inline,不占额外行高)。
|
|
63
|
+
*/
|
|
64
|
+
export function Loader(props) {
|
|
65
|
+
ensureComponentStyles('loader', LOADER_CSS);
|
|
66
|
+
const { variant = 'ring', size = 'md', label, className } = props;
|
|
67
|
+
const classes = ['dshpc-loader', `dshpc-loader--${variant}`, `dshpc-loader--${size}`];
|
|
68
|
+
if (className !== undefined && className !== '')
|
|
69
|
+
classes.push(className);
|
|
70
|
+
return h('svg', {
|
|
71
|
+
className: classes.join(' '),
|
|
72
|
+
viewBox: '0 0 24 24',
|
|
73
|
+
role: label === undefined ? undefined : 'status',
|
|
74
|
+
'aria-label': label,
|
|
75
|
+
'aria-hidden': label === undefined ? true : undefined,
|
|
76
|
+
focusable: 'false',
|
|
77
|
+
}, variant === 'ring' ? ringNode() : blockNodes());
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=Loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loader.js","sourceRoot":"","sources":["../../../src/ui/feedback/Loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAsBrD,+CAA+C;AAC/C,SAAS,QAAQ;IACf,OAAO,CAAC,CAAC,QAAQ,EAAE;QACjB,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,CAAC,EAAE,GAAG;QACN,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,cAAc;QACtB,WAAW,EAAE,CAAC;QACd,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,SAAS;KAC3B,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU;IACjB,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACvB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACrB,CAAC,CAAC,MAAM,EAAE;QACR,GAAG,EAAE,CAAC;QACN,SAAS,EAAE,oBAAoB;QAC/B,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG;QAChB,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,CAAC;QACT,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,cAAc;KACrB,CAAC,CACH,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAC3C,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IACjE,MAAM,OAAO,GAAG,CAAC,cAAc,EAAE,iBAAiB,OAAO,EAAE,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAA;IACrF,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE;QAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACxE,OAAO,CAAC,CACN,KAAK,EACL;QACE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5B,OAAO,EAAE,WAAW;QACpB,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QAChD,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACrD,SAAS,EAAE,OAAO;KACnB,EACD,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAC/C,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LoaderBar —— 胶囊不定进度 loading(Loader 家族成员)。
|
|
3
|
+
*
|
|
4
|
+
* 图形来源:设计出的「轨道 + 蓝色段 + 斜纹」胶囊条。动画是**不定进度**语义:
|
|
5
|
+
* 蓝色那半截**固定不动**,只有它上面的一道道细斜纹单向流动(0.55 秒走一个条纹周期),
|
|
6
|
+
* 看着像条纹在转,不表示任何百分比。要「确定进度」别改这个控件 —— 它是固定加载态,
|
|
7
|
+
* 不是进度条 API。
|
|
8
|
+
*
|
|
9
|
+
* 尺寸轴按**高度**给(宽固定 4:1):图形本身是横条,套方形的尺寸轴没意义。
|
|
10
|
+
*
|
|
11
|
+
* 实现要点:外层 `<g clip-path>` 静止、只让内层的蓝色段动。若把 `clip-path` 与
|
|
12
|
+
* `transform` 放在同一层,裁剪框会跟着平移,等于没裁,蓝段会跑出胶囊外。
|
|
13
|
+
* clipPath 的 id 由 `useId` 生成(同一页面可能有多个实例,写死 id 会互相抢)。
|
|
14
|
+
*
|
|
15
|
+
* 边界同 `Loader`:不带背景、不带内距、不带定位。
|
|
16
|
+
*
|
|
17
|
+
* ⚠️ 图形数据在 `loader-bar-art.ts`(源 SVG 一次性转录),别手改坐标。
|
|
18
|
+
*/
|
|
19
|
+
import { createElement as h } from 'react';
|
|
20
|
+
import type { LoaderSize } from './Loader.js';
|
|
21
|
+
export interface LoaderBarProps {
|
|
22
|
+
/** 尺寸档(按高度),默认 `md`(96×24)。 */
|
|
23
|
+
size?: LoaderSize;
|
|
24
|
+
/** 是否播放动画,默认 `true`;`false` 时蓝段停在左侧原位。 */
|
|
25
|
+
animated?: boolean;
|
|
26
|
+
/** 无障碍文案。不传 = 纯装饰(`aria-hidden`);传了 = `role="status"` 由它播报。 */
|
|
27
|
+
label?: string;
|
|
28
|
+
/** 追加 class(只允许补布局,不许覆盖外观)。 */
|
|
29
|
+
className?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 渲染胶囊不定进度 loading。
|
|
33
|
+
*
|
|
34
|
+
* @param props 见 {@link LoaderBarProps}。
|
|
35
|
+
* @returns `<svg>` 元素。
|
|
36
|
+
*/
|
|
37
|
+
export declare function LoaderBar(props: LoaderBarProps): ReturnType<typeof h>;
|
|
38
|
+
//# sourceMappingURL=LoaderBar.d.ts.map
|