@bagelink/vue 0.0.1143 → 0.0.1147

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 (238) hide show
  1. package/dist/components/Accordion.d.ts +12 -0
  2. package/dist/components/Accordion.d.ts.map +1 -0
  3. package/dist/components/AccordionItem.d.ts +34 -0
  4. package/dist/components/AccordionItem.d.ts.map +1 -0
  5. package/dist/components/Alert.d.ts +34 -0
  6. package/dist/components/Alert.d.ts.map +1 -0
  7. package/dist/components/Avatar.d.ts +36 -0
  8. package/dist/components/Avatar.d.ts.map +1 -0
  9. package/dist/components/Badge.d.ts +22 -0
  10. package/dist/components/Badge.d.ts.map +1 -0
  11. package/dist/components/BglVideo.d.ts +20 -0
  12. package/dist/components/BglVideo.d.ts.map +1 -0
  13. package/dist/components/Btn.d.ts +99 -0
  14. package/dist/components/Btn.d.ts.map +1 -0
  15. package/dist/components/Card.d.ts +39 -0
  16. package/dist/components/Card.d.ts.map +1 -0
  17. package/dist/components/Carousel.d.ts +74 -0
  18. package/dist/components/Carousel.d.ts.map +1 -0
  19. package/dist/components/Carousel.vue.d.ts.map +1 -1
  20. package/dist/components/ComboBox.vue.d.ts +3 -3
  21. package/dist/components/Comments.vue.d.ts +2 -2
  22. package/dist/components/ContactSubmissions.vue.d.ts +2 -2
  23. package/dist/components/DataPreview.d.ts +42 -0
  24. package/dist/components/DataPreview.d.ts.map +1 -0
  25. package/dist/components/Drop.vue.d.ts +34 -0
  26. package/dist/components/Drop.vue.d.ts.map +1 -0
  27. package/dist/components/FileUploader.vue.d.ts +60 -0
  28. package/dist/components/FileUploader.vue.d.ts.map +1 -0
  29. package/dist/components/Flag.d.ts +20 -0
  30. package/dist/components/Flag.d.ts.map +1 -0
  31. package/dist/components/FormSchema.vue.d.ts +5 -4
  32. package/dist/components/LangText.vue.d.ts +2 -2
  33. package/dist/components/ListItem.d.ts +34 -0
  34. package/dist/components/ListItem.d.ts.map +1 -0
  35. package/dist/components/ListView.d.ts +13 -0
  36. package/dist/components/ListView.d.ts.map +1 -0
  37. package/dist/components/MapEmbed.d.ts +3 -0
  38. package/dist/components/MapEmbed.d.ts.map +1 -0
  39. package/dist/components/MaterialIcon.d.ts +26 -0
  40. package/dist/components/MaterialIcon.d.ts.map +1 -0
  41. package/dist/components/Modal.d.ts +46 -0
  42. package/dist/components/Modal.d.ts.map +1 -0
  43. package/dist/components/Modal.vue.d.ts.map +1 -1
  44. package/dist/components/ModalBglForm.vue.d.ts +21 -20
  45. package/dist/components/ModalConfirm.d.ts +24 -0
  46. package/dist/components/ModalConfirm.d.ts.map +1 -0
  47. package/dist/components/ModalForm.d.ts +78 -0
  48. package/dist/components/ModalForm.d.ts.map +1 -0
  49. package/dist/components/NavBar.d.ts +64 -0
  50. package/dist/components/NavBar.d.ts.map +1 -0
  51. package/dist/components/PageTitle.d.ts +24 -0
  52. package/dist/components/PageTitle.d.ts.map +1 -0
  53. package/dist/components/PersonPreview.vue.d.ts +5 -4
  54. package/dist/components/PersonPreviewFormkit.vue.d.ts +4 -3
  55. package/dist/components/RTXEditor.vue.d.ts +3 -3
  56. package/dist/components/RouterWrapper.d.ts +3 -0
  57. package/dist/components/RouterWrapper.d.ts.map +1 -0
  58. package/dist/components/TabbedLayout.vue.d.ts +5 -4
  59. package/dist/components/TableSchema.d.ts +35 -0
  60. package/dist/components/TableSchema.d.ts.map +1 -0
  61. package/dist/components/TableSchema.vue.d.ts +2 -2
  62. package/dist/components/TableSchema.vue.d.ts.map +1 -1
  63. package/dist/components/Title.d.ts +42 -0
  64. package/dist/components/Title.d.ts.map +1 -0
  65. package/dist/components/TopBar.d.ts +12 -0
  66. package/dist/components/TopBar.d.ts.map +1 -0
  67. package/dist/components/Zoomer.vue.d.ts.map +1 -1
  68. package/dist/components/charts/BarChart.vue.d.ts +2 -2
  69. package/dist/components/dashboard/Lineart.d.ts +20 -0
  70. package/dist/components/dashboard/Lineart.d.ts.map +1 -0
  71. package/dist/components/form/BglField.d.ts +25 -0
  72. package/dist/components/form/BglField.d.ts.map +1 -0
  73. package/dist/components/form/BglForm.d.ts +75 -0
  74. package/dist/components/form/BglForm.d.ts.map +1 -0
  75. package/dist/components/form/FieldArray.vue.d.ts.map +1 -1
  76. package/dist/components/form/ItemRef.vue.d.ts +5 -3
  77. package/dist/components/form/ItemRef.vue.d.ts.map +1 -1
  78. package/dist/components/form/MaterialIcon.vue.d.ts +4 -3
  79. package/dist/components/form/PlainInputField.vue.d.ts +3 -3
  80. package/dist/components/form/index.d.ts +2 -3
  81. package/dist/components/form/index.d.ts.map +1 -1
  82. package/dist/components/form/inputs/CheckInput.d.ts +56 -0
  83. package/dist/components/form/inputs/CheckInput.d.ts.map +1 -0
  84. package/dist/components/form/inputs/Checkbox.d.ts +16 -0
  85. package/dist/components/form/inputs/Checkbox.d.ts.map +1 -0
  86. package/dist/components/form/inputs/ColorPicker.d.ts +48 -0
  87. package/dist/components/form/inputs/ColorPicker.d.ts.map +1 -0
  88. package/dist/components/form/inputs/CurrencyInput.vue.d.ts +3 -3
  89. package/dist/components/form/inputs/DateInput.d.ts +64 -0
  90. package/dist/components/form/inputs/DateInput.d.ts.map +1 -0
  91. package/dist/components/form/inputs/DatePicker.d.ts +33 -0
  92. package/dist/components/form/inputs/DatePicker.d.ts.map +1 -0
  93. package/dist/components/form/inputs/DatetimeInput.vue.d.ts +3 -3
  94. package/dist/components/form/inputs/DurationInput.vue.d.ts +3 -3
  95. package/dist/components/form/inputs/DynamicLinkField.vue.d.ts +3 -3
  96. package/dist/components/form/inputs/EmailInput.vue.d.ts +3 -3
  97. package/dist/components/form/inputs/FileUpload.d.ts +108 -0
  98. package/dist/components/form/inputs/FileUpload.d.ts.map +1 -0
  99. package/dist/components/form/inputs/FileUpload.vue.d.ts +3 -0
  100. package/dist/components/form/inputs/FileUpload.vue.d.ts.map +1 -1
  101. package/dist/components/form/inputs/FloatInput.vue.d.ts +3 -3
  102. package/dist/components/form/inputs/IntInput.vue.d.ts +3 -3
  103. package/dist/components/form/inputs/JSONInput.d.ts +53 -0
  104. package/dist/components/form/inputs/JSONInput.d.ts.map +1 -0
  105. package/dist/components/form/inputs/LinkField.vue.d.ts +3 -3
  106. package/dist/components/form/inputs/NumberInput.vue.d.ts.map +1 -1
  107. package/dist/components/form/inputs/Password.vue.d.ts +3 -3
  108. package/dist/components/form/inputs/PlainText.vue.d.ts +3 -3
  109. package/dist/components/form/inputs/RadioGroup.d.ts +42 -0
  110. package/dist/components/form/inputs/RadioGroup.d.ts.map +1 -0
  111. package/dist/components/form/inputs/RadioPillsInput.d.ts +48 -0
  112. package/dist/components/form/inputs/RadioPillsInput.d.ts.map +1 -0
  113. package/dist/components/form/inputs/ReadOnlyInput.vue.d.ts +2 -2
  114. package/dist/components/form/inputs/RichText/composables/useEditor.d.ts.map +1 -1
  115. package/dist/components/form/inputs/RichText.d.ts +20 -0
  116. package/dist/components/form/inputs/RichText.d.ts.map +1 -0
  117. package/dist/components/form/inputs/RichText2/Toolbar.d.ts +22 -0
  118. package/dist/components/form/inputs/RichText2/Toolbar.d.ts.map +1 -0
  119. package/dist/components/form/inputs/RichText2/Toolbar.vue.d.ts.map +1 -1
  120. package/dist/components/form/inputs/RichText2/index.d.ts +24 -0
  121. package/dist/components/form/inputs/RichText2/index.d.ts.map +1 -0
  122. package/dist/components/form/inputs/RichText2/index.vue.d.ts +1 -0
  123. package/dist/components/form/inputs/RichText2/index.vue.d.ts.map +1 -1
  124. package/dist/components/form/inputs/RichTextEditor.vue.d.ts +3 -3
  125. package/dist/components/form/inputs/SelectField.vue.d.ts +6 -8
  126. package/dist/components/form/inputs/SelectField.vue.d.ts.map +1 -1
  127. package/dist/components/form/inputs/SelectInput.d.ts +55 -0
  128. package/dist/components/form/inputs/SelectInput.d.ts.map +1 -0
  129. package/dist/components/form/inputs/SignaturePad.d.ts +72 -0
  130. package/dist/components/form/inputs/SignaturePad.d.ts.map +1 -0
  131. package/dist/components/form/inputs/TableField.d.ts +45 -0
  132. package/dist/components/form/inputs/TableField.d.ts.map +1 -0
  133. package/dist/components/form/inputs/TelInput.d.ts +241 -0
  134. package/dist/components/form/inputs/TelInput.d.ts.map +1 -0
  135. package/dist/components/form/inputs/TextArea.vue.d.ts +3 -3
  136. package/dist/components/form/inputs/TextInput.d.ts +90 -0
  137. package/dist/components/form/inputs/TextInput.d.ts.map +1 -0
  138. package/dist/components/form/inputs/ToggleInput.d.ts +58 -0
  139. package/dist/components/form/inputs/ToggleInput.d.ts.map +1 -0
  140. package/dist/components/form/inputs/Upload/UploadInput.vue.d.ts +3 -0
  141. package/dist/components/form/inputs/Upload/UploadInput.vue.d.ts.map +1 -1
  142. package/dist/components/formkit/AddressArray.vue.d.ts +2 -2
  143. package/dist/components/formkit/BankDetailsArray.vue.d.ts +2 -2
  144. package/dist/components/formkit/ContactArrayFormKit.vue.d.ts +2 -2
  145. package/dist/components/formkit/FileUploader.vue.d.ts +2 -2
  146. package/dist/components/formkit/MiscFields.vue.d.ts +2 -2
  147. package/dist/components/formkit/Toggle.vue.d.ts +2 -2
  148. package/dist/components/layout/BottomMenu.d.ts +27 -0
  149. package/dist/components/layout/BottomMenu.d.ts.map +1 -0
  150. package/dist/components/layout/Layout.d.ts +58 -0
  151. package/dist/components/layout/Layout.d.ts.map +1 -0
  152. package/dist/components/layout/SidebarMenu.d.ts +38 -0
  153. package/dist/components/layout/SidebarMenu.d.ts.map +1 -0
  154. package/dist/components/layout/TabbedLayout.d.ts +42 -0
  155. package/dist/components/layout/TabbedLayout.d.ts.map +1 -0
  156. package/dist/components/layout/Tabs.d.ts +31 -0
  157. package/dist/components/layout/Tabs.d.ts.map +1 -0
  158. package/dist/components/layout/TabsBody.d.ts +23 -0
  159. package/dist/components/layout/TabsBody.d.ts.map +1 -0
  160. package/dist/components/layout/TabsNav.d.ts +35 -0
  161. package/dist/components/layout/TabsNav.d.ts.map +1 -0
  162. package/dist/components/lightbox/Lightbox.vue.d.ts.map +1 -1
  163. package/dist/components/whatsapp/form/MsgTemplate.vue.d.ts +4 -3
  164. package/dist/components/whatsapp/form/TextVariableExamples.vue.d.ts +2 -2
  165. package/dist/index.cjs +621 -686
  166. package/dist/index.mjs +621 -686
  167. package/dist/plugins/modal.d.ts +5 -0
  168. package/dist/plugins/modal.d.ts.map +1 -1
  169. package/dist/style.css +146 -131
  170. package/dist/styles.css +14073 -0
  171. package/dist/utils/objects.d.ts +1 -0
  172. package/dist/vue.css +14073 -0
  173. package/package.json +1 -1
  174. package/src/components/Carousel.vue +1 -0
  175. package/src/components/Icon/Icon.vue +1 -1
  176. package/src/components/Modal.vue +0 -1
  177. package/src/components/ModalForm.vue +24 -19
  178. package/src/components/Zoomer.vue +24 -4
  179. package/src/components/form/FieldArray.vue +24 -14
  180. package/src/components/form/index.ts +2 -3
  181. package/src/components/form/inputs/FileUpload.vue +21 -6
  182. package/src/components/form/inputs/NumberInput.vue +9 -7
  183. package/src/components/form/inputs/RichText/index.vue +1 -1
  184. package/src/components/form/inputs/Upload/UploadInput.vue +20 -12
  185. package/src/components/lightbox/Lightbox.vue +32 -33
  186. package/src/plugins/modal.ts +5 -0
  187. package/dist/common-C_IH8b5S.cjs +0 -12580
  188. package/dist/common-DoeNgx31.js +0 -12579
  189. package/dist/components/AddressSaerch.vue.d.ts +0 -7
  190. package/dist/components/AddressSaerch.vue.d.ts.map +0 -1
  191. package/dist/components/Popover.vue.d.ts +0 -10
  192. package/dist/components/Popover.vue.d.ts.map +0 -1
  193. package/dist/components/form/inputs/RichText/Toolbar.vue.d.ts +0 -14
  194. package/dist/components/form/inputs/RichText/Toolbar.vue.d.ts.map +0 -1
  195. package/dist/components/form/inputs/RichText/formatting.d.ts +0 -11
  196. package/dist/components/form/inputs/RichText/formatting.d.ts.map +0 -1
  197. package/dist/components/form/inputs/RichText/richtext-types.d.ts +0 -3
  198. package/dist/components/form/inputs/RichText/richtext-types.d.ts.map +0 -1
  199. package/dist/components/form/inputs/Upload/UploadFile.vue.d.ts +0 -86
  200. package/dist/components/form/inputs/Upload/UploadFile.vue.d.ts.map +0 -1
  201. package/dist/components/sortable/Animation.d.ts +0 -43
  202. package/dist/components/sortable/Animation.d.ts.map +0 -1
  203. package/dist/components/sortable/BrowserInfo.d.ts +0 -7
  204. package/dist/components/sortable/BrowserInfo.d.ts.map +0 -1
  205. package/dist/components/sortable/EventDispatcher.d.ts +0 -13
  206. package/dist/components/sortable/EventDispatcher.d.ts.map +0 -1
  207. package/dist/components/sortable/PluginManager.d.ts +0 -27
  208. package/dist/components/sortable/PluginManager.d.ts.map +0 -1
  209. package/dist/components/sortable/Sortable.d.ts +0 -81
  210. package/dist/components/sortable/Sortable.d.ts.map +0 -1
  211. package/dist/components/sortable/index.d.ts +0 -5
  212. package/dist/components/sortable/index.d.ts.map +0 -1
  213. package/dist/components/sortable/utils.d.ts +0 -49
  214. package/dist/components/sortable/utils.d.ts.map +0 -1
  215. package/dist/composables/drag-n-drop/useDraggable.d.ts +0 -2
  216. package/dist/composables/drag-n-drop/useDraggable.d.ts.map +0 -1
  217. package/dist/editor-CUDRLdmS.js +0 -4
  218. package/dist/editor-Cu374vEW.cjs +0 -4
  219. package/dist/editor-a8DSbb6P.js +0 -4
  220. package/dist/editor-xBt_vIha.cjs +0 -4
  221. package/dist/heic2any-8wMqMfB_.js +0 -933
  222. package/dist/heic2any-BrqcNzfV.js +0 -935
  223. package/dist/heic2any-C8KwH72N.cjs +0 -934
  224. package/dist/heic2any-k9wDCKka.cjs +0 -932
  225. package/dist/index-DiG-xM9T.cjs +0 -35016
  226. package/dist/index-nGuSAiY2.js +0 -35017
  227. package/dist/plugins/drag-n-drop/draggable.d.ts +0 -4
  228. package/dist/plugins/drag-n-drop/draggable.d.ts.map +0 -1
  229. package/dist/plugins/drag-n-drop/droppable.d.ts +0 -4
  230. package/dist/plugins/drag-n-drop/droppable.d.ts.map +0 -1
  231. package/dist/plugins/drag-n-drop/index.d.ts +0 -5
  232. package/dist/plugins/drag-n-drop/index.d.ts.map +0 -1
  233. package/dist/plugins/drag-n-drop/useDraggable.d.ts +0 -8
  234. package/dist/plugins/drag-n-drop/useDraggable.d.ts.map +0 -1
  235. package/dist/plugins/drag-n-drop/useDroppable.d.ts +0 -7
  236. package/dist/plugins/drag-n-drop/useDroppable.d.ts.map +0 -1
  237. package/dist/types/materialIcon.d.ts +0 -2
  238. package/dist/types/materialIcon.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/vue",
