ecabs-components 2.0.0-alpha.8 → 2.0.0-alpha.9

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 (39) hide show
  1. package/README.md +30 -6
  2. package/fesm2022/ecabs-components.mjs +549 -289
  3. package/fesm2022/ecabs-components.mjs.map +1 -1
  4. package/lib/base/consts/badge.consts.d.ts +1 -0
  5. package/lib/base/directives/action-menu-trigger.directive.d.ts +8 -0
  6. package/lib/base/directives/badge.directive.d.ts +26 -0
  7. package/lib/base/directives/badge.directive.module.d.ts +8 -0
  8. package/lib/base/directives/tooltip-if-truncated.directive.module.d.ts +2 -1
  9. package/lib/base/models/action-menu.models.d.ts +13 -0
  10. package/lib/ecabs-action-menu/ecabs-action-menu.component.d.ts +26 -0
  11. package/lib/ecabs-action-menu/ecabs-action-menu.module.d.ts +13 -0
  12. package/lib/ecabs-badge/ecabs-badge.component.d.ts +2 -3
  13. package/lib/ecabs-badge/ecabs-badge.module.d.ts +5 -4
  14. package/lib/ecabs-expansion-panel/ecabs-expansion-panel.component.d.ts +3 -2
  15. package/lib/ecabs-expansion-panel/ecabs-expansion-panel.module.d.ts +3 -3
  16. package/lib/ecabs-phone/ecabs-phone.component.d.ts +1 -0
  17. package/package.json +1 -1
  18. package/public-api.d.ts +6 -0
  19. package/src/assets/images/nothing-here.svg +22 -22
  20. package/src/assets/images/promotions.svg +3 -3
  21. package/src/assets/styles/material/overrides/_badge.scss +109 -0
  22. package/src/assets/styles/material/overrides/_expansion.scss +43 -1
  23. package/src/assets/styles/material/overrides/_menu.scss +51 -2
  24. package/src/assets/styles/material/overrides/_phone.scss +6 -6
  25. package/src/assets/styles/material/overrides/_select.scss +2 -4
  26. package/src/assets/styles/material/overrides/_toolbar.scss +3 -3
  27. package/src/assets/styles/scss/modules/_badge.scss +25 -8
  28. package/src/assets/styles/scss/modules/_button.scss +1 -0
  29. package/src/assets/styles/scss/modules/_divider.scss +4 -4
  30. package/src/assets/styles/scss/modules/_img.scss +32 -32
  31. package/src/assets/styles/scss/modules/_menu.scss +52 -0
  32. package/src/assets/styles/scss/modules/_percentage.scss +41 -41
  33. package/src/assets/styles/scss/modules/_phone.scss +1 -4
  34. package/src/assets/styles/scss/modules/_statuses.scss +36 -36
  35. package/src/assets/styles/scss/modules/_toaster.scss +53 -53
  36. package/src/assets/styles/scss/modules/index.scss +1 -0
  37. package/src/assets/styles/scss/utilities/_fonts.scss +31 -31
  38. package/src/assets/styles/scss/utilities/_helpers.scss +14 -14
  39. package/src/assets/styles/tailwind/index.scss +1 -1
@@ -3,12 +3,14 @@
3
3
  @use "../utilities/variables";
4
4
 
