@bagelink/vue 1.14.0 → 1.14.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ipapi.d.ts","sourceRoot":"","sources":["../../src/utils/ipapi.ts"],"names":[],"mappings":"AAEA,wBAAsB,KAAK,iBAQ1B"}
1
+ {"version":3,"file":"ipapi.d.ts","sourceRoot":"","sources":["../../src/utils/ipapi.ts"],"names":[],"mappings":"AAIA,wBAAsB,KAAK,iBAmB1B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/vue",
3
3
  "type": "module",
4
- "version": "1.14.0",
4
+ "version": "1.14.10",
5
5
  "description": "Bagel core sdk packages",
6
6
  "author": {
7
7
  "name": "Bagel Studio",
@@ -3,7 +3,7 @@ import type { Ref, WritableComputedRef } from 'vue'
3
3
 
4
4
  import type { DraggableEvent } from '../../draggable/useDraggable'
5
5
 
6
- import { Btn, resolveI18n, useI18n } from '@bagelink/vue'
6
+ import { Btn, resolveI18n, useI18n, pathKeyToURL } from '@bagelink/vue'
7
7
  import { computed, ref, watch, useSlots } from 'vue'
8
8
  import Draggable from '../../draggable/Draggable.vue'
9
9
  import type { BagelInputShellProps } from './bagelInputShell'
@@ -47,6 +47,7 @@ const itemLabelPrefix = computed(() => {
47
47
  })
48
48
 
49
49
  const IDENTIFIER_FIELDS = ['title', 'name', 'label', 'displayName', 'display_name', 'heading', 'caption', 'text']
50
+ const IMAGE_FIELDS = ['image', 'thumbnail', 'avatar', 'photo', 'picture', 'profilePic', 'profile_pic', 'icon', 'logo']
50
51
 
51
52
  function getItemIdentifier(item: T): string | null {
52
53
  if (typeof item === 'string' && item.trim().length > 0) {
@@ -63,6 +64,18 @@ function getItemIdentifier(item: T): string | null {
63
64
  return null
64
65
  }
65
66
 
67
+ function getItemThumbnail(item: T): string | null {
68
+ if (item !== null && item !== undefined && typeof item === 'object') {
69
+ for (const field of IMAGE_FIELDS) {
70
+ const val = (item as Record<string, unknown>)[field]
71
+ if (typeof val === 'string' && val.trim().length > 0) {
72
+ return val.trim()
73
+ }
74
+ }
75
+ }
76
+ return null
77
+ }
78
+
66
79
  function getItemLabel(index: number) {
67
80
  const identifier = getItemIdentifier(items.value[index])
68
81
  return identifier != null
@@ -173,14 +186,22 @@ function getItemRef(i: number) {
173
186
  class="grab"
174
187
  />
175
188
  <div v-else />
176
- <Btn
177
- full-width align-txt="start" class="px-025 bg-transparent color-inherit" :ripple="false"
178
- :icon="minimizedItems[i] ? 'expand_more' : 'expand_less'" @click="toggleItem(i)"
179
- >
189
+ <Btn
190
+ full-width align-txt="start" class="px-025 bg-transparent color-inherit" :ripple="false"
191
+ :icon="minimizedItems[i] ? 'expand_more' : 'expand_less'" @click="toggleItem(i)"
192
+ >
193
+ <div class="flex align-items-center gap-05">
194
+ <img
195
+ v-if="getItemThumbnail(items[i])"
196
+ :src="pathKeyToURL(getItemThumbnail(items[i])!)"
197
+ class="array-item-thumb"
198
+ @error="($event.target as HTMLImageElement).style.display = 'none'"
199
+ >
180
200
  <p class="ellipsis-1">
181
201
  {{ getItemLabel(i) }}
182
202
  </p>
183
- </Btn>
203
+ </div>
204
+ </Btn>
184
205
 
185
206
  <Btn v-if="allowDelete" v-tooltip="resolveI18n(deleteTooltip || 'Delete')" flat icon="delete" thin :confirm="resolveI18n('Are you sure you want to delete this item?')" @click="deleteItem(i)" />
186
207
  </div>
@@ -248,4 +269,11 @@ function getItemRef(i: number) {
248
269
  .simpleArray .label-text {
249
270
  display: none;
250
271
  }
272
+ .array-item-thumb {
273
+ width: 24px;
274
+ height: 24px;
275
+ border-radius: 50%;
276
+ object-fit: cover;
277
+ flex-shrink: 0;
278
+ }
251
279
  </style>
@@ -4,7 +4,7 @@ body.richtext-editor-content {
4
4
  margin: 0;
5
5
  padding: 8px;
6
6
  min-height: 200px;
7
- font-family: sans-serif !important;
7
+ font-family: var(--bgl-font);
8
8
  line-height: 1.5;
9
9
  color: inherit;
10
10
  background: transparent;
@@ -17,7 +17,7 @@ body {
17
17
  margin: 0;
18
18
  padding: 8px;
19
19
  min-height: 200px;
20
- font-family: sans-serif !important;
20
+ font-family: var(--bgl-font);
21
21
  line-height: 1.5;
22
22
  color: inherit;
23
23
  background: transparent;
@@ -82,6 +82,16 @@ const currentTextColor = computed(() => {
82
82
  return textColor
83
83
  })
84
84
 
85
+ const currentFontFamily = computed(() => {
86
+ void forceUpdate.value
87
+ if (typeof document !== 'undefined') {
88
+ const computedStyle = getComputedStyle(document.documentElement)
89
+ const font = computedStyle.getPropertyValue('--bgl-font').trim()
90
+ return font || 'sans-serif'
91
+ }
92
+ return 'sans-serif'
93
+ })
94
+
85
95
  // Set up theme observation with MutationObserver
86
96
  let themeObserver: MutationObserver | null = null
87
97
 
@@ -2664,17 +2674,58 @@ async function initEditor() {
2664
2674
  isInitializing.value = true
2665
2675
 
2666
2676
  try {
2677
+ // Collect @font-face rules from parent document so the iframe can use the same fonts
2678
+ let fontFaceRules = ''
2679
+ try {
2680
+ for (const sheet of Array.from(document.styleSheets)) {
2681
+ try {
2682
+ for (const rule of Array.from(sheet.cssRules)) {
2683
+ if (rule instanceof CSSFontFaceRule) {
2684
+ fontFaceRules += rule.cssText + '\n'
2685
+ }
2686
+ }
2687
+ } catch { /* cross-origin stylesheet, skip */ }
2688
+ }
2689
+ } catch { /* styleSheets not available */ }
2690
+
2667
2691
  // Use basic embedded styles for better compatibility
2668
2692
  // We copy CSS variables to the iframe so it can use them
2669
2693
  const editorStylesContent = `
2694
+ ${fontFaceRules}
2670
2695
  :root {
2671
2696
  --input-color: ${currentInputColor.value || '#000'};
2672
2697
  }
2698
+ /* Scrollbar styles */
2699
+ ::-webkit-scrollbar {
2700
+ width: 0.5rem;
2701
+ height: 0.5rem;
2702
+ }
2703
+ ::-webkit-scrollbar-track {
2704
+ background: transparent;
2705
+ margin: 0.25rem 0;
2706
+ }
2707
+ ::-webkit-scrollbar-thumb {
2708
+ background-color: rgba(0, 0, 0, 0.2);
2709
+ border-radius: 1rem;
2710
+ border: 1px solid transparent;
2711
+ background-clip: content-box;
2712
+ }
2713
+ ::-webkit-scrollbar-thumb:hover {
2714
+ background-color: rgba(0, 0, 0, 0.35);
2715
+ }
2716
+ ::-webkit-scrollbar-corner {
2717
+ background: transparent;
2718
+ }
2719
+ html {
2720
+ overflow-y: scroll;
2721
+ scrollbar-width: thin;
2722
+ scrollbar-color: rgba(0, 0, 0, 0.2) transparent;
2723
+ }
2673
2724
  body {
2674
2725
  margin: 0;
2675
2726
  padding: 8px;
2676
2727
  min-height: 200px;
2677
- font-family: sans-serif !important;
2728
+ font-family: ${currentFontFamily.value};
2678
2729
  line-height: 1.5;
2679
2730
  color: ${currentTextColor.value};
2680
2731
  background: transparent;
@@ -3086,6 +3137,7 @@ function updateIframeColors() {
3086
3137
  body {
3087
3138
  color: ${currentTextColor.value} !important;
3088
3139
  font-size: ${fontSize} !important;
3140
+ font-family: ${currentFontFamily.value} !important;
3089
3141
  }
3090
3142
 
3091
3143
  /* Ensure all text elements inherit the color and font size */
@@ -3099,7 +3151,7 @@ function updateIframeColors() {
3099
3151
  }
3100
3152
 
3101
3153
  // Watch for theme changes and update iframe colors
3102
- watch([currentInputColor, currentTextColor], () => {
3154
+ watch([currentInputColor, currentTextColor, currentFontFamily], () => {
3103
3155
  if (hasInitialized.value) {
3104
3156
  updateIframeColors()
3105
3157
  }
@@ -3223,8 +3275,8 @@ const imgTransform = computed({
3223
3275
  class="content-area radius-1"
3224
3276
  :style="{ height: editor.state.isFullscreen ? 'calc(100vh - 4rem)' : editorHeight }"
3225
3277
  >
3226
- <iframe
3227
- id="rich-text-iframe" ref="iframe" class="editableContent" title="Editor" srcdoc=""
3278
+ <iframe
3279
+ id="rich-text-iframe" ref="iframe" class="editableContent" :class="{ 'editor-ready': hasInitialized }" title="Editor" srcdoc=""
3228
3280
  sandbox="allow-same-origin allow-forms allow-modals allow-orientation-lock allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-presentation allow-scripts allow-top-navigation allow-top-navigation-by-user-activation"
3229
3281
  @load="initEditor" @contextmenu="handleTableContextMenu"
3230
3282
  />
@@ -3758,6 +3810,12 @@ const imgTransform = computed({
3758
3810
  outline: none;
3759
3811
  background: transparent;
3760
3812
  font-size: var(--richtext-font-size, 16px);
3813
+ opacity: 0;
3814
+ transition: opacity 0.25s ease;
3815
+ }
3816
+
3817
+ .editableContent.editor-ready {
3818
+ opacity: 1;
3761
3819
  }
3762
3820
 
3763
3821
  .html-editor {
@@ -285,8 +285,8 @@ export const $ = {
285
285
  },
286
286
 
287
287
  richtext(
288
- labelOrConfig?: string | (BaseFieldConfig & { autoheight?: boolean, basic?: boolean, simple?: boolean }),
289
- config?: BaseFieldConfig & { autoheight?: boolean, basic?: boolean, simple?: boolean }
288
+ labelOrConfig?: string | (BaseFieldConfig & { autoheight?: boolean, basic?: boolean, simple?: boolean, fontSize?: number | string }),
289
+ config?: BaseFieldConfig & { autoheight?: boolean, basic?: boolean, simple?: boolean, fontSize?: number | string }
290
290
  ): FieldBuilder<string> {
291
291
  return new Field('richtext', parseArgs(labelOrConfig, config))
292
292
  },
@@ -291,7 +291,7 @@
291
291
  }
292
292
 
293
293
  .m_place-items-center {
294
- place-items: center !;
294
+ place-items: center !important;
295
295
  }
296
296
 
297
297