@utahdts/utah-design-system 1.14.3 → 1.15.1

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 (55) hide show
  1. package/css/1-settings/_font-stuff.scss +20 -20
  2. package/css/1-settings/_grid.scss +22 -22
  3. package/css/1-settings/_icons.scss +30 -0
  4. package/css/1-settings/_settings-index.scss +1 -1
  5. package/css/4-elements/_elements-index.scss +0 -9
  6. package/css/6-components/_components-index.scss +3 -0
  7. package/css/6-components/base-components/forms/_calendar-input.scss +96 -0
  8. package/css/6-components/base-components/forms/_combo-box-input.scss +6 -0
  9. package/css/6-components/base-components/forms/_date-input.scss +59 -0
  10. package/css/6-components/base-components/forms/_file-input.scss +87 -0
  11. package/css/6-components/base-components/forms/_info-box.scss +8 -1
  12. package/css/7-utilities/_animation.scss +55 -51
  13. package/css/7-utilities/_utilities-index.scss +132 -129
  14. package/dist/style.css +496 -175
  15. package/dist/utah-design-system.es.js +40231 -36211
  16. package/dist/utah-design-system.umd.js +40230 -36210
  17. package/index.js +67 -65
  18. package/package.json +13 -12
  19. package/react/components/forms/CalendarInput/CalendarInput.jsx +354 -0
  20. package/react/components/forms/CalendarInput/calendarGrid.js +87 -0
  21. package/react/components/forms/ComboBox/ComboBox.jsx +10 -0
  22. package/react/components/forms/ComboBox/context/ComboBoxContextProvider.jsx +4 -6
  23. package/react/components/forms/ComboBox/internal/CombBoxListBox.jsx +31 -6
  24. package/react/components/forms/ComboBox/internal/ComboBoxTextInput.jsx +43 -3
  25. package/react/components/forms/DateInput.jsx +238 -0
  26. package/react/components/forms/FileInput.jsx +158 -0
  27. package/react/components/forms/FormContext/useFormContextInputValue.js +117 -0
  28. package/react/components/forms/MultiSelect/MultiSelectTagTemplate.jsx +0 -1
  29. package/react/components/forms/MultiSelect/MultiSelectTagWrapper.jsx +2 -1
  30. package/react/components/forms/MultiSelect/MultiSelectTags.jsx +2 -1
  31. package/react/components/forms/MultiSelect/context/MultiSelectContextProvider.jsx +0 -1
  32. package/react/components/forms/MultiSelect/functions/removeSelectedOption.jsx +5 -1
  33. package/react/components/forms/PlainText.jsx +47 -0
  34. package/react/components/forms/RadioButton/context/RadioButtonGroupContextProvider.jsx +0 -1
  35. package/react/components/forms/Switch.jsx +0 -1
  36. package/react/components/navigation/MenuItem.jsx +0 -1
  37. package/react/components/navigation/pagination/Pagination.jsx +0 -2
  38. package/react/components/table/TableBodyData.jsx +0 -1
  39. package/react/components/table/TableFilterDate.jsx +6 -2
  40. package/react/components/table/TableFilterSelect.jsx +7 -3
  41. package/react/components/table/TableFilterSelectAllOptions.jsx +6 -5
  42. package/react/components/table/TableFilterTextInput.jsx +7 -4
  43. package/react/components/table/TableFilters.jsx +10 -5
  44. package/react/components/table/TablePagination.jsx +0 -1
  45. package/react/components/table/TableSortingRule.jsx +0 -1
  46. package/react/components/table/TableSortingRules.jsx +0 -2
  47. package/react/components/table/TableWrapper.jsx +9 -1
  48. package/react/components/table/hooks/useTableFilterRegistration.js +4 -2
  49. package/react/components/table/useCurrentValuesFromStateContext.js +23 -10
  50. package/react/components/table/util/TableContext.jsx +1 -0
  51. package/react/contexts/UtahDesignSystemContext/components/AriaLiveMessages.jsx +14 -4
  52. package/react/contexts/UtahDesignSystemContext/components/BannersGlobal.jsx +0 -1
  53. package/react/hooks/useClickOutside.js +0 -1
  54. package/react/hooks/useInterval.js +30 -0
  55. package/react/hooks/useTimeout.js +29 -0
