@bagelink/vue 0.0.466 → 0.0.473

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 (180) hide show
  1. package/dist/components/Accordion.vue.d.ts.map +1 -1
  2. package/dist/components/AccordionItem.vue.d.ts.map +1 -1
  3. package/dist/components/Alert.vue.d.ts +2 -2
  4. package/dist/components/Alert.vue.d.ts.map +1 -1
  5. package/dist/components/Avatar.vue.d.ts.map +1 -1
  6. package/dist/components/Badge.vue.d.ts +2 -2
  7. package/dist/components/Badge.vue.d.ts.map +1 -1
  8. package/dist/components/BglVideo.vue.d.ts +2 -2
  9. package/dist/components/BglVideo.vue.d.ts.map +1 -1
  10. package/dist/components/Btn.vue.d.ts +2 -0
  11. package/dist/components/Btn.vue.d.ts.map +1 -1
  12. package/dist/components/Card.vue.d.ts.map +1 -1
  13. package/dist/components/Carousel.vue.d.ts +4 -2
  14. package/dist/components/Carousel.vue.d.ts.map +1 -1
  15. package/dist/components/DataPreview.vue.d.ts.map +1 -1
  16. package/dist/components/Drop.vue.d.ts +34 -0
  17. package/dist/components/Drop.vue.d.ts.map +1 -0
  18. package/dist/components/FileUploader.vue.d.ts +60 -0
  19. package/dist/components/FileUploader.vue.d.ts.map +1 -0
  20. package/dist/components/Flag.vue.d.ts +2 -2
  21. package/dist/components/Flag.vue.d.ts.map +1 -1
  22. package/dist/components/ListItem.vue.d.ts.map +1 -1
  23. package/dist/components/ListView.vue.d.ts.map +1 -1
  24. package/dist/components/MapEmbed.vue.d.ts +2 -2
  25. package/dist/components/MapEmbed.vue.d.ts.map +1 -1
  26. package/dist/components/MaterialIcon.vue.d.ts.map +1 -1
  27. package/dist/components/Modal.vue.d.ts +2 -1
  28. package/dist/components/Modal.vue.d.ts.map +1 -1
  29. package/dist/components/ModalConfirm.vue.d.ts.map +1 -1
  30. package/dist/components/ModalForm.vue.d.ts.map +1 -1
  31. package/dist/components/NavBar.vue.d.ts.map +1 -1
  32. package/dist/components/PageTitle.vue.d.ts.map +1 -1
  33. package/dist/components/TableSchema.vue.d.ts.map +1 -1
  34. package/dist/components/Title.vue.d.ts.map +1 -1
  35. package/dist/components/dashboard/Lineart.vue.d.ts.map +1 -1
  36. package/dist/components/dashboard/index.d.ts.map +1 -1
  37. package/dist/components/form/BglField.vue.d.ts.map +1 -1
  38. package/dist/components/form/BglForm.vue.d.ts +4 -2
  39. package/dist/components/form/BglForm.vue.d.ts.map +1 -1
  40. package/dist/components/form/ItemRef.vue.d.ts +1 -0
  41. package/dist/components/form/ItemRef.vue.d.ts.map +1 -1
  42. package/dist/components/form/index.d.ts.map +1 -1
  43. package/dist/components/form/inputs/CheckInput.vue.d.ts.map +1 -1
  44. package/dist/components/form/inputs/Checkbox.vue.d.ts.map +1 -1
  45. package/dist/components/form/inputs/ColorPicker.vue.d.ts.map +1 -1
  46. package/dist/components/form/inputs/DateInput.vue.d.ts.map +1 -1
  47. package/dist/components/form/inputs/DatePicker.vue.d.ts.map +1 -1
  48. package/dist/components/form/inputs/FileUpload.vue.d.ts +2 -1
  49. package/dist/components/form/inputs/FileUpload.vue.d.ts.map +1 -1
  50. package/dist/components/form/inputs/JSONInput.vue.d.ts.map +1 -1
  51. package/dist/components/form/inputs/RadioPillsInput.vue.d.ts.map +1 -1
  52. package/dist/components/form/inputs/RichText.vue.d.ts.map +1 -1
  53. package/dist/components/form/inputs/SelectField.vue.d.ts +1 -4
  54. package/dist/components/form/inputs/SelectField.vue.d.ts.map +1 -1
  55. package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
  56. package/dist/components/form/inputs/SignaturePad.vue.d.ts +56 -0
  57. package/dist/components/form/inputs/SignaturePad.vue.d.ts.map +1 -0
  58. package/dist/components/form/inputs/TableField.vue.d.ts.map +1 -1
  59. package/dist/components/form/inputs/TelInput.vue.d.ts +2 -2
  60. package/dist/components/form/inputs/TelInput.vue.d.ts.map +1 -1
  61. package/dist/components/form/inputs/TextInput.vue.d.ts.map +1 -1
  62. package/dist/components/form/inputs/ToggleInput.vue.d.ts.map +1 -1
  63. package/dist/components/form/inputs/index.d.ts +1 -0
  64. package/dist/components/form/inputs/index.d.ts.map +1 -1
  65. package/dist/components/index.d.ts.map +1 -1
  66. package/dist/components/layout/BottomMenu.vue.d.ts.map +1 -1
  67. package/dist/components/layout/Layout.vue.d.ts +2 -2
  68. package/dist/components/layout/Layout.vue.d.ts.map +1 -1
  69. package/dist/components/layout/SidebarMenu.vue.d.ts.map +1 -1
  70. package/dist/components/layout/TabbedLayout.vue.d.ts.map +1 -1
  71. package/dist/components/layout/Tabs.vue.d.ts.map +1 -1
  72. package/dist/components/layout/TabsBody.vue.d.ts.map +1 -1
  73. package/dist/components/layout/TabsNav.vue.d.ts.map +1 -1
  74. package/dist/components/layout/index.d.ts.map +1 -1
  75. package/dist/index.cjs +17617 -20818
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.mjs +17617 -20818
  78. package/dist/plugins/bagel.d.ts +1 -1
  79. package/dist/plugins/bagel.d.ts.map +1 -1
  80. package/dist/plugins/modal.d.ts +14 -14
  81. package/dist/plugins/modal.d.ts.map +1 -1
  82. package/dist/style.css +333 -309
  83. package/dist/types/BagelForm.d.ts +16 -16
  84. package/dist/types/BagelForm.d.ts.map +1 -1
  85. package/dist/types/BtnOptions.d.ts +1 -1
  86. package/dist/types/BtnOptions.d.ts.map +1 -1
  87. package/dist/types/NavLink.d.ts +2 -2
  88. package/dist/types/NavLink.d.ts.map +1 -1
  89. package/dist/types/file.d.ts +2 -2
  90. package/dist/types/file.d.ts.map +1 -1
  91. package/dist/types/index.d.ts.map +1 -1
  92. package/dist/types/materialIcons.d.ts.map +1 -1
  93. package/dist/utils/BagelFormUtils.d.ts.map +1 -1
  94. package/dist/utils/allCountries.d.ts +2 -2
  95. package/dist/utils/allCountries.d.ts.map +1 -1
  96. package/dist/utils/clickOutside.d.ts.map +1 -1
  97. package/dist/utils/index.d.ts +5 -5
  98. package/dist/utils/index.d.ts.map +1 -1
  99. package/package.json +19 -17
  100. package/src/components/Accordion.vue +10 -10
  101. package/src/components/AccordionItem.vue +47 -47
  102. package/src/components/Alert.vue +21 -21
  103. package/src/components/Avatar.vue +15 -15
  104. package/src/components/Badge.vue +17 -16
  105. package/src/components/BglVideo.vue +43 -43
  106. package/src/components/Btn.vue +67 -65
  107. package/src/components/Card.vue +26 -26
  108. package/src/components/Carousel.vue +130 -134
  109. package/src/components/DataPreview.vue +30 -30
  110. package/src/components/Flag.vue +26 -26
  111. package/src/components/ListItem.vue +13 -13
  112. package/src/components/ListView.vue +2 -2
  113. package/src/components/MapEmbed.vue +33 -33
  114. package/src/components/MaterialIcon.vue +12 -12
  115. package/src/components/Modal.vue +73 -66
  116. package/src/components/ModalConfirm.vue +18 -18
  117. package/src/components/ModalForm.vue +79 -76
  118. package/src/components/NavBar.vue +33 -30
  119. package/src/components/PageTitle.vue +10 -8
  120. package/src/components/TableSchema.vue +126 -113
  121. package/src/components/Title.vue +8 -8
  122. package/src/components/dashboard/Lineart.vue +103 -96
  123. package/src/components/dashboard/index.ts +1 -1
  124. package/src/components/form/BglField.vue +61 -61
  125. package/src/components/form/BglFieldSet.vue +9 -8
  126. package/src/components/form/BglForm.vue +71 -70
  127. package/src/components/form/index.ts +4 -4
  128. package/src/components/form/inputs/CheckInput.vue +25 -23
  129. package/src/components/form/inputs/Checkbox.vue +10 -10
  130. package/src/components/form/inputs/ColorPicker.vue +26 -24
  131. package/src/components/form/inputs/DateInput.vue +39 -39
  132. package/src/components/form/inputs/DatePicker.vue +37 -36
  133. package/src/components/form/inputs/FileUpload.vue +165 -161
  134. package/src/components/form/inputs/FileUploadURL.vue +134 -132
  135. package/src/components/form/inputs/JSONInput.vue +29 -29
  136. package/src/components/form/inputs/RadioPillsInput.vue +49 -49
  137. package/src/components/form/inputs/RichText.vue +62 -63
  138. package/src/components/form/inputs/SelectInput.vue +173 -167
  139. package/src/components/form/inputs/SignaturePad.vue +150 -0
  140. package/src/components/form/inputs/TableField.vue +77 -76
  141. package/src/components/form/inputs/TelInput.vue +280 -285
  142. package/src/components/form/inputs/TextInput.vue +81 -76
  143. package/src/components/form/inputs/ToggleInput.vue +13 -13
  144. package/src/components/form/inputs/index.ts +17 -15
  145. package/src/components/formkit/FileUploader.vue +162 -158
  146. package/src/components/formkit/MiscFields.vue +20 -20
  147. package/src/components/formkit/Toggle.vue +13 -13
  148. package/src/components/index.ts +28 -28
  149. package/src/components/layout/BottomMenu.vue +25 -21
  150. package/src/components/layout/Layout.vue +29 -29
  151. package/src/components/layout/SidebarMenu.vue +31 -27
  152. package/src/components/layout/TabbedLayout.vue +47 -45
  153. package/src/components/layout/Tabs.vue +32 -32
  154. package/src/components/layout/TabsBody.vue +10 -10
  155. package/src/components/layout/TabsNav.vue +44 -44
  156. package/src/components/layout/index.ts +7 -7
  157. package/src/components/layout/tabsManager.ts +6 -6
  158. package/src/index.ts +13 -8
  159. package/src/plugins/bagel.ts +37 -37
  160. package/src/plugins/modal.ts +66 -67
  161. package/src/styles/layout.css +5 -3
  162. package/src/styles/mobilLayout.css +7 -0
  163. package/src/types/BagelForm.ts +27 -27
  164. package/src/types/BtnOptions.ts +13 -13
  165. package/src/types/NavLink.ts +8 -8
  166. package/src/types/file.ts +11 -11
  167. package/src/types/index.ts +16 -12
  168. package/src/types/materialIcons.ts +3249 -3249
  169. package/src/utils/BagelFormUtils.ts +23 -23
  170. package/src/utils/allCountries.ts +11 -12
  171. package/src/utils/clickOutside.ts +6 -6
  172. package/src/utils/index.ts +39 -41
  173. package/src/utils/lang.ts +13 -13
  174. package/src/utils/strings.ts +9 -9
  175. package/tsconfig.json +0 -1
  176. package/vite.config.ts +8 -8
  177. package/dist/components/Popover.vue.d.ts +0 -10
  178. package/dist/components/Popover.vue.d.ts.map +0 -1
  179. package/dist/types/materialIcon.d.ts +0 -2
  180. package/dist/types/materialIcon.d.ts.map +0 -1
