@bagelink/vue 0.0.825 → 0.0.827

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.
package/dist/style.css CHANGED
@@ -1188,10 +1188,10 @@ p {
1188
1188
  }
1189
1189
  .resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.8);color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}
1190
1190
 
1191
- .selectinput[data-v-94b45d29] {
1191
+ .selectinput[data-v-e3164caf] {
1192
1192
  width: 100%;
1193
1193
  }
1194
- .selectinput-option[data-v-94b45d29] {
1194
+ .selectinput-option[data-v-e3164caf] {
1195
1195
  padding: 6px 12px;
1196
1196
  cursor: pointer;
1197
1197
  border-radius: 5px;
@@ -1203,23 +1203,23 @@ p {
1203
1203
  font-size: var(--input-font-size);
1204
1204
  margin-block: 0.15rem;
1205
1205
  }
1206
- .selectinput-option .bgl_icon-font[data-v-94b45d29]{
1206
+ .selectinput-option .bgl_icon-font[data-v-e3164caf]{
1207
1207
  line-height: normal;
1208
1208
  }
1209
- .selectinput-options.multiselect .selectinput-option[data-v-94b45d29] {
1209
+ .selectinput-options.multiselect .selectinput-option[data-v-e3164caf] {
1210
1210
  grid-template-columns: 10px 1fr;
1211
1211
  }
1212
- .selectinput-options[data-v-94b45d29] {
1212
+ .selectinput-options[data-v-e3164caf] {
1213
1213
  max-height: 300px;
1214
1214
  overflow-y: auto;
1215
1215
  }
1216
- .selectinput-option[data-v-94b45d29]:hover {
1216
+ .selectinput-option[data-v-e3164caf]:hover {
1217
1217
  background: var(--bgl-gray-20);
1218
1218
  }
1219
- .isEmpty p[data-v-94b45d29] {
1219
+ .isEmpty p[data-v-e3164caf] {
1220
1220
  opacity: 0.3;
1221
1221
  }
1222
- .selected[data-v-94b45d29]{
1222
+ .selected[data-v-e3164caf]{
1223
1223
  /* background: var(--bgl-primary-tint); */
1224
1224
  background: var(--bgl-selected);
1225
1225
  }
@@ -1814,25 +1814,25 @@ p {
1814
1814
  transform: translateX(-20px);
1815
1815
  }
1816
1816
 
1817
- .skeleton-wrap[data-v-34172009] {
1817
+ .skeleton-wrap[data-v-9a44f23a] {
1818
1818
  margin-bottom: var(--skeleton-margin);
1819
1819
  }
1820
- .skeleton[data-v-34172009] {
1820
+ .skeleton[data-v-9a44f23a] {
1821
1821
  background-color: var(--skeleton-bg);
1822
1822
  border-radius: var(--bg-card-radius);
1823
1823
  margin-bottom: 0.25em;
1824
1824
  position: relative;
1825
1825
  overflow: hidden;
1826
1826
  }
1827
- .skeleton[data-v-34172009]::before {
1827
+ .skeleton[data-v-9a44f23a]::before {
1828
1828
  content: "";
1829
1829
  background: linear-gradient(90deg, transparent 20%, var(--skeleton-pulse) 50%, transparent 80%);
1830
- animation: loadingAnimation-34172009 1s ease-in-out infinite;
1830
+ animation: loadingAnimation-9a44f23a 1s ease-in-out infinite;
1831
1831
  position: absolute;
1832
1832
  inset: 0px;
1833
1833
  transform: translateX(-100%);
1834
1834
  }
1835
- @keyframes loadingAnimation-34172009 {
1835
+ @keyframes loadingAnimation-9a44f23a {
1836
1836
  to {
1837
1837
  transform: translateX(100%);
1838
1838
  }
@@ -16,6 +16,7 @@ interface TextInputOptions extends InputOptions {
16
16
  interface SlctInputOptions extends InputOptions {
17
17
  searchable?: boolean;
18
18
  multiselect?: boolean;
19
+ onSearch?: (search: string) => any;
19
20
  }
20
21
  interface NumFieldOptions extends InputOptions {
21
22
  max?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"BagelFormUtils.d.ts","sourceRoot":"","sources":["../../src/utils/BagelFormUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,cAAc,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAY,MAAM,eAAe,CAAA;AAGjG,UAAU,YAAY;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,KAAK,WAAW,GAAG,YAAY,CAAA;AAE/B,UAAU,gBAAiB,SAAQ,YAAY;IAC9C,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,UAAU,gBAAiB,SAAQ,YAAY;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,UAAU,eAAgB,SAAQ,YAAY;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACb;AAED,KAAK,eAAe,GAAG,YAAY,CAAA;AAEnC,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAM,EAAE,IAAI,GAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAIjI;AAED,wBAAgB,QAAQ,CACvB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,eAAe;;;;;;;;EAWzB;AAED,wBAAgB,QAAQ,CACvB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,gBAAgB,GACxB,KAAK,CAgBP;AAED,wBAAgB,SAAS,CACxB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,MAAM,EAAE,CAAC,EACrC,MAAM,CAAC,EAAE,gBAAgB,GACvB,KAAK,CAgBP;AAED,wBAAgB,UAAU,CACzB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,eAAe,GACvB,KAAK,CAQP;AAED,wBAAgB,SAAS,CACxB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,WAAW,GACnB,KAAK,CAaP;AAED,wBAAgB,QAAQ,CACvB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,eAAe,GACvB,KAAK,CAoBP;AAED,wBAAgB,MAAM,CAAC,GAAG,QAAQ,EAAE,KAAK,EAAE;;;;EAM1C;AAED,wBAAgB,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBrE;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,KAAK,CAO5F;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,KAAK,GAAG,SAAS,CASvF"}
1
+ {"version":3,"file":"BagelFormUtils.d.ts","sourceRoot":"","sources":["../../src/utils/BagelFormUtils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/vue",
3
3
  "type": "module",
4
- "version": "0.0.825",
4
+ "version": "0.0.827",
5
5
  "description": "Bagel core sdk packages",
6
6
  "author": {
7
7
  "name": "Neveh Allon",
@@ -2,6 +2,7 @@
2
2
  import {
3
3
  Btn,
4
4
  Card,
5
+ Skeleton,
5
6
  Dropdown,
6
7
  Icon,
7
8
  type MaterialIcons,
@@ -26,9 +27,10 @@ const props = defineProps<{
26
27
  defaultValue?: Option
27
28
  clearable?: boolean
28
29
  searchPlaceholder?: string
30
+ onSearch?: (search: string) => Promise<Option[]>
29
31
  }>()
30
32
 
31
- const emit = defineEmits(['update:modelValue'])
33
+ const emit = defineEmits(['update:modelValue']) // Add 'search' event
32
34
 
33
35
  const searchPlaceholder = $computed(() => props.searchPlaceholder || 'Search')
34
36
 
@@ -60,17 +62,35 @@ const selectedLabel = $computed((): string => {
60
62
  return selectedItems.map(item => getLabel(item)).join(', ')
61
63
  })
62
64
 
63
- const filteredOptions = $computed(() => props.options.filter((option) => {
64
- const searchTerm = search
65
- .split(/\s+/)
66
- .filter(Boolean)
67
- .map(t => new RegExp(t.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi'))
68
- return (
69
- Boolean(option)
70
- && (searchTerm.every(s => getLabel(option).match(s))
65
+ let serverOptions: Option[] = $ref([])
66
+ let isSearching = $ref(false)
67
+
68
+ async function runServerSearch() {
69
+ if (props.onSearch !== undefined) {
70
+ isSearching = true
71
+ serverOptions = await props.onSearch(search)
72
+ isSearching = false
73
+ }
74
+ }
75
+
76
+ const filteredOptions = $computed(() => {
77
+ if (props.onSearch !== undefined) {
78
+ if (isSearching) return []
79
+ if (search.trim().length) return serverOptions
80
+ return props.options
81
+ }
82
+ return props.options.filter((option) => {
83
+ const searchTerm = search
84
+ .split(/\s+/)
85
+ .filter(Boolean)
86
+ .map(t => new RegExp(t.replaceAll(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi'))
87
+ return (
88
+ Boolean(option)
89
+ && (searchTerm.every(s => getLabel(option).match(s))
90
+ )
71
91
  )
72
- )
73
- }))
92
+ })
93
+ })
74
94
 
75
95
  const isSelected = (option: Option) => selectedItems.find(item => getValue(option) === getValue(item)) !== undefined
76
96
 
@@ -87,7 +107,7 @@ function updateOpen(visible: boolean) {
87
107
  if (props.searchable && !props.multiselect && selectedItemCount) search = selectedLabel as string
88
108
  setTimeout(
89
109
  () => (searchInput as any)?.$el?.querySelector('input')?.focus(),
90
- 350,
110
+ 100,
91
111
  )
92
112
  }
93
113
  }
@@ -176,6 +196,7 @@ watch(
176
196
  )
177
197
 
178
198
  onMounted(() => {
199
+ console.log('mounted')
179
200
  if (props.defaultValue !== undefined) {
180
201
  const defaultOption = props.options.find(
181
202
  o => getValue(o) === getValue(props.defaultValue),
@@ -193,6 +214,7 @@ onMounted(() => {
193
214
  ref="dropdown"
194
215
  placement="bottom-start"
195
216
  class="bagel-input selectinput"
217
+ noAutoFocus
196
218
  @hide="updateOpen(false)"
197
219
  >
198
220
  <template #trigger>
@@ -207,6 +229,7 @@ onMounted(() => {
207
229
  dense
208
230
  :placeholder="searchPlaceholder"
209
231
  icon="search"
232
+ @debounce="runServerSearch"
210
233
  @input="selected = false"
211
234
  />
212
235
  <button
@@ -249,6 +272,7 @@ onMounted(() => {
249
272
  </div>
250
273
  </label>
251
274
  </template>
275
+ <Skeleton v-if="isSearching" :count="3" width="230px" height="30px" class="mx-1 my-05" />
252
276
  <Card
253
277
  class="p-05"
254
278
  :style="{ width: fullWidth ? '100%' : 'auto' }"
@@ -4,13 +4,15 @@ const {
4
4
  height = '50px',
5
5
  width = 'auto',
6
6
  borderRadius = 'var(--skeleton-radius)',
7
- round = false
7
+ round = false,
8
+ class: className = '',
8
9
  } = defineProps<{
9
- count?: number
10
+ count?: number | string
10
11
  height?: string
11
12
  width?: string
12
13
  round?: boolean
13
14
  borderRadius?: string
15
+ class?: string
14
16
  }>()
15
17
  import { useSlots } from 'vue'
16
18
 
@@ -18,11 +20,11 @@ const slots = useSlots()
18
20
  </script>
19
21
 
20
22
  <template>
21
- <template v-for="i in count" :key="i">
22
- <div v-if="slots.default" class="skeleton-wrap">
23
+ <template v-for="i in +count" :key="i">
24
+ <div v-if="slots.default" class="skeleton-wrap" :class="className">
23
25
  <slot />
24
26
  </div>
25
- <div v-else class="skeleton" :style="{ height, width, borderRadius }" :class="{ round }" />
27
+ <div v-else class="skeleton" :style="{ height, width, borderRadius }" :class="{ round, [className as string]: true }" />
26
28
  </template>
27
29
  </template>
28
30
 
@@ -21,6 +21,7 @@ interface TextInputOptions extends InputOptions {
21
21
  interface SlctInputOptions extends InputOptions {
22
22
  searchable?: boolean
23
23
  multiselect?: boolean
24
+ onSearch?: (search: string) => any
24
25
  }
25
26
 
26
27
  interface NumFieldOptions extends InputOptions {
@@ -80,6 +81,7 @@ export function slctField(
80
81
  label?: string,
81
82
  options?: Option[] | (() => Option[]),
82
83
  config?: SlctInputOptions,
84
+
83
85
  ): Field {
84
86
  return {
85
87
  $el: 'select',
@@ -94,6 +96,7 @@ export function slctField(
94
96
  disabled: config?.disabled,
95
97
  searchable: config?.searchable,
96
98
  multiselect: config?.multiselect,
99
+ onSearch: config?.onSearch,
97
100
  },
98
101
  }
99
102
  }