@carbon/ibm-products 1.8.0 → 1.11.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.
Files changed (111) hide show
  1. package/css/index-full-carbon.css +270 -5656
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +6 -6
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +58 -3432
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +3 -3
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +238 -3922
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +6 -6
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +238 -3923
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +6 -6
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/AddSelect/AddSelect.js +147 -53
  18. package/es/components/AddSelect/AddSelectBreadcrumbs.js +4 -4
  19. package/es/components/AddSelect/AddSelectColumn.js +195 -0
  20. package/es/components/AddSelect/AddSelectList.js +67 -8
  21. package/es/components/AddSelect/AddSelectSidebar.js +8 -15
  22. package/es/components/AddSelect/add-select-utils.js +64 -0
  23. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
  24. package/es/components/ButtonMenu/ButtonMenu.js +1 -1
  25. package/es/components/DataSpreadsheet/DataSpreadsheet.js +505 -167
  26. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +244 -17
  27. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +74 -8
  28. package/es/components/DataSpreadsheet/hooks/useMoveActiveCell.js +27 -0
  29. package/es/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +28 -0
  30. package/es/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +41 -0
  31. package/es/components/DataSpreadsheet/utils/checkActiveHeaderCell.js +34 -0
  32. package/es/components/DataSpreadsheet/utils/createActiveCellFn.js +58 -0
  33. package/es/components/DataSpreadsheet/utils/createCellSelectionArea.js +49 -0
  34. package/es/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
  35. package/es/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
  36. package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +46 -0
  37. package/es/components/DataSpreadsheet/utils/handleMultipleKeys.js +82 -0
  38. package/es/components/DataSpreadsheet/utils/removeCellSelections.js +30 -0
  39. package/es/components/InlineEdit/InlineEdit.js +80 -39
  40. package/es/components/OptionsTile/OptionsTile.js +31 -21
  41. package/es/components/OptionsTile/index.js +1 -1
  42. package/es/components/PageHeader/PageHeader.js +26 -15
  43. package/es/components/PageHeader/PageHeaderTitle.js +2 -1
  44. package/es/components/PageHeader/PageHeaderUtils.js +24 -29
  45. package/es/components/TagSet/TagSet.js +12 -3
  46. package/es/components/UserProfileImage/UserProfileImage.js +2 -1
  47. package/es/global/js/utils/DisplayBox.js +31 -0
  48. package/es/global/js/utils/deepCloneObject.js +26 -0
  49. package/lib/components/AddSelect/AddSelect.js +150 -54
  50. package/lib/components/AddSelect/AddSelectBreadcrumbs.js +2 -3
  51. package/lib/components/AddSelect/AddSelectColumn.js +219 -0
  52. package/lib/components/AddSelect/AddSelectList.js +65 -8
  53. package/lib/components/AddSelect/AddSelectSidebar.js +14 -15
  54. package/lib/components/AddSelect/add-select-utils.js +78 -0
  55. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
  56. package/lib/components/ButtonMenu/ButtonMenu.js +1 -1
  57. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +514 -170
  58. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +251 -18
  59. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +82 -9
  60. package/lib/components/DataSpreadsheet/hooks/useMoveActiveCell.js +37 -0
  61. package/lib/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +39 -0
  62. package/lib/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +52 -0
  63. package/lib/components/DataSpreadsheet/utils/checkActiveHeaderCell.js +45 -0
  64. package/lib/components/DataSpreadsheet/{createActiveCellFn.js → utils/createActiveCellFn.js} +22 -9
  65. package/lib/components/DataSpreadsheet/utils/createCellSelectionArea.js +60 -0
  66. package/lib/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
  67. package/lib/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
  68. package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +59 -0
  69. package/lib/components/DataSpreadsheet/utils/handleMultipleKeys.js +92 -0
  70. package/lib/components/DataSpreadsheet/utils/removeCellSelections.js +41 -0
  71. package/lib/components/InlineEdit/InlineEdit.js +82 -40
  72. package/lib/components/OptionsTile/OptionsTile.js +30 -20
  73. package/lib/components/PageHeader/PageHeader.js +25 -15
  74. package/lib/components/PageHeader/PageHeaderTitle.js +2 -1
  75. package/lib/components/PageHeader/PageHeaderUtils.js +24 -29
  76. package/lib/components/TagSet/TagSet.js +13 -3
  77. package/lib/components/UserProfileImage/UserProfileImage.js +2 -1
  78. package/lib/global/js/utils/DisplayBox.js +46 -0
  79. package/lib/global/js/utils/deepCloneObject.js +37 -0
  80. package/package.json +17 -17
  81. package/scss/components/ActionBar/_storybook-styles.scss +8 -0
  82. package/scss/components/ActionSet/_storybook-styles.scss +1 -3
  83. package/scss/components/AddSelect/_add-select.scss +99 -14
  84. package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +7 -3
  85. package/scss/components/BreadcrumbWithOverflow/_storybook-styles.scss +8 -0
  86. package/scss/components/ButtonSetWithOverflow/_storybook-styles.scss +8 -0
  87. package/scss/components/CreateInfluencer/_create-influencer.scss +2 -0
  88. package/scss/components/CreateModal/_create-modal.scss +1 -0
  89. package/scss/components/CreateSidePanel/_create-side-panel.scss +1 -1
  90. package/scss/components/CreateSidePanel/_storybook-styles.scss +1 -1
  91. package/scss/components/CreateTearsheet/_create-tearsheet.scss +1 -0
  92. package/scss/components/CreateTearsheetNarrow/_create-tearsheet-narrow.scss +1 -0
  93. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +42 -6
  94. package/scss/components/EditSidePanel/_edit-side-panel.scss +9 -0
  95. package/scss/components/EditSidePanel/_storybook-styles.scss +1 -1
  96. package/scss/components/InlineEdit/_inline-edit.scss +53 -43
  97. package/scss/components/InlineEdit/_storybook-styles.scss +2 -0
  98. package/scss/components/LoadingBar/_loading-bar.scss +13 -0
  99. package/scss/components/NotificationsPanel/_notifications-panel.scss +3 -0
  100. package/scss/components/OptionsTile/_index.scss +1 -1
  101. package/scss/components/OptionsTile/_options-tile.scss +17 -17
  102. package/scss/components/OptionsTile/_storybook-styles.scss +4 -4
  103. package/scss/components/PageHeader/_page-header.scss +5 -2
  104. package/scss/components/SidePanel/_side-panel.scss +19 -12
  105. package/scss/components/StatusIcon/_status-icon.scss +1 -0
  106. package/scss/components/TagSet/_storybook-styles.scss +8 -0
  107. package/scss/components/Tearsheet/_tearsheet.scss +1 -2
  108. package/scss/components/UserProfileImage/_user-profile-image.scss +9 -0
  109. package/scss/components/WebTerminal/_web-terminal.scss +2 -0
  110. package/scss/global/styles/_display-box.scss +62 -0
  111. package/es/components/DataSpreadsheet/createActiveCellFn.js +0 -45
