@bagelink/vue 0.0.744 → 0.0.749

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 (147) hide show
  1. package/dist/components/Accordion.vue.d.ts +8 -3
  2. package/dist/components/Accordion.vue.d.ts.map +1 -1
  3. package/dist/components/AccordionItem.vue.d.ts +13 -17
  4. package/dist/components/AccordionItem.vue.d.ts.map +1 -1
  5. package/dist/components/AddressSearch.vue.d.ts +2 -2
  6. package/dist/components/AddressSearch.vue.d.ts.map +1 -1
  7. package/dist/components/Alert.vue.d.ts +2 -23
  8. package/dist/components/Alert.vue.d.ts.map +1 -1
  9. package/dist/components/Avatar.vue.d.ts +4 -25
  10. package/dist/components/Avatar.vue.d.ts.map +1 -1
  11. package/dist/components/Badge.vue.d.ts +1 -10
  12. package/dist/components/Badge.vue.d.ts.map +1 -1
  13. package/dist/components/BglVideo.vue.d.ts +1 -10
  14. package/dist/components/BglVideo.vue.d.ts.map +1 -1
  15. package/dist/components/Btn.vue.d.ts +11 -43
  16. package/dist/components/Btn.vue.d.ts.map +1 -1
  17. package/dist/components/Card.vue.d.ts +10 -14
  18. package/dist/components/Card.vue.d.ts.map +1 -1
  19. package/dist/components/Carousel.vue.d.ts +22 -15
  20. package/dist/components/Carousel.vue.d.ts.map +1 -1
  21. package/dist/components/DataPreview.vue.d.ts +11 -15
  22. package/dist/components/DataPreview.vue.d.ts.map +1 -1
  23. package/dist/components/DropDown.vue.d.ts +713 -14
  24. package/dist/components/DropDown.vue.d.ts.map +1 -1
  25. package/dist/components/Flag.vue.d.ts +1 -10
  26. package/dist/components/Flag.vue.d.ts.map +1 -1
  27. package/dist/components/ListItem.vue.d.ts +11 -15
  28. package/dist/components/ListItem.vue.d.ts.map +1 -1
  29. package/dist/components/ListView.vue.d.ts +9 -4
  30. package/dist/components/ListView.vue.d.ts.map +1 -1
  31. package/dist/components/MapEmbed.vue.d.ts +4 -33
  32. package/dist/components/MapEmbed.vue.d.ts.map +1 -1
  33. package/dist/components/MaterialIcon.vue.d.ts +3 -12
  34. package/dist/components/MaterialIcon.vue.d.ts.map +1 -1
  35. package/dist/components/Modal.vue.d.ts +15 -19
  36. package/dist/components/Modal.vue.d.ts.map +1 -1
  37. package/dist/components/ModalConfirm.vue.d.ts +5 -14
  38. package/dist/components/ModalConfirm.vue.d.ts.map +1 -1
  39. package/dist/components/ModalForm.vue.d.ts +4 -15
  40. package/dist/components/ModalForm.vue.d.ts.map +1 -1
  41. package/dist/components/NavBar.vue.d.ts +15 -39
  42. package/dist/components/NavBar.vue.d.ts.map +1 -1
  43. package/dist/components/PageTitle.vue.d.ts +11 -6
  44. package/dist/components/PageTitle.vue.d.ts.map +1 -1
  45. package/dist/components/RouterWrapper.vue.d.ts +1 -1
  46. package/dist/components/RouterWrapper.vue.d.ts.map +1 -1
  47. package/dist/components/TableSchema.vue.d.ts +18 -15
  48. package/dist/components/TableSchema.vue.d.ts.map +1 -1
  49. package/dist/components/Title.vue.d.ts +11 -6
  50. package/dist/components/Title.vue.d.ts.map +1 -1
  51. package/dist/components/TopBar.vue.d.ts +8 -3
  52. package/dist/components/TopBar.vue.d.ts.map +1 -1
  53. package/dist/components/dashboard/Lineart.vue.d.ts +3 -12
  54. package/dist/components/dashboard/Lineart.vue.d.ts.map +1 -1
  55. package/dist/components/form/BglField.vue.d.ts +8 -8
  56. package/dist/components/form/BglField.vue.d.ts.map +1 -1
  57. package/dist/components/form/BglForm.vue.d.ts +27 -41
  58. package/dist/components/form/BglForm.vue.d.ts.map +1 -1
  59. package/dist/components/form/BglMultiStepForm.vue.d.ts +27 -45
  60. package/dist/components/form/BglMultiStepForm.vue.d.ts.map +1 -1
  61. package/dist/components/form/inputs/CheckInput.vue.d.ts +12 -28
  62. package/dist/components/form/inputs/CheckInput.vue.d.ts.map +1 -1
  63. package/dist/components/form/inputs/Checkbox.vue.d.ts +11 -15
  64. package/dist/components/form/inputs/Checkbox.vue.d.ts.map +1 -1
  65. package/dist/components/form/inputs/ColorPicker.vue.d.ts +6 -27
  66. package/dist/components/form/inputs/ColorPicker.vue.d.ts.map +1 -1
  67. package/dist/components/form/inputs/DateInput.vue.d.ts +6 -31
  68. package/dist/components/form/inputs/DateInput.vue.d.ts.map +1 -1
  69. package/dist/components/form/inputs/DatePicker.vue.d.ts +5 -14
  70. package/dist/components/form/inputs/DatePicker.vue.d.ts.map +1 -1
  71. package/dist/components/form/inputs/FileUpload.vue.d.ts +74 -78
  72. package/dist/components/form/inputs/FileUpload.vue.d.ts.map +1 -1
  73. package/dist/components/form/inputs/JSONInput.vue.d.ts +6 -33
  74. package/dist/components/form/inputs/JSONInput.vue.d.ts.map +1 -1
  75. package/dist/components/form/inputs/PasswordInput.vue.d.ts +5 -14
  76. package/dist/components/form/inputs/PasswordInput.vue.d.ts.map +1 -1
  77. package/dist/components/form/inputs/RadioGroup.vue.d.ts +12 -12
  78. package/dist/components/form/inputs/RadioGroup.vue.d.ts.map +1 -1
  79. package/dist/components/form/inputs/RadioPillsInput.vue.d.ts +6 -31
  80. package/dist/components/form/inputs/RadioPillsInput.vue.d.ts.map +1 -1
  81. package/dist/components/form/inputs/RichText.vue.d.ts +5 -14
  82. package/dist/components/form/inputs/RichText.vue.d.ts.map +1 -1
  83. package/dist/components/form/inputs/RichText2/Toolbar.vue.d.ts +5 -14
  84. package/dist/components/form/inputs/RichText2/Toolbar.vue.d.ts.map +1 -1
  85. package/dist/components/form/inputs/RichText2/index.vue.d.ts +5 -14
  86. package/dist/components/form/inputs/RichText2/index.vue.d.ts.map +1 -1
  87. package/dist/components/form/inputs/SelectInput.vue.d.ts +228 -16
  88. package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
  89. package/dist/components/form/inputs/SignaturePad.vue.d.ts +5 -26
  90. package/dist/components/form/inputs/SignaturePad.vue.d.ts.map +1 -1
  91. package/dist/components/form/inputs/TableField.vue.d.ts +6 -29
  92. package/dist/components/form/inputs/TableField.vue.d.ts.map +1 -1
  93. package/dist/components/form/inputs/TelInput.vue.d.ts +6 -59
  94. package/dist/components/form/inputs/TelInput.vue.d.ts.map +1 -1
  95. package/dist/components/form/inputs/TextInput.vue.d.ts +6 -31
  96. package/dist/components/form/inputs/TextInput.vue.d.ts.map +1 -1
  97. package/dist/components/form/inputs/ToggleInput.vue.d.ts +12 -28
  98. package/dist/components/form/inputs/ToggleInput.vue.d.ts.map +1 -1
  99. package/dist/components/form/inputs/index.d.ts +0 -1
  100. package/dist/components/form/inputs/index.d.ts.map +1 -1
  101. package/dist/components/index.d.ts +22 -21
  102. package/dist/components/index.d.ts.map +1 -1
  103. package/dist/components/layout/BottomMenu.vue.d.ts +10 -14
  104. package/dist/components/layout/BottomMenu.vue.d.ts.map +1 -1
  105. package/dist/components/layout/Layout.vue.d.ts +9 -35
  106. package/dist/components/layout/Layout.vue.d.ts.map +1 -1
  107. package/dist/components/layout/SidebarMenu.vue.d.ts +15 -19
  108. package/dist/components/layout/SidebarMenu.vue.d.ts.map +1 -1
  109. package/dist/components/layout/TabbedLayout.vue.d.ts +15 -19
  110. package/dist/components/layout/TabbedLayout.vue.d.ts.map +1 -1
  111. package/dist/components/layout/Tabs.vue.d.ts +12 -16
  112. package/dist/components/layout/Tabs.vue.d.ts.map +1 -1
  113. package/dist/components/layout/TabsBody.vue.d.ts +10 -14
  114. package/dist/components/layout/TabsBody.vue.d.ts.map +1 -1
  115. package/dist/components/layout/TabsNav.vue.d.ts +5 -14
  116. package/dist/components/layout/TabsNav.vue.d.ts.map +1 -1
  117. package/dist/components/layout/tabsManager.d.ts +1 -1
  118. package/dist/components/lightbox/Lightbox.vue.d.ts +1 -2
  119. package/dist/components/lightbox/Lightbox.vue.d.ts.map +1 -1
  120. package/dist/composables/index.d.ts +2 -2
  121. package/dist/composables/index.d.ts.map +1 -1
  122. package/dist/index.cjs +45311 -45264
  123. package/dist/index.mjs +45312 -45265
  124. package/dist/style.css +2804 -2778
  125. package/dist/types/index.d.ts +1 -0
  126. package/dist/types/index.d.ts.map +1 -1
  127. package/dist/utils/BagelFormUtils.d.ts +88 -216
  128. package/dist/utils/BagelFormUtils.d.ts.map +1 -1
  129. package/dist/utils/lang.d.ts +3 -3
  130. package/package.json +5 -5
  131. package/src/components/AddressSearch.vue +5 -6
  132. package/src/components/Dropdown.vue +72 -0
  133. package/src/components/ListItem.vue +9 -1
  134. package/src/components/ModalConfirm.vue +1 -1
  135. package/src/components/form/inputs/PasswordInput.vue +7 -1
  136. package/src/components/form/inputs/SelectInput.vue +82 -83
  137. package/src/components/form/inputs/TelInput.vue +51 -50
  138. package/src/components/form/inputs/index.ts +0 -2
  139. package/src/components/index.ts +23 -22
  140. package/src/components/lightbox/Lightbox.vue +1 -1
  141. package/src/composables/index.ts +9 -3
  142. package/src/styles/inputs.css +1 -1
  143. package/src/styles/layout.css +4 -0
  144. package/src/styles/mobilLayout.css +4 -0
  145. package/src/styles/modal.css +2 -2
  146. package/src/styles/text.css +8 -0
  147. package/src/types/index.ts +3 -0
