@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
@@ -0,0 +1,220 @@
1
+ /******** borderSize *******/
2
+ /******** borderStyle *******/
3
+ /******** radius *******/
4
+ /******** shadow distance *******/
5
+ /******** size *******/
6
+ /******** spacing *******/
7
+ /******** shadow *******/
8
+ /******** opacity *******/
9
+ /******** fontSize *******/
10
+ /******** fontWeight ********/
11
+ /******** Primary *******/
12
+ /******** success *******/
13
+ /******** warning *******/
14
+ /******** danger *******/
15
+ /******** link *******/
16
+ /******** radius *******/
17
+ /********* icon hover *********/
18
+ .sd-selectable-card {
19
+ position: relative;
20
+ box-sizing: border-box;
21
+ color: var(--sd-color-text-1);
22
+ background: var(--sd-color-bg-2);
23
+ border: 1px solid var(--sd-color-neutral-3);
24
+ border-radius: var(--sd-border-radius-large);
25
+ cursor: pointer;
26
+ 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);
27
+ }
28
+ .sd-selectable-card::after {
29
+ position: absolute;
30
+ background: transparent;
31
+ border-radius: inherit;
32
+ transition: background 0.2s cubic-bezier(0, 0, 1, 1);
33
+ content: "";
34
+ pointer-events: none;
35
+ inset: 0;
36
+ }
37
+ @media (hover: hover) {
38
+ .sd-selectable-card:not(.sd-selectable-card--disabled):hover::after {
39
+ background: rgba(0, 0, 0, 0.05);
40
+ }
41
+ }
42
+ .sd-selectable-card:not(.sd-selectable-card--disabled):active::after {
43
+ background: rgba(0, 0, 0, 0.1);
44
+ }
45
+ .sd-selectable-card:has(.sd-selectable-card-input:focus-visible) {
46
+ outline: 2px solid rgb(var(--sd-primary-6));
47
+ outline-offset: 2px;
48
+ }
49
+ .sd-selectable-card-body {
50
+ display: flex;
51
+ min-width: 0;
52
+ }
53
+ .sd-selectable-card-content {
54
+ display: flex;
55
+ flex: 1;
56
+ flex-direction: column;
57
+ min-width: 0;
58
+ }
59
+ .sd-selectable-card-figure {
60
+ display: flex;
61
+ flex: none;
62
+ align-items: center;
63
+ justify-content: center;
64
+ color: var(--sd-selectable-card-accent);
65
+ font-size: 2em;
66
+ }
67
+ .sd-selectable-card-title {
68
+ color: var(--sd-color-text-2);
69
+ font-size: 14px;
70
+ }
71
+ .sd-selectable-card-value {
72
+ color: var(--sd-color-text-1);
73
+ font-weight: 600;
74
+ line-height: 1.25;
75
+ }
76
+ .sd-selectable-card-description, .sd-selectable-card-default {
77
+ color: var(--sd-color-text-3);
78
+ font-size: 13px;
79
+ line-height: 1.5715;
80
+ }
81
+ .sd-selectable-card-actions {
82
+ position: relative;
83
+ z-index: 1;
84
+ display: flex;
85
+ flex-wrap: wrap;
86
+ gap: 8px;
87
+ }
88
+ .sd-selectable-card--layout-horizontal .sd-selectable-card-body {
89
+ flex-direction: row;
90
+ align-items: center;
91
+ }
92
+ .sd-selectable-card--layout-vertical .sd-selectable-card-body {
93
+ flex-direction: column;
94
+ }
95
+ .sd-selectable-card--align-center .sd-selectable-card-body, .sd-selectable-card--align-center .sd-selectable-card-content {
96
+ align-items: center;
97
+ text-align: center;
98
+ }
99
+ .sd-selectable-card--size-small {
100
+ padding: 12px;
101
+ }
102
+ .sd-selectable-card--size-small .sd-selectable-card-body, .sd-selectable-card--size-small .sd-selectable-card-content {
103
+ gap: 8px;
104
+ }
105
+ .sd-selectable-card--size-small .sd-selectable-card-value {
106
+ font-size: 16px;
107
+ }
108
+ .sd-selectable-card--size-medium {
109
+ padding: 16px;
110
+ }
111
+ .sd-selectable-card--size-medium .sd-selectable-card-body, .sd-selectable-card--size-medium .sd-selectable-card-content {
112
+ gap: 12px;
113
+ }
114
+ .sd-selectable-card--size-medium .sd-selectable-card-value {
115
+ font-size: 20px;
116
+ }
117
+ .sd-selectable-card--size-large {
118
+ padding: 24px;
119
+ }
120
+ .sd-selectable-card--size-large .sd-selectable-card-body, .sd-selectable-card--size-large .sd-selectable-card-content {
121
+ gap: 20px;
122
+ }
123
+ .sd-selectable-card--size-large .sd-selectable-card-value {
124
+ font-size: 24px;
125
+ }
126
+ .sd-selectable-card--color-red {
127
+ --sd-selectable-card-accent: rgb(var(--sd-red-6));
128
+ --sd-selectable-card-soft-bg: rgb(var(--sd-red-1));
129
+ --sd-selectable-card-border: rgb(var(--sd-red-6));
130
+ }
131
+ .sd-selectable-card--color-orangered {
132
+ --sd-selectable-card-accent: rgb(var(--sd-orangered-6));
133
+ --sd-selectable-card-soft-bg: rgb(var(--sd-orangered-1));
134
+ --sd-selectable-card-border: rgb(var(--sd-orangered-6));
135
+ }
136
+ .sd-selectable-card--color-orange {
137
+ --sd-selectable-card-accent: rgb(var(--sd-orange-6));
138
+ --sd-selectable-card-soft-bg: rgb(var(--sd-orange-1));
139
+ --sd-selectable-card-border: rgb(var(--sd-orange-6));
140
+ }
141
+ .sd-selectable-card--color-gold {
142
+ --sd-selectable-card-accent: rgb(var(--sd-gold-6));
143
+ --sd-selectable-card-soft-bg: rgb(var(--sd-gold-1));
144
+ --sd-selectable-card-border: rgb(var(--sd-gold-6));
145
+ }
146
+ .sd-selectable-card--color-lime {
147
+ --sd-selectable-card-accent: rgb(var(--sd-lime-6));
148
+ --sd-selectable-card-soft-bg: rgb(var(--sd-lime-1));
149
+ --sd-selectable-card-border: rgb(var(--sd-lime-6));
150
+ }
151
+ .sd-selectable-card--color-green {
152
+ --sd-selectable-card-accent: rgb(var(--sd-green-6));
153
+ --sd-selectable-card-soft-bg: rgb(var(--sd-green-1));
154
+ --sd-selectable-card-border: rgb(var(--sd-green-6));
155
+ }
156
+ .sd-selectable-card--color-cyan {
157
+ --sd-selectable-card-accent: rgb(var(--sd-cyan-6));
158
+ --sd-selectable-card-soft-bg: rgb(var(--sd-cyan-1));
159
+ --sd-selectable-card-border: rgb(var(--sd-cyan-6));
160
+ }
161
+ .sd-selectable-card--color-blue {
162
+ --sd-selectable-card-accent: rgb(var(--sd-blue-6));
163
+ --sd-selectable-card-soft-bg: rgb(var(--sd-blue-1));
164
+ --sd-selectable-card-border: rgb(var(--sd-blue-6));
165
+ }
166
+ .sd-selectable-card--color-sdblue {
167
+ --sd-selectable-card-accent: rgb(var(--sd-sdblue-6));
168
+ --sd-selectable-card-soft-bg: rgb(var(--sd-sdblue-1));
169
+ --sd-selectable-card-border: rgb(var(--sd-sdblue-6));
170
+ }
171
+ .sd-selectable-card--color-purple {
172
+ --sd-selectable-card-accent: rgb(var(--sd-purple-6));
173
+ --sd-selectable-card-soft-bg: rgb(var(--sd-purple-1));
174
+ --sd-selectable-card-border: rgb(var(--sd-purple-6));
175
+ }
176
+ .sd-selectable-card--color-pinkpurple {
177
+ --sd-selectable-card-accent: rgb(var(--sd-pinkpurple-6));
178
+ --sd-selectable-card-soft-bg: rgb(var(--sd-pinkpurple-1));
179
+ --sd-selectable-card-border: rgb(var(--sd-pinkpurple-6));
180
+ }
181
+ .sd-selectable-card--color-magenta {
182
+ --sd-selectable-card-accent: rgb(var(--sd-magenta-6));
183
+ --sd-selectable-card-soft-bg: rgb(var(--sd-magenta-1));
184
+ --sd-selectable-card-border: rgb(var(--sd-magenta-6));
185
+ }
186
+ .sd-selectable-card--color-gray {
187
+ --sd-selectable-card-accent: rgb(var(--sd-gray-6));
188
+ --sd-selectable-card-soft-bg: rgb(var(--sd-gray-2));
189
+ --sd-selectable-card-border: rgb(var(--sd-gray-6));
190
+ }
191
+ .sd-selectable-card--selected {
192
+ border-color: var(--sd-selectable-card-border);
193
+ box-shadow: inset 0 0 0 2px var(--sd-selectable-card-border);
194
+ }
195
+ .sd-selectable-card--selected.sd-selectable-card--soft {
196
+ color: var(--sd-selectable-card-accent);
197
+ background: var(--sd-selectable-card-soft-bg);
198
+ }
199
+ .sd-selectable-card--selected.sd-selectable-card--filled {
200
+ color: #fff;
201
+ background: var(--sd-selectable-card-border);
202
+ }
203
+ .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 {
204
+ color: inherit;
205
+ }
206
+ .sd-selectable-card--disabled {
207
+ cursor: not-allowed;
208
+ opacity: 0.5;
209
+ }
210
+ .sd-selectable-card-input {
211
+ position: absolute;
212
+ width: 1px;
213
+ height: 1px;
214
+ margin: -1px;
215
+ padding: 0;
216
+ overflow: hidden;
217
+ white-space: nowrap;
218
+ border: 0;
219
+ clip-path: inset(50%);
220
+ }
@@ -0,0 +1,2 @@
1
+ import '../../style/index.scss';
2
+ import './index.scss';
@@ -0,0 +1,2 @@
1
+ import "../../style/index.scss";
2
+ import "./index.scss";
@@ -0,0 +1,202 @@
1
+ @use '@style/theme/index.scss' as theme;
2
+ @use 'sass:map';
3
+ @use 'sass:meta';
4
+ @use 'sass:string';
5
+ @use '@components/selectable-card/style/token.scss' as *;
6
+ @use '@components/tag/style/token.scss' as tag-token;
7
+
8
+ $selectable-card-prefix-cls: string.unquote('#{theme.$prefix}-selectable-card');
9
+ $colors:
10
+ 'red', 'orangered', 'orange', 'gold', 'lime', 'green', 'cyan', 'blue', 'sdblue', 'purple',
11
+ 'pinkpurple', 'magenta', 'gray';
12
+
13
+ @function tag-token-var($name) {
14
+ @return map.get(meta.module-variables('tag-token'), $name);
15
+ }
16
+
17
+ .#{$selectable-card-prefix-cls} {
18
+ position: relative;
19
+ box-sizing: border-box;
20
+ color: $selectable-card-color-value;
21
+ background: $selectable-card-color-bg;
22
+ border: $selectable-card-border-width solid $selectable-card-color-border;
23
+ border-radius: $selectable-card-border-radius;
24
+ cursor: pointer;
25
+ transition:
26
+ color theme.$transition-duration-2 theme.$transition-timing-function-linear,
27
+ background-color theme.$transition-duration-2 theme.$transition-timing-function-linear,
28
+ border-color theme.$transition-duration-2 theme.$transition-timing-function-linear,
29
+ box-shadow theme.$transition-duration-2 theme.$transition-timing-function-linear;
30
+
31
+ &::after {
32
+ position: absolute;
33
+ background: transparent;
34
+ border-radius: inherit;
35
+ transition: background theme.$transition-duration-2 theme.$transition-timing-function-linear;
36
+ content: '';
37
+ pointer-events: none;
38
+ inset: 0;
39
+ }
40
+
41
+ @media (hover: hover) {
42
+ &:not(&--disabled):hover::after {
43
+ background: $selectable-card-overlay-hover;
44
+ }
45
+ }
46
+
47
+ &:not(&--disabled):active::after {
48
+ background: $selectable-card-overlay-active;
49
+ }
50
+
51
+ &:has(&-input:focus-visible) {
52
+ outline: 2px solid $selectable-card-color-focus;
53
+ outline-offset: 2px;
54
+ }
55
+
56
+ &-body {
57
+ display: flex;
58
+ min-width: 0;
59
+ }
60
+
61
+ &-content {
62
+ display: flex;
63
+ flex: 1;
64
+ flex-direction: column;
65
+ min-width: 0;
66
+ }
67
+
68
+ &-figure {
69
+ display: flex;
70
+ flex: none;
71
+ align-items: center;
72
+ justify-content: center;
73
+ color: var(--sd-selectable-card-accent);
74
+ font-size: 2em;
75
+ }
76
+
77
+ &-title {
78
+ color: $selectable-card-color-title;
79
+ font-size: theme.$font-size-body-3;
80
+ }
81
+
82
+ &-value {
83
+ color: $selectable-card-color-value;
84
+ font-weight: theme.$font-weight-600;
85
+ line-height: 1.25;
86
+ }
87
+
88
+ &-description,
89
+ &-default {
90
+ color: $selectable-card-color-description;
91
+ font-size: theme.$font-size-body-2;
92
+ line-height: theme.$line-height-base;
93
+ }
94
+
95
+ &-actions {
96
+ position: relative;
97
+ z-index: 1;
98
+ display: flex;
99
+ flex-wrap: wrap;
100
+ gap: theme.$spacing-4;
101
+ }
102
+
103
+ &--layout-horizontal &-body {
104
+ flex-direction: row;
105
+ align-items: center;
106
+ }
107
+
108
+ &--layout-vertical &-body {
109
+ flex-direction: column;
110
+ }
111
+
112
+ &--align-center &-body,
113
+ &--align-center &-content {
114
+ align-items: center;
115
+ text-align: center;
116
+ }
117
+
118
+ @each $size, $padding, $gap,
119
+ $value-size
120
+ in (
121
+ (
122
+ small,
123
+ $selectable-card-size-small-padding,
124
+ $selectable-card-size-small-gap,
125
+ $selectable-card-size-small-value
126
+ ),
127
+ (
128
+ medium,
129
+ $selectable-card-size-medium-padding,
130
+ $selectable-card-size-medium-gap,
131
+ $selectable-card-size-medium-value
132
+ ),
133
+ (
134
+ large,
135
+ $selectable-card-size-large-padding,
136
+ $selectable-card-size-large-gap,
137
+ $selectable-card-size-large-value
138
+ )
139
+ )
140
+ {
141
+ &--size-#{$size} {
142
+ padding: $padding;
143
+ }
144
+
145
+ &--size-#{$size} &-body,
146
+ &--size-#{$size} &-content {
147
+ gap: $gap;
148
+ }
149
+
150
+ &--size-#{$size} &-value {
151
+ font-size: $value-size;
152
+ }
153
+ }
154
+
155
+ @each $color in $colors {
156
+ &--color-#{$color} {
157
+ --sd-selectable-card-accent: #{tag-token-var('tag-#{$color}-color-text')};
158
+ --sd-selectable-card-soft-bg: #{tag-token-var('tag-#{$color}-color-bg')};
159
+ --sd-selectable-card-border: #{tag-token-var('tag-#{$color}-bordered-color-border')};
160
+ }
161
+ }
162
+
163
+ &--selected {
164
+ border-color: var(--sd-selectable-card-border);
165
+ box-shadow: inset 0 0 0 2px var(--sd-selectable-card-border);
166
+ }
167
+
168
+ &--selected#{&}--soft {
169
+ color: var(--sd-selectable-card-accent);
170
+ background: var(--sd-selectable-card-soft-bg);
171
+ }
172
+
173
+ &--selected#{&}--filled {
174
+ color: #fff;
175
+ background: var(--sd-selectable-card-border);
176
+ }
177
+
178
+ &--selected#{&}--filled &-title,
179
+ &--selected#{&}--filled &-value,
180
+ &--selected#{&}--filled &-description,
181
+ &--selected#{&}--filled &-default,
182
+ &--selected#{&}--filled &-figure {
183
+ color: inherit;
184
+ }
185
+
186
+ &--disabled {
187
+ cursor: not-allowed;
188
+ opacity: $selectable-card-disabled-opacity;
189
+ }
190
+
191
+ &-input {
192
+ position: absolute;
193
+ width: 1px;
194
+ height: 1px;
195
+ margin: -1px;
196
+ padding: 0;
197
+ overflow: hidden;
198
+ white-space: nowrap;
199
+ border: 0;
200
+ clip-path: inset(50%);
201
+ }
202
+ }
@@ -0,0 +1,27 @@
1
+ @use '@style/theme/index.scss' as global;
2
+ @use 'sass:string';
3
+
4
+ @forward '@style/theme/index.scss';
5
+
6
+ $selectable-card-color-bg: var(string.unquote('#{global.$sd-cssvars-prefix}-color-bg-2'));
7
+ $selectable-card-color-border: var(string.unquote('#{global.$sd-cssvars-prefix}-color-neutral-3'));
8
+ $selectable-card-color-title: var(string.unquote('#{global.$sd-cssvars-prefix}-color-text-2'));
9
+ $selectable-card-color-value: var(string.unquote('#{global.$sd-cssvars-prefix}-color-text-1'));
10
+ $selectable-card-color-description: var(
11
+ string.unquote('#{global.$sd-cssvars-prefix}-color-text-3')
12
+ );
13
+ $selectable-card-color-focus: global.$color-primary-6;
14
+ $selectable-card-border-width: global.$border-1;
15
+ $selectable-card-border-radius: global.$radius-large;
16
+ $selectable-card-disabled-opacity: 0.5;
17
+ $selectable-card-overlay-hover: rgb(0 0 0 / 5%);
18
+ $selectable-card-overlay-active: rgb(0 0 0 / 10%);
19
+ $selectable-card-size-small-padding: global.$spacing-6;
20
+ $selectable-card-size-medium-padding: global.$spacing-7;
21
+ $selectable-card-size-large-padding: global.$spacing-9;
22
+ $selectable-card-size-small-gap: global.$spacing-4;
23
+ $selectable-card-size-medium-gap: global.$spacing-6;
24
+ $selectable-card-size-large-gap: global.$spacing-8;
25
+ $selectable-card-size-small-value: global.$font-size-title-1;
26
+ $selectable-card-size-medium-value: global.$font-size-title-2;
27
+ $selectable-card-size-large-value: global.$font-size-title-3;
@@ -0,0 +1,7 @@
1
+ import type { TagColor } from '../tag';
2
+ export type SelectableCardColor = TagColor;
3
+ export type SelectableCardVariant = 'outline' | 'soft' | 'filled';
4
+ export type SelectableCardSize = 'small' | 'medium' | 'large';
5
+ export type SelectableCardLayout = 'vertical' | 'horizontal';
6
+ export type SelectableCardAlign = 'start' | 'center';
7
+ export type SelectableCardSizeValue = number | string;
@@ -64,15 +64,19 @@ var base_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
64
64
  const action = (_treeContext$treeProp = treeContext.treeProps) === null || _treeContext$treeProp === void 0 ? void 0 : _treeContext$treeProp.actionOnNodeClick;
