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.
Files changed (69) hide show
  1. package/package.json +10 -3
  2. package/src/App.vue +0 -16
  3. package/src/assets/svg/CheckTick.vue +0 -21
  4. package/src/assets/svg/ChevronBigDown.vue +0 -22
  5. package/src/assets/svg/ChevronDownSolid.vue +0 -19
  6. package/src/assets/svg/ChevronDownStroke.vue +0 -22
  7. package/src/assets/svg/ChevronDownStrokeSolid.vue +0 -19
  8. package/src/assets/svg/SearchBigZoomIn.vue +0 -21
  9. package/src/assets/svg/SortArrow.vue +0 -24
  10. package/src/assets/svg/Student.vue +0 -30
  11. package/src/assets/svg/partner.vue +0 -33
  12. package/src/assets/svg/people.vue +0 -25
  13. package/src/components/HelloWorld.vue +0 -1974
  14. package/src/components/accordion/EUIAccordion.vue +0 -152
  15. package/src/components/alerts/EUIAlerts.vue +0 -194
  16. package/src/components/avatar/EUIAvatar.vue +0 -96
  17. package/src/components/breadcrumb/EUIBreadcrumb.vue +0 -59
  18. package/src/components/button/EUIButton.vue +0 -154
  19. package/src/components/button/EUIButtonGroup.vue +0 -287
  20. package/src/components/button/buttonAnimateTab.vue +0 -74
  21. package/src/components/checkbox/EUICheckbox.vue +0 -110
  22. package/src/components/datepicker/EUIDatepicker.vue +0 -295
  23. package/src/components/delete.vue +0 -262
  24. package/src/components/dragModal/EUIDrag.vue +0 -179
  25. package/src/components/dropdown/EUIMultiDropdown.vue +0 -174
  26. package/src/components/errorMessage/EUIErrorMessage.vue +0 -25
  27. package/src/components/input/EUIInput.vue +0 -223
  28. package/src/components/input/EUINumberInput.vue +0 -250
  29. package/src/components/loader/EUICircleLoader.vue +0 -31
  30. package/src/components/loader/EUICubeLoader.vue +0 -237
  31. package/src/components/loader/EUILoader.vue +0 -17
  32. package/src/components/loader/EUISquareLoader.vue +0 -47
  33. package/src/components/modal/EUIModal.vue +0 -224
  34. package/src/components/pillSelect/EUIPillSelect.vue +0 -149
  35. package/src/components/popover/EUIPopover.vue +0 -297
  36. package/src/components/radio/EUIRadio.vue +0 -75
  37. package/src/components/searchInput/EUISearch.vue +0 -223
  38. package/src/components/searchTagSelect/EUISearchTagSelect.vue +0 -642
  39. package/src/components/searchTagSelect/SearchInput.vue +0 -167
  40. package/src/components/searchexpand/EUISearchExpand.vue +0 -148
  41. package/src/components/searchexpand/EUISearchToggle.vue +0 -86
  42. package/src/components/select/EUISelect.vue +0 -1092
  43. package/src/components/selectSearch/EUISelectSearch.vue +0 -23
  44. package/src/components/slideover/EUISlideover.vue +0 -207
  45. package/src/components/stepperTimeline/EUIStepperHorizontal.vue +0 -242
  46. package/src/components/stepperTimeline/EUIStepperTimeline.vue +0 -16
  47. package/src/components/stepperTimeline/EUIStepperVertical.vue +0 -112
  48. package/src/components/table/ColumnResizeTable.vue +0 -740
  49. package/src/components/table/EUIDashboardTable.vue +0 -514
  50. package/src/components/table/EUIPageLimit.vue +0 -66
  51. package/src/components/table/EUIPagination.vue +0 -175
  52. package/src/components/table/EUIStudentPagination.vue +0 -172
  53. package/src/components/table/EUITable.vue +0 -559
  54. package/src/components/table/EUITableCheckbox.vue +0 -98
  55. package/src/components/table/GrowthTable.vue +0 -575
  56. package/src/components/table/GrowthTableView.vue +0 -108
  57. package/src/components/table/ResizeTableview.vue +0 -198
  58. package/src/components/table/UCheckbox.vue +0 -169
  59. package/src/components/table/UTable.vue +0 -611
  60. package/src/components/table/UTableview.vue +0 -189
  61. package/src/components/tabs/EUITabOutline.vue +0 -263
  62. package/src/components/tabs/EUITabs.vue +0 -226
  63. package/src/components/tag/EUITag.vue +0 -88
  64. package/src/components/telephone/EUITelephone.vue +0 -299
  65. package/src/components/textArea/EUITextArea.vue +0 -155
  66. package/src/components/timeLine/EUITimeLine.vue +0 -148
  67. package/src/components/toggle/EUIToggle.vue +0 -101
  68. package/src/components/tooltip/EUITooltip.vue +0 -111
  69. package/src/components/uidemo/select-com.vue +0 -120
