@odx/ui 1.0.4 → 2.0.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odx/ui",
3
- "version": "1.0.4",
3
+ "version": "2.0.0",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {
@@ -3,7 +3,7 @@
3
3
  @use '../../abstract/typography';
4
4
 
5
5
  .ag-theme-odx {
6
- --ag-border-color: var(--odx-c-seperator);
6
+ --ag-border-color: var(--odx-c-separator);
7
7
  --ag-foreground-color: var(--odx-c-text);
8
8
  --ag-secondary-foreground-color: var(--odx-c-text);
9
9
  --ag-disabled-foreground-color: vara(--odx-c-text-disabled);
@@ -0,0 +1,16 @@
1
+ @use '../abstract/dimensions';
2
+
3
+ .odx-autocomplete {
4
+ $root: &;
5
+
6
+ &__trigger {
7
+ height: 100%;
8
+ }
9
+
10
+ .odx-form-field-control {
11
+ height: 100%;
12
+ padding: 0;
13
+
14
+ @include dimensions.min-height(1.5);
15
+ }
16
+ }
@@ -0,0 +1,23 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+
4
+ $form-field-inner-padding: math.div(8, 24);
5
+
6
+ .odx-chip-list {
7
+ $root: &;
8
+
9
+ display: flex;
10
+ flex-direction: column;
11
+ width: 100%;
12
+
13
+ &-row {
14
+ &:has(.odx-chip) {
15
+ @include dimensions.padding($form-field-inner-padding, ('top', 'left', 'right'));
16
+ @include dimensions.padding(math.div(4, 24), ('bottom'));
17
+
18
+ display: flex;
19
+ flex-wrap: wrap;
20
+ gap: dimensions.get-size($form-field-inner-padding);
21
+ }
22
+ }
23
+ }
@@ -19,6 +19,13 @@ $dropdown-open-selector: '.odx-dropdown-host[aria-expanded="true"]';
19
19
  min-height: inherit;
20
20
  overflow: auto;
21
21
  }
22
+
23
+ &__option-list {
24
+ display: flex;
25
+ flex-direction: column;
26
+ max-height: var(--odx-select-max-height);
27
+ min-height: dimensions.get-size(1.5);
28
+ }
22
29
  }
23
30
 
