@pocketprep/ui-kit 3.4.51 → 3.4.53

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.
@@ -7,8 +7,9 @@
7
7
  'uikit-checkbox--disabled': disabled,
8
8
  'uikit-checkbox--checked': modelValue === true,
9
9
  'uikit-checkbox--checked--disabled': disabled && modelValue === true,
10
- 'uikit-checkbox--indeterminate': modelValue === null
10
+ 'uikit-checkbox--indeterminate': modelValue === null,
11
11
  }"
12
+ :style="checkboxStyles"
12
13
  :tabindex="disabled ? -1 : 0"
13
14
  :aria-checked="modelValue === true ? true : modelValue === null ? 'mixed' : false"
14
15
  role="checkbox"
@@ -25,6 +26,7 @@
25
26
  v-dark="isDarkMode"
26
27
  type="check"
27
28
  class="uikit-checkbox__check"
29
+ :style="checkboxCheckStyles"
28
30
  />
29
31
  <div
30
32
  v-if="modelValue === null"
@@ -54,6 +56,12 @@ export default class Checkbox extends Vue {
54
56
  @Prop({ default: false }) isDarkMode!: boolean
55
57
  @Prop({ default: false }) hasLabel!: boolean
56
58
 
59
+ /******* Element-specific style props *******/
60
+ // .uikit-checkbox
61
+ @Prop() checkboxStyles!: Record<string, string>
62
+ // .uikit-checkbox__check
63
+ @Prop() checkboxCheckStyles!: Record<string, string>
64
+
57
65
  hover = false
58
66
  focus = false
59
67
 
@@ -37,21 +37,16 @@
37
37
  role="radio"
38
38
  :aria-checked="modelValue && item.value === modelValue.value"
39
39
  :aria-label="`${item.label}${ item.helperText ? ` ${item.helperText}` : '' }`"
40
- @click="!(disabled || item.disabled) && selectItem(item)"
40
+ @click="!(disabled || item.disabled ) && selectItem(item)"
41
41
  @keydown.enter.space="keyPressedItem"
42
42
  @mousedown.prevent
43
43
  >
44
44
  <slot name="radioItem" :item="item">
45
- <div
46
- v-dark="isDarkMode"
47
- class="uikit-radio__item-btn"
48
- :class="{
49
- 'uikit-radio__item-btn--selected': modelValue && item.value === modelValue.value,
50
- 'uikit-radio__item-btn--disabled': disabled || item.disabled,
51
- 'uikit-radio__item-btn--selected--disabled': (disabled || item.disabled) && modelValue
52
- && item.value === modelValue.value,
53
- }"
54
- aria-hidden="true"
45
+ <RadioButton
46
+ :selected="!!(modelValue && item.value === modelValue.value)"
47
+ :disabled="!!(disabled || item.disabled)"
48
+ :isDarkMode="isDarkMode"
49
+ color="blue"
55
50
  />
56
51
  <div class="uikit-radio__item-text" aria-hidden="true">
57
52
  <slot name="radioItemLabel" :item="item">
@@ -73,6 +68,7 @@
73
68
  <script lang="ts">
74
69
  import { Component, Vue, Prop, Emit } from 'vue-facing-decorator'
75
70
  import { dark } from '../../directives'
71
+ import RadioButton from './RadioButton.vue'
76
72
 
77
73
  interface IItem {
78
74
  value: string
@@ -82,6 +78,9 @@ interface IItem {
82
78
  }
83
79
 
84
80
  @Component({
81
+ components: {
82
+ RadioButton,
83
+ },
85
84
  directives: {
86
85
  dark,
87
86
  },
@@ -302,6 +301,7 @@ export default class Radio extends Vue {
302
301
 
303
302
  &--disabled {
304
303
  opacity: 0.4;
304
+
305
305
  }
306
306
 
307
307
  &::before {
@@ -0,0 +1,140 @@
1
+ <script setup lang="ts">
2
+ import { dark as vDark } from '../../directives'
3
+
4
+ defineProps<{
5
+ selected: boolean
6
+ disabled: boolean
7
+ isDarkMode: boolean
8
+ color: 'blue' | 'green' | 'gray'
9
+ }>()
10
+ </script>
11
+
12
+ <template>
13
+ <div
14
+ v-dark="isDarkMode"
15
+ class="uikit-radio-btn"
16
+ :class="{
17
+ 'uikit-radio-btn--selected': selected,
18
+ 'uikit-radio-btn--disabled': disabled,
19
+ [`uikit-radio-btn--${color}`]: true,
20
+ }"
21
+ aria-hidden="true"
22
+ />
23
+ </template>
24
+
25
+ <style lang="scss" scoped>
26
+ @import '../../styles/colors';
27
+
28
+ .uikit-radio-btn {
29
+ width: 18px;
30
+ height: 18px;
31
+ border: 1px solid $steel;
32
+ background: $white;
33
+ border-radius: 18px;
34
+ position: relative;
35
+ box-sizing: border-box;
36
+
37
+ &::before {
38
+ content: '';
39
+ position: absolute;
40
+ left: 50%;
41
+ top: 50%;
42
+ transform: translate(-50%, -50%);
43
+ width: 12px;
44
+ height: 12px;
45
+ border-radius: 12px;
46
+ background: $brand-blue;
47
+ display: none;
48
+ }
49
+
50
+ &--dark {
51
+ background-color: transparent;
52
+ border-color: $pewter;
53
+
54
+ &::before {
55
+ background: $banana-bread;
56
+ }
57
+ }
58
+
59
+ &--disabled {
60
+ background-color: $fog;
61
+ opacity: 0.6;
62
+ border-color: rgba($steel, 0.6);
63
+
64
+ &--dark {
65
+ background-color: $moonlit-ocean;
66
+ border-color: $slate;
67
+ opacity: 1;
68
+ }
69
+ }
70
+
71
+ &--selected {
72
+ border-color: $brand-blue;
73
+ background: transparent;
74
+
75
+ &--dark {
76
+ border-color: $banana-bread;
77
+ }
78
+
79
+ &::before {
80
+ display: block;
81
+ }
82
+ }
83
+
84
+ &--selected#{&}--disabled {
85
+ opacity: 0.4;
86
+ }
87
+
88
+ &--selected#{&}--green {
89
+ border-color: $cadaverous;
90
+ &::before {
91
+ background: $cadaverous;
92
+ }
93
+ &--dark {
94
+ border-color: $jungle-green;
95
+ &::before {
96
+ background: $jungle-green;
97
+ }
98
+ }
99
+ }
100
+
101
+ &--selected#{&}--gray {
102
+ &::before {
103
+ background: $slate;
104
+ }
105
+ &--dark {
106
+ &::before {
107
+ background: $pewter;
108
+ }
109
+ }
110
+ }
111
+
112
+ &--green {
113
+ &::before {
114
+ background: $jungle-green;
115
+ }
116
+
117
+ &--dark {
118
+ &::before {
119
+ background: $jungle-green;
120
+ }
121
+ }
122
+ }
123
+
124
+ &--gray {
125
+ border-color: $slate;
126
+
127
+ &::before {
128
+ background: $slate;
129
+ }
130
+
131
+ &--dark {
132
+ border-color: $pewter;
133
+
134
+ &::before {
135
+ background: $pewter;
136
+ }
137
+ }
138
+ }
139
+ }
140
+ </style>