@pequity/squirrel 6.0.12 → 6.0.13
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/cjs/chunks/index.js +2645 -0
- package/dist/cjs/chunks/p-btn.types.js +3 -0
- package/dist/cjs/chunks/p-select.js +2 -2
- package/dist/cjs/index.js +23 -31
- package/dist/cjs/inputClasses.js +127 -0
- package/dist/cjs/inputClassesMixin.js +23 -19
- package/dist/cjs/p-btn.js +56 -57
- package/dist/cjs/p-input-search.js +3 -3
- package/dist/cjs/useInputClasses.js +19 -18
- package/dist/es/chunks/index.js +2646 -0
- package/dist/es/chunks/p-btn.types.js +4 -0
- package/dist/es/chunks/p-select.js +2 -2
- package/dist/es/index.js +28 -36
- package/dist/es/inputClasses.js +127 -0
- package/dist/es/inputClassesMixin.js +23 -19
- package/dist/es/p-btn.js +56 -57
- package/dist/es/p-input-search.js +3 -3
- package/dist/es/useInputClasses.js +23 -22
- package/dist/squirrel/components/p-btn/p-btn.types.d.ts +2 -1
- package/dist/squirrel/components/p-btn/p-btn.vue.d.ts +395 -17
- package/dist/squirrel/components/p-dropdown-select/p-dropdown-select.vue.d.ts +30 -22
- package/dist/squirrel/components/p-input/p-input.vue.d.ts +11 -7
- package/dist/squirrel/components/p-input-number/p-input-number.vue.d.ts +11 -7
- package/dist/squirrel/components/p-input-percent/p-input-percent.vue.d.ts +3 -3
- package/dist/squirrel/components/p-input-search/p-input-search.vue.d.ts +16 -12
- package/dist/squirrel/components/p-select/p-select.vue.d.ts +5 -5
- package/dist/squirrel/components/p-select-list/p-select-list.vue.d.ts +30 -22
- package/dist/squirrel/components/p-textarea/p-textarea.vue.d.ts +11 -7
- package/dist/squirrel/components/p-toggle/p-toggle.vue.d.ts +11 -7
- package/dist/squirrel/composables/useInputClasses.d.ts +3 -3
- package/dist/squirrel/index.d.ts +1 -0
- package/dist/squirrel/utils/index.d.ts +2 -2
- package/dist/squirrel/utils/inputClasses.d.ts +938 -0
- package/dist/squirrel/utils/inputClassesMixin.d.ts +12 -8
- package/dist/squirrel.css +13 -13
- package/package.json +10 -7
- package/squirrel/components/p-btn/p-btn.spec.js +1 -1
- package/squirrel/components/p-btn/p-btn.types.ts +3 -1
- package/squirrel/components/p-btn/p-btn.vue +60 -74
- package/squirrel/components/p-file-upload/p-file-upload.spec.js +3 -8
- package/squirrel/components/p-inline-date-picker/p-inline-date-picker.spec.js +3 -10
- package/squirrel/components/p-input/p-input.spec.js +3 -8
- package/squirrel/components/p-input-number/p-input-number.spec.js +15 -18
- package/squirrel/components/p-input-percent/p-input-percent.spec.js +3 -8
- package/squirrel/components/p-input-percent/p-input-percent.vue +3 -3
- package/squirrel/components/p-input-search/p-input-search.vue +4 -4
- package/squirrel/components/p-select/p-select.spec.js +27 -33
- package/squirrel/components/p-select/p-select.vue +4 -4
- package/squirrel/components/p-textarea/p-textarea.spec.js +3 -8
- package/squirrel/composables/useInputClasses.spec.js +138 -77
- package/squirrel/composables/useInputClasses.ts +25 -39
- package/squirrel/index.ts +1 -0
- package/squirrel/utils/index.ts +3 -36
- package/squirrel/utils/inputClasses.ts +128 -0
- package/squirrel/utils/inputClassesMixin.spec.js +153 -64
- package/squirrel/utils/inputClassesMixin.ts +26 -43
- package/dist/cjs/inputClassesShared.js +0 -76
- package/dist/es/inputClassesShared.js +0 -76
- package/dist/squirrel/utils/inputClassesShared.d.ts +0 -45
- package/squirrel/utils/inputClassesShared.ts +0 -75
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type Size } from '../components/p-btn/p-btn.types';
|
|
2
2
|
import { type PropType } from 'vue';
|
|
3
3
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
4
|
size: {
|
|
5
|
-
type: PropType<
|
|
5
|
+
type: PropType<Size>;
|
|
6
6
|
default: string;
|
|
7
|
-
validator(value:
|
|
7
|
+
validator(value: Size): boolean;
|
|
8
8
|
};
|
|
9
9
|
errorMsg: {
|
|
10
10
|
type: StringConstructor;
|
|
@@ -18,18 +18,22 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
18
18
|
type: BooleanConstructor;
|
|
19
19
|
default: boolean;
|
|
20
20
|
};
|
|
21
|
-
}>, {}, {
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
}>, {}, {}, {
|
|
22
|
+
allClasses(): {
|
|
23
|
+
input: string;
|
|
24
|
+
label: string;
|
|
25
|
+
errorMessage: string;
|
|
26
|
+
};
|
|
24
27
|
inputClasses(): string;
|
|
25
28
|
labelClasses(): string;
|
|
29
|
+
errorMsgClasses(): string;
|
|
26
30
|
selectClasses(): string;
|
|
27
31
|
textareaClasses(): string;
|
|
28
32
|
}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
29
33
|
size: {
|
|
30
|
-
type: PropType<
|
|
34
|
+
type: PropType<Size>;
|
|
31
35
|
default: string;
|
|
32
|
-
validator(value:
|
|
36
|
+
validator(value: Size): boolean;
|
|
33
37
|
};
|
|
34
38
|
errorMsg: {
|
|
35
39
|
type: StringConstructor;
|
package/dist/squirrel.css
CHANGED
|
@@ -263,77 +263,77 @@ from {
|
|
|
263
263
|
to {
|
|
264
264
|
opacity: 0;
|
|
265
265
|
}
|
|
266
|
-
}.icon.clear[data-v-
|
|
266
|
+
}.icon.clear[data-v-78b7a6f8] {
|
|
267
267
|
background-image: url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_1634_880)'%3e%3cpath%20d='M16%208C16%206.41775%2015.5308%204.87104%2014.6518%203.55544C13.7727%202.23985%2012.5233%201.21447%2011.0615%200.608967C9.59966%200.00346629%207.99113%20-0.15496%206.43928%200.153721C4.88743%200.462403%203.46197%201.22433%202.34315%202.34315C1.22433%203.46197%200.462403%204.88743%200.153721%206.43928C-0.15496%207.99113%200.00346629%209.59966%200.608967%2011.0615C1.21447%2012.5233%202.23985%2013.7727%203.55544%2014.6518C4.87104%2015.5308%206.41775%2016%208%2016C10.1217%2016%2012.1566%2015.1571%2013.6569%2013.6569C15.1571%2012.1566%2016%2010.1217%2016%208ZM11.14%2010.1867C11.2642%2010.3116%2011.3339%2010.4805%2011.3339%2010.6567C11.3339%2010.8328%2011.2642%2011.0018%2011.14%2011.1267C11.078%2011.1892%2011.0043%2011.2388%2010.9231%2011.2726C10.8418%2011.3064%2010.7547%2011.3239%2010.6667%2011.3239C10.5787%2011.3239%2010.4915%2011.3064%2010.4103%2011.2726C10.329%2011.2388%2010.2553%2011.1892%2010.1933%2011.1267L8.12%209.05334C8.08809%209.02429%208.04649%209.0082%208.00334%209.0082C7.96019%209.0082%207.91858%209.02429%207.88667%209.05334L5.81334%2011.1267C5.6858%2011.2359%205.52175%2011.293%205.35397%2011.2865C5.18618%2011.28%205.02702%2011.2104%204.90829%2011.0917C4.78957%2010.973%204.72001%2010.8138%204.71353%2010.646C4.70705%2010.4783%204.76412%2010.3142%204.87334%2010.1867L6.94667%208.11334C6.97572%208.08142%206.99181%208.03982%206.99181%207.99667C6.99181%207.95352%206.97572%207.91192%206.94667%207.88L4.87334%205.80667C4.81085%205.7447%204.76126%205.67096%204.72741%205.58972C4.69356%205.50848%204.67614%205.42135%204.67614%205.33334C4.67614%205.24533%204.69356%205.15819%204.72741%205.07695C4.76126%204.99571%204.81085%204.92198%204.87334%204.86C4.99825%204.73584%205.16721%204.66614%205.34334%204.66614C5.51946%204.66614%205.68843%204.73584%205.81334%204.86L7.88667%206.93334C7.90163%206.94928%207.91971%206.96199%207.93977%206.97068C7.95984%206.97936%207.98147%206.98384%208.00334%206.98384C8.0252%206.98384%208.04684%206.97936%208.0669%206.97068C8.08697%206.96199%208.10504%206.94928%208.12%206.93334L10.1933%204.86C10.2555%204.79784%2010.3293%204.74854%2010.4105%204.7149C10.4917%204.68126%2010.5788%204.66394%2010.6667%204.66394C10.7546%204.66394%2010.8416%204.68126%2010.9228%204.7149C11.0041%204.74854%2011.0778%204.79784%2011.14%204.86C11.2022%204.92216%2011.2515%204.99596%2011.2851%205.07717C11.3188%205.15839%2011.3361%205.24543%2011.3361%205.33334C11.3361%205.42124%2011.3188%205.50829%2011.2851%205.5895C11.2515%205.67072%2011.2022%205.74451%2011.14%205.80667L9.06667%207.88C9.05073%207.89497%209.03802%207.91304%209.02933%207.93311C9.02065%207.95317%209.01616%207.97481%209.01616%207.99667C9.01616%208.01854%209.02065%208.04017%209.02933%208.06024C9.03802%208.0803%209.05073%208.09837%209.06667%208.11334L11.14%2010.1867Z'%20fill='%23A0AEC0'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_1634_880'%3e%3crect%20width='16'%20height='16'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");
|
|
268
268
|
background-position: center center;
|
|
269
269
|
transition: background-image 0.4s;
|
|
270
270
|
}
|
|
271
|
-
.icon.clear-sm[data-v-
|
|
271
|
+
.icon.clear-sm[data-v-78b7a6f8] {
|
|
272
272
|
background-size: 0.875rem 0.875rem;
|
|
273
273
|
width: 0.875rem;
|
|
274
274
|
height: 0.875rem;
|
|
275
275
|
bottom: 0.5rem;
|
|
276
276
|
right: 0.375rem;
|
|
277
277
|
}
|
|
278
|
-
.icon.clear-md[data-v-
|
|
278
|
+
.icon.clear-md[data-v-78b7a6f8] {
|
|
279
279
|
background-size: 1rem 1rem;
|
|
280
280
|
height: 1rem;
|
|
281
281
|
width: 1rem;
|
|
282
282
|
bottom: 0.75rem;
|
|
283
283
|
right: 0.5rem;
|
|
284
284
|
}
|
|
285
|
-
.icon.clear-lg[data-v-
|
|
285
|
+
.icon.clear-lg[data-v-78b7a6f8] {
|
|
286
286
|
background-size: 1rem 1rem;
|
|
287
287
|
height: 1rem;
|
|
288
288
|
width: 1rem;
|
|
289
289
|
bottom: 1rem;
|
|
290
290
|
right: 0.5rem;
|
|
291
291
|
}
|
|
292
|
-
.icon.clear[data-v-
|
|
292
|
+
.icon.clear[data-v-78b7a6f8]:hover {
|
|
293
293
|
background-image: url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_1634_896)'%3e%3cpath%20d='M16%208C16%206.41775%2015.5308%204.87104%2014.6518%203.55544C13.7727%202.23985%2012.5233%201.21447%2011.0615%200.608967C9.59966%200.00346629%207.99113%20-0.15496%206.43928%200.153721C4.88743%200.462403%203.46197%201.22433%202.34315%202.34315C1.22433%203.46197%200.462403%204.88743%200.153721%206.43928C-0.15496%207.99113%200.00346629%209.59966%200.608967%2011.0615C1.21447%2012.5233%202.23985%2013.7727%203.55544%2014.6518C4.87104%2015.5308%206.41775%2016%208%2016C10.1217%2016%2012.1566%2015.1571%2013.6569%2013.6569C15.1571%2012.1566%2016%2010.1217%2016%208ZM11.14%2010.1867C11.2642%2010.3116%2011.3339%2010.4805%2011.3339%2010.6567C11.3339%2010.8328%2011.2642%2011.0018%2011.14%2011.1267C11.078%2011.1892%2011.0043%2011.2388%2010.9231%2011.2726C10.8418%2011.3064%2010.7547%2011.3239%2010.6667%2011.3239C10.5787%2011.3239%2010.4915%2011.3064%2010.4103%2011.2726C10.329%2011.2388%2010.2553%2011.1892%2010.1933%2011.1267L8.12%209.05334C8.08809%209.02429%208.04649%209.0082%208.00334%209.0082C7.96019%209.0082%207.91858%209.02429%207.88667%209.05334L5.81334%2011.1267C5.6858%2011.2359%205.52175%2011.293%205.35397%2011.2865C5.18618%2011.28%205.02702%2011.2104%204.90829%2011.0917C4.78957%2010.973%204.72001%2010.8138%204.71353%2010.646C4.70705%2010.4783%204.76412%2010.3142%204.87334%2010.1867L6.94667%208.11334C6.97572%208.08142%206.99181%208.03982%206.99181%207.99667C6.99181%207.95352%206.97572%207.91192%206.94667%207.88L4.87334%205.80667C4.81085%205.7447%204.76126%205.67096%204.72741%205.58972C4.69356%205.50848%204.67614%205.42135%204.67614%205.33334C4.67614%205.24533%204.69356%205.15819%204.72741%205.07695C4.76126%204.99571%204.81085%204.92198%204.87334%204.86C4.99825%204.73584%205.16721%204.66614%205.34334%204.66614C5.51946%204.66614%205.68843%204.73584%205.81334%204.86L7.88667%206.93334C7.90163%206.94928%207.91971%206.96199%207.93977%206.97068C7.95984%206.97936%207.98147%206.98384%208.00334%206.98384C8.0252%206.98384%208.04684%206.97936%208.0669%206.97068C8.08697%206.96199%208.10504%206.94928%208.12%206.93334L10.1933%204.86C10.2555%204.79784%2010.3293%204.74854%2010.4105%204.7149C10.4917%204.68126%2010.5788%204.66394%2010.6667%204.66394C10.7546%204.66394%2010.8416%204.68126%2010.9228%204.7149C11.0041%204.74854%2011.0778%204.79784%2011.14%204.86C11.2022%204.92216%2011.2515%204.99596%2011.2851%205.07717C11.3188%205.15839%2011.3361%205.24543%2011.3361%205.33334C11.3361%205.42124%2011.3188%205.50829%2011.2851%205.5895C11.2515%205.67072%2011.2022%205.74451%2011.14%205.80667L9.06667%207.88C9.05073%207.89497%209.03802%207.91304%209.02933%207.93311C9.02065%207.95317%209.01616%207.97481%209.01616%207.99667C9.01616%208.01854%209.02065%208.04017%209.02933%208.06024C9.03802%208.0803%209.05073%208.09837%209.06667%208.11334L11.14%2010.1867Z'%20fill='%23424E6E'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_1634_896'%3e%3crect%20width='16'%20height='16'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");
|
|
294
294
|
}
|
|
295
|
-
.icon.search[data-v-
|
|
295
|
+
.icon.search[data-v-78b7a6f8] {
|
|
296
296
|
background-image: url("data:image/svg+xml,%3csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_9127_330342)'%3e%3cpath%20d='M11.705%2010.295L9.38501%208.00004C10.0193%207.0497%2010.3178%205.91467%2010.2331%204.77526C10.1484%203.63584%209.68546%202.5574%208.91771%201.71124C8.14996%200.86508%207.12147%200.299735%205.99563%200.105014C4.8698%20-0.0897079%203.71117%200.0973621%202.70383%200.636506C1.69648%201.17565%200.898177%202.03595%200.435738%203.08073C-0.0267015%204.12552%20-0.126757%205.29487%200.151467%206.40303C0.429691%207.51119%201.07024%208.4946%201.97135%209.19704C2.87246%209.89948%203.98246%2010.2807%205.12501%2010.28C6.13901%2010.2811%207.13002%209.97801%207.97001%209.41004L10.295%2011.735C10.4824%2011.9213%2010.7358%2012.0258%2011%2012.0258C11.2642%2012.0258%2011.5176%2011.9213%2011.705%2011.735C11.8018%2011.6418%2011.8788%2011.5299%2011.9314%2011.4062C11.9839%2011.2825%2012.011%2011.1495%2012.011%2011.015C12.011%2010.8806%2011.9839%2010.7476%2011.9314%2010.6239C11.8788%2010.5002%2011.8018%2010.3883%2011.705%2010.295ZM5.12501%201.50004C5.84176%201.50004%206.54241%201.71251%207.13843%202.11061C7.73445%202.50871%208.19908%203.07456%208.47359%203.73666C8.74811%204.39875%208.82019%205.12736%208.68072%205.8304C8.54125%206.53345%208.1965%207.17937%207.69004%207.68653C7.18357%208.19369%206.53813%208.53934%205.83527%208.67977C5.13242%208.82021%204.40371%208.74913%203.74125%208.47553C3.07878%208.20193%202.51228%207.73808%202.11336%207.14261C1.71444%206.54714%201.501%205.84678%201.50001%205.13004C1.50001%204.16817%201.88177%203.24562%202.56145%202.565C3.24112%201.88439%204.16314%201.50136%205.12501%201.50004Z'%20fill='%23718096'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_9127_330342'%3e%3crect%20width='12'%20height='12'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");
|
|
297
297
|
}
|
|
298
|
-
.icon.search-sm[data-v-
|
|
298
|
+
.icon.search-sm[data-v-78b7a6f8] {
|
|
299
299
|
background-size: 0.75rem 0.75rem;
|
|
300
300
|
left: 0.5rem;
|
|
301
301
|
bottom: 0.625rem;
|
|
302
302
|
width: 0.75rem;
|
|
303
303
|
height: 0.75rem;
|
|
304
304
|
}
|
|
305
|
-
.icon.search-md[data-v-
|
|
305
|
+
.icon.search-md[data-v-78b7a6f8] {
|
|
306
306
|
background-size: 1rem 1rem;
|
|
307
307
|
width: 1rem;
|
|
308
308
|
height: 1rem;
|
|
309
309
|
left: 0.75rem;
|
|
310
310
|
bottom: 0.75rem;
|
|
311
311
|
}
|
|
312
|
-
.icon.search-lg[data-v-
|
|
312
|
+
.icon.search-lg[data-v-78b7a6f8] {
|
|
313
313
|
background-size: 1rem 1rem;
|
|
314
314
|
width: 1rem;
|
|
315
315
|
height: 1rem;
|
|
316
316
|
left: 1.125rem;
|
|
317
317
|
bottom: 1rem;
|
|
318
318
|
}
|
|
319
|
-
.icon.enter[data-v-
|
|
319
|
+
.icon.enter[data-v-78b7a6f8] {
|
|
320
320
|
background-image: url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_1627_786)'%3e%3crect%20width='24'%20height='24'%20rx='5'%20fill='%23ECF1FF'/%3e%3cpath%20d='M19.17%201.03744e-05H4.83C4.19619%20-0.00130459%203.56834%200.122398%202.98239%200.364037C2.39645%200.605676%201.86392%200.960506%201.41528%201.40822C0.966641%201.85592%200.610708%202.38772%200.367855%202.97316C0.125002%203.55861%20-1.36406e-06%204.1862%200%204.82001L0%2019.17C0%2020.451%200.508874%2021.6795%201.41467%2022.5853C2.32048%2023.4911%203.549%2024%204.83%2024H19.17C20.4502%2023.9974%2021.6772%2023.4876%2022.5824%2022.5824C23.4876%2021.6772%2023.9974%2020.4502%2024%2019.17V4.82001C23.9974%203.54075%2023.4873%202.31479%2022.5818%201.41115C21.6763%200.507508%2020.4493%207.63258e-06%2019.17%201.03744e-05ZM22%2019.17C22%2019.9206%2021.7018%2020.6404%2021.1711%2021.1711C20.6404%2021.7018%2019.9206%2022%2019.17%2022H4.83C4.07944%2022%203.35962%2021.7018%202.82889%2021.1711C2.29816%2020.6404%202%2019.9206%202%2019.17V4.82001C2.00265%204.07118%202.30197%203.35393%202.83242%202.82536C3.36286%202.29679%204.08117%202.00001%204.83%202.00001H19.17C19.9188%202.00001%2020.6371%202.29679%2021.1676%202.82536C21.698%203.35393%2021.9974%204.07118%2022%204.82001V19.17Z'%20fill='%234750EB'/%3e%3cpath%20d='M17.5%207.5C17.2348%207.5%2016.9804%207.60536%2016.7929%207.79289C16.6054%207.98043%2016.5%208.23478%2016.5%208.5V11.25C16.5%2011.3163%2016.4737%2011.3799%2016.4268%2011.4268C16.3799%2011.4737%2016.3163%2011.5%2016.25%2011.5H10.75C10.6837%2011.5%2010.6201%2011.4737%2010.5732%2011.4268C10.5263%2011.3799%2010.5%2011.3163%2010.5%2011.25V9.5C10.5012%209.30138%2010.4431%209.10691%2010.3333%208.94139C10.2235%208.77587%2010.0669%208.6468%209.88348%208.57063C9.70004%208.49446%209.49807%208.47465%209.30332%208.51372C9.10857%208.55279%208.92987%208.64897%208.79%208.79L5.79%2011.79C5.60375%2011.9774%205.49921%2012.2308%205.49921%2012.495C5.49921%2012.7592%205.60375%2013.0126%205.79%2013.2L8.79%2016.2C8.88261%2016.2945%208.99306%2016.3697%209.11493%2016.4212C9.23681%2016.4727%209.36769%2016.4995%209.5%2016.5C9.76522%2016.5%2010.0196%2016.3946%2010.2071%2016.2071C10.3946%2016.0196%2010.5%2015.7652%2010.5%2015.5V13.75C10.5%2013.6837%2010.5263%2013.6201%2010.5732%2013.5732C10.6201%2013.5263%2010.6837%2013.5%2010.75%2013.5H16.5C17.0304%2013.5%2017.5391%2013.2893%2017.9142%2012.9142C18.2893%2012.5391%2018.5%2012.0304%2018.5%2011.5V8.5C18.5%208.23478%2018.3946%207.98043%2018.2071%207.79289C18.0196%207.60536%2017.7652%207.5%2017.5%207.5Z'%20fill='%234750EB'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_1627_786'%3e%3crect%20width='24'%20height='24'%20rx='5'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");
|
|
321
321
|
}
|
|
322
|
-
.icon.enter-sm[data-v-
|
|
322
|
+
.icon.enter-sm[data-v-78b7a6f8] {
|
|
323
323
|
background-size: 1rem 1rem;
|
|
324
324
|
width: 1rem;
|
|
325
325
|
height: 1rem;
|
|
326
326
|
right: 1.5rem;
|
|
327
327
|
bottom: 0.5rem;
|
|
328
328
|
}
|
|
329
|
-
.icon.enter-md[data-v-
|
|
329
|
+
.icon.enter-md[data-v-78b7a6f8] {
|
|
330
330
|
background-size: 1.5rem 1.5rem;
|
|
331
331
|
width: 1.5rem;
|
|
332
332
|
height: 1.5rem;
|
|
333
333
|
right: 2.0625rem;
|
|
334
334
|
bottom: 0.5rem;
|
|
335
335
|
}
|
|
336
|
-
.icon.enter-lg[data-v-
|
|
336
|
+
.icon.enter-lg[data-v-78b7a6f8] {
|
|
337
337
|
background-size: 1.5rem 1.5rem;
|
|
338
338
|
width: 1.5rem;
|
|
339
339
|
height: 1.5rem;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pequity/squirrel",
|
|
3
3
|
"description": "Squirrel component library",
|
|
4
|
-
"version": "6.0.
|
|
4
|
+
"version": "6.0.13",
|
|
5
5
|
"packageManager": "pnpm@9.15.5",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"scripts": {
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"@storybook/blocks": "^8.5.6",
|
|
62
62
|
"@storybook/manager-api": "^8.5.6",
|
|
63
63
|
"@storybook/test": "^8.5.6",
|
|
64
|
-
"@storybook/test-runner": "^0.21.
|
|
64
|
+
"@storybook/test-runner": "^0.21.1",
|
|
65
65
|
"@storybook/theming": "^8.5.6",
|
|
66
66
|
"@storybook/vue3": "^8.5.6",
|
|
67
67
|
"@storybook/vue3-vite": "^8.5.6",
|
|
@@ -70,14 +70,14 @@
|
|
|
70
70
|
"@types/lodash-es": "^4.17.12",
|
|
71
71
|
"@types/node": "^22.13.4",
|
|
72
72
|
"@vitejs/plugin-vue": "^5.2.1",
|
|
73
|
-
"@vitest/coverage-v8": "^3.0.
|
|
73
|
+
"@vitest/coverage-v8": "^3.0.6",
|
|
74
74
|
"@vue/compiler-sfc": "3.5.13",
|
|
75
75
|
"@vue/test-utils": "^2.4.6",
|
|
76
76
|
"@vuepic/vue-datepicker": "11.0.1",
|
|
77
77
|
"autoprefixer": "^10.4.20",
|
|
78
78
|
"dayjs": "1.11.13",
|
|
79
79
|
"eslint": "^9.20.1",
|
|
80
|
-
"eslint-plugin-storybook": "^0.11.
|
|
80
|
+
"eslint-plugin-storybook": "^0.11.3",
|
|
81
81
|
"floating-vue": "5.2.2",
|
|
82
82
|
"glob": "^11.0.1",
|
|
83
83
|
"husky": "^9.1.7",
|
|
@@ -87,22 +87,25 @@
|
|
|
87
87
|
"lodash-es": "4.17.21",
|
|
88
88
|
"make-coverage-badge": "^1.2.0",
|
|
89
89
|
"postcss": "^8.5.2",
|
|
90
|
-
"prettier": "^3.
|
|
90
|
+
"prettier": "^3.5.1",
|
|
91
91
|
"prettier-plugin-tailwindcss": "^0.6.11",
|
|
92
92
|
"resolve-tspaths": "^0.8.23",
|
|
93
93
|
"rimraf": "^6.0.1",
|
|
94
94
|
"sass": "^1.85.0",
|
|
95
|
-
"semantic-release": "^24.2.
|
|
95
|
+
"semantic-release": "^24.2.3",
|
|
96
96
|
"storybook": "^8.5.6",
|
|
97
97
|
"svgo": "^3.3.2",
|
|
98
98
|
"tailwindcss": "^3.4.17",
|
|
99
99
|
"typescript": "5.7.3",
|
|
100
100
|
"vite": "^6.1.0",
|
|
101
|
-
"vitest": "^3.0.
|
|
101
|
+
"vitest": "^3.0.6",
|
|
102
102
|
"vue": "3.5.13",
|
|
103
103
|
"vue-currency-input": "3.2.1",
|
|
104
104
|
"vue-router": "4.5.0",
|
|
105
105
|
"vue-toastification": "2.0.0-rc.5",
|
|
106
106
|
"vue-tsc": "2.2.0"
|
|
107
|
+
},
|
|
108
|
+
"dependencies": {
|
|
109
|
+
"tailwind-variants": "^0.3.1"
|
|
107
110
|
}
|
|
108
111
|
}
|
|
@@ -163,7 +163,7 @@ describe('PBtn.vue', () => {
|
|
|
163
163
|
it.each([
|
|
164
164
|
['sm', ['py-1', 'px-2', 'rounded', 'font-medium', 'text-sm']],
|
|
165
165
|
['md', ['py-2', 'px-6', 'rounded', 'font-medium', 'text-base']],
|
|
166
|
-
['lg', ['py-
|
|
166
|
+
['lg', ['py-2.5', 'px-6', 'rounded', 'font-medium', 'text-lg']],
|
|
167
167
|
])('renders a button of size %s', async (size, classes) => {
|
|
168
168
|
const wrapper = createWrapperFor(PBtn, { props: { size } });
|
|
169
169
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
v-bind="$attrs"
|
|
5
5
|
:href="sanitizeUrl(to)"
|
|
6
6
|
target="_blank"
|
|
7
|
-
:class="classes"
|
|
7
|
+
:class="classes.button"
|
|
8
8
|
:disabled="!!$attrs.disabled ? true : null"
|
|
9
9
|
:aria-disabled="!!$attrs.disabled"
|
|
10
10
|
>
|
|
@@ -16,93 +16,80 @@
|
|
|
16
16
|
:type="to ? null : nativeType"
|
|
17
17
|
:to="to ? to : null"
|
|
18
18
|
:aria-selected="selected"
|
|
19
|
-
:class="classes"
|
|
19
|
+
:class="classes.button"
|
|
20
20
|
v-bind="$attrs"
|
|
21
21
|
:disabled="!!$attrs.disabled || loading ? true : null"
|
|
22
22
|
:aria-disabled="$attrs.disabled"
|
|
23
23
|
>
|
|
24
24
|
<div :class="{ invisible: loading }"><slot></slot></div>
|
|
25
|
-
<PRingLoader
|
|
26
|
-
v-if="loading"
|
|
27
|
-
:color="loaderColor"
|
|
28
|
-
:size="loaderSize"
|
|
29
|
-
class="absolute bottom-0 left-0 right-0 top-0 flex items-center justify-center"
|
|
30
|
-
/>
|
|
25
|
+
<PRingLoader v-if="loading" :size="loaderSize" :class="classes.loader" />
|
|
31
26
|
</Component>
|
|
32
27
|
</template>
|
|
33
28
|
|
|
34
29
|
<script lang="ts">
|
|
35
|
-
import { type Size } from '@squirrel/components/p-btn/p-btn.types';
|
|
30
|
+
import { type Size, SIZES } from '@squirrel/components/p-btn/p-btn.types';
|
|
36
31
|
import PRingLoader from '@squirrel/components/p-ring-loader/p-ring-loader.vue';
|
|
37
32
|
import { isExternalLink } from '@squirrel/utils/link';
|
|
38
33
|
import { sanitizeUrl } from '@squirrel/utils/sanitization';
|
|
34
|
+
import { tv, type VariantProps } from 'tailwind-variants';
|
|
39
35
|
import { defineComponent, type PropType } from 'vue';
|
|
40
36
|
import { type RouteLocationRaw, RouterLink } from 'vue-router';
|
|
41
37
|
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
38
|
+
const btnClasses = {
|
|
39
|
+
slots: {
|
|
40
|
+
button:
|
|
41
|
+
'relative inline-block rounded font-medium outline-none disabled:pointer-events-none disabled:cursor-default disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:cursor-default aria-disabled:opacity-50',
|
|
42
|
+
loader: 'absolute bottom-0 left-0 right-0 top-0 flex items-center justify-center font-medium',
|
|
43
|
+
},
|
|
44
|
+
variants: {
|
|
45
|
+
type: {
|
|
46
|
+
primary: {
|
|
47
|
+
button: 'bg-primary text-surface hover:bg-accent active:bg-p-blue-80',
|
|
48
|
+
loader: 'text-surface',
|
|
49
|
+
},
|
|
50
|
+
secondary: {
|
|
51
|
+
button: 'bg-p-gray-20 hover:bg-p-gray-30 active:bg-p-gray-40',
|
|
52
|
+
loader: 'text-p-purple-60',
|
|
53
|
+
},
|
|
54
|
+
'primary-outline': {
|
|
55
|
+
button: 'bg-p-blue-10 text-p-purple-60 ring-1 ring-inset ring-p-purple-60 hover:bg-p-gray-20',
|
|
56
|
+
loader: 'text-p-purple-60',
|
|
57
|
+
},
|
|
58
|
+
'secondary-outline': {
|
|
59
|
+
button:
|
|
60
|
+
'bg-surface text-p-purple-60 ring-1 ring-inset ring-p-gray-30 hover:bg-p-blue-10 aria-selected:bg-p-blue-10',
|
|
61
|
+
loader: 'text-p-purple-60',
|
|
62
|
+
},
|
|
63
|
+
'secondary-outline-blue': {
|
|
64
|
+
button:
|
|
65
|
+
'bg-surface text-p-purple-60 ring-1 ring-inset ring-p-gray-30 hover:bg-p-blue-10 aria-selected:bg-p-blue-15 aria-selected:text-p-blue-60',
|
|
66
|
+
loader: 'text-p-purple-60',
|
|
67
|
+
},
|
|
68
|
+
error: { button: 'bg-p-red-40 text-white hover:bg-p-red-50', loader: 'text-white' },
|
|
69
|
+
success: { button: 'bg-p-green-40 text-white hover:bg-p-green-50', loader: 'text-white' },
|
|
70
|
+
'primary-link': { button: 'bg-transparent text-primary underline hover:text-accent', loader: 'text-p-blue-60' },
|
|
71
|
+
'secondary-ghost': { button: 'text-on-surface hover:bg-p-gray-20', loader: 'text-p-purple-60' },
|
|
72
|
+
'secondary-ghost-dark': { button: 'text-white hover:bg-p-purple-50', loader: 'text-p-blue-15' },
|
|
73
|
+
},
|
|
74
|
+
size: {
|
|
75
|
+
sm: { button: 'px-2 py-1 text-sm' },
|
|
76
|
+
md: { button: 'px-6 py-2 text-base' },
|
|
77
|
+
lg: { button: 'px-6 py-2.5 text-lg' },
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
defaultVariants: {
|
|
81
|
+
type: 'primary',
|
|
82
|
+
size: 'md',
|
|
83
|
+
},
|
|
53
84
|
} as const;
|
|
54
85
|
|
|
86
|
+
const btn = tv(btnClasses);
|
|
87
|
+
const BUTTON_TYPES = Object.keys(btnClasses.variants.type);
|
|
55
88
|
const BUTTON_NATIVE_TYPES = ['button', 'submit', 'reset'] as const;
|
|
89
|
+
const LOADER_SIZES = { sm: 24, md: 30, lg: 40 } as const satisfies { [key in Size]: number };
|
|
56
90
|
|
|
57
91
|
type ButtonNativeType = (typeof BUTTON_NATIVE_TYPES)[number];
|
|
58
|
-
type
|
|
59
|
-
type ButtonType = (typeof BUTTON_TYPES)[ButtonTypeKeys];
|
|
60
|
-
|
|
61
|
-
const DEFAULT_CLASSES = `relative inline-block outline-none disabled:opacity-50 disabled:cursor-default disabled:pointer-events-none aria-disabled:opacity-50 aria-disabled:cursor-default aria-disabled:pointer-events-none`;
|
|
62
|
-
|
|
63
|
-
type ButtonClass = {
|
|
64
|
-
[key in ButtonType]: string;
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
const BUTTON_CLASSES: ButtonClass = {
|
|
68
|
-
[BUTTON_TYPES.PRIMARY]: 'text-surface bg-primary hover:bg-accent active:bg-p-blue-80',
|
|
69
|
-
[BUTTON_TYPES.SECONDARY]: 'bg-p-gray-20 hover:bg-p-gray-30 active:bg-p-gray-40',
|
|
70
|
-
[BUTTON_TYPES.PRIMARY_OUTLINE]: 'text-p-purple-60 bg-p-blue-10 ring-1 ring-inset ring-p-purple-60 hover:bg-p-gray-20',
|
|
71
|
-
[BUTTON_TYPES.SECONDARY_OUTLINE]:
|
|
72
|
-
'text-p-purple-60 bg-surface ring-1 ring-inset ring-p-gray-30 hover:bg-p-blue-10 aria-selected:bg-p-blue-10',
|
|
73
|
-
[BUTTON_TYPES.SECONDARY_OUTLINE_BLUE]:
|
|
74
|
-
'text-p-purple-60 bg-surface ring-1 ring-inset ring-p-gray-30 hover:bg-p-blue-10 aria-selected:bg-p-blue-15 aria-selected:text-p-blue-60',
|
|
75
|
-
[BUTTON_TYPES.ERROR]: 'text-white bg-p-red-40 hover:bg-p-red-50',
|
|
76
|
-
[BUTTON_TYPES.SUCCESS]: 'text-white bg-p-green-40 hover:bg-p-green-50',
|
|
77
|
-
[BUTTON_TYPES.PRIMARY_LINK]: 'text-primary bg-transparent hover:text-accent underline',
|
|
78
|
-
[BUTTON_TYPES.SECONDARY_GHOST]: 'text-on-surface hover:bg-p-gray-20',
|
|
79
|
-
[BUTTON_TYPES.SECONDARY_GHOST_DARK]: 'text-white hover:bg-p-purple-50',
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
const BUTTON_SIZES = {
|
|
83
|
-
sm: 'py-1 px-2 rounded font-medium text-sm',
|
|
84
|
-
md: 'py-2 px-6 rounded font-medium text-base',
|
|
85
|
-
lg: 'py-3 px-6 rounded font-medium text-lg',
|
|
86
|
-
} as const satisfies { [key in Size]: string };
|
|
87
|
-
|
|
88
|
-
const LOADER_SIZES = {
|
|
89
|
-
sm: 24,
|
|
90
|
-
md: 30,
|
|
91
|
-
lg: 40,
|
|
92
|
-
} as const satisfies { [key in Size]: number };
|
|
93
|
-
|
|
94
|
-
const LOADER_COLORS = {
|
|
95
|
-
[BUTTON_TYPES.PRIMARY]: 'var(--color-p-blue-15)',
|
|
96
|
-
[BUTTON_TYPES.SECONDARY]: 'var(--color-p-purple-60)',
|
|
97
|
-
[BUTTON_TYPES.PRIMARY_OUTLINE]: 'var(--color-p-blue-60)',
|
|
98
|
-
[BUTTON_TYPES.SECONDARY_OUTLINE]: 'var(--color-p-purple-60)',
|
|
99
|
-
[BUTTON_TYPES.SECONDARY_OUTLINE_BLUE]: 'var(--color-p-purple-60)',
|
|
100
|
-
[BUTTON_TYPES.ERROR]: 'var(--color-p-blue-15)',
|
|
101
|
-
[BUTTON_TYPES.SUCCESS]: 'var(--color-p-blue-15)',
|
|
102
|
-
[BUTTON_TYPES.PRIMARY_LINK]: 'var(--color-p-blue-60)',
|
|
103
|
-
[BUTTON_TYPES.SECONDARY_GHOST]: 'var(--color-p-purple-60)',
|
|
104
|
-
[BUTTON_TYPES.SECONDARY_GHOST_DARK]: 'var(--color-p-blue-15)',
|
|
105
|
-
} as const;
|
|
92
|
+
type ButtonType = NonNullable<VariantProps<typeof btn>['type']>;
|
|
106
93
|
|
|
107
94
|
export default defineComponent({
|
|
108
95
|
name: 'PBtn',
|
|
@@ -119,7 +106,7 @@ export default defineComponent({
|
|
|
119
106
|
type: String as PropType<ButtonType>,
|
|
120
107
|
default: 'primary',
|
|
121
108
|
validator(value: ButtonType) {
|
|
122
|
-
return
|
|
109
|
+
return BUTTON_TYPES.includes(value);
|
|
123
110
|
},
|
|
124
111
|
},
|
|
125
112
|
/**
|
|
@@ -139,7 +126,7 @@ export default defineComponent({
|
|
|
139
126
|
type: String as PropType<Size>,
|
|
140
127
|
default: 'md',
|
|
141
128
|
validator(value: Size) {
|
|
142
|
-
return
|
|
129
|
+
return SIZES.includes(value);
|
|
143
130
|
},
|
|
144
131
|
},
|
|
145
132
|
/**
|
|
@@ -167,14 +154,13 @@ export default defineComponent({
|
|
|
167
154
|
},
|
|
168
155
|
computed: {
|
|
169
156
|
classes() {
|
|
170
|
-
|
|
157
|
+
const { button, loader } = btn({ type: this.type, size: this.size });
|
|
158
|
+
|
|
159
|
+
return { button: button(), loader: loader() };
|
|
171
160
|
},
|
|
172
161
|
loaderSize() {
|
|
173
162
|
return Number(`${LOADER_SIZES[this.size]}`);
|
|
174
163
|
},
|
|
175
|
-
loaderColor() {
|
|
176
|
-
return LOADER_COLORS[this.type];
|
|
177
|
-
},
|
|
178
164
|
},
|
|
179
165
|
methods: {
|
|
180
166
|
isExternalLink,
|
|
@@ -40,14 +40,9 @@ describe('PFileUpload.vue', () => {
|
|
|
40
40
|
},
|
|
41
41
|
});
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
'font-medium',
|
|
47
|
-
'text-sm',
|
|
48
|
-
"after:content-['_*']",
|
|
49
|
-
'after:text-on-error',
|
|
50
|
-
]);
|
|
43
|
+
const labelClasses = ['block', 'mb-1', 'font-medium', 'text-sm', 'after:content-["_*"]', 'after:text-on-error'];
|
|
44
|
+
|
|
45
|
+
expect(wrapper.find('label').classes()).toEqual(expect.arrayContaining(labelClasses));
|
|
51
46
|
});
|
|
52
47
|
|
|
53
48
|
it('sets the disabled state correctly', () => {
|
|
@@ -60,16 +60,9 @@ describe('PInlineDatePicker.vue', () => {
|
|
|
60
60
|
it('adds the required class when the required prop is set', () => {
|
|
61
61
|
const wrapper = createWrapper({ label: 'test datepicker', required: true });
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
'font-medium',
|
|
67
|
-
'text-sm',
|
|
68
|
-
"after:content-['_*']",
|
|
69
|
-
'after:text-on-error',
|
|
70
|
-
]);
|
|
71
|
-
|
|
72
|
-
expect(wrapper.props().required).toBe(true);
|
|
63
|
+
const labelClasses = ['block', 'mb-1', 'font-medium', 'text-sm', 'after:content-["_*"]', 'after:text-on-error'];
|
|
64
|
+
|
|
65
|
+
expect(wrapper.find('label').classes()).toEqual(expect.arrayContaining(labelClasses));
|
|
73
66
|
});
|
|
74
67
|
|
|
75
68
|
it('passes listeners to the datepicker', () => {
|
|
@@ -62,14 +62,9 @@ describe('PInput.vue', () => {
|
|
|
62
62
|
},
|
|
63
63
|
});
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
'font-medium',
|
|
69
|
-
'text-sm',
|
|
70
|
-
"after:content-['_*']",
|
|
71
|
-
'after:text-on-error',
|
|
72
|
-
]);
|
|
65
|
+
const res = ['block', 'mb-1', 'font-medium', 'text-sm', 'after:content-["_*"]', 'after:text-on-error'];
|
|
66
|
+
|
|
67
|
+
expect(wrapper.find('label').classes()).toEqual(expect.arrayContaining(res));
|
|
73
68
|
});
|
|
74
69
|
|
|
75
70
|
it('sets the disabled state correctly', () => {
|
|
@@ -33,7 +33,7 @@ describe('PInputNumber.vue', () => {
|
|
|
33
33
|
|
|
34
34
|
expect(input.exists()).toBe(true);
|
|
35
35
|
|
|
36
|
-
expect(input.classes()).toEqual(baseClasses());
|
|
36
|
+
expect(input.classes()).toEqual(expect.arrayContaining(baseClasses()));
|
|
37
37
|
expect(wrapper.find('label').exists()).toBe(false);
|
|
38
38
|
expect(wrapper.find('input-prefix').exists()).toBe(false);
|
|
39
39
|
expect(wrapper.find('div.text-xs.text-on-error.mt-1').isVisible()).toBe(false);
|
|
@@ -67,14 +67,9 @@ describe('PInputNumber.vue', () => {
|
|
|
67
67
|
},
|
|
68
68
|
});
|
|
69
69
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
'font-medium',
|
|
74
|
-
'text-sm',
|
|
75
|
-
"after:content-['_*']",
|
|
76
|
-
'after:text-on-error',
|
|
77
|
-
]);
|
|
70
|
+
const labelClasses = ['block', 'mb-1', 'font-medium', 'text-sm', 'after:content-["_*"]', 'after:text-on-error'];
|
|
71
|
+
|
|
72
|
+
expect(wrapper.find('label').classes()).toEqual(expect.arrayContaining(labelClasses));
|
|
78
73
|
});
|
|
79
74
|
|
|
80
75
|
it('sets the disabled state correctly', () => {
|
|
@@ -116,15 +111,15 @@ describe('PInputNumber.vue', () => {
|
|
|
116
111
|
},
|
|
117
112
|
});
|
|
118
113
|
|
|
114
|
+
const res = baseClasses().map((c) => {
|
|
115
|
+
if (c === 'ring-p-gray-30') return 'ring-on-error';
|
|
116
|
+
if (c === 'hover:ring-primary') return 'hover:ring-on-error';
|
|
117
|
+
if (c === 'focus:ring-primary') return 'focus:ring-on-error';
|
|
118
|
+
return c;
|
|
119
|
+
});
|
|
120
|
+
|
|
119
121
|
expect(wrapper.attributes()['data-has-error']).toBeDefined();
|
|
120
|
-
expect(wrapper.find('input').classes().
|
|
121
|
-
baseClasses()
|
|
122
|
-
.join(' ')
|
|
123
|
-
.replace(
|
|
124
|
-
'ring-p-gray-30 hover:ring-primary focus:ring-primary',
|
|
125
|
-
'ring-on-error hover:ring-on-error focus:ring-on-error'
|
|
126
|
-
)
|
|
127
|
-
);
|
|
122
|
+
expect(wrapper.find('input').classes()).toEqual(expect.arrayContaining(res));
|
|
128
123
|
expect(wrapper.find('div.text-xs.text-on-error.mt-1').isVisible()).toBe(true);
|
|
129
124
|
});
|
|
130
125
|
|
|
@@ -138,8 +133,10 @@ describe('PInputNumber.vue', () => {
|
|
|
138
133
|
},
|
|
139
134
|
});
|
|
140
135
|
|
|
136
|
+
const res = baseClasses().map((c) => (c === 'pl-4' ? 'pl-8' : c));
|
|
137
|
+
|
|
141
138
|
expect(wrapper.find('i.icon')).toBeTruthy();
|
|
142
|
-
expect(wrapper.find('input').classes()).toEqual(
|
|
139
|
+
expect(wrapper.find('input').classes()).toEqual(expect.arrayContaining(res));
|
|
143
140
|
});
|
|
144
141
|
|
|
145
142
|
it('emits a number on input', async () => {
|
|
@@ -35,15 +35,10 @@ describe('PInputPercent.vue', () => {
|
|
|
35
35
|
},
|
|
36
36
|
});
|
|
37
37
|
|
|
38
|
+
const labelClasses = ['block', 'mb-1', 'font-medium', 'text-sm', 'after:content-["_*"]', 'after:text-on-error'];
|
|
39
|
+
|
|
38
40
|
expect(wrapper.find('label').text()).toBe('test input');
|
|
39
|
-
expect(wrapper.find('label').classes()).toEqual(
|
|
40
|
-
'block',
|
|
41
|
-
'mb-1',
|
|
42
|
-
'font-medium',
|
|
43
|
-
'text-sm',
|
|
44
|
-
"after:content-['_*']",
|
|
45
|
-
'after:text-on-error',
|
|
46
|
-
]);
|
|
41
|
+
expect(wrapper.find('label').classes()).toEqual(expect.arrayContaining(labelClasses));
|
|
47
42
|
expect(wrapper.find('div.text-xs.text-on-error.mt-1').text()).toBe('error message');
|
|
48
43
|
});
|
|
49
44
|
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
</template>
|
|
10
10
|
|
|
11
11
|
<script setup lang="ts">
|
|
12
|
+
import { type Size } from '@squirrel/components/p-btn/p-btn.types';
|
|
12
13
|
import PInputNumber from '@squirrel/components/p-input-number/p-input-number.vue';
|
|
13
|
-
import { type InputSize } from '@squirrel/utils/inputClassesShared';
|
|
14
14
|
import { isNumber } from 'lodash-es';
|
|
15
15
|
import { computed, type PropType } from 'vue';
|
|
16
16
|
|
|
17
|
-
const prefixClasses: Record<
|
|
17
|
+
const prefixClasses: Record<Size, string> = {
|
|
18
18
|
sm: 'text-sm h-8 left-2',
|
|
19
19
|
md: 'text-base h-10 left-3',
|
|
20
20
|
lg: 'text-lg h-12 left-5',
|
|
@@ -30,7 +30,7 @@ const props = defineProps({
|
|
|
30
30
|
default: null,
|
|
31
31
|
},
|
|
32
32
|
size: {
|
|
33
|
-
type: String as PropType<
|
|
33
|
+
type: String as PropType<Size>,
|
|
34
34
|
default: 'md',
|
|
35
35
|
},
|
|
36
36
|
});
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
</template>
|
|
34
34
|
|
|
35
35
|
<script lang="ts">
|
|
36
|
+
import { type Size, SIZES } from '@squirrel/components/p-btn/p-btn.types';
|
|
36
37
|
import PInput from '@squirrel/components/p-input/p-input.vue';
|
|
37
|
-
import { INPUT_SIZES, type InputSize } from '@squirrel/utils/inputClassesShared';
|
|
38
38
|
import { defineComponent, type PropType } from 'vue';
|
|
39
39
|
|
|
40
40
|
type PInputInstance = InstanceType<typeof PInput>;
|
|
@@ -51,10 +51,10 @@ export default defineComponent({
|
|
|
51
51
|
default: '',
|
|
52
52
|
},
|
|
53
53
|
size: {
|
|
54
|
-
type: String as PropType<
|
|
54
|
+
type: String as PropType<Size>,
|
|
55
55
|
default: 'md',
|
|
56
|
-
validator(value:
|
|
57
|
-
return
|
|
56
|
+
validator(value: Size) {
|
|
57
|
+
return SIZES.includes(value);
|
|
58
58
|
},
|
|
59
59
|
},
|
|
60
60
|
showEnterIcon: {
|