@@ -24,19 +24,11 @@
24
24
  padding: $spacing-05;
25
25
  }
26
26
 
27
- .#{$block-class}__items-label {
28
- margin-right: $spacing-03;
29
-
30
- &-container {
31
- display: flex;
32
- align-items: center;
33
- margin-top: $spacing-05;
34
- margin-bottom: $spacing-03;
35
- }
36
- }
37
-
38
27
  .#{$block-class}__selections {
39
- border-top: 1px solid $ui-03;
28
+ &.#{$carbon-prefix}--structured-list {
29
+ border-top: 1px solid $ui-03;
30
+ margin-bottom: 0;
31
+ }
40
32
 
41
33
  &-wrapper {
42
34
  display: block;
@@ -47,6 +39,18 @@
47
39
  align-items: center;
48
40
  justify-content: space-between;
49
41
  }
42
+
43
+ &-cell-title {
44
+ display: block;
45
+ color: $text-01;
46
+ }
47
+
48
+ &-cell-subtitle {
49
+ @include carbon--type-style('label-01');
50
+
51
+ display: block;
52
+ color: $text-02;
53
+ }
50
54
  }
51
55
 
52
56
  // sidebar
@@ -65,18 +69,33 @@
65
69
  margin-right: $spacing-03;
66
70
  }
67
71
 
72
+ .#{$block-class}__sidebar-selected-item {
73
+ &-title {
74
+ color: $text-01;
75
+ }
76
+
77
+ &-subtitle {
78
+ @include carbon--type-style('label-01');
79
+
80
+ color: $text-02;
81
+ }
82
+ }
83
+
68
84
  .#{$block-class}__sidebar-body {
