@uzum-tech/ui 1.5.4 → 1.6.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 (74) hide show
  1. package/dist/index.js +106 -39
  2. package/dist/index.prod.js +3 -3
  3. package/es/_internal/radio/src/use-radio.d.ts +1 -0
  4. package/es/_internal/radio/src/use-radio.js +2 -1
  5. package/es/_utils/css/index.d.ts +1 -0
  6. package/es/_utils/css/index.js +1 -0
  7. package/es/_utils/css/normalize-size.d.ts +1 -0
  8. package/es/_utils/css/normalize-size.js +6 -0
  9. package/es/_utils/index.d.ts +1 -1
  10. package/es/_utils/index.js +1 -1
  11. package/es/avatar/src/Avatar.js +1 -7
  12. package/es/badge/src/Badge.d.ts +13 -0
  13. package/es/badge/src/Badge.js +5 -4
  14. package/es/badge/src/styles/index.cssr.js +5 -6
  15. package/es/badge/styles/light.d.ts +1 -0
  16. package/es/badge/styles/light.js +2 -1
  17. package/es/checkbox/src/styles/index.cssr.js +22 -0
  18. package/es/data-table/src/TableParts/Body.js +6 -3
  19. package/es/data-table/src/TableParts/BodyRadio.d.ts +6 -0
  20. package/es/data-table/src/TableParts/BodyRadio.js +4 -1
  21. package/es/date-picker/src/DatePicker.d.ts +3 -0
  22. package/es/date-picker/src/DatePicker.js +2 -2
  23. package/es/date-picker/src/interface.d.ts +1 -0
  24. package/es/date-picker/src/panel/use-calendar.js +5 -2
  25. package/es/date-picker/src/panel/use-dual-calendar.js +6 -3
  26. package/es/date-picker/src/utils.d.ts +1 -1
  27. package/es/date-picker/src/utils.js +3 -2
  28. package/es/list/src/List.d.ts +1 -1
  29. package/es/list/src/ListItem.js +9 -2
  30. package/es/pagination/src/Pagination.js +11 -5
  31. package/es/pagination/src/styles/index.cssr.js +10 -5
  32. package/es/pagination/styles/light.js +5 -5
  33. package/es/radio/src/Radio.d.ts +3 -0
  34. package/es/radio/src/Radio.js +1 -1
  35. package/es/radio/src/RadioButton.d.ts +3 -0
  36. package/es/version.d.ts +1 -1
  37. package/es/version.js +1 -1
  38. package/lib/_internal/radio/src/use-radio.d.ts +1 -0
  39. package/lib/_internal/radio/src/use-radio.js +2 -1
  40. package/lib/_utils/css/index.d.ts +1 -0
  41. package/lib/_utils/css/index.js +3 -1
  42. package/lib/_utils/css/normalize-size.d.ts +1 -0
  43. package/lib/_utils/css/normalize-size.js +10 -0
  44. package/lib/_utils/index.d.ts +1 -1
  45. package/lib/_utils/index.js +2 -1
  46. package/lib/avatar/src/Avatar.js +1 -7
  47. package/lib/badge/src/Badge.d.ts +13 -0
  48. package/lib/badge/src/Badge.js +4 -3
  49. package/lib/badge/src/styles/index.cssr.js +5 -6
  50. package/lib/badge/styles/light.d.ts +1 -0
  51. package/lib/badge/styles/light.js +2 -1
  52. package/lib/checkbox/src/styles/index.cssr.js +22 -0
  53. package/lib/data-table/src/TableParts/Body.js +6 -3
  54. package/lib/data-table/src/TableParts/BodyRadio.d.ts +6 -0
  55. package/lib/data-table/src/TableParts/BodyRadio.js +4 -1
  56. package/lib/date-picker/src/DatePicker.d.ts +3 -0
  57. package/lib/date-picker/src/DatePicker.js +2 -2
  58. package/lib/date-picker/src/interface.d.ts +1 -0
  59. package/lib/date-picker/src/panel/use-calendar.js +5 -2
  60. package/lib/date-picker/src/panel/use-dual-calendar.js +6 -3
  61. package/lib/date-picker/src/utils.d.ts +1 -1
  62. package/lib/date-picker/src/utils.js +3 -2
  63. package/lib/list/src/List.d.ts +1 -1
  64. package/lib/list/src/ListItem.js +7 -0
  65. package/lib/pagination/src/Pagination.js +11 -5
  66. package/lib/pagination/src/styles/index.cssr.js +9 -4
  67. package/lib/pagination/styles/light.js +5 -5
  68. package/lib/radio/src/Radio.d.ts +3 -0
  69. package/lib/radio/src/Radio.js +1 -1
  70. package/lib/radio/src/RadioButton.d.ts +3 -0
  71. package/lib/version.d.ts +1 -1
  72. package/lib/version.js +1 -1
  73. package/package.json +1 -1
  74. package/web-types.json +21 -3
@@ -25,6 +25,7 @@ export declare const radioBaseProps: {
25
25
  readonly default: undefined;
26
26
  };
27
27
  readonly onChange: PropType<OnChangeImpl>;
28
+ readonly onClick: PropType<(event: MouseEvent) => void>;
28
29
  };
29
30
  export declare const radioGroupInjectionKey: import("vue").InjectionKey<RadioGroupInjection>;
30
31
  export interface UseRadio {
@@ -26,7 +26,8 @@ export const radioBaseProps = {
26
26
  type: Boolean,
27
27
  default: undefined
28
28
  },
29
- onChange: [Function, Array]
29
+ onChange: [Function, Array],
30
+ onClick: [Function, Array]
30
31
  };
31
32
  export const radioGroupInjectionKey = createInjectionKey('u-radio-group');
