@carbon/vue 2.30.0-canary.1 → 2.30.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/CHANGELOG.md +5 -0
- package/dist/carbon-vue.common.js +221 -109
- package/dist/carbon-vue.common.js.map +1 -1
- package/dist/carbon-vue.umd.js +221 -109
- package/dist/carbon-vue.umd.js.map +1 -1
- package/dist/carbon-vue.umd.min.js +3 -3
- package/dist/carbon-vue.umd.min.js.map +1 -1
- package/package.json +2 -2
- package/src/components/cv-accordion/cv-accordion-item.vue +3 -1
- package/src/components/cv-checkbox/cv-checkbox.vue +2 -1
- package/src/components/cv-combo-box/cv-combo-box.vue +6 -2
- package/src/components/cv-dropdown/cv-dropdown.vue +2 -6
- package/src/components/cv-file-uploader/cv-file-uploader.vue +3 -1
- package/src/components/cv-multi-select/cv-multi-select.vue +6 -2
- package/src/components/cv-number-input/cv-number-input.vue +2 -1
- package/src/components/cv-overflow-menu/cv-overflow-menu.vue +2 -1
- package/src/components/cv-radio-button/cv-radio-button.vue +2 -1
- package/src/components/cv-search/cv-search.vue +2 -1
- package/src/components/cv-select/cv-select.vue +2 -1
- package/src/components/cv-slider/cv-slider.vue +2 -1
- package/src/components/cv-text-area/cv-text-area.vue +2 -6
- package/src/components/cv-text-input/cv-text-input.vue +2 -6
- package/src/components/cv-tile/_cv-tile-clickable.vue +3 -1
- package/src/components/cv-tile/_cv-tile-expandable.vue +3 -1
- package/src/components/cv-tile/_cv-tile-selectable.vue +3 -1
- package/src/components/cv-tile/cv-tile.vue +15 -1
- package/src/components/cv-time-picker/cv-time-picker.vue +3 -1
- package/src/components/cv-toggle/cv-toggle.vue +3 -1
- package/src/mixins/methods-mixin.js +18 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carbon/vue",
|
|
3
3
|
"description": "A collection of components for the Carbon Design System built using Vue.js",
|
|
4
|
-
"version": "2.30.0
|
|
4
|
+
"version": "2.30.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -73,5 +73,5 @@
|
|
|
73
73
|
"eslint-plugin-prettier": "^3.1.1",
|
|
74
74
|
"vue-template-compiler": "^2.6.10"
|
|
75
75
|
},
|
|
76
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "a9d5f597ab1b9f4872ffba2fa250eab3fbf7b4f1"
|
|
77
77
|
}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
@animationend="onAnimationEnd"
|
|
20
20
|
>
|
|
21
21
|
<button
|
|
22
|
+
ref="button"
|
|
22
23
|
type="button"
|
|
23
24
|
:class="`${carbonPrefix}--accordion__heading`"
|
|
24
25
|
:aria-expanded="dataOpen ? 'true' : 'false'"
|
|
@@ -40,10 +41,11 @@
|
|
|
40
41
|
import ChevronRight16 from '@carbon/icons-vue/es/chevron--right/16';
|
|
41
42
|
import uidMixin from '../../mixins/uid-mixin';
|
|
42
43
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
44
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
43
45
|
|
|
44
46
|
export default {
|
|
45
47
|
name: 'CvAccordionItem',
|
|
46
|
-
mixins: [uidMixin, carbonPrefixMixin],
|
|
48
|
+
mixins: [uidMixin, carbonPrefixMixin, methodsMixin({ button: ['blur', 'focus'] })],
|
|
47
49
|
components: { ChevronRight16 },
|
|
48
50
|
props: {
|
|
49
51
|
open: { type: Boolean, default: false },
|
|
@@ -36,10 +36,11 @@
|
|
|
36
36
|
import checkMixin from '../../mixins/check-mixin';
|
|
37
37
|
import uidMixin from '../../mixins/uid-mixin';
|
|
38
38
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
39
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
39
40
|
|
|
40
41
|
export default {
|
|
41
42
|
name: 'CvCheckbox',
|
|
42
|
-
mixins: [checkMixin, uidMixin, carbonPrefixMixin],
|
|
43
|
+
mixins: [checkMixin, uidMixin, carbonPrefixMixin, methodsMixin({ input: ['blur', 'focus'] })],
|
|
43
44
|
inheritAttrs: false,
|
|
44
45
|
props: {
|
|
45
46
|
hideLabel: Boolean,
|
|
@@ -44,7 +44,10 @@
|
|
|
44
44
|
>
|
|
45
45
|
<input
|
|
46
46
|
ref="input"
|
|
47
|
-
:class="[
|
|
47
|
+
:class="[
|
|
48
|
+
`${carbonPrefix}--text-input`,
|
|
49
|
+
{ [`${carbonPrefix}--text-input--empty`]: !filter || filter.length === 0 },
|
|
50
|
+
]"
|
|
48
51
|
:aria-controls="uid"
|
|
49
52
|
aria-autocomplete="list"
|
|
50
53
|
role="combobox"
|
|
@@ -116,11 +119,12 @@ import ChevronDown16 from '@carbon/icons-vue/es/chevron--down/16';
|
|
|
116
119
|
import Close16 from '@carbon/icons-vue/es/close/16';
|
|
117
120
|
import uidMixin from '../../mixins/uid-mixin';
|
|
118
121
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
122
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
119
123
|
|
|
120
124
|
export default {
|
|
121
125
|
name: 'CvComboBox',
|
|
122
126
|
inheritAttrs: false,
|
|
123
|
-
mixins: [themeMixin, uidMixin, carbonPrefixMixin],
|
|
127
|
+
mixins: [themeMixin, uidMixin, carbonPrefixMixin, methodsMixin({ input: ['focus', 'blur'] })],
|
|
124
128
|
components: { WarningFilled16, ChevronDown16, Close16 },
|
|
125
129
|
props: {
|
|
126
130
|
autoFilter: Boolean,
|
|
@@ -112,6 +112,7 @@
|
|
|
112
112
|
<script>
|
|
113
113
|
import themeMixin from '../../mixins/theme-mixin';
|
|
114
114
|
import uidMixin from '../../mixins/uid-mixin';
|
|
115
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
115
116
|
import WarningFilled16 from '@carbon/icons-vue/es/warning--filled/16';
|
|
116
117
|
import ChevronDown16 from '@carbon/icons-vue/es/chevron--down/16';
|
|
117
118
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
@@ -119,7 +120,7 @@ import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
|
119
120
|
export default {
|
|
120
121
|
name: 'CvDropdown',
|
|
121
122
|
inheritAttrs: false,
|
|
122
|
-
mixins: [themeMixin, uidMixin, carbonPrefixMixin],
|
|
123
|
+
mixins: [themeMixin, uidMixin, carbonPrefixMixin, methodsMixin({ button: ['blur', 'focus'] })],
|
|
123
124
|
components: { WarningFilled16, ChevronDown16 },
|
|
124
125
|
props: {
|
|
125
126
|
disabled: Boolean,
|
|
@@ -324,11 +325,6 @@ export default {
|
|
|
324
325
|
}
|
|
325
326
|
}
|
|
326
327
|
},
|
|
327
|
-
focus() {
|
|
328
|
-
this.$nextTick(() => {
|
|
329
|
-
this.$refs.button.focus();
|
|
330
|
-
});
|
|
331
|
-
},
|
|
332
328
|
},
|
|
333
329
|
};
|
|
334
330
|
</script>
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
]"
|
|
15
15
|
role="button"
|
|
16
16
|
tabindex="0"
|
|
17
|
+
ref="focusTarget"
|
|
17
18
|
@keydown.enter.prevent="onShow()"
|
|
18
19
|
@keydown.space.prevent
|
|
19
20
|
@keyup.space.prevent="onShow()"
|
|
@@ -117,11 +118,12 @@ import Close16 from '@carbon/icons-vue/es/close/16';
|
|
|
117
118
|
import CvWrapper from '../cv-wrapper/_cv-wrapper';
|
|
118
119
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
119
120
|
import { STATES, KINDS } from './consts.js';
|
|
121
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
120
122
|
|
|
121
123
|
export default {
|
|
122
124
|
name: 'CvFileUploader',
|
|
123
125
|
components: { CvFormItem, CheckmarkFilled16, WarningFilled16, Close16, CvWrapper },
|
|
124
|
-
mixins: [uidMixin, carbonPrefixMixin],
|
|
126
|
+
mixins: [uidMixin, carbonPrefixMixin, methodsMixin({ focusTarget: ['blur', 'focus'] })],
|
|
125
127
|
inheritAttrs: false,
|
|
126
128
|
props: {
|
|
127
129
|
clearOnReselect: Boolean,
|
|
@@ -79,7 +79,10 @@
|
|
|
79
79
|
<template v-else>
|
|
80
80
|
<input
|
|
81
81
|
ref="input"
|
|
82
|
-
:class="
|
|
82
|
+
:class="[
|
|
83
|
+
`${carbonPrefix}--text-input`,
|
|
84
|
+
{ [`${carbonPrefix}--text-input--empty`]: !filter || filter.length === 0 },
|
|
85
|
+
]"
|
|
83
86
|
:aria-controls="uid"
|
|
84
87
|
aria-autocomplete="list"
|
|
85
88
|
role="combobox"
|
|
@@ -156,6 +159,7 @@ import uidMixin from '../../mixins/uid-mixin';
|
|
|
156
159
|
import CvCheckbox from '../cv-checkbox/cv-checkbox';
|
|
157
160
|
import CvTag from '../cv-tag/cv-tag';
|
|
158
161
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
162
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
159
163
|
|
|
160
164
|
const TOP_AFTER_REOPEN = 0;
|
|
161
165
|
const TOP = 1;
|
|
@@ -165,7 +169,7 @@ const selectionFeedbackOptions = ['top-after-reopen', 'top', 'fixed'];
|
|
|
165
169
|
export default {
|
|
166
170
|
name: 'CvMultiSelect',
|
|
167
171
|
inheritAttrs: false,
|
|
168
|
-
mixins: [themeMixin, uidMixin, carbonPrefixMixin],
|
|
172
|
+
mixins: [themeMixin, uidMixin, carbonPrefixMixin, methodsMixin({ button: ['blur', 'focus'] })],
|
|
169
173
|
components: { WarningFilled16, ChevronDown16, CvCheckbox, CvTag, Close16 },
|
|
170
174
|
props: {
|
|
171
175
|
autoFilter: Boolean,
|
|
@@ -90,10 +90,11 @@ import CaretUpGlyph from '@carbon/icons-vue/es/caret--up/index';
|
|
|
90
90
|
import WarningFilled16 from '@carbon/icons-vue/es/warning--filled/16';
|
|
91
91
|
import CvWrapper from '../cv-wrapper/_cv-wrapper';
|
|
92
92
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
93
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
93
94
|
|
|
94
95
|
export default {
|
|
95
96
|
name: 'CvNumberInput',
|
|
96
|
-
mixins: [uidMixin, themeMixin, carbonPrefixMixin],
|
|
97
|
+
mixins: [uidMixin, themeMixin, carbonPrefixMixin, methodsMixin({ input: ['blur', 'focus'] })],
|
|
97
98
|
components: { CaretDownGlyph, CaretUpGlyph, WarningFilled16, CvWrapper },
|
|
98
99
|
inheritAttrs: false,
|
|
99
100
|
props: {
|
|
@@ -69,11 +69,12 @@
|
|
|
69
69
|
import OverflowMenuVertical16 from '@carbon/icons-vue/es/overflow-menu--vertical/16';
|
|
70
70
|
import uidMixin from '../../mixins/uid-mixin';
|
|
71
71
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
72
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
72
73
|
|
|
73
74
|
export default {
|
|
74
75
|
name: 'CvOverflowMenu',
|
|
75
76
|
components: { OverflowMenuVertical16 },
|
|
76
|
-
mixins: [uidMixin, carbonPrefixMixin],
|
|
77
|
+
mixins: [uidMixin, carbonPrefixMixin, methodsMixin({ trigger: ['blur', 'focus'] })],
|
|
77
78
|
props: {
|
|
78
79
|
label: String,
|
|
79
80
|
flipMenu: Boolean,
|
|
@@ -27,11 +27,12 @@
|
|
|
27
27
|
import uidMixin from '../../mixins/uid-mixin';
|
|
28
28
|
import radioMixin from '../../mixins/radio-mixin';
|
|
29
29
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
30
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
30
31
|
|
|
31
32
|
export default {
|
|
32
33
|
name: 'CvRadioButton',
|
|
33
34
|
inheritAttrs: false,
|
|
34
|
-
mixins: [uidMixin, radioMixin, carbonPrefixMixin],
|
|
35
|
+
mixins: [uidMixin, radioMixin, carbonPrefixMixin, methodsMixin({ input: ['blur', 'focus'] })],
|
|
35
36
|
props: {
|
|
36
37
|
labelLeft: Boolean,
|
|
37
38
|
},
|
|
@@ -62,10 +62,11 @@ import Search20 from '@carbon/icons-vue/es/search/20';
|
|
|
62
62
|
import Close16 from '@carbon/icons-vue/es/close/16';
|
|
63
63
|
import CvWrapper from '../cv-wrapper/_cv-wrapper';
|
|
64
64
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
65
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
65
66
|
|
|
66
67
|
export default {
|
|
67
68
|
name: 'CvSearch',
|
|
68
|
-
mixins: [uidMixin, themeMixin, carbonPrefixMixin],
|
|
69
|
+
mixins: [uidMixin, themeMixin, carbonPrefixMixin, methodsMixin({ input: ['blur', 'focus'] })],
|
|
69
70
|
components: { Close16, CvWrapper },
|
|
70
71
|
inheritAttrs: false,
|
|
71
72
|
props: {
|
|
@@ -62,12 +62,13 @@ import CvWrapper from '../cv-wrapper/_cv-wrapper';
|
|
|
62
62
|
import ChevronDownGlyph from '@carbon/icons-vue/es/chevron--down';
|
|
63
63
|
import WarningFilled16 from '@carbon/icons-vue/es/warning--filled/16';
|
|
64
64
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
65
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
65
66
|
|
|
66
67
|
export default {
|
|
67
68
|
name: 'CvSelect',
|
|
68
69
|
inheritAttrs: false,
|
|
69
70
|
components: { CvWrapper, ChevronDownGlyph, WarningFilled16 },
|
|
70
|
-
mixins: [uidMixin, themeMixin, carbonPrefixMixin],
|
|
71
|
+
mixins: [uidMixin, themeMixin, carbonPrefixMixin, methodsMixin({ select: ['blur', 'focus'] })],
|
|
71
72
|
props: {
|
|
72
73
|
inline: Boolean,
|
|
73
74
|
invalidMessage: { type: String, default: undefined },
|
|
@@ -59,10 +59,11 @@
|
|
|
59
59
|
import uidMixin from '../../mixins/uid-mixin';
|
|
60
60
|
import themeMixin from '../../mixins/theme-mixin';
|
|
61
61
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
62
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
62
63
|
|
|
63
64
|
export default {
|
|
64
65
|
name: 'CvSlider',
|
|
65
|
-
mixins: [uidMixin, themeMixin, carbonPrefixMixin],
|
|
66
|
+
mixins: [uidMixin, themeMixin, carbonPrefixMixin, methodsMixin({ thumb: ['blur', 'focus'] })],
|
|
66
67
|
props: {
|
|
67
68
|
disabled: Boolean,
|
|
68
69
|
label: String,
|
|
@@ -45,12 +45,13 @@
|
|
|
45
45
|
<script>
|
|
46
46
|
import uidMixin from '../../mixins/uid-mixin';
|
|
47
47
|
import themeMixin from '../../mixins/theme-mixin';
|
|
48
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
48
49
|
import WarningFilled16 from '@carbon/icons-vue/es/warning--filled/16';
|
|
49
50
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
50
51
|
|
|
51
52
|
export default {
|
|
52
53
|
name: 'CvTextArea',
|
|
53
|
-
mixins: [uidMixin, themeMixin, carbonPrefixMixin],
|
|
54
|
+
mixins: [uidMixin, themeMixin, carbonPrefixMixin, methodsMixin({ textarea: ['blur', 'focus'] })],
|
|
54
55
|
inheritAttrs: false,
|
|
55
56
|
components: { WarningFilled16 },
|
|
56
57
|
props: {
|
|
@@ -88,11 +89,6 @@ export default {
|
|
|
88
89
|
this.isInvalid = !!(this.$slots['invalid-message'] || (this.invalidMessage && this.invalidMessage.length));
|
|
89
90
|
this.isHelper = !!(this.$slots['helper-text'] || (this.helperText && this.helperText.length));
|
|
90
91
|
},
|
|
91
|
-
focus() {
|
|
92
|
-
this.$nextTick(() => {
|
|
93
|
-
this.$refs.textarea.focus();
|
|
94
|
-
});
|
|
95
|
-
},
|
|
96
92
|
},
|
|
97
93
|
};
|
|
98
94
|
</script>
|
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
<script>
|
|
64
64
|
import uidMixin from '../../mixins/uid-mixin';
|
|
65
65
|
import themeMixin from '../../mixins/theme-mixin';
|
|
66
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
66
67
|
import WarningFilled16 from '@carbon/icons-vue/es/warning--filled/16';
|
|
67
68
|
import View16 from '@carbon/icons-vue/es/view/16';
|
|
68
69
|
import ViewOff16 from '@carbon/icons-vue/es/view--off/16';
|
|
@@ -71,7 +72,7 @@ import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
|
71
72
|
export default {
|
|
72
73
|
name: 'CvTextInput',
|
|
73
74
|
components: { WarningFilled16, View16, ViewOff16 },
|
|
74
|
-
mixins: [uidMixin, themeMixin, carbonPrefixMixin],
|
|
75
|
+
mixins: [uidMixin, themeMixin, carbonPrefixMixin, methodsMixin({ input: ['blur', 'focus'] })],
|
|
75
76
|
inheritAttrs: false,
|
|
76
77
|
props: {
|
|
77
78
|
helperText: { type: String, default: undefined },
|
|
@@ -143,11 +144,6 @@ export default {
|
|
|
143
144
|
this.$refs.input.value = currentValue;
|
|
144
145
|
});
|
|
145
146
|
},
|
|
146
|
-
focus() {
|
|
147
|
-
this.$nextTick(() => {
|
|
148
|
-
this.$refs.input.focus();
|
|
149
|
-
});
|
|
150
|
-
},
|
|
151
147
|
},
|
|
152
148
|
};
|
|
153
149
|
</script>
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
:is="tagType"
|
|
4
4
|
v-on="$listeners"
|
|
5
5
|
v-bind="linkProps"
|
|
6
|
+
ref="target"
|
|
6
7
|
data-tile="clickable"
|
|
7
8
|
:class="`cv-tile-clickable ${carbonPrefix}--tile--clickable`"
|
|
8
9
|
tabindex="0"
|
|
@@ -14,9 +15,10 @@
|
|
|
14
15
|
<script>
|
|
15
16
|
import LinkMixin from '../../mixins/link-mixin';
|
|
16
17
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
18
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
17
19
|
|
|
18
20
|
export default {
|
|
19
21
|
name: 'CvTileClickable',
|
|
20
|
-
mixins: [LinkMixin, carbonPrefixMixin],
|
|
22
|
+
mixins: [LinkMixin, carbonPrefixMixin, methodsMixin({ target: ['blur', 'focus'] })],
|
|
21
23
|
};
|
|
22
24
|
</script>
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
`cv-tile-expandable ${carbonPrefix}--tile--expandable`,
|
|
6
6
|
{ [`${carbonPrefix}--tile--is-expanded`]: internalExpanded },
|
|
7
7
|
]"
|
|
8
|
+
ref="target"
|
|
8
9
|
tabindex="0"
|
|
9
10
|
:style="styleObject"
|
|
10
11
|
@click="toggle"
|
|
@@ -37,10 +38,11 @@
|
|
|
37
38
|
<script>
|
|
38
39
|
import ChevronDown16 from '@carbon/icons-vue/es/chevron--down/16';
|
|
39
40
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
41
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
40
42
|
|
|
41
43
|
export default {
|
|
42
44
|
name: 'CvTileExpandable',
|
|
43
|
-
mixins: [carbonPrefixMixin],
|
|
45
|
+
mixins: [carbonPrefixMixin, methodsMixin({ target: ['blur', 'focus'] })],
|
|
44
46
|
props: {
|
|
45
47
|
expanded: Boolean,
|
|
46
48
|
},
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
data-tile="selectable"
|
|
11
11
|
tabindex="0"
|
|
12
12
|
:data-contained-checkbox-state="isChecked"
|
|
13
|
+
ref="target"
|
|
13
14
|
>
|
|
14
15
|
<input
|
|
15
16
|
tabindex="-1"
|
|
@@ -37,10 +38,11 @@ import uidMixin from '../../mixins/uid-mixin';
|
|
|
37
38
|
import checkMixin from '../../mixins/check-mixin';
|
|
38
39
|
import CheckmarkFilled16 from '@carbon/icons-vue/es/checkmark--filled/16';
|
|
39
40
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
41
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
40
42
|
|
|
41
43
|
export default {
|
|
42
44
|
name: 'CvTileSelectable',
|
|
43
|
-
mixins: [uidMixin, checkMixin, carbonPrefixMixin],
|
|
45
|
+
mixins: [uidMixin, checkMixin, carbonPrefixMixin, methodsMixin({ target: ['blur', 'focus'] })],
|
|
44
46
|
components: { CheckmarkFilled16 },
|
|
45
47
|
inheritAttrs: false,
|
|
46
48
|
props: {
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
:expanded="expanded"
|
|
7
7
|
v-bind="$attrs"
|
|
8
8
|
v-on="$listeners"
|
|
9
|
+
ref="tile"
|
|
9
10
|
>
|
|
10
11
|
<!-- can i now click on this -->
|
|
11
12
|
<template>
|
|
@@ -24,6 +25,7 @@ import CvTileExpandable from './_cv-tile-expandable';
|
|
|
24
25
|
import CvTileSelectable from './_cv-tile-selectable';
|
|
25
26
|
import CvTileStandard from './_cv-tile-standard';
|
|
26
27
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
28
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
27
29
|
|
|
28
30
|
export default {
|
|
29
31
|
name: 'CvTile',
|
|
@@ -33,7 +35,7 @@ export default {
|
|
|
33
35
|
prop: 'modelValue',
|
|
34
36
|
event: 'modelEvent',
|
|
35
37
|
},
|
|
36
|
-
mixins: [themeMixin, carbonPrefixMixin],
|
|
38
|
+
mixins: [themeMixin, carbonPrefixMixin, methodsMixin({ tile: ['blur', 'focus'] })],
|
|
37
39
|
components: {
|
|
38
40
|
CvTileClickable,
|
|
39
41
|
CvTileExpandable,
|
|
@@ -63,5 +65,17 @@ export default {
|
|
|
63
65
|
}
|
|
64
66
|
},
|
|
65
67
|
},
|
|
68
|
+
// methods: {
|
|
69
|
+
// focus() {
|
|
70
|
+
// if (this.$children[0].focus) {
|
|
71
|
+
// this.$children[0].focus();
|
|
72
|
+
// }
|
|
73
|
+
// },
|
|
74
|
+
// blur() {
|
|
75
|
+
// if (this.$children[0].blur) {
|
|
76
|
+
// this.$children[0].blur();
|
|
77
|
+
// }
|
|
78
|
+
// },
|
|
79
|
+
// },
|
|
66
80
|
};
|
|
67
81
|
</script>
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
<div :class="`${carbonPrefix}--time-picker__input`">
|
|
8
8
|
<label :for="uid" :class="`${carbonPrefix}--label`">{{ label }}</label>
|
|
9
9
|
<input
|
|
10
|
+
ref="input"
|
|
10
11
|
:id="uid"
|
|
11
12
|
type="text"
|
|
12
13
|
:class="[
|
|
@@ -68,6 +69,7 @@ import themeMixin from '../../mixins/theme-mixin';
|
|
|
68
69
|
import CvSelect from '../cv-select/cv-select';
|
|
69
70
|
import CvSelectOption from '../cv-select/cv-select-option';
|
|
70
71
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
72
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
71
73
|
|
|
72
74
|
export default {
|
|
73
75
|
name: 'CvTimePicker',
|
|
@@ -75,7 +77,7 @@ export default {
|
|
|
75
77
|
CvSelect,
|
|
76
78
|
CvSelectOption,
|
|
77
79
|
},
|
|
78
|
-
mixins: [uidMixin, themeMixin, carbonPrefixMixin],
|
|
80
|
+
mixins: [uidMixin, themeMixin, carbonPrefixMixin, methodsMixin({ input: ['blur', 'focus'] })],
|
|
79
81
|
inheritAttrs: false,
|
|
80
82
|
props: {
|
|
81
83
|
ampm: {
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
:checked="isChecked === true"
|
|
10
10
|
:aria-checked="`${isChecked}`"
|
|
11
11
|
:value="value"
|
|
12
|
+
ref="input"
|
|
12
13
|
/>
|
|
13
14
|
<label :class="`${carbonPrefix}--toggle-input__label`" :for="uid" :aria-label="hiddenLabel">
|
|
14
15
|
{{ visibleLabel }}
|
|
@@ -31,10 +32,11 @@
|
|
|
31
32
|
import uidMixin from '../../mixins/uid-mixin';
|
|
32
33
|
import checkMixin from '../../mixins/check-mixin';
|
|
33
34
|
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
35
|
+
import methodsMixin from '../../mixins/methods-mixin';
|
|
34
36
|
|
|
35
37
|
export default {
|
|
36
38
|
name: 'CvToggle',
|
|
37
|
-
mixins: [uidMixin, checkMixin, carbonPrefixMixin],
|
|
39
|
+
mixins: [uidMixin, checkMixin, carbonPrefixMixin, methodsMixin({ input: ['blur', 'focus'] })],
|
|
38
40
|
inheritAttrs: false,
|
|
39
41
|
props: {
|
|
40
42
|
small: Boolean,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const methodsMixin = methodDefs => {
|
|
2
|
+
const methods = {};
|
|
3
|
+
const keys = Object.keys(methodDefs);
|
|
4
|
+
|
|
5
|
+
for (let key of keys) {
|
|
6
|
+
for (let method of methodDefs[key]) {
|
|
7
|
+
methods[method] = function(...args) {
|
|
8
|
+
this.$refs[key][method](...args);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return {
|
|
14
|
+
methods: methods,
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export default methodsMixin;
|