@@ -1,41 +1,5 @@
1
- <template>
2
- <div class="BglCarousel" :style="{ height: yHeight }" :class="{ autoHeight }">
3
- <div
4
- :class="{
5
- dragging: isDragging,
6
- clicking: isPressed,
7
- [`slides-${items}`]: true,
8
- allowScroll,
9
- }"
10
- @scrollend="scrollEnd"
11
- @mousedown="startDragging"
12
- class="bgl-slider"
13
- ref="bglSlider">
14
- <div v-if="isDragging" class="blocker" />
15
- <slot />
16
- </div>
17
- <div class="Handlers">
18
- <span @click="prev">
19
- <slot :prev :index="activeSlideIndex" name="prev" />
20
- </span>
21
- <span @click="next">
22
- <slot :next :index="activeSlideIndex" name="next" />
23
- </span>
24
- </div>
25
- </div>
26
- </template>
27
-
28
1
  <script setup lang="ts">
29
- import { onMounted, watch, onUnmounted } from 'vue';
30
-
31
- const bglSlider = $ref<HTMLElement>();
32
- let activeSlideIndex = $ref(0);
33
- let isDragging = $ref(false);
34
- let startX = $ref(0);
35
- let scrollLeft = $ref(0);
36
- let isPressed = $ref(false);
37
-
38
- const emit = defineEmits(['update:index']);
2
+ import { onMounted, onUnmounted, watch } from 'vue'
39
3
 
