@utahdts/utah-design-system 1.11.2 → 1.12.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 (74) hide show
  1. package/css/6-components/_components-index.scss +2 -0
  2. package/css/6-components/base-components/buttons/_tag.scss +21 -6
  3. package/css/6-components/base-components/forms/_combo-box-input.scss +81 -0
  4. package/css/6-components/base-components/forms/_input-wrapper.scss +3 -1
  5. package/css/6-components/base-components/popups/_banner.scss +182 -0
  6. package/css/6-components/base-components/tablesAndLists/_table.scss +1 -1
  7. package/css/7-utilities/_animation.scss +22 -0
  8. package/dist/style.css +374 -6
  9. package/dist/utah-design-system.es.js +30434 -30445
  10. package/dist/utah-design-system.umd.js +30438 -30449
  11. package/index.js +35 -30
  12. package/package.json +7 -7
  13. package/react/components/buttons/Tag.jsx +5 -3
  14. package/react/components/forms/ComboBox/ComboBox.jsx +8 -8
  15. package/react/components/forms/ComboBox/ComboBoxOption.jsx +51 -21
  16. package/react/components/forms/ComboBox/ComboBoxOptionGroup.jsx +22 -9
  17. package/react/components/forms/ComboBox/context/ComboBoxContext.js +7 -4
  18. package/react/components/forms/ComboBox/context/ComboBoxContextProvider.jsx +28 -10
  19. package/react/components/forms/ComboBox/context/ComboBoxOptionGroupContext.js +6 -0
  20. package/react/components/forms/ComboBox/context/ComboBoxOptionGroupContextProvider.jsx +17 -0
  21. package/react/components/forms/ComboBox/context/useComboBoxContext.js +3 -5
  22. package/react/components/forms/ComboBox/context/useComboBoxOptionGroupContext.js +10 -0
  23. package/react/components/forms/ComboBox/functions/isOptionGroupVisible.js +20 -0
  24. package/react/components/forms/ComboBox/functions/moveComboBoxSelectionDown.js +14 -8
  25. package/react/components/forms/ComboBox/functions/moveComboBoxSelectionUp.js +14 -7
  26. package/react/components/forms/ComboBox/functions/selectComboBoxSelection.js +5 -5
  27. package/react/components/forms/ComboBox/internal/CombBoxListBox.jsx +35 -13
  28. package/react/components/forms/ComboBox/internal/ComboBoxTextInput.jsx +108 -88
  29. package/react/components/popups/Banner/Banner.jsx +53 -0
  30. package/react/components/popups/Banner/BannerIcon.jsx +23 -0
  31. package/react/components/popups/Banner/BannerMessage.jsx +22 -0
  32. package/react/components/table/Table.jsx +2 -21
  33. package/react/components/table/TableBody.jsx +8 -28
  34. package/react/components/table/TableBodyData.jsx +31 -45
  35. package/react/components/table/TableBodyDataCellTemplate.jsx +18 -47
  36. package/react/components/table/TableBodyDataRowContext.jsx +1 -3
  37. package/react/components/table/TableBodyDataRowTemplate.jsx +16 -41
  38. package/react/components/table/TableCell.jsx +9 -30
  39. package/react/components/table/TableContextConsumer.jsx +2 -13
  40. package/react/components/table/TableFilterCustom.jsx +9 -28
  41. package/react/components/table/TableFilterDate.jsx +14 -39
  42. package/react/components/table/TableFilterNone.jsx +9 -29
  43. package/react/components/table/TableFilterSelect.jsx +19 -49
  44. package/react/components/table/TableFilterSelectAllOptions.jsx +4 -4
  45. package/react/components/table/TableFilterSelectOption.jsx +5 -26
  46. package/react/components/table/TableFilterTextInput.jsx +4 -4
  47. package/react/components/table/TableFilters.jsx +16 -41
  48. package/react/components/table/TableFoot.jsx +7 -26
  49. package/react/components/table/TableFootCell.jsx +9 -29
  50. package/react/components/table/TableFootRow.jsx +7 -26
  51. package/react/components/table/TableHead.jsx +7 -26
  52. package/react/components/table/TableHeadCell.jsx +24 -57
  53. package/react/components/table/TableHeadRow.jsx +7 -26
  54. package/react/components/table/TablePagination.jsx +69 -0
  55. package/react/components/table/TableRow.jsx +13 -40
  56. package/react/components/table/TableSortingRule.jsx +13 -38
  57. package/react/components/table/TableSortingRules.jsx +8 -27
  58. package/react/components/table/TableWrapper.jsx +4 -23
  59. package/react/components/table/hooks/useTableContext.jsx +3 -2
  60. package/react/components/table/hooks/useTableFilterRegistration.js +6 -3
  61. package/react/components/table/useCurrentValuesFromStateContext.js +2 -2
  62. package/react/components/table/util/TableContext.jsx +2 -6
  63. package/react/components/table/util/convertRecordsToFilterValue.js +1 -1
  64. package/react/components/table/util/createTableFilterFunctions.js +1 -1
  65. package/react/components/table/util/filterTableRecords.js +1 -1
  66. package/react/contexts/UtahDesignSystemContext/UtahDesignSystemContext.js +1 -0
  67. package/react/contexts/UtahDesignSystemContext/UtahDesignSystemContextProvider.jsx +6 -1
  68. package/react/contexts/UtahDesignSystemContext/components/BannersGlobal.jsx +83 -0
  69. package/react/contexts/UtahDesignSystemContext/hooks/useBanner.js +62 -0
  70. package/react/enums/bannerPlacement.js +17 -0
  71. package/react/enums/tableSortingRuleFieldType.js +1 -1
  72. package/react/jsDocTypes.js +41 -2
  73. package/react/propTypesShapes/header/HeaderMenuItemUrlActionShape.js +1 -0
  74. package/react/contexts/UtahDesignSystemContext/hooks/useUtahDesignSystemAriaMessaging.js +0 -13
