edvoyui-component-library-test-flight 0.0.168 → 0.0.170
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/package.json +10 -3
- package/src/App.vue +0 -16
- package/src/assets/svg/CheckTick.vue +0 -21
- package/src/assets/svg/ChevronBigDown.vue +0 -22
- package/src/assets/svg/ChevronDownSolid.vue +0 -19
- package/src/assets/svg/ChevronDownStroke.vue +0 -22
- package/src/assets/svg/ChevronDownStrokeSolid.vue +0 -19
- package/src/assets/svg/SearchBigZoomIn.vue +0 -21
- package/src/assets/svg/SortArrow.vue +0 -24
- package/src/assets/svg/Student.vue +0 -30
- package/src/assets/svg/partner.vue +0 -33
- package/src/assets/svg/people.vue +0 -25
- package/src/components/HelloWorld.vue +0 -1974
- package/src/components/accordion/EUIAccordion.vue +0 -152
- package/src/components/alerts/EUIAlerts.vue +0 -194
- package/src/components/avatar/EUIAvatar.vue +0 -96
- package/src/components/breadcrumb/EUIBreadcrumb.vue +0 -59
- package/src/components/button/EUIButton.vue +0 -154
- package/src/components/button/EUIButtonGroup.vue +0 -287
- package/src/components/button/buttonAnimateTab.vue +0 -74
- package/src/components/checkbox/EUICheckbox.vue +0 -110
- package/src/components/datepicker/EUIDatepicker.vue +0 -295
- package/src/components/delete.vue +0 -262
- package/src/components/dragModal/EUIDrag.vue +0 -179
- package/src/components/dropdown/EUIMultiDropdown.vue +0 -174
- package/src/components/errorMessage/EUIErrorMessage.vue +0 -25
- package/src/components/input/EUIInput.vue +0 -223
- package/src/components/input/EUINumberInput.vue +0 -250
- package/src/components/loader/EUICircleLoader.vue +0 -31
- package/src/components/loader/EUICubeLoader.vue +0 -237
- package/src/components/loader/EUILoader.vue +0 -17
- package/src/components/loader/EUISquareLoader.vue +0 -47
- package/src/components/modal/EUIModal.vue +0 -224
- package/src/components/pillSelect/EUIPillSelect.vue +0 -149
- package/src/components/popover/EUIPopover.vue +0 -297
- package/src/components/radio/EUIRadio.vue +0 -75
- package/src/components/searchInput/EUISearch.vue +0 -223
- package/src/components/searchTagSelect/EUISearchTagSelect.vue +0 -642
- package/src/components/searchTagSelect/SearchInput.vue +0 -167
- package/src/components/searchexpand/EUISearchExpand.vue +0 -148
- package/src/components/searchexpand/EUISearchToggle.vue +0 -86
- package/src/components/select/EUISelect.vue +0 -1092
- package/src/components/selectSearch/EUISelectSearch.vue +0 -23
- package/src/components/slideover/EUISlideover.vue +0 -207
- package/src/components/stepperTimeline/EUIStepperHorizontal.vue +0 -242
- package/src/components/stepperTimeline/EUIStepperTimeline.vue +0 -16
- package/src/components/stepperTimeline/EUIStepperVertical.vue +0 -112
- package/src/components/table/ColumnResizeTable.vue +0 -740
- package/src/components/table/EUIDashboardTable.vue +0 -514
- package/src/components/table/EUIPageLimit.vue +0 -66
- package/src/components/table/EUIPagination.vue +0 -175
- package/src/components/table/EUIStudentPagination.vue +0 -172
- package/src/components/table/EUITable.vue +0 -559
- package/src/components/table/EUITableCheckbox.vue +0 -98
- package/src/components/table/GrowthTable.vue +0 -575
- package/src/components/table/GrowthTableView.vue +0 -108
- package/src/components/table/ResizeTableview.vue +0 -198
- package/src/components/table/UCheckbox.vue +0 -169
- package/src/components/table/UTable.vue +0 -611
- package/src/components/table/UTableview.vue +0 -189
- package/src/components/tabs/EUITabOutline.vue +0 -263
- package/src/components/tabs/EUITabs.vue +0 -226
- package/src/components/tag/EUITag.vue +0 -88
- package/src/components/telephone/EUITelephone.vue +0 -299
- package/src/components/textArea/EUITextArea.vue +0 -155
- package/src/components/timeLine/EUITimeLine.vue +0 -148
- package/src/components/toggle/EUIToggle.vue +0 -101
- package/src/components/tooltip/EUITooltip.vue +0 -111
- package/src/components/uidemo/select-com.vue +0 -120
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="relative h-10 rounded-full">
|
|
3
|
-
<template v-if="icon">
|
|
4
|
-
<div
|
|
5
|
-
v-if="icon"
|
|
6
|
-
class="absolute flex items-center justify-center w-6 h-6 top-2 left-4"
|
|
7
|
-
>
|
|
8
|
-
<component
|
|
9
|
-
:is="icon"
|
|
10
|
-
:class="[
|
|
11
|
-
'w-5 h-5',
|
|
12
|
-
{ 'text-gray-800': inputValue },
|
|
13
|
-
hasError ? 'text-red-500' : 'text-gray-400',
|
|
14
|
-
]"
|
|
15
|
-
aria-hidden="true"
|
|
16
|
-
/>
|
|
17
|
-
</div>
|
|
18
|
-
</template>
|
|
19
|
-
<input
|
|
20
|
-
ref="searchInput"
|
|
21
|
-
type="text"
|
|
22
|
-
:class="['search-input', hasError ? 'error-state' : '']"
|
|
23
|
-
:placeholder="placeholder"
|
|
24
|
-
:value="modelValue"
|
|
25
|
-
@input="emitInput"
|
|
26
|
-
@focus="onFocus"
|
|
27
|
-
@blur="onBlur"
|
|
28
|
-
@click="onClick"
|
|
29
|
-
/>
|
|
30
|
-
<div
|
|
31
|
-
v-if="inputValue"
|
|
32
|
-
class="absolute flex items-center justify-center w-6 h-6 text-gray-400 transition-colors duration-150 ease-in bg-gray-100 cursor-pointer hover:text-gray-700 rounded-xl top-2 right-2"
|
|
33
|
-
@click.stop="clearSearch"
|
|
34
|
-
>
|
|
35
|
-
<XMarkIcon class="w-3 h-3 text-current" />
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
</template>
|
|
39
|
-
|
|
40
|
-
<script setup lang="ts">
|
|
41
|
-
import { computed, nextTick, onMounted, ref } from "vue";
|
|
42
|
-
import { XMarkIcon } from "@heroicons/vue/20/solid";
|
|
43
|
-
|
|
44
|
-
const props = defineProps({
|
|
45
|
-
modelValue: {
|
|
46
|
-
type: [String, Number],
|
|
47
|
-
default: "",
|
|
48
|
-
},
|
|
49
|
-
isToFocus: {
|
|
50
|
-
type: Boolean,
|
|
51
|
-
required: false,
|
|
52
|
-
default: false,
|
|
53
|
-
},
|
|
54
|
-
placeholder: {
|
|
55
|
-
type: String,
|
|
56
|
-
required: false,
|
|
57
|
-
default: "",
|
|
58
|
-
},
|
|
59
|
-
icon: {
|
|
60
|
-
type: [Object, Function],
|
|
61
|
-
required: false,
|
|
62
|
-
},
|
|
63
|
-
hasError: {
|
|
64
|
-
type: Boolean,
|
|
65
|
-
required: false,
|
|
66
|
-
default: false,
|
|
67
|
-
},
|
|
68
|
-
disabled: {
|
|
69
|
-
type: Boolean,
|
|
70
|
-
required: false,
|
|
71
|
-
default: false,
|
|
72
|
-
},
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
const searchInput = ref<HTMLInputElement>();
|
|
76
|
-
const hasFocus = ref(false);
|
|
77
|
-
const emit = defineEmits([
|
|
78
|
-
"update:modelValue",
|
|
79
|
-
"blur",
|
|
80
|
-
"cleared",
|
|
81
|
-
"focus",
|
|
82
|
-
"click",
|
|
83
|
-
]);
|
|
84
|
-
|
|
85
|
-
const emitInput = (event: Event) => {
|
|
86
|
-
const inputElement = event.target as HTMLInputElement;
|
|
87
|
-
let newValue = inputElement.value;
|
|
88
|
-
if (newValue !== undefined) {
|
|
89
|
-
//TODO: firstlater is uppercase added
|
|
90
|
-
const selectionStart = inputElement.selectionStart;
|
|
91
|
-
const selectionEnd = inputElement.selectionEnd;
|
|
92
|
-
if (typeof newValue === "string" && newValue.length > 0) {
|
|
93
|
-
if (newValue[0] !== newValue[0].toUpperCase()) {
|
|
94
|
-
newValue = newValue.charAt(0).toUpperCase() + newValue.slice(1);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
emit("update:modelValue", newValue);
|
|
98
|
-
|
|
99
|
-
nextTick(() => {
|
|
100
|
-
if (searchInput.value) {
|
|
101
|
-
if (searchInput.value.value === newValue) {
|
|
102
|
-
searchInput.value.setSelectionRange(selectionStart, selectionEnd);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
const inputValue = computed(() => {
|
|
110
|
-
return props.modelValue === 0 ? true : !!props.modelValue;
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
const onFocus = () => {
|
|
114
|
-
hasFocus.value = true;
|
|
115
|
-
emit("focus");
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
const onBlur = () => {
|
|
119
|
-
hasFocus.value = false;
|
|
120
|
-
emit("blur");
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
const onClick = () => {
|
|
124
|
-
emit("click");
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
const clearSearch = () => {
|
|
128
|
-
emit("update:modelValue", null);
|
|
129
|
-
emit("cleared");
|
|
130
|
-
nextTick(() => {
|
|
131
|
-
searchInput.value?.focus();
|
|
132
|
-
});
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
onMounted(() => {
|
|
136
|
-
if (props?.isToFocus) {
|
|
137
|
-
searchInput?.value?.focus();
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
// Expose the searchInput ref for parent components to access
|
|
142
|
-
defineExpose({
|
|
143
|
-
searchInput,
|
|
144
|
-
});
|
|
145
|
-
</script>
|
|
146
|
-
|
|
147
|
-
<style lang="scss" scoped>
|
|
148
|
-
:deep(input.search-input) {
|
|
149
|
-
transition: 0.2s;
|
|
150
|
-
@apply w-full pl-12 pr-2 py-2 text-sm text-gray-700 border-none rounded-full h-10 ring-1 ring-gray-200 ring-opacity-75 focus:ring-2 font-medium focus:ring-purple-400 focus:outline-none outline-none appearance-none ring-inset;
|
|
151
|
-
|
|
152
|
-
&::placeholder {
|
|
153
|
-
@apply font-normal text-gray-400;
|
|
154
|
-
}
|
|
155
|
-
&:focus::placeholder {
|
|
156
|
-
@apply opacity-0 invisible;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
&.error-state {
|
|
160
|
-
@apply ring-1 ring-red-500;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
&.error-state::placeholder {
|
|
164
|
-
@apply text-red-500;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
</style>
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="relative rounded-full size-10">
|
|
3
|
-
<div class="absolute top-0 right-0">
|
|
4
|
-
<div
|
|
5
|
-
ref="componentWrapper"
|
|
6
|
-
class="cursor-pointer group"
|
|
7
|
-
@click="expandInput"
|
|
8
|
-
>
|
|
9
|
-
<div class="relative max-w-80 z-[calc(infinity)]">
|
|
10
|
-
<div
|
|
11
|
-
:class="[
|
|
12
|
-
'relative flex items-center duration-300 ease-linear bg-gray-100 rounded-full pe-1 group-focus-within:ring-2 ring-purple-200 group-focus-within:border-gray-200 group-focus-within:border transition-all delay-75',
|
|
13
|
-
isExpanded
|
|
14
|
-
? 'group-focus-within:w-80 text-gray-300 h-10'
|
|
15
|
-
: 'size-10 text-gray-500',
|
|
16
|
-
]"
|
|
17
|
-
>
|
|
18
|
-
<SearchBigZoomIn
|
|
19
|
-
class="absolute text-current size-6 top-2 left-2"
|
|
20
|
-
/>
|
|
21
|
-
|
|
22
|
-
<button
|
|
23
|
-
v-if="isExpanded"
|
|
24
|
-
:class="
|
|
25
|
-
inputValue ? ' absolute inset-y-0 right-3 ' : ' hidden '
|
|
26
|
-
"
|
|
27
|
-
@click="(searchQuery=''), emit('update:modelValue', '')"
|
|
28
|
-
>
|
|
29
|
-
<svg
|
|
30
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
31
|
-
fill="none"
|
|
32
|
-
viewBox="0 0 24 24"
|
|
33
|
-
stroke-width="1.5"
|
|
34
|
-
stroke="currentColor"
|
|
35
|
-
class="size-5"
|
|
36
|
-
>
|
|
37
|
-
<!-- <path stroke-linecap="round" stroke-linejoin="round" d="m9.75 9.75 4.5 4.5m0-4.5-4.5 4.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
|
|
38
|
-
-->
|
|
39
|
-
<path
|
|
40
|
-
stroke-linecap="round"
|
|
41
|
-
stroke-linejoin="round"
|
|
42
|
-
d="M6 18 18 6M6 6l12 12"
|
|
43
|
-
/>
|
|
44
|
-
</svg>
|
|
45
|
-
</button>
|
|
46
|
-
|
|
47
|
-
<input
|
|
48
|
-
v-if="isExpanded"
|
|
49
|
-
v-model="searchQuery"
|
|
50
|
-
ref="input"
|
|
51
|
-
:type="type === 'search' ? 'text' : type"
|
|
52
|
-
placeholder="Search here..."
|
|
53
|
-
class="h-10 text-sm font-medium text-gray-900 bg-transparent w-80 ps-10 pe-2 focus:outline-none"
|
|
54
|
-
autocomplete="off"
|
|
55
|
-
@input="handleSearch"
|
|
56
|
-
@blur="closeInput"
|
|
57
|
-
/>
|
|
58
|
-
</div>
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
</div>
|
|
62
|
-
</div>
|
|
63
|
-
</template>
|
|
64
|
-
|
|
65
|
-
<script lang="ts" setup>
|
|
66
|
-
import { computed, onBeforeUnmount, onMounted, PropType, ref, toRefs, watch } from "vue";
|
|
67
|
-
import SearchBigZoomIn from "../../assets/svg/SearchBigZoomIn.vue";
|
|
68
|
-
|
|
69
|
-
const props = defineProps({
|
|
70
|
-
modelValue: {
|
|
71
|
-
type: [String, Number],
|
|
72
|
-
default: "",
|
|
73
|
-
},
|
|
74
|
-
searchSync: {
|
|
75
|
-
type: Boolean,
|
|
76
|
-
default: false,
|
|
77
|
-
},
|
|
78
|
-
type: {
|
|
79
|
-
type: String as PropType<
|
|
80
|
-
"text" | "number" | "email" | "password" | "search"
|
|
81
|
-
>,
|
|
82
|
-
default: "text",
|
|
83
|
-
},
|
|
84
|
-
});
|
|
85
|
-
const { searchSync } = toRefs(props);
|
|
86
|
-
const emit = defineEmits(["update:modelValue"]);
|
|
87
|
-
|
|
88
|
-
const input = ref<HTMLInputElement>();
|
|
89
|
-
const isExpanded = ref(true);
|
|
90
|
-
const searchQuery = ref();
|
|
91
|
-
const componentWrapper = ref<HTMLElement | null>(null);
|
|
92
|
-
|
|
93
|
-
function expandInput() {
|
|
94
|
-
isExpanded.value = true;
|
|
95
|
-
input?.value?.focus();
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const inputValue = computed(() => {
|
|
99
|
-
return props.modelValue === 0 ? true : !!props.modelValue;
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
function closeInput() {
|
|
103
|
-
if (!searchQuery.value) {
|
|
104
|
-
isExpanded.value = false;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
function handleOutsideClick(event: MouseEvent) {
|
|
109
|
-
if (
|
|
110
|
-
componentWrapper.value &&
|
|
111
|
-
!componentWrapper.value.contains(event.target as Node)
|
|
112
|
-
) {
|
|
113
|
-
closeInput();
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
watch(
|
|
118
|
-
searchSync,
|
|
119
|
-
(newVal) => {
|
|
120
|
-
if (!newVal) {
|
|
121
|
-
closeInput();
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
{ immediate: true, deep: true }
|
|
125
|
-
);
|
|
126
|
-
|
|
127
|
-
onMounted(() => {
|
|
128
|
-
document.addEventListener("click", handleOutsideClick);
|
|
129
|
-
if (searchQuery.value) {
|
|
130
|
-
searchQuery.value?.focus();
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
onBeforeUnmount(() => {
|
|
135
|
-
document.removeEventListener("click", handleOutsideClick);
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
function handleSearch(event: Event) {
|
|
139
|
-
const newValue = (event?.target as HTMLInputElement)?.value;
|
|
140
|
-
if (newValue !== undefined) {
|
|
141
|
-
emit("update:modelValue", newValue);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
</script>
|
|
145
|
-
|
|
146
|
-
<style scoped>
|
|
147
|
-
/* Add custom styles here */
|
|
148
|
-
</style>
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="relative rounded-full size-12">
|
|
3
|
-
<div class="absolute top-0 right-0">
|
|
4
|
-
<div
|
|
5
|
-
ref="componentWrapper"
|
|
6
|
-
class="cursor-pointer group"
|
|
7
|
-
@click="expandInput"
|
|
8
|
-
>
|
|
9
|
-
<div class="relative max-w-80 z-[calc(infinity)]">
|
|
10
|
-
<div
|
|
11
|
-
:class="[
|
|
12
|
-
'relative flex items-center py-1 duration-300 ease-linear bg-gray-100 border border-gray-200 rounded-full pe-1 group-focus-within:ring-2 ring-purple-200 group-focus-within:border-gray-300 transition-all delay-100',
|
|
13
|
-
isExpanded
|
|
14
|
-
? 'group-focus-within:w-80 text-gray-300'
|
|
15
|
-
: 'size-[2.875rem] text-gray-500',
|
|
16
|
-
]"
|
|
17
|
-
>
|
|
18
|
-
<SearchBigZoomIn
|
|
19
|
-
class="absolute text-current size-6 top-2.5 left-2.5 transition-colors duration-100"
|
|
20
|
-
/>
|
|
21
|
-
<input
|
|
22
|
-
v-if="isExpanded"
|
|
23
|
-
v-model="searchQuery"
|
|
24
|
-
ref="input"
|
|
25
|
-
type="search"
|
|
26
|
-
placeholder="Search here..."
|
|
27
|
-
class="text-sm font-medium text-gray-900 bg-transparent w-80 ps-10 pe-2 focus:outline-none min-h-9"
|
|
28
|
-
autocomplete="off"
|
|
29
|
-
@input="handleSearch"
|
|
30
|
-
@blur="handleSearch"
|
|
31
|
-
/>
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
37
|
-
</template>
|
|
38
|
-
|
|
39
|
-
<script lang="ts" setup>
|
|
40
|
-
import { ref, toRefs, watch } from "vue";
|
|
41
|
-
import SearchBigZoomIn from "../../assets/svg/SearchBigZoomIn.vue";
|
|
42
|
-
|
|
43
|
-
const props = defineProps({
|
|
44
|
-
modelValue: {
|
|
45
|
-
type: [String, Number],
|
|
46
|
-
default: "",
|
|
47
|
-
},
|
|
48
|
-
searchSync: {
|
|
49
|
-
type: Boolean,
|
|
50
|
-
default: true,
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
const { searchSync } = toRefs(props);
|
|
54
|
-
const emit = defineEmits(["update:modelValue", "update:searchSync"]);
|
|
55
|
-
|
|
56
|
-
const input = ref<HTMLInputElement>();
|
|
57
|
-
const isExpanded = ref(true);
|
|
58
|
-
const searchQuery = ref(null);
|
|
59
|
-
const componentWrapper = ref<HTMLElement | null>(null);
|
|
60
|
-
|
|
61
|
-
function handleSearch(event: Event) {
|
|
62
|
-
const newValue = (event?.target as HTMLInputElement)?.value;
|
|
63
|
-
if (newValue !== undefined) {
|
|
64
|
-
emit("update:modelValue", newValue);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
function expandInput() {
|
|
69
|
-
isExpanded.value = true;
|
|
70
|
-
input?.value?.focus();
|
|
71
|
-
emit("update:searchSync", true);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
watch(
|
|
75
|
-
searchSync,
|
|
76
|
-
(newVal) => {
|
|
77
|
-
isExpanded.value = newVal;
|
|
78
|
-
emit("update:searchSync", newVal);
|
|
79
|
-
},
|
|
80
|
-
{ immediate: true, deep: true }
|
|
81
|
-
);
|
|
82
|
-
</script>
|
|
83
|
-
|
|
84
|
-
<style scoped>
|
|
85
|
-
/* Add custom styles here */
|
|
86
|
-
</style>
|