@@ -28,25 +28,25 @@ Font size variables
28
28
  --font-weight-semi-bold: 600;
29
29
  --font-weight-bold: 700;
30
30
  --font-weight-black: 900;
31
- }
32
31
 
33
- .font-size-2xs { font-size: var(--font-size-2xs); }
34
- .font-size-xs { font-size: var(--font-size-xs); }
35
- .font-size-s { font-size: var(--font-size-s); }
36
- .font-size { font-size: var(--font-size); }
37
- .font-size-m { font-size: var(--font-size-m); }
38
- .font-size-l { font-size: var(--font-size-l); }
39
- .font-size-xl { font-size: var(--font-size-xl); }
40
- .font-size-2xl { font-size: var(--font-size-2xl); }
41
- .font-size-3xl { font-size: var(--font-size-3xl); }
42
- .font-size-4xl { font-size: var(--font-size-4xl); }
43
- .font-size-5xl { font-size: var(--font-size-5xl); }
44
- .font-size-6xl { font-size: var(--font-size-6xl); }
45
- .font-size-7xl { font-size: var(--font-size-7xl); }
32
+ .font-size-2xs { font-size: var(--font-size-2xs); }
33
+ .font-size-xs { font-size: var(--font-size-xs); }
34
+ .font-size-s { font-size: var(--font-size-s); }
35
+ .font-size { font-size: var(--font-size); }
36
+ .font-size-m { font-size: var(--font-size-m); }
37
+ .font-size-l { font-size: var(--font-size-l); }
38
+ .font-size-xl { font-size: var(--font-size-xl); }
39
+ .font-size-2xl { font-size: var(--font-size-2xl); }
40
+ .font-size-3xl { font-size: var(--font-size-3xl); }
41
+ .font-size-4xl { font-size: var(--font-size-4xl); }
42
+ .font-size-5xl { font-size: var(--font-size-5xl); }
43
+ .font-size-6xl { font-size: var(--font-size-6xl); }
44
+ .font-size-7xl { font-size: var(--font-size-7xl); }
46
45
 
47
- .font-extra-light { font-weight: var(--font-weight-extra-light); }
48
- .font-light { font-weight: var(--font-weight-light); }
49
- .font-normal { font-weight: var(--font-weight-normal); }
50
- .font-semi-bold { font-weight: var(--font-weight-semi-bold); }
51
- .font-bold { font-weight: var(--font-weight-bold); }
52
- .font-black { font-weight: var(--font-weight-black); }
46
+ .font-extra-light { font-weight: var(--font-weight-extra-light); }
47
+ .font-light { font-weight: var(--font-weight-light); }
48
+ .font-normal { font-weight: var(--font-weight-normal); }
49
+ .font-semi-bold { font-weight: var(--font-weight-semi-bold); }
50
+ .font-bold { font-weight: var(--font-weight-bold); }
51
+ .font-black { font-weight: var(--font-weight-black); }
52
+ }
@@ -10,30 +10,30 @@ Grid variables
10
10
  --grid-fixed-form: calc(var(--grid-fixed) / 2.3);
11
11
  --grid-fixed-third: calc(var(--grid-fixed) / 3);
12
12
  --grid-fixed-fourth: calc(var(--grid-fixed) / 4);
