@bagelink/vue 0.0.394 → 0.0.400

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
@@ -752,15 +752,25 @@ th[data-v-10808aad] {
752
752
  }
753
753
 
754
754
  .card_label {
755
+ font-size: 1rem;
756
+ position: relative;
757
+ top: -0.5rem;
758
+ padding: 0.75rem 0;
759
+ display: block;
760
+ border-bottom: 1px solid var(--border-color);
761
+ margin-bottom: 1rem;
762
+ }
763
+ .border .card_label {
755
764
  font-size: 0.7rem;
756
765
  font-weight: 300;
757
- background: rgb(255, 255, 255);
758
- padding: 0px 12px;
759
- display: block;
766
+ background:var(--bgl-white);
767
+ padding: 0 0.75rem;
760
768
  position: absolute;
761
- border-radius: 100px;
762
- top: -8px;
763
- left: 10px;
769
+ top: -0.5rem;
770
+ inset-inline-start: 1rem;
771
+ border-left: 1px solid var(--border-color);
772
+ border-right: 1px solid var(--border-color);
773
+ border-bottom: unset;
764
774
  }
765
775
  .bgl_card {
766
776
  border-radius: var(--card-border-radius);
@@ -1726,6 +1736,63 @@ img.preview[data-v-0dbacaa0] {
1726
1736
  margin-bottom: 0.125rem;
1727
1737
  border-radius: var(--input-border-radius);
1728
1738
  }
1739
+ .tiptap {
1740
+ table {
1741
+ border-collapse: collapse;
1742
+ table-layout: fixed;
1743
+ width: 100%;
1744
+ margin: 0;
1745
+ overflow: hidden;
1746
+ td,
1747
+ th {
1748
+ min-width: 1em;
1749
+ border: 2px solid #ced4da;
1750
+ padding: 3px 5px;
1751
+ vertical-align: top;
1752
+ box-sizing: border-box;
1753
+ position: relative;
1754
+ > * {
1755
+ margin-bottom: 0;
1756
+ }
1757
+ }
1758
+ th {
1759
+ font-weight: bold;
1760
+ text-align: left;
1761
+ background-color: #f1f3f5;
1762
+ }
1763
+ .selectedCell:after {
1764
+ z-index: 2;
1765
+ position: absolute;
1766
+ content: '';
1767
+ left: 0;
1768
+ right: 0;
1769
+ top: 0;
1770
+ bottom: 0;
1771
+ background: rgba(200, 200, 255, 0.4);
1772
+ pointer-events: none;
1773
+ }
1774
+ .column-resize-handle {
1775
+ position: absolute;
1776
+ right: -2px;
1777
+ top: 0;
1778
+ bottom: -2px;
1779
+ width: 4px;
1780
+ background-color: #adf;
1781
+ pointer-events: none;
1782
+ }
1783
+ p {
1784
+ margin: 0;
1785
+ }
1786
+ }
1787
+ }
1788
+ .tableWrapper {
1789
+ padding: 1rem 0;
1790
+ overflow-x: auto;
1791
+ }
1792
+ .resize-cursor {
1793
+ cursor: ew-resize;
1794
+ cursor: col-resize;
1795
+ }
1729
1796
 
1730
1797
  .chart-line {
1731
1798
  width: 100%;
@@ -1777,72 +1844,72 @@ img.preview[data-v-0dbacaa0] {
1777
1844
  }
1778
1845
 
1779
1846
  .v-popper--theme-tooltip .v-popper__inner {
1780
- background: rgb(255, 255, 255) !important;
1781
- color: var(--bgl-primary) !important;
1782
- font-size: 15px;
1783
- padding: 0.5rem 1rem;
1784
- box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
1847
+ background: rgb(255, 255, 255) !important;
1848
+ color: var(--bgl-primary) !important;
1849
+ font-size: 15px;
1850
+ padding: 0.5rem 1rem;
1851
+ box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
1785
1852
  }
1786
1853
  .wideNav .nav-button .bgl_btn-flex {
1787
- justify-content: flex-start !important;
1854
+ justify-content: flex-start !important;
1788
1855
  }
1789
1856
  .nav-button.router-link-active {
1790
- background: var(--bgl-white) !important;
1791
- color: var(--bgl-primary);
1857
+ background: var(--bgl-white) !important;
1858
+ color: var(--bgl-primary);
1792
1859
  }
1793
1860
 
1794
- .bgl_sidebar[data-v-65bec778] {
1795
- background-color: var(--bgl-primary);
1796
- color: var(--bgl-white);
1797
- overflow: hidden;
1798
- border-radius: var(--card-border-radius);
1799
- margin: 0.5rem;
1800
- width: calc(100% - 1rem);
1801
- padding: 0.5rem;
1802
- overflow-y: auto;
1861
+ .bgl_sidebar[data-v-3c893fb1] {
1862
+ background-color: var(--bgl-primary);
1863
+ color: var(--bgl-white);
1864
+ overflow: hidden;
1865
+ border-radius: var(--card-border-radius);
1866
+ margin: 0.5rem;
1867
+ width: calc(100% - 1rem);
1868
+ padding: 0.5rem;
1869
+ overflow-y: auto;
1803
1870
  }
1804
- .toggleNav[data-v-65bec778]{
1805
- height: 22px !important;
1806
- width: 22px !important;
1807
- opacity: 0.4;
1808
- transition: var(--bgl-transition);
1871
+ .toggleNav[data-v-3c893fb1] {
1872
+ height: 22px !important;
1873
+ width: 22px !important;
1874
+ opacity: 0.4;
1875
+ transition: var(--bgl-transition);
1809
1876
  }
1810
- .toggleNav[data-v-65bec778]:hover{
1811
- opacity: 1;
1877
+ .toggleNav[data-v-3c893fb1]:hover {
1878
+ opacity: 1;
1812
1879
  }
1813
- .wideNav .toggleNav[data-v-65bec778] {
1814
- transform: rotate(180deg);
1880
+ .wideNav .toggleNav[data-v-3c893fb1] {
1881
+ transform: rotate(180deg);
1815
1882
  }
1816
- .wideNav .nav-button[data-v-65bec778] {
1817
- padding-inline-start: 1rem !important;
1818
- width: 100%;
1883
+ .wideNav .nav-button[data-v-3c893fb1] {
1884
+ padding-inline-start: 1rem !important;
1885
+ width: 100%;
1819
1886
  }
1820
- [dir="rtl"] .toggleNav[data-v-65bec778] {
1821
- transform: rotate(180deg);
1887
+ [dir='rtl'] .toggleNav[data-v-3c893fb1] {
1888
+ transform: rotate(180deg);
1822
1889
  }
1823
- [dir="rtl"] .wideNav .toggleNav[data-v-65bec778] {
1824
- transform: rotate(0deg);
1890
+ [dir='rtl'] .wideNav .toggleNav[data-v-3c893fb1] {
1891
+ transform: rotate(0deg);
1825
1892
  }
1826
- .nav-button.bgl_btn-icon[data-v-65bec778] {
1827
- border-radius: var(--btn-border-radius) !important;
1893
+ .nav-button.bgl_btn-icon[data-v-3c893fb1] {
1894
+ border-radius: var(--btn-border-radius) !important;
1828
1895
  }
1829
- .nav-button p[data-v-65bec778] {
1830
- transition: var(--nav-tran);
1831
- animation: fade-65bec778 2s;
1832
- animation-duration: 900ms;
1896
+ .nav-button p[data-v-3c893fb1] {
1897
+ transition: var(--nav-tran);
1898
+ animation: fade-3c893fb1 2s;
1899
+ animation-duration: 900ms;
1833
1900
  }
1834
- @keyframes fade-65bec778 {
1901
+ @keyframes fade-3c893fb1 {
1835
1902
  0% {
1836
- opacity: 0;
1837
- transform: translateX(-20px);
1903
+ opacity: 0;
1904
+ transform: translateX(-20px);
1838
1905
  }
1839
1906
  30% {
1840
- opacity: 0;
1841
- transform: translateX(-20px);
1907
+ opacity: 0;
1908
+ transform: translateX(-20px);
1842
1909
  }
1843
1910
  100% {
1844
- opacity: 1;
1845
- transform: translateX(0);
1911
+ opacity: 1;
1912
+ transform: translateX(0);
1846
1913
  }
1847
1914
  }
1848
1915
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/vue",
3
3
  "type": "module",
4
- "version": "0.0.394",
4
+ "version": "0.0.400",
5
5
  "description": "Bagel core sdk packages",
6
6
  "author": {
7
7
  "name": "Neveh Allon",
@@ -63,6 +63,10 @@
63
63
  "@tiptap/starter-kit": "^2.2.4",
64
64
  "@tiptap/extension-image": "^2.2.4",
65
65
  "@tiptap/extension-youtube": "^2.2.4",
66
+ "@tiptap/extension-table": "^2.2.4",
67
+ "@tiptap/extension-table-row": "^2.2.4",
68
+ "@tiptap/extension-table-header": "^2.2.4",
69
+ "@tiptap/extension-table-cell": "^2.2.4",
66
70
  "@tiptap/vue-3": "^2.2.4",
67
71
  "vue": "*",
68
72
  "vue-draggable-next": "^2.2.1",
@@ -8,8 +8,9 @@
8
8
  [bg || '']: bg,
9
9
  'overflow-x': overflowX,
10
10
  'overflow-y': overflowY,
11
- }">
12
- <span class="card_label">
11
+ }"
12
+ >
13
+ <span v-if="label" class="card_label">
13
14
  {{ label }}
14
15
  </span>
15
16
  <slot />
@@ -41,16 +42,29 @@ defineProps<{
41
42
 
42
43
  <style>
43
44
  .card_label {
45
+ font-size: 1rem;
46
+ position: relative;
47
+ top: -0.5rem;
48
+ padding: 0.75rem 0;
49
+ display: block;
50
+ border-bottom: 1px solid var(--border-color);
51
+ margin-bottom: 1rem;
52
+
53
+ }
54
+ .border .card_label {
44
55
  font-size: 0.7rem;
45
56
  font-weight: 300;
46
- background: rgb(255, 255, 255);
47
- padding: 0px 12px;
48
- display: block;
57
+ background:var(--bgl-white);
58
+ padding: 0 0.75rem;
49
59
  position: absolute;
50
- border-radius: 100px;
51
- top: -8px;
52
- left: 10px;
60
+ top: -0.5rem;
61
+ inset-inline-start: 1rem;
62
+ border-left: 1px solid var(--border-color);
63
+ border-right: 1px solid var(--border-color);
64
+ border-bottom: unset;
65
+
53
66
  }
67
+
54
68
  .bgl_card {
55
69
  border-radius: var(--card-border-radius);
56
70
  background: var(--bgl-white);
@@ -29,6 +29,10 @@ import StarterKit from '@tiptap/starter-kit';
29
29
  import { Editor, EditorContent } from '@tiptap/vue-3';
30
30
  import Image from '@tiptap/extension-image';
31
31
  import YouTube from '@tiptap/extension-youtube';
32
+ import Table from '@tiptap/extension-table';
33
+ import TableRow from '@tiptap/extension-table-row';
34
+ import TableCell from '@tiptap/extension-table-cell';
35
+ import TableHeader from '@tiptap/extension-table-header';
32
36
  import type { MaterialIcons } from '@bagelink/vue';
33
37
  // import $el from './FileUploadURL.vue';
34
38
  const { txtField } = bagelFormUtils;
@@ -199,13 +203,31 @@ const config: {
199
203
  icon: 'redo',
200
204
  disabled: () => !editor?.can().chain().focus().redo().run(),
201
205
  },
206
+ {
207
+ name: 'Table',
208
+ command: () =>
209
+ editor
210
+ .chain()
211
+ .focus()
212
+ .insertTable({ rows: 3, cols: 3, withHeaderRow: true })
213
+ .run(),
214
+ icon: 'table',
215
+ },
202
216
  ];
203
217
 
204
218
  const emit = defineEmits(['update:modelValue']);
205
219
 
206
220
  function initEditor() {
207
221
  editor = new Editor({
208
- extensions: [StarterKit, Image, YouTube],
222
+ extensions: [
223
+ StarterKit,
224
+ Image,
225
+ YouTube,
226
+ Table,
227
+ TableRow,
228
+ TableCell,
229
+ TableHeader,
230
+ ],
209
231
  content: props.modelValue,
210
232
  onUpdate: ({ editor }) => emit('update:modelValue', editor.getHTML()),
211
233
  });
@@ -309,4 +331,70 @@ onBeforeUnmount(() => editor?.destroy());
309
331
  margin-bottom: 0.125rem;
310
332
  border-radius: var(--input-border-radius);
311
333
  }
334
+
335
+ .tiptap {
336
+ table {
337
+ border-collapse: collapse;
338
+ table-layout: fixed;
339
+ width: 100%;
340
+ margin: 0;
341
+ overflow: hidden;
342
+
343
+ td,
344
+ th {
345
+ min-width: 1em;
346
+ border: 2px solid #ced4da;
347
+ padding: 3px 5px;
348
+ vertical-align: top;
349
+ box-sizing: border-box;
350
+ position: relative;
351
+
352
+ > * {
353
+ margin-bottom: 0;
354
+ }
355
+ }
356
+
357
+ th {
358
+ font-weight: bold;
359
+ text-align: left;
360
+ background-color: #f1f3f5;
361
+ }
362
+
363
+ .selectedCell:after {
364
+ z-index: 2;
365
+ position: absolute;
366
+ content: '';
367
+ left: 0;
368
+ right: 0;
369
+ top: 0;
370
+ bottom: 0;
371
+ background: rgba(200, 200, 255, 0.4);
372
+ pointer-events: none;
373
+ }
374
+
375
+ .column-resize-handle {
376
+ position: absolute;
377
+ right: -2px;
378
+ top: 0;
379
+ bottom: -2px;
380
+ width: 4px;
381
+ background-color: #adf;
382
+ pointer-events: none;
383
+ }
384
+
385
+ p {
386
+ margin: 0;
387
+ }
388
+ }
389
+ }
390
+
391
+ .tableWrapper {
392
+ padding: 1rem 0;
393
+ overflow-x: auto;
394
+ }
395
+
396
+ .resize-cursor {
397
+ cursor: ew-resize;
398
+ cursor: col-resize;
399
+ }
312
400
  </style>
@@ -1,15 +1,28 @@
1
1
  <template>
2
- <Card class="flex column gap-05 pt-1 bgl_sidebar" :class="{ 'wideNav': isOpen }">
2
+ <Card
3
+ class="flex column gap-05 pt-1 bgl_sidebar"
4
+ :class="{ wideNav: isOpen }">
3
5
  <div class="w-100 px-075">
4
- <Btn thin color="light" class="toggleNav mb-05" icon="keyboard_arrow_right" @click="toggleMenu" />
6
+ <Btn
7
+ thin
8
+ color="light"
9
+ class="toggleNav mb-05"
10
+ icon="keyboard_arrow_right"
11
+ @click="toggleMenu" />
5
12
  </div>
6
13
  <slot v-if="!isOpen || !slots['brand-open']" name="brand" />
7
14
  <slot v-if="isOpen" name="brand-open" />
8
15
  <slot v-if="!navLinks" />
9
16
  <Btn
10
- v-for="(nav, i) in navLinks" :key="i" :to="nav.to" class="nav-button px-075"
11
- v-tooltip.right="{ content: nav.label, disabled: open, class: ['nav-tooltip'] }"
12
- >
17
+ v-for="(nav, i) in navLinks"
18
+ :key="i"
19
+ :to="nav.to"
20
+ class="nav-button px-075"
21
+ v-tooltip.right="{
22
+ content: nav.label,
23
+ disabled: open,
24
+ class: ['nav-tooltip'],
25
+ }">
13
26
  <template #default>
14
27
  <Icon :icon="nav.icon" :size="1.4" />
15
28
  <p v-if="open">
@@ -17,6 +30,7 @@
17
30
  </p>
18
31
  </template>
19
32
  </Btn>
33
+ <div style="flex-grow: 1" />
20
34
  <slot name="footer" />
21
35
  </Card>
22
36
  </template>
@@ -28,7 +42,11 @@ import type { NavLink } from '@bagelink/vue';
28
42
 
29
43
  const slots = useSlots();
30
44
 
31
- const props = defineProps<{ navLinks?: NavLink[], expandable?: boolean, open: boolean }>();
45
+ const props = defineProps<{
46
+ navLinks?: NavLink[];
47
+ expandable?: boolean;
48
+ open: boolean;
49
+ }>();
32
50
 
33
51
  let isOpen = $ref(props.open);
34
52
 
@@ -41,85 +59,85 @@ function toggleMenu() {
41
59
 
42
60
  <style>
43
61
  .v-popper--theme-tooltip .v-popper__inner {
44
- background: rgb(255, 255, 255) !important;
45
- color: var(--bgl-primary) !important;
46
- font-size: 15px;
47
- padding: 0.5rem 1rem;
48
- box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
62
+ background: rgb(255, 255, 255) !important;
63
+ color: var(--bgl-primary) !important;
64
+ font-size: 15px;
65
+ padding: 0.5rem 1rem;
66
+ box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
49
67
  }
50
68
 
51
69
  .wideNav .nav-button .bgl_btn-flex {
52
- justify-content: flex-start !important;
70
+ justify-content: flex-start !important;
53
71
  }
54
72
 
55
73
  .nav-button.router-link-active {
56
- background: var(--bgl-white) !important;
57
- color: var(--bgl-primary);
74
+ background: var(--bgl-white) !important;
75
+ color: var(--bgl-primary);
58
76
  }
59
77
  </style>
60
78
 
61
79
  <style scoped>
62
80
  .bgl_sidebar {
63
- background-color: var(--bgl-primary);
64
- color: var(--bgl-white);
65
- overflow: hidden;
66
- border-radius: var(--card-border-radius);
67
- margin: 0.5rem;
68
- width: calc(100% - 1rem);
69
- padding: 0.5rem;
70
- overflow-y: auto;
81
+ background-color: var(--bgl-primary);
82
+ color: var(--bgl-white);
83
+ overflow: hidden;
84
+ border-radius: var(--card-border-radius);
85
+ margin: 0.5rem;
86
+ width: calc(100% - 1rem);
87
+ padding: 0.5rem;
88
+ overflow-y: auto;
71
89
  }
72
- .toggleNav{
73
- height: 22px !important;
74
- width: 22px !important;
75
- opacity: 0.4;
76
- transition: var(--bgl-transition);
90
+ .toggleNav {
91
+ height: 22px !important;
92
+ width: 22px !important;
93
+ opacity: 0.4;
94
+ transition: var(--bgl-transition);
77
95
  }
78
- .toggleNav:hover{
79
- opacity: 1;
96
+ .toggleNav:hover {
97
+ opacity: 1;
80
98
  }
81
99
 
82
100
  .wideNav .toggleNav {
83
- transform: rotate(180deg);
101
+ transform: rotate(180deg);
84
102
  }
85
103
 
86
104
  .wideNav .nav-button {
87
- padding-inline-start: 1rem !important;
88
- width: 100%;
105
+ padding-inline-start: 1rem !important;
106
+ width: 100%;
89
107
  }
90
108
 
91
- [dir="rtl"] .toggleNav {
92
- transform: rotate(180deg);
109
+ [dir='rtl'] .toggleNav {
110
+ transform: rotate(180deg);
93
111
  }
94
112
 
95
- [dir="rtl"] .wideNav .toggleNav {
96
- transform: rotate(0deg);
113
+ [dir='rtl'] .wideNav .toggleNav {
114
+ transform: rotate(0deg);
97
115
  }
98
116
 
99
117
  .nav-button.bgl_btn-icon {
100
- border-radius: var(--btn-border-radius) !important;
118
+ border-radius: var(--btn-border-radius) !important;
101
119
  }
102
120
 
103
121
  .nav-button p {
104
- transition: var(--nav-tran);
105
- animation: fade 2s;
106
- animation-duration: 900ms;
122
+ transition: var(--nav-tran);
123
+ animation: fade 2s;
124
+ animation-duration: 900ms;
107
125
  }
108
126
 
109
127
  @keyframes fade {
110
- 0% {
111
- opacity: 0;
112
- transform: translateX(-20px);
113
- }
114
-
115
- 30% {
116
- opacity: 0;
117
- transform: translateX(-20px);
118
- }
119
-
120
- 100% {
121
- opacity: 1;
122
- transform: translateX(0);
123
- }
128
+ 0% {
129
+ opacity: 0;
130
+ transform: translateX(-20px);
131
+ }
132
+
133
+ 30% {
134
+ opacity: 0;
135
+ transform: translateX(-20px);
136
+ }
137
+
138
+ 100% {
139
+ opacity: 1;
140
+ transform: translateX(0);
141
+ }
124
142
  }
125
143
  </style>