@odx/ui 1.0.0-rc.5 → 1.0.0-rc.7

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.0-rc.5",
3
+ "version": "1.0.0-rc.7",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "files": [
@@ -0,0 +1,36 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/motion';
4
+ @use '../abstract/typography';
5
+ @use '../abstract/utils';
6
+
7
+ .odx-cdk-connected-overlay {
8
+ @include motion.transition(opacity visibility);
9
+
10
+ display: block;
11
+ position: fixed;
12
+ z-index: 1337;
13
+
14
+ &.is-hidden {
15
+ opacity: 0;
16
+ visibility: hidden;
17
+ }
18
+
19
+ &__content {
20
+ left: 0 !important;
21
+ position: relative !important;
22
+ top: 0 !important;
23
+
24
+ > * {
25
+ max-height: inherit;
26
+ }
27
+ }
28
+ }
29
+
30
+ .odx-cdk-connected-overlay-arrow {
31
+ height: dimensions.get-size(0.5);
32
+ position: fixed;
33
+ transform: rotate(45deg);
34
+ width: dimensions.get-size(0.5);
35
+ z-index: 0;
36
+ }
@@ -7,17 +7,15 @@
7
7
  .odx-accordion-item {
8
8
  $root: &;
9
9
 
10
- @include dimensions.padding(math.div(1, 6), 'bottom');
10
+ @include motion.transition(color);
11
+ @include dimensions.padding(math.div(6, 24), top);
12
+ @include dimensions.padding(math.div(5, 24), bottom);
11
13
 
12
14
  border-bottom: 1px solid var(--odx-input-control-outline-color);
13
15
  display: block;
14
16
 
15
- &:not(:last-child) {
16
- @include dimensions.margin(1, 'bottom');
17
- }
18
-
19
17
  &__panel {
20
- @include dimensions.padding-x(math.div(4, 24));
18
+ @include dimensions.padding-x(math.div(8, 24));
21
19
  @include dimensions.line-height(1.5, 1);
22
20
  @include motion.transition(background-color outline-color);
23
21
  @include utils.interactive(true);
@@ -46,8 +44,7 @@
46
44
  }
47
45
 
48
46
  &__slot {
49
- @include dimensions.padding-x(math.div(4, 24));
50
- @include dimensions.padding-y(math.div(8, 24));
47
+ @include dimensions.padding(math.div(8, 24));
51
48
 
52
49
  overflow: hidden;
53
50
  }
@@ -72,9 +72,10 @@
72
72
  }
73
73
 
74
74
  &--ghost {
75
+ @include utils.with-outline;
76
+
75
77
  background-color: transparent;
76
78
  color: var(--odx-c-link);
77
- outline-width: 1px;
78
79
 
79
80
  &:hover {
80
81
  background-color: var(--blue-700-5);
@@ -12,7 +12,7 @@
12
12
  display: inline-block;
13
13
 
14
14
  &.is-disabled {
15
- color: var(--odx-input-control-color-disabled);
15
+ color: var(--odx-control-color-disabled);
16
16
  }
17
17
 
18
18
  &.is-readonly {
@@ -0,0 +1,20 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+
4
+ .odx-dropdown {
5
+ background-color: var(--odx-c-background-content);
6
+ border-radius: var(--odx-v-border-radius);
7
+ box-shadow: var(--odx-v-backdrop-box-shadow-layer-2);
8
+ display: block;
9
+ min-height: inherit;
10
+
11
+ &__inner {
12
+ @include dimensions.padding-x(0.5);
13
+
14
+ border-bottom: dimensions.get-size(0.5) solid transparent;
15
+ border-top: dimensions.get-size(0.5) solid transparent;
16
+ max-height: inherit;
17
+ min-height: inherit;
18
+ overflow: auto;
19
+ }
20
+ }
@@ -0,0 +1,33 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/typography';
4
+
5
+ .odx-inline-message {
6
+ --odx-c-default: var(--blue-50);
7
+ --odx-c-warning: var(--yellow-50);
8
+ --odx-c-danger: var(--red-00);
9
+ --odx-c-success: var(--green-00);
10
+
11
+ $variants: default, warning, danger, success;
12
+
13
+ @include dimensions.padding(math.div(10, 24));
14
+
15
+ display: flex;
16
+ gap: dimensions.get-size(math.div(10, 24));
17
+
18
+ @each $variant in $variants {
19
+ &--#{$variant} {
20
+ background-color: var(--odx-c-#{$variant});
21
+ }
22
+ }
23
+
24
+ &--danger {
25
+ color: var(--red-700);
26
+ }
27
+
28
+ &__content {
29
+ @include typography.font-size(-1);
30
+
31
+ overflow: hidden;
32
+ }
33
+ }
@@ -10,11 +10,10 @@
10
10
  @include dimensions.padding-x(math.div(1, 3));
11
11
  @include dimensions.line-height(2, 1);
12
12
  @include motion.transition(border-bottom-color background-color outline-color color);
13
- @include typography.prevent-text-overflow();
14
13
  @include utils.interactive(false);
15
14
  @include utils.vertical-center-content();
16
15
 
17
- border-radius: var(--odx-v-border-radius);
16
+ border-radius: var(--odx-v-border-radius-controls);
18
17
  gap: dimensions.get-size(math.div(1, 3));
19
18
  position: relative;
20
19
 
@@ -30,16 +29,16 @@
30
29
  @include motion.transition(border-color);
31
30
 
32
31
  border-bottom: 1px solid var(--gray-200);
33
- bottom: 0;
34
32
  content: '';
35
33
  display: block;
36
34
  position: absolute;
37
- width: calc(100% - #{dimensions.get-size(math.div(2, 3))});
35
+ top: 0;
36
+ width: calc(100% - #{dimensions.get-size(math.div(14, 24))});
38
37
  }
39
38
 
40
39
  &:hover,
41
40
  &:focus-visible,
42
- &:last-child {
41
+ &:first-child {
43
42
  &::before {
44
43
  border-bottom-color: transparent;
45
44
  }
@@ -49,8 +48,14 @@
49
48
  background-color: var(--blue-700-5);
50
49
  }
51
50
 
51
+ &--danger + &::before,
52
+ &--selected + &::before,
53
+ &:hover + &::before {
54
+ border-color: transparent;
55
+ }
56
+
52
57
  &.is-disabled {
53
- color: var(--odx-input-control-color-disabled);
58
+ color: var(--odx-control-color-disabled);
54
59
  pointer-events: none;
55
60
  }
56
61
 
@@ -48,6 +48,7 @@
48
48
  }
49
49
 
50
50
  &-parent {
51
+ overflow: hidden;
51
52
  user-select: none;
52
53
  }
53
54
  }
@@ -11,7 +11,7 @@
11
11
  display: block;
12
12
 
13
13
  &.is-disabled {
14
- color: var(--odx-input-control-color-disabled);
14
+ color: var(--odx-control-color-disabled);
15
15
  }
16
16
 
17
17
  &.is-readonly {
@@ -31,7 +31,7 @@
31
31
 
32
32
  &.is-disabled {
33
33
  background-color: transparent;
34
- color: var(--odx-input-control-color-disabled);
34
+ color: var(--odx-control-color-disabled);
35
35
  pointer-events: none;
36
36
  }
37
37
 
@@ -0,0 +1,107 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/motion';
4
+ @use '../abstract/typography';
5
+ @use '../abstract/utils';
6
+
7
+ :root {
8
+ --odx-select-max-height: 220px;
9
+ }
10
+
11
+ .odx-select {
12
+ $root: &;
13
+
14
+ &__trigger {
15
+ @include utils.vertical-center-content();
16
+
17
+ cursor: pointer;
18
+ flex: 1 1 100%;
19
+ gap: dimensions.get-size(math.div(6, 24));
20
+ height: 100%;
21
+ width: 100%;
22
+
23
+ #{$root}.is-readonly & {
24
+ cursor: text;
25
+ user-select: unset;
26
+ }
27
+ }
28
+
29
+ &__placeholder,
30
+ &__value {
31
+ @include dimensions.padding-y(math.div(4, 24));
32
+ @include typography.prevent-text-overflow();
33
+
34
+ flex: 1 1 auto;
35
+ gap: dimensions.get-size(math.div(4, 24));
36
+ user-select: none;
37
+ }
38
+
39
+ &__placeholder {
40
+ @include typography.font-weight(normal);
41
+
42
+ color: var(--odx-input-control-color);
43
+ opacity: 0.65;
44
+ }
45
+
46
+ &__search {
47
+ height: 100%;
48
+ outline: inherit;
49
+ padding: 0 !important;
50
+ }
51
+
52
+ &__indicator {
53
+ @include motion.transition(transform opacity);
54
+ @include dimensions.margin(math.div(-2, 24), right);
55
+
56
+ margin-left: auto;
57
+
58
+ #{$root}.is-open & {
59
+ transform: rotateX(180deg);
60
+ }
61
+
62
+ #{$root}.is-readonly & {
63
+ opacity: 0;
64
+ }
65
+ }
66
+ }
67
+
68
+ .odx-select-dropdown {
69
+ display: flex;
70
+ flex-direction: column;
71
+ max-height: var(--odx-select-max-height);
72
+ min-height: dimensions.get-size(1.5);
73
+ }
74
+
75
+ .odx-option {
76
+ @include dimensions.line-height(1.5, 1);
77
+ @include dimensions.margin(math.div(4, 24), bottom);
78
+ @include dimensions.padding-x(0.5);
79
+ @include motion.transition(background-color color outline-color);
80
+ @include typography.font-weight(normal);
81
+
82
+ border-radius: var(--odx-v-border-radius-controls);
83
+ cursor: pointer;
84
+ user-select: none;
85
+
86
+ &:last-child {
87
+ margin-bottom: 0;
88
+ }
89
+
90
+ &.is-active,
91
+ &:hover {
92
+ background-color: var(--gray-50);
93
+ }
94
+
95
+ &.is-selected {
96
+ background-color: var(--cyan-500-15);
97
+ }
98
+
99
+ &.is-disabled {
100
+ color: var(--odx-control-color-disabled);
101
+ pointer-events: none;
102
+ }
103
+
104
+ > .odx-checkbox {
105
+ @include dimensions.margin(math.div(8, 24), right);
106
+ }
107
+ }
@@ -0,0 +1,130 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/motion';
4
+
5
+ .odx-slider {
6
+ --odx-control-outline-color: var(--gray-200);
7
+ --odx-control-background-color: var(--gray-100);
8
+ --odx-control-background-color-hover: var(--cyan-600);
9
+ $root: &;
10
+ $thumb-size: dimensions.get-size(math.div(20, 24));
11
+ $track-height: dimensions.get-size(math.div(4, 24));
12
+
13
+ appearance: none;
14
+ box-sizing: border-box;
15
+ display: block;
16
+ width: 100%;
17
+
18
+ @mixin track-container() {
19
+ background-color: var(--odx-control-background-color);
20
+ border-radius: 2px;
21
+ outline: 1px solid var(--odx-control-outline-color);
22
+ outline-offset: -1px;
23
+ }
24
+
25
+ @mixin track-progress() {
26
+ border-radius: 2px;
27
+ height: $track-height;
28
+ position: relative;
29
+ }
30
+
31
+ @mixin thumb() {
32
+ @include motion.transition(background-color outline-color);
33
+
34
+ appearance: none;
35
+ background-color: var(--odx-control-background-color-selected);
36
+ border-radius: 50%;
37
+ height: $thumb-size;
38
+ margin-top: calc(#{$thumb-size} / -2 + #{$track-height} / 2);
39
+ outline: 1px solid var(--white);
40
+ width: $thumb-size;
41
+ }
42
+
43
+ &::-webkit-slider-container {
44
+ @include track-container();
45
+
46
+ margin: calc((#{$thumb-size} - #{$track-height}) / 2) 0;
47
+ }
48
+
49
+ &::-moz-range-track {
50
+ @include track-container();
51
+
52
+ height: $track-height;
53
+ }
54
+
55
+ &::-webkit-slider-runnable-track {
56
+ @include track-progress();
57
+
58
+ background: linear-gradient(var(--odx-control-background-color-selected), var(--odx-control-background-color-selected)) 0 / var(--odx-slider-filled) 100%
59
+ no-repeat,
60
+ transparent;
61
+ }
62
+
63
+ &::-moz-range-progress {
64
+ @include track-progress();
65
+
66
+ background: var(--odx-control-background-color-selected);
67
+ }
68
+
69
+ &::-webkit-slider-thumb {
70
+ @include thumb();
71
+
72
+ position: relative;
73
+ }
74
+
75
+ &::-moz-range-thumb {
76
+ @include thumb();
77
+
78
+ border: unset;
79
+ }
80
+
81
+ &.is-disabled {
82
+ &::-webkit-slider-container {
83
+ background-color: var(--odx-control-background-color-disabled);
84
+ outline: 1px solid transparent;
85
+ }
86
+
87
+ &::-moz-range-track {
88
+ background-color: var(--odx-control-background-color-disabled);
89
+ outline: 1px solid transparent;
90
+ }
91
+
92
+ &::-webkit-slider-thumb {
93
+ background-color: var(--odx-c-text-disabled);
94
+ outline: 1px solid transparent;
95
+ }
96
+
97
+ &::-moz-range-thumb {
98
+ background-color: var(--odx-c-text-disabled);
99
+ outline: 1px solid transparent;
100
+ }
101
+
102
+ &::-webkit-slider-runnable-track {
103
+ background-image: linear-gradient(var(--odx-c-text-disabled), var(--odx-c-text-disabled));
104
+ }
105
+
106
+ &::-moz-range-progress {
107
+ background-image: linear-gradient(var(--odx-c-text-disabled), var(--odx-c-text-disabled));
108
+ }
109
+ }
110
+
111
+ &:focus-visible {
112
+ &::-webkit-slider-thumb {
113
+ outline: 2px solid var(--odx-c-highlight-active);
114
+ }
115
+
116
+ &::-moz-range-thumb {
117
+ outline: 2px solid var(--odx-c-highlight-active);
118
+ }
119
+ }
120
+
121
+ &:hover:not(.is-disabled) {
122
+ &::-webkit-slider-thumb {
123
+ background-color: var(--odx-control-background-color-hover);
124
+ }
125
+
126
+ &::-moz-range-thumb {
127
+ background-color: var(--odx-control-background-color-hover);
128
+ }
129
+ }
130
+ }
@@ -0,0 +1,124 @@
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-form-field__control:has(.odx-spinbox) {
9
+ background-color: transparent !important;
10
+ outline-color: transparent !important;
11
+
12
+ .odx-form-field-control {
13
+ padding: 0;
14
+ }
15
+
16
+ &::after {
17
+ content: none;
18
+ }
19
+
20
+ &.has-error & {
21
+ background-color: transparent;
22
+ outline-color: transparent;
23
+
24
+ &:hover {
25
+ background-color: transparent;
26
+ }
27
+ }
28
+ }
29
+
30
+ .odx-spinbox {
31
+ $root: &;
32
+
33
+ align-items: stretch;
34
+ display: flex;
35
+ flex: 1;
36
+ gap: 1px;
37
+
38
+ &__input {
39
+ @include typography.font-weight(medium);
40
+ @include dimensions.padding-x(math.div(8, 24));
41
+
42
+ appearance: textfield;
43
+ text-align: center;
44
+ width: 100%;
45
+
46
+ &::placeholder {
47
+ @include typography.font-weight(normal);
48
+
49
+ color: var(--odx-input-control-color);
50
+ opacity: 0.65;
51
+ }
52
+
53
+ &::-webkit-inner-spin-button {
54
+ appearance: none;
55
+ }
56
+ }
57
+
58
+ &__input,
59
+ &__action {
60
+ @include motion.transition(background-color border-color color);
61
+
62
+ background-color: var(--odx-input-control-background-color);
63
+ border: 1px solid var(--odx-input-control-outline-color);
64
+
65
+ #{$root}.has-error & {
66
+ background-color: var(--odx-input-control-background-color-error);
67
+ border-color: var(--odx-input-control-outline-color-error) !important;
68
+ }
69
+
70
+ #{$root} &:hover {
71
+ background-color: var(--odx-input-control-background-color-hover);
72
+ border-color: var(--odx-input-control-outline-color-hover);
73
+ }
74
+
75
+ #{$root} &:active {
76
+ background-color: var(--odx-input-control-outline-color-hover);
77
+ border-color: var(--odx-input-control-outline-color-hover);
78
+ }
79
+
80
+ #{$root}.is-readonly & {
81
+ background-color: var(--odx-input-control-outline-color-disabled);
82
+ border-color: var(--odx-input-control-outline-color-readonly) !important;
83
+ }
84
+
85
+ #{$root} &:focus-visible {
86
+ background-color: var(--odx-c-focus);
87
+ border-color: var(--odx-c-focus-outline) !important;
88
+ }
89
+
90
+ #{$root}.is-disabled & {
91
+ @include utils.non-interactive();
92
+
93
+ background-color: var(--odx-input-control-background-color-disabled);
94
+ border-color: var(--odx-input-control-outline-color-disabled) !important;
95
+ color: var(--odx-input-control-color-disabled);
96
+ }
97
+ }
98
+
99
+ &__action {
100
+ border-radius: var(--odx-v-border-radius-controls);
101
+ flex: 0 0 dimensions.get-size(math.div(36, 24));
102
+ height: 100%;
103
+ margin: 0;
104
+ outline: none;
105
+
106
+ &:first-child {
107
+ border-bottom-right-radius: 0;
108
+ border-right: unset;
109
+ border-top-right-radius: 0;
110
+ }
111
+
112
+ &:last-child {
113
+ border-bottom-left-radius: 0;
114
+ border-left: unset;
115
+ border-top-left-radius: 0;
116
+ }
117
+
118
+ #{$root}.is-readonly & {
119
+ @include utils.non-interactive();
120
+
121
+ color: var(--odx-input-control-color-disabled);
122
+ }
123
+ }
124
+ }
@@ -21,7 +21,7 @@
21
21
  display: inline-block;