69
85
  padding: $spacing-05;
70
86
  }
71
87
 
72
88
  .#{$block-class} .#{$block-class}__sidebar-item-header {
73
89
  @include carbon--type-style('label-01');
90
+
91
+ margin-bottom: $spacing-03;
92
+ color: $text-02;
74
93
  }
75
94
 
76
95
  .#{$block-class} .#{$block-class}__sidebar-item-body {
77
96
  @include carbon--type-style('body-long-01');
78
97
 
79
- margin-bottom: $spacing-03;
98
+ margin-bottom: $spacing-05;
80
99
  }
81
100
 
82
101
  .#{$block-class} .#{$block-class}__sidebar-item-remove-button:hover {
@@ -89,6 +108,55 @@
89
108
  justify-content: space-between;
90
109
  }
91
110
 
111
+ // columns
112
+
113
+ .#{$block-class}__columns {
114
+ display: flex;
115
+ flex-direction: row;
116
+ overflow-x: auto;
117
+ }
118
+
119
+ .#{$block-class}__columns .#{$block-class}__selections-cell {
120
+ // stylelint-disable-next-line
121
+ padding: 0 !important;
122
+ }
123
+
124
+ .#{$block-class}__column {
125
+ overflow: auto;
126
+ max-width: 15rem;
127
+ flex: 1 0 15rem;
128
+ padding: $spacing-05;
129
+ border-top: 1px solid $ui-03;
130
+ border-right: 1px solid $ui-03;
131
+
132
+ &-search-bar {
133
+ display: flex;
134
+
135
+ label {
136
+ display: none;
137
+ }
138
+ }
139
+
140
+ &-sort-filter {
141
+ display: flex;
142
+ }
143
+
144
+ .bx--overflow-menu {
145
+ border-bottom: 1px solid $ui-04;
146
+ }
147
+ }
148
+
149
+ .#{$block-class}__tag-container {
150
+ display: flex;
151
+ align-items: center;
152
+ margin-top: $spacing-05;
153
+ margin-bottom: $spacing-03;
154
+
155
+ &-label {
156
+ margin-right: $spacing-03;
157
+ }
158
+ }
159
+
92
160
  // overrides
93
161
 
94
162
  // the influencer sidebar needs to be even with the buttons
@@ -97,6 +165,15 @@
97
165
  flex: 0 0 50%;
98
166
  }
99
167
 
168
+ .#{$block-class} .#{$tearsheet-class}__header-description {
169
+ color: $text-02;
170
+ }
171
+
172
+ .#{$block-class} .#{$tearsheet-class} .#{$tearsheet-class}__content {
173
+ display: flex;
174
+ flex-direction: column;
175
+ }
176
+
100
177
  .#{$block-class} .#{$block-class}__items-label {
101
178
  @include carbon--type-style('productive-heading-01');
102
179
  }
@@ -112,6 +189,10 @@
112
189
  padding-bottom: $spacing-05;
113
190
  }
114
191
 
192
+ .#{$block-class} .#{$carbon-prefix}--radio-button__appearance {
193
+ margin: 0 $spacing-05 0 0;
194
+ }
195
+
115
196
  .#{$block-class}
116
197
  .#{$carbon-prefix}--radio-button-wrapper
117
198
  .#{$carbon-prefix}--radio-button__label {
@@ -122,7 +203,7 @@
122
203
  cursor: pointer;
123
204
  }
124
205
 
125
- .#{$carbon-prefix}--accordion__item {
206
+ .#{$block-class} .#{$carbon-prefix}--accordion__item {
126
207
  &:hover .#{$block-class}__sidebar-accordion-title button {
127
208
  opacity: 1;
128
209
  }
@@ -131,6 +212,10 @@
131
212
  opacity: 0;
132
213
  }
133
214
  }
215
+
216
+ .#{$block-class} .#{$carbon-prefix}--checkbox-label-text {
217
+ padding-left: $spacing-05;
218
+ }
134
219
  }
135
220
 
136
221
  @include exports('add-select') {
@@ -61,6 +61,10 @@
61
61
  display: inline-flex;
62
62
  vertical-align: middle;
63
63
  }
64
+
65
+ .#{$block-class}__displayed-breadcrumb:last-child {
66
+ max-width: calc(100% - $spacing-07); // allow room for breadcrumb back
67
+ }
64
68
  }