13
- }
14
-
15
- .grid-wrapper {
16
- display: flex;
17
- justify-content: center;
18
- }
19
- .grid-fixed {
20
- max-width: var(--grid-fixed);
21
- width: 100%;
22
- display: grid;
23
- grid-template-columns: 1fr;
24
- gap: var(--spacing-l);
25
13
 
26
- &--2col {
27
- grid-template-columns: 1fr 1fr;
28
- }
29
- &--3col {
30
- grid-template-columns: 1fr 1fr 1fr;
31
- }
32
- &--4col {
33
- grid-template-columns: 1fr 1fr 1fr 1fr;
14
+ .grid-wrapper {
15
+ display: flex;
16
+ justify-content: center;
34
17
  }
18
+ .grid-fixed {
19
+ max-width: var(--grid-fixed);
20
+ width: 100%;
21
+ display: grid;
22
+ grid-template-columns: 1fr;
23
+ gap: var(--spacing-l);
24
+
25
+ &--2col {
26
+ grid-template-columns: 1fr 1fr;
27
+ }
28
+ &--3col {
29
+ grid-template-columns: 1fr 1fr 1fr;
30
+ }
31
+ &--4col {
32
+ grid-template-columns: 1fr 1fr 1fr 1fr;
33
+ }
35
34
 
36
- .grid-column-span-2 {
37
- grid-column: span 2;
35
+ .grid-column-span-2 {
36
+ grid-column: span 2;
37
+ }
38
38
  }
39
39
  }
@@ -274,4 +274,34 @@
274
274
  .utds-icon-after-trash::after {
275
275
  content: "\0073";
276
276
  }
277
+
278
+ .utds-icon-before-calendar::before,
279
+ .utds-icon-after-calendar::after {
280
+ content: "\0074";
281
+ }
282
+
283
+ .utds-icon-before-clock::before,
284
+ .utds-icon-after-clock::after {
285
+ content: "\0075";
286
+ }
287
+
288
+ .utds-icon-before-double-arrow-up::before,
289
+ .utds-icon-after-double-arrow-up::after {
290
+ content: "\0076";
291
+ }
292
+
293
+ .utds-icon-before-double-arrow-right::before,
294
+ .utds-icon-after-double-arrow-right::after {
295
+ content: "\0077";
296
+ }
297
+
298
+ .utds-icon-before-double-arrow-down::before,
299
+ .utds-icon-after-double-arrow-down::after {
300
+ content: "\0078";
301
+ }
302
+
303
+ .utds-icon-before-double-arrow-left::before,
304
+ .utds-icon-after-double-arrow-left::after {
305
+ content: "\0079";
306
+ }
277
307
  }
@@ -37,7 +37,7 @@ variables and settings
37
37
  --gray-on-accent-color: #474747;
38
38
 
39
39
  --form-ele-color: #{color-swatches.$azul-05};
40
- --form-ele-color-light: #{color-swatches.$azul-10};
40
+ --form-ele-color-light: #{color-swatches.$azul-12};
41
41
  --form-ele-disabled-color: #{color-swatches.$neutral-gray-10};
42
42
 
43
43
  /* ######## --------------------------------------------- ######## */
@@ -88,15 +88,6 @@ elemental html: h1, h2, h3, ul, li, etc.
88
88
  }
89
89
  }
90
90
 
91
- .external-link::after {
92
- content: url("data:image/svg+xml,%3Csvg viewBox='0 0 18.1143 18.1138'%3E%3Cg%3E%3Cpath d='m15.0996,18.1138H1c-.5527,0-1-.4478-1-1V3.0142c0-.5522.4473-1,1-1h7.043v2H2v12.0996h12.0996v-6.043h2v7.043c0,.5522-.4473,1-1,1Z' style='fill: var(--primary-color);'/%3E%3Crect x='6.5977' y='4.5318' width='11.9697' height='1.9998' transform='translate(-.2262 10.5174) rotate(-45)' style='fill: currentColor;'/%3E%3Cpolygon points='18.1143 8.0425 16.1143 8.0425 16.1143 2 10.0713 2 10.0713 0 18.1143 0 18.1143 8.0425' style='fill: currentColor;'/%3E%3C/g%3E%3C/svg%3E%0A");
93
- height: 0.7rem;
94
- width: 0.7rem;
95
- background-position: top left;
96
-
97
- display: inline-block;
98
- }
99
-
100
91
  dialog {
101
92
  border: none;
102
93
  }
@@ -18,6 +18,8 @@ component specific, BEM (Block, Element, Modifier)
18
18
  @use "base-components/forms/text-input";
19
19
  @use "base-components/forms/combo-box-input";
20
20
  @use "base-components/forms/multi-select-input";
