@uzum-tech/ui 1.5.0 → 1.5.2

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 (50) hide show
  1. package/dist/index.js +312 -314
  2. package/dist/index.prod.js +3 -3
  3. package/es/_internal/typography/src/styles/text.cssr.js +0 -1
  4. package/es/_internal/typography/styles/light.js +1 -1
  5. package/es/data-table/src/DataTable.d.ts +3 -0
  6. package/es/data-table/src/DataTable.js +1 -0
  7. package/es/data-table/src/TableParts/Body.d.ts +1 -0
  8. package/es/data-table/src/TableParts/Body.js +3 -3
  9. package/es/data-table/src/interface.d.ts +2 -0
  10. package/es/data-table/src/interface.js +1 -1
  11. package/es/list/src/List.d.ts +41 -55
  12. package/es/list/src/List.js +6 -10
  13. package/es/list/src/ListItem.d.ts +84 -25
  14. package/es/list/src/ListItem.js +116 -98
  15. package/es/list/src/interface.d.ts +1 -0
  16. package/es/list/src/props.d.ts +70 -31
  17. package/es/list/src/props.js +25 -5
  18. package/es/list/src/styles/index.cssr.js +32 -90
  19. package/es/list/styles/light.d.ts +5 -8
  20. package/es/list/styles/light.js +6 -9
  21. package/es/tag/src/styles/index.cssr.js +5 -1
  22. package/es/tag/styles/light.js +2 -2
  23. package/es/upload/src/UploadFile.js +4 -3
  24. package/es/version.d.ts +1 -1
  25. package/es/version.js +1 -1
  26. package/lib/_internal/typography/src/styles/text.cssr.js +0 -1
  27. package/lib/_internal/typography/styles/light.js +1 -1
  28. package/lib/data-table/src/DataTable.d.ts +3 -0
  29. package/lib/data-table/src/DataTable.js +1 -0
  30. package/lib/data-table/src/TableParts/Body.d.ts +1 -0
  31. package/lib/data-table/src/TableParts/Body.js +3 -3
  32. package/lib/data-table/src/interface.d.ts +2 -0
  33. package/lib/data-table/src/interface.js +1 -1
  34. package/lib/list/src/List.d.ts +41 -55
  35. package/lib/list/src/List.js +6 -10
  36. package/lib/list/src/ListItem.d.ts +84 -25
  37. package/lib/list/src/ListItem.js +115 -97
  38. package/lib/list/src/interface.d.ts +1 -0
  39. package/lib/list/src/props.d.ts +70 -31
  40. package/lib/list/src/props.js +25 -5
  41. package/lib/list/src/styles/index.cssr.js +32 -90
  42. package/lib/list/styles/light.d.ts +5 -8
  43. package/lib/list/styles/light.js +6 -9
  44. package/lib/tag/src/styles/index.cssr.js +5 -1
  45. package/lib/tag/styles/light.js +2 -2
  46. package/lib/upload/src/UploadFile.js +4 -3
  47. package/lib/version.d.ts +1 -1
  48. package/lib/version.js +1 -1
  49. package/package.json +1 -1
  50. package/web-types.json +62 -35
@@ -8,6 +8,7 @@ const _mixins_1 = require("../../_mixins");
8
8
  const styles_1 = require("../styles");
9
9
  const index_cssr_1 = __importDefault(require("./styles/index.cssr"));
10
10
  const props_1 = require("./props");
