@pequity/squirrel 6.0.11 → 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.
Files changed (78) hide show
  1. package/dist/cjs/chunks/index.js +2645 -0
  2. package/dist/cjs/chunks/p-btn.types.js +3 -0
  3. package/dist/cjs/chunks/p-info-icon.js +37 -0
  4. package/dist/cjs/chunks/p-select.js +2 -2
  5. package/dist/cjs/index.js +25 -33
  6. package/dist/cjs/inputClasses.js +127 -0
  7. package/dist/cjs/inputClassesMixin.js +23 -19
  8. package/dist/cjs/p-btn.js +56 -57
  9. package/dist/cjs/p-icon.js +6 -1
  10. package/dist/cjs/p-info-icon.js +2 -33
  11. package/dist/cjs/p-input-number.js +2 -2
  12. package/dist/cjs/p-input-search.js +3 -3
  13. package/dist/cjs/p-table-header-cell.js +2 -2
  14. package/dist/cjs/useInputClasses.js +19 -18
  15. package/dist/es/chunks/index.js +2646 -0
  16. package/dist/es/chunks/p-btn.types.js +4 -0
  17. package/dist/es/chunks/p-info-icon.js +38 -0
  18. package/dist/es/chunks/p-select.js +2 -2
  19. package/dist/es/index.js +74 -82
  20. package/dist/es/inputClasses.js +127 -0
  21. package/dist/es/inputClassesMixin.js +23 -19
  22. package/dist/es/p-btn.js +56 -57
  23. package/dist/es/p-icon.js +6 -1
  24. package/dist/es/p-info-icon.js +2 -33
  25. package/dist/es/p-input-number.js +2 -2
  26. package/dist/es/p-input-search.js +3 -3
  27. package/dist/es/p-table-header-cell.js +2 -2
  28. package/dist/es/useInputClasses.js +23 -22
  29. package/dist/squirrel/components/p-alert/p-alert.vue.d.ts +1 -1
  30. package/dist/squirrel/components/p-btn/p-btn.types.d.ts +2 -1
  31. package/dist/squirrel/components/p-btn/p-btn.vue.d.ts +395 -17
  32. package/dist/squirrel/components/p-drawer/p-drawer.vue.d.ts +5 -5
  33. package/dist/squirrel/components/p-dropdown-select/p-dropdown-select.vue.d.ts +30 -22
  34. package/dist/squirrel/components/p-icon/p-icon.types.d.ts +5 -0
  35. package/dist/squirrel/components/p-input/p-input.vue.d.ts +11 -7
  36. package/dist/squirrel/components/p-input-number/p-input-number.vue.d.ts +11 -7
  37. package/dist/squirrel/components/p-input-percent/p-input-percent.vue.d.ts +3 -3
  38. package/dist/squirrel/components/p-input-search/p-input-search.vue.d.ts +16 -12
  39. package/dist/squirrel/components/p-select/p-select.vue.d.ts +5 -5
  40. package/dist/squirrel/components/p-select-list/p-select-list.vue.d.ts +30 -22
  41. package/dist/squirrel/components/p-textarea/p-textarea.vue.d.ts +11 -7
  42. package/dist/squirrel/components/p-toggle/p-toggle.vue.d.ts +11 -7
  43. package/dist/squirrel/composables/useInputClasses.d.ts +3 -3
  44. package/dist/squirrel/index.d.ts +1 -0
  45. package/dist/squirrel/utils/index.d.ts +2 -2
  46. package/dist/squirrel/utils/inputClasses.d.ts +938 -0
  47. package/dist/squirrel/utils/inputClassesMixin.d.ts +12 -8
  48. package/dist/squirrel.css +23 -23
  49. package/package.json +24 -21
  50. package/squirrel/components/p-btn/p-btn.spec.js +1 -1
  51. package/squirrel/components/p-btn/p-btn.types.ts +3 -1
  52. package/squirrel/components/p-btn/p-btn.vue +60 -74
  53. package/squirrel/components/p-dropdown/p-dropdown.vue +2 -2
  54. package/squirrel/components/p-file-upload/p-file-upload.spec.js +3 -8
  55. package/squirrel/components/p-icon/p-icon.types.ts +5 -0
  56. package/squirrel/components/p-info-icon/p-info-icon.spec.js +3 -2
  57. package/squirrel/components/p-info-icon/p-info-icon.vue +3 -7
  58. package/squirrel/components/p-inline-date-picker/p-inline-date-picker.spec.js +3 -10
  59. package/squirrel/components/p-input/p-input.spec.js +3 -8
  60. package/squirrel/components/p-input-number/p-input-number.spec.js +15 -18
  61. package/squirrel/components/p-input-percent/p-input-percent.spec.js +3 -8
  62. package/squirrel/components/p-input-percent/p-input-percent.vue +3 -3
  63. package/squirrel/components/p-input-search/p-input-search.vue +4 -4
  64. package/squirrel/components/p-select/p-select.spec.js +27 -33
  65. package/squirrel/components/p-select/p-select.vue +4 -4
  66. package/squirrel/components/p-table-header-cell/p-table-header-cell.spec.js +6 -4
  67. package/squirrel/components/p-textarea/p-textarea.spec.js +3 -8
  68. package/squirrel/composables/useInputClasses.spec.js +138 -77
  69. package/squirrel/composables/useInputClasses.ts +25 -39
  70. package/squirrel/index.ts +1 -0
  71. package/squirrel/utils/index.ts +3 -36
  72. package/squirrel/utils/inputClasses.ts +128 -0
  73. package/squirrel/utils/inputClassesMixin.spec.js +153 -64
  74. package/squirrel/utils/inputClassesMixin.ts +26 -43
  75. package/dist/cjs/inputClassesShared.js +0 -76
  76. package/dist/es/inputClassesShared.js +0 -76
  77. package/dist/squirrel/utils/inputClassesShared.d.ts +0 -45
  78. package/squirrel/utils/inputClassesShared.ts +0 -75
