@carbon/ibm-products 1.8.0 → 1.11.0

Sign up to get free protection for your applications and to get access to all the features.
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;