@@ -16,6 +16,7 @@ component specific, BEM (Block, Element, Modifier)
16
16
  @use "base-components/forms/input-wrapper";
17
17
  @use "base-components/forms/text-area";
18
18
  @use "base-components/forms/text-input";
19
+ @use "base-components/forms/combo-box-input";
19
20
  @use "base-components/forms/character-count";
20
21
  @use "base-components/forms/checkbox";
21
22
  @use "base-components/forms/select-input";
@@ -30,6 +31,7 @@ component specific, BEM (Block, Element, Modifier)
30
31
  @use "base-components/navigation/skip-link";
31
32
  @use "base-components/navigation/vertical-menu";
32
33
  @use "base-components/navigation/mega-menu";
34
+ @use "base-components/popups/banner";
33
35
  @use "base-components/popups/popups";
34
36
  @use "base-components/popups/tooltips";
35
37
  @use "base-components/popups/modal";
@@ -69,18 +69,28 @@
69
69
  font-size: var(--font-size-xs);
70
70
  padding: var(--spacing-3xs) var(--spacing-2xs);
71
71
 
72
- .tag--icon svg {
73
- height: .65rem;
74
- width: .65rem;
72
+ .tag--icon {
73
+ svg {
74
+ height: .65rem;
75
+ width: .65rem;
76
+ }
77
+ [class*=utds-icon-before-]::before {
78
+ font-size: .7rem;
79
+ }
75
80
  }
76
81
  }
77
82
 
78
83
  &--large {
79
84
  font-size: var(--font-size-m);
80
85
 
81
- .tag--icon svg {
82
- height: 1rem;
83
- width: 1rem;
86
+ .tag--icon {
87
+ svg {
88
+ height: 1rem;
89
+ width: 1rem;
90
+ }
91
+ [class*=utds-icon-before-]::before {
92
+ font-size: 1rem;
93
+ }
84
94
  }
85
95
  }
86
96
 
@@ -93,6 +103,11 @@
93
103
  width: 0.8rem;
94
104
  }
95
105
 
106
+ [class*=utds-icon-before-]::before {
107
+ font-size: .8rem;
108
+ margin: 0;
109
+ }
110
+
96
111
  &-left {
97
112
  margin-right: var(--spacing-2xs);
98
113
  }
