@policystudio/policy-studio-ui-vue 1.0.24 → 1.0.28

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 (72) hide show
  1. package/dist/css/psui_styles.css +4822 -383
  2. package/package.json +1 -1
  3. package/src/assets/scss/base.scss +39 -2
  4. package/src/assets/scss/components/PsAccordion.scss +6 -2
  5. package/src/assets/scss/components/PsButton.scss +114 -118
  6. package/src/assets/scss/components/PsCardInfos.scss +26 -0
  7. package/src/assets/scss/components/PsChartLegend.scss +25 -0
  8. package/src/assets/scss/components/PsCheckbox.scss +96 -0
  9. package/src/assets/scss/components/PsChips.scss +155 -0
  10. package/src/assets/scss/components/PsClimateZoneBadge.scss +26 -0
  11. package/src/assets/scss/components/PsCostEffectBar.scss +31 -0
  12. package/src/assets/scss/components/PsDataTable.scss +50 -0
  13. package/src/assets/scss/components/PsDialog.scss +80 -0
  14. package/src/assets/scss/components/PsDropdown.scss +44 -0
  15. package/src/assets/scss/components/PsHighlightRippleDot.scss +48 -0
  16. package/src/assets/scss/components/PsInlineSelector.scss +5 -0
  17. package/src/assets/scss/components/PsInputSelect.scss +62 -0
  18. package/src/assets/scss/components/PsInputTextArea.scss +49 -0
  19. package/src/assets/scss/components/PsProgressBar.scss +24 -0
  20. package/src/assets/scss/components/PsRadioButton.scss +78 -0
  21. package/src/assets/scss/components/PsSlider.scss +11 -0
  22. package/src/assets/scss/components/PsSwitch.scss +66 -0
  23. package/src/assets/scss/components/PsTabHeader.scss +105 -0
  24. package/src/assets/scss/components/PsToast.scss +52 -0
  25. package/src/assets/scss/components/PsToggle.scss +23 -0
  26. package/src/assets/scss/components/PsTooltip.scss +118 -0
  27. package/src/components/accordion/PsAccordion.vue +0 -1
  28. package/src/components/accordion/PsAccordionItem.vue +9 -2
  29. package/src/components/badges-and-tags/PsCardInfos.vue +14 -7
  30. package/src/components/badges-and-tags/PsChartLegend.vue +12 -18
  31. package/src/components/badges-and-tags/PsClimateZoneBadge.vue +15 -6
  32. package/src/components/badges-and-tags/PsCostEffectBar.Copy.vue +72 -0
  33. package/src/components/badges-and-tags/PsCostEffectBar.vue +33 -70
  34. package/src/components/badges-and-tags/PsHighlightRippleDot.vue +3 -69
  35. package/src/components/badges-and-tags/PsProgressBar.vue +42 -0
  36. package/src/components/buttons/PsButton.vue +74 -77
  37. package/src/components/chips/PsChips.vue +46 -87
  38. package/src/components/controls/PsCheckbox.vue +58 -134
  39. package/src/components/controls/PsInlineSelector.vue +15 -0
  40. package/src/components/controls/PsRadioButton.vue +33 -88
  41. package/src/components/controls/PsSlider.vue +4 -5
  42. package/src/components/controls/PsSwitch.vue +29 -81
  43. package/src/components/controls/PsToggle.vue +45 -39
  44. package/src/components/datatable/PsDataTable.vue +3 -15
  45. package/src/components/forms/PsDropdown.vue +27 -11
  46. package/src/components/forms/PsInputSelect.vue +80 -0
  47. package/src/components/forms/PsInputTextArea.vue +80 -0
  48. package/src/components/notifications/PsDialog.vue +32 -23
  49. package/src/components/notifications/PsToast.vue +13 -28
  50. package/src/components/tabs/PsTabHeader.vue +53 -41
  51. package/src/components/tooltip/PsDialogTooltip.vue +6 -31
  52. package/src/components/tooltip/PsRichTooltip.vue +37 -44
  53. package/src/components/tooltip/PsTooltip.vue +18 -28
  54. package/src/components/ui/PsIcon.vue +9 -9
  55. package/src/index.js +12 -3
  56. package/src/stories/Button.stories.js +102 -102
  57. package/src/stories/Checkbox.stories.js +34 -37
  58. package/src/stories/Chips.stories.js +43 -54
  59. package/src/stories/ClimateZoneBadge.stories.js +0 -7
  60. package/src/stories/Dialog.stories.js +15 -51
  61. package/src/stories/InlineSelector.stories.js +16 -0
  62. package/src/stories/InputSelect.stories.js +22 -0
  63. package/src/stories/InputTextArea.stories.js +25 -0
  64. package/src/stories/RadioButton.stories.js +32 -29
  65. package/src/stories/Switch.stories.js +33 -0
  66. package/src/stories/TabHeader.stories.js +6 -6
  67. package/src/stories/Toast.stories.js +40 -46
  68. package/src/stories/Tooltip.stories.js +86 -86
  69. package/tailwind.config.js +7 -1
  70. package/src/assets/images/check-checkbox-button.svg +0 -1
  71. package/src/assets/images/radio-checked-button.svg +0 -1
  72. package/src/stories/Swith.stories.js +0 -38