24
31
  .odx-dropdown-overlay {
@@ -5,6 +5,7 @@
5
5
  .odx-expandable-list-item {
6
6
  $root: &;
7
7
 
8
+ display: block;
8
9
  position: relative;
9
10
 
10
11
  &::before {
@@ -13,6 +14,7 @@
13
14
  border-bottom: 1px solid var(--gray-200);
14
15
  content: '';
15
16
  display: block;
17
+ left: dimensions.get-size(math.div(1, 3));
16
18
  position: absolute;
17
19
  top: 0;
18
20
  width: calc(100% - #{dimensions.get-size(math.div(14, 24))});
@@ -27,7 +29,6 @@
27
29
  }
28
30
 
29
31
  &--danger + &::before,
30
- &--expanded + &::before,
31
32
  &:hover + &::before {
32
33
  border-color: transparent;
33
34
  }
@@ -59,6 +60,17 @@
59
60
  }
60
61
 
61
62
  &__slot {
63
+ #{$root}:last-child & {
64
+ .odx-list-item:last-child::after {
65
+ border-bottom: 1px solid var(--gray-200);
66
+ bottom: 0;
67
+ content: '';
68
+ display: block;
69
+ position: absolute;
70
+ width: calc(100% - #{dimensions.get-size(math.div(14, 24))});
71
+ }
72
+ }
73
+
62
74
  .odx-list-item__content {
63
75
  @include dimensions.padding(math.div(36, 24), left);
64
76
  }
@@ -15,6 +15,7 @@ body {
15
15
  .odx-form,
16
16
  .odx-form-group {
17
17
  --odx-grid-gutter: #{dimensions.get-size(0.5)};
18
+ --odx-form-field-horizontal-label-width: #{dimensions.get-size(math.div(150, 24))};
18
19
 
19
20
  row-gap: 0;
20
21
  }
@@ -60,10 +61,9 @@ body {
60
61
  }
61
62
 
62
63
  &-label {
63
- @include typography.prevent-text-overflow();
64
-
65
- display: block;
66
- max-width: 100%;
64
+ #{$root}:not(#{$root}--horizontal) & {
65
+ @include typography.prevent-text-overflow();
66
+ }
67
67
  }
68
68
 
69
69
  &__label {
@@ -71,16 +71,21 @@ body {
71
71
  @include dimensions.margin(-$form-field-label-height, 'top');
72
72
  @include typography.font-size(-1);
73
73
 
74
- display: flex;
75
74
  user-select: none;
76
75
 
77
- #{$root}--required:not(.is-readonly, .is-disabled) &::after {
76
+ #{$root}:not(#{$root}--horizontal, #{$root}--simple) & {
77
+ display: flex;
78
+ }
79
+
80
+ &-is-required {
78
81
  @include typography.font-size(0);
79
82
 
80
- color: var(--odx-c-error-text);
81
- content: '*';
82
83
  margin-left: 2px;
83
84
  vertical-align: top;
85
+
86
+ #{$root}--required:not(.is-readonly, .is-disabled) & {
87
+ color: var(--odx-c-error-text);
88
+ }
84
89
  }
85
90
  }
86
91
 
@@ -216,6 +221,24 @@ body {
216
221
  display: none;
217
222
  }
218
223
  }
224
+
225
+ &--horizontal {
226
+ @include dimensions.padding(math.div(8, 24), top);
227
+
228
+ flex-direction: row;
229
+
230
+ #{$root}__label {
231
+ @include dimensions.margin(0.25, top);
232
+
233
+ flex: 0 0 var(--odx-form-field-horizontal-label-width);
234
+ max-width: var(--odx-form-field-horizontal-label-width);
235
+ padding-left: 0;
236
+ }
237
+
238
+ #{$root}__inner {
239
+ flex: 1;
240
+ }
241
+ }
219
242
  }
220
243
 
221
244
  .odx-form-field.is-readonly,
@@ -30,7 +30,7 @@
30
30
  }
31
31
 
32
32
  .odx-action-group:not(:last-child) {
33
- border-right: 1px solid var(--odx-c-seperator);
33
+ border-right: 1px solid var(--odx-c-separator);
34
34
  margin-right: dimensions.get-size(0.5);
35
35
  padding-right: dimensions.get-size(0.5);
36
36
  }
@@ -0,0 +1,38 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/motion';
4
+ @use '../abstract/typography';
5
+
6
+ .odx-option {
7
+ @include dimensions.line-height(1.5, 1);
8
+ @include dimensions.margin(math.div(4, 24), bottom);
9
+ @include dimensions.padding-x(0.5);
10
+ @include motion.transition(background-color color outline-color);
11
+ @include typography.font-weight(normal);
12
+
13
+ border-radius: var(--odx-v-border-radius-controls);
14
+ cursor: pointer;
15
+ user-select: none;
16
+
17
+ &:last-child {
18
+ margin-bottom: 0;
19
+ }
20
+
21
+ &.is-active,
22
+ &:hover {
23
+ background-color: var(--gray-50);
24
+ }
25
+
26
+ &.is-selected {
27
+ background-color: var(--cyan-500-15);
28
+ }
29
+
30
+ &.is-disabled {
31
+ color: var(--odx-control-color-disabled);
32
+ pointer-events: none;
33
+ }
34
+
35
+ > .odx-checkbox {
36
+ @include dimensions.margin(math.div(8, 24), right);
37
+ }
38
+ }
@@ -66,44 +66,3 @@ body {
66
66
  }
67
67
  }
68
68
  }
