@soave/ui 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/types.d.ts +1 -1
- package/dist/components/Button.vue +36 -0
- package/dist/components/Card.vue +23 -0
- package/dist/components/Checkbox.vue +44 -0
- package/dist/components/Dialog.vue +99 -0
- package/dist/components/Input.vue +42 -0
- package/dist/components/RadioGroup.vue +35 -0
- package/dist/components/RadioItem.vue +55 -0
- package/dist/components/Select.vue +95 -0
- package/dist/components/SelectContent.vue +40 -0
- package/dist/components/SelectItem.vue +44 -0
- package/dist/components/SelectTrigger.vue +61 -0
- package/dist/components/Switch.vue +43 -0
- package/dist/components/Textarea.vue +49 -0
- package/dist/components/index.d.ts +13 -0
- package/dist/components/index.mjs +13 -0
- package/dist/composables/useButton.d.ts +2 -2
- package/dist/composables/useButton.mjs +14 -41
- package/dist/composables/useCard.d.ts +2 -2
- package/dist/composables/useCard.mjs +5 -18
- package/dist/composables/useCheckbox.d.ts +2 -1
- package/dist/composables/useCheckbox.mjs +11 -44
- package/dist/composables/useFileInput.d.ts +2 -0
- package/dist/composables/useFileInput.mjs +15 -30
- package/dist/composables/useForm.mjs +2 -2
- package/dist/composables/useInput.d.ts +2 -2
- package/dist/composables/useInput.mjs +12 -33
- package/dist/composables/useRadio.d.ts +2 -1
- package/dist/composables/useRadio.mjs +10 -42
- package/dist/composables/useSelect.d.ts +3 -0
- package/dist/composables/useSelect.mjs +20 -49
- package/dist/composables/useSwitch.d.ts +2 -1
- package/dist/composables/useSwitch.mjs +10 -43
- package/dist/composables/useTextarea.d.ts +2 -1
- package/dist/composables/useTextarea.mjs +12 -33
- package/dist/composables/useToast.mjs +1 -1
- package/dist/env.d.ts +11 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/types/button.d.ts +19 -5
- package/dist/types/card.d.ts +11 -2
- package/dist/types/checkbox.d.ts +15 -6
- package/dist/types/composables.d.ts +52 -24
- package/dist/types/config.d.ts +1 -0
- package/dist/types/file-input.d.ts +15 -5
- package/dist/types/form.d.ts +5 -5
- package/dist/types/input.d.ts +17 -6
- package/dist/types/radio.d.ts +14 -6
- package/dist/types/select.d.ts +25 -7
- package/dist/types/switch.d.ts +14 -5
- package/dist/types/textarea.d.ts +20 -7
- package/dist/types/toast.d.ts +2 -2
- package/dist/types/tooltip.d.ts +3 -0
- package/dist/types/tooltip.mjs +1 -0
- package/package.json +1 -9
- package/dist/components/ui/Alert.vue +0 -41
- package/dist/components/ui/AlertDescription.vue +0 -22
- package/dist/components/ui/AlertTitle.vue +0 -22
- package/dist/components/ui/Button.vue +0 -85
- package/dist/components/ui/Card.vue +0 -39
- package/dist/components/ui/CardContent.vue +0 -22
- package/dist/components/ui/CardDescription.vue +0 -22
- package/dist/components/ui/CardFooter.vue +0 -22
- package/dist/components/ui/CardHeader.vue +0 -22
- package/dist/components/ui/CardTitle.vue +0 -22
- package/dist/components/ui/Checkbox.vue +0 -94
- package/dist/components/ui/Dialog.vue +0 -110
- package/dist/components/ui/DialogDescription.vue +0 -22
- package/dist/components/ui/DialogFooter.vue +0 -22
- package/dist/components/ui/DialogHeader.vue +0 -22
- package/dist/components/ui/DialogTitle.vue +0 -22
- package/dist/components/ui/DropdownMenu.vue +0 -32
- package/dist/components/ui/DropdownMenuContent.vue +0 -69
- package/dist/components/ui/DropdownMenuItem.vue +0 -71
- package/dist/components/ui/DropdownMenuLabel.vue +0 -20
- package/dist/components/ui/DropdownMenuSeparator.vue +0 -16
- package/dist/components/ui/DropdownMenuTrigger.vue +0 -38
- package/dist/components/ui/FileInput.vue +0 -153
- package/dist/components/ui/FormError.vue +0 -20
- package/dist/components/ui/FormField.vue +0 -12
- package/dist/components/ui/FormInput.vue +0 -46
- package/dist/components/ui/FormLabel.vue +0 -19
- package/dist/components/ui/FormTextarea.vue +0 -39
- package/dist/components/ui/Input.vue +0 -72
- package/dist/components/ui/Popover.vue +0 -35
- package/dist/components/ui/PopoverContent.vue +0 -66
- package/dist/components/ui/PopoverTrigger.vue +0 -36
- package/dist/components/ui/RadioGroup.vue +0 -47
- package/dist/components/ui/RadioItem.vue +0 -62
- package/dist/components/ui/Select.vue +0 -62
- package/dist/components/ui/SelectContent.vue +0 -55
- package/dist/components/ui/SelectItem.vue +0 -55
- package/dist/components/ui/SelectTrigger.vue +0 -70
- package/dist/components/ui/SelectValue.vue +0 -27
- package/dist/components/ui/Sheet.vue +0 -148
- package/dist/components/ui/SheetDescription.vue +0 -22
- package/dist/components/ui/SheetFooter.vue +0 -22
- package/dist/components/ui/SheetHeader.vue +0 -22
- package/dist/components/ui/SheetTitle.vue +0 -22
- package/dist/components/ui/Switch.vue +0 -63
- package/dist/components/ui/Textarea.vue +0 -73
- package/dist/components/ui/Toast.vue +0 -116
- package/dist/components/ui/Toaster.vue +0 -76
- package/dist/components/ui/Tooltip.vue +0 -42
- package/dist/components/ui/TooltipContent.vue +0 -71
- package/dist/components/ui/TooltipTrigger.vue +0 -39
- package/dist/components/ui/UIProvider.vue +0 -23
- package/dist/components/ui/index.d.ts +0 -52
- package/dist/components/ui/index.mjs +0 -52
|
@@ -1,50 +1,17 @@
|
|
|
1
|
-
import { computed } from "vue";
|
|
2
|
-
import { cn } from "../utils/cn.mjs";
|
|
1
|
+
import { computed, readonly } from "vue";
|
|
3
2
|
export const useSwitch = (props, checked) => {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
lg: "h-7 w-14"
|
|
10
|
-
};
|
|
11
|
-
return size_map[props.value.size ?? "md"];
|
|
12
|
-
});
|
|
13
|
-
const track_classes = computed(
|
|
14
|
-
() => cn(
|
|
15
|
-
"peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent",
|
|
16
|
-
"transition-colors",
|
|
17
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
18
|
-
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
19
|
-
"data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
|
|
20
|
-
track_size_classes.value
|
|
21
|
-
)
|
|
22
|
-
);
|
|
23
|
-
const thumb_size_classes = computed(() => {
|
|
24
|
-
const size_map = {
|
|
25
|
-
sm: "h-4 w-4 data-[state=checked]:translate-x-4",
|
|
26
|
-
md: "h-5 w-5 data-[state=checked]:translate-x-5",
|
|
27
|
-
lg: "h-6 w-6 data-[state=checked]:translate-x-7"
|
|
28
|
-
};
|
|
29
|
-
return size_map[props.value.size ?? "md"];
|
|
30
|
-
});
|
|
31
|
-
const thumb_classes = computed(
|
|
32
|
-
() => cn(
|
|
33
|
-
"pointer-events-none block rounded-full bg-background shadow-lg ring-0",
|
|
34
|
-
"transition-transform",
|
|
35
|
-
"data-[state=unchecked]:translate-x-0",
|
|
36
|
-
thumb_size_classes.value
|
|
37
|
-
)
|
|
38
|
-
);
|
|
3
|
+
const state = computed(() => ({
|
|
4
|
+
size: props.value.size ?? "md",
|
|
5
|
+
disabled: props.value.disabled ?? false,
|
|
6
|
+
checked: checked.value
|
|
7
|
+
}));
|
|
39
8
|
const aria_attributes = computed(() => ({
|
|
40
9
|
role: "switch",
|
|
41
|
-
"aria-checked":
|
|
42
|
-
"aria-disabled":
|
|
10
|
+
"aria-checked": state.value.checked,
|
|
11
|
+
"aria-disabled": state.value.disabled || void 0
|
|
43
12
|
}));
|
|
44
13
|
return {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
is_disabled,
|
|
48
|
-
aria_attributes
|
|
14
|
+
state: readonly(state),
|
|
15
|
+
aria_attributes: readonly(aria_attributes)
|
|
49
16
|
};
|
|
50
17
|
};
|
|
@@ -2,6 +2,7 @@ import { type Ref } from "vue";
|
|
|
2
2
|
import type { TextareaProps, TextareaReturn } from "../types/textarea";
|
|
3
3
|
/**
|
|
4
4
|
* Textareaコンポーネントのロジックを提供するComposable
|
|
5
|
-
*
|
|
5
|
+
* 状態とARIA属性のみを返す(スタイル情報なし)
|
|
6
|
+
* スタイルは StyleAdapter または外部のスタイルパッケージが担当
|
|
6
7
|
*/
|
|
7
8
|
export declare const useTextarea: (props: Ref<TextareaProps>) => TextareaReturn;
|
|
@@ -1,35 +1,17 @@
|
|
|
1
|
-
import { computed, ref } from "vue";
|
|
2
|
-
import { cn } from "../utils/cn.mjs";
|
|
1
|
+
import { computed, ref, readonly } from "vue";
|
|
3
2
|
export const useTextarea = (props) => {
|
|
4
3
|
const is_focused = ref(false);
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
horizontal: "resize-x",
|
|
13
|
-
both: "resize"
|
|
14
|
-
};
|
|
15
|
-
return resize_map[props.value.resize ?? "vertical"];
|
|
16
|
-
});
|
|
17
|
-
const base_classes = computed(
|
|
18
|
-
() => cn(
|
|
19
|
-
"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2",
|
|
20
|
-
"text-sm ring-offset-background",
|
|
21
|
-
"placeholder:text-muted-foreground",
|
|
22
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
23
|
-
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
24
|
-
resize_classes.value,
|
|
25
|
-
has_error.value && "border-destructive focus-visible:ring-destructive",
|
|
26
|
-
is_readonly.value && "bg-muted"
|
|
27
|
-
)
|
|
28
|
-
);
|
|
4
|
+
const state = computed(() => ({
|
|
5
|
+
size: props.value.size ?? "md",
|
|
6
|
+
disabled: props.value.disabled ?? false,
|
|
7
|
+
readonly: props.value.readonly ?? false,
|
|
8
|
+
has_error: !!props.value.error,
|
|
9
|
+
resize: props.value.resize ?? "vertical"
|
|
10
|
+
}));
|
|
29
11
|
const aria_attributes = computed(() => ({
|
|
30
|
-
"aria-invalid":
|
|
12
|
+
"aria-invalid": state.value.has_error || void 0,
|
|
31
13
|
"aria-describedby": props.value.error_id,
|
|
32
|
-
"aria-readonly":
|
|
14
|
+
"aria-readonly": state.value.readonly || void 0
|
|
33
15
|
}));
|
|
34
16
|
const handleFocus = () => {
|
|
35
17
|
is_focused.value = true;
|
|
@@ -38,12 +20,9 @@ export const useTextarea = (props) => {
|
|
|
38
20
|
is_focused.value = false;
|
|
39
21
|
};
|
|
40
22
|
return {
|
|
41
|
-
|
|
23
|
+
state: readonly(state),
|
|
42
24
|
is_focused,
|
|
43
|
-
|
|
44
|
-
is_disabled,
|
|
45
|
-
is_readonly,
|
|
46
|
-
aria_attributes,
|
|
25
|
+
aria_attributes: readonly(aria_attributes),
|
|
47
26
|
handleFocus,
|
|
48
27
|
handleBlur
|
|
49
28
|
};
|
package/dist/env.d.ts
ADDED
package/dist/index.d.ts
CHANGED
package/dist/index.mjs
CHANGED
package/dist/types/button.d.ts
CHANGED
|
@@ -1,20 +1,34 @@
|
|
|
1
|
-
import type { ComputedRef } from "vue";
|
|
1
|
+
import type { ComputedRef, DeepReadonly } from "vue";
|
|
2
2
|
export type ButtonVariant = "primary" | "secondary" | "ghost" | "outline" | "destructive";
|
|
3
3
|
export type ButtonSize = "sm" | "md" | "lg";
|
|
4
|
+
export type ButtonType = "button" | "submit" | "reset";
|
|
4
5
|
export interface ButtonProps {
|
|
5
6
|
variant?: ButtonVariant;
|
|
6
7
|
size?: ButtonSize;
|
|
7
8
|
disabled?: boolean;
|
|
8
9
|
loading?: boolean;
|
|
10
|
+
type?: ButtonType;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* ボタンの状態(StyleAdapterに渡す用)
|
|
14
|
+
*/
|
|
15
|
+
export interface ButtonState {
|
|
16
|
+
variant: ButtonVariant;
|
|
17
|
+
size: ButtonSize;
|
|
18
|
+
disabled: boolean;
|
|
19
|
+
loading: boolean;
|
|
20
|
+
type: ButtonType;
|
|
9
21
|
}
|
|
10
22
|
export interface ButtonAriaAttributes {
|
|
11
23
|
"aria-disabled"?: boolean;
|
|
12
24
|
"aria-busy"?: boolean;
|
|
13
25
|
role: "button";
|
|
26
|
+
type: ButtonType;
|
|
14
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* useButton の戻り値(ヘッドレス - スタイル情報なし)
|
|
30
|
+
*/
|
|
15
31
|
export interface ButtonReturn {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
is_loading: ComputedRef<boolean>;
|
|
19
|
-
aria_attributes: ComputedRef<ButtonAriaAttributes>;
|
|
32
|
+
state: DeepReadonly<ComputedRef<ButtonState>>;
|
|
33
|
+
aria_attributes: DeepReadonly<ComputedRef<ButtonAriaAttributes>>;
|
|
20
34
|
}
|
package/dist/types/card.d.ts
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import type { ComputedRef } from "vue";
|
|
1
|
+
import type { ComputedRef, DeepReadonly } from "vue";
|
|
2
2
|
export type CardPadding = "sm" | "md" | "lg" | "none";
|
|
3
3
|
export interface CardProps {
|
|
4
4
|
padding?: CardPadding;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* カードの状態(StyleAdapterに渡す用)
|
|
8
|
+
*/
|
|
9
|
+
export interface CardState {
|
|
10
|
+
padding: CardPadding;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* useCard の戻り値(ヘッドレス - スタイル情報なし)
|
|
14
|
+
*/
|
|
6
15
|
export interface CardReturn {
|
|
7
|
-
|
|
16
|
+
state: DeepReadonly<ComputedRef<CardState>>;
|
|
8
17
|
}
|
|
9
18
|
export interface CardHeaderProps {
|
|
10
19
|
class?: string;
|
package/dist/types/checkbox.d.ts
CHANGED
|
@@ -1,19 +1,28 @@
|
|
|
1
|
-
import type { ComputedRef } from "vue";
|
|
1
|
+
import type { ComputedRef, DeepReadonly } from "vue";
|
|
2
2
|
export type CheckboxSize = "sm" | "md" | "lg";
|
|
3
3
|
export interface CheckboxProps {
|
|
4
4
|
size?: CheckboxSize;
|
|
5
5
|
disabled?: boolean;
|
|
6
6
|
indeterminate?: boolean;
|
|
7
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* チェックボックスの状態(StyleAdapterに渡す用)
|
|
10
|
+
*/
|
|
11
|
+
export interface CheckboxState {
|
|
12
|
+
size: CheckboxSize;
|
|
13
|
+
disabled: boolean;
|
|
14
|
+
indeterminate: boolean;
|
|
15
|
+
checked: boolean;
|
|
16
|
+
}
|
|
8
17
|
export interface CheckboxAriaAttributes {
|
|
9
18
|
role: "checkbox";
|
|
10
19
|
"aria-checked": boolean | "mixed";
|
|
11
20
|
"aria-disabled"?: boolean;
|
|
12
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* useCheckbox の戻り値(ヘッドレス - スタイル情報なし)
|
|
24
|
+
*/
|
|
13
25
|
export interface CheckboxReturn {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
is_disabled: ComputedRef<boolean>;
|
|
17
|
-
is_indeterminate: ComputedRef<boolean>;
|
|
18
|
-
aria_attributes: ComputedRef<CheckboxAriaAttributes>;
|
|
26
|
+
state: DeepReadonly<ComputedRef<CheckboxState>>;
|
|
27
|
+
aria_attributes: DeepReadonly<ComputedRef<CheckboxAriaAttributes>>;
|
|
19
28
|
}
|
|
@@ -1,38 +1,47 @@
|
|
|
1
1
|
import type { Ref } from "vue";
|
|
2
|
+
/**
|
|
3
|
+
* 汎用的なコンポーネント状態(基底型)
|
|
4
|
+
*/
|
|
5
|
+
export interface ComponentState {
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
2
8
|
/**
|
|
3
9
|
* Button の状態
|
|
4
10
|
*/
|
|
5
|
-
export interface ButtonState {
|
|
11
|
+
export interface ButtonState extends ComponentState {
|
|
6
12
|
variant: "primary" | "secondary" | "ghost" | "outline" | "destructive";
|
|
7
13
|
size: "sm" | "md" | "lg";
|
|
8
14
|
disabled: boolean;
|
|
9
15
|
loading: boolean;
|
|
16
|
+
type: "button" | "submit" | "reset";
|
|
10
17
|
}
|
|
11
18
|
/**
|
|
12
19
|
* Input の状態
|
|
13
20
|
*/
|
|
14
|
-
export interface InputState {
|
|
21
|
+
export interface InputState extends ComponentState {
|
|
22
|
+
type: "text" | "email" | "password" | "number" | "tel" | "url" | "search";
|
|
15
23
|
size: "sm" | "md" | "lg";
|
|
16
24
|
disabled: boolean;
|
|
17
25
|
readonly: boolean;
|
|
18
|
-
|
|
26
|
+
has_error: boolean;
|
|
19
27
|
}
|
|
20
28
|
/**
|
|
21
29
|
* Dialog の状態
|
|
22
30
|
*/
|
|
23
|
-
export interface DialogState {
|
|
31
|
+
export interface DialogState extends ComponentState {
|
|
24
32
|
is_open: boolean;
|
|
25
33
|
}
|
|
26
34
|
/**
|
|
27
35
|
* Card の状態
|
|
28
36
|
*/
|
|
29
|
-
export interface CardState {
|
|
37
|
+
export interface CardState extends ComponentState {
|
|
30
38
|
padding: "sm" | "md" | "lg" | "none";
|
|
31
39
|
}
|
|
32
40
|
/**
|
|
33
41
|
* Checkbox の状態
|
|
34
42
|
*/
|
|
35
|
-
export interface CheckboxState {
|
|
43
|
+
export interface CheckboxState extends ComponentState {
|
|
44
|
+
size: "sm" | "md" | "lg";
|
|
36
45
|
checked: boolean;
|
|
37
46
|
disabled: boolean;
|
|
38
47
|
indeterminate: boolean;
|
|
@@ -40,78 +49,97 @@ export interface CheckboxState {
|
|
|
40
49
|
/**
|
|
41
50
|
* Radio の状態
|
|
42
51
|
*/
|
|
43
|
-
export interface
|
|
52
|
+
export interface RadioItemState extends ComponentState {
|
|
53
|
+
size: "sm" | "md" | "lg";
|
|
44
54
|
checked: boolean;
|
|
45
55
|
disabled: boolean;
|
|
46
56
|
}
|
|
47
57
|
/**
|
|
48
58
|
* Switch の状態
|
|
49
59
|
*/
|
|
50
|
-
export interface SwitchState {
|
|
60
|
+
export interface SwitchState extends ComponentState {
|
|
61
|
+
size: "sm" | "md" | "lg";
|
|
51
62
|
checked: boolean;
|
|
52
63
|
disabled: boolean;
|
|
53
64
|
}
|
|
54
65
|
/**
|
|
55
66
|
* Textarea の状態
|
|
56
67
|
*/
|
|
57
|
-
export interface TextareaState {
|
|
68
|
+
export interface TextareaState extends ComponentState {
|
|
58
69
|
size: "sm" | "md" | "lg";
|
|
59
70
|
disabled: boolean;
|
|
60
71
|
readonly: boolean;
|
|
61
|
-
|
|
72
|
+
has_error: boolean;
|
|
73
|
+
resize: "none" | "vertical" | "horizontal" | "both";
|
|
62
74
|
}
|
|
63
75
|
/**
|
|
64
|
-
* Select の状態
|
|
76
|
+
* Select Trigger の状態
|
|
65
77
|
*/
|
|
66
|
-
export interface
|
|
78
|
+
export interface SelectTriggerState extends ComponentState {
|
|
67
79
|
size: "sm" | "md" | "lg";
|
|
68
80
|
disabled: boolean;
|
|
69
81
|
is_open: boolean;
|
|
70
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Select Content の状態
|
|
85
|
+
*/
|
|
86
|
+
export interface SelectContentState extends ComponentState {
|
|
87
|
+
is_open: boolean;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Select Item の状態
|
|
91
|
+
*/
|
|
92
|
+
export interface SelectItemState extends ComponentState {
|
|
93
|
+
selected: boolean;
|
|
94
|
+
disabled: boolean;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* FileInput の状態
|
|
98
|
+
*/
|
|
99
|
+
export interface FileInputState extends ComponentState {
|
|
100
|
+
disabled: boolean;
|
|
101
|
+
is_dragging: boolean;
|
|
102
|
+
has_error: boolean;
|
|
103
|
+
has_files: boolean;
|
|
104
|
+
}
|
|
71
105
|
/**
|
|
72
106
|
* Toast の状態
|
|
73
107
|
*/
|
|
74
|
-
export interface ToastState {
|
|
108
|
+
export interface ToastState extends ComponentState {
|
|
75
109
|
variant: "default" | "success" | "error" | "warning" | "info";
|
|
76
110
|
}
|
|
77
111
|
/**
|
|
78
112
|
* Tooltip の状態
|
|
79
113
|
*/
|
|
80
|
-
export interface TooltipState {
|
|
114
|
+
export interface TooltipState extends ComponentState {
|
|
81
115
|
is_open: boolean;
|
|
82
116
|
side: "top" | "right" | "bottom" | "left";
|
|
83
117
|
}
|
|
84
118
|
/**
|
|
85
119
|
* Popover の状態
|
|
86
120
|
*/
|
|
87
|
-
export interface PopoverState {
|
|
121
|
+
export interface PopoverState extends ComponentState {
|
|
88
122
|
is_open: boolean;
|
|
89
123
|
}
|
|
90
124
|
/**
|
|
91
125
|
* Dropdown の状態
|
|
92
126
|
*/
|
|
93
|
-
export interface DropdownState {
|
|
127
|
+
export interface DropdownState extends ComponentState {
|
|
94
128
|
is_open: boolean;
|
|
95
129
|
}
|
|
96
130
|
/**
|
|
97
131
|
* Sheet の状態
|
|
98
132
|
*/
|
|
99
|
-
export interface SheetState {
|
|
133
|
+
export interface SheetState extends ComponentState {
|
|
100
134
|
is_open: boolean;
|
|
101
135
|
side: "top" | "right" | "bottom" | "left";
|
|
102
136
|
}
|
|
103
137
|
/**
|
|
104
138
|
* Alert の状態
|
|
105
139
|
*/
|
|
106
|
-
export interface AlertState {
|
|
140
|
+
export interface AlertState extends ComponentState {
|
|
107
141
|
variant: "default" | "info" | "success" | "warning" | "destructive";
|
|
108
142
|
}
|
|
109
|
-
/**
|
|
110
|
-
* 汎用的なコンポーネント状態
|
|
111
|
-
*/
|
|
112
|
-
export interface ComponentState {
|
|
113
|
-
[key: string]: unknown;
|
|
114
|
-
}
|
|
115
143
|
/**
|
|
116
144
|
* Headless Composable の戻り値型
|
|
117
145
|
* ロジック情報のみを返し、スタイル情報は返さない
|
package/dist/types/config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComputedRef, Ref } from "vue";
|
|
1
|
+
import type { ComputedRef, Ref, DeepReadonly } from "vue";
|
|
2
2
|
export interface FileInputProps {
|
|
3
3
|
accept?: string;
|
|
4
4
|
multiple?: boolean;
|
|
@@ -13,18 +13,28 @@ export interface FileInfo {
|
|
|
13
13
|
type: string;
|
|
14
14
|
preview_url: string | null;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* ファイル入力の状態(StyleAdapterに渡す用)
|
|
18
|
+
*/
|
|
19
|
+
export interface FileInputState {
|
|
20
|
+
disabled: boolean;
|
|
21
|
+
is_dragging: boolean;
|
|
22
|
+
has_error: boolean;
|
|
23
|
+
has_files: boolean;
|
|
24
|
+
}
|
|
16
25
|
export interface FileInputAriaAttributes {
|
|
17
26
|
"aria-disabled"?: boolean;
|
|
18
27
|
"aria-invalid"?: boolean;
|
|
19
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* useFileInput の戻り値(ヘッドレス - スタイル情報なし)
|
|
31
|
+
*/
|
|
20
32
|
export interface FileInputReturn {
|
|
21
|
-
|
|
22
|
-
dropzone_classes: ComputedRef<string>;
|
|
23
|
-
is_disabled: ComputedRef<boolean>;
|
|
33
|
+
state: DeepReadonly<ComputedRef<FileInputState>>;
|
|
24
34
|
is_dragging: Ref<boolean>;
|
|
25
35
|
files: Ref<FileInfo[]>;
|
|
26
36
|
error: Ref<string | null>;
|
|
27
|
-
aria_attributes: ComputedRef<FileInputAriaAttributes
|
|
37
|
+
aria_attributes: DeepReadonly<ComputedRef<FileInputAriaAttributes>>;
|
|
28
38
|
handleFiles: (file_list: FileList | null) => void;
|
|
29
39
|
handleDragEnter: (event: DragEvent) => void;
|
|
30
40
|
handleDragLeave: (event: DragEvent) => void;
|
package/dist/types/form.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComputedRef
|
|
1
|
+
import type { ComputedRef } from "vue";
|
|
2
2
|
export interface FormState<T> {
|
|
3
3
|
values: T;
|
|
4
4
|
errors: Partial<Record<keyof T, string>>;
|
|
@@ -37,11 +37,11 @@ export interface FileFieldOptions {
|
|
|
37
37
|
}
|
|
38
38
|
export interface FormReturn<T> {
|
|
39
39
|
values: T;
|
|
40
|
-
errors:
|
|
41
|
-
touched:
|
|
40
|
+
errors: Readonly<Partial<Record<keyof T, string>>>;
|
|
41
|
+
touched: Readonly<Partial<Record<keyof T, boolean>>>;
|
|
42
42
|
is_valid: ComputedRef<boolean>;
|
|
43
|
-
is_submitting:
|
|
44
|
-
is_dirty:
|
|
43
|
+
is_submitting: ComputedRef<boolean>;
|
|
44
|
+
is_dirty: ComputedRef<boolean>;
|
|
45
45
|
validateField: (field: keyof T) => void;
|
|
46
46
|
validateAll: () => boolean;
|
|
47
47
|
reset: () => void;
|
package/dist/types/input.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComputedRef, Ref } from "vue";
|
|
1
|
+
import type { ComputedRef, Ref, DeepReadonly } from "vue";
|
|
2
2
|
export type InputSize = "sm" | "md" | "lg";
|
|
3
3
|
export type InputType = "text" | "email" | "password" | "number" | "tel" | "url" | "search";
|
|
4
4
|
export interface InputProps {
|
|
@@ -9,19 +9,30 @@ export interface InputProps {
|
|
|
9
9
|
readonly?: boolean;
|
|
10
10
|
error?: string;
|
|
11
11
|
error_id?: string;
|
|
12
|
+
id?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 入力の状態(StyleAdapterに渡す用)
|
|
16
|
+
*/
|
|
17
|
+
export interface InputState {
|
|
18
|
+
type: InputType;
|
|
19
|
+
size: InputSize;
|
|
20
|
+
disabled: boolean;
|
|
21
|
+
readonly: boolean;
|
|
22
|
+
has_error: boolean;
|
|
12
23
|
}
|
|
13
24
|
export interface InputAriaAttributes {
|
|
14
25
|
"aria-invalid"?: boolean;
|
|
15
26
|
"aria-describedby"?: string;
|
|
16
27
|
"aria-readonly"?: boolean;
|
|
17
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* useInput の戻り値(ヘッドレス - スタイル情報なし)
|
|
31
|
+
*/
|
|
18
32
|
export interface InputReturn {
|
|
19
|
-
|
|
33
|
+
state: DeepReadonly<ComputedRef<InputState>>;
|
|
20
34
|
is_focused: Ref<boolean>;
|
|
21
|
-
|
|
22
|
-
is_disabled: ComputedRef<boolean>;
|
|
23
|
-
is_readonly: ComputedRef<boolean>;
|
|
24
|
-
aria_attributes: ComputedRef<InputAriaAttributes>;
|
|
35
|
+
aria_attributes: DeepReadonly<ComputedRef<InputAriaAttributes>>;
|
|
25
36
|
handleFocus: () => void;
|
|
26
37
|
handleBlur: () => void;
|
|
27
38
|
}
|
package/dist/types/radio.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComputedRef, InjectionKey, Ref } from "vue";
|
|
1
|
+
import type { ComputedRef, InjectionKey, Ref, DeepReadonly } from "vue";
|
|
2
2
|
export type RadioSize = "sm" | "md" | "lg";
|
|
3
3
|
export interface RadioGroupProps {
|
|
4
4
|
disabled?: boolean;
|
|
@@ -19,15 +19,23 @@ export interface RadioGroupContext {
|
|
|
19
19
|
updateValue: (value: string) => void;
|
|
20
20
|
}
|
|
21
21
|
export declare const RADIO_GROUP_KEY: InjectionKey<RadioGroupContext>;
|
|
22
|
+
/**
|
|
23
|
+
* ラジオボタンの状態(StyleAdapterに渡す用)
|
|
24
|
+
*/
|
|
25
|
+
export interface RadioItemState {
|
|
26
|
+
size: RadioSize;
|
|
27
|
+
disabled: boolean;
|
|
28
|
+
checked: boolean;
|
|
29
|
+
}
|
|
22
30
|
export interface RadioAriaAttributes {
|
|
23
31
|
role: "radio";
|
|
24
32
|
"aria-checked": boolean;
|
|
25
33
|
"aria-disabled"?: boolean;
|
|
26
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* useRadioItem の戻り値(ヘッドレス - スタイル情報なし)
|
|
37
|
+
*/
|
|
27
38
|
export interface RadioItemReturn {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
is_checked: ComputedRef<boolean>;
|
|
31
|
-
is_disabled: ComputedRef<boolean>;
|
|
32
|
-
aria_attributes: ComputedRef<RadioAriaAttributes>;
|
|
39
|
+
state: DeepReadonly<ComputedRef<RadioItemState>>;
|
|
40
|
+
aria_attributes: DeepReadonly<ComputedRef<RadioAriaAttributes>>;
|
|
33
41
|
}
|
package/dist/types/select.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComputedRef, InjectionKey, Ref } from "vue";
|
|
1
|
+
import type { ComputedRef, InjectionKey, Ref, DeepReadonly } from "vue";
|
|
2
2
|
export type SelectSize = "sm" | "md" | "lg";
|
|
3
3
|
export interface SelectProps {
|
|
4
4
|
size?: SelectSize;
|
|
@@ -43,15 +43,33 @@ export interface SelectContext {
|
|
|
43
43
|
setTriggerRef: (element: HTMLElement | null) => void;
|
|
44
44
|
}
|
|
45
45
|
export declare const SELECT_KEY: InjectionKey<SelectContext>;
|
|
46
|
+
/**
|
|
47
|
+
* セレクトトリガーの状態(StyleAdapterに渡す用)
|
|
48
|
+
*/
|
|
49
|
+
export interface SelectTriggerState {
|
|
50
|
+
size: SelectSize;
|
|
51
|
+
disabled: boolean;
|
|
52
|
+
is_open: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* セレクトコンテンツの状態(StyleAdapterに渡す用)
|
|
56
|
+
*/
|
|
57
|
+
export interface SelectContentState {
|
|
58
|
+
is_open: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* セレクトアイテムの状態(StyleAdapterに渡す用)
|
|
62
|
+
*/
|
|
63
|
+
export interface SelectItemState {
|
|
64
|
+
selected: boolean;
|
|
65
|
+
disabled: boolean;
|
|
66
|
+
}
|
|
46
67
|
export interface SelectTriggerReturn {
|
|
47
|
-
|
|
48
|
-
is_disabled: ComputedRef<boolean>;
|
|
68
|
+
state: DeepReadonly<ComputedRef<SelectTriggerState>>;
|
|
49
69
|
}
|
|
50
70
|
export interface SelectContentReturn {
|
|
51
|
-
|
|
71
|
+
state: DeepReadonly<ComputedRef<SelectContentState>>;
|
|
52
72
|
}
|
|
53
73
|
export interface SelectItemReturn {
|
|
54
|
-
|
|
55
|
-
is_selected: ComputedRef<boolean>;
|
|
56
|
-
is_disabled: ComputedRef<boolean>;
|
|
74
|
+
state: DeepReadonly<ComputedRef<SelectItemState>>;
|
|
57
75
|
}
|
package/dist/types/switch.d.ts
CHANGED
|
@@ -1,17 +1,26 @@
|
|
|
1
|
-
import type { ComputedRef } from "vue";
|
|
1
|
+
import type { ComputedRef, DeepReadonly } from "vue";
|
|
2
2
|
export type SwitchSize = "sm" | "md" | "lg";
|
|
3
3
|
export interface SwitchProps {
|
|
4
4
|
size?: SwitchSize;
|
|
5
5
|
disabled?: boolean;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* スイッチの状態(StyleAdapterに渡す用)
|
|
9
|
+
*/
|
|
10
|
+
export interface SwitchState {
|
|
11
|
+
size: SwitchSize;
|
|
12
|
+
disabled: boolean;
|
|
13
|
+
checked: boolean;
|
|
14
|
+
}
|
|
7
15
|
export interface SwitchAriaAttributes {
|
|
8
16
|
role: "switch";
|
|
9
17
|
"aria-checked": boolean;
|
|
10
18
|
"aria-disabled"?: boolean;
|
|
11
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* useSwitch の戻り値(ヘッドレス - スタイル情報なし)
|
|
22
|
+
*/
|
|
12
23
|
export interface SwitchReturn {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
is_disabled: ComputedRef<boolean>;
|
|
16
|
-
aria_attributes: ComputedRef<SwitchAriaAttributes>;
|
|
24
|
+
state: DeepReadonly<ComputedRef<SwitchState>>;
|
|
25
|
+
aria_attributes: DeepReadonly<ComputedRef<SwitchAriaAttributes>>;
|
|
17
26
|
}
|