@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.
- package/dist/components/AccordionItem.vue.d.ts.map +1 -1
- package/dist/components/Alert.vue.d.ts +8 -4
- package/dist/components/Avatar.vue.d.ts.map +1 -1
- package/dist/components/Badge.vue.d.ts +46 -6
- package/dist/components/Badge.vue.d.ts.map +1 -1
- package/dist/components/BglVideo.vue.d.ts.map +1 -1
- package/dist/components/Btn.vue.d.ts +11 -3
- package/dist/components/Btn.vue.d.ts.map +1 -1
- package/dist/components/Card.vue.d.ts.map +1 -1
- package/dist/components/DataPreview.vue.d.ts.map +1 -1
- package/dist/components/DragOver.vue.d.ts.map +1 -1
- package/dist/components/Dropdown.vue.d.ts.map +1 -1
- package/dist/components/FieldSetVue.vue.d.ts.map +1 -1
- package/dist/components/FilterQuery.vue.d.ts.map +1 -1
- package/dist/components/Image.vue.d.ts.map +1 -1
- package/dist/components/ListItem.vue.d.ts +0 -1
- package/dist/components/ListItem.vue.d.ts.map +1 -1
- package/dist/components/ListView.vue.d.ts.map +1 -1
- package/dist/components/MapEmbed/Index.vue.d.ts.map +1 -1
- package/dist/components/Menu.vue.d.ts.map +1 -1
- package/dist/components/NavBar.vue.d.ts.map +1 -1
- package/dist/components/PageTitle.vue.d.ts.map +1 -1
- package/dist/components/Pagination.vue.d.ts +1 -1
- package/dist/components/RouterWrapper.vue.d.ts.map +1 -1
- package/dist/components/Spreadsheet/Index.vue.d.ts.map +1 -1
- package/dist/components/Spreadsheet/SpreadsheetTable.vue.d.ts +8 -8
- package/dist/components/Spreadsheet/SpreadsheetTable.vue.d.ts.map +1 -1
- package/dist/components/Swiper.vue.d.ts.map +1 -1
- package/dist/components/Toast.vue.d.ts +7 -2
- package/dist/components/Toast.vue.d.ts.map +1 -1
- package/dist/components/analytics/BarChart.vue.d.ts.map +1 -1
- package/dist/components/analytics/LineChart.vue.d.ts.map +1 -1
- package/dist/components/analytics/PieChart.vue.d.ts.map +1 -1
- package/dist/components/calendar/CalendarPopover.vue.d.ts.map +1 -1
- package/dist/components/calendar/Index.vue.d.ts.map +1 -1
- package/dist/components/calendar/views/AgendaView.vue.d.ts.map +1 -1
- package/dist/components/calendar/views/DayView.vue.d.ts.map +1 -1
- package/dist/components/calendar/views/MonthView.vue.d.ts.map +1 -1
- package/dist/components/calendar/views/WeekView.vue.d.ts.map +1 -1
- package/dist/components/dataTable/DataTable.vue.d.ts +11 -2
- package/dist/components/dataTable/DataTable.vue.d.ts.map +1 -1
- package/dist/components/form/index.d.ts +0 -4
- package/dist/components/form/inputs/ArrayInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/CheckInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/Checkbox.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/CodeEditor/Index.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/ColorInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/DateInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/DatePicker.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/EmailInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/JSONInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/MarkdownEditor.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/NumberInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/OTP.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/PasswordInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RadioGroup.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RangeInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/components/EditorToolbar.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/index.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/utils/media.d.ts +1 -10
- package/dist/components/form/inputs/SelectBtn.vue.d.ts +4 -3
- package/dist/components/form/inputs/SelectBtn.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/SelectInput.vue.d.ts +1 -1
- package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/SignaturePad.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/TableField.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/TelInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/TextInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/ToggleInput.vue.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -9
- package/dist/components/layout/AppContent.vue.d.ts.map +1 -1
- package/dist/components/layout/AppLayout.vue.d.ts +33 -4
- package/dist/components/layout/AppLayout.vue.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.vue.d.ts +6 -3
- package/dist/components/layout/AppSidebar.vue.d.ts.map +1 -1
- package/dist/components/layout/BottomMenu.vue.d.ts.map +1 -1
- package/dist/components/layout/Panel.vue.d.ts +1 -1
- package/dist/components/layout/Resizable.vue.d.ts +1 -1
- package/dist/components/layout/Resizable.vue.d.ts.map +1 -1
- package/dist/components/layout/SidebarMenu.vue.d.ts.map +1 -1
- package/dist/components/layout/Skeleton.vue.d.ts.map +1 -1
- package/dist/components/layout/TabbedLayout.vue.d.ts.map +1 -1
- package/dist/components/layout/TabsNav.vue.d.ts +1 -1
- package/dist/components/layout/TabsNav.vue.d.ts.map +1 -1
- package/dist/components/layout/index.d.ts +2 -0
- package/dist/components/lightbox/Lightbox.vue.d.ts.map +1 -1
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/useTheme.d.ts +0 -15
- package/dist/dialog/Dialog.vue.d.ts +4 -2
- package/dist/dialog/Dialog.vue.d.ts.map +1 -1
- package/dist/dialog/DialogConfirm.vue.d.ts +2 -2
- package/dist/form-flow/MultiStepForm.vue.d.ts +16 -2
- package/dist/form-flow/MultiStepForm.vue.d.ts.map +1 -1
- package/dist/form-flow/form-flow.d.ts +11 -0
- package/dist/index.cjs +24 -22
- package/dist/index.d.ts +0 -3
- package/dist/index.mjs +78 -70
- package/dist/style.css +1 -1
- package/dist/types/BagelForm.d.ts +23 -61
- package/dist/types/BtnOptions.d.ts +5 -3
- package/dist/types/TableSchema.d.ts +3 -0
- package/dist/types/index.d.ts +1 -2
- package/dist/utils/calendar/dateUtils.d.ts +2 -3
- package/dist/utils/constants.d.ts +6 -0
- package/dist/utils/index.d.ts +24 -3
- package/dist/utils/options.d.ts +2 -2
- package/dist/utils/showdown.d.ts +6 -0
- package/package.json +1 -1
- package/src/components/AccordionItem.vue +32 -28
- package/src/components/Avatar.vue +12 -10
- package/src/components/Badge.vue +15 -13
- package/src/components/BglVideo.vue +13 -11
- package/src/components/Btn.vue +90 -89
- package/src/components/Card.vue +33 -31
- package/src/components/DataPreview.vue +17 -15
- package/src/components/DragOver.vue +2 -0
- package/src/components/Dropdown.vue +38 -36
- package/src/components/FieldSetVue.vue +7 -5
- package/src/components/FilterQuery.vue +28 -24
- package/src/components/Image.vue +7 -5
- package/src/components/JSONSchema.vue +45 -43
- package/src/components/JsonBuilder.vue +10 -8
- package/src/components/ListItem.vue +41 -39
- package/src/components/ListView.vue +3 -1
- package/src/components/MapEmbed/Index.vue +4 -2
- package/src/components/Menu.vue +17 -13
- package/src/components/NavBar.vue +198 -196
- package/src/components/PageTitle.vue +2 -0
- package/src/components/RouterWrapper.vue +3 -1
- package/src/components/Spreadsheet/Index.vue +8 -6
- package/src/components/Spreadsheet/SpreadsheetTable.vue +100 -98
- package/src/components/Swiper.vue +33 -30
- package/src/components/Toast.vue +2 -0
- package/src/components/analytics/BarChart.vue +10 -8
- package/src/components/analytics/LineChart.vue +27 -23
- package/src/components/analytics/PieChart.vue +32 -28
- package/src/components/calendar/CalendarPopover.vue +19 -17
- package/src/components/calendar/Index.vue +6 -4
- package/src/components/calendar/views/AgendaView.vue +19 -17
- package/src/components/calendar/views/DayView.vue +44 -42
- package/src/components/calendar/views/MonthView.vue +85 -83
- package/src/components/calendar/views/WeekView.vue +55 -53
- package/src/components/dataTable/DataTable.vue +140 -139
- package/src/components/form/inputs/ArrayInput.vue +28 -26
- package/src/components/form/inputs/CheckInput.vue +32 -30
- package/src/components/form/inputs/Checkbox.vue +4 -2
- package/src/components/form/inputs/CodeEditor/Index.vue +49 -45
- package/src/components/form/inputs/ColorInput.vue +37 -35
- package/src/components/form/inputs/DateInput.vue +3 -1
- package/src/components/form/inputs/DatePicker.vue +42 -40
- package/src/components/form/inputs/EmailInput.vue +67 -63
- package/src/components/form/inputs/JSONInput.vue +4 -2
- package/src/components/form/inputs/MarkdownEditor.vue +3 -1
- package/src/components/form/inputs/NumberInput.vue +53 -51
- package/src/components/form/inputs/OTP.vue +45 -43
- package/src/components/form/inputs/PasswordInput.vue +11 -9
- package/src/components/form/inputs/RadioGroup.vue +19 -18
- package/src/components/form/inputs/RangeInput.vue +23 -21
- package/src/components/form/inputs/RichText/components/EditorToolbar.vue +14 -12
- package/src/components/form/inputs/RichText/components/gridBox.vue +10 -8
- package/src/components/form/inputs/RichText/index.vue +218 -212
- package/src/components/form/inputs/SelectBtn.vue +3 -1
- package/src/components/form/inputs/SelectInput.vue +61 -57
- package/src/components/form/inputs/SignaturePad.vue +19 -17
- package/src/components/form/inputs/TableField.vue +71 -67
- package/src/components/form/inputs/TelInput.vue +84 -82
- package/src/components/form/inputs/TextInput.vue +38 -34
- package/src/components/form/inputs/ToggleInput.vue +31 -29
- package/src/components/layout/AppContent.vue +21 -17
- package/src/components/layout/AppLayout.vue +25 -23
- package/src/components/layout/AppSidebar.vue +71 -72
- package/src/components/layout/BottomMenu.vue +7 -3
- package/src/components/layout/Resizable.vue +8 -6
- package/src/components/layout/SidebarMenu.vue +16 -12
- package/src/components/layout/Skeleton.vue +17 -15
- package/src/components/layout/TabbedLayout.vue +6 -5
- package/src/components/layout/TabsNav.vue +112 -108
- package/src/components/lightbox/Lightbox.vue +147 -145
- package/src/dialog/Dialog.vue +142 -140
- package/src/form-flow/MultiStepForm.vue +88 -86
- package/src/styles/appearance.css +115 -115
- package/src/styles/bagel.css +30 -31
- package/src/styles/layout.css +977 -971
- package/src/styles/mobilLayout.css +754 -754
- package/src/styles/text.css +630 -630
- package/vite.config.ts +1 -1
- package/dist/components/Carousel.vue.d.ts +0 -140
- package/dist/components/Carousel.vue.d.ts.map +0 -1
- package/dist/components/ImportData.vue.d.ts +0 -21
- package/dist/components/ImportData.vue.d.ts.map +0 -1
- package/dist/components/Modal.vue.d.ts +0 -48
- package/dist/components/Modal.vue.d.ts.map +0 -1
- package/dist/components/ModalConfirm.vue.d.ts +0 -17
- package/dist/components/ModalConfirm.vue.d.ts.map +0 -1
- package/dist/components/ModalForm.vue.d.ts +0 -29
- package/dist/components/ModalForm.vue.d.ts.map +0 -1
- package/dist/components/Pill.vue.d.ts +0 -47
- package/dist/components/Pill.vue.d.ts.map +0 -1
- package/dist/components/Slider.vue.d.ts +0 -96
- package/dist/components/Slider.vue.d.ts.map +0 -1
- package/dist/components/Title.vue.d.ts +0 -48
- package/dist/components/Title.vue.d.ts.map +0 -1
- package/dist/components/ToolBar.vue.d.ts +0 -3
- package/dist/components/ToolBar.vue.d.ts.map +0 -1
- package/dist/components/form/BagelForm.vue.d.ts +0 -43
- package/dist/components/form/BagelForm.vue.d.ts.map +0 -1
- package/dist/components/form/BglMultiStepForm.vue.d.ts +0 -68
- package/dist/components/form/BglMultiStepForm.vue.d.ts.map +0 -1
- package/dist/components/form/FieldArray.vue.d.ts +0 -48
- package/dist/components/form/FieldArray.vue.d.ts.map +0 -1
- package/dist/components/form/useBagelFormState.d.ts +0 -11
- package/dist/components/form/useBagelFormState.d.ts.map +0 -1
- package/dist/composables/useFormField.d.ts +0 -11
- package/dist/composables/useFormField.d.ts.map +0 -1
- package/dist/plugins/modalTypes.d.ts +0 -62
- package/dist/plugins/modalTypes.d.ts.map +0 -1
- package/dist/plugins/useModal.d.ts +0 -21
- package/dist/plugins/useModal.d.ts.map +0 -1
- package/dist/utils/BagelFormUtils.d.ts +0 -183
- package/dist/utils/BagelFormUtils.d.ts.map +0 -1
|
@@ -1,14 +1,24 @@
|
|
|
1
|
-
import { Paths, Get,
|
|
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
|
|
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
|
|
28
|
-
|
|
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 |
|
|
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'?:
|
|
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'?:
|
|
94
|
-
'v-if'?:
|
|
95
|
-
'transform'?:
|
|
96
|
-
'onUpdate'?:
|
|
97
|
-
'validate'?:
|
|
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
|
|
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 = '
|
|
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 {
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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
|
-
|
|
2
|
-
export {
|
|
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[];
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -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 |
|
|
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
|
package/dist/utils/options.d.ts
CHANGED
|
@@ -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. */
|
package/dist/utils/showdown.d.ts
CHANGED
|
@@ -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
|
@@ -100,69 +100,73 @@ function toggle() {
|
|
|
100
100
|
</template>
|
|
101
101
|
|
|
102
102
|
<style scoped>
|
|
103
|
+
|
|
103
104
|
.accordion-item {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
111
|
+
cursor: pointer;
|
|
111
112
|
}
|
|
112
113
|
|
|
113
114
|
.accordion-head {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
-
|
|
137
|
+
transform: rotate(180deg);
|
|
137
138
|
}
|
|
138
139
|
|
|
139
140
|
.accordion-label {
|
|
140
|
-
|
|
141
|
+
font-weight: bold;
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
.flat.accordion-item {
|
|
144
|
-
|
|
145
|
+
border-bottom: none
|
|
145
146
|
}
|
|
146
147
|
|
|
147
148
|
.accordion-head:hover .accordion-label {
|
|
148
|
-
|
|
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
|
-
|
|
156
|
-
|
|
158
|
+
transition: all 0.2s;
|
|
159
|
+
transition-delay: 0ms;
|
|
157
160
|
}
|
|
158
161
|
|
|
159
162
|
.expand-enter-from,
|
|
160
163
|
.expand-leave-to {
|
|
161
|
-
|
|
164
|
+
max-height: 0;
|
|
162
165
|
}
|
|
163
166
|
|
|
164
167
|
.expand-enter-to,
|
|
165
168
|
.expand-leave-from {
|
|
166
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
width: 100%;
|
|
47
|
+
height: 100%;
|
|
48
|
+
object-fit: cover;
|
|
48
49
|
}
|
|
50
|
+
|
|
49
51
|
</style>
|
package/src/components/Badge.vue
CHANGED
|
@@ -107,22 +107,23 @@ const computedClasses = computed(() => {
|
|
|
107
107
|
</template>
|
|
108
108
|
|
|
109
109
|
<style scoped>
|
|
110
|
+
|
|
110
111
|
.pillLarge{
|
|
111
|
-
|
|
112
|
-
|
|
112
|
+
--bgl-pill-font-size: var(--bgl-font-size);
|
|
113
|
+
--bgl-pill-height:auto;
|
|
113
114
|
}
|
|
114
115
|
.pillSmall{
|
|
115
|
-
|
|
116
|
-
|
|
116
|
+
--bgl-pill-font-size: 9px;
|
|
117
|
+
--bgl-pill-height:15px;
|
|
117
118
|
}
|
|
118
119
|
.pillText{
|
|
119
|
-
|
|
120
|
+
font-size: var(--bgl-pill-font-size);
|
|
120
121
|
}
|
|
121
122
|
.bgl_pill-btn{
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
138
|
+
border-bottom: 2px solid var(--bgl-text-color);
|
|
138
139
|
}
|
|
139
140
|
|
|
140
141
|
@keyframes spin {
|
|
141
142
|
0% {
|
|
142
|
-
|
|
143
|
+
transform: rotate(0deg);
|
|
143
144
|
}
|
|
144
145
|
100% {
|
|
145
|
-
|
|
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
|
-
|
|
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
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
max-width: 56.25vh;
|
|
143
|
+
/* Limit width for shorts to maintain aspect ratio */
|
|
144
|
+
margin: 0 auto;
|
|
144
145
|
}
|
|
146
|
+
|
|
145
147
|
</style>
|