65
65
  return action ? toArray(action) : [];
66
66
  });
67
+ const showSwitcher = computed(() => {
68
+ var _treeContext$treeProp2;
69
+ return ((_treeContext$treeProp2 = treeContext.treeProps) === null || _treeContext$treeProp2 === void 0 ? void 0 : _treeContext$treeProp2.switcher) !== false;
70
+ });
67
71
  const { isLeaf, isTail, selectable, disabled, disableCheckbox, draggable } = toRefs(props);
68
72
  const classNames = computed(() => {
69
- var _treeContext$treeProp2;
73
+ var _treeContext$treeProp3;
70
74
  return [`${prefixCls}`, {
71
75
  [`${prefixCls}-selected`]: selected.value,
72
76
  [`${prefixCls}-is-leaf`]: isLeaf.value,
73
77
  [`${prefixCls}-is-tail`]: isTail.value,
74
78
  [`${prefixCls}-expanded`]: expanded.value,
75
- [`${prefixCls}-disabled-selectable`]: !selectable.value && !((_treeContext$treeProp2 = treeContext.treeProps) === null || _treeContext$treeProp2 === void 0 ? void 0 : _treeContext$treeProp2.disableSelectActionOnly),
79
+ [`${prefixCls}-disabled-selectable`]: !selectable.value && !((_treeContext$treeProp3 = treeContext.treeProps) === null || _treeContext$treeProp3 === void 0 ? void 0 : _treeContext$treeProp3.disableSelectActionOnly),
76
80
  [`${prefixCls}-disabled`]: disabled.value
77
81
  }];
78
82
  });
