@1024pix/pix-ui 48.8.0 → 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
@@ -1,64 +1,122 @@
1
1
  // See https://www.figma.com/file/8RJ3aCSfdeQ8AZZVBBYKS8/Design-System-Pix?node-id=16%3A2
2
2
  // stylelint-disable color-no-hex
3
3
  :root {
4
- --pix-primary-10: rgb(247, 245, 255);
5
- --pix-primary-100: rgb(206, 195, 244);
6
- --pix-primary-300: rgb(149, 126, 232);
7
- --pix-primary-500: rgb(97, 63, 221);
8
- --pix-primary-700: rgb(69, 45, 157);
9
- --pix-primary-900: rgb(41, 26, 93);
10
- --pix-secondary-50: rgb(255, 250, 235);
11
- --pix-secondary-100: rgb(255, 239, 192);
12
- --pix-secondary-300: rgb(255, 220, 118);
13
- --pix-secondary-500: rgb(255, 203, 51);
14
- --pix-secondary-700: rgb(161, 98, 6);
15
- --pix-secondary-900: rgb(91, 56, 8);
16
- --pix-tertiary-100: rgb(195, 208, 255);
17
- --pix-tertiary-500: rgb(61, 104, 255);
18
- --pix-tertiary-900: rgb(26, 44, 107);
19
- --pix-neutral-0: rgb(255, 255, 255);
20
- --pix-neutral-20: rgb(244, 245, 247);
21
- --pix-neutral-100: rgb(205, 209, 217);
22
- --pix-neutral-500: rgb(94, 108, 132);
23
- --pix-neutral-800: rgb(37, 56, 88);
24
- --pix-neutral-900: rgb(18, 38, 71);
25
- --pix-info-50: rgb(230, 242, 254);
26
- --pix-info-100: rgb(176, 211, 244);
27
- --pix-info-500: rgb(59, 130, 246);
28
- --pix-info-700: rgb(29, 78, 216);
29
- --pix-info-900: rgb(30, 58, 138);
30
- --pix-success-50: rgb(232, 243, 239);
31
- --pix-success-100: rgb(185, 216, 205);
32
- --pix-success-300: rgb(103, 171, 146);
33
- --pix-success-500: rgb(28, 130, 93);
34
- --pix-success-700: rgb(20, 92, 66);
35
- --pix-success-900: rgb(12, 55, 39);
36
- --pix-warning-50: rgb(255, 247, 235);
37
- --pix-warning-100: rgb(255, 229, 192);
38
- --pix-warning-300: rgb(255, 198, 118);
39
- --pix-warning-500: rgb(245, 158, 11);
40
- --pix-warning-700: rgb(180, 83, 9);
41
- --pix-warning-900: rgb(120, 53, 15);
42
- --pix-error-50: rgb(251, 236, 236);
43
- --pix-error-100: rgb(241, 196, 196);
44
- --pix-error-500: rgb(210, 65, 64);
45
- --pix-error-700: rgb(149, 46, 46);
46
- --pix-error-900: rgb(88, 27, 27);
47
- --pix-certif-50: rgb(232, 242, 242);
48
- --pix-certif-500: rgb(24, 127, 125);
49
- --pix-orga-50: rgb(235, 241, 249);
50
- --pix-orga-500: rgb(54, 116, 191);
51
- --pix-information-dark: rgb(242, 70, 69);
52
- --pix-information-light: rgb(241, 161, 65);
53
- --pix-content-dark: rgb(26, 140, 137);
54
- --pix-content-light: rgb(82, 217, 135);
55
- --pix-communication-dark: rgb(61, 104, 255);
56
- --pix-communication-light: rgb(18, 163, 255);
57
- --pix-security-dark: rgb(172, 0, 141);
58
- --pix-security-light: rgb(255, 63, 148);
59
- --pix-environment-dark: rgb(94, 37, 99);
60
- --pix-environment-light: rgb(86, 77, 166);
61
- --pix-shadow: rgb(7, 20, 46);
4
+ --pix-primary-10-inline:247, 245, 255;
5
+ --pix-primary-10: rgb(var(--pix-primary-10-inline));
6
+ --pix-primary-100-inline:206, 195, 244;
7
+ --pix-primary-100: rgb(var(--pix-primary-100-inline));
8
+ --pix-primary-300-inline:149, 126, 232;
9
+ --pix-primary-300: rgb(var(--pix-primary-300-inline));
10
+ --pix-primary-500-inline:97, 63, 221;
11
+ --pix-primary-500: rgb(var(--pix-primary-500-inline));
12
+ --pix-primary-700-inline:69, 45, 157;
13
+ --pix-primary-700: rgb(var(--pix-primary-700-inline));
14
+ --pix-primary-900-inline:41, 26, 93;
15
+ --pix-primary-900: rgb(var(--pix-primary-900-inline));
16
+ --pix-secondary-50-inline:255, 250, 235;
17
+ --pix-secondary-50: rgb(var(--pix-secondary-50-inline));
18
+ --pix-secondary-100-inline:255, 239, 192;
19
+ --pix-secondary-100: rgb(var(--pix-secondary-100-inline));
20
+ --pix-secondary-300-inline:255, 220, 118;
21
+ --pix-secondary-300: rgb(var(--pix-secondary-300-inline));
22
+ --pix-secondary-500-inline:255, 203, 51;
23
+ --pix-secondary-500: rgb(var(--pix-secondary-500-inline));
24
+ --pix-secondary-700-inline:161, 98, 6;
25
+ --pix-secondary-700: rgb(var(--pix-secondary-700-inline));
26
+ --pix-secondary-900-inline:91, 56, 8;
27
+ --pix-secondary-900: rgb(var(--pix-secondary-900-inline));
28
+ --pix-tertiary-100-inline:195, 208, 255;
29
+ --pix-tertiary-100: rgb(var(--pix-tertiary-100-inline));
30
+ --pix-tertiary-500-inline:61, 104, 255;
31
+ --pix-tertiary-500: rgb(var(--pix-tertiary-500-inline));
32
+ --pix-tertiary-900-inline:26, 44, 107;
33
+ --pix-tertiary-900: rgb(var(--pix-tertiary-900-inline));
34
+ --pix-neutral-0-inline:255, 255, 255;
35
+ --pix-neutral-0: rgb(var(--pix-neutral-0-inline));
36
+ --pix-neutral-20-inline:244, 245, 247;
37
+ --pix-neutral-20: rgb(var(--pix-neutral-20-inline));
38
+ --pix-neutral-100-inline:205, 209, 217;
39
+ --pix-neutral-100: rgb(var(--pix-neutral-100-inline));
40
+ --pix-neutral-500-inline:94, 108, 132;
41
+ --pix-neutral-500: rgb(var(--pix-neutral-500-inline));
42
+ --pix-neutral-800-inline:37, 56, 88;
43
+ --pix-neutral-800: rgb(var(--pix-neutral-800-inline));
44
+ --pix-neutral-900-inline:18, 38, 71;
45
+ --pix-neutral-900: rgb(var(--pix-neutral-900-inline));
46
+ --pix-info-50-inline:230, 242, 254;
47
+ --pix-info-50: rgb(var(--pix-info-50-inline));
48
+ --pix-info-100-inline:176, 211, 244;
49
+ --pix-info-100: rgb(var(--pix-info-100-inline));
50
+ --pix-info-500-inline:59, 130, 246;
51
+ --pix-info-500: rgb(var(--pix-info-500-inline));
52
+ --pix-info-700-inline:29, 78, 216;
53
+ --pix-info-700: rgb(var(--pix-info-700-inline));
54
+ --pix-info-900-inline:30, 58, 138;
55
+ --pix-info-900: rgb(var(--pix-info-900-inline));
56
+ --pix-success-50-inline:232, 243, 239;
57
+ --pix-success-50: rgb(var(--pix-success-50-inline));
58
+ --pix-success-100-inline:185, 216, 205;
59
+ --pix-success-100: rgb(var(--pix-success-100-inline));
60
+ --pix-success-300-inline:103, 171, 146;
61
+ --pix-success-300: rgb(var(--pix-success-300-inline));
62
+ --pix-success-500-inline:28, 130, 93;
63
+ --pix-success-500: rgb(var(--pix-success-500-inline));
64
+ --pix-success-700-inline:20, 92, 66;
65
+ --pix-success-700: rgb(var(--pix-success-700-inline));
66
+ --pix-success-900-inline:12, 55, 39;
67
+ --pix-success-900: rgb(var(--pix-success-900-inline));
68
+ --pix-warning-50-inline:255, 247, 235;
69
+ --pix-warning-50: rgb(var(--pix-warning-50-inline));
70
+ --pix-warning-100-inline:255, 229, 192;
71
+ --pix-warning-100: rgb(var(--pix-warning-100-inline));
72
+ --pix-warning-300-inline:255, 198, 118;
73
+ --pix-warning-300: rgb(var(--pix-warning-300-inline));
74
+ --pix-warning-500-inline:245, 158, 11;
75
+ --pix-warning-500: rgb(var(--pix-warning-500-inline));
76
+ --pix-warning-700-inline:180, 83, 9;
77
+ --pix-warning-700: rgb(var(--pix-warning-700-inline));
78
+ --pix-warning-900-inline:120, 53, 15;
79
+ --pix-warning-900: rgb(var(--pix-warning-900-inline));
80
+ --pix-error-50-inline:251, 236, 236;
81
+ --pix-error-50: rgb(var(--pix-error-50-inline));
82
+ --pix-error-100-inline:241, 196, 196;
83
+ --pix-error-100: rgb(var(--pix-error-100-inline));
84
+ --pix-error-500-inline:210, 65, 64;
85
+ --pix-error-500: rgb(var(--pix-error-500-inline));
86
+ --pix-error-700-inline:149, 46, 46;
87
+ --pix-error-700: rgb(var(--pix-error-700-inline));
88
+ --pix-error-900-inline:88, 27, 27;
89
+ --pix-error-900: rgb(var(--pix-error-900-inline));
90
+ --pix-certif-50-inline:232, 242, 242;
91
+ --pix-certif-50: rgb(var(--pix-certif-50-inline));
92
+ --pix-certif-500-inline:24, 127, 125;
93
+ --pix-certif-500: rgb(var(--pix-certif-500-inline));
94
+ --pix-orga-50-inline:235, 241, 249;
95
+ --pix-orga-50: rgb(var(--pix-orga-50-inline));
96
+ --pix-orga-500-inline:54, 116, 191;
97
+ --pix-orga-500: rgb(var(--pix-orga-500-inline));
98
+ --pix-information-dark-inline:242, 70, 69;
99
+ --pix-information-dark: rgb(var(--pix-information-dark-inline));
100
+ --pix-information-light-inline:241, 161, 65;
101
+ --pix-information-light: rgb(var(--pix-information-light-inline));
102
+ --pix-content-dark-inline:26, 140, 137;
103
+ --pix-content-dark: rgb(var(--pix-content-dark-inline));
104
+ --pix-content-light-inline:82, 217, 135;
105
+ --pix-content-light: rgb(var(--pix-content-light-inline));
106
+ --pix-communication-dark-inline:61, 104, 255;
107
+ --pix-communication-dark: rgb(var(--pix-communication-dark-inline));
108
+ --pix-communication-light-inline:18, 163, 255;
109
+ --pix-communication-light: rgb(var(--pix-communication-light-inline));
110
+ --pix-security-dark-inline:172, 0, 141;
111
+ --pix-security-dark: rgb(var(--pix-security-dark-inline));
112
+ --pix-security-light-inline:255, 63, 148;
113
+ --pix-security-light: rgb(var(--pix-security-light-inline));
114
+ --pix-environment-dark-inline:94, 37, 99;
115
+ --pix-environment-dark: rgb(var(--pix-environment-dark-inline));
116
+ --pix-environment-light-inline:86, 77, 166;
117
+ --pix-environment-light: rgb(var(--pix-environment-light-inline));
118
+ --pix-shadow-inline: 7, 20, 46;
119
+ --pix-shadow: rgb(var(--pix-shadow-inline));
62
120
  }
63
121
 
64
122
  // @deprecated - SCSS variables are replaced by CSS variables
@@ -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.0",
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
  },