11
+ const _utils_1 = require("../../_utils");
11
12
  exports.default = (0, vue_1.defineComponent)({
12
13
  name: 'List',
13
14
  props: props_1.listProps,
@@ -23,11 +24,10 @@ exports.default = (0, vue_1.defineComponent)({
23
24
  acc[item] = (0, vue_1.toRef)(props, item);
24
25
  return acc;
25
26
  }, {});
26
- (0, vue_1.provide)(props_1.listInjectionKey, Object.assign(Object.assign(Object.assign({}, booleanInjectedRefs), renderableInjectedRefs), { tag: (0, vue_1.toRef)(props, 'itemTag'), mergedClsPrefix: mergedClsPrefixRef, onClick: (0, vue_1.toRef)(props, 'onClick'), onKeypress: (0, vue_1.toRef)(props, 'onKeypress'), onPress: (0, vue_1.toRef)(props, 'onPress'), onBlur: (0, vue_1.toRef)(props, 'onBlur'), onFocus: (0, vue_1.toRef)(props, 'onFocus'), bordered: (0, vue_1.toRef)(props, 'bordered'), clickable: (0, vue_1.toRef)(props, 'clickable'), showDivider: (0, vue_1.toRef)(props, 'showDivider') }));
27
+ (0, vue_1.provide)(props_1.listInjectionKey, Object.assign(Object.assign(Object.assign({}, booleanInjectedRefs), renderableInjectedRefs), { tag: (0, vue_1.toRef)(props, 'itemTag'), mergedClsPrefix: mergedClsPrefixRef, onClick: (0, vue_1.toRef)(props, 'onClick'), onKeypress: (0, vue_1.toRef)(props, 'onKeypress'), onPress: (0, vue_1.toRef)(props, 'onPress'), onBlur: (0, vue_1.toRef)(props, 'onBlur'), onFocus: (0, vue_1.toRef)(props, 'onFocus'), bordered: (0, vue_1.toRef)(props, 'bordered'), clickable: (0, vue_1.toRef)(props, 'clickable'), showDivider: (0, vue_1.toRef)(props, 'showDivider'), size: (0, vue_1.toRef)(props, 'size') }));
27
28
  const cssVarsRef = (0, vue_1.computed)(() => {
28
- const { common: { cubicBezierEaseInOut }, self: { fontSize, textColor, color, colorModal, colorPopover, borderColor, borderColorModal, borderColorPopover, borderRadius, colorHover, colorHoverModal, colorHoverPopover, padding, iconSize, iconSpace, suffixSpace, prefixSpace, titleSize, titleLineHeight, subtitleSize, subtitleLineHeight, subtitleColor, avatarSpace, minHeight, colorFocus, pressedScale, textColorDisabled } } = themeRef.value;
29
+ const { common: { cubicBezierEaseInOut }, self: { textColor, color, colorModal, colorPopover, borderColor, borderColorModal, borderColorPopover, colorHover, colorHoverModal, colorHoverPopover, padding, iconSize, iconSpace, suffixSpace, prefixSpace, subtitleColor, avatarSpace, colorFocus, pressedScale, textColorDisabled, suffixSize, [(0, _utils_1.createKey)('borderRadius', props.size)]: borderRadius } } = themeRef.value;
29
30
  return {
30
- '--u-font-size': fontSize,
31
31
  '--u-bezier': cubicBezierEaseInOut,
32
32
  '--u-text-color': textColor,
33
33
  '--u-color': color,
@@ -40,21 +40,17 @@ exports.default = (0, vue_1.defineComponent)({
40
40
  '--u-color-hover': colorHover,
41
41
  '--u-color-hover-modal': colorHoverModal,
42
42
  '--u-color-hover-popover': colorHoverPopover,
43
- '--u-padding': padding,
44
43
  '--u-icon-size': iconSize,
45
44
  '--u-icon-space': iconSpace,
46
45
  '--u-suffix-space': suffixSpace,
47
46
  '--u-prefix-space': prefixSpace,
48
- '--u-title-size': titleSize,
49
- '--u-title-line-height': titleLineHeight,
50
- '--u-subtitle-size': subtitleSize,
51
- '--u-subtitle-line-height': subtitleLineHeight,
52
47
  '--u-subtitle-color': subtitleColor,
53
48
  '--u-avatar-space': avatarSpace,
54
- '--u-min-height': minHeight,
55
49
  '--u-color-focus': colorFocus,
56
50
  '--u-pressed-scale': pressedScale,
57
- '--u-text-color-disabled': textColorDisabled
51
+ '--u-text-color-disabled': textColorDisabled,
52
+ '--u-padding': padding,
53
+ '--u-suffix-size': suffixSize
58
54
  };
59
55
  });
60
56
  const themeClassHandle = inlineThemeDisabled
@@ -1,11 +1,45 @@
1
- import { ComputedRef, Slot } from 'vue';
1
+ import { ComputedRef, Slot, Component } from 'vue';
2
2
  import { ArrayEmptyHandler, ArrayKeyboardHandler, ArrayMouseHandler, KeyboardEventHandler, ArrayFocusHandler, MouseEventHandler } from '../../_utils';
3
- import { ListItemPropsRenderable, RenderableType } from './interface';
3
+ import { HeaderPropObject, DescriptionPropsObject } from './props';
4
+ import { Size } from './interface';
4
5
  declare const _default: import("vue").DefineComponent<{
6
+ avatar: {
7
+ type: import("vue").PropType<import("../../avatar").AvatarProps & {
8
+ icon: Component;
9
+ hasBadge?: boolean;
10
+ }>;
11
+ default: () => {};
12
+ };
13
+ badge: {
14
+ type: import("vue").PropType<import("../../badge").BadgeProps>;
15
+ default: () => {};
16
+ };
5
17
  tag: {
6
18
  type: StringConstructor;
7
19
  default: undefined;
8
20
  };
21
+ prefixAlign: {
22
+ type: import("vue").PropType<"start" | "center" | "end">;
23
+ default: string;
24
+ };
25
+ suffixAlign: {
26
+ type: import("vue").PropType<"start" | "center" | "end">;
27
+ default: string;
28
+ };
29
+ loadingPrefix: BooleanConstructor;
30
+ loadingSuffix: BooleanConstructor;
31
+ header: {
32
+ type: import("vue").PropType<HeaderPropObject>;
33
+ };
34
+ description: {
35
+ type: import("vue").PropType<DescriptionPropsObject>;
36
+ };
37
+ headerSide: {
38
+ type: import("vue").PropType<HeaderPropObject>;
39
+ };
40
+ descriptionSide: {
41
+ type: import("vue").PropType<DescriptionPropsObject>;
42
+ };
9
43
  onClick: {
10
44
  type: import("vue").PropType<ArrayMouseHandler | undefined>;
11
45
  default: undefined;
@@ -34,24 +68,16 @@ declare const _default: import("vue").DefineComponent<{
34
68
  disabled: import("./interface").BooleanProp;
35
69
  loading: import("./interface").BooleanProp;
36
70
  loadingSkeleton: import("./interface").BooleanProp;
37
- header: import("./interface").RenderableProp;
38
- description: import("./interface").RenderableProp;
39
- headerSide: import("./interface").RenderableProp;
40
- descriptionSide: import("./interface").RenderableProp;
41
71
  icon: import("./interface").RenderableProp;
42
- avatar: import("./interface").RenderableProp;
43
72
  }, {
44
73
  mergedClsPrefix: import("vue").Ref<string>;
45
- mergedShowIcon: ComputedRef<boolean | undefined>;
46
- mergedDescriptionFirst: ComputedRef<boolean | undefined>;
47
- mergedColumnsEven: ComputedRef<boolean | undefined>;
48
- mergedRounded: ComputedRef<boolean | undefined>;
74
+ mergedHoverable: ComputedRef<boolean | undefined>;
49
75
  mergedDisabled: ComputedRef<boolean | undefined>;
50
76
  mergedLoading: ComputedRef<boolean | undefined>;
51
- mergedLoadingSkeleton: ComputedRef<boolean | undefined>;
52
- mergedHoverable: ComputedRef<boolean | undefined>;
77
+ mergedShowIcon: ComputedRef<boolean | undefined>;
78
+ mergedRounded: ComputedRef<boolean | undefined>;
53
79
  mergedTag: ComputedRef<string | undefined>;
54
- resolveFirst: (name: keyof ListItemPropsRenderable) => Slot | RenderableType | null;
80
+ resolveSlot: (name: string) => Slot | null;
55
81
  hasFocus: ComputedRef<boolean | undefined>;
56
82
  isPressed: import("vue").Ref<boolean>;
57
83
  handleClick: MouseEventHandler;
@@ -60,11 +86,45 @@ declare const _default: import("vue").DefineComponent<{
60
86
  handleFocus: (e: FocusEvent) => void;
61
87
  bordered: import("vue").Ref<boolean>;
62
88
  showDivider: import("vue").Ref<boolean>;
89
+ size: import("vue").Ref<Size>;
63
90
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
91
+ avatar: {
92
+ type: import("vue").PropType<import("../../avatar").AvatarProps & {
93
+ icon: Component;
94
+ hasBadge?: boolean;
95
+ }>;
96
+ default: () => {};
97
+ };
98
+ badge: {
99
+ type: import("vue").PropType<import("../../badge").BadgeProps>;
100
+ default: () => {};
101
+ };
64
102
  tag: {
65
103
  type: StringConstructor;
66
104
  default: undefined;
67
105
  };
106
+ prefixAlign: {
107
+ type: import("vue").PropType<"start" | "center" | "end">;
108
+ default: string;
109
+ };
110
+ suffixAlign: {
111
+ type: import("vue").PropType<"start" | "center" | "end">;
112
+ default: string;
113
+ };
114
+ loadingPrefix: BooleanConstructor;
115
+ loadingSuffix: BooleanConstructor;
116
+ header: {
117
+ type: import("vue").PropType<HeaderPropObject>;
118
+ };
119
+ description: {
120
+ type: import("vue").PropType<DescriptionPropsObject>;
121
+ };
122
+ headerSide: {
123
+ type: import("vue").PropType<HeaderPropObject>;
124
+ };
125
+ descriptionSide: {
126
+ type: import("vue").PropType<DescriptionPropsObject>;
127
+ };
68
128
  onClick: {
69
129
  type: import("vue").PropType<ArrayMouseHandler | undefined>;
70
130
  default: undefined;
@@ -93,32 +153,31 @@ declare const _default: import("vue").DefineComponent<{
93
153
  disabled: import("./interface").BooleanProp;
94
154
  loading: import("./interface").BooleanProp;
95
155
  loadingSkeleton: import("./interface").BooleanProp;
96
- header: import("./interface").RenderableProp;
97
- description: import("./interface").RenderableProp;
98
- headerSide: import("./interface").RenderableProp;
99
- descriptionSide: import("./interface").RenderableProp;
100
156
  icon: import("./interface").RenderableProp;
101
- avatar: import("./interface").RenderableProp;
102
157
  }>>, {
103
158
  onFocus: ArrayFocusHandler | undefined;
104
159
  onBlur: ArrayFocusHandler | undefined;
105
160
  onKeypress: ArrayKeyboardHandler | undefined;
106
161
  onClick: ArrayMouseHandler | undefined;
107
- icon: RenderableType;
108
- avatar: RenderableType;
162
+ icon: import("./interface").RenderableType;
163
+ avatar: import("../../avatar").AvatarProps & {
164
+ icon: Component;
165
+ hasBadge?: boolean;
166
+ };
109
167
  disabled: boolean;
110
168
  loading: boolean;
111
- description: RenderableType;
112
169
  tag: string;
113
170
  showIcon: boolean;
114
- header: RenderableType;
171
+ badge: import("../../badge").BadgeProps;
115
172
  loadingSkeleton: boolean;
116
173
  rounded: boolean;
117
174
  hoverable: boolean;
118
175
  descriptionFirst: boolean;
119
176
  columnsEven: boolean;
120
- headerSide: RenderableType;
121
- descriptionSide: RenderableType;
122
177
  onPress: ArrayEmptyHandler | undefined;
178
+ prefixAlign: "center" | "end" | "start";
179
+ suffixAlign: "center" | "end" | "start";
180
+ loadingPrefix: boolean;
181
+ loadingSuffix: boolean;
123
182
  }, {}>;
124
183
  export default _default;
@@ -5,9 +5,12 @@ const _utils_1 = require("../../_utils");
5
5
  const props_1 = require("./props");
6
6
  const icons_1 = require("../../_internal/icons");
7
7
  const _internal_1 = require("../../_internal");
8
+ const avatar_1 = require("../../avatar");
9
+ const icon_1 = require("../../icon");
10
+ const badge_1 = require("../../badge");
8
11
  exports.default = (0, vue_1.defineComponent)({
9
12
  name: 'ListItem',
10
- props: props_1.listItemProps,
13
+ props: Object.assign({}, props_1.listItemProps),
11
14
  setup(props, { slots }) {
12
15
  const listInjection = (0, vue_1.inject)(props_1.listInjectionKey, null);
13
16
  if (!listInjection) {
@@ -22,23 +25,21 @@ exports.default = (0, vue_1.defineComponent)({
22
25
  const mergedHoverable = createRef('hoverable');
23
26
  const mergedDisabled = createRef('disabled');
24
27
  const mergedLoading = createRef('loading');
25
- const mergedLoadingSkeleton = createRef('loadingSkeleton');
28
+ const mergedShowIcon = createRef('showIcon');
29
+ const mergedRounded = createRef('rounded');
26
30
  const mergedClickHandler = createRef('onClick');
27
31
  const mergedKeypressHandler = createRef('onKeypress');
28
32
  const mergedPressHandler = createRef('onPress');
29
33
  const mergedBlurHandler = createRef('onBlur');
30
34
  const mergedFocusHandler = createRef('onFocus');
31
- const hasFocus = (0, vue_1.computed)(() => {
32
- return !mergedDisabled.value && mergedHoverable.value;
33
- });
35
+ const hasFocus = (0, vue_1.computed)(() => !mergedDisabled.value && mergedHoverable.value);
34
36
  const isPressed = (0, vue_1.ref)(false);
35
37
  const handleClick = (e) => {
36
38
  if (!mergedDisabled.value) {
37
39
  if (mergedClickHandler.value)
38
40
  (0, _utils_1.call)(mergedClickHandler.value, e);
39
- if (e.which === 1 || e.button === 0) {
41
+ if (e.which === 1 || e.button === 0)
40
42
  handlePress('mouseup');
41
- }
42
43
  }
43
44
  };
44
45
  const handleKeyPress = (e) => {
@@ -46,61 +47,45 @@ exports.default = (0, vue_1.defineComponent)({
46
47
  const { code } = e;
47
48
  if (code === 'Enter' || code === 'Space' || code === 'NumpadEnter') {
48
49
  e.preventDefault();
49
- if (!e.repeat) {
50
+ if (!e.repeat)
50
51
  handlePress('keyup');
51
- }
52
52
  }
53
53
  if (mergedKeypressHandler.value)
54
54
  (0, _utils_1.call)(mergedKeypressHandler.value, e);
55
55
  }
56
56
  };
57
57
  const handleBlur = (e) => {
58
- if (hasFocus.value) {
59
- if (mergedBlurHandler.value)
60
- (0, _utils_1.call)(mergedBlurHandler.value, e);
58
+ if (hasFocus.value && mergedBlurHandler.value) {
59
+ (0, _utils_1.call)(mergedBlurHandler.value, e);
61
60
  }
62
61
  };
63
62
  const handleFocus = (e) => {
64
- if (hasFocus.value) {
65
- if (mergedFocusHandler.value)
66
- (0, _utils_1.call)(mergedFocusHandler.value, e);
63
+ if (hasFocus.value && mergedFocusHandler.value) {
64
+ (0, _utils_1.call)(mergedFocusHandler.value, e);
67
65
  }
68
66
  };
69
67
  const handlePress = (eventName) => {
70
- if (mergedDisabled.value ||
71
- mergedLoading.value ||
72
- mergedLoadingSkeleton.value) {
68
+ if (mergedDisabled.value || mergedLoading.value)
73
69
  return;
74
- }
75
70
  if (mergedPressHandler.value)
76
71
  (0, _utils_1.call)(mergedPressHandler.value);
77
72
  if (hasFocus.value) {
78
73
  isPressed.value = true;
79
74
  window.addEventListener(eventName, () => {
80
75
  isPressed.value = false;
81
- }, {
82
- once: true,
83
- passive: true
84
- });
76
+ }, { once: true, passive: true });
85
77
  }
86
78
  };
87
- const resolveFirst = (name) => {
88
- if (!(name in props))
89
- return null;
90
- return props[name] || slots[name] || listInjection[name].value || null;
91
- };
79
+ const resolveSlot = (name) => slots[name] || null;
92
80
  return {
93
81
  mergedClsPrefix: listInjection.mergedClsPrefix,
94
- mergedShowIcon: createRef('showIcon'),
95
- mergedDescriptionFirst: createRef('descriptionFirst'),
96
- mergedColumnsEven: createRef('columnsEven'),
97
- mergedRounded: createRef('rounded'),
82
+ mergedHoverable,
98
83
  mergedDisabled,
99
84
  mergedLoading,
100
- mergedLoadingSkeleton,
101
- mergedHoverable,
85
+ mergedShowIcon,
86
+ mergedRounded,
102
87
  mergedTag: createRef('tag'),
103
- resolveFirst,
88
+ resolveSlot,
104
89
  hasFocus,
105
90
  isPressed,
106
91
  handleClick,
@@ -108,14 +93,18 @@ exports.default = (0, vue_1.defineComponent)({
108
93
  handleBlur,
109
94
  handleFocus,
110
95
  bordered: listInjection.bordered,
111
- showDivider: listInjection.showDivider
96
+ showDivider: listInjection.showDivider,
97
+ size: listInjection.size
112
98
  };
113
99
  },
114
100
  render() {
115
- const { $slots, mergedClsPrefix, resolveFirst, showDivider } = this;
101
+ var _a, _b, _c, _d, _e, _f;
102
+ const { $slots, mergedClsPrefix, showDivider, prefixAlign, suffixAlign, size, resolveSlot } = this;
116
103
  const mergedTag = this.mergedTag || 'ul';
104
+ const skeletonOn = !!this.mergedLoading;
117
105
  const sharedCls = [
118
106
  `${mergedClsPrefix}-list-item`,
107
+ `${mergedClsPrefix}-list-item--${size}`,
119
108
  this.mergedHoverable && `${mergedClsPrefix}-list-item--hoverable`,
120
109
  this.mergedRounded && `${mergedClsPrefix}-list-item--rounded`,
121
110
  this.mergedDisabled && `${mergedClsPrefix}-list-item--disabled`,
@@ -129,70 +118,99 @@ exports.default = (0, vue_1.defineComponent)({
129
118
  onBlur: this.handleBlur,
130
119
  onFocus: this.handleFocus
131
120
  };
132
- const prefixNode = $slots.prefix && ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__prefix` }, $slots.prefix()));
133
- const suffixNode = $slots.suffix && ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__suffix` }, $slots.suffix()));
134
- if ($slots.default) {
135
- return (0, vue_1.h)(mergedTag, Object.assign({ class: [...sharedCls] }, sharedAttrs), [
136
- prefixNode,
137
- (0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__main` }, $slots.default()),
138
- suffixNode,
139
- showDivider && (0, vue_1.h)("hr", { class: `${mergedClsPrefix}-list-item__divider` })
140
- ]);
121
+ function renderIcon(icon) {
122
+ return () => (0, vue_1.h)(icon_1.UIcon, null, { default: () => (0, vue_1.h)(icon) });
141
123
  }
142
- else {
143
- let avatarNode, headerNode, descriptionNode, headerSideNode, descriptionSideNode, iconNode;
144
- const resolveAvatar = resolveFirst('avatar');
145
- const resolveHeader = resolveFirst('header');
146
- const resolveDescription = resolveFirst('description');
147
- const resolveHeaderSide = resolveFirst('headerSide');
148
- const resolveDescriptionSide = resolveFirst('descriptionSide');
149
- const resolveIcon = resolveFirst('icon');
150
- if (this.mergedLoading) {
151
- iconNode = ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__icon` },
152
- (0, vue_1.h)(_internal_1.UBaseLoading, { clsPrefix: mergedClsPrefix, key: "loading", strokeWidth: 20 })));
124
+ const renderAvatar = () => {
125
+ if (!Object.values(this.avatar).length)
126
+ return null;
127
+ const Avatar = ((0, vue_1.h)(avatar_1.UAvatar, Object.assign({ size: size }, this.avatar, { icon: undefined }), renderIcon(this.avatar.icon)));
128
+ return this.avatar.hasBadge ? ((0, vue_1.h)(badge_1.UBadge, Object.assign({}, this.badge), Avatar)) : (Avatar);
129
+ };
130
+ const prefixSkeletonSizes = {
131
+ large: 54,
132
+ medium: 48,
133
+ small: 42
134
+ };
135
+ const prefixSkeletonSize = prefixSkeletonSizes[size];
136
+ const prefixSkeletonborderRadius = this.avatar.circle ? 100 : 12;
137
+ const prefixNode = $slots.prefix || renderAvatar() ? ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__prefix ${mergedClsPrefix}-align-${prefixAlign}` }, skeletonOn || this.loadingPrefix ? ((0, vue_1.h)(_internal_1.UBaseSkeleton, { width: `${prefixSkeletonSize}px`, height: `${prefixSkeletonSize}px`, style: { borderRadius: `${prefixSkeletonborderRadius}px` } })) : $slots.prefix ? ($slots.prefix()) : (renderAvatar()))) : null;
138
+ const header = ((_a = this.header) === null || _a === void 0 ? void 0 : _a.text) || resolveSlot('header');
139
+ const description = ((_b = this.description) === null || _b === void 0 ? void 0 : _b.text) || resolveSlot('description');
140
+ const hasLeft = !!(header || description);
141
+ const textVariant = {
142
+ large: {
143
+ title: 'body-l-medium',
144
+ subtitle: 'body-m-medium'
145
+ },
146
+ medium: {
147
+ title: 'body-m-medium',
148
+ subtitle: 'body-s-medium'
149
+ },
150
+ small: {
151
+ title: 'body-l-medium',
152
+ subtitle: 'body-m-medium'
153
153
  }
154
- if (this.mergedLoadingSkeleton) {
155
- avatarNode = resolveAvatar && ((0, vue_1.h)(_internal_1.UBaseSkeleton, { class: `${mergedClsPrefix}-list-item__avatar`, circle: true, height: "48px" }));
156
- headerNode = resolveHeader && ((0, vue_1.h)(_internal_1.UBaseSkeleton, { class: `${mergedClsPrefix}-list-item__title`, text: true, sharp: false, style: "border-radius: 4px;" }));
157
- descriptionNode = resolveDescription && ((0, vue_1.h)(_internal_1.UBaseSkeleton, { class: `${mergedClsPrefix}-list-item__subtitle`, text: true, sharp: false, width: "82%", style: "border-radius: 4px;" }));
158
- headerSideNode = resolveHeaderSide && ((0, vue_1.h)(_internal_1.UBaseSkeleton, { class: `${mergedClsPrefix}-list-item__title`, text: true, sharp: false, width: "60%", style: "border-radius: 4px;" }));
159
- descriptionSideNode = resolveDescriptionSide && ((0, vue_1.h)(_internal_1.UBaseSkeleton, { class: `${mergedClsPrefix}-list-item__subtitle`, text: true, sharp: false, style: "border-radius: 4px;" }));
160
- iconNode = resolveIcon && ((0, vue_1.h)(_internal_1.UBaseSkeleton, { class: `${mergedClsPrefix}-list-item__icon`, circle: true, height: "24px" }));
154
+ };
155
+ const defaultHeaderProps = {
156
+ position: 'top',
157
+ variant: textVariant[size].title,
158
+ align: 'center',
159
+ skeleton: {
160
+ sharp: false,
161
+ height: '24px'
161
162
  }
162
- else {
163
- avatarNode = resolveAvatar && ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__avatar` }, resolveAvatar()));
164
- headerNode = resolveHeader && ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__title` }, resolveHeader()));
165
- descriptionNode = resolveDescription && ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__subtitle` }, resolveDescription()));
166
- headerSideNode = resolveHeaderSide && ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__title` }, resolveHeaderSide()));
167
- descriptionSideNode = resolveDescriptionSide && ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__subtitle` }, resolveDescriptionSide()));
168
- iconNode = this.mergedShowIcon ? ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__icon` }, resolveIcon ? ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__subtitle` }, resolveIcon())) : ((0, vue_1.h)(_internal_1.UBaseIcon, { clsPrefix: mergedClsPrefix }, () => (0, vue_1.h)(icons_1.ChevronRightIcon, null))))) : null;
163
+ };
164
+ const defaultDescriptionProps = {
165
+ position: 'bottom',
166
+ variant: textVariant[size].subtitle,
167
+ skeleton: {
168
+ sharp: false,
169
+ height: '24px'
169
170
  }
170
- const leftNode = headerNode || descriptionNode ? ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__content ${mergedClsPrefix}-list-item__content--left` },
171
- headerNode,
172
- descriptionNode)) : null;
173
- const rightNode = headerSideNode || descriptionSideNode ? ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__content ${mergedClsPrefix}-list-item__content--right` },
174
- headerSideNode,
175
- descriptionSideNode)) : null;
176
- return (0, vue_1.h)(mergedTag, Object.assign({ class: [
177
- ...sharedCls,
178
- `${mergedClsPrefix}-list-item--default`,
179
- this.mergedDescriptionFirst &&
180
- `${mergedClsPrefix}-list-item--description-first`,
181
- this.mergedColumnsEven &&
182
- `${mergedClsPrefix}-list-item--columns-even`,
183
- this.mergedLoadingSkeleton &&
184
- `${mergedClsPrefix}-list-item--loading-skeleton`
185
- ] }, sharedAttrs), [
186
- prefixNode,
187
- (0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__main` },
188
- avatarNode,
189
- (0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__text` },
190
- leftNode,
191
- rightNode),
192
- iconNode),
193
- suffixNode,
194
- showDivider && (0, vue_1.h)("hr", { class: `${mergedClsPrefix}-list-item__divider` })
195
- ]);
171
+ };
172
+ const headerProps = Object.assign(Object.assign(Object.assign({}, defaultHeaderProps), this.header), { skeleton: Object.assign(Object.assign({}, defaultHeaderProps.skeleton), (_c = this.header) === null || _c === void 0 ? void 0 : _c.skeleton) });
173
+ const descriptionProps = Object.assign(Object.assign(Object.assign({}, defaultDescriptionProps), this.description), { skeleton: Object.assign(Object.assign({}, defaultDescriptionProps.skeleton), (_d = this.description) === null || _d === void 0 ? void 0 : _d.skeleton) });
174
+ function renderTextNode(content, props, classSuffix) {
175
+ return content ? ((0, vue_1.h)(_internal_1.InternalUText, Object.assign({}, props, { text: undefined, align: undefined, skeleton: undefined, class: `${mergedClsPrefix}-list-item__${classSuffix}` }), skeletonOn || (props === null || props === void 0 ? void 0 : props.loading) ? ((0, vue_1.h)(_internal_1.UBaseSkeleton, Object.assign({}, props.skeletonPro, { style: { borderRadius: '6px' } }))) : typeof content === 'string' ? (props.text) : (content()))) : null;
196
176
  }
