edvoyui-component-library-test-flight 0.0.183 → 0.0.185

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 (225) hide show
  1. package/README.md +57 -8
  2. package/dist/EUIButton.vue.d.ts.map +1 -0
  3. package/dist/EUIButtonGroup.vue.d.ts.map +1 -0
  4. package/dist/edvoy-ui.cjs.js +28 -28
  5. package/dist/edvoy-ui.es.js +1262 -1273
  6. package/dist/edvoy-ui.umd.js +28 -28
  7. package/dist/tabs/EUITabs.vue.d.ts +1 -1
  8. package/package.json +18 -17
  9. package/dist/button/EUIButton.vue.d.ts.map +0 -1
  10. package/dist/button/EUIButtonGroup.vue.d.ts.map +0 -1
  11. package/src/App.vue +0 -16
  12. package/src/App.vue.js.map +0 -1
  13. package/src/assets/fonts/gilroy/GilroyBold/font.woff +0 -0
  14. package/src/assets/fonts/gilroy/GilroyBold/font.woff2 +0 -0
  15. package/src/assets/fonts/gilroy/GilroyBoldItalic/font.woff +0 -0
  16. package/src/assets/fonts/gilroy/GilroyBoldItalic/font.woff2 +0 -0
  17. package/src/assets/fonts/gilroy/GilroyExtraBold/font.woff +0 -0
  18. package/src/assets/fonts/gilroy/GilroyExtraBold/font.woff2 +0 -0
  19. package/src/assets/fonts/gilroy/GilroyExtraBoldItalic/font.woff +0 -0
  20. package/src/assets/fonts/gilroy/GilroyExtraBoldItalic/font.woff2 +0 -0
  21. package/src/assets/fonts/gilroy/GilroyMedium/font.woff +0 -0
  22. package/src/assets/fonts/gilroy/GilroyMedium/font.woff2 +0 -0
  23. package/src/assets/fonts/gilroy/GilroyRegular/font.woff +0 -0
  24. package/src/assets/fonts/gilroy/GilroyRegular/font.woff2 +0 -0
  25. package/src/assets/fonts/gilroy/GilroySemiBold/font.woff +0 -0
  26. package/src/assets/fonts/gilroy/GilroySemiBold/font.woff2 +0 -0
  27. package/src/assets/fonts/inter/Inter-Bold.woff +0 -0
  28. package/src/assets/fonts/inter/Inter-Bold.woff2 +0 -0
  29. package/src/assets/fonts/inter/Inter-Italic.woff +0 -0
  30. package/src/assets/fonts/inter/Inter-Italic.woff2 +0 -0
  31. package/src/assets/fonts/inter/Inter-Medium.woff +0 -0
  32. package/src/assets/fonts/inter/Inter-Medium.woff2 +0 -0
  33. package/src/assets/fonts/inter/Inter-MediumItalic.woff +0 -0
  34. package/src/assets/fonts/inter/Inter-MediumItalic.woff2 +0 -0
  35. package/src/assets/fonts/inter/Inter-Regular.woff +0 -0
  36. package/src/assets/fonts/inter/Inter-Regular.woff2 +0 -0
  37. package/src/assets/fonts/inter/Inter-SemiBold.woff +0 -0
  38. package/src/assets/fonts/inter/Inter-SemiBold.woff2 +0 -0
  39. package/src/assets/fonts/inter/Inter-SemiBoldItalic.woff +0 -0
  40. package/src/assets/fonts/inter/Inter-SemiBoldItalic.woff2 +0 -0
  41. package/src/assets/images/search-nodata.png +0 -0
  42. package/src/assets/scss/body.scss +0 -25
  43. package/src/assets/svg/CheckTick.vue +0 -21
  44. package/src/assets/svg/CheckTick.vue.js.map +0 -1
  45. package/src/assets/svg/ChevronBigDown.vue +0 -22
  46. package/src/assets/svg/ChevronBigDown.vue.js.map +0 -1
  47. package/src/assets/svg/ChevronDownSolid.vue +0 -19
  48. package/src/assets/svg/ChevronDownSolid.vue.js.map +0 -1
  49. package/src/assets/svg/ChevronDownStroke.vue +0 -22
  50. package/src/assets/svg/ChevronDownStroke.vue.js.map +0 -1
  51. package/src/assets/svg/ChevronDownStrokeSolid.vue +0 -19
  52. package/src/assets/svg/ChevronDownStrokeSolid.vue.js.map +0 -1
  53. package/src/assets/svg/SearchBigZoomIn.vue +0 -21
  54. package/src/assets/svg/SearchBigZoomIn.vue.js.map +0 -1
  55. package/src/assets/svg/SortArrow.vue +0 -24
  56. package/src/assets/svg/SortArrow.vue.js.map +0 -1
  57. package/src/assets/svg/Student.vue +0 -30
  58. package/src/assets/svg/Student.vue.js.map +0 -1
  59. package/src/assets/svg/partner.vue +0 -33
  60. package/src/assets/svg/partner.vue.js.map +0 -1
  61. package/src/assets/svg/people.vue +0 -25
  62. package/src/assets/svg/people.vue.js.map +0 -1
  63. package/src/assets/vue.svg +0 -1
  64. package/src/components/HelloWorld.vue +0 -1974
  65. package/src/components/HelloWorld.vue.js.map +0 -1
  66. package/src/components/accordion/EUIAccordion.stories.ts +0 -204
  67. package/src/components/accordion/EUIAccordion.vue +0 -152
  68. package/src/components/accordion/EUIAccordion.vue.js.map +0 -1
  69. package/src/components/alerts/EUIAlerts.stories.ts +0 -217
  70. package/src/components/alerts/EUIAlerts.vue +0 -194
  71. package/src/components/alerts/EUIAlerts.vue.js.map +0 -1
  72. package/src/components/avatar/EUIAvatar.stories.ts +0 -157
  73. package/src/components/avatar/EUIAvatar.vue +0 -96
  74. package/src/components/avatar/EUIAvatar.vue.js.map +0 -1
  75. package/src/components/breadcrumb/EUIBreadcrumb.stories.ts +0 -75
  76. package/src/components/breadcrumb/EUIBreadcrumb.vue +0 -59
  77. package/src/components/breadcrumb/EUIBreadcrumb.vue.js.map +0 -1
  78. package/src/components/button/EUIButton.stories.ts +0 -270
  79. package/src/components/button/EUIButton.vue +0 -154
  80. package/src/components/button/EUIButton.vue.js.map +0 -1
  81. package/src/components/button/EUIButtonGroup.vue +0 -287
  82. package/src/components/button/EUIButtonGroup.vue.js.map +0 -1
  83. package/src/components/button/buttonAnimateTab.vue +0 -74
  84. package/src/components/button/buttonAnimateTab.vue.js.map +0 -1
  85. package/src/components/checkbox/EUICheckbox.stories.ts +0 -58
  86. package/src/components/checkbox/EUICheckbox.vue +0 -110
  87. package/src/components/checkbox/EUICheckbox.vue.js.map +0 -1
  88. package/src/components/datepicker/EUIDatepicker.stories.ts +0 -492
  89. package/src/components/datepicker/EUIDatepicker.vue +0 -295
  90. package/src/components/datepicker/EUIDatepicker.vue.js.map +0 -1
  91. package/src/components/delete.vue +0 -262
  92. package/src/components/delete.vue.js.map +0 -1
  93. package/src/components/dragModal/EUIDrag.vue +0 -179
  94. package/src/components/dragModal/EUIDrag.vue.js.map +0 -1
  95. package/src/components/dropdown/EUIMultiDropdown.stories.ts +0 -294
  96. package/src/components/dropdown/EUIMultiDropdown.vue +0 -187
  97. package/src/components/dropdown/EUIMultiDropdown.vue.js.map +0 -1
  98. package/src/components/errorMessage/EUIErrorMessage.scss +0 -0
  99. package/src/components/errorMessage/EUIErrorMessage.stories.ts +0 -41
  100. package/src/components/errorMessage/EUIErrorMessage.vue +0 -25
  101. package/src/components/errorMessage/EUIErrorMessage.vue.js.map +0 -1
  102. package/src/components/index.js.map +0 -1
  103. package/src/components/index.ts +0 -61
  104. package/src/components/input/EUIInput.stories.ts +0 -387
  105. package/src/components/input/EUIInput.vue +0 -223
  106. package/src/components/input/EUIInput.vue.js.map +0 -1
  107. package/src/components/input/EUINumberInput.vue +0 -250
  108. package/src/components/loader/EUICircleLoader.vue +0 -31
  109. package/src/components/loader/EUICircleLoader.vue.js.map +0 -1
  110. package/src/components/loader/EUICubeLoader.vue +0 -237
  111. package/src/components/loader/EUICubeLoader.vue.js.map +0 -1
  112. package/src/components/loader/EUILoader.stories.ts +0 -99
  113. package/src/components/loader/EUILoader.vue +0 -17
  114. package/src/components/loader/EUILoader.vue.js.map +0 -1
  115. package/src/components/loader/EUISquareLoader.vue +0 -47
  116. package/src/components/loader/EUISquareLoader.vue.js.map +0 -1
  117. package/src/components/modal/EUIModal.stories.ts +0 -412
  118. package/src/components/modal/EUIModal.vue +0 -228
  119. package/src/components/modal/EUIModal.vue.js.map +0 -1
  120. package/src/components/pillSelect/EUIPillSelect.stories.ts +0 -74
  121. package/src/components/pillSelect/EUIPillSelect.vue +0 -149
  122. package/src/components/pillSelect/EUIPillSelect.vue.js.map +0 -1
  123. package/src/components/popover/EUIPopover.stories.ts +0 -306
  124. package/src/components/popover/EUIPopover.vue +0 -297
  125. package/src/components/popover/EUIPopover.vue.js.map +0 -1
  126. package/src/components/radio/EUIRadio.stories.ts +0 -54
  127. package/src/components/radio/EUIRadio.vue +0 -75
  128. package/src/components/radio/EUIRadio.vue.js.map +0 -1
  129. package/src/components/searchInput/EUISearch.stories.ts +0 -24
  130. package/src/components/searchInput/EUISearch.vue +0 -223
  131. package/src/components/searchInput/EUISearch.vue.js.map +0 -1
  132. package/src/components/searchTagSelect/EUISearchTagSelect.stories.ts +0 -217
  133. package/src/components/searchTagSelect/EUISearchTagSelect.vue +0 -642
  134. package/src/components/searchTagSelect/EUISearchTagSelect.vue.js.map +0 -1
  135. package/src/components/searchTagSelect/SearchInput.vue +0 -167
  136. package/src/components/searchTagSelect/SearchInput.vue.js.map +0 -1
  137. package/src/components/searchexpand/EUISearchExpand.vue +0 -148
  138. package/src/components/searchexpand/EUISearchExpand.vue.js.map +0 -1
  139. package/src/components/searchexpand/EUISearchToggle.vue +0 -86
  140. package/src/components/searchexpand/EUISearchToggle.vue.js.map +0 -1
  141. package/src/components/select/EUISelect.stories.ts +0 -101
  142. package/src/components/select/EUISelect.vue +0 -1092
  143. package/src/components/select/EUISelect.vue.js.map +0 -1
  144. package/src/components/slideover/EUISlideover.stories.ts +0 -318
  145. package/src/components/slideover/EUISlideover.vue +0 -212
  146. package/src/components/slideover/EUISlideover.vue.js.map +0 -1
  147. package/src/components/stepperTimeline/EUIStepperHorizontal.vue +0 -242
  148. package/src/components/stepperTimeline/EUIStepperHorizontal.vue.js.map +0 -1
  149. package/src/components/stepperTimeline/EUIStepperTimeline.stories.ts +0 -54
  150. package/src/components/stepperTimeline/EUIStepperTimeline.vue +0 -16
  151. package/src/components/stepperTimeline/EUIStepperTimeline.vue.js.map +0 -1
  152. package/src/components/stepperTimeline/EUIStepperVertical.vue +0 -112
  153. package/src/components/stepperTimeline/EUIStepperVertical.vue.js.map +0 -1
  154. package/src/components/table/ColumnResizeTable.vue +0 -740
  155. package/src/components/table/ColumnResizeTable.vue.js.map +0 -1
  156. package/src/components/table/EUIDashboardTable.vue +0 -514
  157. package/src/components/table/EUIDashboardTable.vue.js.map +0 -1
  158. package/src/components/table/EUIPageLimit.vue +0 -66
  159. package/src/components/table/EUIPageLimit.vue.js.map +0 -1
  160. package/src/components/table/EUIPagination.vue +0 -175
  161. package/src/components/table/EUIPagination.vue.js.map +0 -1
  162. package/src/components/table/EUIStudentPagination.vue +0 -172
  163. package/src/components/table/EUIStudentPagination.vue.js.map +0 -1
  164. package/src/components/table/EUITable.stories.ts +0 -300
  165. package/src/components/table/EUITable.vue +0 -559
  166. package/src/components/table/EUITable.vue.js.map +0 -1
  167. package/src/components/table/EUITableCheckbox.vue +0 -98
  168. package/src/components/table/EUITableCheckbox.vue.js.map +0 -1
  169. package/src/components/table/GrowthTable.vue +0 -575
  170. package/src/components/table/GrowthTable.vue.js.map +0 -1
  171. package/src/components/table/GrowthTableView.vue +0 -108
  172. package/src/components/table/GrowthTableView.vue.js.map +0 -1
  173. package/src/components/table/ResizeTableview.vue +0 -198
  174. package/src/components/table/ResizeTableview.vue.js.map +0 -1
  175. package/src/components/table/UCheckbox.vue +0 -169
  176. package/src/components/table/UCheckbox.vue.js.map +0 -1
  177. package/src/components/table/UTable.scss +0 -69
  178. package/src/components/table/UTable.vue +0 -611
  179. package/src/components/table/UTable.vue.js.map +0 -1
  180. package/src/components/table/UTableview.vue +0 -189
  181. package/src/components/table/UTableview.vue.js.map +0 -1
  182. package/src/components/tabs/EUITabOutline.vue +0 -263
  183. package/src/components/tabs/EUITabOutline.vue.js.map +0 -1
  184. package/src/components/tabs/EUITabs.vue +0 -262
  185. package/src/components/tabs/EUITabs.vue.js.map +0 -1
  186. package/src/components/tabs/EUItabs.stories.ts +0 -137
  187. package/src/components/tag/EUITag.stories.ts +0 -53
  188. package/src/components/tag/EUITag.vue +0 -88
  189. package/src/components/tag/EUITag.vue.js.map +0 -1
  190. package/src/components/telephone/EUITelephone.stories.ts +0 -358
  191. package/src/components/telephone/EUITelephone.vue +0 -299
  192. package/src/components/telephone/EUITelephone.vue.js.map +0 -1
  193. package/src/components/textArea/EUITextArea.stories.ts +0 -134
  194. package/src/components/textArea/EUITextArea.vue +0 -155
  195. package/src/components/textArea/EUITextArea.vue.js.map +0 -1
  196. package/src/components/timeLine/EUITimeLine.stories.ts +0 -247
  197. package/src/components/timeLine/EUITimeLine.vue +0 -148
  198. package/src/components/timeLine/EUITimeLine.vue.js.map +0 -1
  199. package/src/components/toggle/EUIToggle.stories.ts +0 -63
  200. package/src/components/toggle/EUIToggle.vue +0 -101
  201. package/src/components/toggle/EUIToggle.vue.js.map +0 -1
  202. package/src/components/tooltip/EUITooltip.stories.ts +0 -53
  203. package/src/components/tooltip/EUITooltip.vue +0 -111
  204. package/src/components/tooltip/EUITooltip.vue.js.map +0 -1
  205. package/src/components/uidemo/select-com.vue +0 -120
  206. package/src/components/uidemo/select-com.vue.js.map +0 -1
  207. package/src/data/books.js.map +0 -1
  208. package/src/data/books.ts +0 -163
  209. package/src/data/country.ts +0 -56
  210. package/src/data/tab.js.map +0 -1
  211. package/src/data/tab.ts +0 -40
  212. package/src/data/table.js.map +0 -1
  213. package/src/data/table.ts +0 -5654
  214. package/src/main.js.map +0 -1
  215. package/src/main.ts +0 -5
  216. package/src/style.scss +0 -186
  217. package/src/utils/helpers.js.map +0 -1
  218. package/src/utils/helpers.ts +0 -30
  219. package/src/utils/lodash.js.map +0 -1
  220. package/src/utils/lodash.ts +0 -9
  221. package/src/utils/types.js.map +0 -1
  222. package/src/utils/types.ts +0 -9
  223. package/src/vite-env.d.ts +0 -5
  224. /package/dist/{button/EUIButton.vue.d.ts → EUIButton.vue.d.ts} +0 -0
  225. /package/dist/{button/EUIButtonGroup.vue.d.ts → EUIButtonGroup.vue.d.ts} +0 -0
