@sdata/web-vue 3.2.1 → 3.3.1

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 (70) hide show
  1. package/README.md +2 -2
  2. package/dist/sd.css +91 -17
  3. package/dist/sd.min.css +1 -1
  4. package/es/_components/select-view/style/index.css +5 -6
  5. package/es/_components/virtual-list-v2/hooks/use-size.d.ts +17 -0
  6. package/es/_components/virtual-list-v2/hooks/use-size.js +95 -0
  7. package/es/_components/virtual-list-v2/index.d.ts +2 -0
  8. package/es/_components/virtual-list-v2/index.js +5 -0
  9. package/es/_components/virtual-list-v2/interface.d.ts +44 -0
  10. package/es/_components/virtual-list-v2/virtual-list-item.d.ts +22 -0
  11. package/es/_components/virtual-list-v2/virtual-list-item.js +37 -0
  12. package/es/_components/virtual-list-v2/virtual-list.js +47 -0
  13. package/es/_components/virtual-list-v2/virtual-list.vue.d.ts +749 -0
  14. package/es/_components/virtual-list-v2/virtual-list.vue_vue_type_script_lang.js +179 -0
  15. package/es/_hooks/use-config-provider-prop.d.ts +1 -1
  16. package/es/_virtual/_plugin-vue_export-helper.js +8 -0
  17. package/es/color-picker/hooks/use-control-block.js +4 -1
  18. package/es/components.d.ts +1 -0
  19. package/es/config-provider/config-provider.vue.d.ts +7 -1
  20. package/es/config-provider/config-provider.vue_vue_type_script_setup_true_lang.js +7 -1
  21. package/es/config-provider/context.d.ts +14 -0
  22. package/es/config-provider/index.d.ts +9 -0
  23. package/es/index.css +91 -17
  24. package/es/index.d.ts +2 -0
  25. package/es/index.js +2 -1
  26. package/es/index.scss +1 -0
  27. package/es/input-tag/style/index.css +5 -6
  28. package/es/input-tag/style/input-tag.scss +30 -10
  29. package/es/message/message.vue_vue_type_script_setup_true_lang.js +1 -1
  30. package/es/pagination/pagination.js +101 -19
  31. package/es/sd-vue.js +2 -0
  32. package/es/table/context.d.ts +1 -1
  33. package/es/table/hooks/use-column-resize.d.ts +3 -2
  34. package/es/table/hooks/use-column-resize.js +21 -48
  35. package/es/table/hooks/use-drag.d.ts +1 -3
  36. package/es/table/hooks/use-drag.js +2 -18
  37. package/es/table/index.d.ts +21 -36
  38. package/es/table/style/index.css +12 -5
  39. package/es/table/style/index.scss +16 -6
  40. package/es/table/table-operation-td.js +15 -12
  41. package/es/table/table-operation-th.js +2 -2
  42. package/es/table/table-tbody.js +3 -1
  43. package/es/table/table-td.js +3 -4
  44. package/es/table/table-th.js +24 -40
  45. package/es/table/table-thead.js +3 -1
  46. package/es/table/table.d.ts +13 -19
  47. package/es/table/table.js +205 -424
  48. package/es/table/utils.d.ts +2 -0
  49. package/es/table/utils.js +11 -1
  50. package/es/tag/index.d.ts +3 -3
  51. package/es/tag/tag.vue.d.ts +2 -2
  52. package/es/tag/tag.vue_vue_type_script_setup_true_lang.js +16 -5
  53. package/es/toolbar/index.d.ts +72 -0
  54. package/es/toolbar/index.js +10 -0
  55. package/es/toolbar/style/css.js +2 -0
  56. package/es/toolbar/style/index.css +85 -0
  57. package/es/toolbar/style/index.d.ts +2 -0
  58. package/es/toolbar/style/index.js +2 -0
  59. package/es/toolbar/style/index.scss +97 -0
  60. package/es/toolbar/style/token.scss +25 -0
  61. package/es/toolbar/toolbar.js +5 -0
  62. package/es/toolbar/toolbar.vue.d.ts +44 -0
  63. package/es/toolbar/toolbar.vue_vue_type_script_setup_true_lang.js +197 -0
  64. package/es/toolbar/types.d.ts +26 -0
  65. package/es/trigger/trigger.js +5 -1
  66. package/json/vetur-attributes.json +76 -1
  67. package/json/vetur-tags.json +24 -0
  68. package/json/web-types.json +163 -7
  69. package/package.json +1 -1
  70. package/es/table/table-col-group.vue.d.ts +0 -29
