@zerodep-dev/vue-tsx-pro-ui 0.0.0-stage → 0.2.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/LICENSE +21 -0
- package/README.md +32 -2
- package/dist/base/Badge.d.ts +28 -0
- package/dist/base/Badge.js +72 -0
- package/dist/base/Badge.js.map +1 -0
- package/dist/base/Blockquote.d.ts +13 -0
- package/dist/base/Blockquote.js +26 -0
- package/dist/base/Blockquote.js.map +1 -0
- package/dist/base/Button.d.ts +18 -0
- package/dist/base/Button.js +86 -0
- package/dist/base/Button.js.map +1 -0
- package/dist/base/ButtonBase.d.ts +21 -0
- package/dist/base/ButtonBase.js +51 -0
- package/dist/base/ButtonBase.js.map +1 -0
- package/dist/base/ButtonGroup.d.ts +24 -0
- package/dist/base/ButtonGroup.js +52 -0
- package/dist/base/ButtonGroup.js.map +1 -0
- package/dist/base/CloseButton.d.ts +15 -0
- package/dist/base/CloseButton.js +38 -0
- package/dist/base/CloseButton.js.map +1 -0
- package/dist/base/Code.d.ts +13 -0
- package/dist/base/Code.js +27 -0
- package/dist/base/Code.js.map +1 -0
- package/dist/base/CodeBlock.d.ts +89 -0
- package/dist/base/CodeBlock.js +265 -0
- package/dist/base/CodeBlock.js.map +1 -0
- package/dist/base/CopyButton.d.ts +40 -0
- package/dist/base/CopyButton.js +113 -0
- package/dist/base/CopyButton.js.map +1 -0
- package/dist/base/Heading.d.ts +49 -0
- package/dist/base/Heading.js +122 -0
- package/dist/base/Heading.js.map +1 -0
- package/dist/base/Icon.d.ts +48 -0
- package/dist/base/Icon.js +110 -0
- package/dist/base/Icon.js.map +1 -0
- package/dist/base/IconButton.d.ts +34 -0
- package/dist/base/IconButton.js +81 -0
- package/dist/base/IconButton.js.map +1 -0
- package/dist/base/IconLinkButton.d.ts +34 -0
- package/dist/base/IconLinkButton.js +81 -0
- package/dist/base/IconLinkButton.js.map +1 -0
- package/dist/base/Indicator.d.ts +126 -0
- package/dist/base/Indicator.js +158 -0
- package/dist/base/Indicator.js.map +1 -0
- package/dist/base/Kbd.d.ts +13 -0
- package/dist/base/Kbd.js +34 -0
- package/dist/base/Kbd.js.map +1 -0
- package/dist/base/Link.d.ts +61 -0
- package/dist/base/Link.js +114 -0
- package/dist/base/Link.js.map +1 -0
- package/dist/base/LinkButton.d.ts +18 -0
- package/dist/base/LinkButton.js +109 -0
- package/dist/base/LinkButton.js.map +1 -0
- package/dist/base/List.d.ts +61 -0
- package/dist/base/List.js +116 -0
- package/dist/base/List.js.map +1 -0
- package/dist/base/Mark.d.ts +13 -0
- package/dist/base/Mark.js +23 -0
- package/dist/base/Mark.js.map +1 -0
- package/dist/base/Spinner.d.ts +20 -0
- package/dist/base/Spinner.js +59 -0
- package/dist/base/Spinner.js.map +1 -0
- package/dist/base/StatusDot.d.ts +48 -0
- package/dist/base/StatusDot.js +62 -0
- package/dist/base/StatusDot.js.map +1 -0
- package/dist/base/Tag.d.ts +29 -0
- package/dist/base/Tag.js +92 -0
- package/dist/base/Tag.js.map +1 -0
- package/dist/base/Text.d.ts +57 -0
- package/dist/base/Text.js +74 -0
- package/dist/base/Text.js.map +1 -0
- package/dist/base/VisuallyHidden.d.ts +13 -0
- package/dist/base/VisuallyHidden.js +28 -0
- package/dist/base/VisuallyHidden.js.map +1 -0
- package/dist/base/badge-styles.d.ts +57 -0
- package/dist/base/badge-styles.js +329 -0
- package/dist/base/badge-styles.js.map +1 -0
- package/dist/base/button-core.d.ts +191 -0
- package/dist/base/button-core.js +660 -0
- package/dist/base/button-core.js.map +1 -0
- package/dist/charts/AreaChart.d.ts +18 -0
- package/dist/charts/AreaChart.js +90 -0
- package/dist/charts/AreaChart.js.map +1 -0
- package/dist/charts/BarChart.d.ts +19 -0
- package/dist/charts/BarChart.js +88 -0
- package/dist/charts/BarChart.js.map +1 -0
- package/dist/charts/ChordChart.d.ts +48 -0
- package/dist/charts/ChordChart.js +149 -0
- package/dist/charts/ChordChart.js.map +1 -0
- package/dist/charts/ComboChart.d.ts +30 -0
- package/dist/charts/ComboChart.js +157 -0
- package/dist/charts/ComboChart.js.map +1 -0
- package/dist/charts/DonutChart.d.ts +65 -0
- package/dist/charts/DonutChart.js +162 -0
- package/dist/charts/DonutChart.js.map +1 -0
- package/dist/charts/FunnelChart.d.ts +69 -0
- package/dist/charts/FunnelChart.js +181 -0
- package/dist/charts/FunnelChart.js.map +1 -0
- package/dist/charts/GraphChart.d.ts +135 -0
- package/dist/charts/GraphChart.js +274 -0
- package/dist/charts/GraphChart.js.map +1 -0
- package/dist/charts/LineChart.d.ts +50 -0
- package/dist/charts/LineChart.js +94 -0
- package/dist/charts/LineChart.js.map +1 -0
- package/dist/charts/MapChart.d.ts +167 -0
- package/dist/charts/MapChart.js +627 -0
- package/dist/charts/MapChart.js.map +1 -0
- package/dist/charts/RadarChart.d.ts +60 -0
- package/dist/charts/RadarChart.js +224 -0
- package/dist/charts/RadarChart.js.map +1 -0
- package/dist/charts/SankeyChart.d.ts +57 -0
- package/dist/charts/SankeyChart.js +150 -0
- package/dist/charts/SankeyChart.js.map +1 -0
- package/dist/charts/ScatterChart.d.ts +18 -0
- package/dist/charts/ScatterChart.js +82 -0
- package/dist/charts/ScatterChart.js.map +1 -0
- package/dist/charts/TimelineChart.d.ts +71 -0
- package/dist/charts/TimelineChart.js +267 -0
- package/dist/charts/TimelineChart.js.map +1 -0
- package/dist/charts/TreemapChart.d.ts +40 -0
- package/dist/charts/TreemapChart.js +155 -0
- package/dist/charts/TreemapChart.js.map +1 -0
- package/dist/charts/WaterfallChart.d.ts +61 -0
- package/dist/charts/WaterfallChart.js +167 -0
- package/dist/charts/WaterfallChart.js.map +1 -0
- package/dist/charts/XYChart.d.ts +206 -0
- package/dist/charts/XYChart.js +520 -0
- package/dist/charts/XYChart.js.map +1 -0
- package/dist/charts/axis-ticks.d.ts +23 -0
- package/dist/charts/axis-ticks.js +59 -0
- package/dist/charts/axis-ticks.js.map +1 -0
- package/dist/charts/export.d.ts +17 -0
- package/dist/charts/export.js +65 -0
- package/dist/charts/export.js.map +1 -0
- package/dist/charts/flow.d.ts +53 -0
- package/dist/charts/flow.js +29 -0
- package/dist/charts/flow.js.map +1 -0
- package/dist/charts/frame.d.ts +147 -0
- package/dist/charts/frame.js +358 -0
- package/dist/charts/frame.js.map +1 -0
- package/dist/charts/index.d.ts +30 -0
- package/dist/charts/index.js +24 -0
- package/dist/charts/label-layout.d.ts +59 -0
- package/dist/charts/label-layout.js +64 -0
- package/dist/charts/label-layout.js.map +1 -0
- package/dist/charts/series.d.ts +36 -0
- package/dist/charts/series.js +60 -0
- package/dist/charts/series.js.map +1 -0
- package/dist/charts/single.d.ts +41 -0
- package/dist/charts/single.js +65 -0
- package/dist/charts/single.js.map +1 -0
- package/dist/code-editor/CodeEditor.d.ts +18 -0
- package/dist/code-editor/CodeEditor.js +57 -0
- package/dist/code-editor/CodeEditor.js.map +1 -0
- package/dist/code-editor/editor.d.ts +52 -0
- package/dist/code-editor/editor.js +225 -0
- package/dist/code-editor/editor.js.map +1 -0
- package/dist/code-editor/index.d.ts +9 -0
- package/dist/code-editor/index.js +3 -0
- package/dist/config/Provider.d.ts +52 -0
- package/dist/config/Provider.js +111 -0
- package/dist/config/Provider.js.map +1 -0
- package/dist/config/context.d.ts +90 -0
- package/dist/config/context.js +58 -0
- package/dist/config/context.js.map +1 -0
- package/dist/config/createUi.d.ts +52 -0
- package/dist/config/createUi.js +96 -0
- package/dist/config/createUi.js.map +1 -0
- package/dist/config/defaults.d.ts +71 -0
- package/dist/config/defaults.js +45 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/lang/en-US.d.ts +3 -0
- package/dist/config/lang/en-US.js +404 -0
- package/dist/config/lang/en-US.js.map +1 -0
- package/dist/config/lang/format.d.ts +51 -0
- package/dist/config/lang/format.js +120 -0
- package/dist/config/lang/format.js.map +1 -0
- package/dist/config/lang/lang.d.ts +666 -0
- package/dist/config/lang/lang.js +31 -0
- package/dist/config/lang/lang.js.map +1 -0
- package/dist/config/lang/messages.d.ts +12 -0
- package/dist/config/lang/messages.js +36 -0
- package/dist/config/lang/messages.js.map +1 -0
- package/dist/config/lang/zh-CN.d.ts +3 -0
- package/dist/config/lang/zh-CN.js +404 -0
- package/dist/config/lang/zh-CN.js.map +1 -0
- package/dist/config/pinyin.d.ts +3 -0
- package/dist/config/pinyin.js +26 -0
- package/dist/config/pinyin.js.map +1 -0
- package/dist/config/query-state.d.ts +61 -0
- package/dist/config/query-state.js +113 -0
- package/dist/config/query-state.js.map +1 -0
- package/dist/config/shiki.d.ts +13 -0
- package/dist/config/shiki.js +97 -0
- package/dist/config/shiki.js.map +1 -0
- package/dist/config/styles.d.ts +108 -0
- package/dist/config/styles.js +59 -0
- package/dist/config/styles.js.map +1 -0
- package/dist/config/theme/boot.d.ts +97 -0
- package/dist/config/theme/boot.js +90 -0
- package/dist/config/theme/boot.js.map +1 -0
- package/dist/config/theme/builtin.d.ts +21 -0
- package/dist/config/theme/builtin.js +58 -0
- package/dist/config/theme/builtin.js.map +1 -0
- package/dist/config/theme/coffee.d.ts +84 -0
- package/dist/config/theme/coffee.js +102 -0
- package/dist/config/theme/coffee.js.map +1 -0
- package/dist/config/theme/cyberpunk.d.ts +110 -0
- package/dist/config/theme/cyberpunk.js +125 -0
- package/dist/config/theme/cyberpunk.js.map +1 -0
- package/dist/config/theme/dark.d.ts +90 -0
- package/dist/config/theme/dark.js +106 -0
- package/dist/config/theme/dark.js.map +1 -0
- package/dist/config/theme/festive.d.ts +93 -0
- package/dist/config/theme/festive.js +110 -0
- package/dist/config/theme/festive.js.map +1 -0
- package/dist/config/theme/forest.d.ts +93 -0
- package/dist/config/theme/forest.js +109 -0
- package/dist/config/theme/forest.js.map +1 -0
- package/dist/config/theme/high-contrast.d.ts +103 -0
- package/dist/config/theme/high-contrast.js +119 -0
- package/dist/config/theme/high-contrast.js.map +1 -0
- package/dist/config/theme/lemon.d.ts +103 -0
- package/dist/config/theme/lemon.js +119 -0
- package/dist/config/theme/lemon.js.map +1 -0
- package/dist/config/theme/light.d.ts +107 -0
- package/dist/config/theme/light.js +122 -0
- package/dist/config/theme/light.js.map +1 -0
- package/dist/config/theme/midnight.d.ts +86 -0
- package/dist/config/theme/midnight.js +103 -0
- package/dist/config/theme/midnight.js.map +1 -0
- package/dist/config/theme/ocean.d.ts +103 -0
- package/dist/config/theme/ocean.js +119 -0
- package/dist/config/theme/ocean.js.map +1 -0
- package/dist/config/theme/paper.d.ts +101 -0
- package/dist/config/theme/paper.js +117 -0
- package/dist/config/theme/paper.js.map +1 -0
- package/dist/config/theme/preference.d.ts +34 -0
- package/dist/config/theme/preference.js +67 -0
- package/dist/config/theme/preference.js.map +1 -0
- package/dist/config/theme/sakura.d.ts +103 -0
- package/dist/config/theme/sakura.js +119 -0
- package/dist/config/theme/sakura.js.map +1 -0
- package/dist/config/theme/theme.d.ts +59 -0
- package/dist/config/theme/theme.js +68 -0
- package/dist/config/theme/theme.js.map +1 -0
- package/dist/config/theme/token-names.d.ts +1897 -0
- package/dist/config/theme/tokens.d.ts +833 -0
- package/dist/config/theme/tokens.js +480 -0
- package/dist/config/theme/tokens.js.map +1 -0
- package/dist/config/vue-router.d.ts +67 -0
- package/dist/config/vue-router.js +143 -0
- package/dist/config/vue-router.js.map +1 -0
- package/dist/date/Calendar.d.ts +36 -0
- package/dist/date/Calendar.js +83 -0
- package/dist/date/Calendar.js.map +1 -0
- package/dist/date/CalendarBoard.d.ts +79 -0
- package/dist/date/CalendarBoard.js +403 -0
- package/dist/date/CalendarBoard.js.map +1 -0
- package/dist/date/CalendarView.d.ts +86 -0
- package/dist/date/CalendarView.js +427 -0
- package/dist/date/CalendarView.js.map +1 -0
- package/dist/date/Countdown.d.ts +45 -0
- package/dist/date/Countdown.js +75 -0
- package/dist/date/Countdown.js.map +1 -0
- package/dist/date/DateField.d.ts +34 -0
- package/dist/date/DateField.js +124 -0
- package/dist/date/DateField.js.map +1 -0
- package/dist/date/DatePicker.d.ts +41 -0
- package/dist/date/DatePicker.js +272 -0
- package/dist/date/DatePicker.js.map +1 -0
- package/dist/date/DateRangePicker.d.ts +71 -0
- package/dist/date/DateRangePicker.js +411 -0
- package/dist/date/DateRangePicker.js.map +1 -0
- package/dist/date/DateSegmentGroup.d.ts +38 -0
- package/dist/date/DateSegmentGroup.js +176 -0
- package/dist/date/DateSegmentGroup.js.map +1 -0
- package/dist/date/DateTime.d.ts +21 -0
- package/dist/date/DateTime.js +39 -0
- package/dist/date/DateTime.js.map +1 -0
- package/dist/date/QuarterCalendar.d.ts +22 -0
- package/dist/date/QuarterCalendar.js +231 -0
- package/dist/date/QuarterCalendar.js.map +1 -0
- package/dist/date/RangeCalendar.d.ts +24 -0
- package/dist/date/RangeCalendar.js +89 -0
- package/dist/date/RangeCalendar.js.map +1 -0
- package/dist/date/RelativeTime.d.ts +16 -0
- package/dist/date/RelativeTime.js +61 -0
- package/dist/date/RelativeTime.js.map +1 -0
- package/dist/date/SegmentedField.d.ts +60 -0
- package/dist/date/SegmentedField.js +175 -0
- package/dist/date/SegmentedField.js.map +1 -0
- package/dist/date/TimeField.d.ts +36 -0
- package/dist/date/TimeField.js +56 -0
- package/dist/date/TimeField.js.map +1 -0
- package/dist/date/TimePicker.d.ts +25 -0
- package/dist/date/TimePicker.js +206 -0
- package/dist/date/TimePicker.js.map +1 -0
- package/dist/date/calendar-state.d.ts +119 -0
- package/dist/date/calendar-state.js +267 -0
- package/dist/date/calendar-state.js.map +1 -0
- package/dist/date/clock.d.ts +11 -0
- package/dist/date/clock.js +37 -0
- package/dist/date/clock.js.map +1 -0
- package/dist/date/date-locale.d.ts +67 -0
- package/dist/date/date-locale.js +89 -0
- package/dist/date/date-locale.js.map +1 -0
- package/dist/date/date-segments.d.ts +132 -0
- package/dist/date/date-segments.js +410 -0
- package/dist/date/date-segments.js.map +1 -0
- package/dist/date/picker-popover.d.ts +88 -0
- package/dist/date/picker-popover.js +126 -0
- package/dist/date/picker-popover.js.map +1 -0
- package/dist/diagram/Diagram.d.ts +223 -0
- package/dist/diagram/Diagram.js +1121 -0
- package/dist/diagram/Diagram.js.map +1 -0
- package/dist/diagram/DiagramControls.d.ts +35 -0
- package/dist/diagram/DiagramControls.js +114 -0
- package/dist/diagram/DiagramControls.js.map +1 -0
- package/dist/diagram/DiagramLanes.d.ts +49 -0
- package/dist/diagram/DiagramLanes.js +92 -0
- package/dist/diagram/DiagramLanes.js.map +1 -0
- package/dist/diagram/DiagramMinimap.d.ts +39 -0
- package/dist/diagram/DiagramMinimap.js +133 -0
- package/dist/diagram/DiagramMinimap.js.map +1 -0
- package/dist/diagram/DiagramNode.d.ts +65 -0
- package/dist/diagram/DiagramNode.js +142 -0
- package/dist/diagram/DiagramNode.js.map +1 -0
- package/dist/diagram/controller.d.ts +68 -0
- package/dist/diagram/controller.js +117 -0
- package/dist/diagram/controller.js.map +1 -0
- package/dist/diagram/export.d.ts +14 -0
- package/dist/diagram/export.js +115 -0
- package/dist/diagram/export.js.map +1 -0
- package/dist/diagram/geometry.d.ts +65 -0
- package/dist/diagram/geometry.js +219 -0
- package/dist/diagram/geometry.js.map +1 -0
- package/dist/diagram/index.d.ts +20 -0
- package/dist/diagram/index.js +12 -0
- package/dist/diagram/layout.d.ts +57 -0
- package/dist/diagram/layout.js +50 -0
- package/dist/diagram/layout.js.map +1 -0
- package/dist/diagram/messages.d.ts +28 -0
- package/dist/diagram/messages.js +30 -0
- package/dist/diagram/messages.js.map +1 -0
- package/dist/diagram/route.d.ts +81 -0
- package/dist/diagram/route.js +327 -0
- package/dist/diagram/route.js.map +1 -0
- package/dist/display/Accordion.d.ts +71 -0
- package/dist/display/Accordion.js +219 -0
- package/dist/display/Accordion.js.map +1 -0
- package/dist/display/AnimatedNumber.d.ts +44 -0
- package/dist/display/AnimatedNumber.js +97 -0
- package/dist/display/AnimatedNumber.js.map +1 -0
- package/dist/display/Avatar.d.ts +74 -0
- package/dist/display/Avatar.js +158 -0
- package/dist/display/Avatar.js.map +1 -0
- package/dist/display/AvatarGroup.d.ts +29 -0
- package/dist/display/AvatarGroup.js +67 -0
- package/dist/display/AvatarGroup.js.map +1 -0
- package/dist/display/Card.d.ts +219 -0
- package/dist/display/Card.js +319 -0
- package/dist/display/Card.js.map +1 -0
- package/dist/display/Checklist.d.ts +93 -0
- package/dist/display/Checklist.js +260 -0
- package/dist/display/Checklist.js.map +1 -0
- package/dist/display/Collapse.d.ts +24 -0
- package/dist/display/Collapse.js +65 -0
- package/dist/display/Collapse.js.map +1 -0
- package/dist/display/Collapsible.d.ts +12 -0
- package/dist/display/Collapsible.js +41 -0
- package/dist/display/Collapsible.js.map +1 -0
- package/dist/display/Descriptions.d.ts +88 -0
- package/dist/display/Descriptions.js +185 -0
- package/dist/display/Descriptions.js.map +1 -0
- package/dist/display/Ellipsis.d.ts +29 -0
- package/dist/display/Ellipsis.js +111 -0
- package/dist/display/Ellipsis.js.map +1 -0
- package/dist/display/FieldCompare.d.ts +58 -0
- package/dist/display/FieldCompare.js +205 -0
- package/dist/display/FieldCompare.js.map +1 -0
- package/dist/display/Gauge.d.ts +60 -0
- package/dist/display/Gauge.js +215 -0
- package/dist/display/Gauge.js.map +1 -0
- package/dist/display/Image.d.ts +87 -0
- package/dist/display/Image.js +212 -0
- package/dist/display/Image.js.map +1 -0
- package/dist/display/ItemList.d.ts +69 -0
- package/dist/display/ItemList.js +147 -0
- package/dist/display/ItemList.js.map +1 -0
- package/dist/display/Marquee.d.ts +59 -0
- package/dist/display/Marquee.js +155 -0
- package/dist/display/Marquee.js.map +1 -0
- package/dist/display/ProportionBar.d.ts +55 -0
- package/dist/display/ProportionBar.js +99 -0
- package/dist/display/ProportionBar.js.map +1 -0
- package/dist/display/Sortable.d.ts +43 -0
- package/dist/display/Sortable.js +163 -0
- package/dist/display/Sortable.js.map +1 -0
- package/dist/display/Sparkline.d.ts +48 -0
- package/dist/display/Sparkline.js +130 -0
- package/dist/display/Sparkline.js.map +1 -0
- package/dist/display/Stat.d.ts +105 -0
- package/dist/display/Stat.js +268 -0
- package/dist/display/Stat.js.map +1 -0
- package/dist/display/Timeline.d.ts +106 -0
- package/dist/display/Timeline.js +257 -0
- package/dist/display/Timeline.js.map +1 -0
- package/dist/display/Tree.d.ts +132 -0
- package/dist/display/Tree.js +645 -0
- package/dist/display/Tree.js.map +1 -0
- package/dist/display/VirtualList.d.ts +80 -0
- package/dist/display/VirtualList.js +166 -0
- package/dist/display/VirtualList.js.map +1 -0
- package/dist/display/Watermark.d.ts +39 -0
- package/dist/display/Watermark.js +130 -0
- package/dist/display/Watermark.js.map +1 -0
- package/dist/docs-kit/CodeGroup.d.ts +29 -0
- package/dist/docs-kit/CodeGroup.js +81 -0
- package/dist/docs-kit/CodeGroup.js.map +1 -0
- package/dist/docs-kit/CodePreview.d.ts +60 -0
- package/dist/docs-kit/CodePreview.js +183 -0
- package/dist/docs-kit/CodePreview.js.map +1 -0
- package/dist/docs-kit/ColorSwatch.d.ts +28 -0
- package/dist/docs-kit/ColorSwatch.js +85 -0
- package/dist/docs-kit/ColorSwatch.js.map +1 -0
- package/dist/docs-kit/PropsTable.d.ts +73 -0
- package/dist/docs-kit/PropsTable.js +122 -0
- package/dist/docs-kit/PropsTable.js.map +1 -0
- package/dist/docs-kit/index.d.ts +13 -0
- package/dist/docs-kit/index.js +6 -0
- package/dist/docs-kit/messages.d.ts +25 -0
- package/dist/docs-kit/messages.js +30 -0
- package/dist/docs-kit/messages.js.map +1 -0
- package/dist/feedback/Alert.d.ts +83 -0
- package/dist/feedback/Alert.js +179 -0
- package/dist/feedback/Alert.js.map +1 -0
- package/dist/feedback/Banner.d.ts +60 -0
- package/dist/feedback/Banner.js +122 -0
- package/dist/feedback/Banner.js.map +1 -0
- package/dist/feedback/Empty.d.ts +38 -0
- package/dist/feedback/Empty.js +114 -0
- package/dist/feedback/Empty.js.map +1 -0
- package/dist/feedback/LoadingBar.d.ts +45 -0
- package/dist/feedback/LoadingBar.js +124 -0
- package/dist/feedback/LoadingBar.js.map +1 -0
- package/dist/feedback/LoadingOverlay.d.ts +29 -0
- package/dist/feedback/LoadingOverlay.js +70 -0
- package/dist/feedback/LoadingOverlay.js.map +1 -0
- package/dist/feedback/Progress.d.ts +215 -0
- package/dist/feedback/Progress.js +437 -0
- package/dist/feedback/Progress.js.map +1 -0
- package/dist/feedback/Result.d.ts +69 -0
- package/dist/feedback/Result.js +165 -0
- package/dist/feedback/Result.js.map +1 -0
- package/dist/feedback/Skeleton.d.ts +50 -0
- package/dist/feedback/Skeleton.js +100 -0
- package/dist/feedback/Skeleton.js.map +1 -0
- package/dist/feedback/SkeletonText.d.ts +25 -0
- package/dist/feedback/SkeletonText.js +40 -0
- package/dist/feedback/SkeletonText.js.map +1 -0
- package/dist/feedback/Toast.d.ts +204 -0
- package/dist/feedback/Toast.js +572 -0
- package/dist/feedback/Toast.js.map +1 -0
- package/dist/form/Field.d.ts +165 -0
- package/dist/form/Field.js +338 -0
- package/dist/form/Field.js.map +1 -0
- package/dist/form/Form.d.ts +14 -0
- package/dist/form/Form.js +66 -0
- package/dist/form/Form.js.map +1 -0
- package/dist/form/FormErrorSummary.d.ts +23 -0
- package/dist/form/FormErrorSummary.js +102 -0
- package/dist/form/FormErrorSummary.js.map +1 -0
- package/dist/form/FormSection.d.ts +66 -0
- package/dist/form/FormSection.js +227 -0
- package/dist/form/FormSection.js.map +1 -0
- package/dist/form/FormValue.d.ts +17 -0
- package/dist/form/FormValue.js +40 -0
- package/dist/form/FormValue.js.map +1 -0
- package/dist/form/field-layout.d.ts +34 -0
- package/dist/form/field-layout.js +39 -0
- package/dist/form/field-layout.js.map +1 -0
- package/dist/form/form-constraints.d.ts +38 -0
- package/dist/form/form-constraints.js +131 -0
- package/dist/form/form-constraints.js.map +1 -0
- package/dist/form/leave-confirmation.d.ts +9 -0
- package/dist/form/leave-confirmation.js +31 -0
- package/dist/form/leave-confirmation.js.map +1 -0
- package/dist/form/schemas.d.ts +52 -0
- package/dist/form/schemas.js +97 -0
- package/dist/form/schemas.js.map +1 -0
- package/dist/form/useForm.d.ts +195 -0
- package/dist/form/useForm.js +416 -0
- package/dist/form/useForm.js.map +1 -0
- package/dist/index.d.ts +285 -0
- package/dist/index.js +285 -0
- package/dist/input/Autocomplete.d.ts +14 -0
- package/dist/input/Autocomplete.js +35 -0
- package/dist/input/Autocomplete.js.map +1 -0
- package/dist/input/Cascader.d.ts +86 -0
- package/dist/input/Cascader.js +593 -0
- package/dist/input/Cascader.js.map +1 -0
- package/dist/input/CharacterCount.d.ts +21 -0
- package/dist/input/CharacterCount.js +47 -0
- package/dist/input/CharacterCount.js.map +1 -0
- package/dist/input/Checkbox.d.ts +93 -0
- package/dist/input/Checkbox.js +250 -0
- package/dist/input/Checkbox.js.map +1 -0
- package/dist/input/ColorField.d.ts +37 -0
- package/dist/input/ColorField.js +143 -0
- package/dist/input/ColorField.js.map +1 -0
- package/dist/input/Combobox.d.ts +75 -0
- package/dist/input/Combobox.js +321 -0
- package/dist/input/Combobox.js.map +1 -0
- package/dist/input/ConditionBuilder.d.ts +55 -0
- package/dist/input/ConditionBuilder.js +471 -0
- package/dist/input/ConditionBuilder.js.map +1 -0
- package/dist/input/ControlGroup.d.ts +26 -0
- package/dist/input/ControlGroup.js +50 -0
- package/dist/input/ControlGroup.js.map +1 -0
- package/dist/input/FileDrop.d.ts +49 -0
- package/dist/input/FileDrop.js +201 -0
- package/dist/input/FileDrop.js.map +1 -0
- package/dist/input/ListPopover.d.ts +39 -0
- package/dist/input/ListPopover.js +81 -0
- package/dist/input/ListPopover.js.map +1 -0
- package/dist/input/Listbox.d.ts +91 -0
- package/dist/input/Listbox.js +408 -0
- package/dist/input/Listbox.js.map +1 -0
- package/dist/input/Mentions.d.ts +74 -0
- package/dist/input/Mentions.js +287 -0
- package/dist/input/Mentions.js.map +1 -0
- package/dist/input/NumberField.d.ts +64 -0
- package/dist/input/NumberField.js +288 -0
- package/dist/input/NumberField.js.map +1 -0
- package/dist/input/NumberRangeField.d.ts +58 -0
- package/dist/input/NumberRangeField.js +157 -0
- package/dist/input/NumberRangeField.js.map +1 -0
- package/dist/input/OtpField.d.ts +58 -0
- package/dist/input/OtpField.js +200 -0
- package/dist/input/OtpField.js.map +1 -0
- package/dist/input/PeoplePicker.d.ts +42 -0
- package/dist/input/PeoplePicker.js +185 -0
- package/dist/input/PeoplePicker.js.map +1 -0
- package/dist/input/PeoplePickerPanel.d.ts +42 -0
- package/dist/input/PeoplePickerPanel.js +357 -0
- package/dist/input/PeoplePickerPanel.js.map +1 -0
- package/dist/input/Radio.d.ts +90 -0
- package/dist/input/Radio.js +211 -0
- package/dist/input/Radio.js.map +1 -0
- package/dist/input/Rating.d.ts +62 -0
- package/dist/input/Rating.js +225 -0
- package/dist/input/Rating.js.map +1 -0
- package/dist/input/Select.d.ts +97 -0
- package/dist/input/Select.js +455 -0
- package/dist/input/Select.js.map +1 -0
- package/dist/input/SelectedTags.d.ts +28 -0
- package/dist/input/SelectedTags.js +81 -0
- package/dist/input/SelectedTags.js.map +1 -0
- package/dist/input/Slider.d.ts +99 -0
- package/dist/input/Slider.js +343 -0
- package/dist/input/Slider.js.map +1 -0
- package/dist/input/Switch.d.ts +63 -0
- package/dist/input/Switch.js +198 -0
- package/dist/input/Switch.js.map +1 -0
- package/dist/input/TagsInput.d.ts +70 -0
- package/dist/input/TagsInput.js +314 -0
- package/dist/input/TagsInput.js.map +1 -0
- package/dist/input/TextField.d.ts +51 -0
- package/dist/input/TextField.js +185 -0
- package/dist/input/TextField.js.map +1 -0
- package/dist/input/Textarea.d.ts +50 -0
- package/dist/input/Textarea.js +146 -0
- package/dist/input/Textarea.js.map +1 -0
- package/dist/input/ToggleGroup.d.ts +82 -0
- package/dist/input/ToggleGroup.js +211 -0
- package/dist/input/ToggleGroup.js.map +1 -0
- package/dist/input/Transfer.d.ts +67 -0
- package/dist/input/Transfer.js +407 -0
- package/dist/input/Transfer.js.map +1 -0
- package/dist/input/TreeSelect.d.ts +94 -0
- package/dist/input/TreeSelect.js +412 -0
- package/dist/input/TreeSelect.js.map +1 -0
- package/dist/input/Upload.d.ts +143 -0
- package/dist/input/Upload.js +598 -0
- package/dist/input/Upload.js.map +1 -0
- package/dist/input/choice-styles.d.ts +117 -0
- package/dist/input/choice-styles.js +176 -0
- package/dist/input/choice-styles.js.map +1 -0
- package/dist/input/condition.d.ts +153 -0
- package/dist/input/condition.js +187 -0
- package/dist/input/condition.js.map +1 -0
- package/dist/input/control.d.ts +160 -0
- package/dist/input/control.js +236 -0
- package/dist/input/control.js.map +1 -0
- package/dist/input/list-state.d.ts +118 -0
- package/dist/input/list-state.js +186 -0
- package/dist/input/list-state.js.map +1 -0
- package/dist/input/people.d.ts +66 -0
- package/dist/input/people.js +47 -0
- package/dist/input/people.js.map +1 -0
- package/dist/input/remote-items.d.ts +22 -0
- package/dist/input/remote-items.js +41 -0
- package/dist/input/remote-items.js.map +1 -0
- package/dist/input/text-format.d.ts +46 -0
- package/dist/input/text-format.js +64 -0
- package/dist/input/text-format.js.map +1 -0
- package/dist/layout/Affix.d.ts +32 -0
- package/dist/layout/Affix.js +81 -0
- package/dist/layout/Affix.js.map +1 -0
- package/dist/layout/AsideLayout.d.ts +45 -0
- package/dist/layout/AsideLayout.js +69 -0
- package/dist/layout/AsideLayout.js.map +1 -0
- package/dist/layout/BackTop.d.ts +16 -0
- package/dist/layout/BackTop.js +83 -0
- package/dist/layout/BackTop.js.map +1 -0
- package/dist/layout/Container.d.ts +60 -0
- package/dist/layout/Container.js +62 -0
- package/dist/layout/Container.js.map +1 -0
- package/dist/layout/Flex.d.ts +116 -0
- package/dist/layout/Flex.js +109 -0
- package/dist/layout/Flex.js.map +1 -0
- package/dist/layout/Grid.d.ts +139 -0
- package/dist/layout/Grid.js +168 -0
- package/dist/layout/Grid.js.map +1 -0
- package/dist/layout/PageScrollbar.d.ts +20 -0
- package/dist/layout/PageScrollbar.js +49 -0
- package/dist/layout/PageScrollbar.js.map +1 -0
- package/dist/layout/Prose.d.ts +19 -0
- package/dist/layout/Prose.js +37 -0
- package/dist/layout/Prose.js.map +1 -0
- package/dist/layout/ResizeHandle.d.ts +28 -0
- package/dist/layout/ResizeHandle.js +94 -0
- package/dist/layout/ResizeHandle.js.map +1 -0
- package/dist/layout/ScrollArea.d.ts +99 -0
- package/dist/layout/ScrollArea.js +344 -0
- package/dist/layout/ScrollArea.js.map +1 -0
- package/dist/layout/Separator.d.ts +47 -0
- package/dist/layout/Separator.js +96 -0
- package/dist/layout/Separator.js.map +1 -0
- package/dist/layout/Splitter.d.ts +75 -0
- package/dist/layout/Splitter.js +236 -0
- package/dist/layout/Splitter.js.map +1 -0
- package/dist/layout/ViewportFill.d.ts +26 -0
- package/dist/layout/ViewportFill.js +59 -0
- package/dist/layout/ViewportFill.js.map +1 -0
- package/dist/navigation/Breadcrumbs.d.ts +59 -0
- package/dist/navigation/Breadcrumbs.js +150 -0
- package/dist/navigation/Breadcrumbs.js.map +1 -0
- package/dist/navigation/NavBar.d.ts +35 -0
- package/dist/navigation/NavBar.js +182 -0
- package/dist/navigation/NavBar.js.map +1 -0
- package/dist/navigation/NavList.d.ts +112 -0
- package/dist/navigation/NavList.js +375 -0
- package/dist/navigation/NavList.js.map +1 -0
- package/dist/navigation/PageJump.d.ts +27 -0
- package/dist/navigation/PageJump.js +77 -0
- package/dist/navigation/PageJump.js.map +1 -0
- package/dist/navigation/PageSizeSelect.d.ts +19 -0
- package/dist/navigation/PageSizeSelect.js +65 -0
- package/dist/navigation/PageSizeSelect.js.map +1 -0
- package/dist/navigation/Pager.d.ts +30 -0
- package/dist/navigation/Pager.js +111 -0
- package/dist/navigation/Pager.js.map +1 -0
- package/dist/navigation/Pagination.d.ts +51 -0
- package/dist/navigation/Pagination.js +157 -0
- package/dist/navigation/Pagination.js.map +1 -0
- package/dist/navigation/PaginationBar.d.ts +54 -0
- package/dist/navigation/PaginationBar.js +125 -0
- package/dist/navigation/PaginationBar.js.map +1 -0
- package/dist/navigation/SkipLink.d.ts +16 -0
- package/dist/navigation/SkipLink.js +58 -0
- package/dist/navigation/SkipLink.js.map +1 -0
- package/dist/navigation/Steps.d.ts +93 -0
- package/dist/navigation/Steps.js +198 -0
- package/dist/navigation/Steps.js.map +1 -0
- package/dist/navigation/TableOfContents.d.ts +32 -0
- package/dist/navigation/TableOfContents.js +119 -0
- package/dist/navigation/TableOfContents.js.map +1 -0
- package/dist/navigation/Tabs.d.ts +208 -0
- package/dist/navigation/Tabs.js +626 -0
- package/dist/navigation/Tabs.js.map +1 -0
- package/dist/navigation/Toolbar.d.ts +39 -0
- package/dist/navigation/Toolbar.js +67 -0
- package/dist/navigation/Toolbar.js.map +1 -0
- package/dist/overlay/AlertDialog.d.ts +43 -0
- package/dist/overlay/AlertDialog.js +106 -0
- package/dist/overlay/AlertDialog.js.map +1 -0
- package/dist/overlay/CommandPalette.d.ts +64 -0
- package/dist/overlay/CommandPalette.js +250 -0
- package/dist/overlay/CommandPalette.js.map +1 -0
- package/dist/overlay/ContextMenu.d.ts +21 -0
- package/dist/overlay/ContextMenu.js +76 -0
- package/dist/overlay/ContextMenu.js.map +1 -0
- package/dist/overlay/Dialog.d.ts +70 -0
- package/dist/overlay/Dialog.js +91 -0
- package/dist/overlay/Dialog.js.map +1 -0
- package/dist/overlay/Drawer.d.ts +186 -0
- package/dist/overlay/Drawer.js +214 -0
- package/dist/overlay/Drawer.js.map +1 -0
- package/dist/overlay/HoverCard.d.ts +48 -0
- package/dist/overlay/HoverCard.js +86 -0
- package/dist/overlay/HoverCard.js.map +1 -0
- package/dist/overlay/Lightbox.d.ts +57 -0
- package/dist/overlay/Lightbox.js +374 -0
- package/dist/overlay/Lightbox.js.map +1 -0
- package/dist/overlay/Menu.d.ts +218 -0
- package/dist/overlay/Menu.js +816 -0
- package/dist/overlay/Menu.js.map +1 -0
- package/dist/overlay/ModalCore.d.ts +132 -0
- package/dist/overlay/ModalCore.js +274 -0
- package/dist/overlay/ModalCore.js.map +1 -0
- package/dist/overlay/Popconfirm.d.ts +49 -0
- package/dist/overlay/Popconfirm.js +167 -0
- package/dist/overlay/Popconfirm.js.map +1 -0
- package/dist/overlay/Popover.d.ts +40 -0
- package/dist/overlay/Popover.js +96 -0
- package/dist/overlay/Popover.js.map +1 -0
- package/dist/overlay/Tooltip.d.ts +47 -0
- package/dist/overlay/Tooltip.js +86 -0
- package/dist/overlay/Tooltip.js.map +1 -0
- package/dist/overlay/Tour.d.ts +74 -0
- package/dist/overlay/Tour.js +309 -0
- package/dist/overlay/Tour.js.map +1 -0
- package/dist/overlay/detached.d.ts +40 -0
- package/dist/overlay/detached.js +109 -0
- package/dist/overlay/detached.js.map +1 -0
- package/dist/patterns/ActionBar.d.ts +29 -0
- package/dist/patterns/ActionBar.js +75 -0
- package/dist/patterns/ActionBar.js.map +1 -0
- package/dist/patterns/AppShell.d.ts +168 -0
- package/dist/patterns/AppShell.js +620 -0
- package/dist/patterns/AppShell.js.map +1 -0
- package/dist/patterns/CommentThread.d.ts +128 -0
- package/dist/patterns/CommentThread.js +386 -0
- package/dist/patterns/CommentThread.js.map +1 -0
- package/dist/patterns/DataImport.d.ts +72 -0
- package/dist/patterns/DataImport.js +486 -0
- package/dist/patterns/DataImport.js.map +1 -0
- package/dist/patterns/DeadlineBadge.d.ts +21 -0
- package/dist/patterns/DeadlineBadge.js +76 -0
- package/dist/patterns/DeadlineBadge.js.map +1 -0
- package/dist/patterns/FilterBar.d.ts +66 -0
- package/dist/patterns/FilterBar.js +254 -0
- package/dist/patterns/FilterBar.js.map +1 -0
- package/dist/patterns/KanbanBoard.d.ts +79 -0
- package/dist/patterns/KanbanBoard.js +294 -0
- package/dist/patterns/KanbanBoard.js.map +1 -0
- package/dist/patterns/NotificationCenter.d.ts +110 -0
- package/dist/patterns/NotificationCenter.js +342 -0
- package/dist/patterns/NotificationCenter.js.map +1 -0
- package/dist/patterns/PageTabs.d.ts +30 -0
- package/dist/patterns/PageTabs.js +97 -0
- package/dist/patterns/PageTabs.js.map +1 -0
- package/dist/patterns/QueryTable.d.ts +67 -0
- package/dist/patterns/QueryTable.js +301 -0
- package/dist/patterns/QueryTable.js.map +1 -0
- package/dist/patterns/StepsForm.d.ts +49 -0
- package/dist/patterns/StepsForm.js +130 -0
- package/dist/patterns/StepsForm.js.map +1 -0
- package/dist/patterns/ThemeSwitcher.d.ts +20 -0
- package/dist/patterns/ThemeSwitcher.js +102 -0
- package/dist/patterns/ThemeSwitcher.js.map +1 -0
- package/dist/patterns/form-dialog.d.ts +62 -0
- package/dist/patterns/form-dialog.js +143 -0
- package/dist/patterns/form-dialog.js.map +1 -0
- package/dist/patterns/index.d.ts +24 -0
- package/dist/patterns/index.js +15 -0
- package/dist/patterns/messages.d.ts +174 -0
- package/dist/patterns/messages.js +186 -0
- package/dist/patterns/messages.js.map +1 -0
- package/dist/table/ColumnHeaderActions.d.ts +71 -0
- package/dist/table/ColumnHeaderActions.js +247 -0
- package/dist/table/ColumnHeaderActions.js.map +1 -0
- package/dist/table/ColumnResizer.d.ts +12 -0
- package/dist/table/ColumnResizer.js +32 -0
- package/dist/table/ColumnResizer.js.map +1 -0
- package/dist/table/ColumnSettings.d.ts +34 -0
- package/dist/table/ColumnSettings.js +136 -0
- package/dist/table/ColumnSettings.js.map +1 -0
- package/dist/table/ColumnTable.d.ts +51 -0
- package/dist/table/ColumnTable.js +140 -0
- package/dist/table/ColumnTable.js.map +1 -0
- package/dist/table/DataTable.d.ts +44 -0
- package/dist/table/DataTable.js +453 -0
- package/dist/table/DataTable.js.map +1 -0
- package/dist/table/DataTableView.d.ts +328 -0
- package/dist/table/DataTableView.js +963 -0
- package/dist/table/DataTableView.js.map +1 -0
- package/dist/table/PivotTable.d.ts +66 -0
- package/dist/table/PivotTable.js +122 -0
- package/dist/table/PivotTable.js.map +1 -0
- package/dist/table/SelectionBar.d.ts +29 -0
- package/dist/table/SelectionBar.js +86 -0
- package/dist/table/SelectionBar.js.map +1 -0
- package/dist/table/Table.d.ts +169 -0
- package/dist/table/Table.js +304 -0
- package/dist/table/Table.js.map +1 -0
- package/dist/table/TreeDataTable.d.ts +36 -0
- package/dist/table/TreeDataTable.js +168 -0
- package/dist/table/TreeDataTable.js.map +1 -0
- package/dist/table/column-display.d.ts +20 -0
- package/dist/table/column-display.js +43 -0
- package/dist/table/column-display.js.map +1 -0
- package/dist/table/columns.d.ts +244 -0
- package/dist/table/columns.js +271 -0
- package/dist/table/columns.js.map +1 -0
- package/dist/table/csv.d.ts +24 -0
- package/dist/table/csv.js +35 -0
- package/dist/table/csv.js.map +1 -0
- package/dist/table/pivot.d.ts +66 -0
- package/dist/table/pivot.js +85 -0
- package/dist/table/pivot.js.map +1 -0
- package/dist/table/sheet.d.ts +44 -0
- package/dist/table/sheet.js +78 -0
- package/dist/table/sheet.js.map +1 -0
- package/dist/table/table-styles.d.ts +136 -0
- package/dist/table/table-styles.js +403 -0
- package/dist/table/table-styles.js.map +1 -0
- package/dist/table/use-table-query.d.ts +89 -0
- package/dist/table/use-table-query.js +194 -0
- package/dist/table/use-table-query.js.map +1 -0
- package/dist/theme-customize/ThemeCustomizer.d.ts +63 -0
- package/dist/theme-customize/ThemeCustomizer.js +361 -0
- package/dist/theme-customize/ThemeCustomizer.js.map +1 -0
- package/dist/theme-customize/ThemeThumbnail.d.ts +20 -0
- package/dist/theme-customize/ThemeThumbnail.js +82 -0
- package/dist/theme-customize/ThemeThumbnail.js.map +1 -0
- package/dist/theme-customize/contrast.d.ts +27 -0
- package/dist/theme-customize/contrast.js +251 -0
- package/dist/theme-customize/contrast.js.map +1 -0
- package/dist/theme-customize/customize.d.ts +65 -0
- package/dist/theme-customize/customize.js +105 -0
- package/dist/theme-customize/customize.js.map +1 -0
- package/dist/theme-customize/design-tokens.d.ts +31 -0
- package/dist/theme-customize/design-tokens.js +183 -0
- package/dist/theme-customize/design-tokens.js.map +1 -0
- package/dist/theme-customize/index.d.ts +20 -0
- package/dist/theme-customize/index.js +9 -0
- package/dist/theme-customize/messages.d.ts +74 -0
- package/dist/theme-customize/messages.js +142 -0
- package/dist/theme-customize/messages.js.map +1 -0
- package/dist/theme-customize/palette.d.ts +898 -0
- package/dist/theme-customize/palette.js +111 -0
- package/dist/theme-customize/palette.js.map +1 -0
- package/dist/theme-customize/token-catalog.d.ts +20 -0
- package/dist/theme-customize/token-catalog.js +836 -0
- package/dist/theme-customize/token-catalog.js.map +1 -0
- package/dist/three/background/AuroraBackground.d.ts +30 -0
- package/dist/three/background/AuroraBackground.js +80 -0
- package/dist/three/background/AuroraBackground.js.map +1 -0
- package/dist/three/background/MeshGradient.d.ts +28 -0
- package/dist/three/background/MeshGradient.js +76 -0
- package/dist/three/background/MeshGradient.js.map +1 -0
- package/dist/three/background/ShaderBackground.d.ts +25 -0
- package/dist/three/background/ShaderBackground.js +107 -0
- package/dist/three/background/ShaderBackground.js.map +1 -0
- package/dist/three/core/EffectSurface.d.ts +41 -0
- package/dist/three/core/EffectSurface.js +62 -0
- package/dist/three/core/EffectSurface.js.map +1 -0
- package/dist/three/core/ThreeCanvas.d.ts +39 -0
- package/dist/three/core/ThreeCanvas.js +77 -0
- package/dist/three/core/ThreeCanvas.js.map +1 -0
- package/dist/three/core/dispose.d.ts +9 -0
- package/dist/three/core/dispose.js +26 -0
- package/dist/three/core/dispose.js.map +1 -0
- package/dist/three/core/orbit.d.ts +31 -0
- package/dist/three/core/orbit.js +83 -0
- package/dist/three/core/orbit.js.map +1 -0
- package/dist/three/core/quality.d.ts +59 -0
- package/dist/three/core/quality.js +80 -0
- package/dist/three/core/quality.js.map +1 -0
- package/dist/three/core/renderer.d.ts +110 -0
- package/dist/three/core/renderer.js +303 -0
- package/dist/three/core/renderer.js.map +1 -0
- package/dist/three/core/shaders.d.ts +19 -0
- package/dist/three/core/shaders.js +100 -0
- package/dist/three/core/shaders.js.map +1 -0
- package/dist/three/core/theme-colors.d.ts +30 -0
- package/dist/three/core/theme-colors.js +113 -0
- package/dist/three/core/theme-colors.js.map +1 -0
- package/dist/three/effects/Confetti.d.ts +62 -0
- package/dist/three/effects/Confetti.js +242 -0
- package/dist/three/effects/Confetti.js.map +1 -0
- package/dist/three/effects/ParticleField.d.ts +39 -0
- package/dist/three/effects/ParticleField.js +266 -0
- package/dist/three/effects/ParticleField.js.map +1 -0
- package/dist/three/effects/WaveGrid.d.ts +37 -0
- package/dist/three/effects/WaveGrid.js +130 -0
- package/dist/three/effects/WaveGrid.js.map +1 -0
- package/dist/three/globe/Globe.d.ts +70 -0
- package/dist/three/globe/Globe.js +337 -0
- package/dist/three/globe/Globe.js.map +1 -0
- package/dist/three/globe/land.d.ts +9 -0
- package/dist/three/globe/land.js +14 -0
- package/dist/three/globe/land.js.map +1 -0
- package/dist/three/index.d.ts +24 -0
- package/dist/three/index.js +18 -0
- package/dist/three/model/ModelViewer.d.ts +63 -0
- package/dist/three/model/ModelViewer.js +193 -0
- package/dist/three/model/ModelViewer.js.map +1 -0
- package/dist/utils/data/clone.d.ts +8 -0
- package/dist/utils/data/clone.js +21 -0
- package/dist/utils/data/clone.js.map +1 -0
- package/dist/utils/data/collation.d.ts +36 -0
- package/dist/utils/data/collation.js +69 -0
- package/dist/utils/data/collation.js.map +1 -0
- package/dist/utils/data/color.d.ts +32 -0
- package/dist/utils/data/color.js +90 -0
- package/dist/utils/data/color.js.map +1 -0
- package/dist/utils/data/date.d.ts +196 -0
- package/dist/utils/data/date.js +421 -0
- package/dist/utils/data/date.js.map +1 -0
- package/dist/utils/data/diff.d.ts +21 -0
- package/dist/utils/data/diff.js +43 -0
- package/dist/utils/data/diff.js.map +1 -0
- package/dist/utils/data/equality.d.ts +5 -0
- package/dist/utils/data/equality.js +24 -0
- package/dist/utils/data/equality.js.map +1 -0
- package/dist/utils/data/history.d.ts +59 -0
- package/dist/utils/data/history.js +132 -0
- package/dist/utils/data/history.js.map +1 -0
- package/dist/utils/data/intl-cache.d.ts +8 -0
- package/dist/utils/data/intl-cache.js +19 -0
- package/dist/utils/data/intl-cache.js.map +1 -0
- package/dist/utils/data/number-parse.d.ts +7 -0
- package/dist/utils/data/number-parse.js +45 -0
- package/dist/utils/data/number-parse.js.map +1 -0
- package/dist/utils/data/number.d.ts +10 -0
- package/dist/utils/data/number.js +28 -0
- package/dist/utils/data/number.js.map +1 -0
- package/dist/utils/data/numeric.d.ts +62 -0
- package/dist/utils/data/numeric.js +178 -0
- package/dist/utils/data/numeric.js.map +1 -0
- package/dist/utils/data/pagination.d.ts +21 -0
- package/dist/utils/data/pagination.js +22 -0
- package/dist/utils/data/pagination.js.map +1 -0
- package/dist/utils/data/selection.d.ts +41 -0
- package/dist/utils/data/selection.js +21 -0
- package/dist/utils/data/selection.js.map +1 -0
- package/dist/utils/data/status.d.ts +43 -0
- package/dist/utils/data/status.js +27 -0
- package/dist/utils/data/status.js.map +1 -0
- package/dist/utils/data/text.d.ts +12 -0
- package/dist/utils/data/text.js +30 -0
- package/dist/utils/data/text.js.map +1 -0
- package/dist/utils/data/tree.d.ts +140 -0
- package/dist/utils/data/tree.js +273 -0
- package/dist/utils/data/tree.js.map +1 -0
- package/dist/utils/data/workdays.d.ts +67 -0
- package/dist/utils/data/workdays.js +67 -0
- package/dist/utils/data/workdays.js.map +1 -0
- package/dist/utils/dom/announcer.d.ts +11 -0
- package/dist/utils/dom/announcer.js +53 -0
- package/dist/utils/dom/announcer.js.map +1 -0
- package/dist/utils/dom/caret.d.ts +14 -0
- package/dist/utils/dom/caret.js +72 -0
- package/dist/utils/dom/caret.js.map +1 -0
- package/dist/utils/dom/clipboard.d.ts +16 -0
- package/dist/utils/dom/clipboard.js +66 -0
- package/dist/utils/dom/clipboard.js.map +1 -0
- package/dist/utils/dom/direction.d.ts +12 -0
- package/dist/utils/dom/direction.js +20 -0
- package/dist/utils/dom/direction.js.map +1 -0
- package/dist/utils/dom/download.d.ts +14 -0
- package/dist/utils/dom/download.js +36 -0
- package/dist/utils/dom/download.js.map +1 -0
- package/dist/utils/dom/element.d.ts +3 -0
- package/dist/utils/dom/element.js +12 -0
- package/dist/utils/dom/element.js.map +1 -0
- package/dist/utils/dom/event-listener.d.ts +8 -0
- package/dist/utils/dom/event-listener.js +35 -0
- package/dist/utils/dom/event-listener.js.map +1 -0
- package/dist/utils/dom/floating.d.ts +149 -0
- package/dist/utils/dom/floating.js +262 -0
- package/dist/utils/dom/floating.js.map +1 -0
- package/dist/utils/dom/focus.d.ts +28 -0
- package/dist/utils/dom/focus.js +105 -0
- package/dist/utils/dom/focus.js.map +1 -0
- package/dist/utils/dom/fullscreen.d.ts +11 -0
- package/dist/utils/dom/fullscreen.js +43 -0
- package/dist/utils/dom/fullscreen.js.map +1 -0
- package/dist/utils/dom/hotkeys.d.ts +43 -0
- package/dist/utils/dom/hotkeys.js +174 -0
- package/dist/utils/dom/hotkeys.js.map +1 -0
- package/dist/utils/dom/hover-intent.d.ts +47 -0
- package/dist/utils/dom/hover-intent.js +72 -0
- package/dist/utils/dom/hover-intent.js.map +1 -0
- package/dist/utils/dom/hover-layer.d.ts +36 -0
- package/dist/utils/dom/hover-layer.js +74 -0
- package/dist/utils/dom/hover-layer.js.map +1 -0
- package/dist/utils/dom/intersection.d.ts +13 -0
- package/dist/utils/dom/intersection.js +36 -0
- package/dist/utils/dom/intersection.js.map +1 -0
- package/dist/utils/dom/layout-batch.d.ts +14 -0
- package/dist/utils/dom/layout-batch.js +26 -0
- package/dist/utils/dom/layout-batch.js.map +1 -0
- package/dist/utils/dom/link.d.ts +18 -0
- package/dist/utils/dom/link.js +44 -0
- package/dist/utils/dom/link.js.map +1 -0
- package/dist/utils/dom/media-query.d.ts +18 -0
- package/dist/utils/dom/media-query.js +36 -0
- package/dist/utils/dom/media-query.js.map +1 -0
- package/dist/utils/dom/move.d.ts +47 -0
- package/dist/utils/dom/move.js +69 -0
- package/dist/utils/dom/move.js.map +1 -0
- package/dist/utils/dom/open-change.d.ts +51 -0
- package/dist/utils/dom/open-change.js +21 -0
- package/dist/utils/dom/open-change.js.map +1 -0
- package/dist/utils/dom/overflow.d.ts +29 -0
- package/dist/utils/dom/overflow.js +108 -0
- package/dist/utils/dom/overflow.js.map +1 -0
- package/dist/utils/dom/overlay.d.ts +35 -0
- package/dist/utils/dom/overlay.js +104 -0
- package/dist/utils/dom/overlay.js.map +1 -0
- package/dist/utils/dom/page-visibility.d.ts +10 -0
- package/dist/utils/dom/page-visibility.js +22 -0
- package/dist/utils/dom/page-visibility.js.map +1 -0
- package/dist/utils/dom/pan-zoom.d.ts +109 -0
- package/dist/utils/dom/pan-zoom.js +257 -0
- package/dist/utils/dom/pan-zoom.js.map +1 -0
- package/dist/utils/dom/rasterize.d.ts +18 -0
- package/dist/utils/dom/rasterize.js +41 -0
- package/dist/utils/dom/rasterize.js.map +1 -0
- package/dist/utils/dom/resize.d.ts +4 -0
- package/dist/utils/dom/resize.js +65 -0
- package/dist/utils/dom/resize.js.map +1 -0
- package/dist/utils/dom/ripple.d.ts +40 -0
- package/dist/utils/dom/ripple.js +96 -0
- package/dist/utils/dom/ripple.js.map +1 -0
- package/dist/utils/dom/roving-focus.d.ts +44 -0
- package/dist/utils/dom/roving-focus.js +184 -0
- package/dist/utils/dom/roving-focus.js.map +1 -0
- package/dist/utils/dom/scroll-spy.d.ts +30 -0
- package/dist/utils/dom/scroll-spy.js +55 -0
- package/dist/utils/dom/scroll-spy.js.map +1 -0
- package/dist/utils/dom/sortable.d.ts +82 -0
- package/dist/utils/dom/sortable.js +437 -0
- package/dist/utils/dom/sortable.js.map +1 -0
- package/dist/utils/dom/storage.d.ts +21 -0
- package/dist/utils/dom/storage.js +66 -0
- package/dist/utils/dom/storage.js.map +1 -0
- package/dist/utils/dom/typeahead.d.ts +15 -0
- package/dist/utils/dom/typeahead.js +26 -0
- package/dist/utils/dom/typeahead.js.map +1 -0
- package/dist/utils/motion/active-indicator.d.ts +24 -0
- package/dist/utils/motion/active-indicator.js +58 -0
- package/dist/utils/motion/active-indicator.js.map +1 -0
- package/dist/utils/motion/animation.d.ts +58 -0
- package/dist/utils/motion/animation.js +83 -0
- package/dist/utils/motion/animation.js.map +1 -0
- package/dist/utils/motion/delayed-loading.d.ts +18 -0
- package/dist/utils/motion/delayed-loading.js +38 -0
- package/dist/utils/motion/delayed-loading.js.map +1 -0
- package/dist/utils/motion/layout.d.ts +17 -0
- package/dist/utils/motion/layout.js +43 -0
- package/dist/utils/motion/layout.js.map +1 -0
- package/dist/utils/motion/pointer.d.ts +14 -0
- package/dist/utils/motion/pointer.js +72 -0
- package/dist/utils/motion/pointer.js.map +1 -0
- package/dist/utils/motion/presence.d.ts +57 -0
- package/dist/utils/motion/presence.js +100 -0
- package/dist/utils/motion/presence.js.map +1 -0
- package/dist/utils/motion/reveal.d.ts +9 -0
- package/dist/utils/motion/reveal.js +68 -0
- package/dist/utils/motion/reveal.js.map +1 -0
- package/dist/utils/motion/tween.d.ts +34 -0
- package/dist/utils/motion/tween.js +50 -0
- package/dist/utils/motion/tween.js.map +1 -0
- package/dist/utils/props.d.ts +84 -0
- package/dist/utils/props.js +189 -0
- package/dist/utils/props.js.map +1 -0
- package/dist/utils/request/error-message.d.ts +17 -0
- package/dist/utils/request/error-message.js +50 -0
- package/dist/utils/request/error-message.js.map +1 -0
- package/dist/utils/request/http.d.ts +165 -0
- package/dist/utils/request/http.js +247 -0
- package/dist/utils/request/http.js.map +1 -0
- package/dist/utils/request/use-autosave.d.ts +35 -0
- package/dist/utils/request/use-autosave.js +69 -0
- package/dist/utils/request/use-autosave.js.map +1 -0
- package/dist/utils/request/use-request.d.ts +37 -0
- package/dist/utils/request/use-request.js +90 -0
- package/dist/utils/request/use-request.js.map +1 -0
- package/dist/utils/request/wire.d.ts +48 -0
- package/dist/utils/request/wire.js +208 -0
- package/dist/utils/request/wire.js.map +1 -0
- package/dist/utils/style/attached.d.ts +25 -0
- package/dist/utils/style/attached.js +82 -0
- package/dist/utils/style/attached.js.map +1 -0
- package/dist/utils/style/item-styles.d.ts +18 -0
- package/dist/utils/style/item-styles.js +79 -0
- package/dist/utils/style/item-styles.js.map +1 -0
- package/dist/utils/style/markers.d.ts +6 -0
- package/dist/utils/style/markers.js +11 -0
- package/dist/utils/style/markers.js.map +1 -0
- package/dist/utils/style/shimmer.d.ts +20 -0
- package/dist/utils/style/shimmer.js +58 -0
- package/dist/utils/style/shimmer.js.map +1 -0
- package/dist/utils/style/styles.d.ts +118 -0
- package/dist/utils/style/styles.js +114 -0
- package/dist/utils/style/styles.js.map +1 -0
- package/dist/utils/style/swatch-styles.d.ts +10 -0
- package/dist/utils/style/swatch-styles.js +19 -0
- package/dist/utils/style/swatch-styles.js.map +1 -0
- package/dist/utils/style/tone-styles.d.ts +58 -0
- package/dist/utils/style/tone-styles.js +180 -0
- package/dist/utils/style/tone-styles.js.map +1 -0
- package/dist/utils/style/transitions.d.ts +43 -0
- package/dist/utils/style/transitions.js +118 -0
- package/dist/utils/style/transitions.js.map +1 -0
- package/dist/utils/style/typography.d.ts +155 -0
- package/dist/utils/style/typography.js +80 -0
- package/dist/utils/style/typography.js.map +1 -0
- package/dist/utils/style/vars.d.ts +18 -0
- package/dist/utils/style/vars.js +21 -0
- package/dist/utils/style/vars.js.map +1 -0
- package/dist/utils/virtual/use-virtualizer.d.ts +43 -0
- package/dist/utils/virtual/use-virtualizer.js +94 -0
- package/dist/utils/virtual/use-virtualizer.js.map +1 -0
- package/dist/utils/virtual/virtualizer.d.ts +145 -0
- package/dist/utils/virtual/virtualizer.js +316 -0
- package/dist/utils/virtual/virtualizer.js.map +1 -0
- package/dist/xlsx/index.d.ts +7 -0
- package/dist/xlsx/index.js +1 -0
- package/dist/xlsx/workbook.d.ts +33 -0
- package/dist/xlsx/workbook.js +195 -0
- package/dist/xlsx/workbook.js.map +1 -0
- package/package.json +258 -3
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import * as css from '@zerodep-dev/vue-tsx-pro-tsx/styles';
|
|
2
|
+
import { type VNodeChild } from 'vue';
|
|
3
|
+
import { type IconProps } from '../base/Icon';
|
|
4
|
+
import { type TextProps } from '../base/Text';
|
|
5
|
+
import { type PartProps } from '../utils/props';
|
|
6
|
+
import { type FieldLabelAligns, type FieldLabelPlacements } from './field-layout';
|
|
7
|
+
import type { FieldConstraints } from './form-constraints';
|
|
8
|
+
/** Field 交给控件的信息 */
|
|
9
|
+
export interface FieldState {
|
|
10
|
+
/** 控件(主元素)的 id,标签的 for 指向它 */
|
|
11
|
+
readonly controlId: string;
|
|
12
|
+
/** 标签的 id:控件不是原生输入元素(滑块、单选组)时用 aria-labelledby 指向它 */
|
|
13
|
+
readonly labelId: string | undefined;
|
|
14
|
+
/** 说明与错误信息的 id,空格分隔,给 aria-describedby */
|
|
15
|
+
readonly describedBy: string | undefined;
|
|
16
|
+
/** 校验未通过 */
|
|
17
|
+
readonly invalid: boolean;
|
|
18
|
+
/** 必填 */
|
|
19
|
+
readonly required: boolean;
|
|
20
|
+
/** 不可用 */
|
|
21
|
+
readonly disabled: boolean;
|
|
22
|
+
/** 只读 */
|
|
23
|
+
readonly readonly: boolean;
|
|
24
|
+
/** 从表单 schema 推出的约束(在 Form 里写了 name 时);控件据此加 maxlength、min / max 等 */
|
|
25
|
+
readonly constraints: FieldConstraints;
|
|
26
|
+
/**
|
|
27
|
+
* 认领 Field 的 id 与标签:Field 里有几个控件时(一组勾选框),只有第一个控件拿 Field 的 id、用它的标签当名字,
|
|
28
|
+
* 其余控件留着自己的名字(勾选框自己的文字),id 也不重复。认领到了返回 true
|
|
29
|
+
*/
|
|
30
|
+
claim?(token: symbol): boolean;
|
|
31
|
+
/** 认领的控件卸载了:下一个控件可以认领 */
|
|
32
|
+
release?(token: symbol): void;
|
|
33
|
+
}
|
|
34
|
+
/** Field 的上下文:自定义控件用 useFieldControl 接入,一般不直接读它;null 表示子树不属于任何 Field */
|
|
35
|
+
export declare const FieldContext: import("@zerodep-dev/vue-tsx-pro-tsx").Context<FieldState | null>;
|
|
36
|
+
/** 控件自己的状态(不写时取 Field 的) */
|
|
37
|
+
export interface FieldControlOptions {
|
|
38
|
+
/** 控件上显式写的 id */
|
|
39
|
+
id?: string;
|
|
40
|
+
/** 校验未通过 */
|
|
41
|
+
invalid?: boolean;
|
|
42
|
+
/** 必填;在 Form 里写了 name 时默认按表单的 schema(如 z.string().min(1)) */
|
|
43
|
+
required?: boolean;
|
|
44
|
+
/** 不可用 */
|
|
45
|
+
disabled?: boolean;
|
|
46
|
+
/** 只读 */
|
|
47
|
+
readonly?: boolean;
|
|
48
|
+
}
|
|
49
|
+
/** useFieldControl 的选项 */
|
|
50
|
+
export interface FieldControlUse {
|
|
51
|
+
/** 输入交给里面的另一个控件(DatePicker 里的 DateField):子树仍属于 Field,由那个控件接 */
|
|
52
|
+
delegate?: boolean;
|
|
53
|
+
}
|
|
54
|
+
/** 控件合并 Field 之后的状态与关联属性 */
|
|
55
|
+
export interface FieldControl {
|
|
56
|
+
/** 控件的 id:显式写的优先,其次是 Field 给的 */
|
|
57
|
+
id: string | undefined;
|
|
58
|
+
/** 不是原生输入元素的控件用它作 aria-labelledby */
|
|
59
|
+
labelledBy: string | undefined;
|
|
60
|
+
/** aria-describedby */
|
|
61
|
+
describedBy: string | undefined;
|
|
62
|
+
/** 校验未通过 */
|
|
63
|
+
invalid: boolean;
|
|
64
|
+
/** 必填 */
|
|
65
|
+
required: boolean;
|
|
66
|
+
/** 不可用 */
|
|
67
|
+
disabled: boolean;
|
|
68
|
+
/** 只读 */
|
|
69
|
+
readonly: boolean;
|
|
70
|
+
/** 从表单 schema 推出的约束;不在 Field 里、或推不出时为空对象。控件上显式写的属性优先 */
|
|
71
|
+
constraints: FieldConstraints;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* 所在的表单重置时(form.reset()、type="reset" 的按钮)调用:控件丢掉自己还没写回的输入(日期分段打了一半)。
|
|
75
|
+
* 值本身由表单改回去;只是半截输入时值一直是 null,重置前后没有变化,控件不知道要清。在 setup 里调用
|
|
76
|
+
*/
|
|
77
|
+
export declare function useFormReset(onReset: () => void): void;
|
|
78
|
+
/**
|
|
79
|
+
* 控件读取所在 Field 的信息(在 setup 里调用,返回的函数在渲染时调用):
|
|
80
|
+
* 控件上显式写的状态优先;不在 Field 里时用控件自己的,不可用与只读再看所在的 Form、FormSection。
|
|
81
|
+
* 控件里再嵌的控件(Select 的搜索框、区间的两个框、时间面板的列表)不是 Field 的控件,
|
|
82
|
+
* 拿到 Field 的 id、说明与必填会重复 id、让表单提交被空的搜索框拦住:调用后子树与 Field 隔开,
|
|
83
|
+
* 除非写了 delegate
|
|
84
|
+
*/
|
|
85
|
+
export declare function useFieldControl(read: () => FieldControlOptions, { delegate }?: FieldControlUse): () => FieldControl;
|
|
86
|
+
/** 未声明的属性落到 label 上 */
|
|
87
|
+
export interface LabelProps extends PartProps<'label'> {
|
|
88
|
+
/** 必填:文字后加一个星号图标(对读屏隐藏,必填由控件的 required 告诉读屏) */
|
|
89
|
+
required?: boolean;
|
|
90
|
+
/** 不可用:变淡 */
|
|
91
|
+
disabled?: boolean;
|
|
92
|
+
/** 必填标记的部件属性 */
|
|
93
|
+
propsRequired?: Partial<IconProps>;
|
|
94
|
+
children?: VNodeChild;
|
|
95
|
+
}
|
|
96
|
+
/** Field 的样式:root、disabled、required */
|
|
97
|
+
export declare const labelStyles: Readonly<{
|
|
98
|
+
disabled: css.CompiledStyles;
|
|
99
|
+
required: css.CompiledStyles;
|
|
100
|
+
root: css.CompiledStyles;
|
|
101
|
+
}>;
|
|
102
|
+
/** 表单标签(label):for 指向控件;Field 里自动关联,单独使用时自己写 for */
|
|
103
|
+
export declare const Label: import("@zerodep-dev/vue-tsx-pro-tsx").TsxComponent<LabelProps>;
|
|
104
|
+
/** 未声明的属性落到外层 div 上 */
|
|
105
|
+
export interface FieldProps extends PartProps<'div'> {
|
|
106
|
+
/** 在 Form 里对应的字段路径(如 `email`、`address.city`):错误取自表单控制器,只有一个控件时自动绑定它的值 */
|
|
107
|
+
name?: string;
|
|
108
|
+
/**
|
|
109
|
+
* 自动绑定值时写到控件的哪个属性:默认 _value;控件声明了 _checked 而没有 _value(Switch、单个 Checkbox)时是 _checked
|
|
110
|
+
*/
|
|
111
|
+
valueProp?: '_value' | '_checked';
|
|
112
|
+
/** 标签 */
|
|
113
|
+
label?: VNodeChild;
|
|
114
|
+
/** 控件下方的说明 */
|
|
115
|
+
description?: VNodeChild;
|
|
116
|
+
/** 错误信息:给了(且 invalid 不是 false)就显示,并把控件标为出错;在 Form 里写了 name 时默认取表单的错误 */
|
|
117
|
+
error?: VNodeChild;
|
|
118
|
+
/** 校验未通过;不写时有 error 就算出错 */
|
|
119
|
+
invalid?: boolean;
|
|
120
|
+
/** 必填 */
|
|
121
|
+
required?: boolean;
|
|
122
|
+
/** 不可用;不写时取所在 Form、FormSection 的 */
|
|
123
|
+
disabled?: boolean;
|
|
124
|
+
/** 只读;不写时取所在 Form、FormSection 的 */
|
|
125
|
+
readonly?: boolean;
|
|
126
|
+
/** 标签放在哪;不写时取所在 Form、FormSection 的,都没写时在上方 */
|
|
127
|
+
labelPlacement?: keyof FieldLabelPlacements;
|
|
128
|
+
/** 标签在起始边时标签列的宽度:数字是 px,也可以写 CSS 长度;默认 `'8em'` */
|
|
129
|
+
labelWidth?: number | string;
|
|
130
|
+
/** 标签在起始边时文字的对齐,默认 end(贴着控件) */
|
|
131
|
+
labelAlign?: keyof FieldLabelAligns;
|
|
132
|
+
/**
|
|
133
|
+
* 标签只给读屏:视觉上隐藏,仍是控件的名称(表格式的重复行只在第一行显示列名、紧凑的筛选条);
|
|
134
|
+
* 这时不占标签列,控件单独一列
|
|
135
|
+
*/
|
|
136
|
+
labelHidden?: boolean;
|
|
137
|
+
/** 标签的部件属性 */
|
|
138
|
+
propsLabel?: Partial<LabelProps>;
|
|
139
|
+
/** 控件列(标签在起始边时包住控件、说明与错误的 div)的部件属性 */
|
|
140
|
+
propsControl?: PartProps<'div'>;
|
|
141
|
+
/** 说明的部件属性 */
|
|
142
|
+
propsDescription?: Partial<TextProps>;
|
|
143
|
+
/** 错误信息的部件属性 */
|
|
144
|
+
propsError?: Partial<TextProps>;
|
|
145
|
+
/** 控件 */
|
|
146
|
+
children?: VNodeChild;
|
|
147
|
+
}
|
|
148
|
+
/** Field 的样式:root、start、label…、control、hint、error、errorIcon */
|
|
149
|
+
export declare const fieldStyles: Readonly<{
|
|
150
|
+
control: css.CompiledStyles;
|
|
151
|
+
controlWithoutLabel: css.CompiledStyles;
|
|
152
|
+
error: css.CompiledStyles;
|
|
153
|
+
errorIcon: css.CompiledStyles;
|
|
154
|
+
hint: css.CompiledStyles;
|
|
155
|
+
labelEnd: css.CompiledStyles;
|
|
156
|
+
labelStart: css.CompiledStyles;
|
|
157
|
+
root: css.CompiledStyles;
|
|
158
|
+
start: css.CompiledStyles;
|
|
159
|
+
}>;
|
|
160
|
+
/** Field 的动态样式:标签列的宽度 */
|
|
161
|
+
export declare const fieldColumnStyles: Readonly<{
|
|
162
|
+
readonly columns: (labelWidth: string) => Readonly<[css.CompiledStyles, css.InlineStyles]>;
|
|
163
|
+
}>;
|
|
164
|
+
/** 表单字段:标签、控件、说明、错误信息,自动关联 id 与状态 */
|
|
165
|
+
export declare const Field: import("@zerodep-dev/vue-tsx-pro-tsx").TsxComponent<FieldProps>;
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
import { hasContent, mergeAttrs, mergePartProps } from "../utils/props.js";
|
|
2
|
+
import { Icon } from "../base/Icon.js";
|
|
3
|
+
import { visuallyHiddenStyles } from "../base/VisuallyHidden.js";
|
|
4
|
+
import { focusControl } from "../utils/dom/focus.js";
|
|
5
|
+
import { statusIcons } from "../utils/style/tone-styles.js";
|
|
6
|
+
import { plainText } from "../utils/data/text.js";
|
|
7
|
+
import { Text as Text$1 } from "../base/Text.js";
|
|
8
|
+
import { FieldLayoutContext } from "./field-layout.js";
|
|
9
|
+
import { FormContext } from "./Form.js";
|
|
10
|
+
import { Fragment, cloneVNode, createVNode, isVNode, mergeProps, onBeforeUnmount, unref, useId, watch } from "vue";
|
|
11
|
+
import { _component, childrenProp, createContext, effect, readonlyProp, restProps } from "@zerodep-dev/vue-tsx-pro-tsx";
|
|
12
|
+
import * as css from "@zerodep-dev/vue-tsx-pro-tsx/styles";
|
|
13
|
+
import { Asterisk } from "@lucide/icons";
|
|
14
|
+
//#region src/form/Field.tsx
|
|
15
|
+
/**
|
|
16
|
+
* 表单字段:标签 + 控件 + 说明 + 错误信息,并把它们关联起来(参考 Ark UI Field、React Aria 的 Label / Description / FieldError)。
|
|
17
|
+
*
|
|
18
|
+
* <Field label="邮箱" description="用于找回密码" error={errors.email} required>
|
|
19
|
+
* <TextField _value={form.email} type="email" />
|
|
20
|
+
* </Field>
|
|
21
|
+
*
|
|
22
|
+
* Field 经上下文告诉里面的控件:控件的 id(标签的 for 指向它)、标签的 id(不是原生输入的控件用 aria-labelledby)、
|
|
23
|
+
* 说明与错误的 id(aria-describedby),以及 invalid / required / disabled / readonly。
|
|
24
|
+
* 控件上显式写的状态优先于 Field 的。控件用 useFieldControl 读取这些信息,单独使用(不在 Field 里)时照常工作。
|
|
25
|
+
* 在 Form 里写了 name 时,错误信息取自表单控制器(useForm),焦点离开字段时报告失焦(何时显示错误见 useForm);
|
|
26
|
+
* 里面只有一个控件、控件上没写值时自动绑定表单的这个字段(valueProp 决定写 _value 还是 _checked),
|
|
27
|
+
* 标签与控件登记给表单,错误汇总(FormErrorSummary)据此列出字段名、跳到控件。
|
|
28
|
+
*
|
|
29
|
+
* 标签可以放在起始边(`labelPlacement="start"`):标签一列、控件一列,标签与控件的第一行文字按基线对齐,
|
|
30
|
+
* 多行文本框、勾选组也对得齐。通常在 Form、FormSection 上统一设置(见 field-layout),整组的只读、不可用同样从那里来。
|
|
31
|
+
*
|
|
32
|
+
* 部件:Root(div)、Label(Label)、Control(div,标签在起始边时包住控件、说明与错误)、
|
|
33
|
+
* Description(Text)、Error(Text,带警示图标)。
|
|
34
|
+
*/
|
|
35
|
+
var NO_CONSTRAINTS = Object.freeze({});
|
|
36
|
+
/** Field 交给控件的信息 */
|
|
37
|
+
/** Field 的上下文:自定义控件用 useFieldControl 接入,一般不直接读它;null 表示子树不属于任何 Field */
|
|
38
|
+
var FieldContext = createContext("Field");
|
|
39
|
+
/** 控件自己的状态(不写时取 Field 的) */
|
|
40
|
+
/** useFieldControl 的选项 */
|
|
41
|
+
/** 控件合并 Field 之后的状态与关联属性 */
|
|
42
|
+
/**
|
|
43
|
+
* 所在的表单重置时(form.reset()、type="reset" 的按钮)调用:控件丢掉自己还没写回的输入(日期分段打了一半)。
|
|
44
|
+
* 值本身由表单改回去;只是半截输入时值一直是 null,重置前后没有变化,控件不知道要清。在 setup 里调用
|
|
45
|
+
*/
|
|
46
|
+
function useFormReset(onReset) {
|
|
47
|
+
const form = FormContext.inject(null);
|
|
48
|
+
if (form) watch(() => form.resetCount, onReset);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 控件读取所在 Field 的信息(在 setup 里调用,返回的函数在渲染时调用):
|
|
52
|
+
* 控件上显式写的状态优先;不在 Field 里时用控件自己的,不可用与只读再看所在的 Form、FormSection。
|
|
53
|
+
* 控件里再嵌的控件(Select 的搜索框、区间的两个框、时间面板的列表)不是 Field 的控件,
|
|
54
|
+
* 拿到 Field 的 id、说明与必填会重复 id、让表单提交被空的搜索框拦住:调用后子树与 Field 隔开,
|
|
55
|
+
* 除非写了 delegate
|
|
56
|
+
*/
|
|
57
|
+
function useFieldControl(read, { delegate = false } = {}) {
|
|
58
|
+
const field = FieldContext.inject(null);
|
|
59
|
+
if (!delegate) FieldContext.provide(null);
|
|
60
|
+
const layout = field ? null : FieldLayoutContext.inject(null);
|
|
61
|
+
const token = Symbol("field-control");
|
|
62
|
+
const owns = field == null ? false : delegate || (field.claim?.(token) ?? true);
|
|
63
|
+
if (field && !delegate) onBeforeUnmount(() => field.release?.(token));
|
|
64
|
+
return () => {
|
|
65
|
+
const own = read();
|
|
66
|
+
return {
|
|
67
|
+
id: own.id ?? (owns ? field?.controlId : void 0),
|
|
68
|
+
labelledBy: owns ? field?.labelId : void 0,
|
|
69
|
+
describedBy: field?.describedBy,
|
|
70
|
+
invalid: own.invalid ?? field?.invalid ?? false,
|
|
71
|
+
required: own.required ?? field?.required ?? false,
|
|
72
|
+
disabled: own.disabled ?? field?.disabled ?? layout?.disabled ?? false,
|
|
73
|
+
readonly: own.readonly ?? field?.readonly ?? layout?.readonly ?? false,
|
|
74
|
+
constraints: field?.constraints ?? NO_CONSTRAINTS
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** 未声明的属性落到 label 上 */
|
|
79
|
+
/** Field 的样式:root、disabled、required */
|
|
80
|
+
var labelStyles = css.create({
|
|
81
|
+
root: {
|
|
82
|
+
display: "inline-flex",
|
|
83
|
+
alignItems: "baseline",
|
|
84
|
+
gap: "_xs",
|
|
85
|
+
fontSize: "_sm",
|
|
86
|
+
fontWeight: "_medium",
|
|
87
|
+
lineHeight: "_tight",
|
|
88
|
+
color: "_text"
|
|
89
|
+
},
|
|
90
|
+
disabled: { opacity: "_disabled" },
|
|
91
|
+
required: {
|
|
92
|
+
alignSelf: "flex-start",
|
|
93
|
+
width: "0.7em",
|
|
94
|
+
height: "0.7em",
|
|
95
|
+
color: "_dangerText"
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
/**
|
|
99
|
+
* for 指向的不是原生能被标签关联的元素(单选组、滑块组、日期分段这类 role="group")时,点标签浏览器什么也不做:
|
|
100
|
+
* 改为聚焦它里面第一个能聚焦的控件(同点原生输入框的标签)
|
|
101
|
+
*/
|
|
102
|
+
function focusGroupControl(event) {
|
|
103
|
+
const label = event.currentTarget;
|
|
104
|
+
if (event.defaultPrevented || label.control || !label.htmlFor) return;
|
|
105
|
+
const target = label.ownerDocument.getElementById(label.htmlFor);
|
|
106
|
+
if (target) focusControl(target);
|
|
107
|
+
}
|
|
108
|
+
/** 表单标签(label):for 指向控件;Field 里自动关联,单独使用时自己写 for */
|
|
109
|
+
var Label = /*#__PURE__*/ _component((_props, _ctx) => {
|
|
110
|
+
const required = readonlyProp(_props, "required", false);
|
|
111
|
+
const disabled = readonlyProp(_props, "disabled", false);
|
|
112
|
+
const propsRequired = readonlyProp(_props, "propsRequired");
|
|
113
|
+
const children = childrenProp(_props);
|
|
114
|
+
const rest = restProps(_props, _ctx, false);
|
|
115
|
+
return () => createVNode("label", mergeProps(mergeAttrs({ sx: [labelStyles.root, disabled.value && labelStyles.disabled] }, rest, { onClick: focusGroupControl }), { "data-disabled": disabled.value || void 0 }), [children.value, required.value && createVNode(Icon, mergePartProps({
|
|
116
|
+
icon: Asterisk,
|
|
117
|
+
sx: labelStyles.required
|
|
118
|
+
}, propsRequired.value), null)]);
|
|
119
|
+
}, {
|
|
120
|
+
name: "Label",
|
|
121
|
+
props: [
|
|
122
|
+
"required",
|
|
123
|
+
"disabled",
|
|
124
|
+
"propsRequired"
|
|
125
|
+
]
|
|
126
|
+
});
|
|
127
|
+
/** 未声明的属性落到外层 div 上 */
|
|
128
|
+
/** 控件的组件声明了这个属性(运行时的 props 定义) */
|
|
129
|
+
function declares(node, key) {
|
|
130
|
+
const declared = node.type.props;
|
|
131
|
+
if (Array.isArray(declared)) return declared.includes(key);
|
|
132
|
+
return typeof declared === "object" && declared !== null && key in declared;
|
|
133
|
+
}
|
|
134
|
+
/** Field 里唯一的控件:一个组件的 VNode(数组里只有一项也算);不是时 undefined */
|
|
135
|
+
function soleControl(children) {
|
|
136
|
+
const node = Array.isArray(children) && children.length === 1 ? children[0] : children;
|
|
137
|
+
if (!isVNode(node) || typeof node.type === "string" || node.type === Fragment) return void 0;
|
|
138
|
+
return node;
|
|
139
|
+
}
|
|
140
|
+
/** 标签在起始边时默认的标签列宽度:放得下七八个汉字 */
|
|
141
|
+
var DEFAULT_LABEL_WIDTH = "8em";
|
|
142
|
+
/** Field 的样式:root、start、label…、control、hint、error、errorIcon */
|
|
143
|
+
var fieldStyles = css.create({
|
|
144
|
+
root: {
|
|
145
|
+
display: "flex",
|
|
146
|
+
flexDirection: "column",
|
|
147
|
+
gap: "_xs",
|
|
148
|
+
minWidth: 0
|
|
149
|
+
},
|
|
150
|
+
start: {
|
|
151
|
+
display: "grid",
|
|
152
|
+
columnGap: "_md",
|
|
153
|
+
rowGap: "_xs",
|
|
154
|
+
alignItems: "baseline"
|
|
155
|
+
},
|
|
156
|
+
labelStart: {
|
|
157
|
+
justifySelf: "start",
|
|
158
|
+
textAlign: "start"
|
|
159
|
+
},
|
|
160
|
+
labelEnd: {
|
|
161
|
+
justifySelf: "end",
|
|
162
|
+
textAlign: "end"
|
|
163
|
+
},
|
|
164
|
+
controlWithoutLabel: { gridColumnStart: "2" },
|
|
165
|
+
control: {
|
|
166
|
+
display: "flex",
|
|
167
|
+
flexDirection: "column",
|
|
168
|
+
gap: "_xs",
|
|
169
|
+
minWidth: 0
|
|
170
|
+
},
|
|
171
|
+
hint: {
|
|
172
|
+
fontSize: "_sm",
|
|
173
|
+
lineHeight: "_normal"
|
|
174
|
+
},
|
|
175
|
+
error: {
|
|
176
|
+
display: "inline-flex",
|
|
177
|
+
alignItems: "flex-start",
|
|
178
|
+
gap: "_xs"
|
|
179
|
+
},
|
|
180
|
+
errorIcon: {
|
|
181
|
+
flexShrink: 0,
|
|
182
|
+
marginBlock: "0.25em"
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
/** Field 的动态样式:标签列的宽度 */
|
|
186
|
+
var fieldColumnStyles = css.create({ columns: (labelWidth) => ({ gridTemplateColumns: `${labelWidth} minmax(0, 1fr)` }) });
|
|
187
|
+
/** 表单字段:标签、控件、说明、错误信息,自动关联 id 与状态 */
|
|
188
|
+
var Field = /*#__PURE__*/ _component((_props2, _ctx2) => {
|
|
189
|
+
const name = readonlyProp(_props2, "name");
|
|
190
|
+
const valueProp = readonlyProp(_props2, "valueProp");
|
|
191
|
+
const label = readonlyProp(_props2, "label");
|
|
192
|
+
const description = readonlyProp(_props2, "description");
|
|
193
|
+
const error = readonlyProp(_props2, "error");
|
|
194
|
+
const invalid = readonlyProp(_props2, "invalid");
|
|
195
|
+
const required = readonlyProp(_props2, "required");
|
|
196
|
+
const disabled = readonlyProp(_props2, "disabled");
|
|
197
|
+
const readonly = readonlyProp(_props2, "readonly");
|
|
198
|
+
const labelPlacement = readonlyProp(_props2, "labelPlacement");
|
|
199
|
+
const labelWidth = readonlyProp(_props2, "labelWidth");
|
|
200
|
+
const labelAlign = readonlyProp(_props2, "labelAlign");
|
|
201
|
+
const labelHidden = readonlyProp(_props2, "labelHidden", false);
|
|
202
|
+
const propsLabel = readonlyProp(_props2, "propsLabel");
|
|
203
|
+
const propsControl = readonlyProp(_props2, "propsControl");
|
|
204
|
+
const propsDescription = readonlyProp(_props2, "propsDescription");
|
|
205
|
+
const propsError = readonlyProp(_props2, "propsError");
|
|
206
|
+
const children = childrenProp(_props2);
|
|
207
|
+
const rest = restProps(_props2, _ctx2, false);
|
|
208
|
+
const id = useId();
|
|
209
|
+
const ids = {
|
|
210
|
+
control: `${id}-control`,
|
|
211
|
+
label: `${id}-label`,
|
|
212
|
+
description: `${id}-description`,
|
|
213
|
+
error: `${id}-error`
|
|
214
|
+
};
|
|
215
|
+
const form = FormContext.inject(null);
|
|
216
|
+
const layout = FieldLayoutContext.inject(null);
|
|
217
|
+
const message = () => hasContent(error.value) ? error.value : name.value != null ? form?.visibleError(name.value) : void 0;
|
|
218
|
+
const showError = () => hasContent(message()) && invalid.value !== false;
|
|
219
|
+
const constraints = () => name.value != null && form ? form.constraints(name.value) : NO_CONSTRAINTS;
|
|
220
|
+
const isRequired = () => required.value ?? constraints().required ?? false;
|
|
221
|
+
const isDisabled = () => disabled.value ?? layout?.disabled ?? false;
|
|
222
|
+
const isReadonly = () => readonly.value ?? layout?.readonly ?? false;
|
|
223
|
+
let owner = null;
|
|
224
|
+
FieldContext.provide({
|
|
225
|
+
claim: (token) => {
|
|
226
|
+
owner ??= token;
|
|
227
|
+
return owner === token;
|
|
228
|
+
},
|
|
229
|
+
release: (token) => {
|
|
230
|
+
if (owner === token) owner = null;
|
|
231
|
+
},
|
|
232
|
+
controlId: ids.control,
|
|
233
|
+
get labelId() {
|
|
234
|
+
return hasContent(label.value) ? ids.label : void 0;
|
|
235
|
+
},
|
|
236
|
+
get describedBy() {
|
|
237
|
+
return [hasContent(description.value) && ids.description, showError() && ids.error].filter(Boolean).join(" ") || void 0;
|
|
238
|
+
},
|
|
239
|
+
get invalid() {
|
|
240
|
+
return invalid.value ?? hasContent(message());
|
|
241
|
+
},
|
|
242
|
+
get required() {
|
|
243
|
+
return isRequired();
|
|
244
|
+
},
|
|
245
|
+
get constraints() {
|
|
246
|
+
return constraints();
|
|
247
|
+
},
|
|
248
|
+
get disabled() {
|
|
249
|
+
return isDisabled();
|
|
250
|
+
},
|
|
251
|
+
get readonly() {
|
|
252
|
+
return isReadonly();
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
effect(() => name.value != null && form ? form.register(name.value, {
|
|
256
|
+
label: plainText(label.value) ?? name.value,
|
|
257
|
+
controlId: ids.control
|
|
258
|
+
}) : void 0);
|
|
259
|
+
/** 只有一个控件、控件上没写值时,自动绑定表单的这个字段(同 Ant Design Form.Item 的 name) */
|
|
260
|
+
function bindValue(content) {
|
|
261
|
+
const control = name.value != null && form ? soleControl(content) : void 0;
|
|
262
|
+
if (!control || !form) return content;
|
|
263
|
+
const key = valueProp.value ?? (declares(control, "_checked") && !declares(control, "_value") ? "_checked" : "_value");
|
|
264
|
+
if (control.props && key in control.props) return content;
|
|
265
|
+
const path = name.value;
|
|
266
|
+
return cloneVNode(control, {
|
|
267
|
+
[key]: form.getValue(path),
|
|
268
|
+
[`onUpdate:${key}`]: (value) => form.setValue(path, value)
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
function onFocusout(event) {
|
|
272
|
+
const next = event.relatedTarget;
|
|
273
|
+
const field = event.currentTarget;
|
|
274
|
+
if (name.value != null && !(next instanceof Node && field.contains(next))) form?.blur(name.value);
|
|
275
|
+
}
|
|
276
|
+
return () => {
|
|
277
|
+
const placement = labelPlacement.value ?? layout?.labelPlacement ?? "top";
|
|
278
|
+
const start = placement === "start" && !labelHidden.value;
|
|
279
|
+
const width = labelWidth.value ?? layout?.labelWidth ?? DEFAULT_LABEL_WIDTH;
|
|
280
|
+
const align = labelAlign.value ?? layout?.labelAlign ?? "end";
|
|
281
|
+
const hints = [hasContent(description.value) && createVNode(Text$1, mergeProps(mergePartProps({
|
|
282
|
+
tone: "muted",
|
|
283
|
+
sx: fieldStyles.hint
|
|
284
|
+
}, propsDescription.value, { id: ids.description }), { "key": "__site0" }), {
|
|
285
|
+
default: () => [unref(description)],
|
|
286
|
+
$stable: true
|
|
287
|
+
}), showError() && createVNode(Text$1, mergeProps(mergePartProps({
|
|
288
|
+
tone: "danger",
|
|
289
|
+
sx: [fieldStyles.hint, fieldStyles.error]
|
|
290
|
+
}, propsError.value, { id: ids.error }), { "key": "__site1" }), {
|
|
291
|
+
default: () => [createVNode(Icon, {
|
|
292
|
+
"icon": statusIcons.danger,
|
|
293
|
+
"sx": fieldStyles.errorIcon
|
|
294
|
+
}, null), message()],
|
|
295
|
+
$stable: true
|
|
296
|
+
})];
|
|
297
|
+
return createVNode("div", mergeProps(mergeAttrs({ sx: start ? [fieldStyles.start, css.bind(fieldColumnStyles.columns, () => [typeof width === "number" ? `${width}px` : width])] : fieldStyles.root }, rest, { onFocusout }), {
|
|
298
|
+
"data-invalid": (invalid.value ?? message() != null) || void 0,
|
|
299
|
+
"data-disabled": isDisabled() || void 0,
|
|
300
|
+
"data-label-placement": placement
|
|
301
|
+
}), [hasContent(label.value) && createVNode(Label, mergeProps(mergePartProps({
|
|
302
|
+
required: isRequired(),
|
|
303
|
+
disabled: isDisabled(),
|
|
304
|
+
sx: labelHidden.value ? visuallyHiddenStyles.hidden : start && (align === "end" ? fieldStyles.labelEnd : fieldStyles.labelStart)
|
|
305
|
+
}, propsLabel.value, {
|
|
306
|
+
id: ids.label,
|
|
307
|
+
for: ids.control
|
|
308
|
+
}), { "key": "__site2" }), {
|
|
309
|
+
default: () => [unref(label)],
|
|
310
|
+
$stable: true
|
|
311
|
+
}), start ? createVNode("div", mergeAttrs({ sx: [fieldStyles.control, !hasContent(label.value) && fieldStyles.controlWithoutLabel] }, propsControl.value), [bindValue(children.value), hints]) : [bindValue(children.value), hints]]);
|
|
312
|
+
};
|
|
313
|
+
}, {
|
|
314
|
+
name: "Field",
|
|
315
|
+
props: [
|
|
316
|
+
"name",
|
|
317
|
+
"valueProp",
|
|
318
|
+
"label",
|
|
319
|
+
"description",
|
|
320
|
+
"error",
|
|
321
|
+
"invalid",
|
|
322
|
+
"required",
|
|
323
|
+
"disabled",
|
|
324
|
+
"readonly",
|
|
325
|
+
"labelPlacement",
|
|
326
|
+
"labelWidth",
|
|
327
|
+
"labelAlign",
|
|
328
|
+
"labelHidden",
|
|
329
|
+
"propsLabel",
|
|
330
|
+
"propsControl",
|
|
331
|
+
"propsDescription",
|
|
332
|
+
"propsError"
|
|
333
|
+
]
|
|
334
|
+
});
|
|
335
|
+
//#endregion
|
|
336
|
+
export { Field, FieldContext, Label, fieldColumnStyles, fieldStyles, labelStyles, useFieldControl, useFormReset };
|
|
337
|
+
|
|
338
|
+
//# sourceMappingURL=Field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Field.js","names":["_vtp_readonlyProp","_vtp_childrenProp","_vtp_restProps","_createVNode","_mergeProps","Text","_vue_unref"],"sources":["../../src/form/Field.tsx"],"sourcesContent":["/**\n * 表单字段:标签 + 控件 + 说明 + 错误信息,并把它们关联起来(参考 Ark UI Field、React Aria 的 Label / Description / FieldError)。\n *\n * <Field label=\"邮箱\" description=\"用于找回密码\" error={errors.email} required>\n * <TextField _value={form.email} type=\"email\" />\n * </Field>\n *\n * Field 经上下文告诉里面的控件:控件的 id(标签的 for 指向它)、标签的 id(不是原生输入的控件用 aria-labelledby)、\n * 说明与错误的 id(aria-describedby),以及 invalid / required / disabled / readonly。\n * 控件上显式写的状态优先于 Field 的。控件用 useFieldControl 读取这些信息,单独使用(不在 Field 里)时照常工作。\n * 在 Form 里写了 name 时,错误信息取自表单控制器(useForm),焦点离开字段时报告失焦(何时显示错误见 useForm);\n * 里面只有一个控件、控件上没写值时自动绑定表单的这个字段(valueProp 决定写 _value 还是 _checked),\n * 标签与控件登记给表单,错误汇总(FormErrorSummary)据此列出字段名、跳到控件。\n *\n * 标签可以放在起始边(`labelPlacement=\"start\"`):标签一列、控件一列,标签与控件的第一行文字按基线对齐,\n * 多行文本框、勾选组也对得齐。通常在 Form、FormSection 上统一设置(见 field-layout),整组的只读、不可用同样从那里来。\n *\n * 部件:Root(div)、Label(Label)、Control(div,标签在起始边时包住控件、说明与错误)、\n * Description(Text)、Error(Text,带警示图标)。\n */\nimport { Asterisk } from '@lucide/icons';\nimport { createContext, _component } from '@zerodep-dev/vue-tsx-pro-tsx';\nimport * as css from '@zerodep-dev/vue-tsx-pro-tsx/styles';\nimport {\n cloneVNode,\n Fragment,\n isVNode,\n onBeforeUnmount,\n useId,\n watch,\n type VNode,\n type VNodeChild,\n} from 'vue';\nimport { Icon, type IconProps } from '../base/Icon';\nimport { Text, type TextProps } from '../base/Text';\nimport { visuallyHiddenStyles } from '../base/VisuallyHidden';\nimport { plainText } from '../utils/data/text';\nimport { focusControl } from '../utils/dom/focus';\nimport { hasContent, mergeAttrs, mergePartProps, type PartProps } from '../utils/props';\nimport { statusIcons } from '../utils/style/tone-styles';\nimport {\n FieldLayoutContext,\n type FieldLabelAligns,\n type FieldLabelPlacements,\n} from './field-layout';\nimport { FormContext } from './Form';\nimport type { FieldConstraints } from './form-constraints';\n\nconst NO_CONSTRAINTS: FieldConstraints = Object.freeze({});\n\n/** Field 交给控件的信息 */\nexport interface FieldState {\n /** 控件(主元素)的 id,标签的 for 指向它 */\n readonly controlId: string;\n /** 标签的 id:控件不是原生输入元素(滑块、单选组)时用 aria-labelledby 指向它 */\n readonly labelId: string | undefined;\n /** 说明与错误信息的 id,空格分隔,给 aria-describedby */\n readonly describedBy: string | undefined;\n /** 校验未通过 */\n readonly invalid: boolean;\n /** 必填 */\n readonly required: boolean;\n /** 不可用 */\n readonly disabled: boolean;\n /** 只读 */\n readonly readonly: boolean;\n /** 从表单 schema 推出的约束(在 Form 里写了 name 时);控件据此加 maxlength、min / max 等 */\n readonly constraints: FieldConstraints;\n /**\n * 认领 Field 的 id 与标签:Field 里有几个控件时(一组勾选框),只有第一个控件拿 Field 的 id、用它的标签当名字,\n * 其余控件留着自己的名字(勾选框自己的文字),id 也不重复。认领到了返回 true\n */\n claim?(token: symbol): boolean;\n /** 认领的控件卸载了:下一个控件可以认领 */\n release?(token: symbol): void;\n}\n\n/** Field 的上下文:自定义控件用 useFieldControl 接入,一般不直接读它;null 表示子树不属于任何 Field */\nexport const FieldContext = createContext<FieldState | null>('Field');\n\n/** 控件自己的状态(不写时取 Field 的) */\nexport interface FieldControlOptions {\n /** 控件上显式写的 id */\n id?: string;\n /** 校验未通过 */\n invalid?: boolean;\n /** 必填;在 Form 里写了 name 时默认按表单的 schema(如 z.string().min(1)) */\n required?: boolean;\n /** 不可用 */\n disabled?: boolean;\n /** 只读 */\n readonly?: boolean;\n}\n\n/** useFieldControl 的选项 */\nexport interface FieldControlUse {\n /** 输入交给里面的另一个控件(DatePicker 里的 DateField):子树仍属于 Field,由那个控件接 */\n delegate?: boolean;\n}\n\n/** 控件合并 Field 之后的状态与关联属性 */\nexport interface FieldControl {\n /** 控件的 id:显式写的优先,其次是 Field 给的 */\n id: string | undefined;\n /** 不是原生输入元素的控件用它作 aria-labelledby */\n labelledBy: string | undefined;\n /** aria-describedby */\n describedBy: string | undefined;\n /** 校验未通过 */\n invalid: boolean;\n /** 必填 */\n required: boolean;\n /** 不可用 */\n disabled: boolean;\n /** 只读 */\n readonly: boolean;\n /** 从表单 schema 推出的约束;不在 Field 里、或推不出时为空对象。控件上显式写的属性优先 */\n constraints: FieldConstraints;\n}\n\n/**\n * 所在的表单重置时(form.reset()、type=\"reset\" 的按钮)调用:控件丢掉自己还没写回的输入(日期分段打了一半)。\n * 值本身由表单改回去;只是半截输入时值一直是 null,重置前后没有变化,控件不知道要清。在 setup 里调用\n */\nexport function useFormReset(onReset: () => void): void {\n const form = FormContext.inject(null);\n if (form) watch(() => form.resetCount, onReset);\n}\n\n/**\n * 控件读取所在 Field 的信息(在 setup 里调用,返回的函数在渲染时调用):\n * 控件上显式写的状态优先;不在 Field 里时用控件自己的,不可用与只读再看所在的 Form、FormSection。\n * 控件里再嵌的控件(Select 的搜索框、区间的两个框、时间面板的列表)不是 Field 的控件,\n * 拿到 Field 的 id、说明与必填会重复 id、让表单提交被空的搜索框拦住:调用后子树与 Field 隔开,\n * 除非写了 delegate\n */\nexport function useFieldControl(\n read: () => FieldControlOptions,\n { delegate = false }: FieldControlUse = {},\n): () => FieldControl {\n const field = FieldContext.inject(null);\n if (!delegate) FieldContext.provide(null);\n const layout = field ? null : FieldLayoutContext.inject(null);\n // 把输入交给里面控件的(delegate)不认领:由里面那个控件认领;它自己仍用 Field 的标签\n const token = Symbol('field-control');\n const owns = field == null ? false : delegate || (field.claim?.(token) ?? true);\n if (field && !delegate) onBeforeUnmount(() => field.release?.(token));\n return () => {\n const own = read();\n return {\n id: own.id ?? (owns ? field?.controlId : undefined),\n labelledBy: owns ? field?.labelId : undefined,\n describedBy: field?.describedBy,\n invalid: own.invalid ?? field?.invalid ?? false,\n required: own.required ?? field?.required ?? false,\n disabled: own.disabled ?? field?.disabled ?? layout?.disabled ?? false,\n readonly: own.readonly ?? field?.readonly ?? layout?.readonly ?? false,\n constraints: field?.constraints ?? NO_CONSTRAINTS,\n };\n };\n}\n\n/** 未声明的属性落到 label 上 */\nexport interface LabelProps extends PartProps<'label'> {\n /** 必填:文字后加一个星号图标(对读屏隐藏,必填由控件的 required 告诉读屏) */\n required?: boolean;\n /** 不可用:变淡 */\n disabled?: boolean;\n /** 必填标记的部件属性 */\n propsRequired?: Partial<IconProps>;\n children?: VNodeChild;\n}\n\n/** Field 的样式:root、disabled、required */\nexport const labelStyles = css.create({\n root: {\n display: 'inline-flex',\n alignItems: 'baseline',\n gap: '_xs',\n fontSize: '_sm',\n fontWeight: '_medium',\n lineHeight: '_tight',\n color: '_text',\n },\n disabled: { opacity: '_disabled' },\n required: { alignSelf: 'flex-start', width: '0.7em', height: '0.7em', color: '_dangerText' },\n});\n\n/**\n * for 指向的不是原生能被标签关联的元素(单选组、滑块组、日期分段这类 role=\"group\")时,点标签浏览器什么也不做:\n * 改为聚焦它里面第一个能聚焦的控件(同点原生输入框的标签)\n */\nfunction focusGroupControl(event: MouseEvent) {\n const label = event.currentTarget as HTMLLabelElement;\n if (event.defaultPrevented || label.control || !label.htmlFor) return;\n const target = label.ownerDocument.getElementById(label.htmlFor);\n if (target) focusControl(target);\n}\n\n/** 表单标签(label):for 指向控件;Field 里自动关联,单独使用时自己写 for */\nexport const Label = _component(\n ({ required = false, disabled = false, propsRequired, children, ...rest }: LabelProps) =>\n () => (\n <label\n {...mergeAttrs<'label'>(\n { sx: [labelStyles.root, disabled && labelStyles.disabled] },\n rest,\n { onClick: focusGroupControl },\n )}\n data-disabled={disabled || undefined}\n >\n {children}\n {required && (\n <Icon\n {...mergePartProps<IconProps>(\n { icon: Asterisk, sx: labelStyles.required },\n propsRequired,\n )}\n />\n )}\n </label>\n ),\n);\n\n/** 未声明的属性落到外层 div 上 */\nexport interface FieldProps extends PartProps<'div'> {\n /** 在 Form 里对应的字段路径(如 `email`、`address.city`):错误取自表单控制器,只有一个控件时自动绑定它的值 */\n name?: string;\n /**\n * 自动绑定值时写到控件的哪个属性:默认 _value;控件声明了 _checked 而没有 _value(Switch、单个 Checkbox)时是 _checked\n */\n valueProp?: '_value' | '_checked';\n /** 标签 */\n label?: VNodeChild;\n /** 控件下方的说明 */\n description?: VNodeChild;\n /** 错误信息:给了(且 invalid 不是 false)就显示,并把控件标为出错;在 Form 里写了 name 时默认取表单的错误 */\n error?: VNodeChild;\n /** 校验未通过;不写时有 error 就算出错 */\n invalid?: boolean;\n /** 必填 */\n required?: boolean;\n /** 不可用;不写时取所在 Form、FormSection 的 */\n disabled?: boolean;\n /** 只读;不写时取所在 Form、FormSection 的 */\n readonly?: boolean;\n /** 标签放在哪;不写时取所在 Form、FormSection 的,都没写时在上方 */\n labelPlacement?: keyof FieldLabelPlacements;\n /** 标签在起始边时标签列的宽度:数字是 px,也可以写 CSS 长度;默认 `'8em'` */\n labelWidth?: number | string;\n /** 标签在起始边时文字的对齐,默认 end(贴着控件) */\n labelAlign?: keyof FieldLabelAligns;\n /**\n * 标签只给读屏:视觉上隐藏,仍是控件的名称(表格式的重复行只在第一行显示列名、紧凑的筛选条);\n * 这时不占标签列,控件单独一列\n */\n labelHidden?: boolean;\n /** 标签的部件属性 */\n propsLabel?: Partial<LabelProps>;\n /** 控件列(标签在起始边时包住控件、说明与错误的 div)的部件属性 */\n propsControl?: PartProps<'div'>;\n /** 说明的部件属性 */\n propsDescription?: Partial<TextProps>;\n /** 错误信息的部件属性 */\n propsError?: Partial<TextProps>;\n /** 控件 */\n children?: VNodeChild;\n}\n\n/** 控件的组件声明了这个属性(运行时的 props 定义) */\nfunction declares(node: VNode, key: string): boolean {\n const declared = (node.type as { props?: unknown }).props;\n if (Array.isArray(declared)) return declared.includes(key);\n return typeof declared === 'object' && declared !== null && key in declared;\n}\n\n/** Field 里唯一的控件:一个组件的 VNode(数组里只有一项也算);不是时 undefined */\nfunction soleControl(children: VNodeChild): VNode | undefined {\n const node = Array.isArray(children) && children.length === 1 ? children[0] : children;\n if (!isVNode(node) || typeof node.type === 'string' || node.type === Fragment) return undefined;\n return node;\n}\n\n/** 标签在起始边时默认的标签列宽度:放得下七八个汉字 */\nconst DEFAULT_LABEL_WIDTH = '8em';\n\n/** Field 的样式:root、start、label…、control、hint、error、errorIcon */\nexport const fieldStyles = css.create({\n root: { display: 'flex', flexDirection: 'column', gap: '_xs', minWidth: 0 },\n // 标签一列、控件一列;第一行按基线对齐:标签与输入框里的文字、勾选项的文字在同一条线上\n start: {\n display: 'grid',\n columnGap: '_md',\n rowGap: '_xs',\n alignItems: 'baseline',\n },\n labelStart: { justifySelf: 'start', textAlign: 'start' },\n labelEnd: { justifySelf: 'end', textAlign: 'end' },\n // 没有标签时控件仍放在第二列,与上下的字段对齐\n controlWithoutLabel: { gridColumnStart: '2' },\n control: { display: 'flex', flexDirection: 'column', gap: '_xs', minWidth: 0 },\n hint: { fontSize: '_sm', lineHeight: '_normal' },\n error: { display: 'inline-flex', alignItems: 'flex-start', gap: '_xs' },\n errorIcon: { flexShrink: 0, marginBlock: '0.25em' },\n});\n\n/** Field 的动态样式:标签列的宽度 */\nexport const fieldColumnStyles = css.create({\n columns: (labelWidth: string) => ({ gridTemplateColumns: `${labelWidth} minmax(0, 1fr)` }),\n});\n\n/** 表单字段:标签、控件、说明、错误信息,自动关联 id 与状态 */\nexport const Field = _component(\n ({\n name,\n valueProp,\n label,\n description,\n error,\n invalid,\n required,\n disabled,\n readonly,\n labelPlacement,\n labelWidth,\n labelAlign,\n labelHidden = false,\n propsLabel,\n propsControl,\n propsDescription,\n propsError,\n children,\n ...rest\n }: FieldProps) => {\n const id = useId();\n const ids = {\n control: `${id}-control`,\n label: `${id}-label`,\n description: `${id}-description`,\n error: `${id}-error`,\n };\n const form = FormContext.inject(null);\n const layout = FieldLayoutContext.inject(null);\n // error={cond && '…'} 条件不成立时是 false:当作没写,用表单的错误\n const message = () =>\n hasContent(error) ? error : name != null ? form?.visibleError(name) : undefined;\n const showError = () => hasContent(message()) && invalid !== false;\n const constraints = () => (name != null && form ? form.constraints(name) : NO_CONSTRAINTS);\n const isRequired = () => required ?? constraints().required ?? false;\n const isDisabled = () => disabled ?? layout?.disabled ?? false;\n const isReadonly = () => readonly ?? layout?.readonly ?? false;\n\n // 第一个接入的控件认领 id 与标签(见 FieldState.claim)\n let owner: symbol | null = null;\n FieldContext.provide({\n claim: (token) => {\n owner ??= token;\n return owner === token;\n },\n release: (token) => {\n if (owner === token) owner = null;\n },\n controlId: ids.control,\n get labelId() {\n return hasContent(label) ? ids.label : undefined;\n },\n get describedBy() {\n const parts = [hasContent(description) && ids.description, showError() && ids.error];\n return parts.filter(Boolean).join(' ') || undefined;\n },\n get invalid() {\n return invalid ?? hasContent(message());\n },\n get required() {\n return isRequired();\n },\n get constraints() {\n return constraints();\n },\n get disabled() {\n return isDisabled();\n },\n get readonly() {\n return isReadonly();\n },\n });\n\n // 登记给表单:错误汇总据此显示字段名、跳到控件\n _effect(() =>\n name != null && form\n ? form.register(name, { label: plainText(label) ?? name, controlId: ids.control })\n : undefined,\n );\n\n /** 只有一个控件、控件上没写值时,自动绑定表单的这个字段(同 Ant Design Form.Item 的 name) */\n function bindValue(content: VNodeChild): VNodeChild {\n const control = name != null && form ? soleControl(content) : undefined;\n if (!control || !form) return content;\n const key =\n valueProp ??\n (declares(control, '_checked') && !declares(control, '_value') ? '_checked' : '_value');\n if (control.props && key in control.props) return content;\n const path = name!;\n return cloneVNode(control, {\n [key]: form.getValue(path),\n [`onUpdate:${key}`]: (value: unknown) => form.setValue(path, value),\n });\n }\n\n // 焦点离开整个字段(不是在字段内部移动)时报告失焦\n function onFocusout(event: FocusEvent) {\n const next = event.relatedTarget;\n const field = event.currentTarget as HTMLElement;\n if (name != null && !(next instanceof Node && field.contains(next))) form?.blur(name);\n }\n\n return () => {\n const placement = labelPlacement ?? layout?.labelPlacement ?? 'top';\n const start = placement === 'start' && !labelHidden;\n const width = labelWidth ?? layout?.labelWidth ?? DEFAULT_LABEL_WIDTH;\n const align = labelAlign ?? layout?.labelAlign ?? 'end';\n const hints = [\n hasContent(description) && (\n <Text\n {...mergePartProps<TextProps>(\n { tone: 'muted', sx: fieldStyles.hint },\n propsDescription,\n {\n id: ids.description,\n },\n )}\n >\n {description}\n </Text>\n ),\n showError() && (\n <Text\n {...mergePartProps<TextProps>(\n { tone: 'danger', sx: [fieldStyles.hint, fieldStyles.error] },\n propsError,\n { id: ids.error },\n )}\n >\n <Icon icon={statusIcons.danger} sx={fieldStyles.errorIcon} />\n {message()}\n </Text>\n ),\n ];\n return (\n <div\n {...mergeAttrs<'div'>(\n {\n sx: start\n ? [\n fieldStyles.start,\n fieldColumnStyles.columns(typeof width === 'number' ? `${width}px` : width),\n ]\n : fieldStyles.root,\n },\n rest,\n { onFocusout },\n )}\n data-invalid={(invalid ?? message() != null) || undefined}\n data-disabled={isDisabled() || undefined}\n data-label-placement={placement}\n >\n {hasContent(label) && (\n <Label\n {...mergePartProps<LabelProps>(\n {\n required: isRequired(),\n disabled: isDisabled(),\n sx: labelHidden\n ? visuallyHiddenStyles.hidden\n : start && (align === 'end' ? fieldStyles.labelEnd : fieldStyles.labelStart),\n },\n propsLabel,\n { id: ids.label, for: ids.control },\n )}\n >\n {label}\n </Label>\n )}\n {start ? (\n <div\n {...mergeAttrs<'div'>(\n {\n sx: [fieldStyles.control, !hasContent(label) && fieldStyles.controlWithoutLabel],\n },\n propsControl,\n )}\n >\n {bindValue(children)}\n {hints}\n </div>\n ) : (\n [bindValue(children), hints]\n )}\n </div>\n );\n };\n },\n);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type VNodeChild } from 'vue';
|
|
2
|
+
import { type PartProps } from '../utils/props';
|
|
3
|
+
import { type FieldLayout } from './field-layout';
|
|
4
|
+
import type { FormControllerBase } from './useForm';
|
|
5
|
+
/** 表单控制器(Field 按 name 读取错误、报告失焦) */
|
|
6
|
+
export declare const FormContext: import("@zerodep-dev/vue-tsx-pro-tsx").Context<FormControllerBase>;
|
|
7
|
+
/** 提交与重置由组件管理;未声明的属性落到 form 上 */
|
|
8
|
+
export interface FormProps extends PartProps<'form', 'novalidate'>, FieldLayout {
|
|
9
|
+
/** useForm() 创建的控制器 */
|
|
10
|
+
controller: FormControllerBase;
|
|
11
|
+
children?: VNodeChild;
|
|
12
|
+
}
|
|
13
|
+
/** 表单:提交时校验并聚焦第一个出错的控件,重置回到初始值 */
|
|
14
|
+
export declare const Form: import("@zerodep-dev/vue-tsx-pro-tsx").TsxComponent<FormProps>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { mergeAttrs } from "../utils/props.js";
|
|
2
|
+
import { focusControl } from "../utils/dom/focus.js";
|
|
3
|
+
import { provideFieldLayout } from "./field-layout.js";
|
|
4
|
+
import { createVNode, mergeProps, nextTick, shallowRef } from "vue";
|
|
5
|
+
import { _component, childrenProp, createContext, readonlyProp, restProps, untrack } from "@zerodep-dev/vue-tsx-pro-tsx";
|
|
6
|
+
//#region src/form/Form.tsx
|
|
7
|
+
/** 表单控制器(Field 按 name 读取错误、报告失焦) */
|
|
8
|
+
var FormContext = createContext("Form");
|
|
9
|
+
/** 提交与重置由组件管理;未声明的属性落到 form 上 */
|
|
10
|
+
/** 表单:提交时校验并聚焦第一个出错的控件,重置回到初始值 */
|
|
11
|
+
var Form = /*#__PURE__*/ _component((_props, _ctx) => {
|
|
12
|
+
const controller = readonlyProp(_props, "controller");
|
|
13
|
+
const labelPlacement = readonlyProp(_props, "labelPlacement");
|
|
14
|
+
const labelWidth = readonlyProp(_props, "labelWidth");
|
|
15
|
+
const labelAlign = readonlyProp(_props, "labelAlign");
|
|
16
|
+
const disabled = readonlyProp(_props, "disabled", false);
|
|
17
|
+
const readonly = readonlyProp(_props, "readonly", false);
|
|
18
|
+
const children = childrenProp(_props);
|
|
19
|
+
const rest = restProps(_props, _ctx, false);
|
|
20
|
+
let form = shallowRef(null);
|
|
21
|
+
FormContext.provide(untrack(() => controller.value));
|
|
22
|
+
provideFieldLayout(() => ({
|
|
23
|
+
labelPlacement: labelPlacement.value,
|
|
24
|
+
labelWidth: labelWidth.value,
|
|
25
|
+
labelAlign: labelAlign.value,
|
|
26
|
+
disabled: disabled.value,
|
|
27
|
+
readonly: readonly.value
|
|
28
|
+
}));
|
|
29
|
+
async function onSubmit(event) {
|
|
30
|
+
event.preventDefault();
|
|
31
|
+
if (await controller.value.submit()) return;
|
|
32
|
+
await nextTick();
|
|
33
|
+
const summary = form.value?.querySelector("[data-form-error-summary]");
|
|
34
|
+
if (summary) return summary.focus();
|
|
35
|
+
const invalid = form.value?.querySelector("[aria-invalid=\"true\"]");
|
|
36
|
+
if (invalid) focusControl(invalid);
|
|
37
|
+
}
|
|
38
|
+
function onReset(event) {
|
|
39
|
+
event.preventDefault();
|
|
40
|
+
controller.value.reset();
|
|
41
|
+
}
|
|
42
|
+
return () => createVNode("form", mergeProps(mergeAttrs({}, rest, {
|
|
43
|
+
ref: form,
|
|
44
|
+
novalidate: true,
|
|
45
|
+
onSubmit: (event) => void onSubmit(event),
|
|
46
|
+
onReset
|
|
47
|
+
}), {
|
|
48
|
+
"data-submitting": controller.value.submitting || void 0,
|
|
49
|
+
"data-disabled": disabled.value || void 0,
|
|
50
|
+
"data-readonly": readonly.value || void 0
|
|
51
|
+
}), [children.value]);
|
|
52
|
+
}, {
|
|
53
|
+
name: "Form",
|
|
54
|
+
props: [
|
|
55
|
+
"controller",
|
|
56
|
+
"labelPlacement",
|
|
57
|
+
"labelWidth",
|
|
58
|
+
"labelAlign",
|
|
59
|
+
"disabled",
|
|
60
|
+
"readonly"
|
|
61
|
+
]
|
|
62
|
+
});
|
|
63
|
+
//#endregion
|
|
64
|
+
export { Form, FormContext };
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=Form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Form.js","names":["_vtp_readonlyProp","_vtp_childrenProp","_vtp_restProps","_vue_shallowRef","_vtp_untrack","_createVNode","_mergeProps"],"sources":["../../src/form/Form.tsx"],"sourcesContent":["/**\n * 表单(form):把 useForm 的控制器交给里面的 Field。提交时先校验,没通过就把焦点移到错误汇总(有 FormErrorSummary 时)\n * 或第一个出错的控件上;\n * 原生的 reset(type=\"reset\" 的按钮)回到初始值。\n *\n * <Form controller={form}>\n * <form.Field name=\"email\" label=\"邮箱\"><TextField _value={form.values.email} /></form.Field>\n * <Button type=\"submit\" loading={form.submitting}>保存</Button>\n * </Form>\n *\n * 加了 novalidate:校验与错误信息由 useForm 与 Field 负责,不弹浏览器自带的气泡;控件上的 required 仍告诉读屏“必填”。\n *\n * 整张表单的标签布局(labelPlacement、labelWidth、labelAlign)与只读、不可用在这里统一设置,见 field-layout。\n */\nimport { createContext, _component } from '@zerodep-dev/vue-tsx-pro-tsx';\nimport { nextTick, type VNodeChild } from 'vue';\nimport { focusControl } from '../utils/dom/focus';\nimport { mergeAttrs, type PartProps } from '../utils/props';\nimport { provideFieldLayout, type FieldLayout } from './field-layout';\nimport type { FormControllerBase } from './useForm';\n\n/** 表单控制器(Field 按 name 读取错误、报告失焦) */\nexport const FormContext = createContext<FormControllerBase>('Form');\n\n/** 提交与重置由组件管理;未声明的属性落到 form 上 */\nexport interface FormProps extends PartProps<'form', 'novalidate'>, FieldLayout {\n /** useForm() 创建的控制器 */\n controller: FormControllerBase;\n children?: VNodeChild;\n}\n\n/** 表单:提交时校验并聚焦第一个出错的控件,重置回到初始值 */\nexport const Form = _component(\n ({\n controller,\n labelPlacement,\n labelWidth,\n labelAlign,\n disabled = false,\n readonly = false,\n children,\n ...rest\n }: FormProps) => {\n let form = _state.raw<HTMLFormElement | null>(null);\n // 控制器在表单存在期间不换:只取当前值提供下去\n FormContext.provide(_untrack(controller));\n provideFieldLayout(() => ({ labelPlacement, labelWidth, labelAlign, disabled, readonly }));\n\n async function onSubmit(event: Event) {\n event.preventDefault();\n if (await controller.submit()) return;\n // 等错误渲染出来(aria-invalid 写到控件上)再移焦点\n await nextTick();\n // 有错误汇总时先到它那里(读屏念出有几项、各是什么),从它的链接跳到字段\n const summary = form?.querySelector<HTMLElement>('[data-form-error-summary]');\n if (summary) return summary.focus();\n const invalid = form?.querySelector<HTMLElement>('[aria-invalid=\"true\"]');\n // 出错的可能是一组控件(RadioGroup 的 radiogroup 本身不能聚焦):聚焦它里面第一个能聚焦的\n if (invalid) focusControl(invalid);\n }\n\n function onReset(event: Event) {\n event.preventDefault();\n controller.reset();\n }\n\n return () => (\n <form\n {...mergeAttrs<'form'>({}, rest, {\n ref: _toRef(form),\n novalidate: true,\n onSubmit: (event: Event) => void onSubmit(event),\n onReset,\n })}\n data-submitting={controller.submitting || undefined}\n data-disabled={disabled || undefined}\n data-readonly={readonly || undefined}\n >\n {children}\n </form>\n );\n },\n);\n"],"mappings":";;;;;;;AAsBA,IAAa,cAAc,cAAkC,MAAM;;;AAUnE,IAAa,OAAO,0BAClB,QAAA,SASiB;CAAA,MAAA,aAAAA,aAAA,QAAA,YAAA;CAAA,MAAA,iBAAAA,aAAA,QAAA,gBAAA;CAAA,MAAA,aAAAA,aAAA,QAAA,YAAA;CAAA,MAAA,aAAAA,aAAA,QAAA,YAAA;CAAA,MAAA,WAAAA,aAAA,QAAA,YAJJ,KAAK;CAAA,MAAA,WAAAA,aAAA,QAAA,YACL,KAAK;CAAA,MAAA,WAAAC,aAAA,MAAA;CAAA,MAEb,OAAIC,UAAA,QAAA,MAAA,KAAA;CAEP,IAAI,OAAIC,WAAsC,IAAI;CAElD,YAAY,QAAOC,cAAA,WAAA,KAAA,CAAqB;CACxC,0BAA0B;EAAE,gBAAc,eAAA;EAAE,YAAU,WAAA;EAAE,YAAU,WAAA;EAAE,UAAQ,SAAA;EAAE,UAAQ,SAAA;CAAC,EAAE;CAEzF,eAAe,SAAS,OAAc;EACpC,MAAM,eAAe;EACrB,IAAI,MAAM,WAAA,MAAW,OAAO,GAAG;EAE/B,MAAM,SAAS;EAEf,MAAM,UAAU,KAAA,OAAM,cAA2B,2BAA2B;EAC5E,IAAI,SAAS,OAAO,QAAQ,MAAM;EAClC,MAAM,UAAU,KAAA,OAAM,cAA2B,yBAAuB;EAExE,IAAI,SAAS,aAAa,OAAO;CACnC;CAEA,SAAS,QAAQ,OAAc;EAC7B,MAAM,eAAe;EACrB,WAAA,MAAW,MAAM;CACnB;CAEA,aAAOC,YAAA,QAAAC,WAEC,WAAmB,CAAC,GAAG,MAAM;EAC/B,KAAG;EACH,YAAY;EACZ,WAAW,UAAiB,KAAK,SAAS,KAAK;EAC/C;CACF,CAAC,GAAC;EAAA,mBACe,WAAA,MAAW,cAAc,KAAA;EAAS,iBACpC,SAAA,SAAY,KAAA;EAAS,iBACrB,SAAA,SAAY,KAAA;CAAS,CAAA,GAAA,CAAA,SAAA,KAAA,CAAA;AAK1C,GAAC;CAAA,MAAA;CAAA,OAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;CAAA;AAAA,CACH"}
|