@bagelink/vue 0.0.1244 → 0.0.1246

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 (39) hide show
  1. package/dist/components/Calendar/Index.vue.d.ts +4 -4
  2. package/dist/components/Calendar/components/header/Header.vue.d.ts +2 -2
  3. package/dist/components/Calendar/components/month/AgendaEventTile.vue.d.ts.map +1 -1
  4. package/dist/components/Calendar/components/month/Day.vue.d.ts.map +1 -1
  5. package/dist/components/Calendar/components/month/Month.vue.d.ts.map +1 -1
  6. package/dist/components/Calendar/components/week/DayEvent.vue.d.ts.map +1 -1
  7. package/dist/components/Calendar/components/week/DayTimeline.vue.d.ts.map +1 -1
  8. package/dist/components/Calendar/language/index.d.ts.map +1 -1
  9. package/dist/components/Calendar/language/keys.d.ts +6 -0
  10. package/dist/components/Calendar/language/keys.d.ts.map +1 -1
  11. package/dist/components/Image.vue.d.ts.map +1 -1
  12. package/dist/components/form/inputs/DatePick.vue.d.ts +1 -1
  13. package/dist/components/form/inputs/DatePick.vue.d.ts.map +1 -1
  14. package/dist/components/index.d.ts +0 -1
  15. package/dist/components/index.d.ts.map +1 -1
  16. package/dist/index.cjs +106 -250
  17. package/dist/index.mjs +107 -251
  18. package/dist/style.css +94 -77
  19. package/dist/utils/index.d.ts +1 -1
  20. package/dist/utils/index.d.ts.map +1 -1
  21. package/package.json +1 -1
  22. package/src/components/Calendar/components/month/AgendaEventTile.vue +35 -28
  23. package/src/components/Calendar/components/month/AgendaEvents.vue +3 -3
  24. package/src/components/Calendar/components/month/Day.vue +9 -6
  25. package/src/components/Calendar/components/month/Month.vue +12 -3
  26. package/src/components/Calendar/components/partials/EventFlyout.vue +5 -5
  27. package/src/components/Calendar/components/week/DayEvent.vue +6 -6
  28. package/src/components/Calendar/components/week/DayTimeline.vue +15 -21
  29. package/src/components/Calendar/components/week/FullDayEvent.vue +1 -1
  30. package/src/components/Calendar/components/week/Week.vue +3 -3
  31. package/src/components/Calendar/language/index.ts +1 -0
  32. package/src/components/Calendar/language/keys.ts +6 -0
  33. package/src/components/Image.vue +1 -2
  34. package/src/components/index.ts +0 -1
  35. package/src/components/lightbox/index.ts +1 -1
  36. package/src/styles/layout.css +4 -0
  37. package/src/styles/mobilLayout.css +4 -0
  38. package/src/utils/index.ts +3 -1
  39. package/src/components/BglComponent.vue +0 -187