@@ -0,0 +1,179 @@
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 { isNumber, isObject } from "../../_utils/is.js";
4
+ import Scrollbar from "../../scrollbar/index.js";
5
+ import { _objectWithoutProperties } from "../../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/objectWithoutProperties.js";
6
+ import { useSize } from "./hooks/use-size.js";
7
+ import virtual_list_item_default from "./virtual-list-item.js";
8
+ import { computed, defineComponent, nextTick, ref, toRefs } from "vue";
9
+ //#region components/_components/virtual-list-v2/virtual-list.vue?vue&type=script&lang.ts
10
+ var _excluded = ["outerStyle"];
11
+ var virtual_list_vue_vue_type_script_lang_default = defineComponent({
12
+ name: "VirtualList",
13
+ components: {
14
+ Scrollbar,
15
+ VirtualListItem: virtual_list_item_default
16
+ },
17
+ props: {
18
+ height: {
19
+ type: [Number, String],
20
+ default: 200
21
+ },
22
+ data: {
23
+ type: Array,
24
+ default: () => []
25
+ },
26
+ threshold: {
27
+ type: Number,
28
+ default: 0
29
+ },
30
+ itemKey: {
31
+ type: String,
32
+ default: "key"
33
+ },
34
+ fixedSize: {
35
+ type: Boolean,
36
+ default: false
37
+ },
38
+ estimatedSize: {
39
+ type: Number,
40
+ default: 30
41
+ },
42
+ buffer: {
43
+ type: Number,
44
+ default: 10
45
+ },
46
+ component: {
47
+ type: [String, Object],
48
+ default: "div"
49
+ },
50
+ listAttrs: { type: Object },
51
+ contentAttrs: { type: Object },
52
+ paddingPosition: {
53
+ type: String,
54
+ default: "content"
55
+ },
56
+ scrollbar: {
57
+ type: [Boolean, Object],
58
+ default: false
59
+ }
60
+ },
61
+ emits: {
62
+ scroll: (ev) => true,
63
+ reachBottom: (ev) => true
64
+ },
65
+ setup(props, { emit }) {
66
+ const { data, itemKey, fixedSize, estimatedSize, buffer, height } = toRefs(props);
67
+ const prefixCls = getPrefixCls("virtual-list");
68
+ const mergedComponent = computed(() => {
69
+ if (isObject(props.component)) return _objectSpread2({
70
+ container: "div",
71
+ list: "div",
72
+ content: "div"
73
+ }, props.component);
74
+ return {
75
+ container: props.component,
76
+ list: "div",
77
+ content: "div"
78
+ };
79
+ });
80
+ const containerRef = ref();
81
+ const contentRef = ref();
82
+ const scrollbarEnabled = computed(() => props.scrollbar !== false);
83
+ const scrollbarProps = computed(() => isObject(props.scrollbar) ? props.scrollbar : {});
84
+ const containerComponent = computed(() => scrollbarEnabled.value ? Scrollbar : mergedComponent.value.container);
85
+ const style = computed(() => {
86
+ return {
87
+ height: isNumber(height.value) ? `${height.value}px` : height.value,
88
+ overflow: scrollbarEnabled.value ? "hidden" : "auto"
89
+ };
90
+ });
91
+ const containerProps = computed(() => {
92
+ if (!scrollbarEnabled.value) return {};
93
+ const _scrollbarProps$value = scrollbarProps.value, { outerStyle } = _scrollbarProps$value, rest = _objectWithoutProperties(_scrollbarProps$value, _excluded);
94
+ const heightStyle = { height: style.value.height };
95
+ return _objectSpread2(_objectSpread2({}, rest), {}, { outerStyle: Array.isArray(outerStyle) ? [heightStyle, ...outerStyle] : outerStyle ? [heightStyle, outerStyle] : heightStyle });
96
+ });
97
+ const getScrollElement = () => {
98
+ var _value$elements, _ref, _elements$scrollOffse;
99
+ const value = containerRef.value;
100
+ if (!value) return;
101
+ if (typeof value.scrollTop === "number") return value;
102
+ const elements = (_value$elements = value.elements) === null || _value$elements === void 0 ? void 0 : _value$elements.call(value);
103
+ return (_ref = (_elements$scrollOffse = elements === null || elements === void 0 ? void 0 : elements.scrollOffsetElement) !== null && _elements$scrollOffse !== void 0 ? _elements$scrollOffse : elements === null || elements === void 0 ? void 0 : elements.viewport) !== null && _ref !== void 0 ? _ref : value.$el;
104
+ };
105
+ const setContainerScrollTop = (top) => {
106
+ const value = containerRef.value;
107
+ if (value && typeof value.scrollTop === "function") {
108
+ value.scrollTop(top);
109
+ return;
110
+ }
111
+ const element = getScrollElement();
112
+ if (element) element.scrollTop = top;
113
+ };
114
+ const getContainerScrollTop = () => {
115
+ var _getScrollElement$scr, _getScrollElement;
116
+ return (_getScrollElement$scr = (_getScrollElement = getScrollElement()) === null || _getScrollElement === void 0 ? void 0 : _getScrollElement.scrollTop) !== null && _getScrollElement$scr !== void 0 ? _getScrollElement$scr : 0;
117
+ };
118
+ const dataKeys = computed(() => data.value.map((item, index) => {
119
+ var _item$itemKey$value;
120
+ return (_item$itemKey$value = item[itemKey.value]) !== null && _item$itemKey$value !== void 0 ? _item$itemKey$value : index;
121
+ }));
122
+ const { frontPadding, behindPadding, start, end, getStartByScroll, setItemSize, hasItemSize, setStart, getScrollOffset } = useSize({
123
+ dataKeys,
124
+ fixedSize,
125
+ estimatedSize,
126
+ buffer
127
+ });
128
+ const currentList = computed(() => {
129
+ if (props.threshold && data.value.length <= props.threshold) return data.value;
130
+ return data.value.slice(start.value, end.value);
131
+ });
132
+ const onScroll = (ev) => {
133
+ const { scrollTop, scrollHeight, offsetHeight } = ev.target;
134
+ const _start = getStartByScroll(scrollTop);
135
+ if (_start !== start.value) {
136
+ setStart(_start);
137
+ nextTick(() => {
138
+ scrollTo(scrollTop);
139
+ });
140
+ }
141
+ emit("scroll", ev);
142
+ if (Math.floor(scrollHeight - (scrollTop + offsetHeight)) <= 0) emit("reachBottom", ev);
143
+ };
144
+ const scrollTo = (options) => {
145
+ var _options$index, _options$key;
146
+ if (!containerRef.value) return;
147
+ if (isNumber(options)) {
148
+ setContainerScrollTop(options);
149
+ return;
150
+ }
151
+ const _index = (_options$index = options.index) !== null && _options$index !== void 0 ? _options$index : dataKeys.value.indexOf((_options$key = options.key) !== null && _options$key !== void 0 ? _options$key : "");
152
+ setStart(_index - buffer.value);
153
+ setContainerScrollTop(getScrollOffset(_index));
154
+ nextTick(() => {
155
+ const _scrollTop = getScrollOffset(_index);
156
+ if (_scrollTop !== getContainerScrollTop()) setContainerScrollTop(_scrollTop);
157
+ });
158
+ };
159
+ return {
160
+ prefixCls,
161
+ containerRef,
162
+ contentRef,
163
+ frontPadding,
164
+ currentList,
165
+ behindPadding,
166
+ onScroll,
167
+ setItemSize,
168
+ hasItemSize,
169
+ start,
170
+ scrollTo,
171
+ style,
172
+ containerProps,
173
+ containerComponent,
174
+ mergedComponent
175
+ };
176
+ }
177
+ });
178
+ //#endregion
179
+ export { virtual_list_vue_vue_type_script_lang_default as default };
@@ -4,7 +4,7 @@ interface UseConfigProviderPropOptions<T> {
4
4
  propNames: readonly string[];
5
5
  getGlobalValue: (configProviderCtx: ConfigProvider | undefined) => T | undefined;
6
6
  }
