edvoyui-component-library-test-flight 0.0.22 → 0.0.24

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 (125) hide show
  1. package/dist/EUIButton.vue.d.ts.map +1 -0
  2. package/dist/inputNormal/EUIInputNormal.vue.d.ts.map +1 -0
  3. package/dist/library-vue-ts.cjs.js +1 -0
  4. package/dist/library-vue-ts.es.js +1 -0
  5. package/dist/library-vue-ts.umd.js +1 -0
  6. package/package.json +16 -13
  7. package/src/App.vue +16 -0
  8. package/src/assets/fonts/gilroy/GilroyBold/font.woff +0 -0
  9. package/src/assets/fonts/gilroy/GilroyBold/font.woff2 +0 -0
  10. package/src/assets/fonts/gilroy/GilroyBoldItalic/font.woff +0 -0
  11. package/src/assets/fonts/gilroy/GilroyBoldItalic/font.woff2 +0 -0
  12. package/src/assets/fonts/gilroy/GilroyExtraBold/font.woff +0 -0
  13. package/src/assets/fonts/gilroy/GilroyExtraBold/font.woff2 +0 -0
  14. package/src/assets/fonts/gilroy/GilroyExtraBoldItalic/font.woff +0 -0
  15. package/src/assets/fonts/gilroy/GilroyExtraBoldItalic/font.woff2 +0 -0
  16. package/src/assets/fonts/gilroy/GilroyMedium/font.woff +0 -0
  17. package/src/assets/fonts/gilroy/GilroyMedium/font.woff2 +0 -0
  18. package/src/assets/fonts/gilroy/GilroyRegular/font.woff +0 -0
  19. package/src/assets/fonts/gilroy/GilroyRegular/font.woff2 +0 -0
  20. package/src/assets/fonts/gilroy/GilroySemiBold/font.woff +0 -0
  21. package/src/assets/fonts/gilroy/GilroySemiBold/font.woff2 +0 -0
  22. package/src/assets/fonts/inter/Inter-Bold.woff +0 -0
  23. package/src/assets/fonts/inter/Inter-Bold.woff2 +0 -0
  24. package/src/assets/fonts/inter/Inter-Italic.woff +0 -0
  25. package/src/assets/fonts/inter/Inter-Italic.woff2 +0 -0
  26. package/src/assets/fonts/inter/Inter-Medium.woff +0 -0
  27. package/src/assets/fonts/inter/Inter-Medium.woff2 +0 -0
  28. package/src/assets/fonts/inter/Inter-MediumItalic.woff +0 -0
  29. package/src/assets/fonts/inter/Inter-MediumItalic.woff2 +0 -0
  30. package/src/assets/fonts/inter/Inter-Regular.woff +0 -0
  31. package/src/assets/fonts/inter/Inter-Regular.woff2 +0 -0
  32. package/src/assets/fonts/inter/Inter-SemiBold.woff +0 -0
  33. package/src/assets/fonts/inter/Inter-SemiBold.woff2 +0 -0
  34. package/src/assets/fonts/inter/Inter-SemiBoldItalic.woff +0 -0
  35. package/src/assets/fonts/inter/Inter-SemiBoldItalic.woff2 +0 -0
  36. package/src/assets/scss/body.scss +15 -0
  37. package/src/assets/svg/ChevronDownSolid.vue +19 -0
  38. package/src/assets/svg/ChevronDownStroke.vue +22 -0
  39. package/src/assets/svg/SortArrow.vue +24 -0
  40. package/src/assets/svg/Student.vue +30 -0
  41. package/src/assets/svg/partner.vue +33 -0
  42. package/src/assets/svg/people.vue +25 -0
  43. package/src/assets/vue.svg +1 -0
  44. package/src/components/HelloWorld.vue +999 -0
  45. package/src/components/accordion/EUIAccordion.stories.ts +157 -0
  46. package/src/components/accordion/EUIAccordion.vue +90 -0
  47. package/src/components/avatar/EUIAvatar.stories.ts +157 -0
  48. package/src/components/avatar/EUIAvatar.vue +96 -0
  49. package/src/components/button/EUIButton.stories.ts +252 -0
  50. package/src/components/button/EUIButton.vue +151 -0
  51. package/src/components/checkbox/EUICheckbox.stories.ts +58 -0
  52. package/src/components/checkbox/EUICheckbox.vue +103 -0
  53. package/src/components/datepicker/EUIDatepicker.stories.ts +280 -0
  54. package/src/components/datepicker/EUIDatepicker.vue +192 -0
  55. package/src/components/delete.vue +158 -0
  56. package/src/components/dropdown/EUIMultiDropdown.stories.ts +187 -0
  57. package/src/components/dropdown/EUIMultiDropdown.vue +129 -0
  58. package/src/components/errorMessage/EUIErrorMessage.scss +0 -0
  59. package/src/components/errorMessage/EUIErrorMessage.stories.ts +41 -0
  60. package/src/components/errorMessage/EUIErrorMessage.vue +25 -0
  61. package/src/components/index.ts +46 -0
  62. package/src/components/input/EUIInput.stories.ts +174 -0
  63. package/src/components/input/EUIInput.vue +169 -0
  64. package/src/components/inputNormal/EUIInputNormal.stories.ts +164 -0
  65. package/src/components/inputNormal/EUIInputNormal.vue +161 -0
  66. package/src/components/loader/EUICircleLoader.vue +31 -0
  67. package/src/components/loader/EUICubeLoader.vue +237 -0
  68. package/src/components/loader/EUILoader.stories.ts +99 -0
  69. package/src/components/loader/EUILoader.vue +17 -0
  70. package/src/components/loader/EUISquareLoader.vue +47 -0
  71. package/src/components/modal/EUIModal.stories.ts +372 -0
  72. package/src/components/modal/EUIModal.vue +163 -0
  73. package/src/components/pillSelect/EUIPillSelect.stories.ts +74 -0
  74. package/src/components/pillSelect/EUIPillSelect.vue +149 -0
  75. package/src/components/popover/EUIPopover.stories.ts +247 -0
  76. package/src/components/popover/EUIPopover.vue +159 -0
  77. package/src/components/radio/EUIRadio.stories.ts +54 -0
  78. package/src/components/radio/EUIRadio.vue +78 -0
  79. package/src/components/searchInput/EUISearch.stories.ts +24 -0
  80. package/src/components/searchInput/EUISearch.vue +215 -0
  81. package/src/components/select/EUISelect.scss +0 -0
  82. package/src/components/select/EUISelect.stories.ts +49 -0
  83. package/src/components/select/EUISelect.vue +682 -0
  84. package/src/components/selectSearch/EUISelectSearch.vue +23 -0
  85. package/src/components/slideover/EUISlideover.stories.ts +318 -0
  86. package/src/components/slideover/EUISlideover.vue +207 -0
  87. package/src/components/stepperTimeline/EUIStepperHorizontal.vue +112 -0
  88. package/src/components/stepperTimeline/EUIStepperTimeline.stories.ts +54 -0
  89. package/src/components/stepperTimeline/EUIStepperTimeline.vue +16 -0
  90. package/src/components/stepperTimeline/EUIStepperVertical.vue +112 -0
  91. package/src/components/table/EUIDashboardTable.vue +482 -0
  92. package/src/components/table/EUIPageLimit.vue +66 -0
  93. package/src/components/table/EUIPagination.vue +175 -0
  94. package/src/components/table/EUIStudentPagination.vue +172 -0
  95. package/src/components/table/EUITable.stories.ts +190 -0
  96. package/src/components/table/EUITable.vue +508 -0
  97. package/src/components/table/EUITableCheckbox.vue +97 -0
  98. package/src/components/tabs/EUITabs.vue +128 -0
  99. package/src/components/tabs/EUItabs.stories.ts +123 -0
  100. package/src/components/tag/EUITag.stories.ts +46 -0
  101. package/src/components/tag/EUITag.vue +46 -0
  102. package/src/components/telephone/EUITelephone.stories.ts +202 -0
  103. package/src/components/telephone/EUITelephone.vue +280 -0
  104. package/src/components/textArea/EUITextArea.stories.ts +82 -0
  105. package/src/components/textArea/EUITextArea.vue +122 -0
  106. package/src/components/timeLine/EUITimeLine.stories.ts +247 -0
  107. package/src/components/timeLine/EUITimeLine.vue +43 -0
  108. package/src/components/timeLine/EUITimeLineItem.vue +124 -0
  109. package/src/components/toggle/EUIToggle.stories.ts +63 -0
  110. package/src/components/toggle/EUIToggle.vue +99 -0
  111. package/src/components/tooltip/EUITooltip.stories.ts +53 -0
  112. package/src/components/tooltip/EUITooltip.vue +108 -0
  113. package/src/data/books.ts +163 -0
  114. package/src/data/tab.ts +33 -0
  115. package/src/data/table.ts +5392 -0
  116. package/src/main.ts +5 -0
  117. package/src/utils/lodash.ts +9 -0
  118. package/src/utils/types.ts +9 -0
  119. package/src/vite-env.d.ts +5 -0
  120. package/dist/EUIInputNormal.vue.d.ts.map +0 -1
  121. package/dist/button/EUIButton.vue.d.ts.map +0 -1
  122. package/dist/library-vue-ts.css +0 -1
  123. /package/dist/{button/EUIButton.vue.d.ts → EUIButton.vue.d.ts} +0 -0
  124. /package/dist/{EUIInputNormal.vue.d.ts → inputNormal/EUIInputNormal.vue.d.ts} +0 -0
  125. /package/{dist → src}/style.scss +0 -0