@@ -29,13 +29,13 @@ function getLocaleTimeString(time: DAY_TIME_POINT): string {
29
29
  </script>
30
30
 
31
31
  <template>
32
- <div class="day-timeline">
32
+ <div class="day-timeline absolute top-0 start-0 space-evenly column display-flex">
33
33
  <div
34
34
  v-for="hour in timelineHours"
35
35
  :key="hour"
36
- class="day-timeline__hour"
36
+ class="day-timeline__hour display-flex column ustify-content-start h-100p ps-05"
37
37
  >
38
- <span class="day-timeline__hour-text">
38
+ <span class="day-timeline__hour-text line-height-0">
39
39
  {{ getLocaleTimeString(hour) }}
40
40
  </span>
41
41
  </div>
@@ -44,29 +44,29 @@ function getLocaleTimeString(time: DAY_TIME_POINT): string {
44
44
 
45
45
  <style scoped>
46
46
  .day-timeline {
47
- position: absolute;
48
- top: 0;
49
- left: 0;
50
47
  width: calc(100% + 10px);
51
48
  height: v-bind(weekHeight);
52
49
  transform: translateX(-10px);
53
- display: flex;
54
- flex-flow: column;
55
- justify-content: space-evenly;
50
+ }
51
+ [dir="rtl"] .day-timeline {
52
+ transform: translateX(10px);
53
+ }
54
+ [dir="rtl"] .ltr .day-timeline {
55
+ transform: translateX(-10px);
56
56
  }
57
57
 
58
58
  .day-timeline__hour {
59
- padding-left: 4px;
60
- display: flex;
61
- flex-flow: column;
62
- justify-content: flex-start;
63
- height: 100%;
64
59
  font-size: clamp(10px, 0.625rem, 14px);
65
60
  color: var(--qalendar-gray-quite-dark);
66
61
  }
67
62
 
68
63
  .day-timeline__hour-text {
69
- line-height: 0;
64
+ transform: translate(-40px, 0);
65
+ }
66
+ [dir="rtl"] .day-timeline__hour-text {
67
+ transform: translate(40px, 0);
68
+ }
69
+ [dir="rtl"] .ltr .day-timeline__hour-text {
70
70
  transform: translate(-40px, 0);
71
71
  }
72
72
 
@@ -77,10 +77,4 @@ function getLocaleTimeString(time: DAY_TIME_POINT): string {
77
77
  .day-timeline__hour:not(:last-child) {
78
78
  border-bottom: var(--qalendar-border-gray-thin);
79
79
  }
80
-
81
- @media (prefers-color-scheme: dark) {
82
- .day-timeline__hour:not(:last-child) {
83
- border-color: var(--qalendar-dark-mode-line-color);
84
- }
85
- }
86
80
  </style>
@@ -109,7 +109,7 @@ onMounted(() => {
109
109
  border-radius: 4px;
110
110
  padding: var(--event-padding);
111
111
  margin-bottom: 0.25em;
112
- text-align: left;
112
+ text-align: start;
113
113
  cursor: pointer;
114
114
  user-select: none;
115
115
  overflow: hidden;
@@ -365,7 +365,7 @@ function setCurrentTime() {
365
365
  <style scoped>
366
366
  .calendar-week__wrapper {
367
367
  position: relative;
368
- padding-left: var(--qalendar-week-padding-left);
368
+ padding-inline-start: var(--qalendar-week-padding-left);
369
369
  overflow-y: auto;
370
370
  }
371
371
 
@@ -384,7 +384,7 @@ function setCurrentTime() {
384
384
 
385
385
  .calendar-week .current-time-line {
386
386
  position: absolute;
387
- left: 0;
387
+ inset-inline-start: 0;
388
388
  width: 100%;
389
389
  height: 2px;
390
390
  z-index: 1;
@@ -407,7 +407,7 @@ function setCurrentTime() {
407
407
 
408
408
  .calendar-week .custom-current-time {
409
409
  position: absolute;
410
- left: 0;
410
+ inset-inline-start: 0;
411
411
  width: 100%;
412
412
  z-index: 1;
413
413
  }
@@ -16,6 +16,7 @@ export const localeMap = new Map<string, string>([
16
16
  ['ja', 'ja-JP'],
17
17
  ['pl', 'pl-PL'],
18
18
  ['hu', 'hu-HU'],
19
+ ['he', 'he-IL']
19
20
  ])
20
21
 
21
22
  export function overrideShortLocaleWithLongLocale(locale: string): string {
@@ -16,6 +16,7 @@ export const languageKeys = {
16
16
  'ja-JP': '週',
17
17
  'pl-PL': 'Tydzień',
18
18
  'hu-HU': 'Hét',
19
+ 'he-IL': 'שבוע',
19
20
  },
20
21
  month: {
21
22
  'it-IT': 'Mese',
@@ -33,6 +34,7 @@ export const languageKeys = {
33
34
  'ja-JP': '月',
34
35
  'pl-PL': 'Miesiąc',
35
36
  'hu-HU': 'Hónap',
37
+ 'he-IL': 'חודש',
36
38
  },
37
39
  day: {
38
40
  'it-IT': 'Giorno',
@@ -50,9 +52,11 @@ export const languageKeys = {
50
52
  'ja-JP': '日',
51
53
  'pl-PL': 'Dzień',
52
54
  'hu-HU': 'Nap',
55
+ 'he-IL': 'יום',
53
56
  },
54
57
  agenda: {
55
58
  'en-US': 'Agenda',
59
+ 'he-IL': 'סדר יום',
56
60
  },
57
61
  /** Other keys */
58
62
  moreEvents: {
@@ -71,6 +75,7 @@ export const languageKeys = {
71
75
  'ja-JP': 'その他イベント',
72
76
  'pl-PL': '+ więcej wydarzeń',
73
77
  'hu-HU': 'További események',
78
+ 'he-IL': '+ עוד אירועים',
74
79
  },
75
80
 
76
81
  noEvent: {
@@ -89,5 +94,6 @@ export const languageKeys = {
89
94
  'ja-JP': 'イベントなし',
90
95
  'pl-PL': 'Brak wydarzeń',
91
96
  'hu-HU': 'Nincs esemény',
97
+ 'he-IL': 'אין אירועים',
92
98
  },
93
99
  }
@@ -24,8 +24,7 @@ let loadingError = $ref(false)
24
24
 
25
25
  function getImageUrl(): string | null {
26
26
  if (!props.src && !props.pathKey) return null
27
- if (props.src) return props.src
28
- return pathKeyToURL(props.pathKey)
27
+ return pathKeyToURL(props.src || props.pathKey)
29
28
  }
30
29
 
31
30
  async function getCachedImage(url: string): Promise<string | null> {
@@ -4,7 +4,6 @@ export { default as AddressSearch } from './AddressSearch.vue'
4
4
  export { default as Alert } from './Alert.vue'
5
5
  export { default as Avatar } from './Avatar.vue'
6
6
  export { default as Badge } from './Badge.vue'
7
- export { default as BglComponent } from './BglComponent.vue'
8
7
  export { default as BglVideo } from './BglVideo.vue'
9
8
  export { default as Btn } from './Btn.vue'
10
9
  // export { default as CalendarExample } from './Calendar/CalendarExample.vue'
@@ -49,7 +49,7 @@ function openClickHandler(e: MouseEvent, el: HTMLElement, binding: DirectiveBind
49
49
 
50
50
  function bindingToItem(binding: DirectiveBinding, el: HTMLElement): LightboxItem {
51
51
  let { group, src, type, name, thumbnail, enableZoom, openFile, download, pathKey } = binding.value || {}
52
- src = src || pathKeyToURL(pathKey) || binding.value || el.getAttribute('src') || ''
52
+ src = pathKeyToURL(src || pathKey) || binding.value || el.getAttribute('src') || ''
53
53
  type = type || determineFileType(src)
54
54
  name = name || urlToName(src) || el.getAttribute('alt') || ''
55
55
  return { src, type, name, thumbnail, group, enableZoom, openFile, download }
@@ -5360,6 +5360,10 @@
5360
5360
  align-items: center;
5361
5361
  }
5362
5362
 
5363
+ .display-flex {
5364
+ display: flex;
5365
+ }
5366
+
5363
5367
  .inline-flex {
5364
5368
  display: inline-flex;
5365
5369
  align-items: center;
@@ -15,6 +15,10 @@
15
15
  display: flex !important;
16
16
  }
17
17
 
18
+ .m_display-flex {
19
+ display: flex !important;
20
+ }
21
+
18
22
  .inline-flex {
19
23
  display: inline-flex !important;
20
24
  }
@@ -173,7 +173,9 @@ const fileBaseUrl = (import.meta.env.VITE_FILE_BASE_URL || 'https://files.bagel.
173
173
  const bagelBaseUrl = import.meta.env.VITE_BAGEL_BASE_URL
174
174
 
175
175
  export function pathKeyToURL(pathKey?: string) {
176
- if (pathKey?.startsWith('static/')) {
176
+ const urlRE = /^https?:\/\/|^\/\//
177
+ if (!pathKey || urlRE.test(pathKey)) return pathKey
178
+ if (pathKey.startsWith('static/')) {
177
179
  return `${bagelBaseUrl}/${pathKey}`
178
180
  }
179
181
  return `${fileBaseUrl}/${pathKey}`
@@ -1,187 +0,0 @@
1
- <script setup lang="ts" generic="T extends Record<string, any>">
2
- import type { Field } from '@bagelink/vue'
3
- import {
4
- CheckInput,
5
- DateInput,
6
- FieldArray,
7
-
8
- FileUpload,
9
- RichText,
10
- SelectInput,
11
- TextInput,
12
- ToggleInput,
13
- bindAttrs,
14
- classify,
15
- NumberInput,
16
- UploadInput,
17
- BglForm,
18
- TabsNav
19
- } from '@bagelink/vue'
20
-
21
- const props = defineProps<{
22
- field: Field<T>
23
- id?: string
24
- modelValue?: any
25
- parentPath?: string
26
- }>()
27
-
28
- const emit = defineEmits<{
29
- 'update:modelValue': [value: any]
30
- }>()
31
-
32
- const customAttrs = $ref<{ [key: string]: any }>({})
33
-
34
- const is = $computed(() => {
35
- if (props.field.$el === 'text') return TextInput
36
- if (props.field.$el === 'textarea') {
37
- customAttrs.multiline = true
38
- return TextInput
39
- }
40
- if (props.field.$el === 'number') return NumberInput
41
- if (props.field.$el === 'array') return FieldArray
42
- if (props.field.$el === 'select') return SelectInput
43
- if (props.field.$el === 'toggle') return ToggleInput
44
- if (props.field.$el === 'check') return CheckInput
45
- if (props.field.$el === 'richtext') return RichText
46
- if (props.field.$el === 'upload') return UploadInput
47
- if (props.field.$el === 'file') return FileUpload
48
- if (props.field.$el === 'date') return DateInput
49
- if (props.field.$el === 'tabs') return TabsNav
50
- if (props.field.$el === 'form') return BglForm
51
- return props.field.$el ?? 'div'
52
- })
53
-
54
- function getFieldData(path?: string) {
55
- if (!path) return ''
56
- const keys = path.split(/[.[]/)
57
- let current = props.modelValue as any
58
-
59
- for (let i = 0; i < keys.length; i++) {
60
- const key = keys[i]
61
- if (!current || typeof current !== 'object' || !(key in current)) {
62
- return ''
63
- }
64
- current = current[key]
65
- }
66
- return current ?? ''
67
- }
68
- function safeClone(obj: any): any {
69
- if (obj === null || typeof obj !== 'object') return obj
70
-
71
- const seen = new WeakSet()
72
- return JSON.parse(JSON.stringify(obj, (key, value) => {
73
- if (typeof value === 'object' && value !== null) {
74
- if (seen.has(value)) {
75
- return undefined // Remove circular reference
76
- }
77
- seen.add(value)
78
- }
79
- return value
80
- }))
81
- }
82
- function updateField(path: string, value: any) {
83
- const keys = path.split(/[.[]/)
84
-
85
- let current = props.modelValue ?? {} as any
86
-
87
- // Build the path, ensuring each level is an object
88
- for (let i = 0; i < keys.length - 1; i++) {
89
- const key = keys[i]
90
- if (!(key in current) || typeof current[key] !== 'object' || current[key] === null) {
91
- current[key] = {}
92
- }
93
- current = current[key]
94
- }
95
-
96
- // Safely clone the value to remove circular references
97
- const safeValue = safeClone(value)
98
- current[keys[keys.length - 1]] = safeValue
99
- }
100
-
101
- const fieldData = $computed({
102
- get: () => {
103
- if (!props.id) return props.modelValue ?? props.field.defaultValue ?? (props.field.$el === 'form' ? {} : '')
104
- const value = getFieldData(props.id)
105
- if (props.field.$el === 'form' && !value) return {}
106
- return value ?? ''
107
- },
108
- set: (val: any) => {
109
- if (!props.id) return
110
- const currentValue = getFieldData(props.id)
111
- if (JSON.stringify(val) === JSON.stringify(currentValue)) return
112
-
113
- emit('update:modelValue', val)
114
- if (props.field.onUpdate) {
115
- props.field.onUpdate(val, currentValue)
116
- }
117
- updateField(props.id, val)
118
- }
119
- })
120
-
121
- const computedFieldData = $computed(
122
- () => props.field.transform?.(fieldData, props.modelValue as T) ?? fieldData
123
- )
124
-
125
- const vIf = $computed(() => {
126
- if (props.field['v-if'] === undefined && props.field.vIf === undefined) return true
127
- if (typeof props.field['v-if'] === 'boolean' || typeof props.field.vIf === 'boolean') return props.field['v-if']
128
- if (typeof props.field['v-if'] === 'string' || typeof props.field.vIf === 'string') return true
129
- if (typeof props.field['v-if'] === 'function') return props.field['v-if'](fieldData, props.modelValue as T)
130
- if (typeof props.field.vIf === 'function') return props.field.vIf(fieldData, props.modelValue as T)
131
- return true
132
- })
133
-
134
- const computedOptions = $computed(
135
- () => bindAttrs({ options: props.field.options }, fieldData, props.modelValue).options
136
- )
137
-
138
- const computedAttrs = $computed(() => {
139
- const attrs = { ...customAttrs, ...props.field.attrs }
140
- const boundAttrs = bindAttrs(attrs, fieldData, props.modelValue)
141
- return Object.fromEntries(
142
- Object.entries(boundAttrs).filter(([_, value]) => value !== undefined)
143
- )
144
- })
145
-
146
- const computedClass = $computed(
147
- () => classify(fieldData, props.modelValue, props.field.class, props.field.attrs?.class)
148
- )
149
- </script>
150
-
151
- <template>
152
- <component
153
- v-bind="computedAttrs"
154
- :is="is"
155
- v-if="vIf"
156
- :id="props.id"
157
- v-model="fieldData"
158
- :required="field.required"
159
- :class="computedClass"
160
- :label="field.label"
161
- :placeholder="field.placeholder || field.label"
162
- :defaultValue="field.defaultValue"
163
- :disabled="field.disabled"
164
- :options="computedOptions"
165
- :helptext="field.helptext"
166
- :schema="field.attrs?.schema ?? undefined"
167
- >
168
- <template v-if="field.$el === 'form'">
169
- <slot />
170
- </template>
171
- <template v-else>
172
- {{ computedFieldData }}
173
- <template
174
- v-for="(child, ii) in field.children"
175
- :key="ii"
176
- >
177
- <BglComponent
178
- v-if="(typeof child !== 'string')"
179
- :id="[props.id, child.id].filter(Boolean).join('.')"
180
- :field="child"
181
- :parent-path="props.id"
182
- />
183
- <span v-else>{{ child }}</span>
184
- </template>
185
- </template>
186
- </component>
187
- </template>