40
4
  const props = defineProps({
41
5
  autoHeight: {
@@ -58,122 +22,154 @@ const props = defineProps({
58
22
  type: Number,
59
23
  default: 0,
60
24
  },
61
- });
62
-
63
- const disableDrag = () => {
25
+ })
26
+ const emit = defineEmits(['update:index'])
27
+ const bglSlider = $ref<HTMLElement>()
28
+ let activeSlideIndex = $ref(0)
29
+ let isDragging = $ref(false)
30
+ let startX = $ref(0)
31
+ let scrollLeft = $ref(0)
32
+ let isPressed = $ref(false)
33
+
34
+ function disableDrag() {
64
35
  bglSlider
65
36
  ?.querySelectorAll('img')
66
- .forEach((e) => e.setAttribute('draggable', 'false'));
37
+ .forEach((e) => { e.setAttribute('draggable', 'false') })
67
38
 
68
39
  for (const e of (bglSlider?.children as any[] | undefined) || []) {
69
- e.setAttribute('draggable', 'false');
70
- e.addEventListener('click', (e: any) => e.preventDefault());
40
+ e.setAttribute('draggable', 'false')
41
+ e.addEventListener('click', (e: any) => e.preventDefault())
71
42
  }
72
- };
43
+ }
73
44
 
