@sdata/web-vue 3.9.0 → 3.11.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.
Files changed (40) hide show
  1. package/dist/sd.css +257 -5
  2. package/dist/sd.min.css +1 -1
  3. package/es/components.d.ts +1 -0
  4. package/es/file-previewer/file-previewer.vue.d.ts +5 -1
  5. package/es/file-previewer/file-previewer.vue_vue_type_script_setup_true_lang.js +117 -21
  6. package/es/file-previewer/index.d.ts +33 -3
  7. package/es/file-previewer/pdfjs-worker-url.d.ts +2 -0
  8. package/es/file-previewer/pdfjs-worker-url.js +4 -0
  9. package/es/file-previewer/pdfjs-worker.min.mjs +29 -0
  10. package/es/file-previewer/style/index.css +53 -5
  11. package/es/file-previewer/style/index.scss +58 -6
  12. package/es/file-previewer/style/token.scss +13 -0
  13. package/es/file-previewer/types.d.ts +55 -1
  14. package/es/file-previewer/use-pdf-js.d.ts +20 -0
  15. package/es/file-previewer/use-pdf-js.js +197 -0
  16. package/es/index.css +257 -5
  17. package/es/index.d.ts +3 -1
  18. package/es/index.js +2 -1
  19. package/es/index.scss +1 -0
  20. package/es/sd-vue.js +2 -0
  21. package/es/selectable-card/index.d.ts +88 -0
  22. package/es/selectable-card/index.js +10 -0
  23. package/es/selectable-card/selectable-card.js +5 -0
  24. package/es/selectable-card/selectable-card.vue.d.ts +39 -0
  25. package/es/selectable-card/selectable-card.vue_vue_type_script_setup_true_lang.js +115 -0
  26. package/es/selectable-card/style/css.js +2 -0
  27. package/es/selectable-card/style/index.css +220 -0
  28. package/es/selectable-card/style/index.d.ts +2 -0
  29. package/es/selectable-card/style/index.js +2 -0
  30. package/es/selectable-card/style/index.scss +202 -0
  31. package/es/selectable-card/style/token.scss +27 -0
  32. package/es/selectable-card/types.d.ts +7 -0
  33. package/es/tree/base-node.vue_vue_type_script_setup_true_lang.js +17 -10
  34. package/es/tree/interface.d.ts +1 -0
  35. package/es/tree/tree.vue.d.ts +9 -0
  36. package/es/tree/tree.vue_vue_type_script_setup_true_lang.js +8 -0
  37. package/json/vetur-attributes.json +4 -0
  38. package/json/vetur-tags.json +4 -0
  39. package/json/web-types.json +15 -1
  40. package/package.json +3 -1
package/es/index.css CHANGED
@@ -14980,7 +14980,7 @@ body.sd-tour-active .sd-tour-popover * {
14980
14980
  min-width: 0;
14981
14981
  min-height: 0;
14982
14982
  }
