@skyux/tabs 6.14.0 → 6.17.0

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.
@@ -2,6 +2,7 @@ import { By } from '@angular/platform-browser';
2
2
  import { SkyAppTestUtility } from '@skyux-sdk/testing';
3
3
  /**
4
4
  * Allows interaction with a SKY UX tabset component.
5
+ * @internal
5
6
  */
6
7
  export class SkyTabsetFixture {
7
8
  constructor(fixture, skyTestId) {
@@ -127,4 +128,4 @@ export class SkyTabsetFixture {
127
128
  return (el && el.textContent.trim()) || undefined;
128
129
  }
129
130
  }
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LWZpeHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy90ZXN0aW5nL3NyYy90YWJzL3RhYnNldC1maXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUl2RDs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFrQzNCLFlBQW9CLE9BQThCLEVBQUUsU0FBaUI7UUFBakQsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFDaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FDdEQsT0FBTyxFQUNQLFNBQVMsRUFDVCxZQUFZLENBQ2IsQ0FBQztJQUNKLENBQUM7SUF2Q0Q7O09BRUc7SUFDSCxJQUFXLFNBQVM7UUFDbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxTQUFTLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFBSSxTQUFTLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUV4QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lB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QUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVidWdFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IEJ5IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTa3lBcHBUZXN0VXRpbGl0eSB9IGZyb20gJ0Bza3l1eC1zZGsvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreVRhYnNldEZpeHR1cmVUYWIgfSBmcm9tICcuL3RhYi1maXh0dXJlLXRhYic7XG5cbi8qKlxuICogQWxsb3dzIGludGVyYWN0aW9uIHdpdGggYSBTS1kgVVggdGFic2V0IGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreVRhYnNldEZpeHR1cmUge1xuICAvKipcbiAgICogVGhlIHRhYnNldCBjb21wb25lbnQncyBBUklBIGxhYmVsLlxuICAgKi9cbiAgcHVibGljIGdldCBhcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0YWJzZXRFbCA9IHRoaXMuZ2V0VGFic2V0RWwoKTtcbiAgICByZXR1cm4gdGFic2V0RWwuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJzZXQgY29tcG9uZW50J3MgQVJJQSBsYWJlbGxlZCBieSBhdHRyaWJ1dGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFyaWFMYWJlbGxlZEJ5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgdGFic2V0RWwgPSB0aGlzLmdldFRhYnNldEVsKCk7XG4gICAgcmV0dXJuIHRhYnNldEVsLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JykgfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHRhYi5cbiAgICovXG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiSW5kZXgoKTogbnVtYmVyIHtcbiAgICBjb25zdCB0YWJMaW5rRWxzID0gdGhpcy5nZXRUYWJMaW5rRWxzKCk7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHRhYkxpbmtFbHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBpZiAodGFiTGlua0Vscy5pdGVtKGkpLmNsYXNzTGlzdC5jb250YWlucygnc2t5LWJ0bi10YWItc2VsZWN0ZWQnKSkge1xuICAgICAgICByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBwcml2YXRlIGRlYnVnRWw6IERlYnVnRWxlbWVudDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55Piwgc2t5VGVzdElkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRlYnVnRWwgPSBTa3lBcHBUZXN0VXRpbGl0eS5nZXREZWJ1Z0VsZW1lbnRCeVRlc3RJZChcbiAgICAgIGZpeHR1cmUsXG4gICAgICBza3lUZXN0SWQsXG4gICAgICAnc2t5LXRhYnNldCdcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFiIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAqIEBwYXJhbSB0YWJJbmRleCBUaGUgaW5kZXggb2YgdGhlIHRhYi5cbiAgICovXG4gIHB1YmxpYyBnZXRUYWIodGFiSW5kZXg6IG51bWJlcik6IFNreVRhYnNldEZpeHR1cmVUYWIge1xuICAgIGNvbnN0IHRhYkxpbmtFbCA9IHRoaXMuZ2V0VGFiTGlua0VsKHRhYkluZGV4KTtcblxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuYWN0aXZlVGFiSW5kZXggPT09IHRhYkluZGV4O1xuICAgIGNvbnN0IGRpc2FibGVkID0gdGFiTGlua0VsLmNsYXNzTGlzdC5jb250YWlucygnc2t5LWJ0bi10YWItZGlzYWJsZWQnKTtcbiAgICBjb25zdCB0YWJIZWFkaW5nID0gdGhpcy5nZXRUZXh0Q29udGVudChcbiAgICAgIHRhYkxpbmtFbC5xdWVyeVNlbGVjdG9yKCcuc2t5LXRhYi1oZWFkaW5nJykuY2hpbGROb2Rlc1swXVxuICAgICk7XG4gICAgY29uc3QgdGFiSGVhZGVyQ291bnQgPSB0aGlzLmdldFRleHRDb250ZW50KFxuICAgICAgdGFiTGlua0VsLnF1ZXJ5U2VsZWN0b3IoJy5za3ktdGFiLWhlYWRlci1jb3VudCcpXG4gICAgKTtcblxuICAgIGxldCBwZXJtYWxpbmtWYWx1ZTogc3RyaW5nO1xuXG4gICAgaWYgKHRhYkxpbmtFbC5ocmVmKSB7XG4gICAgICBjb25zdCBwZXJtYWxpbmsgPSB0YWJMaW5rRWwuaHJlZi5zcGxpdCgnPycpWzFdO1xuICAgICAgaWYgKHBlcm1hbGluaykge1xuICAgICAgICBjb25zdCBwZXJtYWxpbmtQYXJ0cyA9IHBlcm1hbGluay5zcGxpdCgnPScpO1xuXG4gICAgICAgIHBlcm1hbGlua1ZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KHBlcm1hbGlua1BhcnRzWzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBwZXJtYWxpbmtWYWx1ZSxcbiAgICAgIHRhYkhlYWRlckNvdW50LFxuICAgICAgdGFiSGVhZGluZyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgdGFic2V0J3MgXCJuZXdcIiBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tOZXdCdXR0b24oKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jbGlja0J1dHRvbignc2t5LXRhYnNldC1idG4tbmV3Jyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSB0YWJzZXQncyBcIm9wZW5cIiBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tPcGVuQnV0dG9uKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY2xpY2tCdXR0b24oJ3NreS10YWJzZXQtYnRuLW9wZW4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIHRhYiBidXR0b24gYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICogQHBhcmFtIHRhYkluZGV4IFRoZSBpbmRleCBvZiB0aGUgdGFiLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrVGFiKHRhYkluZGV4OiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHRhYkxpbmtFbCA9IHRoaXMuZ2V0VGFiTGlua0VsKHRhYkluZGV4KTtcblxuICAgIGlmICghdGFiTGlua0VsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIG5vIHRhYiBhdCBpbmRleCAke3RhYkluZGV4fS5gKTtcbiAgICB9XG5cbiAgICB0YWJMaW5rRWwuY2xpY2soKTtcblxuICAgIHRoaXMuZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIHRoaXMuZml4dHVyZS53aGVuU3RhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2sncyB0aGUgdGFiJ3MgY2xvc2UgYnV0dG9uIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAqIEBwYXJhbSB0YWJJbmRleCBUaGUgaW5kZXggb2YgdGhlIHRhYi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja1RhYkNsb3NlKHRhYkluZGV4OiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHRhYldyYXBwZXJFbCA9IHRoaXMuZ2V0VGFic2V0RWwoKS5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgYC5za3ktdGFic2V0LXRhYnMgLnNreS1idG4tdGFiLXdyYXBwZXJgXG4gICAgKVt0YWJJbmRleF07XG5cbiAgICBpZiAoIXRhYldyYXBwZXJFbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBubyB0YWIgYXQgaW5kZXggJHt0YWJJbmRleH0uYCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xvc2VCdG5FbCA9IHRhYldyYXBwZXJFbC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJy5za3ktYnRuLXRhYi1jbG9zZSdcbiAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuXG4gICAgaWYgKCFjbG9zZUJ0bkVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzcGVjaWZpZWQgdGFiIGRvZXMgbm90IGhhdmUgYSBjbG9zZSBidXR0b24uJyk7XG4gICAgfVxuXG4gICAgY2xvc2VCdG5FbC5jbGljaygpO1xuXG4gICAgdGhpcy5maXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICByZXR1cm4gdGhpcy5maXh0dXJlLndoZW5TdGFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2xpY2tCdXR0b24oYnV0dG9uQ2xzOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHRhYnNldEVsID0gdGhpcy5nZXRUYWJzZXRFbCgpO1xuXG4gICAgY29uc3QgbmV3QnV0dG9uRWwgPSB0YWJzZXRFbC5xdWVyeVNlbGVjdG9yKFxuICAgICAgYC5za3ktdGFic2V0LWJ0bnMgLiR7YnV0dG9uQ2xzfWBcbiAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuXG4gICAgbmV3QnV0dG9uRWwuY2xpY2soKTtcblxuICAgIHRoaXMuZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIHRoaXMuZml4dHVyZS53aGVuU3RhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhYnNldEVsKCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICBjb25zdCB0YWJzZXRFbCA9IHRoaXMuZGVidWdFbC5xdWVyeShCeS5jc3MoJy5za3ktdGFic2V0JykpLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICByZXR1cm4gdGFic2V0RWw7XG4gIH1cblxuICBwcml2YXRlIGdldFRhYkxpbmtFbHMoKTogTm9kZUxpc3RPZjxIVE1MQW5jaG9yRWxlbWVudD4ge1xuICAgIHJldHVybiB0aGlzLmdldFRhYnNldEVsKCkucXVlcnlTZWxlY3RvckFsbChgLnNreS10YWJzZXQtdGFicyAuc2t5LWJ0bi10YWJgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFiTGlua0VsKHRhYkluZGV4OiBudW1iZXIpOiBIVE1MQW5jaG9yRWxlbWVudCB7XG4gICAgY29uc3QgdGFiTGlua0VsID0gdGhpcy5nZXRUYWJMaW5rRWxzKCkuaXRlbSh0YWJJbmRleCk7XG5cbiAgICBpZiAoIXRhYkxpbmtFbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBubyB0YWIgYXQgaW5kZXggJHt0YWJJbmRleH0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhYkxpbmtFbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGV4dENvbnRlbnQoZWw6IEVsZW1lbnQgfCBOb2RlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKGVsICYmIGVsLnRleHRDb250ZW50LnRyaW0oKSkgfHwgdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LWZpeHR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy90ZXN0aW5nL3NyYy90YWJzL3RhYnNldC1maXh0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUl2RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBa0MzQixZQUFvQixPQUE4QixFQUFFLFNBQWlCO1FBQWpELFlBQU8sR0FBUCxPQUFPLENBQXVCO1FBQ2hELElBQUksQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsdUJBQXVCLENBQ3RELE9BQU8sRUFDUCxTQUFTLEVBQ1QsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDO0lBdkNEOztPQUVHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksU0FBUyxDQUFDO0lBQzFELENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsY0FBYztRQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLElBQUksU0FBUyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsY0FBYztRQUN2QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFeEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZ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Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlYnVnRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBCeSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgU2t5QXBwVGVzdFV0aWxpdHkgfSBmcm9tICdAc2t5dXgtc2RrL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lUYWJzZXRGaXh0dXJlVGFiIH0gZnJvbSAnLi90YWItZml4dHVyZS10YWInO1xuXG4vKipcbiAqIEFsbG93cyBpbnRlcmFjdGlvbiB3aXRoIGEgU0tZIFVYIHRhYnNldCBjb21wb25lbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreVRhYnNldEZpeHR1cmUge1xuICAvKipcbiAgICogVGhlIHRhYnNldCBjb21wb25lbnQncyBBUklBIGxhYmVsLlxuICAgKi9cbiAgcHVibGljIGdldCBhcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0YWJzZXRFbCA9IHRoaXMuZ2V0VGFic2V0RWwoKTtcbiAgICByZXR1cm4gdGFic2V0RWwuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJzZXQgY29tcG9uZW50J3MgQVJJQSBsYWJlbGxlZCBieSBhdHRyaWJ1dGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFyaWFMYWJlbGxlZEJ5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgdGFic2V0RWwgPSB0aGlzLmdldFRhYnNldEVsKCk7XG4gICAgcmV0dXJuIHRhYnNldEVsLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JykgfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHRhYi5cbiAgICovXG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiSW5kZXgoKTogbnVtYmVyIHtcbiAgICBjb25zdCB0YWJMaW5rRWxzID0gdGhpcy5nZXRUYWJMaW5rRWxzKCk7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHRhYkxpbmtFbHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBpZiAodGFiTGlua0Vscy5pdGVtKGkpLmNsYXNzTGlzdC5jb250YWlucygnc2t5LWJ0bi10YWItc2VsZWN0ZWQnKSkge1xuICAgICAgICByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBwcml2YXRlIGRlYnVnRWw6IERlYnVnRWxlbWVudDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55Piwgc2t5VGVzdElkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRlYnVnRWwgPSBTa3lBcHBUZXN0VXRpbGl0eS5nZXREZWJ1Z0VsZW1lbnRCeVRlc3RJZChcbiAgICAgIGZpeHR1cmUsXG4gICAgICBza3lUZXN0SWQsXG4gICAgICAnc2t5LXRhYnNldCdcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFiIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAqIEBwYXJhbSB0YWJJbmRleCBUaGUgaW5kZXggb2YgdGhlIHRhYi5cbiAgICovXG4gIHB1YmxpYyBnZXRUYWIodGFiSW5kZXg6IG51bWJlcik6IFNreVRhYnNldEZpeHR1cmVUYWIge1xuICAgIGNvbnN0IHRhYkxpbmtFbCA9IHRoaXMuZ2V0VGFiTGlua0VsKHRhYkluZGV4KTtcblxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuYWN0aXZlVGFiSW5kZXggPT09IHRhYkluZGV4O1xuICAgIGNvbnN0IGRpc2FibGVkID0gdGFiTGlua0VsLmNsYXNzTGlzdC5jb250YWlucygnc2t5LWJ0bi10YWItZGlzYWJsZWQnKTtcbiAgICBjb25zdCB0YWJIZWFkaW5nID0gdGhpcy5nZXRUZXh0Q29udGVudChcbiAgICAgIHRhYkxpbmtFbC5xdWVyeVNlbGVjdG9yKCcuc2t5LXRhYi1oZWFkaW5nJykuY2hpbGROb2Rlc1swXVxuICAgICk7XG4gICAgY29uc3QgdGFiSGVhZGVyQ291bnQgPSB0aGlzLmdldFRleHRDb250ZW50KFxuICAgICAgdGFiTGlua0VsLnF1ZXJ5U2VsZWN0b3IoJy5za3ktdGFiLWhlYWRlci1jb3VudCcpXG4gICAgKTtcblxuICAgIGxldCBwZXJtYWxpbmtWYWx1ZTogc3RyaW5nO1xuXG4gICAgaWYgKHRhYkxpbmtFbC5ocmVmKSB7XG4gICAgICBjb25zdCBwZXJtYWxpbmsgPSB0YWJMaW5rRWwuaHJlZi5zcGxpdCgnPycpWzFdO1xuICAgICAgaWYgKHBlcm1hbGluaykge1xuICAgICAgICBjb25zdCBwZXJtYWxpbmtQYXJ0cyA9IHBlcm1hbGluay5zcGxpdCgnPScpO1xuXG4gICAgICAgIHBlcm1hbGlua1ZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KHBlcm1hbGlua1BhcnRzWzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWN0aXZlLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBwZXJtYWxpbmtWYWx1ZSxcbiAgICAgIHRhYkhlYWRlckNvdW50LFxuICAgICAgdGFiSGVhZGluZyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgdGFic2V0J3MgXCJuZXdcIiBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tOZXdCdXR0b24oKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jbGlja0J1dHRvbignc2t5LXRhYnNldC1idG4tbmV3Jyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSB0YWJzZXQncyBcIm9wZW5cIiBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tPcGVuQnV0dG9uKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY2xpY2tCdXR0b24oJ3NreS10YWJzZXQtYnRuLW9wZW4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIHRhYiBidXR0b24gYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICogQHBhcmFtIHRhYkluZGV4IFRoZSBpbmRleCBvZiB0aGUgdGFiLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrVGFiKHRhYkluZGV4OiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHRhYkxpbmtFbCA9IHRoaXMuZ2V0VGFiTGlua0VsKHRhYkluZGV4KTtcblxuICAgIGlmICghdGFiTGlua0VsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIG5vIHRhYiBhdCBpbmRleCAke3RhYkluZGV4fS5gKTtcbiAgICB9XG5cbiAgICB0YWJMaW5rRWwuY2xpY2soKTtcblxuICAgIHRoaXMuZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIHRoaXMuZml4dHVyZS53aGVuU3RhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2sncyB0aGUgdGFiJ3MgY2xvc2UgYnV0dG9uIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAqIEBwYXJhbSB0YWJJbmRleCBUaGUgaW5kZXggb2YgdGhlIHRhYi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja1RhYkNsb3NlKHRhYkluZGV4OiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHRhYldyYXBwZXJFbCA9IHRoaXMuZ2V0VGFic2V0RWwoKS5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgYC5za3ktdGFic2V0LXRhYnMgLnNreS1idG4tdGFiLXdyYXBwZXJgXG4gICAgKVt0YWJJbmRleF07XG5cbiAgICBpZiAoIXRhYldyYXBwZXJFbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBubyB0YWIgYXQgaW5kZXggJHt0YWJJbmRleH0uYCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xvc2VCdG5FbCA9IHRhYldyYXBwZXJFbC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJy5za3ktYnRuLXRhYi1jbG9zZSdcbiAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuXG4gICAgaWYgKCFjbG9zZUJ0bkVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzcGVjaWZpZWQgdGFiIGRvZXMgbm90IGhhdmUgYSBjbG9zZSBidXR0b24uJyk7XG4gICAgfVxuXG4gICAgY2xvc2VCdG5FbC5jbGljaygpO1xuXG4gICAgdGhpcy5maXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICByZXR1cm4gdGhpcy5maXh0dXJlLndoZW5TdGFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2xpY2tCdXR0b24oYnV0dG9uQ2xzOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHRhYnNldEVsID0gdGhpcy5nZXRUYWJzZXRFbCgpO1xuXG4gICAgY29uc3QgbmV3QnV0dG9uRWwgPSB0YWJzZXRFbC5xdWVyeVNlbGVjdG9yKFxuICAgICAgYC5za3ktdGFic2V0LWJ0bnMgLiR7YnV0dG9uQ2xzfWBcbiAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuXG4gICAgbmV3QnV0dG9uRWwuY2xpY2soKTtcblxuICAgIHRoaXMuZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgcmV0dXJuIHRoaXMuZml4dHVyZS53aGVuU3RhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhYnNldEVsKCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICBjb25zdCB0YWJzZXRFbCA9IHRoaXMuZGVidWdFbC5xdWVyeShCeS5jc3MoJy5za3ktdGFic2V0JykpLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICByZXR1cm4gdGFic2V0RWw7XG4gIH1cblxuICBwcml2YXRlIGdldFRhYkxpbmtFbHMoKTogTm9kZUxpc3RPZjxIVE1MQW5jaG9yRWxlbWVudD4ge1xuICAgIHJldHVybiB0aGlzLmdldFRhYnNldEVsKCkucXVlcnlTZWxlY3RvckFsbChgLnNreS10YWJzZXQtdGFicyAuc2t5LWJ0bi10YWJgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFiTGlua0VsKHRhYkluZGV4OiBudW1iZXIpOiBIVE1MQW5jaG9yRWxlbWVudCB7XG4gICAgY29uc3QgdGFiTGlua0VsID0gdGhpcy5nZXRUYWJMaW5rRWxzKCkuaXRlbSh0YWJJbmRleCk7XG5cbiAgICBpZiAoIXRhYkxpbmtFbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBubyB0YWIgYXQgaW5kZXggJHt0YWJJbmRleH0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhYkxpbmtFbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGV4dENvbnRlbnQoZWw6IEVsZW1lbnQgfCBOb2RlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKGVsICYmIGVsLnRleHRDb250ZW50LnRyaW0oKSkgfHwgdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
@@ -4,6 +4,7 @@ import { SkyAppTestUtility } from '@skyux-sdk/testing';
4
4
 
5
5
  /**
6
6
  * Allows interaction with a SKY UX tabset component.
7
+ * @internal
7
8
  */
8
9
  class SkyTabsetFixture {
9
10
  constructor(fixture, skyTestId) {
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-tabs-testing.mjs","sources":["../../../../../libs/components/tabs/testing/src/tabs/tabset-fixture.ts","../../../../../libs/components/tabs/testing/src/skyux-tabs-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\nimport { SkyTabsetFixtureTab } from './tab-fixture-tab';\n\n/**\n * Allows interaction with a SKY UX tabset component.\n */\nexport class SkyTabsetFixture {\n /**\n * The tabset component's ARIA label.\n */\n public get ariaLabel(): string {\n const tabsetEl = this.getTabsetEl();\n return tabsetEl.getAttribute('aria-label') || undefined;\n }\n\n /**\n * The tabset component's ARIA labelled by attribute.\n */\n public get ariaLabelledBy(): string {\n const tabsetEl = this.getTabsetEl();\n return tabsetEl.getAttribute('aria-labelledby') || undefined;\n }\n\n /**\n * The index of the currently selected tab.\n */\n public get activeTabIndex(): number {\n const tabLinkEls = this.getTabLinkEls();\n\n for (let i = 0, n = tabLinkEls.length; i < n; i++) {\n if (tabLinkEls.item(i).classList.contains('sky-btn-tab-selected')) {\n return i;\n }\n }\n\n return -1;\n }\n\n private debugEl: DebugElement;\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this.debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-tabset'\n );\n }\n\n /**\n * Retrieves information about the tab at the specified index.\n * @param tabIndex The index of the tab.\n */\n public getTab(tabIndex: number): SkyTabsetFixtureTab {\n const tabLinkEl = this.getTabLinkEl(tabIndex);\n\n const active = this.activeTabIndex === tabIndex;\n const disabled = tabLinkEl.classList.contains('sky-btn-tab-disabled');\n const tabHeading = this.getTextContent(\n tabLinkEl.querySelector('.sky-tab-heading').childNodes[0]\n );\n const tabHeaderCount = this.getTextContent(\n tabLinkEl.querySelector('.sky-tab-header-count')\n );\n\n let permalinkValue: string;\n\n if (tabLinkEl.href) {\n const permalink = tabLinkEl.href.split('?')[1];\n if (permalink) {\n const permalinkParts = permalink.split('=');\n\n permalinkValue = decodeURIComponent(permalinkParts[1]);\n }\n }\n\n return {\n active,\n disabled,\n permalinkValue,\n tabHeaderCount,\n tabHeading,\n };\n }\n\n /**\n * Clicks the tabset's \"new\" button.\n */\n public async clickNewButton(): Promise<any> {\n return this.clickButton('sky-tabset-btn-new');\n }\n\n /**\n * Clicks the tabset's \"open\" button.\n */\n public async clickOpenButton(): Promise<any> {\n return this.clickButton('sky-tabset-btn-open');\n }\n\n /**\n * Clicks the tab button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTab(tabIndex: number): Promise<any> {\n const tabLinkEl = this.getTabLinkEl(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n tabLinkEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n /**\n * Click's the tab's close button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTabClose(tabIndex: number): Promise<any> {\n const tabWrapperEl = this.getTabsetEl().querySelectorAll(\n `.sky-tabset-tabs .sky-btn-tab-wrapper`\n )[tabIndex];\n\n if (!tabWrapperEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n const closeBtnEl = tabWrapperEl.querySelector(\n '.sky-btn-tab-close'\n ) as HTMLButtonElement;\n\n if (!closeBtnEl) {\n throw new Error('The specified tab does not have a close button.');\n }\n\n closeBtnEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private async clickButton(buttonCls: string): Promise<any> {\n const tabsetEl = this.getTabsetEl();\n\n const newButtonEl = tabsetEl.querySelector(\n `.sky-tabset-btns .${buttonCls}`\n ) as HTMLButtonElement;\n\n newButtonEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private getTabsetEl(): HTMLDivElement {\n const tabsetEl = this.debugEl.query(By.css('.sky-tabset')).nativeElement;\n\n return tabsetEl;\n }\n\n private getTabLinkEls(): NodeListOf<HTMLAnchorElement> {\n return this.getTabsetEl().querySelectorAll(`.sky-tabset-tabs .sky-btn-tab`);\n }\n\n private getTabLinkEl(tabIndex: number): HTMLAnchorElement {\n const tabLinkEl = this.getTabLinkEls().item(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n return tabLinkEl;\n }\n\n private getTextContent(el: Element | Node): string {\n return (el && el.textContent.trim()) || undefined;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skyux-tabs-testing.mjs","sources":["../../../../../libs/components/tabs/testing/src/tabs/tabset-fixture.ts","../../../../../libs/components/tabs/testing/src/skyux-tabs-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\nimport { SkyTabsetFixtureTab } from './tab-fixture-tab';\n\n/**\n * Allows interaction with a SKY UX tabset component.\n * @internal\n */\nexport class SkyTabsetFixture {\n /**\n * The tabset component's ARIA label.\n */\n public get ariaLabel(): string {\n const tabsetEl = this.getTabsetEl();\n return tabsetEl.getAttribute('aria-label') || undefined;\n }\n\n /**\n * The tabset component's ARIA labelled by attribute.\n */\n public get ariaLabelledBy(): string {\n const tabsetEl = this.getTabsetEl();\n return tabsetEl.getAttribute('aria-labelledby') || undefined;\n }\n\n /**\n * The index of the currently selected tab.\n */\n public get activeTabIndex(): number {\n const tabLinkEls = this.getTabLinkEls();\n\n for (let i = 0, n = tabLinkEls.length; i < n; i++) {\n if (tabLinkEls.item(i).classList.contains('sky-btn-tab-selected')) {\n return i;\n }\n }\n\n return -1;\n }\n\n private debugEl: DebugElement;\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this.debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-tabset'\n );\n }\n\n /**\n * Retrieves information about the tab at the specified index.\n * @param tabIndex The index of the tab.\n */\n public getTab(tabIndex: number): SkyTabsetFixtureTab {\n const tabLinkEl = this.getTabLinkEl(tabIndex);\n\n const active = this.activeTabIndex === tabIndex;\n const disabled = tabLinkEl.classList.contains('sky-btn-tab-disabled');\n const tabHeading = this.getTextContent(\n tabLinkEl.querySelector('.sky-tab-heading').childNodes[0]\n );\n const tabHeaderCount = this.getTextContent(\n tabLinkEl.querySelector('.sky-tab-header-count')\n );\n\n let permalinkValue: string;\n\n if (tabLinkEl.href) {\n const permalink = tabLinkEl.href.split('?')[1];\n if (permalink) {\n const permalinkParts = permalink.split('=');\n\n permalinkValue = decodeURIComponent(permalinkParts[1]);\n }\n }\n\n return {\n active,\n disabled,\n permalinkValue,\n tabHeaderCount,\n tabHeading,\n };\n }\n\n /**\n * Clicks the tabset's \"new\" button.\n */\n public async clickNewButton(): Promise<any> {\n return this.clickButton('sky-tabset-btn-new');\n }\n\n /**\n * Clicks the tabset's \"open\" button.\n */\n public async clickOpenButton(): Promise<any> {\n return this.clickButton('sky-tabset-btn-open');\n }\n\n /**\n * Clicks the tab button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTab(tabIndex: number): Promise<any> {\n const tabLinkEl = this.getTabLinkEl(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n tabLinkEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n /**\n * Click's the tab's close button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTabClose(tabIndex: number): Promise<any> {\n const tabWrapperEl = this.getTabsetEl().querySelectorAll(\n `.sky-tabset-tabs .sky-btn-tab-wrapper`\n )[tabIndex];\n\n if (!tabWrapperEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n const closeBtnEl = tabWrapperEl.querySelector(\n '.sky-btn-tab-close'\n ) as HTMLButtonElement;\n\n if (!closeBtnEl) {\n throw new Error('The specified tab does not have a close button.');\n }\n\n closeBtnEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private async clickButton(buttonCls: string): Promise<any> {\n const tabsetEl = this.getTabsetEl();\n\n const newButtonEl = tabsetEl.querySelector(\n `.sky-tabset-btns .${buttonCls}`\n ) as HTMLButtonElement;\n\n newButtonEl.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private getTabsetEl(): HTMLDivElement {\n const tabsetEl = this.debugEl.query(By.css('.sky-tabset')).nativeElement;\n\n return tabsetEl;\n }\n\n private getTabLinkEls(): NodeListOf<HTMLAnchorElement> {\n return this.getTabsetEl().querySelectorAll(`.sky-tabset-tabs .sky-btn-tab`);\n }\n\n private getTabLinkEl(tabIndex: number): HTMLAnchorElement {\n const tabLinkEl = this.getTabLinkEls().item(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n return tabLinkEl;\n }\n\n private getTextContent(el: Element | Node): string {\n return (el && el.textContent.trim()) || undefined;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { NgModule, Injectable, Component, ChangeDetectionStrategy, Input, ViewChild, HostListener, ContentChildren, EventEmitter, Output, ViewEncapsulation } from '@angular/core';
5
5
  import { SkyCheckboxModule } from '@skyux/forms';
6
- import * as i2$1 from '@skyux/theme';
6
+ import * as i8 from '@skyux/theme';
7
7
  import { SkyThemeModule } from '@skyux/theme';
8
8
  import * as i1 from '@skyux/core';
9
9
  import { SkyMediaBreakpoints, SkyMediaQueryService, SkyIdModule } from '@skyux/core';
@@ -11,7 +11,7 @@ import * as i4 from '@skyux/indicators';
11
11
  import { SkyIconModule, SkyExpansionIndicatorModule, SkyStatusIndicatorModule } from '@skyux/indicators';
12
12
  import * as i3 from '@skyux/i18n';
13
13
  import { getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS } from '@skyux/i18n';
14
- import { BehaviorSubject, Subject, forkJoin, combineLatest, race } from 'rxjs';
14
+ import { BehaviorSubject, Subject, combineLatest, race } from 'rxjs';
15
15
  import { takeUntil, take, distinctUntilChanged } from 'rxjs/operators';
16
16
  import { skyAnimationSlide } from '@skyux/animations';
17
17
  import { trigger, transition, style, animate } from '@angular/animations';
@@ -19,6 +19,7 @@ import * as i1$1 from '@angular/router';
19
19
  import { RouterModule } from '@angular/router';
20
20
  import * as i4$1 from '@skyux/popovers';
21
21
  import { SkyDropdownModule } from '@skyux/popovers';
22
+ import { __classPrivateFieldSet, __classPrivateFieldGet } from 'tslib';
22
23
 
23
24
  /**
24
25
  * NOTICE: DO NOT MODIFY THIS FILE!
@@ -30,6 +31,7 @@ const RESOURCES = {
30
31
  'EN-US': {
31
32
  skyux_tab_add: { message: 'Add tab' },
32
33
  skyux_tab_close: { message: 'Close {0} tab' },
34
+ skyux_tabs_navigator_finish: { message: 'Finish' },
33
35
  skyux_tabs_navigator_next: { message: 'Next' },
34
36
  skyux_tabs_navigator_previous: { message: 'Previous' },
35
37
  skyux_tab_open: { message: 'Open tab' },
@@ -1414,113 +1416,156 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
1414
1416
  type: Output
1415
1417
  }] } });
1416
1418
 
1419
+ var _SkyTabsetNavButtonComponent_instances, _SkyTabsetNavButtonComponent__buttonType, _SkyTabsetNavButtonComponent__disabled, _SkyTabsetNavButtonComponent__tabset, _SkyTabsetNavButtonComponent_activeIndexNumber, _SkyTabsetNavButtonComponent_activeSkyTabIndex, _SkyTabsetNavButtonComponent_currentTabsetSub, _SkyTabsetNavButtonComponent_logger, _SkyTabsetNavButtonComponent_tabCount, _SkyTabsetNavButtonComponent_tabToSelect, _SkyTabsetNavButtonComponent_ngUnsubscribe, _SkyTabsetNavButtonComponent_updateButtonVisibility, _SkyTabsetNavButtonComponent_updateButtonProperties, _SkyTabsetNavButtonComponent_updateTabToSelect;
1417
1420
  const buttonTypeNext = 'next';
1418
1421
  const buttonTypePrevious = 'previous';
1419
- /**
1420
- * @internal
1421
- */
1422
+ const buttonTypeFinish = 'finish';
1422
1423
  class SkyTabsetNavButtonComponent {
1423
- constructor(resourceService, changeDetector) {
1424
- this.resourceService = resourceService;
1425
- this.changeDetector = changeDetector;
1426
- }
1427
- set buttonText(value) {
1428
- this._buttonText = value;
1424
+ constructor(logger) {
1425
+ _SkyTabsetNavButtonComponent_instances.add(this);
1426
+ this.isVisible = false;
1427
+ _SkyTabsetNavButtonComponent__buttonType.set(this, void 0);
1428
+ _SkyTabsetNavButtonComponent__disabled.set(this, void 0);
1429
+ _SkyTabsetNavButtonComponent__tabset.set(this, void 0);
1430
+ _SkyTabsetNavButtonComponent_activeIndexNumber.set(this, void 0);
1431
+ _SkyTabsetNavButtonComponent_activeSkyTabIndex.set(this, void 0);
1432
+ _SkyTabsetNavButtonComponent_currentTabsetSub.set(this, void 0);
1433
+ _SkyTabsetNavButtonComponent_logger.set(this, void 0);
1434
+ _SkyTabsetNavButtonComponent_tabCount.set(this, void 0);
1435
+ _SkyTabsetNavButtonComponent_tabToSelect.set(this, void 0);
1436
+ _SkyTabsetNavButtonComponent_ngUnsubscribe.set(this, new Subject());
1437
+ __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_logger, logger, "f");
1429
1438
  }
1430
- get buttonText() {
1431
- if (this._buttonText) {
1432
- return this._buttonText;
1439
+ /**
1440
+ * Specifies the tabset wizard component to associate with the nav button.
1441
+ * @required
1442
+ */
1443
+ set tabset(value) {
1444
+ __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent__tabset, value, "f");
1445
+ if (__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_currentTabsetSub, "f")) {
1446
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_currentTabsetSub, "f").unsubscribe();
1447
+ }
1448
+ if (value) {
1449
+ if (__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__buttonType, "f") === buttonTypeFinish) {
1450
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__tabset, "f").hasFinishButton = true;
1451
+ }
1452
+ __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_currentTabsetSub, __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__tabset, "f").activeChange
1453
+ .pipe(distinctUntilChanged(), takeUntil(__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_ngUnsubscribe, "f")))
1454
+ .subscribe((index) => {
1455
+ __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_activeSkyTabIndex, index, "f");
1456
+ __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_tabCount, __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__tabset, "f").tabs.length, "f");
1457
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_instances, "m", _SkyTabsetNavButtonComponent_updateTabToSelect).call(this);
1458
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_instances, "m", _SkyTabsetNavButtonComponent_updateButtonVisibility).call(this);
1459
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_instances, "m", _SkyTabsetNavButtonComponent_updateButtonProperties).call(this);
1460
+ }), "f");
1433
1461
  }
