@bitrix24/b24ui-nuxt 0.5.11 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nuxt/b24ui/advice.ts +10 -2
- package/.nuxt/b24ui/alert.ts +10 -2
- package/.nuxt/b24ui/avatar-group.ts +10 -2
- package/.nuxt/b24ui/avatar.ts +10 -2
- package/.nuxt/b24ui/badge.ts +10 -2
- package/.nuxt/b24ui/button-group.ts +10 -2
- package/.nuxt/b24ui/button.ts +16 -6
- package/.nuxt/b24ui/calendar.ts +10 -2
- package/.nuxt/b24ui/checkbox.ts +10 -2
- package/.nuxt/b24ui/chip.ts +10 -2
- package/.nuxt/b24ui/collapsible.ts +10 -2
- package/.nuxt/b24ui/container.ts +10 -2
- package/.nuxt/b24ui/countdown.ts +10 -2
- package/.nuxt/b24ui/description-list.ts +10 -2
- package/.nuxt/b24ui/dropdown-menu.ts +10 -2
- package/.nuxt/b24ui/form-field.ts +10 -2
- package/.nuxt/b24ui/form.ts +10 -2
- package/.nuxt/b24ui/input-menu.ts +12 -4
- package/.nuxt/b24ui/input-number.ts +10 -2
- package/.nuxt/b24ui/input.ts +10 -2
- package/.nuxt/b24ui/kbd.ts +10 -2
- package/.nuxt/b24ui/link.ts +10 -2
- package/.nuxt/b24ui/modal.ts +10 -2
- package/.nuxt/b24ui/navbar-divider.ts +10 -2
- package/.nuxt/b24ui/navbar-section.ts +10 -2
- package/.nuxt/b24ui/navbar-spacer.ts +10 -2
- package/.nuxt/b24ui/navbar.ts +10 -2
- package/.nuxt/b24ui/navigation-menu.ts +10 -2
- package/.nuxt/b24ui/popover.ts +10 -2
- package/.nuxt/b24ui/progress.ts +10 -2
- package/.nuxt/b24ui/radio-group.ts +10 -2
- package/.nuxt/b24ui/range.ts +10 -2
- package/.nuxt/b24ui/select-menu.ts +14 -6
- package/.nuxt/b24ui/select.ts +12 -4
- package/.nuxt/b24ui/separator.ts +10 -2
- package/.nuxt/b24ui/sidebar-body.ts +10 -2
- package/.nuxt/b24ui/sidebar-footer.ts +10 -2
- package/.nuxt/b24ui/sidebar-header.ts +10 -2
- package/.nuxt/b24ui/sidebar-heading.ts +10 -2
- package/.nuxt/b24ui/sidebar-layout.ts +10 -2
- package/.nuxt/b24ui/sidebar-section.ts +10 -2
- package/.nuxt/b24ui/sidebar-spacer.ts +10 -2
- package/.nuxt/b24ui/sidebar.ts +10 -2
- package/.nuxt/b24ui/skeleton.ts +10 -2
- package/.nuxt/b24ui/slideover.ts +10 -2
- package/.nuxt/b24ui/stacked-layout.ts +10 -2
- package/.nuxt/b24ui/switch.ts +10 -2
- package/.nuxt/b24ui/tabs.ts +10 -2
- package/.nuxt/b24ui/textarea.ts +10 -2
- package/.nuxt/b24ui/toast.ts +10 -2
- package/.nuxt/b24ui/toaster.ts +10 -2
- package/.nuxt/b24ui/tooltip.ts +10 -2
- package/cli/templates.mjs +19 -15
- package/dist/meta.d.mts +5675 -7513
- package/dist/meta.mjs +5675 -7513
- package/dist/module.json +3 -3
- package/dist/module.mjs +2 -2
- package/dist/runtime/components/Advice.vue +27 -55
- package/dist/runtime/components/Advice.vue.d.ts +56 -0
- package/dist/runtime/components/Alert.vue +35 -97
- package/dist/runtime/components/Alert.vue.d.ts +97 -0
- package/dist/runtime/components/App.vue +24 -34
- package/dist/runtime/components/App.vue.d.ts +23 -0
- package/dist/runtime/components/Avatar.vue +43 -82
- package/dist/runtime/components/Avatar.vue.d.ts +62 -0
- package/dist/runtime/components/AvatarGroup.vue +40 -77
- package/dist/runtime/components/AvatarGroup.vue.d.ts +40 -0
- package/dist/runtime/components/Badge.vue +40 -84
- package/dist/runtime/components/Badge.vue.d.ts +78 -0
- package/dist/runtime/components/Button.vue +107 -164
- package/dist/runtime/components/Button.vue.d.ts +115 -0
- package/dist/runtime/components/ButtonGroup.vue +25 -52
- package/dist/runtime/components/ButtonGroup.vue.d.ts +63 -0
- package/dist/runtime/components/Calendar.vue +73 -153
- package/dist/runtime/components/Calendar.vue.d.ts +107 -0
- package/dist/runtime/components/Checkbox.vue +42 -74
- package/dist/runtime/components/Checkbox.vue.d.ts +55 -0
- package/dist/runtime/components/Chip.vue +26 -75
- package/dist/runtime/components/Chip.vue.d.ts +77 -0
- package/dist/runtime/components/Collapsible.vue +22 -41
- package/dist/runtime/components/Collapsible.vue.d.ts +50 -0
- package/dist/runtime/components/Container.vue +15 -28
- package/dist/runtime/components/Container.vue.d.ts +27 -0
- package/dist/runtime/components/Countdown.vue +153 -379
- package/dist/runtime/components/Countdown.vue.d.ts +122 -0
- package/dist/runtime/components/DescriptionList.vue +78 -150
- package/dist/runtime/components/DescriptionList.vue.d.ts +109 -0
- package/dist/runtime/components/DropdownMenu.vue +38 -140
- package/dist/runtime/components/DropdownMenu.vue.d.ts +133 -0
- package/dist/runtime/components/DropdownMenuContent.vue +65 -79
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +51 -0
- package/dist/runtime/components/Form.vue +132 -218
- package/dist/runtime/components/Form.vue.d.ts +55 -0
- package/dist/runtime/components/FormField.vue +36 -81
- package/dist/runtime/components/FormField.vue.d.ts +73 -0
- package/dist/runtime/components/Input.vue +79 -180
- package/dist/runtime/components/Input.vue.d.ts +135 -0
- package/dist/runtime/components/InputMenu.vue +185 -382
- package/dist/runtime/components/InputMenu.vue.d.ts +357 -0
- package/dist/runtime/components/InputNumber.vue +77 -176
- package/dist/runtime/components/InputNumber.vue.d.ts +238 -0
- package/dist/runtime/components/Kbd.vue +20 -46
- package/dist/runtime/components/Kbd.vue.d.ts +55 -0
- package/dist/runtime/components/Link.vue +99 -179
- package/dist/runtime/components/Link.vue.d.ts +129 -0
- package/dist/runtime/components/LinkBase.vue +33 -42
- package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
- package/dist/runtime/components/Modal.vue +48 -128
- package/dist/runtime/components/Modal.vue.d.ts +124 -0
- package/dist/runtime/components/ModalDialogClose.vue +5 -8
- package/dist/runtime/components/ModalDialogClose.vue.d.ts +10 -0
- package/dist/runtime/components/Navbar.vue +15 -33
- package/dist/runtime/components/Navbar.vue.d.ts +46 -0
- package/dist/runtime/components/NavbarDivider.vue +15 -33
- package/dist/runtime/components/NavbarDivider.vue.d.ts +46 -0
- package/dist/runtime/components/NavbarSection.vue +15 -33
- package/dist/runtime/components/NavbarSection.vue.d.ts +46 -0
- package/dist/runtime/components/NavbarSpacer.vue +15 -33
- package/dist/runtime/components/NavbarSpacer.vue.d.ts +46 -0
- package/dist/runtime/components/NavigationMenu.vue +74 -209
- package/dist/runtime/components/NavigationMenu.vue.d.ts +159 -0
- package/dist/runtime/components/OverlayProvider.vue +14 -18
- package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
- package/dist/runtime/components/Popover.vue +40 -82
- package/dist/runtime/components/Popover.vue.d.ts +79 -0
- package/dist/runtime/components/Progress.vue +70 -137
- package/dist/runtime/components/Progress.vue.d.ts +103 -0
- package/dist/runtime/components/RadioGroup.vue +59 -135
- package/dist/runtime/components/RadioGroup.vue.d.ts +88 -0
- package/dist/runtime/components/Range.vue +46 -86
- package/dist/runtime/components/Range.vue.d.ts +73 -0
- package/dist/runtime/components/Select.vue +110 -261
- package/dist/runtime/components/Select.vue.d.ts +170 -0
- package/dist/runtime/components/SelectMenu.vue +161 -348
- package/dist/runtime/components/SelectMenu.vue.d.ts +217 -0
- package/dist/runtime/components/Separator.vue +28 -72
- package/dist/runtime/components/Separator.vue.d.ts +77 -0
- package/dist/runtime/components/Sidebar.vue +15 -33
- package/dist/runtime/components/Sidebar.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarBody.vue +17 -39
- package/dist/runtime/components/SidebarBody.vue.d.ts +53 -0
- package/dist/runtime/components/SidebarFooter.vue +15 -33
- package/dist/runtime/components/SidebarFooter.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarHeader.vue +15 -33
- package/dist/runtime/components/SidebarHeader.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarHeading.vue +15 -33
- package/dist/runtime/components/SidebarHeading.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarLayout.vue +34 -71
- package/dist/runtime/components/SidebarLayout.vue.d.ts +65 -0
- package/dist/runtime/components/SidebarSection.vue +15 -33
- package/dist/runtime/components/SidebarSection.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarSpacer.vue +15 -33
- package/dist/runtime/components/SidebarSpacer.vue.d.ts +46 -0
- package/dist/runtime/components/Skeleton.vue +14 -23
- package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
- package/dist/runtime/components/Slideover.vue +50 -132
- package/dist/runtime/components/Slideover.vue.d.ts +127 -0
- package/dist/runtime/components/StackedLayout.vue +34 -74
- package/dist/runtime/components/StackedLayout.vue.d.ts +65 -0
- package/dist/runtime/components/Switch.vue +46 -96
- package/dist/runtime/components/Switch.vue.d.ts +77 -0
- package/dist/runtime/components/Tabs.vue +41 -106
- package/dist/runtime/components/Tabs.vue.d.ts +104 -0
- package/dist/runtime/components/Textarea.vue +92 -202
- package/dist/runtime/components/Textarea.vue.d.ts +141 -0
- package/dist/runtime/components/Toast.vue +47 -106
- package/dist/runtime/components/Toast.vue.d.ts +95 -0
- package/dist/runtime/components/Toaster.vue +70 -116
- package/dist/runtime/components/Toaster.vue.d.ts +70 -0
- package/dist/runtime/components/Tooltip.vue +36 -65
- package/dist/runtime/components/Tooltip.vue.d.ts +65 -0
- package/dist/runtime/components/content/TableWrapper.vue +24 -71
- package/dist/runtime/components/content/TableWrapper.vue.d.ts +83 -0
- package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
- package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
- package/dist/runtime/composables/useComponentIcons.d.ts +3 -3
- package/dist/runtime/composables/useFormField.d.ts +2 -2
- package/dist/runtime/composables/useOverlay.d.ts +14 -7
- package/dist/runtime/composables/useOverlay.js +14 -6
- package/dist/runtime/prose/A.vue +16 -26
- package/dist/runtime/prose/A.vue.d.ts +27 -0
- package/dist/runtime/prose/Blockquote.vue +14 -26
- package/dist/runtime/prose/Blockquote.vue.d.ts +27 -0
- package/dist/runtime/prose/Code.vue +15 -32
- package/dist/runtime/prose/Code.vue.d.ts +31 -0
- package/dist/runtime/prose/Em.vue +16 -26
- package/dist/runtime/prose/Em.vue.d.ts +27 -0
- package/dist/runtime/prose/H1.vue +14 -26
- package/dist/runtime/prose/H1.vue.d.ts +27 -0
- package/dist/runtime/prose/H2.vue +14 -26
- package/dist/runtime/prose/H2.vue.d.ts +27 -0
- package/dist/runtime/prose/H3.vue +14 -26
- package/dist/runtime/prose/H3.vue.d.ts +27 -0
- package/dist/runtime/prose/H4.vue +14 -26
- package/dist/runtime/prose/H4.vue.d.ts +27 -0
- package/dist/runtime/prose/H5.vue +14 -26
- package/dist/runtime/prose/H5.vue.d.ts +27 -0
- package/dist/runtime/prose/H6.vue +14 -26
- package/dist/runtime/prose/H6.vue.d.ts +27 -0
- package/dist/runtime/prose/Hr.vue +13 -22
- package/dist/runtime/prose/Hr.vue.d.ts +19 -0
- package/dist/runtime/prose/Img.vue +13 -26
- package/dist/runtime/prose/Img.vue.d.ts +19 -0
- package/dist/runtime/prose/Li.vue +14 -26
- package/dist/runtime/prose/Li.vue.d.ts +27 -0
- package/dist/runtime/prose/Ol.vue +14 -26
- package/dist/runtime/prose/Ol.vue.d.ts +27 -0
- package/dist/runtime/prose/P.vue +14 -26
- package/dist/runtime/prose/P.vue.d.ts +27 -0
- package/dist/runtime/prose/Pre.vue +17 -33
- package/dist/runtime/prose/Pre.vue.d.ts +47 -0
- package/dist/runtime/prose/Strong.vue +14 -26
- package/dist/runtime/prose/Strong.vue.d.ts +27 -0
- package/dist/runtime/prose/Table.vue +21 -57
- package/dist/runtime/prose/Table.vue.d.ts +74 -0
- package/dist/runtime/prose/Tbody.vue +14 -26
- package/dist/runtime/prose/Tbody.vue.d.ts +27 -0
- package/dist/runtime/prose/Td.vue +14 -26
- package/dist/runtime/prose/Td.vue.d.ts +27 -0
- package/dist/runtime/prose/Th.vue +14 -26
- package/dist/runtime/prose/Th.vue.d.ts +27 -0
- package/dist/runtime/prose/Thead.vue +14 -26
- package/dist/runtime/prose/Thead.vue.d.ts +27 -0
- package/dist/runtime/prose/Tr.vue +14 -26
- package/dist/runtime/prose/Tr.vue.d.ts +27 -0
- package/dist/runtime/prose/Ul.vue +14 -26
- package/dist/runtime/prose/Ul.vue.d.ts +27 -0
- package/dist/runtime/types/form.d.ts +1 -0
- package/dist/runtime/types/utils.d.ts +42 -3
- package/dist/runtime/utils/link.d.ts +3 -3
- package/dist/runtime/utils/tv.js +2 -2
- package/dist/runtime/vue/components/Link.vue +122 -208
- package/dist/runtime/vue/components/Link.vue.d.ts +129 -0
- package/dist/shared/{b24ui-nuxt.CS9Lf0os.mjs → b24ui-nuxt.wBs9vEU5.mjs} +33 -8
- package/dist/types.d.mts +3 -5
- package/dist/unplugin.mjs +1 -1
- package/dist/vite.mjs +1 -1
- package/package.json +19 -27
- package/dist/meta.cjs +0 -72112
- package/dist/meta.d.cts +0 -72110
- package/dist/meta.d.ts +0 -72110
- package/dist/module.cjs +0 -63
- package/dist/module.d.cts +0 -15
- package/dist/module.d.ts +0 -15
- package/dist/shared/b24ui-nuxt.DrKwIWoc.cjs +0 -7721
- package/dist/types.d.ts +0 -7
- package/dist/unplugin.cjs +0 -236
- package/dist/unplugin.d.cts +0 -33
- package/dist/unplugin.d.ts +0 -33
- package/dist/vite.cjs +0 -21
- package/dist/vite.d.cts +0 -14
- package/dist/vite.d.ts +0 -14
|
@@ -1,92 +1,53 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
4
|
-
import _appConfig from '#build/app.config'
|
|
5
|
-
import theme from '#build/b24ui/avatar'
|
|
6
|
-
import { tv } from '../utils/tv'
|
|
7
|
-
import type { IconComponent } from '../types'
|
|
8
|
-
|
|
9
|
-
const appConfigAvatar = _appConfig as AppConfig & { b24ui: { avatar: Partial<typeof theme> } }
|
|
10
|
-
|
|
11
|
-
const avatar = tv({ extend: tv(theme), ...(appConfigAvatar.b24ui?.avatar || {}) })
|
|
12
|
-
|
|
13
|
-
type AvatarVariants = VariantProps<typeof avatar>
|
|
14
|
-
|
|
15
|
-
export interface AvatarProps {
|
|
16
|
-
/**
|
|
17
|
-
* The element or component this component should render as.
|
|
18
|
-
* @defaultValue 'span'
|
|
19
|
-
*/
|
|
20
|
-
as?: any
|
|
21
|
-
src?: string
|
|
22
|
-
alt?: string
|
|
23
|
-
/**
|
|
24
|
-
* Display an icon on the left side.
|
|
25
|
-
* @IconComponent
|
|
26
|
-
*/
|
|
27
|
-
icon?: IconComponent
|
|
28
|
-
text?: string
|
|
29
|
-
/**
|
|
30
|
-
* @defaultValue 'md'
|
|
31
|
-
*/
|
|
32
|
-
size?: AvatarVariants['size']
|
|
33
|
-
class?: any
|
|
34
|
-
style?: any
|
|
35
|
-
b24ui?: Partial<typeof avatar.slots>
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export interface AvatarSlots {
|
|
39
|
-
default(props?: {}): any
|
|
40
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/b24ui/avatar";
|
|
41
3
|
</script>
|
|
42
4
|
|
|
43
|
-
<script setup
|
|
44
|
-
import { ref, computed, watch } from
|
|
45
|
-
import { Primitive, Slot } from
|
|
46
|
-
import
|
|
47
|
-
import
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const props =
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { ref, computed, watch } from "vue";
|
|
7
|
+
import { Primitive, Slot } from "reka-ui";
|
|
8
|
+
import { useAppConfig } from "#imports";
|
|
9
|
+
import ImageComponent from "#build/b24ui-image-component";
|
|
10
|
+
import { useAvatarGroup } from "../composables/useAvatarGroup";
|
|
11
|
+
import { tv } from "../utils/tv";
|
|
12
|
+
defineOptions({ inheritAttrs: false });
|
|
13
|
+
const props = defineProps({
|
|
14
|
+
as: { type: null, required: false, default: "span" },
|
|
15
|
+
src: { type: String, required: false },
|
|
16
|
+
alt: { type: String, required: false },
|
|
17
|
+
icon: { type: [Function, Object], required: false },
|
|
18
|
+
text: { type: String, required: false },
|
|
19
|
+
size: { type: null, required: false },
|
|
20
|
+
class: { type: null, required: false },
|
|
21
|
+
style: { type: null, required: false },
|
|
22
|
+
b24ui: { type: null, required: false }
|
|
23
|
+
});
|
|
24
|
+
const fallback = computed(
|
|
25
|
+
() => props.text || (props.alt || "").replace(/[+\-*)(}\][{]/g, "").split(" ").map((word) => word.charAt(0)).join("").substring(0, 2)
|
|
26
|
+
);
|
|
27
|
+
const appConfig = useAppConfig();
|
|
28
|
+
const { size } = useAvatarGroup(props);
|
|
29
|
+
const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.avatar || {} })({
|
|
65
30
|
size: size.value
|
|
66
|
-
}))
|
|
67
|
-
|
|
31
|
+
}));
|
|
68
32
|
const sizePx = computed(() => ({
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
})[props.size ||
|
|
79
|
-
|
|
80
|
-
const error = ref(false)
|
|
81
|
-
|
|
33
|
+
"3xs": 10,
|
|
34
|
+
"2xs": 14,
|
|
35
|
+
"xs": 18,
|
|
36
|
+
"sm": 22,
|
|
37
|
+
"md": 32,
|
|
38
|
+
"lg": 42,
|
|
39
|
+
"xl": 48,
|
|
40
|
+
"2xl": 60,
|
|
41
|
+
"3xl": 94
|
|
42
|
+
})[props.size || "md"]);
|
|
43
|
+
const error = ref(false);
|
|
82
44
|
watch(() => props.src, () => {
|
|
83
45
|
if (error.value) {
|
|
84
|
-
error.value = false
|
|
46
|
+
error.value = false;
|
|
85
47
|
}
|
|
86
|
-
})
|
|
87
|
-
|
|
48
|
+
});
|
|
88
49
|
function onError() {
|
|
89
|
-
error.value = true
|
|
50
|
+
error.value = true;
|
|
90
51
|
}
|
|
91
52
|
</script>
|
|
92
53
|
|
|
@@ -108,7 +69,7 @@ function onError() {
|
|
|
108
69
|
<Slot v-else v-bind="$attrs">
|
|
109
70
|
<slot>
|
|
110
71
|
<Component :is="icon" v-if="icon" :class="b24ui.icon({ class: props.b24ui?.icon })" />
|
|
111
|
-
<span v-else :class="b24ui.fallback({ class: props.b24ui?.fallback })">{{ fallback || '
|
|
72
|
+
<span v-else :class="b24ui.fallback({ class: props.b24ui?.fallback })">{{ fallback || '\xA0' }}</span>
|
|
112
73
|
</slot>
|
|
113
74
|
</Slot>
|
|
114
75
|
</Primitive>
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import theme from '#build/b24ui/avatar';
|
|
3
|
+
import type { ComponentConfig } from '../types/utils';
|
|
4
|
+
import type { IconComponent } from '../types';
|
|
5
|
+
type Avatar = ComponentConfig<typeof theme, AppConfig, 'avatar'>;
|
|
6
|
+
export interface AvatarProps {
|
|
7
|
+
/**
|
|
8
|
+
* The element or component this component should render as.
|
|
9
|
+
* @defaultValue 'span'
|
|
10
|
+
*/
|
|
11
|
+
as?: any;
|
|
12
|
+
src?: string;
|
|
13
|
+
alt?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Display an icon on the left side.
|
|
16
|
+
* @IconComponent
|
|
17
|
+
*/
|
|
18
|
+
icon?: IconComponent;
|
|
19
|
+
text?: string;
|
|
20
|
+
/**
|
|
21
|
+
* @defaultValue 'md'
|
|
22
|
+
*/
|
|
23
|
+
size?: Avatar['variants']['size'];
|
|
24
|
+
class?: any;
|
|
25
|
+
style?: any;
|
|
26
|
+
b24ui?: Avatar['slots'];
|
|
27
|
+
}
|
|
28
|
+
export interface AvatarSlots {
|
|
29
|
+
default(props?: {}): any;
|
|
30
|
+
}
|
|
31
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<AvatarProps>, {
|
|
32
|
+
as: string;
|
|
33
|
+
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<AvatarProps>, {
|
|
34
|
+
as: string;
|
|
35
|
+
}>>> & Readonly<{}>, {
|
|
36
|
+
as: any;
|
|
37
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
|
|
38
|
+
default?(_: {}): any;
|
|
39
|
+
}>;
|
|
40
|
+
export default _default;
|
|
41
|
+
type __VLS_WithDefaults<P, D> = {
|
|
42
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
|
|
43
|
+
default: D[K];
|
|
44
|
+
}> : P[K];
|
|
45
|
+
};
|
|
46
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
47
|
+
type __VLS_TypePropsToOption<T> = {
|
|
48
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
49
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
50
|
+
} : {
|
|
51
|
+
type: import('vue').PropType<T[K]>;
|
|
52
|
+
required: true;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
56
|
+
new (): {
|
|
57
|
+
$slots: S;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
type __VLS_PrettifyLocal<T> = {
|
|
61
|
+
[K in keyof T]: T[K];
|
|
62
|
+
} & {};
|
|
@@ -1,97 +1,60 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
4
|
-
import _appConfig from '#build/app.config'
|
|
5
|
-
import theme from '#build/b24ui/avatar-group'
|
|
6
|
-
import { tv } from '../utils/tv'
|
|
7
|
-
|
|
8
|
-
const appConfigAvatarGroup = _appConfig as AppConfig & { b24ui: { avatarGroup: Partial<typeof theme> } }
|
|
9
|
-
|
|
10
|
-
const avatarGroup = tv({ extend: tv(theme), ...(appConfigAvatarGroup.b24ui?.avatarGroup || {}) })
|
|
11
|
-
|
|
12
|
-
type AvatarGroupVariants = VariantProps<typeof avatarGroup>
|
|
13
|
-
|
|
14
|
-
export interface AvatarGroupProps {
|
|
15
|
-
/**
|
|
16
|
-
* The element or component this component should render as.
|
|
17
|
-
* @defaultValue 'div'
|
|
18
|
-
*/
|
|
19
|
-
as?: any
|
|
20
|
-
/**
|
|
21
|
-
* @defaultValue 'md'
|
|
22
|
-
*/
|
|
23
|
-
size?: AvatarGroupVariants['size']
|
|
24
|
-
/**
|
|
25
|
-
* The maximum number of avatars to display.
|
|
26
|
-
*/
|
|
27
|
-
max?: number | string
|
|
28
|
-
class?: any
|
|
29
|
-
b24ui?: Partial<typeof avatarGroup.slots>
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface AvatarGroupSlots {
|
|
33
|
-
default(props?: {}): any
|
|
34
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/b24ui/avatar-group";
|
|
35
3
|
</script>
|
|
36
4
|
|
|
37
|
-
<script setup
|
|
38
|
-
import { computed, provide } from
|
|
39
|
-
import { Primitive } from
|
|
40
|
-
import {
|
|
41
|
-
import
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed, provide } from "vue";
|
|
7
|
+
import { Primitive } from "reka-ui";
|
|
8
|
+
import { useAppConfig } from "#imports";
|
|
9
|
+
import { avatarGroupInjectionKey } from "../composables/useAvatarGroup";
|
|
10
|
+
import { tv } from "../utils/tv";
|
|
11
|
+
import B24Avatar from "./Avatar.vue";
|
|
12
|
+
const props = defineProps({
|
|
13
|
+
as: { type: null, required: false },
|
|
14
|
+
size: { type: null, required: false },
|
|
15
|
+
max: { type: [Number, String], required: false },
|
|
16
|
+
class: { type: null, required: false },
|
|
17
|
+
b24ui: { type: null, required: false }
|
|
18
|
+
});
|
|
19
|
+
const slots = defineSlots();
|
|
20
|
+
const appConfig = useAppConfig();
|
|
21
|
+
const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.avatarGroup || {} })({
|
|
47
22
|
size: props.size
|
|
48
|
-
}))
|
|
49
|
-
|
|
50
|
-
const max = computed(() => typeof props.max === 'string' ? Number.parseInt(props.max, 10) : props.max)
|
|
51
|
-
|
|
23
|
+
}));
|
|
24
|
+
const max = computed(() => typeof props.max === "string" ? Number.parseInt(props.max, 10) : props.max);
|
|
52
25
|
const children = computed(() => {
|
|
53
|
-
let
|
|
54
|
-
if (
|
|
55
|
-
|
|
56
|
-
if (typeof child.type ===
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return
|
|
26
|
+
let children2 = slots.default?.();
|
|
27
|
+
if (children2?.length) {
|
|
28
|
+
children2 = children2.flatMap((child) => {
|
|
29
|
+
if (typeof child.type === "symbol") {
|
|
30
|
+
if (typeof child.children === "string") {
|
|
31
|
+
return;
|
|
60
32
|
}
|
|
61
|
-
|
|
62
|
-
return child.children
|
|
33
|
+
return child.children;
|
|
63
34
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}).filter(Boolean)
|
|
35
|
+
return child;
|
|
36
|
+
}).filter(Boolean);
|
|
67
37
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
})
|
|
71
|
-
|
|
38
|
+
return children2 || [];
|
|
39
|
+
});
|
|
72
40
|
const visibleAvatars = computed(() => {
|
|
73
41
|
if (!children.value.length) {
|
|
74
|
-
return []
|
|
42
|
+
return [];
|
|
75
43
|
}
|
|
76
|
-
|
|
77
44
|
if (!max.value || max.value <= 0) {
|
|
78
|
-
return [...children.value]
|
|
45
|
+
return [...children.value];
|
|
79
46
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
})
|
|
83
|
-
|
|
47
|
+
return [...children.value].slice(0, max.value);
|
|
48
|
+
});
|
|
84
49
|
const hiddenCount = computed(() => {
|
|
85
50
|
if (!children.value.length) {
|
|
86
|
-
return 0
|
|
51
|
+
return 0;
|
|
87
52
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
})
|
|
91
|
-
|
|
53
|
+
return children.value.length - visibleAvatars.value.length;
|
|
54
|
+
});
|
|
92
55
|
provide(avatarGroupInjectionKey, computed(() => ({
|
|
93
56
|
size: props.size
|
|
94
|
-
})))
|
|
57
|
+
})));
|
|
95
58
|
</script>
|
|
96
59
|
|
|
97
60
|
<template>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import theme from '#build/b24ui/avatar-group';
|
|
3
|
+
import type { ComponentConfig } from '../types/utils';
|
|
4
|
+
type AvatarGroup = ComponentConfig<typeof theme, AppConfig, 'avatarGroup'>;
|
|
5
|
+
export interface AvatarGroupProps {
|
|
6
|
+
/**
|
|
7
|
+
* The element or component this component should render as.
|
|
8
|
+
* @defaultValue 'div'
|
|
9
|
+
*/
|
|
10
|
+
as?: any;
|
|
11
|
+
/**
|
|
12
|
+
* @defaultValue 'md'
|
|
13
|
+
*/
|
|
14
|
+
size?: AvatarGroup['variants']['size'];
|
|
15
|
+
/**
|
|
16
|
+
* The maximum number of avatars to display.
|
|
17
|
+
*/
|
|
18
|
+
max?: number | string;
|
|
19
|
+
class?: any;
|
|
20
|
+
b24ui?: AvatarGroup['slots'];
|
|
21
|
+
}
|
|
22
|
+
export interface AvatarGroupSlots {
|
|
23
|
+
default(props?: {}): any;
|
|
24
|
+
}
|
|
25
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<AvatarGroupProps>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<AvatarGroupProps>>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<AvatarGroupSlots> & AvatarGroupSlots>;
|
|
26
|
+
export default _default;
|
|
27
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
28
|
+
type __VLS_TypePropsToOption<T> = {
|
|
29
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
30
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
31
|
+
} : {
|
|
32
|
+
type: import('vue').PropType<T[K]>;
|
|
33
|
+
required: true;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
37
|
+
new (): {
|
|
38
|
+
$slots: S;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
@@ -1,89 +1,45 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
4
|
-
import _appConfig from '#build/app.config'
|
|
5
|
-
import theme from '#build/b24ui/badge'
|
|
6
|
-
import type { UseComponentIconsProps } from '../composables/useComponentIcons'
|
|
7
|
-
import { tv } from '../utils/tv'
|
|
8
|
-
import type { AvatarProps } from '../types'
|
|
9
|
-
|
|
10
|
-
const appConfigBadge = _appConfig as AppConfig & { b24ui: { badge: Partial<typeof theme> } }
|
|
11
|
-
|
|
12
|
-
const badge = tv({ extend: tv(theme), ...(appConfigBadge.b24ui?.badge || {}) })
|
|
13
|
-
|
|
14
|
-
type BadgeVariants = VariantProps<typeof badge>
|
|
15
|
-
|
|
16
|
-
export interface BadgeProps extends Omit<UseComponentIconsProps, 'loading' | 'loadingIcon'> {
|
|
17
|
-
/**
|
|
18
|
-
* The element or component this component should render as.
|
|
19
|
-
* @defaultValue 'span'
|
|
20
|
-
*/
|
|
21
|
-
as?: any
|
|
22
|
-
label?: string | number
|
|
23
|
-
/**
|
|
24
|
-
* @defaultValue 'default'
|
|
25
|
-
*/
|
|
26
|
-
color?: BadgeVariants['color']
|
|
27
|
-
/**
|
|
28
|
-
* @defaultValue 'normal'
|
|
29
|
-
*/
|
|
30
|
-
depth?: BadgeVariants['depth']
|
|
31
|
-
/**
|
|
32
|
-
* @defaultValue 'md'
|
|
33
|
-
*/
|
|
34
|
-
size?: BadgeVariants['size']
|
|
35
|
-
/**
|
|
36
|
-
* Shows 'underline' on hover
|
|
37
|
-
* @defaultValue false
|
|
38
|
-
*/
|
|
39
|
-
useLink?: boolean
|
|
40
|
-
/**
|
|
41
|
-
* Shows icons.close on the right side
|
|
42
|
-
* @defaultValue false
|
|
43
|
-
*/
|
|
44
|
-
useClose?: boolean
|
|
45
|
-
onCloseClick?: ((event: MouseEvent) => void | Promise<void>) | Array<((event: MouseEvent) => void | Promise<void>)>
|
|
46
|
-
/**
|
|
47
|
-
* Fills the background
|
|
48
|
-
* @defaultValue false
|
|
49
|
-
*/
|
|
50
|
-
useFill?: boolean
|
|
51
|
-
class?: any
|
|
52
|
-
b24ui?: Partial<typeof badge.slots>
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export interface BadgeSlots {
|
|
56
|
-
leading(props?: {}): any
|
|
57
|
-
default(props?: {}): any
|
|
58
|
-
trailing(props?: {}): any
|
|
59
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/b24ui/badge";
|
|
60
3
|
</script>
|
|
61
4
|
|
|
62
|
-
<script setup
|
|
63
|
-
import { computed } from
|
|
64
|
-
import { Primitive } from
|
|
65
|
-
import {
|
|
66
|
-
import {
|
|
67
|
-
import
|
|
68
|
-
import
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed } from "vue";
|
|
7
|
+
import { Primitive } from "reka-ui";
|
|
8
|
+
import { useAppConfig } from "#imports";
|
|
9
|
+
import { useButtonGroup } from "../composables/useButtonGroup";
|
|
10
|
+
import { useComponentIcons } from "../composables/useComponentIcons";
|
|
11
|
+
import { tv } from "../utils/tv";
|
|
12
|
+
import Cross20Icon from "@bitrix24/b24icons-vue/actions/Cross20Icon";
|
|
13
|
+
import B24Avatar from "./Avatar.vue";
|
|
14
|
+
const props = defineProps({
|
|
15
|
+
as: { type: null, required: false, default: "span" },
|
|
16
|
+
label: { type: [String, Number], required: false },
|
|
17
|
+
color: { type: null, required: false },
|
|
18
|
+
depth: { type: null, required: false },
|
|
19
|
+
size: { type: null, required: false },
|
|
20
|
+
useLink: { type: Boolean, required: false },
|
|
21
|
+
useClose: { type: Boolean, required: false },
|
|
22
|
+
onCloseClick: { type: [Function, Array], required: false },
|
|
23
|
+
useFill: { type: Boolean, required: false },
|
|
24
|
+
class: { type: null, required: false },
|
|
25
|
+
b24ui: { type: null, required: false },
|
|
26
|
+
icon: { type: [Function, Object], required: false },
|
|
27
|
+
avatar: { type: Object, required: false },
|
|
28
|
+
trailing: { type: Boolean, required: false },
|
|
29
|
+
trailingIcon: { type: [Function, Object], required: false }
|
|
30
|
+
});
|
|
31
|
+
defineSlots();
|
|
32
|
+
const appConfig = useAppConfig();
|
|
33
|
+
async function onCloseClickWrapper(event) {
|
|
34
|
+
const callbacks = Array.isArray(props.onCloseClick) ? props.onCloseClick : [props.onCloseClick];
|
|
78
35
|
try {
|
|
79
|
-
await Promise.all(callbacks.map(fn => fn?.(event)))
|
|
80
|
-
} finally {
|
|
36
|
+
await Promise.all(callbacks.map((fn) => fn?.(event)));
|
|
37
|
+
} finally {
|
|
38
|
+
}
|
|
81
39
|
}
|
|
82
|
-
|
|
83
|
-
const {
|
|
84
|
-
const {
|
|
85
|
-
|
|
86
|
-
const b24ui = computed(() => badge({
|
|
40
|
+
const { orientation, size: buttonGroupSize } = useButtonGroup(props);
|
|
41
|
+
const { isLeading, leadingIconName } = useComponentIcons(props);
|
|
42
|
+
const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.badge || {} })({
|
|
87
43
|
color: props.color,
|
|
88
44
|
depth: props.depth,
|
|
89
45
|
size: buttonGroupSize.value || props.size,
|
|
@@ -92,7 +48,7 @@ const b24ui = computed(() => badge({
|
|
|
92
48
|
useClose: Boolean(props.useClose),
|
|
93
49
|
useFill: Boolean(props.useFill),
|
|
94
50
|
leading: Boolean(isLeading.value)
|
|
95
|
-
}))
|
|
51
|
+
}));
|
|
96
52
|
</script>
|
|
97
53
|
|
|
98
54
|
<template>
|
|
@@ -112,7 +68,7 @@ const b24ui = computed(() => badge({
|
|
|
112
68
|
/>
|
|
113
69
|
<B24Avatar
|
|
114
70
|
v-else-if="!!avatar"
|
|
115
|
-
:size="
|
|
71
|
+
:size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
|
|
116
72
|
v-bind="avatar"
|
|
117
73
|
:class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
|
|
118
74
|
/>
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import theme from '#build/b24ui/badge';
|
|
3
|
+
import type { UseComponentIconsProps } from '../composables/useComponentIcons';
|
|
4
|
+
import type { ComponentConfig } from '../types/utils';
|
|
5
|
+
type Badge = ComponentConfig<typeof theme, AppConfig, 'badge'>;
|
|
6
|
+
export interface BadgeProps extends Omit<UseComponentIconsProps, 'loading' | 'loadingIcon'> {
|
|
7
|
+
/**
|
|
8
|
+
* The element or component this component should render as.
|
|
9
|
+
* @defaultValue 'span'
|
|
10
|
+
*/
|
|
11
|
+
as?: any;
|
|
12
|
+
label?: string | number;
|
|
13
|
+
/**
|
|
14
|
+
* @defaultValue 'default'
|
|
15
|
+
*/
|
|
16
|
+
color?: Badge['variants']['color'];
|
|
17
|
+
/**
|
|
18
|
+
* @defaultValue 'normal'
|
|
19
|
+
*/
|
|
20
|
+
depth?: Badge['variants']['depth'];
|
|
21
|
+
/**
|
|
22
|
+
* @defaultValue 'md'
|
|
23
|
+
*/
|
|
24
|
+
size?: Badge['variants']['size'];
|
|
25
|
+
/**
|
|
26
|
+
* Shows 'underline' on hover
|
|
27
|
+
* @defaultValue false
|
|
28
|
+
*/
|
|
29
|
+
useLink?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Shows icons.close on the right side
|
|
32
|
+
* @defaultValue false
|
|
33
|
+
*/
|
|
34
|
+
useClose?: boolean;
|
|
35
|
+
onCloseClick?: ((event: MouseEvent) => void | Promise<void>) | Array<((event: MouseEvent) => void | Promise<void>)>;
|
|
36
|
+
/**
|
|
37
|
+
* Fills the background
|
|
38
|
+
* @defaultValue false
|
|
39
|
+
*/
|
|
40
|
+
useFill?: boolean;
|
|
41
|
+
class?: any;
|
|
42
|
+
b24ui?: Badge['slots'];
|
|
43
|
+
}
|
|
44
|
+
export interface BadgeSlots {
|
|
45
|
+
leading(props?: {}): any;
|
|
46
|
+
default(props?: {}): any;
|
|
47
|
+
trailing(props?: {}): any;
|
|
48
|
+
}
|
|
49
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<BadgeProps>, {
|
|
50
|
+
as: string;
|
|
51
|
+
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<BadgeProps>, {
|
|
52
|
+
as: string;
|
|
53
|
+
}>>> & Readonly<{}>, {
|
|
54
|
+
as: any;
|
|
55
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<BadgeSlots> & BadgeSlots>;
|
|
56
|
+
export default _default;
|
|
57
|
+
type __VLS_WithDefaults<P, D> = {
|
|
58
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
|
|
59
|
+
default: D[K];
|
|
60
|
+
}> : P[K];
|
|
61
|
+
};
|
|
62
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
63
|
+
type __VLS_TypePropsToOption<T> = {
|
|
64
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
65
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
66
|
+
} : {
|
|
67
|
+
type: import('vue').PropType<T[K]>;
|
|
68
|
+
required: true;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
72
|
+
new (): {
|
|
73
|
+
$slots: S;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
type __VLS_PrettifyLocal<T> = {
|
|
77
|
+
[K in keyof T]: T[K];
|
|
78
|
+
} & {};
|