@policystudio/policy-studio-ui-vue 1.1.90-beta.80 → 1.1.90-beta.82

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.
@@ -1313,17 +1313,6 @@ video {
1313
1313
  --tw-text-opacity: 1;
1314
1314
  color: rgb(81, 94, 106, var(--tw-text-opacity, 1));
1315
1315
  }
1316
- .psui-el-accordion .accordion-fade-enter-active,
1317
- .psui-el-accordion .accordion-fade-leave-active {
1318
- will-change: height, margin-bottom;
1319
- transition: height 0.4s ease, margin-bottom 0.4s ease-in-out;
1320
- overflow: hidden;
1321
- }
1322
- .psui-el-accordion .accordion-fade-enter-from,
1323
- .psui-el-accordion .accordion-fade-leave-to {
1324
- height: 0 !important;
1325
- margin-bottom: 0 !important;
1326
- }
1327
1316
 
1328
1317
  .psui-el-input {
1329
1318
  /* Layout Default */
@@ -4032,6 +4021,15 @@ video {
4032
4021
  display: flex;
4033
4022
  width: 100%;
4034
4023
  flex-direction: column;
4024
+ }
4025
+
4026
+ .psui-el-dropdown-menu-list > :not([hidden]) ~ :not([hidden]) {
4027
+ --tw-space-y-reverse: 0;
4028
+ margin-top: calc(0.25rem * (1 - var(--tw-space-y-reverse)));
4029
+ margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
4030
+ }
4031
+
4032
+ .psui-el-dropdown-menu-list {
4035
4033
  font-weight: 500;
4036
4034
  }
4037
4035
  .psui-el-dropdown-menu-list .psui-el-dropdown-menu-list-item {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@policystudio/policy-studio-ui-vue",
3
- "version": "1.1.90-beta.80",
3
+ "version": "1.1.90-beta.82",
4
4
  "description": "Policy Studio UI",
5
5
  "author": "Policy Studio Team",
6
6
  "scripts": {
@@ -94,17 +94,5 @@
94
94
  @apply psui-list-none psui-text-gray-60 psui-mb-5;
95
95
  }
96
96
 
97
- .accordion-fade-enter-active,
98
- .accordion-fade-leave-active {
99
- will-change: height, margin-bottom;
100
- transition: height 0.4s ease, margin-bottom 0.4s ease-in-out;
101
- overflow: hidden;
102
- }
103
-
104
- .accordion-fade-enter-from,
105
- .accordion-fade-leave-to {
106
- height: 0 !important;
107
- margin-bottom: 0 !important;
108
- }
109
97
  }
110
98
  }
@@ -1,6 +1,6 @@
1
1
  @layer components {
2
2
  .psui-el-dropdown-menu-list {
3
- @apply psui-w-full psui-flex psui-flex-col psui-font-medium psui-my-4;
3
+ @apply psui-w-full psui-flex psui-flex-col psui-font-medium psui-my-4 psui-space-y-1;
4
4
 
5
5
  .psui-el-dropdown-menu-list-item {
6
6
  @apply psui-flex psui-items-end psui-justify-between psui-mx-0 psui-text-small psui-text-gray-60 psui-cursor-pointer psui-transition-all;
@@ -30,10 +30,12 @@
30
30
  </div>
31
31
  <transition
32
32
  name="accordion-fade"
33
- @enter="start"
34
- @after-enter="end"
35
- @before-leave="start"
36
- @after-leave="end"
33
+ :css="false"
34
+ @before-enter="beforeEnter"
35
+ @enter="enter"
36
+ @after-enter="afterEnter"
37
+ @before-leave="beforeLeave"
38
+ @leave="leave"
37
39
  >
38
40
  <div
39
41
  v-if="isOpen"
@@ -128,13 +130,67 @@ const toggle = () => {
128
130
  localOpened.value = !localOpened.value
129
131
  }
130
132
  }
131
- const start = (el) => {
133
+
134
+ const beforeEnter = (el) => {
135
+ el.style.height = '0'
136
+ el.style.opacity = '0'
137
+ el.style.overflow = 'hidden'
138
+ el.style.paddingTop = '0'
139
+ el.style.paddingBottom = '0'
140
+ el.style.marginTop = '0'
141
+ el.style.marginBottom = '0'
142
+ }
143
+
144
+ const enter = (el, done) => {
145
+ void el.offsetHeight
146
+
147
+ el.style.transition = 'all 0.3s ease-in-out'
132
148
  el.style.height = el.scrollHeight + 'px'
133
- el.style.padding = el.srcollPaddingBottom + 'px'
149
+ el.style.opacity = '1'
150
+
151
+ el.style.removeProperty('padding-top')
152
+ el.style.removeProperty('padding-bottom')
153
+ el.style.removeProperty('margin-top')
154
+ el.style.removeProperty('margin-bottom')
155
+
156
+ el.addEventListener('transitionend', done, { once: true })
157
+ }
158
+
159
+ const afterEnter = (el) => {
160
+ el.style.height = 'auto'
161
+ el.style.overflow = 'visible'
162
+ el.style.transition = ''
134
163
  }
135
- const end = (el) => {
136
- el.style.height = ''
137
- el.style.padding = ''
164
+
165
+ const beforeLeave = (el) => {
166
+ if (!el) return
167
+
168
+ el.style.height = el.scrollHeight + 'px'
169
+ el.style.overflow = 'hidden'
170
+
171
+ const style = window.getComputedStyle(el)
172
+ el.style.paddingTop = style.paddingTop
173
+ el.style.paddingBottom = style.paddingBottom
174
+ el.style.marginTop = style.marginTop
175
+ el.style.marginBottom = style.marginBottom
176
+ }
177
+
178
+ const leave = (el, done) => {
179
+ if (!el) return
180
+
181
+ void el.offsetHeight
182
+ el.style.transition = 'all 0.3s ease-in-out'
183
+
184
+ requestAnimationFrame(() => {
185
+ el.style.height = '0'
186
+ el.style.opacity = '0'
187
+ el.style.paddingTop = '0'
188
+ el.style.paddingBottom = '0'
189
+ el.style.marginTop = '0'
190
+ el.style.marginBottom = '0'
191
+ })
192
+
193
+ el.addEventListener('transitionend', done, { once: true })
138
194
  }
139
195
  </script>
140
196