@bagelink/vue 0.0.237 → 0.0.239

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,5 +1,5 @@
1
1
  import type { InjectionKey, Plugin } from 'vue';
2
- import { Bagel } from '@bagelink/sdk';
2
+ import { Bagel } from '../../../sdk/src/index.ts';
3
3
  export declare const bagelInjectionKey: InjectionKey<Bagel>;
4
4
  export declare const i18nTInjectionKey: InjectionKey<(key: string) => string>;
5
5
  export declare function useBagel(): Bagel;
package/dist/style.css CHANGED
@@ -306,16 +306,16 @@
306
306
  }
307
307
  }
308
308
 
309
- .loading[data-v-593b2146] {
309
+ .loading[data-v-1a7bde1e] {
310
310
  border: 1px solid var(--bgl-white);
311
311
  border-bottom: 2px solid var(--bgl-white);
312
- animation: spin-593b2146 1s linear infinite;
312
+ animation: spin-1a7bde1e 1s linear infinite;
313
313
  border-radius: 100px;
314
314
  width: 1rem;
315
315
  height: 1rem;
316
316
  margin: auto;
317
317
  }
318
- @keyframes spin-593b2146 {
318
+ @keyframes spin-1a7bde1e {
319
319
  0% {
320
320
  transform: rotate(0deg);
321
321
  }
@@ -323,7 +323,7 @@
323
323
  transform: rotate(360deg);
324
324
  }
325
325
  }
326
- .btn-icon[data-v-593b2146] {
326
+ .btn-icon[data-v-1a7bde1e] {
327
327
  height: var(--btn-height);
328
328
  width: var(--btn-height);
329
329
  border-radius: 100%;
@@ -333,97 +333,97 @@
333
333
  flex-shrink: 0;
334
334
  transition: var(--bgl-transition);
335
335
  }
336
- .btn[data-v-593b2146] {
336
+ .btn[data-v-1a7bde1e] {
337
337
  padding-left: var(--btn-padding);
338
338
  padding-right: var(--btn-padding);
339
339
  transition: var(--bgl-transition);
340
340
  text-decoration: none;
341
341
  }
342
- .btn[disabled="true"][data-v-593b2146] {
342
+ .btn[disabled="true"][data-v-1a7bde1e] {
343
343
  opacity: 0.5;
344
344
  cursor: not-allowed;
345
345
  }
346
- .btn-flex[data-v-593b2146] {
346
+ .btn-flex[data-v-1a7bde1e] {
347
347
  display: flex;
348
348
  align-items: center;
349
349
  gap: 0.5rem;
350
350
  justify-content: center;
351
351
  }
352
- .btn .icon-font[data-v-593b2146] {
352
+ .btn .icon-font[data-v-1a7bde1e] {
353
353
  font-size: calc(var(--input-font-size) * 1.3);
354
354
  }
355
- .btn[data-v-593b2146],
356
- .btn-icon[data-v-593b2146] {
357
- background-color: var(--bfb3f9c4);
358
- color: var(--5ae19879);
355
+ .btn[data-v-1a7bde1e],
356
+ .btn-icon[data-v-1a7bde1e] {
357
+ background-color: var(--566fc0e2);
358
+ color: var(--03adf93d);
359
359
  }
360
- .btn[data-v-593b2146]:hover,
361
- .btn-icon[data-v-593b2146]:hover {
360
+ .btn[data-v-1a7bde1e]:hover,
361
+ .btn-icon[data-v-1a7bde1e]:hover {
362
362
  filter: var(--bgl-hover-filter);
363
363
  }
364
- .btn[data-v-593b2146]:active,
365
- .btn-icon[data-v-593b2146]:active {
364
+ .btn[data-v-1a7bde1e]:active,
365
+ .btn-icon[data-v-1a7bde1e]:active {
366
366
  filter: var(--bgl-active-filter);
367
367
  }
368
- .btn.flatBtn[data-v-593b2146] {
368
+ .btn.flatBtn[data-v-1a7bde1e] {
369
369
  padding-left: var(--btn-padding);
370
370
  padding-right: var(--btn-padding);
371
371
  background: transparent;
372
372
  }
373
- .btn-icon.flatBtn[data-v-593b2146] {
373
+ .btn-icon.flatBtn[data-v-1a7bde1e] {
374
374
  background: transparent;
375
375
  }
376
- .btn.flatBtn[data-v-593b2146]:hover,
377
- .btn-icon.flatBtn[data-v-593b2146]:hover {
376
+ .btn.flatBtn[data-v-1a7bde1e]:hover,
377
+ .btn-icon.flatBtn[data-v-1a7bde1e]:hover {
378
378
  filter: var(--bgl-active-filter);
379
379
  }
380
- .btn.flatBtn[data-v-593b2146]:active,
381
- .btn-icon.flatBtn[data-v-593b2146]:active {
380
+ .btn.flatBtn[data-v-1a7bde1e]:active,
381
+ .btn-icon.flatBtn[data-v-1a7bde1e]:active {
382
382
  background: var(--bgl-white);
383
383
  filter: var(--bgl-hover-filter);
384
384
  }
385
- .btn.flatBtn.red[data-v-593b2146],
386
- .btn-icon.flatBtn.red[data-v-593b2146] {
385
+ .btn.flatBtn.red[data-v-1a7bde1e],
386
+ .btn-icon.flatBtn.red[data-v-1a7bde1e] {
387
387
  color: var(--bgl-red);
388
388
  }
389
- .btn.flatBtn.light[data-v-593b2146],
390
- .btn-icon.flatBtn.light[data-v-593b2146] {
389
+ .btn.flatBtn.light[data-v-1a7bde1e],
390
+ .btn-icon.flatBtn.light[data-v-1a7bde1e] {
391
391
  color: var(--bgl-primary-tint);
392
392
  }
393
- .btn.flatBtn.black[data-v-593b2146],
394
- .btn-icon.flatBtn.black[data-v-593b2146] {
393
+ .btn.flatBtn.black[data-v-1a7bde1e],
394
+ .btn-icon.flatBtn.black[data-v-1a7bde1e] {
395
395
  color: var(--bgl-black);
396
396
  }
397
- .btn.flatBtn.gray[data-v-593b2146],
398
- .btn-icon.flatBtn.gray[data-v-593b2146] {
397
+ .btn.flatBtn.gray[data-v-1a7bde1e],
398
+ .btn-icon.flatBtn.gray[data-v-1a7bde1e] {
399
399
  color: var(--bgl-gray);
400
400
  }
401
- .btn.thin[data-v-593b2146] {
401
+ .btn.thin[data-v-1a7bde1e] {
402
402
  padding-left: calc(var(--btn-padding) / 2);
403
403
  padding-right: calc(var(--btn-padding) / 2);
404
404
  }
405
- .btn.round[data-v-593b2146] {
405
+ .btn.round[data-v-1a7bde1e] {
406
406
  border-radius: calc(var(--btn-border-radius) * 2);
407
407
  }
408
- .btn-icon.thin[data-v-593b2146] {
408
+ .btn-icon.thin[data-v-1a7bde1e] {
409
409
  height: calc(var(--btn-height) / 1.5);
410
410
  width: calc(var(--btn-height) / 1.5);
411
411
  line-height: 1;
412
412
  }
413
- [dir="rtl"] .icon-font[data-v-593b2146] {
413
+ [dir="rtl"] .icon-font[data-v-1a7bde1e] {
414
414
  transform: rotateY(180deg);
415
415
  }
416
- .btn-border[data-v-593b2146] {
417
- outline: 1px solid var(--bfb3f9c4);
418
- color: var(--bfb3f9c4);
416
+ .btn-border[data-v-1a7bde1e] {
417
+ outline: 1px solid var(--566fc0e2);
418
+ color: var(--566fc0e2);
419
419
  background: transparent;
420
420
  }
421
- .btn-border[data-v-593b2146]:hover {
421
+ .btn-border[data-v-1a7bde1e]:hover {
422
422
  color: var(--bgl-white);
423
- background: var(--bfb3f9c4);
423
+ background: var(--566fc0e2);
424
424
  filter: brightness(100%);
425
425
  }
426
- .btn-border[data-v-593b2146]:active {
426
+ .btn-border[data-v-1a7bde1e]:active {
427
427
  filter: brightness(80%);
428
428
  }
429
429
  .bg-dark {
@@ -521,11 +521,11 @@
521
521
  }
522
522
  }
523
523
 
524
- .modal-title[data-v-6badff9e] {
524
+ .modal-title[data-v-6b6bbb1b] {
525
525
  margin-top: 0.5rem;
526
526
  }
527
527
  @media screen and (max-width: 910px) {
528
- .modal-title[data-v-6badff9e] {
528
+ .modal-title[data-v-6b6bbb1b] {
529
529
  margin-top: 1rem;
530
530
  }
531
531
  }
@@ -716,37 +716,37 @@
716
716
  border-radius: var(--btn-border-radius);
717
717
  }
718
718
 
719
- .list-arrows[data-v-a167604a] {
719
+ .list-arrows[data-v-56ec9012] {
720
720
  opacity: 0;
721
721
  }
722
- .list-arrows .icon-font[data-v-a167604a] {
722
+ .list-arrows .icon-font[data-v-56ec9012] {
723
723
  transition: all ease-in-out 0.2s;
724
724
  }
725
- .list-arrows.sorted[data-v-a167604a] {
725
+ .list-arrows.sorted[data-v-56ec9012] {
726
726
  opacity: 1;
727
727
  }
728
- .col img[data-v-a167604a] {
728
+ .col img[data-v-56ec9012] {
729
729
  height: 35px;
730
730
  margin-top: -14px;
731
731
  margin-bottom: -14px;
732
732
  border-radius: 5px;
733
733
  }
734
- .list-arrows.sorted .desc[data-v-a167604a] {
734
+ .list-arrows.sorted .desc[data-v-56ec9012] {
735
735
  transform: rotate(180deg);
736
736
  }
737
- table[data-v-a167604a] {
737
+ table[data-v-56ec9012] {
738
738
  border-collapse: separate;
739
739
  border-spacing: 0 15px;
740
740
  border-collapse: collapse;
741
741
  }
742
- th[data-v-a167604a] {
742
+ th[data-v-56ec9012] {
743
743
  font-weight: 400;
744
744
  }
745
- .row[data-v-a167604a] {
745
+ .row[data-v-56ec9012] {
746
746
  border-bottom: 1px solid var(--border-color);
747
747
  cursor: pointer;
748
748
  }
749
- .row.first-row[data-v-a167604a] {
749
+ .row.first-row[data-v-56ec9012] {
750
750
  font-size: 0.8rem;
751
751
  color: var(--bgl-black-tint);
752
752
  position: sticky;
@@ -756,7 +756,7 @@ th[data-v-a167604a] {
756
756
  height: 50px;
757
757
  vertical-align: bottom;
758
758
  }
759
- .row.first-row[data-v-a167604a]::after {
759
+ .row.first-row[data-v-56ec9012]::after {
760
760
  content: "";
761
761
  border-bottom: 1px solid var(--border-color);
762
762
  position: absolute;
@@ -764,11 +764,11 @@ th[data-v-a167604a] {
764
764
  right: 0;
765
765
  bottom: -1px;
766
766
  }
767
- .first-row .col[data-v-a167604a] {
767
+ .first-row .col[data-v-56ec9012] {
768
768
  cursor: pointer;
769
769
  background: var(--bgl-white);
770
770
  }
771
- .col[data-v-a167604a] {
771
+ .col[data-v-56ec9012] {
772
772
  white-space: nowrap;
773
773
  padding: 14px;
774
774
  transition: var(--bgl-transition);
@@ -777,16 +777,16 @@ th[data-v-a167604a] {
777
777
  padding-right: 1rem;
778
778
  align-items: center;
779
779
  }
780
- .col>div[data-v-a167604a] {
780
+ .col>div[data-v-56ec9012] {
781
781
  display: flex;
782
782
  gap: 0.5rem;
783
783
  }
784
- .max-col-width[data-v-a167604a] {
784
+ .max-col-width[data-v-56ec9012] {
785
785
  max-width: 30vw;
786
786
  overflow: hidden;
787
787
  text-overflow: ellipsis;
788
788
  }
789
- .col.check .icon-font[data-v-a167604a] {
789
+ .col.check .icon-font[data-v-56ec9012] {
790
790
  border-radius: 100%;
791
791
  background: var(--bgl-blue-20);
792
792
  color: var(--bgl-primary);
@@ -797,27 +797,27 @@ th[data-v-a167604a] {
797
797
  justify-content: center;
798
798
  margin-top: -2px;
799
799
  }
800
- .rows[data-v-a167604a] {
800
+ .rows[data-v-56ec9012] {
801
801
  font-size: 0.8125em;
802
802
  }
803
- .table-list[data-v-a167604a] {
803
+ .table-list[data-v-56ec9012] {
804
804
  height: 100%;
805
805
  position: relative;
806
806
  padding-left: 0 !important;
807
807
  padding-right: 0 !important;
808
808
  overflow: auto;
809
809
  }
810
- .BagelTable .table-list[data-v-a167604a] {
810
+ .BagelTable .table-list[data-v-56ec9012] {
811
811
  overflow: unset;
812
812
  }
813
- .row-item[data-v-a167604a] {
813
+ .row-item[data-v-56ec9012] {
814
814
  height: 50px;
815
815
  transition: all 200ms ease;
816
816
  }
817
- .row-item[data-v-a167604a]:hover {
817
+ .row-item[data-v-56ec9012]:hover {
818
818
  background: var(--bgl-gray-light);
819
819
  }
820
- .infinite-wrapper[data-v-a167604a] {
820
+ .infinite-wrapper[data-v-56ec9012] {
821
821
  overflow-y: auto;
822
822
  width: 100%;
823
823
  }
@@ -2870,6 +2870,12 @@ h6 {}
2870
2870
  justify-content: space-between;
2871
2871
  align-items: center;
2872
2872
  }
2873
+ .modal-footer>div {
2874
+ gap: 1rem;
2875
+ display: flex;
2876
+ justify-content: space-between;
2877
+ align-items: center;
2878
+ }
2873
2879
  * {
2874
2880
  box-sizing: border-box;
2875
2881
  }
@@ -3180,7 +3186,7 @@ h6 {}
3180
3186
  }
3181
3187
  .list-view {
3182
3188
  grid-area: list-view;
3183
- grid-template-areas: "list-header" "list-content";
3189
+ grid-template-areas: "list-header""list-content";
3184
3190
  grid-template-columns: 1fr;
3185
3191
  overflow-y: auto;
3186
3192
  grid-template-rows: -webkit-max-content 1fr;
@@ -3204,7 +3210,7 @@ h6 {}
3204
3210
  transform: translateX(-20px);
3205
3211
  opacity: 0;
3206
3212
  }
3207
- .grid > * {
3213
+ .grid>* {
3208
3214
  min-height: 0;
3209
3215
  }
3210
3216
  .view-wrapper {
@@ -1,5 +1,5 @@
1
1
  export type { MaterialIcons } from './materialIcons';
2
- export type { Tables, TableToTypeMapping } from '@bagelink/sdk';
2
+ export type { Tables, TableToTypeMapping } from '../../../sdk/src/index.ts';
3
3
  export type { StorageFile } from './file';
4
4
  export type { NavLink } from '../components/NavBar.vue';
5
5
  export * from './BtnOptions';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/vue",
3
3
  "type": "module",
4
- "version": "0.0.237",
4
+ "version": "0.0.239",
5
5
  "description": "Bagel core sdk packages",
6
6
  "author": {
7
7
  "name": "Neveh Allon",
@@ -51,8 +51,8 @@
51
51
  "./vite.config.ts"
52
52
  ],
53
53
  "devDependencies": {
54
- "@vue-macros/reactivity-transform": "^0.4.1",
55
- "vue": "^3.4.3"
54
+ "@vue-macros/reactivity-transform": "^0.4.3",
55
+ "vue": "^3.4.15"
56
56
  },
57
57
  "peerDependencies": {
58
58
  "@bagelink/sdk": "*",
@@ -113,7 +113,7 @@
113
113
  "access": "public"
114
114
  },
115
115
  "dependencies": {
116
- "type-fest": "^4.10.1",
116
+ "type-fest": "^4.10.2",
117
117
  "vue-multiselect": "3.0.0-beta.3"
118
118
  },
119
119
  "scripts": {
@@ -59,7 +59,10 @@ const props = withDefaults(
59
59
  );
60
60
 
61
61
  const computedTheme = $computed(
62
- () => (props?.color || props?.theme),
62
+ () => {
63
+ if (props.disabled) return 'gray-light';
64
+ return (props?.color || props?.theme);
65
+ },
63
66
  );
64
67
 
65
68
  const computedDefaultColors = $computed(
@@ -1,6 +1,8 @@
1
1
  <template>
2
- <div class="bg-dark" :class="{ 'is-side': side, 'is-active': isActive }"
3
- @click="() => (dismissable ? closeModal() : '')" @keydown.esc="closeModal">
2
+ <div
3
+ class="bg-dark" :class="{ 'is-side': side, 'is-active': isActive }"
4
+ @click="() => (dismissable ? closeModal() : '')" @keydown.esc="closeModal"
5
+ >
4
6
  <Card class="modal" @click.stop>
5
7
  <header class="tool-bar">
6
8
  <slot name="toolbar" />
@@ -3,8 +3,8 @@
3
3
  <BagelForm v-model="formData" :schema="computedFormSchema" />
4
4
  <template #footer v-if="onDelete || onSubmit">
5
5
  <div>
6
- <Btn flat value="Cancel" @click="closeModal()" />
7
- <Btn icon="delete" v-if="onDelete" flat value="Delete" @click="runDelete()" color="red" />
6
+ <Btn thin flat value="Cancel" @click="closeModal()" />
7
+ <Btn thin icon="delete" v-if="onDelete" flat value="Delete" @click="runDelete()" color="red" />
8
8
  </div>
9
9
  <Btn value="Submit" @click="runSubmit()" />
10
10
  </template>
@@ -2,62 +2,21 @@
2
2
  <div class="table-list-wrap h-100">
3
3
  <table class="infinite-wrapper">
4
4
  <thead class="row first-row">
5
- <th
6
- class="col"
7
- v-for="field in computedSchema"
8
- :key="field.id"
9
- @click="sort(field?.id || '')"
10
- >
5
+ <th class="col" v-for="field in computedSchema" :key="field.id" @click="sort(field?.id || '')">
11
6
  <div class="flex">
12
7
  {{ field.id }}
13
- <div
14
- class="list-arrows"
15
- :class="{ sorted: sortField === field.id }"
16
- >
17
- <MaterialIcon
18
- :class="{ desc: sortDirection === 'DESC' }"
19
- icon="keyboard_arrow_up"
20
- />
8
+ <div class="list-arrows" :class="{ sorted: sortField === field.id }">
9
+ <MaterialIcon :class="{ desc: sortDirection === 'DESC' }" icon="keyboard_arrow_up" />
21
10
  </div>
22
11
  </div>
23
12
  </th>
24
13
  </thead>
25
- <tbody
26
- ref="infinite"
27
- class="rows infinite"
28
- :class="{ loading }"
29
- >
30
- <tr
31
- @click="selectElement(row)"
32
- class="row row-item position-relative"
33
- v-for="row in data"
34
- :key="row.id"
35
- >
36
- <td
37
- class="col"
38
- v-for="field in computedSchema"
39
- :key="`${field.id}-${row.id}`"
40
- >
41
- <slot
42
- v-if="field.id && slots[field.id]"
43
- :name="field.id"
44
- :row="row"
45
- :field="field"
46
- />
14
+ <tbody ref="infinite" class="rows infinite" :class="{ loading }">
15
+ <tr v-for="row in data" :key="row.id" @click="selectElement(row)" class="row row-item position-relative">
16
+ <td class="col" v-for="field in computedSchema" :key="`${field.id}-${row.id}`">
17
+ <slot v-if="field.id && slots[field.id]" :name="field.id" :row="row" :field="field" />
47
18
  <div v-else>
48
- <component
49
- :is="field.$el || 'div'"
50
- v-if="iffer(field, row)"
51
- v-bind="bindAttrs(field.attrs, denullify(row, field.id), row)"
52
- :class="classify(denullify(row, field.id), row, field.class, field.attrs?.class)"
53
- :src="field.$el === 'img' && field.id ? row[field.id]?.url : ''"
54
- :modelValue="field.id ? row[field.id] : ''"
55
- @update:modelValue="($event: any) => field?.onUpdate?.($event, denullify(row, field.id), row)"
56
- >
57
- {{
58
- field?.transform?.(denullify(row, field.id), row) || denullify(row, field.id) || ""
59
- }}
60
- </component>
19
+ <BglField :field="field" :modelValue="row" />
61
20
  </div>
62
21
  </td>
63
22
  </tr>
@@ -71,11 +30,8 @@
71
30
  import { useSlots } from 'vue';
72
31
  import {
73
32
  type BglFormSchemaT,
74
- bindAttrs,
75
- classify,
76
- denullify,
77
33
  MaterialIcon,
78
- iffer,
34
+ BglField,
79
35
  } from '@bagelink/vue';
80
36
 
81
37
  const slots = useSlots();
@@ -93,7 +49,7 @@ const computedSchema = $computed(() => {
93
49
  return props.schema;
94
50
  });
95
51
 
96
- const emit = defineEmits(['select']);
52
+ const emit = defineEmits(['select', 'orderBy']);
97
53
 
98
54
  const selectElement = (data: Record<string, any>) => emit('select', data);
99
55
 
@@ -108,6 +64,7 @@ const sort = (fieldname: string) => {
108
64
  sortField = fieldname;
109
65
  sortDirection = 'ASC';
110
66
  }
67
+ emit('orderBy', `${fieldname} ${sortDirection}`.trim());
111
68
  };
112
69
  </script>
113
70
 
@@ -100,6 +100,13 @@
100
100
  align-items: center;
101
101
  }
102
102
 
103
+ .modal-footer>div {
104
+ gap: 1rem;
105
+ display: flex;
106
+ justify-content: space-between;
107
+ align-items: center;
108
+ }
109
+
103
110
  * {
104
111
  box-sizing: border-box;
105
112
  }
@@ -468,7 +475,7 @@
468
475
 
469
476
  .list-view {
470
477
  grid-area: list-view;
471
- grid-template-areas: "list-header" "list-content";
478
+ grid-template-areas: "list-header""list-content";
472
479
  grid-template-columns: 1fr;
473
480
  overflow-y: auto;
474
481
  grid-template-rows: -webkit-max-content 1fr;
@@ -498,7 +505,7 @@
498
505
  opacity: 0;
499
506
  }
500
507
 
501
- .grid > * {
508
+ .grid>* {
502
509
  min-height: 0;
503
510
  }
504
511
 
@@ -606,4 +613,4 @@
606
613
  -webkit-margin-start: 0.5rem;
607
614
  margin-inline-start: 0.5rem;
608
615
  }
609
- }
616
+ }
package/tsconfig.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
+
2
3
  "compilerOptions": {
3
4
  "target": "ESNext",
4
5
  "baseUrl": ".",
5
- "rootDir": ".",
6
+ "rootDir": "..",
6
7
  "module": "ESNext",
7
8
  "strict": true,
8
9
  "jsx": "preserve",
@@ -29,6 +30,9 @@
29
30
  "@vue-macros/reactivity-transform/macros-global"
30
31
  ],
31
32
  "paths": {
33
+ "@bagelink/sdk": [
34
+ "../sdk/src/index.ts"
35
+ ],
32
36
  "@bagelink/vue": [
33
37
  "./src/index.ts"
34
38
  ],
@@ -41,6 +45,6 @@
41
45
  "**/**/*.ts",
42
46
  "**/**/*.vue",
43
47
  "**/**/*.d.ts",
44
- "./vite.config.ts",
45
- ]
48
+ "./vite.config.ts"
49
+ ],
46
50
  }