@bagelink/vue 1.4.79 → 1.4.81
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/Btn.vue.d.ts +6 -1
- package/dist/components/Btn.vue.d.ts.map +1 -1
- package/dist/components/Modal.vue.d.ts.map +1 -1
- package/dist/components/ModalForm.vue.d.ts +3 -1
- package/dist/components/ModalForm.vue.d.ts.map +1 -1
- package/dist/components/Slider.vue.d.ts +4 -4
- package/dist/components/Slider.vue.d.ts.map +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/style.css +1 -1
- package/dist/utils/elementUtils.d.ts +104 -0
- package/dist/utils/elementUtils.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/components/Btn.vue +137 -101
- package/src/components/Modal.vue +11 -29
- package/src/components/ModalForm.vue +8 -24
- package/src/components/Slider.vue +2 -2
- package/src/index.ts +1 -0
- package/src/styles/theme.css +487 -279
- package/src/utils/elementUtils.ts +544 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { BaseBagelField, IconType, Option, Path } from '..';
|
|
2
|
+
export type DefaultPathsOptions = Record<string, any>;
|
|
3
|
+
export type PathsOptions = Record<string, any>;
|
|
4
|
+
export interface BaseElementField<T, P extends Path<T, PO>, PO extends PathsOptions = DefaultPathsOptions> extends Partial<BaseBagelField<T, P, PO>> {
|
|
5
|
+
$el: string;
|
|
6
|
+
id?: P;
|
|
7
|
+
class?: string;
|
|
8
|
+
vIf?: boolean | (() => boolean);
|
|
9
|
+
style?: Record<string, any>;
|
|
10
|
+
attrs?: Record<string, any>;
|
|
11
|
+
onClick?: () => void;
|
|
12
|
+
children?: BaseElementField<T, any>[];
|
|
13
|
+
}
|
|
14
|
+
export interface BtnElementOptions<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions> extends Partial<BaseElementField<T, P, PO>> {
|
|
15
|
+
text?: string;
|
|
16
|
+
variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';
|
|
17
|
+
size?: 'sm' | 'md' | 'lg';
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
loading?: boolean;
|
|
20
|
+
icon?: IconType;
|
|
21
|
+
iconPosition?: 'left' | 'right';
|
|
22
|
+
href?: string;
|
|
23
|
+
target?: '_blank' | '_self' | '_parent' | '_top';
|
|
24
|
+
}
|
|
25
|
+
export interface TxtElementOptions<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions> extends Partial<BaseElementField<T, P, PO>> {
|
|
26
|
+
text?: string;
|
|
27
|
+
tag?: 'p' | 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'div';
|
|
28
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
29
|
+
weight?: 'light' | 'normal' | 'medium' | 'semibold' | 'bold';
|
|
30
|
+
color?: string;
|
|
31
|
+
align?: 'left' | 'center' | 'right' | 'justify';
|
|
32
|
+
}
|
|
33
|
+
export interface ImgElementOptions<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions> extends Partial<BaseElementField<T, P, PO>> {
|
|
34
|
+
src?: string;
|
|
35
|
+
alt?: string;
|
|
36
|
+
width?: number | string;
|
|
37
|
+
height?: number | string;
|
|
38
|
+
loading?: 'lazy' | 'eager';
|
|
39
|
+
fit?: 'cover' | 'contain' | 'fill' | 'scale-down' | 'none';
|
|
40
|
+
rounded?: boolean | 'sm' | 'md' | 'lg' | 'full';
|
|
41
|
+
fallback?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface DropdownElementOptions<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions> extends Partial<BaseElementField<T, P, PO>> {
|
|
44
|
+
options?: Option[] | (() => Option[]);
|
|
45
|
+
placeholder?: string;
|
|
46
|
+
searchable?: boolean;
|
|
47
|
+
multiselect?: boolean;
|
|
48
|
+
clearable?: boolean;
|
|
49
|
+
onSelect?: (value: any) => void;
|
|
50
|
+
onSearch?: (search: string) => any;
|
|
51
|
+
}
|
|
52
|
+
export interface ListItemElementOptions<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions> extends Partial<BaseElementField<T, P, PO>> {
|
|
53
|
+
title?: string;
|
|
54
|
+
subtitle?: string;
|
|
55
|
+
icon?: IconType;
|
|
56
|
+
avatar?: string;
|
|
57
|
+
badge?: string | number;
|
|
58
|
+
actions?: Array<{
|
|
59
|
+
label: string;
|
|
60
|
+
onClick: () => void;
|
|
61
|
+
icon?: IconType;
|
|
62
|
+
}>;
|
|
63
|
+
clickable?: boolean;
|
|
64
|
+
divider?: boolean;
|
|
65
|
+
}
|
|
66
|
+
export declare function btn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(options: BtnElementOptions<T, P, PO>): BaseElementField<T, P, PO>;
|
|
67
|
+
export declare function btn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P): BaseElementField<T, P, PO>;
|
|
68
|
+
export declare function btn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, text: string): BaseElementField<T, P, PO>;
|
|
69
|
+
export declare function btn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, icon: IconType): BaseElementField<T, P, PO>;
|
|
70
|
+
export declare function btn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, text: string, options: BtnElementOptions<T, P, PO>): BaseElementField<T, P, PO>;
|
|
71
|
+
export declare function btn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, icon: IconType, options: BtnElementOptions<T, P, PO>): BaseElementField<T, P, PO>;
|
|
72
|
+
export declare function btn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, textOrIcon: string | IconType, options: BtnElementOptions<T, P, PO>): BaseElementField<T, P, PO>;
|
|
73
|
+
export declare function getBaseElementField<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(elementType: string, id?: P, options?: Partial<BaseElementField<T, P, PO>>): BaseElementField<T, P, PO>;
|
|
74
|
+
export declare function iconBtn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id?: P, icon?: IconType, options?: BtnElementOptions<T, P, PO>): BaseElementField<T, P, PO>;
|
|
75
|
+
export declare function txt<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(options: TxtElementOptions<T, P, PO>): BaseElementField<T, P, PO>;
|
|
76
|
+
export declare function txt<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P): BaseElementField<T, P, PO>;
|
|
77
|
+
export declare function txt<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, text: string): BaseElementField<T, P, PO>;
|
|
78
|
+
export declare function txt<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, text: string, tag: 'p' | 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'div'): BaseElementField<T, P, PO>;
|
|
79
|
+
export declare function txt<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, text: string, options: TxtElementOptions<T, P, PO>): BaseElementField<T, P, PO>;
|
|
80
|
+
export declare function img<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(options: ImgElementOptions<T, P, PO>): BaseElementField<T, P, PO>;
|
|
81
|
+
export declare function img<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P): BaseElementField<T, P, PO>;
|
|
82
|
+
export declare function img<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, src: string): BaseElementField<T, P, PO>;
|
|
83
|
+
export declare function img<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, src: string, alt: string): BaseElementField<T, P, PO>;
|
|
84
|
+
export declare function img<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, src: string, options: ImgElementOptions<T, P, PO>): BaseElementField<T, P, PO>;
|
|
85
|
+
export declare function dropdownElement<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id?: P, options?: Option[] | (() => Option[]), config?: DropdownElementOptions<T, P, PO>): BaseElementField<T, P, PO>;
|
|
86
|
+
export declare function listItemElement<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id?: P, title?: string, options?: ListItemElementOptions<T, P, PO>): BaseElementField<T, P, PO>;
|
|
87
|
+
export declare function containerElement<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id?: P, children?: BaseElementField<T, any>[], options?: Partial<BaseElementField<T, P, PO>>): BaseElementField<T, P, PO>;
|
|
88
|
+
export declare function findElementById<T>(id: string, elements: BaseElementField<T, any>[]): BaseElementField<T, any> | undefined;
|
|
89
|
+
export declare function column<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id?: P, labelOrOptions?: string | Partial<BaseElementField<T, P, PO>>, options?: Partial<BaseElementField<T, P, PO>>): BaseElementField<T, P, PO>;
|
|
90
|
+
export declare const col: typeof column;
|
|
91
|
+
export declare function useElements(): {
|
|
92
|
+
btn: typeof btn;
|
|
93
|
+
iconBtn: typeof iconBtn;
|
|
94
|
+
txt: typeof txt;
|
|
95
|
+
img: typeof img;
|
|
96
|
+
dropdownElement: typeof dropdownElement;
|
|
97
|
+
listItemElement: typeof listItemElement;
|
|
98
|
+
containerElement: typeof containerElement;
|
|
99
|
+
findElementById: typeof findElementById;
|
|
100
|
+
getBaseElementField: typeof getBaseElementField;
|
|
101
|
+
col: typeof column;
|
|
102
|
+
column: typeof column;
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=elementUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elementUtils.d.ts","sourceRoot":"","sources":["../../src/utils/elementUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/components/Btn.vue
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { IconType, ThemeType } from '@bagelink/vue'
|
|
3
3
|
import type { SetupContext } from 'vue'
|
|
4
|
-
import { Icon, Loading } from '@bagelink/vue'
|
|
4
|
+
import { Icon, Loading, useModal } from '@bagelink/vue'
|
|
5
5
|
import { useSlots, ref, onMounted, onUnmounted } from 'vue'
|
|
6
6
|
import { RouterLink } from 'vue-router'
|
|
7
7
|
|
|
@@ -28,6 +28,7 @@ const props = withDefaults(
|
|
|
28
28
|
is?: string
|
|
29
29
|
ripple?: boolean
|
|
30
30
|
onClick?: (e: MouseEvent) => void
|
|
31
|
+
confirm?: boolean | string
|
|
31
32
|
}>(),
|
|
32
33
|
{
|
|
33
34
|
onClick: () => '',
|
|
@@ -43,9 +44,15 @@ const props = withDefaults(
|
|
|
43
44
|
},
|
|
44
45
|
)
|
|
45
46
|
|
|
47
|
+
const emit = defineEmits<{
|
|
48
|
+
confirmed: [event: MouseEvent]
|
|
49
|
+
}>()
|
|
50
|
+
|
|
51
|
+
const { confirmModal } = useModal()
|
|
52
|
+
|
|
46
53
|
const isMobileScreen = ref(false)
|
|
47
54
|
|
|
48
|
-
|
|
55
|
+
function checkMobile() {
|
|
49
56
|
isMobileScreen.value = window.innerWidth <= 910
|
|
50
57
|
}
|
|
51
58
|
|
|
@@ -58,6 +65,23 @@ onUnmounted(() => {
|
|
|
58
65
|
window.removeEventListener('resize', checkMobile)
|
|
59
66
|
})
|
|
60
67
|
|
|
68
|
+
async function handleClick(event: MouseEvent) {
|
|
69
|
+
if (props.confirm) {
|
|
70
|
+
const message = typeof props.confirm === 'string' ? props.confirm : 'Are you sure?'
|
|
71
|
+
const confirmed = await confirmModal({
|
|
72
|
+
title: 'Confirm',
|
|
73
|
+
message
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
if (!confirmed) return
|
|
77
|
+
|
|
78
|
+
props.onClick(event)
|
|
79
|
+
emit('confirmed', event)
|
|
80
|
+
} else {
|
|
81
|
+
props.onClick(event)
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
61
85
|
const iconSizeComputed = $computed(() => {
|
|
62
86
|
if (props.iconSize !== undefined) return props.iconSize
|
|
63
87
|
return isMobileScreen.value ? 1 : 1.2
|
|
@@ -86,196 +110,208 @@ const slots: SetupContext['slots'] = useSlots()
|
|
|
86
110
|
</script>
|
|
87
111
|
|
|
88
112
|
<template>
|
|
89
|
-
<component
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
<
|
|
101
|
-
<
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
113
|
+
<component
|
|
114
|
+
:is="isComponent" v-ripple="ripple" v-bind="bind" :disabled="disabled" class="bgl_btn" :class="{
|
|
115
|
+
'bgl_btn-icon': icon && !slots.default && !value,
|
|
116
|
+
thin,
|
|
117
|
+
round,
|
|
118
|
+
'bgl_btn_flat': flat,
|
|
119
|
+
'bgl_btn-border': border || outline,
|
|
120
|
+
[`bgl_btn-${color}`]: color,
|
|
121
|
+
[`bgl_btn-${theme}`]: theme,
|
|
122
|
+
}" :tabindex="disabled ? -1 : 0" @click.stop="handleClick" @keydown.enter="handleClick" @keydown.space="handleClick"
|
|
123
|
+
>
|
|
124
|
+
<Loading v-if="loading" class="h-100p" size="15" />
|
|
125
|
+
<div v-else class="bgl_btn-flex">
|
|
126
|
+
<Icon
|
|
127
|
+
v-if="icon" :icon="icon" class="transition-400" :size="iconSizeComputed"
|
|
128
|
+
:mobile-size="iconMobileSize"
|
|
129
|
+
/>
|
|
130
|
+
<slot />
|
|
131
|
+
<template v-if="!slots.default && value">
|
|
132
|
+
{{ value }}
|
|
133
|
+
</template>
|
|
134
|
+
<Icon
|
|
135
|
+
v-if="iconEnd" :icon="iconEnd" class="transition-400" :size="iconSizeComputed"
|
|
136
|
+
:mobile-size="iconMobileSize"
|
|
137
|
+
/>
|
|
138
|
+
</div>
|
|
139
|
+
</component>
|
|
108
140
|
</template>
|
|
109
141
|
|
|
110
142
|
<style scoped>
|
|
111
143
|
.bgl_btn {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
144
|
+
--btn-bg: var(--bgl-primary);
|
|
145
|
+
--btn-color: var(--bgl-light-text);
|
|
146
|
+
--btn-flat-color: var(--bgl-text-color);
|
|
115
147
|
}
|
|
116
148
|
|
|
117
149
|
.bgl_btn-green {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
150
|
+
--btn-bg: var(--bgl-green);
|
|
151
|
+
--btn-color: var(--bgl-light-text);
|
|
152
|
+
--btn-flat-color: var(--bgl-green);
|
|
121
153
|
}
|
|
122
154
|
|
|
123
155
|
.bgl_btn-yellow {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
156
|
+
--btn-bg: var(--bgl-yellow);
|
|
157
|
+
--btn-color: var(--bgl-black);
|
|
158
|
+
--btn-flat-color: var(--bgl-yellow);
|
|
127
159
|
}
|
|
128
160
|
|
|
129
161
|
.bgl_btn-blue {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
162
|
+
--btn-bg: var(--bgl-blue);
|
|
163
|
+
--btn-color: var(--bgl-light-text);
|
|
164
|
+
--btn-flat-color: var(--bgl-blue);
|
|
133
165
|
}
|
|
134
166
|
|
|
135
167
|
.bgl_btn-primary {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
168
|
+
--btn-bg: var(--bgl-primary);
|
|
169
|
+
--btn-color: var(--bgl-light-text);
|
|
170
|
+
--btn-flat-color: var(--bgl-primary);
|
|
139
171
|
}
|
|
140
172
|
|
|
141
173
|
.bgl_btn-red {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
174
|
+
--btn-bg: var(--bgl-red);
|
|
175
|
+
--btn-color: var(--bgl-light-text);
|
|
176
|
+
--btn-flat-color: var(--bgl-red);
|
|
145
177
|
}
|
|
146
178
|
|
|
147
179
|
.bgl_btn-white {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
180
|
+
--btn-bg: var(--bgl-white);
|
|
181
|
+
--btn-color: var(--bgl-black);
|
|
182
|
+
--btn-flat-color: var(--bgl-white);
|
|
151
183
|
}
|
|
152
184
|
|
|
153
185
|
.bgl_btn-black {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
186
|
+
--btn-bg: var(--bgl-black);
|
|
187
|
+
--btn-color: var(--bgl-light-text);
|
|
188
|
+
--btn-flat-color: var(--bgl-black);
|
|
157
189
|
}
|
|
158
190
|
|
|
159
191
|
.bgl_btn-gray {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
192
|
+
--btn-bg: var(--bgl-gray-light);
|
|
193
|
+
--btn-color: var(--bgl-black);
|
|
194
|
+
--btn-flat-color: var(--bgl-gray);
|
|
163
195
|
}
|
|
164
196
|
|
|
165
197
|
.bgl_btn-light {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
198
|
+
--btn-bg: var(--bgl-primary-light);
|
|
199
|
+
--btn-color: var(--bgl-primary);
|
|
200
|
+
--btn-flat-color: var(--bgl-primary-light);
|
|
169
201
|
}
|
|
170
202
|
|
|
171
203
|
.bgl_btn-gray-light {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
204
|
+
--btn-bg: var(--bgl-gray-light);
|
|
205
|
+
--btn-color: var(--bgl-gray);
|
|
206
|
+
--btn-flat-color: var(--bgl-gray-light);
|
|
175
207
|
}
|
|
176
208
|
|
|
177
209
|
.bgl_btn {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
210
|
+
padding-left: var(--btn-padding);
|
|
211
|
+
padding-right: var(--btn-padding);
|
|
212
|
+
transition: var(--bgl-transition);
|
|
213
|
+
background: var(--btn-bg);
|
|
214
|
+
color: var(--btn-color);
|
|
215
|
+
text-decoration: none;
|
|
184
216
|
}
|
|
185
217
|
|
|
186
218
|
.bgl_btn.bgl_btn-icon {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
219
|
+
padding-left: 0;
|
|
220
|
+
padding-right: 0;
|
|
221
|
+
height: var(--btn-height);
|
|
222
|
+
width: var(--btn-height);
|
|
223
|
+
border-radius: 100%;
|
|
224
|
+
font-size: 1rem;
|
|
225
|
+
flex-shrink: 0;
|
|
194
226
|
}
|
|
195
227
|
|
|
196
228
|
a {
|
|
197
|
-
|
|
229
|
+
text-decoration: none;
|
|
198
230
|
}
|
|
199
231
|
|
|
200
232
|
.bgl_btn-flex {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
233
|
+
display: flex;
|
|
234
|
+
align-items: center;
|
|
235
|
+
gap: 0.5rem;
|
|
236
|
+
justify-content: center;
|
|
237
|
+
height: 100%;
|
|
206
238
|
}
|
|
207
239
|
|
|
208
|
-
.bgl_btn .bgl_btn-icon{
|
|
209
|
-
|
|
240
|
+
.bgl_btn .bgl_btn-icon {
|
|
241
|
+
font-size: calc(var(--input-font-size) * 1.3);
|
|
210
242
|
}
|
|
211
243
|
|
|
212
244
|
.bgl_btn:hover,
|
|
213
245
|
.bgl_btn-icon:hover {
|
|
214
|
-
|
|
246
|
+
filter: var(--bgl-hover-filter);
|
|
215
247
|
}
|
|
216
248
|
|
|
217
249
|
.bgl_btn:active:not(:disabled),
|
|
218
250
|
.bgl_btn-icon:active:not(:disabled) {
|
|
219
|
-
|
|
251
|
+
filter: var(--bgl-active-filter);
|
|
220
252
|
}
|
|
221
253
|
|
|
222
254
|
.bgl_btn.bgl_btn_flat {
|
|
223
|
-
|
|
224
|
-
|
|
255
|
+
background: transparent;
|
|
256
|
+
color: var(--btn-flat-color);
|
|
225
257
|
}
|
|
226
258
|
|
|
227
259
|
.bgl_btn_flat:hover:not(:disabled),
|
|
228
260
|
.bgl_btn-icon.bgl_btn_flat:hover:not(:disabled) {
|
|
229
|
-
|
|
261
|
+
background: var(--bgl-gray-20);
|
|
230
262
|
}
|
|
231
263
|
|
|
232
264
|
.bgl_btn.bgl_btn_flat:active:not(:disabled),
|
|
233
265
|
.bgl_btn-icon.bgl_btn_flat:active:not(:disabled) {
|
|
234
|
-
|
|
266
|
+
background: var(--bgl-gray-40);
|
|
235
267
|
}
|
|
236
268
|
|
|
237
269
|
.bgl_btn.thin {
|
|
238
|
-
|
|
239
|
-
|
|
270
|
+
padding-inline: calc(var(--btn-padding) / 3);
|
|
271
|
+
border-radius: calc(var(--btn-border-radius) / 1.5);
|
|
240
272
|
}
|
|
241
273
|
|
|
242
274
|
.bgl_btn.round {
|
|
243
|
-
|
|
275
|
+
border-radius: 1000px;
|
|
244
276
|
}
|
|
245
277
|
|
|
246
278
|
.bgl_btn-icon.thin {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
279
|
+
height: calc(var(--btn-height) / 1.5);
|
|
280
|
+
width: calc(var(--btn-height) / 1.5);
|
|
281
|
+
line-height: normal;
|
|
250
282
|
}
|
|
283
|
+
|
|
251
284
|
.bgl_btn-icon.thin .bgl_btn-flex {
|
|
252
285
|
height: 100%;
|
|
253
286
|
}
|
|
254
287
|
|
|
255
|
-
[dir="rtl"] .bgl_btn-icon{
|
|
256
|
-
|
|
288
|
+
[dir="rtl"] .bgl_btn-icon {
|
|
289
|
+
transform: rotateY(180deg);
|
|
257
290
|
}
|
|
258
|
-
|
|
259
|
-
|
|
291
|
+
|
|
292
|
+
[dir="rtl"] .ltr .bgl_btn-icon {
|
|
293
|
+
transform: rotateY(0deg);
|
|
260
294
|
}
|
|
261
295
|
|
|
262
|
-
.bgl_btn-border,
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
296
|
+
.bgl_btn-border,
|
|
297
|
+
.bgl_btn-icon.bgl_btn_flat.bgl_btn-border {
|
|
298
|
+
border: 1px solid var(--btn-flat-color);
|
|
299
|
+
background: transparent;
|
|
300
|
+
color: var(--btn-flat-color);
|
|
266
301
|
}
|
|
267
302
|
|
|
268
303
|
.bgl_btn-border:hover {
|
|
269
|
-
|
|
304
|
+
color: var(--btn-flat-color);
|
|
270
305
|
}
|
|
271
306
|
|
|
272
307
|
.bgl_btn-border:active:not(:disabled) {
|
|
273
|
-
|
|
308
|
+
filter: brightness(80%);
|
|
274
309
|
}
|
|
275
310
|
|
|
276
|
-
.bgl_btn:disabled,
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
311
|
+
.bgl_btn:disabled,
|
|
312
|
+
.bgl_btn[disabled=true] {
|
|
313
|
+
opacity: 0.7;
|
|
314
|
+
filter: grayscale(0.3);
|
|
315
|
+
cursor: not-allowed;
|
|
280
316
|
}
|
|
281
317
|
</style>
|
package/src/components/Modal.vue
CHANGED
|
@@ -78,22 +78,14 @@ onUnmounted(() => {
|
|
|
78
78
|
|
|
79
79
|
<template>
|
|
80
80
|
<div
|
|
81
|
-
class="bg-dark"
|
|
82
|
-
|
|
83
|
-
:class="{ 'is-side': side, 'is-active': isVisible, 'bg-lignt': false }"
|
|
84
|
-
@click="() => (dismissable ? closeModal() : '')"
|
|
85
|
-
@keydown.esc="closeModal"
|
|
81
|
+
class="bg-dark" :style="{ zIndex }" :class="{ 'is-side': side, 'is-active': isVisible, 'bg-lignt': false }"
|
|
82
|
+
@click="() => (dismissable ? closeModal() : '')" @keydown.esc="closeModal"
|
|
86
83
|
>
|
|
87
84
|
<Card class="modal" :style="{ ...maxWidth }" :thin="thin" @click.stop>
|
|
88
85
|
<header v-if="slots.toolbar || title" class="tool-bar">
|
|
89
86
|
<slot name="toolbar" />
|
|
90
87
|
<Btn
|
|
91
|
-
v-if="dismissable"
|
|
92
|
-
:style="{ float: side ? 'left' : 'right' }"
|
|
93
|
-
flat
|
|
94
|
-
icon="close"
|
|
95
|
-
thin
|
|
96
|
-
icon-mobile-size="1.4"
|
|
88
|
+
v-if="dismissable" :style="{ float: side ? '' : '' }" flat icon="close" thin icon-mobile-size="1.4"
|
|
97
89
|
@click="closeModal"
|
|
98
90
|
/>
|
|
99
91
|
<Title v-if="title" class="modal-title" tag="h3" :label="title" />
|
|
@@ -101,25 +93,13 @@ onUnmounted(() => {
|
|
|
101
93
|
|
|
102
94
|
<div v-else class="sticky z-index-999 -mt-1 -ms-1 px-025 h-30px pt-025 modal-no-title">
|
|
103
95
|
<Btn
|
|
104
|
-
v-if="dismissable"
|
|
105
|
-
|
|
106
|
-
icon="close"
|
|
107
|
-
thin
|
|
108
|
-
round
|
|
109
|
-
color="white"
|
|
110
|
-
icon-mobile-size="1.4"
|
|
111
|
-
@click="closeModal"
|
|
96
|
+
v-if="dismissable" class="position-start" icon="close" thin round color="white"
|
|
97
|
+
icon-mobile-size="1.4" @click="closeModal"
|
|
112
98
|
/>
|
|
113
99
|
</div>
|
|
114
100
|
<slot />
|
|
115
101
|
<footer v-if="slots.footer || actions?.length" class="modal-footer mt-1">
|
|
116
|
-
<Btn
|
|
117
|
-
v-for="(action, i) in actions"
|
|
118
|
-
:key="i"
|
|
119
|
-
color="gray"
|
|
120
|
-
v-bind="action"
|
|
121
|
-
@click="closeModal"
|
|
122
|
-
/>
|
|
102
|
+
<Btn v-for="(action, i) in actions" :key="i" color="gray" v-bind="action" @click="closeModal" />
|
|
123
103
|
<slot name="footer" />
|
|
124
104
|
</footer>
|
|
125
105
|
</Card>
|
|
@@ -127,11 +107,12 @@ onUnmounted(() => {
|
|
|
127
107
|
</template>
|
|
128
108
|
|
|
129
109
|
<style>
|
|
130
|
-
.modal{
|
|
110
|
+
.modal {
|
|
131
111
|
color: var(--bgl-popup-text);
|
|
132
112
|
/* display: flex;
|
|
133
113
|
flex-direction: column; */
|
|
134
114
|
}
|
|
115
|
+
|
|
135
116
|
.modal-title {
|
|
136
117
|
text-align: center;
|
|
137
118
|
font-weight: 600;
|
|
@@ -156,13 +137,14 @@ onUnmounted(() => {
|
|
|
156
137
|
align-items: center;
|
|
157
138
|
}
|
|
158
139
|
|
|
159
|
-
.modal-footer
|
|
140
|
+
.modal-footer>div {
|
|
160
141
|
gap: 1rem;
|
|
161
142
|
display: flex;
|
|
162
143
|
justify-content: space-between;
|
|
163
144
|
align-items: center;
|
|
164
145
|
}
|
|
165
|
-
|
|
146
|
+
|
|
147
|
+
.modal-no-title {
|
|
166
148
|
width: calc(100% + 2rem);
|
|
167
149
|
border-radius: var(--card-border-radius);
|
|
168
150
|
|
|
@@ -55,43 +55,27 @@ defineExpose({ setFormValues })
|
|
|
55
55
|
|
|
56
56
|
<template>
|
|
57
57
|
<Modal
|
|
58
|
-
ref="modal"
|
|
59
|
-
:side
|
|
60
|
-
:width
|
|
61
|
-
:visible="visible"
|
|
62
|
-
:dismissable
|
|
63
|
-
:title
|
|
58
|
+
ref="modal" :side :width :visible="visible" :dismissable :title
|
|
64
59
|
@update:visible="($event: boolean) => emit('update:visible', $event)"
|
|
65
60
|
>
|
|
61
|
+
<template #toolbar>
|
|
62
|
+
<slot name="toolbar" />
|
|
63
|
+
</template>
|
|
66
64
|
<BagelForm
|
|
67
|
-
v-if="visible"
|
|
68
|
-
|
|
69
|
-
v-model="formData"
|
|
70
|
-
:schema="schema"
|
|
71
|
-
@update:modelValue="emit('update:modelValue', $event)"
|
|
72
|
-
@submit="runSubmit"
|
|
65
|
+
v-if="visible" ref="form" v-model="formData" :schema="schema"
|
|
66
|
+
@update:modelValue="emit('update:modelValue', $event)" @submit="runSubmit"
|
|
73
67
|
/>
|
|
74
68
|
<template v-if="onDelete || onSubmit" #footer>
|
|
75
69
|
<div class="flex gap-0">
|
|
76
70
|
<Btn thin flat :value="cancelText || 'Cancel'" @click="closeModal" />
|
|
77
71
|
<Btn
|
|
78
|
-
v-if="onDelete"
|
|
79
|
-
thin
|
|
80
|
-
icon="delete"
|
|
81
|
-
flat
|
|
82
|
-
:value="deleteText || 'Delete'"
|
|
83
|
-
color="red"
|
|
72
|
+
v-if="onDelete" thin icon="delete" flat :value="deleteText || 'Delete'" color="red"
|
|
84
73
|
@click="runDelete"
|
|
85
74
|
/>
|
|
86
75
|
</div>
|
|
87
76
|
<div class="flex gap-05">
|
|
88
77
|
<Btn
|
|
89
|
-
v-if="onDuplicate"
|
|
90
|
-
outline
|
|
91
|
-
class="px-1"
|
|
92
|
-
icon="copy_all"
|
|
93
|
-
flat
|
|
94
|
-
:value="duplicateText || 'Duplicate'"
|
|
78
|
+
v-if="onDuplicate" outline class="px-1" icon="copy_all" flat :value="duplicateText || 'Duplicate'"
|
|
95
79
|
@click="onDuplicate?.(formData)"
|
|
96
80
|
/>
|
|
97
81
|
<Btn v-if="onSubmit" :value="submitText || 'Submit'" @click="runSubmit" />
|
|
@@ -10,6 +10,8 @@ interface CarouselOptions {
|
|
|
10
10
|
speed?: number
|
|
11
11
|
easing?: Easing
|
|
12
12
|
perPage?: number | { [key: number]: number }
|
|
13
|
+
slideWidth?: number
|
|
14
|
+
slideGap?: number
|
|
13
15
|
startIndex?: number
|
|
14
16
|
draggable?: boolean
|
|
15
17
|
multipleDrag?: boolean
|
|
@@ -21,8 +23,6 @@ interface CarouselOptions {
|
|
|
21
23
|
autoplaySpeed?: number
|
|
22
24
|
pauseOnHover?: boolean
|
|
23
25
|
dots?: boolean
|
|
24
|
-
slideWidth?: number
|
|
25
|
-
slideGap?: number
|
|
26
26
|
onInit?: () => void
|
|
27
27
|
onChange?: () => void
|
|
28
28
|
}
|