@@ -0,0 +1,52 @@
1
+ @layer components {
2
+ .psui-el-toast {
3
+ @apply psui-flex psui-items-center psui-text-big psui-text-white psui-py-3 psui-px-4 psui-rounded-md psui-font-bold;
4
+
5
+ .psui-el-toast-icon {
6
+ @apply psui-flex psui-mr-4;
7
+ font-size: 24px;
8
+ }
9
+
10
+ .psui-el-toast-message {
11
+ @apply psui-mr-auto
12
+ }
13
+
14
+ .psui-el-toast-actions {
15
+ @apply psui-flex psui-gap-4
16
+ }
17
+
18
+ &.fill-intense.layout{
19
+ &-info {
20
+ @apply psui-bg-blue-60
21
+ }
22
+
23
+ &-success {
24
+ @apply psui-bg-green-20
25
+ }
26
+
27
+ &-warning {
28
+ @apply psui-bg-yellow-20
29
+ }
30
+
31
+ &-error {
32
+ @apply psui-bg-red-20
33
+ }
34
+ }
35
+
36
+ &.fill-soft.layout {
37
+ &-info {
38
+ @apply psui-text-blue-60 psui-bg-blue-20
39
+ }
40
+
41
+ &-success {
42
+ @apply psui-text-green-20 psui-bg-green-10
43
+ }
44
+ &-warning {
45
+ @apply psui-text-yellow-20 psui-bg-yellow-10
46
+ }
47
+ &-error {
48
+ @apply psui-text-red-20 psui-bg-red-10
49
+ }
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,23 @@
1
+ @layer components{
2
+
3
+ .psui-el-toggle {
4
+ @apply psui-flex psui-rounded-sm psui-bg-gray-10 psui-gap-x-px;
5
+ padding: 2px;
6
+
7
+ button {
8
+ @apply transition-default psui-inline-flex psui-rounded-sm psui-text-small psui-bg-gray-10 psui-text-blue-60 psui-px-2;
9
+
10
+ &.status-active {
11
+ @apply psui-bg-blue-60 psui-text-white psui-font-bold psui-shadow-elevation-10;
12
+ }
13
+
14
+ &:not(.status-active) {
15
+ &:hover {
16
+ text-decoration: underline;
17
+ }
18
+ }
19
+ }
20
+
21
+ }
22
+
23
+ }
@@ -0,0 +1,118 @@
1
+ @layer components {
2
+ .psui-el-tooltip {
3
+
4
+ .psui-el-tooltip-wrapper{
5
+ @apply psui-relative;
6
+
7
+ .psui-el-tooltip-dialog {
8
+ @apply psui-fixed psui-hidden psui-opacity-0 psui-transition-opacity psui-duration-500 psui-ease-in-out;
9
+
10
+ .psui-el-tooltip-content {
11
+ @apply psui-flex psui-flex-col psui-rounded-md psui-shadow-md psui-z-20 psui-bg-gray-50 psui-text-white;
12
+ padding: 5px 8px;
13
+
14
+ h2 {
15
+ @apply psui-font-bold;
16
+ }
17
+
18
+ .psui-el-tooltip-content-wrapper{
19
+ @apply psui-text-xsmall psui-font-bold;
20
+ }
21
+
22
+ &.layout {
23
+ &-gray {
24
+ @apply psui-bg-gray-30 psui-text-gray-80 psui-p-4 ;
25
+ font-size: 12px;
26
+ line-height: 120%;
27
+
28
+ .psui-el-tooltip-content-wrapper {
29
+ @apply psui-font-normal psui-mt-1
30
+ }
31
+ }
32
+
33
+ &-blue {
34
+ @apply psui-bg-blue-70 psui-text-white psui-p-4;
35
+ font-size: 12px;
36
+ line-height: 120%;
37
+
38
+ .psui-el-tooltip-content-wrapper {
39
+ @apply psui-font-normal psui-mt-1
40
+ }
41
+ }
42
+
43
+ &-red {
44
+ @apply psui-bg-red-10 psui-text-red-70 psui-p-4;
45
+ font-size: 12px;
46
+ line-height: 120%;
47
+
48
+ .psui-el-tooltip-content-wrapper {
49
+ @apply psui-font-normal psui-mt-1
50
+ }
51
+ }
52
+
53
+ &-white {
54
+ @apply psui-bg-white psui-py-4 psui-px-6 psui-flex psui-gap-3 psui-flex-col;
55
+
56
+ h2 {
57
+ @apply psui-text-gray-80 psui-font-bold;
58
+ font-size: 17px;
59
+ line-height: 120%;
60
+ }
61
+
62
+ .psui-el-tooltip-content-wrapper {
63
+ @apply psui-text-gray-50 psui-text-small psui-font-normal psui-flex psui-flex-col psui-gap-3;
64
+
65
+ button {
66
+ @apply psui-rounded-md psui-bg-blue-20 psui-text-blue-60;
67
+ padding: 7px 16px;
68
+ width: fit-content;
69
+ }
70
+ }
71
+ }
72
+
73
+ &-dark {
74
+ @apply psui-bg-blue-70 psui-py-4 psui-px-6 psui-flex psui-gap-3 psui-flex-col;
75
+
76
+ h2 {
77
+ @apply psui-text-white psui-font-bold;
78
+ font-size: 17px;
79
+ line-height: 120%;
80
+ }
81
+
82
+ .psui-el-tooltip-content-wrapper {
83
+ @apply psui-text-white psui-text-small psui-font-normal psui-flex psui-flex-col psui-gap-3;
84
+
85
+ button {
86
+ @apply psui-rounded-md psui-bg-blue-60 psui-text-white;
87
+ padding: 7px 16px;
88
+ width: fit-content;
89
+ }
90
+ }
91
+ }
92
+
93
+ &-color {
94
+ @apply psui-bg-blue-50 psui-py-4 psui-px-6 psui-flex psui-gap-3 psui-flex-col;
95
+
96
+ h2 {
97
+ @apply psui-text-white psui-font-bold;
98
+ font-size: 17px;
99
+ line-height: 120%;
100
+ }
101
+
102
+ .psui-el-tooltip-content-wrapper {
103
+ @apply psui-text-white psui-text-small psui-font-normal psui-flex psui-flex-col psui-gap-3;
104
+
105
+ button {
106
+ @apply psui-rounded-md psui-bg-blue-60 psui-text-white;
107
+ padding: 7px 16px;
108
+ width: fit-content;
109
+ }
110
+ }
111
+ }
112
+
113
+ }
114
+ }
115
+ }
116
+ }
117
+ }
118
+ }
@@ -22,7 +22,6 @@ export default {
22
22
  layout: {
23
23
  type: String,
24
24
  default: 'medium',
25
- required: true,
26
25
  validator: (value) => layouts.indexOf(value) !== -1,
27
26
  },
28
27
  'iconOpened': {
@@ -37,8 +37,8 @@ export default {
37
37
  computed: {
38
38
  getIcons() {
39
39
  return {
40
- 'iconOpened' : this.iconOpened ?? this.$parent.getIcons.iconOpened,
41
- 'iconClosed' : this.iconClosed ?? this.$parent.getIcons.iconClosed,
40
+ 'iconOpened' : this.iconOpened ?? this.getParentVueComponentByName(this.$parent, 'PsAccordion').getIcons.iconOpened,
41
+ 'iconClosed' : this.iconClosed ?? this.getParentVueComponentByName(this.$parent, 'PsAccordion').getIcons.iconClosed,
42
42
  }
43
43
  },
44
44
  getIcon() {
@@ -56,6 +56,13 @@ export default {
56
56
  this.localOpened = !this.localOpened
57
57
  }
58
58
  },
59
+ getParentVueComponentByName(comp, name) {
60
+ if (comp.$options.name === name) {
61
+ return comp
62
+ } else {
63
+ return this.getParentVueComponentByName(comp.$parent, name)
64
+ }
65
+ }
59
66
  }
60
67
  }
61
68
  </script>
@@ -1,10 +1,13 @@
1
1
  <template>
2
- <div class="psui-border psui-border-gray-20 psui-rounded-md psui-flex psui-flex-col psui-items-center psui-justify-center psui-px-3 psui-py-2 psui-space-y-2">
3
- <h5 class="psui-text-xsmall psui-font-bold psui-text-gray-40">
4
- <span class="psui-text-gray-60">{{ title }} </span>{{ subtitle }}
2
+ <div
3
+ class="psui-el-card-infos"
4
+ @click="onClick()"
5
+ >
6
+ <h5 class="psui-el-card-infos-title">
7
+ <span class="psui-text-gray-60 psui-mr-1">{{ title }}</span>{{ subtitle }}
5
8
  </h5>
6
- <div class="psui-w-full psui-flex psui-justify-center psui-items-center psui-space-x-2 psui-text-p">
7
- <span class="psui-text-blue-50 material-icons-round">{{ icon }}</span>
9
+ <div class="psui-el-card-infos-content">
10
+ <span class="psui-el-card-infos-icon material-icons-round">{{ icon }}</span>
8
11
  <h5 class="psui-text-gray-80">{{ total }}</h5>
9
12
  </div>
10
13
  </div>
@@ -30,9 +33,13 @@ export default {
30
33
  type: String,
31
34
  default: '',
32
35
  },
36
+ },
37
+ methods: {
38
+ onClick() {
39
+ this.$emit('click')
40
+ }
33
41
  }
34
42
  }
35
43
  </script>
36
44
 
37
- <style scoped>
38
- </style>
45
+ <style> /* Please, use the file src/assets/scss/components/PsCardInfos.scss */</style>
@@ -1,12 +1,12 @@
1
1
  <template>
2
- <div class="psui-flex psui-p-2 psui-rounded">
2
+ <div class="psui-el-chart-legend">
3
3
  <div class="psui-flex psui-flex-shrink-0">
4
- <div :class="dotClass" class="dot psui-rounded-full" :style="dotColor"></div>
4
+ <div class="psui-el-chart-legend-dot" :style="dotColor"></div>
5
5
  </div>
6
6
  <div class="psui-flex-grow-1">
7
- <div class="psui-text-xsmall psui-text-gray-50 psui-font-bold psui-mb-1">{{ text }}</div>
8
- <span v-if="this.total" class="psui-text-p psui-text-gray-80">{{ total }}</span>
9
- <span class="psui-text-gray-50" v-if="percentage"><span class="psui-text-gray-30" v-if="total && percentage"> | </span>{{ percentage }}%</span>
7
+ <div class="psui-el-chart-legend-text">{{ text }}</div>
8
+ <span v-if="this.total" class="psui-el-chart-legend-total">{{ total }}</span>
9
+ <span class="psui-el-chart-legend-percentage" v-if="percentage"><span class="psui-text-gray-30" v-if="total && percentage"> | </span>{{ percentage }}%</span>
10
10
  </div>
11
11
  </div>
12
12
  </template>
@@ -15,29 +15,23 @@
15
15
  export default {
16
16
  props: {
17
17
  text: {
18
- type: String,
18
+ type: [String, Number],
19
19
  default: 'Climate Zone 10',
20
20
  },
21
21
  total: {
22
- type: Number,
22
+ type: String,
23
23
  default: null,
24
24
  },
25
25
  percentage: {
26
- type: Boolean,
27
- default: false,
26
+ type: String,
27
+ default: null,
28
28
  },
29
29
  dotColor: {
30
- type: String,
31
- default: ''
30
+ type: Object,
31
+ default: null
32
32
  },
33
33
  },
34
34
  }
35
35
  </script>
36
36
 
37
- <style scoped>
38
- .dot {
39
- width: 14px; height: 14px;
40
- background-color: #43cec2;
41
- margin-right: 6px;
42
- }
43
- </style>
37
+ <style> /* Please, use the file src/assets/scss/components/PsChartLegend.scss */</style>
@@ -1,10 +1,10 @@
1
1
  <template>
2
- <button
3
- class="psui-flex psui-p-3 psui-bg-gray-10 psui-text-gray-50 hover:psui-text-blue-60 hover:psui-bg-blue-20 psui-transition-all psui-duration-300 psui-ease-out psui-shadow-lg psui-rounded"
4
- >
5
- <i v-if="icon" class="material-icons psui-text-base"> {{ icon }} </i>
6
- <p class="psui-text-sm">10</p>
7
- </button>
2
+ <div class="psui-el-climate-zone-badge">
3
+ <i v-if="icon"> {{ icon }} </i>
4
+ <span>
5
+ {{ content }}
6
+ </span>
7
+ </div>
8
8
  </template>
9
9
 
10
10
  <script>
@@ -12,7 +12,16 @@ export default {
12
12
  props: {
13
13
  icon: {
14
14
  type: String,
15
+ default: 'area_chart',
16
+ },
17
+ content: {
18
+ type: Number,
19
+ default: 10,
15
20
  },
16
21
  },
17
22
  }
18
23
  </script>
24
+
25
+ <style>
26
+ /* Please, use the file src/assets/scss/components/PsClimateZoneBadge.scss */
27
+ </style>
@@ -0,0 +1,72 @@
1
+ <template>
2
+ <div class="psui-el-cost-effect-bar">
3
+
4
+ <div
5
+ :class="{
6
+ 'psui-bg-blue-20': value >= breakEven,
7
+ 'psui-bg-red-10': value < breakEven,
8
+ }"
9
+ >
10
+
11
+ <span :style="breakEvenPosition"> </span>
12
+
13
+ <div class="psui-overflow-hidden">
14
+
15
+ <input
16
+ type="number"
17
+ :style="{ width: `${value}px` }"
18
+ :class="{
19
+ 'psui-bg-blue-60': value >= breakEven,
20
+ 'psui-bg-red-20': value < breakEven,
21
+ }"
22
+ />
23
+ </div>
24
+
25
+ </div>
26
+ </div>
27
+ </template>
28
+
29
+ <script>
30
+ export default {
31
+ name: 'PsCostEffectBar',
32
+
33
+ props: {
34
+ value: {
35
+ type: Number,
36
+ required: true,
37
+ default: 0,
38
+ },
39
+ breakEven: {
40
+ type: Number,
41
+ required: true,
42
+ default: 1,
43
+ },
44
+ },
45
+ data() {
46
+ return {
47
+ errors: [],
48
+ }
49
+ },
50
+
51
+ computed: {
52
+ valueBar() {
53
+ if (this.value > 100) return 100
54
+ else if (this.value < 0) return 0
55
+ else return this.value
56
+ },
57
+
58
+ breakEvenPosition() {
59
+ return `left: ${this.breakEven}px`
60
+ },
61
+
62
+ getIsBreakEven() {
63
+ if (this.breakEven < 0) return 0
64
+ else if (this.breakEven > 100) return 100
65
+ else return this.breakEven
66
+ },
67
+ },
68
+ }
69
+ </script>
70
+
71
+ <style> /* Please, use the file src/assets/scss/components/PsCostEffectBar.scss */</style>
72
+
@@ -1,33 +1,26 @@
1
1
  <template>
2
- <div>
3
- <div class="container">
4
- <div
5
- class="loading-bar"
6
- :class="{
7
- 'psui-bg-blue-20': value >= breakEven,
8
- 'psui-bg-red-10': value < breakEven,
9
- }"
10
- >
11
- <span class="breakEven" :style="breakEvenPosition"> </span>
2
+ <div class="psui-el-cost-effect-bar">
3
+ <div>
4
+ <span :style="breakEvenPosition"> </span>
12
5
 