21
+ @use "base-components/forms/date-input";
22
+ @use "base-components/forms/calendar-input";
21
23
  @use "base-components/forms/character-count";
22
24
  @use "base-components/forms/checkbox";
23
25
  @use "base-components/forms/select-input";
@@ -25,6 +27,7 @@ component specific, BEM (Block, Element, Modifier)
25
27
  @use "base-components/forms/radio-button";
26
28
  @use "base-components/forms/switch";
27
29
  @use "base-components/forms/fieldset";
30
+ @use "base-components/forms/file-input";
28
31
  @use "base-components/navigation/main-menu";
29
32
  @use "base-components/navigation/menu-item";
30
33
  @use "base-components/navigation/pagination";
@@ -0,0 +1,96 @@
1
+ @use "../../../1-settings/class-vars";
2
+ @use "../../../2-tools/tools-index";
3
+
4
+ #{class-vars.$base-class} {
5
+ .calendar-input {
6
+ &__grid {
7
+ display: grid;
8
+ grid-auto-rows: 1fr;
9
+ gap: 2px;
10
+ border-top: 1px solid var(--gray-3-1-contrast);
11
+ border-bottom: 1px solid var(--gray-3-1-contrast);
12
+ background: white;
13
+ }
14
+ &__row {
15
+ display: grid;
16
+ grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
17
+ gap: 2px;
18
+ }
19
+ &__cell-header {
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ }
24
+ &__cell {
25
+ border: none;
26
+ padding: 0;
27
+ min-height: 26px;
28
+ min-width: 26px;
29
+ justify-self: center;
30
+ background: none;
31
+
32
+ &--focused {
33
+ background: var(--form-ele-color-light);
34
+ color: var(--gray-dark-color);
35
+ }
36
+
37
+ &--selected {
38
+ background: var(--form-ele-color);
39
+ color: white;
40
+ }
41
+
42
+ &--today {
43
+ border: 2px solid var(--form-ele-color-light);
44
+ }
45
+
46
+ &:focus {
47
+ @include tools-index.form-ele-focus-appearance;
48
+ }
49
+
50
+ &--next-month, &--previous-month {
51
+ color: var(--gray-3-1-contrast);
52
+ }
53
+
54
+ }
55
+
56
+ &__controls {
57
+ background: var(--gray-light-color);
58
+ padding: var(--spacing-2xs) 0 ;
59
+ &-month, &-year {
60
+ display: flex;
61
+ align-items: center;
62
+ justify-content: center;
63
+ }
64
+
65
+ [class*="utds-icon-before-"]:before {
66
+ font-size: .8rem;
67
+ color: var(--form-ele-color);
68
+ }
69
+ [class*="utds-icon-before-double-arrow"]:before {
70
+ font-size: .9rem;
71
+ }
72
+ }
73
+ &__month {
74
+ min-width: 85px;
75
+ text-align: center;
76
+ }
77
+ &__year {
78
+ min-width: 45px;
79
+ text-align: center;
80
+ }
81
+
82
+ &__today {
83
+ display: flex;
84
+ align-items: center;
85
+ justify-content: center;
86
+ padding: var(--spacing-xs) 0;
87
+ background: var(--gray-light-color);
88
+ }
89
+ }
90
+ // if the calendar input doesn't have a today button don't draw a border on the bottom of the grid.
91
+ .date-input__popup {
92
+ .calendar-input__grid:not(:has(+ .calendar-input__today)) {
93
+ border-bottom: 0;
94
+ }
95
+ }
96
+ }
@@ -59,6 +59,12 @@
59
59
  background: var(--hover-gray-color);
60
60
  color: black;
61
61
  }
62
+ &--disabled {
63
+ &:hover {
64
+ color: var(--gray-3-1-contrast);
65
+ }
66
+ color: var(--gray-3-1-contrast);
67
+ }
62
68
  @include tools-index.form-ele-focus;