@@ -0,0 +1,81 @@
1
+ @use "../../../2-tools/tools-index";
2
+
3
+ @use "../../../1-settings/class-vars";
4
+
5
+ #{class-vars.$base-class} {
6
+ .combo-box-input {
7
+ &[type="text"] {
8
+ padding: 0 var(--spacing-xl) 0 var(--spacing-xs);
9
+ &.text-input--clear-icon-visible {
10
+ padding: 0 var(--spacing-4xl) 0 var(--spacing-xs);
11
+ }
12
+ }
13
+ &__chevron {
14
+ position: absolute;
15
+ top: 50%;
16
+ transform: translateY(-50%);
17
+ right: var(--spacing-xs);
18
+ font-weight: var(--font-weight-normal);
19
+ &[class*="utds-icon-before-"]::before {
20
+ font-size: 0.9rem;
21
+ line-height: 0;
22
+ }
23
+ &--is-disabled {
24
+ color: var(--form-ele-disabled-color);
25
+ }
26
+ }
27
+ &__inner-wrapper {
28
+ .text-input__clear-button {
29
+ right: var(--spacing-xl);
30
+ }
31
+ .input-wrapper--text-input {
32
+ margin: 0;
33
+ }
34
+ }
35
+ &__list-box {
36
+ background: white;
37
+ border-radius: var(--radius-small);
38
+ border: 1px solid var(--gray-3-1-contrast);
39
+ box-sizing: border-box;
40
+ list-style-type: none;
41
+ margin: 0;
42
+ padding: 0;
43
+ z-index: 2000;
44
+ }
45
+ &__option {
46
+ padding: var(--spacing-2xs) var(--spacing-s);
47
+ &:hover {
48
+ background: var(--hover-gray-color);
49
+ cursor: default;
50
+ color: black;
51
+ }
52
+ &--selected {
53
+ background: var(--form-ele-color);
54
+ color: white;
55
+ }
56
+ &--highlighted {
57
+ background: var(--hover-gray-color);
58
+ color: black;
59
+ }
60
+ @include tools-index.form-ele-focus;
61
+ &:focus-visible {
62
+ outline-offset: -2px;
63
+ border-radius: var(--radius-small1x);
64
+ }
65
+ }
66
+ &__group-wrapper {
67
+ ul {
68
+ list-style-type: none;
69
+ padding: 0;
70
+ margin: 0;
71
+ li.combo-box-input__option {
72
+ padding: var(--spacing-2xs) var(--spacing-s) var(--spacing-2xs) var(--spacing);
73
+ }
74
+ }
75
+ }
76
+ &__group-title {
77
+ padding: var(--spacing-2xs) var(--spacing-s);
78
+ font-weight: var(--font-weight-bold);
79
+ }
80
+ }
81
+ }
@@ -18,9 +18,11 @@
18
18
  }
19
19
 
20
20
  &__error-message {
21
+ margin-top: var(--spacing-3xs);
21
22
  color: var(--danger-color);
22
23
  }
23
- input, textarea {
24
+ input,
25
+ textarea {
24
26
  display: block;
25
27
  }
26
28
  }
