@policystudio/policy-studio-ui-vue 1.1.7 → 1.1.8

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.
@@ -2099,10 +2099,6 @@ video {
2099
2099
  position: relative;
2100
2100
  }
2101
2101
 
2102
- .psui-el-table-results.layout-comparison tr th:last-child, .psui-el-table-results.layout-comparison tr td:last-child {
2103
- padding-right: 0.5rem;
2104
- }
2105
-
2106
2102
  .psui-el-table-results.layout-comparison thead {
2107
2103
  background-color: transparent;
2108
2104
  align-items: flex-start;
@@ -2152,8 +2148,8 @@ video {
2152
2148
  --bg-opacity: 1;
2153
2149
  background-color: #D6DDE5;
2154
2150
  background-color: rgba(214, 221, 229, var(--bg-opacity));
2155
- content: '';
2156
2151
  width: 1px;
2152
+ content: '';
2157
2153
  right: -1px;
2158
2154
  }
2159
2155
 
@@ -2169,6 +2165,8 @@ video {
2169
2165
  }
2170
2166
 
2171
2167
  .psui-el-table-results.layout-comparison thead tr:first-of-type th:first-child {
2168
+ padding-left: 0;
2169
+ padding-top: 1rem;
2172
2170
  min-width: 240px;
2173
2171
  }
2174
2172
 
@@ -2180,13 +2178,15 @@ video {
2180
2178
  }
2181
2179
 
2182
2180
  .psui-el-table-results.layout-comparison thead tr:first-of-type th:not(:first-child):before {
2183
- content: '';
2184
2181
  display: inline-block;
2182
+ position: absolute;
2183
+ top: 0;
2184
+ left: 0;
2185
+ width: 100%;
2186
+ content: '';
2185
2187
  background: linear-gradient(180deg, #FFFFFF 0%, #E6ECF2 100%);
2186
2188
  border-radius: 12px 12px 0px 0px;
2187
- position: absolute;
2188
- top: 0; left: 0;
2189
- width: 100%; height: 88px;
2189
+ height: 5.5rem;
2190
2190
  }
2191
2191
 
2192
2192
  .psui-el-table-results.layout-comparison thead tr:first-of-type p {
@@ -2208,20 +2208,59 @@ video {
2208
2208
  box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.03), 0px 1px 2px rgba(0, 0, 0, 0.1);
2209
2209
  }
2210
2210
 
2211
+ .psui-el-table-results.layout-comparison tbody tr td .title {
2212
+ font-size: 14px;
2213
+ line-height: 130%;
2214
+ --text-opacity: 1;
2215
+ color: #28323B;
2216
+ color: rgba(40, 50, 59, var(--text-opacity));
2217
+ font-weight: 700;
2218
+ overflow: hidden;
2219
+ text-overflow: ellipsis;
2220
+ white-space: nowrap;
2221
+ line-height: 1;
2222
+ margin-left: 0.25rem;
2223
+ width: 144px;
2224
+ }
2225
+
2226
+ .psui-el-table-results.layout-comparison tbody tr td .badge {
2227
+ display: flex;
2228
+ align-items: center;
2229
+ justify-content: center;
2230
+ border-radius: 0.25rem;
2231
+ height: 1.5rem;
2232
+ width: 28px;
2233
+ background-color: #D3EFDE;
2234
+ }
2235
+
2236
+ .psui-el-table-results.layout-comparison tbody tr td:before {
2237
+ display: inline-block;
2238
+ position: absolute;
2239
+ width: 100%;
2240
+ height: 0.5rem;
2241
+ background-color: #ffffff ;
2242
+ left: 0;
2243
+ content: '';
2244
+ top: -8px;
2245
+ }
2246
+
2211
2247
  .psui-el-table-results.layout-comparison tbody tr td:after {
2212
2248
  top: 0;
2213
2249
  position: absolute;
2214
2250
  height: 100%;
2215
2251
  display: inline-block;
2252
+ --bg-opacity: 1;
2253
+ background-color: #E0EFF6;
2254
+ background-color: rgba(224, 239, 246, var(--bg-opacity));
2216
2255
  content: '';
2217
2256
  width: 2px;
2218
2257
  right: -2px;
2219
- background: rgb(214,221,229);
2220
2258
  background: linear-gradient(90deg, rgba(214,221,229,1) 50%, rgba(255,255,255,1) 50%);
2221
2259
  }
2222
2260
 
2223
2261
  .psui-el-table-results.layout-comparison tbody tr td:first-child {
2224
2262
  padding-left: 0.75rem;
2263
+ padding-right: 0.75rem;
2225
2264
  border-top-left-radius: 0.375rem;
2226
2265
  border-bottom-left-radius: 0.375rem;
2227
2266
  }
@@ -2233,9 +2272,17 @@ video {
2233
2272
  background-image: none;
2234
2273
  }
2235
2274
 
2236
- .psui-el-table-results.layout-comparison tbody tr td .psui-truncate {
2237
- width: 144px;
2238
- }
2275
+ .psui-el-table-results.layout-comparison tbody tr.is-first td:before {
2276
+ display: none;
2277
+ }
2278
+
2279
+ .psui-el-table-results.layout-comparison tbody tr.is-first.opened td:first-child {
2280
+ border-bottom-left-radius: 0;
2281
+ }
2282
+
2283
+ .psui-el-table-results.layout-comparison tbody tr:not(.is-first) td:first-child {
2284
+ border-top-left-radius: 0;
2285
+ }
2239
2286
 
2240
2287
  .psui-el-checkbox {
2241
2288
  position: relative;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@policystudio/policy-studio-ui-vue",
3
- "version": "1.1.7",
3
+ "version": "1.1.8",
4
4
  "description": "Policy Studio UI",
5
5
  "main": "src/index.js",
6
6
  "author": "Policy Studio Team",
@@ -124,16 +124,12 @@
124
124
  }
125
125
 
126
126
  &.layout-comparison {
127
- border-collapse: separate;
127
+ @apply psui-border-separate;
128
128
  border-spacing: 2px 8px;
129
129
 
130
130
  tr {
131
131
  th, td {
132
132
  @apply psui-relative;
133
-
134
- &:last-child {
135
- @apply psui-pr-2;
136
- }
137
133
  }
138
134
  }
139
135
 
@@ -165,9 +161,8 @@
165
161
  th {
166
162
 
167
163
  &:after {
168
- @apply psui-absolute psui-top-0 psui-h-full psui-inline-block psui-bg-gray-30;
164
+ @apply psui-absolute psui-top-0 psui-h-full psui-inline-block psui-bg-gray-30 psui-w-px;
169
165
  content: '';
170
- width: 1px;
171
166
  right: -1px;
172
167
  }
173
168
  }
@@ -180,7 +175,9 @@
180
175
  padding-bottom: 11px;
181
176
 
182
177
  &:first-child {
178
+ @apply psui-pl-0 psui-pt-4;
183
179
  min-width: 240px;
180
+
184
181
  .title {
185
182
  @apply psui-text-gray-80 psui-font-bold;
186
183
  }
@@ -188,13 +185,11 @@
188
185
 
189
186
  &:not(:first-child) {
190
187
  &:before {
188
+ @apply psui-inline-block psui-absolute psui-top-0 psui-left-0 psui-w-full;
191
189
  content: '';
192
- display: inline-block;
193
190
  background: linear-gradient(180deg, #FFFFFF 0%, #E6ECF2 100%);
194
191
  border-radius: 12px 12px 0px 0px;
195
- position: absolute;
196
- top: 0; left: 0;
197
- width: 100%; height: 88px;
192
+ height: 5.5rem;
198
193
  }
199
194
  }
200
195
  }
@@ -214,29 +209,61 @@
214
209
  tbody {
215
210
  tr {
216
211
  td {
217
- @apply psui-bg-white psui-relative;
218
- box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.03), 0px 1px 2px rgba(0, 0, 0, 0.1);
212
+ @apply psui-bg-white psui-relative psui-shadow-elevation-5;
213
+
214
+ .title {
215
+ @apply psui-text-small psui-text-gray-80 psui-font-bold psui-truncate psui-leading-none psui-ml-1;
216
+ width: 144px;
217
+ }
218
+
219
+ .badge {
220
+ @apply psui-flex psui-items-center psui-justify-center psui-rounded psui-h-6;
221
+ width: 28px;
222
+ background-color: #D3EFDE;
223
+ }
224
+
225
+ &:before {
226
+ @apply psui-inline-block psui-absolute psui-w-full psui-h-2 psui-bg-white psui-left-0;
227
+ content: '';
228
+ top: -8px;
229
+ }
219
230
 
220
231
  &:after {
221
- @apply psui-top-0 psui-absolute psui-h-full psui-inline-block;
232
+ @apply psui-top-0 psui-absolute psui-h-full psui-inline-block psui-bg-blue-20;
222
233
  content: '';
223
234
  width: 2px;
224
235
  right: -2px;
225
- background: rgb(214,221,229);
226
236
  background: linear-gradient(90deg, rgba(214,221,229,1) 50%, rgba(255,255,255,1) 50%);
227
237
  }
228
238
 
229
239
  &:first-child {
230
- @apply psui-pl-3 psui-rounded-tl-md psui-rounded-bl-md;
240
+ @apply psui-px-3 psui-rounded-tl-md psui-rounded-bl-md;
231
241
 
232
242
  &:after {
233
- @apply psui-bg-gray-20;
234
- background-image: none;
243
+ @apply psui-bg-gray-20 psui-bg-none;
235
244
  }
236
245
  }
246
+ }
237
247
 
238
- .psui-truncate {
239
- width: 144px;
248
+ &.is-first {
249
+ td {
250
+ &:before {
251
+ @apply psui-hidden;
252
+ }
253
+ }
254
+
255
+ &.opened {
256
+ td:first-child {
257
+ @apply psui-rounded-bl-none;
258
+ }
259
+ }
260
+ }
261
+
262
+ &:not(.is-first) {
263
+ td {
264
+ &:first-child {
265
+ @apply psui-rounded-tl-none;
266
+ }
240
267
  }
241
268
  }
242
269
  }
@@ -21,7 +21,7 @@ export default {
21
21
  default: true
22
22
  },
23
23
  total: {
24
- type: String,
24
+ type: [String, Number],
25
25
  default: '5,0',
26
26
  },
27
27
  fillWidth: {
@@ -3,120 +3,7 @@
3
3
  class="psui-el-table-results-wrapper"
4
4
  :style="{ maxHeight: tableMaxHeight }"
5
5
  >
6
- <table
7
- v-if="layout == 'comparison'"
8
- ref="table"
9
- class="psui-el-table-results"
10
- :class="`layout-${layout}`"
11
- >
12
- <slot name="header"></slot>
13
-
14
- <!-- <slot name="body"></slot> -->
15
-
16
- <tbody class="psui-el-table-results-body">
17
- <tr
18
- v-for="(item, index) in getRows"
19
- :key="index"
20
- :class="[
21
- {
22
- 'is-disabled' : item.is_disabled,
23
- 'is-first' : item.deep == 0,
24
- 'psui-hidden' : checkRowIsCollapsed(item),
25
- 'is-last' : item.is_last
26
- },
27
- `type-${item.type}`
28
- ]"
29
- @mouseenter="onRowHover(index)"
30
- @mouseleave="onRowHover(false)"
31
- >
32
- <td>
33
- <div class="psui-flex psui-items-center">
34
- <PsIcon
35
- icon="expand_more"
36
- size="24"
37
- class="actions-button psui-transition psui-transform psui-mr-1"
38
- :icon-classes="item.is_disabled ? 'psui-text-gray-40' : getIconClasses(item)"
39
- :style="{ display: 'flex' }"
40
- :class="[checkRowIsVisible(item) ? 'psui-rotate-0' : 'psui--rotate-90', { 'psui-pointer-events-none' : item.is_disabled }]"
41
- @click.native="onCollapse(item)"
42
- />
43
- <span class="psui-text-small psui-text-gray-80 psui-font-bold psui-truncate psui-leading-none psui-pr-3">{{ item.title }}</span>
44
- <PsIcon
45
- icon="trending_down"
46
- size="24"
47
- class="actions-button psui-transition psui-transform psui-mr-1"
48
- :icon-classes="item.is_disabled ? 'psui-text-gray-40' : getIconClasses(item)"
49
- :style="{ display: 'flex' }"
50
- :class="[checkRowIsVisible(item) ? 'psui-rotate-0' : 'psui--rotate-90', { 'psui-pointer-events-none' : item.is_disabled }]"
51
- @click.native="onCollapse(item)"
52
- />
53
- </div>
54
- </td>
55
- <template
56
- v-for="(columnGroup, indexColumn) of columnGroups"
57
- >
58
- <td
59
- v-for="column of columnGroup.columns"
60
- :key="indexColumn + '-' + columnGroup.key + '-' + column.key"
61
- >
62
- <div class="psui-py-4 psui-px-6">
63
- <PsTagScope
64
- v-if="column.isScope"
65
- :included="item[column.key]"
66
- />
67
- <PsBarChart
68
- v-else-if="column.isChart"
69
- :show-number="item[column.key]"
70
- :total="item[column.key]"
71
- :fill-width="Math.floor(Math.random() * 100)"
72
- />
73
- <p v-else>
74
- {{ item[column.key] }}
75
- </p>
76
- <!-- <PsIcon
77
- v-if="column.hasProjections && !item.is_disabled"
78
- icon="bar_chart"
79
- size="16"
80
- class="psui-cursor-pointer"
81
- icon-classes="psui-text-blue-60 psui-opacity-0 psui-leading-none psui-transition"
82
- :style="{ display: 'flex' }"
83
- @click.native="$emit('policy-selected', { item, column })"
84
- /> -->
85
-
86
- <!-- <p v-if="formatFunction && !item.is_disabled">
87
- {{ formatFunction(column.key, item.data[column.key], item.data) }}
88
- </p> -->
89
-
90
- <!-- <p
91
- v-else-if="item.is_disabled"
92
- class="psui-text-gray-50"
93
- >
94
- --
95
- </p> -->
96
-
97
-
98
- <!-- <PsProgressBar
99
- v-if="column.isChart && formatFunction"
100
- :value="formatFunction(column.key, item.data[column.key], item.data) == '--' ? 0 : item.data[column.key]"
101
- :force-break-even="item.is_disabled || formatFunction(column.key, item.data[column.key], item.data) === '--' ? true : false"
102
- />
103
-
104
- <PsProgressBar
105
- v-else-if="column.isChart"
106
- :value="item.data[column.key] == '--' ? 0 : item.data[column.key]"
107
- :force-break-even="item.is_disabled || item.data[column.key] === '--' ? true : false"
108
- /> -->
109
- </div>
110
- </td>
111
- </template>
112
- </tr>
113
- </tbody>
114
-
115
- <!-- <slot name="footer"></slot> -->
116
- </table>
117
-
118
6
  <table
119
- v-else
120
7
  ref="table"
121
8
  class="psui-el-table-results"
122
9
  :class="`layout-${layout}`"
@@ -130,6 +17,7 @@
130
17
  v-for="(item, index) in getRows"
131
18
  :key="index"
132
19
  :class="[
20
+ getStatusClass(item),
133
21
  {
134
22
  'is-disabled' : item.is_disabled,
135
23
  'is-first' : item.deep == 0,
@@ -142,18 +30,16 @@
142
30
  @mouseleave="onRowHover(false)"
143
31
  >
144
32
  <td>
145
- <div
146
- class="psui-flex psui-justify-between"
147
- >
33
+ <div class="psui-flex psui-justify-between">
148
34
  <div
149
- class="actions psui-space-x-3"
35
+ class="psui-flex psui-items-center actions psui-space-x-3"
150
36
  :style="{ paddingLeft: `${item.deep * 16}px` }"
151
37
  >
152
38
  <PsIcon
153
39
  v-if="!item.last_deep || item.type === 'total'"
154
40
  icon="expand_more"
155
41
  size="24"
156
- class="actions-button psui-transition psui-transform"
42
+ class="actions-button psui-transition psui-transform psui-cursor-pointer"
157
43
  :icon-classes="item.is_disabled ? 'psui-text-gray-40' : getIconClasses(item)"
158
44
  :style="{ display: 'flex' }"
159
45
  :class="[checkRowIsVisible(item) ? 'psui-rotate-0' : 'psui--rotate-90', { 'psui-pointer-events-none' : item.is_disabled }]"
@@ -194,7 +80,7 @@
194
80
  ]"
195
81
  >
196
82
  {{ item.title }}
197
-
83
+
198
84
  <PsIcon
199
85
  v-if="item.has_helper"
200
86
  icon="info"
@@ -204,6 +90,14 @@
204
90
  @click.native="$eventBus.$emit('openDescriptionModal', { type: 'helper', slug: `table-results-${item.helper_slug}` })"
205
91
  />
206
92
  </p>
93
+
94
+ <PsIcon
95
+ v-if="item.has_badge"
96
+ :icon="item.has_badge"
97
+ size="20"
98
+ class="badge psui-text-green-70 psui-leading-none psui-ml-0"
99
+ :style="{ display: 'flex' }"
100
+ />
207
101
  </div>
208
102
  <div
209
103
  class="actions psui-space-x-3 flex justify-between"
@@ -266,14 +160,15 @@
266
160
  </div>
267
161
  </td>
268
162
 
269
- <template
270
- v-for="(columnGroup, indexColumn) of columnGroups"
271
- >
163
+ <template v-for="(columnGroup, indexColumn) of columnGroups">
272
164
  <td
273
165
  v-for="column of columnGroup.columns"
274
166
  :key="indexColumn + '-' + columnGroup.key + '-' + column.key"
275
167
  >
276
- <div class="psui-space-x-2 psui-show-childrens-on-hover">
168
+ <div
169
+ v-if="layout != 'comparison'"
170
+ class="psui-space-x-2 psui-show-childrens-on-hover"
171
+ >
277
172
  <PsIcon
278
173
  v-if="column.hasProjections && !item.is_disabled"
279
174
  icon="bar_chart"
@@ -310,6 +205,25 @@
310
205
  :force-break-even="item.is_disabled || item.data[column.key] === '--' ? true : false"
311
206
  />
312
207
  </div>
208
+ <div v-else>
209
+ <div class="psui-py-4 psui-px-6">
210
+ <PsTagScope
211
+ v-if="item.data[column.key] != 0 && column.renderType && column.renderType == 'tag_scope'"
212
+ :included="item.data[column.key] != 0 ? true : false"
213
+ />
214
+
215
+ <PsBarChart
216
+ v-else-if="item.data[column.key] != 0 && column.renderType && column.renderType == 'bar_chart'"
217
+ :show-number="item.data[column.key] != 0 ? true : false"
218
+ :total="item.data[column.key]"
219
+ :fill-width="Math.floor(Math.random() * 100)"
220
+ />
221
+
222
+ <p v-else-if="item.data[column.key] != 0">
223
+ {{ item.data[column.key] }}
224
+ </p>
225
+ </div>
226
+ </div>
313
227
  </td>
314
228
  </template>
315
229
  </tr>
@@ -556,6 +470,9 @@ export default {
556
470
  if(item?.actions?.length === 1) item.actions[0].callback(item)
557
471
  else action?.callback(item)
558
472
  },
473
+ getStatusClass(item) {
474
+ return this.checkRowIsVisible(item) ? 'opened' : 'closed'
475
+ },
559
476
  },
560
477
  }
561
478
  </script>