@bagelink/vue 1.15.13 → 1.15.26

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 (220) hide show
  1. package/dist/components/AccordionItem.vue.d.ts.map +1 -1
  2. package/dist/components/Alert.vue.d.ts +8 -4
  3. package/dist/components/Avatar.vue.d.ts.map +1 -1
  4. package/dist/components/Badge.vue.d.ts +46 -6
  5. package/dist/components/Badge.vue.d.ts.map +1 -1
  6. package/dist/components/BglVideo.vue.d.ts.map +1 -1
  7. package/dist/components/Btn.vue.d.ts +11 -3
  8. package/dist/components/Btn.vue.d.ts.map +1 -1
  9. package/dist/components/Card.vue.d.ts.map +1 -1
  10. package/dist/components/DataPreview.vue.d.ts.map +1 -1
  11. package/dist/components/DragOver.vue.d.ts.map +1 -1
  12. package/dist/components/Dropdown.vue.d.ts.map +1 -1
  13. package/dist/components/FieldSetVue.vue.d.ts.map +1 -1
  14. package/dist/components/FilterQuery.vue.d.ts.map +1 -1
  15. package/dist/components/Image.vue.d.ts.map +1 -1
  16. package/dist/components/ListItem.vue.d.ts +0 -1
  17. package/dist/components/ListItem.vue.d.ts.map +1 -1
  18. package/dist/components/ListView.vue.d.ts.map +1 -1
  19. package/dist/components/MapEmbed/Index.vue.d.ts.map +1 -1
  20. package/dist/components/Menu.vue.d.ts.map +1 -1
  21. package/dist/components/NavBar.vue.d.ts.map +1 -1
  22. package/dist/components/PageTitle.vue.d.ts.map +1 -1
  23. package/dist/components/Pagination.vue.d.ts +1 -1
  24. package/dist/components/RouterWrapper.vue.d.ts.map +1 -1
  25. package/dist/components/Spreadsheet/Index.vue.d.ts.map +1 -1
  26. package/dist/components/Spreadsheet/SpreadsheetTable.vue.d.ts +8 -8
  27. package/dist/components/Spreadsheet/SpreadsheetTable.vue.d.ts.map +1 -1
  28. package/dist/components/Swiper.vue.d.ts.map +1 -1
  29. package/dist/components/Toast.vue.d.ts +7 -2
  30. package/dist/components/Toast.vue.d.ts.map +1 -1
  31. package/dist/components/analytics/BarChart.vue.d.ts.map +1 -1
  32. package/dist/components/analytics/LineChart.vue.d.ts.map +1 -1
  33. package/dist/components/analytics/PieChart.vue.d.ts.map +1 -1
  34. package/dist/components/calendar/CalendarPopover.vue.d.ts.map +1 -1
  35. package/dist/components/calendar/Index.vue.d.ts.map +1 -1
  36. package/dist/components/calendar/views/AgendaView.vue.d.ts.map +1 -1
  37. package/dist/components/calendar/views/DayView.vue.d.ts.map +1 -1
  38. package/dist/components/calendar/views/MonthView.vue.d.ts.map +1 -1
  39. package/dist/components/calendar/views/WeekView.vue.d.ts.map +1 -1
  40. package/dist/components/dataTable/DataTable.vue.d.ts +11 -2
  41. package/dist/components/dataTable/DataTable.vue.d.ts.map +1 -1
  42. package/dist/components/form/index.d.ts +0 -4
  43. package/dist/components/form/inputs/ArrayInput.vue.d.ts.map +1 -1
  44. package/dist/components/form/inputs/CheckInput.vue.d.ts.map +1 -1
  45. package/dist/components/form/inputs/Checkbox.vue.d.ts.map +1 -1
  46. package/dist/components/form/inputs/CodeEditor/Index.vue.d.ts.map +1 -1
  47. package/dist/components/form/inputs/ColorInput.vue.d.ts.map +1 -1
  48. package/dist/components/form/inputs/DateInput.vue.d.ts.map +1 -1
  49. package/dist/components/form/inputs/DatePicker.vue.d.ts.map +1 -1
  50. package/dist/components/form/inputs/EmailInput.vue.d.ts.map +1 -1
  51. package/dist/components/form/inputs/JSONInput.vue.d.ts.map +1 -1
  52. package/dist/components/form/inputs/MarkdownEditor.vue.d.ts.map +1 -1
  53. package/dist/components/form/inputs/NumberInput.vue.d.ts.map +1 -1
  54. package/dist/components/form/inputs/OTP.vue.d.ts.map +1 -1
  55. package/dist/components/form/inputs/PasswordInput.vue.d.ts.map +1 -1
  56. package/dist/components/form/inputs/RadioGroup.vue.d.ts.map +1 -1
  57. package/dist/components/form/inputs/RangeInput.vue.d.ts.map +1 -1
  58. package/dist/components/form/inputs/RichText/components/EditorToolbar.vue.d.ts.map +1 -1
  59. package/dist/components/form/inputs/RichText/index.vue.d.ts.map +1 -1
  60. package/dist/components/form/inputs/RichText/utils/media.d.ts +1 -10
  61. package/dist/components/form/inputs/SelectBtn.vue.d.ts +4 -3
  62. package/dist/components/form/inputs/SelectBtn.vue.d.ts.map +1 -1
  63. package/dist/components/form/inputs/SelectInput.vue.d.ts +1 -1
  64. package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
  65. package/dist/components/form/inputs/SignaturePad.vue.d.ts.map +1 -1
  66. package/dist/components/form/inputs/TableField.vue.d.ts.map +1 -1
  67. package/dist/components/form/inputs/TelInput.vue.d.ts.map +1 -1
  68. package/dist/components/form/inputs/TextInput.vue.d.ts.map +1 -1
  69. package/dist/components/form/inputs/ToggleInput.vue.d.ts.map +1 -1
  70. package/dist/components/index.d.ts +2 -9
  71. package/dist/components/layout/AppContent.vue.d.ts.map +1 -1
  72. package/dist/components/layout/AppLayout.vue.d.ts +33 -4
  73. package/dist/components/layout/AppLayout.vue.d.ts.map +1 -1
  74. package/dist/components/layout/AppSidebar.vue.d.ts +6 -3
  75. package/dist/components/layout/AppSidebar.vue.d.ts.map +1 -1
  76. package/dist/components/layout/BottomMenu.vue.d.ts.map +1 -1
  77. package/dist/components/layout/Panel.vue.d.ts +1 -1
  78. package/dist/components/layout/Resizable.vue.d.ts +1 -1
  79. package/dist/components/layout/Resizable.vue.d.ts.map +1 -1
  80. package/dist/components/layout/SidebarMenu.vue.d.ts.map +1 -1
  81. package/dist/components/layout/Skeleton.vue.d.ts.map +1 -1
  82. package/dist/components/layout/TabbedLayout.vue.d.ts.map +1 -1
  83. package/dist/components/layout/TabsNav.vue.d.ts +1 -1
  84. package/dist/components/layout/TabsNav.vue.d.ts.map +1 -1
  85. package/dist/components/layout/index.d.ts +2 -0
  86. package/dist/components/lightbox/Lightbox.vue.d.ts.map +1 -1
  87. package/dist/composables/index.d.ts +1 -0
  88. package/dist/composables/useTheme.d.ts +0 -15
  89. package/dist/dialog/Dialog.vue.d.ts +4 -2
  90. package/dist/dialog/Dialog.vue.d.ts.map +1 -1
  91. package/dist/dialog/DialogConfirm.vue.d.ts +2 -2
  92. package/dist/form-flow/MultiStepForm.vue.d.ts +16 -2
  93. package/dist/form-flow/MultiStepForm.vue.d.ts.map +1 -1
  94. package/dist/form-flow/form-flow.d.ts +11 -0
  95. package/dist/index.cjs +24 -22
  96. package/dist/index.d.ts +0 -3
  97. package/dist/index.mjs +78 -70
  98. package/dist/style.css +1 -1
  99. package/dist/types/BagelForm.d.ts +23 -61
  100. package/dist/types/BtnOptions.d.ts +5 -3
  101. package/dist/types/TableSchema.d.ts +3 -0
  102. package/dist/types/index.d.ts +1 -2
  103. package/dist/utils/calendar/dateUtils.d.ts +2 -3
  104. package/dist/utils/constants.d.ts +6 -0
  105. package/dist/utils/index.d.ts +24 -3
  106. package/dist/utils/options.d.ts +2 -2
  107. package/dist/utils/showdown.d.ts +6 -0
  108. package/package.json +1 -1
  109. package/src/components/AccordionItem.vue +32 -28
  110. package/src/components/Avatar.vue +12 -10
  111. package/src/components/Badge.vue +15 -13
  112. package/src/components/BglVideo.vue +13 -11
  113. package/src/components/Btn.vue +90 -89
  114. package/src/components/Card.vue +33 -31
  115. package/src/components/DataPreview.vue +17 -15
  116. package/src/components/DragOver.vue +2 -0
  117. package/src/components/Dropdown.vue +38 -36
  118. package/src/components/FieldSetVue.vue +7 -5
  119. package/src/components/FilterQuery.vue +28 -24
  120. package/src/components/Image.vue +7 -5
  121. package/src/components/JSONSchema.vue +45 -43
  122. package/src/components/JsonBuilder.vue +10 -8
  123. package/src/components/ListItem.vue +41 -39
  124. package/src/components/ListView.vue +3 -1
  125. package/src/components/MapEmbed/Index.vue +4 -2
  126. package/src/components/Menu.vue +17 -13
  127. package/src/components/NavBar.vue +198 -196
  128. package/src/components/PageTitle.vue +2 -0
  129. package/src/components/RouterWrapper.vue +3 -1
  130. package/src/components/Spreadsheet/Index.vue +8 -6
  131. package/src/components/Spreadsheet/SpreadsheetTable.vue +100 -98
  132. package/src/components/Swiper.vue +33 -30
  133. package/src/components/Toast.vue +2 -0
  134. package/src/components/analytics/BarChart.vue +10 -8
  135. package/src/components/analytics/LineChart.vue +27 -23
  136. package/src/components/analytics/PieChart.vue +32 -28
  137. package/src/components/calendar/CalendarPopover.vue +19 -17
  138. package/src/components/calendar/Index.vue +6 -4
  139. package/src/components/calendar/views/AgendaView.vue +19 -17
  140. package/src/components/calendar/views/DayView.vue +44 -42
  141. package/src/components/calendar/views/MonthView.vue +85 -83
  142. package/src/components/calendar/views/WeekView.vue +55 -53
  143. package/src/components/dataTable/DataTable.vue +140 -139
  144. package/src/components/form/inputs/ArrayInput.vue +28 -26
  145. package/src/components/form/inputs/CheckInput.vue +32 -30
  146. package/src/components/form/inputs/Checkbox.vue +4 -2
  147. package/src/components/form/inputs/CodeEditor/Index.vue +49 -45
  148. package/src/components/form/inputs/ColorInput.vue +37 -35
  149. package/src/components/form/inputs/DateInput.vue +3 -1
  150. package/src/components/form/inputs/DatePicker.vue +42 -40
  151. package/src/components/form/inputs/EmailInput.vue +67 -63
  152. package/src/components/form/inputs/JSONInput.vue +4 -2
  153. package/src/components/form/inputs/MarkdownEditor.vue +3 -1
  154. package/src/components/form/inputs/NumberInput.vue +53 -51
  155. package/src/components/form/inputs/OTP.vue +45 -43
  156. package/src/components/form/inputs/PasswordInput.vue +11 -9
  157. package/src/components/form/inputs/RadioGroup.vue +19 -18
  158. package/src/components/form/inputs/RangeInput.vue +23 -21
  159. package/src/components/form/inputs/RichText/components/EditorToolbar.vue +14 -12
  160. package/src/components/form/inputs/RichText/components/gridBox.vue +10 -8
  161. package/src/components/form/inputs/RichText/index.vue +218 -212
  162. package/src/components/form/inputs/SelectBtn.vue +3 -1
  163. package/src/components/form/inputs/SelectInput.vue +61 -57
  164. package/src/components/form/inputs/SignaturePad.vue +19 -17
  165. package/src/components/form/inputs/TableField.vue +71 -67
  166. package/src/components/form/inputs/TelInput.vue +84 -82
  167. package/src/components/form/inputs/TextInput.vue +38 -34
  168. package/src/components/form/inputs/ToggleInput.vue +31 -29
  169. package/src/components/layout/AppContent.vue +21 -17
  170. package/src/components/layout/AppLayout.vue +25 -23
  171. package/src/components/layout/AppSidebar.vue +71 -72
  172. package/src/components/layout/BottomMenu.vue +7 -3
  173. package/src/components/layout/Resizable.vue +8 -6
  174. package/src/components/layout/SidebarMenu.vue +16 -12
  175. package/src/components/layout/Skeleton.vue +17 -15
  176. package/src/components/layout/TabbedLayout.vue +6 -5
  177. package/src/components/layout/TabsNav.vue +112 -108
  178. package/src/components/lightbox/Lightbox.vue +147 -145
  179. package/src/dialog/Dialog.vue +142 -140
  180. package/src/form-flow/MultiStepForm.vue +88 -86
  181. package/src/styles/appearance.css +115 -115
  182. package/src/styles/bagel.css +30 -31
  183. package/src/styles/layout.css +977 -971
  184. package/src/styles/mobilLayout.css +754 -754
  185. package/src/styles/text.css +630 -630
  186. package/vite.config.ts +1 -1
  187. package/dist/components/Carousel.vue.d.ts +0 -140
  188. package/dist/components/Carousel.vue.d.ts.map +0 -1
  189. package/dist/components/ImportData.vue.d.ts +0 -21
  190. package/dist/components/ImportData.vue.d.ts.map +0 -1
  191. package/dist/components/Modal.vue.d.ts +0 -48
  192. package/dist/components/Modal.vue.d.ts.map +0 -1
  193. package/dist/components/ModalConfirm.vue.d.ts +0 -17
  194. package/dist/components/ModalConfirm.vue.d.ts.map +0 -1
  195. package/dist/components/ModalForm.vue.d.ts +0 -29
  196. package/dist/components/ModalForm.vue.d.ts.map +0 -1
  197. package/dist/components/Pill.vue.d.ts +0 -47
  198. package/dist/components/Pill.vue.d.ts.map +0 -1
  199. package/dist/components/Slider.vue.d.ts +0 -96
  200. package/dist/components/Slider.vue.d.ts.map +0 -1
  201. package/dist/components/Title.vue.d.ts +0 -48
  202. package/dist/components/Title.vue.d.ts.map +0 -1
  203. package/dist/components/ToolBar.vue.d.ts +0 -3
  204. package/dist/components/ToolBar.vue.d.ts.map +0 -1
  205. package/dist/components/form/BagelForm.vue.d.ts +0 -43
  206. package/dist/components/form/BagelForm.vue.d.ts.map +0 -1
  207. package/dist/components/form/BglMultiStepForm.vue.d.ts +0 -68
  208. package/dist/components/form/BglMultiStepForm.vue.d.ts.map +0 -1
  209. package/dist/components/form/FieldArray.vue.d.ts +0 -48
  210. package/dist/components/form/FieldArray.vue.d.ts.map +0 -1
  211. package/dist/components/form/useBagelFormState.d.ts +0 -11
  212. package/dist/components/form/useBagelFormState.d.ts.map +0 -1
  213. package/dist/composables/useFormField.d.ts +0 -11
  214. package/dist/composables/useFormField.d.ts.map +0 -1
  215. package/dist/plugins/modalTypes.d.ts +0 -62
  216. package/dist/plugins/modalTypes.d.ts.map +0 -1
  217. package/dist/plugins/useModal.d.ts +0 -21
  218. package/dist/plugins/useModal.d.ts.map +0 -1
  219. package/dist/utils/BagelFormUtils.d.ts +0 -183
  220. package/dist/utils/BagelFormUtils.d.ts.map +0 -1