@@ -0,0 +1,182 @@
1
+ @use "../../../1-settings/settings-index";
2
+ @use "../../../1-settings/class-vars";
3
+ @use "../../../1-settings/spacing";
4
+ @use "../../../7-utilities/animation";
5
+
6
+ #{class-vars.$base-class} {
7
+ .banner {
8
+ &__wrapper {
9
+ display: inline-flex;
10
+ border-radius: var(--radius-small);
11
+ background: white;
12
+ box-shadow: var(--elevation-small-borderless);
13
+ margin: var(--spacing);
14
+
15
+ &:not(.banner--inline) {
16
+ position: fixed;
17
+ z-index: 3000;
18
+ }
19
+
20
+ &.banner {
21
+ &--bottom-left, &--top-left {
22
+ animation: left-in 1s;
23
+ }
24
+
25
+ &--bottom-right, &--top-right {
26
+ animation: right-in 1s;
27
+ }
28
+
29
+ &--bottom, &--top {
30
+ animation: fade-in .5s;
31
+ }
32
+
33
+ &--bottom {
34
+ bottom: 0;
35
+ left: 50%;
36
+ transform: translateX(-50%);
37
+ }
38
+
39
+ &--bottom-left {
40
+ bottom: 0;
41
+ left: 0;
42
+ }
43
+
44
+ &--bottom-right {
45
+ bottom: 0;
46
+ right: 0;
47
+ }
48
+
49
+ &--top {
50
+ top: 0;
51
+ left: 50%;
52
+ transform: translateX(-50%);
53
+ }
54
+
55
+ &--top-left {
56
+ top: 0;
57
+ left: 0;
58
+ }
59
+
60
+ &--top-right {
61
+ top: 0;
62
+ right: 0;
63
+ }
64
+
65
+ &--info, &--warning, &--danger, &--success {
66
+ color: white;
67
+ .banner__close-button button {
68
+ color: white;
69
+ }
70
+ }
71
+
72
+ &--info {
73
+ background-color: var(--info-color);
74
+ }
75
+ &--warning {
76
+ background-color: var(--warning-color);
77
+ }
78
+ &--danger {
79
+ background-color: var(--danger-color);
80
+ }
81
+ &--success {
82
+ background-color: var(--success-color);
83
+ }
84
+ }
85
+ }
86
+
87
+ &__message {
88
+ display: flex;
89
+ align-items: center;
90
+ padding: var(--spacing-s) var(--spacing-xs) var(--spacing-s) var(--spacing);
91
+ }
92
+
93
+ &__icon {
94
+ padding: var(--spacing-s);
95
+ background-color: rgba(0, 0, 0, 0.3);
96
+ display: flex;
97
+ border-radius: var(--radius-small) 0 0 var(--radius-small);
98
+
99
+ span {
100
+ color: white;
101
+
102
+ &[class*=utds-icon-before-]::before {
103
+ margin-right: 0;
104
+ }
105
+ }
106
+ }
107
+
108
+ &__close-button {
109
+ padding: var(--spacing-xs);
110
+ }
111
+ }
112
+
113
+ &.banner-global__wrapper {
114
+ z-index: 4000;
115
+ position: fixed;
116
+
117
+ .banner-global{
118
+ &__zone{
119
+ position: fixed;
120
+ display: flex;
121
+ flex-direction: column-reverse;
122
+ }
123
+
124
+ &__bottom {
125
+ bottom: 0;
126
+ left: 50%;
127
+ transform: translateX(-50%);
128
+ flex-direction: column;
129
+ }
130
+
131
+ &__bottom-left {
132
+ bottom: 0;
133
+ left: 0;
134
+ flex-direction: column;
135
+ }
136
+
137
+ &__bottom-right {
138
+ bottom: 0;
139
+ right: 0;
140
+ flex-direction: column;
141
+ }
142
+
143
+ &__top {
144
+ top: 0;
145
+ left: 50%;
146
+ transform: translateX(-50%);
147
+ }
148
+
149
+ &__top-left {
150
+ top: 0;
151
+ left: 0;
152
+ }
153
+
154
+ &__top-right {
155
+ top: 0;
156
+ right: 0;
157
+ }
158
+
159
+ &__bottom, &__top {
160
+ .banner__wrapper {
161
+ align-self: baseline;
162
+ }
163
+ }
164
+
165
+ &__top-right, &__bottom-right {
166
+ .banner__wrapper {
167
+ align-self: flex-end;
168
+ }
169
+ }
170
+
171
+ &__top-left, &__bottom-left {
172
+ .banner__wrapper {
173
+ align-self: flex-start;
174
+ }
175
+ }
176
+ }
177
+
178
+ .banner__wrapper {
179
+ position: relative;
180
+ }
181
+ }
182
+ }
@@ -2,7 +2,7 @@
2
2
 
3
3
  #{class-vars.$base-class} {
4
4
  .table__wrapper {
5
- overflow-x: scroll;
5
+ overflow-x: auto;
6
6
  }
7
7
  table {
8
8
  border-collapse: collapse;
@@ -39,3 +39,25 @@
39
39
  transform: scale(1) translateX(-50%);
40
40
  }
41
41
  }
42
+
43
+ @keyframes left-in {
44
+ 0% {
45
+ opacity: 0;
46
+ transform: translate(-100%, 0);
47
+ }
48
+ 100% {
49
+ opacity: 1;
50
+ transform: translate(0, 0);
51
+ }
52
+ }
53
+
54
+ @keyframes right-in {
55
+ 0% {
56
+ opacity: 0;
57
+ transform: translate(100%, 0);
58
+ }
59
+ 100% {
60
+ opacity: 1;
61
+ transform: translate(0, 0);
62
+ }
63
+ }