63
69
  &:focus-visible {
64
70
  outline-offset: -2px;
@@ -0,0 +1,59 @@
1
+ @use "../../../1-settings/class-vars";
2
+ @use "../../../2-tools/tools-index";
3
+
4
+ #{class-vars.$base-class} {
5
+ .date-input {
6
+ &[type="text"] {
7
+ padding: 0 var(--spacing-xl) 0 var(--spacing-xs);
8
+ &.text-input--clear-icon-visible {
9
+ padding: 0 var(--spacing-4xl) 0 var(--spacing-xs);
10
+ }
11
+ }
12
+ &__calendar-icon {
13
+ position: absolute;
14
+ top: 50%;
15
+ transform: translateY(-50%);
16
+ right: var(--spacing-2xs);
17
+ font-weight: var(--font-weight-normal);
18
+ [class*="utds-icon-before-"]::before {
19
+ font-size: 1.1rem;
20
+ margin: 0;
21
+ }
22
+ &--is-disabled {
23
+ color: var(--form-ele-disabled-color);
24
+ }
25
+ }
26
+ &__icon-static {
27
+ display: flex;
28
+ justify-content: center;
29
+ align-items: center;
30
+ min-height: var(--form-ele-small);
31
+ min-width: var(--form-ele-small);
32
+ }
33
+ &__inner-wrapper {
34
+ .text-input__clear-button {
35
+ right: var(--spacing-xl);
36
+ }
37
+ .input-wrapper--text-input {
38
+ margin: 0;
39
+ }
40
+ .tooltip__wrapper {
41
+ z-index: 2001;
42
+ }
43
+ }
44
+ &__popup {
45
+ background: white;
46
+ border-radius: var(--radius-small);
47
+ border: 1px solid var(--gray-3-1-contrast);
48
+ box-sizing: border-box;
49
+ margin: 0;
50
+ padding: 0;
51
+ z-index: 2000;
52
+ overflow: hidden;
53
+
54
+ .input-wrapper--calendar-input {
55
+ margin: 0;
56
+ }
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,87 @@
1
+ @use "../../../1-settings/class-vars";
2
+ @use "../../../1-settings/color-swatches";
3
+ @use "../../../2-tools/tools-index";
4
+
5
+ #{class-vars.$base-class} {
6
+ .file-input {
7
+ &__box {
8
+ border: 1px dashed var(--gray-color);
9
+ position: relative;
10
+ background: white;
11
+ text-align: center;
12
+
13
+ &--dragged, &--dragged > div {
14
+ background: var(--form-ele-color-light);
15
+ }
16
+
17
+ &--disabled > div {
18
+ background: var(--disabled-gray);
19
+ }
20
+
21
+ input[type="file"] {
22
+ position: absolute;
23
+ width: 100%;
24
+ height: 100%;
25
+ left: 0;
26
+ top: 0;
27
+ text-indent: -9999px;
28
+ cursor: pointer;
29
+ transition: box-shadow var(--timing-xquick) ease-in-out;
30
+ z-index: 1;
31
+
32
+ &:disabled {
33
+ cursor: not-allowed;
34
+ }
35
+
36
+ @include tools-index.form-ele-hover-medium;
37
+ @include tools-index.form-ele-focus;
38
+ }
39
+ }
40
+ &__instructions {
41
+ padding: var(--spacing-l) var(--spacing);
42
+ pointer-events: none;
43
+ position: relative;
44
+ z-index: 3;
45
+ }
46
+
47
+ &__file-selected {
48
+ background-color: #{color-swatches.$azul-16};
49
+ pointer-events: none;
50
+ position: relative;
51
+ text-align: left;
52
+ z-index: 3;
53
+
54
+ > div {
55
+ padding: var(--spacing-s) var(--spacing);
56
+ }
57
+
58
+ hr {
59
+ margin: 0;
60
+ border-color: white;
61
+ }
62
+ }
63
+
64
+ &__file-list {
65
+ display: flex;
66
+
67
+ .tag__wrapper {
68
+ background: white;
69
+ pointer-events: all;
70
+
71
+ &:not(:last-child) {
72
+ margin: 0 var(--spacing) var(--spacing) 0;
73
+ }
74
+ }
75
+ }
76
+
77
+ &__safari {
78
+ background: white;
79
+ height: 100%;
80
+ pointer-events: none;
81
+ position: absolute;
82
+ top: 0;
83
+ width: 100%;
84
+ z-index: 2;
85
+ }
86
+ }
87
+ }
@@ -17,14 +17,21 @@
17
17
  height: 100%;
18
18
  border-top-left-radius: var(--radius-small);
19
19
  border-bottom-left-radius: var(--radius-small);
20
- background-color: var(--secondary-color);
20
+ background-color: var(--gray-color);
21
21
  position: absolute;
22
22
  left: 0;
23
23
  }
24
+
24
25
  &__content {
25
26
  display: flex;
26
27
  align-items: center;
27
28
  padding: 0 var(--spacing-s);
28
29
  }
30
+
31
+ &__secondary {
32
+ &::before {
33
+ background-color: var(--secondary-color);
34
+ }
35
+ }
29
36
  }