@@ -131,12 +135,12 @@ var base_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
131
135
  const treeDragIcon = computed(() => treeContext.dragIcon);
132
136
  const treeNodeIcon = computed(() => treeContext.nodeIcon);
133
137
  const shouldRenderEllipsis = computed(() => {
134
- var _treeContext$treeProp3, _treeContext$treeProp4, _treeContext$treeProp5;
135
- return !treeContext.nodeTitle && !slots.title && (((_treeContext$treeProp3 = treeContext.treeProps) === null || _treeContext$treeProp3 === void 0 ? void 0 : _treeContext$treeProp3.ellipsis) === true || ((_treeContext$treeProp4 = treeContext.treeProps) === null || _treeContext$treeProp4 === void 0 ? void 0 : _treeContext$treeProp4.ellipsis) === "performant-ellipsis" || Boolean((_treeContext$treeProp5 = treeContext.treeProps) === null || _treeContext$treeProp5 === void 0 ? void 0 : _treeContext$treeProp5.virtualListProps));
138
+ var _treeContext$treeProp4, _treeContext$treeProp5, _treeContext$treeProp6;
139
+ return !treeContext.nodeTitle && !slots.title && (((_treeContext$treeProp4 = treeContext.treeProps) === null || _treeContext$treeProp4 === void 0 ? void 0 : _treeContext$treeProp4.ellipsis) === true || ((_treeContext$treeProp5 = treeContext.treeProps) === null || _treeContext$treeProp5 === void 0 ? void 0 : _treeContext$treeProp5.ellipsis) === "performant-ellipsis" || Boolean((_treeContext$treeProp6 = treeContext.treeProps) === null || _treeContext$treeProp6 === void 0 ? void 0 : _treeContext$treeProp6.virtualListProps));
136
140
  });
