edvoyui-component-library-test-flight 0.0.184 → 0.0.186

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