@carbon/vue 2.27.0-canary.0 → 2.28.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 +34 -2
- package/dist/carbon-vue.common.js +533 -297
- package/dist/carbon-vue.common.js.map +1 -1
- package/dist/carbon-vue.umd.js +533 -297
- package/dist/carbon-vue.umd.js.map +1 -1
- package/dist/carbon-vue.umd.min.js +4 -4
- package/dist/carbon-vue.umd.min.js.map +1 -1
- package/package.json +3 -3
- package/src/assets/images/example-icon-svg.js +10 -0
- package/src/assets/images/example-icon.svg +6 -0
- package/src/components/cv-accordion/_cv-accordion-item-skeleton.vue +16 -5
- package/src/components/cv-accordion/cv-accordion-item.vue +12 -15
- package/src/components/cv-accordion/cv-accordion-skeleton.vue +3 -1
- package/src/components/cv-accordion/cv-accordion.vue +4 -1
- package/src/components/cv-breadcrumb/_cv-breadcrumb-item-skeleton.vue +4 -2
- package/src/components/cv-breadcrumb/cv-breadcrumb-item.vue +10 -5
- package/src/components/cv-breadcrumb/cv-breadcrumb-skeleton.vue +3 -1
- package/src/components/cv-breadcrumb/cv-breadcrumb.vue +12 -5
- package/src/components/cv-button/cv-button.vue +3 -4
- package/src/components/cv-button/cv-icon-button.vue +3 -4
- package/src/components/cv-checkbox/cv-checkbox-skeleton.vue +4 -2
- package/src/components/cv-checkbox/cv-checkbox.vue +32 -11
- package/src/components/cv-code-snippet/_cv-code-snippet-inline.vue +1 -1
- package/src/components/cv-code-snippet/_cv-code-snippet-multiline.vue +1 -1
- package/src/components/cv-code-snippet/_cv-code-snippet-oneline.vue +1 -1
- package/src/components/cv-combo-box/cv-combo-box.vue +18 -7
- package/src/components/cv-content-switcher/cv-content-switcher-button.vue +4 -5
- package/src/components/cv-data-table/_cv-data-table-row-inner.vue +10 -2
- package/src/components/cv-data-table/cv-data-table.vue +1 -1
- package/src/components/cv-dropdown/cv-dropdown.vue +23 -8
- package/src/components/{cv-code-snippet → cv-feedback-button}/_cv-feedback-button.vue +2 -0
- package/src/components/cv-form/cv-form.vue +1 -1
- package/src/components/cv-inline-loading/cv-inline-loading.vue +20 -14
- package/src/components/cv-link/cv-link.vue +12 -8
- package/src/components/cv-multi-select/cv-multi-select.vue +2 -2
- package/src/components/cv-number-input/cv-number-input-skeleton.vue +5 -3
- package/src/components/cv-number-input/cv-number-input.vue +32 -23
- package/src/components/cv-overflow-menu/cv-overflow-menu.vue +1 -1
- package/src/components/cv-svg/_cv-svg.vue +41 -0
- package/src/components/cv-tabs/cv-tab.vue +1 -1
- package/src/components/cv-tabs/cv-tabs.vue +1 -1
- package/src/components/cv-tag/cv-tag.vue +7 -1
- package/src/components/cv-text-area/cv-text-area.vue +6 -0
- package/src/components/cv-text-input/cv-text-input.vue +5 -0
- package/src/components/cv-tooltip/cv-interactive-tooltip.vue +1 -1
- package/src/components/cv-ui-shell/cv-header-global-action.vue +1 -1
- package/src/components/cv-ui-shell/cv-header-menu-button.vue +1 -1
- package/src/components/cv-ui-shell/cv-header-panel.vue +1 -1
- package/src/components/cv-ui-shell/cv-side-nav.vue +1 -1
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
:class="{ 'bx--dropdown__wrapper--inline': inline, 'cv-dropdown': !formItem }"
|
|
23
23
|
:style="wrapperStyleOverride"
|
|
24
24
|
>
|
|
25
|
-
<span v-if="label" :id="`${uid}-label`" class="bx--label" :class="{ 'bx--label--disabled': disabled }">
|
|
26
|
-
|
|
27
|
-
</span>
|
|
25
|
+
<span v-if="label" :id="`${uid}-label`" class="bx--label" :class="{ 'bx--label--disabled': disabled }">{{
|
|
26
|
+
label
|
|
27
|
+
}}</span>
|
|
28
28
|
|
|
29
29
|
<div
|
|
30
30
|
v-if="!inline && isHelper"
|
|
@@ -58,11 +58,14 @@
|
|
|
58
58
|
>
|
|
59
59
|
<button
|
|
60
60
|
class="bx--dropdown-text"
|
|
61
|
+
:aria-disabled="disabled"
|
|
61
62
|
aria-haspopup="true"
|
|
62
|
-
:aria-expanded="open"
|
|
63
|
+
:aria-expanded="open ? 'true' : 'false'"
|
|
63
64
|
:aria-controls="`${uid}-menu`"
|
|
64
|
-
:aria-labelledby="
|
|
65
|
+
:aria-labelledby="ariaLabeledBy"
|
|
66
|
+
:disabled="disabled"
|
|
65
67
|
type="button"
|
|
68
|
+
ref="button"
|
|
66
69
|
>
|
|
67
70
|
<WarningFilled16 v-if="isInvalid && inline" class="bx--dropdown__invalid-icon" />
|
|
68
71
|
<span
|
|
@@ -81,7 +84,7 @@
|
|
|
81
84
|
class="bx--dropdown-list"
|
|
82
85
|
:id="`${uid}-menu`"
|
|
83
86
|
role="menu"
|
|
84
|
-
:aria-hidden="!open"
|
|
87
|
+
:aria-hidden="!open ? 'true' : 'false'"
|
|
85
88
|
wh-menu-anchor="left"
|
|
86
89
|
:aria-labelledby="`${uid}-label`"
|
|
87
90
|
ref="droplist"
|
|
@@ -161,6 +164,13 @@ export default {
|
|
|
161
164
|
},
|
|
162
165
|
},
|
|
163
166
|
computed: {
|
|
167
|
+
ariaLabeledBy() {
|
|
168
|
+
if (this.label) {
|
|
169
|
+
return `${this.uid}-label ${this.uid}-value`;
|
|
170
|
+
} else {
|
|
171
|
+
return `${this.uid}-value`;
|
|
172
|
+
}
|
|
173
|
+
},
|
|
164
174
|
internalCaption() {
|
|
165
175
|
if (this.selectedChild) {
|
|
166
176
|
return this.selectedChild.internalContent;
|
|
@@ -276,7 +286,7 @@ export default {
|
|
|
276
286
|
},
|
|
277
287
|
onEsc() {
|
|
278
288
|
this.open = false;
|
|
279
|
-
this
|
|
289
|
+
this.focus();
|
|
280
290
|
},
|
|
281
291
|
onClick(ev) {
|
|
282
292
|
if (this.disabled) {
|
|
@@ -284,7 +294,7 @@ export default {
|
|
|
284
294
|
} else {
|
|
285
295
|
this.open = !this.open;
|
|
286
296
|
if (!this.open) {
|
|
287
|
-
this
|
|
297
|
+
this.focus();
|
|
288
298
|
}
|
|
289
299
|
|
|
290
300
|
let target = ev.target;
|
|
@@ -300,6 +310,11 @@ export default {
|
|
|
300
310
|
}
|
|
301
311
|
}
|
|
302
312
|
},
|
|
313
|
+
focus() {
|
|
314
|
+
this.$nextTick(() => {
|
|
315
|
+
this.$refs.button.focus();
|
|
316
|
+
});
|
|
317
|
+
},
|
|
303
318
|
},
|
|
304
319
|
};
|
|
305
320
|
</script>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<button
|
|
3
|
+
aria-label="ariaLabel"
|
|
3
4
|
type="button"
|
|
4
5
|
class="cv-feedback-button"
|
|
5
6
|
v-bind="$attrs"
|
|
@@ -27,6 +28,7 @@ export default {
|
|
|
27
28
|
name: 'cvFeedbackButton',
|
|
28
29
|
inheritAttrs: false,
|
|
29
30
|
props: {
|
|
31
|
+
ariaLabel: { type: String, default: 'Feedback button' },
|
|
30
32
|
feedback: { type: String, required: true },
|
|
31
33
|
inline: Boolean,
|
|
32
34
|
timeout: { type: Number, default: 2000 },
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div data-inline-loading class="
|
|
3
|
-
<div
|
|
2
|
+
<div data-inline-loading :class="`${carbonPrefix}--inline-loading`" role="alert" aria-live="assertive">
|
|
3
|
+
<div :class="animationClasses">
|
|
4
4
|
<div
|
|
5
5
|
v-show="internalState === STATES.LOADING || internalState === STATES.ENDING"
|
|
6
|
-
class="
|
|
6
|
+
:class="`${carbonPrefix}--loading ${carbonPrefix}--loading--small`"
|
|
7
7
|
>
|
|
8
|
-
<svg class="
|
|
9
|
-
<circle class="
|
|
10
|
-
<circle class="
|
|
8
|
+
<svg :class="`${carbonPrefix}--loading__svg`" viewBox="-75 -75 150 150">
|
|
9
|
+
<circle :class="`${carbonPrefix}--loading__background`" cx="0" cy="0" r="26.8125" />
|
|
10
|
+
<circle :class="`${carbonPrefix}--loading__stroke`" cx="0" cy="0" r="26.8125" />
|
|
11
11
|
</svg>
|
|
12
12
|
</div>
|
|
13
|
-
<CheckmarkFilled16
|
|
14
|
-
|
|
13
|
+
<CheckmarkFilled16
|
|
14
|
+
:hidden="internalState !== STATES.LOADED"
|
|
15
|
+
:class="`${carbonPrefix}--inline-loading__checkmark-container`"
|
|
16
|
+
/>
|
|
17
|
+
<ErrorFilled16 :hidden="internalState !== STATES.ERROR" :class="`${carbonPrefix}--inline-loading--error`" />
|
|
15
18
|
</div>
|
|
16
|
-
<p class="
|
|
19
|
+
<p :class="`${carbonPrefix}--inline-loading__text`">{{ stateText }}</p>
|
|
17
20
|
</div>
|
|
18
21
|
</template>
|
|
19
22
|
|
|
@@ -21,10 +24,12 @@
|
|
|
21
24
|
import { STATES } from './consts';
|
|
22
25
|
import ErrorFilled16 from '@carbon/icons-vue/lib/error--filled/16';
|
|
23
26
|
import CheckmarkFilled16 from '@carbon/icons-vue/lib/checkmark--filled/16';
|
|
27
|
+
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
24
28
|
|
|
25
29
|
export default {
|
|
26
30
|
name: 'CvInlineLoading',
|
|
27
31
|
components: { ErrorFilled16, CheckmarkFilled16 },
|
|
32
|
+
mixins: [carbonPrefixMixin],
|
|
28
33
|
created() {
|
|
29
34
|
this.STATES = STATES;
|
|
30
35
|
},
|
|
@@ -76,12 +81,13 @@ export default {
|
|
|
76
81
|
return this.loadingText;
|
|
77
82
|
}
|
|
78
83
|
},
|
|
79
|
-
|
|
80
|
-
|
|
84
|
+
animationClasses() {
|
|
85
|
+
const classes = [`${this.carbonPrefix}--inline-loading__animation`];
|
|
86
|
+
if (this.internalState === STATES.ENDING) {
|
|
87
|
+
classes.push(`${this.carbonPrefix}--loading--stop`);
|
|
88
|
+
}
|
|
89
|
+
return classes;
|
|
81
90
|
},
|
|
82
91
|
},
|
|
83
|
-
CONSTS() {
|
|
84
|
-
return { STATES };
|
|
85
|
-
},
|
|
86
92
|
};
|
|
87
93
|
</script>
|
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<component
|
|
3
|
-
:is="tagType"
|
|
4
|
-
v-on="$listeners"
|
|
5
|
-
v-bind="linkProps"
|
|
6
|
-
class="cv-link bx--link"
|
|
7
|
-
:class="{ 'bx--link--inline': inline }"
|
|
8
|
-
>
|
|
2
|
+
<component :is="tagType" v-on="$listeners" v-bind="linkProps" class="cv-link" :class="linkClasses">
|
|
9
3
|
<slot></slot>
|
|
10
4
|
</component>
|
|
11
5
|
</template>
|
|
12
6
|
|
|
13
7
|
<script>
|
|
14
8
|
import LinkMixin from '../../mixins/link-mixin';
|
|
9
|
+
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
15
10
|
|
|
16
11
|
export default {
|
|
17
12
|
name: 'CvLink',
|
|
18
|
-
mixins: [LinkMixin],
|
|
13
|
+
mixins: [LinkMixin, carbonPrefixMixin],
|
|
19
14
|
props: {
|
|
20
15
|
inline: Boolean,
|
|
21
16
|
},
|
|
17
|
+
computed: {
|
|
18
|
+
linkClasses() {
|
|
19
|
+
const classes = [`${this.carbonPrefix}--link`];
|
|
20
|
+
if (this.inline) {
|
|
21
|
+
classes.push(`${this.carbonPrefix}--link--inline`);
|
|
22
|
+
}
|
|
23
|
+
return classes;
|
|
24
|
+
},
|
|
25
|
+
},
|
|
22
26
|
};
|
|
23
27
|
</script>
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<div
|
|
44
44
|
role="button"
|
|
45
45
|
aria-haspopup="true"
|
|
46
|
-
:aria-expanded="open"
|
|
46
|
+
:aria-expanded="open ? 'true' : 'false'"
|
|
47
47
|
:aria-owns="uid"
|
|
48
48
|
:aria-controls="uid"
|
|
49
49
|
class="bx--list-box__field"
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
:aria-controls="uid"
|
|
72
72
|
aria-autocomplete="list"
|
|
73
73
|
role="combobox"
|
|
74
|
-
:aria-expanded="open"
|
|
74
|
+
:aria-expanded="open ? 'true' : 'false'"
|
|
75
75
|
autocomplete="off"
|
|
76
76
|
:placeholder="label"
|
|
77
77
|
v-model="filter"
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="cv-number-input
|
|
3
|
-
<label class="
|
|
4
|
-
<div class="
|
|
2
|
+
<div class="cv-number-input" :class="`${carbonPrefix}--form-item`">
|
|
3
|
+
<label :class="`${carbonPrefix}--label ${carbonPrefix}--skeleton`" />
|
|
4
|
+
<div :class="`${carbonPrefix}--number ${carbonPrefix}--skeleton`" />
|
|
5
5
|
</div>
|
|
6
6
|
</template>
|
|
7
7
|
|
|
8
8
|
<script>
|
|
9
|
+
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
9
10
|
export default {
|
|
10
11
|
name: 'CvNumberInputSkeleton',
|
|
12
|
+
mixins: [carbonPrefixMixin],
|
|
11
13
|
};
|
|
12
14
|
</script>
|
|
@@ -1,24 +1,14 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<cv-wrapper :tag-type="formItem ? 'div' : ''" class="cv-number-input
|
|
3
|
-
<div
|
|
4
|
-
|
|
5
|
-
class="
|
|
6
|
-
:class="{
|
|
7
|
-
'bx--number--light': theme === 'light',
|
|
8
|
-
'bx--number--helpertext': isHelper,
|
|
9
|
-
'cv-number-input': !formItem,
|
|
10
|
-
'bx--number--mobile': mobile,
|
|
11
|
-
}"
|
|
12
|
-
:data-invalid="isInvalid"
|
|
13
|
-
>
|
|
14
|
-
<label :for="uid" class="bx--label">{{ label }}</label>
|
|
15
|
-
<div class="bx--form__helper-text" v-if="isHelper">
|
|
2
|
+
<cv-wrapper :tag-type="formItem ? 'div' : ''" class="cv-number-input" :class="`${carbonPrefix}--form-item`">
|
|
3
|
+
<div data-numberinput :class="numberInputClasses" :data-invalid="isInvalid">
|
|
4
|
+
<label :for="uid" :class="`${carbonPrefix}--label`">{{ label }}</label>
|
|
5
|
+
<div :class="`${carbonPrefix}--form__helper-text`" v-if="isHelper">
|
|
16
6
|
<slot name="helper-text">{{ helperText }}</slot>
|
|
17
7
|
</div>
|
|
18
|
-
<div class="
|
|
8
|
+
<div :class="`${carbonPrefix}--number__input-wrapper`">
|
|
19
9
|
<button
|
|
20
10
|
v-if="mobile"
|
|
21
|
-
class="
|
|
11
|
+
:class="`${carbonPrefix}--number__control-btn down-icon`"
|
|
22
12
|
@click="doDown"
|
|
23
13
|
type="button"
|
|
24
14
|
:aria-label="ariaLabelForDownButton"
|
|
@@ -38,10 +28,10 @@
|
|
|
38
28
|
:max="max"
|
|
39
29
|
ref="input"
|
|
40
30
|
/>
|
|
41
|
-
<WarningFilled16 v-if="isInvalid && !mobile" class="
|
|
42
|
-
<div class="
|
|
31
|
+
<WarningFilled16 v-if="isInvalid && !mobile" :class="`${carbonPrefix}--number__invalid`" />
|
|
32
|
+
<div :class="`${carbonPrefix}--number__controls`" v-if="!mobile">
|
|
43
33
|
<button
|
|
44
|
-
class="
|
|
34
|
+
:class="`${carbonPrefix}--number__control-btn up-icon`"
|
|
45
35
|
@click="doUp"
|
|
46
36
|
type="button"
|
|
47
37
|
:aria-label="ariaLabelForUpButton"
|
|
@@ -50,7 +40,7 @@
|
|
|
50
40
|
<CaretUpGlyph />
|
|
51
41
|
</button>
|
|
52
42
|
<button
|
|
53
|
-
class="
|
|
43
|
+
:class="`${carbonPrefix}--number__control-btn down-icon`"
|
|
54
44
|
@click="doDown"
|
|
55
45
|
type="button"
|
|
56
46
|
:aria-label="ariaLabelForDownButton"
|
|
@@ -61,7 +51,7 @@
|
|
|
61
51
|
</div>
|
|
62
52
|
<button
|
|
63
53
|
v-else
|
|
64
|
-
class="
|
|
54
|
+
:class="`${carbonPrefix}--number__control-btn up-icon`"
|
|
65
55
|
@click="doUp"
|
|
66
56
|
type="button"
|
|
67
57
|
:aria-label="ariaLabelForUpButton"
|
|
@@ -70,7 +60,7 @@
|
|
|
70
60
|
<CaretUpGlyph />
|
|
71
61
|
</button>
|
|
72
62
|
</div>
|
|
73
|
-
<div class="
|
|
63
|
+
<div :class="`${carbonPrefix}--form-requirement`" v-if="isInvalid">
|
|
74
64
|
<slot name="invalid-message">{{ invalidMessage }}</slot>
|
|
75
65
|
</div>
|
|
76
66
|
</div>
|
|
@@ -84,10 +74,11 @@ import CaretDownGlyph from '@carbon/icons-vue/es/caret--down/index';
|
|
|
84
74
|
import CaretUpGlyph from '@carbon/icons-vue/es/caret--up/index';
|
|
85
75
|
import WarningFilled16 from '@carbon/icons-vue/es/warning--filled/16';
|
|
86
76
|
import CvWrapper from '../cv-wrapper/_cv-wrapper';
|
|
77
|
+
import carbonPrefixMixin from '../../mixins/carbon-prefix-mixin';
|
|
87
78
|
|
|
88
79
|
export default {
|
|
89
80
|
name: 'CvNumberInput',
|
|
90
|
-
mixins: [uidMixin, themeMixin],
|
|
81
|
+
mixins: [uidMixin, themeMixin, carbonPrefixMixin],
|
|
91
82
|
components: { CaretDownGlyph, CaretUpGlyph, WarningFilled16, CvWrapper },
|
|
92
83
|
inheritAttrs: false,
|
|
93
84
|
props: {
|
|
@@ -140,6 +131,24 @@ export default {
|
|
|
140
131
|
},
|
|
141
132
|
},
|
|
142
133
|
computed: {
|
|
134
|
+
numberInputClasses() {
|
|
135
|
+
const classes = [`${this.carbonPrefix}--number`];
|
|
136
|
+
|
|
137
|
+
if (this.theme === 'light') {
|
|
138
|
+
classes.push(`${this.carbonPrefix}--number--light`);
|
|
139
|
+
}
|
|
140
|
+
if (this.isHelper) {
|
|
141
|
+
classes.push(`${this.carbonPrefix}--number--helpertext`);
|
|
142
|
+
}
|
|
143
|
+
if (!this.formItem) {
|
|
144
|
+
classes.push(`cv-number-input`);
|
|
145
|
+
}
|
|
146
|
+
if (this.mobile) {
|
|
147
|
+
classes.push(`${this.carbonPrefix}--number--mobile`);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return classes;
|
|
151
|
+
},
|
|
143
152
|
// Bind listeners at the component level to the embedded input element and
|
|
144
153
|
// add our own input listener to service the v-model. See:
|
|
145
154
|
// https://vuejs.org/v2/guide/components-custom-events.html#Customizing-Component-v-model
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import CvWrapper from '../cv-wrapper/_cv-wrapper';
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
name: 'CvSvg',
|
|
6
|
+
components: { CvWrapper },
|
|
7
|
+
props: {
|
|
8
|
+
svg: {
|
|
9
|
+
type: [String, Object],
|
|
10
|
+
default: undefined,
|
|
11
|
+
validator(val) {
|
|
12
|
+
if (!val || typeof val === 'string') {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
return val.render !== null;
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
computed: {
|
|
20
|
+
isSvg() {
|
|
21
|
+
return this.svg !== undefined && this.svg.indexOf('<svg') >= 0;
|
|
22
|
+
},
|
|
23
|
+
isSymbol() {
|
|
24
|
+
return this.svg !== undefined && !this.isSvg && this.svg.indexOf('#') >= 0;
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
render(createElement) {
|
|
28
|
+
if (typeof this.svg === 'object') {
|
|
29
|
+
return createElement('component', { is: this.svg });
|
|
30
|
+
} else if (this.isSvg) {
|
|
31
|
+
return createElement('svg', { domProps: { innerHTML: this.svg } });
|
|
32
|
+
} else {
|
|
33
|
+
if (this.isSymbol) {
|
|
34
|
+
return createElement('svg', {}, [createElement('use', { attrs: { href: this.svg } })]);
|
|
35
|
+
} else {
|
|
36
|
+
return createElement('img', { attrs: { src: this.svg } });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
</script>
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
'bx--tabs__nav-item--disabled': disabledTabs.indexOf(tab.uid) !== -1,
|
|
35
35
|
}"
|
|
36
36
|
role="tab"
|
|
37
|
-
:aria-selected="selectedId == tab.uid"
|
|
37
|
+
:aria-selected="selectedId == tab.uid ? 'true' : 'false'"
|
|
38
38
|
:aria-disabled="disabledTabs.indexOf(tab.uid) !== -1"
|
|
39
39
|
>
|
|
40
40
|
<a
|
|
@@ -16,7 +16,13 @@
|
|
|
16
16
|
@keyup.space.prevent="$emit('remove')"
|
|
17
17
|
>
|
|
18
18
|
<span class="bx--tag__label">{{ label }}</span>
|
|
19
|
-
<button
|
|
19
|
+
<button
|
|
20
|
+
v-if="isFilter"
|
|
21
|
+
class="bx--tag__close-icon"
|
|
22
|
+
:aria-label="clearAriaLabel"
|
|
23
|
+
@click.stop.prevent="onRemove"
|
|
24
|
+
:disabled="disabled"
|
|
25
|
+
>
|
|
20
26
|
<Close16 />
|
|
21
27
|
</button>
|
|
22
28
|
</span>
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
v-bind="$attrs"
|
|
23
23
|
:value="value"
|
|
24
24
|
v-on="inputListeners"
|
|
25
|
+
ref="textarea"
|
|
25
26
|
></textarea>
|
|
26
27
|
</div>
|
|
27
28
|
<div class="bx--form-requirement" v-if="isInvalid">
|
|
@@ -75,6 +76,11 @@ export default {
|
|
|
75
76
|
this.isInvalid = !!(this.$slots['invalid-message'] || (this.invalidMessage && this.invalidMessage.length));
|
|
76
77
|
this.isHelper = !!(this.$slots['helper-text'] || (this.helperText && this.helperText.length));
|
|
77
78
|
},
|
|
79
|
+
focus() {
|
|
80
|
+
this.$nextTick(() => {
|
|
81
|
+
this.$refs.textarea.focus();
|
|
82
|
+
});
|
|
83
|
+
},
|
|
78
84
|
},
|
|
79
85
|
};
|
|
80
86
|
</script>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
'bx--side-nav--collapsed': !panelExpanded && fixed,
|
|
8
8
|
'bx--side-nav--ux': isChildOfHeader,
|
|
9
9
|
}"
|
|
10
|
-
:aria-hidden="!panelExpanded && !fixed"
|
|
10
|
+
:aria-hidden="!panelExpanded && !fixed ? 'true' : 'false'"
|
|
11
11
|
:id="id"
|
|
12
12
|
@focusout="onFocusout"
|
|
13
13
|
@mousedown="onMouseDown"
|