1434
- switch (this.buttonType) {
1435
- case buttonTypePrevious:
1436
- return this.previousButtonText;
1437
- case buttonTypeNext:
1438
- return this.nextButtonText;
1439
- /* istanbul ignore next */
1440
- default:
1441
- return '';
1462
+ else {
1463
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_logger, "f").error('The SkyTabsetNavButtonComponent requires a reference to the SkyTabsetComponent it controls.');
1442
1464
  }
1443
1465
  }
1444
- get disabled() {
1445
- let tabToSelect;
1446
- switch (this.buttonType) {
1447
- case buttonTypePrevious:
1448
- tabToSelect = this.previousTab;
1449
- break;
1450
- case buttonTypeNext:
1451
- tabToSelect = this.nextTab;
1452
- break;
1453
- /* istanbul ignore next */
1454
- default:
1455
- break;
1456
- }
1457
- return !tabToSelect || tabToSelect.disabled;
1466
+ /**
1467
+ * Specifies the type of nav button to include.
1468
+ * @required
1469
+ */
1470
+ get buttonType() {
1471
+ return __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__buttonType, "f");
1458
1472
  }
1459
- get selectedTab() {
1460
- let selectedTab;
1461
- if (this.tabset && this.tabset.tabs) {
1462
- selectedTab = this.tabset.tabs.find((tab) => tab.tabIndex === this.tabset.lastActiveTabIndex);
1473
+ set buttonType(value) {
1474
+ __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent__buttonType, value, "f");
1475
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_instances, "m", _SkyTabsetNavButtonComponent_updateTabToSelect).call(this);
1476
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_instances, "m", _SkyTabsetNavButtonComponent_updateButtonProperties).call(this);
1477
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_instances, "m", _SkyTabsetNavButtonComponent_updateButtonVisibility).call(this);
1478
+ if (value === buttonTypeFinish) {
1479
+ this.type = 'submit';
1463
1480
  }