32
33
  function useRadio(props) {
@@ -1,2 +1,3 @@
1
1
  export { formatLength } from './format-length';
2
2
  export { color2Class } from './color-to-class';
3
+ export { resolveSize } from './normalize-size';
@@ -1,2 +1,3 @@
1
1
  export { formatLength } from './format-length';
2
2
  export { color2Class } from './color-to-class';
3
+ export { resolveSize } from './normalize-size';
@@ -0,0 +1 @@
1
+ export declare const resolveSize: (value: string | number | undefined, fallback: string) => string;
@@ -0,0 +1,6 @@
1
+ export const resolveSize = (value, fallback) => {
2
+ if (value === undefined)
3
+ return fallback;
4
+ value = String(value);
5
+ return /^\d+$/.test(value) ? `${value}px` : value;
6
+ };
@@ -2,7 +2,7 @@ export { call, keep, omit, flatten, getSlot, getVNodeChildren, keysOf, render, g
2
2
  export type { MaybeArray } from './vue';
3
3
  export { warn, warnOnce, throwError, smallerSize, largerSize, getTitleAttribute, isArrayShallowEqual } from './uzum';
4
4
  export type { ExtractPublicPropTypes, ExtractInternalPropTypes, Mutable } from './uzum';
5
- export { formatLength, color2Class } from './css';
5
+ export { formatLength, color2Class, resolveSize } from './css';
6
6
  export { createKey } from './cssr';
7
7
  export { isJsdom } from './env/is-jsdom';
8
8
  export { isBrowser } from './env/is-browser';
@@ -1,6 +1,6 @@
1
1
  export { call, keep, omit, flatten, getSlot, getVNodeChildren, keysOf, render, getFirstSlotVNode, createDataKey, createRefSetter, createInjectionKey, resolveSlot, resolveSlotWithProps, resolveWrappedSlot, isSlotEmpty, mergeEventHandlers, isNodeVShowFalse, resolveWrappedSlotWithProps, Wrapper } from './vue';
2
2
  export { warn, warnOnce, throwError, smallerSize, largerSize, getTitleAttribute, isArrayShallowEqual } from './uzum';
3
- export { formatLength, color2Class } from './css';
3
+ export { formatLength, color2Class, resolveSize } from './css';
4
4
  export { createKey } from './cssr';
5
5
  export { isJsdom } from './env/is-jsdom';
6
6
  export { isBrowser } from './env/is-browser';
@@ -4,7 +4,7 @@ import { isImageSupportNativeLazy } from '../../_utils/env/is-native-lazy-load';
4
4
  import { observeIntersection } from '../../image/src/utils';
5
5
  import { tagInjectionKey } from '../../tag/src/Tag';
6
6
  import { useConfig, useTheme, useThemeClass } from '../../_mixins';
7
- import { createKey, resolveWrappedSlot, resolveSlot } from '../../_utils';
7
+ import { createKey, resolveWrappedSlot, resolveSlot, resolveSize } from '../../_utils';
8
8
  import { avatarLight } from '../styles';
9
9
  import { avatarGroupInjectionKey } from './context';
10
10
  import { USkeleton } from '../../skeleton';
@@ -103,12 +103,6 @@ export default defineComponent({
103
103
  const getBackgroundColor = (color) => {
104
104
  return props.disabled || size === 'small' ? 'rgba(0,0,0,0)' : color;
105
105
  };
106
- const resolveSize = (value, fallback) => {
107
- if (value === undefined)
108
- return fallback;
109
- value = String(value);
110
- return /^\d+$/.test(value) ? `${value}px` : value;
111
- };
112
106
  return {
113
107
  '--u-font-size': fontSize,
114
108
  '--u-font-weight': fontWeight,
@@ -16,6 +16,7 @@ export declare const badgeProps: {
16
16
  readonly processing: BooleanConstructor;
17
17
  readonly color: StringConstructor;
18
18
  readonly textColor: StringConstructor;
19
+ readonly dotSize: PropType<string | number>;
19
20
  readonly offset: PropType<readonly [number | string, number | string]>;
20
21
  readonly theme: PropType<import("../../_mixins").Theme<"Badge", {
21
22
  color: string;
@@ -32,6 +33,7 @@ export declare const badgeProps: {
32
33
  textColorError: string;
33
34
  textColorWarning: string;
34
35
  borderColor: string;
36
+ dotSize: string;
35
37
  }, any>>;
36
38
  readonly themeOverrides: PropType<import("../../_mixins/use-theme").ExtractThemeOverrides<import("../../_mixins").Theme<"Badge", {
37
39
  color: string;
@@ -48,6 +50,7 @@ export declare const badgeProps: {
48
50
  textColorError: string;
49
51
  textColorWarning: string;
50
52
  borderColor: string;
53
+ dotSize: string;
51
54
  }, any>>>;
52
55
  readonly builtinThemeOverrides: PropType<import("../../_mixins/use-theme").ExtractThemeOverrides<import("../../_mixins").Theme<"Badge", {
53
56
  color: string;
@@ -64,6 +67,7 @@ export declare const badgeProps: {
64
67
  textColorError: string;
65
68
  textColorWarning: string;
66
69
  borderColor: string;
70
+ dotSize: string;
67
71
  }, any>>>;
68
72
  };
69
73
  export type BadgeProps = ExtractPublicPropTypes<typeof badgeProps>;
@@ -83,6 +87,7 @@ declare const _default: import("vue").DefineComponent<{
83
87
  readonly processing: BooleanConstructor;
84
88
  readonly color: StringConstructor;
85
89
  readonly textColor: StringConstructor;
90
+ readonly dotSize: PropType<string | number>;
86
91
  readonly offset: PropType<readonly [number | string, number | string]>;
87
92
  readonly theme: PropType<import("../../_mixins").Theme<"Badge", {
88
93
  color: string;
@@ -99,6 +104,7 @@ declare const _default: import("vue").DefineComponent<{
99
104
  textColorError: string;
100
105
  textColorWarning: string;
101
106
  borderColor: string;
107
+ dotSize: string;
102
108
  }, any>>;
103
109
  readonly themeOverrides: PropType<import("../../_mixins/use-theme").ExtractThemeOverrides<import("../../_mixins").Theme<"Badge", {
104
110
  color: string;
@@ -115,6 +121,7 @@ declare const _default: import("vue").DefineComponent<{
115
121
  textColorError: string;
116
122
  textColorWarning: string;
117
123
  borderColor: string;
124
+ dotSize: string;
118
125
  }, any>>>;
119
126
  readonly builtinThemeOverrides: PropType<import("../../_mixins/use-theme").ExtractThemeOverrides<import("../../_mixins").Theme<"Badge", {
120
127
  color: string;
@@ -131,6 +138,7 @@ declare const _default: import("vue").DefineComponent<{
131
138
  textColorError: string;
132
139
  textColorWarning: string;
133
140
  borderColor: string;
141
+ dotSize: string;
134
142
  }, any>>>;
135
143
  }, {
136
144
  rtlEnabled: import("vue").Ref<import("../../config-provider/src/internal-interface").RtlItem | undefined> | undefined;
@@ -147,6 +155,7 @@ declare const _default: import("vue").DefineComponent<{
147
155
  '--u-ripple-bezier': string;
148
156
  '--u-text-color': string;
149
157
  '--u-border-color': string;
158
+ '--u-dot-size': string;
150
159
  }> | undefined;
151
160
  themeClass: import("vue").Ref<string> | undefined;
152
161
  onRender: (() => void) | undefined;
@@ -169,6 +178,7 @@ declare const _default: import("vue").DefineComponent<{
169
178
  readonly processing: BooleanConstructor;
170
179
  readonly color: StringConstructor;
171
180
  readonly textColor: StringConstructor;
181
+ readonly dotSize: PropType<string | number>;
172
182
  readonly offset: PropType<readonly [number | string, number | string]>;
173
183
  readonly theme: PropType<import("../../_mixins").Theme<"Badge", {
174
184
  color: string;
@@ -185,6 +195,7 @@ declare const _default: import("vue").DefineComponent<{
185
195
  textColorError: string;
186
196
  textColorWarning: string;
187
197
  borderColor: string;
198
+ dotSize: string;
188
199
  }, any>>;
189
200
  readonly themeOverrides: PropType<import("../../_mixins/use-theme").ExtractThemeOverrides<import("../../_mixins").Theme<"Badge", {
190
201
  color: string;
@@ -201,6 +212,7 @@ declare const _default: import("vue").DefineComponent<{
201
212
  textColorError: string;
202
213
  textColorWarning: string;
203
214
  borderColor: string;
215
+ dotSize: string;
204
216
  }, any>>>;
205
217
  readonly builtinThemeOverrides: PropType<import("../../_mixins/use-theme").ExtractThemeOverrides<import("../../_mixins").Theme<"Badge", {
206
218
  color: string;
@@ -217,6 +229,7 @@ declare const _default: import("vue").DefineComponent<{
217
229
  textColorError: string;
218
230
  textColorWarning: string;
219
231
  borderColor: string;
232
+ dotSize: string;
220
233
  }, any>>>;
221
234
  }>>, {
222
235
  readonly type: "default" | "info" | "success" | "warning" | "error" | "prime";
@@ -1,7 +1,7 @@
1
1
  import { h, computed, onMounted, ref, defineComponent, Transition } from 'vue';
2
2
  import { useConfig, useTheme, useThemeClass } from '../../_mixins';
3
3
  import { UBaseSlotMachine, UBaseWave } from '../../_internal';
4
- import { color2Class, createKey, getTitleAttribute, isSlotEmpty, resolveSlot } from '../../_utils';
4
+ import { color2Class, createKey, getTitleAttribute, isSlotEmpty, resolveSize, resolveSlot } from '../../_utils';
5
5
  import { badgeLight } from '../styles';
6
6
  import style from './styles/index.cssr';
7
7
  import { useRtl } from '../../_mixins/use-rtl';
@@ -11,7 +11,7 @@ export const badgeProps = Object.assign(Object.assign({}, useTheme.props), { val
11
11
  }, show: {
12
12
  type: Boolean,
13
13
  default: true
14
- }, showZero: Boolean, processing: Boolean, color: String, textColor: String, offset: Array });
14
+ }, showZero: Boolean, processing: Boolean, color: String, textColor: String, dotSize: [String, Number], offset: Array });
15
15
  export default defineComponent({
16
16
  name: 'Badge',
17
17
  props: badgeProps,
@@ -39,7 +39,7 @@ export default defineComponent({
39
39
  const rtlEnabledRef = useRtl('Badge', mergedRtlRef, mergedClsPrefixRef);
40
40
  const cssVarsRef = computed(() => {
41
41
  const { type, color: propColor, textColor: propTextColor } = props;
42
- const { common: { cubicBezierEaseInOut, cubicBezierEaseOut }, self: { [createKey('color', type)]: color, [createKey('textColor', type)]: textColor, fontSize, borderColor } } = themeRef.value;
42
+ const { common: { cubicBezierEaseInOut, cubicBezierEaseOut }, self: { [createKey('color', type)]: color, [createKey('textColor', type)]: textColor, fontSize, borderColor, dotSize } } = themeRef.value;
43
43
  return {
44
44
  '--u-font-size': fontSize,
45
45
  '--u-color': propColor || color,
@@ -47,7 +47,8 @@ export default defineComponent({
47
47
  '--u-bezier': cubicBezierEaseInOut,
48
48
  '--u-ripple-bezier': cubicBezierEaseOut,
49
49
  '--u-text-color': propTextColor || textColor,
50
- '--u-border-color': borderColor
50
+ '--u-border-color': borderColor,
51
+ '--u-dot-size': resolveSize(props.dotSize, dotSize)
51
52
  };
52
53
  });
53
54
  const themeClassHandle = inlineThemeDisabled
@@ -29,13 +29,14 @@ export default c([c('@keyframes badge-wave-spread', {
29
29
  transformOrigin: 'left bottom',
30
30
  originalTransform: 'translateX(0)'
31
31
  })])]), cM('dot', [cB('badge-sup', `
32
- height: 8px;
33
- width: 8px;
32
+ height: var(--u-dot-size);
33
+ width: var(--u-dot-size);
34
+ justify-content: center;
35
+ overflow: hidden;
34
36
  padding: 0;
35
- min-width: 8px;
36
37
  left: 100%;
37
38
  bottom: calc(100% - 4px);
38
- `, [c('::before', 'border-radius: 4px;')])]), cB('badge-sup', `
39
+ `, [c('::before', 'border-radius: 4px;'), c('img', 'width: 100%')])]), cB('badge-sup', `
39
40
  background: var(--u-color);
40
41
  transition:
41
42
  background-color .3s var(--u-bezier),
@@ -86,8 +87,6 @@ export default c([c('@keyframes badge-wave-spread', {
86
87
  border-radius: 100px;
87
88
  `), cM('dot', [cB('badge-sup', `
88
89
  transform: none;
89
- width: 12px;
90
- height: 12px;
91
90
  transform: none;
92
91
  left: auto;
93
92
  right: 0;
@@ -15,6 +15,7 @@ export declare const self: (vars: ThemeCommonVars) => {
15
15
  textColorError: string;
16
16
  textColorWarning: string;
17
17
  borderColor: string;
18
+ dotSize: string;
18
19
  };
19
20
  export type BadgeThemeVars = ReturnType<typeof self>;
20
21
  declare const badgeLight: Theme<'Badge', BadgeThemeVars>;
@@ -15,7 +15,8 @@ export const self = (vars) => {
15
15
  textColorSuccess: textQuaternary,
16
16
  textColorError: textQuaternary,
17
17
  textColorWarning: textQuaternary,
18
- borderColor: staticWhite
18
+ borderColor: staticWhite,
19
+ dotSize: '12px'
19
20
  };
20
21
  };
21
22
  const badgeLight = {
@@ -107,6 +107,28 @@ cE('ripple', `
107
107
  --u-merged-border: var(--u-border-disabled-checked);
108
108
  --u-merged-shadow: transparent;
109
109
  --u-merged-icon: var(--u-check-mark-color-disabled-checked);
110
+ `)]), cM('indeterminate', `
111
+ --u-merged-color: var(--u-color-checked);
112
+ --u-merged-border: var(--u-border-checked);
113
+ --u-merged-shadow: var(--u-box-shadow-hover-checked);
114
+ --u-merged-icon: var(--u-check-mark-color);
115
+ `, [c('&:hover', `
116
+ --u-merged-color: var(--u-color-hover-checked);
117
+ --u-merged-border: var(--u-border-hover-checked);
118
+ --u-merged-shadow: var(--u-box-shadow-hover-checked);
119
+ `), c('&:focus', `
120
+ --u-merged-color: var(--u-color-focus-checked);
121
+ --u-merged-border: var(--u-border-focus-checked);
122
+ --u-merged-shadow: var(--u-box-shadow-focus-checked);
123
+ `), c('&:active', `
124
+ --u-merged-color: var(--u-color-active-checked);
125
+ --u-merged-border: var(--u-border-active-checked);
126
+ --u-merged-shadow: var(--u-box-shadow-active-checked);
127
+ `), cM('disabled', `
128
+ --u-merged-color: var(--u-color-disabled-checked);
129
+ --u-merged-border: var(--u-border-disabled-checked);
130
+ --u-merged-shadow: transparent;
131
+ --u-merged-icon: var(--u-check-mark-color-disabled-checked);
110
132
  `)])]), cB('checkbox-box', `
111
133
  position: relative;
112
134
  flex-shrink: 0;
@@ -574,10 +574,13 @@ export default defineComponent({
574
574
  } }))
575
575
  ]
576
576
  : null,
577
- column.type === 'selection' ? (!isSummary ? (column.multiple === false ? (h(RenderSafeRadio, { key: currentPage, rowKey: rowKey, disabled: rowInfo.tmNode.disabled, onUpdateChecked: () => {
577
+ column.type === 'selection' ? (!isSummary ? (column.multiple === false ? (h(RenderSafeRadio, { key: currentPage, rowKey: rowKey, disabled: rowInfo.tmNode.disabled, onClick: (event) => {
578
+ event.stopPropagation();
579
+ }, onUpdateChecked: () => {
578
580
  handleRadioUpdateChecked(rowInfo.tmNode);
579
- } })) : (h(RenderSafeCheckbox, { key: currentPage, rowKey: rowKey, disabled: rowInfo.tmNode.disabled, onUpdateChecked: (checked, e) => {
580
- handleCheckboxUpdateChecked(rowInfo.tmNode, checked, e.shiftKey);
581
+ } })) : (h(RenderSafeCheckbox, { key: currentPage, rowKey: rowKey, disabled: rowInfo.tmNode.disabled, onUpdateChecked: (checked, event) => {
582
+ event.stopPropagation();
583
+ handleCheckboxUpdateChecked(rowInfo.tmNode, checked, event.shiftKey);
581
584
  } }))) : null) : column.type === 'expand' ? (!isSummary ? (!column.expandable ||
582
585
  ((_e = column.expandable) === null || _e === void 0 ? void 0 : _e.call(column, rowData)) ? (h(ExpandTrigger, { clsPrefix: mergedClsPrefix, expanded: expanded, renderExpandIcon: this.renderExpandIcon, onClick: () => {
583
586
  handleUpdateExpanded(rowKey, null);
@@ -13,6 +13,9 @@ declare const _default: import("vue").DefineComponent<{
13
13
  type: PropType<(checked: boolean) => void>;
14
14
  required: true;
15
15
  };
16
+ onClick: {
17
+ type: PropType<(event: MouseEvent) => void>;
18
+ };
16
19
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
17
20
  rowKey: {
18
21
  type: PropType<RowKey>;
@@ -26,5 +29,8 @@ declare const _default: import("vue").DefineComponent<{
26
29
  type: PropType<(checked: boolean) => void>;
27
30
  required: true;
28
31
  };
32
+ onClick: {
33
+ type: PropType<(event: MouseEvent) => void>;
34
+ };
29
35
  }>>, {}, {}>;
30
36
  export default _default;
@@ -16,6 +16,9 @@ export default defineComponent({
16
16
  onUpdateChecked: {
17
17
  type: Function,
18
18
  required: true
19
+ },
20
+ onClick: {
21
+ type: Function
19
22
  }
20
23
  },
21
24
  setup(props) {
@@ -24,7 +27,7 @@ export default defineComponent({
24
27
  } = inject(dataTableInjectionKey);
25
28
  return () => {
26
29
  const { rowKey } = props;
27
- return (h(URadio, { name: componentId, disabled: props.disabled, checked: mergedCheckedRowKeySetRef.value.has(rowKey), onUpdateChecked: props.onUpdateChecked, size: sizeRef.value }));
30
+ return (h(URadio, { name: componentId, disabled: props.disabled, checked: mergedCheckedRowKeySetRef.value.has(rowKey), onUpdateChecked: props.onUpdateChecked, onClick: props.onClick, size: sizeRef.value }));
28
31
  };
29
32
  }
30
33
  });
@@ -47,6 +47,7 @@ export declare const datePickerProps: {
47
47
  readonly shortcuts: PropType<Shortcuts>;
48
48
  readonly defaultShortcuts: BooleanConstructor;
49
49
  readonly isDateDisabled: PropType<IsDateDisabled>;
50
+ readonly maxDate: PropType<number | undefined>;
50
51
  readonly isTimeDisabled: PropType<IsTimeDisabled>;
51
52
  readonly show: {
52
53
  readonly type: PropType<boolean | undefined>;
@@ -2148,6 +2149,7 @@ declare const _default: import("vue").DefineComponent<{
2148
2149
  readonly shortcuts: PropType<Shortcuts>;
2149
2150
  readonly defaultShortcuts: BooleanConstructor;
2150
2151
  readonly isDateDisabled: PropType<IsDateDisabled>;
2152
+ readonly maxDate: PropType<number | undefined>;
2151
2153
  readonly isTimeDisabled: PropType<IsTimeDisabled>;
2152
2154
  readonly show: {
2153
2155
  readonly type: PropType<boolean | undefined>;
@@ -5448,6 +5450,7 @@ declare const _default: import("vue").DefineComponent<{
5448
5450
  readonly shortcuts: PropType<Shortcuts>;
5449
5451
  readonly defaultShortcuts: BooleanConstructor;
5450
5452
  readonly isDateDisabled: PropType<IsDateDisabled>;
5453
+ readonly maxDate: PropType<number | undefined>;
5451
5454
  readonly isTimeDisabled: PropType<IsTimeDisabled>;
5452
5455
  readonly show: {
5453
5456
  readonly type: PropType<boolean | undefined>;
@@ -30,7 +30,7 @@ export const datePickerProps = Object.assign(Object.assign({}, useTheme.props),
30
30
  }, value: [Number, Array], formattedValue: [String, Array], size: String, type: {
31
31
  type: String,
32
32
  default: 'date'
33
- }, valueFormat: String, separator: String, placeholder: String, startPlaceholder: String, endPlaceholder: String, format: String, dateFormat: String, timeFormat: String, actions: Array, shortcuts: Object, defaultShortcuts: Boolean, isDateDisabled: Function, isTimeDisabled: Function, show: {
33
+ }, valueFormat: String, separator: String, placeholder: String, startPlaceholder: String, endPlaceholder: String, format: String, dateFormat: String, timeFormat: String, actions: Array, shortcuts: Object, defaultShortcuts: Boolean, isDateDisabled: Function, maxDate: Number, isTimeDisabled: Function, show: {
34
34
  type: Boolean,
35
35
  default: undefined
36
36
  }, panel: Boolean, ranges: Object, firstDayOfWeek: Number, inputReadonly: Boolean, closeOnSelect: Boolean, status: String, timePickerProps: [Object, Array], onClear: Function, onConfirm: Function, defaultCalendarStartTime: Number, defaultCalendarEndTime: Number, bindCalendarMonths: Boolean, 'onUpdate:show': [Function, Array], onUpdateShow: [Function, Array], 'onUpdate:formattedValue': [Function, Array], onUpdateFormattedValue: [Function, Array], 'onUpdate:value': [Function, Array], onUpdateValue: [Function, Array], onFocus: [Function, Array], onBlur: [Function, Array],
@@ -564,7 +564,7 @@ export default defineComponent({
564
564
  const dualValidation = dualCalendarValidation(props, pendingValueRef);
565
565
  provide(datePickerInjectionKey, Object.assign(Object.assign(Object.assign({ mergedClsPrefixRef, mergedThemeRef: themeRef, timePickerSizeRef,
566
566
  localeRef,
567
- dateLocaleRef, firstDayOfWeekRef: toRef(props, 'firstDayOfWeek'), isDateDisabledRef: toRef(props, 'isDateDisabled'), rangesRef: toRef(props, 'ranges'), timePickerPropsRef: toRef(props, 'timePickerProps'), closeOnSelectRef: toRef(props, 'closeOnSelect'), updateValueOnCloseRef: toRef(props, 'updateValueOnClose') }, uniVaidation), dualValidation), { datePickerSlots: slots }));
567
+ dateLocaleRef, firstDayOfWeekRef: toRef(props, 'firstDayOfWeek'), isDateDisabledRef: toRef(props, 'isDateDisabled'), maxDateRef: toRef(props, 'maxDate'), rangesRef: toRef(props, 'ranges'), timePickerPropsRef: toRef(props, 'timePickerProps'), closeOnSelectRef: toRef(props, 'closeOnSelect'), updateValueOnCloseRef: toRef(props, 'updateValueOnClose') }, uniVaidation), dualValidation), { datePickerSlots: slots }));
568
568
  const exposedMethods = {
569
569
  focus: () => {
570
570
  var _a;
@@ -61,6 +61,7 @@ export type DatePickerInjection = {
61
61
  localeRef: Ref<ULocale['DatePicker']>;
62
62
  dateLocaleRef: Ref<UDateLocale>;
63
63
  isDateDisabledRef: Ref<IsDateDisabled | undefined>;
64
+ maxDateRef: Ref<number | undefined>;
64
65
  rangesRef: Ref<Record<string, [number, number]> | undefined>;
65
66
  closeOnSelectRef: Ref<boolean>;
66
67
  updateValueOnCloseRef: Ref<boolean>;
@@ -11,7 +11,7 @@ const useCalendarProps = Object.assign(Object.assign({}, usePanelCommonProps), {
11
11
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
12
12
  function useCalendar(props, type) {
13
13
  const panelCommon = usePanelCommon(props);
14
- const { isValueInvalidRef, isDateDisabledRef, isDateInvalidRef, isTimeInvalidRef, isDateTimeInvalidRef, isHourDisabledRef, isMinuteDisabledRef, isSecondDisabledRef, localeRef, firstDayOfWeekRef, datePickerSlots
14
+ const { isValueInvalidRef, isDateDisabledRef, maxDateRef, isDateInvalidRef, isTimeInvalidRef, isDateTimeInvalidRef, isHourDisabledRef, isMinuteDisabledRef, isSecondDisabledRef, localeRef, firstDayOfWeekRef, datePickerSlots
15
15
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
16
16
  } = inject(datePickerInjectionKey);
17
17
  const validation = {
@@ -44,7 +44,7 @@ function useCalendar(props, type) {
44
44
  });
45
45
  const yearArrayRef = computed(() => {
46
46
  const { value } = props;
47
- return yearArray(Array.isArray(value) ? null : value, nowRef.value);
47
+ return yearArray(Array.isArray(value) ? null : value, nowRef.value, maxDateRef.value);
48
48
  });
49
49
  const quarterArrayRef = computed(() => {
50
50
  const { value } = props;
@@ -90,6 +90,9 @@ function useCalendar(props, type) {
90
90
  return getTime(startOfDay(value));
91
91
  }
92
92
  function mergedIsDateDisabled(ts) {
93
+ if (maxDateRef.value && ts > maxDateRef.value) {
94
+ return true;
95
+ }
93
96
  const { isDateDisabled: { value: isDateDisabled } } = validation;
94
97
  if (!isDateDisabled)
95
98
  return false;
@@ -11,7 +11,7 @@ const useDualCalendarProps = Object.assign(Object.assign({}, usePanelCommonProps
11
11
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
12
12
  function useDualCalendar(props, type) {
13
13
  var _a, _b;
14
- const { isDateDisabledRef, isStartHourDisabledRef, isEndHourDisabledRef, isStartMinuteDisabledRef, isEndMinuteDisabledRef, isStartSecondDisabledRef, isEndSecondDisabledRef, isStartDateInvalidRef, isEndDateInvalidRef, isStartTimeInvalidRef, isEndTimeInvalidRef, isStartValueInvalidRef, isEndValueInvalidRef, isRangeInvalidRef, localeRef, rangesRef, closeOnSelectRef, updateValueOnCloseRef, firstDayOfWeekRef, datePickerSlots
14
+ const { isDateDisabledRef, maxDateRef, isStartHourDisabledRef, isEndHourDisabledRef, isStartMinuteDisabledRef, isEndMinuteDisabledRef, isStartSecondDisabledRef, isEndSecondDisabledRef, isStartDateInvalidRef, isEndDateInvalidRef, isStartTimeInvalidRef, isEndTimeInvalidRef, isStartValueInvalidRef, isEndValueInvalidRef, isRangeInvalidRef, localeRef, rangesRef, closeOnSelectRef, updateValueOnCloseRef, firstDayOfWeekRef, datePickerSlots
15
15
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
16
16
  } = inject(datePickerInjectionKey);
17
17
  const validation = {
@@ -108,10 +108,10 @@ function useDualCalendar(props, type) {
108
108
  return shortcuts || rangesRef.value;
109
109
  });
110
110
  const startYearArrayRef = computed(() => {
111
- return yearArray(pluckValueFromRange(props.value, 'start'), nowRef.value);
111
+ return yearArray(pluckValueFromRange(props.value, 'start'), nowRef.value, maxDateRef.value);
112
112
  });
113
113
  const endYearArrayRef = computed(() => {
114
- return yearArray(pluckValueFromRange(props.value, 'end'), nowRef.value);
114
+ return yearArray(pluckValueFromRange(props.value, 'end'), nowRef.value, maxDateRef.value);
115
115
  });
116
116
  const startQuarterArrayRef = computed(() => {
117
117
  const startValue = pluckValueFromRange(props.value, 'start');
@@ -208,6 +208,9 @@ function useDualCalendar(props, type) {
208
208
  }
209
209
  // The function is used on date panel, not the date-picker value validation
210
210
  function mergedIsDateDisabled(ts) {
211
+ if (maxDateRef.value && ts > maxDateRef.value) {
212
+ return true;
213
+ }
211
214
  const isDateDisabled = isDateDisabledRef.value;
212
215
  if (!isDateDisabled)
213
216
  return false;
@@ -53,7 +53,7 @@ export type DateCommonItem = DateItem | MonthItem | YearItem | QuarterItem;
53
53
  declare function dateArray(monthTs: number, valueTs: number | [number, number] | null, currentTs: number, startDay: 0 | 1 | 2 | 3 | 4 | 5 | 6, strip?: boolean): DateItem[];
54
54
  declare function monthArray(yearAnchorTs: number, valueTs: number | null, currentTs: number): MonthItem[];
55
55
  declare function quarterArray(yearAnchorTs: number, valueTs: number | null, currentTs: number): QuarterItem[];
56
- declare function yearArray(valueTs: number | null, currentTs: number): YearItem[];
56
+ declare function yearArray(valueTs: number | null, currentTs: number, maxDate?: number): YearItem[];
57
57
  declare function strictParse(string: string, pattern: string, backup: Date, option: {
58
58
  locale: UDateLocale['locale'];
59
59
  }): Date;
@@ -153,10 +153,11 @@ function quarterArray(yearAnchorTs, valueTs, currentTs) {
153
153
  }
154
154
  return calendarQuarters;
155
155
  }
156
- function yearArray(valueTs, currentTs) {
156
+ function yearArray(valueTs, currentTs, maxDate) {
157
157
  const calendarYears = [];
158
158
  const time1900 = new Date(START_YEAR, 0, 1);
159
- let count = END_YEAR - START_YEAR + 1;
159
+ const endYear = maxDate ? new Date(maxDate).getFullYear() : END_YEAR;
160
+ let count = endYear - START_YEAR + 1;
160
161
  while (count--) {
161
162
  calendarYears.push(yearItem(getTime(addYears(time1900, count)), valueTs, currentTs));
162
163
  }
@@ -306,8 +306,8 @@ declare const _default: import("vue").DefineComponent<{
306
306
  size: import("./interface").Size;
307
307
  header: import("./interface").RenderableType;
308
308
  loadingSkeleton: boolean;
309
- rounded: boolean;
310
309
  clickable: boolean;
310
+ rounded: boolean;
311
311
  hoverable: boolean;
312
312
  showDivider: boolean;
313
313
  descriptionFirst: boolean;
@@ -1,5 +1,5 @@
1
- import { h, defineComponent, inject, computed, ref } from 'vue';
2
- import { call, createRefFromPropsAndInjection, throwError } from '../../_utils';
1
+ import { h, defineComponent, inject, computed, ref, watchEffect } from 'vue';
2
+ import { call, createRefFromPropsAndInjection, throwError, warnOnce } from '../../_utils';
3
3
  import { listInjectionKey, listItemProps } from './props';
4
4
  import { ChevronRightIcon } from '../../_internal/icons';
5
5
  import { UBaseIcon, UBaseSkeleton, InternalUText } from '../../_internal';
@@ -10,6 +10,13 @@ export default defineComponent({
10
10
  name: 'ListItem',
11
11
  props: Object.assign({}, listItemProps),
12
12
  setup(props, { slots }) {
13
+ if (process.env.NODE_ENV !== 'production') {
14
+ watchEffect(() => {
15
+ if (slots.avatar !== undefined) {
16
+ warnOnce('list-item', '`avatar` is deprecated, please use `prefix` instead.');
17
+ }
18
+ });
19
+ }
13
20
  const listInjection = inject(listInjectionKey, null);
14
21
  if (!listInjection) {
15
22
  throwError('list-item', '`u-list-item` must be placed in `u-list`.');
@@ -146,7 +146,13 @@ export default defineComponent({
146
146
  });
147
147
  const selectSizeRef = computed(() => {
148
148
  var _a, _b;
149
- return (((_b = (_a = mergedComponentPropsRef === null || mergedComponentPropsRef === void 0 ? void 0 : mergedComponentPropsRef.value) === null || _a === void 0 ? void 0 : _a.Pagination) === null || _b === void 0 ? void 0 : _b.selectSize) || props.size);
149
+ const selectSizes = {
150
+ small: 'small',
151
+ medium: 'small',
152
+ large: 'medium'
153
+ };
154
+ return (((_b = (_a = mergedComponentPropsRef === null || mergedComponentPropsRef === void 0 ? void 0 : mergedComponentPropsRef.value) === null || _a === void 0 ? void 0 : _a.Pagination) === null || _b === void 0 ? void 0 : _b.selectSize) ||
155
+ selectSizes[props.size]);
150
156
  });
151
157
  const startIndexRef = computed(() => {
152
158
  return (mergedPageRef.value - 1) * mergedPageSizeRef.value;
@@ -446,7 +452,7 @@ export default defineComponent({
446
452
  // eslint-disable-next-line no-case-declarations
447
453
  const fastForwardNode = this.fastForwardActive ? (h(UBaseIcon, { clsPrefix: mergedClsPrefix }, {
448
454
  default: () => this.rtlEnabled ? (h(FastBackwardIcon, null)) : (h(FastForwardIcon, null))
449
- })) : (h(UBaseIcon, { clsPrefix: mergedClsPrefix }, { default: () => h(MoreIcon, null) }));
455
+ })) : (h(UBaseIcon, { clsPrefix: mergedClsPrefix }, { default: () => h(MoreIcon, { class: "more-icon" }) }));
450
456
  if (renderLabel) {
451
457
  contentNode = renderLabel({
452
458
  type: 'fast-forward',
@@ -465,7 +471,7 @@ export default defineComponent({
465
471
  // eslint-disable-next-line no-case-declarations
466
472
  const fastBackwardNode = this.fastBackwardActive ? (h(UBaseIcon, { clsPrefix: mergedClsPrefix }, {
467
473
  default: () => this.rtlEnabled ? (h(FastForwardIcon, null)) : (h(FastBackwardIcon, null))
468
- })) : (h(UBaseIcon, { clsPrefix: mergedClsPrefix }, { default: () => h(MoreIcon, null) }));
474
+ })) : (h(UBaseIcon, { clsPrefix: mergedClsPrefix }, { default: () => h(MoreIcon, { class: "more-icon" }) }));
469
475
  if (renderLabel) {
470
476
  contentNode = renderLabel({
471
477
  type: 'fast-backward',
@@ -509,7 +515,7 @@ export default defineComponent({
509
515
  ? 'fast-backward'
510
516
  : 'fast-forward'
511
517
  : pageItem.type;
512
- return (h(UPopselect, { to: this.to, key: key, disabled: disabled, trigger: "hover", virtualScroll: true, style: { width: '60px' }, theme: mergedTheme.peers.Popselect, themeOverrides: mergedTheme.peerOverrides.Popselect, builtinThemeOverrides: {
518
+ return (h(UPopselect, { to: this.to, key: key, disabled: disabled, trigger: "hover", virtualScroll: true, style: { minWidth: '70px', textAlign: 'center' }, theme: mergedTheme.peers.Popselect, themeOverrides: mergedTheme.peerOverrides.Popselect, builtinThemeOverrides: {
513
519
  peers: {
514
520
  InternalSelectMenu: {
515
521
  height: 'calc(var(--u-option-height) * 4.6)'
@@ -563,7 +569,7 @@ export default defineComponent({
563
569
  case 'size-picker': {
564
570
  return !simple && showSizePicker ? (h("div", { class: `${mergedClsPrefix}-pagination-size-picker` },
565
571
  h(USelect, Object.assign({ consistentMenuWidth: false, placeholder: "", showCheckmark: false, to: this.to }, this.selectProps, { size: selectSize, options: pageSizeOptions, value: mergedPageSize, disabled: disabled, theme: mergedTheme.peers.Select, themeOverrides: mergedTheme.peerOverrides.Select, onUpdateValue: handleSizePickerChange })),
566
- h("span", { class: `${mergedClsPrefix}-label` }, `${sizePickerLabel || ''}`))) : null;
572
+ h("span", { class: `${mergedClsPrefix}-label` }, sizePickerLabel || ''))) : null;
567
573
  }
568
574
  case 'quick-jumper':
569
575
  return !simple && showQuickJumper ? (h("div", { class: `${mergedClsPrefix}-pagination-quick-jumper` },
@@ -1,4 +1,4 @@
1
- import { cB, c, cM, cNotM } from '../../../_utils/cssr';
1
+ import { cB, c, cM, cNotM, cE } from '../../../_utils/cssr';
2
2
  const hoverStyleProps = `
3
3
  background: var(--u-item-color-hover);
4
4
  color: var(--u-item-text-color-hover);
@@ -87,9 +87,9 @@ export default cB('pagination', `
87
87
  line-height: 20px;
88
88
  `), cB('base-selection-label', `
89
89
  background-color: var(--u-pagination-size-picker-background);
90
- `), cB('base-selection__border', `
90
+ `), cB('base-selection', [cE('border', `
91
91
  border-color: var(--u-pagination-size-picker-border);
92
- `)]), cB('pagination-quick-jumper', `
92
+ `)])]), cB('pagination-quick-jumper', `
93
93
  white-space: nowrap;
94
94
  display: flex;
95
95
  color: var(--u-jumper-text-color);
@@ -123,14 +123,19 @@ export default cB('pagination', `
123
123
  border-color .3s var(--u-bezier),
124
124
  background-color .3s var(--u-bezier),
125
125
  fill .3s var(--u-bezier);
126
- `, [cM('button', `
126
+ `, [c('&:has(.more-icon)', `
127
+ font-size: 24px;
128
+ `), cM('button', `
127
129
  background: var(--u-button-color);
128
130
  color: var(--u-button-icon-color);
129
131
  border: var(--u-button-border);
130
132
  padding: 0;
131
133
  `, [cB('base-icon', `
132
134
  font-size: var(--u-button-icon-size);
133
- `)]), cNotM('disabled', [cM('hover', hoverStyleProps, hoverStyleChildren), c('&:hover', hoverStyleProps, hoverStyleChildren), c('&:active', `
135
+ `)]), cNotM('disabled', [cNotM('clickable', `
136
+ width: 45px;
137
+ padding: 0;
138
+ `), cM('hover', hoverStyleProps, hoverStyleChildren), c('&:hover', hoverStyleProps, hoverStyleChildren), c('&:active', `
134
139
  font-weight: 700;
135
140
  background: var(--u-item-color-pressed);
136
141
  color: var(--u-item-text-color-pressed);