@@ -1,10 +1,10 @@
1
1
  <script lang="ts" setup>
2
2
  import { onMounted, watch } from 'vue'
3
- import { Dropdown } from 'floating-vue'
4
3
  import 'floating-vue/style.css'
5
4
  import {
6
5
  Btn,
7
6
  Card,
7
+ Dropdown,
8
8
  Icon,
9
9
  type MaterialIcons,
10
10
  type Option,
@@ -182,95 +182,94 @@ onMounted(() => {
182
182
  ref="dropdown"
183
183
  placement="bottom-start"
184
184
  class="bagel-input selectinput"
185
- @click.stop
186
185
  @hide="updateOpen(false)"
187
186
  >
188
- <label>
189
- {{ label }}
190
- <div class="flex gap-05">
191
- <button
192
- :disabled="disabled"
193
- type="button"
194
- class="selectinput-btn"
195
- :class="{ isEmpty: selectedItemCount === 0 }"
196
- @keydown="openOptions"
197
- @click="updateOpen(true)"
198
- >
199
- <Icon v-if="icon" :icon="icon" />
200
- <p v-if="!hideLabel">
201
- {{ selectedLabel }}
202
- </p>
203
-
204
- <div v-if="clearable && selectedItemCount > 0" class="ms-auto ps-05 me-05">
205
- <Btn
206
- flat
187
+ <template #trigger>
188
+ <label>
189
+ {{ label }}
190
+ <div class="flex gap-05">
191
+ <button
192
+ :disabled="disabled"
193
+ type="button"
194
+ class="selectinput-btn"
195
+ :class="{ isEmpty: selectedItemCount === 0 }"
196
+ @keydown="openOptions"
197
+ @click="updateOpen(true)"
198
+ >
199
+ <Icon v-if="icon" :icon="icon" />
200
+ <p v-if="!hideLabel">
201
+ {{ selectedLabel }}
202
+ </p>
203
+
204
+ <div v-if="clearable && selectedItemCount > 0" class="ms-auto ps-05 me-05">
205
+ <Btn
206
+ flat
207
+ thin
208
+ icon="clear"
209
+ class="color-gray"
210
+ @click="selectedItems = []; emitUpdate()"
211
+ />
212
+ </div>
213
+ <Icon
214
+ v-if="!disabled"
207
215
  thin
208
- icon="clear"
209
- class="color-gray"
210
- @click="selectedItems = []; emitUpdate()"
216
+ v-bind="{ icon: open ? 'unfold_less' : 'unfold_more' }"
211
217
  />
212
- </div>
213
- <Icon
214
- v-if="!disabled"
215
- thin
216
- v-bind="{ icon: open ? 'unfold_less' : 'unfold_more' }"
217
- />
218
- </button>
219
- <input
220
- v-if="required"
221
- tabindex="-1"
222
- style="width: 0; height: 0; position: absolute; opacity: 0; z-index: -1"
223
- :value="selectedItems"
224
- required
225
- @input="updateOpen(true)"
226
- >
227
- </div>
228
- </label>
229
- <template #popper>
230
- <Card
231
- class="p-05"
232
- :style="{ width: fullWidth ? '100%' : 'auto' }"
233
- >
234
- <TextInput
235
- v-if="searchable"
236
- ref="searchInput"
237
- v-model="search"
238
- dense
239
- placeholder="Search"
240
- icon="search"
241
- />
242
- <div class="selectinput-options" :class="{ multiselect }">
243
- <div
244
- v-for="(option, i) in filteredOptions"
245
- :key="`${option}${i}`"
246
- class="selectinput-option hover gap-1 align-items-center"
247
- :class="{ selected: isSelected(option) }"
248
- role="option"
249
- tabindex="0"
250
- :aria-selected="isSelected(option)"
251
- @click="select(option)"
252
- @keydown.enter="select(option)"
218
+ </button>
219
+ <input
220
+ v-if="required"
221
+ tabindex="-1"
222
+ style="width: 0; height: 0; position: absolute; opacity: 0; z-index: -1"
223
+ :value="selectedItems"
224
+ required
225
+ @input="updateOpen(true)"
253
226
  >
254
- <template v-if="multiselect">
255
- <Icon
256
- v-if="isSelected(option)" :size="1.1
257
- " icon="select_check_box"
258
- />
259
- <Icon
260
- v-if="!isSelected(option)"
261
- class="opacity-3"
262
- icon="check_box_outline_blank"
263
- :size="1.1"
264
- />
265
- </template>
266
- <span class="block">
267
- {{ getLabel(option) }}
268
- </span>
269
- </div>
270
227
  </div>
271
- <slot name="last" />
272
- </Card>
228
+ </label>
273
229
  </template>
230
+ <Card
231
+ class="p-05"
232
+ :style="{ width: fullWidth ? '100%' : 'auto' }"
233
+ >
234
+ <TextInput
235
+ v-if="searchable"
236
+ ref="searchInput"
237
+ v-model="search"
238
+ dense
239
+ placeholder="Search"
240
+ icon="search"
241
+ />
242
+ <div class="selectinput-options" :class="{ multiselect }">
243
+ <div
244
+ v-for="(option, i) in filteredOptions"
245
+ :key="`${option}${i}`"
246
+ class="selectinput-option hover gap-1 align-items-center"
247
+ :class="{ selected: isSelected(option) }"
248
+ role="option"
249
+ tabindex="0"
250
+ :aria-selected="isSelected(option)"
251
+ @click="select(option)"
252
+ @keydown.enter="select(option)"
253
+ >
254
+ <template v-if="multiselect">
255
+ <Icon
256
+ v-if="isSelected(option)" :size="1.1
257
+ " icon="select_check_box"
258
+ />
259
+ <Icon
260
+ v-if="!isSelected(option)"
261
+ class="opacity-3"
262
+ icon="check_box_outline_blank"
263
+ :size="1.1"
264
+ />
265
+ </template>
266
+ <span class="block">
267
+ {{ getLabel(option) }}
268
+ </span>
269
+ </div>
270
+ </div>
271
+ <slot name="last" />
272
+ </Card>
274
273
  </Dropdown>
275
274
  </template>
276
275
 
@@ -260,6 +260,8 @@ function findCountryByDialCode(dialCode: number) {
260
260
  return filteredCountries.find(country => Number(country.dialCode) === dialCode)
261
261
  }
262
262
 
263
+ const phoneDropdown = $ref<typeof Dropdown>()
264
+
263
265
  function chooseCountry(country?: string) {
264
266
  if (!country) return
265
267
  const parsedCountry = findCountry(country)
@@ -274,6 +276,7 @@ function chooseCountry(country?: string) {
274
276
 
275
277
  activeCountryCode = parsedCountry.iso2 || ''
276
278
  // emitInput(phone);
279
+ phoneDropdown?.hide()
277
280
  }
278
281
 
279
282
  function onBlur() { emit('blur') }
@@ -325,62 +328,60 @@ function handleInput(e: KeyboardEvent) {
325
328
  >
326
329
  <Dropdown
327
330
  v-if="!computedDropDownOptions.hide"
328
- placement="bottom"
331
+ ref="phoneDropdown"
332
+ placement="bottom-start"
329
333
  :disabled="computedDropDownOptions.disabled"
330
334
  @hide="open = false"
331
335
  >
332
- <span
333
- class="flex gap-05"
334
- @click="open = true"
335
- >
336
- <Icon :icon="open ? 'collapse_all' : 'expand_all'" />
337
- <Flag
338
- v-if="computedDropDownOptions.showFlags && activeCountryCode"
339
- :country="activeCountryCode"
340
- />
341
- </span>
342
- <template #popper="{ hide }">
343
- <div class="p-075 tel-countryp-dropdown">
344
- <TextInput
345
- v-if="searchable"
346
- v-model="searchQuery"
347
- aria-label="Search by country name or country code"
348
- placeholder="Search"
349
- icon="search"
336
+ <template #trigger>
337
+ <span
338
+ class="flex gap-05"
339
+ @click="open = true"
340
+ >
341
+ <Icon :icon="open ? 'collapse_all' : 'expand_all'" />
342
+ <Flag
343
+ v-if="computedDropDownOptions.showFlags && activeCountryCode"
344
+ :country="activeCountryCode"
350
345
  />
346
+ </span>
347
+ </template>
348
+ <div class="p-075 tel-countryp-dropdown">
349
+ <TextInput
350
+ v-if="searchable"
351
+ v-model="searchQuery"
352
+ aria-label="Search by country name or country code"
353
+ placeholder="Search"
354
+ icon="search"
355
+ />
351
356
 
352
- <ul
353
- class="overflow-y p-0"
354
- :style="{ 'max-height': '400px' }"
355
- :class="dropdownOpenDirection"
356
- role="listbox"
357
+ <ul
358
+ class="overflow-y p-0"
359
+ :style="{ 'max-height': '400px' }"
360
+ :class="dropdownOpenDirection"
361
+ role="listbox"
362
+ >
363
+ <li
364
+ v-for="(pb, index) in sortedCountries"
365
+ :key="pb.iso2 + isPreferred(pb)"
366
+ role="option"
367
+ class="flex gap-075"
368
+ tabindex="-1"
369
+ :aria-selected="activeCountryCode === pb.iso2 && !isPreferred(pb)
370
+ "
371
+ @click="chooseCountry(pb.iso2)"
372
+ @mousemove="selectedIndex = index"
357
373
  >
358
- <li
359
- v-for="(pb, index) in sortedCountries"
360
- :key="pb.iso2 + isPreferred(pb)"
361
- role="option"
362
- class="flex gap-075"
363
- tabindex="-1"
364
- :aria-selected="activeCountryCode === pb.iso2 && !isPreferred(pb)
365
- "
366
- @click="
367
- chooseCountry(pb.iso2);
368
- hide();
369
- "
370
- @mousemove="selectedIndex = index"
371
- >
372
- <Flag
373
- v-if="computedDropDownOptions.showFlags"
374
- :country="pb.iso2"
375
- />
376
- <p class="tel-country">{{ pb.name }}</p>
377
- <span v-if="computedDropDownOptions.showDialCodeInList">
378
- +{{ pb.dialCode }}
379
- </span>
380
- </li>
381
- </ul>
382
- </div>
383
- </template>
374
+ <Flag
375
+ v-if="computedDropDownOptions.showFlags"
376
+ :country="pb.iso2"
377
+ />
378
+ <p class="tel-country">{{ pb.name }}</p>
379
+ <span v-if="computedDropDownOptions.showDialCodeInList">
380
+ +{{ pb.dialCode }}
381
+ </span>
382
+ </li>
383
+ </ul>
384
+ </div>
384
385
  </Dropdown>
385
386
 
386
387
  <!-- ref="refInput" -->
@@ -16,5 +16,3 @@ export { default as SignaturePad } from './SignaturePad.vue'
16
16
  export { default as RichText2 } from './RichText2/index.vue'
17
17
  export { default as RadioGroup } from './RadioGroup.vue'
18
18
  export { default as PasswordInput } from './PasswordInput.vue'
19
-
20
- export { Dropdown } from 'floating-vue'
@@ -1,31 +1,32 @@
1
- export { default as MaterialIcon } from './MaterialIcon.vue'
2
- export { default as Icon } from './MaterialIcon.vue'
3
- export { default as NavBar } from './NavBar.vue'
4
- export { default as Btn } from './Btn.vue'
5
- export { default as Modal } from './Modal.vue'
6
- export { default as ModalForm } from './ModalForm.vue'
7
- export { default as AccordionItem } from './AccordionItem.vue'
8
- export { default as ListView } from './ListView.vue'
9
- export { default as ListItem } from './ListItem.vue'
10
- export { default as PageTitle } from './PageTitle.vue'
11
- export { default as TableSchema } from './TableSchema.vue'
12
- export { default as TopBar } from './TopBar.vue'
13
- export { default as RouterWrapper } from './RouterWrapper.vue'
14
- export { default as DataPreview } from './DataPreview.vue'
15
- export { default as Card } from './Card.vue'
16
- export { default as Avatar } from './Avatar.vue'
17
- export { default as Title } from './Title.vue'
18
1
  export { default as Accordion } from './Accordion.vue'
2
+ export { default as AccordionItem } from './AccordionItem.vue'
3
+ export { default as AddressSearch } from './AddressSearch.vue'
19
4
  export { default as Alert } from './Alert.vue'
5
+ export { default as Avatar } from './Avatar.vue'
20
6
  export { default as Badge } from './Badge.vue'
21
7
  export { default as BglVideo } from './BglVideo.vue'
8
+ export { default as Btn } from './Btn.vue'
9
+ export { default as Card } from './Card.vue'
22
10
  export { default as Carousel } from './Carousel.vue'
23
- export { default as ModalConfirm } from './ModalConfirm.vue'
24
- export { default as MapEmbed } from './MapEmbed.vue'
11
+ export * from './dashboard'
12
+ export { default as DataPreview } from './DataPreview.vue'
13
+ export { default as Dropdown } from './Dropdown.vue'
25
14
  export { default as Flag } from './Flag.vue'
26
- export { default as AddressSearch } from './AddressSearch.vue'
27
-
28
15
  export * from './form'
29
- export * from './dashboard'
30
16
  // export * from './whatsapp';
31
17
  export * from './layout'
18
+ export { default as ListItem } from './ListItem.vue'
19
+ export { default as ListView } from './ListView.vue'
20
+ export { default as MapEmbed } from './MapEmbed.vue'
21
+ export { default as MaterialIcon } from './MaterialIcon.vue'
22
+ export { default as Icon } from './MaterialIcon.vue'
23
+ export { default as Modal } from './Modal.vue'
24
+ export { default as ModalConfirm } from './ModalConfirm.vue'
25
+ export { default as ModalForm } from './ModalForm.vue'
26
+ export { default as NavBar } from './NavBar.vue'
27
+ export { default as PageTitle } from './PageTitle.vue'
28
+ export { default as RouterWrapper } from './RouterWrapper.vue'
29
+
30
+ export { default as TableSchema } from './TableSchema.vue'
31
+ export { default as Title } from './Title.vue'
32
+ export { default as TopBar } from './TopBar.vue'
@@ -88,7 +88,7 @@ defineExpose({ open, close })
88
88
  />
89
89
  </div>
90
90
  <div class="bgl-lightbox relative txt-center" @click.stop>
91
- <Btn flat class="fixed top-1 end-1 color-white" icon="close" @click="close" />
91
+ <Btn flat class="fixed top-1 start-1 color-white" icon="close" @click="close" />
92
92
  <div class="bgl-lightbox-item">
93
93
  <template v-if="currentItem?.type === 'image'">
94
94
  <img :src="currentItem?.src" alt="Preview" class="vw90 lightbox-image">
@@ -1,4 +1,5 @@
1
- import { type BglFormSchemaFnT, type BglFormSchemaT, getFallbackSchema } from '@bagelink/vue'
1
+ import { type BglFormSchemaFnT, type BglFormSchemaT, type IfAny, getFallbackSchema } from '@bagelink/vue'
2
+
2
3
  import type { Ref, UnwrapRef } from 'vue'
3
4
  import { ref, watch } from 'vue'
4
5
 
@@ -25,9 +26,14 @@ export function useBglSchema<T = Record<string, unknown>>(
25
26
  return getFallbackSchema(data, showFields)
26
27
  }
27
28
 
28
- export function useLocalStorage<T>(key: string, initialValue: T): Ref<UnwrapRef<T>> {
29
+ export function useLocalStorage<T>(
30
+ key: string,
31
+ initialValue: T
32
+ ): [T] extends [Ref<any, any>] ?
33
+ IfAny<T, Ref<T, T>, T> :
34
+ Ref<UnwrapRef<T>, T | UnwrapRef<T>> {
29
35
  const storedValue = localStorage.getItem(key)
30
- const initial = storedValue ? JSON.parse(storedValue) : initialValue
36
+ const initial = storedValue !== null ? JSON.parse(storedValue) : initialValue
31
37
  const value = ref<T>(initial)
32
38
 
33
39
  watch(() => value.value, (val) => {
@@ -252,7 +252,7 @@ select {
252
252
  .bagel-input .bgl_btn:focus,
253
253
  .bagel-input button:focus {
254
254
  outline-color: rgba(0, 0, 0, 0.05);
255
- box-shadow: inset 0 0 10px #00000042;
255
+ box-shadow: inset 0 0 10px #00000021;
256
256
  outline-color: var(--input-bg);
257
257
 
258
258
  }
@@ -53,6 +53,10 @@
53
53
  align-content: center;
54
54
  }
55
55
 
56
+ .align-content-space-between {
57
+ align-content: space-between;
58
+ }
59
+
56
60
  .align-items-top {
57
61
  align-items: flex-start !important;
58
62
  }
@@ -76,6 +76,10 @@
76
76
  align-content: center;
77
77
  }
78
78
 
79
+ .m_align-content-space-between {
80
+ align-content: space-between;
81
+ }
82
+
79
83
  .m_align-items-top {
80
84
  align-items: flex-start !important;
81
85
  }
@@ -80,8 +80,8 @@
80
80
  opacity: 1;
81
81
  max-width: 600px;
82
82
  width: 90%;
83
- margin-top: 20px;
84
- margin-bottom: 20px;
83
+ margin-top: 1rem;
84
+ margin-bottom: 1rem;
85
85
  margin-inline-start: auto;
86
86
  margin-inline-end: 20px;
87
87
  min-height: calc(100vh - 40px);
@@ -370,6 +370,10 @@
370
370
  word-break: break-word;
371
371
  }
372
372
 
373
+ .word-break-all {
374
+ word-break: break-all;
375
+ }
376
+
373
377
  .uppercase {
374
378
  text-transform: uppercase;
375
379
  }
@@ -809,6 +813,10 @@
809
813
  word-break: break-word;
810
814
  }
811
815
 
816
+ .m_word-break-all {
817
+ word-break: break-all;
818
+ }
819
+
812
820
  .m_uppercase {
813
821
  text-transform: uppercase;
814
822
  }
@@ -38,3 +38,6 @@ export type Option =
38
38
  | number
39
39
  | Record<string, any>
40
40
  | { label: string, value: string | number }
41
+
42
+
43
+ export type IfAny<T, Y, N> = 0 extends (1 & T) ? Y : N