5
5
  .badge {
6
+ --badge-gap: 0.25rem;
7
+
6
8
  display: inline-flex;
7
9
  align-items: center;
8
- gap: 0.25rem;
10
+ gap: var(--badge-gap);
9
11
 
10
12
  max-width: var(--badge-max-width, 100%);
11
- border: 1px solid transparent;
13
+ border: 1px solid var(--badge-border-color, transparent);
12
14
  border-radius: variables.$border-radius-base;
13
15
  font-weight: fonts.$font-weight-medium;
14
16
  line-height: 1;
@@ -23,7 +25,6 @@
23
25
  font-size: var(--badge-icon-size);
24
26
  line-height: var(--badge-icon-size);
25
27
 
26
-
27
28
  @include mixins.m(slot) {
28
29
  display: inline-flex;
29
30
  align-items: center;
@@ -93,23 +94,39 @@
93
94
 
94
95
  @include mixins.m(bordered) {
95
96
  &.badge--default {
96
- border-color: var(--color-default-border);
97
+ --badge-border-color: var(--color-default-border);
97
98
  }
98
99
 
99
100
  &.badge--success {
100
- border-color: var(--color-success-border);
101
+ --badge-border-color: var(--color-success-border);
101
102
  }
102
103
 
103
104
  &.badge--warning {
104
- border-color: var(--color-warning-border);
105
+ --badge-border-color: var(--color-warning-border);
105
106
  }
106
107
 
107
108
  &.badge--danger {
108
- border-color: var(--color-error-border);
109
+ --badge-border-color: var(--color-error-border);
109
110
  }
110
111
 
111
112
  &.badge--info {
112
- border-color: var(--color-info-border);
113
+ --badge-border-color: var(--color-info-border);
114
+ }
115
+ }
116
+
117
+ /* #Interactive */
118
+ // A badge that can be clicked: a status label that opens a menu
119
+ @include mixins.m(interactive) {
120
+ cursor: pointer;
121
+
122
+ // Inset, so the ring is drawn inside the badge's own border box. An outset
123
+ // ring needs 4px of clear space on every side and gets shaved by any
124
+ // ancestor that clips, which in a table cell is routine: the badge sits
125
+ // flush against the cell's padding edge. Negative offset makes it immune to
126
+ // that everywhere instead of per container.
127
+ &:focus-visible {
128
+ outline: 2px solid var(--color-info);
129
+ outline-offset: -2px;
113
130
  }
114
131
  }
115
132
  }
@@ -7,6 +7,7 @@
7
7
  .btn {
8
8
  @include mixins.fontSize(fonts.$font-size-base);
9
9
 
10
+ position: relative;
10
11
  border: 0;
11
12
  min-width: functions.calc-rem(111px);
12
13
  min-height: functions.calc-rem(42px);
@@ -1,4 +1,4 @@
1
- .divider {
2
- border-top-color: var(--color-gray-100);
3
- color: var(--color-gray-100);
4
- }
1
+ .divider {
2
+ border-top-color: var(--color-gray-100);
3
+ color: var(--color-gray-100);
4
+ }
@@ -1,32 +1,32 @@
1
- .aspect-ratio {
2
- position: relative;
3
- display: inline-block;
4
- background-color: inherit;
5
- line-height: 1;
6
- overflow: hidden;
7
-
8
- // ***************************
9
- // #Content
10
- // ***************************/
11
- &__content { //** Fallback
12
- position: absolute;
13
- top: 50%;
14
- right: 0;
15
- bottom: 0;
16
- left: 50%;
17
- max-width: 100%;
18
- width: 100%;
19
- transform: translate(-50%, -50%);
20
-
21
- @supports (object-fit: cover) {
22
- &--cover { // cover
23
- position: static;
24
- width: 100%;
25
- height: 100%;
26
- padding: 0;
27
- object-fit: cover;
28
- transform: none;
29
- }
30
- }
31
- }
32
- }
1
+ .aspect-ratio {
2
+ position: relative;
3
+ display: inline-block;
4
+ background-color: inherit;
5
+ line-height: 1;
6
+ overflow: hidden;
7
+
8
+ // ***************************
9
+ // #Content
10
+ // ***************************/
11
+ &__content { //** Fallback
12
+ position: absolute;
13
+ top: 50%;
14
+ right: 0;
15
+ bottom: 0;
16
+ left: 50%;
17
+ max-width: 100%;
18
+ width: 100%;
19
+ transform: translate(-50%, -50%);
20
+
21
+ @supports (object-fit: cover) {
22
+ &--cover { // cover
23
+ position: static;
24
+ width: 100%;
25
+ height: 100%;
26
+ padding: 0;
27
+ object-fit: cover;
28
+ transform: none;
29
+ }
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,52 @@
1
+ @use "../utilities/fonts";
2
+ @use "../utilities/functions";
3
+ @use "../utilities/mixins";
4
+
5
+ .action-menu {
6
+ @include mixins.e(trigger) {
7
+ display: inline-flex;
8
+ align-items: center;
9
+ cursor: pointer;
10
+ }
11
+
12
+ @include mixins.e(trigger-icon) {
13
+ --action-menu-trigger-icon-size: #{functions.calc-rem(16px)};
14
+ --action-menu-trigger-icon-color: var(--color-gray-400);
15
+ --action-menu-trigger-icon-color-hover: var(--color-brand-dark);
16
+
17
+ width: var(--action-menu-trigger-icon-size);
18
+ height: var(--action-menu-trigger-icon-size);
19
+ font-size: var(--action-menu-trigger-icon-size);
20
+ line-height: var(--action-menu-trigger-icon-size);
21
+ color: var(--action-menu-trigger-icon-color);
22
+ }
23
+ }
24
+
25
+ .action-menu-item {
26
+ --action-menu-item-color: var(--color-gray-700);
27
+ --action-menu-item-icon-size: #{functions.calc-rem(16px)};
28
+ --action-menu-item-icon-gap: #{functions.calc-rem(8px)};
29
+
30
+ display: flex;
31
+ align-items: center;
32
+ color: var(--action-menu-item-color);
33
+
34
+ @include mixins.m(destructive) {
35
+ --action-menu-item-color: var(--color-error);
36
+ }
37
+
38
+ @include mixins.e(icon) {
39
+ flex: none;
40
+
41
+ margin-right: var(--action-menu-item-icon-gap);
42
+ width: var(--action-menu-item-icon-size);
43
+ height: var(--action-menu-item-icon-size);
44
+ font-size: var(--action-menu-item-icon-size);
45
+ line-height: var(--action-menu-item-icon-size);
46
+ color: inherit;
47
+ }
48
+
49
+ @include mixins.e(label) {
50
+ @include mixins.fontSize(fonts.$font-size-md);
51
+ }
52
+ }
@@ -1,41 +1,41 @@
1
- .percentage {
2
- &__over-87 {
3
- background-color: #25BD3D;
4
- border-color: #25BD3D;
5
- }
6
-
7
- &__over-75 {
8
- background-color: #87C337;
9
- border-color: #87C337;
10
- }
11
-
12
- &__over-62 {
13
- background-color: #BAC61C;
14
- border-color: #BAC61C;
15
- }
16
-
17
- &__over-50 {
18
- background-color: #ECC902;
19
- border-color: #ECC902;
20
- }
21
-
22
- &__over-37 {
23
- background-color: #EBA70D;
24
- border-color: #EBA70D;
25
- }
26
-
27
- &__over-25 {
28
- background-color: #E7831B;
29
- border-color: #E7831B;
30
- }
31
-
32
- &__over-12 {
33
- background-color: #E35E2A;
34
- border-color: #E35E2A;
35
- }
36
-
37
- &__default {
38
- background-color: #DF3838;
39
- border-color: #DF3838;
40
- }
41
- }
1
+ .percentage {
2
+ &__over-87 {
3
+ background-color: #25BD3D;
4
+ border-color: #25BD3D;
5
+ }
6
+
7
+ &__over-75 {
8
+ background-color: #87C337;
9
+ border-color: #87C337;
10
+ }
11
+
12
+ &__over-62 {
13
+ background-color: #BAC61C;
14
+ border-color: #BAC61C;
15
+ }
16
+
17
+ &__over-50 {
18
+ background-color: #ECC902;
19
+ border-color: #ECC902;
20
+ }
21
+
22
+ &__over-37 {
23
+ background-color: #EBA70D;
24
+ border-color: #EBA70D;
25
+ }
26
+
27
+ &__over-25 {
28
+ background-color: #E7831B;
29
+ border-color: #E7831B;
30
+ }
31
+
32
+ &__over-12 {
33
+ background-color: #E35E2A;
34
+ border-color: #E35E2A;
35
+ }
36
+
37
+ &__default {
38
+ background-color: #DF3838;
39
+ border-color: #DF3838;
40
+ }
41
+ }
@@ -9,6 +9,7 @@
9
9
 
10
10
  .ecabs-tel-input-input {
11
11
  padding: functions.calc-rem(8px 8px 8px 105px) !important;
12
+ color: var(--color-black);
12
13
  }
13
14
 
14
15
  .country-selector {
@@ -28,8 +29,4 @@
28
29
  border: 1px solid var(--color-error);
29
30
  }
30
31
  }
31
-
32
- .disabled-field {
33
- background-color: var(--color-white-opacity-05) !important;
34
- }
35
32
  }
@@ -1,36 +1,36 @@
1
- .pending {
2
- background-color: var(--color-gray-300);
3
- color: var(--color-gray-400);
4
- }
5
-
6
- .reserved {
7
- background-color: var(--color-warning-opacity);
8
- color: var(--color-warning);
9
- }
10
-
11
- .scheduled, .ended {
12
- background-color: var(--color-gray-50);
13
- color: var(--color-gray-500);
14
- }
15
-
16
- .dispatched, .cab_arrived_at_pickup, .trip_started, .dropped_off, .started,
17
- .cab_arrived_at_intermediary_waypoint, .trip_ongoing, .in_progress, .published {
18
- background-color: rgba(var(--color-info-rgb), .05);
19
- color: var(--color-info);
20
- }
21
-
22
- .cab_arrived_at_dropoff, .trip_ended, .completed, .accepted, .cashed_in, .done {
23
- background-color: var(--color-success--opacity);
24
- color: var(--color-success);
25
- }
26
-
27
- .cancelled, .rejected, .suspended, .sick, .no_show, .unable_to_complete, .unavailable, .failed {
28
- background-color: var(--color-error-opacity);
29
- color: var(--color-error);
30
- }
31
-
32
-
33
- .archived {
34
- background-color: var(--color-gray-100);
35
- color: var(--color-gray-600);
36
- }
1
+ .pending {
2
+ background-color: var(--color-gray-300);
3
+ color: var(--color-gray-400);
4
+ }
5
+
6
+ .reserved {
7
+ background-color: var(--color-warning-opacity);
8
+ color: var(--color-warning);
9
+ }
10
+
11
+ .scheduled, .ended {
12
+ background-color: var(--color-gray-50);
13
+ color: var(--color-gray-500);
14
+ }
15
+
16
+ .dispatched, .cab_arrived_at_pickup, .trip_started, .dropped_off, .started,
17
+ .cab_arrived_at_intermediary_waypoint, .trip_ongoing, .in_progress, .published {
18
+ background-color: rgba(var(--color-info-rgb), .05);
19
+ color: var(--color-info);
20
+ }
21
+
22
+ .cab_arrived_at_dropoff, .trip_ended, .completed, .accepted, .cashed_in, .done {
23
+ background-color: var(--color-success--opacity);
24
+ color: var(--color-success);
25
+ }
26
+
27
+ .cancelled, .rejected, .suspended, .sick, .no_show, .unable_to_complete, .unavailable, .failed {
28
+ background-color: var(--color-error-opacity);
29
+ color: var(--color-error);
30
+ }
31
+
32
+
33
+ .archived {
34
+ background-color: var(--color-gray-100);
35
+ color: var(--color-gray-600);
36
+ }
@@ -1,53 +1,53 @@
1
- .toaster__body {
2
- padding: 1.5rem 4rem 1.5rem 1.5rem;
3
- border-radius: 4px;
4
-
5
- &.success {
6
- background-color: var(--color-success--opacity);
7
- color: var(--color-success);
8
-
9
- .close-button {
10
- color: var(--color-success);
11
- }
12
- }
13
-
14
- &.error {
15
- background-color: var(--color-error-opacity);
16
- color: var(--color-error);
17
-
18
- .close-button {
19
- color: var(--color-error);
20
- }
21
- }
22
-
23
- &.warning {
24
- background-color: var(--color-warning-opacity);
25
- color: var(--color-warning);
26
-
27
- .close-button {
28
- color: var(--color-warning);
29
- }
30
- }
31
-
32
- &.info {
33
- background-color: rgba(var(--color-info-rgb), .05);
34
- color: var(--color-info);
35
-
36
- .close-button {
37
- color: var(--color-info);
38
- }
39
- }
40
-
41
- .close-button {
42
- position: absolute;
43
- right: 1.75rem;
44
- top: calc(50% - 1rem);
45
- font-family: 'Material Icons';
46
- font-weight: 200;
47
- font-size: 21px;
48
-
49
- &::before {
50
- content: 'close';
51
- }
52
- }
53
- }
1
+ .toaster__body {
2
+ padding: 1.5rem 4rem 1.5rem 1.5rem;
3
+ border-radius: 4px;
4
+
5
+ &.success {
6
+ background-color: var(--color-success--opacity);
7
+ color: var(--color-success);
8
+
9
+ .close-button {
10
+ color: var(--color-success);
11
+ }
12
+ }
13
+
14
+ &.error {
15
+ background-color: var(--color-error-opacity);
16
+ color: var(--color-error);
17
+
18
+ .close-button {
19
+ color: var(--color-error);
20
+ }
21
+ }
22
+
23
+ &.warning {
24
+ background-color: var(--color-warning-opacity);
25
+ color: var(--color-warning);
26
+
27
+ .close-button {
28
+ color: var(--color-warning);
29
+ }
30
+ }
31
+
32
+ &.info {
33
+ background-color: rgba(var(--color-info-rgb), .05);
34
+ color: var(--color-info);
35
+
36
+ .close-button {
37
+ color: var(--color-info);
38
+ }
39
+ }
40
+
41
+ .close-button {
42
+ position: absolute;
43
+ right: 1.75rem;
44
+ top: calc(50% - 1rem);
45
+ font-family: 'Material Icons';
46
+ font-weight: 200;
47
+ font-size: 21px;
48
+
49
+ &::before {
50
+ content: 'close';
51
+ }
52
+ }
53
+ }
@@ -12,6 +12,7 @@
12
12
  @forward 'legend';
13
13
  @forward 'list';
14
14
  @forward 'map';
15
+ @forward 'menu';
15
16
  @forward 'phone';
16
17
  @forward 'select';
17
18
  @forward 'statuses';
@@ -1,31 +1,31 @@
1
- // #Family
2
- $font-family-primary: 'Segment', 'sans-serif';
3
- $font-family-fallback: 'Lato', sans-serif;
4
-
5
- // #Weights
6
- $font-weight-thin: 300;
7
- $font-weight-regular: 400;
8
- $font-weight-medium: 500;
9
- $font-weight-semibold: 600;
10
- $font-weight-bold: 700;
11
- $font-weight-extra-bold: 800;
12
-
13
- // #Sizes
14
- $font-size-xs: 12px;
15
- $font-size-sm: 13px;
16
- $font-size-md: 14px;
17
- $font-size-base: 16px;
18
- $font-size-lg: 18px;
19
-
20
- $font-heading-xs: 22px;
21
- $font-heading-sm: 28px;
22
- $font-heading-md: 32px;
23
- $font-heading-base: 34px;
24
- $font-heading-lg: 36px;
25
-
26
- // Height
27
- $base-line-height: 1.5;
28
-
29
- :root {
30
- --mat-option-label-text-size: #{$font-size-sm};
31
- }
1
+ // #Family
2
+ $font-family-primary: 'Segment', 'sans-serif';
3
+ $font-family-fallback: 'Lato', sans-serif;
4
+
5
+ // #Weights
6
+ $font-weight-thin: 300;
7
+ $font-weight-regular: 400;
8
+ $font-weight-medium: 500;
9
+ $font-weight-semibold: 600;
10
+ $font-weight-bold: 700;
11
+ $font-weight-extra-bold: 800;
12
+
13
+ // #Sizes
14
+ $font-size-xs: 12px;
15
+ $font-size-sm: 13px;
16
+ $font-size-md: 14px;
17
+ $font-size-base: 16px;
18
+ $font-size-lg: 18px;
19
+
20
+ $font-heading-xs: 22px;
21
+ $font-heading-sm: 28px;
22
+ $font-heading-md: 32px;
23
+ $font-heading-base: 34px;
24
+ $font-heading-lg: 36px;
25
+
26
+ // Height
27
+ $base-line-height: 1.5;
28
+
29
+ :root {
30
+ --mat-option-label-text-size: #{$font-size-sm};
31
+ }
@@ -1,14 +1,14 @@
1
- // For Pseudo Elements
2
- %pseudos {
3
- position: absolute;
4
- content: '';
5
- }
6
-
7
- %required {
8
- @extend %pseudos;
9
-
10
- content: '*' !important;
11
- margin-left: 0.2rem;
12
- margin-top: 2px;
13
- color: var(--color-error);
14
- }
1
+ // For Pseudo Elements
2
+ %pseudos {
3
+ position: absolute;
4
+ content: '';
5
+ }
6
+
7
+ %required {
8
+ @extend %pseudos;
9
+
10
+ content: '*' !important;
11
+ margin-left: 0.2rem;
12
+ margin-top: 2px;
13
+ color: var(--color-error);
14
+ }