@dynamic-framework/ui-react 1.31.0 → 1.32.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 (61) hide show
  1. package/dist/css/dynamic-ui-non-root.css +309 -126
  2. package/dist/css/dynamic-ui-non-root.min.css +2 -2
  3. package/dist/css/dynamic-ui-root.css +4 -1
  4. package/dist/css/dynamic-ui-root.min.css +2 -2
  5. package/dist/css/dynamic-ui.css +312 -126
  6. package/dist/css/dynamic-ui.min.css +2 -2
  7. package/dist/index.esm.js +191 -43
  8. package/dist/index.esm.js.map +1 -1
  9. package/dist/index.js +195 -43
  10. package/dist/index.js.map +1 -1
  11. package/dist/types/components/DAvatar/DAvatar.d.ts +5 -2
  12. package/dist/types/components/DDatePicker/DDatePicker.d.ts +7 -3
  13. package/dist/types/components/DInput/DInput.d.ts +2 -2
  14. package/dist/types/components/DInputCounter/DInputCounter.d.ts +2 -2
  15. package/dist/types/components/DInputCurrency/DInputCurrency.d.ts +1 -1
  16. package/dist/types/components/DInputCurrencyBase/DInputCurrencyBase.d.ts +1 -1
  17. package/dist/types/components/DInputMask/DInputMask.d.ts +1 -1
  18. package/dist/types/components/DInputPin/DInputPin.d.ts +3 -3
  19. package/dist/types/components/DInputSearch/DInputSearch.d.ts +1 -1
  20. package/dist/types/components/DInputSelect/DInputSelect.d.ts +3 -3
  21. package/dist/types/components/DList/DList.d.ts +3 -0
  22. package/dist/types/components/DList/components/DListItem.d.ts +3 -0
  23. package/dist/types/components/DListGroup/DListGroup.d.ts +14 -0
  24. package/dist/types/components/DListGroup/components/DListGroupItem.d.ts +13 -0
  25. package/dist/types/components/DListGroup/index.d.ts +3 -0
  26. package/dist/types/components/DModal/components/DModalFooter.d.ts +1 -1
  27. package/dist/types/components/DOffcanvas/components/DOffcanvasFooter.d.ts +3 -3
  28. package/dist/types/components/DPaginator/DPaginator.d.ts +25 -8
  29. package/dist/types/components/DPopover/DPopover.d.ts +3 -0
  30. package/dist/types/components/DQuickActionButton/DQuickActionButton.d.ts +3 -0
  31. package/dist/types/components/DQuickActionCheck/DQuickActionCheck.d.ts +3 -0
  32. package/dist/types/components/DQuickActionSwitch/DQuickActionSwitch.d.ts +3 -0
  33. package/dist/types/components/DSelect/DSelect.d.ts +3 -3
  34. package/dist/types/components/DTabs/DTabs.d.ts +1 -1
  35. package/dist/types/components/index.d.ts +5 -2
  36. package/dist/types/components/interface.d.ts +0 -4
  37. package/dist/types/contexts/index.d.ts +2 -1
  38. package/dist/types/hooks/index.d.ts +1 -0
  39. package/dist/types/hooks/useItemSelection.d.ts +16 -0
  40. package/dist/types/utils/changeQueryString.d.ts +4 -0
  41. package/dist/types/utils/getQueryString.d.ts +4 -0
  42. package/dist/types/utils/index.d.ts +3 -1
  43. package/package.json +17 -16
  44. package/src/style/abstracts/variables/_forms.scss +3 -2
  45. package/src/style/abstracts/variables/_list-group.scss +3 -3
  46. package/src/style/abstracts/variables/_navs.scss +14 -17
  47. package/src/style/abstracts/variables/_options.scss +1 -1
  48. package/src/style/base/_+import.scss +2 -1
  49. package/src/style/base/_alert.scss +20 -0
  50. package/src/style/base/_input-group.scss +4 -1
  51. package/src/style/base/_nav.scss +72 -0
  52. package/src/style/base/_pagination.scss +7 -5
  53. package/src/style/base/_placeholder.scss +3 -0
  54. package/src/style/components/_+import.scss +1 -1
  55. package/src/style/components/_d-avatar.scss +85 -0
  56. package/src/style/components/_d-input-pin.scss +11 -5
  57. package/src/style/components/_d-select.scss +15 -6
  58. package/src/style/root/_root.scss +7 -0
  59. package/src/style/base/_avatar.scss +0 -61
  60. package/src/style/components/_d-tabs.scss +0 -44
  61. /package/dist/types/utils/{format-currency.d.ts → formatCurrency.d.ts} +0 -0