137
141
  const ellipsisComponent = computed(() => {
138
- var _treeContext$treeProp6, _treeContext$treeProp7;
139
- return ((_treeContext$treeProp6 = treeContext.treeProps) === null || _treeContext$treeProp6 === void 0 ? void 0 : _treeContext$treeProp6.ellipsis) === true && !((_treeContext$treeProp7 = treeContext.treeProps) === null || _treeContext$treeProp7 === void 0 ? void 0 : _treeContext$treeProp7.virtualListProps) ? Ellipsis : PerformantEllipsis;
142
+ var _treeContext$treeProp7, _treeContext$treeProp8;
143
+ return ((_treeContext$treeProp7 = treeContext.treeProps) === null || _treeContext$treeProp7 === void 0 ? void 0 : _treeContext$treeProp7.ellipsis) === true && !((_treeContext$treeProp8 = treeContext.treeProps) === null || _treeContext$treeProp8 === void 0 ? void 0 : _treeContext$treeProp8.virtualListProps) ? Ellipsis : PerformantEllipsis;
140
144
  });
141
145
  const titleTextClassNames = computed(() => [`${prefixCls}-title-text`, { [`${prefixCls}-title-text-ellipsis`]: shouldRenderEllipsis.value }]);
142
146
  function onSwitcherClick(e) {
@@ -233,7 +237,10 @@ var base_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
233
237
  class: normalizeClass([`${unref(prefixCls)}-indent-block`, { [`${unref(prefixCls)}-indent-block-lineless`]: __props.lineless[i - 1] }])
234
238
  }, null, 2);