13
- <input
14
- type="number"
15
- min="0"
16
- max="100"
17
- class="percentage"
18
- :style="{ width: `${value}px` }"
19
- :class="{
20
- 'psui-bg-blue-60': value >= breakEven,
21
- 'psui-bg-red-20': value < breakEven,
22
- }"
23
- />
24
- </div>
6
+ <PsProgressBar
7
+ :value="value"
8
+ :percentageColor="percentageColor"
9
+ :bgColor="bgColor"
10
+ >
11
+ </PsProgressBar>
25
12
  </div>
26
13
  </div>
27
14
  </template>
28
15
 
29
16
  <script>
17
+ import PsProgressBar from './PsProgressBar.vue'
30
18
  export default {
19
+ name: 'PsCostEffectBar',
20
+ components: {
21
+ PsProgressBar,
22
+ },
23
+
31
24
  props: {
32
25
  value: {
33
26
  type: Number,
@@ -37,7 +30,7 @@ export default {
37
30
  breakEven: {
38
31
  type: Number,
39
32
  required: true,
40
- default: 1,
33
+ default: 0,
41
34
  },
42
35
  },
43
36
  data() {
@@ -54,61 +47,31 @@ export default {
54
47
  },
55
48
 
56
49
  breakEvenPosition() {
57
- return `left: ${this.breakEven}px`
50
+ return `left: ${this.breakEven >= 98 ? 98 : this.breakEven}px`
58
51
  },
52
+
59
53
  getIsBreakEven() {
60
54
  if (this.breakEven < 0) return 0
61
55
  else if (this.breakEven > 100) return 100
62
56
  else return this.breakEven
63
- // else return true;
64
- // return this.value > this.breakEven ? true : false;
65
57
  },
66
- },
67
- }
68
- </script>
69
58
 
70
- <style scoped>
71
- .container {
72
- overflow: visible;
73
- }
74
-
75
- .loading-bar {
76
- position: relative;
77
- width: 100px;
78
- height: 8px;
79
- border-radius: 15px;
80
- }
81
-
82
- .loading-bar .percentage {
83
- position: absolute;
84
- display: block;
85
- max-width: 100px;
86
- height: 100%;
87
- border-radius: 15px;
88
- overflow: visible;
89
- background-size: 30px 30px;
90
- animation: animate-stripes 3s linear infinite;
91
- }
59
+ percentageColor() {
60
+ return this.value >= this.breakEven
61
+ ? 'psui-bg-blue-60'
62
+ : 'psui-bg-red-20'
63
+ },
92
64
 
93
- .breakEven {
94
- position: absolute;
95
- background-color: #d6dde5;
96
- width: 2px;
97
- height: 14px;
98
- /* max-width: 100px; */
99
- border-radius: 2px;
100
- top: -3px;
101
- z-index: 1;
102
- /* left: 2px; */
103
- /* right: -2px; */
65
+ bgColor() {
66
+ // console.log(this.value >= this.breakEven ? 'psui-bg-blue-20' : 'psui-bg-red-10')
67
+ return this.value >= this.breakEven
68
+ ? 'psui-bg-blue-20'
69
+ : 'psui-bg-red-10'
70
+ },
71
+ },
104
72
  }
73
+ </script>
105
74
 
106
- @keyframes animate-stripes {
107
- 0% {
108
- background-position: 0 0;
109
- }
110
- 100% {
111
- background-position: 60px 0;
112
- }
113
- }
75
+ <style>
76
+ /* Please, use the file src/assets/scss/components/PsCostEffectBar.scss */
114
77
  </style>
@@ -1,6 +1,6 @@
1
1
  <template>
2
- <div class="example">
3
- <div class="dot"></div>
2
+ <div class="psui-el-highlight-ripple-icon">
3
+ <div class="psui-el-icon"></div>
4
4
  </div>
5
5
  </template>
6
6
 
@@ -8,71 +8,5 @@
8
8
  export default {}
9
9
  </script>
10
10
 
11
- <style scoped>
12
- .example {
13
- position: static;
14
- /* margin: 0px 32px; */
15
- /* width: 275px;
16
- height: 229px; */
17
- /* left: 0px;
18
- top: 0px; */
19
- /* border: 1.5px dashed #9b51e0; */
20
- /* background: #f3f6f9; */
21
- box-sizing: border-box;
22
- }
23
- .dot {
24
- background: #5db883;
25
- /* border: solid 1px #2bb24c; */
26
- border-radius: 50%;
27
- /* box-shadow: 0px 0 2px #2bb24c; */
28
- width: 8px;
29
- height: 8px;
30
- /* left: 6px;
31
- top: 6px; */
32
- margin: 100px auto;
33
- position: relative;
34
- }
11
+ <style> /* Please, use the file src/assets/scss/components/PsHighlightRippleDot.scss */</style>
35
12
 
36
- .dot::before,
37
- .dot::after {
38
- background: #def8e8;
39
- border: solid 0px #2bb24c;
40
- border-radius: 50%;
41
- content: '';
42
- width: 36px;
43
- height: 36px;
44
- left: -8px;
45
- top: -8px;
46
- position: absolute;
47
- transform-origin: center center;
48
- transform: scale(1) translate(-1px, -1px);
49
- }
50
- .dot::before {
51
- animation: ripple 1s infinite;
52
- }
53
- .dot::after {
54
- animation: ripple 1s infinite;
55
- /* animation-delay: 0.4s; */
56
- }
57
-
58
- @keyframes ripple {
59
- 0% {
60
- /* transform: scale(1) translate(-1px, -1px);
61
- opacity: 0.75; */
62
- left: 5px;
63
- top: 5px;
64
- opacity: 0.95;
65
- width: 0;
66
- height: 0;
67
- }
68
- 100% {
69
- /* transform: scale(2) translate(-1px, -1px);
70
- opacity: 0; */
71
- left: -13px;
72
- top: -13px;
73
- opacity: 0;
74
- width: 36px;
75
- height: 36px;
76
- }
77
- }
78
- </style>
@@ -0,0 +1,42 @@
1
+ <template>
2
+ <div
3
+ class="psui-el-simple-progress-bar"
4
+ :class="bgColor"
5
+ >
6
+ <div
7
+ class="psui-el-simple-progress-bar-percentage"
8
+ :style="{ width: `${value}px` }"
9
+ :class="percentageColor"
10
+ ></div>
11
+ </div>
12
+ </template>
13
+
14
+ <script>
15
+ export default {
16
+ props: {
17
+ value: {
18
+ type: Number,
19
+ required: true,
20
+ default: 0,
21
+ validator: (value) => {
22
+ return value >= 0 && value <= 100
23
+ },
24
+ },
25
+ percentageColor: {
26
+ type: String,
27
+ default: 'psui-bg-blue-60'
28
+ // required: true,
29
+
30
+ },
31
+ bgColor: {
32
+ type: String,
33
+ default: 'psui-bg-blue-20'
34
+ // required: true,
35
+ },
36
+
37
+ },
38
+ }
39
+ </script>
40
+
41
+ <style> /* Please, use the file src/assets/scss/components/PsProgressBar.scss */ </style>
42
+