1464
- return selectedTab;
1465
- }
1466
- get nextTab() {
1467
- const selectedTab = this.selectedTab;
1468
- if (selectedTab) {
1469
- const tabs = this.tabset.tabs.toArray();
1470
- return tabs[tabs.indexOf(selectedTab) + 1];
1481
+ else {
1482
+ this.type = 'button';
1471
1483
  }
1472
- return undefined;
1473
1484
  }
1474
- get previousTab() {
1475
- const selectedTab = this.selectedTab;
1476
- if (selectedTab) {
1477
- const tabs = this.tabset.tabs.toArray();
1478
- return tabs[tabs.indexOf(selectedTab) - 1];
1485
+ /**
1486
+ * Indicates whether to disable the nav button.
1487
+ * Defaults to the disabled state of the next tab for `next`, the existence of a previous tab for `previous`,
1488
+ * and false for `finish`.
1489
+ */
1490
+ set disabled(value) {
1491
+ __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent__disabled, value, "f");
1492
+ }
1493
+ get disabled() {
1494
+ if (__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__disabled, "f") !== undefined) {
1495
+ return __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__disabled, "f");
1496
+ }
1497
+ else if (__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__buttonType, "f") === buttonTypeFinish) {
1498
+ return false;
1479
1499
  }
1480
- return undefined;
1500
+ return !__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabToSelect, "f") || __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabToSelect, "f").disabled;
1481
1501
  }
