@bagelink/vue 0.0.1014 → 0.0.1020

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
@@ -605,8 +605,16 @@ data[data-v-6c27f163] {
605
605
  transform: translateY(-2.6rem);
606
606
  }
607
607
 
608
- .itemBox[data-v-e8cf25b3]:hover {
609
- outline: 1px solid var(--bgl-primary);
608
+ .itemBox{
609
+ /* border-top: 2px solid var(--bgl-gray); */
610
+ /* border-bottom: 2px solid var(--bgl-gray); */
611
+ background: var(--input-bg);
612
+ }
613
+ .itemBox .bagel-input input,
614
+ .itemBox .bagel-input textarea,
615
+ .itemBox .bagel-input select,
616
+ .itemBox .custom-select .input {
617
+ background: var(--bgl-white) !important;
610
618
  }
611
619
 
612
620
  .primary-checkbox input[data-v-73f1d9ad] {
@@ -1194,26 +1202,26 @@ pre code.hljs{
1194
1202
  line-height: 1.65;
1195
1203
  }
1196
1204
 
1197
- .rich-text-editor[data-v-7a98aefd] {
1205
+ .rich-text-editor[data-v-8d91c8f8] {
1198
1206
  background: var(--input-bg);
1199
1207
  border: 1px solid var(--border-color);
1200
1208
  transition: all 0.3s ease;
1201
1209
  }
1202
- .editor-container[data-v-7a98aefd] {
1210
+ .editor-container[data-v-8d91c8f8] {
1203
1211
  display: flex;
1204
1212
  gap: 1rem;
1205
1213
  }
1206
- .content-area[data-v-7a98aefd],
1207
- .preview-area[data-v-7a98aefd] {
1214
+ .content-area[data-v-8d91c8f8],
1215
+ .preview-area[data-v-8d91c8f8] {
1208
1216
  flex: 1;
1209
1217
  min-height: 200px;
1210
1218
  background: var(--bgl-richtext-color);
1211
1219
  }
1212
- .split-view[data-v-7a98aefd] {
1220
+ .split-view[data-v-8d91c8f8] {
1213
1221
  display: grid;
1214
1222
  grid-template-columns: 1fr 1fr;
1215
1223
  }
1216
- .editableContent[data-v-7a98aefd] {
1224
+ .editableContent[data-v-8d91c8f8] {
1217
1225
  width: 100%;
1218
1226
  min-height: 240px;
1219
1227
  height: 100%;
@@ -1221,7 +1229,7 @@ line-height: 1.65;
1221
1229
  outline: none;
1222
1230
  background: transparent;
1223
1231
  }
1224
- .html-editor[data-v-7a98aefd] {
1232
+ .html-editor[data-v-8d91c8f8] {
1225
1233
  width: 100%;
1226
1234
  height: 100%;
1227
1235
  min-height: 200px;
@@ -1232,12 +1240,12 @@ line-height: 1.65;
1232
1240
  color: white;
1233
1241
  background-color: var(--bgl-black);
1234
1242
  }
1235
- .preview-area[data-v-7a98aefd] {
1243
+ .preview-area[data-v-8d91c8f8] {
1236
1244
  font-family: monospace;
1237
1245
  white-space: pre-wrap;
1238
1246
  overflow-x: auto;
1239
1247
  }
1240
- .fullscreen-mode[data-v-7a98aefd] {
1248
+ .fullscreen-mode[data-v-8d91c8f8] {
1241
1249
  position: fixed;
1242
1250
  top: 0;
1243
1251
  left: 0;
@@ -1246,15 +1254,15 @@ line-height: 1.65;
1246
1254
  z-index: 9999;
1247
1255
  padding: 2rem;
1248
1256
  }
1249
- .fullscreen-mode .editor-container[data-v-7a98aefd] {
1257
+ .fullscreen-mode .editor-container[data-v-8d91c8f8] {
1250
1258
  height: calc(100vh - 4rem);
1251
1259
  }
1252
- .fullscreen-mode .content-area[data-v-7a98aefd],
1253
- .fullscreen-mode .preview-area[data-v-7a98aefd] {
1260
+ .fullscreen-mode .content-area[data-v-8d91c8f8],
1261
+ .fullscreen-mode .preview-area[data-v-8d91c8f8] {
1254
1262
  height: 100%;
1255
1263
  overflow-y: auto;
1256
1264
  }
1257
- .fullscreen-mode .code-editor[data-v-7a98aefd]{
1265
+ .fullscreen-mode .code-editor[data-v-8d91c8f8]{
1258
1266
  height: 100% !important;
1259
1267
  }
1260
1268
  .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}
@@ -1670,7 +1678,7 @@ line-height: 1.65;
1670
1678
  gap: 0;
1671
1679
  }
1672
1680
 
1673
- .bgl_bottombar[data-v-ee7b8f1a] {
1681
+ .bgl_bottombar[data-v-4faeb847] {
1674
1682
  background-color: var(--bgl-primary);
1675
1683
  color: var(--bgl-light-text);
1676
1684
  grid-template-columns: repeat(auto-fill, var(--bgl_bottombar-btn-width));
@@ -1679,16 +1687,16 @@ line-height: 1.65;
1679
1687
  padding: 0;
1680
1688
  --bgl_bottombar-btn-width: 62px;
1681
1689
  }
1682
- .bgl_bottombar[data-v-ee7b8f1a]>* {
1690
+ .bgl_bottombar[data-v-4faeb847]>* {
1683
1691
  width: var(--bgl_bottombar-btn-width);
1684
1692
  }
1685
- .bgl_bottombar[data-v-ee7b8f1a]::-webkit-scrollbar {
1693
+ .bgl_bottombar[data-v-4faeb847]::-webkit-scrollbar {
1686
1694
  display: none;
1687
1695
  }
1688
- .bgl_bottombar .nav-button[data-v-ee7b8f1a] {
1696
+ .bgl_bottombar .nav-button[data-v-4faeb847] {
1689
1697
  border-radius: var(--card-border-radius);
1690
1698
  }
1691
- .bgl_bottombar .router-link-active[data-v-ee7b8f1a] {
1699
+ .bgl_bottombar .router-link-active[data-v-4faeb847] {
1692
1700
  background: var(--bgl-popup-bg);
1693
1701
  color: var(--bgl-primary) !important;
1694
1702
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/vue",
3
3
  "type": "module",
4
- "version": "0.0.1014",
4
+ "version": "0.0.1020",
5
5
  "description": "Bagel core sdk packages",
6
6
  "author": {
7
7
  "name": "Neveh Allon",
@@ -11,6 +11,7 @@ import {
11
11
  ToggleInput,
12
12
  bindAttrs,
13
13
  classify,
14
+ BagelForm
14
15
  } from '@bagelink/vue'
15
16
  import TabsNav from '../layout/TabsNav.vue'
16
17
 
@@ -42,6 +43,7 @@ const is = $computed(() => {
42
43
  if (props.field.$el === 'file') return FileUpload
43
44
  if (props.field.$el === 'date') return DateInput
44
45
  if (props.field.$el === 'tabs') return TabsNav
46
+ if (props.field.$el === 'form') return BagelForm
45
47
  return props.field.$el ?? 'div'
46
48
  })
47
49
 
@@ -68,6 +70,8 @@ function setFieldData(key: string, val: any) {
68
70
  return data
69
71
  }
70
72
 
73
+ const isForm = $computed(() => props.field.$el === 'form' || props.field.$el === BagelForm)
74
+
71
75
  function getFieldData(obj: any, key: string) {
72
76
  if (typeof obj !== 'object' || obj === null) return obj
73
77
  const keys = key.split(objPathRegex)
@@ -84,12 +88,17 @@ function getFieldData(obj: any, key: string) {
84
88
 
85
89
  const fieldData = $computed({
86
90
  set: (val: any) => {
91
+ if (isForm) {
92
+ emit('update:modelValue', val)
93
+ return
94
+ }
87
95
  if (!props.field.id) return
88
96
  const data = setFieldData(props.field.id, val)
89
97
  emit('update:modelValue', data)
90
98
  },
91
99
  get: () => {
92
100
  if (props.field.id) return getFieldData(props.modelValue, props.field.id)
101
+ if (isForm) return props.modelValue
93
102
  return props.field.defaultValue ?? ''
94
103
  },
95
104
  })
@@ -54,21 +54,21 @@ function addItem() {
54
54
  emitValue()
55
55
  }
56
56
 
57
- const computedField = $computed(
58
- () => ({
59
- label: props.label,
60
- placeholder: props.placeholder,
61
- children: props.children,
62
- class: props.class,
63
- attrs: props.attrs,
64
- required: props.required,
65
- disabled: props.disabled,
66
- helptext: props.helptext,
67
- options: props.options,
68
- defaultValue: props.defaultValue,
69
- $el: props.el,
70
- }) as Field<T>
71
- ) as Field<Record<string, any>>
57
+ // const computedField = $computed(
58
+ // () => ({
59
+ // label: props.label,
60
+ // placeholder: props.placeholder,
61
+ // children: props.children,
62
+ // class: props.class,
63
+ // attrs: props.attrs,
64
+ // required: props.required,
65
+ // disabled: props.disabled,
66
+ // helptext: props.helptext,
67
+ // options: props.options,
68
+ // defaultValue: props.defaultValue,
69
+ // $el: props.el,
70
+ // }) as Field<T>
71
+ // ) as Field<Record<string, any>>
72
72
  </script>
73
73
 
74
74
  <template>
@@ -76,8 +76,8 @@ const computedField = $computed(
76
76
  <p class="label mb-05">
77
77
  {{ label }}
78
78
  </p>
79
- <div>
80
- <Card v-for="(_, i) in data" :key="i" outline thin class="mb-05 itemBox bg-white transition">
79
+ <div class="ps-05 border-start">
80
+ <div v-for="(_, i) in data" :key="i" outline thin class="mb-05 itemBox transition p-05">
81
81
  <BglForm v-if="schema" v-model="data[i]" :schema="schema" @update:model-value="emitValue" />
82
82
  <Btn
83
83
  v-if="props.delete"
@@ -88,16 +88,25 @@ const computedField = $computed(
88
88
  flat
89
89
  @click="deleteItem(i)"
90
90
  />
91
- </Card>
92
- <Btn v-if="add" icon="add" color="gray" class="w-100" @click="addItem">
91
+ </div>
92
+ <Btn v-if="add" thin icon="add" color="gray" class="txt12" @click="addItem">
93
93
  <p>Add {{ label }}</p>
94
94
  </Btn>
95
95
  </div>
96
96
  </div>
97
97
  </template>
98
98
 
99
- <style scoped>
100
- .itemBox:hover {
101
- outline: 1px solid var(--bgl-primary);
99
+ <style>
100
+ .itemBox{
101
+ /* border-top: 2px solid var(--bgl-gray); */
102
+ /* border-bottom: 2px solid var(--bgl-gray); */
103
+ background: var(--input-bg);
104
+ }
105
+
106
+ .itemBox .bagel-input input,
107
+ .itemBox .bagel-input textarea,
108
+ .itemBox .bagel-input select,
109
+ .itemBox .custom-select .input {
110
+ background: var(--bgl-white) !important;
102
111
  }
103
112
  </style>
@@ -1,25 +1,26 @@
1
1
  body {
2
- margin: 0;
3
- padding: 8px;
4
- min-height: 200px;
5
- font-family: sans-serif;
6
- color: inherit;
7
- background: transparent;
2
+ margin: 0;
3
+ padding: 8px;
4
+ min-height: 200px;
5
+ font-family: sans-serif;
6
+ line-height: 1.5;
7
+ color: inherit;
8
+ background: transparent;
8
9
  }
9
10
 
10
11
  table {
11
- border-collapse: collapse;
12
- margin-bottom: 1rem;
12
+ border-collapse: collapse;
13
+ margin-bottom: 1rem;
13
14
  }
14
15
 
15
16
  th,
16
17
  td {
17
- padding: 1rem;
18
- text-align: left;
19
- border: 1px solid #2a2a2a;
20
- line-height: 1.5;
18
+ padding: 1rem;
19
+ text-align: left;
20
+ border: 1px solid #2a2a2a;
21
+ line-height: 1.5;
21
22
  }
22
23
 
23
24
  th {
24
- background-color: #f4f4f4;
25
- }
25
+ background-color: #f4f4f4;
26
+ }
@@ -50,7 +50,7 @@ watch(() => editor.state.content, (newValue) => {
50
50
  </script>
51
51
 
52
52
  <template>
53
- <div class="rich-text-editor rounded pt-05 px-05 pb-075" :class="{ 'fullscreen-mode': editor.state.isFullscreen }">
53
+ <div class="rich-text-editor rounded pt-05 px-05 pb-075 mb-05" :class="{ 'fullscreen-mode': editor.state.isFullscreen }">
54
54
  <Toolbar
55
55
  v-if="editor.state.hasInit" :config="toolbarConfig" :selectedStyles="editor.state.selectedStyles"
56
56
  @action="editor.handleToolbarAction"
@@ -148,4 +148,4 @@ line-height: 1.65;
148
148
  .fullscreen-mode .code-editor{
149
149
  height: 100% !important;
150
150
  }
151
- </style
151
+ </style>
@@ -22,7 +22,7 @@ defineProps<{
22
22
  @click="nav.onClick"
23
23
  >
24
24
  <Icon :icon="nav.icon" :size="1.4" class="m-0 line-height-14" />
25
- <p class="m-0 pb-025 txt14 line-height-1">
25
+ <p class="m-0 pb-025 txt14 line-height-1 w60 menu-text">
26
26
  {{ nav.label }}
27
27
  </p>
28
28
  </Btn>
@@ -9,7 +9,7 @@ const { currentTab } = useTabs(props.group)
9
9
  </script>
10
10
 
11
11
  <template>
12
- <div v-if="currentTab">
12
+ <template v-if="currentTab">
13
13
  <slot :name="currentTab" />
14
- </div>
14
+ </template>
15
15
  </template>
@@ -11,7 +11,6 @@ let clickHandler: ((e: MouseEvent) => any) = (_e: MouseEvent) => void 0
11
11
 
12
12
  const lightboxDirective: Directive = {
13
13
  mounted(el: HTMLElement, binding) {
14
- el.classList.add('hover')
15
14
  const item = bindingToItem(binding, el)
16
15
  groupHandler(item)
17
16
  clickHandler = (e: MouseEvent) => { openClickHandler(e, el, binding) }
@@ -26,7 +26,7 @@ export function useBglSchema<T = { [key: string]: unknown }>(
26
26
  return getFallbackSchema(data, showFields)
27
27
  }
28
28
 
29
- export function useLocalStorage<T>(
29
+ export function localRef<T>(
30
30
  key: string,
31
31
  initialValue: T
32
32
  ): [T] extends [Ref<any, any>] ?
@@ -42,3 +42,5 @@ export function useLocalStorage<T>(
42
42
 
43
43
  return value
44
44
  }
45
+
46
+ export const useLocalStorage = localRef