Skip to content

Commit 55a7aad

Browse files
committed
fix(checkbox): DP-137343 fix label clickable area
1 parent 22d7935 commit 55a7aad

3 files changed

Lines changed: 60 additions & 51 deletions

File tree

packages/dialtone-css/lib/build/less/components/radio-checkbox.less

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,11 @@
159159
cursor: pointer;
160160
}
161161

162+
.d-checkbox__messages {
163+
margin-top: -0.25rem;
164+
margin-left: var(--dt-space-550);
165+
}
166+
162167
.d-checkbox__description {
163168
display: flex;
164169
box-sizing: border-box;

packages/dialtone-vue2/components/checkbox/checkbox.test.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ describe('DtCheckbox Tests', () => {
3535
let input;
3636
let label;
3737
let description;
38-
let labelDescriptionContainer;
38+
let descriptionMessagesContainer;
3939

4040
const updateWrapper = () => {
4141
wrapper = mount(DtCheckbox, {
@@ -51,7 +51,7 @@ describe('DtCheckbox Tests', () => {
5151
input = wrapper.find('input');
5252
label = wrapper.find('[data-qa="checkbox-label"]');
5353
description = wrapper.find('[data-qa="checkbox-description"]');
54-
labelDescriptionContainer = wrapper.find('[data-qa="checkbox-label-description-container"]');
54+
descriptionMessagesContainer = wrapper.find('[data-qa="checkbox-description-messages"]');
5555
};
5656

5757
beforeAll(() => {
@@ -139,8 +139,8 @@ describe('DtCheckbox Tests', () => {
139139
expect(label.exists()).toBe(false);
140140
});
141141

142-
it('should remove the checkbox label/description container if neither is provided', () => {
143-
expect(labelDescriptionContainer.exists()).toBe(false);
142+
it('should remove the checkbox description/messages container if neither is provided', () => {
143+
expect(descriptionMessagesContainer.exists()).toBe(false);
144144
});
145145

146146
it('should keep the input checkbox', () => {

packages/dialtone-vue2/components/checkbox/checkbox.vue

Lines changed: 51 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,53 @@
11
<template>
22
<div>
3-
<label>
4-
<div :class="['d-checkbox-group', { 'd-checkbox-group--disabled': internalDisabled }]">
5-
<div class="d-checkbox__input">
6-
<input
7-
type="checkbox"
8-
:checked="internalChecked"
9-
:name="internalName"
10-
:value="value"
11-
:disabled="internalDisabled"
12-
:class="['d-checkbox', inputValidationClass, inputClass]"
13-
v-bind="$attrs"
14-
:indeterminate.prop="internalIndeterminate"
15-
v-on="inputListeners"
16-
>
17-
</div>
18-
<div
19-
v-if="hasLabelOrDescription"
20-
class="d-checkbox__copy d-checkbox__label"
21-
data-qa="checkbox-label-description-container"
3+
<label :class="['d-checkbox-group', { 'd-checkbox-group--disabled': internalDisabled }]">
4+
<div class="d-checkbox__input">
5+
<input
6+
type="checkbox"
7+
:checked="internalChecked"
8+
:name="internalName"
9+
:value="value"
10+
:disabled="internalDisabled"
11+
:class="['d-checkbox', inputValidationClass, inputClass]"
12+
v-bind="$attrs"
13+
:indeterminate.prop="internalIndeterminate"
14+
v-on="inputListeners"
2215
>
23-
<div
24-
v-if="hasLabel"
25-
:class="labelClass"
26-
v-bind="labelChildProps"
27-
data-qa="checkbox-label"
28-
>
29-
<!-- @slot slot for Checkbox Label -->
30-
<slot>{{ label }}</slot>
31-
</div>
32-
<div
33-
v-if="hasDescription"
34-
:class="['d-description', descriptionClass]"
35-
v-bind="descriptionChildProps"
36-
data-qa="checkbox-description"
37-
>
38-
<!-- @slot slot for Checkbox Description -->
39-
<slot name="description">{{ description }}</slot>
40-
</div>
41-
<dt-validation-messages
42-
:validation-messages="formattedMessages"
43-
:show-messages="showMessages"
44-
:class="messagesClass"
45-
v-bind="messagesChildProps"
46-
data-qa="dt-checkbox-validation-messages"
47-
/>
48-
</div>
16+
</div>
17+
<div
18+
v-if="hasLabel"
19+
:class="[labelClass, 'd-checkbox__copy d-checkbox__label']"
20+
v-bind="labelChildProps"
21+
data-qa="checkbox-label"
22+
>
23+
<!-- @slot slot for Checkbox Label -->
24+
<slot>{{ label }}</slot>
4925
</div>
5026
</label>
27+
<div
28+
v-if="hasDescriptionOrMessages"
29+
class="d-checkbox__messages"
30+
data-qa="checkbox-description-messages"
31+
>
32+
<div
33+
v-if="hasDescription"
34+
:class="['d-description', descriptionClass]"
35+
v-bind="descriptionChildProps"
36+
data-qa="checkbox-description"
37+
>
38+
<!-- @slot slot for Checkbox Description -->
39+
<slot name="description">
40+
{{ description }}
41+
</slot>
42+
</div>
43+
<dt-validation-messages
44+
:validation-messages="formattedMessages"
45+
:show-messages="showMessages"
46+
:class="messagesClass"
47+
v-bind="messagesChildProps"
48+
data-qa="dt-checkbox-validation-messages"
49+
/>
50+
</div>
5151
</div>
5252
</template>
5353

@@ -119,8 +119,12 @@ export default {
119119
return !!(this.$slots.description || this.description);
120120
},
121121
122-
hasLabelOrDescription () {
123-
return this.hasLabel || this.hasDescription;
122+
hasDescriptionOrMessages () {
123+
return this.hasDescription || this.hasMessages;
124+
},
125+
126+
hasMessages () {
127+
return this.formattedMessages.length && this.showMessages;
124128
},
125129
126130
inputListeners () {

0 commit comments

Comments
 (0)