22
22
 
23
23
  &.is-disabled {
24
- color: var(--odx-input-control-color-disabled);
24
+ color: var(--odx-control-color-disabled);
25
25
  }
26
26
 
27
27
  &.is-readonly {
@@ -4,41 +4,42 @@
4
4
  @use '../abstract/utils';
5
5
 
6
6
  .odx-toggle-button-group {
7
+ --odx-toggle-button-border-radius: 2px;
8
+
7
9
  $root: &;
8
10
  @include dimensions.height(2, 1.5);
9
11
  @include dimensions.padding-x(math.div(6, 24));
10
- @include motion.transition(background-color);
12
+ @include motion.transition(background-color outline-color);
11
13
  @include utils.center-content(true);
12
- @include utils.with-outline();
14
+ @include utils.with-outline;
13
15
 
14
16
  border-radius: var(--odx-v-border-radius-controls);
15
- color: var(--odx-control-color);
16
17
  column-gap: dimensions.get-size(math.div(6, 24));
17
18
  position: relative;
18
19
 
19
20
  &__indicator {
20
21
  @include dimensions.height(2, 1);
21
- @include utils.with-outline();
22
+ @include utils.with-outline;
22
23
 
23
24
  background-color: var(--odx-c-highlight);
24
- border-radius: 2px;
25
+ border-radius: var(--odx-toggle-button-border-radius);
25
26
 
26
27
  #{$root}.is-disabled & {
27
- background-color: var(--odx-control-background-color-disabled);
28
+ background-color: var(--odx-c-secondary-disabled);
28
29
  }
29
30
 
30
31
  #{$root}.is-readonly & {
31
- background-color: var(--odx-control-background-color-readonly);
32
- outline-color: var(--odx-control-outline-color-readonly);
32
+ background-color: transparent;
33
+ outline-color: currentcolor;
33
34
  }
34
35
 
35
36
  #{$root}.is-readonly.is-disabled & {
36
37
  background-color: transparent;
37
- outline-color: var(--odx-control-color-disabled);
38
+ outline-color: var(--odx-c-secondary-disabled);
38
39
  }
39
40
 
40
41
  #{$root}:focus-within:has(:focus-visible) & {
41
- outline-color: var(--odx-control-outline-color-selected-focus);
42
+ outline-color: var(--odx-c-highlight-active);
42
43
  }
43
44
  }
44
45
 
@@ -51,8 +52,11 @@
51
52
  outline-color: var(--odx-c-error-outline);
52
53
  }
53
54
 
54
- &:not(.is-disabled, .is-readonly):hover,
55
- &:focus-within:has(:focus-visible) {
56
- background-color: var(--blue-700-5);
55
+ &.is-active {
56
+ @include utils.focus-state($focus-within: true);
57
+
58
+ &:not(.is-disabled, .is-readonly):hover {
59
+ background-color: var(--blue-700-5);
60
+ }
57
61
  }
58
62
  }