@bagelink/vue 1.2.63 → 1.2.69

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.
Files changed (49) hide show
  1. package/bin/experimentalGenTypedRoutes.ts +309 -0
  2. package/dist/components/Alert.vue.d.ts +2 -0
  3. package/dist/components/Alert.vue.d.ts.map +1 -1
  4. package/dist/components/Carousel.vue.d.ts +12 -3
  5. package/dist/components/Carousel.vue.d.ts.map +1 -1
  6. package/dist/components/Carousel2.vue.d.ts +89 -0
  7. package/dist/components/Carousel2.vue.d.ts.map +1 -0
  8. package/dist/components/form/inputs/EmailInput.vue.d.ts +48 -0
  9. package/dist/components/form/inputs/EmailInput.vue.d.ts.map +1 -0
  10. package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
  11. package/dist/components/form/inputs/TelInput.vue.d.ts +60 -0
  12. package/dist/components/form/inputs/TelInput.vue.d.ts.map +1 -0
  13. package/dist/components/form/inputs/TextInput.vue.d.ts.map +1 -1
  14. package/dist/components/form/inputs/index.d.ts +2 -1
  15. package/dist/components/form/inputs/index.d.ts.map +1 -1
  16. package/dist/components/index.d.ts +1 -0
  17. package/dist/components/index.d.ts.map +1 -1
  18. package/dist/composables/useDevice.d.ts.map +1 -1
  19. package/dist/composables/useSchemaField.d.ts.map +1 -1
  20. package/dist/directives/pattern.d.ts.map +1 -1
  21. package/dist/index.cjs +11370 -10336
  22. package/dist/index.mjs +11371 -10337
  23. package/dist/style.css +1839 -1701
  24. package/dist/utils/BagelFormUtils.d.ts +7 -0
  25. package/dist/utils/BagelFormUtils.d.ts.map +1 -1
  26. package/dist/utils/constants.d.ts +1 -0
  27. package/dist/utils/constants.d.ts.map +1 -1
  28. package/dist/utils/search.d.ts +2 -2
  29. package/dist/utils/search.d.ts.map +1 -1
  30. package/package.json +7 -3
  31. package/src/components/Alert.vue +29 -7
  32. package/src/components/Carousel.vue +8 -0
  33. package/src/components/Carousel2.vue +1012 -0
  34. package/src/components/form/inputs/EmailInput.vue +476 -0
  35. package/src/components/form/inputs/SelectInput.vue +2 -2
  36. package/src/components/form/inputs/TelInput.vue +210 -350
  37. package/src/components/form/inputs/TextInput.vue +1 -1
  38. package/src/components/form/inputs/index.ts +2 -1
  39. package/src/components/index.ts +1 -0
  40. package/src/composables/useDevice.ts +1 -0
  41. package/src/composables/useSchemaField.ts +3 -1
  42. package/src/directives/pattern.ts +3 -2
  43. package/src/styles/inputs.css +137 -138
  44. package/src/styles/layout.css +1466 -1459
  45. package/src/styles/mobilLayout.css +11 -0
  46. package/src/utils/BagelFormUtils.ts +24 -0
  47. package/src/utils/constants.ts +1 -0
  48. package/src/utils/search.ts +3 -3
  49. package/src/components/form/inputs/PhoneInput.vue +0 -352
@@ -4,12 +4,12 @@ export { default as CodeEditor } from './CodeEditor/Index.vue'
4
4
  export { default as ColorInput } from './ColorInput.vue'
5
5
  export { default as DateInput } from './DateInput.vue'
6
6
  export { default as DatePicker } from './DatePicker.vue'
7
+ export { default as EmailInput } from './EmailInput.vue'
7
8
  export { default as FileUpload } from './FileUpload.vue'
8
9
  export { default as JSONInput } from './JSONInput.vue'
9
10
  export { default as NumberInput } from './NumberInput.vue'
10
11
  export { default as OTP } from './OTP.vue'
11
12
  export { default as PasswordInput } from './PasswordInput.vue'
12
- export { default as TelInput } from './PhoneInput.vue'
13
13
  export { default as RadioGroup } from './RadioGroup.vue'