@@ -0,0 +1,280 @@
1
+ import type { Meta, StoryObj } from "@storybook/vue3";
2
+ import EUIDatepicker from "./EUIDatepicker.vue";
3
+ import { ref } from "vue";
4
+ import { CalendarDaysIcon } from "@heroicons/vue/24/outline";
5
+
6
+ // Meta configuration for the component's stories
7
+ const meta = {
8
+ title: "Forms/Datepicker",
9
+ component: EUIDatepicker,
10
+ tags: ["autodocs"],
11
+ argTypes: {
12
+ modelValue: {
13
+ control: "date",
14
+ description: "The selected date value of the datepicker.",
15
+ },
16
+ name: {
17
+ control: "text",
18
+ description:
19
+ "Name for the Validation of Datepicker field, used for identification.",
20
+ },
21
+ label: {
22
+ control: "text",
23
+ description:
24
+ "Label for the datepicker field that is displayed above the input.",
25
+ },
26
+ placeholder: {
27
+ control: "text",
28
+ description:
29
+ "Placeholder text shown inside the datepicker input when no date is selected.",
30
+ },
31
+ errors: {
32
+ control: "object",
33
+ description:
34
+ "Object containing validation errors. The keys are field names, and the values are the corresponding error messages.",
35
+ },
36
+ range: {
37
+ control: "boolean",
38
+ description:
39
+ "Enables date range selection, allowing users to pick a start and end date.",
40
+ defaultValue: false,
41
+ },
42
+ timePicker: {
43
+ control: "boolean",
44
+ description: "Allows time selection in addition to the date if true.",
45
+ },
46
+ required: {
47
+ control: "boolean",
48
+ description: "Marks the datepicker as a required field.",
49
+ },
50
+ readonly: {
51
+ control: "boolean",
52
+ description: "Makes the datepicker read-only, preventing date selection.",
53
+ },
54
+ disabled: {
55
+ control: "boolean",
56
+ description:
57
+ "Disables the datepicker, making it uneditable and unclickable.",
58
+ },
59
+ iconType: {
60
+ control: "select",
61
+ options: ["", "startIcon", "endIcon"],
62
+ description:
63
+ "The position of the icon to be displayed either at the start or end of the input field.",
64
+ },
65
+ icon: {
66
+ control: { type: "text" },
67
+ description: "Sets an SVG icon inside the datepicker input field.",
68
+ },
69
+ isUtc: {
70
+ control: "boolean",
71
+ description:
72
+ "Sets the selected date in UTC format if true, otherwise in local time.",
73
+ },
74
+ clearIcon: {
75
+ control: "boolean",
76
+ description:
77
+ "Shows a clear icon inside the datepicker to reset the date.",
78
+ },
79
+ disableDate: {
80
+ control: "boolean",
81
+ description:
82
+ "Disables past dates if true, preventing them from being selected.",
83
+ },
84
+ quarter: {
85
+ control: "boolean",
86
+ description: "Enables quarter selection instead of date selection.",
87
+ },
88
+ formatDate: {
89
+ control: "boolean",
90
+ description:
91
+ "Formats the displayed date value; if true, a formatted date string is shown.",
92
+ },
93
+ },
94
+ } satisfies Meta<typeof EUIDatepicker>;
95
+
96
+ export default meta;
97
+ type Story = StoryObj<typeof meta>;
98
+
99
+ // Default story with minimum props
100
+ export const Default: Story = {
101
+ args: {
102
+ placeholder: "Select your date",
103
+ label: "Datepicker",
104
+ modelValue: new Date(),
105
+ required: true,
106
+ readonly: false,
107
+ disabled: false,
108
+ errors: {
109
+ message: "Enter valid date format",
110
+ },
111
+ },
112
+ render: (args) => ({
113
+ components: { EUIDatepicker },
114
+ setup() {
115
+ const modelValue = ref(args.modelValue);
116
+ return { args, modelValue };
117
+ },
118
+ template: `<div class="max-w-xl min-h-64"><EUIDatepicker v-bind="args" /></div>`,
119
+ }),
120
+ };
121
+
122
+ export const DateRange: Story = {
123
+ args: {
124
+ placeholder: "Choose your date range...",
125
+ label: "Datepicker",
126
+ range: true,
127
+ required: true,
128
+ readonly: false,
129
+ disabled: false,
130
+ errors: {
131
+ message: "Enter valid date format",
132
+ },
133
+ },
134
+ render: (args) => ({
135
+ components: { EUIDatepicker },
136
+ setup() {
137
+ const startDate = new Date();
138
+ const endDate = new Date(new Date().setDate(startDate.getDate() + 7));
139
+ const datepicker = ref([startDate, endDate]);
140
+ return { args, datepicker };
141
+ },
142
+ template: `<div class="max-w-xl min-h-64"><EUIDatepicker v-bind="args" v-model="datepicker" /></div>`,
143
+ }),
144
+ parameters: {
145
+ docs: {
146
+ source: {
147
+ code: `<script lang="ts" setup>
148
+ const datepickerRange = ref([new Date(), new Date(new Date().setDate(new Date().getDate() + 7))]);
149
+ </script>
150
+ <template>
151
+ <EUIDatepicker
152
+ v-model="datepickerRange"
153
+ label="Datepicker"
154
+ placeholder="Select Date here..."
155
+ :range="true"
156
+ />
157
+ </template>`,
158
+ },
159
+ },
160
+ },
161
+ };
162
+
163
+ export const TimeOnly: Story = {
164
+ args: {
165
+ placeholder: "Select your time",
166
+ label: "Time",
167
+ required: true,
168
+ timePicker: true,
169
+ errors: {
170
+ message: "Enter valid date format",
171
+ },
172
+ },
173
+ render: (args) => ({
174
+ components: { EUIDatepicker },
175
+ setup() {
176
+ const time = ref({
177
+ hours: new Date().getHours(),
178
+ minutes: new Date().getMinutes(),
179
+ });
180
+ const modelValue = ref(time);
181
+ return { args, modelValue };
182
+ },
183
+ template: `<div class="max-w-xl min-h-64"><EUIDatepicker v-bind="args" :modelValue="modelValue" /></div>`,
184
+ }),
185
+ parameters: {
186
+ docs: {
187
+ source: {
188
+ code: `<script lang="ts" setup>
189
+ const time = ref({
190
+ hours: new Date().getHours(),
191
+ minutes: new Date().getMinutes(),
192
+ });
193
+ </script>
194
+ <template>
195
+ <EUIDatepicker
196
+ v-model="time"
197
+ label="Time"
198
+ placeholder="Select your time"
199
+ :timePicker="true"
200
+ />
201
+ </template>`,
202
+ },
203
+ },
204
+ },
205
+ };
206
+
207
+ export const IconUsingStart: Story = {
208
+ args: {
209
+ iconType: "startIcon",
210
+ icon: CalendarDaysIcon,
211
+ },
212
+ render: (args) => ({
213
+ components: { EUIDatepicker, CalendarDaysIcon },
214
+ setup() {
215
+ const modelValue = ref(args.modelValue);
216
+ return { args, modelValue };
217
+ },
218
+ template: `<div class="max-w-xl min-h-64"><EUIDatepicker v-bind="args" /></div>`,
219
+ }),
220
+ parameters: {
221
+ docs: {
222
+ source: {
223
+ code: `<template>
224
+ <EUIDatepicker
225
+ v-model="datepicker"
226
+ :icon="CalendarDaysIcon"
227
+ icon-type="startIcon"
228
+ label="Datepicker"
229
+ placeholder="Select Date here..."
230
+ />
231
+ </template>`,
232
+ },
233
+ },
234
+ },
235
+ };
236
+
237
+ export const IconUsingEnd: Story = {
238
+ args: {
239
+ iconType: "endIcon",
240
+ icon: CalendarDaysIcon,
241
+ },
242
+ render: (args) => ({
243
+ components: { EUIDatepicker, CalendarDaysIcon },
244
+ setup() {
245
+ const modelValue = ref(args.modelValue);
246
+ return { args, modelValue };
247
+ },
248
+ template: `<div class="max-w-xl min-h-64"><EUIDatepicker v-bind="args" /></div>`,
249
+ }),
250
+ parameters: {
251
+ docs: {
252
+ source: {
253
+ code: `<template>
254
+ <EUIDatepicker
255
+ v-model="datepicker"
256
+ :icon="CalendarDaysIcon"
257
+ icon-type="endIcon"
258
+ label="Datepicker"
259
+ placeholder="Select Date here..."
260
+ />
261
+ </template>`,
262
+ },
263
+ },
264
+ },
265
+ };
266
+
267
+ export const DateSelected: Story = {
268
+ args: {
269
+ modelValue: new Date(),
270
+ disabled: false,
271
+ },
272
+ render: (args) => ({
273
+ components: { EUIDatepicker },
274
+ setup() {
275
+ const modelValue = ref(args.modelValue);
276
+ return { args, modelValue };
277
+ },
278
+ template: `<div class="max-w-xl"><EUIDatepicker v-bind="args" v-model="modelValue" @update:modelValue="onUpdateModelValue" /></div>`,
279
+ }),
280
+ };
@@ -0,0 +1,192 @@
1
+ <template>
2
+ <div>
3
+ <div
4
+ :class="disabled ? 'pointer-events-none cursor-not-allowed' : ''"
5
+ class="relative w-full mb-2 overflow-hidden border border-gray-100 cursor-pointer group h-14 rounded-2xl eui-datepicker"
6
+ >
7
+ <label
8
+ :class="[
9
+ getIconClass(),
10
+ datepicker
11
+ ? 'top-3.5 text-xs text-gray-400 leading-none cursor-default'
12
+ : 'top-1/2 text-sm w-full text-gray-700 cursor-pointer h-14 pt-5 pb-4 bg-white ring-1 ring-gray-200',
13
+ disabled ? ' cursor-not-allowed' : '',
14
+ required && `after:content-['*'] after:ml-0.5 after:text-red-500`,
15
+ ]"
16
+ class="absolute font-medium left-0 px-4 z-[1] -translate-y-1/2 duration-200 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-hover:text-xs group-focus-within:ring-transparent group-focus-within:h-auto group-focus-within:py-0 group-hover:top-3.5 group-hover:ring-0 group-hover:ring-transparent group-hover:bg-transparent group-hover:h-auto group-hover:py-0 group-focus-within:-translate-y-1/2 group-hover:-translate-y-1/2 text-start first-letter:capitalize group-hover:rounded-none group-hover:text-gray-400 group-hover:w-max group-hover:transition-colors"
17
+ >
18
+ {{ label }}
19
+ </label>
20
+ <div
21
+ v-if="icon && iconType"
22
+ class="absolute inset-y-0 z-10 flex items-center pointer-events-none"
23
+ :class="[
24
+ iconType === 'startIcon' ? 'left-0 pl-3' : 'right-0 pr-3',
25
+ disabled ? 'cursor-not-allowed' : '',
26
+ ]"
27
+ >
28
+ <component
29
+ :is="icon"
30
+ class="w-6 h-6 text-gray-400"
31
+ aria-hidden="true"
32
+ />
33
+ </div>
34
+ <VueDatePicker
35
+ locale="en-US"
36
+ :name="name"
37
+ :placeholder="placeholder"
38
+ v-model="datepicker"
39
+ :value="modelValue"
40
+ :utc="isUtc"
41
+ :range="range"
42
+ :teleport="true"
43
+ :clearable="clearIcon"
44
+ :required="required"
45
+ :disabled="disabled"
46
+ :readonly="readonly"
47
+ :disabled-dates="disableDate ? disabledDates : undefined"
48
+ :time-picker="timePicker"
49
+ :enable-time-picker="false"
50
+ :enable-seconds="false"
51
+ :is-24="false"
52
+ :dark="false"
53
+ :inline="false"
54
+ :text-input="false"
55
+ auto-apply
56
+ :hide-input-icon="true"
57
+ position="left"
58
+ />
59
+ </div>
60
+ <EUIErrorMessage :errors="errors" :name="name" />
61
+ </div>
62
+ </template>
63
+
64
+ <script setup lang="ts">
65
+ import { computed, PropType, ref, toRefs, watch } from "vue";
66
+ import VueDatePicker from "@vuepic/vue-datepicker";
67
+ import "@vuepic/vue-datepicker/dist/main.css";
68
+
69
+ const props = defineProps({
70
+ modelValue: {
71
+ type: Date as any,
72
+ default: "",
73
+ },
74
+ name: {
75
+ type: String,
76
+ required: false,
77
+ default: "date-picker",
78
+ },
79
+ isUtc: {
80
+ type: Boolean,
81
+ default: true,
82
+ },
83
+ clearIcon: {
84
+ type: Boolean,
85
+ default: true,
86
+ },
87
+ placeholder: {
88
+ type: String,
89
+ default: 'Choose your date',
90
+ },
91
+ label: {
92
+ type: String,
93
+ required: true,
94
+ default: "Datepicker",
95
+ },
96
+ iconType: {
97
+ type: String as PropType<"startIcon" | "endIcon">,
98
+ default: "",
99
+ },
100
+ icon: {
101
+ type: [Object, String],
102
+ default: "",
103
+ },
104
+ errors: { type: Object, required: false, default: () => {} },
105
+ timePicker: Boolean,
106
+ quarter: Boolean,
107
+ disableDate: Boolean,
108
+ formatDate: Boolean,
109
+ readonly: Boolean,
110
+ disabled:Boolean,
111
+ required: Boolean,
112
+ range:Boolean,
113
+ });
114
+ const emit = defineEmits(["update:modelValue"]);
115
+ const { modelValue, isUtc, clearIcon } = toRefs(props);
116
+ const startDate = ref(new Date());
117
+ const endDate = ref(new Date(new Date().setDate(startDate.value.getDate() + 7)));
118
+
119
+ const time = ref({
120
+ hours: new Date().getHours(),
121
+ minutes: new Date().getMinutes()
122
+ });
123
+
124
+ const datepicker = ref( props.modelValue ? props.modelValue : props.timePicker ? time.value : props.range ? [startDate.value, endDate.value] : startDate.value);
125
+
126
+ watch(
127
+ datepicker,
128
+ (newDate) => {
129
+ emit("update:modelValue", newDate);
130
+ }
131
+ );
132
+
133
+ const disabledDates = (date: Date) => {
134
+ const today = new Date();
135
+ today.setHours(0, 0, 0, 0);
136
+ return date < today;
137
+ };
138
+
139
+ const getIconClass = () => {
140
+ switch (props.iconType) {
141
+ case "startIcon":
142
+ return "pl-12 pr-4";
143
+ case "endIcon":
144
+ return "pr-12 pl-4";
145
+ default:
146
+ return "px-4";
147
+ }
148
+ };
149
+
150
+ const iconshowLeft = computed(() => (props.iconType === 'startIcon' ? "46px" : "16px"));
151
+ const iconshowRight = computed(() => (props.iconType === 'endIcon' ? "46px" : "16px"));
152
+ const clearIconRight = computed(() => (props.iconType === 'endIcon' ? '40px' : '0px'));
153
+ </script>
154
+
155
+ <style lang="scss">
156
+ .dp__theme_light {
157
+ --dp-primary-color: rgba(139, 92, 246, 1);
158
+ }
159
+
160
+ .eui-datepicker {
161
+ @apply min-w-56;
162
+ .dp__main {
163
+ .dp__input {
164
+ @apply pb-2 pt-6 border-0 transition-colors duration-100 ease-in-out text-sm font-medium leading-6 placeholder:text-gray-400 placeholder:font-normal;
165
+ padding-left: v-bind(iconshowLeft);
166
+ padding-right: v-bind(iconshowRight);
167
+ }
168
+ .dp__input.dp__input_focus {
169
+ @apply ring-2 ring-purple-600 rounded-2xl ring-inset h-[3.365rem];
170
+ }
171
+ .dp--clear-btn {
172
+ right: v-bind(clearIconRight);
173
+ }
174
+ }
175
+
176
+ .dp__range_end,
177
+ .dp__range_start,
178
+ .dp__active_date {
179
+ background-color: var(--dp-primary-color);
180
+ color: #fff;
181
+ }
182
+
183
+ .dp__today {
184
+ border-color: var(--dp-primary-color);
185
+ }
186
+
187
+ .dp__action_select:hover {
188
+ background-color: var(--dp-primary-color);
189
+ color: #fff;
190
+ }
191
+ }
192
+ </style>
@@ -0,0 +1,158 @@
1
+ <!-- <template>
2
+ <div class="py-4">
3
+ <div
4
+ class="flex flex-row items-center justify-end max-w-screen-xl gap-6 mx-auto mb-10"
5
+ >
6
+ <EUISearch />
7
+
8
+ <div>
9
+ <EUITooltip placement="top">
10
+ <template v-slot:default>
11
+ <button class="px-4 py-2 text-white bg-gray-800 rounded">
12
+ Hover rihgt
13
+ </button>
14
+ </template>
15
+ <template v-slot:tooltip>
16
+ <div>You've got access to canvas. Collaborate with ChatGPT!</div>
17
+ </template>
18
+ </EUITooltip>
19
+ </div>
20
+ </div>
21
+
22
+
23
+ <div class="grid max-w-3xl gap-4 mx-auto sm:grid-cols-3">
24
+ <div>
25
+ <EUIDatepicker
26
+ v-model:modelValue="datepickerRange"
27
+ label="Datepicker Range"
28
+ placeholder="Select Date here..."
29
+ :range="true"
30
+ required
31
+ />
32
+ </div>
33
+
34
+ <div>
35
+ <EUIDatepicker
36
+ :disabled="false"
37
+ label="Datepicker Single"
38
+ v-model:modelValue="singleDate"
39
+ placeholder="Select your date"
40
+ :readonly="false"
41
+ required
42
+ />
43
+ </div>
44
+
45
+ <div>
46
+ <EUIDatepicker
47
+ v-model:modelValue="timepicker"
48
+ :disabled="false"
49
+ label="Time Picker"
50
+ placeholder="Select your time"
51
+ :readonly="false"
52
+ required
53
+ :timePicker="true"
54
+ />
55
+ </div>
56
+ </div>
57
+
58
+ <EUITable
59
+ :checkable="true"
60
+ paginated
61
+ :checked-rows.sync="checkedRows"
62
+ backend-pagination
63
+ :per-page="limit"
64
+ :headers="studentHeader"
65
+ :items="studentData"
66
+ :total="totalCount"
67
+ :default-sort-direction="defaultSortOrder"
68
+ default-sort=""
69
+ :current-page="offset"
70
+ table-height="h-[calc(100svh-20rem)] max-h-[calc(100svh-20rem)]"
71
+ @changePage="onPageChange"
72
+ @changeLimit="onChangeLimit"
73
+ @sort="onSort"
74
+ @mouseenter="select"
75
+ @mouseleave="(selectedIndex = null), (selected = null)"
76
+ >
77
+ <template #[`item.firstName`]="{ row, rowIndex }">
78
+ <div class="space-y-0.5">
79
+ <div class="block text-sm font-medium leading-snug">
80
+ {{
81
+ capitalizeText(row?.firstName) +
82
+ " " +
83
+ capitalizeText(row?.lastName)
84
+ }}
85
+ </div>
86
+ <div class="text-xs font-medium text-gray-900 leading-[normal]">
87
+ {{ row?.referenceId }}
88
+ </div>
89
+ </div>
90
+ </template>
91
+ <template #[`item.activeUser`]="{ row, rowIndex }">
92
+ {{ row?.activeUser?.user?.firstName }}
93
+ {{ row?.activeUser?.user?.lastName }}
94
+ </template>
95
+ </EUITable>
96
+ </div>
97
+ </template>
98
+
99
+ <script setup lang="ts">
100
+ import { computed, ref } from "vue";
101
+ import { studentData, studentHeader, tableData } from "../data/table";
102
+ import { capitalizeText } from "../utils/lodash";
103
+ import EUITable from "./table/EUITable.vue";
104
+ import EUITooltip from "./tooltip/EUITooltip.vue";
105
+ import EUISearch from "./searchInput/EUISearch.vue";
106
+ import EUIDatepicker from "./datepicker/EUIDatepicker.vue";
107
+
108
+ // TODO: Datepicker
109
+ const datepickerRange = ref([
110
+ new Date(),
111
+ new Date(new Date().setDate(new Date().getDate() + 7)),
112
+ ]);
113
+
114
+ const singleDate = ref(new Date());
115
+
116
+ const timepicker = ref({
117
+ hours: new Date().getHours(),
118
+ minutes: new Date().getMinutes(),
119
+ });
120
+
121
+ //TODO: Dashboard Table
122
+ const checkedRows = ref([]);
123
+ const defaultSortOrder = ref("asc");
124
+ const limit = ref(5);
125
+ const offset = ref(0);
126
+ const selectedIndex = ref(null);
127
+ const selected: { index: string } = { index: "" };
128
+
129
+ const totalCount = computed(() => {
130
+ return studentData.length;
131
+ });
132
+
133
+ const select = (_item: any, index: any) => {
134
+ selectedIndex.value = index;
135
+ };
136
+
137
+ // onChangeLimit
138
+ const onChangeLimit = (page: number) => {
139
+ limit.value = page;
140
+ console.log("@onChangeLimit:", page);
141
+ };
142
+
143
+ const onPageChange = (offsetData: number) => {
144
+ offset.value = offsetData;
145
+ console.log("@changePage:", offsetData);
146
+ };
147
+
148
+ const onSort = (field: string, order: string) => {
149
+ const modifier = order === "desc" ? -1 : 1;
150
+ tableData.sort((a: any, b: any) => {
151
+ if (a[field] < b[field]) return -1 * modifier;
152
+ if (a[field] > b[field]) return 1 * modifier;
153
+ return 0;
154
+ });
155
+ };
156
+ </script>
157
+
158
+ <style scoped></style> -->