69
-
70
- .odx-select-dropdown {
71
- display: flex;
72
- flex-direction: column;
73
- max-height: var(--odx-select-max-height);
74
- min-height: dimensions.get-size(1.5);
75
- }
76
-
77
- .odx-option {
78
- @include dimensions.line-height(1.5, 1);
79
- @include dimensions.margin(math.div(4, 24), bottom);
80
- @include dimensions.padding-x(0.5);
81
- @include motion.transition(background-color color outline-color);
82
- @include typography.font-weight(normal);
83
-
84
- border-radius: var(--odx-v-border-radius-controls);
85
- cursor: pointer;
86
- user-select: none;
87
-
88
- &:last-child {
89
- margin-bottom: 0;
90
- }
91
-
92
- &.is-active,
93
- &:hover {
94
- background-color: var(--gray-50);
95
- }
96
-
97
- &.is-selected {
98
- background-color: var(--cyan-500-15);
99
- }
100
-
101
- &.is-disabled {
102
- color: var(--odx-control-color-disabled);
103
- pointer-events: none;
104
- }
105
-
106
- > .odx-checkbox {
107
- @include dimensions.margin(math.div(8, 24), right);
108
- }
109
- }
@@ -0,0 +1,94 @@
1
+ @use 'sass:math';
2
+ @use '../layout/helpers';
3
+ @use '../abstract/dimensions';
4
+ @use '../abstract/typography';
5
+ @use '../abstract/utils';
6
+ @use '../abstract/motion';
7
+
8
+ .odx-table {
9
+ --odx-table-background-color: var(--white);
10
+ --odx-table-head-border-color: var(--gray-900);
11
+ --odx-table-cell-border-color: var(--gray-200);
12
+ --odx-table-cell-background-color-hover: var(--blue-700-5);
13
+ --odx-table-cell-background-color-striped: var(--gray-50);
14
+ --odx-table-cell-background-color-active: var(--cyan-500-15);
15
+
16
+ $root: &;
17
+
18
+ background: var(--odx-table-background-color);
19
+ border: 0;
20
+ border-spacing: 0;
21
+ min-width: 100%;
22
+ table-layout: auto;
23
+ white-space: normal;
24
+
25
+ &__header-cell,
26
+ &__cell {
27
+ @include dimensions.padding-x(0.5);
28
+
29
+ border-bottom-style: solid;
30
+ border-bottom-width: 1px;
31
+ text-align: left;
32
+ }
33
+
34
+ &__cell {
35
+ border-bottom-color: var(--odx-table-cell-border-color);
36
+ height: dimensions.get-size(2);
37
+ vertical-align: middle;
38
+ }
39
+
40
+ &__header-cell-title {
41
+ align-items: center;
42
+ display: flex;
43
+ gap: dimensions.get-size(math.div(8, 24));
44
+ height: dimensions.get-size(2);
45
+ user-select: none;
46
+
47
+ &.sortable {
48
+ cursor: pointer;
49
+
50
+ > svg {
51
+ display: inline-block;
52
+ height: auto;
53
+ width: dimensions.get-size(math.div(16, 24));
54
+ }
55
+ }
56
+ }
57
+
58
+ &__header-cell {
59
+ @include typography.font-weight(medium);
60
+
61
+ border-bottom-color: var(--odx-table-head-border-color);
62
+
63
+ .odx-form-field {
64
+ height: dimensions.get-size(2);
65
+ justify-content: center;
66
+ padding: 0;
67
+
68
+ &__info {
69
+ display: none;
70
+ }
71
+ }
72
+ }
73
+
74
+ &--striped {
75
+ .odx-table__row:nth-child(odd) {
76
+ background-color: var(--odx-table-cell-background-color-striped);
77
+ }
78
+ }
79
+
80
+ &__body {
81
+ /* stylelint-disable-next-line no-descending-specificity */
82
+ .odx-table__row {
83
+ @include motion.transition(background-color);
84
+
85
+ &:hover {
86
+ background-color: var(--odx-table-cell-background-color-hover);
87
+ }
88
+
89
+ &:focus-visible {
90
+ background-color: var(--odx-table-cell-background-color-active);
91
+ }
92
+ }
93
+ }
94
+ }
@@ -0,0 +1,256 @@
1
+ @use 'sass:math';
2
+ @use 'sass:color';
3
+ @use '../abstract/dimensions';
4
+ @use '../abstract/utils';
5
+ @use '../abstract/motion';
6
+ @use '../abstract/typography';
7
+
8
+ .odx-wizard-step {
9
+ $root: &;
10
+ $parent-root: odx-wizard;
11
+ $step-size: dimensions.get-size(math.div(20, 24));
12
+ $icon-size: dimensions.get-size(math.div(13, 24));
13
+ $border-width: dimensions.get-size(math.div(2, 24));
14
+
15
+ cursor: pointer;
16
+ display: none;
17
+ flex: 1;
18
+ flex-direction: column;
19
+ overflow: hidden;
20
+
21
+ .#{$parent-root}:not(.#{$parent-root}--vertical) & {
22
+ gap: dimensions.get-size(math.div(8, 24));
23
+ min-width: var(--odx-horizontal-wizzard-width);
24
+ }
25
+
26
+ &.is-disabled {
27
+ @include utils.non-interactive();
28
+ }
29
+
30
+ &--visible {
31
+ display: inline-flex;
32
+ }
33
+
34
+ &__label {
35
+ @include typography.prevent-text-overflow();
36
+ @include utils.with-outline();
37
+ @include motion.transition(background-color, outline-color);
38
+
39
+ align-self: center;
40
+ border-radius: var(--odx-v-border-radius-controls);
41
+ color: var(--odx-c-secondary-disabled);
42
+ margin: 0 auto;
43
+ padding: dimensions.get-size(math.div(4, 24));
44
+ user-select: none;
45
+
46
+ #{$root}--valid & {
47
+ color: var(--odx-control-color-disabled);
48
+ }
49
+
50
+ #{$root}--passed & {
51
+ color: var(--odx-c-primary);
52
+ }
53
+
54
+ #{$root}--active & {
55
+ font-weight: var(--odx-typography-font-weight-medium);
56
+ }
57
+
58
+ #{$root}:focus-visible & {
59
+ background-color: var(--odx-c-focus);
60
+ outline-color: var(--odx-c-focus-outline);
61
+ }
62
+
63
+ #{$root}:hover & {
64
+ background-color: var(--blue-700-5);
65
+ }
66
+
67
+ .#{$parent-root}--vertical & {
68
+ margin: unset;
69
+ }
70
+ }
71
+
72
+ &__line-before,
73
+ &__line-after,
74
+ &__dotted-line {
75
+ flex: 1;
76
+
77
+ .#{$parent-root}:not(.#{$parent-root}--vertical) & {
78
+ border-bottom: $border-width solid var(--odx-c-secondary-disabled);
79
+ height: 0;
80
+ }
81
+
82
+ .#{$parent-root}--vertical & {
83
+ border-left: $border-width solid var(--odx-c-secondary-disabled);
84
+ width: 0;
85
+ }
86
+ }
87
+
88
+ &__dotted-line {
89
+ &:not(.odx-wizard-step__dotted-line--active) {
90
+ display: none;
91
+ }
92
+
93
+ .#{$parent-root}:not(.#{$parent-root}--vertical) & {
94
+ align-self: flex-end;
95
+ border-style: dashed;
96
+ height: 0;
97
+ margin-bottom: calc(#{$step-size} / 2 - #{$border-width} / 2);
98
+ min-width: var(--odx-horizontal-wizzard-width);
99
+ }
100
+
101
+ .#{$parent-root}.#{$parent-root}--vertical & {
102
+ border-style: dashed;
103
+ margin-left: calc(#{$step-size} / 2 - #{$border-width} / 2);
104
+ padding-bottom: var(--odx-verticalal-wizzard-heigth);
105
+ }
106
+
107
+ #{$root}:first-of-type + & {
108
+ .#{$parent-root}.#{$parent-root}--vertical & {
109
+ border-left-color: var(--odx-c-primary);
110
+ }
111
+
112
+ .#{$parent-root}:not(.#{$parent-root}--vertical) & {
113
+ border-bottom-color: var(--odx-c-primary);
114
+ }
115
+ }
116
+
117
+ .#{$parent-root}:not(.#{$parent-root}--vertical):has(#{$root}:last-of-type#{$root}--touched) & {
118
+ &:last-of-type {
119
+ border-bottom-color: var(--odx-control-color-disabled);
120
+ }
121
+ }
122
+
123
+ .#{$parent-root}--vertical:has(#{$root}:last-of-type#{$root}--touched) & {
124
+ &:last-of-type {
125
+ border-left-color: var(--odx-control-color-disabled);
126
+ }
127
+ }
128
+ }
129
+
130
+ &__line-before {
131
+ #{$root}:first-of-type & {
132
+ .#{$parent-root}:not(.#{$parent-root}--vertical) & {
133
+ border-bottom-color: transparent;
134
+ }
135
+
136
+ .#{$parent-root}--vertical & {
137
+ border-left-color: transparent;
138
+ }
139
+ }
140
+
141
+ #{$root}--touched & {
142
+ .#{$parent-root}:not(.#{$parent-root}--vertical) & {
143
+ border-bottom-color: var(--odx-control-color-disabled);
144
+ }
145
+
146
+ .#{$parent-root}--vertical & {
147
+ border-left-color: var(--odx-control-color-disabled);
148
+ }
149
+ }
150
+
151
+ #{$root}--passed & {
152
+ .#{$parent-root}:not(.#{$parent-root}--vertical) & {
153
+ border-bottom-color: var(--odx-c-primary);
154
+ }
155
+
156
+ .#{$parent-root}--vertical & {
157
+ border-left-color: var(--odx-c-primary);
158
+ }
159
+ }
160
+ }
161
+
162
+ &__line-after {
163
+ #{$root}--touched:not(#{$root}--is-last-touched) & {
164
+ .#{$parent-root}:not(.#{$parent-root}--vertical) & {
165
+ border-bottom-color: var(--odx-control-color-disabled);
166
+ }
167
+
168
+ .#{$parent-root}--vertical & {
169
+ border-left-color: var(--odx-control-color-disabled);
170
+ }
171
+ }
172
+
173
+ #{$root}:last-of-type & {
174
+ .#{$parent-root}:not(.#{$parent-root}--vertical) & {
175
+ border-bottom-color: transparent;
176
+ }
177
+
178
+ .#{$parent-root}--vertical & {
179
+ border-left-color: transparent;
180
+ }
181
+ }
182
+
183
+ #{$root}--passed:not(#{$root}--active) & {
184
+ .#{$parent-root}:not(.#{$parent-root}--vertical) & {
185
+ border-bottom-color: var(--odx-c-primary);
186
+ }
187
+
188
+ .#{$parent-root}--vertical & {
189
+ border-left-color: var(--odx-c-primary);
190
+ }
191
+ }
192
+ }
193
+
194
+ &__holder {
195
+ align-items: center;
196
+ display: flex;
197
+
198
+ .#{$parent-root}--vertical & {
199
+ flex-direction: column;
200
+ height: 100%;
201
+ }
202
+ }
203
+
204
+ &__circle {
205
+ @include motion.transition(background-color, color);
206
+
207
+ align-items: center;
208
+ border: $border-width solid var(--odx-c-secondary-disabled);
209
+ border-radius: 50%;
210
+ color: var(--odx-c-secondary-disabled);
211
+ display: flex;
212
+ height: $step-size;
213
+ justify-content: center;
214
+ width: $step-size;
215
+
216
+ #{$root}--touched & {
217
+ border-color: var(--odx-control-color-disabled);
218
+ color: var(--odx-control-color-disabled);
219
+ }
220
+
221
+ #{$root}--active & {
222
+ background-color: var(--odx-c-primary);
223
+ border-color: var(--odx-c-primary);
224
+ color: var(--odx-c-primary);
225
+ }
226
+
227
+ #{$root}--active#{$root}--valid & {
228
+ color: var(--white);
229
+ }
230
+
231
+ #{$root}--passed & {
232
+ border-color: var(--odx-c-primary);
233
+ color: var(--odx-c-primary);
234
+ }
235
+ }
236
+
237
+ &__icon {
238
+ font-size: $icon-size;
239
+ font-weight: var(--odx-typography-font-weight-bold);
240
+ height: $icon-size;
241
+ visibility: hidden;
242
+ width: $icon-size;
243
+
244
+ #{$root}--valid & {
245
+ visibility: visible;
246
+ }
247
+ }
248
+
249
+ .#{$parent-root}--vertical & {
250
+ align-items: center;
251
+ flex: 0 0 var(--odx-vertical-wizzard-heigth);
252
+ flex-direction: row-reverse;
253
+ gap: dimensions.get-size(math.div(12, 24));
254
+ justify-content: start;
255
+ }
256
+ }
@@ -0,0 +1,18 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/breakpoints';
4
+
5
+ .odx-wizard {
6
+ --odx-horizontal-wizzard-width: #{dimensions.get-size(math.div(100, 24))};
7
+ --odx-vertical-wizzard-heigth: #{dimensions.get-size(math.div(70, 24))};
8
+
9
+ display: flex;
10
+
11
+ &--vertical {
12
+ flex-direction: column;
13
+ }
14
+
15
+ &--overflow:not(&--vertical) {
16
+ min-width: calc(var(--odx-horizontal-wizzard-width) * 7);
17
+ }
18
+ }
package/scss/core.scss CHANGED
@@ -6,12 +6,13 @@ Layout
6
6
  */
