@1024pix/pix-ui 48.8.1 → 48.9.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.
@@ -1,3 +1,3 @@
1
- <div class="pix-app-layout">
1
+ <div class={{this.classNames}} ...attributes>
2
2
  {{yield}}
3
3
  </div>
@@ -1,20 +1,20 @@
1
1
  import Component from '@glimmer/component';
2
2
  import { warn } from '@ember/debug';
3
3
 
4
- export default class PixNavigation extends Component {
4
+ export default class PixAppLayout extends Component {
5
5
  get variant() {
6
6
  const value = this.args.variant ?? 'primary';
7
7
  warn(
8
- `PixNavigation: @variant "${value}" should be certif, orga or primary`,
8
+ `PixAppLayout: @variant "${value}" should be certif, orga or primary`,
9
9
  ['primary', 'orga', 'certif'].includes(value),
10
10
  {
11
- id: 'pix-ui.pix-navigation.variant.not-valid',
11
+ id: 'pix-ui.pix-app-layout.variant.not-valid',
12
12
  },
13
13
  );
14
14
 
15
15
  return value;
16
16
  }
17
17
  get classNames() {
18
- return ['pix-navigation', `pix-navigation--${this.variant}`].join(' ');
18
+ return ['pix-app-layout', `pix-app-layout--${this.variant}`].join(' ');
19
19
  }
20
20
  }
@@ -1,4 +1,4 @@
1
- <aside ...attributes class={{this.classNames}}>
1
+ <aside ...attributes class="pix-navigation">
2
2
  <header class="pix-navigation__brand">{{yield to="brand"}}</header>
3
3
  <nav class="pix-navigation__nav" aria-label={{@navigationAriaLabel}}>{{yield
4
4
  to="navElements"
@@ -0,0 +1,86 @@
1
+ <ul role="listbox" id={{@listId}} class="pix-select_list" ...attributes>
2
+ <li
3
+ class="pix-select-list-category__option{{unless
4
+ @value
5
+ ' pix-select-list-category__option--selected'
6
+ }}{{unless @displayDefaultOption ' pix-select-list-category__option--hidden'}}"
7
+ role="option"
8
+ tabindex={{if this.isDefaultOptionHidden "-1" "0"}}
9
+ aria-selected={{if @value "false" "true"}}
10
+ {{on "click" (fn @onChange @defaultOption)}}
11
+ {{on-enter-action (fn @onChange @defaultOption)}}
12
+ {{on-space-action (fn @onChange @defaultOption)}}
13
+ >
14
+ {{@defaultOptionValue}}
15
+ </li>
16
+ {{#if this.results}}
17
+ {{#if this.displayCategory}}
18
+ {{#each this.results as |element index|}}
19
+ <ul
20
+ class="pix-select-list-category"
21
+ role="group"
22
+ aria-labelledby={{if this.displayCategory (concat "cat-" @selectId "-" index)}}
23
+ >
24
+ {{#if this.displayCategory}}
25
+ <li
26
+ class="pix-select-list-category__name"
27
+ role="presentation"
28
+ id={{concat "cat-" @selectId "-" index}}
29
+ title={{element.label}}
30
+ >
31
+ {{element.category}}
32
+ </li>
33
+ {{/if}}
34
+
35
+ {{#each element.options as |option|}}
36
+ {{! template-lint-disable require-context-role }}
37
+ {{!https://www.w3.org/WAI/ARIA/apg/example-index/listbox/listbox-grouped.html}}
38
+ <li
39
+ class="pix-select-list-category__option{{if
40
+ (eq option.value @value)
41
+ ' pix-select-list-category__option--selected'
42
+ }}"
43
+ role="option"
44
+ tabindex={{if @isExpanded "0" "-1"}}
45
+ title={{option.label}}
46
+ aria-selected={{if (eq option.value @value) "true" "false"}}
47
+ {{on "click" (fn @onChange option)}}
48
+ {{on-enter-action (fn @onChange option)}}
49
+ {{on-space-action (fn @onChange option)}}
50
+ >
51
+ {{option.label}}
52
+
53
+ {{#if (eq option.value @value)}}
54
+ <PixIcon @name="check" role="presentation" />
55
+ {{/if}}
56
+ </li>
57
+ {{/each}}
58
+ </ul>
59
+ {{/each}}
60
+ {{else}}
61
+ {{#each this.results as |option|}}
62
+ <li
63
+ class="pix-select-list-category__option{{if
64
+ (eq option.value @value)
65
+ ' pix-select-list-category__option--selected'
66
+ }}"
67
+ role="option"
68
+ tabindex={{if @isExpanded "0" "-1"}}
69
+ aria-selected={{if (eq option.value @value) "true" "false"}}
70
+ title={{option.label}}
71
+ {{on "click" (fn @onChange option)}}
72
+ {{on-enter-action (fn @onChange option)}}
73
+ {{on-space-action (fn @onChange option)}}
74
+ >
75
+ {{option.label}}
76
+
77
+ {{#if (eq option.value @value)}}
78
+ <PixIcon @name="check" role="presentation" />
79
+ {{/if}}
80
+ </li>
81
+ {{/each}}
82
+ {{/if}}
83
+ {{else}}
84
+ <li class="pix-select-list__empty-search-message">{{@emptySearchMessage}}</li>
85
+ {{/if}}
86
+ </ul>
@@ -0,0 +1,42 @@
1
+ import Component from '@glimmer/component';
2
+
3
+ export default class PixSelectList extends Component {
4
+ constructor(...args) {
5
+ super(...args);
6
+
7
+ const categories = [];
8
+
9
+ this.args.options.forEach((element) => {
10
+ if (!categories.includes(element.category) && element.category !== undefined) {
11
+ categories.push(element.category);
12
+ }
13
+ });
14
+ this.displayCategory = categories.length > 0;
15
+ }
16
+
17
+ get isDefaultOptionHidden() {
18
+ return !this.args.isExpanded || this.args.hideDefaultOption;
19
+ }
20
+ get results() {
21
+ let results = [];
22
+ let options = this.args.options;
23
+
24
+ if (this.args.searchValue) {
25
+ options = this.args.options.filter((option) =>
26
+ option.label.toLowerCase().includes(this.args.searchValue.toLowerCase()),
27
+ );
28
+ }
29
+
30
+ if (!this.displayCategory) return options;
31
+
32
+ options.forEach(({ category, value, label }) => {
33
+ const categoryIndex = results.findIndex((result) => result.category === category);
34
+ if (categoryIndex !== -1) {
35
+ results[categoryIndex].options.push({ value, label });
36
+ } else {
37
+ results.push({ category, options: [{ label, value }] });
38
+ }
39
+ });
40
+ return results;
41
+ }
42
+ }
@@ -51,7 +51,7 @@
51
51
  </button>
52
52
  <div
53
53
  {{popover}}
54
- class="pix-select__dropdown{{unless this.isExpanded ' pix-select__dropdown--closed'}}"
54
+ class="pix-select__dropdown {{unless this.isExpanded ' pix-select__dropdown--closed'}}"
55
55
  {{on "transitionend" this.focus}}
56
56
  >
57
57
  {{#if @isSearchable}}
@@ -68,92 +68,20 @@
68
68
  />
69
69
  </div>
70
70
  {{/if}}
71
- <ul role="listbox" id={{this.listId}} class="pix-select__options">
72
- <li
73
- class="pix-select-options-category__option{{unless
74
- @value
75
- ' pix-select-options-category__option--selected'
76
- }}{{unless this.displayDefaultOption ' pix-select-options-category__option--hidden'}}"
77
- role="option"
78
- tabindex={{if this.isDefaultOptionHidden "-1" "0"}}
79
- aria-selected={{if @value "false" "true"}}
80
- {{on "click" (fn this.onChange this.defaultOption)}}
81
- {{on-enter-action (fn this.onChange this.defaultOption)}}
82
- {{on-space-action (fn this.onChange this.defaultOption)}}
83
- >
84
- {{@placeholder}}
85
- </li>
86
- {{#if this.results}}
87
- {{#if this.displayCategory}}
88
- {{#each this.results as |element index|}}
89
- <ul
90
- class="pix-select-options__category"
91
- role="group"
92
- aria-labelledby={{if
93
- this.displayCategory
94
- (concat "cat-" this.selectId "-" index)
95
- }}
96
- >
97
- {{#if this.displayCategory}}
98
- <li
99
- class="pix-select-options-category__name"
100
- role="presentation"
101
- id={{concat "cat-" this.selectId "-" index}}
102
- >
103
- {{element.category}}
104
- </li>
105
- {{/if}}
106
-
107
- {{#each element.options as |option|}}
108
- {{! template-lint-disable require-context-role }}
109
- {{!https://www.w3.org/WAI/ARIA/apg/example-index/listbox/listbox-grouped.html}}
110
- <li
111
- class="pix-select-options-category__option{{if
112
- (eq option.value @value)
113
- ' pix-select-options-category__option--selected'
114
- }}"
115
- role="option"
116
- tabindex={{if this.isExpanded "0" "-1"}}
117
- aria-selected={{if (eq option.value @value) "true" "false"}}
118
- {{on "click" (fn this.onChange option)}}
119
- {{on-enter-action (fn this.onChange option)}}
120
- {{on-space-action (fn this.onChange option)}}
121
- >
122
- {{option.label}}
123
-
124
- {{#if (eq option.value @value)}}
125
- <PixIcon @name="check" role="presentation" />
126
- {{/if}}
127
- </li>
128
- {{/each}}
129
- </ul>
130
- {{/each}}
131
- {{else}}
132
- {{#each this.results as |option|}}
133
- <li
134
- class="pix-select-options-category__option{{if
135
- (eq option.value @value)
136
- ' pix-select-options-category__option--selected'
137
- }}"
138
- role="option"
139
- tabindex={{if this.isExpanded "0" "-1"}}
140
- aria-selected={{if (eq option.value @value) "true" "false"}}
141
- {{on "click" (fn this.onChange option)}}
142
- {{on-enter-action (fn this.onChange option)}}
143
- {{on-space-action (fn this.onChange this.defaultOption)}}
144
- >
145
- {{option.label}}
146
-
147
- {{#if (eq option.value @value)}}
148
- <PixIcon @name="check" role="presentation" />
149
- {{/if}}
150
- </li>
151
- {{/each}}
152
- {{/if}}
153
- {{else}}
154
- <li class="pix-select__empty-search-message">{{@emptySearchMessage}}</li>
155
- {{/if}}
156
- </ul>
71
+ <PixSelectList
72
+ @hideDefaultOption={{@hideDefaultOption}}
73
+ @listId={{this.listId}}
74
+ @value={{@value}}
75
+ @displayDefaultOption={{this.displayDefaultOption}}
76
+ @searchValue={{this.searchValue}}
77
+ @onChange={{this.onChange}}
78
+ @defaultOption={{this.defaultOption}}
79
+ @selectId={{this.selectId}}
80
+ @isExpanded={{this.isExpanded}}
81
+ @options={{@options}}
82
+ @defaultOptionValue={{@placeholder}}
83
+ @emptySearchMessage={{@emptySearchMessage}}
84
+ />
157
85
  </div>
158
86
  </PopperJS>
159
87
  {{#if @errorMessage}}
@@ -12,19 +12,10 @@ export default class PixSelect extends Component {
12
12
  constructor(...args) {
13
13
  super(...args);
14
14
 
15
- const categories = [];
16
-
17
15
  this.searchId = 'search-input-' + guidFor(this);
18
16
  this.selectId = this.args.id ? this.args.id : 'select-' + guidFor(this);
19
17
  this.listId = `listbox-${this.selectId}`;
20
18
 
21
- this.args.options.forEach((element) => {
22
- if (!categories.includes(element.category) && element.category !== undefined) {
23
- categories.push(element.category);
24
- }
25
- });
26
- this.displayCategory = categories.length > 0;
27
-
28
19
  if (!this.args.isComputeWidthDisabled) {
29
20
  this.elementHelper.waitForElement(this.listId).then((elementList) => {
30
21
  const baseFontRemRatio = Number(
@@ -43,10 +34,6 @@ export default class PixSelect extends Component {
43
34
  return !this.searchValue && !this.args.hideDefaultOption;
44
35
  }
45
36
 
46
- get isDefaultOptionHidden() {
47
- return !this.isExpanded || this.args.hideDefaultOption;
48
- }
49
-
50
37
  get className() {
51
38
  const classes = ['pix-select-button'];
52
39
  if (this.args.className) {
@@ -75,29 +62,6 @@ export default class PixSelect extends Component {
75
62
  };
76
63
  }
77
64
 
78
- get results() {
79
- let results = [];
80
- let options = this.args.options;
81
-
82
- if (this.searchValue) {
83
- options = this.args.options.filter((option) =>
84
- option.label.toLowerCase().includes(this.searchValue.toLowerCase()),
85
- );
86
- }
87
-
88
- if (!this.displayCategory) return options;
89
-
90
- options.forEach(({ category, value, label }) => {
91
- const categoryIndex = results.findIndex((result) => result.category === category);
92
- if (categoryIndex !== -1) {
93
- results[categoryIndex].options.push({ value, label });
94
- } else {
95
- results.push({ category, options: [{ label, value }] });
96
- }
97
- });
98
- return results;
99
- }
100
-
101
65
  @action
102
66
  toggleDropdown(event) {
103
67
  if (this.isExpanded) {
@@ -0,0 +1,40 @@
1
+ <div
2
+ id="container-{{this.switcherId}}"
3
+ class="pix-structure-switcher"
4
+ {{on-click-outside this.closeMenu}}
5
+ {{on-arrow-down-up-action this.listId this.openMenu this.isMenuOpen}}
6
+ {{on-escape-action this.closeMenu this.switcherId}}
7
+ {{on "keydown" this.lockTab}}
8
+ ...attributes
9
+ >
10
+ <PopperJS @placement="right-end" as |reference popover|>
11
+
12
+ <PixButton
13
+ {{reference}}
14
+ @size="small"
15
+ @variant="secondary"
16
+ aria-controls={{this.listId}}
17
+ id={{this.switcherId}}
18
+ @triggerAction={{this.toggleMenu}}
19
+ aria-expanded={{this.isMenuOpen}}
20
+ >{{@label}}</PixButton>
21
+ <div
22
+ {{popover}}
23
+ class="pix-select__dropdown {{unless this.isMenuOpen 'pix-select__dropdown--closed'}}"
24
+ >
25
+ <PixSelectList
26
+ aria-labelledby={{this.switcherId}}
27
+ {{on "transitionend" this.focus}}
28
+ @hideDefaultOption={{true}}
29
+ @listId={{this.listId}}
30
+ @selectId={{this.switcherId}}
31
+ @value={{@value}}
32
+ @onChange={{this.onSelectListChange}}
33
+ @defaultOption={{@defaultOption}}
34
+ @isExpanded={{this.isMenuOpen}}
35
+ @options={{@structures}}
36
+ @defaultOptionValue={{@label}}
37
+ />
38
+ </div>
39
+ </PopperJS>
40
+ </div>
@@ -0,0 +1,57 @@
1
+ import Component from '@glimmer/component';
2
+ import { tracked } from '@glimmer/tracking';
3
+ import { action } from '@ember/object';
4
+ import { guidFor } from '@ember/object/internals';
5
+ import { inject as service } from '@ember/service';
6
+
7
+ export default class PixStructureSwitcher extends Component {
8
+ @service elementHelper;
9
+
10
+ constructor(...args) {
11
+ super(...args);
12
+ this.switcherId = 'structure-switcher-' + guidFor(this);
13
+ this.listId = `listbox-${this.switcherId}`;
14
+ this.elementHelper.waitForElement(`container-${this.switcherId}`).then((element) => {
15
+ this.rootElement = element;
16
+ });
17
+ }
18
+
19
+ @tracked
20
+ isMenuOpen = false;
21
+
22
+ @action
23
+ toggleMenu() {
24
+ this.isMenuOpen = !this.isMenuOpen;
25
+ }
26
+
27
+ @action
28
+ onSelectListChange(structure, event) {
29
+ this.args.onChange(structure);
30
+ this.closeMenu(event);
31
+ document.getElementById(this.switcherId).focus();
32
+ }
33
+
34
+ @action
35
+ openMenu(event) {
36
+ event.preventDefault();
37
+ this.isMenuOpen = true;
38
+ }
39
+
40
+ @action
41
+ closeMenu(event) {
42
+ event.preventDefault();
43
+ this.isMenuOpen = false;
44
+ }
45
+
46
+ @action
47
+ lockTab(event) {
48
+ if (event.code === 'Tab' && this.isMenuOpen) {
49
+ event.preventDefault();
50
+ }
51
+ }
52
+
53
+ @action
54
+ focus() {
55
+ document.getElementById(this.listId).querySelector("[aria-selected='true']").focus();
56
+ }
57
+ }
@@ -1,6 +1,27 @@
1
- .pix-app-layout{
1
+ .pix-app-layout {
2
2
  display: grid;
3
3
  grid-template-columns: minmax(214px, auto) 1fr;
4
4
  gap: var(--pix-spacing-6x);
5
5
  padding: var(--pix-spacing-6x);
6
+
7
+ &--orga {
8
+ background-color: var(--pix-orga-50);
9
+
10
+ --pix-navigation-color: var(--pix-orga-500);
11
+ --pix-navigation-text-color: var(--pix-neutral-0);
12
+ }
13
+
14
+ &--certif {
15
+ background-color: var(--pix-certif-50);
16
+
17
+ --pix-navigation-color: var(--pix-certif-500);
18
+ --pix-navigation-text-color: var(--pix-neutral-0);
19
+ }
20
+
21
+ &--primary {
22
+ background-color: var(--pix-primary-10);
23
+
24
+ --pix-navigation-color: var(--pix-primary-700);
25
+ --pix-navigation-text-color: var(--pix-neutral-0);
26
+ }
6
27
  }
@@ -20,22 +20,6 @@
20
20
  --pix-navigation-button-bgcolor-hover: rgb(205, 209, 217, .3);
21
21
  --pix-navigation-button-bgcolor-active: rgb(205, 209, 217, .5);
22
22
 
23
- &--orga {
24
- --pix-navigation-color: var(--pix-orga-500);
25
- --pix-navigation-text-color: var(--pix-neutral-0);
26
-
27
- }
28
-
29
- &--certif {
30
- --pix-navigation-color: var(--pix-certif-500);
31
- --pix-navigation-text-color: var(--pix-neutral-0);
32
- }
33
-
34
- &--primary {
35
- --pix-navigation-color: var(--pix-primary-700);
36
- --pix-navigation-text-color: var(--pix-neutral-0);
37
- }
38
-
39
23
  &__brand {
40
24
  margin-bottom: 0;
41
25
  padding:0;
@@ -0,0 +1,75 @@
1
+ .pix-select_list {
2
+ padding: var(--pix-spacing-2x);
3
+ border-top: 1px solid var(--pix-neutral-20);
4
+
5
+ --border-radius-2x: var(--pix-spacing-2x);
6
+
7
+ }
8
+
9
+ .pix-select-list-category {
10
+ margin: 0;
11
+ padding: 0;
12
+ list-style: none;
13
+
14
+ &__name {
15
+ @extend %pix-body-s;
16
+
17
+ padding: var(--pix-spacing-4x) var(--pix-spacing-6x) var(--pix-spacing-2x) var(--pix-spacing-4x);
18
+ color: var(--pix-neutral-500);
19
+ text-transform: uppercase;
20
+ }
21
+
22
+ &__option {
23
+ @extend %pix-body-s;
24
+
25
+ &:nth-child(even) {
26
+ background-color: var(--pix-neutral-20);
27
+ }
28
+
29
+ position: relative;
30
+ padding: var(--pix-spacing-2x) var(--pix-spacing-8x) var(--pix-spacing-2x) var(--pix-spacing-4x);
31
+ color: var(--pix-neutral-900);
32
+ border-radius: 8px;
33
+
34
+
35
+ &:hover,
36
+ &:focus {
37
+ background-color: var(--pix-primary-10);
38
+ outline: none;
39
+ cursor: pointer;
40
+ }
41
+
42
+ svg {
43
+ position: absolute;
44
+ top: 50%;
45
+ right: var(--pix-spacing-2x);
46
+ transform: translateY(-50%);
47
+ visibility: hidden;
48
+ opacity: 0;
49
+ }
50
+
51
+ &--selected {
52
+ align-items: center;
53
+ background-color: var(--pix-primary-10);
54
+
55
+ svg {
56
+ visibility: visible;
57
+ opacity: 1;
58
+ }
59
+ }
60
+
61
+ &--hidden {
62
+ height: 0;
63
+ padding-top: 0;
64
+ padding-bottom: 0;
65
+ visibility: hidden;
66
+ }
67
+ }
68
+ }
69
+
70
+ .pix-select-list__empty-search-message {
71
+ @extend %pix-body-s;
72
+
73
+ color: var(--pix-neutral-800);
74
+ text-align: center;
75
+ }
@@ -13,7 +13,7 @@
13
13
  }
14
14
 
15
15
  &__dropdown {
16
- @extend %pix-shadow-sm;
16
+ @extend %pix-shadow-xs;
17
17
 
18
18
  position: absolute;
19
19
  z-index: 200;
@@ -56,12 +56,7 @@
56
56
  }
57
57
  }
58
58
 
59
- &__empty-search-message {
60
- @extend %pix-body-s;
61
59
 
62
- color: var(--pix-neutral-800);
63
- text-align: center;
64
- }
65
60
 
66
61
  &__search {
67
62
  display: flex;
@@ -76,10 +71,6 @@
76
71
  }
77
72
  }
78
73
 
79
- &__options {
80
- border-top: 1px solid var(--pix-neutral-20);
81
- }
82
-
83
74
  &__error-message {
84
75
  @extend %pix-input-error-message;
85
76
  }
@@ -124,63 +115,6 @@
124
115
  }
125
116
  }
126
117
 
127
- .pix-select-options__category {
128
- margin: 0;
129
- padding: 0;
130
- list-style: none;
131
- }
132
-
133
- .pix-select-options-category {
134
- &__name {
135
- @extend %pix-body-s;
136
-
137
- padding: var(--pix-spacing-4x) var(--pix-spacing-6x) var(--pix-spacing-2x) var(--pix-spacing-6x);
138
- color: var(--pix-neutral-500);
139
- text-transform: uppercase;
140
- }
141
-
142
- &__option {
143
- @extend %pix-body-s;
144
-
145
- position: relative;
146
- padding: var(--pix-spacing-2x) var(--pix-spacing-8x) var(--pix-spacing-2x) var(--pix-spacing-6x);
147
- color: var(--pix-neutral-900);
148
-
149
- &:hover,
150
- &:focus {
151
- background-color: var(--pix-primary-10);
152
- outline: none;
153
- cursor: pointer;
154
- }
155
-
156
- svg {
157
- position: absolute;
158
- top: 50%;
159
- right: var(--pix-spacing-2x);
160
- transform: translateY(-50%);
161
- visibility: hidden;
162
- opacity: 0;
163
- }
164
-
165
- &--selected {
166
- align-items: center;
167
- background-color: var(--pix-primary-10);
168
-
169
- svg {
170
- visibility: visible;
171
- opacity: 1;
172
- }
173
- }
174
-
175
- &--hidden {
176
- height: 0;
177
- padding-top: 0;
178
- padding-bottom: 0;
179
- visibility: hidden;
180
- }
181
- }
182
- }
183
-
184
118
  .pix-select-search {
185
119
  &__input {
186
120
  @extend %pix-body-s;
@@ -0,0 +1,64 @@
1
+ .pix-structure-switcher {
2
+ --pix-structure-bg-hover: var(--pix-primary-100);
3
+
4
+ .pix-app-layout--orga & {
5
+ --pix-structure-bg-hover: var(--pix-orga-50);
6
+ }
7
+
8
+ .pix-app-layout--certif & {
9
+ --pix-structure-bg-hover: var(--pix-certif-50);
10
+ }
11
+
12
+ .pix-button {
13
+ width: 100%;
14
+ }
15
+
16
+ .pix-select__dropdown {
17
+ @extend %pix-shadow-xs;
18
+
19
+ position: static;
20
+ width: auto;
21
+ min-width: 100%;
22
+ max-width: 316px;
23
+ max-height: 80vh;
24
+ margin-left: var(--pix-spacing-6x) !important; // we need to override popperjs inline styles
25
+ overflow-y: auto;
26
+ border-radius: 8px;
27
+ }
28
+
29
+ .pix-select_list {
30
+ display: flex;
31
+ flex-direction: column;
32
+ gap: var(--pix-spacing-2x);
33
+ padding: var(--pix-spacing-2x);
34
+ }
35
+
36
+ .pix-select-list-category__option--hidden {
37
+ display: none
38
+ }
39
+
40
+ .pix-select-list-category__option {
41
+ padding: var(--pix-spacing-2x) var(--pix-spacing-8x) var(--pix-spacing-2x) var(--pix-spacing-4x);
42
+ overflow-x: hidden;
43
+ // stylelint-disable-next-line custom-property-pattern
44
+ font-family: var(--_pix-font-family-title);
45
+ white-space: nowrap;
46
+ text-align: left;
47
+ text-overflow: ellipsis;
48
+ border-radius: var(--border-radius-2x);
49
+
50
+ &:hover {
51
+ background-color: var(--pix-structure-bg-hover);
52
+ }
53
+ }
54
+
55
+ .pix-select-list-category__option--selected {
56
+ color: var(--pix-navigation-text-color);
57
+ font-weight: var(--pix-font-bold);
58
+ background-color: var(--pix-navigation-color);
59
+
60
+ &:hover {
61
+ background-color: var(--pix-navigation-color);
62
+ }
63
+ }
64
+ }
@@ -15,6 +15,7 @@
15
15
  @import 'pix-progress-gauge';
16
16
  @import 'pix-return-to';
17
17
  @import 'pix-select';
18
+ @import 'pix-select-list';
18
19
  @import 'pix-stars';
19
20
  @import 'pix-tag';
20
21
  @import 'pix-textarea';
@@ -41,6 +42,7 @@
41
42
  @import 'pix-navigation-button';
42
43
  @import 'pix-navigation-separator';
43
44
  @import 'pix-app-layout';
45
+ @import 'pix-structure-switcher';
44
46
 
45
47
 
46
48
  // at the end so it can override it's children scss
@@ -0,0 +1 @@
1
+ export { default } from '@1024pix/pix-ui/components/pix-select-list';
@@ -0,0 +1 @@
1
+ export { default } from '@1024pix/pix-ui/components/pix-structure-switcher';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1024pix/pix-ui",
3
- "version": "48.8.1",
3
+ "version": "48.9.0",
4
4
  "description": "Pix-UI is the implementation of Pix design principles and guidelines for its products.",
5
5
  "keywords": [
6
6
  "ember-addon"
@@ -53,12 +53,13 @@
53
53
  },
54
54
  "dependencies": {
55
55
  "@formatjs/intl": "^2.5.1",
56
- "ember-auto-import": "^2.5.0",
56
+ "ember-auto-import": "^2.10.0",
57
57
  "ember-cli-babel": "^8.0.0",
58
58
  "ember-cli-htmlbars": "^6.1.1",
59
59
  "ember-cli-sass": "^11.0.1",
60
60
  "ember-click-outside": "^6.0.1",
61
61
  "ember-lifeline": "^7.0.0",
62
+ "ember-modifier": "^4.2.0",
62
63
  "ember-popperjs": "^3.0.0",
63
64
  "ember-truth-helpers": "^4.0.0"
64
65
  },