74
- let yHeight = $ref('auto');
75
- const evalHeight = () => {
76
- if (!props.autoHeight || !bglSlider) return;
77
- const slidChildren = bglSlider.children[activeSlideIndex].children;
45
+ let yHeight = $ref('auto')
46
+ function evalHeight() {
47
+ if (!props.autoHeight || !bglSlider) return
48
+ const slidChildren = bglSlider.children[activeSlideIndex].children
78
49
  const height = Array.from(slidChildren)
79
- .map((el) => el.clientHeight)
80
- .reduce((a, b) => a + b, 0);
50
+ .map(el => el.clientHeight)
51
+ .reduce((a, b) => a + b, 0)
81
52
 
82
- yHeight = `${height}px`;
83
- };
53
+ yHeight = `${height}px`
54
+ }
84
55
 
85
- const goToSlide = (index: number) => {
86
- if (!bglSlider || index < 0 || index > bglSlider.children.length - 1) return;
87
- const slider = bglSlider;
88
- const isRTL = getComputedStyle(bglSlider).direction === 'rtl';
89
- const scrollX = slider.offsetWidth * index * (isRTL ? -1 : 1);
90
- slider.scrollTo({ left: scrollX, behavior: 'smooth' });
91
- activeSlideIndex = index;
92
- evalHeight();
93
- };
56
+ function goToSlide(index: number) {
57
+ if (!bglSlider || index < 0 || index > bglSlider.children.length - 1) return
58
+ const slider = bglSlider
59
+ const isRTL = getComputedStyle(bglSlider).direction === 'rtl'
60
+ const scrollX = slider.offsetWidth * index * (isRTL ? -1 : 1)
61
+ slider.scrollTo({ left: scrollX, behavior: 'smooth' })
62
+ activeSlideIndex = index
63
+ evalHeight()
64
+ }
94
65
 
95
- watch(() => props.index, goToSlide);
66
+ watch(() => props.index, goToSlide)
96
67
 
