edvoyui-component-library-test-flight 0.0.51 → 0.0.53
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/accordion/EUIAccordion.vue.d.ts +1 -1
- package/dist/library-vue-ts.cjs.js +15 -15
- package/dist/library-vue-ts.es.js +5771 -5559
- package/dist/library-vue-ts.umd.js +18 -18
- package/dist/searchInput/EUISearch.vue.d.ts +1 -1
- package/dist/searchexpand/EUISearchExpand.vue.d.ts +5 -0
- package/dist/searchexpand/EUISearchExpand.vue.d.ts.map +1 -0
- package/dist/searchexpand/EUISearchToggle.vue.d.ts +5 -0
- package/dist/searchexpand/EUISearchToggle.vue.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/assets/svg/SearchBigZoomIn.vue +21 -0
- package/src/components/accordion/EUIAccordion.stories.ts +47 -0
- package/src/components/accordion/EUIAccordion.vue +84 -42
- package/src/components/delete.vue +126 -99
- package/src/components/dropdown/EUIMultiDropdown.vue +2 -2
- package/src/components/index.ts +2 -0
- package/src/components/searchInput/EUISearch.vue +11 -3
- package/src/components/searchexpand/EUISearchExpand.vue +109 -0
- package/src/components/searchexpand/EUISearchToggle.vue +90 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from "/Volumes/work/repos/edvoy-ui-v2/src/components/searchInput/EUISearch.vue?vue&type=script&setup=true&lang.ts";
|
|
2
|
-
import "/Volumes/work/repos/edvoy-ui-v2/src/components/searchInput/EUISearch.vue?vue&type=style&index=0&scoped=
|
|
2
|
+
import "/Volumes/work/repos/edvoy-ui-v2/src/components/searchInput/EUISearch.vue?vue&type=style&index=0&scoped=6bdd4db3&lang.css";
|
|
3
3
|
declare const _default: any;
|
|
4
4
|
export default _default;
|
|
5
5
|
//# sourceMappingURL=EUISearch.vue.d.ts.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from "/Volumes/work/repos/edvoy-ui-v2/src/components/searchexpand/EUISearchExpand.vue?vue&type=script&setup=true&lang.ts";
|
|
2
|
+
import "/Volumes/work/repos/edvoy-ui-v2/src/components/searchexpand/EUISearchExpand.vue?vue&type=style&index=0&scoped=914f602c&lang.css";
|
|
3
|
+
declare const _default: any;
|
|
4
|
+
export default _default;
|
|
5
|
+
//# sourceMappingURL=EUISearchExpand.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EUISearchExpand.vue.d.ts","sourceRoot":"","sources":["../../src/components/searchexpand/EUISearchExpand.vue"],"names":[],"mappings":"AACA,cAAc,oHAAoH,CAAC;AACnI,OAAO,iIAAiI,CAAC;;AAEzI,wBAA0F"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from "/Volumes/work/repos/edvoy-ui-v2/src/components/searchexpand/EUISearchToggle.vue?vue&type=script&setup=true&lang.ts";
|
|
2
|
+
import "/Volumes/work/repos/edvoy-ui-v2/src/components/searchexpand/EUISearchToggle.vue?vue&type=style&index=0&scoped=69488444&lang.css";
|
|
3
|
+
declare const _default: any;
|
|
4
|
+
export default _default;
|
|
5
|
+
//# sourceMappingURL=EUISearchToggle.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EUISearchToggle.vue.d.ts","sourceRoot":"","sources":["../../src/components/searchexpand/EUISearchToggle.vue"],"names":[],"mappings":"AACA,cAAc,oHAAoH,CAAC;AACnI,OAAO,iIAAiI,CAAC;;AAEzI,wBAA0F"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg
|
|
3
|
+
width="24"
|
|
4
|
+
height="24"
|
|
5
|
+
viewBox="0 0 24 24"
|
|
6
|
+
fill="none"
|
|
7
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
8
|
+
>
|
|
9
|
+
<path
|
|
10
|
+
d="M21 21L17.5104 17.5104M17.5104 17.5104C19.0486 15.9722 20 13.8472 20 11.5C20 6.80558 16.1944 3 11.5 3C6.80558 3 3 6.80558 3 11.5C3 16.1944 6.80558 20 11.5 20C13.8472 20 15.9722 19.0486 17.5104 17.5104Z"
|
|
11
|
+
stroke="currentColor"
|
|
12
|
+
stroke-width="2"
|
|
13
|
+
stroke-linecap="round"
|
|
14
|
+
stroke-linejoin="round"
|
|
15
|
+
/>
|
|
16
|
+
</svg>
|
|
17
|
+
</template>
|
|
18
|
+
|
|
19
|
+
<script setup lang="ts"></script>
|
|
20
|
+
|
|
21
|
+
<style scoped></style>
|
|
@@ -20,6 +20,15 @@ const meta: Meta<typeof EUIAccordion> = {
|
|
|
20
20
|
description:
|
|
21
21
|
"Accordion panel default one opened. Next one click close previous another one open",
|
|
22
22
|
},
|
|
23
|
+
accordionStyle: {
|
|
24
|
+
control: "select",
|
|
25
|
+
options: ["grouped", "separated"],
|
|
26
|
+
},
|
|
27
|
+
className: {
|
|
28
|
+
control: "text",
|
|
29
|
+
description:
|
|
30
|
+
"Additional CSS classes for styling the accordion container.",
|
|
31
|
+
},
|
|
23
32
|
},
|
|
24
33
|
} satisfies Meta<typeof EUIAccordion>;
|
|
25
34
|
|
|
@@ -51,6 +60,7 @@ export const Default: Story = {
|
|
|
51
60
|
},
|
|
52
61
|
],
|
|
53
62
|
defaultOpen: [1],
|
|
63
|
+
accordionStyle: "grouped",
|
|
54
64
|
},
|
|
55
65
|
render: (args) => ({
|
|
56
66
|
components: { EUIAccordion },
|
|
@@ -97,6 +107,43 @@ export const AccordionCollopse: Story = {
|
|
|
97
107
|
}),
|
|
98
108
|
};
|
|
99
109
|
|
|
110
|
+
export const AccordionSeparated: Story = {
|
|
111
|
+
args: {
|
|
112
|
+
datas: [
|
|
113
|
+
{
|
|
114
|
+
title: "1.How long does the course take?",
|
|
115
|
+
content:
|
|
116
|
+
"The video content takes more than 4.5 hours. In addition, you can test gained knowledge on 30 quizzes and practical tasks.",
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
title: "2.How long does the course take?",
|
|
120
|
+
content:
|
|
121
|
+
"The video content takes more than 4.5 hours. In addition, you can test gained knowledge on 30 quizzes and practical tasks.",
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
title: "3.How long does the course take?",
|
|
125
|
+
content:
|
|
126
|
+
"The video content takes more than 4.5 hours. In addition, you can test gained knowledge on 30 quizzes and practical tasks.",
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
title: "4.How long does the course take?",
|
|
130
|
+
content:
|
|
131
|
+
"The video content takes more than 4.5 hours. In addition, you can test gained knowledge on 30 quizzes and practical tasks.",
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
defaultOpen: [1],
|
|
135
|
+
collapse: true,
|
|
136
|
+
accordionStyle: "separated",
|
|
137
|
+
},
|
|
138
|
+
render: (args) => ({
|
|
139
|
+
components: { EUIAccordion },
|
|
140
|
+
setup() {
|
|
141
|
+
return { args };
|
|
142
|
+
},
|
|
143
|
+
template: `<EUIAccordion v-bind="args" />`,
|
|
144
|
+
}),
|
|
145
|
+
};
|
|
146
|
+
|
|
100
147
|
export const UseTemplate: Story = {
|
|
101
148
|
args: {
|
|
102
149
|
datas: [
|
|
@@ -1,54 +1,86 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
|
-
<div
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
@click.prevent="onClick(index)"
|
|
9
|
-
class="box-border relative mx-auto my-0 text-base font-normal transition-all duration-150 ease-in-out rounded-lg group hover:bg-gray-100 open:bg-gray-100 open:mb-4 open:last:mb-0"
|
|
3
|
+
<div
|
|
4
|
+
:class="[
|
|
5
|
+
accordionStyle === 'grouped' ? 'p-2 bg-gray-50 rounded-xl' : 'space-y-3',
|
|
6
|
+
'max-w-full transition-all duration-100 ease-in-out',
|
|
7
|
+
]"
|
|
10
8
|
>
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
9
|
+
<details
|
|
10
|
+
v-for="(item, index) in datas"
|
|
11
|
+
:key="`accordion-${index}`"
|
|
12
|
+
:open="openAccordions[index]"
|
|
13
|
+
@click.prevent="onClick(index)"
|
|
14
|
+
:class="[
|
|
15
|
+
accordionStyle === 'grouped'
|
|
16
|
+
? 'rounded-lg hover:bg-gray-100 open:bg-gray-100 open:mb-4 open:last:mb-0'
|
|
17
|
+
: 'bg-white px-8 py-4 rounded-2xl hover:ring-2 hover:ring-purple-500 open:ring-2 ring-purple-700 open:shadow-lg open:shadow-purple-100',
|
|
18
|
+
'box-border relative mx-auto my-0 text-base font-normal transition-colors duration-150 ease-in-out group', className
|
|
19
|
+
]"
|
|
20
|
+
>
|
|
21
|
+
<summary
|
|
22
|
+
:class="[
|
|
23
|
+
accordionStyle === 'grouped'
|
|
24
|
+
? 'p-4'
|
|
25
|
+
: 'group-open:pb-4 justify-center gap-6 group-open:border-b group-open:border-gray-200',
|
|
26
|
+
'flex items-center font-semibold list-none cursor-pointer select-none focus:outline-none',
|
|
27
|
+
]"
|
|
28
|
+
>
|
|
29
|
+
<div
|
|
30
|
+
:class="[
|
|
31
|
+
accordionStyle === 'grouped' ? 'w-11/12' : 'flex-initial w-10/12',
|
|
32
|
+
'text-gray-700 transition-all duration-200 ease-in-out faq-title group-hover:text-gray-900 group-open:text-gray-900',
|
|
33
|
+
]"
|
|
34
|
+
>
|
|
35
|
+
<slot name="title" :item="item">
|
|
36
|
+
{{ item.title }}
|
|
37
|
+
</slot>
|
|
38
|
+
</div>
|
|
39
|
+
<svg
|
|
40
|
+
v-if="accordionStyle === 'grouped'"
|
|
41
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
42
|
+
class="absolute text-gray-700 transition-all duration-150 ease-out pointer-events-none expand-icon group-open:text-gray-900 right-4 group-open:rotate-90"
|
|
43
|
+
width="24"
|
|
44
|
+
height="24"
|
|
45
|
+
viewBox="0 0 24 24"
|
|
46
|
+
stroke-width="2"
|
|
47
|
+
stroke="currentColor"
|
|
48
|
+
fill="none"
|
|
49
|
+
stroke-linecap="round"
|
|
50
|
+
stroke-linejoin="round"
|
|
51
|
+
>
|
|
52
|
+
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
|
53
|
+
<path d="M9 6l6 6l-6 6"></path>
|
|
54
|
+
</svg>
|
|
55
|
+
<div v-else class="flex-1 truncate">
|
|
56
|
+
<div class="flex items-end w-full text-start">
|
|
57
|
+
<slot name="right-icon" :item="item"></slot>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
</summary>
|
|
61
|
+
<div
|
|
62
|
+
:class="[
|
|
63
|
+
accordionStyle === 'grouped' ? 'p-4 pt-1 ' : 'pt-3',
|
|
64
|
+
'font-light text-gray-600',
|
|
65
|
+
]"
|
|
29
66
|
>
|
|
30
|
-
<
|
|
31
|
-
<path d="M9 6l6 6l-6 6"></path>
|
|
32
|
-
</svg>
|
|
33
|
-
</summary>
|
|
34
|
-
<div class="p-4 pt-1 font-light text-gray-600">
|
|
35
|
-
<slot name="content" :item="item">
|
|
67
|
+
<slot name="content" :item="item">
|
|
36
68
|
{{ item.content }}
|
|
37
69
|
</slot>
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
70
|
+
</div>
|
|
71
|
+
</details>
|
|
72
|
+
</div>
|
|
41
73
|
</div>
|
|
42
74
|
</template>
|
|
43
75
|
|
|
44
76
|
<script setup lang="ts">
|
|
45
|
-
import { onMounted, PropType, ref } from
|
|
77
|
+
import { onMounted, PropType, ref } from "vue";
|
|
46
78
|
|
|
47
79
|
const props = defineProps({
|
|
48
80
|
datas: {
|
|
49
81
|
type: Array as PropType<any[]>,
|
|
50
82
|
required: true,
|
|
51
|
-
default: () => []
|
|
83
|
+
default: () => [],
|
|
52
84
|
},
|
|
53
85
|
defaultOpen: {
|
|
54
86
|
type: Array as PropType<number[]>,
|
|
@@ -56,8 +88,16 @@ const props = defineProps({
|
|
|
56
88
|
},
|
|
57
89
|
collapse: {
|
|
58
90
|
type: Boolean,
|
|
59
|
-
default: false
|
|
60
|
-
}
|
|
91
|
+
default: false,
|
|
92
|
+
},
|
|
93
|
+
accordionStyle: {
|
|
94
|
+
type: String as PropType<"grouped" | "separated">,
|
|
95
|
+
default: "grouped",
|
|
96
|
+
},
|
|
97
|
+
className: {
|
|
98
|
+
type: String,
|
|
99
|
+
required: false,
|
|
100
|
+
},
|
|
61
101
|
});
|
|
62
102
|
|
|
63
103
|
const openAccordions = ref<boolean[]>(Array(props.datas.length).fill(false));
|
|
@@ -65,18 +105,20 @@ const openAccordions = ref<boolean[]>(Array(props.datas.length).fill(false));
|
|
|
65
105
|
onMounted(() => {
|
|
66
106
|
props.defaultOpen.forEach((index: number) => {
|
|
67
107
|
if (index >= 0 && index < openAccordions.value.length) {
|
|
68
|
-
openAccordions.value[index] = true;
|
|
108
|
+
openAccordions.value[index] = true; // Open specified accordions
|
|
69
109
|
}
|
|
70
110
|
});
|
|
71
111
|
});
|
|
72
112
|
|
|
73
113
|
const onClick = (index: number) => {
|
|
74
|
-
// openAccordions.value = openAccordions.value.map((isOpen, i) => i === index ? !isOpen : isOpen);
|
|
114
|
+
// openAccordions.value = openAccordions.value.map((isOpen, i) => i === index ? !isOpen : isOpen);
|
|
75
115
|
|
|
76
|
-
if (props.collapse) {
|
|
116
|
+
if (props.collapse) {
|
|
77
117
|
openAccordions.value = openAccordions.value.map((_, i) => i === index);
|
|
78
118
|
} else {
|
|
79
|
-
openAccordions.value = openAccordions.value.map((isOpen, i) =>
|
|
119
|
+
openAccordions.value = openAccordions.value.map((isOpen, i) =>
|
|
120
|
+
i === index ? !isOpen : isOpen
|
|
121
|
+
);
|
|
80
122
|
}
|
|
81
123
|
};
|
|
82
124
|
</script>
|
|
@@ -3,7 +3,26 @@
|
|
|
3
3
|
<div
|
|
4
4
|
class="flex flex-row items-center justify-end max-w-screen-xl gap-6 mx-auto mb-10"
|
|
5
5
|
>
|
|
6
|
-
<
|
|
6
|
+
<div class="flex-1">
|
|
7
|
+
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Ad quibusdam
|
|
8
|
+
illo nisi recusandae impedit nulla possimus, et delectus necessitatibus
|
|
9
|
+
tempora maxime maiores dolores voluptates nemo ratione officia suscipit
|
|
10
|
+
voluptatum iure.
|
|
11
|
+
|
|
12
|
+
{{ "search Data:" + inputSearch + showSearch }}
|
|
13
|
+
</div>
|
|
14
|
+
<div class="inline-flex flex-row gap-2">
|
|
15
|
+
<EUISearchToggle
|
|
16
|
+
v-model:model-value="inputSearch"
|
|
17
|
+
v-model:search-sync="showSearch"
|
|
18
|
+
/>
|
|
19
|
+
<EUIButton color="primary" rounded size="sm" @click="toggleSearch"
|
|
20
|
+
>Close</EUIButton
|
|
21
|
+
>
|
|
22
|
+
</div>
|
|
23
|
+
<div class="relative border border-red-500 rounded-full size-12">
|
|
24
|
+
<div class="absolute top-0 right-0"><EUISearch /></div>
|
|
25
|
+
</div>
|
|
7
26
|
<div>
|
|
8
27
|
<EUITooltip placement="top">
|
|
9
28
|
<template v-slot:default>
|
|
@@ -19,107 +38,107 @@
|
|
|
19
38
|
</div>
|
|
20
39
|
<div class="grid max-w-3xl gap-4 mx-auto mb-6 sm:grid-cols-3">
|
|
21
40
|
<div>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
41
|
+
<EUIDatepicker
|
|
42
|
+
v-model:modelValue="datepickerRange"
|
|
43
|
+
label="Date Min and max"
|
|
44
|
+
placeholder="Select Date here..."
|
|
45
|
+
:range="true"
|
|
46
|
+
required
|
|
47
|
+
:icon="CalendarIcon"
|
|
48
|
+
iconType="startIcon"
|
|
49
|
+
:min-date="minDate"
|
|
50
|
+
:max-date="maxDate"
|
|
51
|
+
/>
|
|
52
|
+
</div>
|
|
53
|
+
<div>
|
|
54
|
+
<EUIDatepicker
|
|
55
|
+
v-model:modelValue="datepickerRange"
|
|
56
|
+
label="Datepicker Range multi"
|
|
57
|
+
placeholder="Select Date here..."
|
|
58
|
+
:range="true"
|
|
59
|
+
:multi-calendars="true"
|
|
60
|
+
required
|
|
61
|
+
:icon="CalendarIcon"
|
|
62
|
+
iconType="startIcon"
|
|
63
|
+
/>
|
|
64
|
+
<EUIButton @click="resetFilter">Reset</EUIButton>
|
|
65
|
+
</div>
|
|
66
|
+
<div>
|
|
67
|
+
<EUIDatepicker
|
|
68
|
+
v-model:modelValue="datepickerRange"
|
|
69
|
+
label="Datepicker Range"
|
|
70
|
+
placeholder="Select Date here..."
|
|
71
|
+
:range="true"
|
|
72
|
+
required
|
|
73
|
+
:icon="CalendarIcon"
|
|
74
|
+
iconType="startIcon"
|
|
75
|
+
/>
|
|
76
|
+
</div>
|
|
77
|
+
<div>
|
|
78
|
+
<EUIDatepicker
|
|
79
|
+
:disabled="false"
|
|
80
|
+
label="Datepicker Single"
|
|
81
|
+
v-model:modelValue="singleDate"
|
|
82
|
+
placeholder="Select your date"
|
|
83
|
+
:readonly="false"
|
|
84
|
+
required
|
|
85
|
+
:icon="CalendarIcon"
|
|
86
|
+
iconType="endIcon"
|
|
87
|
+
/>
|
|
88
|
+
</div>
|
|
89
|
+
<div>
|
|
90
|
+
<EUIDatepicker
|
|
91
|
+
v-model:modelValue="timepicker"
|
|
92
|
+
:disabled="false"
|
|
93
|
+
label="Time Picker"
|
|
94
|
+
placeholder="Select your time"
|
|
95
|
+
:readonly="false"
|
|
96
|
+
required
|
|
97
|
+
:timePicker="true"
|
|
98
|
+
/>
|
|
99
|
+
</div>
|
|
80
100
|
</div>
|
|
81
|
-
</div>
|
|
82
101
|
<div class="grid max-w-3xl gap-4 mx-auto mb-6 sm:grid-cols-3">
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
102
|
+
<div>
|
|
103
|
+
<EUIDatepicker
|
|
104
|
+
v-model:modelValue="datepickerRange"
|
|
105
|
+
label="Datepicker Range"
|
|
106
|
+
placeholder="Select Date here..."
|
|
107
|
+
:range="true"
|
|
108
|
+
required
|
|
109
|
+
inputFilled
|
|
110
|
+
:icon="CalendarIcon"
|
|
111
|
+
iconType="startIcon"
|
|
112
|
+
/>
|
|
113
|
+
</div>
|
|
95
114
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
115
|
+
<div>
|
|
116
|
+
<EUIDatepicker
|
|
117
|
+
:disabled="false"
|
|
118
|
+
label="Datepicker Single"
|
|
119
|
+
v-model:modelValue="singleDate"
|
|
120
|
+
placeholder="Select your date"
|
|
121
|
+
:readonly="false"
|
|
122
|
+
required
|
|
123
|
+
inputFilled
|
|
124
|
+
:icon="CalendarIcon"
|
|
125
|
+
iconType="endIcon"
|
|
126
|
+
/>
|
|
127
|
+
</div>
|
|
109
128
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
129
|
+
<div>
|
|
130
|
+
<EUIDatepicker
|
|
131
|
+
v-model:modelValue="timepicker"
|
|
132
|
+
:disabled="false"
|
|
133
|
+
label="Time Picker"
|
|
134
|
+
placeholder="Select your time"
|
|
135
|
+
:readonly="false"
|
|
136
|
+
:timePicker="true"
|
|
137
|
+
required
|
|
138
|
+
inputFilled
|
|
139
|
+
/>
|
|
140
|
+
</div>
|
|
121
141
|
</div>
|
|
122
|
-
</div>
|
|
123
142
|
|
|
124
143
|
<EUITable
|
|
125
144
|
:checkable="true"
|
|
@@ -172,6 +191,7 @@ import EUISearch from "./searchInput/EUISearch.vue";
|
|
|
172
191
|
import EUIDatepicker from "./datepicker/EUIDatepicker.vue";
|
|
173
192
|
import { CalendarIcon } from "@heroicons/vue/24/solid";
|
|
174
193
|
import EUIButton from "./button/EUIButton.vue";
|
|
194
|
+
import EUISearchToggle from "./searchexpand/EUISearchToggle.vue";
|
|
175
195
|
|
|
176
196
|
// TODO: Datepicker
|
|
177
197
|
const datepickerRange = ref([
|
|
@@ -181,6 +201,13 @@ const datepickerRange = ref([
|
|
|
181
201
|
|
|
182
202
|
const singleDate = ref(new Date());
|
|
183
203
|
|
|
204
|
+
const inputSearch = ref("");
|
|
205
|
+
const showSearch = ref(true);
|
|
206
|
+
|
|
207
|
+
const toggleSearch = () => {
|
|
208
|
+
showSearch.value = !showSearch.value;
|
|
209
|
+
};
|
|
210
|
+
|
|
184
211
|
const timepicker = ref({
|
|
185
212
|
hours: new Date().getHours(),
|
|
186
213
|
minutes: new Date().getMinutes(),
|
|
@@ -223,8 +250,8 @@ const onSort = (field: string, order: string) => {
|
|
|
223
250
|
};
|
|
224
251
|
|
|
225
252
|
const resetFilter = () => {
|
|
226
|
-
datepickerRange.value
|
|
227
|
-
}
|
|
253
|
+
datepickerRange.value = [];
|
|
254
|
+
};
|
|
228
255
|
|
|
229
256
|
const minDate = ref(new Date(2024, 11));
|
|
230
257
|
const maxDate = ref(new Date());
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
</slot>
|
|
18
18
|
</button>
|
|
19
19
|
<!-- Menu lists -->
|
|
20
|
-
<div v-if="isOpen && menuItems.length" class="absolute left-0 z-0 p-2 mt-1 transition-all duration-300 ease-in-out bg-white border border-gray-200 border-solid rounded-lg shadow-2xl top-full shadow-gray-300 min-w-
|
|
20
|
+
<div v-if="isOpen && menuItems.length" class="absolute left-0 z-0 p-2 mt-1 transition-all duration-300 ease-in-out bg-white border border-gray-200 border-solid rounded-lg shadow-2xl top-full shadow-gray-300 min-w-32 max-w-64 w-max" @click.stop>
|
|
21
21
|
<div
|
|
22
22
|
v-for="item in menuItems"
|
|
23
23
|
:key="item.text"
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
<!-- Sub-menu lists-->
|
|
39
|
-
<div v-if="item.subMenu && activeMenuItem === item.text" class="absolute top-0 z-10 transition-all duration-300 ease-in-out left-full min-w-36 max-w-64
|
|
39
|
+
<div v-if="item.subMenu && activeMenuItem === item.text" class="absolute top-0 z-10 transition-all duration-300 ease-in-out left-full min-w-36 max-w-64">
|
|
40
40
|
<div class="bg-white border border-gray-200 border-solid rounded-lg shadow-2xl ms-2 shadow-gray-300">
|
|
41
41
|
<div v-if="item.enableAction" class="flex items-center justify-center w-full gap-1 px-6 py-3 text-sm font-medium text-gray-900 bg-purple-100 rounded-t-md" @click.prevent="$emit('actionItem', 'action')">
|
|
42
42
|
<slot name="actionName">{{ '+ Action Name' }}</slot>
|
package/src/components/index.ts
CHANGED
|
@@ -43,3 +43,5 @@ export { default as EUIErrorMessage } from "./errorMessage/EUIErrorMessage.vue";
|
|
|
43
43
|
|
|
44
44
|
export { default as EUITooltip } from "./tooltip/EUITooltip.vue";
|
|
45
45
|
export { default as EUISearch } from "./searchInput/EUISearch.vue";
|
|
46
|
+
export { default as EUISearchExpand } from "./searchexpand/EUISearchExpand.vue";
|
|
47
|
+
export { default as EUISearchToggle } from "./searchexpand/EUISearchToggle.vue";
|
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
v-model="searchQuery"
|
|
16
16
|
type="search"
|
|
17
17
|
placeholder="Search here..."
|
|
18
|
-
class="text-sm font-medium bg-transparent w-96 ps-12 pe-2 focus:outline-none"
|
|
18
|
+
class="text-sm font-medium bg-transparent w-96 ps-12 pe-2 focus:outline-none min-h-9"
|
|
19
19
|
autofocus="true"
|
|
20
20
|
@input="handleSearch"
|
|
21
21
|
@blur="closeDropdown"
|
|
22
22
|
@focus="showDropdownResult = true"
|
|
23
23
|
/>
|
|
24
24
|
<div
|
|
25
|
-
v-if="isExpanded"
|
|
25
|
+
v-if="menuDropdown && isExpanded"
|
|
26
26
|
ref="dropdownButton"
|
|
27
27
|
:open="isOpen"
|
|
28
28
|
class="flex items-center pl-3 pe-2 py-1.5 ml-auto bg-white cursor-pointer rounded-3xl ring-1 ring-gray-200/40 select-none transition-all duration-300 ease-in delay-100"
|
|
@@ -90,12 +90,20 @@
|
|
|
90
90
|
<script lang="ts" setup>
|
|
91
91
|
import { MagnifyingGlassIcon } from "@heroicons/vue/24/solid";
|
|
92
92
|
import { createPopper } from "@popperjs/core";
|
|
93
|
-
import { computed, onBeforeUnmount, onMounted, ref } from "vue";
|
|
93
|
+
import { computed, onBeforeUnmount, onMounted, ref, toRefs } from "vue";
|
|
94
94
|
import ChevronDownStroke from "../../assets/svg/ChevronDownStroke.vue";
|
|
95
95
|
import Student from "../../assets/svg/Student.vue";
|
|
96
96
|
import Partner from "../../assets/svg/partner.vue";
|
|
97
97
|
import People from "../../assets/svg/people.vue";
|
|
98
98
|
|
|
99
|
+
const props = defineProps({
|
|
100
|
+
menuDropdown: {
|
|
101
|
+
type: Boolean,
|
|
102
|
+
default: false
|
|
103
|
+
}
|
|
104
|
+
})
|
|
105
|
+
const {menuDropdown }= toRefs(props);
|
|
106
|
+
|
|
99
107
|
const isExpanded = ref(false);
|
|
100
108
|
const dropdownButton = ref<HTMLElement | null>(null);
|
|
101
109
|
const dropdown = ref<HTMLElement | null>(null);
|