Skip to content

Commit 77eba56

Browse files
committed
refactor(color-picker): simplify, remove wrappers, rewrite styles properly
1 parent 562ed50 commit 77eba56

File tree

3 files changed

+47
-52
lines changed

3 files changed

+47
-52
lines changed

src/components/color-picker/color-picker.scss

Lines changed: 26 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,33 +3,26 @@
33
@import './partial-styles/lime-admin-hack';
44

55
:host(limel-color-picker) {
6-
isolation: isolate;
7-
}
8-
9-
.color-picker {
106
display: grid;
117
gap: 0.25rem;
128
grid-template-columns: auto 1fr;
139
}
1410

15-
.picker-trigger {
11+
button[slot='trigger'] {
1612
all: unset;
17-
border-radius: 0.5rem;
18-
@include mixins.is-elevated-clickable();
19-
@include mixins.visualize-keyboard-focus();
20-
21-
&:after {
22-
box-shadow: 0 0 0 0.25rem rgb(var(--contrast-100)) inset;
23-
}
24-
}
25-
26-
.picker-trigger {
2713
box-sizing: border-box;
2814
position: relative;
2915
isolation: isolate;
3016
width: shared_input-select-picker.$height-of-mdc-text-field;
3117
height: shared_input-select-picker.$height-of-mdc-text-field;
3218

19+
border-radius: 0.5rem;
20+
21+
&:not([disabled]):not([disabled='true']) {
22+
@include mixins.is-elevated-clickable();
23+
@include mixins.visualize-keyboard-focus();
24+
}
25+
3326
&:before,
3427
&:after {
3528
content: '';
@@ -44,29 +37,28 @@
4437
}
4538

4639
&:after {
47-
background: var(--background);
4840
z-index: 1;
41+
box-shadow: 0 0 0 0.25rem rgb(var(--contrast-100)) inset;
42+
background: var(--background);
4943
}
5044
}
5145

52-
:host([readonly]) {
53-
.picker-trigger {
54-
&:hover,
55-
&:active {
56-
cursor: default;
57-
box-shadow: var(--button-shadow-normal);
58-
transform: none;
59-
}
46+
:host([readonly]:not([readonly='false'])) {
47+
limel-input-field {
48+
transform: translateX(
49+
calc(
50+
#{shared_input-select-picker.$height-of-mdc-text-field} /
51+
4 * -1
52+
)
53+
)
54+
translateY(
55+
calc(
56+
#{shared_input-select-picker.$height-of-mdc-text-field} / 4
57+
)
58+
);
6059
}
61-
}
6260

63-
.chosen-color-input[readonly] {
64-
transform: translateX(
65-
calc(
66-
#{shared_input-select-picker.$height-of-mdc-text-field} / 4 * -1
67-
)
68-
)
69-
translateY(
70-
calc(#{shared_input-select-picker.$height-of-mdc-text-field} / 4)
71-
);
61+
button[slot='trigger'] {
62+
border: 1px solid rgba(var(--contrast-700), 0.65);
63+
}
7264
}

src/components/color-picker/color-picker.spec.tsx

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,13 @@ test('the component renders', () => {
2626
expect(page.body).toEqualHtml(`
2727
<limel-color-picker label="Hair color">
2828
<mock:shadow-root>
29-
<div class="color-picker">
30-
<limel-popover opendirection="bottom-start">
31-
<button class="picker-trigger" id="tooltip-button" role="button" slot="trigger"></button>
32-
<limel-color-picker-palette label="Hair color">
33-
<mock:shadow-root></mock:shadow-root>
34-
</limel-color-picker-palette>
35-
</limel-popover>
36-
<limel-input-field class="chosen-color-input" label="Hair color"></limel-input-field>
37-
</div>
29+
<limel-popover opendirection="bottom-start">
30+
<button id="tooltip-button" role="button" slot="trigger"></button>
31+
<limel-color-picker-palette label="Hair color">
32+
<mock:shadow-root></mock:shadow-root>
33+
</limel-color-picker-palette>
34+
</limel-popover>
35+
<limel-input-field label="Hair color"></limel-input-field>
3836
</mock:shadow-root>
3937
</limel-color-picker>`);
4038
});

src/components/color-picker/color-picker.tsx

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
import { Component, h, Prop, State, Event, EventEmitter } from '@stencil/core';
1+
import {
2+
Component,
3+
h,
4+
Prop,
5+
State,
6+
Event,
7+
EventEmitter,
8+
Host,
9+
} from '@stencil/core';
210
import { FormComponent } from '../form/form.types';
311
import type { CustomColorSwatch } from './color-picker.types';
412

@@ -96,22 +104,20 @@ export class ColorPicker implements FormComponent {
96104
private shouldFocus = false;
97105

98106
public render() {
99-
return [
100-
this.renderTooltip(),
101-
<div class="color-picker">
107+
return (
108+
<Host>
109+
{this.renderTooltip()}
102110
{this.renderPickerPalette()}
103-
104111
<limel-input-field
105112
label={this.label}
106113
helperText={this.helperText}
107114
value={this.value}
108115
onChange={this.handleChange}
109116
required={this.required}
110117
readonly={this.readonly}
111-
class="chosen-color-input"
112118
/>
113-
</div>,
114-
];
119+
</Host>
120+
);
115121
}
116122
private renderTooltip = () => {
117123
if (!this.readonly && this.tooltipLabel) {
@@ -155,7 +161,6 @@ export class ColorPicker implements FormComponent {
155161

156162
return (
157163
<button
158-
class="picker-trigger"
159164
slot="trigger"
160165
style={background}
161166
role="button"

0 commit comments

Comments
 (0)