97
68
  watch(
98
69
  () => activeSlideIndex,
99
- (index) => emit('update:index', index)
100
- );
101
-
102
- const scrollEnd = () => {
103
- const slider = bglSlider;
104
- if (!slider || props.items !== 1) return;
105
- const nextSlide = Math.round(slider.scrollLeft / slider.offsetWidth);
106
- goToSlide(nextSlide);
107
- };
108
-
109
- const stopDragging = (e: MouseEvent) => {
110
- isPressed = false;
111
- const slider = bglSlider;
112
- if (!slider) return;
113
- const isDragForward = startX > e.pageX + slider.offsetLeft;
70
+ (index) => { emit('update:index', index) }
71
+ )
72
+
73
+ function scrollEnd() {
74
+ const slider = bglSlider
75
+ if (!slider || props.items !== 1) return
76
+ const nextSlide = Math.round(slider.scrollLeft / slider.offsetWidth)
77
+ goToSlide(nextSlide)
78
+ }
79
+
80
+ function stopDragging(e: MouseEvent) {
81
+ isPressed = false
82
+ const slider = bglSlider
83
+ if (!slider) return
84
+ const isDragForward = startX > e.pageX + slider.offsetLeft
114
85
  if (isDragForward)
115
- activeSlideIndex = Math.ceil(slider.scrollLeft / slider.offsetWidth);
116
- else activeSlideIndex = Math.floor(slider.scrollLeft / slider.offsetWidth);
117
- if (props.items === 1) goToSlide(activeSlideIndex);
118
- startX = 0;
119
- document.removeEventListener('mousemove', move);
120
- document.removeEventListener('mouseup', stopDragging);
121
- document.removeEventListener('dragend', stopDragging);
122
- setTimeout(() => (isDragging = false), 100);
123
- };
124
-
125
- const move = (e: MouseEvent) => {
126
- if (!bglSlider) return;
127
- const x = e.pageX - bglSlider.offsetLeft;
128
- const walk = x - startX;
129
- if (walk > 20 || walk < -20) isDragging = true;
130
- if (!isDragging) return;
131
- const scroll = x - startX;
132
- bglSlider.scrollLeft = scrollLeft - scroll;
133
- };
134
-
135
- // eslint-disable-next-line no-unused-vars
136
- const startDragging = (e: MouseEvent) => {
137
- if (e.button !== 0 || !props.freeDrag || !bglSlider) return;
138
- startX = e.pageX - bglSlider.offsetLeft;
139
- scrollLeft = bglSlider.scrollLeft;
140
- isPressed = true;
141
- document.addEventListener('mousemove', move);
142
- document.addEventListener('mouseup', stopDragging);
143
- document.addEventListener('dragend', stopDragging);
144
- };
145
-
146
- // eslint-disable-next-line no-unused-vars
147
- const next = () => {
148
- if (!bglSlider) return;
149
- const slideCount = bglSlider.children.length;
150
- const isLastSlide = activeSlideIndex >= slideCount - 1;
151
- if (isLastSlide) goToSlide(0);
152
- else goToSlide(activeSlideIndex + 1);
153
- };
154
-
155
- // eslint-disable-next-line no-unused-vars
156
- const prev = () => {
157
- if (!bglSlider) return;
158
- const slideCount = bglSlider.children.length;
159
- if (activeSlideIndex === 0) goToSlide(slideCount - 1);
160
- else goToSlide(activeSlideIndex - 1);
161
- };
162
-
163
- const evalWidth = () => {
164
- if (!bglSlider) return;
165
- goToSlide(activeSlideIndex);
166
- };
86
+ activeSlideIndex = Math.ceil(slider.scrollLeft / slider.offsetWidth)
87
+ else activeSlideIndex = Math.floor(slider.scrollLeft / slider.offsetWidth)
88
+ if (props.items === 1) goToSlide(activeSlideIndex)
89
+ startX = 0
90
+ document.removeEventListener('mousemove', move)
91
+ document.removeEventListener('mouseup', stopDragging)
92
+ document.removeEventListener('dragend', stopDragging)
93
+ setTimeout(() => (isDragging = false), 100)
94
+ }
95
+
96
+ function move(e: MouseEvent) {
97
+ if (!bglSlider) return
98
+ const x = e.pageX - bglSlider.offsetLeft
99
+ const walk = x - startX
100
+ if (walk > 20 || walk < -20) isDragging = true
101
+ if (!isDragging) return
102
+ const scroll = x - startX
103
+ bglSlider.scrollLeft = scrollLeft - scroll
104
+ }
105
+
106
+ function startDragging(e: MouseEvent) {
107
+ if (e.button !== 0 || !props.freeDrag || !bglSlider) return
108
+ startX = e.pageX - bglSlider.offsetLeft
109
+ scrollLeft = bglSlider.scrollLeft
110
+ isPressed = true
111
+ document.addEventListener('mousemove', move)
112
+ document.addEventListener('mouseup', stopDragging)
113
+ document.addEventListener('dragend', stopDragging)
114
+ }
115
+
116
+ function next() {
117
+ if (!bglSlider) return
118
+ const slideCount = bglSlider.children.length
119
+ const isLastSlide = activeSlideIndex >= slideCount - 1
120
+ if (isLastSlide) goToSlide(0)
121
+ else goToSlide(activeSlideIndex + 1)
122
+ }
123
+
124
+ function prev() {
125
+ if (!bglSlider) return
126
+ const slideCount = bglSlider.children.length
127
+ if (activeSlideIndex === 0) goToSlide(slideCount - 1)
128
+ else goToSlide(activeSlideIndex - 1)
129
+ }
130
+
131
+ function evalWidth() {
132
+ if (!bglSlider) return
133
+ goToSlide(activeSlideIndex)
134
+ }
167
135
 
168
136
  onMounted(() => {
169
- window.addEventListener('resize', evalWidth);
170
- evalHeight();
171
- disableDrag();
172
- });
137
+ window.addEventListener('resize', evalWidth)
138
+ evalHeight()
139
+ disableDrag()
140
+ })
173
141
 