65
69
 
66
70
  .#{$carbon-prefix}--breadcrumb-item:last-child {
@@ -78,10 +82,10 @@
78
82
  width: 100%;
79
83
  text-overflow: ellipsis;
80
84
  }
85
+ }
81
86
 
82
- .#{$carbon-prefix}--link {
83
- max-height: 18px; // to match breadcrumb - overflow button is 20 by default
84
- }
87
+ .#{$block-class}__overflow-menu-options.#{$block-class}__overflow-menu-options {
88
+ z-index: z('header');
85
89
  }
86
90
  }
87
91
 
@@ -0,0 +1,8 @@
1
+ //
2
+ // Copyright IBM Corp. 2022, 2022
3
+ //
4
+ // This source code is licensed under the Apache-2.0 license found in the
5
+ // LICENSE file in the root directory of this source tree.
6
+ //
7
+
8
+ @import '../../global/styles/display-box';
@@ -0,0 +1,8 @@
1
+ //
2
+ // Copyright IBM Corp. 2022, 2022
3
+ //
4
+ // This source code is licensed under the Apache-2.0 license found in the
5
+ // LICENSE file in the root directory of this source tree.
6
+ //
7
+
8
+ @import '../../global/styles/display-box';
@@ -19,6 +19,7 @@
19
19
  // stylelint-disable-next-line carbon/layout-token-use
20
20
  transform: translateX($influencerAnimationStart);
21
21
  }
22
+
22
23
  100% {
23
24
  opacity: 1;
24
25
  transform: translateX(0);
@@ -29,6 +30,7 @@
29
30
  opacity: 1;
30
31
  transform: translateX(0);
31
32
  }
33
+
32
34
  100% {
33
35
  opacity: 0;
34
36
  // stylelint-disable-next-line carbon/layout-token-use
@@ -70,6 +70,7 @@
70
70
 
71
71
  .#{$pkg-prefix}--create-modal__form > * {
72
72
  margin-bottom: $spacing-05;
73
+
73
74
  &:last-child {
74
75
  margin-bottom: 0;
75
76
  }
@@ -68,7 +68,7 @@
68
68
  }
69
69
 
70
70
  .#{$block-class}.#{$side-panel-block-class}
71
- .bx--btn.#{$side-panel-block-class}__close-button {
71
+ .#{$carbon-prefix}--btn.#{$side-panel-block-class}__close-button {
72
72
  display: none;
73
73
  }
74
74
 
@@ -17,7 +17,7 @@ $story-prefix: create-side-panel-stories__;
17
17
  grid-template-columns: 1fr 1fr;
18
18
  }
19
19
 
20
- .#{$story-prefix}example-form-group .bx--label {
20
+ .#{$story-prefix}example-form-group .#{$carbon-prefix}--label {
21
21
  margin-bottom: 0;
22
22
  }
23
23
 
@@ -29,6 +29,7 @@
29
29
  // stylelint-disable-next-line carbon/layout-token-use
30
30
  transform: translateY(-0.75rem);
31
31
  }
32
+
32
33
  100% {
33
34
  opacity: 1;
34
35
  transform: translateY(0);
@@ -47,6 +47,7 @@
47
47
 
48
48
  .#{$block-class} .#{$block-class}__form > * {
49
49
  margin-bottom: $spacing-05;
50
+
50
51
  &:last-child {
51
52
  margin-bottom: 0;
52
53
  }
@@ -35,10 +35,6 @@
35
35
  position: relative;
36
36
  }
37
37
 
38
- button.#{$block-class}__td {
39
- margin: 0;
40
- background-color: transparent;
41
- }
42
38
  .#{$block-class}__tr {
43
39
  :last-child {
44
40
  .#{$block-class}__td {
@@ -60,22 +56,25 @@
60
56
  border-right: 1px solid $text-03;
61
57
  }
62
58
  .#{$block-class}__th,
63
- button.#{$block-class}__td-th {
59
+ .#{$block-class}__td-th.#{$block-class}__td {
64
60
  @include set-header-borders();
65
61
 
66
62
  background-color: $ui-01;
67
63
  cursor: pointer;
68
64
  }
69
- .#{$block-class}__td-th {
65
+ .#{$block-class}__td-th.#{$block-class}__td {
70
66
  @include carbon--font-weight('semibold');
71
67
 
72
68
  display: flex;