177
+ const headerNode = renderTextNode(header, headerProps, 'title');
178
+ const descriptionNode = renderTextNode(description, descriptionProps, 'subtitle');
179
+ const headerSide = ((_e = this.headerSide) === null || _e === void 0 ? void 0 : _e.text) || resolveSlot('headerSide');
180
+ const descriptionSide = ((_f = this.descriptionSide) === null || _f === void 0 ? void 0 : _f.text) || resolveSlot('descriptionSide');
181
+ const hasRight = !!(headerSide || descriptionSide);
182
+ const headerSideProps = Object.assign(Object.assign({}, defaultHeaderProps), this.headerSide);
183
+ const descriptionSideProps = Object.assign(Object.assign({}, defaultDescriptionProps), this.descriptionSide);
184
+ const headerSideNode = renderTextNode(headerSide, headerSideProps, 'title');
185
+ const descriptionSideNode = renderTextNode(descriptionSide, descriptionSideProps, 'subtitle');
186
+ const leftNode = hasLeft ? ((0, vue_1.h)("div", { class: [
187
+ `${mergedClsPrefix}-list-item__content`,
188
+ `${mergedClsPrefix}-list-item__content--left`,
189
+ headerProps.align && `${mergedClsPrefix}-align-${headerProps.align}`,
190
+ !(headerSide || descriptionSide) &&
191
+ `${mergedClsPrefix}-list-item__content--full`
192
+ ] }, (headerProps === null || headerProps === void 0 ? void 0 : headerProps.position) === 'top' && descriptionProps.position === 'bottom'
193
+ ? [headerNode, descriptionNode]
194
+ : [descriptionNode, headerNode])) : null;
195
+ const rightNode = hasRight ? ((0, vue_1.h)("div", { class: [
196
+ `${mergedClsPrefix}-list-item__content`,
197
+ `${mergedClsPrefix}-list-item__content--right`,
198
+ headerSideProps.align &&
199
+ `${mergedClsPrefix}-align-${headerSideProps.align}`,
200
+ !(header || description) &&
201
+ `${mergedClsPrefix}-list-item__content--full`
202
+ ] }, (headerSideProps === null || headerSideProps === void 0 ? void 0 : headerSideProps.position) === 'top' && descriptionSideProps.position === 'bottom'
203
+ ? [headerSideNode, descriptionSideNode]
204
+ : [descriptionSideNode, headerSideNode])) : null;
205
+ const suffixIcon = !skeletonOn && this.mergedShowIcon ? ((0, vue_1.h)(_internal_1.UBaseIcon, { clsPrefix: mergedClsPrefix }, () => (0, vue_1.h)(icons_1.ChevronRightIcon, null))) : null;
206
+ const suffixSkeletonSize = 24;
207
+ const suffixNode = ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__suffix ${mergedClsPrefix}-align-${suffixAlign}` }, (skeletonOn || this.loadingSuffix) && this.mergedShowIcon ? ((0, vue_1.h)(_internal_1.UBaseSkeleton, { width: `${suffixSkeletonSize}px`, height: `${suffixSkeletonSize}px`, circle: true })) : ([$slots.suffix ? $slots.suffix() : suffixIcon])));
208
+ return (0, vue_1.h)(mergedTag, Object.assign({ class: sharedCls }, sharedAttrs), [
209
+ prefixNode,
210
+ (0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__main` },
211
+ (0, vue_1.h)("div", { class: `${mergedClsPrefix}-list-item__text` }, $slots.default ? $slots.default() : [leftNode, rightNode])),
212
+ suffixNode,
213
+ showDivider && (0, vue_1.h)("hr", { class: `${mergedClsPrefix}-list-item__divider` })
214
+ ]);
197
215
  }
198
216
  });
@@ -1,6 +1,7 @@
1
1
  import { ExtractPublicPropTypes } from '../../_utils';
2
2
  import type { PropType, Ref } from 'vue';
3
3
  import { VNodeChild } from 'vue';
4
+ export type Size = 'small' | 'medium' | 'large';
4
5
  export interface BooleanProp {
5
6
  type: BooleanConstructor;
6
7
  default: undefined;