174
- onUnmounted(() => window.removeEventListener('resize', evalWidth));
142
+ onUnmounted(() => { window.removeEventListener('resize', evalWidth) })
175
143
  </script>
176
144
 
145
+ <template>
146
+ <div class="BglCarousel" :style="{ height: yHeight }" :class="{ autoHeight }">
147
+ <div
148
+ ref="bglSlider"
149
+ :class="{
150
+ dragging: isDragging,
151
+ clicking: isPressed,
152
+ [`slides-${items}`]: true,
153
+ allowScroll,
154
+ }"
155
+ class="bgl-slider"
156
+ @scrollend="scrollEnd"
157
+ @mousedown="startDragging"
158
+ >
159
+ <div v-if="isDragging" class="blocker" />
160
+ <slot />
161
+ </div>
162
+ <div class="Handlers">
163
+ <span @click="prev">
164
+ <slot :prev :index="activeSlideIndex" name="prev" />
165
+ </span>
166
+ <span @click="next">
167
+ <slot :next :index="activeSlideIndex" name="next" />
168
+ </span>
169
+ </div>
170
+ </div>
171
+ </template>
172
+
177
173
  <style scoped>
178
174
  .blocker {
179
175
  position: fixed;
@@ -1,16 +1,43 @@
1
+ <script lang="ts" setup>
2
+ import {
3
+ BglField,
4
+ type BglFormSchemaT,
5
+ Title,
6
+ iffer,
7
+ keyToLabel,
8
+ } from '@bagelink/vue'
9
+
10
+ const props = defineProps<{
11
+ showFields?: string[]
12
+ schema?: BglFormSchemaT
13
+ title?: string
14
+ }>()
15
+
16
+ const itemData = defineModel<Record<string, any>>('data', { default: {} })
17
+ const computedSchema = $computed(() => {
18
+ console.log(itemData.value)
19
+ const schema = Object.keys(itemData.value)
20
+ if (props.showFields && props.showFields.length) {
21
+ return schema.filter((field: any) => props.showFields?.includes(field))
22
+ }
23
+ console.log(schema)
24
+ return schema
25
+ })
26
+ </script>
27
+
1
28
  <template>
2
29
  <div v-if="data" class="data">
3
30
  <Title v-if="title" :label="title" />
4
31
  <template v-for="field in schema" :key="field.id">
5
- <div class="data-row" v-if="iffer(field, itemData)">
32
+ <div v-if="iffer(field, itemData)" class="data-row">
6
33
  <div class="key">
7
34
  {{ field?.label || keyToLabel(field.id) }}
8
35
  </div>
9
- <BglField label="" style="width: min-content; min-width: 140px" :field="field" v-model="itemData" />
36
+ <BglField v-model="itemData" label="" style="width: min-content; min-width: 140px" :field="field" />
10
37
  </div>
11
38
  </template>
12
39
  <div v-if="!schema?.length">
13
- <div class="data-row" v-for="key in computedSchema" :key>
40
+ <div v-for="key in computedSchema" :key class="data-row">
14
41
  <div class="key">
15
42
  {{ keyToLabel(key) }}
16
43
  </div>
@@ -23,33 +50,6 @@
23
50
  </div>
24
51
  </template>
25
52
 
26
- <script lang="ts" setup>
27
- import {
28
- type BglFormSchemaT,
29
- keyToLabel,
30
- iffer,
31
- Title,
32
- BglField,
33
- } from '@bagelink/vue';
34
-
35
- const props = defineProps<{
36
- showFields?: string[],
37
- schema?: BglFormSchemaT,
38
- title?: string,
39
- }>();
40
-
41
- const itemData = defineModel<Record<string, any>>('data', { default: {} });
42
- const computedSchema = $computed(() => {
43
- console.log(itemData.value);
44
- const schema = Object.keys(itemData.value);
45
- if (props.showFields && props.showFields.length) {
46
- return schema?.filter((field:any) => props.showFields?.includes(field));
47
- }
48
- console.log(schema);
49
- return schema;
50
- });
51
- </script>
52
-
53
53
  <style scoped>
54
54
  .data {
55
55
  border: 1.1px solid var(--border-color);
@@ -1,37 +1,37 @@
1
- <template>
2
- <span
3
- class="fi"
4
- :style="{ height, backgroundImage }"
5
- :class="{ fis, circle }"
6
- />
7
- </template>
8
-
9
1
  <script lang="ts" setup>
10
- import { CountryCode } from 'libphonenumber-js';
2
+ import type { CountryCode } from 'libphonenumber-js'
11
3
 
12
- type FlagProps = {
13
- country: CountryCode;
14
- size?: number | string;
15
- circle?: boolean;
16
- square?: boolean;
17
- };
18
- const props = defineProps<FlagProps>();
4
+ interface FlagProps {
5
+ country: CountryCode
6
+ size?: number | string
7
+ circle?: boolean
8
+ square?: boolean
9
+ }
10
+ const props = defineProps<FlagProps>()
19
11
 
20
12
  const fis = $computed(() => {
21
- if (props.circle || props.square) return true;
22
- return false;
23
- });
24
- const height = $computed(() => `${props.size || 1}rem`);
13
+ if (props.circle || props.square) return true
14
+ return false
15
+ })
16
+ const height = $computed(() => `${props.size || 1}rem`)
25
17
 