3
3
  "type": "module",
4
- "version": "0.0.1143",
4
+ "version": "0.0.1147",
5
5
  "description": "Bagel core sdk packages",
6
6
  "author": {
7
7
  "name": "Neveh Allon",
@@ -238,6 +238,7 @@ async function disableDrag() {
238
238
  }
239
239
 
240
240
  function startDrag(e: MouseEvent) {
241
+ e.stopPropagation()
241
242
  if (e.button !== 0 || !props.freeDrag || !isSliderAvailable) return
242
243
 
243
244
  clearAutoplay()
@@ -31,7 +31,7 @@ const isFaBrand = $computed(() => FONT_AWESOME_BRANDS_ICONS.includes(iconRender)
31
31
  </span>
32
32
  <i
33
33
  v-else-if="iconRenderType === 'font-awesome'"
34
- class="fa" :class="[`fa-${iconRender}`, { 'fa-brands': isFaBrand }]"
34
+ class="fa far" :class="[`fa-${iconRender}`, { 'fa-brands': isFaBrand }]"
35
35
  :style="{ 'fontSize': `${size}rem`, color, 'font-variation-settings': `'wght' ${weight || 400}` }"
36
36
  />
37
37
  </template>
@@ -147,7 +147,6 @@ onUnmounted(() => {
147
147
  display: flex;
148
148
  justify-content: space-between;
149
149
  align-items: center;
150
- gap: 0;
151
150
  }
152
151
  .modal-no-title{
153
152
  width: calc(100% + 2rem);
@@ -1,6 +1,6 @@
1
1
  <script lang="ts" setup>
2
- import type { BglFormSchemaFnT, BtnOptions, BagelForm } from '@bagelink/vue'
3
- import { Btn, Modal, useBagel, BagelForm2 } from '@bagelink/vue'
2
+ import type { BglFormSchemaFnT, BtnOptions } from '@bagelink/vue'
3
+ import { Btn, Modal, useBagel, BagelForm } from '@bagelink/vue'
4
4
 
5
5
  const props = defineProps<{
6
6
  side?: boolean
@@ -11,13 +11,14 @@ const props = defineProps<{
11
11
  schema: BglFormSchemaFnT<any>
12
12
 
13
13
  onSubmit?: (formData: any) => Promise<void>
14
-
14
+ onDuplicate?: (formData: any) => Promise<void>
15
+ submitText?: string
16
+ cancelText?: string
17
+ deleteText?: string
18
+ duplicateText?: string
15
19
  onDelete?: (id: string) => void
16
-
17
20
  visible?: boolean
18
-
19
21
  onError?: (err: any) => void
20
-
21
22
  modelValue?: { [key: string]: any }
22
23
  }>()
23
24
 
@@ -76,34 +77,38 @@ defineExpose({ setFormValues })
76
77
  :title
77
78
  @update:visible="($event: boolean) => emit('update:visible', $event)"
78
79
  >
79
- <BagelForm2
80
+ <BagelForm
80
81
  v-if="visible"
81
82
  ref="form"
82
83
  v-model="formData"
83
84
  :schema="computedFormSchema"
84
85
  @submit="runSubmit"
85
86
  />
86
- <!-- <BagelForm
87
- v-if="visible"
88
- ref="form"
89
- v-model="formData"
90
- :schema="computedFormSchema"
91
- @submit="runSubmit"
92
- /> -->
93
87
  <template v-if="onDelete || onSubmit" #footer>
94
- <div>
95
- <Btn thin flat value="Cancel" @click="closeModal" />
88
+ <div class="flex gap-0">
89
+ <Btn thin flat :value="cancelText || 'Cancel'" @click="closeModal" />
96
90
  <Btn
97
- v-if="onDelete"
91
+ v-if="onDelete && formData.id"
98
92
  thin
99
93
  icon="delete"
100
94
  flat
101
- value="Delete"
95
+ :value="deleteText || 'Delete'"
102
96
  color="red"
103
97
  @click="runDelete"
104
98
  />
105
99
  </div>
106
- <Btn value="Submit" @click="runSubmit" />
100
+ <div class="flex gap-05">
101
+ <Btn
102
+ v-if="onDuplicate"
103
+ outline
104
+ class="px-1"
105
+ icon="copy_all"
106
+ flat
107
+ :value="duplicateText || 'Duplicate'"
108
+ @click="onDuplicate"
109
+ />
110
+ <Btn v-if="onSubmit" :value="submitText || 'Submit'" @click="runSubmit" />
111
+ </div>
107
112
  </template>
108
113
  </Modal>
109
114
  </template>
@@ -65,9 +65,12 @@ let panLocked = $ref(true)
65
65
  let raf = $ref<number | undefined>()
66
66
  let tapDetector = $ref<TapDetector | undefined>()
67
67
 
68
+ let translateXValue = $ref(0)
69
+ let translateYValue = $ref(0)
70
+
68
71
  const wrapperStyle = $computed(() => {
69
- const translateXValue = containerWidth * animTranslateX
70
- const translateYValue = containerHeight * animTranslateY
72
+ translateXValue = containerWidth * animTranslateX
73
+ translateYValue = containerHeight * animTranslateY
71
74
  return {
72
75
  transform: [
73
76
  `translate(${translateXValue}px, ${translateYValue}px)`,
@@ -169,12 +172,18 @@ function calcTranslateLimit() {
169
172
  const imageToContainerRatio = containerWidth / aspectRatio / containerHeight
170
173
  let translateLimitY = (scale * imageToContainerRatio - 1) / 2
171
174
  if (translateLimitY < 0) translateLimitY = 0
172
- return { x: (scale - 1) / 2, y: translateLimitY }
175
+ return {
176
+ x: scale - 1, // Allow full movement to edges horizontally
177
+ y: translateLimitY * 2 // Allow full movement to edges vertically
178
+ }
173
179
  }
174
180
  const imageToContainerRatio = containerHeight * aspectRatio / containerWidth
175
181
  let translateLimitX = (scale * imageToContainerRatio - 1) / 2
176
182
  if (translateLimitX < 0) translateLimitX = 0
177
- return { x: translateLimitX, y: (scale - 1) / 2 }
183
+ return {
184
+ x: translateLimitX * 2, // Allow full movement to edges horizontally
185
+ y: scale - 1 // Allow full movement to edges vertically
186
+ }
178
187
  }
179
188
 
180
189
  function getMarginDirection() {
@@ -353,6 +362,15 @@ function onWindowResize() {
353
362
  </template>
354
363
 
355
364
  <style scoped>
365
+ .zoomer-debug {
366
+ position: fixed;
367
+ top: 0;
368
+ right: 0;
369
+ background-color: rgba(0, 0, 0, 0.5);
370
+ color: white;
371
+ z-index: 1000;
372
+ height: 100px
373
+ }
356
374
  .vue-zoomer {
357
375
  overflow: hidden;
358
376
  }
@@ -360,6 +378,8 @@ function onWindowResize() {
360
378
  transform-origin: 50% 50%;
361
379
  width: 100%;
362
380
  height: 100%;
381
+ max-width: 100vw;
382
+ max-height: 100vh;
363
383
  }
364
384
  .zoomer > img {
365
385
  vertical-align: top;
@@ -78,21 +78,22 @@ const computedField = $computed(
78
78
  {{ label }}
79
79
  </p>
80
80
 
81
- <div v-if="schema" class="-ms-05 ps-05 border-start">
82
- <div v-for="(_, i) in data" :key="i" outline thin class="mb-05 itemBox transition p-05">
81
+ <div v-if="schema" class="ps-025 border-start">
82
+ <div v-for="(_, i) in data" :key="i" outline thin class="mb-05 itemBox transition ps-05 pb-025 pt-025 radius-05 gap-05 overflow-hidden">
83
83
  <BglForm v-model="data[i]" :schema="schema" @update:model-value="emitValue" />
84
- <Btn
85
- v-if="props.delete"
86
- icon="delete"
87
- value="Delete"
88
- class="txt10 opacity-7 color-red"
89
- thin
90
- flat
91
- @click="deleteItem(i)"
92
- />
84
+ <div class="bg-gray-80 -my-05 px-025 pt-065 txt-center">
85
+ <Btn
86
+ v-if="props.delete"
87
+ icon="delete"
88
+ class="txt10 opacity-7"
89
+ thin
90
+ flat
91
+ @click="deleteItem(i)"
92
+ />
93
+ </div>
93
94
  </div>
94
95
  <Btn v-if="add" thin icon="add" color="gray" class="txt12" @click="addItem">
95
- <p>Add {{ label }}</p>
96
+ <p>{{ label }}</p>
96
97
  </Btn>
97
98
  </div>
98
99
  <template v-else>
@@ -103,9 +104,15 @@ const computedField = $computed(
103
104
 
104
105
  <style>
105
106
  .itemBox{
106
- /* border-top: 2px solid var(--bgl-gray); */
107
- /* border-bottom: 2px solid var(--bgl-gray); */
108
107
  background: var(--input-bg);
108
+ grid-template-columns: 1fr auto;
109
+ display: grid;
110
+ --label-font-size: 0.6rem;
111
+ --input-height: 30px;
112
+ --input-font-size: 14px;
113
+ }
114
+ .pt-065{
115
+ padding-top: 0.65rem;
109
116
  }
110
117
 
111
118
  .itemBox .bagel-input input,
@@ -114,4 +121,7 @@ const computedField = $computed(
114
121
  .itemBox .custom-select .input {
115
122
  background: var(--bgl-white) !important;
116
123
  }
124
+ .itemBox .bagel-input{
125
+ margin-bottom: 0.15rem !important;
126
+ }
117
127
  </style>
@@ -1,6 +1,5 @@
1
- export { default as BagelForm2 } from './BagelForm.vue'
1
+ export { default as BglForm } from './BagelForm.vue'
2
+ export { default as BagelForm } from './BagelForm.vue'
2
3
  export { default as BglField } from './BglField.vue'
3
- export { default as BglForm } from './BglForm.vue'
4
- export { default as BagelForm } from './BglForm.vue'
5
4
  export { default as FieldArray } from './FieldArray.vue'
6
5
  export * from './inputs'
@@ -43,6 +43,9 @@ const {
43
43
  accept?: string
44
44
  required?: boolean
45
45
  disabled?: boolean
46
+ dropPlaceholder?: string
47
+ noFilePlaceholder?: string
48
+ btnPlaceholder?: string
46
49
  }>()
47
50
 
48
51
  const emit = defineEmits(['update:modelValue', 'addFileStart'])
@@ -258,10 +261,9 @@ function drop(e: DragEvent) {
258
261
  class="px-1-5"
259
262
  icon="upload"
260
263
  outline
264
+ :value="btnPlaceholder || 'Upload'"
261
265
  @click="browse"
262
- >
263
- Upload
264
- </Btn>
266
+ />
265
267
 
266
268
  <div
267
269
  v-for="file in storageFiles"
@@ -295,10 +297,21 @@ function drop(e: DragEvent) {
295
297
  />
296
298
  <p
297
299
  v-lightbox="{ src: file.url, download: true }"
298
- class="ellipsis-1 word-break-all h-20 m-0"
300
+ class="ellipsis-1 word-break-all h-20 m-0 color-black"
299
301
  >
300
302
  {{ file.name }}
301
303
  </p>
304
+
305
+ <div class="flex gap-025 rounded pe-1 ps-05 py-025 bg-gray-80 -my-1 ">
306
+ <Icon icon="draft" :size="1.5" />
307
+ <p
308
+ v-lightbox="{ src: file.url, download: true }"
309
+ class="ellipsis-1 word-break-all h-20 m-0 color-black txt16"
310
+ >
311
+ {{ file.name }}
312
+ </p>
313
+ </div>
314
+
302
315
  <Btn
303
316
  thin
304
317
  flat
@@ -312,7 +325,7 @@ function drop(e: DragEvent) {
312
325
  v-if="!storageFiles.length && !fileQueue.length"
313
326
  class="txt-gray txt-12"
314
327
  >
315
- No file selected
328
+ {{ noFilePlaceholder || 'No file selected' }}
316
329
  </span>
317
330
  </Card>
318
331
  <div
@@ -482,7 +495,9 @@ function drop(e: DragEvent) {
482
495
  class="p-1 flex column hover fileUploadPlaceHolder justify-content-center mb-05"
483
496
  >
484
497
  <Icon icon="upload_2" />
485
- Drop files here or click to upload
498
+ <span class=" pretty balance">
499
+ {{ dropPlaceholder || 'Drag and Drop files here or click to upload' }}
500
+ </span>
486
501
  </p>
487
502
  </slot>
488
503
  </div>
@@ -44,23 +44,23 @@ const {
44
44
 
45
45
  const emit = defineEmits(['update:modelValue'])
46
46
 
47
- let numberValue = $ref(Number.parseFloat(`${modelValue}`) || 0)
47
+ let numberValue = $ref(Number.parseFloat(`${modelValue}`) || undefined)
48
48
 
49
49
  const btnLayouts: NumberLayout[] = ['horizontal', 'vertical']
50
50
 
51
- const canAdd = $computed(() => !(max !== undefined && (numberValue + step) > max))
52
- const canDecrement = $computed(() => !(min !== undefined && (numberValue - step) < min))
51
+ const canAdd = $computed(() => !(max !== undefined && (numberValue || 0 + step) > max))
52
+ const canDecrement = $computed(() => !(min !== undefined && (numberValue || 0 - step) < min))
53
53
 
54
54
  // Methods
55
55
  function increment() {
56
56
  if (!canAdd) return
57
- numberValue += step
57
+ numberValue = (numberValue || 0) + step
58
58
  emit('update:modelValue', numberValue)
59
59
  }
60
60
 
61
61
  function decrement() {
62
62
  if (!canDecrement) return
63
- numberValue -= step
63
+ numberValue = (numberValue || 0) - step
64
64
  emit('update:modelValue', numberValue)
65
65
  }
66
66
 
@@ -84,7 +84,7 @@ function inputHandler() {
84
84
  }
85
85
 
86
86
  watch(() => numberValue, () => {
87
- formattedValue = formatNumber(numberValue)
87
+ formattedValue = numberValue !== undefined ? formatNumber(numberValue) : ''
88
88
  }, { immediate: true })
89
89
 
90
90
  watch(() => modelValue, (newVal) => {
@@ -103,7 +103,9 @@ watch(() => modelValue, (newVal) => {
103
103
  }"
104
104
  >
105
105
  <div :for="id">
106
- {{ label }}
106
+ <label>
107
+ {{ label }}
108
+ </label>
107
109
  <div class="gap-025" :class="{ 'column flex': layout === 'vertical', 'flex': layout === 'horizontal' }">
108
110
  <Btn v-if="layout && btnLayouts.includes(layout)" flat icon="add" class="radius" :class="[{ 'bgl-big-ctrl-num-btn': layout === 'vertical' }]" tabindex="-1" @click="increment" />
109
111
 
@@ -88,7 +88,7 @@ watch(() => editor.state.content, (newValue) => {
88
88
  <template>
89
89
  <div class="bagel-input">
90
90
  <label>{{ label }}</label>
91
- <div class="rich-text-editor rounded pt-05 px-05 pb-075 mb-05" :class="{ 'fullscreen-mode': editor.state.isFullscreen }">
91
+ <div class="rich-text-editor rounded pt-05 px-05 pb-075" :class="{ 'fullscreen-mode': editor.state.isFullscreen }">
92
92
  <EditorToolbar
93
93
  v-if="editor.state.hasInit" :config="toolbarConfig" :selectedStyles="editor.state.selectedStyles"
94
94
  @action="commands.execute"
@@ -18,6 +18,10 @@ const props = withDefaults(defineProps<{
18
18
  required?: boolean
19
19
  disabled?: boolean
20
20
  baseURL?: string
21
+ dropPlaceholder?: string
22
+ noFilePlaceholder?: string
23
+ btnPlaceholder?: string
24
+
21
25
  }>(), {
22
26
  height: '215px',
23
27
  theme: 'dropzone',
@@ -155,10 +159,9 @@ watch(() => props.dirPath, () => {
155
159
  class="px-1-5"
156
160
  icon="upload"
157
161
  outline
162
+ :value="btnPlaceholder || 'Upload'"
158
163
  @click="browse"
159
- >
160
- Upload
161
- </Btn>
164
+ />
162
165
 
163
166
  <template v-for="path_key in pathKeys" :key="path_key">
164
167
  <div class="txt-gray txt-12 flex">
@@ -184,12 +187,15 @@ watch(() => props.dirPath, () => {
184
187
  :href="pathToUrl(path_key)"
185
188
  :download="path_key.split('/').pop()"
186
189
  />
187
- <p
188
- v-lightbox="{ src: pathToUrl(path_key), download: true }"
189
- class="ellipsis-1 word-break-all h-20 m-0"
190
- >
191
- {{ path_key.split('/').pop() }}
192
- </p>
190
+ <div class="flex gap-025 rounded pe-1 ps-05 py-025 bg-gray-80 -my-1 ">
191
+ <Icon icon="draft" :size="1.5" />
192
+ <p
193
+ v-lightbox="{ src: pathToUrl(path_key), download: true }"
194
+ class="ellipsis-1 word-break-all h-20 m-0 color-black txt16"
195
+ >
196
+ {{ path_key.split('/').pop() }}
197
+ </p>
198
+ </div>
193
199
  </div>
194
200
  </div>
195
201
  </template>
@@ -198,7 +204,7 @@ watch(() => props.dirPath, () => {
198
204
  v-if="!pathKeys.length && !fileQueue.length"
199
205
  class="txt-gray txt-12"
200
206
  >
201
- No file selected
207
+ {{ noFilePlaceholder || 'No file selected' }}
202
208
  </span>
203
209
  </Card>
204
210
 
@@ -360,9 +366,11 @@ watch(() => props.dirPath, () => {
360
366
  :fileQueue
361
367
  :browse
362
368
  >
363
- <p class="p-1 flex column hover fileUploadPlaceHolder justify-content-center mb-05">
369
+ <p class="p-1 flex column hover fileUploadPlaceHolder justify-content-center mb-05 ">
364
370
  <Icon icon="upload_2" />
365
- Drop files here or click to upload
371
+ <span class=" pretty balance">
372
+ {{ dropPlaceholder || 'Drag and Drop files here or click to upload' }}
373
+ </span>
366
374
  </p>
367
375
  </slot>
368
376
  </div>
@@ -1,20 +1,18 @@
1
1
  <script setup lang="ts">
2
2
  import type { LightboxItem } from './lightbox.types'
3
3
 
4
- import { BglVideo, Btn, Icon, Zoomer, Image, normalizeURL } from '@bagelink/vue'
4
+ import { BglVideo, Btn, Icon, Zoomer, Image, normalizeURL, Carousel } from '@bagelink/vue'
5
5
  import { watch } from 'vue'
6
6
 
7
7
  let isOpen = $ref(false)
8
- let currentItem = $ref<LightboxItem>()
9
8
  let group = $ref<LightboxItem[]>([])
10
9
  let currentIndex = $ref(0)
10
+ let currentItem = $computed<LightboxItem>(() => group[currentIndex])
11
11
 
12
12
  function open(item: LightboxItem, groupItems?: LightboxItem[]) {
13
13
  isOpen = true
14
- currentItem = item
15
- if (groupItems === undefined) return
16
- group = groupItems
17
- currentIndex = groupItems.findIndex(({ src }) => item.src === src)
14
+ group = groupItems || [item]
15
+ currentIndex = group.findIndex(({ src }) => item.src === src)
18
16
  document.addEventListener('keydown', handleKeydown)
19
17
  }
20
18
 
@@ -78,16 +76,18 @@ defineExpose({ open, close })
78
76
  @keydown.right="next"
79
77
  @click="clickOutside"
80
78
  >
81
- <div v-if="group && group.length > 1" class="navigation flex space-between px-3 w-100 absolute m_px-1">
79
+ <div v-if="group && group.length > 1" class="navigation flex space-between px-3 w-100 absolute m_px-1 m_none z-9">
82
80
  <Btn
83
- class="navigation-btn oval"
81
+ class="oval opacity-8"
84
82
  icon="arrow_back"
83
+ color="black"
85
84
  @click="prev"
86
85
  />
87
86
 
88
87
  <Btn
89
- class="navigation-btn oval"
88
+ class="oval opacity-8"
90
89
  icon="arrow_forward"
90
+ color="black"
91
91
  @click="next"
92
92
  />
93
93
  </div>
@@ -113,32 +113,31 @@ defineExpose({ open, close })
113
113
  />
114
114
  <div v-if="!currentItem?.openFile && !currentItem?.download" />
115
115
  </div>
116
- <div class="bgl-lightbox-item">
117
- <template v-if="currentItem?.type === 'image'">
118
- <Zoomer v-model:zoom="zoom" :disabled="!currentItem?.enableZoom" :mouse-wheel-to-zoom="false">
119
- <Image :draggable="false" :src="currentItem?.src" alt="Preview" class="vw90 lightbox-image" />
116
+
117
+ <Carousel v-model:index="currentIndex" :items="1" class="bgl-lightbox-item" :class="{ zoomed: zoom > 1 }" :freeDrag="zoom === 1">
118
+ <template v-for="item in group" :key="item.src">
119
+ <Zoomer v-if="item.type === 'image'" v-model:zoom="zoom" :disabled="!item?.enableZoom" :mouse-wheel-to-zoom="false">
120
+ <Image :draggable="false" :src="item?.src" alt="Preview" class="vw90 lightbox-image" />
120
121
  </Zoomer>
121
- </template>
122
- <template v-else-if="currentItem?.type === 'video'">
122
+
123
123
  <BglVideo
124
- :src="currentItem?.src"
124
+ v-else-if="item?.type === 'video'"
125
+ :src="item?.src"
125
126
  autoplay
126
127
  controls
127
128
  class="vw90"
128
129
  />
129
- </template>
130
- <template v-else-if="currentItem?.type === 'pdf'">
130
+
131
131
  <embed
132
- :src="normalizeURL(currentItem?.src)"
132
+ v-else-if="item?.type === 'pdf'"
133
+ :src="normalizeURL(item?.src)"
133
134
  type="application/pdf"
134
135
  width="100%"
135
136
  height="1080"
136
- :title="currentItem?.name"
137
+ :title="item?.name"
137
138
  class="vw90"
138
139
  >
139
- </template>
140
- <template v-else>
141
- <div class="file-info txt-white flex m_block align-items-start gap-025">
140
+ <div v-else class="file-info txt-white flex m_block align-items-start gap-025">
142
141
  <Icon class="m-0 m_none" icon="draft" :size="10" weight="12" />
143
142
  <Icon class="m-0 none m_block m_-mb-1" icon="draft" :size="4" weight="2" />
144
143
 
@@ -146,21 +145,21 @@ defineExpose({ open, close })
146
145
  <p class="mx-0 light">
147
146
  File:
148
147
  <span class="semi word-break-all ">
149
- {{ currentItem?.name }}
148
+ {{ item?.name }}
150
149
  </span>
151
150
  </p>
152
151
  <p class="mx-0 ">
153
152
  Type:
154
153
  <span class="semi">
155
- {{ currentItem?.type }}
154
+ {{ item?.type }}
156
155
  </span>
157
156
  </p>
158
- <Btn :href="currentItem?.src" target="_blank" round thin class="mt-1" value="Open file" />
157
+ <Btn :href="item?.src" target="_blank" round thin class="mt-1" value="Open file" />
159
158
  <!-- <a :href="currentItem?.src" target="_blank">Open file</a> -->
160
159
  </div>
161
160
  </div>
162
161
  </template>
163
- </div>
162
+ </Carousel>
164
163
  <div
165
164
  v-if="group && group.length > 1"
166
165
  class="flex justify-content-center mt-2 overflow
@@ -222,11 +221,16 @@ defineExpose({ open, close })
222
221
  }
223
222
 
224
223
  .bgl-lightbox-item * {
225
- max-width: 90%;
226
224
  max-height: calc(80vh - 90px);
227
225
  border-radius: 3px;
228
226
  margin: auto;
229
227
  animation: 200ms ease bgl-lightbox-load;
228
+ transition: max-height 200ms ease;
229
+ }
230
+
231
+ .bgl-lightbox-item.zoomed * {
232
+ max-height: calc(100vh - 90px);
233
+ height: calc(100vh - 90px);
230
234
  }
231
235
 
232
236
  .navigation {
@@ -234,11 +238,6 @@ defineExpose({ open, close })
234
238
  transform: translateY(-50%);
235
239
  }
236
240
 
237
- .navigation-btn {
238
- width: var(--input-height);
239
- height: var(--input-height);
240
- }
241
-
242
241
  .thumbnail {
243
242
  height: 50px;
244
243
  width: 50px;
@@ -17,7 +17,12 @@ export interface ModalOptions {
17
17
  export interface ModalFormOptions extends ModalOptions {
18
18
  'schema': BglFormSchemaFnT<any>
19
19
  'onSubmit'?: (formData: any) => any
20
+ 'submitText'?: string
21
+ 'cancelText'?: string
22
+ 'deleteText'?: string
23
+ 'duplicateText'?: string
20
24
  'onDelete'?: (id: string) => Promise<void>
25
+ 'onDuplicate'?: (formData: any) => Promise<void>
21
26
  'onError'?: (err: any) => void
22
27
  'modelValue'?: { [key: string]: any }
23
28
  'onUpdate:modelValue'?: (val: any) => void