14983
- .sd-file-previewer-image, .sd-file-previewer-video-player, .sd-file-previewer-audio-player, .sd-file-previewer-video, .sd-file-previewer-pdf {
14983
+ .sd-file-previewer-image, .sd-file-previewer-video-player, .sd-file-previewer-audio-player, .sd-file-previewer-video {
14984
14984
  display: block;
14985
14985
  width: 100%;
14986
14986
  height: 100%;
@@ -15023,12 +15023,60 @@ body.sd-tour-active .sd-tour-popover * {
15023
15023
  width: 100%;
15024
15024
  }
15025
15025
  .sd-file-previewer-pdf {
15026
- background: var(--sd-color-bg-2);
15027
- border: 0;
15026
+ display: flex;
15027
+ flex-direction: column;
15028
+ gap: 6px;
15029
+ width: 100%;
15030
+ height: 100%;
15031
+ }
15032
+ .sd-file-previewer-pdf-canvas-wrap {
15033
+ display: flex;
15034
+ flex: 1;
15035
+ align-items: center;
15036
+ justify-content: center;
15037
+ min-width: 0;
15038
+ min-height: 0;
15039
+ overflow: auto;
15040
+ background: var(--sd-color-bg-1);
15028
15041
  border-radius: var(--sd-border-radius-medium);
15029
15042
  }
15030
- .sd-file-previewer-inline .sd-file-previewer-pdf {
15031
- border-radius: 0;
15043
+ .sd-file-previewer-pdf-canvas {
15044
+ display: block;
15045
+ }
15046
+ .sd-file-previewer-pdf-toolbar {
15047
+ display: flex;
15048
+ flex-shrink: 0;
15049
+ gap: 6px;
15050
+ align-items: center;
15051
+ justify-content: center;
15052
+ padding: 4px;
15053
+ color: var(--sd-color-white);
15054
+ background: rgba(0, 0, 0, 0.5);
15055
+ border-radius: var(--sd-border-radius-medium);
15056
+ }
15057
+ .sd-file-previewer-pdf-btn {
15058
+ display: inline-flex;
15059
+ align-items: center;
15060
+ justify-content: center;
15061
+ min-width: 28px;
15062
+ height: 28px;
15063
+ padding: 0 6px;
15064
+ color: inherit;
15065
+ font-size: 16px;
15066
+ line-height: 1;
15067
+ background: transparent;
15068
+ border: 0;
15069
+ border-radius: var(--sd-border-radius-small);
15070
+ cursor: pointer;
15071
+ }
15072
+ .sd-file-previewer-pdf-btn:disabled {
15073
+ color: var(--sd-color-fill-3);
15074
+ cursor: not-allowed;
15075
+ }
15076
+ .sd-file-previewer-pdf-page {
15077
+ min-width: 64px;
15078
+ font-size: 14px;
15079
+ text-align: center;
15032
15080
  }
15033
15081
  .sd-file-previewer-close-btn {
15034
15082
  position: absolute;
@@ -17753,6 +17801,210 @@ body.sd-tour-active .sd-tour-popover * {
17753
17801
  box-shadow: 0 4px 10px rgb(var(--sd-gray-1), 40%);
17754
17802
  }
17755
17803
 
17804
+ .sd-selectable-card {
17805
+ position: relative;
17806
+ box-sizing: border-box;
17807
+ color: var(--sd-color-text-1);
17808
+ background: var(--sd-color-bg-2);
17809
+ border: 1px solid var(--sd-color-neutral-3);
17810
+ border-radius: var(--sd-border-radius-large);
17811
+ cursor: pointer;
17812
+ transition: color 0.2s cubic-bezier(0, 0, 1, 1), background-color 0.2s cubic-bezier(0, 0, 1, 1), border-color 0.2s cubic-bezier(0, 0, 1, 1), box-shadow 0.2s cubic-bezier(0, 0, 1, 1);
17813
+ }
17814
+ .sd-selectable-card::after {
17815
+ position: absolute;
17816
+ background: transparent;
17817
+ border-radius: inherit;
17818
+ transition: background 0.2s cubic-bezier(0, 0, 1, 1);
17819
+ content: "";
17820
+ pointer-events: none;
17821
+ inset: 0;
17822
+ }
17823
+ @media (hover: hover) {
17824
+ .sd-selectable-card:not(.sd-selectable-card--disabled):hover::after {
17825
+ background: rgba(0, 0, 0, 0.05);
17826
+ }
17827
+ }
17828
+ .sd-selectable-card:not(.sd-selectable-card--disabled):active::after {
17829
+ background: rgba(0, 0, 0, 0.1);
17830
+ }
17831
+ .sd-selectable-card:has(.sd-selectable-card-input:focus-visible) {
17832
+ outline: 2px solid rgb(var(--sd-primary-6));
17833
+ outline-offset: 2px;
17834
+ }
17835
+ .sd-selectable-card-body {
17836
+ display: flex;
17837
+ min-width: 0;
17838
+ }
17839
+ .sd-selectable-card-content {
17840
+ display: flex;
17841
+ flex: 1;
17842
+ flex-direction: column;
17843
+ min-width: 0;
17844
+ }
17845
+ .sd-selectable-card-figure {
17846
+ display: flex;
17847
+ flex: none;
17848
+ align-items: center;
17849
+ justify-content: center;
17850
+ color: var(--sd-selectable-card-accent);
17851
+ font-size: 2em;
17852
+ }
17853
+ .sd-selectable-card-title {
17854
+ color: var(--sd-color-text-2);
17855
+ font-size: 14px;
17856
+ }
17857
+ .sd-selectable-card-value {
17858
+ color: var(--sd-color-text-1);
17859
+ font-weight: 600;
17860
+ line-height: 1.25;
17861
+ }
17862
+ .sd-selectable-card-description, .sd-selectable-card-default {
17863
+ color: var(--sd-color-text-3);
17864
+ font-size: 13px;
17865
+ line-height: 1.5715;
17866
+ }
17867
+ .sd-selectable-card-actions {
17868
+ position: relative;
17869
+ z-index: 1;
17870
+ display: flex;
17871
+ flex-wrap: wrap;
17872
+ gap: 8px;
17873
+ }
17874
+ .sd-selectable-card--layout-horizontal .sd-selectable-card-body {
17875
+ flex-direction: row;
17876
+ align-items: center;
17877
+ }
17878
+ .sd-selectable-card--layout-vertical .sd-selectable-card-body {
17879
+ flex-direction: column;
17880
+ }
17881
+ .sd-selectable-card--align-center .sd-selectable-card-body, .sd-selectable-card--align-center .sd-selectable-card-content {
17882
+ align-items: center;
17883
+ text-align: center;
17884
+ }
17885
+ .sd-selectable-card--size-small {
17886
+ padding: 12px;
17887
+ }
17888
+ .sd-selectable-card--size-small .sd-selectable-card-body, .sd-selectable-card--size-small .sd-selectable-card-content {
17889
+ gap: 8px;
17890
+ }
17891
+ .sd-selectable-card--size-small .sd-selectable-card-value {
17892
+ font-size: 16px;
17893
+ }
17894
+ .sd-selectable-card--size-medium {
17895
+ padding: 16px;
17896
+ }
17897
+ .sd-selectable-card--size-medium .sd-selectable-card-body, .sd-selectable-card--size-medium .sd-selectable-card-content {
17898
+ gap: 12px;
17899
+ }
17900
+ .sd-selectable-card--size-medium .sd-selectable-card-value {
17901
+ font-size: 20px;
17902
+ }
17903
+ .sd-selectable-card--size-large {
17904
+ padding: 24px;
17905
+ }
17906
+ .sd-selectable-card--size-large .sd-selectable-card-body, .sd-selectable-card--size-large .sd-selectable-card-content {
17907
+ gap: 20px;
17908
+ }
17909
+ .sd-selectable-card--size-large .sd-selectable-card-value {
17910
+ font-size: 24px;
17911
+ }
17912
+ .sd-selectable-card--color-red {
17913
+ --sd-selectable-card-accent: rgb(var(--sd-red-6));
17914
+ --sd-selectable-card-soft-bg: rgb(var(--sd-red-1));
17915
+ --sd-selectable-card-border: rgb(var(--sd-red-6));
17916
+ }
17917
+ .sd-selectable-card--color-orangered {
17918
+ --sd-selectable-card-accent: rgb(var(--sd-orangered-6));
17919
+ --sd-selectable-card-soft-bg: rgb(var(--sd-orangered-1));
17920
+ --sd-selectable-card-border: rgb(var(--sd-orangered-6));
17921
+ }
17922
+ .sd-selectable-card--color-orange {
17923
+ --sd-selectable-card-accent: rgb(var(--sd-orange-6));
17924
+ --sd-selectable-card-soft-bg: rgb(var(--sd-orange-1));
17925
+ --sd-selectable-card-border: rgb(var(--sd-orange-6));
17926
+ }
17927
+ .sd-selectable-card--color-gold {
17928
+ --sd-selectable-card-accent: rgb(var(--sd-gold-6));
17929
+ --sd-selectable-card-soft-bg: rgb(var(--sd-gold-1));
17930
+ --sd-selectable-card-border: rgb(var(--sd-gold-6));
17931
+ }
17932
+ .sd-selectable-card--color-lime {
17933
+ --sd-selectable-card-accent: rgb(var(--sd-lime-6));
17934
+ --sd-selectable-card-soft-bg: rgb(var(--sd-lime-1));
17935
+ --sd-selectable-card-border: rgb(var(--sd-lime-6));
17936
+ }
17937
+ .sd-selectable-card--color-green {
17938
+ --sd-selectable-card-accent: rgb(var(--sd-green-6));
17939
+ --sd-selectable-card-soft-bg: rgb(var(--sd-green-1));
17940
+ --sd-selectable-card-border: rgb(var(--sd-green-6));
17941
+ }
17942
+ .sd-selectable-card--color-cyan {
17943
+ --sd-selectable-card-accent: rgb(var(--sd-cyan-6));
17944
+ --sd-selectable-card-soft-bg: rgb(var(--sd-cyan-1));
17945
+ --sd-selectable-card-border: rgb(var(--sd-cyan-6));
17946
+ }
17947
+ .sd-selectable-card--color-blue {
17948
+ --sd-selectable-card-accent: rgb(var(--sd-blue-6));
17949
+ --sd-selectable-card-soft-bg: rgb(var(--sd-blue-1));
17950
+ --sd-selectable-card-border: rgb(var(--sd-blue-6));
17951
+ }
17952
+ .sd-selectable-card--color-sdblue {
17953
+ --sd-selectable-card-accent: rgb(var(--sd-sdblue-6));
17954
+ --sd-selectable-card-soft-bg: rgb(var(--sd-sdblue-1));
17955
+ --sd-selectable-card-border: rgb(var(--sd-sdblue-6));
17956
+ }
17957
+ .sd-selectable-card--color-purple {
17958
+ --sd-selectable-card-accent: rgb(var(--sd-purple-6));
17959
+ --sd-selectable-card-soft-bg: rgb(var(--sd-purple-1));
17960
+ --sd-selectable-card-border: rgb(var(--sd-purple-6));
17961
+ }
17962
+ .sd-selectable-card--color-pinkpurple {
17963
+ --sd-selectable-card-accent: rgb(var(--sd-pinkpurple-6));
17964
+ --sd-selectable-card-soft-bg: rgb(var(--sd-pinkpurple-1));
17965
+ --sd-selectable-card-border: rgb(var(--sd-pinkpurple-6));
17966
+ }
17967
+ .sd-selectable-card--color-magenta {
17968
+ --sd-selectable-card-accent: rgb(var(--sd-magenta-6));
17969
+ --sd-selectable-card-soft-bg: rgb(var(--sd-magenta-1));
17970
+ --sd-selectable-card-border: rgb(var(--sd-magenta-6));
17971
+ }
17972
+ .sd-selectable-card--color-gray {
17973
+ --sd-selectable-card-accent: rgb(var(--sd-gray-6));
17974
+ --sd-selectable-card-soft-bg: rgb(var(--sd-gray-2));
17975
+ --sd-selectable-card-border: rgb(var(--sd-gray-6));
17976
+ }
17977
+ .sd-selectable-card--selected {
17978
+ border-color: var(--sd-selectable-card-border);
17979
+ box-shadow: inset 0 0 0 2px var(--sd-selectable-card-border);
17980
+ }
17981
+ .sd-selectable-card--selected.sd-selectable-card--soft {
17982
+ color: var(--sd-selectable-card-accent);
17983
+ background: var(--sd-selectable-card-soft-bg);
17984
+ }
17985
+ .sd-selectable-card--selected.sd-selectable-card--filled {
17986
+ color: #fff;
17987
+ background: var(--sd-selectable-card-border);
17988
+ }
17989
+ .sd-selectable-card--selected.sd-selectable-card--filled .sd-selectable-card-title, .sd-selectable-card--selected.sd-selectable-card--filled .sd-selectable-card-value, .sd-selectable-card--selected.sd-selectable-card--filled .sd-selectable-card-description, .sd-selectable-card--selected.sd-selectable-card--filled .sd-selectable-card-default, .sd-selectable-card--selected.sd-selectable-card--filled .sd-selectable-card-figure {
17990
+ color: inherit;
17991
+ }
17992
+ .sd-selectable-card--disabled {
17993
+ cursor: not-allowed;
17994
+ opacity: 0.5;
17995
+ }
17996
+ .sd-selectable-card-input {
17997
+ position: absolute;
17998
+ width: 1px;
17999
+ height: 1px;
18000
+ margin: -1px;
18001
+ padding: 0;
18002
+ overflow: hidden;
18003
+ white-space: nowrap;
18004
+ border: 0;
18005
+ clip-path: inset(50%);
18006
+ }
18007
+
17756
18008
  .sd-calendar--default-theme,
17757
18009
  [class$=-calendar--default-theme] {
17758
18010
  --sd-calendar-primary-color: rgb(var(--sd-primary-6));
package/es/index.d.ts CHANGED
@@ -26,6 +26,8 @@ export { default as Card, CardGrid, CardMeta } from './card';
26
26
  export { default as Calendar } from './calendar';
27
27
  export type { CalendarInstance } from './calendar';
28
28
  export type { CardGridInstance, CardInstance, CardMetaInstance } from './card';
29
+ export { default as SelectableCard } from './selectable-card';
30
+ export type { SelectableCardAlign, SelectableCardColor, SelectableCardInstance, SelectableCardLayout, SelectableCardSize, SelectableCardSizeValue, SelectableCardVariant, } from './selectable-card';
29
31
  export { default as Carousel, CarouselItem } from './carousel';
30
32
  export type { CarouselArrowType, CarouselAutoPlayConfig, CarouselIndicatorPosition, CarouselIndicatorType, CarouselInstance, CarouselItemInstance, CarouselTriggerEvent, } from './carousel';
31
33
  export { default as Cascader, CascaderPanel } from './cascader';
@@ -70,7 +72,7 @@ export type { ColProps, GridColInstance, GridInstance, GridItemInstance, GridIte
70
72
  export { default as Icon } from './icon-component';
71
73
  export type { IconInstance, IconProps } from './icon-component';
72
74
  export { default as FilePreviewer } from './file-previewer';
73
- export type { FilePreviewerContentSlotProps, FilePreviewerImageProps, FilePreviewerInstance, FilePreviewerMediaProps, FilePreviewerMediaSkin, FilePreviewerPdfProps, FilePreviewerProps, FilePreviewerStatus, FilePreviewerType, } from './file-previewer';
75
+ export type { FilePreviewerContentSlotProps, FilePreviewerImageProps, FilePreviewerImageSlotProps, FilePreviewerInstance, FilePreviewerMediaProps, FilePreviewerMediaSkin, FilePreviewerMediaSlotProps, FilePreviewerPdfProps, FilePreviewerPdfRotation, FilePreviewerPdfSlotProps, FilePreviewerProps, FilePreviewerStatus, FilePreviewerType, } from './file-previewer';
74
76
  export { default as Image, ImagePreviewAction, ImagePreview, ImagePreviewGroup } from './image';
75
77
  export type { ImageInstance, ImagePreviewActionInstance, ImagePreviewInstance, ImagePreviewGroupInstance, } from './image';
76
78
  export { default as Input, InputGroup, InputPassword, InputSearch } from './input';
package/es/index.js CHANGED
@@ -113,6 +113,7 @@ import QrCode from "./qr-code/index.js";
113
113
  import ResizeBox from "./resize-box/index.js";
114
114
  import Result from "./result/index.js";
115
115
  import Secret from "./secret/index.js";
116
+ import SelectableCard from "./selectable-card/index.js";
116
117
  import line_default from "./skeleton/line.js";
117
118
  import shape_default from "./skeleton/shape.js";
118
119
  import Skeleton from "./skeleton/index.js";
@@ -144,4 +145,4 @@ import Typography from "./typography/index.js";
144
145
  import Upload from "./upload/index.js";
145
146
  import Watermark from "./watermark/index.js";
146
147
  import SDVue from "./sd-vue.js";
147
- export { A2UI_0_8, Affix, Alert, Anchor, anchor_link_default as AnchorLink, AutoComplete, Avatar, AvatarGroup, BackTop, Badge, BorderBeam, Breadcrumb, breadcrumb_item_default as BreadcrumbItem, Button, button_group_default as ButtonGroup, Calendar, Card, card_grid_default as CardGrid, card_meta_default as CardMeta, Carousel, carousel_item_default as CarouselItem, Cascader, cascader_panel_default as CascaderPanel, Checkbox, checkbox_group_default as CheckboxGroup, grid_col_default as Col, Collapse, collapse_item_default as CollapseItem, ColorPicker, Comment, ConfigProvider, Copy, countdown_default as Countdown, Cropper, DatePicker, Descriptions, descriptions_item_default as DescriptionsItem, dropdown_group_default as Dgroup, Divider, dropdown_option_default as Doption, Drawer, Dropdown, dropdown_button_default as DropdownButton, dropdown_submenu_default as Dsubmenu, Ellipsis, Empty, FilePreviewer, Form, form_item_default as FormItem, Grid, grid_item_default as GridItem, Icon, Image, preview_default as ImagePreview, preview_action_default as ImagePreviewAction, preview_group_default as ImagePreviewGroup, Input, input_group_default as InputGroup, InputNumber, input_password_default as InputPassword, input_search_default as InputSearch, InputTag, JsonForm, Layout, content_default as LayoutContent, footer_default as LayoutFooter, header_default as LayoutHeader, sider_default as LayoutSider, Link, List, list_item_default as ListItem, list_item_meta_default as ListItemMeta, Mention, Menu, item_default as MenuItem, item_group_default as MenuItemGroup, Message, Modal, month_picker_default as MonthPicker, Notification, OverflowList, PageHeader, Pagination, PerformantEllipsis, Popconfirm, Popover, Progress, QrCode, quarter_picker_default as QuarterPicker, Radio, radio_group_default as RadioGroup, range_picker_default as RangePicker, Rate, ResizeBox, Result, grid_row_default as Row, Scrollbar, Secret, Select, Skeleton, line_default as SkeletonLine, shape_default as SkeletonShape, Slider, Space, Spin, Split, Statistic, step_default as Step, Steps, sub_menu_default as SubMenu, Switch, tab_pane_default as TabPane, Table, table_column_default as TableColumn, Tabs, Tag, TagGroup, table_tbody_default as Tbody, table_td_default as Td, Textarea, table_th_default as Th, table_thead_default as Thead, ThemeProvider, TimePicker, Timeline, item_default$1 as TimelineItem, Toolbar, Tooltip, Tour, table_tr_default as Tr, Transfer, Tree, TreeSelect, Trigger, Typography, paragraph_default as TypographyParagraph, text_default as TypographyText, title_default as TypographyTitle, Upload, VerificationCode, Watermark, week_picker_default as WeekPicker, year_picker_default as YearPicker, addI18nMessages, SDVue as default, defineJsonFormComponents, defineJsonFormSchemas, getCssVarToken, getLocale, useFormItem, useLocale };
148
+ export { A2UI_0_8, Affix, Alert, Anchor, anchor_link_default as AnchorLink, AutoComplete, Avatar, AvatarGroup, BackTop, Badge, BorderBeam, Breadcrumb, breadcrumb_item_default as BreadcrumbItem, Button, button_group_default as ButtonGroup, Calendar, Card, card_grid_default as CardGrid, card_meta_default as CardMeta, Carousel, carousel_item_default as CarouselItem, Cascader, cascader_panel_default as CascaderPanel, Checkbox, checkbox_group_default as CheckboxGroup, grid_col_default as Col, Collapse, collapse_item_default as CollapseItem, ColorPicker, Comment, ConfigProvider, Copy, countdown_default as Countdown, Cropper, DatePicker, Descriptions, descriptions_item_default as DescriptionsItem, dropdown_group_default as Dgroup, Divider, dropdown_option_default as Doption, Drawer, Dropdown, dropdown_button_default as DropdownButton, dropdown_submenu_default as Dsubmenu, Ellipsis, Empty, FilePreviewer, Form, form_item_default as FormItem, Grid, grid_item_default as GridItem, Icon, Image, preview_default as ImagePreview, preview_action_default as ImagePreviewAction, preview_group_default as ImagePreviewGroup, Input, input_group_default as InputGroup, InputNumber, input_password_default as InputPassword, input_search_default as InputSearch, InputTag, JsonForm, Layout, content_default as LayoutContent, footer_default as LayoutFooter, header_default as LayoutHeader, sider_default as LayoutSider, Link, List, list_item_default as ListItem, list_item_meta_default as ListItemMeta, Mention, Menu, item_default as MenuItem, item_group_default as MenuItemGroup, Message, Modal, month_picker_default as MonthPicker, Notification, OverflowList, PageHeader, Pagination, PerformantEllipsis, Popconfirm, Popover, Progress, QrCode, quarter_picker_default as QuarterPicker, Radio, radio_group_default as RadioGroup, range_picker_default as RangePicker, Rate, ResizeBox, Result, grid_row_default as Row, Scrollbar, Secret, Select, SelectableCard, Skeleton, line_default as SkeletonLine, shape_default as SkeletonShape, Slider, Space, Spin, Split, Statistic, step_default as Step, Steps, sub_menu_default as SubMenu, Switch, tab_pane_default as TabPane, Table, table_column_default as TableColumn, Tabs, Tag, TagGroup, table_tbody_default as Tbody, table_td_default as Td, Textarea, table_th_default as Th, table_thead_default as Thead, ThemeProvider, TimePicker, Timeline, item_default$1 as TimelineItem, Toolbar, Tooltip, Tour, table_tr_default as Tr, Transfer, Tree, TreeSelect, Trigger, Typography, paragraph_default as TypographyParagraph, text_default as TypographyText, title_default as TypographyTitle, Upload, VerificationCode, Watermark, week_picker_default as WeekPicker, year_picker_default as YearPicker, addI18nMessages, SDVue as default, defineJsonFormComponents, defineJsonFormSchemas, getCssVarToken, getLocale, useFormItem, useLocale };
package/es/index.scss CHANGED
@@ -75,6 +75,7 @@
75
75
  @use '@components/cascader/style/index.scss' as *;
76
76
  @use '@components/carousel/style/index.scss' as *;
77
77
  @use '@components/card/style/index.scss' as *;
78
+ @use '@components/selectable-card/style/index.scss' as *;
78
79
  @use '@components/calendar/style/index.scss' as *;
79
80
  @use '@components/button/style/index.scss' as *;
80
81
  @use '@components/breadcrumb/style/index.scss' as *;
package/es/sd-vue.js CHANGED
@@ -112,6 +112,7 @@ import QrCode from "./qr-code/index.js";
112
112
  import ResizeBox from "./resize-box/index.js";
113
113
  import Result from "./result/index.js";
114
114
  import Secret from "./secret/index.js";
115
+ import SelectableCard from "./selectable-card/index.js";
115
116
  import line_default from "./skeleton/line.js";
116
117
  import shape_default from "./skeleton/shape.js";
117
118
  import Skeleton from "./skeleton/index.js";
@@ -155,6 +156,7 @@ var components = {
155
156
  Badge,
156
157
  Calendar,
157
158
  Card,
159
+ SelectableCard,
158
160
  Carousel,
159
161
  Collapse,
160
162
  Comment,
@@ -0,0 +1,88 @@
1
+ import type { App } from 'vue';
2
+ import type { SDOptions } from '../_utils/types';
3
+ import _SelectableCard from './selectable-card.vue';
4
+ declare const SelectableCard: {
5
+ new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<{
6
+ label: string;
7
+ isSelected: boolean;
8
+ isDisabled?: boolean;
9
+ color?: import("./types").SelectableCardColor;
10
+ variant?: import("./types").SelectableCardVariant;
11
+ size?: import("./types").SelectableCardSize;
12
+ layout?: import("./types").SelectableCardLayout;
13
+ align?: import("./types").SelectableCardAlign;
14
+ padding?: import("./types").SelectableCardSizeValue;
15
+ title?: string;
16
+ value?: string | number;
17
+ description?: string;
18
+ width?: import("./types").SelectableCardSizeValue;
19
+ height?: import("./types").SelectableCardSizeValue;
20
+ maxWidth?: import("./types").SelectableCardSizeValue;
21
+ }> & Readonly<{
22
+ onChange?: ((isSelected: boolean) => any) | undefined;
23
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
24
+ change: (isSelected: boolean) => any;
25
+ }, import("vue").PublicProps, {}, false, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
26
+ P: {};
27
+ B: {};
28
+ D: {};
29
+ C: {};
30
+ M: {};
31
+ Defaults: {};
32
+ }, Readonly<{
33
+ label: string;
34
+ isSelected: boolean;
35
+ isDisabled?: boolean;
36
+ color?: import("./types").SelectableCardColor;
37
+ variant?: import("./types").SelectableCardVariant;
38
+ size?: import("./types").SelectableCardSize;
39
+ layout?: import("./types").SelectableCardLayout;
40
+ align?: import("./types").SelectableCardAlign;
41
+ padding?: import("./types").SelectableCardSizeValue;
42
+ title?: string;
43
+ value?: string | number;
44
+ description?: string;
45
+ width?: import("./types").SelectableCardSizeValue;
46
+ height?: import("./types").SelectableCardSizeValue;
47
+ maxWidth?: import("./types").SelectableCardSizeValue;
48
+ }> & Readonly<{
49
+ onChange?: ((isSelected: boolean) => any) | undefined;
50
+ }>, {}, {}, {}, {}, {}>;
51
+ __isFragment?: never;
52
+ __isTeleport?: never;
53
+ __isSuspense?: never;
54
+ } & import("vue").ComponentOptionsBase<Readonly<{
55
+ label: string;
56
+ isSelected: boolean;
57
+ isDisabled?: boolean;
58
+ color?: import("./types").SelectableCardColor;
59
+ variant?: import("./types").SelectableCardVariant;
60
+ size?: import("./types").SelectableCardSize;
61
+ layout?: import("./types").SelectableCardLayout;
62
+ align?: import("./types").SelectableCardAlign;
63
+ padding?: import("./types").SelectableCardSizeValue;
64
+ title?: string;
65
+ value?: string | number;
66
+ description?: string;
67
+ width?: import("./types").SelectableCardSizeValue;
68
+ height?: import("./types").SelectableCardSizeValue;
69
+ maxWidth?: import("./types").SelectableCardSizeValue;
70
+ }> & Readonly<{
71
+ onChange?: ((isSelected: boolean) => any) | undefined;
72
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
73
+ change: (isSelected: boolean) => any;
74
+ }, string, {}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
75
+ $slots: {
76
+ default?: () => unknown;
77
+ figure?: () => unknown;
78
+ title?: () => unknown;
79
+ value?: () => unknown;
80
+ description?: () => unknown;
81
+ actions?: () => unknown;
82
+ };
83
+ }) & {
84
+ install: (app: App, options?: SDOptions) => void;
85
+ };
86
+ export type SelectableCardInstance = InstanceType<typeof _SelectableCard>;
87
+ export type { SelectableCardAlign, SelectableCardColor, SelectableCardLayout, SelectableCardSize, SelectableCardSizeValue, SelectableCardVariant, } from './types';
88
+ export default SelectableCard;
@@ -0,0 +1,10 @@
1
+ import { getComponentPrefix, setGlobalConfig } from "../_utils/global-config.js";
2
+ import selectable_card_default from "./selectable-card.js";
3
+ //#region components/selectable-card/index.ts
4
+ var SelectableCard = Object.assign(selectable_card_default, { install: (app, options) => {
5
+ setGlobalConfig(app, options);
6
+ const componentPrefix = getComponentPrefix(options);
7
+ app.component(componentPrefix + selectable_card_default.name, selectable_card_default);
8
+ } });
9
+ //#endregion
10
+ export { SelectableCard as default };
@@ -0,0 +1,5 @@
1
+ import selectable_card_vue_vue_type_script_setup_true_lang_default from "./selectable-card.vue_vue_type_script_setup_true_lang.js";
2
+ //#region components/selectable-card/selectable-card.vue
3
+ var selectable_card_default = selectable_card_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { selectable_card_default as default };
@@ -0,0 +1,39 @@
1
+ import type { SelectableCardAlign, SelectableCardColor, SelectableCardLayout, SelectableCardSize, SelectableCardSizeValue, SelectableCardVariant } from './types';
2
+ type __VLS_Props = {
3
+ label: string;
4
+ isSelected: boolean;
5
+ isDisabled?: boolean;
6
+ color?: SelectableCardColor;
7
+ variant?: SelectableCardVariant;
8
+ size?: SelectableCardSize;
9
+ layout?: SelectableCardLayout;
10
+ align?: SelectableCardAlign;
11
+ padding?: SelectableCardSizeValue;
12
+ title?: string;
13
+ value?: string | number;
14
+ description?: string;
15
+ width?: SelectableCardSizeValue;
16
+ height?: SelectableCardSizeValue;
17
+ maxWidth?: SelectableCardSizeValue;
18
+ };
19
+ type __VLS_Slots = {
20
+ default?: () => unknown;
21
+ figure?: () => unknown;
22
+ title?: () => unknown;
23
+ value?: () => unknown;
24
+ description?: () => unknown;
25
+ actions?: () => unknown;
26
+ };
27
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
28
+ change: (isSelected: boolean) => any;
29
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
30
+ onChange?: ((isSelected: boolean) => any) | undefined;
31
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
32
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
33
+ declare const _default: typeof __VLS_export;
34
+ export default _default;
35
+ type __VLS_WithSlots<T, S> = T & {
36
+ new (): {
37
+ $slots: S;
38
+ };
39
+ };
@@ -0,0 +1,115 @@
1
+ import { _objectSpread2 } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/objectSpread2.js";
2
+ import { getPrefixCls } from "../_utils/global-config.js";
3
+ import { computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, renderSlot, toDisplayString, unref, useId } from "vue";
4
+ //#region components/selectable-card/selectable-card.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = ["data-selected", "data-variant"];
6
+ var _hoisted_2 = [
7
+ "aria-label",
8
+ "checked",
9
+ "disabled"
10
+ ];
11
+ var selectable_card_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent(_objectSpread2(_objectSpread2({}, { name: "SelectableCard" }), {}, {
12
+ __name: "selectable-card",
13
+ props: {
14
+ label: {},
15
+ isSelected: { type: Boolean },
16
+ isDisabled: {
17
+ type: Boolean,
18
+ default: false
19
+ },
20
+ color: { default: "sdblue" },
21
+ variant: { default: "outline" },
22
+ size: { default: "medium" },
23
+ layout: { default: "vertical" },
24
+ align: { default: "start" },
25
+ padding: {},
26
+ title: {},
27
+ value: {},
28
+ description: {},
29
+ width: {},
30
+ height: {},
31
+ maxWidth: {}
32
+ },
33
+ emits: ["change"],
34
+ setup(__props, { emit: __emit }) {
35
+ const emit = __emit;
36
+ const prefixCls = getPrefixCls("selectable-card");
37
+ const inputId = `selectable-card-${useId()}`;
38
+ const classes = computed(() => [
39
+ prefixCls,
40
+ `${prefixCls}--color-${__props.color}`,
41
+ `${prefixCls}--${__props.variant}`,
42
+ `${prefixCls}--size-${__props.size}`,
43
+ `${prefixCls}--layout-${__props.layout}`,
44
+ `${prefixCls}--align-${__props.align}`,
45
+ {
46
+ [`${prefixCls}--selected`]: __props.isSelected,
47
+ [`${prefixCls}--disabled`]: __props.isDisabled
48
+ }
49
+ ]);
50
+ function toCssSize(value, spacing = false) {
51
+ if (value === void 0) return void 0;
52
+ return typeof value === "number" ? `${spacing ? value * 4 : value}px` : value;
53
+ }
54
+ const rootStyle = computed(() => ({
55
+ padding: toCssSize(__props.padding, true),
56
+ width: toCssSize(__props.width),
57
+ height: toCssSize(__props.height),
58
+ maxWidth: toCssSize(__props.maxWidth)
59
+ }));
60
+ function toggle() {
61
+ if (!__props.isDisabled) emit("change", !__props.isSelected);
62
+ }
63
+ function handleCardClick(event) {
64
+ if (__props.isDisabled) return;
65
+ if (event.target.closest("a, button, input, select, textarea, [role=\"button\"]")) return;
66
+ toggle();
67
+ }
68
+ function handleInputChange() {
69
+ toggle();
70
+ }
71
+ return (_ctx, _cache) => {
72
+ return openBlock(), createElementBlock("div", {
73
+ class: normalizeClass(classes.value),
74
+ style: normalizeStyle(rootStyle.value),
75
+ "data-selected": __props.isSelected,
76
+ "data-variant": __props.variant,
77
+ onClick: handleCardClick
78
+ }, [createElementVNode("input", {
79
+ id: inputId,
80
+ class: normalizeClass(`${unref(prefixCls)}-input`),
81
+ type: "checkbox",
82
+ "aria-label": __props.label,
83
+ checked: __props.isSelected,
84
+ disabled: __props.isDisabled,
85
+ onChange: handleInputChange
86
+ }, null, 42, _hoisted_2), createElementVNode("div", { class: normalizeClass(`${unref(prefixCls)}-body`) }, [_ctx.$slots.figure ? (openBlock(), createElementBlock("div", {
87
+ key: 0,
88
+ class: normalizeClass(`${unref(prefixCls)}-figure`)
89
+ }, [renderSlot(_ctx.$slots, "figure")], 2)) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(`${unref(prefixCls)}-content`) }, [
90
+ _ctx.$slots.title || __props.title ? (openBlock(), createElementBlock("div", {
91
+ key: 0,
92
+ class: normalizeClass(`${unref(prefixCls)}-title`)
93
+ }, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])], 2)) : createCommentVNode("", true),
94
+ _ctx.$slots.value || __props.value ? (openBlock(), createElementBlock("div", {
95
+ key: 1,
96
+ class: normalizeClass(`${unref(prefixCls)}-value`)
97
+ }, [renderSlot(_ctx.$slots, "value", {}, () => [createTextVNode(toDisplayString(__props.value), 1)])], 2)) : createCommentVNode("", true),
98
+ _ctx.$slots.description || __props.description ? (openBlock(), createElementBlock("div", {
99
+ key: 2,
100
+ class: normalizeClass(`${unref(prefixCls)}-description`)
101
+ }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])], 2)) : createCommentVNode("", true),
102
+ _ctx.$slots.default ? (openBlock(), createElementBlock("div", {
103
+ key: 3,
104
+ class: normalizeClass(`${unref(prefixCls)}-default`)
105
+ }, [renderSlot(_ctx.$slots, "default")], 2)) : createCommentVNode("", true),
106
+ _ctx.$slots.actions ? (openBlock(), createElementBlock("div", {
107
+ key: 4,
108
+ class: normalizeClass(`${unref(prefixCls)}-actions`)
109
+ }, [renderSlot(_ctx.$slots, "actions")], 2)) : createCommentVNode("", true)
110
+ ], 2)], 2)], 14, _hoisted_1);
111
+ };
112
+ }
113
+ }));
114
+ //#endregion
115
+ export { selectable_card_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,2 @@
1
+ import "../../style/index.css";
2
+ import "./index.css";