@bagelink/vue 1.4.155 → 1.4.161
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/ListItem.vue.d.ts +2 -2
- package/dist/components/ListItem.vue.d.ts.map +1 -1
- package/dist/components/Loading.vue.d.ts +3 -2
- package/dist/components/Loading.vue.d.ts.map +1 -1
- package/dist/components/Modal.vue.d.ts.map +1 -1
- package/dist/components/calendar/CalendarPopover.vue.d.ts +2 -0
- package/dist/components/calendar/CalendarPopover.vue.d.ts.map +1 -1
- package/dist/components/calendar/CalendarTypes.d.ts +2 -0
- package/dist/components/calendar/CalendarTypes.d.ts.map +1 -1
- package/dist/components/calendar/views/WeekView.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/ColorInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/NumberInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RadioGroup.vue.d.ts +6 -0
- package/dist/components/form/inputs/RadioGroup.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RichText/index.vue.d.ts +1 -0
- package/dist/components/form/inputs/RichText/index.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.vue.d.ts +1 -1
- package/dist/components/layout/AppSidebar.vue.d.ts.map +1 -1
- package/dist/components/layout/TabsNav.vue.d.ts.map +1 -1
- package/dist/components/lightbox/Lightbox.vue.d.ts.map +1 -1
- package/dist/index.cjs +21 -21
- package/dist/index.mjs +21 -21
- package/dist/style.css +1 -1
- package/dist/types/BtnOptions.d.ts +3 -0
- package/dist/types/BtnOptions.d.ts.map +1 -1
- package/dist/utils/sizeParsing.d.ts +3 -0
- package/dist/utils/sizeParsing.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/components/ListItem.vue +42 -35
- package/src/components/Loading.vue +73 -25
- package/src/components/Modal.vue +5 -1
- package/src/components/calendar/CalendarPopover.vue +20 -24
- package/src/components/calendar/CalendarTypes.ts +2 -0
- package/src/components/calendar/Index.vue +1 -1
- package/src/components/calendar/views/WeekView.vue +7 -1
- package/src/components/form/inputs/ColorInput.vue +5 -5
- package/src/components/form/inputs/NumberInput.vue +2 -2
- package/src/components/form/inputs/RadioGroup.vue +22 -6
- package/src/components/form/inputs/RichText/index.vue +4 -2
- package/src/components/form/inputs/SelectInput.vue +2 -2
- package/src/components/layout/AppSidebar.vue +1 -1
- package/src/components/layout/TabsNav.vue +24 -22
- package/src/components/lightbox/Lightbox.vue +1 -0
- package/src/styles/appearance.css +10 -1
- package/src/styles/colors.css +502 -3
- package/src/styles/inputs.css +12 -4
- package/src/styles/layout.css +2 -1
- package/src/styles/mobileColors.css +4167 -3739
- package/src/styles/theme.css +1 -0
- package/src/types/BtnOptions.ts +4 -0
- package/src/utils/sizeParsing.ts +26 -0
|
@@ -13,4 +13,7 @@ export interface BtnOptions {
|
|
|
13
13
|
value?: string;
|
|
14
14
|
border?: boolean;
|
|
15
15
|
}
|
|
16
|
+
export type UnitSize = 'px' | 'rem' | 'vh' | 'vw';
|
|
17
|
+
export type SizeType = 'xSmall' | 'small' | 'medium' | 'large' | 'xLarge';
|
|
18
|
+
export type SizeUnit = `${number}` | number | `${number}${UnitSize}`;
|
|
16
19
|
//# sourceMappingURL=BtnOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BtnOptions.d.ts","sourceRoot":"","sources":["../../src/types/BtnOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,CAAA;AAE5C,MAAM,WAAW,UAAU;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB"}
|
|
1
|
+
{"version":3,"file":"BtnOptions.d.ts","sourceRoot":"","sources":["../../src/types/BtnOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,CAAA;AAE5C,MAAM,WAAW,UAAU;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAA;AACjD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;AACzE,MAAM,MAAM,QAAQ,GAAG,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG,QAAQ,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sizeParsing.d.ts","sourceRoot":"","sources":["../../src/utils/sizeParsing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGlD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,IAAI,GAAE,QAAe,UAsBrF"}
|
package/package.json
CHANGED
|
@@ -56,41 +56,40 @@ const bind = $computed(() => {
|
|
|
56
56
|
</script>
|
|
57
57
|
|
|
58
58
|
<template>
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
<
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
<
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
</
|
|
88
|
-
<div class="flex-grow-1" />
|
|
59
|
+
<div class="flex space-between">
|
|
60
|
+
<component
|
|
61
|
+
:is="isComponent" v-bind="bind" v-ripple="ripple && isClickable"
|
|
62
|
+
class="flex flex-grow-1 gap-05 list-item" :class="{
|
|
63
|
+
'py-1': !props.thin,
|
|
64
|
+
'py-05': props.thin,
|
|
65
|
+
'px-1': !props.fullWidth,
|
|
66
|
+
'px-0': props.fullWidth,
|
|
67
|
+
}" @click="onClick"
|
|
68
|
+
>
|
|
69
|
+
<Avatar v-if="src || showAvatar" style="flex-basis: 1;" :name="title" :src="src" :size="40" />
|
|
70
|
+
<Icon v-if="icon" size="1.2" class="color-primary" :icon="icon" />
|
|
71
|
+
|
|
72
|
+
<div class="txt-start">
|
|
73
|
+
<p v-if="lead" class="txt10 m-0 p-0 txt-gray" :class="{ ellipsis }">
|
|
74
|
+
{{ lead }}
|
|
75
|
+
<slot name="lead" />
|
|
76
|
+
</p>
|
|
77
|
+
<p class="m-0 p-0 line-height-14 pb-025" :class="{ 'ellipsis-1': ellipsis }">
|
|
78
|
+
{{ title }}
|
|
79
|
+
<slot />
|
|
80
|
+
</p>
|
|
81
|
+
<p v-if="subtitle" class="txt12 m-0 p-0 opacity-7" :class="{ 'ellipsis-1': ellipsis }">
|
|
82
|
+
{{ subtitle }}
|
|
83
|
+
<slot name="subtitle" />
|
|
84
|
+
</p>
|
|
85
|
+
</div>
|
|
86
|
+
<div class="flex-grow-1" />
|
|
87
|
+
</component>
|
|
89
88
|
<slot name="end">
|
|
90
89
|
<Icon v-if="iconEnd" :icon="iconEnd" class="transition-400" />
|
|
91
90
|
<p v-if="end" class="txt12 m-0 p-0 opacity-7" :class="{ 'ellipsis-1': ellipsis }" v-text="end" />
|
|
92
91
|
</slot>
|
|
93
|
-
</
|
|
92
|
+
</div>
|
|
94
93
|
</template>
|
|
95
94
|
|
|
96
95
|
<style>
|
|
@@ -103,10 +102,12 @@ button.list-item {
|
|
|
103
102
|
width: 100%;
|
|
104
103
|
|
|
105
104
|
}
|
|
105
|
+
|
|
106
106
|
.list-item:disabled {
|
|
107
107
|
opacity: 0.5;
|
|
108
108
|
pointer-events: none;
|
|
109
109
|
}
|
|
110
|
+
|
|
110
111
|
.list-item {
|
|
111
112
|
min-height: -webkit-fit-content;
|
|
112
113
|
min-height: -moz-fit-content;
|
|
@@ -118,7 +119,8 @@ button.list-item {
|
|
|
118
119
|
text-decoration: none;
|
|
119
120
|
position: relative;
|
|
120
121
|
}
|
|
121
|
-
|
|
122
|
+
|
|
123
|
+
.list-item>* {
|
|
122
124
|
margin-bottom: 0;
|
|
123
125
|
}
|
|
124
126
|
|
|
@@ -130,6 +132,7 @@ button.list-item {
|
|
|
130
132
|
bottom: 0;
|
|
131
133
|
border-bottom: 1px solid var(--border-color);
|
|
132
134
|
}
|
|
135
|
+
|
|
133
136
|
.list-item:last-child::after {
|
|
134
137
|
content: '';
|
|
135
138
|
position: absolute;
|
|
@@ -143,17 +146,21 @@ button.list-item {
|
|
|
143
146
|
.list-item.router-link-exact-active {
|
|
144
147
|
background-color: var(--bgl-primary-tint);
|
|
145
148
|
}
|
|
146
|
-
|
|
147
|
-
|
|
149
|
+
|
|
150
|
+
.notClickable:hover {
|
|
151
|
+
background-color: unset;
|
|
148
152
|
cursor: default;
|
|
149
153
|
}
|
|
154
|
+
|
|
150
155
|
.list-item:active {
|
|
151
156
|
-webkit-filter: var(--bgl-hover-filter);
|
|
152
157
|
filter: var(--bgl-hover-filter);
|
|
153
158
|
}
|
|
154
|
-
|
|
159
|
+
|
|
160
|
+
.no-border-list.list-item::after {
|
|
155
161
|
border-bottom: none;
|
|
156
162
|
}
|
|
163
|
+
|
|
157
164
|
@media screen and (max-width: 910px) {
|
|
158
165
|
.list-item {
|
|
159
166
|
padding: 0.5rem;
|
|
@@ -1,26 +1,23 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import type { SizeUnit, SizeType } from '../types/BtnOptions'
|
|
3
|
+
import { standardSize } from '../utils/sizeParsing'
|
|
4
|
+
|
|
2
5
|
type LoadingType = 'ring' | 'ellipsis' | 'bar'
|
|
3
6
|
|
|
4
7
|
const { type: theme = 'ring', size = 50, thickness, duration = 1.2, color, progress } = defineProps<{
|
|
5
|
-
size?:
|
|
6
|
-
thickness?:
|
|
8
|
+
size?: SizeUnit | SizeType
|
|
9
|
+
thickness?: SizeUnit
|
|
7
10
|
duration?: number | string
|
|
8
11
|
type?: LoadingType
|
|
9
12
|
color?: string
|
|
10
13
|
progress?: number
|
|
11
14
|
}>()
|
|
12
15
|
|
|
13
|
-
// Ensure size and units are correctly formatted
|
|
14
|
-
function standardSize(value: number | string | undefined, unit = 'px') {
|
|
15
|
-
if (!value) return `${size}${unit}`
|
|
16
|
-
return typeof value === 'number' ? `${value}${unit}` : value.endsWith(unit) ? value : `${value}${unit}`
|
|
17
|
-
}
|
|
18
|
-
|
|
19
16
|
// Computed Values
|
|
20
17
|
const computedSize = $computed(() => standardSize(size))
|
|
21
18
|
const animationDuration = $computed(() => `${duration}s`)
|
|
22
19
|
const computedBorder = $computed(() => {
|
|
23
|
-
const borderValue = thickness ?? Math.max(Number.parseInt(computedSize) / 9, 2)
|
|
20
|
+
const borderValue = thickness ?? Math.max(Number.parseInt(computedSize, 10) / 9, 2)
|
|
24
21
|
return standardSize(borderValue)
|
|
25
22
|
})
|
|
26
23
|
|
|
@@ -95,15 +92,25 @@ const svgCircumference = $computed(() => Math.PI * 2 * svgRadius)
|
|
|
95
92
|
}
|
|
96
93
|
|
|
97
94
|
@keyframes bar-animation {
|
|
98
|
-
0% {
|
|
99
|
-
|
|
100
|
-
|
|
95
|
+
0% {
|
|
96
|
+
background-position: -150% 0, -150% 0
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
66% {
|
|
100
|
+
background-position: 250% 0, -150% 0
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
100% {
|
|
104
|
+
background-position: 250% 0, 250% 0
|
|
105
|
+
}
|
|
101
106
|
}
|
|
102
107
|
|
|
103
108
|
/* Ring Theme */
|
|
104
|
-
.lds-ring,
|
|
109
|
+
.lds-ring,
|
|
110
|
+
.lds-ring div {
|
|
105
111
|
box-sizing: border-box;
|
|
106
112
|
}
|
|
113
|
+
|
|
107
114
|
.lds-ring {
|
|
108
115
|
position: relative;
|
|
109
116
|
width: var(--size);
|
|
@@ -111,11 +118,13 @@ const svgCircumference = $computed(() => Math.PI * 2 * svgRadius)
|
|
|
111
118
|
transform: translate(calc(var(--thickness) * -1), calc(var(--thickness) * -1));
|
|
112
119
|
direction: ltr;
|
|
113
120
|
}
|
|
121
|
+
|
|
114
122
|
.progress .lds-ring svg {
|
|
115
123
|
position: absolute;
|
|
116
124
|
top: var(--thickness);
|
|
117
125
|
left: var(--thickness);
|
|
118
126
|
}
|
|
127
|
+
|
|
119
128
|
.lds-ring div {
|
|
120
129
|
display: block;
|
|
121
130
|
position: absolute;
|
|
@@ -127,25 +136,42 @@ const svgCircumference = $computed(() => Math.PI * 2 * svgRadius)
|
|
|
127
136
|
animation: lds-ring var(--animation-duration) cubic-bezier(0.5, 0, 0.5, 1) infinite;
|
|
128
137
|
border-color: currentColor transparent transparent transparent;
|
|
129
138
|
}
|
|
130
|
-
|
|
131
|
-
.lds-ring div:nth-child(
|
|
132
|
-
|
|
139
|
+
|
|
140
|
+
.lds-ring div:nth-child(1) {
|
|
141
|
+
animation-delay: calc(var(--animation-duration) * -0.38);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.lds-ring div:nth-child(2) {
|
|
145
|
+
animation-delay: calc(var(--animation-duration) / -4);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.lds-ring div:nth-child(3) {
|
|
149
|
+
animation-delay: calc(var(--animation-duration) / -8);
|
|
150
|
+
}
|
|
133
151
|
|
|
134
152
|
@keyframes lds-ring {
|
|
135
|
-
0% {
|
|
136
|
-
|
|
153
|
+
0% {
|
|
154
|
+
transform: rotate(0deg);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
100% {
|
|
158
|
+
transform: rotate(360deg);
|
|
159
|
+
}
|
|
137
160
|
}
|
|
138
161
|
|
|
139
162
|
/* Ellipsis Theme */
|
|
140
|
-
.lds-ellipsis,
|
|
163
|
+
.lds-ellipsis,
|
|
164
|
+
.lds-ellipsis div {
|
|
141
165
|
box-sizing: border-box;
|
|
142
166
|
}
|
|
167
|
+
|
|
143
168
|
.lds-ellipsis {
|
|
144
169
|
display: inline-block;
|
|
145
170
|
position: relative;
|
|
146
171
|
width: var(--size);
|
|
147
172
|
height: var(--size);
|
|
148
173
|
}
|
|
174
|
+
|
|
149
175
|
.lds-ellipsis div {
|
|
150
176
|
position: absolute;
|
|
151
177
|
top: calc(var(--size) / 2 - calc(var(--size) / 10));
|
|
@@ -155,32 +181,54 @@ const svgCircumference = $computed(() => Math.PI * 2 * svgRadius)
|
|
|
155
181
|
background: currentColor;
|
|
156
182
|
animation-timing-function: cubic-bezier(0, 1, 1, 0);
|
|
157
183
|
}
|
|
184
|
+
|
|
158
185
|
.lds-ellipsis div:nth-child(1) {
|
|
159
186
|
left: calc(var(--size) / 10);
|
|
160
187
|
animation: lds-ellipsis1 0.6s infinite;
|
|
161
188
|
}
|
|
189
|
+
|
|
162
190
|
.lds-ellipsis div:nth-child(2) {
|
|
163
191
|
left: calc(var(--size) / 10);
|
|
164
192
|
animation: lds-ellipsis2 0.6s infinite;
|
|
165
193
|
}
|
|
194
|
+
|
|
166
195
|
.lds-ellipsis div:nth-child(3) {
|
|
167
196
|
left: calc(var(--size) / 2.5);
|
|
168
197
|
animation: lds-ellipsis2 0.6s infinite;
|
|
169
198
|
}
|
|
199
|
+
|
|
170
200
|
.lds-ellipsis div:nth-child(4) {
|
|
171
201
|
left: calc(var(--size) / 1.42);
|
|
172
202
|
animation: lds-ellipsis3 0.6s infinite;
|
|
173
203
|
}
|
|
204
|
+
|
|
174
205
|
@keyframes lds-ellipsis1 {
|
|
175
|
-
0% {
|
|
176
|
-
|
|
206
|
+
0% {
|
|
207
|
+
transform: scale(0);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
100% {
|
|
211
|
+
transform: scale(1);
|
|
212
|
+
}
|
|
177
213
|
}
|
|
214
|
+
|
|
178
215
|
@keyframes lds-ellipsis3 {
|
|
179
|
-
0% {
|
|
180
|
-
|
|
216
|
+
0% {
|
|
217
|
+
transform: scale(1);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
100% {
|
|
221
|
+
transform: scale(0);
|
|
222
|
+
}
|
|
181
223
|
}
|
|
224
|
+
|
|
182
225
|
@keyframes lds-ellipsis2 {
|
|
183
|
-
0% {
|
|
184
|
-
|
|
226
|
+
0% {
|
|
227
|
+
transform: translate(0, 0);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
100% {
|
|
231
|
+
transform: translate(calc(var(--size) / 3.33), 0);
|
|
232
|
+
}
|
|
185
233
|
}
|
|
186
234
|
</style>
|
package/src/components/Modal.vue
CHANGED
|
@@ -97,7 +97,8 @@ onUnmounted(() => {
|
|
|
97
97
|
<!-- Overlay close button -->
|
|
98
98
|
<Btn v-if="dismissable && isOverlay" icon="close" icon-mobile-size="1.4" class="fixed" :class="overlayCloseClass" @click="closeModal" />
|
|
99
99
|
|
|
100
|
-
<Card class="modal m_pt-0" :style="{ ...maxWidth }" :thin="thin" @click.stop
|
|
100
|
+
<Card class="modal m_pt-0" :style="{ ...maxWidth, '--bgl-box-bg': 'var(--bgl-popup-bg)' }" :thin="thin" @click.stop
|
|
101
|
+
:class="{ 'pt-0': thin, 'pt-1': !thin, 'm_mt-5': isOverlay, 'display-flex column': side }">
|
|
101
102
|
<header v-if="slots.toolbar || title" class="tool-bar w-100p flex space-between sticky z-3 py-1">
|
|
102
103
|
<!-- Header close button -->
|
|
103
104
|
<Btn v-if="dismissable && isHeader && closePlacement === 'header'" :style="{ float: side ? '' : '' }" flat icon="close" thin icon-mobile-size="1.4" @click="closeModal" />
|
|
@@ -131,6 +132,9 @@ onUnmounted(() => {
|
|
|
131
132
|
.modal {
|
|
132
133
|
color: var(--bgl-popup-text);
|
|
133
134
|
}
|
|
135
|
+
.modal .bgl_btn.bgl_btn_flat {
|
|
136
|
+
color: var(--bgl-popup-text) !important;
|
|
137
|
+
}
|
|
134
138
|
|
|
135
139
|
.modal-footer>div {
|
|
136
140
|
gap: 1rem;
|
|
@@ -61,42 +61,38 @@ function closePopover() {
|
|
|
61
61
|
|
|
62
62
|
<template>
|
|
63
63
|
<Card
|
|
64
|
-
v-if="show && event"
|
|
65
|
-
ref="popoverRef"
|
|
66
|
-
v-click-outside="closePopover"
|
|
67
|
-
thin
|
|
68
|
-
class="custom-popover"
|
|
69
|
-
:style="{
|
|
64
|
+
v-if="show && event" ref="popoverRef" v-click-outside="closePopover" thin class="custom-popover" :style="{
|
|
70
65
|
top: `${popoverPosition.top}px`,
|
|
71
66
|
left: `${popoverPosition.left}px`,
|
|
72
67
|
maxWidth: `${popoverPosition.width}px`,
|
|
73
68
|
}"
|
|
74
69
|
>
|
|
75
|
-
<slot name="eventContent" :event="event" />
|
|
70
|
+
<slot name="eventContent" :event="event" :close="closePopover" />
|
|
76
71
|
</Card>
|
|
77
72
|
</template>
|
|
78
73
|
|
|
79
74
|
<style scoped>
|
|
80
75
|
.custom-popover {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
76
|
+
position: fixed;
|
|
77
|
+
z-index: 1000;
|
|
78
|
+
min-width: 250px;
|
|
79
|
+
max-width: 350px;
|
|
80
|
+
background-color: white;
|
|
81
|
+
border-radius: var(--btn-border-radius);
|
|
82
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
|
83
|
+
animation: fadeIn 0.2s ease;
|
|
84
|
+
transform-origin: center left;
|
|
90
85
|
}
|
|
91
86
|
|
|
92
87
|
@keyframes fadeIn {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
88
|
+
from {
|
|
89
|
+
opacity: 0;
|
|
90
|
+
transform: scale(0.95);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
to {
|
|
94
|
+
opacity: 1;
|
|
95
|
+
transform: scale(1);
|
|
96
|
+
}
|
|
101
97
|
}
|
|
102
98
|
</style>
|
|
@@ -2,11 +2,13 @@ export interface CalendarEvent {
|
|
|
2
2
|
id: string
|
|
3
3
|
title: string
|
|
4
4
|
description?: string
|
|
5
|
+
reference?: string
|
|
5
6
|
start_time: Date
|
|
6
7
|
end_time: Date
|
|
7
8
|
color?: string
|
|
8
9
|
category?: string
|
|
9
10
|
allDay?: boolean
|
|
11
|
+
meta?: Record<string, any>
|
|
10
12
|
}
|
|
11
13
|
export type CalendarView = 'Week' | 'Month' | 'Day' | 'Agenda'
|
|
12
14
|
|
|
@@ -123,7 +123,7 @@ onMounted(() => { emit('ready', state.value) })
|
|
|
123
123
|
<template>
|
|
124
124
|
<div class="calendar">
|
|
125
125
|
<div class="flex m_block m_pb-1">
|
|
126
|
-
<h3 class="txt-light my-0">
|
|
126
|
+
<h3 class="txt-light my-0 m_pb-1">
|
|
127
127
|
<b>{{ formatDate(currentDate, 'MMMM') }}</b>
|
|
128
128
|
{{ formatDate(currentDate, 'YYYY') }}
|
|
129
129
|
</h3>
|
|
@@ -421,7 +421,7 @@ onUnmounted(() => {
|
|
|
421
421
|
<div class="w-100p overflow-hidden m_overflow h-100p grid">
|
|
422
422
|
<div ref="calendarGrid" class="weekGrid border-bottom me-1">
|
|
423
423
|
<div />
|
|
424
|
-
<div v-for="day in weekDays" :key="day.toISOString()" class="day-header p-05 txt-center">
|
|
424
|
+
<div v-for="day in weekDays" :key="day.toISOString()" class="day-header p-05 txt-center m_txt12">
|
|
425
425
|
{{ formatDate(day, { fmt: 'DDD' }) }}
|
|
426
426
|
<span
|
|
427
427
|
class="txt-12 round p-025" :class="{
|
|
@@ -576,4 +576,10 @@ onUnmounted(() => {
|
|
|
576
576
|
flex-direction: column;
|
|
577
577
|
justify-content: center; */
|
|
578
578
|
}
|
|
579
|
+
@media (max-width: 910px) {
|
|
580
|
+
.weekGrid {
|
|
581
|
+
display: grid;
|
|
582
|
+
grid-template-columns: 3rem repeat(7, 100px);
|
|
583
|
+
}
|
|
584
|
+
}
|
|
579
585
|
</style>
|
|
@@ -27,16 +27,16 @@ watch(
|
|
|
27
27
|
</script>
|
|
28
28
|
|
|
29
29
|
<template>
|
|
30
|
-
<div class="bagel-input
|
|
30
|
+
<div class="bagel-input testMe1 " :class="{ small }" :title="label">
|
|
31
31
|
<label>
|
|
32
32
|
{{ label }}
|
|
33
|
-
<div class="flex
|
|
33
|
+
<div class="flex rounded colorInputPickWrap" :class="{ 'px-025 bg-input': !small }">
|
|
34
34
|
<input
|
|
35
35
|
:id="id"
|
|
36
36
|
v-model="inputVal" class="border" type="color" :placeholder="placeholder || label"
|
|
37
37
|
:class="{ 'no-edit': !editMode, 'opacity-1': !inputVal }" :required="required" v-bind="nativeInputAttrs"
|
|
38
38
|
>
|
|
39
|
-
<input
|
|
39
|
+
<input v-if="!small"
|
|
40
40
|
v-model="inputVal"
|
|
41
41
|
class="flex-grow-1 border colorInputPick"
|
|
42
42
|
type="text"
|
|
@@ -50,9 +50,9 @@ watch(
|
|
|
50
50
|
|
|
51
51
|
<style>
|
|
52
52
|
.colorInputPick{
|
|
53
|
-
|
|
54
|
-
height: calc(var(--input-height) - 9px) !important;
|
|
53
|
+
--input-font-size: 12px;
|
|
55
54
|
background: transparent !important;
|
|
55
|
+
height: var(--input-height) !important;
|
|
56
56
|
min-width: 50px !important;
|
|
57
57
|
}
|
|
58
58
|
.colorInputPick:focus{
|
|
@@ -173,8 +173,8 @@ watch(() => modelValue, (newVal) => {
|
|
|
173
173
|
<p v-if="helptext" class="opacity-7 light">
|
|
174
174
|
{{ helptext }}
|
|
175
175
|
</p>
|
|
176
|
-
<Icon v-if="iconStart" class="iconStart" :icon="iconStart" />
|
|
177
|
-
<Icon v-if="icon" :icon />
|
|
176
|
+
<Icon v-if="iconStart" class="iconStart" size="0.9" :icon="iconStart" />
|
|
177
|
+
<Icon v-if="icon" :icon size="0.9" />
|
|
178
178
|
<Btn
|
|
179
179
|
v-if="layout && btnLayouts.includes(layout)" flat icon="remove" class="radius"
|
|
180
180
|
:class="[{ 'bgl-big-ctrl-num-btn': layout === 'vertical' }]" tabindex="-1" @click="decrement"
|
|
@@ -27,6 +27,12 @@ const props = withDefaults(
|
|
|
27
27
|
flat?: boolean
|
|
28
28
|
invertedActive?: boolean
|
|
29
29
|
align?: 'start' | 'center' | 'end' | 'top' | 'bottom'
|
|
30
|
+
hideRadio?: boolean
|
|
31
|
+
bgColor?: string
|
|
32
|
+
activeBgColor?: string
|
|
33
|
+
borderColor?: string
|
|
34
|
+
textColor?: string
|
|
35
|
+
textAlign?: 'left' | 'center' | 'right'
|
|
30
36
|
}>(),
|
|
31
37
|
{
|
|
32
38
|
align: 'center'
|
|
@@ -89,7 +95,8 @@ function handleChange() {
|
|
|
89
95
|
v-for="(opt, index) in visibleOptions" :key="opt.id || `${name}-${index}`"
|
|
90
96
|
class="border rounded flex active-list-item hover"
|
|
91
97
|
:for="opt.id || `${name}-${index}`"
|
|
92
|
-
:class="{ 'p-05 gap-025': thin, '
|
|
98
|
+
:class="{ 'p-05 gap-025': thin, 'py-1 gap-075': !thin, 'ps-05': !hideRadio, 'bg-gray-light': !bgColor && !flat, 'align-items-start': align === 'start' || align === 'top', 'align-items-center': align === 'center', 'align-items-end': align === 'end' || align === 'bottom', invertedActive }"
|
|
99
|
+
:style="{ backgroundColor: bgColor, borderColor: borderColor }"
|
|
93
100
|
>
|
|
94
101
|
<input
|
|
95
102
|
:id="opt.id || `${name}-${index}`" v-model="selectedOption" :disabled class="radio-input-list"
|
|
@@ -97,16 +104,19 @@ function handleChange() {
|
|
|
97
104
|
@change="handleChange"
|
|
98
105
|
:class="{
|
|
99
106
|
'mt-025': align === 'start' || align === 'top',
|
|
100
|
-
'mb-025': align === 'end' || align === 'bottom'
|
|
107
|
+
'mb-025': align === 'end' || align === 'bottom',
|
|
108
|
+
'hideRadio': hideRadio
|
|
101
109
|
}"
|
|
102
110
|
>
|
|
103
|
-
<div class="flex w-100 gap-1 flex-wrap m_gap-05 m_gap-row-025"
|
|
111
|
+
<div class="flex w-100 gap-1 flex-wrap m_gap-05 m_gap-row-025"
|
|
112
|
+
:class="{ 'txt-center justify-content-center': textAlign === 'center', 'txt-end justify-content-end': textAlign === 'right', 'txt-start justify-content-start': textAlign === 'left' }"
|
|
113
|
+
:style="{ color: textColor }">
|
|
104
114
|
<img
|
|
105
115
|
v-if="opt.imgSrc" class="bg-popup shadow-light py-025 radius-05 m_w40" height="40" :src="opt.imgSrc"
|
|
106
116
|
:alt="opt.imgAlt"
|
|
107
117
|
>
|
|
108
118
|
<div class="">
|
|
109
|
-
<
|
|
119
|
+
<div v-if="opt.label" class="m-0 m_txt-14 line-height-14" v-html="opt.label"></div>
|
|
110
120
|
<p v-if="opt.subLabel" class="txt-gray txt-12 m-0 pt-025">{{ opt.subLabel }}</p>
|
|
111
121
|
</div>
|
|
112
122
|
<slot name="radioItem" v-bind="opt" />
|
|
@@ -117,24 +127,30 @@ function handleChange() {
|
|
|
117
127
|
</template>
|
|
118
128
|
|
|
119
129
|
<style scoped>
|
|
130
|
+
.hideRadio.radio-input-list {
|
|
131
|
+
display: none !important;
|
|
132
|
+
}
|
|
120
133
|
.radio-input-list {
|
|
121
134
|
width: auto;
|
|
122
135
|
transform: scale(1.4);
|
|
123
136
|
margin-inline-end: 0.6rem;
|
|
137
|
+
}
|
|
124
138
|
|
|
139
|
+
.radio-input-list.hidden {
|
|
140
|
+
display: none;
|
|
125
141
|
}
|
|
126
142
|
|
|
127
143
|
.active-list-item:has(:checked) {
|
|
128
|
-
background: var(--bgl-primary-light) !important;
|
|
144
|
+
background: v-bind('activeBgColor || "var(--bgl-primary-light)"') !important;
|
|
129
145
|
border-color: var(--bgl-primary) !important;
|
|
130
146
|
accent-color: var(--bgl-accent-color);
|
|
131
147
|
}
|
|
148
|
+
|
|
132
149
|
.invertedActive:has(:checked) {
|
|
133
150
|
background: var(--bgl-primary) !important;
|
|
134
151
|
border-color: var(--bgl-primary) !important;
|
|
135
152
|
color: var(--bgl-white);
|
|
136
153
|
accent-color: var(--bgl-white);
|
|
137
|
-
|
|
138
154
|
}
|
|
139
155
|
|
|
140
156
|
.has-error .active-list-item {
|
|
@@ -39,6 +39,8 @@ const props = defineProps<{
|
|
|
39
39
|
hide?: string[]
|
|
40
40
|
// Control autofocus behavior
|
|
41
41
|
autofocus?: boolean
|
|
42
|
+
// Text color
|
|
43
|
+
textColor?: string
|
|
42
44
|
}>()
|
|
43
45
|
|
|
44
46
|
const emit = defineEmits(['update:modelValue'])
|
|
@@ -2521,7 +2523,7 @@ async function initEditor() {
|
|
|
2521
2523
|
min-height: 200px;
|
|
2522
2524
|
font-family: sans-serif !important;
|
|
2523
2525
|
line-height: 1.5;
|
|
2524
|
-
color: inherit;
|
|
2526
|
+
color: ${props.textColor || 'inherit'};
|
|
2525
2527
|
background: transparent;
|
|
2526
2528
|
max-width: 1060px;
|
|
2527
2529
|
margin: 0 auto;
|
|
@@ -3509,7 +3511,7 @@ defineExpose({
|
|
|
3509
3511
|
}
|
|
3510
3512
|
|
|
3511
3513
|
.inline-toolbar-content {
|
|
3512
|
-
background: var(--bgl-
|
|
3514
|
+
background: var(--bgl-box-bg, white);
|
|
3513
3515
|
border: 1px solid var(--border-color, #dddddd);
|
|
3514
3516
|
border-radius: 8px;
|
|
3515
3517
|
padding: 0.25rem;
|
|
@@ -273,7 +273,7 @@ onMounted(() => {
|
|
|
273
273
|
</label>
|
|
274
274
|
</template>
|
|
275
275
|
<Skeleton v-if="isLoading" :count="6" width="200px" height="25px" class="mx-1 my-1" />
|
|
276
|
-
<Card class="p-05" :style="{ width: fullWidth ? '100%' : 'auto' }" @click.stop>
|
|
276
|
+
<Card class="p-05" frame :style="{ width: fullWidth ? '100%' : 'auto' }" @click.stop>
|
|
277
277
|
<div ref="selectOptions" class="selectinput-options" :class="{ multiselect }">
|
|
278
278
|
<div
|
|
279
279
|
v-for="(option, i) in results" :key="`${String(getValue(option))}-${i}`"
|
|
@@ -387,6 +387,6 @@ onMounted(() => {
|
|
|
387
387
|
border: none;
|
|
388
388
|
/* background: transparent; if anyone is changing this please talk to me first*/
|
|
389
389
|
border-radius: var(--card-border-radius);
|
|
390
|
-
|
|
390
|
+
color: var(--dropdown-color);
|
|
391
391
|
}
|
|
392
392
|
</style>
|