@bagelink/vue 0.0.398 → 0.0.402

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.
@@ -23,10 +23,20 @@ export interface ModalFormOptions {
23
23
  modelValue?: Record<string, any>;
24
24
  'onUpdate:modelValue'?: (val: any) => void;
25
25
  }
26
+ export type ModalConfirmOptions = {
27
+ title?: string;
28
+ message?: string;
29
+ resolve: (val: boolean) => void;
30
+ };
31
+ type ModalType = 'modal' | 'modalForm' | 'confirm';
32
+ type ConfirmModalUserOptions = string | {
33
+ title: string;
34
+ message: string;
35
+ };
26
36
  export interface ModalComponentProps {
27
37
  componentSlots: Record<string, any>;
28
- modalType: 'modal' | 'modalForm';
29
- modalOptions: ModalOptions | ModalFormOptions;
38
+ modalType: ModalType;
39
+ modalOptions: ModalOptions | ModalFormOptions | ModalConfirmOptions;
30
40
  }
31
41
  export interface ModalFormComponentProps {
32
42
  componentSlots: Record<string, any>;
@@ -37,8 +47,10 @@ export interface ModalApi {
37
47
  showModal: (options: ModalOptions, slots?: Record<string, any>) => void;
38
48
  showModalForm: (options: ModalFormOptions, slots?: Record<string, any>) => ModalFormComponentProps | undefined;
39
49
  hideModal: (index?: number) => void;
50
+ confirm: (options: ConfirmModalUserOptions) => Promise<boolean>;
40
51
  }
41
52
  export declare const ModalSymbol: InjectionKey<ModalApi>;
42
53
  export declare const useModal: () => ModalApi;
43
54
  export declare const ModalPlugin: Plugin;
55
+ export {};
44
56
  //# sourceMappingURL=modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/plugins/modal.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACf,MAAM,KAAK,CAAC;AACb,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhE,MAAM,WAAW,YAAY;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,cAAc,CAAC,GAAG,cAAc,CAAA;IACrE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,GAAG,CAAC;IAClC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IACnC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,SAAS,EAAE,OAAO,GAAG,WAAW,CAAC;IACjC,YAAY,EAAE,YAAY,GAAG,gBAAgB,CAAA;CAC7C;AACD,MAAM,WAAW,uBAAuB;IACvC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,SAAS,EAAE,WAAW,CAAC;IACvB,YAAY,EAAE,gBAAgB,CAAA;CAC9B;AACD,MAAM,WAAW,QAAQ;IACxB,SAAS,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACxE,aAAa,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,uBAAuB,GAAG,SAAS,CAAC;IAC/G,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,eAAO,MAAM,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAmB,CAAC;AAEnE,eAAO,MAAM,QAAQ,QAAO,QAI3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAyCzB,CAAC"}
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/plugins/modal.ts"],"names":[],"mappings":"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"}
package/dist/style.css CHANGED
@@ -525,11 +525,11 @@ a[data-v-d09a83c5] {
525
525
  gap: 0;
526
526
  }
527
527
 
528
- .modal-title[data-v-204f5236] {
528
+ .modal-title[data-v-04d84995] {
529
529
  margin-top: 0.5rem;
530
530
  }
531
531
  @media screen and (max-width: 910px) {
532
- .modal-title[data-v-204f5236] {
532
+ .modal-title[data-v-04d84995] {
533
533
  margin-top: 1rem;
534
534
  }
535
535
  }
@@ -896,15 +896,17 @@ display: block;
896
896
  color: var(--bgl-red);
897
897
  }
898
898
 
899
- .bgl_vid iframe[data-v-bbfc4353],
900
- .bgl_vid video[data-v-bbfc4353] {
899
+ .bgl_vid iframe[data-v-b1ad7c32],
900
+ .bgl_vid video[data-v-b1ad7c32] {
901
901
  width: 100%;
902
902
  height: auto;
903
903
  display: block;
904
+ border-radius: var(--input-border-radius);
904
905
  }
905
- .bgl_vid.vid_empty[data-v-bbfc4353] {
906
+ .bgl_vid.vid_empty[data-v-b1ad7c32] {
906
907
  padding-top: 56.25%;
907
- background: #f0f0f0;
908
+ background: var(--input-bg);
909
+ border-radius: var(--input-border-radius);
908
910
  }
909
911
 
910
912
  .blocker[data-v-068aa914] {
@@ -1066,10 +1068,10 @@ display: block;
1066
1068
  }
1067
1069
  .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}
1068
1070
 
1069
- .selectinput[data-v-3e27cf1d] {
1071
+ .selectinput[data-v-fdfda40b] {
1070
1072
  width: 100%;
1071
1073
  }
1072
- .selectinput-option[data-v-3e27cf1d] {
1074
+ .selectinput-option[data-v-fdfda40b] {
1073
1075
  padding: 6px 12px;
1074
1076
  cursor: pointer;
1075
1077
  border-radius: 5px;
@@ -1080,14 +1082,14 @@ display: block;
1080
1082
  width: 100%;
1081
1083
  font-size: var(--input-font-size);
1082
1084
  }
1083
- .selectinput-options[data-v-3e27cf1d] {
1085
+ .selectinput-options[data-v-fdfda40b] {
1084
1086
  max-height: 300px;
1085
1087
  overflow-y: auto;
1086
1088
  }
1087
- .selectinput-option[data-v-3e27cf1d]:hover {
1089
+ .selectinput-option[data-v-fdfda40b]:hover {
1088
1090
  background: var(--bgl-gray-20);
1089
1091
  }
1090
- .isEmpty p[data-v-3e27cf1d] {
1092
+ .isEmpty p[data-v-fdfda40b] {
1091
1093
  opacity: 0.3;
1092
1094
  }
1093
1095
 
@@ -1674,25 +1676,20 @@ img.preview[data-v-0dbacaa0] {
1674
1676
  .tiptap h1,
1675
1677
  .tiptap h2 {
1676
1678
  line-height: 1;
1677
- margin-top: 0;
1678
1679
  }
1679
1680
  .tiptap h3,
1680
1681
  .tiptap h4,
1681
1682
  .tiptap h5,
1682
1683
  .tiptap h6 {
1683
1684
  line-height: 1.1;
1684
- margin-top: 0;
1685
- }
1686
- .tiptap code {
1687
- background-color: rgba(97, 97, 97, 0.1);
1688
- color: #616161;
1689
1685
  }
1690
1686
  .tiptap pre {
1691
1687
  background: #0d0d0d;
1692
- color: #fff;
1688
+ color: var(--bgl-white);
1693
1689
  font-family: 'JetBrainsMono', monospace;
1694
1690
  padding: 0.75rem 1rem;
1695
1691
  border-radius: 0.5rem;
1692
+ margin: 0;
1696
1693
  }
1697
1694
  .tiptap pre code {
1698
1695
  color: inherit;
@@ -1705,12 +1702,13 @@ img.preview[data-v-0dbacaa0] {
1705
1702
  height: auto;
1706
1703
  }
1707
1704
  .tiptap blockquote {
1708
- padding-left: 1rem;
1709
- border-left: 2px solid rgba(13, 13, 13, 0.1);
1705
+ padding-inline-start: 0.5rem;
1706
+ border-inline-start: 2px solid var(--border-color);
1707
+ margin: 0.5rem
1710
1708
  }
1711
1709
  .tiptap hr {
1712
1710
  border: none;
1713
- border-top: 2px solid rgba(13, 13, 13, 0.1);
1711
+ border-top: 2px solid var(--border-color);
1714
1712
  margin: 1rem 0;
1715
1713
  }
1716
1714
  .tiptap {
@@ -1736,6 +1734,89 @@ img.preview[data-v-0dbacaa0] {
1736
1734
  margin-bottom: 0.125rem;
1737
1735
  border-radius: var(--input-border-radius);
1738
1736
  }
1737
+ .tiptap {
1738
+ table {
1739
+ border-collapse: collapse;
1740
+ table-layout: fixed;
1741
+ width: 100%;
1742
+ margin: 0;
1743
+ overflow: hidden;
1744
+ td,
1745
+ th {
1746
+ min-width: 1em;
1747
+ border: 2px solid var(--border-color);
1748
+ padding: 3px 5px;
1749
+ vertical-align: top;
1750
+ box-sizing: border-box;
1751
+ position: relative;
1752
+ > * {
1753
+ margin-bottom: 0;
1754
+ margin-top: 0;
1755
+ }
1756
+ }
1757
+ th {
1758
+ font-weight: bold;
1759
+ text-align: start;
1760
+ background-color: var(--bgl-gray-80);
1761
+ }
1762
+ .selectedCell:after {
1763
+ z-index: 2;
1764
+ position: absolute;
1765
+ content: '';
1766
+ left: 0;
1767
+ right: 0;
1768
+ top: 0;
1769
+ bottom: 0;
1770
+ background: var(--bgl-gray-20);
1771
+ pointer-events: none;
1772
+ }
1773
+ .selectedCell p::selection{
1774
+ color: var(--bgl-black)
1775
+ }
1776
+ .column-resize-handle {
1777
+ position: absolute;
1778
+ inset-inline-start: -2px;
1779
+ top: 0;
1780
+ bottom: -2px;
1781
+ width: 4px;
1782
+ background-color: #adf;
1783
+ pointer-events: none;
1784
+ }
1785
+ p {
1786
+ margin: 0;
1787
+ }
1788
+ }
1789
+ }
1790
+ .tableWrapper {
1791
+ padding: 1rem 0;
1792
+ overflow-x: auto;
1793
+ }
1794
+ .resize-cursor {
1795
+ cursor: ew-resize;
1796
+ cursor: col-resize;
1797
+ }
1798
+ .RichText-tools [disabled]{
1799
+ color: var(--bgl-black) !important;
1800
+ opacity: 0.3;
1801
+ }
1802
+ .RichText iframe{
1803
+ width: 100%;
1804
+ max-width: 700px;
1805
+ margin: 0 auto;
1806
+ height: auto;
1807
+ display: block;
1808
+ border-radius: var(--input-border-radius);
1809
+ border: none;
1810
+ aspect-ratio: 16/9;
1811
+ }
1812
+ .RichText img{
1813
+ width: 100%;
1814
+ max-width: 700px;
1815
+ margin: 0 auto;
1816
+ height: auto;
1817
+ display: block;
1818
+ border-radius: var(--input-border-radius);
1819
+ }
1739
1820
 
1740
1821
  .chart-line {
1741
1822
  width: 100%;
@@ -3185,6 +3266,14 @@ img.preview[data-v-0dbacaa0] {
3185
3266
  height: 1px;
3186
3267
  width: 100%;
3187
3268
  }
3269
+ .ltr,
3270
+ .direction-ltr {
3271
+ direction: ltr;
3272
+ }
3273
+ .rtl,
3274
+ .direction-rtl {
3275
+ direction: rtl;
3276
+ }
3188
3277
  @media screen and (max-width: 910px) {
3189
3278
  .grid-wrap-2 {
3190
3279
  grid-template-columns: repeat(1, 1fr);
@@ -4736,6 +4825,17 @@ img.preview[data-v-0dbacaa0] {
4736
4825
  .m_overflow-y-hidden {
4737
4826
  overflow-y: hidden;
4738
4827
  }
4828
+
4829
+ .m_ltr,
4830
+ .m_direction-ltr {
4831
+ direction: ltr;
4832
+ }
4833
+
4834
+ .m_rtl,
4835
+ .m_direction-rtl {
4836
+ direction: rtl;
4837
+ }
4838
+
4739
4839
  }
4740
4840
  input,
4741
4841
  textarea,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/vue",
3
3
  "type": "module",
4
- "version": "0.0.398",
4
+ "version": "0.0.402",
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",
@@ -6,7 +6,8 @@
6
6
  :style="{ aspectRatio }"
7
7
  frameborder="0"
8
8
  allowfullscreen
9
- title="Video" />
9
+ title="Video"
10
+ />
10
11
  <video
11
12
  v-else-if="src"
12
13
  :src="src"
@@ -15,7 +16,8 @@
15
16
  :loop="loop"
16
17
  :style="{ aspectRatio }"
17
18
  :controls="controls"
18
- playsinline />
19
+ playsinline
20
+ />
19
21
  </div>
20
22
  </template>
21
23
 
@@ -32,7 +34,7 @@ type Props = {
32
34
  const props = defineProps<Props>();
33
35
 
34
36
  const aspectRatio = $computed(
35
- () => props.aspectRatio?.replace(':', '/') || '16/9'
37
+ () => props.aspectRatio?.replace(':', '/') || '16/9',
36
38
  );
37
39
 
38
40
  const embedType = $computed<'YouTube' | 'Vimeo' | null>(() => {
@@ -68,10 +70,12 @@ console.log('Video URL:', videoUrl);
68
70
  width: 100%;
69
71
  height: auto;
70
72
  display: block;
73
+ border-radius: var(--input-border-radius);
71
74
  }
72
75
 
73
76
  .bgl_vid.vid_empty {
74
77
  padding-top: 56.25%;
75
- background: #f0f0f0;
78
+ background: var(--input-bg);
79
+ border-radius: var(--input-border-radius);
76
80
  }
77
81
  </style>
@@ -0,0 +1,26 @@
1
+ <template>
2
+ <Modal width="380px" :dismissable="false" :title="title">
3
+ {{ message }}
4
+ <template #footer>
5
+ <Btn @click="select(true)" color="primary" value="Confirm" />
6
+ <Btn @click="select(false)" color="red" value="Cancel" />
7
+ </template>
8
+ </Modal>
9
+ </template>
10
+
11
+ <script lang="ts" setup>
12
+ import { Btn, Modal } from '@bagelink/vue';
13
+
14
+ const props = defineProps<{
15
+ title: string;
16
+ message: string;
17
+ resolve: (value: boolean) => void;
18
+ }>();
19
+
20
+ const emit = defineEmits(['update:visible']);
21
+
22
+ function select(val: boolean) {
23
+ props.resolve(val);
24
+ emit('update:visible');
25
+ }
26
+ </script>
@@ -1,9 +1,10 @@
1
1
  <template>
2
2
  <Modal
3
- @onUpdate:isModalVisible="props['onUpdate:isModalVisible']"
3
+ @update:visible="($event) => emit('update:visible', $event)"
4
4
  :side
5
5
  ref="modal"
6
6
  :width
7
+ :visible="visible"
7
8
  :dismissable
8
9
  :title="title">
9
10
  <BagelForm
@@ -41,24 +42,26 @@ import {
41
42
  const bagel = useBagel();
42
43
 
43
44
  const props = defineProps<{
44
- 'side'?: boolean;
45
- 'title'?: string;
46
- 'width'?: string;
47
- 'dismissable'?: boolean;
48
- 'actions'?: BtnOptions[];
49
- 'schema': BglFormSchemaT | (() => BglFormSchemaT);
45
+ side?: boolean;
46
+ title?: string;
47
+ width?: string;
48
+ dismissable?: boolean;
49
+ actions?: BtnOptions[];
50
+ schema: BglFormSchemaT | (() => BglFormSchemaT);
50
51
  // eslint-disable-next-line no-unused-vars
51
- 'onSubmit'?: (formData: any) => Promise<void>;
52
+ onSubmit?: (formData: any) => Promise<void>;
52
53
  // eslint-disable-next-line no-unused-vars
53
- 'onDelete'?: (id: string) => void;
54
+ onDelete?: (id: string) => void;
54
55
  // eslint-disable-next-line no-unused-vars
55
- 'onUpdate:isModalVisible'?: (visible: boolean) => void;
56
+ visible?: boolean;
56
57
  // eslint-disable-next-line no-unused-vars
57
- 'onError'?: (err: any) => void;
58
+ onError?: (err: any) => void;
58
59
 
59
- 'modelValue'?: Record<string, any>;
60
+ modelValue?: Record<string, any>;
60
61
  }>();
61
62
 
63
+ const emit = defineEmits(['update:visible']);
64
+
62
65
  const modal = $ref<InstanceType<typeof Modal>>();
63
66
 
64
67
  const computedFormSchema = $computed(() => {
@@ -10,7 +10,8 @@
10
10
  v-tooltip="item.name"
11
11
  :key="item.name"
12
12
  :icon="item.icon"
13
- :disabled="item.disabled?.()" />
13
+ :disabled="item.disabled?.()"
14
+ />
14
15
  </div>
15
16
  <editor-content :editor="editor" />
16
17
  </div>
@@ -29,6 +30,10 @@ import StarterKit from '@tiptap/starter-kit';
29
30
  import { Editor, EditorContent } from '@tiptap/vue-3';
30
31
  import Image from '@tiptap/extension-image';
31
32
  import YouTube from '@tiptap/extension-youtube';
33
+ import Table from '@tiptap/extension-table';
34
+ import TableRow from '@tiptap/extension-table-row';
35
+ import TableCell from '@tiptap/extension-table-cell';
36
+ import TableHeader from '@tiptap/extension-table-header';
32
37
  import type { MaterialIcons } from '@bagelink/vue';
33
38
  // import $el from './FileUploadURL.vue';
34
39
  const { txtField } = bagelFormUtils;
@@ -70,19 +75,22 @@ const config: {
70
75
  name: 'Bold',
71
76
  command: () => focus()?.toggleBold().run(),
72
77
  icon: 'format_bold',
73
- disabled: () => !editor?.can().chain().focus().toggleBold().run(),
78
+ disabled: () => !editor?.can().chain().focus().toggleBold()
79
+ .run(),
74
80
  },
75
81
  {
76
82
  name: 'Italic',
77
83
  command: () => focus().toggleItalic().run(),
78
84
  icon: 'format_italic',
79
- disabled: () => !editor?.can().chain().focus().toggleItalic().run(),
85
+ disabled: () => !editor?.can().chain().focus().toggleItalic()
86
+ .run(),
80
87
  },
81
88
  {
82
89
  name: 'Strike',
83
90
  command: () => focus().toggleStrike().run(),
84
91
  icon: 'format_strikethrough',
85
- disabled: () => !editor?.can().chain().focus().toggleStrike().run(),
92
+ disabled: () => !editor?.can().chain().focus().toggleStrike()
93
+ .run(),
86
94
  },
87
95
  {
88
96
  name: 'Code Text',
@@ -187,17 +195,28 @@ const config: {
187
195
  command: () => focus().setHardBreak().run(),
188
196
  icon: 'keyboard_return',
189
197
  },
198
+ {
199
+ name: 'Table',
200
+ command: () => editor
201
+ .chain()
202
+ .focus()
203
+ .insertTable({ rows: 3, cols: 3, withHeaderRow: true })
204
+ .run(),
205
+ icon: 'table_chart',
206
+ },
190
207
  {
191
208
  name: 'Undo',
192
209
  command: () => focus().undo().run(),
193
210
  icon: 'undo',
194
- disabled: () => !editor?.can().chain().focus().undo().run(),
211
+ disabled: () => !editor?.can().chain().focus().undo()
212
+ .run(),
195
213
  },
196
214
  {
197
215
  name: 'Redo',
198
216
  command: () => focus().redo().run(),
199
217
  icon: 'redo',
200
- disabled: () => !editor?.can().chain().focus().redo().run(),
218
+ disabled: () => !editor?.can().chain().focus().redo()
219
+ .run(),
201
220
  },
202
221
  ];
203
222
 
@@ -205,7 +224,15 @@ const emit = defineEmits(['update:modelValue']);
205
224
 
206
225
  function initEditor() {
207
226
  editor = new Editor({
208
- extensions: [StarterKit, Image, YouTube],
227
+ extensions: [
228
+ StarterKit,
229
+ Image,
230
+ YouTube,
231
+ Table,
232
+ TableRow,
233
+ TableCell,
234
+ TableHeader,
235
+ ],
209
236
  content: props.modelValue,
210
237
  onUpdate: ({ editor }) => emit('update:modelValue', editor.getHTML()),
211
238
  });
@@ -217,7 +244,7 @@ watch(
217
244
  if (editor?.getHTML() === value) return;
218
245
  editor?.commands.setContent(value, false);
219
246
  },
220
- { immediate: true }
247
+ { immediate: true },
221
248
  );
222
249
 
223
250
  onMounted(initEditor);
@@ -239,7 +266,6 @@ onBeforeUnmount(() => editor?.destroy());
239
266
  .tiptap h1,
240
267
  .tiptap h2 {
241
268
  line-height: 1;
242
- margin-top: 0;
243
269
  }
244
270
 
245
271
  .tiptap h3,
@@ -247,20 +273,15 @@ onBeforeUnmount(() => editor?.destroy());
247
273
  .tiptap h5,
248
274
  .tiptap h6 {
249
275
  line-height: 1.1;
250
- margin-top: 0;
251
- }
252
-
253
- .tiptap code {
254
- background-color: rgba(97, 97, 97, 0.1);
255
- color: #616161;
256
276
  }
257
277
 
258
278
  .tiptap pre {
259
279
  background: #0d0d0d;
260
- color: #fff;
280
+ color: var(--bgl-white);
261
281
  font-family: 'JetBrainsMono', monospace;
262
282
  padding: 0.75rem 1rem;
263
283
  border-radius: 0.5rem;
284
+ margin: 0;
264
285
  }
265
286
 
266
287
  .tiptap pre code {
@@ -276,13 +297,14 @@ onBeforeUnmount(() => editor?.destroy());
276
297
  }
277
298
 
278
299
  .tiptap blockquote {
279
- padding-left: 1rem;
280
- border-left: 2px solid rgba(13, 13, 13, 0.1);
300
+ padding-inline-start: 0.5rem;
301
+ border-inline-start: 2px solid var(--border-color);
302
+ margin: 0.5rem
281
303
  }
282
304
 
283
305
  .tiptap hr {
284
306
  border: none;
285
- border-top: 2px solid rgba(13, 13, 13, 0.1);
307
+ border-top: 2px solid var(--border-color);
286
308
  margin: 1rem 0;
287
309
  }
288
310
 
@@ -309,4 +331,96 @@ 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 var(--border-color);
347
+ padding: 3px 5px;
348
+ vertical-align: top;
349
+ box-sizing: border-box;
350
+ position: relative;
351
+
352
+ > * {
353
+ margin-bottom: 0;
354
+ margin-top: 0;
355
+ }
356
+ }
357
+
358
+ th {
359
+ font-weight: bold;
360
+ text-align: start;
361
+ background-color: var(--bgl-gray-80);
362
+ }
363
+
364
+ .selectedCell:after {
365
+ z-index: 2;
366
+ position: absolute;
367
+ content: '';
368
+ left: 0;
369
+ right: 0;
370
+ top: 0;
371
+ bottom: 0;
372
+ background: var(--bgl-gray-20);
373
+ pointer-events: none;
374
+ }
375
+ .selectedCell p::selection{
376
+ color: var(--bgl-black)
377
+ }
378
+
379
+ .column-resize-handle {
380
+ position: absolute;
381
+ inset-inline-start: -2px;
382
+ top: 0;
383
+ bottom: -2px;
384
+ width: 4px;
385
+ background-color: #adf;
386
+ pointer-events: none;
387
+ }
388
+
389
+ p {
390
+ margin: 0;
391
+ }
392
+ }
393
+ }
394
+
395
+ .tableWrapper {
396
+ padding: 1rem 0;
397
+ overflow-x: auto;
398
+ }
399
+
400
+ .resize-cursor {
401
+ cursor: ew-resize;
402
+ cursor: col-resize;
403
+ }
404
+ .RichText-tools [disabled]{
405
+ color: var(--bgl-black) !important;
406
+ opacity: 0.3;
407
+ }
408
+ .RichText iframe{
409
+ width: 100%;
410
+ max-width: 700px;
411
+ margin: 0 auto;
412
+ height: auto;
413
+ display: block;
414
+ border-radius: var(--input-border-radius);
415
+ border: none;
416
+ aspect-ratio: 16/9;
417
+ }
418
+ .RichText img{
419
+ width: 100%;
420
+ max-width: 700px;
421
+ margin: 0 auto;
422
+ height: auto;
423
+ display: block;
424
+ border-radius: var(--input-border-radius);
425
+ }
312
426
  </style>