@@ -1,412 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/vue3";
2
- import { action } from "@storybook/addon-actions";
3
- import { ref } from "vue";
4
- import EUIModal from "./EUIModal.vue";
5
- import EUIButton from "../button/EUIButton.vue";
6
-
7
- const meta: Meta<typeof EUIModal> = {
8
- title: "Example/Modal",
9
- component: EUIModal,
10
- tags: ["autodocs"],
11
- argTypes: {
12
- ...{
13
- isVisible: {
14
- control: "boolean",
15
- description: "Controls the visibility of the EUIModal.",
16
- },
17
- slimHeader: {
18
- control: "boolean",
19
- description: "Enables a slimmer header style for the modal.",
20
- defaultValue: false,
21
- },
22
- title: {
23
- control: "text",
24
- description: "Sets the title displayed in the modal header.",
25
- defaultValue: "Default Modal Title",
26
- },
27
- roundedClass: {
28
- control: "text",
29
- description:
30
- "CSS class for defining custom border radius of the modal.",
31
- defaultValue: "",
32
- },
33
- "update:isVisible": {
34
- action: "update:isVisible",
35
- description: "Triggers when the modal's visibility is updated.",
36
- },
37
- confirm: {
38
- action: "confirm",
39
- description: "Emits when the confirm button is clicked.",
40
- },
41
- persistent: {
42
- control: "boolean",
43
- description:
44
- "Prevents the modal from being closed by clicking on the backdrop or pressing the Escape key.",
45
- defaultValue: false,
46
- },
47
- size: {
48
- control: {
49
- type: "select",
50
- options: ["xs", "sm", "md", "lg", "xl", "full"],
51
- },
52
- description: "Size of the slideover.",
53
- defaultValue: "sm",
54
- table: {
55
- defaultValue: { summary: "sm" },
56
- },
57
- },
58
- placement: {
59
- control: { type: "select" },
60
- options: [
61
- "top",
62
- "bottom",
63
- "center",
64
- ],
65
- description:
66
- "Defines the position of the modal show in 'placement' element. Default is 'center'.",
67
- defaultValue: "center",
68
- table: {
69
- defaultValue: { summary: "center" },
70
- },
71
- },
72
- },
73
- },
74
- parameters: {
75
- actions: {
76
- handles: ["update:isVisible"],
77
- },
78
- },
79
- };
80
-
81
- export default meta;
82
- type Story = StoryObj<typeof meta>;
83
-
84
- // Default EUIModal story with basic content
85
- export const Default: Story = {
86
- argTypes: {
87
- size: {
88
- control: "select",
89
- options: ["xs", "sm", "md", "lg", "full"],
90
- persistent: false,
91
- slimHeader: false,
92
- visibleClose: true,
93
- },
94
- },
95
- args: {
96
- isVisible: false,
97
- },
98
- render: (args) => ({
99
- components: { EUIModal, EUIButton },
100
- setup() {
101
- const isModalVisible = ref(args.isVisible);
102
-
103
- const openModal = () => {
104
- isModalVisible.value = true;
105
- action("update:isVisible")(true);
106
- };
107
-
108
- const closeModal = () => {
109
- isModalVisible.value = false;
110
- action("update:isVisible")(false);
111
- };
112
-
113
- return {
114
- args,
115
- isModalVisible,
116
- openModal,
117
- closeModal,
118
- onConfirm: action("confirm"),
119
- };
120
- },
121
- template: `
122
- <EUIButton size="md" color="purple" @click="openModal">Open Modal</EUIButton>
123
- <EUIModal v-bind="args" :isVisible="isModalVisible" @update:isVisible="closeModal" @confirm="onConfirm">
124
- <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Minus
125
- quas possimus ea culpa id voluptatum cumque, animi earum sequi,
126
- aliquid eius omnis repellendus nihil soluta vitae a temporibus!
127
- Perspiciatis, nihil?</p>
128
- </EUIModal>
129
- `,
130
- }),
131
- parameters: {
132
- docs: {
133
- description: {
134
- story:
135
- "This story demonstrates a modal component that is initially hidden. Clicking the 'Open Modal' button triggers the modal to appear, and it can be closed through the close button inside the modal or the cancel button. The modal also includes a 'Confirm' button that emits a `confirm` event, which is logged in Storybook’s actions panel.",
136
- },
137
- source: {
138
- code: `<script setup lang="ts">
139
- import { ref } from "vue";
140
- const isModalVisible = ref(false);
141
-
142
- const openModal = () => {
143
- isModalVisible.value = true;
144
- };
145
-
146
- const closeModal = () => {
147
- isModalVisible.value = false;
148
- };
149
-
150
- const onActionModal = () => {
151
- alert("Modal Action working set validation");
152
- closeModal();
153
- };
154
- </script>
155
- <template>
156
- <EUIButton size="md" color="purple" @click="openModal">Open Modal</EUIButton>
157
- <EUIModal
158
- :isVisible="isModalVisible"
159
- :slim-header="false"
160
- @update:isVisible="isModalVisible = $event"
161
- @confirm="onActionModal"
162
- >
163
- <div>
164
- Lorem, ipsum dolor sit amet consectetur adipisicing elit. Minus quas
165
- possimus ea culpa id voluptatum cumque, animi earum sequi, aliquid eius
166
- omnis repellendus nihil soluta vitae a temporibus! Perspiciatis, nihil?
167
- </div>
168
- </EUIModal>
169
- </template>
170
- `,
171
- },
172
- },
173
- },
174
- };
175
-
176
- // Custom EUIModal story with different content
177
- export const ModalCustomize: Story = {
178
- args: {
179
- isVisible: false, // EUIModal is visible by default
180
- },
181
- render: (args) => ({
182
- components: { EUIModal, EUIButton },
183
- setup() {
184
- const isModalVisible = ref(args.isVisible);
185
-
186
- const openModal = () => {
187
- isModalVisible.value = true;
188
- action("update:isVisible")(true);
189
- };
190
-
191
- const closeModal = () => {
192
- isModalVisible.value = false;
193
- action("update:isVisible")(false);
194
- };
195
-
196
- const onActionModal = () => {
197
- alert("Modal Action working set validation");
198
- closeModal();
199
- };
200
-
201
- return {
202
- args,
203
- isModalVisible,
204
- openModal,
205
- closeModal,
206
- onActionModal,
207
- onConfirm: action("confirm"),
208
- };
209
- },
210
- template: `
211
- <EUIButton size="md" color="purple" @click="openModal">Open Modal</EUIButton>
212
- <EUIModal v-bind="args" :isVisible="isModalVisible" @update:isVisible="closeModal" @confirm="onConfirm">
213
- <template #header>
214
- <div
215
- class="sticky inset-x-0 top-0 px-6 py-4 text-base font-semibold bg-white border-b"
216
- >
217
- Custom Header here
218
- </div>
219
- </template>
220
- <template #content>
221
- <div
222
- class="p-4 max-h-[calc(100svh-10rem)] overflow-y-auto space-y-4"
223
- >
224
- <div v-for="item in 10" :key="item">
225
- Lorem, ipsum dolor sit amet consectetur adipisicing elit. Minus
226
- quas possimus ea culpa id voluptatum cumque, animi earum sequi,
227
- aliquid eius omnis repellendus nihil soluta vitae a temporibus!
228
- Perspiciatis, nihil?
229
- </div>
230
- </div>
231
- </template>
232
- <template #footer>
233
- <div
234
- class="sticky inset-x-0 bottom-0 flex items-center justify-end gap-4 p-4 bg-white border-t border-gray-200"
235
- >
236
- <button
237
- class="px-4 py-2 text-base font-semibold tracking-wide text-gray-600 transition-colors duration-75 bg-white rounded-md hover:bg-gray-100"
238
- @click="closeModal"
239
- >
240
- Cancel
241
- </button>
242
- <button
243
- class="px-4 py-2 text-base font-semibold tracking-wide text-white transition-colors duration-75 bg-purple-600 rounded-md hover:bg-purple-700"
244
- @click="onActionModal"
245
- >
246
- Apply now
247
- </button>
248
- </div>
249
- </template>
250
- </EUIModal>
251
- `,
252
- }),
253
- parameters: {
254
- docs: {
255
- description: {
256
- story:
257
- "* The template method allows you to define how content is rendered in the <mark>EUIModal</mark> component. \n\n* Named slots <mark>(#header, #content, #footer)</mark> enable you to customize modal.",
258
- },
259
- source: {
260
- code: `<script setup lang="ts">
261
- import { ref } from "vue";
262
- const isModalVisible = ref(false);
263
-
264
- const openModal = () => {
265
- isModalVisible.value = true;
266
- };
267
-
268
- const closeModal = () => {
269
- isModalVisible.value = false;
270
- };
271
-
272
- const onActionModal = () => {
273
- alert("Modal Action working set validation");
274
- closeModal();
275
- };
276
- </script>
277
- <template>
278
- <EUIButton size="md" color="purple" @click="openModal">Open Modal</EUIButton>
279
- <EUIModal
280
- :isVisible="isModalVisible"
281
- :slim-header="false"
282
- rounded-class="rounded-3xl"
283
- @update:isVisible="isModalVisible = $event"
284
- @confirm="closeModal"
285
- >
286
- <template #header>
287
- <div class="sticky inset-x-0 top-0 px-6 py-4 text-base font-semibold bg-white border-b">
288
- Custom Header here
289
- </div>
290
- </template>
291
- <template #content>
292
- <div class="p-4 max-h-[calc(100svh-10rem)] overflow-y-auto space-y-4">
293
- <div v-for="item in 10" :key="item">
294
- Lorem, ipsum dolor sit amet consectetur adipisicing elit. Minus quas
295
- possimus ea culpa id voluptatum cumque, animi earum sequi, aliquid
296
- eius omnis repellendus nihil soluta vitae a temporibus! Perspiciatis,
297
- nihil?
298
- </div>
299
- </div>
300
- </template>
301
- <template #footer>
302
- <div
303
- class="sticky inset-x-0 bottom-0 flex items-center justify-end gap-4 p-4 bg-white border-t border-gray-200"
304
- >
305
- <button
306
- class="px-4 py-2 text-base font-semibold tracking-wide text-gray-600 transition-colors duration-75 bg-white rounded-md hover:bg-gray-100"
307
- @click="closeModal()"
308
- >
309
- Cancel
310
- </button>
311
- <button
312
- class="px-4 py-2 text-base font-semibold tracking-wide text-white transition-colors duration-75 bg-purple-600 rounded-md hover:bg-purple-700"
313
- @click="onActionModal()"
314
- >
315
- Apply now
316
- </button>
317
- </div>
318
- </template>
319
- </EUIModal>
320
- </template>
321
- `,
322
- },
323
- },
324
- },
325
- };
326
-
327
- export const SlimHeader: Story = {
328
- args: {
329
- isVisible: false,
330
- slimHeader: true,
331
- title: "Slimheader Modal Title",
332
- },
333
- render: (args) => ({
334
- components: { EUIModal, EUIButton },
335
- setup() {
336
- const isModalVisible = ref(args.isVisible);
337
-
338
- const openModal = () => {
339
- isModalVisible.value = true;
340
- action("update:isVisible")(true);
341
- };
342
-
343
- const closeModal = () => {
344
- isModalVisible.value = false;
345
- action("update:isVisible")(false);
346
- };
347
-
348
- return {
349
- args,
350
- isModalVisible,
351
- openModal,
352
- closeModal,
353
- onConfirm: action("confirm"),
354
- };
355
- },
356
- template: `
357
- <EUIButton size="md" color="purple" @click="openModal">Open Modal</EUIButton>
358
- <EUIModal v-bind="args" :isVisible="isModalVisible" :slimHeader="args.slimHeader" :title="args.title" :roundedClass="args.roundedClass" @update:isVisible="closeModal" @confirm="onConfirm">
359
- <template #title>{{ args.title }}</template>
360
- <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Minus
361
- quas possimus ea culpa id voluptatum cumque, animi earum sequi,
362
- aliquid eius omnis repellendus nihil soluta vitae a temporibus!
363
- Perspiciatis, nihil?</p>
364
- </EUIModal>
365
- `,
366
- }),
367
- parameters: {
368
- docs: {
369
- description: {
370
- story:
371
- "This story demonstrates a modal component that is initially hidden. Clicking the 'Open Modal' button triggers the modal to appear, and it can be closed through the close button inside the modal or the cancel button. The modal also includes a 'Confirm' button that emits a `confirm` event, which is logged in Storybook’s actions panel. enable <mark>slimheader</mark> use template slot name <mark>(#title)</mark>",
372
- },
373
- source: {
374
- code: `<script setup lang="ts">
375
- import { ref } from "vue";
376
- const isModalVisible = ref(false);
377
-
378
- const openModal = () => {
379
- isModalVisible.value = true;
380
- };
381
-
382
- const closeModal = () => {
383
- isModalVisible.value = false;
384
- };
385
-
386
- const onActionModal = () => {
387
- alert("Modal Action working set validation");
388
- closeModal();
389
- };
390
-
391
- </script>
392
- <template>
393
- <EUIButton size="md" color="purple" @click="openModal">Open Modal</EUIButton>
394
- <EUIModal
395
- :isVisible="isModalVisible"
396
- :slim-header="true"
397
- @update:isVisible="isModalVisible = $event"
398
- @confirm="onActionModal"
399
- >
400
- <template #title> Default Modal Title</template>
401
- <div>
402
- Lorem, ipsum dolor sit amet consectetur adipisicing elit. Minus quas
403
- possimus ea culpa id voluptatum cumque, animi earum sequi, aliquid eius
404
- omnis repellendus nihil soluta vitae a temporibus! Perspiciatis, nihil?
405
- </div>
406
- </EUIModal>
407
- </template>
408
- `,
409
- },
410
- },
411
- },
412
- };
@@ -1,228 +0,0 @@
1
- <template>
2
- <div>
3
- <Teleport defer to="body">
4
- <Transition name="modal" appear>
5
- <div
6
- v-if="isVisible"
7
- class="fixed z-50 flex flex-col items-center justify-end inset-2 modal-wrapper"
8
- :class="[
9
- placement === 'top'
10
- ? 'sm:justify-start'
11
- : placement === 'bottom'
12
- ? 'sm:justify-end'
13
- : 'sm:justify-center',
14
- ]"
15
- @click.self="closeModal"
16
- >
17
- <div
18
- class="backdrop fixed inset-0 z-[-1] w-screen h-screen bg-black/25 pointer-events-none overflow-hidden cursor-auto backdrop-blur-sm"
19
- ></div>
20
- <div
21
- :class="[
22
- 'bg-white shadow-lg w-full overflow-hidden relative flex flex-col justify-between modal-container',
23
- slideClass,
24
- roundedClass !== ''
25
- ? roundedClass
26
- : 'rounded-t-3xl md:rounded-2xl',
27
- size === 'full'
28
- ? 'h-full max-h-svh'
29
- : 'max-h-[calc(100vh-3rem)] md:h-auto',
30
- ]"
31
- >
32
- <template v-if="$slots.header">
33
- <slot name="header"></slot>
34
- </template>
35
- <div
36
- v-else
37
- class="flex flex-row items-center justify-between font-medium text-gray-700"
38
- :class="slimHeader ? 'p-4 text-base' : 'p-6 text-lg'"
39
- >
40
- <h3 class="text-xl font-semibold">
41
- <slot name="title">{{ title || "Modal Title" }}</slot>
42
- </h3>
43
- <div v-if="visibleClose" class="flex-initial">
44
- <button
45
- type="button"
46
- class="flex items-center justify-center text-gray-400 bg-white hover:bg-gray-50 rounded-3xl hover:text-gray-600 size-8"
47
- @click="closeModal"
48
- >
49
- <span class="sr-only">Close</span>
50
- <svg
51
- xmlns="http://www.w3.org/2000/svg"
52
- fill="none"
53
- viewBox="0 0 24 24"
54
- stroke-width="2"
55
- stroke="currentColor"
56
- aria-hidden="true"
57
- class="w-5 h-5"
58
- >
59
- <path
60
- stroke-linecap="round"
61
- stroke-linejoin="round"
62
- d="M6 18L18 6M6 6l12 12"
63
- ></path>
64
- </svg>
65
- </button>
66
- </div>
67
- </div>
68
-
69
- <template v-if="$slots.content">
70
- <slot name="content"></slot>
71
- </template>
72
- <div
73
- v-else
74
- class="p-4 border-t border-b border-gray-200 max-h-[calc(100vh-3rem)] flex-1"
75
- >
76
- <slot></slot>
77
- </div>
78
-
79
- <template v-if="$slots.footer">
80
- <slot name="footer"></slot>
81
- </template>
82
- <div
83
- v-else
84
- class="sticky bottom-0 flex items-center justify-end float-none p-4 space-x-2"
85
- >
86
- <button
87
- @click="closeModal"
88
- class="px-4 py-2 text-base font-semibold tracking-wide text-gray-600 transition-colors duration-75 bg-white rounded-md hover:bg-gray-100"
89
- >
90
- Cancel
91
- </button>
92
- <button
93
- @click="$emit('confirm')"
94
- class="px-4 py-2 text-base font-semibold tracking-wide text-white transition-colors duration-75 bg-purple-600 rounded-md hover:bg-purple-700"
95
- >
96
- Confirm
97
- </button>
98
- </div>
99
- </div>
100
- </div>
101
- </Transition>
102
- </Teleport>
103
- </div>
104
- </template>
105
-
106
- <script lang="ts">
107
- import {
108
- defineComponent,
109
- onMounted,
110
- onUnmounted,
111
- watch,
112
- computed,
113
- type PropType,
114
- } from "vue";
115
-
116
- export default defineComponent({
117
- name: "Modal",
118
- props: {
119
- isVisible: {
120
- type: Boolean,
121
- default: false,
122
- },
123
- slimHeader: {
124
- type: Boolean,
125
- default: false,
126
- },
127
- title: {
128
- type: String,
129
- default: "",
130
- },
131
- roundedClass: {
132
- type: String,
133
- default: "",
134
- },
135
- visibleClose: {
136
- type: Boolean,
137
- default: true,
138
- },
139
- persistent: {
140
- type: Boolean,
141
- default: false,
142
- },
143
- size: {
144
- type: String as PropType<"xs" | "sm" | "md" | "lg" | "xl" | "full">,
145
- default: "sm",
146
- },
147
- placement: {
148
- type: String as PropType<"center" | "bottom" | "top">,
149
- default: "center",
150
- },
151
- },
152
- emits: ["update:isVisible", "confirm"],
153
- setup(props, { emit }) {
154
- const slideClass = computed(() => {
155
- const sizeClass = {
156
- full: "max-w-screen",
157
- xl: "max-w-screen-lg min-w-[100svw] sm:min-w-[1024px]",
158
- lg: "max-w-2xl min-w-[100svw] sm:min-w-[42rem]",
159
- md: "max-w-xl min-w-[100svw] sm:min-w-[36rem]",
160
- sm: "max-w-lg min-w-[100svw] sm:min-w-[32rem]",
161
- xs: "max-w-md min-w-[100svw] sm:min-w-[28rem]",
162
- };
163
-
164
- const slideWidth = sizeClass[props.size];
165
- return slideWidth;
166
- });
167
-
168
- // Methods
169
- const closeModal = () => {
170
- if (!props.persistent) {
171
- emit("update:isVisible", false);
172
- }
173
- };
174
- const handleKeydown = (event: KeyboardEvent) => {
175
- if (event.key === "Escape" && props.isVisible && !props.persistent) {
176
- closeModal();
177
- }
178
- };
179
- // Watcher for body scroll lock
180
- watch(
181
- () => props.isVisible,
182
- (newVal) => {
183
- document.body.style.overflow = newVal ? "hidden" : "";
184
- }
185
- );
186
- // Lifecycle hooks
187
- onMounted(() => {
188
- window.addEventListener("keydown", handleKeydown);
189
- });
190
-
191
- onUnmounted(() => {
192
- document.body.style.overflow = ""; // Reset scroll when modal unmounts
193
- window.removeEventListener("keydown", handleKeydown);
194
- });
195
- return {
196
- closeModal,
197
- slideClass,
198
- };
199
- },
200
- });
201
- </script>
202
-
203
- <style lang="scss" scoped>
204
- .modal-enter-active,
205
- .modal-leave-active {
206
- transition: opacity 0.3s ease, transform 0.3s ease;
207
- }
208
- .modal-enter-from,
209
- .modal-leave-to {
210
- @apply opacity-0;
211
- }
212
- .modal-enter-to,
213
- .modal-leave-from {
214
- @apply opacity-100;
215
- }
216
-
217
- .backdrop {
218
- transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1);
219
- }
220
- .modal-enter-from .backdrop,
221
- .modal-leave-to .backdrop {
222
- @apply opacity-0;
223
- }
224
- .modal-enter-to .backdrop,
225
- .modal-leave-from .backdrop {
226
- @apply opacity-100;
227
- }
228
- </style>
@@ -1 +0,0 @@
1
- {"version":3,"file":"EUIModal.vue.js","sourceRoot":"","sources":["EUIModal.vue"],"names":[],"mappings":"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"}