Skip to content

Commit b49e459

Browse files
authored
[mercury][combo-box][paginator] Use a chevron icon for the combo-box picker, that affects the paginator as well, since it uses a combo-box (#606)
* `[common]` Add mercury as a dependency * `[mercury][combo-box]` Use chevron icon on picker ::after * `[mercury][bundles]` Update bundles tests * Update yarn.lock * Update yarn.lock * `[mercury][bundles]` Update combo-box test bundle
1 parent 88786d6 commit b49e459

File tree

7 files changed

+1675
-1220
lines changed

7 files changed

+1675
-1220
lines changed

packages/common/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
},
2323
"license": "Apache-2.0",
2424
"dependencies": {
25-
"@genexus/chameleon-controls-library": "~6.15.0"
25+
"@genexus/chameleon-controls-library": "~6.15.0",
26+
"@genexus/mercury": "*"
2627
},
2728
"devDependencies": {
2829
"@eslint/js": "~9.26.0",

packages/mercury/src/components/combo-box/_combo-box-styles.scss

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
--ch-combo-box-item__background-image-size: 100%;
1010
--ch-combo-box-group__expandable-button-size: var(--mer-spacing--md);
1111
--ch-combo-box-group__expandable-button-image-size: var(--mer-spacing--sm);
12+
--ch-combo-box__picker-size: var(--mer-icon__box--md);
1213

1314
@include body-regular-m();
1415

@@ -32,6 +33,16 @@
3233
@include control-colors-error();
3334
}
3435

36+
&--after {
37+
--icon-path: var(--icon__system_chevron-small-down_bright--enabled);
38+
background: no-repeat center / var(--mer-icon__size--md) var(--icon-path);
39+
-webkit-mask: none;
40+
mask: none; /* for non-WebKit browsers */
41+
}
42+
&--after-disabled {
43+
--icon-path: var(--icon__system_chevron-small-down_on-disabled--enabled);
44+
}
45+
3546
&__window {
3647
@include items-container-border();
3748
@include items-container-border-radius();
@@ -148,6 +159,10 @@
148159
&:focus {
149160
@extend %combo-box--focus;
150161
}
162+
163+
&::after {
164+
@extend %combo-box--after;
165+
}
151166
}
152167

153168
@if $add--placeholder {
@@ -159,13 +174,15 @@
159174
// - - - - - - - - - - - - - - - - - - - -
160175
// Window
161176
// - - - - - - - - - - - - - - - - - - - -
177+
162178
#{$window-selector} {
163179
@extend %combo-box__window;
164180
}
165181

166182
// - - - - - - - - - - - - - - - - - - - -
167183
// Group
168184
// - - - - - - - - - - - - - - - - - - - -
185+
169186
#{$group__header-selector} {
170187
@extend %combo-box-group__header;
171188
}
@@ -189,6 +206,7 @@
189206
// - - - - - - - - - - - - - - - - - - - -
190207
// Item
191208
// - - - - - - - - - - - - - - - - - - - -
209+
192210
#{$item-selector} {
193211
@extend %combo-box__item;
194212
}
@@ -204,9 +222,14 @@
204222
// - - - - - - - - - - - - - - - - - - - -
205223
// Disabled
206224
// - - - - - - - - - - - - - - - - - - - -
225+
207226
@if $add--disabled {
208227
#{$combo-box--disabled-selector} {
209228
@extend %combo-box--disabled;
229+
230+
&::after {
231+
@extend %combo-box--after-disabled;
232+
}
210233
}
211234

212235
#{$group__header--disabled-selector} {