235
239
  }), 128))], 2),
236
- createElementVNode("span", { class: normalizeClass([`${unref(prefixCls)}-switcher`, { [`${unref(prefixCls)}-switcher-expanded`]: expanded.value }]) }, [createVNode(node_switcher_default, {
240
+ showSwitcher.value ? (openBlock(), createElementBlock("span", {
241
+ key: 0,
242
+ class: normalizeClass([`${unref(prefixCls)}-switcher`, { [`${unref(prefixCls)}-switcher-expanded`]: expanded.value }])
243
+ }, [createVNode(node_switcher_default, {
237
244
  "prefix-cls": unref(prefixCls),
238
245
  loading: loading.value,
239
246
  "show-line": __props.showLine,
@@ -259,9 +266,9 @@ var base_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
259
266
  "tree-node-data",
260
267
  "icons",
261
268
  "node-status"
262
- ])], 2),
269
+ ])], 2)) : createCommentVNode("", true),
263
270
  __props.checkable ? (openBlock(), createBlock(unref(Checkbox), {
264
- key: 0,
271
+ key: 1,
265
272
  disabled: unref(disableCheckbox) || unref(disabled),
266
273
  "model-value": checked.value,
267
274
  indeterminate: indeterminate.value,
@@ -329,7 +336,7 @@ var base_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
329
336
  key: 2,
330
337
  node: treeNodeData.value
331
338
  }, nodeStatus), null, 16, ["node"])) : (openBlock(), createBlock(unref(IconDragDotVertical), { key: 3 }))], 2)) : createCommentVNode("", true)], 2)], 42, _hoisted_2),
