@citizenplane/pimp 10.2.8 → 10.4.0
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/pimp.es.js +13 -13
- package/dist/pimp.umd.js +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/components/CpButtonGroup.vue +2 -9
- package/src/components/CpInput.vue +3 -3
- package/src/components/CpItemActions.vue +14 -0
- package/src/components/CpMenuItem.vue +4 -10
- package/src/components/CpMultiselect.vue +1 -1
- package/src/components/CpTelInput.vue +33 -7
package/package.json
CHANGED
|
@@ -7,24 +7,17 @@
|
|
|
7
7
|
<style lang="scss">
|
|
8
8
|
.cpButtonGroup {
|
|
9
9
|
display: flex;
|
|
10
|
-
padding: fn.px-to-rem(1);
|
|
11
10
|
align-items: flex-start;
|
|
12
|
-
border-radius:
|
|
11
|
+
border-radius: var(--cp-radius-sm);
|
|
13
12
|
box-shadow: 0 0 0 fn.px-to-rem(1) var(--cp-border-soft);
|
|
14
|
-
gap: var(--cp-spacing-xs);
|
|
15
13
|
|
|
16
14
|
> * {
|
|
17
15
|
position: relative;
|
|
18
16
|
|
|
19
|
-
&:not(:last-child) {
|
|
20
|
-
margin-right: fn.px-to-rem(1);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
17
|
&:not(:first-child, :only-child)::before {
|
|
24
18
|
content: '';
|
|
25
19
|
position: absolute;
|
|
26
|
-
left: fn.px-to-rem(-
|
|
27
|
-
margin-inline: fn.px-to-rem(1);
|
|
20
|
+
left: fn.px-to-rem(-1);
|
|
28
21
|
width: fn.px-to-rem(1);
|
|
29
22
|
height: calc(100% + fn.px-to-rem(2));
|
|
30
23
|
top: fn.px-to-rem(-1);
|
|
@@ -213,7 +213,7 @@ onMounted(async () => {
|
|
|
213
213
|
box-shadow:
|
|
214
214
|
var(--cp-drop-shadow-3xs-offset-x) var(--cp-drop-shadow-3xs-offset-y) var(--cp-drop-shadow-3xs-blur) -1px
|
|
215
215
|
var(--cp-drop-shadow-3xs-color),
|
|
216
|
-
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-
|
|
216
|
+
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft);
|
|
217
217
|
appearance: none;
|
|
218
218
|
border-radius: var(--cp-radius-md);
|
|
219
219
|
width: 100%;
|
|
@@ -330,7 +330,7 @@ onMounted(async () => {
|
|
|
330
330
|
|
|
331
331
|
&--lg {
|
|
332
332
|
.cpInput__inner {
|
|
333
|
-
border-radius: var(--cp-radius-
|
|
333
|
+
border-radius: var(--cp-radius-lg);
|
|
334
334
|
padding: var(--cp-spacing-lg) var(--cp-spacing-xl);
|
|
335
335
|
font-size: var(--cp-text-size-md);
|
|
336
336
|
}
|
|
@@ -338,7 +338,6 @@ onMounted(async () => {
|
|
|
338
338
|
.cpInput__icon {
|
|
339
339
|
width: var(--cp-dimensions-5);
|
|
340
340
|
height: var(--cp-dimensions-5);
|
|
341
|
-
|
|
342
341
|
left: var(--cp-spacing-lg);
|
|
343
342
|
}
|
|
344
343
|
|
|
@@ -363,6 +362,7 @@ onMounted(async () => {
|
|
|
363
362
|
|
|
364
363
|
&--sm {
|
|
365
364
|
.cpInput__inner {
|
|
365
|
+
border-radius: var(--cp-radius-md);
|
|
366
366
|
padding: var(--cp-spacing-sm) var(--cp-spacing-lg);
|
|
367
367
|
font-size: var(--cp-text-size-sm);
|
|
368
368
|
}
|
|
@@ -74,7 +74,21 @@ const slicedActions = computed(() => {
|
|
|
74
74
|
background-color: var(--cp-background-primary);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
.cpMenuItem {
|
|
78
|
+
padding: 0;
|
|
79
|
+
|
|
80
|
+
&:first-child .cpMenuItem__button {
|
|
81
|
+
border-top-left-radius: var(--cp-radius-sm);
|
|
82
|
+
border-bottom-left-radius: var(--cp-radius-sm);
|
|
83
|
+
}
|
|
84
|
+
&:last-child .cpMenuItem__button {
|
|
85
|
+
border-top-right-radius: var(--cp-radius-sm);
|
|
86
|
+
border-bottom-right-radius: var(--cp-radius-sm);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
77
90
|
.cpMenuItem__button {
|
|
91
|
+
border-radius: 0;
|
|
78
92
|
padding: var(--cp-spacing-xs) var(--cp-spacing-sm);
|
|
79
93
|
}
|
|
80
94
|
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="cpMenuItem">
|
|
3
3
|
<button
|
|
4
|
-
type="button"
|
|
5
4
|
class="cpMenuItem__button"
|
|
6
5
|
:class="dynamicClass"
|
|
7
6
|
:disabled="disabled"
|
|
7
|
+
type="button"
|
|
8
8
|
@click="handleItemClick"
|
|
9
9
|
>
|
|
10
|
-
<transition
|
|
10
|
+
<transition :duration="100" mode="out-in" name="fade">
|
|
11
11
|
<span v-if="isLoading" class="cpMenuItem__loaderWrapper">
|
|
12
|
-
<cp-loader
|
|
12
|
+
<cp-loader class="cpMenuItem__loader" color="#B2B2BD" />
|
|
13
13
|
</span>
|
|
14
14
|
<template v-else>
|
|
15
15
|
<slot name="icon">
|
|
16
|
-
<cp-icon
|
|
16
|
+
<cp-icon class="cpMenuItem__icon" :type="icon" />
|
|
17
17
|
</slot>
|
|
18
18
|
</template>
|
|
19
19
|
</transition>
|
|
@@ -42,12 +42,6 @@ const props = withDefaults(defineProps<Props & Omit<MenuItem, 'class' | 'disable
|
|
|
42
42
|
tooltip: '',
|
|
43
43
|
icon: '',
|
|
44
44
|
command: undefined,
|
|
45
|
-
reverseLabel: false,
|
|
46
|
-
isLoading: false,
|
|
47
|
-
isDisabled: false,
|
|
48
|
-
isCritical: false,
|
|
49
|
-
isAsync: false,
|
|
50
|
-
hideLabel: false,
|
|
51
45
|
})
|
|
52
46
|
|
|
53
47
|
const emit = defineEmits(['onItemClick', 'onAsyncCommandComplete'])
|
|
@@ -300,7 +300,7 @@ onMounted(() => overrideAlignOverlay())
|
|
|
300
300
|
padding: var(--cp-spacing-md) var(--cp-spacing-xl);
|
|
301
301
|
box-shadow:
|
|
302
302
|
var(--cp-shadows-3xs),
|
|
303
|
-
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-
|
|
303
|
+
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft);
|
|
304
304
|
border-radius: var(--cp-radius-md);
|
|
305
305
|
gap: var(--cp-spacing-md);
|
|
306
306
|
|
|
@@ -176,29 +176,54 @@ const handleOnValidate = (phoneObject: PhoneObject) => {
|
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
&__wrapper {
|
|
179
|
-
|
|
179
|
+
--box-shadow: var(--cp-drop-shadow-3xs-offset-x) var(--cp-drop-shadow-3xs-offset-y)
|
|
180
|
+
var(--cp-drop-shadow-3xs-blur) -1px var(--cp-drop-shadow-3xs-color);
|
|
181
|
+
|
|
182
|
+
border: 0;
|
|
180
183
|
box-shadow:
|
|
181
|
-
var(--
|
|
184
|
+
var(--box-shadow),
|
|
182
185
|
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft);
|
|
183
186
|
appearance: none;
|
|
184
187
|
border-radius: var(--cp-radius-md-lg);
|
|
185
188
|
width: 100%;
|
|
186
189
|
color: inherit;
|
|
187
190
|
|
|
188
|
-
&:focus-within {
|
|
189
|
-
box-shadow:
|
|
191
|
+
&:not(.cpTelInput__wrapper--isDisabled):focus-within {
|
|
192
|
+
box-shadow:
|
|
193
|
+
var(--box-shadow),
|
|
194
|
+
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft-hover);
|
|
195
|
+
|
|
196
|
+
&.cpTelInput__wrapper--isInvalid {
|
|
197
|
+
box-shadow:
|
|
198
|
+
var(--box-shadow),
|
|
199
|
+
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-error-solid);
|
|
200
|
+
}
|
|
190
201
|
}
|
|
191
202
|
|
|
192
203
|
&:not(.cpTelInput__wrapper--isInvalid, .cpTelInput__wrapper--isDisabled):hover {
|
|
193
|
-
box-shadow:
|
|
204
|
+
box-shadow:
|
|
205
|
+
var(--box-shadow),
|
|
206
|
+
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft-hover);
|
|
194
207
|
}
|
|
195
208
|
|
|
196
209
|
&--isInvalid {
|
|
197
|
-
box-shadow:
|
|
210
|
+
box-shadow:
|
|
211
|
+
var(--box-shadow),
|
|
212
|
+
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-error-solid);
|
|
198
213
|
}
|
|
199
214
|
|
|
200
215
|
&.disabled {
|
|
201
216
|
overflow: hidden;
|
|
217
|
+
box-shadow:
|
|
218
|
+
var(--box-shadow),
|
|
219
|
+
0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft);
|
|
220
|
+
|
|
221
|
+
.vti__dropdown {
|
|
222
|
+
&:focus,
|
|
223
|
+
&:focus-within {
|
|
224
|
+
border-right: var(--cp-dimensions-0_25) solid var(--cp-border-strong);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
202
227
|
}
|
|
203
228
|
}
|
|
204
229
|
|
|
@@ -254,12 +279,13 @@ const handleOnValidate = (phoneObject: PhoneObject) => {
|
|
|
254
279
|
.vti__dropdown {
|
|
255
280
|
z-index: 1;
|
|
256
281
|
position: unset;
|
|
257
|
-
border-right: var(--cp-dimensions-0_25) solid var(--cp-border-
|
|
282
|
+
border-right: var(--cp-dimensions-0_25) solid var(--cp-border-strong);
|
|
258
283
|
|
|
259
284
|
&:focus,
|
|
260
285
|
&:focus-within {
|
|
261
286
|
z-index: 2;
|
|
262
287
|
outline: var(--cp-dimensions-0_5) solid var(--cp-border-accent-solid);
|
|
288
|
+
border-right: var(--cp-dimensions-0_25) solid transparent;
|
|
263
289
|
}
|
|
264
290
|
}
|
|
265
291
|
|