packages/mercury/src/tests/bundles/expected-bundle-content/all.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,11 @@
140140
".checkbox:hover, .tree-view::part(item__checkbox):hover { --control__border-color: var(--control__border-color--hover); }",
141141
".checkbox:hover::part(label) { --label__color: var(--label__color--hover); }",
142142
".code { --code__color-base: var(--mer-text__on-surface); --code__color-blue: var(--mer-color__primary--400); --code__color-light-blue: var(--mer-color__primary--200); --code__color-red: var(--mer-color__message-red--200); --code__color-green: var(--mer-color__message-green--200); --code__bg-color: var(--mer-surface__elevation--01); --code__border: var(--mer-border__width--sm) solid var(--mer-surface__elevation--03); --code__border-radius: var(--mer-border__radius--sm); --code__padding: var(--mer-spacing--xs) var(--mer-spacing--sm); --ch-code__doctag: var(--code__color-blue); --ch-code__keyword: var(--code__color-blue); --ch-code__meta__keyword: var(--code__color-blue); --ch-code__template-tag: var(--code__color-blue); --ch-code__template-variable: var(--code__color-blue); --ch-code__type: var(--code__color-blue); --ch-code__variable-language: var(--code__color-blue); --ch-code__title: var(--code__color-base); --ch-code__title-class: var(--code__color-base); --ch-code__title-class-inherited: var(--code__color-base); --ch-code__title-function: var(--code__color-base); --ch-code__attr: var(--code__color-blue); --ch-code__attribute: var(--code__color-blue); --ch-code__literal: var(--code__color-blue); --ch-code__meta: var(--code__color-blue); --ch-code__number: var(--code__color-blue); --ch-code__operator: var(--code__color-blue); --ch-code__variable: var(--code__color-blue); --ch-code__selector-attr: var(--code__color-blue); --ch-code__selector-class: var(--code__color-blue); --ch-code__selector-id: var(--code__color-blue); --ch-code__regexp: var(--code__color-green); --ch-code__string: var(--code__color-green); --ch-code__meta__string: var(--code__color-green); --ch-code__built-in: var(--code__color-green); --ch-code__symbol: #e36209; --ch-code__comment: var(--code__color-green); --ch-code__code: var(--code__color-green); --ch-code__formula: var(--code__color-green); --ch-code__name: var(--code__color-light-blue); --ch-code__quote: var(--code__color-light-blue); --ch-code__selector-tag: var(--code__color-light-blue); --ch-code__selector-pseudo: var(--code__color-light-blue); --ch-code__subst: #24292e; padding: var(--code__padding); background-color: var(--code__bg-color); border: var(--code__border); border-radius: var(--code__border-radius); font-size: 13px; line-height: 1.55em; overflow: auto; }",
143-
".combo-box, .paginator::part(items-per-page__combo-box) { --ch-combo-box-separation-y: var(--mer-spacing--3xs); --ch-combo-box-item-gap: var(--mer-spacing--xs); --ch-combo-box-item__image-size: var(--mer-icon__box--md); --ch-combo-box-item__background-image-size: 100%; --ch-combo-box-group__expandable-button-size: var(--mer-spacing--md); --ch-combo-box-group__expandable-button-image-size: var(--mer-spacing--sm); border-width: var(--control__border-width); border-style: var(--control__border-style); border-color: var(--control__border-color); border-radius: var(--control__border-radius); background-color: var(--control__bg-color); color: var(--control__color); --ch-placeholder-color: var(--control-placeholder__color); padding-block: var(--control__padding-block); padding-inline: var(--control__padding-inline); }",
143+
".combo-box, .paginator::part(items-per-page__combo-box) { --ch-combo-box-separation-y: var(--mer-spacing--3xs); --ch-combo-box-item-gap: var(--mer-spacing--xs); --ch-combo-box-item__image-size: var(--mer-icon__box--md); --ch-combo-box-item__background-image-size: 100%; --ch-combo-box-group__expandable-button-size: var(--mer-spacing--md); --ch-combo-box-group__expandable-button-image-size: var(--mer-spacing--sm); --ch-combo-box__picker-size: var(--mer-icon__box--md); border-width: var(--control__border-width); border-style: var(--control__border-style); border-color: var(--control__border-color); border-radius: var(--control__border-radius); background-color: var(--control__bg-color); color: var(--control__color); --ch-placeholder-color: var(--control-placeholder__color); padding-block: var(--control__padding-block); padding-inline: var(--control__padding-inline); }",
144144
".combo-box-error { --control__border-color: var(--control__border-color--error); }",
145145
".combo-box.ch-disabled { --control__bg-color: var(--control__background-color--disabled); --control__border-color: var(--control__border-color--disabled); --control__color: var(--control__color--disabled); --ch-placeholder-color: var(--control-placeholder__color--disabled); }",
146+
".combo-box.ch-disabled::after { --icon-path: var(--icon__system_chevron-small-down_on-disabled--enabled); }",
147+
".combo-box::after, .paginator::part(items-per-page__combo-box)::after { --icon-path: var(--icon__system_chevron-small-down_bright--enabled); background: no-repeat center/var(--mer-icon__size--md) var(--icon-path); mask: none; }",
146148
".combo-box::part(group), .paginator::part(group) { gap: var(--items-container__gap); }",
147149
".combo-box::part(group__content), .paginator::part(group__content) { gap: var(--items-container__gap); }",
148150
".combo-box::part(group__header disabled) { --item__bg-color: var(--item__bg-color--disabled); --item__border-color: var(--item__border-color--disabled); --item__color: var(--item__color--disabled); }",