73
69
  align-items: center;
74
70
  justify-content: flex-end;
75
71
  }
72
+
76
73
  .#{$block-class}__td {
77
74
  @include set-body-borders();
78
75
 
76
+ margin: 0;
77
+ background-color: $ui-background;
79
78
  cursor: cell;
80
79
  text-align: left;
81
80
  }
@@ -85,15 +84,52 @@
85
84
  color: $text-01;
86
85
  text-align: left;
87
86
  }
87
+ .#{$block-class}__cell-editor {
88
+ position: absolute;
89
+ z-index: 4;
90
+ display: none;
91
+ padding: 0 $spacing-03;
92
+ background-color: $ui-background;
93
+ resize: none;
94
+ &.#{$carbon-prefix}--text-area {
95
+ min-width: initial;
96
+ min-height: initial;
97
+ }
98
+ }
88
99
  .#{$block-class}__active-cell--highlight {
89
100
  position: absolute;
101
+ z-index: 3;
102
+ display: none;
90
103
  border: $spacing-01 solid $interactive-01;
91
104
  background-color: transparent;
105
+
92
106
  &:focus {
93
107
  border: $spacing-01 solid $interactive-01;
94
108
  outline: 0;
95
109
  }
96
110
  }
111
+ .#{$block-class}__selection-area--element {
112
+ position: absolute;
113
+ z-index: 2;
114
+ border: 1px solid $interactive-01;
115
+ pointer-events: none;
116
+
117
+ &::before {
118
+ position: absolute;
119
+ top: 0;
120
+ left: 0;
121
+ display: block;
122
+ width: 100%;
123
+ height: 100%;
124
+ background-color: $interactive-01;
125
+ content: '';
126
+ opacity: 0.25;
127
+ }
128
+ }
129
+ .#{$block-class}__th--active-header,
130
+ .#{$block-class}__td-th--active-header.#{$block-class}__td {
131
+ background-color: $ui-03;
132
+ }
97
133
  }
98
134
  }
99
135
 
@@ -58,6 +58,15 @@
58
58
  width: 100%;
59
59
  margin-bottom: 0;
60
60
  }
61
+
62
+ .#{$block-class}__actions-container {
63
+ position: absolute;
64
+ z-index: 4;
65
+ right: 0;
66
+ bottom: 0;
67
+ width: 100%;
68
+ margin-bottom: 0;
69
+ }
61
70
  }
62
71
  }
63
72
 
@@ -17,7 +17,7 @@ $story-prefix: edit-side-panel-stories__;
17
17
  grid-template-columns: 1fr 1fr;
18
18
  }
19
19
 
20
- .#{$story-prefix}example-form-group .bx--label {
20
+ .#{$story-prefix}example-form-group .#{$carbon-prefix}--label {
21
21
  margin-bottom: 0;
22
22
  }
23
23
 
@@ -28,23 +28,6 @@
28
28
  }
29
29
  }
30
30
 
