@profitliga/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/dist/components/AlertDialog/AlertDialogAction.vue.js +2 -3
- package/dist/components/AlertDialog/AlertDialogCancel.vue.js +8 -9
- package/dist/components/AlertDialog/AlertDialogTrigger.vue.js +7 -8
- package/dist/components/Button/Button.css +1 -1
- package/dist/components/Button/Button.vue.js +5 -52
- package/dist/components/Button/Button.vue2.js +52 -3
- package/dist/components/Calendar/CalendarNext.vue.js +3 -4
- package/dist/components/Calendar/CalendarPrev.vue.js +7 -8
- package/dist/components/ConfirmDialog/ConfirmDialog.vue2.js +11 -12
- package/dist/components/DatePicker/DatePickerNext.vue.js +1 -2
- package/dist/components/DatePicker/DatePickerPrev.vue.js +7 -8
- package/dist/components/DateRangePicker/DateRangePickerNext.vue.js +6 -7
- package/dist/components/DateRangePicker/DateRangePickerPrev.vue.js +7 -8
- package/dist/components/RangeCalendar/RangeCalendarNext.vue.js +3 -4
- package/dist/components/RangeCalendar/RangeCalendarPrev.vue.js +3 -4
- package/dist/components/Schedule/Schedule.vue2.js +38 -39
- package/dist/components/index.js +391 -392
- package/dist/components/v2/AlertDialog/AlertDialog.css +1 -1
- package/dist/components/v2/AlertDialog/AlertDialog.types.d.ts +2 -2
- package/dist/components/v2/AlertDialog/AlertDialog.vue.d.ts +2 -2
- package/dist/components/v2/AlertDialog/AlertDialog.vue.js +2 -2
- package/dist/components/v2/AlertDialog/AlertDialog.vue2.js +29 -29
- package/dist/components/v2/Checkbox/Checkbox.css +1 -1
- package/dist/components/v2/Checkbox/Checkbox.types.d.ts +11 -0
- package/dist/components/v2/Checkbox/Checkbox.vue.d.ts +2 -0
- package/dist/components/v2/Checkbox/Checkbox.vue.js +2 -2
- package/dist/components/v2/Checkbox/Checkbox.vue2.js +61 -49
- package/dist/components/v2/Combobox/Combobox.css +1 -1
- package/dist/components/v2/Combobox/Combobox.types.d.ts +28 -2
- package/dist/components/v2/Combobox/Combobox.vue.d.ts +3 -2
- package/dist/components/v2/Combobox/Combobox.vue.js +1 -1
- package/dist/components/v2/Combobox/Combobox.vue2.js +305 -251
- package/dist/components/v2/ConfirmDialog/ConfirmDialog.types.d.ts +2 -2
- package/dist/components/v2/ConfirmDialog/ConfirmDialog.vue.d.ts +2 -2
- package/dist/components/v2/ConfirmDialog/ConfirmDialog.vue.js +6 -6
- package/dist/components/v2/DatePicker/DatePicker.css +1 -1
- package/dist/components/v2/DatePicker/DatePicker.types.d.ts +2 -2
- package/dist/components/v2/DatePicker/DatePicker.vue.d.ts +2 -2
- package/dist/components/v2/DatePicker/DatePicker.vue.js +2 -2
- package/dist/components/v2/DatePicker/DatePicker.vue2.js +54 -54
- package/dist/components/v2/Divider/Divider.css +1 -1
- package/dist/components/v2/Divider/Divider.types.d.ts +8 -0
- package/dist/components/v2/Divider/Divider.vue.js +2 -2
- package/dist/components/v2/DropdownMenu/DropdownMenu.types.d.ts +2 -2
- package/dist/components/v2/DropdownMenu/DropdownMenu.vue.d.ts +2 -2
- package/dist/components/v2/DropdownMenu/DropdownMenu.vue2.js +6 -6
- package/dist/components/v2/FileUpload/FileUpload.css +1 -1
- package/dist/components/v2/FileUpload/FileUpload.vue.js +2 -2
- package/dist/components/v2/FileUpload/FileUpload.vue2.js +16 -16
- package/dist/components/v2/FormField/FormField.css +1 -0
- package/dist/components/v2/FormField/FormField.types.d.ts +48 -0
- package/dist/components/v2/FormField/FormField.vue.d.ts +25 -0
- package/dist/components/v2/FormField/FormField.vue.js +8 -0
- package/dist/components/v2/FormField/FormField.vue2.js +54 -0
- package/dist/components/v2/FormField/index.d.ts +3 -0
- package/dist/components/v2/Image/Image.css +1 -0
- package/dist/components/v2/Image/Image.types.d.ts +26 -0
- package/dist/components/v2/Image/Image.vue.d.ts +16 -0
- package/dist/components/v2/Image/Image.vue.js +8 -0
- package/dist/components/v2/Image/Image.vue2.js +91 -0
- package/dist/components/v2/Image/ImageList.css +1 -0
- package/dist/components/v2/Image/ImageList.types.d.ts +28 -0
- package/dist/components/v2/Image/ImageList.vue.d.ts +15 -0
- package/dist/components/v2/Image/ImageList.vue.js +8 -0
- package/dist/components/v2/Image/ImageList.vue2.js +38 -0
- package/dist/components/v2/Image/index.d.ts +5 -0
- package/dist/components/v2/Input/Input.css +1 -1
- package/dist/components/v2/Input/Input.vue.js +2 -2
- package/dist/components/v2/Input/Input.vue2.js +113 -107
- package/dist/components/v2/InputNumber/InputNumber.css +1 -1
- package/dist/components/v2/InputNumber/InputNumber.vue.js +2 -2
- package/dist/components/v2/InputNumber/InputNumber.vue2.js +22 -21
- package/dist/components/v2/InputSelect/InputSelect.types.d.ts +2 -2
- package/dist/components/v2/InputSelect/InputSelect.vue.d.ts +2 -2
- package/dist/components/v2/InputSelect/InputSelect.vue.js +14 -14
- package/dist/components/v2/InputSelect/InputSelectChip.css +1 -1
- package/dist/components/v2/InputSelect/InputSelectChip.vue.d.ts +3 -3
- package/dist/components/v2/InputSelect/InputSelectChip.vue.js +2 -2
- package/dist/components/v2/InputSelect/InputSelectChip.vue2.js +17 -17
- package/dist/components/v2/Popover/Popover.css +1 -1
- package/dist/components/v2/Popover/Popover.types.d.ts +2 -2
- package/dist/components/v2/Popover/Popover.vue.d.ts +2 -2
- package/dist/components/v2/Popover/Popover.vue.js +2 -2
- package/dist/components/v2/Popover/Popover.vue2.js +24 -24
- package/dist/components/v2/Radio/Radio.css +1 -1
- package/dist/components/v2/Radio/Radio.vue.d.ts +4 -0
- package/dist/components/v2/Radio/Radio.vue.js +1 -1
- package/dist/components/v2/Radio/Radio.vue2.js +57 -49
- package/dist/components/v2/Schedule/Schedule.css +1 -1
- package/dist/components/v2/Schedule/Schedule.types.d.ts +2 -2
- package/dist/components/v2/Schedule/Schedule.vue.d.ts +2 -2
- package/dist/components/v2/Schedule/Schedule.vue.js +3 -3
- package/dist/components/v2/Schedule/Schedule.vue2.js +55 -55
- package/dist/components/v2/Select/Select.css +1 -1
- package/dist/components/v2/Select/Select.types.d.ts +8 -2
- package/dist/components/v2/Select/Select.vue.js +3 -3
- package/dist/components/v2/Select/Select.vue2.js +143 -127
- package/dist/components/v2/Toast/Toast.types.d.ts +2 -2
- package/dist/components/v2/Toast/Toaster.css +1 -1
- package/dist/components/v2/Toast/Toaster.vue.d.ts +2 -2
- package/dist/components/v2/Toast/Toaster.vue.js +1 -1
- package/dist/components/v2/Toast/Toaster.vue2.js +17 -17
- package/dist/components/v2/Tooltip/Tooltip.css +1 -1
- package/dist/components/v2/Tooltip/Tooltip.types.d.ts +2 -2
- package/dist/components/v2/Tooltip/Tooltip.vue.d.ts +2 -2
- package/dist/components/v2/Tooltip/Tooltip.vue.js +1 -1
- package/dist/components/v2/Tooltip/Tooltip.vue2.js +39 -38
- package/dist/components/v2/Tooltip/TooltipContent.css +1 -1
- package/dist/components/v2/Tooltip/TooltipContent.vue.d.ts +2 -2
- package/dist/components/v2/Tooltip/TooltipContent.vue.js +2 -2
- package/dist/components/v2/Tooltip/TooltipContent.vue2.js +20 -20
- package/dist/components/v2/Tooltip/vTooltip.directive.js +40 -41
- package/dist/components/v2/index.d.ts +2 -0
- package/dist/components/v2/index.js +82 -76
- package/dist/components/v2/shared/isHtmlElement.util.d.ts +15 -0
- package/dist/components/v2/shared/isHtmlElement.util.js +10 -0
- package/dist/components/v2/shared/useIsMobile.util.d.ts +13 -0
- package/dist/components/v2/shared/useIsMobile.util.js +8 -0
- package/dist/components/v2/shared/useTriggerAria.util.js +4 -3
- package/dist/types/global.types.d.ts +10 -0
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
.alert-dialog-trigger[data-v-
|
|
1
|
+
.alert-dialog-trigger[data-v-4f6feced]{display:contents}.alert-dialog-layer[data-v-4f6feced]{position:relative}.alert-dialog-icon[data-v-4f6feced]{--icon-bg:var(--color-primary-600);--icon-shadow:#008925b2;box-sizing:border-box;width:44px;height:44px;color:var(--color-neutral-0);background-color:var(--icon-bg);box-shadow:-1px 1px 10px 0px var(--icon-shadow);filter:opacity(.7);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;padding:8px;display:flex}.alert-dialog-icon--success[data-v-4f6feced]{--icon-bg:var(--color-primary-600);--icon-shadow:#008925b2}.alert-dialog-icon--warning[data-v-4f6feced]{--icon-bg:var(--color-warn-600);--icon-shadow:#d47d16b2}.alert-dialog-icon--error[data-v-4f6feced]{--icon-bg:var(--color-error-600);--icon-shadow:#bd2429b2}.alert-dialog-content[data-v-4f6feced]{box-sizing:content-box;scrollbar-width:thin;scrollbar-color:var(--theme-neutral-icon-primary) var(--theme-neutral-surface-icon);width:90vw;max-height:85vh;overflow-y:auto}.alert-dialog-content[data-v-4f6feced]::-webkit-scrollbar{width:8px;height:0}.alert-dialog-content[data-v-4f6feced]::-webkit-scrollbar-thumb{background-color:var(--theme-neutral-icon-primary);background-clip:padding-box;border:1px solid #0000;border-radius:999px}.alert-dialog-content[data-v-4f6feced]::-webkit-scrollbar-track{background:var(--theme-neutral-surface-icon);border-radius:4px}.alert-dialog-content[data-v-4f6feced]::-webkit-scrollbar-corner{background:0 0}.alert-dialog-content[data-v-4f6feced]{box-sizing:border-box;z-index:1001;background-color:#fff;border-radius:12px;flex-direction:column;justify-content:flex-start;align-items:flex-start;padding:24px;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.alert-dialog-content[data-state=open][data-v-4f6feced]{animation:fadeIn var(--animation-duration) ease-in-out}.alert-dialog-content[data-state=closed][data-v-4f6feced]{animation:fadeOut var(--animation-duration) ease-in-out}.alert-dialog-content__header[data-v-4f6feced]{justify-content:flex-start;align-items:center;gap:12px;width:100%;margin-bottom:20px;display:flex}.alert-dialog-content__header--divided[data-v-4f6feced]{border-bottom:1px solid var(--color-secondary-250);margin-bottom:12px;padding-bottom:12px}.alert-dialog-content__title[data-v-4f6feced]{width:100%;color:var(--theme-neutral-text-title);margin:0;font-size:1.25rem;font-weight:500;line-height:120%}.alert-dialog-content__title--with-icon[data-v-4f6feced]{font-weight:700}.alert-dialog-content__description[data-v-4f6feced]{width:100%;color:var(--theme-neutral-text-body);margin:0 0 12px;font-size:1rem;font-weight:400;line-height:160%}.alert-dialog-content__actions[data-v-4f6feced]{justify-content:flex-end;align-items:center;gap:12px;width:100%;margin-top:20px;display:flex}.alert-dialog-mobile[data-v-4f6feced]{box-sizing:border-box;flex-direction:column;gap:16px;width:100%;padding:16px;display:flex}.alert-dialog-mobile__header[data-v-4f6feced]{justify-content:flex-start;align-items:center;gap:12px;display:flex}.alert-dialog-mobile__header--divided[data-v-4f6feced]{border-bottom:1px solid var(--color-secondary-250);padding-bottom:12px}.alert-dialog-mobile__title[data-v-4f6feced]{color:var(--theme-neutral-text-title);margin:0;font-size:1.125rem;font-weight:500;line-height:1.5}.alert-dialog-mobile__title--with-icon[data-v-4f6feced]{font-weight:700}.alert-dialog-mobile__description[data-v-4f6feced]{color:var(--theme-neutral-text-body);font-size:1rem;font-weight:400;line-height:160%}.alert-dialog-mobile__actions[data-v-4f6feced]{flex-direction:column-reverse;gap:8px;width:100%;display:flex}.alert-dialog-mobile__actions[data-v-4f6feced] button{width:100%}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TBreakpointMobile } from '../../../types/global.types';
|
|
2
2
|
export type AlertDialogVariant = 'success' | 'warning' | 'error';
|
|
3
3
|
export interface AlertDialogProps {
|
|
4
4
|
width?: number;
|
|
5
|
-
breakpointMobile?:
|
|
5
|
+
breakpointMobile?: TBreakpointMobile;
|
|
6
6
|
/**
|
|
7
7
|
* Статус диалога. Добавляет в шапку цветную плашку с иконкой:
|
|
8
8
|
* success — галочка, warning и error — восклицательный знак.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AlertDialogProps, AlertDialogVariant } from './AlertDialog.types';
|
|
2
2
|
import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
|
|
3
|
-
import {
|
|
3
|
+
import { TBreakpointMobile } from '../../../types/global.types';
|
|
4
4
|
type __VLS_Props = AlertDialogProps;
|
|
5
5
|
type __VLS_PublicProps = {
|
|
6
6
|
'open'?: boolean;
|
|
@@ -40,7 +40,7 @@ declare const __VLS_component: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}
|
|
|
40
40
|
}>, {
|
|
41
41
|
width: number;
|
|
42
42
|
variant: AlertDialogVariant;
|
|
43
|
-
breakpointMobile:
|
|
43
|
+
breakpointMobile: TBreakpointMobile;
|
|
44
44
|
divider: boolean;
|
|
45
45
|
testId: string;
|
|
46
46
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {
|
|
@@ -2,7 +2,7 @@ import './AlertDialog.css';
|
|
|
2
2
|
import o from "./AlertDialog.vue2.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
import t from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
5
|
-
const
|
|
5
|
+
const a = /* @__PURE__ */ t(o, [["__scopeId", "data-v-4f6feced"]]);
|
|
6
6
|
export {
|
|
7
|
-
|
|
7
|
+
a as default
|
|
8
8
|
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { defineComponent as W, useModel as Z, useId as j, computed as m, useTemplateRef as R, onBeforeUnmount as G, openBlock as o, createElementBlock as n, Fragment as H, mergeProps as i, unref as t, renderSlot as s, createCommentVNode as d, createBlock as g, withCtx as A, createElementVNode as c, normalizeClass as T, resolveDynamicComponent as z, normalizeStyle as J, mergeModels as O } from "vue";
|
|
2
2
|
import { CircleCheck as Q, CircleAlert as X } from "@lucide/vue";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import te from "../BottomSheet/BottomSheet.vue.js";
|
|
3
|
+
import { useBodyScroll as Y } from "../../../utils/useBodyScroll.util.js";
|
|
4
|
+
import { useFocusTrap as x } from "../../../utils/useFocusTrap.util.js";
|
|
5
|
+
import ee from "../BottomSheet/BottomSheet.vue.js";
|
|
7
6
|
import { ANIMATION_DURATION_MS as _ } from "../shared/animation.const.js";
|
|
8
|
-
import
|
|
9
|
-
import { useDelayedVisibility as
|
|
7
|
+
import te from "../shared/Portal.vue.js";
|
|
8
|
+
import { useDelayedVisibility as oe } from "../shared/useDelayedVisibility.util.js";
|
|
9
|
+
import { useIsMobile as ae } from "../shared/useIsMobile.util.js";
|
|
10
10
|
import { useLayerZIndex as ie } from "../shared/useLayerZIndex.util.js";
|
|
11
11
|
import { useTestId as le } from "../shared/useTestId.util.js";
|
|
12
12
|
import { useTriggerAria as se } from "../shared/useTriggerAria.util.js";
|
|
@@ -15,7 +15,7 @@ const re = { class: "alert-dialog-mobile" }, ne = ["data-state"], de = ["aria-de
|
|
|
15
15
|
__name: "AlertDialog",
|
|
16
16
|
props: /* @__PURE__ */ O({
|
|
17
17
|
width: { default: 500 },
|
|
18
|
-
breakpointMobile: { default: "sm" },
|
|
18
|
+
breakpointMobile: { type: [String, Boolean], default: "sm" },
|
|
19
19
|
variant: { default: void 0 },
|
|
20
20
|
divider: { type: Boolean, default: void 0 },
|
|
21
21
|
testId: { default: void 0 }
|
|
@@ -25,35 +25,35 @@ const re = { class: "alert-dialog-mobile" }, ne = ["data-state"], de = ["aria-de
|
|
|
25
25
|
}),
|
|
26
26
|
emits: /* @__PURE__ */ O(["escapeKeyDown"], ["update:open"]),
|
|
27
27
|
setup(l, { emit: N }) {
|
|
28
|
-
const u = l, I =
|
|
28
|
+
const u = l, I = ae(u.breakpointMobile), w = N, r = Z(l, "open"), y = j(), p = `alert-dialog-title-${y}`, C = `alert-dialog-description-${y}`, b = `alert-dialog-content-${y}`, K = m(() => `${u.width}px`), a = le(() => u.testId), L = m(() => ({
|
|
29
29
|
"aria-haspopup": "dialog",
|
|
30
30
|
"aria-expanded": r.value,
|
|
31
|
-
"aria-controls": r.value ?
|
|
32
|
-
})),
|
|
31
|
+
"aria-controls": r.value ? b : void 0
|
|
32
|
+
})), S = m(
|
|
33
33
|
() => u.variant === "success" ? Q : X
|
|
34
|
-
),
|
|
34
|
+
), B = m(() => u.divider ?? !!u.variant), D = R("triggerRef"), M = R("contentRef");
|
|
35
35
|
se({
|
|
36
|
-
host: () =>
|
|
36
|
+
host: () => D.value,
|
|
37
37
|
isOpen: () => r.value,
|
|
38
|
-
contentId: () =>
|
|
38
|
+
contentId: () => b,
|
|
39
39
|
hasPopup: () => "dialog"
|
|
40
40
|
});
|
|
41
|
-
const { lockScroll: P, unlockScroll: U } =
|
|
41
|
+
const { lockScroll: P, unlockScroll: U } = Y(), k = x(() => M.value), $ = ie();
|
|
42
42
|
function V() {
|
|
43
43
|
r.value = !1;
|
|
44
44
|
}
|
|
45
45
|
function h(e) {
|
|
46
46
|
e.key === "Escape" && (w("escapeKeyDown", e), e.defaultPrevented || V());
|
|
47
47
|
}
|
|
48
|
-
const F = m(() => r.value && !I.value), { visible: q, dataState:
|
|
48
|
+
const F = m(() => r.value && !I.value), { visible: q, dataState: E } = oe(
|
|
49
49
|
F,
|
|
50
50
|
_,
|
|
51
51
|
{
|
|
52
52
|
onOpen: () => {
|
|
53
|
-
$.acquire(), P(),
|
|
53
|
+
$.acquire(), P(), k.activate({ focusDelayMs: _ }), document.addEventListener("keydown", h);
|
|
54
54
|
},
|
|
55
55
|
onCloseStart: () => {
|
|
56
|
-
|
|
56
|
+
k.deactivate(), document.removeEventListener("keydown", h);
|
|
57
57
|
},
|
|
58
58
|
onCloseEnd: () => {
|
|
59
59
|
U(), $.release();
|
|
@@ -61,19 +61,19 @@ const re = { class: "alert-dialog-mobile" }, ne = ["data-state"], de = ["aria-de
|
|
|
61
61
|
}
|
|
62
62
|
);
|
|
63
63
|
return G(() => {
|
|
64
|
-
document.removeEventListener("keydown", h),
|
|
64
|
+
document.removeEventListener("keydown", h), k.deactivate();
|
|
65
65
|
}), (e, v) => (o(), n(H, null, [
|
|
66
66
|
e.$slots.trigger ? (o(), n("span", i({
|
|
67
67
|
key: 0,
|
|
68
68
|
ref_key: "triggerRef",
|
|
69
|
-
ref:
|
|
69
|
+
ref: D,
|
|
70
70
|
class: "alert-dialog-trigger"
|
|
71
71
|
}, t(a)("trigger"), {
|
|
72
72
|
onClick: v[0] || (v[0] = (f) => r.value = !0)
|
|
73
73
|
}), [
|
|
74
74
|
s(e.$slots, "trigger", { props: L.value }, void 0, !0)
|
|
75
75
|
], 16)) : d("", !0),
|
|
76
|
-
t(I) ? (o(), g(t(
|
|
76
|
+
t(I) ? (o(), g(t(ee), {
|
|
77
77
|
key: 1,
|
|
78
78
|
open: r.value,
|
|
79
79
|
"onUpdate:open": v[1] || (v[1] = (f) => r.value = f),
|
|
@@ -87,7 +87,7 @@ const re = { class: "alert-dialog-mobile" }, ne = ["data-state"], de = ["aria-de
|
|
|
87
87
|
c("div", re, [
|
|
88
88
|
c("div", {
|
|
89
89
|
class: T(["alert-dialog-mobile__header", {
|
|
90
|
-
"alert-dialog-mobile__header--divided":
|
|
90
|
+
"alert-dialog-mobile__header--divided": B.value
|
|
91
91
|
}])
|
|
92
92
|
}, [
|
|
93
93
|
l.variant ? (o(), n("span", i({
|
|
@@ -95,7 +95,7 @@ const re = { class: "alert-dialog-mobile" }, ne = ["data-state"], de = ["aria-de
|
|
|
95
95
|
class: ["alert-dialog-icon", `alert-dialog-icon--${l.variant}`]
|
|
96
96
|
}, t(a)("icon")), [
|
|
97
97
|
s(e.$slots, "icon", {}, () => [
|
|
98
|
-
(o(), g(z(
|
|
98
|
+
(o(), g(z(S.value), { size: 28 }))
|
|
99
99
|
], !0)
|
|
100
100
|
], 16)) : d("", !0),
|
|
101
101
|
c("h2", i({
|
|
@@ -122,7 +122,7 @@ const re = { class: "alert-dialog-mobile" }, ne = ["data-state"], de = ["aria-de
|
|
|
122
122
|
])
|
|
123
123
|
]),
|
|
124
124
|
_: 3
|
|
125
|
-
}, 8, ["open", "test-id"])) : t(q) ? (o(), g(
|
|
125
|
+
}, 8, ["open", "test-id"])) : t(q) ? (o(), g(te, { key: 2 }, {
|
|
126
126
|
default: A(() => [
|
|
127
127
|
c("div", {
|
|
128
128
|
class: "alert-dialog-layer",
|
|
@@ -130,23 +130,23 @@ const re = { class: "alert-dialog-mobile" }, ne = ["data-state"], de = ["aria-de
|
|
|
130
130
|
}, [
|
|
131
131
|
c("div", i({
|
|
132
132
|
class: "overlay alert-dialog-overlay",
|
|
133
|
-
"data-state": t(
|
|
133
|
+
"data-state": t(E)
|
|
134
134
|
}, t(a)("overlay")), null, 16, ne),
|
|
135
135
|
c("div", i({
|
|
136
|
-
id:
|
|
136
|
+
id: b,
|
|
137
137
|
ref_key: "contentRef",
|
|
138
|
-
ref:
|
|
138
|
+
ref: M,
|
|
139
139
|
role: "alertdialog",
|
|
140
140
|
"aria-modal": "true",
|
|
141
141
|
"aria-labelledby": p,
|
|
142
142
|
"aria-describedby": e.$slots.default ? C : void 0,
|
|
143
|
-
"data-state": t(
|
|
143
|
+
"data-state": t(E),
|
|
144
144
|
class: "alert-dialog-content",
|
|
145
145
|
style: { maxWidth: K.value }
|
|
146
146
|
}, { ...e.$attrs, ...t(a)("content") }), [
|
|
147
147
|
c("div", {
|
|
148
148
|
class: T(["alert-dialog-content__header", {
|
|
149
|
-
"alert-dialog-content__header--divided":
|
|
149
|
+
"alert-dialog-content__header--divided": B.value
|
|
150
150
|
}])
|
|
151
151
|
}, [
|
|
152
152
|
l.variant ? (o(), n("span", i({
|
|
@@ -154,7 +154,7 @@ const re = { class: "alert-dialog-mobile" }, ne = ["data-state"], de = ["aria-de
|
|
|
154
154
|
class: ["alert-dialog-icon", `alert-dialog-icon--${l.variant}`]
|
|
155
155
|
}, t(a)("icon")), [
|
|
156
156
|
s(e.$slots, "icon", {}, () => [
|
|
157
|
-
(o(), g(z(
|
|
157
|
+
(o(), g(z(S.value), { size: 28 }))
|
|
158
158
|
], !0)
|
|
159
159
|
], 16)) : d("", !0),
|
|
160
160
|
c("h2", i({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.checkbox-v2[data-v-
|
|
1
|
+
.checkbox-v2[data-v-05f1e5a6]{--checkbox-color:var(--theme-neutral-border-default);cursor:pointer;align-items:flex-start;gap:.5rem;display:inline-flex}.checkbox-v2__input[data-v-05f1e5a6]{clip-path:inset(50%);white-space:nowrap;border:0;width:.0625rem;height:.0625rem;margin:-.0625rem;padding:0;position:absolute;overflow:hidden}.checkbox-v2__box[data-v-05f1e5a6]{width:1.25rem;height:1.25rem;color:var(--theme-neutral-0);border:.0625rem solid var(--checkbox-color);transition:background-color var(--animation-duration-fast) ease, border-color var(--animation-duration-fast) ease, outline-color var(--animation-duration-fast) ease;border-radius:.3125rem;flex-shrink:0;justify-content:center;align-items:center;display:flex}.checkbox-v2__mark[data-v-05f1e5a6]{width:100%;height:100%}.checkbox-v2__text[data-v-05f1e5a6]{flex-direction:column;gap:.25rem;min-width:0;display:flex}.checkbox-v2__label[data-v-05f1e5a6]{color:var(--theme-neutral-text-title);overflow-wrap:break-word;font-size:.875rem;font-weight:400;line-height:1.25rem}.checkbox-v2__description[data-v-05f1e5a6]{color:var(--theme-neutral-text-caption);overflow-wrap:break-word;font-size:1rem;font-weight:400;line-height:1.25rem}.checkbox-v2[data-v-05f1e5a6]:not(:has(.checkbox-v2__description)){align-items:center}.checkbox-v2--icon-right[data-v-05f1e5a6]{flex-direction:row-reverse}.checkbox-v2--checked .checkbox-v2__box[data-v-05f1e5a6]{background-color:var(--checkbox-color)}.checkbox-v2--checked[data-v-05f1e5a6]{--checkbox-color:var(--theme-primary-500)}.checkbox-v2[data-v-05f1e5a6]:hover:not(.checkbox-v2--disabled){--checkbox-color:var(--theme-primary-300)}.checkbox-v2[data-v-05f1e5a6]:has(.checkbox-v2__input:focus-visible){--checkbox-color:var(--theme-primary-300)}.checkbox-v2:has(.checkbox-v2__input:focus-visible) .checkbox-v2__box[data-v-05f1e5a6]{outline:.0625rem solid var(--theme-primary-300);outline-offset:.125rem}.checkbox-v2[data-v-05f1e5a6]:active:not(.checkbox-v2--disabled){--checkbox-color:var(--theme-primary-700)}.checkbox-v2--disabled[data-v-05f1e5a6]{--checkbox-color:var(--theme-neutral-surface-disabled);cursor:not-allowed;opacity:.5}.checkbox-v2--disabled .checkbox-v2__label[data-v-05f1e5a6]{color:var(--theme-neutral-400)}.checkbox-v2--disabled.checkbox-v2--checked[data-v-05f1e5a6]{--checkbox-color:var(--theme-neutral-icon-disabled)}.checkbox-v2--error[data-v-05f1e5a6]:not(.checkbox-v2--disabled){--checkbox-color:var(--theme-error-500)}.checkbox-v2--error:not(.checkbox-v2--disabled) .checkbox-v2__label[data-v-05f1e5a6]{color:var(--theme-error-500)}.checkbox-v2__error[data-v-05f1e5a6]{color:var(--theme-error-500);overflow-wrap:break-word;font-size:.875rem;font-weight:400;line-height:1.25rem}
|
|
@@ -5,6 +5,17 @@ export interface CheckboxProps {
|
|
|
5
5
|
label?: string;
|
|
6
6
|
/** Пояснение под подписью. Можно заменить слотом `description` */
|
|
7
7
|
description?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Состояние ошибки: квадрат и подпись краснеют, показывается
|
|
10
|
+
* `errorMessage`. Типовой случай — незаполненное согласие на обработку
|
|
11
|
+
* персональных данных при отправке формы.
|
|
12
|
+
*/
|
|
13
|
+
error?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Текст ошибки под флажком. Показывается только при `error: true`, поэтому
|
|
16
|
+
* проп можно держать заполненным постоянно — так же, как у `Input`.
|
|
17
|
+
*/
|
|
18
|
+
errorMessage?: string;
|
|
8
19
|
disabled?: boolean;
|
|
9
20
|
iconPosition?: CheckboxIconPosition;
|
|
10
21
|
/** Имя поля в форме */
|
|
@@ -31,8 +31,10 @@ declare const __VLS_component: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}
|
|
|
31
31
|
disabled: boolean;
|
|
32
32
|
id: string;
|
|
33
33
|
iconPosition: CheckboxIconPosition;
|
|
34
|
+
error: boolean;
|
|
34
35
|
name: string;
|
|
35
36
|
description: string;
|
|
37
|
+
errorMessage: string;
|
|
36
38
|
ariaLabel: string;
|
|
37
39
|
testId: string;
|
|
38
40
|
ariaLabelledby: string;
|
|
@@ -2,7 +2,7 @@ import './Checkbox.css';
|
|
|
2
2
|
import o from "./Checkbox.vue2.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
import t from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
5
|
-
const
|
|
5
|
+
const f = /* @__PURE__ */ t(o, [["__scopeId", "data-v-05f1e5a6"]]);
|
|
6
6
|
export {
|
|
7
|
-
|
|
7
|
+
f as default
|
|
8
8
|
};
|
|
@@ -1,26 +1,28 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useTestId as
|
|
3
|
-
const
|
|
1
|
+
import { defineComponent as R, useModel as y, useSlots as T, useId as _, useTemplateRef as N, computed as i, watchEffect as P, openBlock as l, createElementBlock as o, mergeProps as n, unref as d, createElementVNode as f, createCommentVNode as c, renderSlot as w, createTextVNode as B, toDisplayString as h, mergeModels as L } from "vue";
|
|
2
|
+
import { useTestId as S } from "../shared/useTestId.util.js";
|
|
3
|
+
const D = ["for"], A = ["id", "name", "value", "checked", "disabled", "aria-label", "aria-labelledby", "aria-invalid"], H = {
|
|
4
4
|
key: 0,
|
|
5
5
|
class: "checkbox-v2__mark",
|
|
6
6
|
viewBox: "0 0 20 20",
|
|
7
7
|
fill: "none",
|
|
8
8
|
xmlns: "http://www.w3.org/2000/svg"
|
|
9
|
-
},
|
|
9
|
+
}, Z = {
|
|
10
10
|
key: 1,
|
|
11
11
|
class: "checkbox-v2__mark",
|
|
12
12
|
viewBox: "0 0 20 20",
|
|
13
13
|
fill: "none",
|
|
14
14
|
xmlns: "http://www.w3.org/2000/svg"
|
|
15
|
-
},
|
|
15
|
+
}, j = {
|
|
16
16
|
key: 0,
|
|
17
17
|
class: "checkbox-v2__text"
|
|
18
|
-
},
|
|
18
|
+
}, F = /* @__PURE__ */ R({
|
|
19
19
|
inheritAttrs: !1,
|
|
20
20
|
__name: "Checkbox",
|
|
21
21
|
props: /* @__PURE__ */ L({
|
|
22
22
|
label: { default: void 0 },
|
|
23
23
|
description: { default: void 0 },
|
|
24
|
+
error: { type: Boolean, default: !1 },
|
|
25
|
+
errorMessage: { default: void 0 },
|
|
24
26
|
disabled: { type: Boolean, default: !1 },
|
|
25
27
|
iconPosition: { default: "left" },
|
|
26
28
|
name: { default: void 0 },
|
|
@@ -36,31 +38,36 @@ const S = ["for"], D = ["id", "name", "value", "checked", "disabled", "aria-labe
|
|
|
36
38
|
indeterminateModifiers: {}
|
|
37
39
|
}),
|
|
38
40
|
emits: /* @__PURE__ */ L(["change"], ["update:modelValue", "update:indeterminate"]),
|
|
39
|
-
setup(e, { emit:
|
|
40
|
-
const
|
|
41
|
-
() => !!(
|
|
42
|
-
), I =
|
|
41
|
+
setup(e, { emit: M }) {
|
|
42
|
+
const a = e, C = M, u = y(e, "modelValue"), v = y(e, "indeterminate"), m = T(), s = S(() => a.testId), V = _(), b = N("inputRef"), k = i(() => a.id ?? `${V}-checkbox`), x = i(() => !!(a.label || m.default)), p = i(
|
|
43
|
+
() => !!(a.description || m.description)
|
|
44
|
+
), I = i(
|
|
45
|
+
() => x.value || p.value || g.value
|
|
46
|
+
), $ = i(() => [
|
|
43
47
|
"checkbox-v2",
|
|
44
|
-
`checkbox-v2--icon-${
|
|
48
|
+
`checkbox-v2--icon-${a.iconPosition}`,
|
|
45
49
|
{
|
|
46
|
-
"checkbox-v2--checked": u.value ||
|
|
47
|
-
"checkbox-v2--disabled":
|
|
50
|
+
"checkbox-v2--checked": u.value || v.value,
|
|
51
|
+
"checkbox-v2--disabled": a.disabled,
|
|
52
|
+
"checkbox-v2--error": a.error
|
|
48
53
|
}
|
|
49
|
-
])
|
|
50
|
-
|
|
51
|
-
|
|
54
|
+
]), g = i(
|
|
55
|
+
() => !!(a.error && a.errorMessage)
|
|
56
|
+
);
|
|
57
|
+
P(() => {
|
|
58
|
+
b.value && (b.value.indeterminate = v.value);
|
|
52
59
|
});
|
|
53
|
-
function
|
|
54
|
-
if (
|
|
55
|
-
const
|
|
56
|
-
|
|
60
|
+
function E(r) {
|
|
61
|
+
if (a.disabled) return;
|
|
62
|
+
const t = r.target.checked;
|
|
63
|
+
v.value = !1, u.value = t, C("change", t);
|
|
57
64
|
}
|
|
58
|
-
return (
|
|
59
|
-
class:
|
|
60
|
-
for:
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
-
id:
|
|
65
|
+
return (r, t) => (l(), o("label", n({
|
|
66
|
+
class: $.value,
|
|
67
|
+
for: k.value
|
|
68
|
+
}, d(s)("root")), [
|
|
69
|
+
f("input", n({
|
|
70
|
+
id: k.value,
|
|
64
71
|
ref_key: "inputRef",
|
|
65
72
|
ref: b,
|
|
66
73
|
type: "checkbox",
|
|
@@ -70,46 +77,51 @@ const S = ["for"], D = ["id", "name", "value", "checked", "disabled", "aria-labe
|
|
|
70
77
|
checked: u.value,
|
|
71
78
|
disabled: e.disabled,
|
|
72
79
|
"aria-label": e.ariaLabel,
|
|
73
|
-
"aria-labelledby": e.ariaLabelledby
|
|
74
|
-
|
|
75
|
-
|
|
80
|
+
"aria-labelledby": e.ariaLabelledby,
|
|
81
|
+
"aria-invalid": e.error || void 0
|
|
82
|
+
}, { ...r.$attrs, ...d(s)("input") }, { onChange: E }), null, 16, A),
|
|
83
|
+
f("span", n({
|
|
76
84
|
class: "checkbox-v2__box",
|
|
77
85
|
"aria-hidden": "true"
|
|
78
|
-
},
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
}, d(s)("box")), [
|
|
87
|
+
v.value ? (l(), o("svg", H, [...t[0] || (t[0] = [
|
|
88
|
+
f("path", {
|
|
81
89
|
d: "M4 10H16",
|
|
82
90
|
stroke: "currentColor",
|
|
83
91
|
"stroke-width": "2"
|
|
84
92
|
}, null, -1)
|
|
85
|
-
])])) : u.value ? (l(), o("svg",
|
|
86
|
-
|
|
93
|
+
])])) : u.value ? (l(), o("svg", Z, [...t[1] || (t[1] = [
|
|
94
|
+
f("path", {
|
|
87
95
|
d: "M8.13636 13.70149L5.03409 10.25373L4 11.40299L8.13636 16L17 6.14925L15.9659 5L8.13636 13.70149Z",
|
|
88
96
|
fill: "currentColor"
|
|
89
97
|
}, null, -1)
|
|
90
|
-
])])) :
|
|
98
|
+
])])) : c("", !0)
|
|
91
99
|
], 16),
|
|
92
|
-
I.value ? (l(), o("span",
|
|
93
|
-
|
|
100
|
+
I.value ? (l(), o("span", j, [
|
|
101
|
+
x.value ? (l(), o("span", n({
|
|
94
102
|
key: 0,
|
|
95
103
|
class: "checkbox-v2__label"
|
|
96
|
-
},
|
|
97
|
-
|
|
98
|
-
|
|
104
|
+
}, d(s)("label")), [
|
|
105
|
+
w(r.$slots, "default", {}, () => [
|
|
106
|
+
B(h(e.label), 1)
|
|
99
107
|
], !0)
|
|
100
|
-
], 16)) :
|
|
101
|
-
p.value ? (l(), o("span",
|
|
108
|
+
], 16)) : c("", !0),
|
|
109
|
+
p.value ? (l(), o("span", n({
|
|
102
110
|
key: 1,
|
|
103
111
|
class: "checkbox-v2__description"
|
|
104
|
-
},
|
|
105
|
-
|
|
106
|
-
|
|
112
|
+
}, d(s)("description")), [
|
|
113
|
+
w(r.$slots, "description", {}, () => [
|
|
114
|
+
B(h(e.description), 1)
|
|
107
115
|
], !0)
|
|
108
|
-
], 16)) :
|
|
109
|
-
|
|
110
|
-
|
|
116
|
+
], 16)) : c("", !0),
|
|
117
|
+
g.value ? (l(), o("span", n({
|
|
118
|
+
key: 2,
|
|
119
|
+
class: "checkbox-v2__error"
|
|
120
|
+
}, d(s)("error")), h(e.errorMessage), 17)) : c("", !0)
|
|
121
|
+
])) : c("", !0)
|
|
122
|
+
], 16, D));
|
|
111
123
|
}
|
|
112
124
|
});
|
|
113
125
|
export {
|
|
114
|
-
|
|
126
|
+
F as default
|
|
115
127
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.combobox[data-v-
|
|
1
|
+
.combobox[data-v-cb477f62]{--combobox-field-height:2.5rem;--combobox-field-radius:.5rem;--combobox-font-size:.875rem;--combobox-line-height:1.25rem;--combobox-label-font-size:.875rem;--combobox-label-line-height:1rem;--combobox-border-color:var(--theme-neutral-border-default);flex-direction:column;display:flex}.combobox--small[data-v-cb477f62]{--combobox-field-height:2.25rem;--combobox-label-font-size:.75rem}.combobox--large[data-v-cb477f62]{--combobox-field-height:2.75rem;--combobox-field-radius:.75rem;--combobox-font-size:1rem;--combobox-line-height:1.5rem;--combobox-label-font-size:1rem;--combobox-label-line-height:1.25rem}.combobox__label[data-v-cb477f62]{font-weight:400;font-size:var(--combobox-label-font-size);line-height:var(--combobox-label-line-height);color:var(--theme-neutral-text-title);cursor:pointer;align-items:center;gap:.125rem;padding:.375rem .5rem;display:flex}.combobox__required[data-v-cb477f62]{color:var(--theme-error-500);flex-shrink:0}.combobox__field[data-v-cb477f62]{min-height:var(--combobox-field-height);background-color:var(--theme-neutral-0);border:.0625rem solid var(--combobox-border-color);border-radius:var(--combobox-field-radius);cursor:text;transition:border-color var(--animation-duration-fast) ease;align-items:center;gap:.25rem;padding:.25rem .5rem;display:flex}.combobox__content[data-v-cb477f62]{flex:auto;align-items:center;gap:.25rem;min-width:0;display:flex}.combobox__input[data-v-cb477f62]{min-width:2rem;font-family:inherit;font-weight:400;font-size:var(--combobox-font-size);line-height:var(--combobox-line-height);color:var(--theme-neutral-text-body);text-overflow:ellipsis;background:0 0;border:none;outline:none;flex:4rem;order:3;padding:0}@media (max-width:1009.98px){.combobox__input[data-v-cb477f62]{font-size:1rem}}.combobox__input[data-v-cb477f62]::placeholder{color:var(--theme-neutral-550)}.combobox__input[data-v-cb477f62]:disabled{color:var(--theme-neutral-text-disabled);cursor:not-allowed}.combobox__input[data-v-cb477f62]:disabled::placeholder{color:var(--theme-neutral-text-disabled)}.combobox__input[data-v-cb477f62]:read-only{cursor:pointer}.combobox__chips[data-v-cb477f62]{flex:0 auto;order:1;align-items:center;gap:.25rem;min-width:0;display:flex;overflow:hidden}.combobox__chip[data-v-cb477f62]{max-width:100%;height:1.125rem;color:var(--theme-neutral-text-subtitle);background-color:var(--theme-neutral-surface-icon);border-radius:.375rem;flex-shrink:0;align-items:center;gap:.5rem;padding:0 .375rem;font-size:.75rem;font-weight:400;line-height:1rem;display:flex}.combobox__chip-label[data-v-cb477f62]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.combobox__chip-remove[data-v-cb477f62]{color:var(--theme-neutral-icon-caption);cursor:pointer;transition:color var(--animation-duration-fast) ease;background:0 0;border:none;align-items:center;margin:0;padding:0;display:flex}.combobox__chip-remove[data-v-cb477f62]:hover:not(:disabled){color:var(--theme-neutral-text-body)}.combobox__chip-remove[data-v-cb477f62]:focus-visible{outline:.125rem solid var(--theme-primary-500);outline-offset:.125rem}.combobox__chip-remove[data-v-cb477f62]:disabled{cursor:not-allowed}.combobox__chip-icon[data-v-cb477f62],.combobox__chip-avatar[data-v-cb477f62]{flex-shrink:0;width:.75rem;height:.75rem}.combobox__chip-avatar[data-v-cb477f62]{object-fit:cover;border-radius:50%}.combobox__chip--measured[data-v-cb477f62]{visibility:hidden;pointer-events:none;position:absolute;top:0;left:-9999px}.combobox__chip--counter[data-v-cb477f62]{color:var(--theme-neutral-text-caption);flex-shrink:0;order:2}.combobox__clear-button[data-v-cb477f62]{color:var(--theme-neutral-icon-caption);cursor:pointer;transition:color var(--animation-duration-fast) ease;background:0 0;border:none;flex-shrink:0;align-items:center;margin:0;padding:0;display:flex}.combobox__clear-button[data-v-cb477f62]:hover{color:var(--theme-neutral-text-body)}.combobox__clear-button[data-v-cb477f62]:focus-visible{outline:2px solid var(--theme-primary-500);outline-offset:2px}.combobox__clear[data-v-cb477f62]{width:1rem;height:1rem}.combobox__arrow-button[data-v-cb477f62]{cursor:pointer;background:0 0;border:none;flex-shrink:0;align-items:center;margin:0;padding:0;display:flex}.combobox__arrow-button[data-v-cb477f62]:disabled{cursor:not-allowed}.combobox__arrow[data-v-cb477f62]{width:1.125rem;height:1.125rem;color:var(--theme-neutral-text-body);transition:transform var(--animation-duration-fast) ease}.combobox__message[data-v-cb477f62]{color:var(--theme-neutral-text-body);margin:0;padding:.25rem .5rem;font-size:.625rem;font-weight:400;line-height:1.2}.combobox[data-v-cb477f62]:hover:not(.combobox--disabled){--combobox-border-color:var(--theme-primary-300)}.combobox--open[data-v-cb477f62],.combobox--open[data-v-cb477f62]:hover{--combobox-border-color:var(--theme-primary-500)}.combobox--open .combobox__arrow[data-v-cb477f62]{transform:rotate(180deg)}.combobox--invalid[data-v-cb477f62]{--combobox-border-color:var(--theme-error-500)}.combobox--invalid .combobox__label[data-v-cb477f62],.combobox--invalid .combobox__message[data-v-cb477f62]{color:var(--theme-error-500)}.combobox--invalid[data-v-cb477f62]:hover:not(.combobox--disabled){--combobox-border-color:var(--theme-error-500)}.combobox--disabled[data-v-cb477f62]{--combobox-border-color:var(--theme-neutral-border-disabled)}.combobox--disabled .combobox__field[data-v-cb477f62]{cursor:not-allowed}.combobox--disabled .combobox__label[data-v-cb477f62],.combobox--disabled .combobox__message[data-v-cb477f62],.combobox--disabled .combobox__arrow[data-v-cb477f62]{color:var(--theme-neutral-text-disabled)}.combobox--disabled .combobox__label[data-v-cb477f62]{cursor:not-allowed}.combobox__field[data-v-cb477f62]:has(.combobox__input:focus-visible){outline:.125rem solid var(--theme-primary-500);outline-offset:.125rem}.combobox-list[data-v-cb477f62]{flex-direction:column;display:flex}.combobox-list__search[data-v-cb477f62]{padding:.5rem .5rem 0}.combobox-list__scroll[data-v-cb477f62]{max-height:15rem;overflow-y:auto}.combobox-list__options[data-v-cb477f62]{flex-direction:column;gap:.5rem;height:max-content;padding:.5rem;display:flex}.combobox-list__option[data-v-cb477f62]{width:100%;min-height:2rem;color:var(--theme-neutral-text-title);text-align:left;cursor:pointer;transition:background-color var(--animation-duration-fast) ease;background-color:#0000;border-radius:.5rem;align-items:flex-start;gap:.5rem;padding:.375rem .5rem;font-size:.875rem;font-weight:400;line-height:1.25rem;display:flex}.combobox-list__option[data-v-cb477f62]:hover:not(.combobox-list__option--disabled),.combobox-list__option--active[data-v-cb477f62]{background-color:var(--theme-secondary-50)}.combobox-list__option--disabled[data-v-cb477f62]{cursor:not-allowed;opacity:.5}.combobox-list__label[data-v-cb477f62]{white-space:nowrap;text-overflow:ellipsis;flex:auto;min-width:0;overflow:hidden}.combobox-list__status[data-v-cb477f62]{color:var(--theme-neutral-text-caption);margin:0;padding:.25rem .5rem;font-size:.875rem;line-height:1.25rem}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, VNodeChild } from 'vue';
|
|
2
|
-
import {
|
|
2
|
+
import { TBreakpointMobile } from '../../../types/global.types';
|
|
3
3
|
import { PopoverAlign, PopoverSide } from '../Popover';
|
|
4
4
|
export type ComboboxSize = 'small' | 'default' | 'large';
|
|
5
5
|
export type ComboboxValue = string | number;
|
|
@@ -76,6 +76,12 @@ export interface ComboboxProps<T extends ComboboxOptionData = ComboboxOptionData
|
|
|
76
76
|
loading?: boolean;
|
|
77
77
|
/** Подпись над полем. */
|
|
78
78
|
label?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Обязательное поле: к подписи добавляется красная звёздочка, полю —
|
|
81
|
+
* `aria-required`. Проверку значения проп на себя не берёт, это забота
|
|
82
|
+
* формы, — он только помечает поле.
|
|
83
|
+
*/
|
|
84
|
+
required?: boolean;
|
|
79
85
|
placeholder?: string;
|
|
80
86
|
/** Плейсхолдер поля поиска в мобильной шторке. */
|
|
81
87
|
searchPlaceholder?: string;
|
|
@@ -85,6 +91,26 @@ export interface ComboboxProps<T extends ComboboxOptionData = ComboboxOptionData
|
|
|
85
91
|
invalid?: boolean;
|
|
86
92
|
size?: ComboboxSize;
|
|
87
93
|
disabled?: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Не раскрывать список, пока показывать нечего: ни вариантов, ни загрузки.
|
|
96
|
+
* Пригодится серверному поиску, где до первого запроса список пуст и пустая
|
|
97
|
+
* плашка только мешает.
|
|
98
|
+
*
|
|
99
|
+
* Прячется только состояние «ещё не искали». Как только в поле есть
|
|
100
|
+
* запрос, список раскрывается в любом случае — в том числе когда сервер
|
|
101
|
+
* вернул ноль вариантов: «Ничего не найдено» это и есть ответ на запрос,
|
|
102
|
+
* прятать его нельзя. Различие важное, и компонент проводит его сам, по
|
|
103
|
+
* непустому запросу, — отдельного пропа для этого не нужно.
|
|
104
|
+
*
|
|
105
|
+
* Внутреннее состояние «открыт» при этом сохраняется: как только придут
|
|
106
|
+
* варианты или включится `loading`, список раскроется сам, без повторного
|
|
107
|
+
* клика. По умолчанию выключено — пустое состояние со своим текстом и слотом
|
|
108
|
+
* `empty` остаётся штатным поведением.
|
|
109
|
+
*
|
|
110
|
+
* На мобильных не действует: там поле поиска живёт внутри шторки, и, спрятав
|
|
111
|
+
* её, запрос было бы негде набрать.
|
|
112
|
+
*/
|
|
113
|
+
hideEmptyList?: boolean;
|
|
88
114
|
/** Текст пустого списка, когда вариантов нет вовсе. */
|
|
89
115
|
emptyText?: string;
|
|
90
116
|
/** Текст пустого списка, когда под запрос ничего не подошло. */
|
|
@@ -110,7 +136,7 @@ export interface ComboboxProps<T extends ComboboxOptionData = ComboboxOptionData
|
|
|
110
136
|
/** Доступное имя, когда видимой подписи нет. */
|
|
111
137
|
ariaLabel?: string;
|
|
112
138
|
/** Ниже этой ширины экрана список открывается шторкой снизу. */
|
|
113
|
-
breakpointMobile?:
|
|
139
|
+
breakpointMobile?: TBreakpointMobile;
|
|
114
140
|
/** Базовый `data-testid`; внутренние части получают суффикс имени части. */
|
|
115
141
|
testId?: string;
|
|
116
142
|
}
|
|
@@ -2,19 +2,20 @@ import { ComboboxOptionData, ComboboxProps, ComboboxSlots, ComboboxValue } from
|
|
|
2
2
|
import { VNodeProps, AllowedComponentProps, ComponentCustomProps, PublicProps, ShallowUnwrapRef, VNode } from 'vue';
|
|
3
3
|
declare const _default: <T extends ComboboxOptionData = ComboboxOptionData>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
4
4
|
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
5
|
+
readonly onClear?: (() => any) | undefined;
|
|
5
6
|
readonly onSearch?: ((query: string) => any) | undefined;
|
|
6
7
|
readonly "onUpdate:modelValue"?: ((value: ComboboxValue | ComboboxValue[] | undefined) => any) | undefined;
|
|
7
8
|
readonly onSelect?: ((option: T) => any) | undefined;
|
|
8
9
|
readonly onChange?: ((value: ComboboxValue | ComboboxValue[] | undefined) => any) | undefined;
|
|
9
10
|
readonly "onUpdate:search"?: ((value: string) => any) | undefined;
|
|
10
|
-
} & VNodeProps & AllowedComponentProps & ComponentCustomProps, never>, "onUpdate:modelValue" | "onChange" | "onSelect" | "onSearch" | "onUpdate:search"> & ({
|
|
11
|
+
} & VNodeProps & AllowedComponentProps & ComponentCustomProps, never>, "onUpdate:modelValue" | "onChange" | "onSelect" | "onClear" | "onSearch" | "onUpdate:search"> & ({
|
|
11
12
|
modelValue?: ComboboxValue | ComboboxValue[] | undefined;
|
|
12
13
|
search?: string;
|
|
13
14
|
} & ComboboxProps<T>) & Partial<{}>> & PublicProps;
|
|
14
15
|
expose(exposed: ShallowUnwrapRef<{}>): void;
|
|
15
16
|
attrs: any;
|
|
16
17
|
slots: Readonly<ComboboxSlots<T>> & ComboboxSlots<T>;
|
|
17
|
-
emit: (((evt: "search", query: string) => void) & ((evt: "select", option: T) => void) & ((evt: "change", value: ComboboxValue | ComboboxValue[] | undefined) => void)) & (((evt: "update:modelValue", value: ComboboxValue | ComboboxValue[] | undefined) => void) & ((evt: "update:search", value: string) => void));
|
|
18
|
+
emit: (((evt: "clear") => void) & ((evt: "search", query: string) => void) & ((evt: "select", option: T) => void) & ((evt: "change", value: ComboboxValue | ComboboxValue[] | undefined) => void)) & (((evt: "update:modelValue", value: ComboboxValue | ComboboxValue[] | undefined) => void) & ((evt: "update:search", value: string) => void));
|
|
18
19
|
}>) => VNode & {
|
|
19
20
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
20
21
|
};
|
|
@@ -2,7 +2,7 @@ import './Combobox.css';
|
|
|
2
2
|
import o from "./Combobox.vue2.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
import t from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
5
|
-
const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-
|
|
5
|
+
const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-cb477f62"]]);
|
|
6
6
|
export {
|
|
7
7
|
p as default
|
|
8
8
|
};
|