@@ -1,14 +1,24 @@
1
- import { Paths, Get, IterableElement, OmitIndexSignature } from 'type-fest';
1
+ import { Paths, Get, OmitIndexSignature } from 'type-fest';
2
2
  import { ToString } from 'type-fest/source/internal';
3
3
  import { LiteralStringUnion } from 'type-fest/source/literal-union';
4
4
  import { PathsOptions, DefaultPathsOptions } from 'type-fest/source/paths';
5
5
  import { VNode } from 'vue';
6
6
  import { BagelInputShellProps } from '../components/form/inputs/bagelInputShell';
7
- type ArrayAttrs = any;
8
7
  interface Option {
9
8
  label: string;
10
9
  value: any;
11
10
  }
11
+ export type _Path<T, PO extends PathsOptions = DefaultPathsOptions> = ToString<Paths<OmitIndexSignature<T>, PO>>;
12
+ type IndexSignaturePaths<T> = {
13
+ [K in keyof T]: T[K] extends {
14
+ [key: string]: any;
15
+ } ? `${K & string}.${string}` : never;
16
+ }[keyof T];
17
+ export type Path<T, PO extends PathsOptions = DefaultPathsOptions> = FieldVal<T, _Path<T, PO>> extends Array<any> ? LiteralStringUnion<_Path<T, PO>> : _Path<T, PO> | IndexSignaturePaths<T> | `${keyof T & string}.more_info.${string}`;
18
+ /** The value type at path P in object T. Falls back to unknown if resolution fails. */
19
+ export type FieldVal<T, P extends Path<T>> = unknown extends Get<T, P> ? unknown : Get<T, P>;
20
+ /** Field value type that preserves type information when possible. */
21
+ export type SmartFieldVal<T, P extends Path<T>> = P extends string ? P extends keyof T ? T[P] : any : FieldVal<T, P>;
12
22
  export type AttributeValue = string | number | boolean | undefined | {
13
23
  [key: string]: any;
14
24
  };
