@kiva/kv-components 3.12.0 → 3.13.1

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/CHANGELOG.md CHANGED
@@ -3,6 +3,28 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.13.1](https://github.com/kiva/kv-ui-elements/compare/@kiva/kv-components@3.13.0...@kiva/kv-components@3.13.1) (2023-04-05)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * check for button ref before adding ripple ([#233](https://github.com/kiva/kv-ui-elements/issues/233)) ([5371a88](https://github.com/kiva/kv-ui-elements/commit/5371a8816caefede244ca20b933b9cece025b0bb))
12
+
13
+
14
+
15
+
16
+
17
+ # [3.13.0](https://github.com/kiva/kv-ui-elements/compare/@kiva/kv-components@3.12.0...@kiva/kv-components@3.13.0) (2023-03-01)
18
+
19
+
20
+ ### Features
21
+
22
+ * danger, caution, and ghost variants for KvPrgoressBar ([8b7e43f](https://github.com/kiva/kv-ui-elements/commit/8b7e43fd55e02fd01e2bc5488c86dd3984a7a42d))
23
+
24
+
25
+
26
+
27
+
6
28
  # [3.12.0](https://github.com/kiva/kv-ui-elements/compare/@kiva/kv-components@3.11.2...@kiva/kv-components@3.12.0) (2023-02-10)
7
29
 
8
30
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kiva/kv-components",
3
- "version": "3.12.0",
3
+ "version": "3.13.1",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -69,5 +69,5 @@
69
69
  "optional": true
70
70
  }
71
71
  },
72
- "gitHead": "606f40dd5b92b07d876431d531b7749b678083b0"
72
+ "gitHead": "adf434631f62a70577f12b8390034d8f04d5e4f8"
73
73
  }
package/vue/KvButton.vue CHANGED
@@ -227,27 +227,30 @@ export default {
227
227
  // position the blip where the pointer click is or center it if keyboard
228
228
  const fromClick = event.detail !== 0; // determine if click came from pointer or keyboard
229
229
  const { clientX, clientY } = event;
230
- const {
231
- offsetLeft, offsetTop, offsetWidth, offsetHeight,
232
- } = buttonRef.value;
233
- let blipX;
234
- let blipY;
235
- if (fromClick) {
236
- blipX = `${clientX - offsetLeft}px`;
237
- blipY = `${clientY - offsetTop}px`;
238
- } else {
239
- blipX = `${offsetWidth / 2}px`;
240
- blipY = `${offsetHeight / 2}px`;
241
- }
242
- blipEl.style.setProperty('left', blipX);
243
- blipEl.style.setProperty('top', blipY);
244
230
 
245
- // append the blip to the button, remove it when the animation is done
246
- buttonInnerRef.value.appendChild(blipEl);
247
- blipEl.addEventListener('animationend', function animationComplete() {
248
- buttonInnerRef.value.removeChild(blipEl);
249
- blipEl.removeEventListener('animationend', animationComplete);
250
- });
231
+ if (buttonRef.value) {
232
+ const {
233
+ offsetLeft, offsetTop, offsetWidth, offsetHeight,
234
+ } = buttonRef.value;
235
+ let blipX;
236
+ let blipY;
237
+ if (fromClick) {
238
+ blipX = `${clientX - offsetLeft}px`;
239
+ blipY = `${clientY - offsetTop}px`;
240
+ } else {
241
+ blipX = `${offsetWidth / 2}px`;
242
+ blipY = `${offsetHeight / 2}px`;
243
+ }
244
+ blipEl.style.setProperty('left', blipX);
245
+ blipEl.style.setProperty('top', blipY);
246
+
247
+ // append the blip to the button, remove it when the animation is done
248
+ buttonInnerRef.value.appendChild(blipEl);
249
+ blipEl.addEventListener('animationend', function animationComplete() {
250
+ buttonInnerRef.value.removeChild(blipEl);
251
+ blipEl.removeEventListener('animationend', animationComplete);
252
+ });
253
+ }
251
254
  };
252
255
 
253
256
  const onClick = (event) => {
@@ -12,9 +12,10 @@
12
12
  >
13
13
  <div
14
14
  class="
15
- tw-h-1 tw-w-full tw-absolute tw--left-full tw-rounded-full tw-bg-brand
15
+ tw-h-1 tw-w-full tw-absolute tw--left-full tw-rounded-full
16
16
  tw-transition-all tw-duration-1000 tw-origin-left tw-ease-out
17
17
  "
18
+ :class="variantClass"
18
19
  :style="{transform: loaded ? `translateX(${percent}%)` : 'translateX(0)' }"
19
20
  >
20
21
  </div>
@@ -65,12 +66,24 @@ export default {
65
66
  default: 0,
66
67
  required: true,
67
68
  },
69
+ /**
70
+ * Appearance of the progress bar
71
+ * `primary (default), ghost, danger, caution
72
+ * */
73
+ variant: {
74
+ type: String,
75
+ default: 'primary',
76
+ validator(value) {
77
+ return ['primary', 'ghost', 'danger', 'caution'].includes(value);
78
+ },
79
+ },
68
80
  },
69
81
  setup(props) {
70
82
  const {
71
83
  min,
72
84
  max,
73
85
  value,
86
+ variant,
74
87
  } = toRefs(props);
75
88
  const loaded = ref(false);
76
89
 
@@ -81,6 +94,19 @@ export default {
81
94
  return clamped;
82
95
  });
83
96
 
97
+ const variantClass = computed(() => {
98
+ switch (variant.value) {
99
+ case 'ghost':
100
+ return 'tw-bg-tertiary';
101
+ case 'danger':
102
+ return 'tw-bg-danger';
103
+ case 'caution':
104
+ return 'tw-bg-caution';
105
+ default:
106
+ return 'tw-bg-brand';
107
+ }
108
+ });
109
+
84
110
  const animateProgressBar = () => {
85
111
  loaded.value = true;
86
112
  };
@@ -94,6 +120,7 @@ export default {
94
120
  loaded,
95
121
  percent,
96
122
  animateProgressBar,
123
+ variantClass,
97
124
  };
98
125
  },
99
126
  };
@@ -7,7 +7,8 @@ export default {
7
7
  min: 0,
8
8
  max: 100,
9
9
  value: 50,
10
- ariaLabel: '',
10
+ ariaLabel: 'Amount the loan has fundraised',
11
+ variant: 'primary',
11
12
  },
12
13
  };
13
14
 
@@ -20,11 +21,26 @@ const Template = (args, { argTypes }) => ({
20
21
  :min="min"
21
22
  :max="max"
22
23
  :value="value"
24
+ :variant="variant"
23
25
 
24
26
  ></kv-progress-bar>`,
25
27
  });
26
28
 
27
29
  export const Default = Template.bind({});
28
- Default.args = {
29
- ariaLabel: 'Amount the loan has fundraised',
30
+ Default.args = {};
31
+
32
+ // Variants
33
+ export const VariantCaution = Template.bind({});
34
+ VariantCaution.args = {
35
+ variant: 'caution',
36
+ };
37
+
38
+ export const VariantDanger = Template.bind({});
39
+ VariantDanger.args = {
40
+ variant: 'danger',
41
+ };
42
+
43
+ export const VariantGhost = Template.bind({});
44
+ VariantGhost.args = {
45
+ variant: 'ghost',
30
46
  };