7
- export declare const useConfigProviderProp: <T>(propValue: Ref<T | undefined>, options: UseConfigProviderPropOptions<T>) => {
7
+ export declare const useConfigProviderProp: <T>(propValue: Ref<T>, options: UseConfigProviderPropOptions<T>) => {
8
8
  mergedValue: import("vue").ComputedRef<T | undefined>;
9
9
  };
10
10
  export {};
@@ -0,0 +1,8 @@
1
+ //#region \0plugin-vue:export-helper
2
+ var _plugin_vue_export_helper_default = (sfc, props) => {
3
+ const target = sfc.__vccOpts || sfc;
4
+ for (const [key, val] of props) target[key] = val;
5
+ return target;
6
+ };
7
+ //#endregion
8
+ export { _plugin_vue_export_helper_default as default };
@@ -1,9 +1,11 @@
1
+ import { throttleByRaf } from "../../_utils/throttle-by-raf.js";
1
2
  import { ref } from "vue";
2
3
  //#region components/color-picker/hooks/use-control-block.ts
3
4
  var useControlBlock = ({ value, onChange }) => {
4
5
  const active = ref(false);
5
6
  const blockRef = ref();
6
7
  const handlerRef = ref();
8
+ const throttledChange = throttleByRaf(onChange);
7
9
  const getPercentNumber = (value, max) => {
8
10
  if (value < 0) return 0;
9
11
  if (value > max) return 1;
@@ -14,7 +16,7 @@ var useControlBlock = ({ value, onChange }) => {
14
16
  const { clientX, clientY } = ev;
15
17
  const rect = blockRef.value.getBoundingClientRect();
16
18
  const newValue = [getPercentNumber(clientX - rect.x, rect.width), getPercentNumber(clientY - rect.y, rect.height)];
17
- if (newValue[0] !== value[0] || newValue[1] !== value[1]) onChange === null || onChange === void 0 || onChange(newValue);
19
+ if (newValue[0] !== value[0] || newValue[1] !== value[1]) throttledChange(newValue);
18
20
  };
19
21
  const removeListener = () => {
20
22
  active.value = false;
@@ -23,6 +25,7 @@ var useControlBlock = ({ value, onChange }) => {
23
25
  window.removeEventListener("contextmenu", removeListener);
24
26
  };
25
27
  const onMouseDown = (ev) => {
28
+ ev.preventDefault();
26
29
  active.value = true;
27
30
  setCurrentPosition(ev);
28
31
  window.addEventListener("mousemove", onMouseMove);
@@ -126,6 +126,7 @@ declare module 'vue' {
126
126
  SdTimePicker: SDVue['TimePicker'];
127
127
  SdTimeline: SDVue['Timeline'];
128
128
  SdTimelineItem: SDVue['TimelineItem'];
129
+ SdToolbar: SDVue['Toolbar'];
129
130
  SdTooltip: SDVue['Tooltip'];
130
131
  SdTour: SDVue['Tour'];
131
132
  SdTransfer: SDVue['Transfer'];
@@ -2,7 +2,7 @@ import type { PropType } from 'vue';
2
2
  import { VirtualListProps } from '../_components/virtual-list/interface';
3
3
  import { Size } from '../_utils/constant';
4
4
  import { SdLang } from '../locale/interface';
5
- import { ConfigProviderDatePicker, ConfigProviderDrawer, type JsonFormProviderConfig, ConfigProviderModal } from './context';
5
+ import { ConfigProviderDatePicker, ConfigProviderDrawer, type JsonFormProviderConfig, ConfigProviderModal, ConfigProviderPagination } from './context';
6
6
  import { SdThemeConfig, SdThemeMode } from './theme';
7
7
  declare var __VLS_8: {};
8
8
  type __VLS_Slots = {} & {
@@ -63,6 +63,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
63
63
  drawer: {
64
64
  type: PropType<ConfigProviderDrawer>;
65
65
  };
66
+ pagination: {
67
+ type: PropType<ConfigProviderPagination>;
68
+ };
66
69
  jsonForm: {
67
70
  type: PropType<JsonFormProviderConfig>;
68
71
  };
@@ -127,6 +130,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
127
130
  drawer: {
128
131
  type: PropType<ConfigProviderDrawer>;
129
132
  };
133
+ pagination: {
134
+ type: PropType<ConfigProviderPagination>;
135
+ };
130
136
  jsonForm: {
131
137
  type: PropType<JsonFormProviderConfig>;
132
138
  };
@@ -115,6 +115,11 @@ var config_provider_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
115
115
  */
116
116
  drawer: { type: Object },
117
117
  /**
118
+ * @zh Pagination 组件默认配置
119
+ * @en Default config for Pagination
120
+ */
121
+ pagination: { type: Object },
122
+ /**
118
123
  * @zh JsonForm 组件默认配置
119
124
  * @en Default config for JsonForm
120
125
  */
@@ -146,7 +151,7 @@ var config_provider_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
146
151
  * @version 2.28.0
147
152
  */
148
153
  const slots = useSlots();
149
- const { prefixCls, locale, size, allowClear, autoInsertSpaceInButton, allowSearch, virtualListProps, updateAtScroll, scrollToClose, exchangeTime, rtl, datePicker, modal, drawer } = toRefs(props);
154
+ const { prefixCls, locale, size, allowClear, autoInsertSpaceInButton, allowSearch, virtualListProps, updateAtScroll, scrollToClose, exchangeTime, rtl, datePicker, modal, drawer, pagination } = toRefs(props);
150
155
  const config = reactive({
151
156
  slots,
152
157
  prefixCls,
@@ -163,6 +168,7 @@ var config_provider_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
163
168
  datePicker,
164
169
  modal,
165
170
  drawer,
171
+ pagination,
166
172
  jsonForm: toRefs(props).jsonForm,
167
173
  theme: normalizeTheme(props.theme)
168
174
  });
@@ -7,6 +7,7 @@ import { ButtonProps } from '../button';
7
7
  import { ShortcutType, WeekStart } from '../date-picker/interface';
8
8
  import { EllipsisTooltipProps } from '../ellipsis';
9
9
  import { SdLang } from '../locale/interface';
10
+ import { PaginationSelectProps } from '../pagination/interface';
10
11
  import { SDThemeNormalized } from './theme';
11
12
  export interface ConfigProviderModal {
12
13
  mask?: boolean;
@@ -53,6 +54,18 @@ export interface ConfigProviderDatePicker {
53
54
  dayStartOfWeek?: WeekStart;
54
55
  abbreviation?: boolean;
55
56
  }
57
+ export interface ConfigProviderPagination {
58
+ pageSizeOptions?: number[];
59
+ defaultPageSize?: number;
60
+ showTotal?: boolean;
61
+ showMore?: boolean;
62
+ showJumper?: boolean;
63
+ showPageSize?: boolean;
64
+ autoAdjust?: boolean;
65
+ baseSize?: number;
66
+ bufferSize?: number;
67
+ pageSizeProps?: PaginationSelectProps;
68
+ }
56
69
  export interface ConfigProvider {
57
70
  slots: Slots;
58
71
  prefixCls?: string;
@@ -69,6 +82,7 @@ export interface ConfigProvider {
69
82
  datePicker?: ConfigProviderDatePicker;
70
83
  modal?: ConfigProviderModal;
71
84
  drawer?: ConfigProviderDrawer;
85
+ pagination?: ConfigProviderPagination;
72
86
  jsonForm?: JsonFormProviderConfig;
73
87
  theme?: SDThemeNormalized;
74
88
  }
@@ -57,6 +57,9 @@ declare const ConfigProvider: {
57
57
  drawer: {
58
58
  type: import("vue").PropType<import("./context.ts").ConfigProviderDrawer>;
59
59
  };
60
+ pagination: {
61
+ type: import("vue").PropType<import("./context.ts").ConfigProviderPagination>;
62
+ };
60
63
  jsonForm: {
61
64
  type: import("vue").PropType<import("./context.ts").JsonFormProviderConfig>;
62
65
  };
@@ -138,6 +141,9 @@ declare const ConfigProvider: {
138
141
  drawer: {
139
142
  type: import("vue").PropType<import("./context.ts").ConfigProviderDrawer>;
140
143
  };
144
+ pagination: {
145
+ type: import("vue").PropType<import("./context.ts").ConfigProviderPagination>;
146
+ };
141
147
  jsonForm: {
142
148
  type: import("vue").PropType<import("./context.ts").JsonFormProviderConfig>;
143
149
  };
@@ -216,6 +222,9 @@ declare const ConfigProvider: {
216
222
  drawer: {
217
223
  type: import("vue").PropType<import("./context.ts").ConfigProviderDrawer>;
218
224
  };
225
+ pagination: {
226
+ type: import("vue").PropType<import("./context.ts").ConfigProviderPagination>;
227
+ };
219
228
  jsonForm: {
220
229
  type: import("vue").PropType<import("./context.ts").JsonFormProviderConfig>;
221
230
  };
package/es/index.css CHANGED
@@ -2709,19 +2709,18 @@ body {
2709
2709
  align-items: center;
2710
2710
  min-width: 0;
2711
2711
  margin-right: 4px;
2712
- color: var(--sd-color-text-1);
2713
2712
  font-size: 12px;
2714
2713
  white-space: pre-wrap;
2715
2714
  word-break: break-word;
2715
+ }
2716
+ .sd-select-view-multiple .sd-select-view-inner .sd-select-view-tag:not(.sd-tag-custom-color):not(.sd-tag-red):not(.sd-tag-orangered):not(.sd-tag-orange):not(.sd-tag-gold):not(.sd-tag-lime):not(.sd-tag-green):not(.sd-tag-cyan):not(.sd-tag-blue):not(.sd-tag-sdblue):not(.sd-tag-purple):not(.sd-tag-pinkpurple):not(.sd-tag-magenta) {
2717
+ color: var(--sd-color-text-1);
2716
2718
  background-color: var(--sd-color-bg-2);
2717
2719
  border-color: var(--sd-color-fill-3);
2718
2720
  }
2719
2721
  .sd-select-view-multiple .sd-select-view-inner .sd-select-view-tag .sd-icon-hover:hover::before {
2720
2722
  background-color: var(--sd-color-fill-2);
2721
2723
  }
2722
- .sd-select-view-multiple .sd-select-view-inner .sd-select-view-tag.sd-tag-custom-color {
2723
- color: var(--sd-color-white);
2724
- }
2725
2724
  .sd-select-view-multiple .sd-select-view-inner .sd-select-view-tag.sd-tag-custom-color .sd-icon-hover.sd-tag-icon-hover:hover::before {
2726
2725
  background-color: rgba(255, 255, 255, 0.2);
2727
2726
  }
@@ -2796,14 +2795,14 @@ body {
2796
2795
  max-width: 100%;
2797
2796
  vertical-align: bottom;
2798
2797
  }
2799
- .sd-select-view-multiple.sd-select-view-focus .sd-select-view-tag {
2798
+ .sd-select-view-multiple.sd-select-view-focus .sd-select-view-tag:not(.sd-tag-custom-color):not(.sd-tag-red):not(.sd-tag-orangered):not(.sd-tag-orange):not(.sd-tag-gold):not(.sd-tag-lime):not(.sd-tag-green):not(.sd-tag-cyan):not(.sd-tag-blue):not(.sd-tag-sdblue):not(.sd-tag-purple):not(.sd-tag-pinkpurple):not(.sd-tag-magenta) {
2800
2799
  background-color: var(--sd-color-fill-2);
2801
2800
  border-color: var(--sd-color-fill-2);
2802
2801
  }
2803
2802
  .sd-select-view-multiple.sd-select-view-focus .sd-select-view-tag .sd-icon-hover:hover::before {
2804
2803
  background-color: var(--sd-color-fill-3);
2805
2804
  }
2806
- .sd-select-view-multiple.sd-select-view-disabled .sd-select-view-tag {
2805
+ .sd-select-view-multiple.sd-select-view-disabled .sd-select-view-tag:not(.sd-tag-custom-color):not(.sd-tag-red):not(.sd-tag-orangered):not(.sd-tag-orange):not(.sd-tag-gold):not(.sd-tag-lime):not(.sd-tag-green):not(.sd-tag-cyan):not(.sd-tag-blue):not(.sd-tag-sdblue):not(.sd-tag-purple):not(.sd-tag-pinkpurple):not(.sd-tag-magenta) {
2807
2806
  color: var(--sd-color-text-4);
2808
2807
  background-color: var(--sd-color-fill-2);
2809
2808
  border-color: var(--sd-color-fill-3);
@@ -5251,6 +5250,75 @@ body.sd-tour-active .sd-tour-popover * {
5251
5250
  resize: vertical;
5252
5251
  }
5253
5252
 
5253
+ .sd-toolbar {
5254
+ width: 100%;
5255
+ }
5256
+ .sd-toolbar-inner {
5257
+ display: flex;
5258
+ flex-wrap: wrap;
5259
+ gap: 12px;
5260
+ align-items: flex-start;
5261
+ width: 100%;
5262
+ }
5263
+ .sd-toolbar-with-border .sd-toolbar-inner {
5264
+ padding-bottom: 8px;
5265
+ border-bottom: 1px solid var(--sd-color-neutral-3);
5266
+ }
5267
+ .sd-toolbar-body {
5268
+ flex: 1 1 0;
5269
+ min-width: 0;
5270
+ max-height: var(--toolbar-body-max-height);
5271
+ overflow: hidden;
5272
+ transition: max-height 0.3s ease;
5273
+ }
5274
+ .sd-toolbar-body--schema .sd-form {
5275
+ display: grid;
5276
+ flex: 1;
5277
+ grid-template-columns: repeat(auto-fill, minmax(var(--toolbar-span-width), 1fr));
5278
+ gap: 8px;
5279
+ width: 100%;
5280
+ background-color: var(--sd-color-bg-2);
5281
+ }
5282
+ .sd-toolbar-body--schema .sd-form > * {
5283
+ max-width: var(--toolbar-item-max-width);
5284
+ }
5285
+ .sd-toolbar-body--schema .sd-form-item {
5286
+ margin-bottom: 0;
5287
+ }
5288
+ .sd-toolbar-body--schema .sd-form-item-content {
5289
+ min-height: var(--toolbar-item-height);
5290
+ }
5291
+ .sd-toolbar-body--max-width .sd-form {
5292
+ grid-template-columns: repeat(auto-fill, minmax(min(var(--toolbar-item-max-width), var(--toolbar-span-width)), var(--toolbar-item-max-width)));
5293
+ }
5294
+ .sd-toolbar-actions {
5295
+ display: flex;
5296
+ flex-shrink: 0;
5297
+ gap: 8px;
5298
+ align-items: center;
5299
+ align-self: flex-end;
5300
+ white-space: nowrap;
5301
+ }
5302
+ .sd-toolbar-expand {
5303
+ display: inline-flex;
5304
+ gap: 4px;
5305
+ align-items: center;
5306
+ }
5307
+ .sd-toolbar-expand-icon {
5308
+ transition: transform 0.3s ease;
5309
+ }
5310
+ .sd-toolbar-expand-icon--up {
5311
+ transform: rotate(180deg);
5312
+ }
5313
+ @media screen and (width <= 640px) {
5314
+ .sd-toolbar-body--schema .sd-form {
5315
+ grid-template-columns: minmax(0, 1fr) !important;
5316
+ }
5317
+ .sd-toolbar-body--schema .sd-form-item {
5318
+ grid-column: span 1 !important;
5319
+ }
5320
+ }
5321
+
5254
5322
  .sd-tag-group {
5255
5323
  position: relative;
5256
5324
  display: inline-flex;
@@ -6232,6 +6300,9 @@ body.sd-tour-active .sd-tour-popover * {
6232
6300
  grid-column: 1/-1;
6233
6301
  grid-template-columns: var(--sd-table-grid-template, minmax(0, 1fr));
6234
6302
  }
6303
+ .sd-table-thead > .sd-table-tr, .sd-table-tbody > .sd-table-tr, .sd-table-tfoot-content > .sd-table-tr {
6304
+ display: contents;
6305
+ }
6235
6306
  .sd-table-tbody > .sd-virtual-list, .sd-table-tbody > .sd-table-body {
6236
6307
  grid-column: 1/-1;
6237
6308
  width: 100%;
@@ -6566,9 +6637,10 @@ body.sd-tour-active .sd-tour-popover * {
6566
6637
  flex-direction: column;
6567
6638
  width: auto;
6568
6639
  height: 100%;
6640
+ overflow: hidden;
6569
6641
  }
6570
6642
  .sd-table-container .sd-table-content-scroll-x {
6571
- overflow: auto hidden;
6643
+ overflow: hidden;
6572
6644
  }
6573
6645
  .sd-table-container::before, .sd-table-container::after {
6574
6646
  position: absolute;
@@ -6597,6 +6669,7 @@ body.sd-tour-active .sd-tour-popover * {
6597
6669
  box-shadow: inset -6px 0 8px -3px rgba(0, 0, 0, 0.15);
6598
6670
  }
6599
6671
  .sd-table-header {
6672
+ flex: 0 0 auto;
6600
6673
  width: 100%;
6601
6674
  min-width: 100%;
6602
6675
  overflow: hidden;
@@ -6621,13 +6694,15 @@ body.sd-tour-active .sd-tour-popover * {
6621
6694
  background-color: transparent;
6622
6695
  }
6623
6696
  .sd-table.sd-table-empty .sd-table-header {
6624
- overflow-x: auto;
6697
+ overflow-x: hidden;
6625
6698
  }
6626
6699
  .sd-table-body {
6627
6700
  position: relative;
6701
+ flex: 1 1 auto;
6628
6702
  width: 100%;
6629
- min-height: 40px;
6630
- overflow: auto;
6703
+ min-width: 0;
6704
+ min-height: 0;
6705
+ overflow: hidden;
6631
6706
  background-color: var(--sd-color-bg-2);
6632
6707
  }
6633
6708
  .sd-table-border .sd-table-container {
@@ -6747,7 +6822,7 @@ body.sd-tour-active .sd-tour-popover * {
6747
6822
  z-index: 1;
6748
6823
  flex-shrink: 0;
6749
6824
  width: 100%;
6750
- overflow-x: auto;
6825
+ overflow-x: hidden;
6751
6826
  background-color: var(--sd-color-neutral-2);
6752
6827
  box-shadow: 0 -1px 0 var(--sd-color-neutral-3);
6753
6828
  scrollbar-color: transparent transparent;
@@ -11538,19 +11613,18 @@ body.sd-tour-active .sd-tour-popover * {
11538
11613
  align-items: center;
11539
11614
  min-width: 0;
11540
11615
  margin-right: 4px;
11541
- color: var(--sd-color-text-1);
11542
11616
  font-size: 12px;
11543
11617
  white-space: pre-wrap;
11544
11618
  word-break: break-word;
11619
+ }
11620
+ .sd-input-tag .sd-input-tag-inner .sd-input-tag-tag:not(.sd-tag-custom-color):not(.sd-tag-red):not(.sd-tag-orangered):not(.sd-tag-orange):not(.sd-tag-gold):not(.sd-tag-lime):not(.sd-tag-green):not(.sd-tag-cyan):not(.sd-tag-blue):not(.sd-tag-sdblue):not(.sd-tag-purple):not(.sd-tag-pinkpurple):not(.sd-tag-magenta) {
11621
+ color: var(--sd-color-text-1);
11545
11622
  background-color: var(--sd-color-bg-2);
11546
11623
  border-color: var(--sd-color-fill-3);
11547
11624
  }
11548
11625
  .sd-input-tag .sd-input-tag-inner .sd-input-tag-tag .sd-icon-hover:hover::before {
11549
11626
  background-color: var(--sd-color-fill-2);
11550
11627
  }
11551
- .sd-input-tag .sd-input-tag-inner .sd-input-tag-tag.sd-tag-custom-color {
11552
- color: var(--sd-color-white);
11553
- }
11554
11628
  .sd-input-tag .sd-input-tag-inner .sd-input-tag-tag.sd-tag-custom-color .sd-icon-hover.sd-tag-icon-hover:hover::before {
11555
11629
  background-color: rgba(255, 255, 255, 0.2);
11556
11630
  }
@@ -11625,14 +11699,14 @@ body.sd-tour-active .sd-tour-popover * {
11625
11699
  max-width: 100%;
11626
11700
  vertical-align: bottom;
11627
11701
  }
11628
- .sd-input-tag.sd-input-tag-focus .sd-input-tag-tag {
11702
+ .sd-input-tag.sd-input-tag-focus .sd-input-tag-tag:not(.sd-tag-custom-color):not(.sd-tag-red):not(.sd-tag-orangered):not(.sd-tag-orange):not(.sd-tag-gold):not(.sd-tag-lime):not(.sd-tag-green):not(.sd-tag-cyan):not(.sd-tag-blue):not(.sd-tag-sdblue):not(.sd-tag-purple):not(.sd-tag-pinkpurple):not(.sd-tag-magenta) {
11629
11703
  background-color: var(--sd-color-fill-2);
11630
11704
  border-color: var(--sd-color-fill-2);
11631
11705
  }
11632
11706
  .sd-input-tag.sd-input-tag-focus .sd-input-tag-tag .sd-icon-hover:hover::before {
11633
11707
  background-color: var(--sd-color-fill-3);
11634
11708
  }
11635
- .sd-input-tag.sd-input-tag-disabled .sd-input-tag-tag {
11709
+ .sd-input-tag.sd-input-tag-disabled .sd-input-tag-tag:not(.sd-tag-custom-color):not(.sd-tag-red):not(.sd-tag-orangered):not(.sd-tag-orange):not(.sd-tag-gold):not(.sd-tag-lime):not(.sd-tag-green):not(.sd-tag-cyan):not(.sd-tag-blue):not(.sd-tag-sdblue):not(.sd-tag-purple):not(.sd-tag-pinkpurple):not(.sd-tag-magenta) {
11636
11710
  color: var(--sd-color-text-4);
11637
11711
  background-color: var(--sd-color-fill-2);
11638
11712
  border-color: var(--sd-color-fill-3);
package/es/index.d.ts CHANGED
@@ -145,6 +145,8 @@ export { default as Tag } from './tag';
145
145
  export type { TagColor, TagInstance, TagProps } from './tag';
146
146
  export { default as TagGroup } from './tag-group';
147
147
  export type { TagGroupFieldNames, TagGroupInstance, TagGroupObjectOption, TagGroupOption, TagGroupOptionLabel, TagGroupProps, } from './tag-group';
148
+ export { default as Toolbar } from './toolbar';
149
+ export type { ToolbarEmits, ToolbarInstance, ToolbarModelValue, ToolbarProps, ToolbarResetEventHandler, ToolbarSearchEventHandler, } from './toolbar';
148
150
  export { default as Textarea } from './textarea';
149
151
  export type { TextareaInstance } from './textarea';
150
152
  export { default as TimePicker } from './time-picker';
package/es/index.js CHANGED
@@ -135,6 +135,7 @@ import TagGroup from "./tag-group/index.js";
135
135
  import ThemeProvider from "./theme-provider/index.js";
136
136
  import item_default$1 from "./timeline/item.js";
137
137
  import Timeline from "./timeline/index.js";
138
+ import Toolbar from "./toolbar/index.js";
138
139
  import Tour from "./tour/index.js";
139
140
  import paragraph_default from "./typography/paragraph.js";
140
141
  import text_default from "./typography/text.js";
@@ -143,4 +144,4 @@ import Typography from "./typography/index.js";
143
144
  import Upload from "./upload/index.js";
144
145
  import Watermark from "./watermark/index.js";
145
146
  import SDVue from "./sd-vue.js";
146
- 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, 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 };
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 };
package/es/index.scss CHANGED
@@ -16,6 +16,7 @@
16
16
  @use '@components/timeline/style/index.scss' as *;
17
17
  @use '@components/time-picker/style/index.scss' as *;
18
18
  @use '@components/textarea/style/index.scss' as *;
19
+ @use '@components/toolbar/style/index.scss' as *;
19
20
  @use '@components/tag/style/index.scss' as *;
20
21
  @use '@components/tag-group/style/index.scss' as *;
21
22
  @use '@components/tabs/style/index.scss' as *;
@@ -613,19 +613,18 @@
613
613
  align-items: center;
614
614
  min-width: 0;
615
615
  margin-right: 4px;
616
- color: var(--sd-color-text-1);
617
616
  font-size: 12px;
618
617
  white-space: pre-wrap;
619
618
  word-break: break-word;
619
+ }
620
+ .sd-input-tag .sd-input-tag-inner .sd-input-tag-tag:not(.sd-tag-custom-color):not(.sd-tag-red):not(.sd-tag-orangered):not(.sd-tag-orange):not(.sd-tag-gold):not(.sd-tag-lime):not(.sd-tag-green):not(.sd-tag-cyan):not(.sd-tag-blue):not(.sd-tag-sdblue):not(.sd-tag-purple):not(.sd-tag-pinkpurple):not(.sd-tag-magenta) {
621
+ color: var(--sd-color-text-1);
620
622
  background-color: var(--sd-color-bg-2);
621
623
  border-color: var(--sd-color-fill-3);
622
624
  }
623
625
  .sd-input-tag .sd-input-tag-inner .sd-input-tag-tag .sd-icon-hover:hover::before {
624
626
  background-color: var(--sd-color-fill-2);
625
627
  }
626
- .sd-input-tag .sd-input-tag-inner .sd-input-tag-tag.sd-tag-custom-color {
627
- color: var(--sd-color-white);
628
- }
629
628
  .sd-input-tag .sd-input-tag-inner .sd-input-tag-tag.sd-tag-custom-color .sd-icon-hover.sd-tag-icon-hover:hover::before {
630
629
  background-color: rgba(255, 255, 255, 0.2);
631
630
  }
@@ -700,14 +699,14 @@
700
699
  max-width: 100%;
701
700
  vertical-align: bottom;
702
701
  }
703
- .sd-input-tag.sd-input-tag-focus .sd-input-tag-tag {
702
+ .sd-input-tag.sd-input-tag-focus .sd-input-tag-tag:not(.sd-tag-custom-color):not(.sd-tag-red):not(.sd-tag-orangered):not(.sd-tag-orange):not(.sd-tag-gold):not(.sd-tag-lime):not(.sd-tag-green):not(.sd-tag-cyan):not(.sd-tag-blue):not(.sd-tag-sdblue):not(.sd-tag-purple):not(.sd-tag-pinkpurple):not(.sd-tag-magenta) {
704
703
  background-color: var(--sd-color-fill-2);
705
704
  border-color: var(--sd-color-fill-2);
706
705
  }
707
706
  .sd-input-tag.sd-input-tag-focus .sd-input-tag-tag .sd-icon-hover:hover::before {
708
707
  background-color: var(--sd-color-fill-3);
709
708
  }
710
- .sd-input-tag.sd-input-tag-disabled .sd-input-tag-tag {
709
+ .sd-input-tag.sd-input-tag-disabled .sd-input-tag-tag:not(.sd-tag-custom-color):not(.sd-tag-red):not(.sd-tag-orangered):not(.sd-tag-orange):not(.sd-tag-gold):not(.sd-tag-lime):not(.sd-tag-green):not(.sd-tag-cyan):not(.sd-tag-blue):not(.sd-tag-sdblue):not(.sd-tag-purple):not(.sd-tag-pinkpurple):not(.sd-tag-magenta) {
711
710
  color: var(--sd-color-text-4);
712
711
  background-color: var(--sd-color-fill-2);
713
712
  border-color: var(--sd-color-fill-3);