26
18
  const backgroundImage = $computed(() => {
27
- let country = props.country.toLowerCase();
28
- if (country === 'ac') country = 'sh-ac';
29
- const baseURL = 'https://cdn.jsdelivr.net/gh/lipis/flag-icons@7.0.0/flags';
30
- if (fis) return `url(${baseURL}/1x1/${country.toLowerCase()}.svg)`;
31
- return `url(${baseURL}/4x3/${country.toLowerCase()}.svg)`;
32
- });
19
+ let country = props.country.toLowerCase()
20
+ if (country === 'ac') country = 'sh-ac'
21
+ const baseURL = 'https://cdn.jsdelivr.net/gh/lipis/flag-icons@7.0.0/flags'
22
+ if (fis) return `url(${baseURL}/1x1/${country.toLowerCase()}.svg)`
23
+ return `url(${baseURL}/4x3/${country.toLowerCase()}.svg)`
24
+ })
33
25
  </script>
34
26
 
27
+ <template>
28
+ <span
29
+ class="fi"
30
+ :style="{ height, backgroundImage }"
31
+ :class="{ fis, circle }"
32
+ />
33
+ </template>
34
+
35
35
  <style scoped>
36
36
  .fi{
37
37
  background-size:contain;
@@ -1,6 +1,18 @@
1
+ <script lang="ts" setup>
2
+ import { Avatar } from '@bagelink/vue'
3
+
4
+ defineProps<{
5
+ src?: string
6
+ showAvatar?: boolean
7
+ to?: string
8
+ title?: string
9
+ subtitle?: string
10
+ }>()
11
+ </script>
12
+
1
13
  <template>
2
14
  <component :is="to ? 'RouterLink' : 'div'" :to="to" class="flex list-item gap-1">
3
- <Avatar style="flex-basis: 1;" :name="title" :src="src" v-if="src || showAvatar" :size="40" />
15
+ <Avatar v-if="src || showAvatar" style="flex-basis: 1;" :name="title" :src="src" :size="40" />
4
16
  <div>
5
17
  <p class="txt16 no-margin ellipsis">
6
18
  {{ title }}
@@ -13,15 +25,3 @@
13
25
  </div>
14
26
  </component>
15
27
  </template>
16
-
17
- <script lang="ts" setup>
18
- import { Avatar } from '@bagelink/vue';
19
-
20
- defineProps<{
21
- src?: string;
22
- showAvatar?: boolean;
23
- to?: string;
24
- title?: string;
25
- subtitle?: string;
26
- }>();
27
- </script>
@@ -1,3 +1,5 @@
1
+ <script lang="ts" setup></script>
2
+
1
3
  <template>
2
4
  <div class="list-wrap bgl_card thin grid overflow-hidden h-100 p-0">
3
5
  <div class="p-1">
@@ -9,8 +11,6 @@
9
11
  </div>
10
12
  </template>
11
13
 
12
- <script lang="ts" setup></script>
13
-
14
14
  <style>
15
15
  .list-wrap {
16
16
  grid-template-rows: auto 1fr;
@@ -1,58 +1,58 @@
1
- <template>
2
- <div class="map-test"/>
3
- <div class="map" id="map" :style="{height: `${height || 400}px`}"/>
4
- </template>
5
-
6
1
  <script setup lang="ts">
7
- import L from 'leaflet';
8
- import type { LatLngExpression, Map, Marker } from 'leaflet';
9
- import 'leaflet/dist/leaflet.css';
10
- import { onMounted, watch } from 'vue';
11
-
12
- type MapProps = {
13
- center?: LatLngExpression;
14
- zoom?: number;
15
- height?: number;
16
- address?: string;
17
- };
2
+ import L from 'leaflet'
3
+ import type { LatLngExpression, Map, Marker } from 'leaflet'
4
+ import 'leaflet/dist/leaflet.css'
5
+ import { onMounted, watch } from 'vue'
6
+
7
+ interface MapProps {
8
+ center?: LatLngExpression
9
+ zoom?: number
10
+ height?: number
11
+ address?: string
12
+ }
18
13
 
19
- const props = defineProps<MapProps>();
14
+ const props = defineProps<MapProps>()
20
15
 
21
- let map = $ref<Map>();
22
- const markers = $ref<Marker[]>([]);
16
+ let map = $ref<Map>()
17
+ const markers = $ref<Marker[]>([])
23
18
 
24
19
  function initializeMap() {
25
20
  map = L.map('map', {
26
21
  center: props.center || [31.7683, 35.2137],
27
22
  zoom: props.zoom || 13,
28
- });
29
- L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 18 }).addTo(map);
23
+ })
24
+ L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 18 }).addTo(map)
30
25
  }
