@dative-gpi/foundation-shared-components 0.0.118 → 0.1.120

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 (37) hide show
  1. package/components/FSBreadcrumbs.vue +1 -1
  2. package/components/FSButton.vue +1 -1
  3. package/components/FSChip.vue +1 -1
  4. package/components/FSClickable.vue +2 -2
  5. package/components/FSClock.vue +1 -7
  6. package/components/FSCol.vue +1 -1
  7. package/components/FSDialogForm.vue +141 -52
  8. package/components/FSDialogMultiForm.vue +39 -40
  9. package/components/FSDialogRemove.vue +2 -2
  10. package/components/FSDialogSubmit.vue +44 -39
  11. package/components/FSDivider.vue +1 -1
  12. package/components/FSSlideGroup.vue +1 -1
  13. package/components/FSTabs.vue +12 -12
  14. package/components/FSTagGroup.vue +28 -5
  15. package/components/FSText.vue +1 -1
  16. package/components/FSWrapGroup.vue +1 -1
  17. package/components/deviceOrganisations/FSStatusCard.vue +0 -1
  18. package/components/fields/FSAutocompleteField.vue +284 -106
  19. package/components/fields/FSDateRangeField.vue +2 -2
  20. package/components/fields/FSDateTimeRangeField.vue +5 -11
  21. package/components/fields/FSSelectField.vue +11 -3
  22. package/components/fields/FSTagField.vue +2 -2
  23. package/components/fields/FSTermField.vue +3 -1
  24. package/components/lists/FSDataTableUI.vue +1 -0
  25. package/components/tiles/FSDeviceOrganisationTileUI.vue +1 -1
  26. package/components/tiles/FSGroupTileUI.vue +1 -1
  27. package/components/tiles/FSSimpleIconTileUI.vue +1 -1
  28. package/components/tiles/FSUserOrganisationTileUI.vue +2 -2
  29. package/composables/useColors.ts +39 -49
  30. package/package.json +4 -4
  31. package/styles/components/fs_data_table.scss +100 -94
  32. package/styles/components/fs_dialog.scss +4 -3
  33. package/styles/components/fs_dialog_menu.scss +2 -2
  34. package/styles/components/fs_slider.scss +9 -1
  35. package/styles/components/fs_tabs.scss +5 -4
  36. package/styles/globals/overrides.scss +2 -2
  37. package/styles/globals/scrollbars.scss +46 -36
@@ -6,7 +6,7 @@ import { ColorBase, ColorEnum, ColorVariations } from "@dative-gpi/foundation-sh
6
6
 