14
14
  export { default as RadioPillsInput } from './RadioPillsInput.vue'
15
15
  export { default as RangeInput } from './RangeInput.vue'
@@ -17,6 +17,7 @@ export { default as RichText } from './RichText/index.vue'
17
17
  export { default as SelectInput } from './SelectInput.vue'
18
18
  export { default as SignaturePad } from './SignaturePad.vue'
19
19
  export { default as TableField } from './TableField.vue'
20
+ export { default as TelInput } from './TelInput.vue'
20
21
  export { default as TextInput } from './TextInput.vue'
21
22
  export { default as ToggleInput } from './ToggleInput.vue'
22
23
  export { default as UploadInput } from './Upload/UploadInput.vue'
@@ -8,6 +8,7 @@ export { default as BglVideo } from './BglVideo.vue'
8
8
  export { default as Btn } from './Btn.vue'
9
9
  export { default as Calendar } from './calendar/Index.vue'
10
10
  export { default as Card } from './Card.vue'
11
+ export { default as Carousel2 } from './Carousel2.vue'
11
12
  export { default as Carousel } from './Carousel.vue'
12
13
  export * from './dashboard'
13
14
  export { default as DataPreview } from './DataPreview.vue'
@@ -18,6 +18,7 @@ export function useDevice() {
18
18
  onMounted(() => {
19
19
  window.addEventListener('resize', updateDeviceInfo)
20
20
  window.addEventListener('scroll', updateDeviceInfo)
21
+ updateDeviceInfo()
21
22
  })
22
23
 
23
24
  onUnmounted(() => {
@@ -18,6 +18,7 @@ import {
18
18
  TelInput,
19
19
  ColorInput,
20
20
  RangeInput,
21
+ EmailInput
21
22
  } from '@bagelink/vue'
22
23
 
23
24
  import { h, isVNode } from 'vue'
@@ -89,7 +90,8 @@ export function useSchemaField<T extends { [key: string]: any }, _P>(optns: UseS
89
90
  date: DateInput,
90
91
  tabs: TabsNav,
91
92
  form: BglForm,
92
- range: RangeInput
93
+ range: RangeInput,
94
+ email: EmailInput
93
95
  }
94
96
 
95
97
  if (field.$el === 'textarea' && !field.attrs?.multiline) {
@@ -17,8 +17,8 @@ const DEFAULT_PATTERNS: Record<string, PatternValue> = {
17
17
  email: { pattern: /[\w.\-@]/ },
18
18
  alpha: { pattern: /[a-z_]/i },
19
19
  alphanum: { pattern: /\w/ },
20
- lower: { pattern: /[a-z]/, transform: (v: string) => v.toLowerCase() },
21
- upper: { pattern: /[A-Z]/, transform: (v: string) => v.toUpperCase() },
20
+ lower: { pattern: /[a-z]/i, transform: (v: string) => v.toLowerCase() },
21
+ upper: { pattern: /[A-Z]/i, transform: (v: string) => v.toUpperCase() },
22
22
  slug: { pattern: /[a-z0-9-]/i, transform: (v: string) => v.toLowerCase().replace(/\s/g, '-') },
23
23
  }
24
24
 
@@ -78,6 +78,7 @@ function onKeydown(event: KeyboardEvent, target: HTMLInputElement | HTMLTextArea
78
78
  } else if (state.modifier) {
79
79
  const { transform } = DEFAULT_PATTERNS[state.modifier]
80
80
  if (transform) {
81
+ console.log('transform', transform)
81
82
  event.preventDefault()
82
83
  const transformedValue = transform(testKey)
83
84
  const cursorPos = target.selectionStart ?? 0
@@ -1,228 +1,228 @@
1
1
  input,
2
2
  textarea,
3
3
  select {
4
- font-family: inherit;
5
- width: 100%;
4
+ font-family: inherit;
5
+ width: 100%;
6
6
  }
7
7
 
8
8
  .bagel-input-error input,
9
9
  .bagel-input-error button,
10
10
  .bagel-input-error textarea {
11
- outline: 1px solid var(--bgl-red);
11
+ outline: 1px solid var(--bgl-red);
12
12
  }
13
13
 
14
14
  .bagel-input {
15
- position: relative;
16
- display: flex;
17
- flex-direction: column;
18
- text-align: start;
19
- margin-bottom: 0.5rem;
20
- width: 100%;
21
- color: var(--bgl-text-color);
15
+ position: relative;
16
+ display: flex;
17
+ flex-direction: column;
18
+ text-align: start;
19
+ margin-bottom: 0.5rem;
20
+ width: 100%;
21
+ color: var(--bgl-text-color);
22
22
  }
23
23
 
24
24
  .bagel-input::-webkit-input-placeholder .bagel-input label {
25
- display: block;
26
- font-size: var(--label-font-size);
27
- margin-bottom: 2px;
28
- line-height: 1.3;
25
+ display: block;
26
+ font-size: var(--label-font-size);
27
+ margin-bottom: 2px;
28
+ line-height: 1.3;
29
29
  }
30
30
 
31
31
  .bagel-input::-moz-placeholder .bagel-input label {
32
- display: block;
33
- font-size: var(--label-font-size);
34
- margin-bottom: 2px;
35
- line-height: 1.3;
32
+ display: block;
33
+ font-size: var(--label-font-size);
34
+ margin-bottom: 2px;
35
+ line-height: 1.3;
36
36
  }
37
37
 
38
38
  .bagel-input:-ms-input-placeholder .bagel-input label {
39
- display: block;
40
- font-size: var(--label-font-size);
41
- margin-bottom: 2px;
42
- line-height: 1.3;
39
+ display: block;
40
+ font-size: var(--label-font-size);
41
+ margin-bottom: 2px;
42
+ line-height: 1.3;
43
43
  }
44
44
 
45
45
  .bagel-input::-ms-input-placeholder .bagel-input label {
46
- display: block;
47
- font-size: var(--label-font-size);
48
- margin-bottom: 2px;
49
- line-height: 1.3;
46
+ display: block;
47
+ font-size: var(--label-font-size);
48
+ margin-bottom: 2px;
49
+ line-height: 1.3;
50
50
  }
51
51
 
52
52
  .bagel-input::placeholder .bagel-input label {
53
- display: block;
54
- font-size: var(--label-font-size);
55
- margin-bottom: 2px;
56
- line-height: 1.3;
53
+ display: block;
54
+ font-size: var(--label-font-size);
55
+ margin-bottom: 2px;
56
+ line-height: 1.3;
57
57
  }
58
58
 
59
59
  .bagel-input::-webkit-input-placeholder {
60
- color: var(--placeholder-color);
60
+ color: var(--placeholder-color);
61
61
  }
62
62
 
63
63
  .bagel-input::-moz-placeholder {
64
- color: var(--placeholder-color);
64
+ color: var(--placeholder-color);
65
65
  }
66
66
 
67
67
  .bagel-input:-ms-input-placeholder {
68
- color: var(--placeholder-color);
68
+ color: var(--placeholder-color);
69
69
  }
70
70
 
71
71
  .bagel-input::-ms-input-placeholder {
72
- color: var(--placeholder-color);
72
+ color: var(--placeholder-color);
73
73
  }
74
74
 
75
75
  .bagel-input::placeholder {
76
- color: var(--placeholder-color);
76
+ color: var(--placeholder-color);
77
77
  }
78
78
 
79
79
  .bagel-input label {
80
- color: var(--label-color);
80
+ color: var(--label-color);
81
81
  }
82
82
 
83
83
  .bagel-input input,
84
84
  .bagel-input select,
85
85
  .custom-select .input {
86
- height: var(--input-height);
87
- font-size: var(--input-font-size);
86
+ height: var(--input-height);
87
+ font-size: var(--input-font-size);
88
88
  }
89
89
 
90
90
  .bagel-input input,
91
91
  .bagel-input textarea,
92
92
  .bagel-input select,
93
93
  .custom-select .input {
94
- background: var(--input-bg);
95
- border: none;
96
- padding: 0.7rem;
97
- border-radius: var(--input-border-radius);
98
- color: var(--input-color);
99
- min-width: calc(var(--input-height) * 3);
100
- width: 100%;
94
+ background: var(--input-bg);
95
+ border: none;
96
+ padding: 0.7rem;
97
+ border-radius: var(--input-border-radius);
98
+ color: var(--input-color);
99
+ min-width: calc(var(--input-height) * 3);
100
+ width: 100%;
101
101
  }
102
102
 
103
103
  .bagel-input input::-webkit-input-placeholder,
104
104
  .bagel-input textarea::-webkit-input-placeholder,
105
105
  .bagel-input select::-webkit-input-placeholder,
106
106
  .custom-select .input::-webkit-input-placeholder {
107
- color: var(--placeholder-color);
107
+ color: var(--placeholder-color);
108
108
  }
109
109
 
110
110
  .bagel-input input::-moz-placeholder,
111
111
  .bagel-input textarea::-moz-placeholder,
112
112
  .bagel-input select::-moz-placeholder,
113
113
  .custom-select .input::-moz-placeholder {
114
- color: var(--placeholder-color);
114
+ color: var(--placeholder-color);
115
115
  }
116
116
 
117
117
  .bagel-input input:-ms-input-placeholder,
118
118
  .bagel-input textarea:-ms-input-placeholder,
119
119
  .bagel-input select:-ms-input-placeholder,
120
120
  .custom-select .input:-ms-input-placeholder {
121
- color: var(--placeholder-color);
121
+ color: var(--placeholder-color);
122
122
  }
123
123
 
124
124
  .bagel-input input::-ms-input-placeholder,
125
125
  .bagel-input textarea::-ms-input-placeholder,
126
126
  .bagel-input select::-ms-input-placeholder,
127
127
  .custom-select .input::-ms-input-placeholder {
128
- color: var(--placeholder-color);
128
+ color: var(--placeholder-color);
129
129
  }
130
130
 
131
131
  .bagel-input input::placeholder,
132
132
  .bagel-input textarea::placeholder,
133
133
  .bagel-input select::placeholder,
134
134
  .custom-select .input::placeholder {
135
- color: var(--placeholder-color);
135
+ color: var(--placeholder-color);
136
136
  }
137
137
 
138
138
  .bagel-input.search-wrap {
139
- display: flex;
140
- flex-direction: row;
141
- align-items: center;
139
+ display: flex;
140
+ flex-direction: row;
141
+ align-items: center;
142
142
  }
143
143
 
144
144
  .bagel-input.search-wrap input {
145
- -webkit-padding-end: 2rem;
146
- padding-inline-end: 2rem;
145
+ -webkit-padding-end: 2rem;
146
+ padding-inline-end: 2rem;
147
147
  }
148
148
 
149
149
  .bagel-input.search-wrap .bgl_icon-font {
150
- -webkit-margin-start: -1.75rem;
151
- margin-inline-start: -1.75rem;
150
+ -webkit-margin-start: -1.75rem;
151
+ margin-inline-start: -1.75rem;
152
152
  }
153
153
 
154
154
  .bagel-input select {
155
- height: var(--input-height);
155
+ height: var(--input-height);
156
156
  }
157
157
 
158
158
  .bagel-input textarea {
159
- resize: vertical;
160
- min-height: calc(var(--input-height) * 3);
161
- line-height: 1.5;
159
+ resize: vertical;
160
+ min-height: calc(var(--input-height) * 3);
161
+ line-height: 1.5;
162
162
  }
163
163
 
164
164
  .bagel-input.wider input {
165
- min-width: 320px;
165
+ min-width: 320px;
166
166
  }
167
167
 
168
168
  .bagel-input input[type='radio'] {
169
- padding: 0;
170
- width: -webkit-fit-content;
171
- width: -moz-fit-content;
172
- width: fit-content;
169
+ padding: 0;
170
+ width: -webkit-fit-content;
171
+ width: -moz-fit-content;
172
+ width: fit-content;
173
173
  }
174
174
 
175
175
  .bagel-input:focus-within label {
176
- color: var(--bgl-primary);
176
+ color: var(--bgl-primary);
177
177
  }
178
178
 
179
179
  .bagel-input select.no-edit,
180
180
  .bagel-input input.no-edit,
181
181
  .bagel-input textarea.no-edit,
182
182
  .bagel-input .switch.no-edit {
183
- pointer-events: none;
184
- outline: none;
185
- opacity: 0.7;
183
+ pointer-events: none;
184
+ outline: none;
185
+ opacity: 0.7;
186
186
  }
187
187
 
188
188
  .bagel-input label.active {
189
- color: var(--bgl-primary);
189
+ color: var(--bgl-primary);
190
190
  }
191
191
 
192
192
  .inline-80 {
193
- display: inline-block;
194
- width: 80%;
193
+ display: inline-block;
194
+ width: 80%;
195
195
  }
196
196
 
197
197
  .inline-20 {
198
- display: inline-block;
199
- width: 20%;
198
+ display: inline-block;
199
+ width: 20%;
200
200
  }
201
201
 
202
202
  .inline-10 {
203
- display: inline-block;
204
- width: 20%;
203
+ display: inline-block;
204
+ width: 20%;
205
205
  }
206
206
 
207
207
  .inline-50 {
208
- display: inline-block;
209
- width: 49%;
210
- margin: 0 0.5%;
208
+ display: inline-block;
209
+ width: 49%;
210
+ margin: 0 0.5%;
211
211
  }
212
212
 
213
213
  .custom-select .input {
214
- height: var(--input-height);
215
- font-size: var(--input-font-size);
214
+ height: var(--input-height);
215
+ font-size: var(--input-font-size);
216
216
  }
217
217
 
218
218
  .custom-select .input {
219
- background: var(--input-bg);
220
- border: none;
221
- padding: 0.7rem;
222
- border-radius: var(--input-border-radius);
223
- color: var(--input-color);
224
- min-width: calc(var(--input-height) * 3);
225
- width: 100%;
219
+ background: var(--input-bg);
220
+ border: none;
221
+ padding: 0.7rem;
222
+ border-radius: var(--input-border-radius);
223
+ color: var(--input-color);
224
+ min-width: calc(var(--input-height) * 3);
225
+ width: 100%;
226
226
  }
227
227
 
228
228
  /* [dir='rtl'] .bagel-input input[type='email'],
@@ -236,23 +236,22 @@ select {
236
236
  .bagel-input textarea:focus-visible,
237
237
  .bagel-input button:focus-visible,
238
238
  .bgl_btn:focus-visible {
239
- outline-color: var(--bgl-primary-tint);
240
- box-shadow: inset 0 0 10px #00000012;
239
+ outline-color: var(--bgl-primary-tint);
240
+ box-shadow: inset 0 0 10px #00000012;
241
241
  }
242
242
 
243
243
  .bagel-input input:focus,
244
244
  .bagel-input select:focus,
245
245
  .bagel-input textarea:focus {
246
- outline-color: rgba(0, 0, 0, 0.05);
247
- box-shadow: inset 0 0 10px #00000021;
248
- outline-color: var(--input-bg);
249
-
246
+ outline-color: rgba(0, 0, 0, 0.05);
247
+ box-shadow: inset 0 0 8px #00000018;
248
+ outline-color: var(--input-bg);
250
249
  }
251
250
 
252
251
  .bagel-input .bgl_btn:focus,
253
252
  .bagel-input button:focus {
254
- outline-color: rgba(0, 0, 0, 0.05);
255
- outline-color: var(--input-bg);
253
+ outline-color: rgba(0, 0, 0, 0.05);
254
+ outline-color: var(--input-bg);
256
255
  }
257
256
 
258
257
  .bagel-input.light-input input,
@@ -260,84 +259,84 @@ select {
260
259
  .bagel-input.light-input select,
261
260
  .custom-select.light-input .input,
262
261
  .light-input .selectinput-btn {
263
- background: var(--bgl-popup-bg) !important;
264
- box-shadow:
265
- 0 1px 5px 0 rgba(0, 0, 0, 0.1),
266
- 0 1px 2px -1px rgba(0, 0, 0, 0.1) !important;
267
- outline: 1px solid var(--border-color) !important;
262
+ background: var(--bgl-popup-bg) !important;
263
+ box-shadow:
264
+ 0 1px 5px 0 rgba(0, 0, 0, 0.1),
265
+ 0 1px 2px -1px rgba(0, 0, 0, 0.1) !important;
266
+ outline: 1px solid var(--border-color) !important;
268
267
  }
269
268
 
270
269
  .input.active.light-input,
271
270
  .bagel-input.light-input input:focus-visible,
272
271
  .bagel-input.light-input select:focus-visible,
273
272
  .bagel-input.light-input textarea:focus-visible {
274
- box-shadow: inset 0 0 2px var(--bgl-popup-text) !important;
273
+ box-shadow: inset 0 0 2px var(--bgl-popup-text) !important;
275
274
  }
276
275
 
277
276
  .bagel-input input[type='number']-webkit-inner-spin-button,
278
277
  .bagel-input input[type='number']::-webkit-outer-spin-button {
279
- -webkit-appearance: none;
278
+ -webkit-appearance: none;
280
279
  }
281
280
 
282
281
  .label-count-0 label {
283
- display: none;
282
+ display: none;
284
283
  }
285
284
 
286
285
  .label-count-0 button.bgl_btn.bgl_flatBtn {
287
- margin-right: 5px;
286
+ margin-right: 5px;
288
287
  }
289
288
 
290
289
  .label-count-0 button.bgl_btn.bgl_flatBtn:hover {
291
- background: var(--bgl-hover-filter);
290
+ background: var(--bgl-hover-filter);
292
291
  }
293
292
 
294
293
  .bagel-input input[type='color'] {
295
- padding: 0.025rem 0.05rem;
296
- display: block;
297
- width: var(--input-height);
298
- min-width: var(--input-height);
299
- height: var(--input-height);
300
- border: none;
301
- -webkit-appearance: none;
302
- -moz-appearance: none;
303
- appearance: none;
304
- cursor: pointer;
294
+ padding: 0.025rem 0.05rem;
295
+ display: block;
296
+ width: var(--input-height);
297
+ min-width: var(--input-height);
298
+ height: var(--input-height);
299
+ border: none;
300
+ -webkit-appearance: none;
301
+ -moz-appearance: none;
302
+ appearance: none;
303
+ cursor: pointer;
305
304
  }
306
305
 
307
306
  .bagel-input input[type='color']::-webkit-color-swatch {
308
- border-radius: var(--input-border-radius);
309
- border: none;
310
- -webkit-transition: box-shadow 200ms ease;
311
- transition: box-shadow 200ms ease;
307
+ border-radius: var(--input-border-radius);
308
+ border: none;
309
+ -webkit-transition: box-shadow 200ms ease;
310
+ transition: box-shadow 200ms ease;
312
311
  }
313
312
 
314
313
  .bagel-input input[type='color']::-moz-color-swatch {
315
- border-radius: var(--input-border-radius);
316
- border: none;
317
- -moz-transition: box-shadow 200ms ease;
318
- transition: box-shadow 200ms ease;
314
+ border-radius: var(--input-border-radius);
315
+ border: none;
316
+ -moz-transition: box-shadow 200ms ease;
317
+ transition: box-shadow 200ms ease;
319
318
  }
320
319
 
321
320
  .bagel-input input[type='color']::-webkit-color-swatch:hover {
322
- box-shadow: inset 0 0 10px #00000050;
321
+ box-shadow: inset 0 0 10px #00000050;
323
322
  }
324
323
 
325
324
  .bagel-input input[type='color']::-moz-color-swatch:hover {
326
- box-shadow: inset 0 0 10px #00000050;
325
+ box-shadow: inset 0 0 10px #00000050;
327
326
  }
328
327
 
329
328
  @media screen and (max-width: 910px) {
330
- .bagel-input.wider input {
331
- min-width: 120px;
332
- }
329
+ .bagel-input.wider input {
330
+ min-width: 120px;
331
+ }
333
332
  }
334
333
 
335
334
  .pixel {
336
- width: 0 !important;
337
- height: 0 !important;
338
- overflow: hidden !important;
339
- outline: none !important;
340
- position: absolute !important;
341
- bottom: 0 !important;
342
- left: 50% !important;
343
- }
335
+ width: 0 !important;
336
+ height: 0 !important;
337
+ overflow: hidden !important;
338
+ outline: none !important;
339
+ position: absolute !important;
340
+ bottom: 0 !important;
341
+ left: 50% !important;
342
+ }