@antify/ui 1.0.4 → 1.2.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/components/AntAccordion.vue +32 -7
- package/dist/components/AntAccordionItem.vue +48 -15
- package/dist/components/AntAlert.vue +8 -6
- package/dist/components/AntDropdown.vue +50 -36
- package/dist/components/AntIcon.vue +8 -6
- package/dist/components/AntKeycap.vue +22 -17
- package/dist/components/AntListGroup.vue +5 -3
- package/dist/components/AntModal.vue +17 -7
- package/dist/components/AntPopover.vue +118 -42
- package/dist/components/AntSkeleton.vue +1 -1
- package/dist/components/AntTooltip.vue +102 -76
- package/dist/components/__stories/AntAccordion.stories.d.ts +1 -0
- package/dist/components/__stories/AntAccordion.stories.js +73 -1
- package/dist/components/__stories/AntAccordion.stories.mjs +68 -0
- package/dist/components/__stories/AntDropdown.stories.js +27 -23
- package/dist/components/__stories/AntDropdown.stories.mjs +26 -22
- package/dist/components/__stories/AntKeycap.stories.js +13 -15
- package/dist/components/__stories/AntKeycap.stories.mjs +13 -13
- package/dist/components/__stories/AntListGroup.stories.js +1 -1
- package/dist/components/__stories/AntListGroup.stories.mjs +1 -1
- package/dist/components/__stories/AntModal.stories.js +2 -1
- package/dist/components/__stories/AntModal.stories.mjs +2 -1
- package/dist/components/__stories/AntPopover.stories.js +22 -21
- package/dist/components/__stories/AntPopover.stories.mjs +22 -20
- package/dist/components/__stories/AntTooltip.stories.d.ts +0 -10
- package/dist/components/__stories/AntTooltip.stories.js +32 -212
- package/dist/components/__stories/AntTooltip.stories.mjs +29 -193
- package/dist/components/__types/AntKeycap.types.d.ts +1 -0
- package/dist/components/__types/AntKeycap.types.js +1 -0
- package/dist/components/__types/AntKeycap.types.mjs +1 -0
- package/dist/components/buttons/AntButton.vue +41 -44
- package/dist/components/crud/AntCrud.vue +1 -1
- package/dist/components/crud/AntCrudDetailActions.vue +1 -0
- package/dist/components/crud/AntCrudTableFilter.vue +20 -18
- package/dist/components/forms/AntField.vue +7 -2
- package/dist/components/forms/__stories/AntField.stories.js +0 -16
- package/dist/components/forms/__stories/AntField.stories.mjs +2 -16
- package/dist/components/index.d.ts +2 -2
- package/dist/components/index.js +7 -7
- package/dist/components/index.mjs +2 -2
- package/dist/components/inputs/AntCheckbox.vue +25 -6
- package/dist/components/inputs/AntDateInput.vue +1 -1
- package/dist/components/inputs/AntRadio.vue +2 -1
- package/dist/components/inputs/AntSelect.vue +25 -22
- package/dist/components/inputs/AntSwitch.vue +2 -7
- package/dist/components/inputs/AntTagInput.vue +91 -114
- package/dist/components/inputs/AntTextarea.vue +7 -3
- package/dist/components/inputs/Elements/AntBaseInput.vue +2 -2
- package/dist/components/inputs/Elements/{AntDropDown.vue → AntSelectMenu.vue} +85 -40
- package/dist/components/inputs/Elements/__stories/AntBaseInput.stories.d.ts +0 -1
- package/dist/components/inputs/Elements/__stories/AntBaseInput.stories.js +1 -29
- package/dist/components/inputs/Elements/__stories/AntBaseInput.stories.mjs +0 -22
- package/dist/components/inputs/Elements/index.d.ts +2 -1
- package/dist/components/inputs/Elements/index.js +7 -0
- package/dist/components/inputs/Elements/index.mjs +3 -1
- package/dist/components/inputs/__stories/AntCheckbox.stories.d.ts +0 -1
- package/dist/components/inputs/__stories/AntCheckbox.stories.js +1 -43
- package/dist/components/inputs/__stories/AntCheckbox.stories.mjs +0 -35
- package/dist/components/inputs/__stories/AntCheckboxGroup.stories.d.ts +0 -1
- package/dist/components/inputs/__stories/AntCheckboxGroup.stories.js +1 -31
- package/dist/components/inputs/__stories/AntCheckboxGroup.stories.mjs +0 -28
- package/dist/components/inputs/__stories/AntDateInput.stories.d.ts +0 -1
- package/dist/components/inputs/__stories/AntDateInput.stories.js +1 -32
- package/dist/components/inputs/__stories/AntDateInput.stories.mjs +0 -28
- package/dist/components/inputs/__stories/AntNumberInput.stories.d.ts +0 -2
- package/dist/components/inputs/__stories/AntNumberInput.stories.js +1 -65
- package/dist/components/inputs/__stories/AntNumberInput.stories.mjs +1 -54
- package/dist/components/inputs/__stories/AntPasswordInput.stories.d.ts +0 -1
- package/dist/components/inputs/__stories/AntPasswordInput.stories.js +1 -35
- package/dist/components/inputs/__stories/AntPasswordInput.stories.mjs +0 -25
- package/dist/components/inputs/__stories/AntRadioGroup.stories.d.ts +0 -1
- package/dist/components/inputs/__stories/AntRadioGroup.stories.js +1 -47
- package/dist/components/inputs/__stories/AntRadioGroup.stories.mjs +0 -46
- package/dist/components/inputs/__stories/AntRangeSlider.stories.d.ts +0 -1
- package/dist/components/inputs/__stories/AntRangeSlider.stories.js +1 -33
- package/dist/components/inputs/__stories/AntRangeSlider.stories.mjs +1 -28
- package/dist/components/inputs/__stories/AntSelect.stories.d.ts +0 -1
- package/dist/components/inputs/__stories/AntSelect.stories.js +18 -46
- package/dist/components/inputs/__stories/AntSelect.stories.mjs +16 -47
- package/dist/components/inputs/__stories/AntSwitch.stories.d.ts +0 -1
- package/dist/components/inputs/__stories/AntSwitch.stories.js +1 -42
- package/dist/components/inputs/__stories/AntSwitch.stories.mjs +1 -37
- package/dist/components/inputs/__stories/AntSwitcher.stories.d.ts +0 -1
- package/dist/components/inputs/__stories/AntSwitcher.stories.js +1 -51
- package/dist/components/inputs/__stories/AntSwitcher.stories.mjs +1 -51
- package/dist/components/inputs/__stories/AntTagInput.stories.d.ts +0 -1
- package/dist/components/inputs/__stories/AntTagInput.stories.js +1 -35
- package/dist/components/inputs/__stories/AntTagInput.stories.mjs +0 -33
- package/dist/components/inputs/__stories/AntTextInput.stories.d.ts +0 -2
- package/dist/components/inputs/__stories/AntTextInput.stories.js +1 -107
- package/dist/components/inputs/__stories/AntTextInput.stories.mjs +0 -104
- package/dist/components/inputs/__stories/AntTextarea.stories.d.ts +0 -2
- package/dist/components/inputs/__stories/AntTextarea.stories.js +7 -66
- package/dist/components/inputs/__stories/AntTextarea.stories.mjs +6 -55
- package/dist/components/inputs/__stories/AntUnitInput.stories.d.ts +0 -2
- package/dist/components/inputs/__stories/AntUnitInput.stories.js +1 -61
- package/dist/components/inputs/__stories/AntUnitInput.stories.mjs +0 -53
- package/dist/components/table/AntTable.vue +17 -15
- package/dist/components/table/AntTd.vue +1 -2
- package/dist/components/table/__stories/AntTable.stories.js +7 -14
- package/dist/components/table/__stories/AntTable.stories.mjs +7 -15
- package/dist/components/tabs/AntTabItem.vue +16 -6
- package/dist/components/tabs/AntTabs.vue +8 -0
- package/dist/components/tabs/__types/AntTabItem.types.d.ts +1 -0
- package/package.json +2 -1
|
@@ -81,25 +81,27 @@ watch(() => props.fullWidth, (val) => {
|
|
|
81
81
|
v-model:show-dropdown="showDropdown"
|
|
82
82
|
:position="Position.left"
|
|
83
83
|
>
|
|
84
|
-
<
|
|
85
|
-
<
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
84
|
+
<template #reference>
|
|
85
|
+
<div class="flex">
|
|
86
|
+
<AntButton
|
|
87
|
+
:state="hasFilter ? State.info : State.base"
|
|
88
|
+
:grouped="hasFilter ? Grouped.left : Grouped.none"
|
|
89
|
+
:skeleton="skeleton"
|
|
90
|
+
:icon-left="faFilter"
|
|
91
|
+
@click="() => showDropdown = !showDropdown"
|
|
92
|
+
/>
|
|
92
93
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
94
|
+
<AntButton
|
|
95
|
+
v-if="hasFilter"
|
|
96
|
+
:state="State.info"
|
|
97
|
+
:grouped="Grouped.right"
|
|
98
|
+
:skeleton="skeleton"
|
|
99
|
+
:icon-left="faMultiply"
|
|
100
|
+
filled
|
|
101
|
+
@click="$emit('removeFilter')"
|
|
102
|
+
/>
|
|
103
|
+
</div>
|
|
104
|
+
</template>
|
|
103
105
|
|
|
104
106
|
<template #content>
|
|
105
107
|
<slot name="dropdownContent"/>
|
|
@@ -20,12 +20,14 @@ const props = withDefaults(defineProps<{
|
|
|
20
20
|
limiterMaxValue?: number;
|
|
21
21
|
labelFor?: string;
|
|
22
22
|
expanded?: boolean;
|
|
23
|
+
expandedHeight?: boolean;
|
|
23
24
|
}>(), {
|
|
24
25
|
state: InputState.base,
|
|
25
26
|
skeleton: false,
|
|
26
27
|
size: Size.md,
|
|
27
28
|
messages: () => [],
|
|
28
|
-
expanded: true
|
|
29
|
+
expanded: true,
|
|
30
|
+
expandedHeight: false,
|
|
29
31
|
});
|
|
30
32
|
|
|
31
33
|
onMounted(() => {
|
|
@@ -47,6 +49,8 @@ const fieldClasses = computed(() => ({
|
|
|
47
49
|
'gap-2': props.size === Size.md,
|
|
48
50
|
'gap-1.5': (props.size === Size.sm || props.size === Size.xs),
|
|
49
51
|
'gap-1': props.size === Size.xs2,
|
|
52
|
+
'h-full': props.expandedHeight,
|
|
53
|
+
'h-fit': !props.expandedHeight,
|
|
50
54
|
}));
|
|
51
55
|
const descriptionClasses = computed(() => ({
|
|
52
56
|
'gap-2.5': props.size === Size.lg,
|
|
@@ -66,9 +70,10 @@ const descriptionClasses = computed(() => ({
|
|
|
66
70
|
:size="size"
|
|
67
71
|
:skeleton="skeleton"
|
|
68
72
|
:for="labelFor"
|
|
73
|
+
class="h-full"
|
|
69
74
|
@click-content="$emit('clickLabel')"
|
|
70
75
|
>
|
|
71
|
-
<div class="w-full">
|
|
76
|
+
<div class="w-full h-full">
|
|
72
77
|
<slot/>
|
|
73
78
|
</div>
|
|
74
79
|
</AntInputLabel>
|
|
@@ -9,7 +9,6 @@ var _AntBaseInput = _interopRequireDefault(require("../../inputs/Elements/AntBas
|
|
|
9
9
|
var _Size = require("../../../enums/Size.enum");
|
|
10
10
|
var _vue = require("vue");
|
|
11
11
|
var _enums = require("../../../enums");
|
|
12
|
-
var _validate = require("@antify/validate");
|
|
13
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
13
|
const meta = {
|
|
15
14
|
title: "Forms/Field",
|
|
@@ -66,39 +65,24 @@ const Docs = exports.Docs = {
|
|
|
66
65
|
args.size = val;
|
|
67
66
|
}
|
|
68
67
|
});
|
|
69
|
-
const state = (0, _vue.computed)({
|
|
70
|
-
get() {
|
|
71
|
-
return validator.hasErrors() ? _enums.InputState.danger : args.state;
|
|
72
|
-
},
|
|
73
|
-
set(val) {
|
|
74
|
-
args.state = val;
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
68
|
const value = (0, _vue.ref)(null);
|
|
78
|
-
const validator = (0, _vue.reactive)((0, _validate.useFieldValidator)([_validate.isRequiredRule, _validate.notBlankRule]));
|
|
79
69
|
return {
|
|
80
70
|
args,
|
|
81
71
|
value,
|
|
82
|
-
validator,
|
|
83
72
|
skeleton,
|
|
84
73
|
size,
|
|
85
|
-
state,
|
|
86
74
|
InputState: _enums.InputState
|
|
87
75
|
};
|
|
88
76
|
},
|
|
89
77
|
template: `
|
|
90
78
|
<AntField
|
|
91
79
|
v-bind="args"
|
|
92
|
-
:messages="Array.isArray(args.messages) ? args.messages : validator.getErrors()"
|
|
93
|
-
:state="state"
|
|
94
80
|
>
|
|
95
81
|
<AntBaseInput
|
|
96
82
|
v-model="value"
|
|
97
83
|
:skeleton="skeleton"
|
|
98
84
|
:size="size"
|
|
99
|
-
:state="state"
|
|
100
85
|
placeholder="Placeholder"
|
|
101
|
-
@validate="(val) => validator.validate(val)"
|
|
102
86
|
/>
|
|
103
87
|
</AntField>
|
|
104
88
|
`
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import AntField from "../AntField.vue";
|
|
2
2
|
import AntBaseInput from "../../inputs/Elements/AntBaseInput.vue";
|
|
3
3
|
import { Size } from "../../../enums/Size.enum.mjs";
|
|
4
|
-
import { computed,
|
|
4
|
+
import { computed, ref } from "vue";
|
|
5
5
|
import { InputState } from "../../../enums/index.mjs";
|
|
6
|
-
import { isRequiredRule, notBlankRule, useFieldValidator } from "@antify/validate";
|
|
7
6
|
const meta = {
|
|
8
7
|
title: "Forms/Field",
|
|
9
8
|
component: AntField,
|
|
@@ -44,31 +43,18 @@ export const Docs = {
|
|
|
44
43
|
args.size = val;
|
|
45
44
|
}
|
|
46
45
|
});
|
|
47
|
-
const state = computed({
|
|
48
|
-
get() {
|
|
49
|
-
return validator.hasErrors() ? InputState.danger : args.state;
|
|
50
|
-
},
|
|
51
|
-
set(val) {
|
|
52
|
-
args.state = val;
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
46
|
const value = ref(null);
|
|
56
|
-
|
|
57
|
-
return { args, value, validator, skeleton, size, state, InputState };
|
|
47
|
+
return { args, value, skeleton, size, InputState };
|
|
58
48
|
},
|
|
59
49
|
template: `
|
|
60
50
|
<AntField
|
|
61
51
|
v-bind="args"
|
|
62
|
-
:messages="Array.isArray(args.messages) ? args.messages : validator.getErrors()"
|
|
63
|
-
:state="state"
|
|
64
52
|
>
|
|
65
53
|
<AntBaseInput
|
|
66
54
|
v-model="value"
|
|
67
55
|
:skeleton="skeleton"
|
|
68
56
|
:size="size"
|
|
69
|
-
:state="state"
|
|
70
57
|
placeholder="Placeholder"
|
|
71
|
-
@validate="(val) => validator.validate(val)"
|
|
72
58
|
/>
|
|
73
59
|
</AntField>
|
|
74
60
|
`
|
|
@@ -18,7 +18,7 @@ import AntField from './forms/AntField.vue';
|
|
|
18
18
|
import AntFormGroup from './forms/AntFormGroup.vue';
|
|
19
19
|
import AntFormGroupLabel from './forms/AntFormGroupLabel.vue';
|
|
20
20
|
import AntBaseInput from './inputs/Elements/AntBaseInput.vue';
|
|
21
|
-
import
|
|
21
|
+
import AntSelectMenu from './inputs/Elements/AntSelectMenu.vue';
|
|
22
22
|
import AntInputDescription from './inputs/Elements/AntInputDescription.vue';
|
|
23
23
|
import AntInputLabel from './inputs/Elements/AntInputLabel.vue';
|
|
24
24
|
import AntInputLimiter from './inputs/Elements/AntInputLimiter.vue';
|
|
@@ -63,4 +63,4 @@ import AntTag from './AntTag.vue';
|
|
|
63
63
|
import AntToast from './AntToast.vue';
|
|
64
64
|
import AntToaster from './AntToaster.vue';
|
|
65
65
|
import AntTooltip from './AntTooltip.vue';
|
|
66
|
-
export { AntActionButton, AntButton, AntCreateButton, AntDeleteButton, AntDuplicateButton, AntEditButton, AntSaveAndNewButton, AntSaveButton, AntCrud, AntCrudDetail, AntCrudDetailActions, AntCrudDetailNav, AntCrudTableFilter, AntCrudTableNav, AntDeleteDialog, AntDialog, AntField, AntFormGroup, AntFormGroupLabel, AntBaseInput,
|
|
66
|
+
export { AntActionButton, AntButton, AntCreateButton, AntDeleteButton, AntDuplicateButton, AntEditButton, AntSaveAndNewButton, AntSaveButton, AntCrud, AntCrudDetail, AntCrudDetailActions, AntCrudDetailNav, AntCrudTableFilter, AntCrudTableNav, AntDeleteDialog, AntDialog, AntField, AntFormGroup, AntFormGroupLabel, AntBaseInput, AntSelectMenu, AntInputDescription, AntInputLabel, AntInputLimiter, AntCheckbox, AntCheckboxGroup, AntDateInput, AntNumberInput, AntPasswordInput, AntRadio, AntRadioGroup, AntRangeSlider, AntSearch, AntSelect, AntSwitch, AntSwitcher, AntTagInput, AntTextarea, AntTextInput, AntUnitInput, AntNavLeftLayout, AntNavbar, AntNavbarItem, AntTable, AntTabs, AntTransitionCollapseHeight, AntAccordion, AntAccordionItem, AntAlert, AntCard, AntContent, AntDropdown, AntIcon, AntKeycap, AntListGroup, AntListGroupItem, AntModal, AntPagination, AntPopover, AntSkeleton, AntSpinner, AntTag, AntToast, AntToaster, AntTooltip };
|
package/dist/components/index.js
CHANGED
|
@@ -129,12 +129,6 @@ Object.defineProperty(exports, "AntDialog", {
|
|
|
129
129
|
return _AntDialog.default;
|
|
130
130
|
}
|
|
131
131
|
});
|
|
132
|
-
Object.defineProperty(exports, "AntDropDown", {
|
|
133
|
-
enumerable: true,
|
|
134
|
-
get: function () {
|
|
135
|
-
return _AntDropDown.default;
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
132
|
Object.defineProperty(exports, "AntDropdown", {
|
|
139
133
|
enumerable: true,
|
|
140
134
|
get: function () {
|
|
@@ -303,6 +297,12 @@ Object.defineProperty(exports, "AntSelect", {
|
|
|
303
297
|
return _AntSelect.default;
|
|
304
298
|
}
|
|
305
299
|
});
|
|
300
|
+
Object.defineProperty(exports, "AntSelectMenu", {
|
|
301
|
+
enumerable: true,
|
|
302
|
+
get: function () {
|
|
303
|
+
return _AntSelectMenu.default;
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
306
|
Object.defineProperty(exports, "AntSkeleton", {
|
|
307
307
|
enumerable: true,
|
|
308
308
|
get: function () {
|
|
@@ -413,7 +413,7 @@ var _AntField = _interopRequireDefault(require("./forms/AntField.vue"));
|
|
|
413
413
|
var _AntFormGroup = _interopRequireDefault(require("./forms/AntFormGroup.vue"));
|
|
414
414
|
var _AntFormGroupLabel = _interopRequireDefault(require("./forms/AntFormGroupLabel.vue"));
|
|
415
415
|
var _AntBaseInput = _interopRequireDefault(require("./inputs/Elements/AntBaseInput.vue"));
|
|
416
|
-
var
|
|
416
|
+
var _AntSelectMenu = _interopRequireDefault(require("./inputs/Elements/AntSelectMenu.vue"));
|
|
417
417
|
var _AntInputDescription = _interopRequireDefault(require("./inputs/Elements/AntInputDescription.vue"));
|
|
418
418
|
var _AntInputLabel = _interopRequireDefault(require("./inputs/Elements/AntInputLabel.vue"));
|
|
419
419
|
var _AntInputLimiter = _interopRequireDefault(require("./inputs/Elements/AntInputLimiter.vue"));
|
|
@@ -18,7 +18,7 @@ import AntField from "./forms/AntField.vue";
|
|
|
18
18
|
import AntFormGroup from "./forms/AntFormGroup.vue";
|
|
19
19
|
import AntFormGroupLabel from "./forms/AntFormGroupLabel.vue";
|
|
20
20
|
import AntBaseInput from "./inputs/Elements/AntBaseInput.vue";
|
|
21
|
-
import
|
|
21
|
+
import AntSelectMenu from "./inputs/Elements/AntSelectMenu.vue";
|
|
22
22
|
import AntInputDescription from "./inputs/Elements/AntInputDescription.vue";
|
|
23
23
|
import AntInputLabel from "./inputs/Elements/AntInputLabel.vue";
|
|
24
24
|
import AntInputLimiter from "./inputs/Elements/AntInputLimiter.vue";
|
|
@@ -84,7 +84,7 @@ export {
|
|
|
84
84
|
AntFormGroup,
|
|
85
85
|
AntFormGroupLabel,
|
|
86
86
|
AntBaseInput,
|
|
87
|
-
|
|
87
|
+
AntSelectMenu,
|
|
88
88
|
AntInputDescription,
|
|
89
89
|
AntInputLabel,
|
|
90
90
|
AntInputLimiter,
|
|
@@ -86,6 +86,20 @@ const itemSize = computed(() => {
|
|
|
86
86
|
return IconSize.sm;
|
|
87
87
|
}
|
|
88
88
|
});
|
|
89
|
+
const iconColor = computed(() => {
|
|
90
|
+
switch (props.state) {
|
|
91
|
+
case InputState.base:
|
|
92
|
+
return 'text-primary-500-font';
|
|
93
|
+
case InputState.info:
|
|
94
|
+
return 'text-info-500-font';
|
|
95
|
+
case InputState.success:
|
|
96
|
+
return 'text-success-500-font'
|
|
97
|
+
case InputState.warning:
|
|
98
|
+
return 'text-warning-500-font';
|
|
99
|
+
default:
|
|
100
|
+
return 'text-danger-500-font';
|
|
101
|
+
}
|
|
102
|
+
})
|
|
89
103
|
|
|
90
104
|
/**
|
|
91
105
|
* Delay value to change the checkboxes background color after
|
|
@@ -145,12 +159,17 @@ onMounted(() => {
|
|
|
145
159
|
@blur="onBlur"
|
|
146
160
|
/>
|
|
147
161
|
|
|
148
|
-
<
|
|
149
|
-
|
|
150
|
-
:
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
162
|
+
<div
|
|
163
|
+
class="absolute flex items-center justify-center !text-white pointer-events-none"
|
|
164
|
+
:class="size === Size.lg || size === Size.md || size === Size.sm ? 'h-5 w-5' : 'h-4 w-4'"
|
|
165
|
+
>
|
|
166
|
+
<AntIcon
|
|
167
|
+
v-if="_modelValue"
|
|
168
|
+
:icon="faCheck"
|
|
169
|
+
:size="itemSize"
|
|
170
|
+
:color="iconColor"
|
|
171
|
+
/>
|
|
172
|
+
</div>
|
|
154
173
|
|
|
155
174
|
<AntSkeleton
|
|
156
175
|
v-if="skeleton"
|
|
@@ -72,9 +72,9 @@ const inputClasses = computed(() => {
|
|
|
72
72
|
const valueClass = computed(() => ({
|
|
73
73
|
'relative w-fit full-height text-for-white-bg-font': true,
|
|
74
74
|
'cursor-pointer': !hasInputState.value,
|
|
75
|
-
'cursor-not-allowed opacity-50': props.disabled,
|
|
76
75
|
'text-sm': props.size === Size.lg || props.size === Size.md || props.size === Size.sm,
|
|
77
76
|
'text-xs': props.size === Size.xs || props.size === Size.xs2,
|
|
77
|
+
'cursor-not-allowed opacity-50': props.disabled,
|
|
78
78
|
}));
|
|
79
79
|
const gapSize = computed(() => {
|
|
80
80
|
switch (props.size) {
|
|
@@ -106,6 +106,7 @@ const innerRadioClass = computed(() => (
|
|
|
106
106
|
'bg-danger-500': props.state === InputState.danger,
|
|
107
107
|
'h-3 w-3': props.size === Size.lg || props.size === Size.md || props.size === Size.sm,
|
|
108
108
|
'h-2 w-2': props.size === Size.xs || props.size === Size.xs2,
|
|
109
|
+
'cursor-not-allowed opacity-50': props.disabled,
|
|
109
110
|
}
|
|
110
111
|
));
|
|
111
112
|
|
|
@@ -25,7 +25,7 @@ import {vOnClickOutside} from '@vueuse/components';
|
|
|
25
25
|
import AntButton from '../buttons/AntButton.vue';
|
|
26
26
|
import {State, InputState} from '../../enums';
|
|
27
27
|
import {IconSize} from '../__types';
|
|
28
|
-
import
|
|
28
|
+
import AntSelectMenu from './Elements/AntSelectMenu.vue';
|
|
29
29
|
|
|
30
30
|
defineOptions({inheritAttrs: false});
|
|
31
31
|
|
|
@@ -100,9 +100,6 @@ const inputClasses = computed(() => {
|
|
|
100
100
|
'rounded-none': props.grouped === Grouped.center,
|
|
101
101
|
'rounded-md': props.grouped === Grouped.none,
|
|
102
102
|
'rounded-tr-none rounded-br-none': props.nullable && _modelValue.value !== null,
|
|
103
|
-
'rounded-bl-none rounded-br-none': isOpen.value,
|
|
104
|
-
// Open
|
|
105
|
-
'shadow-md': isOpen.value,
|
|
106
103
|
// Disabled
|
|
107
104
|
'opacity-50 cursor-not-allowed': props.disabled,
|
|
108
105
|
};
|
|
@@ -143,6 +140,13 @@ const skeletonGrouped = computed(() => {
|
|
|
143
140
|
return Grouped.left;
|
|
144
141
|
}
|
|
145
142
|
});
|
|
143
|
+
const iconSize = computed(() => {
|
|
144
|
+
if (props.size === Size.lg || props.size === Size.md || props.size === Size.sm) {
|
|
145
|
+
return IconSize.sm;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return IconSize.xs;
|
|
149
|
+
})
|
|
146
150
|
const inputRef = ref<HTMLElement | null>(null);
|
|
147
151
|
const dropDownRef = ref<HTMLElement | null>(null);
|
|
148
152
|
const focusedDropDownItem = ref<string | number | null>(null);
|
|
@@ -244,14 +248,26 @@ function onClickRemoveButton() {
|
|
|
244
248
|
:name="name"
|
|
245
249
|
>
|
|
246
250
|
|
|
251
|
+
<!-- Dropdown -->
|
|
252
|
+
<AntSelectMenu
|
|
253
|
+
ref="dropDownRef"
|
|
254
|
+
v-model="_modelValue"
|
|
255
|
+
v-model:open="isOpen"
|
|
256
|
+
v-model:focused="dropDownFocused"
|
|
257
|
+
:options="options"
|
|
258
|
+
:size="size"
|
|
259
|
+
:state="state"
|
|
260
|
+
:close-on-enter="true"
|
|
261
|
+
@select-element="(e) => _modelValue = e"
|
|
262
|
+
>
|
|
247
263
|
<!-- Input -->
|
|
248
264
|
<div
|
|
249
|
-
ref="inputRef"
|
|
250
265
|
:class="inputClasses"
|
|
266
|
+
ref="inputRef"
|
|
251
267
|
:tabindex="disabled || readonly ? -1 : 0"
|
|
252
268
|
v-bind="$attrs"
|
|
253
269
|
@mousedown="onClickSelectInput"
|
|
254
|
-
@click="inputRef?.focus()"
|
|
270
|
+
@click="() => inputRef?.focus()"
|
|
255
271
|
@blur="onBlur"
|
|
256
272
|
>
|
|
257
273
|
<div
|
|
@@ -278,31 +294,18 @@ function onClickRemoveButton() {
|
|
|
278
294
|
<AntIcon
|
|
279
295
|
v-if="isOpen"
|
|
280
296
|
:icon="faChevronUp"
|
|
281
|
-
:size="
|
|
297
|
+
:size="iconSize"
|
|
282
298
|
:class="arrowClasses"
|
|
283
299
|
/>
|
|
284
300
|
|
|
285
301
|
<AntIcon
|
|
286
302
|
v-else
|
|
287
303
|
:icon="faChevronDown"
|
|
288
|
-
:size="
|
|
304
|
+
:size="iconSize"
|
|
289
305
|
:class="arrowClasses"
|
|
290
306
|
/>
|
|
291
307
|
</div>
|
|
292
|
-
|
|
293
|
-
<!-- Dropdown -->
|
|
294
|
-
<AntDropDown
|
|
295
|
-
ref="dropDownRef"
|
|
296
|
-
v-model="_modelValue"
|
|
297
|
-
v-model:open="isOpen"
|
|
298
|
-
v-model:focused="dropDownFocused"
|
|
299
|
-
:options="options"
|
|
300
|
-
:input-ref="inputRef"
|
|
301
|
-
:size="size"
|
|
302
|
-
:state="state"
|
|
303
|
-
:close-on-enter="true"
|
|
304
|
-
@select-element="(e) => _modelValue = e"
|
|
305
|
-
/>
|
|
308
|
+
</AntSelectMenu>
|
|
306
309
|
</div>
|
|
307
310
|
|
|
308
311
|
<AntButton
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import AntField from '../forms/AntField.vue';
|
|
3
|
-
import {computed,
|
|
3
|
+
import {computed, watch} from 'vue';
|
|
4
4
|
import AntSkeleton from '../AntSkeleton.vue';
|
|
5
5
|
import {InputState, Size} from '../../enums';
|
|
6
6
|
import {hasSlotContent} from '../../utils';
|
|
@@ -111,12 +111,7 @@ watch(() => props.skeleton, (val) => {
|
|
|
111
111
|
}
|
|
112
112
|
});
|
|
113
113
|
watch(_value, () => {
|
|
114
|
-
if (
|
|
115
|
-
emit('validate', props.modelValue);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
onMounted(() => {
|
|
119
|
-
if (!props.skeleton && props.modelValue !== null) {
|
|
114
|
+
if ([InputState.danger, InputState.info, InputState.warning].includes(props.state)) {
|
|
120
115
|
emit('validate', props.modelValue);
|
|
121
116
|
}
|
|
122
117
|
});
|