@yoka-ui/ui 1.0.10-test → 1.1.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/@Docs-yoka/exports.generated.md +68 -62
- package/README.md +40 -189
- package/dist/es/assets/image/skills.zip +0 -0
- package/dist/es/business/AiChat/index.d.ts +3 -3
- package/dist/es/business/AiChat/index.js +331 -119
- package/dist/es/business/AiChat/index.js.map +3 -3
- package/dist/es/business/AiChat/intentRecognizer.js.map +1 -1
- package/dist/es/business/AiChat/navigationManager.js +6 -6
- package/dist/es/business/AiChat/navigationManager.js.map +2 -2
- package/dist/es/business/AiChat/sse.d.ts +15 -0
- package/dist/es/business/AiChat/sse.js +118 -7
- package/dist/es/business/AiChat/sse.js.map +2 -2
- package/dist/es/business/AiChat/type.d.ts +22 -23
- package/dist/es/business/AiChat/useAiChat.js +105 -75
- package/dist/es/business/AiChat/useAiChat.js.map +3 -3
- package/dist/es/business/AiChat/useTaskWorkflow.d.ts +1 -2
- package/dist/es/business/AiChat/useTaskWorkflow.js +2 -36
- package/dist/es/business/AiChat/useTaskWorkflow.js.map +2 -2
- package/dist/es/business/DrawerPageInfo/index.js.map +1 -1
- package/dist/es/business/Editor/index.d.ts +1 -1
- package/dist/es/business/Editor/index.js.map +2 -2
- package/dist/es/business/Empty/index.js +1 -1
- package/dist/es/business/Empty/index.js.map +1 -1
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Category.js +2 -2
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Category.js.map +2 -2
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Content.js +3 -3
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Content.js.map +2 -2
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Selected.js +2 -2
- package/dist/es/business/ModCommonFilter/components/PopoverContent/Selected.js.map +2 -2
- package/dist/es/business/ModCommonFilter/index.d.ts +1 -1
- package/dist/es/business/ModCommonFilter/index.js.map +2 -2
- package/dist/es/business/YkCharts/Area.d.ts +18 -0
- package/dist/es/business/YkCharts/Area.js +336 -0
- package/dist/es/business/YkCharts/Area.js.map +7 -0
- package/dist/es/business/YkCharts/Bar.d.ts +21 -0
- package/dist/es/business/YkCharts/Bar.js +316 -0
- package/dist/es/business/YkCharts/Bar.js.map +7 -0
- package/dist/es/business/YkCharts/BarProperty.d.ts +21 -0
- package/dist/es/business/YkCharts/BarProperty.js +357 -0
- package/dist/es/business/YkCharts/BarProperty.js.map +7 -0
- package/dist/es/business/YkCharts/BarTotal.d.ts +21 -0
- package/dist/es/business/YkCharts/BarTotal.js +292 -0
- package/dist/es/business/YkCharts/BarTotal.js.map +7 -0
- package/dist/es/business/YkCharts/Line.d.ts +21 -0
- package/dist/es/business/YkCharts/Line.js +342 -0
- package/dist/es/business/YkCharts/Line.js.map +7 -0
- package/dist/es/business/YkCharts/Pie.d.ts +19 -0
- package/dist/es/business/YkCharts/Pie.js +107 -0
- package/dist/es/business/YkCharts/Pie.js.map +7 -0
- package/dist/es/business/YkCharts/PieProperty.d.ts +18 -0
- package/dist/es/business/YkCharts/PieProperty.js +180 -0
- package/dist/es/business/YkCharts/PieProperty.js.map +7 -0
- package/dist/es/business/YkCharts/Pies.d.ts +26 -0
- package/dist/es/business/YkCharts/Pies.js +352 -0
- package/dist/es/business/YkCharts/Pies.js.map +7 -0
- package/dist/es/business/YkCharts/constants.d.ts +1 -0
- package/dist/es/business/YkCharts/constants.js +47 -0
- package/dist/es/business/YkCharts/constants.js.map +7 -0
- package/dist/es/business/YkCharts/hooks.d.ts +4 -0
- package/dist/es/business/YkCharts/hooks.js +37 -0
- package/dist/es/business/YkCharts/hooks.js.map +7 -0
- package/dist/es/business/YkCharts/index.d.ts +9 -0
- package/dist/es/business/YkCharts/index.js +20 -0
- package/dist/es/business/YkCharts/index.js.map +7 -0
- package/dist/es/business/YkCharts/index.module.less +164 -0
- package/dist/es/business/YkCharts/tooltip.less +92 -0
- package/dist/es/business/YkCharts/transformData.js +16 -0
- package/dist/es/business/YkCharts/transformData.js.map +7 -0
- package/dist/es/business/YkCharts/typing.d.ts +74 -0
- package/dist/es/business/YkCharts/typing.js +1 -0
- package/dist/es/business/YkCharts/typing.js.map +7 -0
- package/dist/es/business/YkCharts/utils.d.ts +4 -0
- package/dist/es/business/YkCharts/utils.js +109 -0
- package/dist/es/business/YkCharts/utils.js.map +7 -0
- package/dist/es/business/YkCharts/variables.less +13 -0
- package/dist/es/business/YkLoginModule/SmsLoginForm.d.ts +25 -0
- package/dist/es/business/YkLoginModule/SmsLoginForm.js +178 -0
- package/dist/es/business/YkLoginModule/SmsLoginForm.js.map +7 -0
- package/dist/es/business/YkLoginModule/index.d.ts +48 -0
- package/dist/es/business/YkLoginModule/index.js +198 -0
- package/dist/es/business/YkLoginModule/index.js.map +7 -0
- package/dist/es/business/YkLoginModule/styles.module.less +169 -0
- package/dist/es/business/YkPorjectSelect/index.d.ts +1 -1
- package/dist/es/business/YkPorjectSelect/index.js +2 -2
- package/dist/es/business/YkPorjectSelect/index.js.map +2 -2
- package/dist/es/business/YkSqlEdit/code-mirror-custom.module.less +154 -0
- package/dist/es/business/YkSqlEdit/index.d.ts +20 -0
- package/dist/es/business/YkSqlEdit/index.js +180 -0
- package/dist/es/business/YkSqlEdit/index.js.map +7 -0
- package/dist/es/business/YkSqlEdit/sql-language.d.ts +11 -0
- package/dist/es/business/YkSqlEdit/sql-language.js +1460 -0
- package/dist/es/business/YkSqlEdit/sql-language.js.map +7 -0
- package/dist/es/components/DebounceInput/index.js.map +2 -2
- package/dist/es/components/MultipleSelect/index.d.ts +14 -0
- package/dist/es/components/MultipleSelect/index.js +1 -1
- package/dist/es/components/MultipleSelect/index.js.map +2 -2
- package/dist/es/components/RefreshButton/index.js.map +2 -2
- package/dist/es/components/SearchWithHistory/index.js +1 -1
- package/dist/es/components/SearchWithHistory/index.js.map +2 -2
- package/dist/es/components/TextWithToolTip/index.d.ts +1 -1
- package/dist/es/components/TextWithToolTip/index.js.map +2 -2
- package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.d.ts +1 -24
- package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.js +2 -2
- package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.js.map +2 -2
- package/dist/es/components/TreeTransfer/index.d.ts +1 -24
- package/dist/es/components/TreeTransfer/index.js +8 -8
- package/dist/es/components/TreeTransfer/index.js.map +2 -2
- package/dist/es/components/TreeTransfer/utils/index.d.ts +1 -1
- package/dist/es/components/TreeTransfer/utils/index.js.map +2 -2
- package/dist/es/components/YKMarkdown/index.d.ts +11 -0
- package/dist/es/components/YKMarkdown/index.js +236 -0
- package/dist/es/components/YKMarkdown/index.js.map +7 -0
- package/dist/es/components/YKMarkdown/index.module.less +83 -0
- package/dist/es/components/YkDateRangePicker/YkDateRangePicker.mdx +194 -0
- package/dist/es/components/YkDateRangePicker/index.d.ts +9 -1
- package/dist/es/components/YkDateRangePicker/index.js +127 -61
- package/dist/es/components/YkDateRangePicker/index.js.map +2 -2
- package/dist/es/components/YkDateRangePicker/index.module.less +33 -9
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.d.ts +1 -1
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js +3 -2
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js.map +2 -2
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.d.ts +1 -1
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js +23 -3
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js.map +2 -2
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.d.ts +1 -1
- package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js.map +2 -2
- package/dist/es/components/YkRangeDateWithVS/index.d.ts +2 -2
- package/dist/es/components/YkRangeDateWithVS/index.js.map +2 -2
- package/dist/es/components/YkRangeDateWithVS/index.module.less +22 -4
- package/dist/es/components/YkRangeTimeWithRecent/index.d.ts +1 -1
- package/dist/es/components/YkRangeTimeWithRecent/index.js.map +2 -2
- package/dist/es/creative/ArcCheckbox/index.d.ts +12 -0
- package/dist/es/creative/ArcCheckbox/index.js +49 -0
- package/dist/es/creative/ArcCheckbox/index.js.map +7 -0
- package/dist/es/creative/ArcCheckbox/index.module.less +102 -0
- package/dist/es/creative/ButtonRadioWithInfo/index.js.map +1 -1
- package/dist/es/creative/ButtonWithProgress/index.d.ts +1 -1
- package/dist/es/creative/ButtonWithProgress/index.js.map +2 -2
- package/dist/es/creative/GlassSegmentedRadio/index.d.ts +24 -0
- package/dist/es/creative/GlassSegmentedRadio/index.js +75 -0
- package/dist/es/creative/GlassSegmentedRadio/index.js.map +7 -0
- package/dist/es/creative/GlassSegmentedRadio/index.module.less +241 -0
- package/dist/es/creative/SkillsWriter/index.d.ts +3 -0
- package/dist/es/creative/SkillsWriter/index.js +191 -0
- package/dist/es/creative/SkillsWriter/index.js.map +7 -0
- package/dist/es/creative/SkillsWriter/index.module.less +21 -0
- package/dist/es/index.d.ts +32 -24
- package/dist/es/index.js +90 -80
- package/dist/es/index.js.map +2 -2
- package/dist/es/index.less +44 -0
- package/dist/es/layout/FlexGrid/index.d.ts +1 -1
- package/dist/es/layout/FlexGrid/index.js.map +2 -2
- package/dist/es/layout/YkContainer/index.js.map +1 -1
- package/dist/es/layout/YkDrawer/index.d.ts +1 -1
- package/dist/es/layout/YkDrawer/index.js.map +2 -2
- package/dist/es/ui/LabelSelect/demo.js +1 -1
- package/dist/es/ui/LabelSelect/demo.js.map +2 -2
- package/dist/es/ui/LabelSelect/index.d.ts +1 -1
- package/dist/es/ui/LabelSelect/index.js +1 -1
- package/dist/es/ui/LabelSelect/index.js.map +2 -2
- package/dist/es/ui/LogicOperator/index.d.ts +1 -1
- package/dist/es/ui/LogicOperator/index.js.map +2 -2
- package/dist/es/ui/YkButton/index.d.ts +1 -1
- package/dist/es/ui/YkButton/index.js.map +2 -2
- package/dist/es/ui/YkCard/index.d.ts +1 -1
- package/dist/es/ui/YkCard/index.js +1 -1
- package/dist/es/ui/YkCard/index.js.map +2 -2
- package/dist/es/ui/YkCheckbox/index.d.ts +1 -1
- package/dist/es/ui/YkCheckbox/index.js.map +2 -2
- package/dist/es/ui/YkDescriptions/index.d.ts +1 -1
- package/dist/es/ui/YkDescriptions/index.js.map +2 -2
- package/dist/es/ui/YkPagination/index.d.ts +1 -1
- package/dist/es/ui/YkPagination/index.js.map +2 -2
- package/dist/es/ui/YkRadio/index.d.ts +1 -1
- package/dist/es/ui/YkRadio/index.js.map +2 -2
- package/dist/es/ui/YkSegmented/index.d.ts +1 -1
- package/dist/es/ui/YkSegmented/index.js.map +2 -2
- package/dist/es/ui/YkSelect/index.d.ts +1 -1
- package/dist/es/ui/YkSelect/index.js.map +2 -2
- package/dist/es/ui/YkSpin/index.d.ts +1 -1
- package/dist/es/ui/YkSpin/index.js.map +2 -2
- package/dist/es/ui/YkStatistic/index.d.ts +1 -1
- package/dist/es/ui/YkStatistic/index.js.map +2 -2
- package/dist/es/ui/YkSwitch/index.d.ts +1 -1
- package/dist/es/ui/YkSwitch/index.js.map +2 -2
- package/dist/es/ui/YkTabs/index.d.ts +1 -1
- package/dist/es/ui/YkTabs/index.js.map +2 -2
- package/dist/es/ui/YkTooltip/index.d.ts +1 -1
- package/dist/es/ui/YkTooltip/index.js.map +2 -2
- package/dist/es/utils/styleUtils.js.map +2 -2
- package/dist/es/utils/ykStorybookDoc.d.ts +15 -0
- package/dist/es/utils/ykStorybookDoc.js +24 -2
- package/dist/es/utils/ykStorybookDoc.js.map +2 -2
- package/dist/lib/assets/image/skills.zip +0 -0
- package/dist/lib/business/AiChat/index.d.ts +3 -3
- package/dist/lib/business/AiChat/index.js +320 -111
- package/dist/lib/business/AiChat/index.js.map +3 -3
- package/dist/lib/business/AiChat/intentRecognizer.js.map +1 -1
- package/dist/lib/business/AiChat/navigationManager.js +6 -6
- package/dist/lib/business/AiChat/navigationManager.js.map +2 -2
- package/dist/lib/business/AiChat/sse.d.ts +15 -0
- package/dist/lib/business/AiChat/sse.js +117 -7
- package/dist/lib/business/AiChat/sse.js.map +2 -2
- package/dist/lib/business/AiChat/type.d.ts +22 -23
- package/dist/lib/business/AiChat/type.js.map +1 -1
- package/dist/lib/business/AiChat/useAiChat.js +104 -74
- package/dist/lib/business/AiChat/useAiChat.js.map +3 -3
- package/dist/lib/business/AiChat/useTaskWorkflow.d.ts +1 -2
- package/dist/lib/business/AiChat/useTaskWorkflow.js +0 -34
- package/dist/lib/business/AiChat/useTaskWorkflow.js.map +2 -2
- package/dist/lib/business/DrawerPageInfo/index.js.map +1 -1
- package/dist/lib/business/Editor/index.d.ts +1 -1
- package/dist/lib/business/Editor/index.js.map +2 -2
- package/dist/lib/business/Empty/index.js +1 -1
- package/dist/lib/business/Empty/index.js.map +1 -1
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Category.js +3 -3
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Category.js.map +2 -2
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Content.js +4 -4
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Content.js.map +2 -2
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Selected.js +3 -3
- package/dist/lib/business/ModCommonFilter/components/PopoverContent/Selected.js.map +2 -2
- package/dist/lib/business/ModCommonFilter/index.d.ts +1 -1
- package/dist/lib/business/ModCommonFilter/index.js.map +2 -2
- package/dist/lib/business/YkCharts/Area.d.ts +18 -0
- package/dist/lib/business/YkCharts/Area.js +346 -0
- package/dist/lib/business/YkCharts/Area.js.map +7 -0
- package/dist/lib/business/YkCharts/Bar.d.ts +21 -0
- package/dist/lib/business/YkCharts/Bar.js +323 -0
- package/dist/lib/business/YkCharts/Bar.js.map +7 -0
- package/dist/lib/business/YkCharts/BarProperty.d.ts +21 -0
- package/dist/lib/business/YkCharts/BarProperty.js +370 -0
- package/dist/lib/business/YkCharts/BarProperty.js.map +7 -0
- package/dist/lib/business/YkCharts/BarTotal.d.ts +21 -0
- package/dist/lib/business/YkCharts/BarTotal.js +298 -0
- package/dist/lib/business/YkCharts/BarTotal.js.map +7 -0
- package/dist/lib/business/YkCharts/Line.d.ts +21 -0
- package/dist/lib/business/YkCharts/Line.js +349 -0
- package/dist/lib/business/YkCharts/Line.js.map +7 -0
- package/dist/lib/business/YkCharts/Pie.d.ts +19 -0
- package/dist/lib/business/YkCharts/Pie.js +117 -0
- package/dist/lib/business/YkCharts/Pie.js.map +7 -0
- package/dist/lib/business/YkCharts/PieProperty.d.ts +18 -0
- package/dist/lib/business/YkCharts/PieProperty.js +193 -0
- package/dist/lib/business/YkCharts/PieProperty.js.map +7 -0
- package/dist/lib/business/YkCharts/Pies.d.ts +26 -0
- package/dist/lib/business/YkCharts/Pies.js +341 -0
- package/dist/lib/business/YkCharts/Pies.js.map +7 -0
- package/dist/lib/business/YkCharts/constants.d.ts +1 -0
- package/dist/lib/business/YkCharts/constants.js +71 -0
- package/dist/lib/business/YkCharts/constants.js.map +7 -0
- package/dist/lib/business/YkCharts/hooks.d.ts +4 -0
- package/dist/lib/business/YkCharts/hooks.js +62 -0
- package/dist/lib/business/YkCharts/hooks.js.map +7 -0
- package/dist/lib/business/YkCharts/index.d.ts +9 -0
- package/dist/lib/business/YkCharts/index.js +61 -0
- package/dist/lib/business/YkCharts/index.js.map +7 -0
- package/dist/lib/business/YkCharts/index.module.less +164 -0
- package/dist/lib/business/YkCharts/tooltip.less +92 -0
- package/dist/lib/business/YkCharts/transformData.js +40 -0
- package/dist/lib/business/YkCharts/transformData.js.map +7 -0
- package/dist/lib/business/YkCharts/typing.d.ts +74 -0
- package/dist/lib/business/YkCharts/typing.js +18 -0
- package/dist/lib/business/YkCharts/typing.js.map +7 -0
- package/dist/lib/business/YkCharts/utils.d.ts +4 -0
- package/dist/lib/business/YkCharts/utils.js +143 -0
- package/dist/lib/business/YkCharts/utils.js.map +7 -0
- package/dist/lib/business/YkCharts/variables.less +13 -0
- package/dist/lib/business/YkLoginModule/SmsLoginForm.d.ts +25 -0
- package/dist/lib/business/YkLoginModule/SmsLoginForm.js +171 -0
- package/dist/lib/business/YkLoginModule/SmsLoginForm.js.map +7 -0
- package/dist/lib/business/YkLoginModule/index.d.ts +48 -0
- package/dist/lib/business/YkLoginModule/index.js +206 -0
- package/dist/lib/business/YkLoginModule/index.js.map +7 -0
- package/dist/lib/business/YkLoginModule/styles.module.less +169 -0
- package/dist/lib/business/YkPorjectSelect/index.d.ts +1 -1
- package/dist/lib/business/YkPorjectSelect/index.js +3 -3
- package/dist/lib/business/YkPorjectSelect/index.js.map +2 -2
- package/dist/lib/business/YkSqlEdit/code-mirror-custom.module.less +154 -0
- package/dist/lib/business/YkSqlEdit/index.d.ts +20 -0
- package/dist/lib/business/YkSqlEdit/index.js +202 -0
- package/dist/lib/business/YkSqlEdit/index.js.map +7 -0
- package/dist/lib/business/YkSqlEdit/sql-language.d.ts +11 -0
- package/dist/lib/business/YkSqlEdit/sql-language.js +1493 -0
- package/dist/lib/business/YkSqlEdit/sql-language.js.map +7 -0
- package/dist/lib/components/DebounceInput/index.js.map +2 -2
- package/dist/lib/components/MultipleSelect/index.d.ts +14 -0
- package/dist/lib/components/MultipleSelect/index.js +1 -1
- package/dist/lib/components/MultipleSelect/index.js.map +2 -2
- package/dist/lib/components/RefreshButton/index.js.map +2 -2
- package/dist/lib/components/SearchWithHistory/index.js +1 -1
- package/dist/lib/components/SearchWithHistory/index.js.map +2 -2
- package/dist/lib/components/TextWithToolTip/index.d.ts +1 -1
- package/dist/lib/components/TextWithToolTip/index.js.map +2 -2
- package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.d.ts +1 -24
- package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.js +2 -2
- package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.js.map +2 -2
- package/dist/lib/components/TreeTransfer/index.d.ts +1 -24
- package/dist/lib/components/TreeTransfer/index.js +3 -3
- package/dist/lib/components/TreeTransfer/index.js.map +2 -2
- package/dist/lib/components/TreeTransfer/utils/index.d.ts +1 -1
- package/dist/lib/components/TreeTransfer/utils/index.js.map +2 -2
- package/dist/lib/components/YKMarkdown/index.d.ts +11 -0
- package/dist/lib/components/YKMarkdown/index.js +188 -0
- package/dist/lib/components/YKMarkdown/index.js.map +7 -0
- package/dist/lib/components/YKMarkdown/index.module.less +83 -0
- package/dist/lib/components/YkDateRangePicker/YkDateRangePicker.mdx +194 -0
- package/dist/lib/components/YkDateRangePicker/index.d.ts +9 -1
- package/dist/lib/components/YkDateRangePicker/index.js +127 -61
- package/dist/lib/components/YkDateRangePicker/index.js.map +2 -2
- package/dist/lib/components/YkDateRangePicker/index.module.less +33 -9
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.d.ts +1 -1
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js +3 -2
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js.map +2 -2
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.d.ts +1 -1
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js +22 -2
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js.map +2 -2
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.d.ts +1 -1
- package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js.map +2 -2
- package/dist/lib/components/YkRangeDateWithVS/index.d.ts +2 -2
- package/dist/lib/components/YkRangeDateWithVS/index.js.map +2 -2
- package/dist/lib/components/YkRangeDateWithVS/index.module.less +22 -4
- package/dist/lib/components/YkRangeTimeWithRecent/index.d.ts +1 -1
- package/dist/lib/components/YkRangeTimeWithRecent/index.js.map +2 -2
- package/dist/lib/creative/ArcCheckbox/index.d.ts +12 -0
- package/dist/lib/creative/ArcCheckbox/index.js +50 -0
- package/dist/lib/creative/ArcCheckbox/index.js.map +7 -0
- package/dist/lib/creative/ArcCheckbox/index.module.less +102 -0
- package/dist/lib/creative/ButtonRadioWithInfo/index.js.map +1 -1
- package/dist/lib/creative/ButtonWithProgress/index.d.ts +1 -1
- package/dist/lib/creative/ButtonWithProgress/index.js.map +2 -2
- package/dist/lib/creative/GlassSegmentedRadio/index.d.ts +24 -0
- package/dist/lib/creative/GlassSegmentedRadio/index.js +78 -0
- package/dist/lib/creative/GlassSegmentedRadio/index.js.map +7 -0
- package/dist/lib/creative/GlassSegmentedRadio/index.module.less +241 -0
- package/dist/lib/creative/SkillsWriter/index.d.ts +3 -0
- package/dist/lib/creative/SkillsWriter/index.js +200 -0
- package/dist/lib/creative/SkillsWriter/index.js.map +7 -0
- package/dist/lib/creative/SkillsWriter/index.module.less +21 -0
- package/dist/lib/index.d.ts +32 -24
- package/dist/lib/index.js +39 -24
- package/dist/lib/index.js.map +2 -2
- package/dist/lib/index.less +44 -0
- package/dist/lib/layout/FlexGrid/index.d.ts +1 -1
- package/dist/lib/layout/FlexGrid/index.js.map +2 -2
- package/dist/lib/layout/YkContainer/index.js.map +1 -1
- package/dist/lib/layout/YkDrawer/index.d.ts +1 -1
- package/dist/lib/layout/YkDrawer/index.js.map +2 -2
- package/dist/lib/ui/LabelSelect/demo.js +1 -1
- package/dist/lib/ui/LabelSelect/demo.js.map +2 -2
- package/dist/lib/ui/LabelSelect/index.d.ts +1 -1
- package/dist/lib/ui/LabelSelect/index.js +1 -1
- package/dist/lib/ui/LabelSelect/index.js.map +2 -2
- package/dist/lib/ui/LogicOperator/index.d.ts +1 -1
- package/dist/lib/ui/LogicOperator/index.js.map +2 -2
- package/dist/lib/ui/YkButton/index.d.ts +1 -1
- package/dist/lib/ui/YkButton/index.js.map +2 -2
- package/dist/lib/ui/YkCard/index.d.ts +1 -1
- package/dist/lib/ui/YkCard/index.js.map +2 -2
- package/dist/lib/ui/YkCheckbox/index.d.ts +1 -1
- package/dist/lib/ui/YkCheckbox/index.js.map +2 -2
- package/dist/lib/ui/YkDescriptions/index.d.ts +1 -1
- package/dist/lib/ui/YkDescriptions/index.js.map +2 -2
- package/dist/lib/ui/YkPagination/index.d.ts +1 -1
- package/dist/lib/ui/YkPagination/index.js.map +2 -2
- package/dist/lib/ui/YkRadio/index.d.ts +1 -1
- package/dist/lib/ui/YkRadio/index.js.map +2 -2
- package/dist/lib/ui/YkSegmented/index.d.ts +1 -1
- package/dist/lib/ui/YkSegmented/index.js.map +2 -2
- package/dist/lib/ui/YkSelect/index.d.ts +1 -1
- package/dist/lib/ui/YkSelect/index.js.map +2 -2
- package/dist/lib/ui/YkSpin/index.d.ts +1 -1
- package/dist/lib/ui/YkSpin/index.js.map +2 -2
- package/dist/lib/ui/YkStatistic/index.d.ts +1 -1
- package/dist/lib/ui/YkStatistic/index.js.map +2 -2
- package/dist/lib/ui/YkSwitch/index.d.ts +1 -1
- package/dist/lib/ui/YkSwitch/index.js.map +2 -2
- package/dist/lib/ui/YkTabs/index.d.ts +1 -1
- package/dist/lib/ui/YkTabs/index.js.map +2 -2
- package/dist/lib/ui/YkTooltip/index.d.ts +1 -1
- package/dist/lib/ui/YkTooltip/index.js.map +2 -2
- package/dist/lib/utils/styleUtils.js.map +2 -2
- package/dist/lib/utils/ykStorybookDoc.d.ts +15 -0
- package/dist/lib/utils/ykStorybookDoc.js +23 -1
- package/dist/lib/utils/ykStorybookDoc.js.map +2 -2
- package/package.json +152 -144
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/business/Empty/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Empty, Flex } from 'antd';\nimport type { ForwardedRef } from 'react';\nimport React from 'react';\nimport EmptyImg from './empty.png';\n\n/**\n * 空状态占位组件的 Props(ref 由 forwardRef 注入,无需在 props 中声明)\n */\ntype EmptyProps = {\n /** 空状态插图,不传则使用默认 empty.png */\n image?: React.ReactNode | string;\n /** 描述文案或自定义节点,默认「暂无数据」 */\n description?: string | React.ReactNode;\n /** 图片容器样式,会与默认宽高合并 */\n imageStyle?: React.CSSProperties;\n /** 根节点 Flex 的样式 */\n style?: React.CSSProperties;\n};\n\n/** 描述文字统一样式 */\nconst descriptionStyle: React.CSSProperties = {\n color: '#999',\n fontSize: 14,\n height: 20,\n lineHeight: '20px',\n};\n\n/**\n * 空状态占位:居中展示默认图 + 描述,支持自定义图片与文案,支持 ref 透传。\n */\nconst ForwardedEmptyPlaceholder = React.forwardRef(\n ({ image, description, imageStyle = {}, style = {} }: EmptyProps, ref: ForwardedRef<HTMLDivElement>) => {\n return (\n <Flex ref={ref} style={{ padding: '80px 0', ...style }} align='center' justify='center'>\n <Empty\n image={image || EmptyImg}\n styles={{\n image: {\n height: 60,\n width: 150,\n display: 'inline-block',\n ...imageStyle,\n },\n }}\n description={\n description == null || description === '' ? (\n <span style={descriptionStyle}>暂无数据</span>\n ) : typeof description === 'string' ? (\n <span style={descriptionStyle}>{description}</span>\n ) : (\n description\n )\n }\n />\n </Flex>\n );\n },\n);\n\nForwardedEmptyPlaceholder.displayName = '
|
|
4
|
+
"sourcesContent": ["import { Empty, Flex } from 'antd';\nimport type { ForwardedRef } from 'react';\nimport React from 'react';\nimport EmptyImg from './empty.png';\n\n/**\n * 空状态占位组件的 Props(ref 由 forwardRef 注入,无需在 props 中声明)\n */\ntype EmptyProps = {\n /** 空状态插图,不传则使用默认 empty.png */\n image?: React.ReactNode | string;\n /** 描述文案或自定义节点,默认「暂无数据」 */\n description?: string | React.ReactNode;\n /** 图片容器样式,会与默认宽高合并 */\n imageStyle?: React.CSSProperties;\n /** 根节点 Flex 的样式 */\n style?: React.CSSProperties;\n};\n\n/** 描述文字统一样式 */\nconst descriptionStyle: React.CSSProperties = {\n color: '#999',\n fontSize: 14,\n height: 20,\n lineHeight: '20px',\n};\n\n/**\n * 空状态占位:居中展示默认图 + 描述,支持自定义图片与文案,支持 ref 透传。\n */\nconst ForwardedEmptyPlaceholder = React.forwardRef(\n ({ image, description, imageStyle = {}, style = {} }: EmptyProps, ref: ForwardedRef<HTMLDivElement>) => {\n return (\n <Flex ref={ref} style={{ padding: '80px 0', ...style }} align='center' justify='center'>\n <Empty\n image={image || EmptyImg}\n styles={{\n image: {\n height: 60,\n width: 150,\n display: 'inline-block',\n ...imageStyle,\n },\n }}\n description={\n description == null || description === '' ? (\n <span style={descriptionStyle}>暂无数据</span>\n ) : typeof description === 'string' ? (\n <span style={descriptionStyle}>{description}</span>\n ) : (\n description\n )\n }\n />\n </Flex>\n );\n },\n);\n\nForwardedEmptyPlaceholder.displayName = 'Empty';\n\nexport default ForwardedEmptyPlaceholder;\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA,SAAS,OAAO,YAAY;AAE5B,OAAO,WAAW;AAClB,OAAO,cAAc;AAiBrB,IAAM,mBAAwC;AAAA,EAC5C,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,YAAY;AACd;AAKA,IAAM,4BAA4B,MAAM;AAAA,EACtC,CAAC,EAAE,OAAO,aAAa,aAAa,CAAC,GAAG,QAAQ,CAAC,EAAE,GAAe,QAAsC;AACtG,WACE,oCAAC,QAAK,KAAU,OAAO,iBAAE,SAAS,YAAa,QAAS,OAAM,UAAS,SAAQ,YAC7E;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,SAAS;AAAA,QAChB,QAAQ;AAAA,UACN,OAAO;AAAA,YACL,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,SAAS;AAAA,aACN;AAAA,QAEP;AAAA,QACA,aACE,eAAe,QAAQ,gBAAgB,KACrC,oCAAC,UAAK,OAAO,oBAAkB,MAAI,IACjC,OAAO,gBAAgB,WACzB,oCAAC,UAAK,OAAO,oBAAmB,WAAY,IAE5C;AAAA;AAAA,IAGN,CACF;AAAA,EAEJ;AACF;AAEA,0BAA0B,cAAc;AAExC,IAAO,gBAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -31,10 +31,10 @@ var __objRest = (source, exclude) => {
|
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
// src/business/ModCommonFilter/components/PopoverContent/Category.tsx
|
|
34
|
-
import TextWithTooltip from "../../../../components/TextWithToolTip";
|
|
35
34
|
import classNames from "classnames";
|
|
36
35
|
import React, { useRef } from "react";
|
|
37
|
-
import { Scrollbars } from "react-custom-scrollbars";
|
|
36
|
+
import { Scrollbars } from "react-custom-scrollbars-2";
|
|
37
|
+
import TextWithTooltip from "../../../../components/TextWithToolTip";
|
|
38
38
|
import IconXiala from "../FilterButton/IconXiala";
|
|
39
39
|
import styles from "./index.module.less";
|
|
40
40
|
var Category = ({ category, categorySelected, setCategorySelected }) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/business/ModCommonFilter/components/PopoverContent/Category.tsx"],
|
|
4
|
-
"sourcesContent": ["import
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,
|
|
4
|
+
"sourcesContent": ["import classNames from 'classnames';\nimport React, { useRef } from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport TextWithTooltip from '@/components/TextWithToolTip';\nimport type { CategoryItem } from '../../typing';\nimport IconXiala from '../FilterButton/IconXiala';\nimport styles from './index.module.less';\n\n/**\n * 分类组件的 Props\n */\ninterface PropsType {\n /** 分类项列表(code/name) */\n category?: CategoryItem[];\n /** 当前选中的分类 code */\n categorySelected: string;\n /** 设置选中的分类 */\n setCategorySelected: (categorySelected: string) => void;\n}\n\n/**\n * 筛选弹层左侧分类列表:垂直滚动,点击项切换分类并高亮当前项。\n */\nconst Category: React.FC<PropsType> = ({ category, categorySelected, setCategorySelected }) => {\n const scrollLeftRef = useRef<React.ComponentRef<typeof Scrollbars>>(null);\n\n return (\n <div className={styles.category}>\n <Scrollbars\n ref={scrollLeftRef}\n style={{ height: 365 }}\n renderThumbVertical={({ style, ...props }) => (\n <div {...props} style={{ ...style, background: '#EFEFEF', borderRadius: 3 }} />\n )}\n >\n {category?.map((item) => {\n return (\n <div\n onClick={() => {\n setCategorySelected(item.code);\n // setSelfKind(item.isSelf ? item.code : '');\n }}\n key={item.code}\n className={classNames(styles.categoryItem, {\n [styles.categoryItemActive]: categorySelected === item.code,\n })}\n >\n <TextWithTooltip text={item.name} width={100}></TextWithTooltip>\n <IconXiala size={16} className={styles.categoryItemIcon} />\n </div>\n );\n })}\n </Scrollbars>\n </div>\n );\n};\n\nexport default Category;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,gBAAgB;AACvB,OAAO,SAAS,cAAc;AAC9B,SAAS,kBAAkB;AAC3B,OAAO,qBAAqB;AAE5B,OAAO,eAAe;AACtB,OAAO,YAAY;AAiBnB,IAAM,WAAgC,CAAC,EAAE,UAAU,kBAAkB,oBAAoB,MAAM;AAC7F,QAAM,gBAAgB,OAA8C,IAAI;AAExE,SACE,oCAAC,SAAI,WAAW,OAAO,YACrB;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,OAAO,EAAE,QAAQ,IAAI;AAAA,MACrB,qBAAqB,CAAC,OAAqB;AAArB,qBAAE,QA/BhC,IA+B8B,IAAY,kBAAZ,IAAY,CAAV;AACtB,mDAAC,wCAAQ,QAAR,EAAe,OAAO,iCAAK,QAAL,EAAY,YAAY,WAAW,cAAc,EAAE,KAAG;AAAA;AAAA;AAAA,IAG9E,qCAAU,IAAI,CAAC,SAAS;AACvB,aACE;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,MAAM;AACb,gCAAoB,KAAK,IAAI;AAAA,UAE/B;AAAA,UACA,KAAK,KAAK;AAAA,UACV,WAAW,WAAW,OAAO,cAAc;AAAA,YACzC,CAAC,OAAO,kBAAkB,GAAG,qBAAqB,KAAK;AAAA,UACzD,CAAC;AAAA;AAAA,QAED,oCAAC,mBAAgB,MAAM,KAAK,MAAM,OAAO,KAAK;AAAA,QAC9C,oCAAC,aAAU,MAAM,IAAI,WAAW,OAAO,kBAAkB;AAAA,MAC3D;AAAA,IAEJ;AAAA,EACF,CACF;AAEJ;AAEA,IAAO,mBAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -31,12 +31,12 @@ var __objRest = (source, exclude) => {
|
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
// src/business/ModCommonFilter/components/PopoverContent/Content.tsx
|
|
34
|
-
import DebouncedInput from "../../../../components/DebounceInput";
|
|
35
|
-
import TextWithTooltip from "../../../../components/TextWithToolTip";
|
|
36
34
|
import { Checkbox, Divider, Tabs } from "antd";
|
|
37
35
|
import React, { useEffect, useMemo, useRef, useState } from "react";
|
|
38
|
-
import { Scrollbars } from "react-custom-scrollbars";
|
|
36
|
+
import { Scrollbars } from "react-custom-scrollbars-2";
|
|
39
37
|
import { Grid } from "react-virtualized";
|
|
38
|
+
import DebouncedInput from "../../../../components/DebounceInput";
|
|
39
|
+
import TextWithTooltip from "../../../../components/TextWithToolTip";
|
|
40
40
|
import emptyImg from "../../assets/images/empty.png";
|
|
41
41
|
import styles from "./index.module.less";
|
|
42
42
|
var Content = ({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/business/ModCommonFilter/components/PopoverContent/Content.tsx"],
|
|
4
|
-
"sourcesContent": ["import
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
4
|
+
"sourcesContent": ["import { Checkbox, Divider, Tabs } from 'antd';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport { Grid } from 'react-virtualized';\nimport DebouncedInput from '@/components/DebounceInput';\nimport TextWithTooltip from '@/components/TextWithToolTip';\nimport emptyImg from '../../assets/images/empty.png';\nimport type { ListItem, TerminalItem } from '../../typing';\nimport styles from './index.module.less';\n\n/**\n * 可选列表内容区的 Props\n */\ninterface PropsType {\n /** 终端 Tab 数据(如 全部/PC/APP),无则不展示终端 Tab */\n terminal?: TerminalItem[];\n /** 当前分类下的可选列表 */\n list: ListItem[];\n /** 当前已选中的 code 列表 */\n selected: string[];\n /** 更新已选中列表 */\n setSelected: (selected: string[]) => void;\n /** 搜索框占位文案 */\n placeholder: string;\n /** 当前选中的分类 code,用于过滤 list */\n categorySelected: string;\n /** 网格列数 */\n columnCount?: number;\n /** 内容区宽度 */\n contentWidth?: number;\n /** 每行高度 */\n rowHeight?: number;\n /** 每格自定义渲染 */\n cellRender?: (item: ListItem) => React.ReactNode;\n /** 是否在名称后展示 code */\n showCode?: boolean;\n /** 通知父组件「用户是否有过勾选操作」 */\n setHasOperation: (hasOperation: boolean) => void;\n}\n\n/**\n * 筛选弹层中间区域:终端 Tab(可选)+ 搜索 + 全选 + 虚拟列表勾选。\n * 内部维护 modalChecked 与外部 selected 同步,并用 isInternalUpdate 区分内外更新避免循环。\n */\nconst Content: React.FC<PropsType> = ({\n terminal,\n list,\n selected,\n setSelected,\n placeholder,\n categorySelected,\n columnCount = 1,\n contentWidth = 510,\n rowHeight = 32,\n cellRender,\n showCode = false,\n setHasOperation,\n}) => {\n const [searchKey, setSearchKey] = useState<string>('');\n /** 当前选中的终端 Tab(code),空字符串表示「全部」 */\n const [terminalSelected, setTerminalSelected] = useState<string>('');\n /** 弹层内勾选状态(与 selected 同步,用于避免直接改 selected 导致父组件重渲染影响虚拟列表) */\n const [modalChecked, setModalChecked] = useState<string[]>(selected);\n\n /** 已选 code -> true 的 Map,用于 O(1) 判断是否选中 */\n const modalCheckMap = useMemo(() => {\n return new Map(modalChecked.map((item) => [item, true]));\n }, [modalChecked]);\n\n const scrollbarsRef = useRef(null);\n const gridRef = useRef(null);\n /** 标记本次 selected 变更是否由本组件内部更新引起,避免 useEffect 把外部重置误同步进 modalChecked */\n const isInternalUpdate = useRef(false);\n\n /** 外部 selected 变化时同步到 modalChecked;若为内部更新触发的 effect 则跳过避免覆盖 */\n useEffect(() => {\n if (isInternalUpdate.current) {\n isInternalUpdate.current = false;\n return;\n }\n setModalChecked(selected);\n }, [selected]);\n\n /** 根据搜索关键词、终端、分类过滤后的列表,供虚拟列表与全选使用 */\n const filterList = useMemo(() => {\n const key = searchKey.trim().toUpperCase();\n return list\n .filter((v) => v.name.toUpperCase().includes(key) || (showCode && v.code.toUpperCase().includes(key)))\n .filter((f) => terminalSelected === '' || f.terminal === terminalSelected)\n .filter((f) => categorySelected === '' || f.category === categorySelected);\n }, [list, searchKey, terminalSelected, categorySelected]);\n\n /** 全选勾选状态与半选状态(基于当前 filterList 与 modalChecked) */\n const { allChecked, isIndeterminate } = useMemo(() => {\n if (filterList.length === 0) {\n return { allChecked: false, isIndeterminate: false };\n }\n const checkedCount = filterList.filter((item) => modalCheckMap.get(item.code)).length;\n const allChecked = checkedCount === filterList.length;\n const isIndeterminate = checkedCount > 0 && checkedCount < filterList.length;\n return { allChecked, isIndeterminate };\n }, [filterList, modalChecked]);\n\n /** 终端选项列表,头部插入「全部」(code: '') */\n const useTerminal = useMemo(() => {\n const newTerminal: TerminalItem[] = terminal ? [...terminal] : [];\n newTerminal.unshift({\n code: '',\n name: '全部',\n });\n return newTerminal;\n }, [terminal]);\n\n /** 更新弹层内勾选状态并同步到父组件 selected,并标记有过操作 */\n function updateModalChecked(checked: string[]) {\n isInternalUpdate.current = true;\n setModalChecked(checked);\n setSelected(checked);\n setHasOperation(true);\n }\n\n /** 全选/取消全选:仅针对当前 filterList 中的项 */\n const handleAllChecked = (checked: boolean) => {\n const filterCodes = filterList.map((item) => item.code);\n if (checked) {\n // 全选:将过滤列表中的所有项添加到已选列表(去重)\n const newChecked = Array.from(new Set([...modalChecked, ...filterCodes]));\n updateModalChecked(newChecked);\n } else {\n // 取消全选:从已选列表中移除过滤列表中的所有项\n const newChecked = modalChecked.filter((code) => !filterCodes.includes(code));\n updateModalChecked(newChecked);\n }\n };\n\n /** 将 Scrollbars 的滚动事件转发给 Grid,保证虚拟列表滚动一致 */\n const handleScrollbarScroll = (event: React.UIEvent<HTMLDivElement>) => {\n const { scrollTop, scrollLeft } = event.target as HTMLElement;\n if (gridRef.current) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (gridRef.current as any).handleScrollEvent({ scrollTop, scrollLeft });\n }\n };\n\n /** 根据 code 判断该项是否已选中 */\n function isItemChecked(value: string) {\n return modalCheckMap.get(value);\n }\n\n /** 切换单项勾选状态 */\n function checkItem(value: string) {\n if (isItemChecked(value)) {\n updateModalChecked(modalChecked.filter((item) => item !== value));\n } else {\n updateModalChecked([...modalChecked, value]);\n }\n }\n\n return (\n <div className={styles.content}>\n <div className={styles.contentHeader}>\n {terminal && terminal.length > 0 && (\n <>\n <Tabs\n activeKey={terminalSelected}\n items={useTerminal.map((v) => ({\n key: v.code,\n label: v.name,\n }))}\n onChange={(value) => {\n setTerminalSelected(value);\n }}\n />\n <Divider type='vertical' style={{ margin: '0 0 0 20px' }} />\n </>\n )}\n <DebouncedInput\n allowClear={false}\n placeholder={placeholder}\n currentValue={searchKey}\n onChange={(value) => {\n setSearchKey(value);\n }}\n inputClass={styles.search}\n ></DebouncedInput>\n </div>\n <div className={styles.contentList}>\n <div className={styles.checkAll}>\n <Checkbox\n checked={allChecked}\n indeterminate={isIndeterminate}\n onChange={() => {\n handleAllChecked(!allChecked);\n }}\n >\n 全选\n </Checkbox>\n </div>\n <Scrollbars\n style={{ height: 285, width: contentWidth }}\n renderThumbVertical={({ style, ...props }) => (\n <div {...props} style={{ ...style, background: '#EFEFEF', borderRadius: 3 }} />\n )}\n ref={scrollbarsRef}\n onScroll={handleScrollbarScroll}\n >\n <div className={styles.contentListInner}>\n <Grid\n style={{ overflowX: 'visible', overflowY: 'visible' }}\n overscanRowCount={5}\n ref={gridRef}\n columnCount={columnCount}\n rowCount={Math.ceil(filterList.length / columnCount)}\n height={285}\n width={contentWidth - 40}\n columnWidth={(contentWidth - 40) / columnCount}\n rowHeight={rowHeight}\n cellRenderer={({\n columnIndex,\n key,\n rowIndex,\n style,\n }: {\n columnIndex: number;\n key: string;\n rowIndex: number;\n style: React.CSSProperties;\n }) => {\n const item = filterList[rowIndex * columnCount + columnIndex];\n if (!item) return;\n return (\n <div key={key} style={style}>\n <Checkbox\n checked={isItemChecked(item.code)}\n onChange={() => {\n checkItem(item.code);\n }}\n >\n {cellRender ? (\n cellRender(item)\n ) : (\n <TextWithTooltip\n text={item?.name + (showCode ? '(' + item?.code + ')' : '')}\n width={(contentWidth - 40 * columnCount) / columnCount}\n ></TextWithTooltip>\n )}\n </Checkbox>\n </div>\n );\n }}\n noContentRenderer={() => (\n <div className={styles.empty}>\n <img src={emptyImg} alt='' />\n <p>当前搜索条件无数据</p>\n </div>\n )}\n />\n </div>\n </Scrollbars>\n </div>\n </div>\n );\n};\n\nexport default Content;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["allChecked", "isIndeterminate"]
|
|
7
7
|
}
|
|
@@ -31,11 +31,11 @@ var __objRest = (source, exclude) => {
|
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
// src/business/ModCommonFilter/components/PopoverContent/Selected.tsx
|
|
34
|
-
import TextWithTooltip from "../../../../components/TextWithToolTip";
|
|
35
34
|
import classNames from "classnames";
|
|
36
35
|
import React, { useRef } from "react";
|
|
37
|
-
import { Scrollbars } from "react-custom-scrollbars";
|
|
36
|
+
import { Scrollbars } from "react-custom-scrollbars-2";
|
|
38
37
|
import { AutoSizer, List } from "react-virtualized";
|
|
38
|
+
import TextWithTooltip from "../../../../components/TextWithToolTip";
|
|
39
39
|
import styles from "./index.module.less";
|
|
40
40
|
var Selected = ({
|
|
41
41
|
list,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/business/ModCommonFilter/components/PopoverContent/Selected.tsx"],
|
|
4
|
-
"sourcesContent": ["import
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,
|
|
4
|
+
"sourcesContent": ["import classNames from 'classnames';\nimport React, { useRef } from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport { AutoSizer, List } from 'react-virtualized';\nimport TextWithTooltip from '@/components/TextWithToolTip';\nimport type { ListItem } from '../../typing';\nimport styles from './index.module.less';\n\n/**\n * 已选列表组件的 Props\n */\ninterface PropsType {\n /** 完整列表数据,用于根据 selected 中的 code 取 name 等信息 */\n list: ListItem[];\n /** 已选中的 code 数组(顺序即展示顺序) */\n selected: string[];\n /** 更新已选列表 */\n setSelected: (selected: string[]) => void;\n /** 内容宽度(当前未在 Selected 内使用,可做预留) */\n contentWidth?: number;\n /** 每行高度 */\n rowHeight?: number;\n /** 是否在名称后展示 code */\n showCode?: boolean;\n /** 已选列表中每行的自定义渲染 */\n checkedCellRender?: (item: ListItem) => React.ReactNode;\n}\n\n/**\n * 筛选弹层右侧已选列表:展示已选数量、清空、虚拟列表逐项展示并可删除。\n */\nconst Selected: React.FC<PropsType> = ({\n list,\n selected,\n setSelected,\n rowHeight = 32,\n showCode,\n checkedCellRender,\n}) => {\n const listScrollbarsRef = useRef<React.ComponentRef<typeof Scrollbars>>(null);\n const listRef = useRef(null);\n\n /** 将 Scrollbars 滚动同步到 List,保证虚拟列表与滚动条一致 */\n const handleListScrollbarScroll = (event: React.UIEvent<HTMLDivElement>) => {\n const { scrollTop, scrollLeft } = event.target as HTMLElement;\n if (listRef.current) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (listRef.current as any).Grid.handleScrollEvent({ scrollTop, scrollLeft });\n }\n };\n\n return (\n <div className={styles.selected}>\n <div className={styles.selectedHeader}>\n <span>已选{selected.length}个</span>\n <span className={styles.clear} onClick={() => setSelected([])}>\n 清空\n </span>\n </div>\n\n <Scrollbars\n style={{ height: 325 }}\n renderThumbVertical={({ style, ...props }) => (\n <div {...props} style={{ ...style, background: '#EFEFEF', borderRadius: 3 }} />\n )}\n ref={listScrollbarsRef}\n onScroll={handleListScrollbarScroll}\n >\n <div className={styles.selectedContent}>\n <AutoSizer disableHeight>\n {({ width }: { width: number }) => (\n <List\n ref={listRef}\n style={{ overflowX: 'visible', overflowY: 'visible' }}\n rowCount={selected.length}\n height={325}\n width={width}\n rowHeight={rowHeight}\n rowRenderer={({ index, key, style }: { index: number; key: string; style: React.CSSProperties }) => {\n const option = list.find((option) => option.code === selected[index]);\n return (\n <div className={styles.selectedItem} key={key} style={style}>\n {option && checkedCellRender ? (\n checkedCellRender(option)\n ) : (\n <TextWithTooltip\n text={option?.name + (showCode ? '(' + option?.code + ')' : '')}\n width='100%'\n ></TextWithTooltip>\n )}\n\n <i\n className={classNames('iconfont icon-lajitong', styles.close)}\n onClick={() => {\n setSelected(selected.filter((item) => item !== selected[index]));\n }}\n ></i>\n </div>\n );\n }}\n ></List>\n )}\n </AutoSizer>\n </div>\n </Scrollbars>\n </div>\n );\n};\n\nexport default Selected;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,gBAAgB;AACvB,OAAO,SAAS,cAAc;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,WAAW,YAAY;AAChC,OAAO,qBAAqB;AAE5B,OAAO,YAAY;AAyBnB,IAAM,WAAgC,CAAC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AACF,MAAM;AACJ,QAAM,oBAAoB,OAA8C,IAAI;AAC5E,QAAM,UAAU,OAAO,IAAI;AAG3B,QAAM,4BAA4B,CAAC,UAAyC;AAC1E,UAAM,EAAE,WAAW,WAAW,IAAI,MAAM;AACxC,QAAI,QAAQ,SAAS;AAEnB,MAAC,QAAQ,QAAgB,KAAK,kBAAkB,EAAE,WAAW,WAAW,CAAC;AAAA,IAC3E;AAAA,EACF;AAEA,SACE,oCAAC,SAAI,WAAW,OAAO,YACrB,oCAAC,SAAI,WAAW,OAAO,kBACrB,oCAAC,cAAK,MAAG,SAAS,QAAO,GAAC,GAC1B,oCAAC,UAAK,WAAW,OAAO,OAAO,SAAS,MAAM,YAAY,CAAC,CAAC,KAAG,IAE/D,CACF,GAEA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,QAAQ,IAAI;AAAA,MACrB,qBAAqB,CAAC,OAAqB;AAArB,qBAAE,QA9DhC,IA8D8B,IAAY,kBAAZ,IAAY,CAAV;AACtB,mDAAC,wCAAQ,QAAR,EAAe,OAAO,iCAAK,QAAL,EAAY,YAAY,WAAW,cAAc,EAAE,KAAG;AAAA;AAAA,MAE/E,KAAK;AAAA,MACL,UAAU;AAAA;AAAA,IAEV,oCAAC,SAAI,WAAW,OAAO,mBACrB,oCAAC,aAAU,eAAa,QACrB,CAAC,EAAE,MAAM,MACR;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,OAAO,EAAE,WAAW,WAAW,WAAW,UAAU;AAAA,QACpD,UAAU,SAAS;AAAA,QACnB,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA,aAAa,CAAC,EAAE,OAAO,KAAK,MAAM,MAAkE;AAClG,gBAAM,SAAS,KAAK,KAAK,CAACA,YAAWA,QAAO,SAAS,SAAS,KAAK,CAAC;AACpE,iBACE,oCAAC,SAAI,WAAW,OAAO,cAAc,KAAU,SAC5C,UAAU,oBACT,kBAAkB,MAAM,IAExB;AAAA,YAAC;AAAA;AAAA,cACC,OAAM,iCAAQ,SAAQ,WAAW,OAAM,iCAAQ,QAAO,MAAM;AAAA,cAC5D,OAAM;AAAA;AAAA,UACP,GAGH;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,WAAW,0BAA0B,OAAO,KAAK;AAAA,cAC5D,SAAS,MAAM;AACb,4BAAY,SAAS,OAAO,CAAC,SAAS,SAAS,SAAS,KAAK,CAAC,CAAC;AAAA,cACjE;AAAA;AAAA,UACD,CACH;AAAA,QAEJ;AAAA;AAAA,IACD,CAEL,CACF;AAAA,EACF,CACF;AAEJ;AAEA,IAAO,mBAAQ;",
|
|
6
6
|
"names": ["option"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/business/ModCommonFilter/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Popover, PopoverProps } from 'antd';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport FilterButton from './components/FilterButton';\nimport PopoverContent from './components/PopoverContent';\nimport styles from './index.module.less';\nimport type { CategoryItem, ListItem, TerminalItem } from './typing';\n\n/**\n * 通用筛选器组件的 Props\n */\nexport interface ModCommonFilterProps {\n /** 当前选中的值(code 数组),受控 */\n value: string[];\n /** 选中项变化回调 */\n onChange: (value: string[]) => void;\n /** 可选列表数据 */\n list: ListItem[];\n /** 筛选维度名称,如「品类」「品牌」 */\n title: string;\n /** 按钮/标题前缀文案,如「筛选」 */\n prefixTitle?: string;\n /** 按钮左侧图标 */\n iconPrefix?: React.ReactNode;\n /** 分类列表,有则弹层左侧展示分类 Tab */\n category?: CategoryItem[];\n /** 终端列表,有则弹层内展示终端 Tab(如全部/PC/APP) */\n terminal?: TerminalItem[];\n /** 搜索框占位文案 */\n placeholder?: string;\n /** Popover 层级 */\n zIndex?: number;\n /** Popover 弹出方向 */\n placement?: PopoverProps['placement'];\n /** 透传给 antd Popover 的额外属性 */\n popoverProps?: PopoverProps;\n /** 可选列表列数(多列网格) */\n columnCount?: number;\n /** 内容区宽度 */\n contentWidth?: number;\n /** 列表行高 */\n rowHeight?: number;\n /** 是否在名称后展示 code */\n showCode?: boolean;\n /** 可选列表中每项的自定义渲染 */\n cellRender?: (item: ListItem) => React.ReactNode;\n /** 已选列表中每项的自定义渲染 */\n checkedCellRender?: (item: ListItem) => React.ReactNode;\n /** 弹层底部备注文案或节点 */\n remark?: string | React.ReactNode;\n /** 自定义触发区域,不传则使用默认 FilterButton */\n filterChildren?: React.ReactNode;\n}\n\n/**\n * 通用筛选器:点击按钮打开 Popover,内为分类 + 可选列表 + 已选列表,确认后回调 onChange。\n */\nconst ModCommonFilter: React.FC<ModCommonFilterProps> = ({\n value,\n onChange,\n list,\n title,\n prefixTitle,\n iconPrefix,\n category,\n terminal,\n placeholder = '搜索',\n zIndex = 100,\n placement = 'bottomRight',\n columnCount = 1,\n contentWidth,\n rowHeight,\n showCode = false,\n popoverProps = {},\n cellRender,\n checkedCellRender,\n remark,\n filterChildren,\n}) => {\n const [popOpen, setPopOpen] = useState(false);\n /** 弹层内当前选中的 code 列表,打开时与 value 同步 */\n const [selected, setSelected] = useState<string[]>([]);\n /** 当前选中的分类 code,空字符串表示「全部」 */\n const [categorySelected, setCategorySelected] = useState<string>('');\n\n /** 弹层打开时用外部 value 同步 selected,保证每次打开初始为当前已选 */\n useEffect(() => {\n if (popOpen) {\n setSelected(value || []);\n }\n }, [popOpen, value]);\n\n /** 分类选项列表,头部插入「全部{title}」 */\n const useCateGory = useMemo(() => {\n const newCategory: CategoryItem[] = category ? [...category] : [];\n newCategory.unshift({\n code: '',\n name: '全部' + title,\n });\n return newCategory;\n }, [category]);\n\n /** 确认:把当前选中回传并关闭弹层 */\n const handleVerify = () => {\n onChange(selected);\n setPopOpen(false);\n };\n\n /** 取消:恢复为打开前的 value 并关闭弹层 */\n const handleClear = () => {\n setSelected(value || []);\n setPopOpen(false);\n };\n\n return (\n <Popover\n className={styles.modCommonFilter}\n open={popOpen}\n onOpenChange={(open) => setPopOpen(open)}\n title={false}\n fresh={true}\n arrow={false}\n zIndex={zIndex}\n placement={placement}\n trigger='click'\n classNames={{\n body: styles.popoverBody,\n }}\n getPopupContainer={(triggerNode) => triggerNode.parentNode as HTMLElement}\n content={\n <PopoverContent\n popOpen={popOpen}\n selected={selected}\n setSelected={setSelected}\n category={useCateGory}\n terminal={terminal}\n list={list}\n placeholder={placeholder}\n title={title}\n categorySelected={categorySelected}\n setCategorySelected={setCategorySelected}\n columnCount={columnCount}\n showCode={showCode}\n contentWidth={contentWidth}\n rowHeight={rowHeight}\n cellRender={cellRender}\n checkedCellRender={checkedCellRender}\n handleVerify={handleVerify}\n handleClear={handleClear}\n remark={remark}\n />\n }\n {...popoverProps}\n >\n {filterChildren || (\n <FilterButton\n iconPrefix={iconPrefix}\n title={title}\n prefixTitle={prefixTitle}\n value={value}\n popOpen={popOpen}\n handlePopOpen={() => setPopOpen(!popOpen)}\n handleClear={() => onChange([])}\n />\n )}\n </Popover>\n );\n};\n\nexport default ModCommonFilter;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA,SAAS,
|
|
4
|
+
"sourcesContent": ["import { Popover, type PopoverProps } from 'antd';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport FilterButton from './components/FilterButton';\nimport PopoverContent from './components/PopoverContent';\nimport styles from './index.module.less';\nimport type { CategoryItem, ListItem, TerminalItem } from './typing';\n\n/**\n * 通用筛选器组件的 Props\n */\nexport interface ModCommonFilterProps {\n /** 当前选中的值(code 数组),受控 */\n value: string[];\n /** 选中项变化回调 */\n onChange: (value: string[]) => void;\n /** 可选列表数据 */\n list: ListItem[];\n /** 筛选维度名称,如「品类」「品牌」 */\n title: string;\n /** 按钮/标题前缀文案,如「筛选」 */\n prefixTitle?: string;\n /** 按钮左侧图标 */\n iconPrefix?: React.ReactNode;\n /** 分类列表,有则弹层左侧展示分类 Tab */\n category?: CategoryItem[];\n /** 终端列表,有则弹层内展示终端 Tab(如全部/PC/APP) */\n terminal?: TerminalItem[];\n /** 搜索框占位文案 */\n placeholder?: string;\n /** Popover 层级 */\n zIndex?: number;\n /** Popover 弹出方向 */\n placement?: PopoverProps['placement'];\n /** 透传给 antd Popover 的额外属性 */\n popoverProps?: PopoverProps;\n /** 可选列表列数(多列网格) */\n columnCount?: number;\n /** 内容区宽度 */\n contentWidth?: number;\n /** 列表行高 */\n rowHeight?: number;\n /** 是否在名称后展示 code */\n showCode?: boolean;\n /** 可选列表中每项的自定义渲染 */\n cellRender?: (item: ListItem) => React.ReactNode;\n /** 已选列表中每项的自定义渲染 */\n checkedCellRender?: (item: ListItem) => React.ReactNode;\n /** 弹层底部备注文案或节点 */\n remark?: string | React.ReactNode;\n /** 自定义触发区域,不传则使用默认 FilterButton */\n filterChildren?: React.ReactNode;\n}\n\n/**\n * 通用筛选器:点击按钮打开 Popover,内为分类 + 可选列表 + 已选列表,确认后回调 onChange。\n */\nconst ModCommonFilter: React.FC<ModCommonFilterProps> = ({\n value,\n onChange,\n list,\n title,\n prefixTitle,\n iconPrefix,\n category,\n terminal,\n placeholder = '搜索',\n zIndex = 100,\n placement = 'bottomRight',\n columnCount = 1,\n contentWidth,\n rowHeight,\n showCode = false,\n popoverProps = {},\n cellRender,\n checkedCellRender,\n remark,\n filterChildren,\n}) => {\n const [popOpen, setPopOpen] = useState(false);\n /** 弹层内当前选中的 code 列表,打开时与 value 同步 */\n const [selected, setSelected] = useState<string[]>([]);\n /** 当前选中的分类 code,空字符串表示「全部」 */\n const [categorySelected, setCategorySelected] = useState<string>('');\n\n /** 弹层打开时用外部 value 同步 selected,保证每次打开初始为当前已选 */\n useEffect(() => {\n if (popOpen) {\n setSelected(value || []);\n }\n }, [popOpen, value]);\n\n /** 分类选项列表,头部插入「全部{title}」 */\n const useCateGory = useMemo(() => {\n const newCategory: CategoryItem[] = category ? [...category] : [];\n newCategory.unshift({\n code: '',\n name: '全部' + title,\n });\n return newCategory;\n }, [category]);\n\n /** 确认:把当前选中回传并关闭弹层 */\n const handleVerify = () => {\n onChange(selected);\n setPopOpen(false);\n };\n\n /** 取消:恢复为打开前的 value 并关闭弹层 */\n const handleClear = () => {\n setSelected(value || []);\n setPopOpen(false);\n };\n\n return (\n <Popover\n className={styles.modCommonFilter}\n open={popOpen}\n onOpenChange={(open) => setPopOpen(open)}\n title={false}\n fresh={true}\n arrow={false}\n zIndex={zIndex}\n placement={placement}\n trigger='click'\n classNames={{\n body: styles.popoverBody,\n }}\n getPopupContainer={(triggerNode) => triggerNode.parentNode as HTMLElement}\n content={\n <PopoverContent\n popOpen={popOpen}\n selected={selected}\n setSelected={setSelected}\n category={useCateGory}\n terminal={terminal}\n list={list}\n placeholder={placeholder}\n title={title}\n categorySelected={categorySelected}\n setCategorySelected={setCategorySelected}\n columnCount={columnCount}\n showCode={showCode}\n contentWidth={contentWidth}\n rowHeight={rowHeight}\n cellRender={cellRender}\n checkedCellRender={checkedCellRender}\n handleVerify={handleVerify}\n handleClear={handleClear}\n remark={remark}\n />\n }\n {...popoverProps}\n >\n {filterChildren || (\n <FilterButton\n iconPrefix={iconPrefix}\n title={title}\n prefixTitle={prefixTitle}\n value={value}\n popOpen={popOpen}\n handlePopOpen={() => setPopOpen(!popOpen)}\n handleClear={() => onChange([])}\n />\n )}\n </Popover>\n );\n};\n\nexport default ModCommonFilter;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA,SAAS,eAAkC;AAC3C,OAAO,SAAS,WAAW,SAAS,gBAAgB;AACpD,OAAO,kBAAkB;AACzB,OAAO,oBAAoB;AAC3B,OAAO,YAAY;AAoDnB,IAAM,kBAAkD,CAAC;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,eAAe,CAAC;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAE5C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAmB,CAAC,CAAC;AAErD,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAiB,EAAE;AAGnE,YAAU,MAAM;AACd,QAAI,SAAS;AACX,kBAAY,SAAS,CAAC,CAAC;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,SAAS,KAAK,CAAC;AAGnB,QAAM,cAAc,QAAQ,MAAM;AAChC,UAAM,cAA8B,WAAW,CAAC,GAAG,QAAQ,IAAI,CAAC;AAChE,gBAAY,QAAQ;AAAA,MAClB,MAAM;AAAA,MACN,MAAM,OAAO;AAAA,IACf,CAAC;AACD,WAAO;AAAA,EACT,GAAG,CAAC,QAAQ,CAAC;AAGb,QAAM,eAAe,MAAM;AACzB,aAAS,QAAQ;AACjB,eAAW,KAAK;AAAA,EAClB;AAGA,QAAM,cAAc,MAAM;AACxB,gBAAY,SAAS,CAAC,CAAC;AACvB,eAAW,KAAK;AAAA,EAClB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,OAAO;AAAA,MAClB,MAAM;AAAA,MACN,cAAc,CAAC,SAAS,WAAW,IAAI;AAAA,MACvC,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,SAAQ;AAAA,MACR,YAAY;AAAA,QACV,MAAM,OAAO;AAAA,MACf;AAAA,MACA,mBAAmB,CAAC,gBAAgB,YAAY;AAAA,MAChD,SACE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACV;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,MACF;AAAA,OAEE;AAAA,IAEH,kBACC;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,MAAM,WAAW,CAAC,OAAO;AAAA,QACxC,aAAa,MAAM,SAAS,CAAC,CAAC;AAAA;AAAA,IAChC;AAAA,EAEJ;AAEJ;AAEA,IAAO,0BAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { ColumnConfig, GroupByItem, TableData } from './typing';
|
|
3
|
+
type RowItem = {
|
|
4
|
+
[key: string]: number | string;
|
|
5
|
+
};
|
|
6
|
+
type PageTypes = {
|
|
7
|
+
count?: number;
|
|
8
|
+
metric: string[];
|
|
9
|
+
groupBys: GroupByItem[];
|
|
10
|
+
tableData: TableData;
|
|
11
|
+
baseData: RowItem[];
|
|
12
|
+
columnConfigMap: {
|
|
13
|
+
[key: string]: ColumnConfig;
|
|
14
|
+
};
|
|
15
|
+
height?: number;
|
|
16
|
+
};
|
|
17
|
+
declare const Line: FC<PageTypes>;
|
|
18
|
+
export default Line;
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
|
|
21
|
+
// src/business/YkCharts/Area.tsx
|
|
22
|
+
import { Empty } from "antd";
|
|
23
|
+
import Decimal from "decimal.js";
|
|
24
|
+
import * as echarts from "echarts";
|
|
25
|
+
import React, { useEffect, useMemo, useRef } from "react";
|
|
26
|
+
import ReactDOMServer from "react-dom/server";
|
|
27
|
+
import { chartColors } from "./constants";
|
|
28
|
+
import { cartesianProduct, getIntervalLower } from "./hooks";
|
|
29
|
+
import styles from "./index.module.less";
|
|
30
|
+
import { formatNumber, formatValue } from "./utils";
|
|
31
|
+
var Line = ({
|
|
32
|
+
count,
|
|
33
|
+
// 指标显示数量
|
|
34
|
+
metric,
|
|
35
|
+
// 指标
|
|
36
|
+
groupBys,
|
|
37
|
+
// 维度
|
|
38
|
+
tableData,
|
|
39
|
+
// 表格数据
|
|
40
|
+
baseData,
|
|
41
|
+
// 基础数据
|
|
42
|
+
columnConfigMap,
|
|
43
|
+
// 列配置
|
|
44
|
+
height
|
|
45
|
+
}) => {
|
|
46
|
+
const { x = [], table_head = [], table_body = [], x_field, group_by } = tableData;
|
|
47
|
+
const chartContainerRef = useRef(null);
|
|
48
|
+
const chartInstanceRef = useRef(null);
|
|
49
|
+
const index = table_head.indexOf(x_field);
|
|
50
|
+
const isTotalData = x.length === 0 && index === -1;
|
|
51
|
+
const effectiveX = isTotalData ? ["合计"] : x;
|
|
52
|
+
const fullData = useMemo(() => {
|
|
53
|
+
if (!metric || metric.length === 0) {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
if (group_by && group_by.length > 0) {
|
|
57
|
+
const validGroupBys = groupBys.filter((g) => Array.isArray(g.selected) && g.selected.length > 0);
|
|
58
|
+
const validGroupByKeys = validGroupBys.map((g) => g.key);
|
|
59
|
+
const metrics = cartesianProduct(metric, groupBys);
|
|
60
|
+
const chartData = [];
|
|
61
|
+
metrics.forEach((f) => {
|
|
62
|
+
const groupBysText = groupBys.filter((g) => Array.isArray(g.selected) && g.selected.length > 0).map((g) => f[g.key]).filter((value) => value !== null && value !== "").join(",");
|
|
63
|
+
const mItem = effectiveX.map((m) => {
|
|
64
|
+
const obj = {};
|
|
65
|
+
obj[x_field] = m;
|
|
66
|
+
groupBys.forEach((g) => {
|
|
67
|
+
obj[g.key] = f[g.key];
|
|
68
|
+
});
|
|
69
|
+
const matchKeys = isTotalData ? validGroupByKeys : [x_field, ...validGroupByKeys];
|
|
70
|
+
const value = matchKeys.length > 0 ? baseData.filter((d) => matchKeys.every((key) => obj[key] === d[key])).reduce((sum, d) => sum + (Number(d[f.category]) || 0), 0) : baseData.reduce((sum, d) => sum + (Number(d[f.category]) || 0), 0);
|
|
71
|
+
obj.value = value;
|
|
72
|
+
obj.name = `${f.category}${groupBysText ? "," + groupBysText : ""}`;
|
|
73
|
+
obj.metricName = f.category;
|
|
74
|
+
obj.format = columnConfigMap[f.category];
|
|
75
|
+
obj.x = m;
|
|
76
|
+
return obj;
|
|
77
|
+
});
|
|
78
|
+
chartData.push(...mItem);
|
|
79
|
+
});
|
|
80
|
+
return chartData;
|
|
81
|
+
} else {
|
|
82
|
+
const chartData = [];
|
|
83
|
+
metric.forEach((m) => {
|
|
84
|
+
effectiveX.forEach((item) => {
|
|
85
|
+
if (isTotalData) {
|
|
86
|
+
const value = baseData.reduce((sum, d) => sum + (Number(d[m]) || 0), 0);
|
|
87
|
+
chartData.push({
|
|
88
|
+
x: item,
|
|
89
|
+
name: m,
|
|
90
|
+
metricName: m,
|
|
91
|
+
format: columnConfigMap[m],
|
|
92
|
+
value
|
|
93
|
+
});
|
|
94
|
+
} else {
|
|
95
|
+
const row = table_body.find((d) => d[index] === item);
|
|
96
|
+
const obj = {
|
|
97
|
+
x: item,
|
|
98
|
+
name: m,
|
|
99
|
+
metricName: m,
|
|
100
|
+
format: columnConfigMap[m]
|
|
101
|
+
};
|
|
102
|
+
table_head.forEach((key, i) => {
|
|
103
|
+
obj[key] = row ? row[i] : 0;
|
|
104
|
+
});
|
|
105
|
+
obj.value = obj[m];
|
|
106
|
+
chartData.push(obj);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
return chartData;
|
|
111
|
+
}
|
|
112
|
+
}, [
|
|
113
|
+
baseData,
|
|
114
|
+
metric,
|
|
115
|
+
groupBys,
|
|
116
|
+
effectiveX,
|
|
117
|
+
isTotalData,
|
|
118
|
+
index,
|
|
119
|
+
x_field,
|
|
120
|
+
table_head,
|
|
121
|
+
table_body,
|
|
122
|
+
columnConfigMap,
|
|
123
|
+
group_by,
|
|
124
|
+
x
|
|
125
|
+
]);
|
|
126
|
+
const yAxisFormatter = useMemo(() => {
|
|
127
|
+
var _a;
|
|
128
|
+
if (metric.length === 1) {
|
|
129
|
+
return (_a = columnConfigMap[metric[0]]) == null ? void 0 : _a.format;
|
|
130
|
+
}
|
|
131
|
+
return null;
|
|
132
|
+
}, [metric, columnConfigMap]);
|
|
133
|
+
const series = useMemo(() => {
|
|
134
|
+
const first = effectiveX[0];
|
|
135
|
+
const firstData = fullData.filter((f) => f[x_field] === first);
|
|
136
|
+
firstData.sort((a, b) => b.value - a.value);
|
|
137
|
+
const sortedMetric = Array.from(new Set(firstData.map((item) => item.name)));
|
|
138
|
+
const countMetric = (firstData.length > 0 ? count ? sortedMetric.slice(0, count) : sortedMetric : metric).slice().sort((a, b) => {
|
|
139
|
+
const lowerA = getIntervalLower(String(a));
|
|
140
|
+
const lowerB = getIntervalLower(String(b));
|
|
141
|
+
if (!Number.isNaN(lowerA) && !Number.isNaN(lowerB))
|
|
142
|
+
return lowerA - lowerB;
|
|
143
|
+
return String(a).localeCompare(String(b));
|
|
144
|
+
});
|
|
145
|
+
return countMetric.map((interval) => ({
|
|
146
|
+
name: interval,
|
|
147
|
+
type: "line",
|
|
148
|
+
smooth: true,
|
|
149
|
+
stack: "Total",
|
|
150
|
+
areaStyle: {},
|
|
151
|
+
showSymbol: true,
|
|
152
|
+
symbol: "emptyCircle",
|
|
153
|
+
symbolSize: 0.8,
|
|
154
|
+
lineStyle: {
|
|
155
|
+
width: 1.5
|
|
156
|
+
},
|
|
157
|
+
emphasis: {
|
|
158
|
+
scale: 8
|
|
159
|
+
},
|
|
160
|
+
data: effectiveX.map((item) => {
|
|
161
|
+
const itemData = fullData.find((d) => d.name === interval && d.x === item);
|
|
162
|
+
return itemData ? itemData.value : 0;
|
|
163
|
+
})
|
|
164
|
+
}));
|
|
165
|
+
}, [fullData, metric, count, effectiveX, x_field]);
|
|
166
|
+
const grid = {
|
|
167
|
+
top: 10,
|
|
168
|
+
left: 0,
|
|
169
|
+
right: 10,
|
|
170
|
+
bottom: 40,
|
|
171
|
+
containLabel: true
|
|
172
|
+
};
|
|
173
|
+
const legend = {
|
|
174
|
+
bottom: 0,
|
|
175
|
+
type: "scroll",
|
|
176
|
+
itemWidth: 13,
|
|
177
|
+
itemStyle: {
|
|
178
|
+
opacity: 0
|
|
179
|
+
},
|
|
180
|
+
lineStyle: {
|
|
181
|
+
width: 2,
|
|
182
|
+
type: "solid"
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
const xAxis = {
|
|
186
|
+
type: "category",
|
|
187
|
+
data: effectiveX,
|
|
188
|
+
axisLine: {
|
|
189
|
+
lineStyle: {
|
|
190
|
+
color: "#EBEEF4"
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
axisLabel: {
|
|
194
|
+
color: "#9CA4B3",
|
|
195
|
+
fontSize: 12
|
|
196
|
+
},
|
|
197
|
+
axisTick: {
|
|
198
|
+
alignWithLabel: true
|
|
199
|
+
},
|
|
200
|
+
boundaryGap: true
|
|
201
|
+
};
|
|
202
|
+
const yAxis = {
|
|
203
|
+
type: "value",
|
|
204
|
+
splitNumber: 4,
|
|
205
|
+
// 设置Y轴坐标点数量
|
|
206
|
+
axisLine: {
|
|
207
|
+
show: true,
|
|
208
|
+
lineStyle: {
|
|
209
|
+
color: "#EBEEF4",
|
|
210
|
+
shadowOffsetY: -10,
|
|
211
|
+
shadowColor: "#EBEEF4"
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
axisLabel: {
|
|
215
|
+
color: "#999999",
|
|
216
|
+
fontSize: 12,
|
|
217
|
+
formatter: (value) => {
|
|
218
|
+
if (yAxisFormatter === "percent") {
|
|
219
|
+
return new Decimal(value).mul(100) + "%";
|
|
220
|
+
}
|
|
221
|
+
if (yAxisFormatter === "decimal") {
|
|
222
|
+
return formatValue(value, yAxisFormatter);
|
|
223
|
+
}
|
|
224
|
+
const [result, unit] = formatNumber(value, true);
|
|
225
|
+
return result + unit;
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
splitLine: {
|
|
229
|
+
lineStyle: {
|
|
230
|
+
type: [2, 3],
|
|
231
|
+
// 虚线
|
|
232
|
+
color: "#E7E7E7"
|
|
233
|
+
// 背景线颜色
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
axisTick: {
|
|
237
|
+
show: true
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
const tooltipFormatter = (params) => {
|
|
241
|
+
var _a, _b;
|
|
242
|
+
const title = (_b = (_a = params[0]) == null ? void 0 : _a.axisValue) != null ? _b : "";
|
|
243
|
+
const tooltipDom = /* @__PURE__ */ React.createElement("div", { className: styles.tooltip }, /* @__PURE__ */ React.createElement("div", { className: styles.title }, title), /* @__PURE__ */ React.createElement("div", { className: styles.content }, params.map((m) => {
|
|
244
|
+
var _a2;
|
|
245
|
+
const metricName = m.seriesName.split(",")[0];
|
|
246
|
+
const columnConfig = columnConfigMap[metricName];
|
|
247
|
+
const format = (_a2 = columnConfig == null ? void 0 : columnConfig.format) != null ? _a2 : "string";
|
|
248
|
+
const showValue = format === "currency" ? formatNumber(m.value, true) : formatValue(m.value, format);
|
|
249
|
+
const showValueText = showValue === "" || showValue[0] === "" ? "-" : showValue;
|
|
250
|
+
return /* @__PURE__ */ React.createElement("div", { className: styles.item, key: m.seriesName }, /* @__PURE__ */ React.createElement("div", { className: styles.point, style: { background: m.color } }), /* @__PURE__ */ React.createElement("div", { className: styles.category }, m.seriesName), /* @__PURE__ */ React.createElement("div", { className: styles.value }, showValueText));
|
|
251
|
+
})));
|
|
252
|
+
return ReactDOMServer.renderToStaticMarkup(tooltipDom);
|
|
253
|
+
};
|
|
254
|
+
const tooltip = {
|
|
255
|
+
trigger: "axis",
|
|
256
|
+
padding: 0,
|
|
257
|
+
confine: true,
|
|
258
|
+
enterable: true,
|
|
259
|
+
axisPointer: {
|
|
260
|
+
type: "line",
|
|
261
|
+
// 设置悬浮指针为线
|
|
262
|
+
lineStyle: {
|
|
263
|
+
color: "#EBEEF4",
|
|
264
|
+
// 设置线的颜色
|
|
265
|
+
type: "dashed"
|
|
266
|
+
// 设置虚线样式
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
formatter: tooltipFormatter
|
|
270
|
+
};
|
|
271
|
+
const chartOptions = useMemo(() => {
|
|
272
|
+
return {
|
|
273
|
+
color: chartColors,
|
|
274
|
+
grid,
|
|
275
|
+
legend: __spreadProps(__spreadValues({}, legend), {
|
|
276
|
+
itemWidth: 13,
|
|
277
|
+
itemStyle: {
|
|
278
|
+
opacity: 0
|
|
279
|
+
},
|
|
280
|
+
lineStyle: {
|
|
281
|
+
width: 2,
|
|
282
|
+
type: "solid"
|
|
283
|
+
}
|
|
284
|
+
}),
|
|
285
|
+
xAxis,
|
|
286
|
+
yAxis,
|
|
287
|
+
series,
|
|
288
|
+
tooltip
|
|
289
|
+
};
|
|
290
|
+
}, [series]);
|
|
291
|
+
useEffect(() => {
|
|
292
|
+
if (!chartContainerRef.current)
|
|
293
|
+
return;
|
|
294
|
+
let chart = chartInstanceRef.current;
|
|
295
|
+
if (!chart) {
|
|
296
|
+
chart = echarts.init(chartContainerRef.current);
|
|
297
|
+
chartInstanceRef.current = chart;
|
|
298
|
+
}
|
|
299
|
+
chart == null ? void 0 : chart.setOption(chartOptions, true);
|
|
300
|
+
return () => {
|
|
301
|
+
if (chartInstanceRef.current) {
|
|
302
|
+
chartInstanceRef.current.dispose();
|
|
303
|
+
chartInstanceRef.current = null;
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
}, [chartOptions]);
|
|
307
|
+
useEffect(() => {
|
|
308
|
+
const chartElement = chartContainerRef.current;
|
|
309
|
+
if (!chartElement)
|
|
310
|
+
return;
|
|
311
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
312
|
+
const chart = chartInstanceRef.current;
|
|
313
|
+
if (chart) {
|
|
314
|
+
chart.resize();
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
resizeObserver.observe(chartElement);
|
|
318
|
+
return () => {
|
|
319
|
+
resizeObserver.unobserve(chartElement);
|
|
320
|
+
resizeObserver.disconnect();
|
|
321
|
+
};
|
|
322
|
+
}, [fullData]);
|
|
323
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, fullData.length > 0 ? /* @__PURE__ */ React.createElement(
|
|
324
|
+
"div",
|
|
325
|
+
{
|
|
326
|
+
ref: chartContainerRef,
|
|
327
|
+
className: styles.echarts,
|
|
328
|
+
style: { width: "100%", height: height || "100%", minHeight: 220 }
|
|
329
|
+
}
|
|
330
|
+
) : /* @__PURE__ */ React.createElement(Empty, { className: styles.empty, description: "暂无数据", image: Empty.PRESENTED_IMAGE_SIMPLE }));
|
|
331
|
+
};
|
|
332
|
+
var Area_default = Line;
|
|
333
|
+
export {
|
|
334
|
+
Area_default as default
|
|
335
|
+
};
|
|
336
|
+
//# sourceMappingURL=Area.js.map
|