edvoyui-component-library-test-flight 0.0.184 → 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 (224) 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 +1 -1
  5. package/dist/edvoy-ui.es.js +7 -10
  6. package/dist/edvoy-ui.umd.js +1 -1
  7. package/package.json +18 -17
  8. package/dist/button/EUIButton.vue.d.ts.map +0 -1
  9. package/dist/button/EUIButtonGroup.vue.d.ts.map +0 -1
  10. package/src/App.vue +0 -16
  11. package/src/App.vue.js.map +0 -1
  12. package/src/assets/fonts/gilroy/GilroyBold/font.woff +0 -0
  13. package/src/assets/fonts/gilroy/GilroyBold/font.woff2 +0 -0
  14. package/src/assets/fonts/gilroy/GilroyBoldItalic/font.woff +0 -0
  15. package/src/assets/fonts/gilroy/GilroyBoldItalic/font.woff2 +0 -0
  16. package/src/assets/fonts/gilroy/GilroyExtraBold/font.woff +0 -0
  17. package/src/assets/fonts/gilroy/GilroyExtraBold/font.woff2 +0 -0
  18. package/src/assets/fonts/gilroy/GilroyExtraBoldItalic/font.woff +0 -0
  19. package/src/assets/fonts/gilroy/GilroyExtraBoldItalic/font.woff2 +0 -0
  20. package/src/assets/fonts/gilroy/GilroyMedium/font.woff +0 -0
  21. package/src/assets/fonts/gilroy/GilroyMedium/font.woff2 +0 -0
  22. package/src/assets/fonts/gilroy/GilroyRegular/font.woff +0 -0
  23. package/src/assets/fonts/gilroy/GilroyRegular/font.woff2 +0 -0
  24. package/src/assets/fonts/gilroy/GilroySemiBold/font.woff +0 -0
  25. package/src/assets/fonts/gilroy/GilroySemiBold/font.woff2 +0 -0
  26. package/src/assets/fonts/inter/Inter-Bold.woff +0 -0
  27. package/src/assets/fonts/inter/Inter-Bold.woff2 +0 -0
  28. package/src/assets/fonts/inter/Inter-Italic.woff +0 -0
  29. package/src/assets/fonts/inter/Inter-Italic.woff2 +0 -0
  30. package/src/assets/fonts/inter/Inter-Medium.woff +0 -0
  31. package/src/assets/fonts/inter/Inter-Medium.woff2 +0 -0
  32. package/src/assets/fonts/inter/Inter-MediumItalic.woff +0 -0
  33. package/src/assets/fonts/inter/Inter-MediumItalic.woff2 +0 -0
  34. package/src/assets/fonts/inter/Inter-Regular.woff +0 -0
  35. package/src/assets/fonts/inter/Inter-Regular.woff2 +0 -0
  36. package/src/assets/fonts/inter/Inter-SemiBold.woff +0 -0
  37. package/src/assets/fonts/inter/Inter-SemiBold.woff2 +0 -0
  38. package/src/assets/fonts/inter/Inter-SemiBoldItalic.woff +0 -0
  39. package/src/assets/fonts/inter/Inter-SemiBoldItalic.woff2 +0 -0
  40. package/src/assets/images/search-nodata.png +0 -0
  41. package/src/assets/scss/body.scss +0 -25
  42. package/src/assets/svg/CheckTick.vue +0 -21
  43. package/src/assets/svg/CheckTick.vue.js.map +0 -1
  44. package/src/assets/svg/ChevronBigDown.vue +0 -22
  45. package/src/assets/svg/ChevronBigDown.vue.js.map +0 -1
  46. package/src/assets/svg/ChevronDownSolid.vue +0 -19
  47. package/src/assets/svg/ChevronDownSolid.vue.js.map +0 -1
  48. package/src/assets/svg/ChevronDownStroke.vue +0 -22
  49. package/src/assets/svg/ChevronDownStroke.vue.js.map +0 -1
  50. package/src/assets/svg/ChevronDownStrokeSolid.vue +0 -19
  51. package/src/assets/svg/ChevronDownStrokeSolid.vue.js.map +0 -1
  52. package/src/assets/svg/SearchBigZoomIn.vue +0 -21
  53. package/src/assets/svg/SearchBigZoomIn.vue.js.map +0 -1
  54. package/src/assets/svg/SortArrow.vue +0 -24
  55. package/src/assets/svg/SortArrow.vue.js.map +0 -1
  56. package/src/assets/svg/Student.vue +0 -30
  57. package/src/assets/svg/Student.vue.js.map +0 -1
  58. package/src/assets/svg/partner.vue +0 -33
  59. package/src/assets/svg/partner.vue.js.map +0 -1
  60. package/src/assets/svg/people.vue +0 -25
  61. package/src/assets/svg/people.vue.js.map +0 -1
  62. package/src/assets/vue.svg +0 -1
  63. package/src/components/HelloWorld.vue +0 -1972
  64. package/src/components/HelloWorld.vue.js.map +0 -1
  65. package/src/components/accordion/EUIAccordion.stories.ts +0 -204
  66. package/src/components/accordion/EUIAccordion.vue +0 -152
  67. package/src/components/accordion/EUIAccordion.vue.js.map +0 -1
  68. package/src/components/alerts/EUIAlerts.stories.ts +0 -217
  69. package/src/components/alerts/EUIAlerts.vue +0 -194
  70. package/src/components/alerts/EUIAlerts.vue.js.map +0 -1
  71. package/src/components/avatar/EUIAvatar.stories.ts +0 -157
  72. package/src/components/avatar/EUIAvatar.vue +0 -96
  73. package/src/components/avatar/EUIAvatar.vue.js.map +0 -1
  74. package/src/components/breadcrumb/EUIBreadcrumb.stories.ts +0 -75
  75. package/src/components/breadcrumb/EUIBreadcrumb.vue +0 -59
  76. package/src/components/breadcrumb/EUIBreadcrumb.vue.js.map +0 -1
  77. package/src/components/button/EUIButton.stories.ts +0 -270
  78. package/src/components/button/EUIButton.vue +0 -154
  79. package/src/components/button/EUIButton.vue.js.map +0 -1
  80. package/src/components/button/EUIButtonGroup.vue +0 -287
  81. package/src/components/button/EUIButtonGroup.vue.js.map +0 -1
  82. package/src/components/button/buttonAnimateTab.vue +0 -74
  83. package/src/components/button/buttonAnimateTab.vue.js.map +0 -1
  84. package/src/components/checkbox/EUICheckbox.stories.ts +0 -58
  85. package/src/components/checkbox/EUICheckbox.vue +0 -110
  86. package/src/components/checkbox/EUICheckbox.vue.js.map +0 -1
  87. package/src/components/datepicker/EUIDatepicker.stories.ts +0 -492
  88. package/src/components/datepicker/EUIDatepicker.vue +0 -295
  89. package/src/components/datepicker/EUIDatepicker.vue.js.map +0 -1
  90. package/src/components/delete.vue +0 -262
  91. package/src/components/delete.vue.js.map +0 -1
  92. package/src/components/dragModal/EUIDrag.vue +0 -179
  93. package/src/components/dragModal/EUIDrag.vue.js.map +0 -1
  94. package/src/components/dropdown/EUIMultiDropdown.stories.ts +0 -294
  95. package/src/components/dropdown/EUIMultiDropdown.vue +0 -187
  96. package/src/components/dropdown/EUIMultiDropdown.vue.js.map +0 -1
  97. package/src/components/errorMessage/EUIErrorMessage.scss +0 -0
  98. package/src/components/errorMessage/EUIErrorMessage.stories.ts +0 -41
  99. package/src/components/errorMessage/EUIErrorMessage.vue +0 -25
  100. package/src/components/errorMessage/EUIErrorMessage.vue.js.map +0 -1
  101. package/src/components/index.js.map +0 -1
  102. package/src/components/index.ts +0 -61
  103. package/src/components/input/EUIInput.stories.ts +0 -387
  104. package/src/components/input/EUIInput.vue +0 -223
  105. package/src/components/input/EUIInput.vue.js.map +0 -1
  106. package/src/components/input/EUINumberInput.vue +0 -250
  107. package/src/components/loader/EUICircleLoader.vue +0 -31
  108. package/src/components/loader/EUICircleLoader.vue.js.map +0 -1
  109. package/src/components/loader/EUICubeLoader.vue +0 -237
  110. package/src/components/loader/EUICubeLoader.vue.js.map +0 -1
  111. package/src/components/loader/EUILoader.stories.ts +0 -99
  112. package/src/components/loader/EUILoader.vue +0 -17
  113. package/src/components/loader/EUILoader.vue.js.map +0 -1
  114. package/src/components/loader/EUISquareLoader.vue +0 -47
  115. package/src/components/loader/EUISquareLoader.vue.js.map +0 -1
  116. package/src/components/modal/EUIModal.stories.ts +0 -412
  117. package/src/components/modal/EUIModal.vue +0 -228
  118. package/src/components/modal/EUIModal.vue.js.map +0 -1
  119. package/src/components/pillSelect/EUIPillSelect.stories.ts +0 -74
  120. package/src/components/pillSelect/EUIPillSelect.vue +0 -149
  121. package/src/components/pillSelect/EUIPillSelect.vue.js.map +0 -1
  122. package/src/components/popover/EUIPopover.stories.ts +0 -306
  123. package/src/components/popover/EUIPopover.vue +0 -297
  124. package/src/components/popover/EUIPopover.vue.js.map +0 -1
  125. package/src/components/radio/EUIRadio.stories.ts +0 -54
  126. package/src/components/radio/EUIRadio.vue +0 -75
  127. package/src/components/radio/EUIRadio.vue.js.map +0 -1
  128. package/src/components/searchInput/EUISearch.stories.ts +0 -24
  129. package/src/components/searchInput/EUISearch.vue +0 -223
  130. package/src/components/searchInput/EUISearch.vue.js.map +0 -1
  131. package/src/components/searchTagSelect/EUISearchTagSelect.stories.ts +0 -217
  132. package/src/components/searchTagSelect/EUISearchTagSelect.vue +0 -642
  133. package/src/components/searchTagSelect/EUISearchTagSelect.vue.js.map +0 -1
  134. package/src/components/searchTagSelect/SearchInput.vue +0 -167
  135. package/src/components/searchTagSelect/SearchInput.vue.js.map +0 -1
  136. package/src/components/searchexpand/EUISearchExpand.vue +0 -148
  137. package/src/components/searchexpand/EUISearchExpand.vue.js.map +0 -1
  138. package/src/components/searchexpand/EUISearchToggle.vue +0 -86
  139. package/src/components/searchexpand/EUISearchToggle.vue.js.map +0 -1
  140. package/src/components/select/EUISelect.stories.ts +0 -101
  141. package/src/components/select/EUISelect.vue +0 -1092
  142. package/src/components/select/EUISelect.vue.js.map +0 -1
  143. package/src/components/slideover/EUISlideover.stories.ts +0 -318
  144. package/src/components/slideover/EUISlideover.vue +0 -212
  145. package/src/components/slideover/EUISlideover.vue.js.map +0 -1
  146. package/src/components/stepperTimeline/EUIStepperHorizontal.vue +0 -242
  147. package/src/components/stepperTimeline/EUIStepperHorizontal.vue.js.map +0 -1
  148. package/src/components/stepperTimeline/EUIStepperTimeline.stories.ts +0 -54
  149. package/src/components/stepperTimeline/EUIStepperTimeline.vue +0 -16
  150. package/src/components/stepperTimeline/EUIStepperTimeline.vue.js.map +0 -1
  151. package/src/components/stepperTimeline/EUIStepperVertical.vue +0 -112
  152. package/src/components/stepperTimeline/EUIStepperVertical.vue.js.map +0 -1
  153. package/src/components/table/ColumnResizeTable.vue +0 -740
  154. package/src/components/table/ColumnResizeTable.vue.js.map +0 -1
  155. package/src/components/table/EUIDashboardTable.vue +0 -514
  156. package/src/components/table/EUIDashboardTable.vue.js.map +0 -1
  157. package/src/components/table/EUIPageLimit.vue +0 -66
  158. package/src/components/table/EUIPageLimit.vue.js.map +0 -1
  159. package/src/components/table/EUIPagination.vue +0 -175
  160. package/src/components/table/EUIPagination.vue.js.map +0 -1
  161. package/src/components/table/EUIStudentPagination.vue +0 -172
  162. package/src/components/table/EUIStudentPagination.vue.js.map +0 -1
  163. package/src/components/table/EUITable.stories.ts +0 -300
  164. package/src/components/table/EUITable.vue +0 -559
  165. package/src/components/table/EUITable.vue.js.map +0 -1
  166. package/src/components/table/EUITableCheckbox.vue +0 -98
  167. package/src/components/table/EUITableCheckbox.vue.js.map +0 -1
  168. package/src/components/table/GrowthTable.vue +0 -575
  169. package/src/components/table/GrowthTable.vue.js.map +0 -1
  170. package/src/components/table/GrowthTableView.vue +0 -108
  171. package/src/components/table/GrowthTableView.vue.js.map +0 -1
  172. package/src/components/table/ResizeTableview.vue +0 -198
  173. package/src/components/table/ResizeTableview.vue.js.map +0 -1
  174. package/src/components/table/UCheckbox.vue +0 -169
  175. package/src/components/table/UCheckbox.vue.js.map +0 -1
  176. package/src/components/table/UTable.scss +0 -69
  177. package/src/components/table/UTable.vue +0 -611
  178. package/src/components/table/UTable.vue.js.map +0 -1
  179. package/src/components/table/UTableview.vue +0 -189
  180. package/src/components/table/UTableview.vue.js.map +0 -1
  181. package/src/components/tabs/EUITabOutline.vue +0 -263
  182. package/src/components/tabs/EUITabOutline.vue.js.map +0 -1
  183. package/src/components/tabs/EUITabs.vue +0 -262
  184. package/src/components/tabs/EUITabs.vue.js.map +0 -1
  185. package/src/components/tabs/EUItabs.stories.ts +0 -137
  186. package/src/components/tag/EUITag.stories.ts +0 -53
  187. package/src/components/tag/EUITag.vue +0 -88
  188. package/src/components/tag/EUITag.vue.js.map +0 -1
  189. package/src/components/telephone/EUITelephone.stories.ts +0 -358
  190. package/src/components/telephone/EUITelephone.vue +0 -291
  191. package/src/components/telephone/EUITelephone.vue.js.map +0 -1
  192. package/src/components/textArea/EUITextArea.stories.ts +0 -134
  193. package/src/components/textArea/EUITextArea.vue +0 -155
  194. package/src/components/textArea/EUITextArea.vue.js.map +0 -1
  195. package/src/components/timeLine/EUITimeLine.stories.ts +0 -247
  196. package/src/components/timeLine/EUITimeLine.vue +0 -148
  197. package/src/components/timeLine/EUITimeLine.vue.js.map +0 -1
  198. package/src/components/toggle/EUIToggle.stories.ts +0 -63
  199. package/src/components/toggle/EUIToggle.vue +0 -101
  200. package/src/components/toggle/EUIToggle.vue.js.map +0 -1
  201. package/src/components/tooltip/EUITooltip.stories.ts +0 -53
  202. package/src/components/tooltip/EUITooltip.vue +0 -111
  203. package/src/components/tooltip/EUITooltip.vue.js.map +0 -1
  204. package/src/components/uidemo/select-com.vue +0 -120
  205. package/src/components/uidemo/select-com.vue.js.map +0 -1
  206. package/src/data/books.js.map +0 -1
  207. package/src/data/books.ts +0 -163
  208. package/src/data/country.ts +0 -56
  209. package/src/data/tab.js.map +0 -1
  210. package/src/data/tab.ts +0 -40
  211. package/src/data/table.js.map +0 -1
  212. package/src/data/table.ts +0 -5654
  213. package/src/main.js.map +0 -1
  214. package/src/main.ts +0 -5
  215. package/src/style.scss +0 -186
  216. package/src/utils/helpers.js.map +0 -1
  217. package/src/utils/helpers.ts +0 -30
  218. package/src/utils/lodash.js.map +0 -1
  219. package/src/utils/lodash.ts +0 -9
  220. package/src/utils/types.js.map +0 -1
  221. package/src/utils/types.ts +0 -9
  222. package/src/vite-env.d.ts +0 -5
  223. /package/dist/{button/EUIButton.vue.d.ts → EUIButton.vue.d.ts} +0 -0
  224. /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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"}