31
26
 
32
- onMounted(initializeMap);
33
- const markerSVG = '<svg width="199" height="284" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M29.859 29.266A99 99 0 0 1 198.862 99.27c0 74.25-99 183.857-99 183.857s-99-109.607-99-183.858A99 99 0 0 1 29.86 29.266Zm70.004 118.961c25.513 0 46.195-20.683 46.195-46.196 0-25.513-20.682-46.195-46.195-46.195S53.667 76.518 53.667 102.03s20.683 46.196 46.196 46.196Z" fill="#F04033"/></svg>';
27
+ onMounted(initializeMap)
28
+ const markerSVG = '<svg width="199" height="284" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M29.859 29.266A99 99 0 0 1 198.862 99.27c0 74.25-99 183.857-99 183.857s-99-109.607-99-183.858A99 99 0 0 1 29.86 29.266Zm70.004 118.961c25.513 0 46.195-20.683 46.195-46.196 0-25.513-20.682-46.195-46.195-46.195S53.667 76.518 53.667 102.03s20.683 46.196 46.196 46.196Z" fill="#F04033"/></svg>'
34
29
 
35
30
  function addMarker(latlng: LatLngExpression) {
36
31
  const customIcon = L.icon({
37
32
  iconUrl: `data:image/svg+xml;utf8,${encodeURIComponent(markerSVG)}`,
38
33
  iconSize: [32, 32],
39
- });
40
- const marker = L.marker(latlng, { icon: customIcon }).addTo(map);
41
- markers.push(marker);
34
+ })
35
+ const marker = L.marker(latlng, { icon: customIcon }).addTo(map)
36
+ markers.push(marker)
42
37
  }
43
38
 
44
- async function geocodeAddress(address:string) {
45
- const geocodeUrl = `https://nominatim.openstreetmap.org/search?format=json&q=${encodeURIComponent(address)}`;
46
- const res = await fetch(geocodeUrl);
47
- const data = await res.json() || [];
48
- data.forEach((element) => addMarker([element.lat, element.lon]));
39
+ async function geocodeAddress(address: string) {
40
+ const geocodeUrl = `https://nominatim.openstreetmap.org/search?format=json&q=${encodeURIComponent(address)}`
41
+ const res = await fetch(geocodeUrl)
42
+ const data = await res.json() || []
43
+ data.forEach((element) => { addMarker([element.lat, element.lon]) })
49
44
  }
50
45
 
51
46
  watch(() => props.address, (address) => {
52
- if (address) geocodeAddress(address).catch(console.error);
53
- }, { immediate: true });
47
+ if (address) geocodeAddress(address).catch(console.error)
48
+ }, { immediate: true })
54
49
  </script>
55
50
 
51
+ <template>
52
+ <div class="map-test" />
53
+ <div id="map" class="map" :style="{ height: `${height || 400}px` }" />
54
+ </template>
55
+
56
56
  <style>
57
57
  #map {
58
58
  height: 100%;
@@ -1,18 +1,18 @@
1
- <template>
2
- <div class="bgl_icon-font" :style="{ fontSize: `${size}rem`, color }">
3
- {{ icon || name }}
4
- </div>
5
- </template>
6
-
7
1
  <script setup lang="ts">
8
- import type { MaterialIcons } from '@bagelink/vue';
2
+ import type { MaterialIcons } from '@bagelink/vue'
9
3
 
10
4
  defineProps<{
11
- icon?: MaterialIcons;
12
- name?: MaterialIcons;
13
- size?: number;
14
- color?: string;
15
- }>();
5
+ icon?: MaterialIcons
6
+ name?: MaterialIcons
7
+ size?: number
8
+ color?: string
9
+ }>()
16
10
  </script>
17
11
 
12
+ <template>
13
+ <div class="bgl_icon-font" :style="{ fontSize: `${size}rem`, color }">
14
+ {{ icon || name }}
15
+ </div>
16
+ </template>
17
+
18
18
  <style scoped></style>