@@ -15,7 +15,7 @@ $enable-container-classes: true !default;
15
15
  $enable-cssgrid: true !default;
16
16
  $enable-button-pointers: true !default;
17
17
  $enable-rfs: true !default;
18
- $enable-validation-icons: false !default;
18
+ $enable-validation-icons: true !default;
19
19
  $enable-negative-margins: false !default;
20
20
  $enable-deprecation-messages: true !default;
21
21
  $enable-important-utilities: true !default;
@@ -53,7 +53,8 @@
53
53
  @import "breadcrumb";
54
54
  @import "dropdown";
55
55
  @import "label";
56
- @import "avatar";
57
56
  @import "backdrop";
58
57
  @import "toast";
59
58
  @import "tooltip";
59
+ @import "placeholder";
60
+ @import "nav";
@@ -15,6 +15,10 @@
15
15
  .alert-icon {
16
16
  --#{$prefix}icon-size: var(--#{$prefix}alert-icon-size);
17
17
  --#{$prefix}icon-color: var(--#{$prefix}alert-icon-color);
18
+
19
+ &:not(.d-icon) {
20
+ color: var(--#{$prefix}icon-color);
21
+ }
18
22
  }
19
23
 
20
24
  @each $theme, $value in map-remove($theme-colors, "light", "dark") {
@@ -26,4 +30,20 @@
26
30
  --#{$prefix}alert-border-color: var(--#{$prefix}surface-#{$theme});
27
31
  }
28
32
  }
33
+
34
+ &.alert-light {
35
+ --#{$prefix}alert-icon-color: var(--#{$prefix}gray-500);
36
+ --#{$prefix}alert-color: var(--#{$prefix}body-color);
37
+
38
+ --#{$prefix}alert-bg: var(--#{$prefix}surface-gray);
39
+ --#{$prefix}alert-border-color: var(--#{$prefix}surface-gray);
40
+ }
41
+
42
+ &.alert-dark {
43
+ --#{$prefix}alert-icon-color: var(--#{$prefix}light);
44
+ --#{$prefix}alert-color: var(--#{$prefix}white);
45
+
46
+ --#{$prefix}alert-bg: var(--#{$prefix}gray-500);
47
+ --#{$prefix}alert-border-color: var(--#{$prefix}gray-500);
48
+ }
29
49
  }
@@ -78,7 +78,10 @@
78
78
 