@@ -1,250 +0,0 @@
1
- <template>
2
- <div>
3
- <label
4
- v-if="!inputFilled && label"
5
- :for="`${name}-${id}`"
6
- :class="[
7
- 'text-xs w-full text-gray-500 cursor-pointer font-medium',
8
- required && `after:content-['*'] after:ml-0.5 after:text-red-500`,
9
- ]"
10
- >
11
- {{ label }}
12
- </label>
13
- <div
14
- :class="[
15
- 'relative',
16
- { 'pointer-events-none cursor-not-allowed': disabled },
17
- {
18
- 'h-14 rounded-2xl focus-within:border-purple-600 focus-within:ring-1 focus-within:ring-purple-600 border border-gray-200':
19
- inputFilled,
20
- },
21
- 'group cursor-pointer relative w-full mb-2 overflow-hidden',
22
- ]"
23
- >
24
- <label
25
- v-if="inputFilled"
26
- :for="`${name}-${id}`"
27
- :class="[
28
- getIconClass(),
29
- inputValue
30
- ? 'top-3.5 text-xs text-gray-400 leading-none cursor-default'
31
- : 'top-1/2 text-sm w-full text-gray-700 cursor-pointer h-14 pt-5 pb-4',
32
- disabled ? 'cursor-not-allowed bg-gray-50 z-10' : 'z-0 bg-white',
33
- required && `after:content-['*'] after:ml-0.5 after:text-red-500`,
34
- 'absolute font-medium left-0 px-4 -translate-y-1/2 duration-300 group-focus-within:top-3.5 group-focus-within:text-xs group-focus-within:text-gray-400 rounded-2xl group-focus-within:bg-transparent group-focus-within:-translate-y-1/2 group-focus-within:ring-transparent group-focus-within:h-auto group-focus-within:py-0 first-letter:capitalize transition-all ease-in-out',
35
- ]"
36
- >
37
- {{ label || "Label" }}
38
- </label>
39
- <div
40
- v-if="icon && iconType"
41
- :class="[
42
- 'absolute inset-y-0 flex items-center pointer-events-none',
43
- iconType === 'startIcon' ? 'left-0 pl-3' : 'right-0 pr-3',
44
- disabled ? 'z-20' : '',
45
- ]"
46
- >
47
- <component :is="icon" class="text-gray-400 size-6" aria-hidden="true" />
48
- </div>
49
- <input
50
- :id="`${name}-${id}`"
51
- ref="input"
52
- type="number"
53
- :value="modelValue"
54
- :min="min"
55
- :max="max"
56
- :step="step || 1"
57
- :placeholder="placeholder"
58
- :name="name"
59
- :class="[
60
- 'z-10 block placeholder:text-gray-400 focus:outline-none text-sm font-medium appearance-none disabled:opacity-75 autofill:bg-white leading-6 transition-all duration-100 border-none outline-none',
61
- inputFilled
62
- ? 'pt-6 pb-3 rounded-2xl size-full'
63
- : 'py-3 h-10 w-full ring-1 ring-gray-200 focus-within:ring-purple-600 focus-within:ring-2 ring-inset',
64
- !inputFilled && rounded ? 'rounded-2xl' : 'rounded-md',
65
- disabled ? 'cursor-not-allowed' : 'cursor-text',
66
- getIconClass(),
67
- !inputFilled && className,
68
- 'pr-8',
69
- ]"
70
- :required="required"
71
- :disabled="disabled"
72
- :readonly="readonly"
73
- autocomplete="off"
74
- inputmode="numeric"
75
- pattern="^([0-9]{1,5}(\.[0-9]{1,2})?|100000(\.0{1,2})?)$"
76
- @keypress="handleKeyPress"
77
- @wheel.prevent=""
78
- @keydown.up.prevent=""
79
- @keydown.down.prevent=""
80
- @input="emitInput"
81
- @focus="hasFocus = true"
82
- @blur="hasFocus = false"
83
- />
84
- </div>
85
- <template v-if="errors && Object.keys(errors).length">
86
- <EUIErrorMessage :errors="errors" :name="name" />
87
- </template>
88
- </div>
89
- </template>
90
-
91
- <script lang="ts" setup>
92
- import EUIErrorMessage from "../errorMessage/EUIErrorMessage.vue";
93
- import {
94
- defineProps,
95
- defineEmits,
96
- computed,
97
- PropType,
98
- ref,
99
- onMounted,
100
- } from "vue";
101
-
102
- const props = defineProps({
103
- errors: { type: Object, required: false, default: () => {} },
104
- modelValue: {
105
- type: [String, Number],
106
- default: "",
107
- },
108
- name: {
109
- type: String,
110
- required: false,
111
- default: "",
112
- },
113
- label: {
114
- type: String,
115
- required: true,
116
- default: "",
117
- },
118
- autoFocus: {
119
- type: Boolean,
120
- required: false,
121
- default: false,
122
- },
123
- placeholder: {
124
- type: String,
125
- required: false,
126
- default: "",
127
- },
128
- iconType: {
129
- type: String as PropType<"startIcon" | "endIcon">,
130
- default: "",
131
- },
132
- icon: {
133
- type: [Object, String],
134
- default: "",
135
- },
136
- disabled: {
137
- type: Boolean,
138
- default: false,
139
- },
140
- required: {
141
- type: Boolean,
142
- default: false,
143
- },
144
- readonly: {
145
- type: Boolean,
146
- default: false,
147
- },
148
- inputFilled: {
149
- type: Boolean,
150
- default: false,
151
- },
152
- rounded: Boolean,
153
- className: {
154
- type: Array as PropType<string[]>,
155
- required: false,
156
- default: () => [],
157
- },
158
- min: {
159
- type: Number,
160
- default: 0,
161
- required: true,
162
- },
163
- max: {
164
- type: Number,
165
- default: 100,
166
- required: true,
167
- },
168
- step: {
169
- type: Number,
170
- default: 1,
171
- required: true,
172
- },
173
- });
174
-
175
- const hasFocus = ref(false);
176
- const input = ref<HTMLInputElement>();
177
-
178
- const id = "id"; //generateUID();
179
-
180
- const emit = defineEmits(["update:modelValue"]);
181
-
182
- const emitInput = (event: Event) => {
183
- const inputEl = event.target as HTMLInputElement;
184
- const newValue = parseFloat(inputEl.value);
185
-
186
- // Only emit valid numbers within range
187
- if (!isNaN(newValue)) {
188
- if (newValue >= props.min && newValue <= props.max) {
189
- emit("update:modelValue", newValue);
190
- } else if (newValue > props.max) {
191
- emit("update:modelValue", props.max);
192
- inputEl.value = String(props.max);
193
- } else if (newValue < props.min) {
194
- emit("update:modelValue", props.min);
195
- inputEl.value = String(props.min);
196
- }
197
- } else {
198
- emit("update:modelValue", props.min);
199
- inputEl.value = String(props.min);
200
- }
201
- };
202
-
203
-
204
- const handleKeyPress = (e: KeyboardEvent) => {
205
- const inputEl = e.target as HTMLInputElement | null;
206
- if (!inputEl) return; // Safety check
207
- const allowDecimal = props.step < 1;
208
- // Allow digits
209
- if (/[0-9]/.test(e.key)) return;
210
- // Allow one '.' only if step < 1
211
- if (allowDecimal && e.key === '.' && !inputEl.value.includes('.')) return;
212
- // Otherwise block input
213
- e.preventDefault();
214
- };
215
-
216
-
217
- const inputValue = computed(() => {
218
- return props.modelValue === 0 ? true : !!props.modelValue;
219
- });
220
-
221
- const getIconClass = () => {
222
- switch (props.iconType) {
223
- case "startIcon":
224
- return "pl-12 pr-4";
225
- case "endIcon":
226
- return "pr-12 pl-4";
227
- default:
228
- return "px-4";
229
- }
230
- };
231
-
232
- onMounted(() => {
233
- if (props?.autoFocus) {
234
- input?.value?.focus();
235
- }
236
- });
237
- </script>
238
-
239
- <style lang="scss" scoped>
240
- /* Chrome, Safari, Edge, Opera */
241
- input::-webkit-outer-spin-button,
242
- input::-webkit-inner-spin-button {
243
- -webkit-appearance: none;
244
- margin: 0;
245
- }
246
- /* Firefox */
247
- input[type="number"] {
248
- -moz-appearance: textfield;
249
- }
250
- </style>
@@ -1,31 +0,0 @@
1
- <template>
2
- <div class="flex flex-col items-center justify-center gap-4 mx-auto size-72">
3
- <div class="relative min-h-16">
4
- <div class="circle-loader">
5
- </div>
6
- </div>
7
- </div>
8
- </template>
9
-
10
- <script setup lang="ts">
11
-
12
- </script>
13
-
14
- <style lang="scss" scoped>
15
- .circle-loader {
16
- @apply box-border size-16 rounded-full relative transform rotate-45 border-[0.8rem] border-solid border-violet-500/25;
17
- &::before {
18
- content: "";
19
- @apply absolute box-border -inset-3 rounded-full border-[0.8rem] border-solid border-violet-600;
20
- animation: circleProgress 1s infinite linear;
21
- }
22
- }
23
-
24
- @keyframes circleProgress {
25
- 0% {clip-path:polygon(50% 50%,0 0,0 0,0 0,0 0,0 0)}
26
- 25% {clip-path:polygon(50% 50%,0 0,100% 0,100% 0,100% 0,100% 0)}
27
- 50% {clip-path:polygon(50% 50%,0 0,100% 0,100% 100%,100% 100%,100% 100%)}
28
- 75% {clip-path:polygon(50% 50%,0 0,100% 0,100% 100%,0 100%,0 100%)}
29
- 100% {clip-path:polygon(50% 50%,0 0,100% 0,100% 100%,0 100%,0 0)}
30
- }
31
- </style>
@@ -1,237 +0,0 @@
1
- <template>
2
- <div class="flex flex-col items-center justify-center gap-4 size-72 mx-auto">
3
- <div class="min-h-16 relative">
4
- <div class="cube">
5
- <div class="sides">
6
- <div class="top"></div>
7
- <div class="right"></div>
8
- <div class="bottom"></div>
9
- <div class="left"></div>
10
- <div class="front"></div>
11
- <div class="back"></div>
12
- </div>
13
- </div>
14
- </div>
15
- </div>
16
- </template>
17
-
18
- <script setup lang="ts">
19
-
20
- </script>
21
-
22
- <style lang="scss">
23
- :root {
24
- --cube-side: 2.75rem;
25
- --cube-side-half: calc(var(--cube-side) / 2);
26
- }
27
-
28
- @keyframes rotate {
29
- 0% {
30
- transform: rotateX(-37.5deg) rotateY(45deg);
31
- }
32
- 50% {
33
- transform: rotateX(-37.5deg) rotateY(405deg);
34
- }
35
- 100% {
36
- transform: rotateX(-37.5deg) rotateY(405deg);
37
- }
38
- }
39
-
40
- .cube, .cube * {
41
- @apply size-[2.75rem] absolute top-1 left-[-0.4rem];
42
- }
43
- .sides {
44
- animation: rotate 3s ease infinite;
45
- animation-delay: 0.8s;
46
- transform-style: preserve-3d;
47
- transform: rotateX(-37.5deg) rotateY(45deg);
48
- }
49
- .cube .sides * {
50
- @apply box-border bg-violet-600 border border-solid border-white;
51
- }
52
- .cube .sides .top {
53
- animation: top-animation 3s ease infinite;
54
- animation-delay: 0ms;
55
- transform: rotateX(90deg) translateZ(var(--cube-side));
56
- animation-fill-mode: forwards;
57
- transform-origin: 50% 50%;
58
- }
59
-
60
- @keyframes top-animation {
61
- 0% {
62
- opacity: 1;
63
- transform: rotateX(90deg) translateZ(var(--cube-side));
64
- }
65
- 20% {
66
- opacity: 1;
67
- transform: rotateX(90deg) translateZ(var(--cube-side-half));
68
- }
69
- 70% {
70
- opacity: 1;
71
- transform: rotateX(90deg) translateZ(var(--cube-side-half));
72
- }
73
- 90% {
74
- opacity: 1;
75
- transform: rotateX(90deg) translateZ(var(--cube-side));
76
- }
77
- 100% {
78
- opacity: 1;
79
- transform: rotateX(90deg) translateZ(var(--cube-side));
80
- }
81
- }
82
-
83
- .cube .sides .bottom {
84
- animation: bottom-animation 3s ease infinite;
85
- animation-delay: 0ms;
86
- transform: rotateX(-90deg) translateZ(var(--cube-side));
87
- animation-fill-mode: forwards;
88
- transform-origin: 50% 50%;
89
- }
90
-
91
- @keyframes bottom-animation {
92
- 0% {
93
- opacity: 1;
94
- transform: rotateX(-90deg) translateZ(var(--cube-side));
95
- }
96
- 20% {
97
- opacity: 1;
98
- transform: rotateX(-90deg) translateZ(var(--cube-side-half));
99
- }
100
- 70% {
101
- opacity: 1;
102
- transform: rotateX(-90deg) translateZ(var(--cube-side-half));
103
- }
104
- 90% {
105
- opacity: 1;
106
- transform: rotateX(-90deg) translateZ(var(--cube-side));
107
- }
108
- 100% {
109
- opacity: 1;
110
- transform: rotateX(-90deg) translateZ(var(--cube-side));
111
- }
112
- }
113
-
114
- .cube .sides .front {
115
- animation: front-animation 3s ease infinite;
116
- animation-delay: 100ms;
117
- transform: rotateY(0deg) translateZ(var(--cube-side));
118
- animation-fill-mode: forwards;
119
- transform-origin: 50% 50%;
120
- }
121
-
122
- @keyframes front-animation {
123
- 0% {
124
- opacity: 1;
125
- transform: rotateY(0deg) translateZ(var(--cube-side));
126
- }
127
- 20% {
128
- opacity: 1;
129
- transform: rotateY(0deg) translateZ(var(--cube-side-half));
130
- }
131
- 70% {
132
- opacity: 1;
133
- transform: rotateY(0deg) translateZ(var(--cube-side-half));
134
- }
135
- 90% {
136
- opacity: 1;
137
- transform: rotateY(0deg) translateZ(var(--cube-side));
138
- }
139
- 100% {
140
- opacity: 1;
141
- transform: rotateY(0deg) translateZ(var(--cube-side));
142
- }
143
- }
144
-
145
- .cube .sides .back {
146
- animation: back-animation 3s ease infinite;
147
- animation-delay: 100ms;
148
- transform: rotateY(-180deg) translateZ(var(--cube-side));
149
- animation-fill-mode: forwards;
150
- transform-origin: 50% 50%;
151
- }
152
-
153
- @keyframes back-animation {
154
- 0% {
155
- opacity: 1;
156
- transform: rotateY(-180deg) translateZ(var(--cube-side));
157
- }
158
- 20% {
159
- opacity: 1;
160
- transform: rotateY(-180deg) translateZ(var(--cube-side-half));
161
- }
162
- 70% {
163
- opacity: 1;
164
- transform: rotateY(-180deg) translateZ(var(--cube-side-half));
165
- }
166
- 90% {
167
- opacity: 1;
168
- transform: rotateY(-180deg) translateZ(var(--cube-side));
169
- }
170
- 100% {
171
- opacity: 1;
172
- transform: rotateY(-180deg) translateZ(var(--cube-side));
173
- }
174
- }
175
-
176
- .cube .sides .left {
177
- animation: left-animation 3s ease infinite;
178
- animation-delay: 100ms;
179
- transform: rotateY(-90deg) translateZ(var(--cube-side));
180
- animation-fill-mode: forwards;
181
- transform-origin: 50% 50%;
182
- }
183
-
184
- @keyframes left-animation {
185
- 0% {
186
- opacity: 1;
187
- transform: rotateY(-90deg) translateZ(var(--cube-side));
188
- }
189
- 20% {
190
- opacity: 1;
191
- transform: rotateY(-90deg) translateZ(var(--cube-side-half));
192
- }
193
- 70% {
194
- opacity: 1;
195
- transform: rotateY(-90deg) translateZ(var(--cube-side-half));
196
- }
197
- 90% {
198
- opacity: 1;
199
- transform: rotateY(-90deg) translateZ(var(--cube-side));
200
- }
201
- 100% {
202
- opacity: 1;
203
- transform: rotateY(-90deg) translateZ(var(--cube-side));
204
- }
205
- }
206
-
207
- .cube .sides .right {
208
- animation: right-animation 3s ease infinite;
209
- animation-delay: 100ms;
210
- transform: rotateY(90deg) translateZ(var(--cube-side));
211
- animation-fill-mode: forwards;
212
- transform-origin: 50% 50%;
213
- }
214
-
215
- @keyframes right-animation {
216
- 0% {
217
- opacity: 1;
218
- transform: rotateY(90deg) translateZ(var(--cube-side));
219
- }
220
- 20% {
221
- opacity: 1;
222
- transform: rotateY(90deg) translateZ(var(--cube-side-half));
223
- }
224
- 70% {
225
- opacity: 1;
226
- transform: rotateY(90deg) translateZ(var(--cube-side-half));
227
- }
228
- 90% {
229
- opacity: 1;
230
- transform: rotateY(90deg) translateZ(var(--cube-side));
231
- }
232
- 100% {
233
- opacity: 1;
234
- transform: rotateY(90deg) translateZ(var(--cube-side));
235
- }
236
- }
237
- </style>
@@ -1,17 +0,0 @@
1
- <<template>
2
- <div class="grid grid-cols-3">
3
- <EUISquareLoader />
4
- <EUICircleLoader />
5
- <EUICubeLoader />
6
- </div>
7
- </template>
8
-
9
- <script setup lang="ts">
10
- import EUICircleLoader from './EUICircleLoader.vue';
11
- import EUICubeLoader from './EUICubeLoader.vue';
12
- import EUISquareLoader from './EUISquareLoader.vue';
13
- </script>
14
-
15
- <style scoped>
16
-
17
- </style>
@@ -1,47 +0,0 @@
1
- <template>
2
- <div class="flex flex-col items-center justify-center gap-4 size-72 mx-auto">
3
- <div class="min-h-16 relative">
4
- <div class="square-loader">
5
- </div>
6
- </div>
7
- </div>
8
- </template>
9
-
10
- <script setup lang="ts">
11
-
12
- </script>
13
-
14
- <style lang="scss">
15
- :root {
16
- --primary: #705CFF;
17
- --primary-2: #705CFF60;
18
- --primary-3: #705CFF30;
19
- }
20
- .square-loader {
21
- --s: 20px;
22
- --_d: calc(0.353*var(--s));
23
- width: calc(var(--s) + var(--_d));
24
- aspect-ratio: 1;
25
- display: grid;
26
- &:before,
27
- &:after {
28
- content: "";
29
- grid-area: 1/1;
30
- clip-path: polygon(var(--_d) 0,100% 0,100% calc(100% - var(--_d)),calc(100% - var(--_d)) 100%,0 100%,0 var(--_d));
31
- background: conic-gradient(from -90deg at calc(100% - var(--_d)) var(--_d), var(--primary-3) 135deg, var(--primary) 0 270deg, var(--primary-2) 0);
32
- animation: l6 2s infinite;
33
- }
34
-
35
- &:after {
36
- animation-delay:-1s;
37
- }
38
- }
39
-
40
- @keyframes l6{
41
- 0% {transform:translate(0,0)}
42
- 25% {transform:translate(30px,0)}
43
- 50% {transform:translate(30px,30px)}
44
- 75% {transform:translate(0,30px)}
45
- 100%{transform:translate(0,0)}
46
- }
47
- </style>