@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.
- package/dist/components/Btn.vue.d.ts +1 -1
- package/dist/components/Btn.vue.d.ts.map +1 -1
- package/dist/components/Drop.vue.d.ts +34 -0
- package/dist/components/Drop.vue.d.ts.map +1 -0
- package/dist/components/FileUploader.vue.d.ts +60 -0
- package/dist/components/FileUploader.vue.d.ts.map +1 -0
- package/dist/components/Modal.vue.d.ts.map +1 -1
- package/dist/components/TableSchema.vue.d.ts +2 -0
- package/dist/components/TableSchema.vue.d.ts.map +1 -1
- package/dist/components/form/ItemRef.vue.d.ts +1 -0
- package/dist/components/form/ItemRef.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/SelectField.vue.d.ts +1 -4
- package/dist/components/form/inputs/SelectField.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/TextInput.vue.d.ts +1 -1
- package/dist/components/form/inputs/TextInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/ToggleInput.vue.d.ts +6 -6
- package/dist/index.cjs +1714 -1706
- package/dist/index.mjs +1714 -1706
- package/dist/plugins/bagel.d.ts +1 -1
- package/dist/style.css +71 -65
- package/dist/types/index.d.ts +1 -1
- package/package.json +4 -4
- package/src/components/Btn.vue +4 -1
- package/src/components/Modal.vue +4 -2
- package/src/components/ModalForm.vue +2 -2
- package/src/components/TableSchema.vue +11 -54
- package/src/styles/theme.css +10 -3
- package/tsconfig.json +7 -3
package/dist/plugins/bagel.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { InjectionKey, Plugin } from 'vue';
|
|
2
|
-
import { Bagel } from '
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
342
|
+
.btn[disabled="true"][data-v-1a7bde1e] {
|
|
343
343
|
opacity: 0.5;
|
|
344
344
|
cursor: not-allowed;
|
|
345
345
|
}
|
|
346
|
-
.btn-flex[data-v-
|
|
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-
|
|
352
|
+
.btn .icon-font[data-v-1a7bde1e] {
|
|
353
353
|
font-size: calc(var(--input-font-size) * 1.3);
|
|
354
354
|
}
|
|
355
|
-
.btn[data-v-
|
|
356
|
-
.btn-icon[data-v-
|
|
357
|
-
background-color: var(--
|
|
358
|
-
color: var(--
|
|
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-
|
|
361
|
-
.btn-icon[data-v-
|
|
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-
|
|
365
|
-
.btn-icon[data-v-
|
|
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-
|
|
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-
|
|
373
|
+
.btn-icon.flatBtn[data-v-1a7bde1e] {
|
|
374
374
|
background: transparent;
|
|
375
375
|
}
|
|
376
|
-
.btn.flatBtn[data-v-
|
|
377
|
-
.btn-icon.flatBtn[data-v-
|
|
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-
|
|
381
|
-
.btn-icon.flatBtn[data-v-
|
|
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-
|
|
386
|
-
.btn-icon.flatBtn.red[data-v-
|
|
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-
|
|
390
|
-
.btn-icon.flatBtn.light[data-v-
|
|
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-
|
|
394
|
-
.btn-icon.flatBtn.black[data-v-
|
|
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-
|
|
398
|
-
.btn-icon.flatBtn.gray[data-v-
|
|
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-
|
|
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-
|
|
405
|
+
.btn.round[data-v-1a7bde1e] {
|
|
406
406
|
border-radius: calc(var(--btn-border-radius) * 2);
|
|
407
407
|
}
|
|
408
|
-
.btn-icon.thin[data-v-
|
|
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-
|
|
413
|
+
[dir="rtl"] .icon-font[data-v-1a7bde1e] {
|
|
414
414
|
transform: rotateY(180deg);
|
|
415
415
|
}
|
|
416
|
-
.btn-border[data-v-
|
|
417
|
-
outline: 1px solid var(--
|
|
418
|
-
color: var(--
|
|
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-
|
|
421
|
+
.btn-border[data-v-1a7bde1e]:hover {
|
|
422
422
|
color: var(--bgl-white);
|
|
423
|
-
background: var(--
|
|
423
|
+
background: var(--566fc0e2);
|
|
424
424
|
filter: brightness(100%);
|
|
425
425
|
}
|
|
426
|
-
.btn-border[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
719
|
+
.list-arrows[data-v-56ec9012] {
|
|
720
720
|
opacity: 0;
|
|
721
721
|
}
|
|
722
|
-
.list-arrows .icon-font[data-v-
|
|
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-
|
|
725
|
+
.list-arrows.sorted[data-v-56ec9012] {
|
|
726
726
|
opacity: 1;
|
|
727
727
|
}
|
|
728
|
-
.col img[data-v-
|
|
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-
|
|
734
|
+
.list-arrows.sorted .desc[data-v-56ec9012] {
|
|
735
735
|
transform: rotate(180deg);
|
|
736
736
|
}
|
|
737
|
-
table[data-v-
|
|
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-
|
|
742
|
+
th[data-v-56ec9012] {
|
|
743
743
|
font-weight: 400;
|
|
744
744
|
}
|
|
745
|
-
.row[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
767
|
+
.first-row .col[data-v-56ec9012] {
|
|
768
768
|
cursor: pointer;
|
|
769
769
|
background: var(--bgl-white);
|
|
770
770
|
}
|
|
771
|
-
.col[data-v-
|
|
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-
|
|
780
|
+
.col>div[data-v-56ec9012] {
|
|
781
781
|
display: flex;
|
|
782
782
|
gap: 0.5rem;
|
|
783
783
|
}
|
|
784
|
-
.max-col-width[data-v-
|
|
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-
|
|
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-
|
|
800
|
+
.rows[data-v-56ec9012] {
|
|
801
801
|
font-size: 0.8125em;
|
|
802
802
|
}
|
|
803
|
-
.table-list[data-v-
|
|
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-
|
|
810
|
+
.BagelTable .table-list[data-v-56ec9012] {
|
|
811
811
|
overflow: unset;
|
|
812
812
|
}
|
|
813
|
-
.row-item[data-v-
|
|
813
|
+
.row-item[data-v-56ec9012] {
|
|
814
814
|
height: 50px;
|
|
815
815
|
transition: all 200ms ease;
|
|
816
816
|
}
|
|
817
|
-
.row-item[data-v-
|
|
817
|
+
.row-item[data-v-56ec9012]:hover {
|
|
818
818
|
background: var(--bgl-gray-light);
|
|
819
819
|
}
|
|
820
|
-
.infinite-wrapper[data-v-
|
|
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"
|
|
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 {
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { MaterialIcons } from './materialIcons';
|
|
2
|
-
export type { Tables, TableToTypeMapping } from '
|
|
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.
|
|
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.
|
|
55
|
-
"vue": "^3.4.
|
|
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.
|
|
116
|
+
"type-fest": "^4.10.2",
|
|
117
117
|
"vue-multiselect": "3.0.0-beta.3"
|
|
118
118
|
},
|
|
119
119
|
"scripts": {
|
package/src/components/Btn.vue
CHANGED
|
@@ -59,7 +59,10 @@ const props = withDefaults(
|
|
|
59
59
|
);
|
|
60
60
|
|
|
61
61
|
const computedTheme = $computed(
|
|
62
|
-
() =>
|
|
62
|
+
() => {
|
|
63
|
+
if (props.disabled) return 'gray-light';
|
|
64
|
+
return (props?.color || props?.theme);
|
|
65
|
+
},
|
|
63
66
|
);
|
|
64
67
|
|
|
65
68
|
const computedDefaultColors = $computed(
|
package/src/components/Modal.vue
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
|
|
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="
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
<
|
|
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
|
-
|
|
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
|
|
package/src/styles/theme.css
CHANGED
|
@@ -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"
|
|
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
|
}
|