@@ -1,10 +1,10 @@
1
- import { type InputSize } from './inputClassesShared';
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<InputSize>;
5
+ type: PropType<Size>;
6
6
  default: string;
7
- validator(value: InputSize): boolean;
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
- errorMsgClasses: string;
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<InputSize>;
34
+ type: PropType<Size>;
31
35
  default: string;
32
- validator(value: InputSize): boolean;
36
+ validator(value: Size): boolean;
33
37
  };
34
38
  errorMsg: {
35
39
  type: StringConstructor;
package/dist/squirrel.css CHANGED
@@ -49,9 +49,9 @@ div[id^=popper_].dropdown .v-popper__inner .dropdown-menu .dropdown-header {
49
49
 
50
50
  padding-right: 1rem;
51
51
 
52
- padding-top: 0.25rem;
52
+ padding-top: 0.5rem;
53
53
 
54
- padding-bottom: 0.25rem;
54
+ padding-bottom: 0.5rem;
55
55
 
56
56
  font-size: 0.75rem;
57
57
 
@@ -59,6 +59,8 @@ div[id^=popper_].dropdown .v-popper__inner .dropdown-menu .dropdown-header {
59
59
 
60
60
  text-transform: uppercase;
61
61
 
62
+ line-height: 1.25rem;
63
+
62
64
  color: rgb(var(--color-p-gray-40))
63
65
  }
64
66
  div[id^=popper_].dropdown .v-popper__inner .dropdown-menu .dropdown-item {
@@ -77,15 +79,17 @@ div[id^=popper_].dropdown .v-popper__inner .dropdown-menu .dropdown-item {
77
79
 
78
80
  padding-right: 1rem;
79
81
 
80
- padding-top: 0.25rem;
82
+ padding-top: 0.5rem;
81
83
 
82
- padding-bottom: 0.25rem;
84
+ padding-bottom: 0.5rem;
83
85
 
84
86
  text-align: left;
85
87
 
86
88
  font-size: 0.875rem;
87
89
 
88
- font-weight: 500
90
+ font-weight: 500;
91
+
92
+ line-height: 1.25rem
89
93
  }
90
94
  div[id^=popper_].dropdown .v-popper__inner .dropdown-menu .dropdown-item:active,
91
95
  div[id^=popper_].dropdown .v-popper__inner .dropdown-menu .dropdown-item.active {
@@ -259,87 +263,83 @@ from {
259
263
  to {
260
264
  opacity: 0;
261
265
  }
262
- }.icon.clear[data-v-2674242c] {
266
+ }.icon.clear[data-v-78b7a6f8] {
263
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");
264
268
  background-position: center center;
265
269
  transition: background-image 0.4s;
266
270
  }
267
- .icon.clear-sm[data-v-2674242c] {
271
+ .icon.clear-sm[data-v-78b7a6f8] {
268
272
  background-size: 0.875rem 0.875rem;
269
273
  width: 0.875rem;
270
274
  height: 0.875rem;
271
275
  bottom: 0.5rem;
272
276
  right: 0.375rem;
273
277
  }
274
- .icon.clear-md[data-v-2674242c] {
278
+ .icon.clear-md[data-v-78b7a6f8] {
275
279
  background-size: 1rem 1rem;
276
280
  height: 1rem;
277
281
  width: 1rem;
278
282
  bottom: 0.75rem;
279
283
  right: 0.5rem;
280
284
  }
281
- .icon.clear-lg[data-v-2674242c] {
285
+ .icon.clear-lg[data-v-78b7a6f8] {
282
286
  background-size: 1rem 1rem;
283
287
  height: 1rem;
284
288
  width: 1rem;
285
289
  bottom: 1rem;
286
290
  right: 0.5rem;
287
291
  }
288
- .icon.clear[data-v-2674242c]:hover {
292
+ .icon.clear[data-v-78b7a6f8]:hover {
289
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");
290
294
  }
291
- .icon.search[data-v-2674242c] {
295
+ .icon.search[data-v-78b7a6f8] {
292
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");
293
297
  }
294
- .icon.search-sm[data-v-2674242c] {
298
+ .icon.search-sm[data-v-78b7a6f8] {
295
299
  background-size: 0.75rem 0.75rem;
296
300
  left: 0.5rem;
297
301
  bottom: 0.625rem;
298
302
  width: 0.75rem;
299
303
  height: 0.75rem;
300
304
  }
301
- .icon.search-md[data-v-2674242c] {
305
+ .icon.search-md[data-v-78b7a6f8] {
302
306
  background-size: 1rem 1rem;
303
307
  width: 1rem;
304
308
  height: 1rem;
305
309
  left: 0.75rem;
306
310
  bottom: 0.75rem;
307
311
  }
308
- .icon.search-lg[data-v-2674242c] {
312
+ .icon.search-lg[data-v-78b7a6f8] {
309
313
  background-size: 1rem 1rem;
310
314
  width: 1rem;
311
315
  height: 1rem;
312
316
  left: 1.125rem;
313
317
  bottom: 1rem;
314
318
  }
315
- .icon.enter[data-v-2674242c] {
319
+ .icon.enter[data-v-78b7a6f8] {
316
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");
317
321
  }
318
- .icon.enter-sm[data-v-2674242c] {
322
+ .icon.enter-sm[data-v-78b7a6f8] {
319
323
  background-size: 1rem 1rem;
320
324
  width: 1rem;
321
325
  height: 1rem;
322
326
  right: 1.5rem;
323
327
  bottom: 0.5rem;
324
328
  }
325
- .icon.enter-md[data-v-2674242c] {
329
+ .icon.enter-md[data-v-78b7a6f8] {
326
330
  background-size: 1.5rem 1.5rem;
327
331
  width: 1.5rem;
328
332
  height: 1.5rem;
329
333
  right: 2.0625rem;
330
334
  bottom: 0.5rem;
331
335
  }
332
- .icon.enter-lg[data-v-2674242c] {
336
+ .icon.enter-lg[data-v-78b7a6f8] {
333
337
  background-size: 1.5rem 1.5rem;
334
338
  width: 1.5rem;
335
339
  height: 1.5rem;
336
340
  right: 2.5rem;
337
341
  bottom: 0.75rem;
338
- }
339
- .bg-info-circle-icon[data-v-804e74f5] {
340
- 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_4002_33291)'%3e%3cpath%20d='M0.5%206C0.5%207.45869%201.07946%208.85764%202.11091%209.88909C3.14236%2010.9205%204.54131%2011.5%206%2011.5C7.45869%2011.5%208.85764%2010.9205%209.88909%209.88909C10.9205%208.85764%2011.5%207.45869%2011.5%206C11.5%204.54131%2010.9205%203.14236%209.88909%202.11091C8.85764%201.07946%207.45869%200.5%206%200.5C4.54131%200.5%203.14236%201.07946%202.11091%202.11091C1.07946%203.14236%200.5%204.54131%200.5%206Z'%20stroke='%231A123B'%20stroke-miterlimit='10'/%3e%3cpath%20d='M6.5%203.5H5.5V2.5H6.5V3.5Z'%20fill='%231A123B'/%3e%3cpath%20d='M4.5%205H6V9M4.5%208.5H7.5'%20stroke='%231A123B'%20stroke-miterlimit='10'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_4002_33291'%3e%3crect%20width='12'%20height='12'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");
341
- }
342
- .fadeInDown[data-v-9ad56d4f] {
342
+ }.fadeInDown[data-v-9ad56d4f] {
343
343
  animation-duration: 0.4s;
344
344
  animation-fill-mode: both;
345
345
  animation-name: fadeInDown-9ad56d4f;
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.11",
4
+ "version": "6.0.13",
5
5
  "packageManager": "pnpm@9.15.5",
6
6
  "type": "module",
7
7
  "scripts": {
@@ -53,31 +53,31 @@
53
53
  "@playwright/test": "^1.50.1",
54
54
  "@semantic-release/changelog": "^6.0.3",
55
55
  "@semantic-release/git": "^10.0.1",
56
- "@storybook/addon-a11y": "^8.5.4",
57
- "@storybook/addon-actions": "^8.5.4",
58
- "@storybook/addon-essentials": "^8.5.4",
59
- "@storybook/addon-interactions": "^8.5.4",
60
- "@storybook/addon-links": "^8.5.4",
61
- "@storybook/blocks": "^8.5.4",
62
- "@storybook/manager-api": "^8.5.4",
63
- "@storybook/test": "^8.5.4",
64
- "@storybook/test-runner": "^0.21.0",
65
- "@storybook/theming": "^8.5.4",
66
- "@storybook/vue3": "^8.5.4",
67
- "@storybook/vue3-vite": "^8.5.4",
56
+ "@storybook/addon-a11y": "^8.5.6",
57
+ "@storybook/addon-actions": "^8.5.6",
58
+ "@storybook/addon-essentials": "^8.5.6",
59
+ "@storybook/addon-interactions": "^8.5.6",
60
+ "@storybook/addon-links": "^8.5.6",
61
+ "@storybook/blocks": "^8.5.6",
62
+ "@storybook/manager-api": "^8.5.6",
63
+ "@storybook/test": "^8.5.6",
64
+ "@storybook/test-runner": "^0.21.1",
65
+ "@storybook/theming": "^8.5.6",
66
+ "@storybook/vue3": "^8.5.6",
67
+ "@storybook/vue3-vite": "^8.5.6",
68
68
  "@tanstack/vue-virtual": "3.13.0",
69
69
  "@types/jsdom": "^21.1.7",
70
70
  "@types/lodash-es": "^4.17.12",
71
- "@types/node": "^22.13.1",
71
+ "@types/node": "^22.13.4",
72
72
  "@vitejs/plugin-vue": "^5.2.1",
73
- "@vitest/coverage-v8": "^3.0.5",
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.2",
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.4.2",
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
- "sass": "^1.84.0",
95
- "semantic-release": "^24.2.2",
96
- "storybook": "^8.5.4",
94
+ "sass": "^1.85.0",
95
+ "semantic-release": "^24.2.3",
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.5",
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-3', 'px-6', 'rounded', 'font-medium', 'text-lg']],
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
 
@@ -1 +1,3 @@
1
- export type Size = 'sm' | 'md' | 'lg';
1
+ export const SIZES = ['sm', 'md', 'lg'] as const;
2
+
3
+ export type Size = (typeof SIZES)[number];
@@ -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 BUTTON_TYPES = {
43
- PRIMARY: 'primary',
44
- SECONDARY: 'secondary',
45
- PRIMARY_OUTLINE: 'primary-outline',
46
- SECONDARY_OUTLINE: 'secondary-outline',
47
- SECONDARY_OUTLINE_BLUE: 'secondary-outline-blue',
48
- ERROR: 'error',
49
- SUCCESS: 'success',
50
- PRIMARY_LINK: 'primary-link',
51
- SECONDARY_GHOST: 'secondary-ghost',
52
- SECONDARY_GHOST_DARK: 'secondary-ghost-dark',
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 ButtonTypeKeys = keyof typeof BUTTON_TYPES;
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 Object.values(BUTTON_TYPES).includes(value);
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 Object.keys(BUTTON_SIZES).includes(value);
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
- return `${DEFAULT_CLASSES} ${BUTTON_SIZES[this.size]} ${BUTTON_CLASSES[this.type]}`;
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,
@@ -243,10 +243,10 @@ div[id^='popper_'].dropdown .v-popper__inner .dropdown-menu {
243
243
  @apply py-2;
244
244
  }
245
245
  div[id^='popper_'].dropdown .v-popper__inner .dropdown-menu .dropdown-header {
246
- @apply block whitespace-nowrap px-4 py-1 text-xs font-semibold uppercase text-p-gray-40;
246
+ @apply block whitespace-nowrap px-4 py-2 text-xs font-semibold uppercase leading-5 text-p-gray-40;
247
247
  }
248
248
  div[id^='popper_'].dropdown .v-popper__inner .dropdown-menu .dropdown-item {
249
- @apply clear-both block w-full cursor-pointer whitespace-nowrap px-4 py-1 text-left text-sm font-medium;
249
+ @apply clear-both block w-full cursor-pointer whitespace-nowrap px-4 py-2 text-left text-sm font-medium leading-5;
250
250
  }
251
251
  div[id^='popper_'].dropdown .v-popper__inner .dropdown-menu .dropdown-item:active,
252
252
  div[id^='popper_'].dropdown .v-popper__inner .dropdown-menu .dropdown-item.active {
@@ -40,14 +40,9 @@ describe('PFileUpload.vue', () => {
40
40
  },
41
41
  });
42
42
 
43
- expect(wrapper.find('label').classes()).toEqual([
44
- 'block',
45
- 'mb-1',
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', () => {
@@ -28,6 +28,11 @@ export const P_ICON_ALIASES = {
28
28
  filters: 'mage:filter',
29
29
  'bar-chart': 'material-symbols:bar-chart-4-bars-rounded',
30
30
  list: 'material-symbols:format-list-bulleted',
31
+ formula: 'fluent:math-formula-20-filled',
32
+ refresh: 'ri:loop-left-line',
33
+ download: 'tdesign:download',
34
+ upload: 'tdesign:upload',
35
+ info: 'streamline:information-circle',
31
36
  } as const;
32
37
 
33
38
  export type PIconAlias = keyof typeof P_ICON_ALIASES;
@@ -5,12 +5,13 @@ describe('PInfoIcon.vue', () => {
5
5
  it('renders an info icon', async () => {
6
6
  const wrapper = createWrapperFor(PInfoIcon, {
7
7
  props: { text: 'Lorem ipsum dolor sit amet.' },
8
+ global: { PIcon: true },
8
9
  });
9
10
 
10
- const iClasses = ['bg-info-circle-icon', 'block', 'h-3', 'w-3'];
11
+ const iClasses = ['block', 'h-3', 'w-3'];
11
12
  const divClasses = ['v-popper', 'v-popper--theme-tooltip'];
12
13
 
13
- const i = wrapper.find('i');
14
+ const i = wrapper.findComponent({ name: 'PIcon' });
14
15
 
15
16
  expect(divClasses.every((c) => wrapper.classes().includes(c))).toBe(true);
16
17
  expect(i.exists()).toBe(true);
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <VTooltip :popper-triggers="['hover']" :delay="{ show: 750, hide: 0 }" :disabled="!$slots.default && !text">
3
- <i class="bg-info-circle-icon block h-3 w-3"></i>
3
+ <PIcon icon="info" class="block h-3 w-3" width="12" />
4
4
  <template #popper>
5
5
  <slot>{{ text }}</slot>
6
6
  </template>
@@ -8,6 +8,8 @@
8
8
  </template>
9
9
 
10
10
  <script setup lang="ts">
11
+ import PIcon from '@squirrel/components/p-icon/p-icon.vue';
12
+
11
13
  defineOptions({
12
14
  name: 'PInfoIcon',
13
15
  });
@@ -20,9 +22,3 @@ withDefaults(defineProps<Props>(), {
20
22
  text: null,
21
23
  });
22
24
  </script>
23
-
24
- <style scoped>
25
- .bg-info-circle-icon {
26
- background-image: url('@squirrel/assets/info-circle-icon.svg');
27
- }
28
- </style>
@@ -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
- expect(wrapper.find('label').classes()).toEqual([
64
- 'block',
65
- 'mb-1',
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
- expect(wrapper.find('label').classes()).toEqual([
66
- 'block',
67
- 'mb-1',
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', () => {