packages/mercury/src/tests/bundles/expected-bundle-content/components/combo-box.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
[
2-
".combo-box { --ch-combo-box-separation-y: var(--mer-spacing--3xs); --ch-combo-box-item-gap: var(--mer-spacing--xs); --ch-combo-box-item__image-size: var(--mer-icon__box--md); --ch-combo-box-item__background-image-size: 100%; --ch-combo-box-group__expandable-button-size: var(--mer-spacing--md); --ch-combo-box-group__expandable-button-image-size: var(--mer-spacing--sm); border-width: var(--control__border-width); border-style: var(--control__border-style); border-color: var(--control__border-color); border-radius: var(--control__border-radius); background-color: var(--control__bg-color); color: var(--control__color); --ch-placeholder-color: var(--control-placeholder__color); padding-block: var(--control__padding-block); padding-inline: var(--control__padding-inline); }",
2+
".combo-box { --ch-combo-box-separation-y: var(--mer-spacing--3xs); --ch-combo-box-item-gap: var(--mer-spacing--xs); --ch-combo-box-item__image-size: var(--mer-icon__box--md); --ch-combo-box-item__background-image-size: 100%; --ch-combo-box-group__expandable-button-size: var(--mer-spacing--md); --ch-combo-box-group__expandable-button-image-size: var(--mer-spacing--sm); --ch-combo-box__picker-size: var(--mer-icon__box--md); border-width: var(--control__border-width); border-style: var(--control__border-style); border-color: var(--control__border-color); border-radius: var(--control__border-radius); background-color: var(--control__bg-color); color: var(--control__color); --ch-placeholder-color: var(--control-placeholder__color); padding-block: var(--control__padding-block); padding-inline: var(--control__padding-inline); }",
33
".combo-box { font-weight: var(--font-weight-regular); }",
44
".combo-box, .combo-box[part=\"ch-combo-box-render--placeholder\"] { font-size: var(--font-size-body-m); }",
55
".combo-box, .combo-box[part=\"ch-combo-box-render--placeholder\"] { line-height: var(--line-height-tight); }",
66
".combo-box-error { --control__border-color: var(--control__border-color--error); }",
77
".combo-box.ch-disabled { --control__bg-color: var(--control__background-color--disabled); --control__border-color: var(--control__border-color--disabled); --control__color: var(--control__color--disabled); --ch-placeholder-color: var(--control-placeholder__color--disabled); }",
8+
".combo-box.ch-disabled::after { --icon-path: var(--icon__system_chevron-small-down_on-disabled--enabled); }",
9+
".combo-box::after { --icon-path: var(--icon__system_chevron-small-down_bright--enabled); background: no-repeat center/var(--mer-icon__size--md) var(--icon-path); mask: none; }",
810
".combo-box::part(group) { gap: var(--items-container__gap); }",
911
".combo-box::part(group__content) { gap: var(--items-container__gap); }",
1012
".combo-box::part(group__header disabled) { --item__bg-color: var(--item__bg-color--disabled); --item__border-color: var(--item__border-color--disabled); --item__color: var(--item__color--disabled); }",

packages/mercury/src/tests/bundles/expected-bundle-content/components/paginator.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@
1717
".paginator::part(item) { background-color: var(--item__bg-color); color: var(--item__color); border: var(--item__border-width) var(--item__border-style) var(--item__border-color); border-radius: var(--item__border-radius); padding-block: var(--item__padding-block); padding-inline: var(--item__padding-inline); }",
1818
".paginator::part(items-per-page) { align-items: center; gap: var(--mer-spacing--xs); }",
1919
".paginator::part(items-per-page-info) { color: var(--mer-text__complementary); }",
20-
".paginator::part(items-per-page__combo-box) { --ch-combo-box-separation-y: var(--mer-spacing--3xs); --ch-combo-box-item-gap: var(--mer-spacing--xs); --ch-combo-box-item__image-size: var(--mer-icon__box--md); --ch-combo-box-item__background-image-size: 100%; --ch-combo-box-group__expandable-button-size: var(--mer-spacing--md); --ch-combo-box-group__expandable-button-image-size: var(--mer-spacing--sm); border-width: var(--control__border-width); border-style: var(--control__border-style); border-color: var(--control__border-color); border-radius: var(--control__border-radius); background-color: var(--control__bg-color); color: var(--control__color); --ch-placeholder-color: var(--control-placeholder__color); padding-block: var(--control__padding-block); padding-inline: var(--control__padding-inline); }",
20+
".paginator::part(items-per-page__combo-box) { --ch-combo-box-separation-y: var(--mer-spacing--3xs); --ch-combo-box-item-gap: var(--mer-spacing--xs); --ch-combo-box-item__image-size: var(--mer-icon__box--md); --ch-combo-box-item__background-image-size: 100%; --ch-combo-box-group__expandable-button-size: var(--mer-spacing--md); --ch-combo-box-group__expandable-button-image-size: var(--mer-spacing--sm); --ch-combo-box__picker-size: var(--mer-icon__box--md); border-width: var(--control__border-width); border-style: var(--control__border-style); border-color: var(--control__border-color); border-radius: var(--control__border-radius); background-color: var(--control__bg-color); color: var(--control__color); --ch-placeholder-color: var(--control-placeholder__color); padding-block: var(--control__padding-block); padding-inline: var(--control__padding-inline); }",
2121
".paginator::part(items-per-page__combo-box) { inline-size: 80px; }",
2222
".paginator::part(items-per-page__combo-box), .paginator::part(go-to__input), .paginator { font-weight: var(--font-weight-regular); }",
23+
".paginator::part(items-per-page__combo-box)::after { --icon-path: var(--icon__system_chevron-small-down_bright--enabled); background: no-repeat center/var(--mer-icon__size--md) var(--icon-path); mask: none; }",
2324
".paginator::part(items-per-page__combo-box):focus { border-color: var(--borders-un-border-color__focused); }",
2425
".paginator::part(items-per-page__combo-box):hover { --control__border-color: var(--control__border-color--hover); }",
2526
".paginator::part(items-per-page__label) { font-size: var(--font-size-body-m); }",

packages/mercury/src/tests/bundles/expected-bundle-content/utils/form--full.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,12 @@
3737
".checkbox::part(option indeterminate) { block-size: var(--mer-spacing--3xs); }",
3838
".checkbox:hover { --control__border-color: var(--control__border-color--hover); }",
3939
".checkbox:hover::part(label) { --label__color: var(--label__color--hover); }",
40-
".combo-box { --ch-combo-box-separation-y: var(--mer-spacing--3xs); --ch-combo-box-item-gap: var(--mer-spacing--xs); --ch-combo-box-item__image-size: var(--mer-icon__box--md); --ch-combo-box-item__background-image-size: 100%; --ch-combo-box-group__expandable-button-size: var(--mer-spacing--md); --ch-combo-box-group__expandable-button-image-size: var(--mer-spacing--sm); border-width: var(--control__border-width); border-style: var(--control__border-style); border-color: var(--control__border-color); border-radius: var(--control__border-radius); background-color: var(--control__bg-color); color: var(--control__color); --ch-placeholder-color: var(--control-placeholder__color); padding-block: var(--control__padding-block); padding-inline: var(--control__padding-inline); }",
40+
".combo-box { --ch-combo-box-separation-y: var(--mer-spacing--3xs); --ch-combo-box-item-gap: var(--mer-spacing--xs); --ch-combo-box-item__image-size: var(--mer-icon__box--md); --ch-combo-box-item__background-image-size: 100%; --ch-combo-box-group__expandable-button-size: var(--mer-spacing--md); --ch-combo-box-group__expandable-button-image-size: var(--mer-spacing--sm); --ch-combo-box__picker-size: var(--mer-icon__box--md); border-width: var(--control__border-width); border-style: var(--control__border-style); border-color: var(--control__border-color); border-radius: var(--control__border-radius); background-color: var(--control__bg-color); color: var(--control__color); --ch-placeholder-color: var(--control-placeholder__color); padding-block: var(--control__padding-block); padding-inline: var(--control__padding-inline); }",
4141
".combo-box, .input { font-weight: var(--font-weight-regular); }",
4242
".combo-box-error { --control__border-color: var(--control__border-color--error); }",
4343
".combo-box.ch-disabled { --control__bg-color: var(--control__background-color--disabled); --control__border-color: var(--control__border-color--disabled); --control__color: var(--control__color--disabled); --ch-placeholder-color: var(--control-placeholder__color--disabled); }",
44+
".combo-box.ch-disabled::after { --icon-path: var(--icon__system_chevron-small-down_on-disabled--enabled); }",
45+
".combo-box::after { --icon-path: var(--icon__system_chevron-small-down_bright--enabled); background: no-repeat center/var(--mer-icon__size--md) var(--icon-path); mask: none; }",
4446
".combo-box::part(group) { gap: var(--items-container__gap); }",
4547
".combo-box::part(group__content) { gap: var(--items-container__gap); }",
4648
".combo-box::part(group__header disabled) { --item__bg-color: var(--item__bg-color--disabled); --item__border-color: var(--item__border-color--disabled); --item__color: var(--item__color--disabled); }",

0 commit comments

Comments
 (0)