1482
- ngAfterViewInit() {
1483
- forkJoin([
1484
- this.resourceService.getString('skyux_tabs_navigator_previous'),
1485
- this.resourceService.getString('skyux_tabs_navigator_next'),
1486
- ])
1487
- .pipe(take(1))
1488
- .subscribe((resources) => {
1489
- this.previousButtonText = resources[0];
1490
- this.nextButtonText = resources[1];
1491
- this.changeDetector.detectChanges();
1492
- });
1502
+ ngOnDestroy() {
1503
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_ngUnsubscribe, "f").next();
1504
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_ngUnsubscribe, "f").complete();
1493
1505
  }
1494
1506
  buttonClick() {
1495
- let tabToSelect;
1496
- switch (this.buttonType) {
1497
- case buttonTypePrevious:
1498
- tabToSelect = this.previousTab;
1499
- break;
1500
- case buttonTypeNext:
1501
- tabToSelect = this.nextTab;
1502
- break;
1503
- /* istanbul ignore next */
1504
- default:
1505
- break;
1506
- }
1507
1507
  /* istanbul ignore else */
1508
- if (tabToSelect && !tabToSelect.disabled) {
1509
- this.tabset.active = tabToSelect.tabIndex;
1508
+ if (__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabToSelect, "f") && !__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabToSelect, "f").disabled) {
1509
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__tabset, "f").active = __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabToSelect, "f").tabIndex;
1510
1510
  }