31
- @function --tooltip-top-bottom-safe-clip() {
32
- @return polygon(
33
- 0 0,
34
- -100vw 0,
35
- -100vw -100vh,
36
- 100vw -100vh,
37
- 100vw 0,
38
- 100% 0,
39
- 100% 100%,
40
- 100vw 100%,
41
- 100vw 100vh,
42
- -100vw 100vh,
43
- -100vw 100%,
44
- 0 100%
45
- );
46
- }
47
-
48
31
  @mixin input-button-defaults($block-class) {
49
32
  display: inline-flex;
50
33
  width: var(--#{$block-class}--size);
@@ -69,6 +52,7 @@
69
52
  --#{$block-class}--size: #{$spacing-08};
70
53
  --#{$block-class}--icon-size: #{$spacing-05};
71
54
  --#{$block-class}--background-color: #{$ui-01};
55
+ --#{$block-class}--toolbar-width: calc(2 * var(--#{$block-class}--size));
72
56
 
73
57
  &.#{$block-class}--light {
74
58
  --#{$block-class}--background-color: transparent;
@@ -81,7 +65,9 @@
81
65
 
82
66
  position: relative;
83
67
  display: inline-block;
84
- // min-width: 250px; // similar to min input box with room for toolbar
68
+ // A standard input box is based on size (often around 150px)
69
+ // In our case there are potentially 2 * size buttons which we double
70
+ min-width: calc(4 * var(--#{$block-class}--size));
85
71
  max-width: 100%;
86
72
  height: var(--#{$block-class}--size);
87
73
  background-color: var(--#{$block-class}--background-color);
@@ -119,11 +105,12 @@
119
105
  overflow: hidden;
120
106
  // positions text and placeholder including when showing placeholder
121
107
  // NOTE: Using flex does strange things to a caret in content editable
122
- min-width: calc(100% - 3 * var(--#{$block-class}--size) - $spacing-05);
123
- max-width: calc(100% - 3 * var(--#{$block-class}--size) - $spacing-05);
108
+ width: calc(100% - var(--#{$block-class}--toolbar-width) - $spacing-05);
109
+ max-width: calc(
110
+ 100% - var(--#{$block-class}--toolbar-width) - $spacing-05
111
+ );
124
112
  min-height: var(--#{$block-class}--size);
125
- // stylelint-disable-next-line carbon/layout-token-use
126
- margin-right: calc(3 * var(--#{$block-class}--size));
113
+ margin-right: var(--#{$block-class}--toolbar-width);
127
114
  // room for toolbar
128
115
  margin-left: $spacing-05;
129
116
  // stylelint-disable-next-line carbon/type-token-use
@@ -134,6 +121,11 @@
134
121
  }
135
122
  }
136
123
 
124
+ &.#{$block-class}--invalid .#{$block-class}__input {
125
+ // add space for validation
126
+ --#{$block-class}--toolbar-width: calc(3 * var(--#{$block-class}--size));
127
+ }
128
+
137
129
  .#{$block-class}__input::after {
138
130
  position: absolute;
139
131
  top: 0;
@@ -192,23 +184,27 @@
192
184
  }
193
185
 
194
186
  .#{$block-class}__after-input-elements {
187
+ --#{$block-class}--toolbar-width: calc(2 * var(--#{$block-class}--size));
188
+
195
189
  // not simply flexed in as this causes flexbox to mis-measure the size of the input
196
190
  position: absolute;
197
191
  top: 0;
198
192
  right: 0;
199
193
  display: flex;
200
194
  // width: room for validation, and two buttons
201
- width: calc(3 * var(--#{$block-class}--size));
195
+ width: var(--#{$block-class}--toolbar-width);
202
196
  height: 100%;
203
197
  justify-content: space-between;
204
198
  cursor: text;
205
199
  }
206
200
 
201
+ &.#{$block-class}--invalid .#{$block-class}__after-input-elements {
202
+ // width: room for validation, and two buttons
203
+ --#{$block-class}--toolbar-width: calc(3 * var(--#{$block-class}--size));
204
+ }
205
+
207
206
  .#{$block-class}__toolbar--animation {
208
- // makes room for the top clip text but hides the side overflow
209
- clip-path: --tooltip-top-bottom-safe-clip();
210
- // NOTE: The above allows the tooltip to show through when overflowX: hidden would not when at right edge.
211
- // It is used with margin animation of contained buttons
207
+ // width: ;
212
208
  }
213
209
 
214
210
  &.#{$block-class}--editing .#{$block-class}__toolbar::after {
@@ -262,23 +258,34 @@
262
258
  &.#{$block-class}--editing
263
259
  .#{$block-class}__toolbar--animation
264
260
  .#{$block-class}__save {
265
- // stylelint-disable-next-line carbon/layout-token-use
266
- margin-right: calc(-1 * var(--#{$block-class}--size));
267
- transition: margin-right $duration--moderate-02
268
- motion(standard, productive);
261
+ margin-right: 0;
262
+ transition: all $duration--moderate-02 motion(standard, productive);
263
+ transition-property: margin, padding;
264
+
265
+ svg {
266
+ transition: width $duration--moderate-02 motion(standard, productive);
267
+ }
269
268
  }
270
269
 
271
270
  &.#{$block-class}--editing
272
- .#{$block-class}__toolbar--saveable
271
+ .#{$block-class}__toolbar--animation:not(.#{$block-class}__toolbar--saveable)
273
272
  .#{$block-class}__save {
274
- margin-right: 0;
273
+ padding-right: 0;
274
+ padding-left: 0;
275
+ border-right: 0;
276
+ border-left: 0;
277
+ // stylelint-disable-next-line carbon/layout-token-use
278
+ margin-right: calc(-1 * var(--#{$block-class}--size));
279
+
280
+ svg {
281
+ overflow: hidden;
282
+ width: 0;
283
+ }
275
284
  }
276
285
 
277
286
  &.#{$block-class}.#{$block-class} .#{$block-class}__edit {
278
287
  @include input-button-defaults($block-class);
279
-
280
288
  // pointer-events: none;
281
-
282
289
  &:hover,
283
290
  &:active,
284
291
  &:focus {
@@ -289,12 +296,19 @@
289
296
  }
290
297
  }
291
298
 
292
- .#{$block-class}__edit--hover-visible {
293
- opacity: 0;
294
- transition: opacity $duration--fast-01 motion(entrance, productive);
299
+ @media (hover: hover) {
300
+ // if hover is the primary input mechanism hide edit button
301
+ .#{$block-class}__edit {
302
+ opacity: 0;
303
+ transition: opacity $duration--fast-01 motion(entrance, productive);
304
+ }
305
+
306
+ &:hover .#{$block-class}__edit {
307
+ opacity: 1;
308
+ }
295
309
  }
296
310
 
297
- &:hover .#{$block-class}__edit--hover-visible {
311
+ .#{$block-class}__edit--always-visible {
298
312
  opacity: 1;
299
313
  }
300
314
 
@@ -302,10 +316,6 @@
302
316
  @include input-button-defaults($block-class);
303
317
  }
304
318
 
305
- &.#{$block-class}--warn .#{$block-class}__validation-icon {
306
- color: $support-warning;
307
- }
308
-
309
319
  &.#{$block-class}--invalid .#{$block-class}__validation-icon {
310
320
  color: $support-error;
311
321
  }
@@ -6,6 +6,7 @@
6
6
  //
7
7
 
8
8
  @import '../../global/styles/project-settings';
9
+ @import '../../global/styles/display-box';
9
10
 
10
11
  .inline-edit-stories__viewport {
11
12
  // width: 300px; // larger than standard size needed by text input at standard font size (html input attribute size)
@@ -14,6 +15,7 @@
14
15
  }
15
16
 
16
17
  $block-class: #{$pkg-prefix}--inline-edit;
18
+
17
19
  .component-full-width {
18
20
  .#{$block-class} {
19
21
  width: 100%;
@@ -23,41 +23,49 @@ $loading-bar__small-height: 4px;
23
23
  left: 0;
24
24
  width: 0%;
25
25
  }
26
+
26
27
  20% {
27
28
  right: auto;
28
29
  left: 0;
29
30
  width: 100%;
30
31
  }
32
+
31
33
  28% {
32
34
  right: 0;
33
35
  left: auto;
34
36
  width: 100%;
35
37
  }
38
+
36
39
  51% {
37
40
  right: 0;
38
41
  left: auto;
39
42
  width: 0%;
40
43
  }
44
+
41
45
  58% {
42
46
  right: 0;
43
47
  left: auto;
44
48
  width: 0%;
45
49
  }
50
+
46
51
  82% {
47
52
  right: 0;
48
53
  left: auto;
49
54
  width: 100%;
50
55
  }
56
+
51
57
  83% {
52
58
  right: auto;
53
59
  left: 0;
54
60
  width: 100%;
55
61
  }
62
+
56
63
  96% {
57
64
  right: auto;
58
65
  left: 0;
59
66
  width: 0%;
60
67
  }
68
+
61
69
  100% {
62
70
  right: auto;
63
71
  left: 0;
@@ -71,6 +79,7 @@ $loading-bar__small-height: 4px;
71
79
  left: 0;
72
80
  width: 0%;
73
81
  }
82
+
74
83
  100% {
75
84
  right: auto;
76
85
  left: 0;
@@ -84,11 +93,13 @@ $loading-bar__small-height: 4px;
84
93
  left: 0;
85
94
  width: 0%;
86
95
  }
96
+
87
97
  92% {
88
98
  right: auto;
89
99
  left: 0;
90
100
  width: 100%;
91
101
  }
102
+
92
103
  100% {
93
104
  right: auto;
94
105
  left: 0;
@@ -100,9 +111,11 @@ $loading-bar__small-height: 4px;
100
111
  0% {
101
112
  opacity: 1;
102
113
  }
114
+
103
115
  92% {
104
116
  opacity: 1;
105
117
  }
118
+
106
119
  100% {
107
120
  display: none;
108
121
  opacity: 0;