332
- extra.value ? (openBlock(), createBlock(resolveDynamicComponent(extra.value), { key: 1 })) : createCommentVNode("", true)
339
+ extra.value ? (openBlock(), createBlock(resolveDynamicComponent(extra.value), { key: 2 })) : createCommentVNode("", true)
333
340
  ], 10, _hoisted_1);
334
341
  };
335
342
  }
@@ -71,6 +71,7 @@ export type CheckableType = boolean | ((node: TreeNodeData, info: {
71
71
  export interface TreeProps {
72
72
  size: Size;
73
73
  blockNode: boolean;
74
+ switcher: boolean;
74
75
  defaultExpandAll: boolean;
75
76
  multiple: boolean;
76
77
  checkable: CheckableType;
@@ -24,6 +24,10 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
24
24
  blockNode: {
25
25
  type: BooleanConstructor;
26
26
  };
27
+ switcher: {
28
+ type: BooleanConstructor;
29
+ default: boolean;
30
+ };
27
31
  defaultExpandAll: {
28
32
  type: BooleanConstructor;
29
33
  default: boolean;
@@ -219,6 +223,10 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
219
223
  blockNode: {
220
224
  type: BooleanConstructor;
221
225
  };
226
+ switcher: {
227
+ type: BooleanConstructor;
228
+ default: boolean;
229
+ };
222
230
  defaultExpandAll: {
223
231
  type: BooleanConstructor;
224
232
  default: boolean;
@@ -413,6 +421,7 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
413
421
  showLine: boolean;
414
422
  searchValue: string;
415
423
  onlyCheckLeaf: boolean;
424
+ switcher: boolean;
416
425
  defaultExpandAll: boolean;
417
426
  checkedStrategy: "parent" | "all" | "child";
418
427
  defaultExpandSelected: boolean;
@@ -30,6 +30,14 @@ var tree_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
30
30
  */
31
31
  blockNode: { type: Boolean },
32
32
  /**
33
+ * @zh 是否显示节点的展开/收起 switcher,设为 `false` 时不渲染 `switcher` 节点
34
+ * @en Whether to display the expand/collapse switcher of the node. When set to `false`, the switcher node will not be rendered
35
+ */
36
+ switcher: {
37
+ type: Boolean,
38
+ default: true
39
+ },
40
+ /**
33
41
  * @zh 是否默认展开父节点
34
42
  * @en Whether to expand the parent node by default
35
43
  */
@@ -4083,6 +4083,10 @@
4083
4083
  "description": "Whether the node occupies a row",
4084
4084
  "type": "boolean"
4085
4085
  },
4086
+ "sd-tree/switcher": {
4087
+ "description": "Whether to display the expand/collapse switcher of the node. When set to `false`, the switcher node will not be rendered",
4088
+ "type": "boolean"
4089
+ },
4086
4090
  "sd-tree/default-expand-all": {
4087
4091
  "description": "Whether to expand the parent node by default",
4088
4092
  "type": "boolean"
@@ -1136,6 +1136,9 @@
1136
1136
  "sd-select": {
1137
1137
  "attributes": []
1138
1138
  },
1139
+ "sd-selectable-card": {
1140
+ "attributes": []
1141
+ },
1139
1142
  "sd-line": {
1140
1143
  "attributes": [
1141
1144
  "rows",
@@ -1639,6 +1642,7 @@
1639
1642
  "node-swipe-start",
1640
1643
  "size",
1641
1644
  "block-node",
1645
+ "switcher",
1642
1646
  "default-expand-all",
1643
1647
  "multiple",
1644
1648
  "checkable",
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "framework": "vue",
4
4
  "name": "@sdata/web-vue",
5
- "version": "3.8.0",
5
+ "version": "3.10.0",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -6740,6 +6740,12 @@
6740
6740
  "events": [],
6741
6741
  "slots": []
6742
6742
  },
6743
+ {
6744
+ "name": "sd-selectable-card",
6745
+ "attributes": [],
6746
+ "events": [],
6747
+ "slots": []
6748
+ },
6743
6749
  {
6744
6750
  "name": "sd-line",
6745
6751
  "attributes": [
@@ -9794,6 +9800,14 @@
9794
9800
  "kind": "expression"
9795
9801
  }
9796
9802
  },
9803
+ {
9804
+ "name": "switcher",
9805
+ "description": "Whether to display the expand/collapse switcher of the node. When set to `false`, the switcher node will not be rendered",
9806
+ "value": {
9807
+ "type": "boolean",
9808
+ "kind": "expression"
9809
+ }
9810
+ },
9797
9811
  {
9798
9812
  "name": "default-expand-all",
9799
9813
  "description": "Whether to expand the parent node by default",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdata/web-vue",
3
- "version": "3.9.0",
3
+ "version": "3.11.0",
4
4
  "description": "SD Design Vue: A Vue.js 3 UI Library",
5
5
  "keywords": [
6
6
  "sd",
@@ -64,6 +64,7 @@
64
64
  "motion-v": "^2.3.0",
65
65
  "number-precision": "^1.6.0",
66
66
  "overlayscrollbars": "^2.16.0",
67
+ "pdfjs-dist": "^6.1.200",
67
68
  "qrcode": "^1.5.4",
68
69
  "resize-observer-polyfill": "^1.5.1",
69
70
  "scroll-into-view-if-needed": "^3.1.0",
@@ -124,6 +125,7 @@
124
125
  "dtsgen": "pnpm run build:dts",
125
126
  "pretypecheck": "pnpm run icongen",
126
127
  "typecheck": "vue-tsc --noEmit -p tsconfig.json",
128
+ "pretest": "pnpm run icongen",
127
129
  "test": "cypress run --component --browser chrome",
128
130
  "test:affected": "node ./scripts/find-affected-cypress-specs.mjs",
129
131
  "test:affected:unit": "node --test ./scripts/find-affected-cypress-specs.test.mjs",