7
7
 
8
8
  @use 'layout/base';
9
+ @use 'layout/content';
9
10
  @use 'layout/description-list';
10
11
  @use 'layout/layout';
11
12
  @use 'layout/helpers';
12
13
  @use 'layout/typography';
13
14
  @use 'layout/text-list';
14
- @use 'layout/content';
15
+ @use 'layout/application';
15
16
 
16
17
  /*
17
18
  CDK
@@ -32,6 +33,7 @@ Layout
32
33
  @use 'components/accordion-item.component';
33
34
  @use 'components/action-group.component';
34
35
  @use 'components/area-header.component';
36
+ @use 'components/autocomplete.component';
35
37
  @use 'components/avatar.component';
36
38
  @use 'components/badge.component';
37
39
  @use 'components/bar.component';
@@ -41,6 +43,7 @@ Layout
41
43
  @use 'components/card.component';
42
44
  @use 'components/checkbox.component';
43
45
  @use 'components/chip.component';
46
+ @use 'components/chip-list.component';
44
47
  @use 'components/circular-progress.component';
45
48
  @use 'components/content-box.component';
46
49
  @use 'components/dropdown.component';
@@ -59,6 +62,7 @@ Layout
59
62
  @use 'components/menu.component';
60
63
  @use 'components/modal.component';
61
64
  @use 'components/navigation-back.component';
65
+ @use 'components/option.component';
62
66
  @use 'components/progress.component';
63
67
  @use 'components/radio-button.component';
64
68
  @use 'components/radio-group.component';
@@ -70,8 +74,11 @@ Layout
70
74
  @use 'components/switch.component';
71
75
  @use 'components/tab-bar-item.component';
72
76
  @use 'components/tab-bar.component';
77
+ @use 'components/table.component';
73
78
  @use 'components/toast.component';
74
79
  @use 'components/toast-item.component';
75
80
  @use 'components/toggle-button.component';
76
81
  @use 'components/toggle-button-group.component';
77
82
  @use 'components/tooltip.component';
83
+ @use 'components/wizard.component';
84
+ @use 'components/wizard-step.component';