niuma-ui 2.0.2 → 2.0.4
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.
- package/CHANGELOG.md +61 -0
- package/README.md +2 -0
- package/README.zh-CN.md +2 -0
- package/dist/components/_shared/src/reka.d.ts +1 -1
- package/dist/components/_shared/src/reka.js +2 -2
- package/dist/components/anchor/index.d.ts +1 -1
- package/dist/components/anchor/src/RsAnchor.css +63 -32
- package/dist/components/anchor/src/RsAnchor.d.ts +29 -2
- package/dist/components/anchor/src/RsAnchor.impl.js +199 -81
- package/dist/components/anchor/src/RsAnchor.js +1 -1
- package/dist/components/anchor/src/anchor-utils.d.ts +36 -4
- package/dist/components/anchor/src/anchor-utils.js +81 -19
- package/dist/components/auto-complete/index.d.ts +2 -0
- package/dist/components/auto-complete/src/RsAutoComplete.css +122 -0
- package/dist/components/auto-complete/src/RsAutoComplete.d.ts +47 -7
- package/dist/components/auto-complete/src/RsAutoComplete.impl.js +180 -72
- package/dist/components/auto-complete/src/RsAutoComplete.js +4 -1
- package/dist/components/auto-complete/src/auto-complete-utils.d.ts +7 -0
- package/dist/components/auto-complete/src/auto-complete-utils.js +17 -0
- package/dist/components/avatar/index.d.ts +1 -0
- package/dist/components/avatar/src/RsAvatar.css +36 -19
- package/dist/components/avatar/src/RsAvatar.d.ts +9 -3
- package/dist/components/avatar/src/RsAvatar.impl.js +57 -33
- package/dist/components/avatar/src/RsAvatar.js +2 -1
- package/dist/components/avatar/src/avatar-utils.d.ts +16 -7
- package/dist/components/avatar/src/avatar-utils.js +41 -3
- package/dist/components/badge/index.d.ts +1 -0
- package/dist/components/badge/src/RsBadge.css +61 -8
- package/dist/components/badge/src/RsBadge.d.ts +19 -3
- package/dist/components/badge/src/RsBadge.impl.js +46 -3
- package/dist/components/badge/src/RsBadge.js +1 -1
- package/dist/components/badge/src/badge-utils.d.ts +11 -0
- package/dist/components/badge/src/badge-utils.js +32 -0
- package/dist/components/breadcrumb/index.d.ts +1 -1
- package/dist/components/breadcrumb/src/RsBreadcrumb.css +50 -17
- package/dist/components/breadcrumb/src/RsBreadcrumb.d.ts +45 -6
- package/dist/components/breadcrumb/src/RsBreadcrumb.impl.js +111 -12
- package/dist/components/breadcrumb/src/RsBreadcrumb.js +2 -1
- package/dist/components/breadcrumb/src/breadcrumb-utils.d.ts +37 -5
- package/dist/components/breadcrumb/src/breadcrumb-utils.js +70 -9
- package/dist/components/button/src/RsButton.css +87 -71
- package/dist/components/button/src/RsButton.d.ts +7 -3
- package/dist/components/button/src/RsButton.impl.js +43 -31
- package/dist/components/button/src/RsButton.js +1 -1
- package/dist/components/button/src/button-utils.d.ts +17 -0
- package/dist/components/button/src/button-utils.js +14 -1
- package/dist/components/calendar-grid/index.d.ts +2 -0
- package/dist/components/calendar-grid/src/RsCalendarGrid.css +105 -45
- package/dist/components/calendar-grid/src/RsCalendarGrid.d.ts +62 -2
- package/dist/components/calendar-grid/src/RsCalendarGrid.impl.js +265 -94
- package/dist/components/calendar-grid/src/RsCalendarGrid.js +1 -1
- package/dist/components/calendar-grid/src/calendar-grid-utils.d.ts +72 -0
- package/dist/components/calendar-grid/src/calendar-grid-utils.js +122 -0
- package/dist/components/card/index.d.ts +1 -1
- package/dist/components/card/src/RsCard.css +108 -98
- package/dist/components/card/src/RsCard.d.ts +3 -12
- package/dist/components/card/src/RsCard.impl.js +29 -25
- package/dist/components/card/src/RsCard.js +2 -1
- package/dist/components/card/src/card-utils.d.ts +25 -0
- package/dist/components/card/src/card-utils.js +10 -0
- package/dist/components/cascader/index.d.ts +1 -0
- package/dist/components/cascader/src/RsCascader.css +175 -30
- package/dist/components/cascader/src/RsCascader.d.ts +14 -2
- package/dist/components/cascader/src/RsCascader.impl.js +277 -48
- package/dist/components/cascader/src/RsCascader.js +1 -1
- package/dist/components/cascader/src/cascader-utils.d.ts +2 -0
- package/dist/components/cascader/src/cascader-utils.js +8 -1
- package/dist/components/checkbox/index.d.ts +1 -0
- package/dist/components/checkbox/src/RsCheckbox.css +46 -23
- package/dist/components/checkbox/src/RsCheckbox.d.ts +11 -1
- package/dist/components/checkbox/src/RsCheckbox.impl.js +37 -9
- package/dist/components/checkbox/src/RsCheckbox.js +2 -1
- package/dist/components/checkbox/src/checkbox-utils.d.ts +4 -0
- package/dist/components/checkbox/src/checkbox-utils.js +12 -0
- package/dist/components/container/index.d.ts +1 -1
- package/dist/components/container/src/RsContainer.css +11 -11
- package/dist/components/container/src/RsContainer.d.ts +2 -12
- package/dist/components/container/src/RsContainer.impl.js +10 -57
- package/dist/components/container/src/RsContainer.js +1 -1
- package/dist/components/container/src/container-utils.d.ts +23 -0
- package/dist/components/container/src/container-utils.js +51 -0
- package/dist/components/date-picker/index.d.ts +4 -2
- package/dist/components/date-picker/src/RsDatePicker.css +42 -22
- package/dist/components/date-picker/src/RsDatePicker.d.ts +44 -20
- package/dist/components/date-picker/src/RsDatePicker.impl.js +484 -222
- package/dist/components/date-picker/src/RsDatePicker.js +1 -3
- package/dist/components/date-picker/src/RsDateTimePicker.d.ts +33 -6
- package/dist/components/date-picker/src/RsDateTimePicker.impl.js +47 -6
- package/dist/components/date-picker/src/date-picker-utils.d.ts +19 -0
- package/dist/components/date-picker/src/date-picker-utils.js +33 -10
- package/dist/components/divider/index.d.ts +1 -0
- package/dist/components/divider/src/RsDivider.css +37 -22
- package/dist/components/divider/src/RsDivider.d.ts +4 -2
- package/dist/components/divider/src/RsDivider.impl.js +26 -12
- package/dist/components/divider/src/RsDivider.js +1 -1
- package/dist/components/divider/src/divider-utils.d.ts +4 -0
- package/dist/components/dynamic-tags/index.d.ts +1 -1
- package/dist/components/dynamic-tags/src/RsDynamicTags.css +115 -38
- package/dist/components/dynamic-tags/src/RsDynamicTags.d.ts +59 -18
- package/dist/components/dynamic-tags/src/RsDynamicTags.impl.js +269 -106
- package/dist/components/dynamic-tags/src/RsDynamicTags.js +1 -1
- package/dist/components/dynamic-tags/src/dynamic-tags-utils.d.ts +19 -0
- package/dist/components/dynamic-tags/src/dynamic-tags-utils.js +60 -0
- package/dist/components/fieldset/src/RsFieldset.css +71 -41
- package/dist/components/fieldset/src/RsFieldset.d.ts +21 -2
- package/dist/components/fieldset/src/RsFieldset.impl.js +93 -26
- package/dist/components/fieldset/src/RsFieldset.js +1 -1
- package/dist/components/fieldset/src/fieldset-utils.d.ts +4 -0
- package/dist/components/fieldset/src/fieldset-utils.js +9 -1
- package/dist/components/form/index.d.ts +1 -0
- package/dist/components/form/src/RsForm.css +15 -12
- package/dist/components/form/src/RsForm.d.ts +20 -22
- package/dist/components/form/src/RsForm.impl.js +33 -20
- package/dist/components/form/src/RsForm.js +1 -1
- package/dist/components/form/src/form-utils.d.ts +7 -0
- package/dist/components/form/src/form-utils.js +28 -1
- package/dist/components/icon/src/RsIcon.css +9 -4
- package/dist/components/icon/src/RsIcon.d.ts +4 -3
- package/dist/components/icon/src/RsIcon.impl.js +9 -32
- package/dist/components/icon/src/RsIcon.js +1 -1
- package/dist/components/icon/src/icon-utils.d.ts +17 -0
- package/dist/components/icon/src/icon-utils.js +39 -0
- package/dist/components/input/index.d.ts +1 -1
- package/dist/components/input/src/RsInput.css +78 -260
- package/dist/components/input/src/RsInput.d.ts +5 -3
- package/dist/components/input/src/RsInput.impl.js +8 -16
- package/dist/components/input/src/RsInput.js +1 -1
- package/dist/components/input/src/input-utils.d.ts +11 -0
- package/dist/components/input/src/input-utils.js +22 -0
- package/dist/components/input-number/index.d.ts +1 -0
- package/dist/components/input-number/src/RsInputNumber.css +31 -31
- package/dist/components/input-number/src/RsInputNumber.d.ts +15 -13
- package/dist/components/input-number/src/RsInputNumber.impl.js +17 -4
- package/dist/components/input-number/src/RsInputNumber.js +1 -1
- package/dist/components/label/src/RsLabel.css +30 -11
- package/dist/components/label/src/RsLabel.d.ts +18 -1
- package/dist/components/label/src/RsLabel.impl.js +63 -10
- package/dist/components/label/src/RsLabel.js +1 -1
- package/dist/components/label/src/label-utils.d.ts +6 -0
- package/dist/components/label/src/label-utils.js +16 -0
- package/dist/components/link/index.d.ts +1 -0
- package/dist/components/link/src/RsLink.css +58 -17
- package/dist/components/link/src/RsLink.d.ts +12 -4
- package/dist/components/link/src/RsLink.impl.js +26 -25
- package/dist/components/link/src/RsLink.js +2 -1
- package/dist/components/link/src/link-utils.d.ts +9 -0
- package/dist/components/link/src/link-utils.js +15 -0
- package/dist/components/loading/src/RsLoading.d.ts +2 -2
- package/dist/components/mentions/index.d.ts +2 -1
- package/dist/components/mentions/src/RsMentions.css +119 -3
- package/dist/components/mentions/src/RsMentions.d.ts +56 -4
- package/dist/components/mentions/src/RsMentions.impl.js +298 -79
- package/dist/components/mentions/src/RsMentions.js +1 -3
- package/dist/components/mentions/src/mentions-utils.d.ts +5 -1
- package/dist/components/mentions/src/mentions-utils.js +28 -9
- package/dist/components/popover/src/RsPopover.d.ts +1 -1
- package/dist/components/radio/index.d.ts +1 -1
- package/dist/components/radio/src/RsRadio.css +7 -6
- package/dist/components/radio/src/RsRadio.d.ts +8 -5
- package/dist/components/radio/src/RsRadio.impl.js +34 -24
- package/dist/components/radio/src/RsRadio.js +2 -1
- package/dist/components/radio/src/RsRadioItem.css +61 -44
- package/dist/components/radio/src/RsRadioItem.d.ts +2 -2
- package/dist/components/radio/src/RsRadioItem.impl.js +53 -20
- package/dist/components/radio/src/RsRadioItem.js +2 -1
- package/dist/components/radio/src/radio-utils.d.ts +12 -1
- package/dist/components/radio/src/radio-utils.js +15 -1
- package/dist/components/scrollbar/src/RsScrollbar.css +71 -24
- package/dist/components/scrollbar/src/RsScrollbar.d.ts +9 -5
- package/dist/components/scrollbar/src/RsScrollbar.impl.js +372 -47
- package/dist/components/scrollbar/src/RsScrollbar.js +2 -1
- package/dist/components/scrollbar/src/scrollbar-utils.d.ts +34 -2
- package/dist/components/scrollbar/src/scrollbar-utils.js +64 -1
- package/dist/components/select/index.d.ts +1 -0
- package/dist/components/select/src/RsSelect.css +54 -42
- package/dist/components/select/src/RsSelect.d.ts +19 -2
- package/dist/components/select/src/RsSelect.impl.js +727 -312
- package/dist/components/select/src/RsSelect.js +1 -1
- package/dist/components/select/src/select-utils.d.ts +4 -2
- package/dist/components/select/src/select-utils.js +8 -3
- package/dist/components/select/src/use-rs-select.d.ts +1 -0
- package/dist/components/select/src/use-rs-select.js +23 -17
- package/dist/components/switch/index.d.ts +2 -1
- package/dist/components/switch/src/RsSwitch.css +36 -18
- package/dist/components/switch/src/RsSwitch.d.ts +18 -5
- package/dist/components/switch/src/RsSwitch.impl.js +61 -29
- package/dist/components/switch/src/RsSwitch.js +2 -1
- package/dist/components/switch/src/switch-utils.d.ts +4 -0
- package/dist/components/switch/src/switch-utils.js +9 -0
- package/dist/components/tag/index.d.ts +1 -1
- package/dist/components/tag/src/RsTag.css +42 -38
- package/dist/components/tag/src/RsTag.d.ts +3 -2
- package/dist/components/tag/src/RsTag.impl.js +18 -9
- package/dist/components/tag/src/RsTag.js +1 -1
- package/dist/components/tag/src/tag-utils.d.ts +8 -0
- package/dist/components/terminal/src/RsTerminal.d.ts +1 -1
- package/dist/components/textarea/src/RsTextarea.css +23 -23
- package/dist/components/textarea/src/RsTextarea.d.ts +6 -12
- package/dist/components/textarea/src/RsTextarea.impl.js +37 -46
- package/dist/components/textarea/src/RsTextarea.js +1 -1
- package/dist/components/textarea/src/textarea-utils.d.ts +27 -0
- package/dist/components/textarea/src/textarea-utils.js +61 -0
- package/dist/components/time-picker/index.d.ts +3 -2
- package/dist/components/time-picker/src/RsTimePicker.css +41 -24
- package/dist/components/time-picker/src/RsTimePicker.d.ts +52 -7
- package/dist/components/time-picker/src/RsTimePicker.impl.js +520 -156
- package/dist/components/time-picker/src/RsTimePicker.js +1 -3
- package/dist/components/time-picker/src/RsTimePickerColumns.css +26 -18
- package/dist/components/time-picker/src/RsTimePickerColumns.d.ts +3 -1
- package/dist/components/time-picker/src/RsTimePickerColumns.impl.js +62 -9
- package/dist/components/time-picker/src/RsTimePickerColumns.js +1 -1
- package/dist/components/time-picker/src/time-picker-utils.d.ts +38 -0
- package/dist/components/time-picker/src/time-picker-utils.js +97 -5
- package/dist/components/toaster/src/RsToaster.d.ts +1 -1
- package/dist/components/tooltip/src/RsTooltip.d.ts +1 -1
- package/dist/components/tree/src/RsTree.d.ts +3 -3
- package/dist/components/tree-select/index.d.ts +2 -0
- package/dist/components/tree-select/src/RsTreeSelect.css +100 -25
- package/dist/components/tree-select/src/RsTreeSelect.d.ts +91 -7
- package/dist/components/tree-select/src/RsTreeSelect.impl.js +464 -79
- package/dist/components/tree-select/src/RsTreeSelect.js +1 -1
- package/dist/components/tree-select/src/tree-select-utils.d.ts +20 -0
- package/dist/components/tree-select/src/tree-select-utils.js +60 -0
- package/dist/components/upload/index.d.ts +2 -1
- package/dist/components/upload/src/RsUpload.css +223 -75
- package/dist/components/upload/src/RsUpload.d.ts +77 -1
- package/dist/components/upload/src/RsUpload.impl.js +404 -90
- package/dist/components/upload/src/RsUpload.js +1 -1
- package/dist/components/upload/src/upload-utils.d.ts +21 -2
- package/dist/components/upload/src/upload-utils.js +139 -9
- package/dist/index.d.ts +24 -11
- package/dist/index.js +6 -0
- package/dist/locale/messages.js +46 -2
- package/dist/styles.css +518 -154
- package/dist/theme/brand.example.css +1 -1
- package/package.json +9 -8
- package/dist/components/breadcrumb/src/RsBreadcrumbItems.d.ts +0 -8
- package/dist/components/breadcrumb/src/RsBreadcrumbItems.impl.js +0 -40
- package/dist/components/breadcrumb/src/RsBreadcrumbItems.js +0 -5
- package/dist/components/date-picker/src/RsDatePicker-1.css +0 -157
- package/dist/components/mentions/src/RsMentions-1.css +0 -29
- package/dist/components/time-picker/src/RsTimePicker-1.css +0 -98
|
@@ -1,35 +1,46 @@
|
|
|
1
1
|
|
|
2
|
-
.rs-avatar {
|
|
2
|
+
.rs-avatar[data-v-5eb19cf0] {
|
|
3
|
+
--rs-avatar-size-sm: 1.75rem;
|
|
4
|
+
--rs-avatar-size-md: 2.25rem;
|
|
5
|
+
--rs-avatar-size-lg: 3rem;
|
|
6
|
+
--rs-avatar-size: var(--rs-avatar-size-md);
|
|
7
|
+
position: relative;
|
|
3
8
|
display: inline-flex;
|
|
4
9
|
overflow: hidden;
|
|
5
10
|
flex-shrink: 0;
|
|
11
|
+
width: var(--rs-avatar-size);
|
|
12
|
+
height: var(--rs-avatar-size);
|
|
6
13
|
border: 1px solid var(--rs-border);
|
|
7
14
|
background: var(--rs-surface);
|
|
15
|
+
vertical-align: middle;
|
|
8
16
|
}
|
|
9
|
-
.rs-avatar--circle {
|
|
17
|
+
.rs-avatar--circle[data-v-5eb19cf0] {
|
|
10
18
|
border-radius: var(--rs-radius-full);
|
|
11
19
|
}
|
|
12
|
-
.rs-avatar--square {
|
|
20
|
+
.rs-avatar--square[data-v-5eb19cf0] {
|
|
13
21
|
border-radius: var(--rs-radius-sm);
|
|
14
22
|
}
|
|
15
|
-
.rs-avatar--sm {
|
|
16
|
-
|
|
17
|
-
height: 1.75rem;
|
|
23
|
+
.rs-avatar--sm[data-v-5eb19cf0] {
|
|
24
|
+
--rs-avatar-size: var(--rs-avatar-size-sm);
|
|
18
25
|
}
|
|
19
|
-
.rs-avatar--md {
|
|
20
|
-
|
|
21
|
-
height: 2.25rem;
|
|
26
|
+
.rs-avatar--md[data-v-5eb19cf0] {
|
|
27
|
+
--rs-avatar-size: var(--rs-avatar-size-md);
|
|
22
28
|
}
|
|
23
|
-
.rs-avatar--lg {
|
|
24
|
-
|
|
25
|
-
height: 3rem;
|
|
29
|
+
.rs-avatar--lg[data-v-5eb19cf0] {
|
|
30
|
+
--rs-avatar-size: var(--rs-avatar-size-lg);
|
|
26
31
|
}
|
|
27
|
-
.rs-avatar__image {
|
|
32
|
+
.rs-avatar__image[data-v-5eb19cf0] {
|
|
33
|
+
position: absolute;
|
|
34
|
+
inset: 0;
|
|
28
35
|
width: 100%;
|
|
29
36
|
height: 100%;
|
|
30
37
|
object-fit: cover;
|
|
38
|
+
opacity: 0;
|
|
31
39
|
}
|
|
32
|
-
.rs-
|
|
40
|
+
.rs-avatar__image--ready[data-v-5eb19cf0] {
|
|
41
|
+
opacity: 1;
|
|
42
|
+
}
|
|
43
|
+
.rs-avatar__fallback[data-v-5eb19cf0] {
|
|
33
44
|
display: flex;
|
|
34
45
|
align-items: center;
|
|
35
46
|
justify-content: center;
|
|
@@ -38,23 +49,29 @@
|
|
|
38
49
|
font-size: var(--rs-font-size-xs);
|
|
39
50
|
font-weight: var(--rs-font-weight-semibold);
|
|
40
51
|
}
|
|
41
|
-
.rs-avatar__fallback--default {
|
|
52
|
+
.rs-avatar__fallback--default[data-v-5eb19cf0] {
|
|
42
53
|
background: var(--rs-surface-hover);
|
|
43
54
|
color: var(--rs-muted);
|
|
44
55
|
}
|
|
45
|
-
.rs-avatar__fallback--primary {
|
|
56
|
+
.rs-avatar__fallback--primary[data-v-5eb19cf0] {
|
|
46
57
|
background: var(--rs-primary-container);
|
|
47
58
|
color: var(--rs-on-primary-container);
|
|
48
59
|
}
|
|
49
|
-
.rs-avatar__fallback--success {
|
|
60
|
+
.rs-avatar__fallback--success[data-v-5eb19cf0] {
|
|
50
61
|
background: var(--rs-success-container);
|
|
51
62
|
color: var(--rs-on-success-container);
|
|
52
63
|
}
|
|
53
|
-
.rs-avatar__fallback--warning {
|
|
64
|
+
.rs-avatar__fallback--warning[data-v-5eb19cf0] {
|
|
54
65
|
background: var(--rs-warning-container);
|
|
55
66
|
color: var(--rs-on-warning-container);
|
|
56
67
|
}
|
|
57
|
-
.rs-avatar__fallback--danger {
|
|
68
|
+
.rs-avatar__fallback--danger[data-v-5eb19cf0] {
|
|
58
69
|
background: var(--rs-danger-container);
|
|
59
70
|
color: var(--rs-on-danger-container);
|
|
60
71
|
}
|
|
72
|
+
@media (forced-colors: active) {
|
|
73
|
+
.rs-avatar[data-v-5eb19cf0] {
|
|
74
|
+
border: 1px solid CanvasText;
|
|
75
|
+
forced-color-adjust: none;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type RsAvatarShape, type RsAvatarSize, type RsAvatarTone } from './avatar-utils';
|
|
2
|
+
export type { RsAvatarShape, RsAvatarSize, RsAvatarTone };
|
|
2
3
|
type __VLS_Props = {
|
|
3
4
|
src?: string;
|
|
4
5
|
alt?: string;
|
|
@@ -10,14 +11,19 @@ type __VLS_Props = {
|
|
|
10
11
|
tone?: RsAvatarTone;
|
|
11
12
|
label?: string;
|
|
12
13
|
};
|
|
13
|
-
declare var
|
|
14
|
+
declare var __VLS_1: {};
|
|
14
15
|
type __VLS_Slots = {} & {
|
|
15
|
-
fallback?: (props: typeof
|
|
16
|
+
fallback?: (props: typeof __VLS_1) => any;
|
|
16
17
|
};
|
|
17
18
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
19
|
+
name: string;
|
|
20
|
+
label: string;
|
|
18
21
|
size: RsAvatarSize;
|
|
19
|
-
tone: RsAvatarTone;
|
|
20
22
|
icon: string;
|
|
23
|
+
tone: RsAvatarTone;
|
|
24
|
+
src: string;
|
|
25
|
+
alt: string;
|
|
26
|
+
fallback: string;
|
|
21
27
|
shape: RsAvatarShape;
|
|
22
28
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
23
29
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -1,57 +1,81 @@
|
|
|
1
|
-
import { AvatarFallback, AvatarImage, AvatarRoot } from "../../_shared/src/reka.js";
|
|
2
1
|
import RsIcon_default from "../../icon/src/RsIcon.js";
|
|
3
|
-
import { getAvatarInitials } from "./avatar-utils.js";
|
|
4
|
-
import { computed, createBlock, createCommentVNode, createElementBlock,
|
|
2
|
+
import { RS_AVATAR_ICON_PX, getAvatarInitials, resolveRsAvatarShape, resolveRsAvatarSize, resolveRsAvatarTone } from "./avatar-utils.js";
|
|
3
|
+
import { computed, createBlock, createCommentVNode, createElementBlock, defineComponent, normalizeClass, openBlock, ref, renderSlot, toDisplayString, watch } from "vue";
|
|
5
4
|
//#region src/components/avatar/src/RsAvatar.vue?vue&type=script&setup=true&lang.ts
|
|
6
|
-
var _hoisted_1 =
|
|
5
|
+
var _hoisted_1 = ["role", "aria-label"];
|
|
6
|
+
var _hoisted_2 = ["src", "alt"];
|
|
7
|
+
var _hoisted_3 = { key: 1 };
|
|
7
8
|
var RsAvatar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
9
|
+
name: "RsAvatar",
|
|
8
10
|
__name: "RsAvatar",
|
|
9
11
|
props: {
|
|
10
|
-
src: {},
|
|
11
|
-
alt: {},
|
|
12
|
-
name: {},
|
|
13
|
-
fallback: {},
|
|
12
|
+
src: { default: void 0 },
|
|
13
|
+
alt: { default: void 0 },
|
|
14
|
+
name: { default: void 0 },
|
|
15
|
+
fallback: { default: void 0 },
|
|
14
16
|
icon: { default: "user" },
|
|
15
17
|
size: { default: "md" },
|
|
16
18
|
shape: { default: "circle" },
|
|
17
19
|
tone: { default: "primary" },
|
|
18
|
-
label: {}
|
|
20
|
+
label: { default: void 0 }
|
|
19
21
|
},
|
|
20
22
|
setup(__props) {
|
|
21
23
|
const props = __props;
|
|
24
|
+
const imageLoaded = ref(false);
|
|
25
|
+
const imageFailed = ref(false);
|
|
26
|
+
watch(() => props.src, () => {
|
|
27
|
+
imageLoaded.value = false;
|
|
28
|
+
imageFailed.value = false;
|
|
29
|
+
});
|
|
30
|
+
const resolvedSize = computed(() => resolveRsAvatarSize(props.size));
|
|
31
|
+
const resolvedShape = computed(() => resolveRsAvatarShape(props.shape));
|
|
32
|
+
const resolvedTone = computed(() => resolveRsAvatarTone(props.tone));
|
|
33
|
+
const iconPx = computed(() => RS_AVATAR_ICON_PX[resolvedSize.value]);
|
|
22
34
|
const fallbackText = computed(() => {
|
|
23
35
|
if (props.fallback?.trim()) return props.fallback.trim();
|
|
24
36
|
if (props.name?.trim()) return getAvatarInitials(props.name);
|
|
25
37
|
return "";
|
|
26
38
|
});
|
|
27
39
|
const showIconFallback = computed(() => !fallbackText.value);
|
|
40
|
+
const showImage = computed(() => Boolean(props.src) && !imageFailed.value);
|
|
41
|
+
const showFallback = computed(() => !showImage.value || !imageLoaded.value);
|
|
42
|
+
const pictureReady = computed(() => showImage.value && imageLoaded.value);
|
|
28
43
|
const imageAlt = computed(() => props.alt ?? props.name ?? "");
|
|
29
44
|
const ariaLabel = computed(() => props.label ?? props.alt ?? props.name ?? void 0);
|
|
45
|
+
const rootRole = computed(() => {
|
|
46
|
+
if (pictureReady.value || !ariaLabel.value) return void 0;
|
|
47
|
+
return "img";
|
|
48
|
+
});
|
|
49
|
+
const rootLabel = computed(() => pictureReady.value ? void 0 : ariaLabel.value);
|
|
50
|
+
function onLoad() {
|
|
51
|
+
imageLoaded.value = true;
|
|
52
|
+
imageFailed.value = false;
|
|
53
|
+
}
|
|
54
|
+
function onError() {
|
|
55
|
+
imageLoaded.value = false;
|
|
56
|
+
imageFailed.value = true;
|
|
57
|
+
}
|
|
30
58
|
return (_ctx, _cache) => {
|
|
31
|
-
return openBlock(),
|
|
32
|
-
class: normalizeClass(["rs-avatar", [`rs-avatar--${
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}, {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}, 8, [
|
|
51
|
-
"class",
|
|
52
|
-
"aria-label",
|
|
53
|
-
"role"
|
|
54
|
-
]);
|
|
59
|
+
return openBlock(), createElementBlock("span", {
|
|
60
|
+
class: normalizeClass(["rs-avatar", [`rs-avatar--${resolvedSize.value}`, `rs-avatar--${resolvedShape.value}`]]),
|
|
61
|
+
role: rootRole.value,
|
|
62
|
+
"aria-label": rootLabel.value
|
|
63
|
+
}, [showImage.value ? (openBlock(), createElementBlock("img", {
|
|
64
|
+
key: 0,
|
|
65
|
+
class: normalizeClass(["rs-avatar__image", { "rs-avatar__image--ready": imageLoaded.value }]),
|
|
66
|
+
src: __props.src,
|
|
67
|
+
alt: imageAlt.value,
|
|
68
|
+
onLoad,
|
|
69
|
+
onError
|
|
70
|
+
}, null, 42, _hoisted_2)) : createCommentVNode("", true), showFallback.value ? (openBlock(), createElementBlock("span", {
|
|
71
|
+
key: 1,
|
|
72
|
+
class: normalizeClass(["rs-avatar__fallback", `rs-avatar__fallback--${resolvedTone.value}`]),
|
|
73
|
+
"aria-hidden": "true"
|
|
74
|
+
}, [renderSlot(_ctx.$slots, "fallback", {}, () => [showIconFallback.value ? (openBlock(), createBlock(RsIcon_default, {
|
|
75
|
+
key: 0,
|
|
76
|
+
name: __props.icon,
|
|
77
|
+
size: iconPx.value
|
|
78
|
+
}, null, 8, ["name", "size"])) : (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString(fallbackText.value), 1))], true)], 2)) : createCommentVNode("", true)], 10, _hoisted_1);
|
|
55
79
|
};
|
|
56
80
|
}
|
|
57
81
|
});
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import './RsAvatar.css'
|
|
2
|
+
import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
2
3
|
import RsAvatar_vue_vue_type_script_setup_true_lang_default from "./RsAvatar.impl.js";
|
|
3
4
|
|
|
4
5
|
//#region src/components/avatar/src/RsAvatar.vue
|
|
5
|
-
var RsAvatar_default = RsAvatar_vue_vue_type_script_setup_true_lang_default;
|
|
6
|
+
var RsAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsAvatar_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-5eb19cf0"]]);
|
|
6
7
|
//#endregion
|
|
7
8
|
export { RsAvatar_default as default };
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
/**
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
export
|
|
1
|
+
/** 头像边长。不是控件四档,没有 ssm。 */
|
|
2
|
+
export declare const RS_AVATAR_SIZES: readonly ["sm", "md", "lg"];
|
|
3
|
+
export type RsAvatarSize = (typeof RS_AVATAR_SIZES)[number];
|
|
4
|
+
export declare const RS_AVATAR_SHAPES: readonly ["circle", "square"];
|
|
5
|
+
export type RsAvatarShape = (typeof RS_AVATAR_SHAPES)[number];
|
|
6
|
+
export declare const RS_AVATAR_TONES: readonly ["default", "primary", "success", "warning", "danger"];
|
|
7
|
+
export type RsAvatarTone = (typeof RS_AVATAR_TONES)[number];
|
|
8
|
+
/** 回退图标边长,跟原来 sm 14 / md 16 / lg 20 一致。 */
|
|
9
|
+
export declare const RS_AVATAR_ICON_PX: Record<RsAvatarSize, number>;
|
|
10
|
+
export declare function isRsAvatarSize(value: unknown): value is RsAvatarSize;
|
|
11
|
+
export declare function isRsAvatarShape(value: unknown): value is RsAvatarShape;
|
|
12
|
+
export declare function isRsAvatarTone(value: unknown): value is RsAvatarTone;
|
|
13
|
+
export declare function resolveRsAvatarSize(size?: RsAvatarSize | null): RsAvatarSize;
|
|
14
|
+
export declare function resolveRsAvatarShape(shape?: RsAvatarShape | null): RsAvatarShape;
|
|
15
|
+
export declare function resolveRsAvatarTone(tone?: RsAvatarTone | null): RsAvatarTone;
|
|
7
16
|
/**
|
|
8
17
|
* 从姓名提取缩写(最多 2 个字符)。
|
|
9
|
-
*
|
|
18
|
+
* 单段取前两字;多段取前两段首字。空串返回空,由组件改走图标。
|
|
10
19
|
*/
|
|
11
20
|
export declare function getAvatarInitials(name: string): string;
|
|
@@ -1,13 +1,51 @@
|
|
|
1
1
|
//#region src/components/avatar/src/avatar-utils.ts
|
|
2
|
+
/** 头像边长。不是控件四档,没有 ssm。 */
|
|
3
|
+
var RS_AVATAR_SIZES = [
|
|
4
|
+
"sm",
|
|
5
|
+
"md",
|
|
6
|
+
"lg"
|
|
7
|
+
];
|
|
8
|
+
var RS_AVATAR_SHAPES = ["circle", "square"];
|
|
9
|
+
var RS_AVATAR_TONES = [
|
|
10
|
+
"default",
|
|
11
|
+
"primary",
|
|
12
|
+
"success",
|
|
13
|
+
"warning",
|
|
14
|
+
"danger"
|
|
15
|
+
];
|
|
16
|
+
/** 回退图标边长,跟原来 sm 14 / md 16 / lg 20 一致。 */
|
|
17
|
+
var RS_AVATAR_ICON_PX = {
|
|
18
|
+
sm: 14,
|
|
19
|
+
md: 16,
|
|
20
|
+
lg: 20
|
|
21
|
+
};
|
|
22
|
+
function isRsAvatarSize(value) {
|
|
23
|
+
return typeof value === "string" && RS_AVATAR_SIZES.includes(value);
|
|
24
|
+
}
|
|
25
|
+
function isRsAvatarShape(value) {
|
|
26
|
+
return typeof value === "string" && RS_AVATAR_SHAPES.includes(value);
|
|
27
|
+
}
|
|
28
|
+
function isRsAvatarTone(value) {
|
|
29
|
+
return typeof value === "string" && RS_AVATAR_TONES.includes(value);
|
|
30
|
+
}
|
|
31
|
+
function resolveRsAvatarSize(size) {
|
|
32
|
+
return isRsAvatarSize(size) ? size : "md";
|
|
33
|
+
}
|
|
34
|
+
function resolveRsAvatarShape(shape) {
|
|
35
|
+
return isRsAvatarShape(shape) ? shape : "circle";
|
|
36
|
+
}
|
|
37
|
+
function resolveRsAvatarTone(tone) {
|
|
38
|
+
return isRsAvatarTone(tone) ? tone : "primary";
|
|
39
|
+
}
|
|
2
40
|
/**
|
|
3
41
|
* 从姓名提取缩写(最多 2 个字符)。
|
|
4
|
-
*
|
|
42
|
+
* 单段取前两字;多段取前两段首字。空串返回空,由组件改走图标。
|
|
5
43
|
*/
|
|
6
44
|
function getAvatarInitials(name) {
|
|
7
45
|
const parts = name.trim().split(/\s+/).filter(Boolean);
|
|
8
|
-
if (!parts.length) return "
|
|
46
|
+
if (!parts.length) return "";
|
|
9
47
|
if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();
|
|
10
48
|
return `${parts[0][0] ?? ""}${parts[1][0] ?? ""}`.toUpperCase();
|
|
11
49
|
}
|
|
12
50
|
//#endregion
|
|
13
|
-
export { getAvatarInitials };
|
|
51
|
+
export { RS_AVATAR_ICON_PX, RS_AVATAR_SHAPES, RS_AVATAR_SIZES, RS_AVATAR_TONES, getAvatarInitials, isRsAvatarShape, isRsAvatarSize, isRsAvatarTone, resolveRsAvatarShape, resolveRsAvatarSize, resolveRsAvatarTone };
|
|
@@ -1,41 +1,94 @@
|
|
|
1
1
|
|
|
2
|
-
.rs-badge[data-v-
|
|
2
|
+
.rs-badge[data-v-f91a65a7] {
|
|
3
|
+
--rs-badge-padding-y: 0.125rem;
|
|
4
|
+
--rs-badge-padding-x: 0.625rem;
|
|
5
|
+
--rs-badge-dot-size: var(--rs-space-sm);
|
|
6
|
+
--rs-badge-count-min: 1.125rem;
|
|
7
|
+
--rs-badge-ring: var(--rs-surface);
|
|
3
8
|
display: inline-flex;
|
|
4
9
|
align-items: center;
|
|
5
|
-
|
|
10
|
+
justify-content: center;
|
|
11
|
+
box-sizing: border-box;
|
|
12
|
+
padding: var(--rs-badge-padding-y) var(--rs-badge-padding-x);
|
|
6
13
|
border-radius: var(--rs-radius-full);
|
|
7
14
|
font-size: var(--rs-font-size-xs);
|
|
8
15
|
font-weight: var(--rs-font-weight-medium);
|
|
9
16
|
line-height: var(--rs-line-height-tight);
|
|
10
17
|
letter-spacing: 0.02em;
|
|
18
|
+
white-space: nowrap;
|
|
19
|
+
vertical-align: middle;
|
|
11
20
|
}
|
|
12
|
-
.rs-badge
|
|
21
|
+
.rs-badge-wrap[data-v-f91a65a7] {
|
|
22
|
+
position: relative;
|
|
23
|
+
display: inline-flex;
|
|
24
|
+
vertical-align: middle;
|
|
25
|
+
}
|
|
26
|
+
.rs-badge-wrap .rs-badge--mark[data-v-f91a65a7] {
|
|
27
|
+
position: absolute;
|
|
28
|
+
inset-block-start: 0;
|
|
29
|
+
inset-inline-end: 0;
|
|
30
|
+
z-index: 1;
|
|
31
|
+
transform: translate(50%, -50%);
|
|
32
|
+
box-shadow: 0 0 0 2px var(--rs-badge-ring);
|
|
33
|
+
}
|
|
34
|
+
:dir(rtl) .rs-badge-wrap .rs-badge--mark[data-v-f91a65a7] {
|
|
35
|
+
transform: translate(-50%, -50%);
|
|
36
|
+
}
|
|
37
|
+
.rs-badge--mark[data-v-f91a65a7]:not(.rs-badge--dot) {
|
|
38
|
+
min-width: var(--rs-badge-count-min);
|
|
39
|
+
min-height: var(--rs-badge-count-min);
|
|
40
|
+
padding: 0 0.375rem;
|
|
41
|
+
letter-spacing: 0;
|
|
42
|
+
line-height: 1;
|
|
43
|
+
}
|
|
44
|
+
.rs-badge--dot[data-v-f91a65a7] {
|
|
45
|
+
width: var(--rs-badge-dot-size);
|
|
46
|
+
height: var(--rs-badge-dot-size);
|
|
47
|
+
min-width: var(--rs-badge-dot-size);
|
|
48
|
+
padding: 0;
|
|
49
|
+
border-radius: var(--rs-radius-full);
|
|
50
|
+
}
|
|
51
|
+
.rs-badge--default[data-v-f91a65a7] {
|
|
13
52
|
background: var(--rs-surface-hover);
|
|
14
53
|
color: var(--rs-text);
|
|
15
54
|
border: 1px solid var(--rs-border);
|
|
16
55
|
}
|
|
17
|
-
.rs-badge--primary[data-v-
|
|
56
|
+
.rs-badge--primary[data-v-f91a65a7] {
|
|
18
57
|
background: var(--rs-primary-container);
|
|
19
58
|
color: var(--rs-on-primary-container);
|
|
20
59
|
border: 1px solid color-mix(in srgb, var(--rs-primary) 40%, transparent);
|
|
21
60
|
}
|
|
22
|
-
.rs-badge--success[data-v-
|
|
61
|
+
.rs-badge--success[data-v-f91a65a7] {
|
|
23
62
|
background: var(--rs-success-container);
|
|
24
63
|
color: var(--rs-on-success-container);
|
|
25
64
|
border: 1px solid color-mix(in srgb, var(--rs-success) 40%, transparent);
|
|
26
65
|
}
|
|
27
|
-
.rs-badge--warning[data-v-
|
|
66
|
+
.rs-badge--warning[data-v-f91a65a7] {
|
|
28
67
|
background: var(--rs-warning-container);
|
|
29
68
|
color: var(--rs-on-warning-container);
|
|
30
69
|
border: 1px solid color-mix(in srgb, var(--rs-warning) 40%, transparent);
|
|
31
70
|
}
|
|
32
|
-
.rs-badge--danger[data-v-
|
|
71
|
+
.rs-badge--danger[data-v-f91a65a7] {
|
|
33
72
|
background: var(--rs-danger-container);
|
|
34
73
|
color: var(--rs-on-danger-container);
|
|
35
74
|
border: 1px solid color-mix(in srgb, var(--rs-danger) 40%, transparent);
|
|
36
75
|
}
|
|
37
|
-
.rs-badge--info[data-v-
|
|
76
|
+
.rs-badge--info[data-v-f91a65a7] {
|
|
38
77
|
background: var(--rs-info-container);
|
|
39
78
|
color: var(--rs-on-info-container);
|
|
40
79
|
border: 1px solid color-mix(in srgb, var(--rs-info) 40%, transparent);
|
|
41
80
|
}
|
|
81
|
+
.rs-badge--dot.rs-badge--default[data-v-f91a65a7],
|
|
82
|
+
.rs-badge--dot.rs-badge--primary[data-v-f91a65a7],
|
|
83
|
+
.rs-badge--dot.rs-badge--success[data-v-f91a65a7],
|
|
84
|
+
.rs-badge--dot.rs-badge--warning[data-v-f91a65a7],
|
|
85
|
+
.rs-badge--dot.rs-badge--danger[data-v-f91a65a7],
|
|
86
|
+
.rs-badge--dot.rs-badge--info[data-v-f91a65a7] {
|
|
87
|
+
color: transparent;
|
|
88
|
+
}
|
|
89
|
+
@media (forced-colors: active) {
|
|
90
|
+
.rs-badge[data-v-f91a65a7] {
|
|
91
|
+
border: 1px solid CanvasText;
|
|
92
|
+
forced-color-adjust: none;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -1,12 +1,28 @@
|
|
|
1
|
+
import { type RsBadgeVariant } from './badge-utils';
|
|
2
|
+
export type { RsBadgeVariant };
|
|
1
3
|
type __VLS_Props = {
|
|
2
|
-
variant?:
|
|
4
|
+
variant?: RsBadgeVariant;
|
|
5
|
+
/** 角标数字。与默认插槽同时出现时,插槽是宿主,数字挂在角上。 */
|
|
6
|
+
count?: number;
|
|
7
|
+
/** 超过后显示 `{max}+`。 */
|
|
8
|
+
max?: number;
|
|
9
|
+
/** 小圆点,不计数字。与 count 同时出现时只显示点。 */
|
|
10
|
+
dot?: boolean;
|
|
11
|
+
/** count 为 0 时仍显示。 */
|
|
12
|
+
showZero?: boolean;
|
|
3
13
|
};
|
|
4
|
-
declare var __VLS_1: {};
|
|
14
|
+
declare var __VLS_1: {}, __VLS_3: {};
|
|
5
15
|
type __VLS_Slots = {} & {
|
|
6
16
|
default?: (props: typeof __VLS_1) => any;
|
|
17
|
+
} & {
|
|
18
|
+
default?: (props: typeof __VLS_3) => any;
|
|
7
19
|
};
|
|
8
20
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
9
|
-
variant:
|
|
21
|
+
variant: RsBadgeVariant;
|
|
22
|
+
count: number;
|
|
23
|
+
max: number;
|
|
24
|
+
dot: boolean;
|
|
25
|
+
showZero: boolean;
|
|
10
26
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
27
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
12
28
|
declare const _default: typeof __VLS_export;
|
|
@@ -1,11 +1,54 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { formatRsBadgeCount, resolveRsBadgeVariant } from "./badge-utils.js";
|
|
2
|
+
import { computed, createCommentVNode, createElementBlock, defineComponent, normalizeClass, openBlock, renderSlot, toDisplayString, useSlots } from "vue";
|
|
2
3
|
//#region src/components/badge/src/RsBadge.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
+
var _hoisted_1 = {
|
|
5
|
+
key: 0,
|
|
6
|
+
class: "rs-badge-wrap"
|
|
7
|
+
};
|
|
8
|
+
var _hoisted_2 = ["aria-hidden", "aria-label"];
|
|
9
|
+
var _hoisted_3 = ["aria-hidden", "aria-label"];
|
|
3
10
|
var RsBadge_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
11
|
+
name: "RsBadge",
|
|
4
12
|
__name: "RsBadge",
|
|
5
|
-
props: {
|
|
13
|
+
props: {
|
|
14
|
+
variant: { default: "default" },
|
|
15
|
+
count: { default: void 0 },
|
|
16
|
+
max: { default: 99 },
|
|
17
|
+
dot: {
|
|
18
|
+
type: Boolean,
|
|
19
|
+
default: false
|
|
20
|
+
},
|
|
21
|
+
showZero: {
|
|
22
|
+
type: Boolean,
|
|
23
|
+
default: false
|
|
24
|
+
}
|
|
25
|
+
},
|
|
6
26
|
setup(__props) {
|
|
27
|
+
const props = __props;
|
|
28
|
+
const slots = useSlots();
|
|
29
|
+
const resolvedVariant = computed(() => resolveRsBadgeVariant(props.variant));
|
|
30
|
+
const variantClass = computed(() => `rs-badge--${resolvedVariant.value}`);
|
|
31
|
+
const isMarkMode = computed(() => props.dot || props.count !== void 0);
|
|
32
|
+
const countText = computed(() => formatRsBadgeCount(props.count, props.max, props.showZero));
|
|
33
|
+
const showMark = computed(() => props.dot || countText.value != null);
|
|
34
|
+
const hasHost = computed(() => Boolean(slots.default));
|
|
35
|
+
const overlay = computed(() => isMarkMode.value && hasHost.value);
|
|
36
|
+
const markLabel = computed(() => props.dot ? void 0 : countText.value ?? void 0);
|
|
7
37
|
return (_ctx, _cache) => {
|
|
8
|
-
return openBlock(), createElementBlock("span",
|
|
38
|
+
return overlay.value ? (openBlock(), createElementBlock("span", _hoisted_1, [renderSlot(_ctx.$slots, "default", {}, void 0, true), showMark.value ? (openBlock(), createElementBlock("span", {
|
|
39
|
+
key: 0,
|
|
40
|
+
class: normalizeClass(["rs-badge rs-badge--mark", [variantClass.value, { "rs-badge--dot": __props.dot }]]),
|
|
41
|
+
"aria-hidden": __props.dot ? "true" : void 0,
|
|
42
|
+
"aria-label": markLabel.value
|
|
43
|
+
}, toDisplayString(__props.dot ? "" : countText.value), 11, _hoisted_2)) : createCommentVNode("", true)])) : showMark.value ? (openBlock(), createElementBlock("span", {
|
|
44
|
+
key: 1,
|
|
45
|
+
class: normalizeClass(["rs-badge rs-badge--mark", [variantClass.value, { "rs-badge--dot": __props.dot }]]),
|
|
46
|
+
"aria-hidden": __props.dot ? "true" : void 0,
|
|
47
|
+
"aria-label": markLabel.value
|
|
48
|
+
}, toDisplayString(__props.dot ? "" : countText.value), 11, _hoisted_3)) : !isMarkMode.value ? (openBlock(), createElementBlock("span", {
|
|
49
|
+
key: 2,
|
|
50
|
+
class: normalizeClass(["rs-badge", variantClass.value])
|
|
51
|
+
}, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 2)) : createCommentVNode("", true);
|
|
9
52
|
};
|
|
10
53
|
}
|
|
11
54
|
});
|
|
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
|
|
|
3
3
|
import RsBadge_vue_vue_type_script_setup_true_lang_default from "./RsBadge.impl.js";
|
|
4
4
|
|
|
5
5
|
//#region src/components/badge/src/RsBadge.vue
|
|
6
|
-
var RsBadge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsBadge_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-
|
|
6
|
+
var RsBadge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsBadge_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-f91a65a7"]]);
|
|
7
7
|
//#endregion
|
|
8
8
|
export { RsBadge_default as default };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RsBadge 语义色。芯片与角标共用同一套 variant,不另开 tone 轴。
|
|
3
|
+
* 可关闭的筛选请用 RsTag,不要用本组件冒充标签。
|
|
4
|
+
*/
|
|
5
|
+
export declare const RS_BADGE_VARIANTS: readonly ["default", "primary", "success", "warning", "danger", "info"];
|
|
6
|
+
export type RsBadgeVariant = (typeof RS_BADGE_VARIANTS)[number];
|
|
7
|
+
export declare const RS_BADGE_COUNT_MAX_DEFAULT = 99;
|
|
8
|
+
export declare function isRsBadgeVariant(value: unknown): value is RsBadgeVariant;
|
|
9
|
+
export declare function resolveRsBadgeVariant(variant?: RsBadgeVariant | null): RsBadgeVariant;
|
|
10
|
+
/** 未传 count、非有限数字、负数、或 0 且未 showZero 时不展示数字。 */
|
|
11
|
+
export declare function formatRsBadgeCount(count: number | string | null | undefined, max?: number, showZero?: boolean): string | null;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//#region src/components/badge/src/badge-utils.ts
|
|
2
|
+
/**
|
|
3
|
+
* RsBadge 语义色。芯片与角标共用同一套 variant,不另开 tone 轴。
|
|
4
|
+
* 可关闭的筛选请用 RsTag,不要用本组件冒充标签。
|
|
5
|
+
*/
|
|
6
|
+
var RS_BADGE_VARIANTS = [
|
|
7
|
+
"default",
|
|
8
|
+
"primary",
|
|
9
|
+
"success",
|
|
10
|
+
"warning",
|
|
11
|
+
"danger",
|
|
12
|
+
"info"
|
|
13
|
+
];
|
|
14
|
+
function isRsBadgeVariant(value) {
|
|
15
|
+
return typeof value === "string" && RS_BADGE_VARIANTS.includes(value);
|
|
16
|
+
}
|
|
17
|
+
function resolveRsBadgeVariant(variant) {
|
|
18
|
+
return isRsBadgeVariant(variant) ? variant : "default";
|
|
19
|
+
}
|
|
20
|
+
/** 未传 count、非有限数字、负数、或 0 且未 showZero 时不展示数字。 */
|
|
21
|
+
function formatRsBadgeCount(count, max = 99, showZero = false) {
|
|
22
|
+
if (count == null || count === "") return null;
|
|
23
|
+
const n = typeof count === "number" ? count : Number(count);
|
|
24
|
+
if (!Number.isFinite(n) || n < 0) return null;
|
|
25
|
+
if (n === 0 && !showZero) return null;
|
|
26
|
+
const cap = Number.isFinite(max) && max > 0 ? Math.floor(max) : 99;
|
|
27
|
+
const value = Math.floor(n);
|
|
28
|
+
if (value > cap) return `${cap}+`;
|
|
29
|
+
return String(value);
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
export { RS_BADGE_VARIANTS, formatRsBadgeCount, isRsBadgeVariant, resolveRsBadgeVariant };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { default as RsBreadcrumb } from './src/RsBreadcrumb.js';
|
|
2
|
-
export type { RsBreadcrumbItem } from './src/
|
|
2
|
+
export type { RsBreadcrumbItem } from './src/breadcrumb-utils';
|