7
7
  export const useColors = () => {
8
8
  const theme = useTheme().current.value;
9
- const baseMinSaturation = 55;
9
+ const baseMinSaturation = 0;
10
10
  const baseFixedBrightness = 90;
11
11
 
12
12
  const isGrayScale = (color: Color): boolean => {
@@ -24,7 +24,8 @@ export const useColors = () => {
24
24
 
25
25
  const getLight = (base: Color): Color => {
26
26
  if (isGrayScale(base)) {
27
- return base.value(Math.min(base.value() + 10, 100));
27
+ return base
28
+ .value(Math.max(base.value(), 95));
28
29
  }
29
30
  return base.saturationv(10).value(100);
30
31
  };
@@ -34,27 +35,28 @@ export const useColors = () => {
34
35
  };
35
36
 
36
37
  const getBase = (base: Color): Color => {
37
- if (isGrayScale(base)) {
38
- return base.saturationv(1);
39
- }
40
- const saturation = base.saturationv() > baseMinSaturation ? base.saturationv() : baseMinSaturation;
41
- return base.saturationv(saturation).value(baseFixedBrightness);
38
+ return base;
42
39
  };
43
40
 
44
41
  const getDark = (base: Color): Color => {
45
42
  return base.value(Math.max(base.value() - 15, 0));
46
43
  };
47
44
 
48
- const getContrast = (color: Color, fallback: Color): Color => {
49
- if (isGrayScale(color)) {
50
- if (color.value() > 50) {
51
- return color.value(Math.max(0, color.value() - 75));
52
- }
53
- else {
54
- return color.value(Math.min(100, color.value() + 75));
55
- }
45
+ const getContrast = (color: Color): Color => {
46
+ if(isGrayScale(color)){
47
+ const coeff = 4
48
+ return color
49
+ .value(color.value() < 70 ? 100 : Math.max(color.value() / coeff, 0));
50
+ }
51
+
52
+ if(isPastel(color)){
53
+ return color.darken(0.6);
54
+ }
55
+
56
+ if(color.darken(0.15).isLight()){
57
+ return color.darken(0.6);
56
58
  }
57
- return fallback;
59
+ return color.lighten(color.value() / 50);
58
60
  }
59
61
 
60
62
  const getColors = (color: ColorBase): ColorVariations => {
@@ -67,41 +69,29 @@ export const useColors = () => {
67
69
  const soft = getSoft(base);
68
70
  const dark = getDark(base);
69
71
 
70
- if (isPastel(seed)) {
72
+ if (color === ColorEnum.Background) {
71
73
  return {
72
- light: getLight(seed).hex(),
73
- lightContrast: getContrast(light, dark).hex(),
74
- soft: getSoft(seed).hex(),
75
- softContrast: getContrast(seed, dark).hex(),
76
- base: seed.hex(),
77
- baseContrast: getContrast(seed, dark).hex(),
78
- dark: dark.hex(),
79
- darkContrast: getContrast(dark, light).hex()
80
- };
81
- }
82
-
83
- switch (color) {
84
- case ColorEnum.Background: return {
85
- light: base.hex(),
86
- lightContrast: getContrast(base, base).hex(),
87
- soft: base.hex(),
88
- softContrast: getContrast(base, base).hex(),
89
- base: base.hex(),
90
- baseContrast: getContrast(base, base).hex(),
91
- dark: dark.hex(),
92
- darkContrast: getContrast(dark, base).hex()
93
- };
94
- default: return {
95
- light: light.hex(),
96
- lightContrast: getContrast(light, dark).hex(),
97
- soft: soft.hex(),
98
- softContrast: getContrast(soft, light).hex(),
74
+ get light(): string { throw new Error("Don't use it !") },
75
+ get lightContrast(): string { throw new Error("Don't use it !") },
76
+ get soft(): string { throw new Error("Don't use it !") },
77
+ get softContrast(): string { throw new Error("Don't use it !") },
99
78
  base: base.hex(),
100
- baseContrast: getContrast(base, light).hex(),
101
- dark: dark.hex(),
102
- darkContrast: getContrast(dark, light).hex()
79
+ get baseContrast(): string { throw new Error("Don't use it !") },
80
+ get dark(): string { throw new Error("Don't use it !") },
81
+ get darkContrast(): string { throw new Error("Don't use it !") }
103
82
  };
104
83
  }
84
+
85
+ return {
86
+ light: light.hex(),
87
+ lightContrast: getContrast(light).hex(),
88
+ soft: soft.hex(),
89
+ softContrast: getContrast(soft).hex(),
90
+ base: seed.hex(),
91
+ baseContrast: getContrast(seed).hex(),
92
+ dark: dark.hex(),
93
+ darkContrast: getContrast(dark).hex()
94
+ };
105
95
  };
106
96
 
107
97
  const getGradients = (colors: ColorBase | ColorBase[], rotation: number = 90): ColorVariations => {
@@ -119,7 +109,7 @@ export const useColors = () => {
119
109
  }
120
110
 
121
111
  const getBasePaletteColors = (): string[][] => {
122
- const columnCount = 5
112
+ const columnCount = 8
123
113
  const colors: string[][] = [];
124
114
  for (let saturation = baseMinSaturation; saturation <= 100; saturation += (100 - baseMinSaturation) / (columnCount - 1)) {
125
115
  let colorsRow = [];
@@ -130,7 +120,7 @@ export const useColors = () => {
130
120
  colors.push(colorsRow)
131
121
  }
132
122
  let i = 0;
133
- for (let brightness = 5; brightness <= 95; brightness += (90 / (columnCount - 1))) {
123
+ for (let brightness = 0; brightness <= 100; brightness += (100 / (columnCount - 1))) {
134
124
  const color = new Color({ h: 0, s: 1, v: 100 - brightness });
135
125
  colors[i].unshift(color.hex());
136
126
  i++;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dative-gpi/foundation-shared-components",
3
3
  "sideEffects": false,
4
- "version": "0.0.118",
4
+ "version": "0.1.120",
5
5
  "description": "",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -10,8 +10,8 @@
10
10
  "author": "",
11
11
  "license": "ISC",
12
12
  "dependencies": {
13
- "@dative-gpi/foundation-shared-domain": "0.0.118",
14
- "@dative-gpi/foundation-shared-services": "0.0.118",
13
+ "@dative-gpi/foundation-shared-domain": "0.1.120",
14
+ "@dative-gpi/foundation-shared-services": "0.1.120",
15
15
  "@fontsource/montserrat": "^5.0.16",
16
16
  "@lexical/clipboard": "^0.12.5",
17
17
  "@lexical/history": "^0.12.5",
@@ -32,5 +32,5 @@
32
32
  "sass": "^1.69.5",
33
33
  "sass-loader": "^13.3.2"
34
34
  },
35
- "gitHead": "76a8d1b854de1eb1d0d914d4c15da28b5306e27f"
35
+ "gitHead": "ea777a3a70e01d2b96981b2cb2e3da7b3af5f59c"
36
36
  }
@@ -1,128 +1,134 @@
1
1
  .fs-data-table {
2
- table {
3
- margin-top: calc(var(--fs-data-table-row-gap) * -1);
4
- border-spacing: 0 var(--fs-data-table-row-gap) !important;
5
- background-color: var(--fs-data-table-background-color) !important;
6
- }
2
+ & > .v-table__wrapper {
3
+ padding: 0 1px 0 0;
7
4
 
8
- .fs-data-table-custom-row > td {
9
- border-bottom: var(--fs-data-table-row-border-size) solid var(--fs-data-table-row-border-color) !important;
10
- border-top: var(--fs-data-table-row-border-size) solid var(--fs-data-table-row-border-color) !important;
11
- background-color: var(--fs-data-table-row-background-color) !important;
12
- color: var(--fs-data-table-row-color);
13
- position: relative;
14
- }
5
+ @extend .fs-hide-x-scrollbar;
6
+ }
15
7
 
16
- .fs-data-table-custom-row > td:first-child{
17
- border-top-left-radius: var(--fs-data-table-row-border-radius) !important;
18
- border-bottom-left-radius: var(--fs-data-table-row-border-radius) !important;
19
- border-left: var(--fs-data-table-row-border-size) solid var(--fs-data-table-row-border-color);
20
- }
8
+ table {
9
+ margin-top: calc(var(--fs-data-table-row-gap) * -1);
10
+ border-spacing: 0 var(--fs-data-table-row-gap) !important;
11
+ background-color: var(--fs-data-table-background-color) !important;
12
+ }
21
13
 
22
- .fs-data-table-custom-row > td:last-child{
23
- border-top-right-radius: var(--fs-data-table-row-border-radius) !important;
24
- border-bottom-right-radius: var(--fs-data-table-row-border-radius) !important;
25
- border-right: var(--fs-data-table-row-border-size) solid var(--fs-data-table-row-border-color);
26
- }
14
+ .fs-data-table-custom-row > td {
15
+ border-bottom: var(--fs-data-table-row-border-size) solid var(--fs-data-table-row-border-color) !important;
16
+ border-top: var(--fs-data-table-row-border-size) solid var(--fs-data-table-row-border-color) !important;
17
+ background-color: var(--fs-data-table-row-background-color) !important;
18
+ color: var(--fs-data-table-row-color);
19
+ position: relative;
20
+ }
27
21
 
28
- th,
29
- :not(.fs-data-table-custom-row) > td {
30
- background-color: var(--fs-data-table-background-color) !important;
31
- position: relative;
32
- }
33
-
34
- th {
35
- box-shadow: none !important;
36
-
37
- &:hover .fs-header-button {
38
- opacity: 1;
39
- }
40
- }
41
-
42
- th:after {
43
- content: "";
44
- position: absolute;
45
- bottom: 8px;
46
- right: 0;
47
- height: calc(100% - 16px);
48
- border-right: 1px solid var(--fs-data-table-border-color);
49
- }
50
-
51
- td {
52
- border-bottom: none !important;
22
+ .fs-data-table-custom-row > td:first-child{
23
+ border-top-left-radius: var(--fs-data-table-row-border-radius) !important;
24
+ border-bottom-left-radius: var(--fs-data-table-row-border-radius) !important;
25
+ border-left: var(--fs-data-table-row-border-size) solid var(--fs-data-table-row-border-color);
26
+ }
27
+
28
+ .fs-data-table-custom-row > td:last-child{
29
+ border-top-right-radius: var(--fs-data-table-row-border-radius) !important;
30
+ border-bottom-right-radius: var(--fs-data-table-row-border-radius) !important;
31
+ border-right: var(--fs-data-table-row-border-size) solid var(--fs-data-table-row-border-color);
32
+ }
33
+
34
+ th,
35
+ :not(.fs-data-table-custom-row) > td {
36
+ background-color: var(--fs-data-table-background-color) !important;
37
+ position: relative;
38
+ }
39
+
40
+ th {
41
+ box-shadow: none !important;
42
+
43
+ &:hover .fs-header-button {
44
+ opacity: 1;
53
45
  }
46
+ }
54
47
 
55
- th:last-of-type:after,
56
- td:last-of-type:after {
57
- border-right: none;
58
- }
48
+ th:after {
49
+ content: "";
50
+ position: absolute;
51
+ bottom: 8px;
52
+ right: 0;
53
+ height: calc(100% - 16px);
54
+ border-right: 1px solid var(--fs-data-table-border-color);
55
+ }
59
56
 
60
- th:before,
61
- td:not(.fs-data-table-group-header):before {
62
- content: "";
63
- position: absolute;
64
- left: 0;
65
- bottom: 0;
66
- width: 100%;
67
- border-bottom: 1px solid var(--fs-data-table-border-color);
68
- }
57
+ td {
58
+ border-bottom: none !important;
59
+ }
69
60
 
70
- th:first-of-type:before,
71
- td:first-of-type:before {
72
- left: 8px;
73
- width: calc(100% - 8px);
74
- }
61
+ th:last-of-type:after,
62
+ td:last-of-type:after {
63
+ border-right: none;
64
+ }
75
65
 
76
- th:last-of-type:before,
77
- td:last-of-type:before {
78
- right: 8px;
79
- width: calc(100% - 8px);
80
- }
66
+ th:before,
67
+ td:not(.fs-data-table-group-header):before {
68
+ content: "";
69
+ position: absolute;
70
+ left: 0;
71
+ bottom: 0;
72
+ width: 100%;
73
+ border-bottom: 1px solid var(--fs-data-table-border-color);
74
+ }
75
+
76
+ th:first-of-type:before,
77
+ td:first-of-type:before {
78
+ left: 8px;
79
+ width: calc(100% - 8px);
80
+ }
81
+
82
+ th:last-of-type:before,
83
+ td:last-of-type:before {
84
+ right: 8px;
85
+ width: calc(100% - 8px);
86
+ }
81
87
  }
82
88
 
83
89
  .fs-data-table-grouped {
84
- & th:first-of-type {
85
- display: none;
86
- }
90
+ & th:first-of-type {
91
+ display: none;
92
+ }
87
93
 
88
- & td:first-of-type {
89
- display: none;
90
- }
94
+ & td:first-of-type {
95
+ display: none;
96
+ }
91
97
 
92
- & .fs-data-table-group-header {
93
- padding: 0 !important;
98
+ & .fs-data-table-group-header {
99
+ padding: 0 !important;
94
100
 
95
- &:after {
96
- content: none !important;
97
- }
101
+ &:after {
102
+ content: none !important;
98
103
  }
104
+ }
99
105
  }
100
106
 
101
107
  .fs-data-table-iterator {
102
- width: 100%;
108
+ width: 100%;
103
109
  }
104
110
 
105
111
  .fs-data-table-footer {
106
- background-color: var(--fs-data-table-background-color);
112
+ background-color: var(--fs-data-table-background-color);
107
113
  }
108
114
 
109
115
  .fs-data-table-rows-per-page {
110
- min-width: 100px;
111
- width: 100px;
116
+ min-width: 100px;
117
+ width: 100px;
112
118
  }
113
119
 
114
120
  .fs-data-table-pagination {
115
- @include web {
116
- max-width: 280px;
117
- }
121
+ @include web {
122
+ max-width: 280px;
123
+ }
118
124
 
119
- @include mobile {
120
- max-width: 274px;
121
- }
125
+ @include mobile {
126
+ max-width: 274px;
127
+ }
122
128
  }
123
129
 
124
130
  .fs-data-table-intersection {
125
- margin-top: -8px;
126
- height: 10px;
127
- width: 100%;
131
+ margin-top: -8px;
132
+ height: 10px;
133
+ width: 100%;
128
134
  }
@@ -5,23 +5,24 @@
5
5
  .v-overlay__content:has(.fs-dialog-mobile) {
6
6
  justify-content: flex-end;
7
7
  align-self: flex-end;
8
- margin-top: 20vh !important;
8
+ margin-top: 40px !important;
9
9
  width: 100vw !important;
10
10
  margin: 0px !important;
11
11
  }
12
12
 
13
13
  .v-overlay__content:has(.fs-dialog) {
14
+ max-height: calc(100vh - 40px) !important;
14
15
  width: var(--fs-dialog-width) !important;
15
- max-height: 90vh !important;
16
16
  min-width: 35vw !important;
17
17
  }
18
18
 
19
19
  .fs-dialog {
20
+ max-height: calc(100vh - 40px) !important;
20
21
  width: var(--fs-dialog-width) !important;
21
- max-height: 90vh !important;
22
22
  min-width: 35vw !important;
23
23
  }
24
24
 
25
25
  .fs-dialog-mobile {
26
+ max-height: calc(100vh - 40px) !important;
26
27
  width: 100vw !important;
27
28
  }
@@ -1,11 +1,11 @@
1
1
  .v-overlay__content:has(.fs-dialog-menu) {
2
2
  width: fit-content !important;
3
- max-height: 60vh !important;
3
+ max-height: calc(100vh - 40px) !important;
4
4
  justify-content: center;
5
5
  align-items: center;
6
6
  }
7
7
 
8
8
  .fs-dialog-menu {
9
+ max-height: calc(100vh - 40px) !important;
9
10
  max-width: calc(100vw - 40px) !important;
10
- max-height: 60vh !important;
11
11
  }
@@ -28,7 +28,15 @@
28
28
  color: var(--fs-slider-thumb-color);
29
29
 
30
30
  &__surface:before {
31
- display: none;
31
+ display: none !important;
32
+ }
33
+
34
+ &__surface:after {
35
+ display: none !important;
36
+ }
37
+
38
+ &__ripple {
39
+ display: none !important;
32
40
  }
33
41
  }
34
42
  }
@@ -13,17 +13,18 @@
13
13
 
14
14
  .fs-tab {
15
15
  padding: 0 16px;
16
- border-bottom: 1px solid var(--fs-group-color) !important;
16
+ border-bottom: 1px solid var(--fs-tab-border-color) !important;
17
17
  color: var(--fs-group-color) !important;
18
+ justify-content: unset !important;
19
+ align-items: center !important;
18
20
  display: flex;
19
- align-items: center;
20
21
 
21
22
  & .fs-tab-label {
22
23
  @extend .text-button;
23
24
  }
24
25
 
25
26
  &:hover {
26
- border-bottom: 1px solid var(--fs-group-hover-color) !important;
27
+ border-bottom: 1px solid var(--fs-tab-hover-border-color) !important;
27
28
  color: var(--fs-group-hover-color) !important;
28
29
  }
29
30
 
@@ -37,7 +38,7 @@
37
38
  }
38
39
 
39
40
  .fs-tab-active {
40
- background-color: var(--fs-group-hover-background-color) !important;
41
+ background-color: var(--fs-tab-active-background-color) !important;
41
42
  color: var(--fs-group-hover-color) !important;
42
43
  border-bottom: 0 !important;
43
44
 
@@ -35,7 +35,7 @@
35
35
  }
36
36
 
37
37
  &:not(.v-checkbox):not(.v-slider):not(.fs-small-input) {
38
- min-width: 200px;
38
+ min-width: 150px;
39
39
  width: 100%;
40
40
  }
41
41
 
@@ -129,7 +129,7 @@ $nthOverlay: 25;
129
129
  max-width: 100%;
130
130
 
131
131
  & > .v-slide-group__container > .v-slide-group__content {
132
- margin: 0 2px 0.2px 0 !important;
132
+ margin: 0 2px 1px 0 !important;
133
133
  }
134
134
  }
135
135
 
@@ -1,45 +1,55 @@
1
- @property --scrollbar-color {
2
- syntax: "<color>";
3
- inherits: true;
4
- initial-value: #00000000;
1
+ @property --scrollbar-x-color {
2
+ syntax: "<color>";
3
+ inherits: true;
4
+ initial-value: #00000000;
5
5
  }
6
6
 
7
- @include clickscreen {
8
- .fs-hide-scrollbar {
9
- transition: --scrollbar-color 0.28s cubic-bezier(0.4, 0, 0.2, 1);
10
-
11
- &::-webkit-scrollbar {
12
- width: 8px;
13
- }
14
- &::-webkit-scrollbar-thumb {
15
- background: var(--scrollbar-color);
16
- border-radius: 4px;
17
- }
18
-
19
- &:hover {
20
- --scrollbar-color: #00000022;
21
- }
7
+ @property --scrollbar-y-color {
8
+ syntax: "<color>";
9
+ inherits: true;
10
+ initial-value: #00000000;
11
+ }
12
+
13
+ @include clickscreen {
14
+ .fs-hide-x-scrollbar {
15
+ overflow-x: scroll;
16
+
17
+ &::-webkit-scrollbar {
18
+ height: 8px;
22
19
  }
23
-
24
- .fs-hide-y-scrollbar {
25
- overflow-y: scroll;
26
-
27
- @extend .fs-hide-scrollbar;
20
+ &::-webkit-scrollbar-thumb {
21
+ background: var(--scrollbar-x-color);
22
+ border-radius: 4px;
28
23
  }
29
-
30
- .fs-hide-x-scrollbar {
31
- overflow-x: scroll;
32
-
33
- @extend .fs-hide-scrollbar;
24
+
25
+ &:hover {
26
+ --scrollbar-x-color: #00000022;
34
27
  }
35
- }
28
+ }
36
29
 
37
- @include touchscreen {
38
- .fs-hide-y-scrollbar {
39
- overflow-y: scroll;
30
+ .fs-hide-y-scrollbar {
31
+ overflow-y: scroll;
32
+
33
+ &::-webkit-scrollbar {
34
+ width: 8px;
40
35
  }
41
-
42
- .fs-hide-x-scrollbar {
43
- overflow-x: scroll;
36
+ &::-webkit-scrollbar-thumb {
37
+ background: var(--scrollbar-y-color);
38
+ border-radius: 4px;
44
39
  }
40
+
41
+ &:hover {
42
+ --scrollbar-y-color: #00000022;
43
+ }
44
+ }
45
+ }
46
+
47
+ @include touchscreen {
48
+ .fs-hide-x-scrollbar {
49
+ overflow-x: scroll;
50
+ }
51
+
52
+ .fs-hide-y-scrollbar {
53
+ overflow-y: scroll;
54
+ }
45
55
  }