griffincss-ui 0.26.1 → 0.26.2
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.
- package/dist/griffincss-ui-scoped.css +1 -1
- package/dist/griffincss-ui.css +1 -1
- package/dist/griffincss-ui.js +1 -1
- package/dist/griffinjs-core.js +1 -1
- package/dist/griffinjs-dialog.js +1 -1
- package/dist/griffinjs-dialog.js.map +1 -1
- package/dist/griffinjs.js +1 -1
- package/dist/griffinjs.js.map +1 -1
- package/package.json +2 -2
- package/scss/_choice.scss +45 -6
- package/scss/_pagination.scss +8 -1
- package/src/griffincss-ui.js +2 -2
- package/src/griffinjs/core/griffinjs-core.js +2 -2
- package/src/griffinjs/widgets/dialog.js +15 -5
|
@@ -205,11 +205,14 @@
|
|
|
205
205
|
|
|
206
206
|
// --- Рост окна ----------------------------------------------------------
|
|
207
207
|
|
|
208
|
-
// Пока идёт анимация, наблюдение молчит: промежуточные высоты — её же.
|
|
209
208
|
// Открытие и закрытие (0 ↔ высота) — не рост; мелочь до порога — тоже.
|
|
209
|
+
// Анимация меняет размер самого окна, поэтому на её время окно снято
|
|
210
|
+
// с наблюдения: начатая здесь при живом наблюдении, она давала на window
|
|
211
|
+
// «ResizeObserver loop completed with undelivered notifications».
|
|
212
|
+
// Промежуточные высоты — её же, слушать их незачем. Вернувшись,
|
|
213
|
+
// наблюдение первым сообщает текущую высоту: если за время анимации
|
|
214
|
+
// пришло ещё содержимое, окно дорастёт следующей.
|
|
210
215
|
function onResize() {
|
|
211
|
-
if (growing) return;
|
|
212
|
-
|
|
213
216
|
var next = el.getBoundingClientRect().height;
|
|
214
217
|
var prev = known;
|
|
215
218
|
|
|
@@ -221,8 +224,15 @@
|
|
|
221
224
|
|
|
222
225
|
if (!ms || typeof el.animate !== 'function') return;
|
|
223
226
|
|
|
227
|
+
grow.unobserve(el);
|
|
224
228
|
growing = el.animate([{ blockSize: prev + 'px' }, { blockSize: next + 'px' }], { duration: ms, easing: 'ease' });
|
|
225
|
-
growing.onfinish = growing.oncancel =
|
|
229
|
+
growing.onfinish = growing.oncancel = settle;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// После destroy() наблюдателя нет: отмена приходит позже и не вернёт его.
|
|
233
|
+
function settle() {
|
|
234
|
+
growing = null;
|
|
235
|
+
if (grow) grow.observe(el);
|
|
226
236
|
}
|
|
227
237
|
|
|
228
238
|
// --- Hash ---------------------------------------------------------------
|
|
@@ -300,7 +310,7 @@
|
|
|
300
310
|
var at = stack.indexOf(record);
|
|
301
311
|
if (at !== -1) stack.splice(at, 1);
|
|
302
312
|
|
|
303
|
-
if (grow) grow.disconnect();
|
|
313
|
+
if (grow) { grow.disconnect(); grow = null; }
|
|
304
314
|
if (growing) growing.cancel();
|
|
305
315
|
relock();
|
|
306
316
|
restoreMedia();
|