1511
1511
  }
1512
1512
  }
1513
- SkyTabsetNavButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyTabsetNavButtonComponent, deps: [{ token: i3.SkyLibResourcesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1514
- SkyTabsetNavButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyTabsetNavButtonComponent, selector: "sky-tabset-nav-button", inputs: { tabset: "tabset", buttonType: "buttonType", buttonText: "buttonText" }, ngImport: i0, template: "<button\n class=\"sky-btn\"\n type=\"button\"\n [disabled]=\"disabled\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-primary': 'modern'\n }\"\n (click)=\"buttonClick()\"\n>\n {{ buttonText }}\n</button>\n", directives: [{ type: i2$1.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }] });
1513
+ _SkyTabsetNavButtonComponent__buttonType = new WeakMap(), _SkyTabsetNavButtonComponent__disabled = new WeakMap(), _SkyTabsetNavButtonComponent__tabset = new WeakMap(), _SkyTabsetNavButtonComponent_activeIndexNumber = new WeakMap(), _SkyTabsetNavButtonComponent_activeSkyTabIndex = new WeakMap(), _SkyTabsetNavButtonComponent_currentTabsetSub = new WeakMap(), _SkyTabsetNavButtonComponent_logger = new WeakMap(), _SkyTabsetNavButtonComponent_tabCount = new WeakMap(), _SkyTabsetNavButtonComponent_tabToSelect = new WeakMap(), _SkyTabsetNavButtonComponent_ngUnsubscribe = new WeakMap(), _SkyTabsetNavButtonComponent_instances = new WeakSet(), _SkyTabsetNavButtonComponent_updateButtonVisibility = function _SkyTabsetNavButtonComponent_updateButtonVisibility() {
1514
+ const isLastStep = __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_activeIndexNumber, "f") === __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabCount, "f") - 1;
1515
+ if (__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__buttonType, "f") === buttonTypeFinish) {
1516
+ this.isVisible = isLastStep;
1517
+ return;
1518
+ }
1519
+ // Hide the next button on the last step only if a finish button exists.
1520
+ if (__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__buttonType, "f") === buttonTypeNext &&
1521
+ isLastStep &&
1522
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__tabset, "f").hasFinishButton) {
1523
+ this.isVisible = false;
1524
+ return;
1525
+ }
1526
+ this.isVisible = true;
1527
+ }, _SkyTabsetNavButtonComponent_updateButtonProperties = function _SkyTabsetNavButtonComponent_updateButtonProperties() {
1528
+ var _a, _b;
1529
+ if ((__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__buttonType, "f") === buttonTypeNext ||
1530
+ __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__buttonType, "f") === buttonTypeFinish) &&
1531
+ ((_a = __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__tabset, "f")) === null || _a === void 0 ? void 0 : _a.hasFinishButton)) {
1532
+ this.buttonClassName = 'sky-btn-primary';
1533
+ }
1534
+ else {
1535
+ this.buttonClassName = 'sky-btn-default';
1536
+ }
1537
+ this.ariaControls = (_b = __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_tabToSelect, "f")) === null || _b === void 0 ? void 0 : _b.tabPanelId;
1538
+ }, _SkyTabsetNavButtonComponent_updateTabToSelect = function _SkyTabsetNavButtonComponent_updateTabToSelect() {
1539
+ var _a;
1540
+ if ((_a = __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__tabset, "f")) === null || _a === void 0 ? void 0 : _a.tabs) {
1541
+ const tabs = __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__tabset, "f").tabs.toArray();
1542
+ __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_tabToSelect, undefined, "f");
1543
+ // tab index can be a number or a string, but we need the actual number index
1544
+ __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_activeIndexNumber, tabs.findIndex((tab) => tab.tabIndex === __classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_activeSkyTabIndex, "f")), "f");
1545
+ /* istanbul ignore else */
1546
+ if (__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_activeIndexNumber, "f") !== undefined) {
1547
+ if (__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__buttonType, "f") === buttonTypeNext) {
1548
+ __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_tabToSelect, tabs[__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_activeIndexNumber, "f") + 1], "f");
1549
+ }
1550
+ else if (__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent__buttonType, "f") === buttonTypePrevious) {
1551
+ __classPrivateFieldSet(this, _SkyTabsetNavButtonComponent_tabToSelect, tabs[__classPrivateFieldGet(this, _SkyTabsetNavButtonComponent_activeIndexNumber, "f") - 1], "f");
1552
+ }
1553
+ }
1554
+ }
1555
+ };
1556
+ SkyTabsetNavButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyTabsetNavButtonComponent, deps: [{ token: i1.SkyLogService }], target: i0.ɵɵFactoryTarget.Component });
1557
+ SkyTabsetNavButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyTabsetNavButtonComponent, selector: "sky-tabset-nav-button", inputs: { tabset: "tabset", buttonType: "buttonType", buttonText: "buttonText", disabled: "disabled" }, ngImport: i0, template: "<button\n *ngIf=\"isVisible\"\n class=\"sky-btn sky-margin-inline-sm\"\n [attr.aria-controls]=\"ariaControls\"\n [disabled]=\"disabled\"\n [ngClass]=\"buttonClassName\"\n [type]=\"type\"\n (click)=\"buttonType === 'finish' ? null : buttonClick()\"\n>\n {{ buttonText || ('skyux_tabs_navigator_' + buttonType | skyLibResources) }}\n</button>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe } });
1515
1558
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyTabsetNavButtonComponent, decorators: [{
1516
1559
  type: Component,
1517
- args: [{ selector: 'sky-tabset-nav-button', template: "<button\n class=\"sky-btn\"\n type=\"button\"\n [disabled]=\"disabled\"\n [skyThemeClass]=\"{\n 'sky-btn-default': 'default',\n 'sky-btn-primary': 'modern'\n }\"\n (click)=\"buttonClick()\"\n>\n {{ buttonText }}\n</button>\n" }]
1518
- }], ctorParameters: function () { return [{ type: i3.SkyLibResourcesService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { tabset: [{
1560
+ args: [{ selector: 'sky-tabset-nav-button', template: "<button\n *ngIf=\"isVisible\"\n class=\"sky-btn sky-margin-inline-sm\"\n [attr.aria-controls]=\"ariaControls\"\n [disabled]=\"disabled\"\n [ngClass]=\"buttonClassName\"\n [type]=\"type\"\n (click)=\"buttonType === 'finish' ? null : buttonClick()\"\n>\n {{ buttonText || ('skyux_tabs_navigator_' + buttonType | skyLibResources) }}\n</button>\n" }]
1561
+ }], ctorParameters: function () { return [{ type: i1.SkyLogService }]; }, propDecorators: { tabset: [{
1519
1562
  type: Input
1520
1563
  }], buttonType: [{
1521
1564
  type: Input
1522
1565
  }], buttonText: [{
1523
1566
  type: Input
1567
+ }], disabled: [{
1568
+ type: Input
1524
1569
  }] } });
1525
1570
 
1526
1571
  /**
@@ -1576,6 +1621,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
1576
1621
  type: Injectable
1577
1622
  }] });
1578
1623
 
1624
+ var _SkyTabsetComponent__hasFinishButton;
1579
1625
  class SkyTabsetComponent {
1580
1626
  constructor(changeDetector, elementRef, adapterService, permalinkService, tabsetService) {
1581
1627
  this.changeDetector = changeDetector;
@@ -1607,6 +1653,7 @@ class SkyTabsetComponent {
1607
1653
  this.tabButtons = [];
1608
1654
  this.ngUnsubscribe = new Subject();
1609
1655
  this.tabComponentsStateChangeUnsubscribe = new Subject();
1656
+ _SkyTabsetComponent__hasFinishButton.set(this, false);
1610
1657
  }
1611
1658
  /**
1612
1659
  * Activates a tab by its `tabIndex` property.
@@ -1673,6 +1720,12 @@ class SkyTabsetComponent {
1673
1720
  get tabDisplayMode() {
1674
1721
  return this._tabDisplayMode || 'tabs';
1675
1722
  }
1723
+ get hasFinishButton() {
1724
+ return __classPrivateFieldGet(this, _SkyTabsetComponent__hasFinishButton, "f");
1725
+ }
1726
+ set hasFinishButton(value) {
1727
+ __classPrivateFieldSet(this, _SkyTabsetComponent__hasFinishButton, value, "f");
1728
+ }
1676
1729
  ngAfterViewInit() {
1677
1730
  this.initTabComponents();
1678
1731
  this.listenTabComponentsStructuralChange();
@@ -1918,12 +1971,13 @@ class SkyTabsetComponent {
1918
1971
  }
1919
1972
  }
1920
1973
  }
1974
+ _SkyTabsetComponent__hasFinishButton = new WeakMap();
1921
1975
  SkyTabsetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyTabsetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: SkyTabsetAdapterService }, { token: SkyTabsetPermalinkService }, { token: SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
1922
1976
  SkyTabsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyTabsetComponent, selector: "sky-tabset", inputs: { active: "active", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", permalinkId: "permalinkId", tabStyle: "tabStyle" }, outputs: { activeChange: "activeChange", newTab: "newTab", openTab: "openTab", tabIndexesChange: "tabIndexesChange" }, providers: [
1923
1977
  SkyTabsetAdapterService,
1924
1978
  SkyTabsetPermalinkService,
1925
1979
  SkyTabsetService,
1926
- ], queries: [{ propertyName: "tabs", predicate: SkyTabComponent }], ngImport: i0, template: "<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n \"\n (window:resize)=\"onWindowResize()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\" buttonType=\"tab\">\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item\n *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span class=\"sky-tabset-tabs\">\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </ng-container>\n </span>\n <span class=\"sky-tabset-btns\">\n <button\n *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon icon=\"plus-circle\" size=\"lg\"> </sky-icon>\n </button>\n <button\n *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon icon=\"folder-open-o\" size=\"lg\"> </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template let-tabButton #tabButtonTemplate>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabStyle]=\"tabStyle\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n", styles: [".sky-tabset{align-items:center;border-bottom:2px solid #0974a1;display:flex;list-style-type:none;margin:0;overflow:hidden;padding:0 0 0 15px;white-space:nowrap}.sky-tabset.sky-tabset-style-wizard{border-bottom:none;margin-bottom:10px;padding-left:0}.sky-tabset-btns{order:1;padding-left:10px}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset-mode-dropdown{line-height:0}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:#0974a1}.sky-theme-modern .sky-modal-content .sky-tabset{margin:-10px -30px 30px;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}\n"], components: [{ type: i4$1.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { type: i4$1.λ2, selector: "sky-dropdown-button" }, { type: i4$1.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { type: i4$1.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: SkyTabButtonComponent, selector: "sky-tab-button", inputs: ["active", "ariaControls", "buttonHref", "buttonId", "buttonText", "buttonTextCount", "closeable", "disabled", "tabStyle"], outputs: ["buttonClick", "closeClick"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2$1.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1980
+ ], queries: [{ propertyName: "tabs", predicate: SkyTabComponent }], ngImport: i0, template: "<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n \"\n (window:resize)=\"onWindowResize()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\" buttonType=\"tab\">\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item\n *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span class=\"sky-tabset-tabs\">\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </ng-container>\n </span>\n <span class=\"sky-tabset-btns\">\n <button\n *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon icon=\"plus-circle\" size=\"lg\"> </sky-icon>\n </button>\n <button\n *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon icon=\"folder-open-o\" size=\"lg\"> </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template let-tabButton #tabButtonTemplate>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabStyle]=\"tabStyle\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n", styles: [".sky-tabset{align-items:center;border-bottom:2px solid #0974a1;display:flex;list-style-type:none;margin:0;overflow:hidden;padding:0 0 0 15px;white-space:nowrap}.sky-tabset.sky-tabset-style-wizard{border-bottom:none;margin-bottom:10px;padding-left:0}.sky-tabset-btns{order:1;padding-left:10px}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset-mode-dropdown{line-height:0}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:#0974a1}.sky-theme-modern .sky-modal-content .sky-tabset{margin:-10px -30px 30px;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}\n"], components: [{ type: i4$1.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { type: i4$1.λ2, selector: "sky-dropdown-button" }, { type: i4$1.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { type: i4$1.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: SkyTabButtonComponent, selector: "sky-tab-button", inputs: ["active", "ariaControls", "buttonHref", "buttonId", "buttonText", "buttonTextCount", "closeable", "disabled", "tabStyle"], outputs: ["buttonClick", "closeClick"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i8.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1927
1981
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyTabsetComponent, decorators: [{
1928
1982
  type: Component,
1929
1983
  args: [{ selector: 'sky-tabset', providers: [