@@ -16,7 +26,7 @@ export type AttributeFn<T, P extends Path<T>> = (field: SmartFieldVal<T, P>, row
16
26
  export interface Attributes<T, P extends Path<T>> {
17
27
  [key: string]: AttributeValue | AttributeFn<T, P>;
18
28
  }
19
- export type BagelFieldOptions<T, P extends Path<T>> = string | ({
29
+ export type FieldOptions<T, P extends Path<T>> = string | ({
20
30
  label?: string;
21
31
  value: string | number;
22
32
  } | string | number | boolean | {
@@ -24,37 +34,8 @@ export type BagelFieldOptions<T, P extends Path<T>> = string | ({
24
34
  })[] | ((val?: SmartFieldVal<T, P>, rowData?: T) => Option[] | ((query: string) => Promise<Option[]>)) | ((query: string, val?: SmartFieldVal<T, P>, rowData?: T) => Promise<Option[]>);
25
35
  export type VIfType<T, P extends Path<T>> = string | boolean | ((val?: SmartFieldVal<T, P>, rowData?: T) => boolean);
26
36
  export type ValidationFn<T, P extends Path<T>> = (val?: SmartFieldVal<T, P>, rowData?: T) => string | undefined;
27
- export interface ShallowPathsOptions extends PathsOptions {
28
- maxRecursionDepth: 0;
29
- }
30
- export type _Path<T, PO extends PathsOptions = DefaultPathsOptions> = ToString<Paths<OmitIndexSignature<T>, PO>>;
31
- export type OpenEndedPath<T> = keyof T extends infer K ? K extends keyof T ? T[K] extends {
32
- [key: string]: any;
33
- } ? `${K & string}.${string}` : never : never : never;
34
- type IndexSignaturePaths<T> = {
35
- [K in keyof T]: T[K] extends {
36
- [key: string]: any;
37
- } ? T[K] extends {
38
- [key: string]: infer V;
39
- } ? `${K & string}.${string}` : never : never;
40
- }[keyof T];
41
- export type Path<T, PO extends PathsOptions = DefaultPathsOptions> = FieldVal<T, _Path<T, PO>> extends Array<any> ? LiteralStringUnion<_Path<T, PO>> : _Path<T, PO> | IndexSignaturePaths<T> | `${keyof T & string}.more_info.${string}`;
42
- export type SmartFieldVal<T, P extends Path<T>> = P extends string ? P extends keyof T ? T[P] : any : FieldVal<T, P>;
43
- export type SmartBagelFieldOptions<T, P extends Path<T>> = string | ({
44
- label?: string;
45
- value: string | number;
46
- } | string | number | boolean | {
47
- [key: string]: any;
48
- })[] | ((val?: SmartFieldVal<T, P>, rowData?: T) => Option[] | ((query: string) => Promise<Option[]>)) | ((query: string, val?: SmartFieldVal<T, P>, rowData?: T) => Promise<Option[]>);
49
- export type SmartVIfType<T, P extends Path<T>> = string | boolean | ((val?: SmartFieldVal<T, P>, rowData?: T) => boolean);
50
- export type SmartValidationFn<T, P extends Path<T>> = (val?: SmartFieldVal<T, P>, rowData?: T) => string | undefined;
51
- export type SmartAttributeFn<T, P extends Path<T>> = (field: SmartFieldVal<T, P>, row?: T) => AttributeValue;
52
- export type SmartTransformFn<T, P extends Path<T>> = (val?: SmartFieldVal<T, P>, rowData?: T) => any;
53
- export type SmartUpdateFn<T, P extends Path<T>> = (val?: SmartFieldVal<T, P>, rowData?: T) => unknown;
54
- /** The value type at path P in object T. */
55
- export type FieldVal<T, P extends Path<T>> = unknown extends Get<T, P> ? unknown : Get<T, P>;
56
- /** If path P in T is an array, this gives the array's element type. */
57
- export type ArrayFieldVal<T, P extends Path<T>> = IterableElement<Get<T, P>>;
37
+ export type TransformFn<T, P extends Path<T>> = (val?: SmartFieldVal<T, P>, rowData?: T) => any;
38
+ export type UpdateFn<T, P extends Path<T>> = (val?: SmartFieldVal<T, P>, rowData?: T) => unknown;
58
39
  export type VNodeFn<T, P extends Path<T>> = (props: {
59
40
  row?: T;
60
41
  field: BaseBagelField<T, P>;
@@ -79,45 +60,26 @@ export interface BaseBagelField<T, P extends Path<T, PO>, PO extends PathsOption
79
60
  'id'?: P;
80
61
  'label'?: string;
81
62
  'placeholder'?: string;
82
- 'class'?: AttributeValue | SmartAttributeFn<T, P>;
63
+ 'class'?: AttributeValue | AttributeFn<T, P>;
83
64
  'attrs'?: Attributes<T, P>;
84
65
  'required'?: boolean;
85
66
  'disabled'?: boolean;
86
67
  'helptext'?: string;
87
- 'options'?: SmartBagelFieldOptions<T, P>;
68
+ 'options'?: FieldOptions<T, P>;
88
69
  'children'?: SchemaChild<T, Path<T, PO>, PO>[];
89
70
  'slots'?: {
90
71
  [key: string]: SchemaChild<T, Path<T, PO>, PO>[];
91
72
  };
92
73
  'defaultValue'?: any;
93
- 'vIf'?: SmartVIfType<T, P>;
94
- 'v-if'?: SmartVIfType<T, P>;
95
- 'transform'?: SmartTransformFn<T, P>;
96
- 'onUpdate'?: SmartUpdateFn<T, P>;
97
- 'validate'?: SmartValidationFn<T, P>;
74
+ 'vIf'?: VIfType<T, P>;
75
+ 'v-if'?: VIfType<T, P>;
76
+ 'transform'?: TransformFn<T, P>;
77
+ 'onUpdate'?: UpdateFn<T, P>;
78
+ 'validate'?: ValidationFn<T, P>;
98
79
  }
99
- export type _MappedBaseBagelField<T, PO extends PathsOptions = DefaultPathsOptions> = {
100
- [P in Path<T, PO>]: BaseBagelField<T, P, PO>;
101
- };
102
- export type MappedBaseBagelFieldP<T, P extends Path<T, PO>, PO extends PathsOptions = DefaultPathsOptions> = _MappedBaseBagelField<T, PO>[P];
103
- export type FieldByP<T, P extends Path<T, PO>, PO extends PathsOptions = DefaultPathsOptions> = MappedBaseBagelFieldP<T, P, PO>;
104
- export type Field<T, PO extends PathsOptions = DefaultPathsOptions> = MappedBaseBagelFieldP<T, Path<T, PO>, PO>;
105
- export type BglFieldT<T, PO extends PathsOptions = DefaultPathsOptions> = Field<T, PO>;
80
+ export type Field<T, PO extends PathsOptions = DefaultPathsOptions> = ValidBaseBagelField<T, PO>;
106
81
  export type SchemaField<T, PO extends PathsOptions = DefaultPathsOptions> = Field<T, PO> | ElementField<T, PO>;
107
82
  export type BglFormSchemaT<T, PO extends PathsOptions = DefaultPathsOptions> = (SchemaField<T, PO> | BaseBagelField<T, Path<T, PO>, PO>)[];
108
- export type ShallowBglFormSchemaT<T, PO extends PathsOptions = ShallowPathsOptions> = (SchemaField<T, PO> | BaseBagelField<T, Path<T, PO>, PO>)[];
109
- export interface InputBagelField<T, P extends Path<T, PO>, PO extends PathsOptions = DefaultPathsOptions> extends BaseBagelField<T, P, PO> {
110
- $el: 'text' | any;
111
- type?: string;
112
- }
113
- export interface SelectBagelField<T, P extends Path<T, PO>, PO extends PathsOptions = DefaultPathsOptions> extends BaseBagelField<T, P, PO> {
114
- $el: 'select' | any;
115
- type?: string;
116
- }
117
- export interface ArrayBagelField<T, P extends Path<T, PO>, PO extends PathsOptions = DefaultPathsOptions> extends BaseBagelField<T, P, PO> {
118
- $el: 'array' | any;
119
- attrs?: ArrayAttrs;
120
- }
121
83
  export interface ValidateInputBaseT {
122
84
  validate?: ValidationFn<{
123
85
  [key: string]: unknown;
@@ -2,18 +2,20 @@ import { IconType, ThemeType } from '.';
2
2
  export interface BtnOptions {
3
3
  onClick?: () => void;
4
4
  color?: ThemeType;
5
- theme?: ThemeType;
6
5
  disabled?: boolean;
7
6
  icon?: IconType;
7
+ variant?: 'solid' | 'flat' | 'outline';
8
8
  flat?: boolean;
9
+ outline?: boolean;
10
+ /** @deprecated Use `outline` */
11
+ border?: boolean;
9
12
  thin?: boolean;
10
13
  type?: 'button' | 'submit' | 'reset';
11
14
  loading?: boolean;
12
15
  role?: string;
13
16
  value?: string;
14
- border?: boolean;
15
17
  }
16
18
  export type UnitSize = 'px' | 'rem' | 'vh' | 'vw';
17
- export type SizeType = 'xSmall' | 'small' | 'medium' | 'large' | 'xLarge';
19
+ export type SizeType = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
18
20
  export type SizeUnit = `${number}` | number | `${number}${UnitSize}`;
19
21
  //# sourceMappingURL=BtnOptions.d.ts.map
@@ -12,6 +12,9 @@ export interface TableSchemaProps<T extends {
12
12
  columns?: MaybeRefOrGetter<string[]>;
13
13
  useServerSort?: boolean;
14
14
  selectable?: boolean;
15
+ sortable?: boolean | {
16
+ handle?: string;
17
+ };
15
18
  onLastItemVisible?: () => void;
16
19
  }
17
20
  export interface SortingOptions {
@@ -1,7 +1,6 @@
1
1
  import { IconType, MaterialIcons } from '../components/Icon/types';
2
2
  export type { AvailabilitySlot, CalendarEvent, CalendarProps, CalendarView, CalendarViewState } from '../components/calendar/CalendarTypes';
3
3
  export type { IconType, MaterialIcons };
4
- export type { ModalComponentProps, ModalComponentProps as ModalFormComponentProps, ModalOptions, } from '../plugins/modalTypes';
5
4
  export type { AddToCalendarEvent } from '../utils/calendar/types';
6
5
  export * from './BagelForm';
7
6
  export * from './BtnOptions';
@@ -16,7 +15,7 @@ export type ThemeType = 'blue' | 'green' | 'red' | 'yellow' | 'purple' | 'brown'
16
15
  export type ExtendedThemeType = 'blue' | 'green' | 'red' | 'yellow' | 'purple' | 'brown' | 'orange' | 'turquoise' | 'gray' | 'black' | 'pink' | 'primary' | 'white' | 'blue-light' | 'green-light' | 'red-light' | 'yellow-light' | 'purple-light' | 'brown-light' | 'orange-light' | 'turquoise-light' | 'pink-light' | 'gray-light' | 'primary-light' | 'blue-tint' | 'red-tint' | 'primary-tint' | 'black-tint' | 'blue-dark' | 'light' | 'blue-10' | 'green-10' | 'red-10' | 'yellow-10' | 'purple-10' | 'brown-10' | 'orange-10' | 'turquoise-10' | 'gray-10' | 'black-10' | 'pink-10' | 'blue-20' | 'green-20' | 'red-20' | 'yellow-20' | 'purple-20' | 'brown-20' | 'orange-20' | 'turquoise-20' | 'gray-20' | 'black-20' | 'pink-20' | 'blue-30' | 'green-30' | 'red-30' | 'yellow-30' | 'purple-30' | 'brown-30' | 'orange-30' | 'turquoise-30' | 'gray-30' | 'black-30' | 'pink-30' | 'blue-40' | 'green-40' | 'red-40' | 'yellow-40' | 'purple-40' | 'brown-40' | 'orange-40' | 'turquoise-40' | 'gray-40' | 'black-40' | 'pink-40' | 'blue-50' | 'green-50' | 'red-50' | 'yellow-50' | 'purple-50' | 'brown-50' | 'orange-50' | 'turquoise-50' | 'gray-50' | 'black-50' | 'pink-50' | 'blue-60' | 'green-60' | 'red-60' | 'yellow-60' | 'purple-60' | 'brown-60' | 'orange-60' | 'turquoise-60' | 'gray-60' | 'black-60' | 'pink-60' | 'blue-70' | 'green-70' | 'red-70' | 'yellow-70' | 'purple-70' | 'brown-70' | 'orange-70' | 'turquoise-70' | 'gray-70' | 'black-70' | 'pink-70' | 'blue-80' | 'green-80' | 'red-80' | 'yellow-80' | 'purple-80' | 'brown-80' | 'orange-80' | 'turquoise-80' | 'gray-80' | 'black-80' | 'pink-80' | 'blue-90' | 'green-90' | 'red-90' | 'yellow-90' | 'purple-90' | 'brown-90' | 'orange-90' | 'turquoise-90' | 'gray-90' | 'black-90' | 'pink-90' | 'blue-100' | 'green-100' | 'red-100' | 'yellow-100' | 'purple-100' | 'brown-100' | 'orange-100' | 'turquoise-100' | 'gray-100' | 'black-100' | 'pink-100' | 'blue-110' | 'green-110' | 'red-110' | 'yellow-110' | 'purple-110' | 'brown-110' | 'orange-110' | 'turquoise-110' | 'gray-110' | 'black-110' | 'pink-110' | 'blue-120' | 'green-120' | 'red-120' | 'yellow-120' | 'purple-120' | 'brown-120' | 'orange-120' | 'turquoise-120' | 'gray-120' | 'black-120' | 'pink-120' | 'blue-130' | 'green-130' | 'red-130' | 'yellow-130' | 'purple-130' | 'brown-130' | 'orange-130' | 'turquoise-130' | 'gray-130' | 'black-130' | 'pink-130' | 'Error' | 'Paid' | 'Active';
17
16
  export interface OptionObject {
18
17
  label: string;
19
- value: string | number;
18
+ value: string | number | boolean;
20
19
  icon?: IconType;
21
20
  [key: string]: any;
22
21
  }
@@ -1,6 +1,5 @@
1
- import { timeDelta, formatDate, fmtDate, handleTimezone, getDatePartsMap, utc, local } from '@bagelink/utils';
2
- export { fmtDate, formatDate, getDatePartsMap, handleTimezone, timeDelta, utc, local };
3
- export type { DateTimeAcceptedFormats, FormatDateOptions } from '@bagelink/utils';
1
+ export { fmtDate, formatDate, getDatePartsMap, handleTimezone, timeDelta, utc, local } from '../date';
2
+ export type { DateTimeAcceptedFormats, FormatDateOptions } from '../date';
4
3
  type TimeAgoLang = 'en' | 'es' | 'fr' | 'he' | 'it' | 'ru';
5
4
  export declare function timeAgo(date: string | Date, langOrConfig?: TimeAgoLang | {
6
5
  lang?: TimeAgoLang;
@@ -1,3 +1,9 @@
1
+ /**
2
+ * The single mobile breakpoint, matching the CSS media query
3
+ * `@media (max-width: 910px)` used by all `m_*` utilities.
4
+ * A viewport is "mobile" when `window.innerWidth <= MOBILE_BREAKPOINT`.
5
+ */
6
+ export declare const MOBILE_BREAKPOINT = 910;
1
7
  export declare const IMAGE_FORMATS: string[];
2
8
  export declare const IMAGE_FORMATS_REGEXP: RegExp;
3
9
  export declare const VIDEO_FORMATS: string[];
@@ -4,6 +4,13 @@ export declare function slugify(str: string): string;
4
4
  export declare function keyToLabel(key?: string): string | undefined;
5
5
  export declare function copyText(text: string, cb?: (msg: string) => void): Promise<void>;
6
6
  export declare function initials(...strArr: string[]): string;
7
+ /**
8
+ * Strip script-capable content from an HTML string so it is safe for v-html.
9
+ * Removes <script>/<style>/<iframe>/<object>/<embed> elements, on* event
10
+ * handler attributes, and javascript: / data: URLs in href/src.
11
+ * Allowlist-free by design — formatting tags (b, i, a, span…) pass through.
12
+ */
13
+ export declare function sanitizeHtml(html: string): string;
7
14
  export declare function useEscape(event: KeyboardEvent, closeModel: () => void): void;
8
15
  export declare function classify(fieldVal?: any, row?: any, ...classes: any[]): string;
9
16
  export declare function bindAttrs<T, P extends Path<T>>(attrs?: Attributes<T, P>, fieldVal?: any, row?: T): {
@@ -19,21 +26,35 @@ export declare function sleep(ms?: number): Promise<unknown>;
19
26
  export declare function appendScript(src: string, options?: {
20
27
  id?: string;
21
28
  }): Promise<void>;
29
+ /**
30
+ * Wait for a global (e.g. a CDN script's `window.X`) to become available.
31
+ * Resolves with the global value, or rejects after `timeout` ms (default 10s).
32
+ *
33
+ * @example
34
+ * await appendScript('https://unpkg.com/leaflet/dist/leaflet.js')
35
+ * const L = await awaitGlobal('L')
36
+ */
37
+ export declare function awaitGlobal<T = any>(name: string, { timeout, interval }?: {
38
+ timeout?: number;
39
+ interval?: number;
40
+ }): Promise<T>;
22
41
  export declare function appendStyle(src: string): Promise<void>;
23
42
  export declare function normalizeURL(url: string): string;
24
43
  export declare function normalizeDimension(value: string | number | undefined, defaultMetric?: string): string | undefined;
25
- export * as bagelFormUtils from './BagelFormUtils';
26
- export { useForm } from './BagelFormUtils';
27
44
  export type { NormalizedOption } from './options';
28
45
  export { getOptionIcon, getOptionLabel, getOptionValue, normalizeOption } from './options';
29
46
  export type { ComparisonOperator, FilterCondition, LogicalOperator, QueryConditions, QueryFilter } from './queryFilter';
30
47
  export { anyOf, parseQuery, queryFilter, range, search } from './queryFilter';
31
48
  export type { ShowdownConverter, ShowdownOptions } from './showdown';
32
- export declare function pathKeyToURL(pathKey?: string | null): string | null | undefined;
49
+ export declare function pathKeyToURL(pathKey?: string | null): string | undefined;
33
50
  export declare function getNestedValue(obj: any, path?: string, defaultValue?: any): any;
34
51
  export declare function tryRun<T>(func: () => T, callback?: (error: Error) => void): T | undefined;
35
52
  export declare function downloadFile(source: string | Blob, fileName?: string): void;
36
53
  export { defaultOptions, showdown } from './showdown';
54
+ export type { CommonDateFormats, CommonDateTimeFormats, CommonTimeFormats, DateDiffUnit, DateTimeAcceptedFormats, FormatDateOptions, NamedFormats, TimeDeltaOptions, TimeDeltaUnit, } from './date';
55
+ export { d, DateChain, dateDiff, DAY, fmtDate, formatDate, getDatePartsMap, handleTimezone, HOUR, local, MINUTE, MS, SECOND, timeDelta, utc, WEEK, } from './date';
56
+ export * from './fetch';
57
+ export * from './string';
37
58
  export { formatString } from './strings';
38
59
  export { useDebounceFn } from '@vueuse/core';
39
60
  //# sourceMappingURL=index.d.ts.map
@@ -2,7 +2,7 @@ import { IconType, Option, OptionObject } from '../types';
2
2
  export type { OptionObject };
3
3
  export type NormalizedOption<T extends Record<string, any> = Record<string, never>> = T & {
4
4
  label: string;
5
- value: string | number;
5
+ value: string | number | boolean;
6
6
  icon?: IconType;
7
7
  };
8
8
  /**
@@ -10,7 +10,7 @@ export type NormalizedOption<T extends Record<string, any> = Record<string, neve
10
10
  */
11
11
  export declare function getOptionLabel(option: Option): string;
12
12
  /** Extract the primitive value from an option. */
13
- export declare function getOptionValue(option?: Option): string | number | undefined;
13
+ export declare function getOptionValue(option?: Option): string | number | boolean | undefined;
14
14
  /** Extract the icon from an option, if present. */
15
15
  export declare function getOptionIcon(option?: Option): IconType | undefined;
16
16
  /** Normalize any option shape to a {label, value, icon?, ...} object, preserving any extra fields. */
@@ -1,3 +1,9 @@
1
+ /**
2
+ * ⚠️ Security note: `makeHtml()` output is NOT sanitized — raw HTML in the
3
+ * markdown source passes through. If the markdown can contain user-generated
4
+ * content, run the result through `sanitizeHtml()` (from utils) before
5
+ * binding it with v-html.
6
+ */
1
7
  /**
2
8
  * Showdown configuration options
3
9
  */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/vue",
3
3
  "type": "module",
4
- "version": "1.15.13",
4
+ "version": "1.15.26",
5
5
  "description": "Bagel core sdk packages",
6
6
  "author": {
7
7
  "name": "Bagel Studio",
@@ -100,69 +100,73 @@ function toggle() {
100
100
  </template>
101
101
 
102
102
  <style scoped>
103
+
103
104
  .accordion-item {
104
- border-bottom: 1px solid var(--bgl-border-color);
105
- transition: all 0.2s;
106
- overflow: hidden;
105
+ border-bottom: 1px solid var(--bgl-border-color);
106
+ transition: all 0.2s;
107
+ overflow: hidden;
107
108
  }
108
109
 
109
110
  .accordion-item button {
110
- cursor: pointer;
111
+ cursor: pointer;
111
112
  }
112
113
 
113
114
  .accordion-head {
114
- height: var(--bgl-input-height);
115
- background: transparent;
116
- display: flex;
117
- width: 100%;
118
- align-items: center;
119
- justify-content: space-between;
120
- border: none;
121
- color: inherit !important;
115
+ height: var(--bgl-input-height);
116
+ background: transparent;
117
+ display: flex;
118
+ width: 100%;
119
+ align-items: center;
120
+ justify-content: space-between;
121
+ border: none;
122
+ color: inherit !important;
122
123
  }
123
124
 
124
125
  .accordion-icon {
125
- transition: all 0.2s ease;
126
- display: flex;
127
- align-items: center;
128
- flex-shrink: 0;
129
- width: calc(var(--bgl-btn-height) / 1.5);
130
- height: calc(var(--bgl-btn-height) / 1.5);
131
- padding-inline: calc(var(--bgl-btn-padding) / 3);
132
- justify-content: center;
126
+ transition: all 0.2s ease;
127
+ display: flex;
128
+ align-items: center;
129
+ flex-shrink: 0;
130
+ width: calc(var(--bgl-btn-height) / 1.5);
131
+ height: calc(var(--bgl-btn-height) / 1.5);
132
+ padding-inline: calc(var(--bgl-btn-padding) / 3);
133
+ justify-content: center;
133
134
  }
134
135
 
135
136
  [aria-expanded="true"] .accordion-icon {
136
- transform: rotate(180deg);
137
+ transform: rotate(180deg);
137
138
  }
138
139
 
139
140
  .accordion-label {
140
- font-weight: bold;
141
+ font-weight: bold;
141
142
  }
142
143
 
143
144
  .flat.accordion-item {
144
- border-bottom: none
145
+ border-bottom: none
145
146
  }
146
147
 
147
148
  .accordion-head:hover .accordion-label {
148
- text-decoration: underline;
149
+ text-decoration: underline;
149
150
  }
151
+
150
152
  </style>
151
153
 
152
154
  <style>
155
+
153
156
  .expand-enter-active,
154
157
  .expand-leave-active {
155
- transition: all 0.2s;
156
- transition-delay: 0ms;
158
+ transition: all 0.2s;
159
+ transition-delay: 0ms;
157
160
  }
158
161
 
159
162
  .expand-enter-from,
160
163
  .expand-leave-to {
161
- max-height: 0;
164
+ max-height: 0;
162
165
  }
163
166
 
164
167
  .expand-enter-to,
165
168
  .expand-leave-from {
166
- max-height: 300px;
169
+ max-height: 300px;
167
170
  }
171
+
168
172
  </style>
@@ -28,22 +28,24 @@ withDefaults(defineProps<{
28
28
  </template>
29
29
 
30
30
  <style scoped>
31
+
31
32
  .avatar {
32
- background-color: var(--bgl-gray-tint);
33
- border: 0.5px solid var(--bgl-border-color);
34
- flex-shrink: 0;
33
+ background-color: var(--bgl-gray-tint);
34
+ border: 0.5px solid var(--bgl-border-color);
35
+ flex-shrink: 0;
35
36
  }
36
37
 
37
38
  .avatar p {
38
- font-size: 1.5rem;
39
- line-height: 50px;
40
- margin: 0;
41
- font-weight: 200;
39
+ font-size: 1.5rem;
40
+ line-height: 50px;
41
+ margin: 0;
42
+ font-weight: 200;
42
43
  }
43
44
 
44
45
  .avatar img {
45
- width: 100%;
46
- height: 100%;
47
- object-fit: cover;
46
+ width: 100%;
47
+ height: 100%;
48
+ object-fit: cover;
48
49
  }
50
+
49
51
  </style>
@@ -107,22 +107,23 @@ const computedClasses = computed(() => {
107
107
  </template>
108
108
 
109
109
  <style scoped>
110
+
110
111
  .pillLarge{
111
- --bgl-pill-font-size: var(--bgl-font-size);
112
- --bgl-pill-height:auto;
112
+ --bgl-pill-font-size: var(--bgl-font-size);
113
+ --bgl-pill-height:auto;
113
114
  }
114
115
  .pillSmall{
115
- --bgl-pill-font-size: 9px;
116
- --bgl-pill-height:15px;
116
+ --bgl-pill-font-size: 9px;
117
+ --bgl-pill-height:15px;
117
118
  }
118
119
  .pillText{
119
- font-size: var(--bgl-pill-font-size);
120
+ font-size: var(--bgl-pill-font-size);
120
121
  }
121
122
  .bgl_pill-btn{
122
- color: var(--bgl-pill-btn-color);
123
- background: var(--bgl-pill-btn-bg);
124
- width: calc(var(--bgl-pill-height) / 1.25)!important;
125
- height: calc(var(--bgl-pill-height) / 1.25)!important;
123
+ color: var(--bgl-pill-btn-color);
124
+ background: var(--bgl-pill-btn-bg);
125
+ width: calc(var(--bgl-pill-height) / 1.25)!important;
126
+ height: calc(var(--bgl-pill-height) / 1.25)!important;
126
127
  }
127
128
  .loading {
128
129
  border: 1px solid var(--bgl-light-text);
@@ -134,15 +135,15 @@ const computedClasses = computed(() => {
134
135
  margin: auto;
135
136
  }
136
137
  .bgl_flatPill .loading {
137
- border-bottom: 2px solid var(--bgl-text-color);
138
+ border-bottom: 2px solid var(--bgl-text-color);
138
139
  }
139
140
 
140
141
  @keyframes spin {
141
142
  0% {
142
- transform: rotate(0deg);
143
+ transform: rotate(0deg);
143
144
  }
144
145
  100% {
145
- transform: rotate(360deg);
146
+ transform: rotate(360deg);
146
147
  }
147
148
  }
148
149
 
@@ -162,6 +163,7 @@ vertical-align: middle;
162
163
  cursor: not-allowed;
163
164
  }
164
165
  .bgl_pill.round {
165
- border-radius: 1000px;
166
+ border-radius: 1000px;
166
167
  }
168
+
167
169
  </style>
@@ -122,24 +122,26 @@ const videoUrl = computed(() => {
122
122
  </template>
123
123
 
124
124
  <style scoped>
125
+
125
126
  .bgl_vid iframe,
126
127
  .bgl_vid video {
127
- width: 100%;
128
- height: auto;
129
- display: block;
130
- margin: auto;
131
- border-radius: var(--bgl-input-border-radius);
128
+ width: 100%;
129
+ height: auto;
130
+ display: block;
131
+ margin: auto;
132
+ border-radius: var(--bgl-input-border-radius);
132
133
  }
133
134
 
134
135
  .bgl_vid.vid_empty {
135
- padding-top: 56.25%;
136
- background: var(--bgl-input-bg);
137
- border-radius: var(--bgl-input-border-radius);
136
+ padding-top: 56.25%;
137
+ background: var(--bgl-input-bg);
138
+ border-radius: var(--bgl-input-border-radius);
138
139
  }
139
140
 
140
141
  .bgl_vid.vid_short {
141
- max-width: 56.25vh;
142
- /* Limit width for shorts to maintain aspect ratio */
143
- margin: 0 auto;
142
+ max-width: 56.25vh;
143
+ /* Limit width for shorts to maintain aspect ratio */
144
+ margin: 0 auto;
144
145
  }
146
+
145
147
  </style>