79
79
  &:has(.form-control.is-#{$state}, .form-select.is-#{$state}) {
80
80
  border-color: $border-color;
81
- box-shadow: $box-shadow;
81
+
82
+ &:focus-within {
83
+ box-shadow: $box-shadow;
84
+ }
82
85
 
83
86
  ~ .form-text {
84
87
  color: $border-color;
@@ -0,0 +1,72 @@
1
+ .nav-pills,
2
+ .nav-tabs,
3
+ .nav-underline {
4
+ --#{$prefix}nav-tabs-border-color: #{$nav-tabs-border-color};
5
+ --#{$prefix}nav-tabs-nav-gap: #{$nav-nav-gap};
6
+ --#{$prefix}nav-link-padding-x: #{$nav-link-padding-x};
7
+ --#{$prefix}nav-link-padding-y: #{$nav-link-padding-y};
8
+ --#{$prefix}nav-tabs-link-border-active-font-weight: #{$nav-link-border-active-font-weight};
9
+ --#{$prefix}nav-link-hover-bg: #{$nav-link-hover-bg};
10
+ --#{$prefix}nav-link-hover-color: #{$nav-link-hover-color};
11
+
12
+ .nav-link {
13
+ &:hover {
14
+ background-color: var(--#{$prefix}nav-link-hover-bg);
15
+ }
16
+ }
17
+ }
18
+
19
+ .nav-pills,
20
+ .nav-underline {
21
+ gap: var(--#{$prefix}nav-tabs-nav-gap);
22
+ padding: var(--#{$prefix}nav-link-padding-y) var(--#{$prefix}nav-link-padding-x);
23
+
24
+ &.flex-column {
25
+ flex: 1 0 auto;
26
+
27
+ .nav-link {
28
+ width: 100%;
29
+ }
30
+ }
31
+ }
32
+
33
+ .nav-pills {
34
+ .nav-link.active {
35
+ &:hover {
36
+ color: var(--#{$prefix}nav-link-hover-color);
37
+ }
38
+ }
39
+ }
40
+
41
+ .nav-underline {
42
+ &.flex-column {
43
+ .nav-link {
44
+ border-right: 1px solid var(--#{$prefix}nav-tabs-border-color);
45
+ border-bottom-color: transparent;
46
+ }
47
+ .nav-link.active{
48
+ background-color: var(--#{$prefix}nav-link-hover-bg);
49
+ border-right: 1px solid currentcolor;
50
+ }
51
+ }
52
+ .nav-link {
53
+ padding: var(--#{$prefix}nav-link-padding-y) var(--#{$prefix}nav-link-padding-x);
54
+ border-bottom: 1px solid var(--#{$prefix}gray-300);
55
+ }
56
+ }
57
+
58
+ .nav-tabs {
59
+ .nav-link {
60
+ &.active {
61
+ border-bottom-color: transparent;
62
+ }
63
+ &:not(.active):is(:hover, :focus) {
64
+ border-color: transparent;
65
+ }
66
+ }
67
+ }
68
+
69
+ .nav-link:focus-visible {
70
+ --#{$prefix}focus-ring-opacity: .25;
71
+ --#{$prefix}focus-ring-color: rgba(var(--#{$prefix}secondary-rgb), var(--#{$prefix}focus-ring-opacity));
72
+ }
@@ -10,12 +10,14 @@
10
10
  min-height: var(--#{$prefix}pagination-page-item-size);
11
11
  }
12
12
 
13
- :is(.page-item:first-child, .page-item:last-child):not(.disabled) .page-link {
14
- color: var(--#{$prefix}pagination-page-control-color);
15
- }
13
+ .page-item-arrow {
14
+ &:is(.page-item:first-child, .page-item:last-child):not(.disabled) .page-link {
15
+ color: var(--#{$prefix}pagination-page-control-color);
16
+ }
16
17
 
17
- :is(.page-item:first-child, .page-item:last-child).disabled .page-link {
18
- color: var(--#{$prefix}pagination-page-control-disabled-color);
18
+ &:is(.page-item:first-child, .page-item:last-child).disabled .page-link {
19
+ color: var(--#{$prefix}pagination-page-control-disabled-color);
20
+ }
19
21
  }
20
22
 
21
23
  .page-link {
@@ -0,0 +1,3 @@
1
+ .placeholder {
2
+ background-color: var(--#{$prefix}default-placeholder-bg, currentcolor);
3
+ }
@@ -1,3 +1,4 @@
1
+ @import "d-avatar";
1
2
  @import "d-icon";
2
3
  @import "d-input-pin";
3
4
  @import "d-button-icon";
@@ -11,7 +12,6 @@
11
12
  @import "d-collapse-icon-text";
12
13
  @import "d-datepicker";
13
14
  @import "d-timepicker";
14
- @import "d-tabs";
15
15
  @import "d-close";
16
16
  @import "d-popover";
17
17
  @import "d-box-file";
@@ -0,0 +1,85 @@
1
+ .d-avatar {
2
+ --#{$prefix}avatar-border: 1px solid var(--#{$prefix}avatar-bg);
3
+ --#{$prefix}avatar-size: var(--#{$prefix}ref-spacer-12);
4
+ --#{$prefix}avatar-bg: var(--#{$prefix}secondary-100);
5
+ --#{$prefix}avatar-color: var(--#{$prefix}secondary-500);
6
+ --#{$prefix}avatar-font-weight: var(--#{$prefix}fw-bold);
7
+ --#{$prefix}avatar-border-radius: var(--#{$prefix}border-radius-pill);
8
+
9
+ position: relative;
10
+ display: inline-block;
11
+ width: var(--#{$prefix}avatar-size);
12
+ height: var(--#{$prefix}avatar-size);
13
+ font-size: calc(var(--#{$prefix}avatar-size) / 3);
14
+ border: var(--#{$prefix}avatar-border);
15
+ border-radius: var(--#{$prefix}avatar-border-radius);
16
+
17
+ .d-avatar-img {
18
+ width: 100%;
19
+ height: 100%;
20
+ object-fit: cover;
21
+ border-radius: var(--#{$prefix}avatar-border-radius);
22
+ }
23
+
24
+ .d-avatar-name {
25
+ display: flex;
26
+ align-items: center;
27
+ justify-content: center;
28
+ width: 100%;
29
+ height: 100%;
30
+ font-weight: var(--#{$prefix}avatar-font-weight);
31
+ color: var(--#{$prefix}avatar-color);
32
+ white-space: pre-wrap;
33
+ background-color: var(--#{$prefix}avatar-bg);
34
+ border-radius: var(--#{$prefix}avatar-border-radius);
35
+ }
36
+
37
+ @each $theme, $value in map-remove($theme-colors, "light", "dark") {
38
+ $color: color-contrast($value);
39
+ &.d-avatar-#{$theme} {
40
+ --#{$prefix}avatar-color: var(--#{$prefix}#{$theme}-500);
41
+ --#{$prefix}avatar-bg: var(--#{$prefix}#{$theme}-100);
42
+ }
43
+
44
+ &.d-avatar-dark-#{$theme} {
45
+ --#{$prefix}avatar-color: var(--#{$prefix}white);
46
+ --#{$prefix}avatar-bg: var(--#{$prefix}#{$theme}-500);
47
+ }
48
+
49
+ &.d-avatar-light-#{$theme} {
50
+ --#{$prefix}avatar-color: var(--#{$prefix}#{$theme}-500);
51
+ --#{$prefix}avatar-bg: var(--#{$prefix}white);
52
+ }
53
+ }
54
+ }
55
+
56
+ .d-avatar-xs {
57
+ --#{$prefix}avatar-size: var(--#{$prefix}ref-spacer-8);
58
+ }
59
+
60
+ .d-avatar-sm {
61
+ --#{$prefix}avatar-size: var(--#{$prefix}ref-spacer-10);
62
+ }
63
+
64
+ .d-avatar-lg {
65
+ --#{$prefix}avatar-size: var(--#{$prefix}ref-spacer-14);
66
+ }
67
+
68
+ .d-avatar-xl {
69
+ --#{$prefix}avatar-size: var(--#{$prefix}ref-spacer-16);
70
+ }
71
+
72
+ .d-avatar-xxl {
73
+ --#{$prefix}avatar-size: var(--#{$prefix}ref-spacer-18);
74
+ }
75
+
76
+ .d-avatar-group {
77
+ .d-avatar-img,
78
+ .d-avatar-name {
79
+ box-shadow: -2px 0 2px rgba(0, 0, 0, .1);
80
+ }
81
+
82
+ .d-avatar + .d-avatar {
83
+ margin-left: calc(var(--#{$prefix}avatar-size) * -.25);
84
+ }
85
+ }
@@ -49,9 +49,19 @@
49
49
  $border-color: map-get($data, "border-color");
50
50
  $tooltip-bg-color: map-get($data, "tooltip-bg-color");
51
51
  $box-shadow: map-get($data, "focus-box-shadow");
52
+ $icon: map-get($data, "icon");
53
+
54
+ &:has(.form-control.is-#{$state}) {
55
+ @if $enable-validation-icons {
56
+ padding-right: $input-height-inner;
57
+ background-image: $icon;
58
+ background-repeat: no-repeat;
59
+ background-position: right $input-height-inner-quarter center;
60
+ background-size: $input-height-inner-half $input-height-inner-half;
61
+ }
52
62
 
53
- &:has(.form-control.is-#{$state}){
54
63
  .form-control {
64
+ background: $input-bg;
55
65
  border-color: $tooltip-bg-color;
56
66
  box-shadow: $box-shadow;
57
67
  }
@@ -59,10 +69,6 @@
59
69
  .form-text {
60
70
  color: $border-color;
61
71
  }
62
-
63
- .input-group-validation-icon {
64
- --#{$prefix}icon-color: #{$tooltip-bg-color};
65
- }
66
72
  }
67
73
  }
68
74
 
@@ -48,22 +48,31 @@
48
48
  border-radius: var(--#{$prefix}input-border-radius);
49
49
  }
50
50
 
51
- // validation states
52
51
  @each $state, $data in $form-validation-states {
53
52
  $border-color: map-get($data, "border-color");
54
53
  $tooltip-bg-color: map-get($data, "tooltip-bg-color");
55
54
  $box-shadow: map-get($data, "focus-box-shadow");
55
+ $icon: map-get($data, "icon");
56
56
 
57
57
  .input-group:has(.d-select-component.is-#{$state}) {
58
58
  border-color: $border-color;
59
- box-shadow: $box-shadow;
60
59
 
61
- ~ .form-text {
62
- color: $border-color;
60
+ .d-select__value-container {
61
+ @if $enable-validation-icons {
62
+ padding-right: $input-height-inner;
63
+ background-image: $icon;
64
+ background-repeat: no-repeat;
65
+ background-position: right $input-height-inner-quarter center;
66
+ background-size: $input-height-inner-half $input-height-inner-half;
67
+ }
68
+ }
69
+
70
+ &:focus-within {
71
+ box-shadow: $box-shadow;
63
72
  }
64
73
 
65
- .input-group-validation-icon {
66
- --#{$prefix}icon-color: #{$tooltip-bg-color};
74
+ ~ .form-text {
75
+ color: $border-color;
67
76
  }
68
77
  }
69
78
  }
@@ -297,6 +297,13 @@
297
297
  --#{$prefix}ref-spacer-#{$level}: #{$value};
298
298
  }
299
299
 
300
+ // We can't use a css variable in SVG code,
301
+ --#{$prefix}form-feedback-icon-valid: #{escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='#{$success}' d='M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425z'/></svg>"))};
302
+ // We can't use a css variable in SVG code,
303
+ --#{$prefix}form-feedback-icon-invalid: #{escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$danger}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$danger}' stroke='none'/></svg>"))};
304
+
305
+ --#{$prefix}default-placeholder-bg: var(--#{$prefix}secondary-200);
306
+
300
307
  --#{$prefix}default-accordion-padding-x: var(--#{$prefix}ref-spacer-4);
301
308
  --#{$prefix}default-accordion-padding-y: var(--#{$prefix}ref-spacer-6);
302
309
  --#{$prefix}default-accordion-color: var(--#{$prefix}gray-700);
@@ -1,61 +0,0 @@
1
- .avatar {
2
- --#{$prefix}avatar-size: var(--#{$prefix}ref-spacer-8);
3
- --#{$prefix}avatar-title-bg: var(--#{$prefix}gray-500);
4
- --#{$prefix}avatar-title-color: var(--#{$prefix}white);
5
- --#{$prefix}avatar-radius: var(--#{$prefix}border-radius-pill);
6
-
7
- position: relative;
8
- display: inline-block;
9
- width: var(--#{$prefix}avatar-size);
10
- height: var(--#{$prefix}avatar-size);
11
- font-size: calc(var(--#{$prefix}avatar-size) / 3);
12
-
13
- .avatar-img {
14
- width: 100%;
15
- height: 100%;
16
- object-fit: cover;
17
- border-radius: var(--#{$prefix}avatar-radius);
18
- }
19
-
20
- .avatar-title {
21
- display: flex;
22
- align-items: center;
23
- justify-content: center;
24
- width: 100%;
25
- height: 100%;
26
- color: var(--#{$prefix}avatar-title-color);
27
- white-space: pre-wrap;
28
- background-color: var(--#{$prefix}avatar-title-bg);
29
- border-radius: var(--#{$prefix}avatar-radius);
30
- }
31
- }
32
-
33
- .avatar-xs {
34
- --#{$prefix}avatar-size: var(--#{$prefix}ref-spacer-4);
35
- }
36
-
37
- .avatar-sm {
38
- --#{$prefix}avatar-size: var(--#{$prefix}ref-spacer-6);
39
- }
40
-
41
- .avatar-lg {
42
- --#{$prefix}avatar-size: var(--#{$prefix}ref-spacer-10);
43
- }
44
-
45
- .avatar-xl {
46
- --#{$prefix}avatar-size: var(--#{$prefix}ref-spacer-12);
47
- }
48
-
49
- .avatar-xxl {
50
- --#{$prefix}avatar-size: var(--#{$prefix}ref-spacer-14);
51
- }
52
-
53
- .avatar-group {
54
- .avatar-img {
55
- box-shadow: -2px 0 2px rgba(0, 0, 0, .1);
56
- }
57
-
58
- .avatar + .avatar {
59
- margin-left: calc(var(--#{$prefix}avatar-size) * -.25);
60
- }
61
- }
@@ -1,44 +0,0 @@
1
- .nav-pills,
2
- .nav-tabs,
3
- .nav-underline {
4
- --#{$prefix}nav-tabs-nav-gap: #{$nav-nav-gap};
5
- --#{$prefix}nav-tabs-nav-padding-x: #{$nav-nav-padding-x};
6
- --#{$prefix}nav-tabs-nav-padding-y: #{$nav-nav-padding-y};
7
- --#{$prefix}nav-tabs-link-border-active-font-weight: #{$nav-link-border-active-font-weight};
8
- }
9
-
10
- .nav-pills,
11
- .nav-underline {
12
- gap: var(--#{$prefix}nav-tabs-nav-gap);
13
- padding: var(--#{$prefix}nav-tabs-nav-padding-y) var(--#{$prefix}nav-tabs-nav-padding-x);
14
-
15
- &.flex-column {
16
- flex: 1 0 auto;
17
-
18
- .nav-link {
19
- width: 100%;
20
- }
21
- }
22
- }
23
-
24
- .nav-tabs {
25
- .nav-link {
26
- &.active {
27
- font-weight: var(--#{$prefix}nav-tabs-link-border-active-font-weight);
28
- border-bottom-color: transparent;
29
- }
30
- &:not(.active):is(:hover, :focus) {
31
- border-color: transparent;
32
- }
33
- }
34
- }
35
-
36
- .nav-underline .nav-link {
37
- &:not(.active):hover {
38
- border-bottom-color: transparent;
39
- }
40
- }
41
- .nav-link:focus-visible {
42
- --#{$prefix}focus-ring-opacity: .25;
43
- --#{$prefix}focus-ring-color: rgba(var(--#{$prefix}secondary-rgb), var(--#{$prefix}focus-ring-opacity));
44
- }