pome-ui 2.0.0-preview52 → 2.0.0-preview53

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pome-ui",
3
- "version": "2.0.0-preview52",
3
+ "version": "2.0.0-preview53",
4
4
  "description": "Front-end MVC library",
5
5
  "main": "pome-ui.js",
6
6
  "bin": {
package/pome-ui.dev.js CHANGED
@@ -19598,27 +19598,59 @@ function build(options, exports) {
19598
19598
  this.createdPromise = ret;
19599
19599
  if (options.skeleton) {
19600
19600
  var self = this;
19601
- // For skeleton + delayOpen: start the delayOpen animation
19602
- // IMMEDIATELY so the skeleton fades in right away.
19603
- if (options.delayOpen) {
19604
- self.$nextTick(function () {
19605
- requestAnimationFrame(function () {
19601
+ var skeletonShowing = false;
19602
+ var resolved = false;
19603
+ // Only activate the skeleton if the promise is still pending
19604
+ // after skeletonDelay ms. If it resolves faster, skip the
19605
+ // skeleton entirely to avoid a flash.
19606
+ var skeletonDelay = typeof options.skeletonDelay === 'number'
19607
+ ? options.skeletonDelay : 1000;
19608
+ var skeletonTimer = setTimeout(function () {
19609
+ if (resolved) return;
19610
+ skeletonShowing = true;
19611
+ self.pomeSkeletonLoading = true;
19612
+ // Skeleton is now visible. If delayOpen is also set, kick
19613
+ // off its animation so it's primed when skeleton disappears.
19614
+ if (options.delayOpen) {
19615
+ self.$nextTick(function () {
19606
19616
  requestAnimationFrame(function () {
19607
- self.pomeDelayOpening = false;
19617
+ requestAnimationFrame(function () {
19618
+ self.pomeDelayOpening = false;
19619
+ });
19608
19620
  });
19621
+ setTimeout(function () {
19622
+ self.pomeDelayOpened = false;
19623
+ }, options.delayOpen);
19609
19624
  });
19610
- setTimeout(function () {
19611
- self.pomeDelayOpened = false;
19612
- }, options.delayOpen);
19613
- });
19614
- }
19625
+ }
19626
+ }, skeletonDelay);
19615
19627
  ret.then(function () {
19628
+ resolved = true;
19629
+ clearTimeout(skeletonTimer);
19616
19630
  self.pomeSkeletonLoading = false;
19631
+ // Fast path: resolved before skeleton appeared – still need
19632
+ // to run the delayOpen animation now.
19633
+ if (!skeletonShowing && options.delayOpen) {
19634
+ self.$nextTick(function () {
19635
+ requestAnimationFrame(function () {
19636
+ requestAnimationFrame(function () {
19637
+ self.pomeDelayOpening = false;
19638
+ });
19639
+ });
19640
+ setTimeout(function () {
19641
+ self.pomeDelayOpened = false;
19642
+ }, options.delayOpen);
19643
+ });
19644
+ }
19617
19645
  }).catch(function (err) {
19646
+ resolved = true;
19647
+ clearTimeout(skeletonTimer);
19648
+ self.pomeSkeletonLoading = false;
19618
19649
  console.error('[SKELETON] created Promise REJECTED:', err);
19619
19650
  });
19620
19651
  }
19621
19652
  } else if (options.skeleton) {
19653
+ // Sync created – nothing to wait for, ensure skeleton is off.
19622
19654
  this.pomeSkeletonLoading = false;
19623
19655
  }
19624
19656
 
@@ -20130,7 +20162,9 @@ function build(options, exports) {
20130
20162
  var data = func1.call(this, app);
20131
20163
  var data2 = { pomeUiSubTitles: [] };
20132
20164
  if (opt.skeleton) {
20133
- data2.pomeSkeletonLoading = true;
20165
+ // Start hidden; skeleton is only shown after skeletonDelay ms
20166
+ // to avoid a flash when loading completes quickly.
20167
+ data2.pomeSkeletonLoading = false;
20134
20168
  }
20135
20169
  if (opt.skeleton && opt.delayOpen) {
20136
20170
  data2.pomeDelayOpened = true;