30
37
  }
@@ -1,63 +1,67 @@
1
- @keyframes fade-in {
2
- 0% {
3
- opacity: 0;
4
- }
5
- 100% {
6
- opacity: 1;
7
- }
8
- }
1
+ @use "../1-settings/class-vars";
9
2
 
10
- @keyframes drop-in {
11
- 0% {
12
- opacity: 0;
13
- transform: translate(-50%, -100px);
3
+ #{class-vars.$base-class} {
4
+ @keyframes fade-in {
5
+ 0% {
6
+ opacity: 0;
7
+ }
8
+ 100% {
9
+ opacity: 1;
10
+ }
14
11
  }
15
- 100% {
16
- opacity: 1;
17
- transform: translate(-50%, 0);
18
- }
19
- }
20
12
 
21
- @keyframes pop-in {
22
- 0% {
23
- opacity: 0;
24
- transform: scale(0.7);
25
- }
26
- 100% {
27
- opacity: 1;
28
- transform: scale(1);
13
+ @keyframes drop-in {
14
+ 0% {
15
+ opacity: 0;
16
+ transform: translate(-50%, -100px);
17
+ }
18
+ 100% {
19
+ opacity: 1;
20
+ transform: translate(-50%, 0);
21
+ }
29
22
  }
30
- }
31
23
 
32
- @keyframes pop-in-center {
33
- 0% {
34
- opacity: 0;
35
- transform: scale(0.7) translateX(-50%);
36
- }
37
- 100% {
38
- opacity: 1;
39
- transform: scale(1) translateX(-50%);
24
+ @keyframes pop-in {
25
+ 0% {
26
+ opacity: 0;
27
+ transform: scale(0.7);
28
+ }
29
+ 100% {
30
+ opacity: 1;
31
+ transform: scale(1);
32
+ }
40
33
  }
41
- }
42
34
 
43
- @keyframes left-in {
44
- 0% {
45
- opacity: 0;
46
- transform: translate(-100%, 0);
35
+ @keyframes pop-in-center {
36
+ 0% {
37
+ opacity: 0;
38
+ transform: scale(0.7) translateX(-50%);
39
+ }
40
+ 100% {
41
+ opacity: 1;
42
+ transform: scale(1) translateX(-50%);
43
+ }
47
44
  }
48
- 100% {
49
- opacity: 1;
50
- transform: translate(0, 0);
51
- }
52
- }
53
45
 
54
- @keyframes right-in {
55
- 0% {
56
- opacity: 0;
57
- transform: translate(100%, 0);
46
+ @keyframes left-in {
47
+ 0% {
48
+ opacity: 0;
49
+ transform: translate(-100%, 0);
50
+ }
51
+ 100% {
52
+ opacity: 1;
53
+ transform: translate(0, 0);
54
+ }
58
55
  }
59
- 100% {
60
- opacity: 1;
61
- transform: translate(0, 0);
56
+
57
+ @keyframes right-in {
58
+ 0% {
59
+ opacity: 0;
60
+ transform: translate(100%, 0);
61
+ }
62
+ 100% {
63
+ opacity: 1;
64
+ transform: translate(0, 0);
65
+ }
62
66
  }
63
67
  }