@sd-angular/core 19.0.0-beta.86 → 19.0.0-beta.88

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.
Files changed (151) hide show
  1. package/README.md +716 -716
  2. package/assets/fonts/fonts.scss +115 -115
  3. package/assets/scss/bootstrap-4.6.2/_alert.scss +52 -52
  4. package/assets/scss/bootstrap-4.6.2/_badge.scss +54 -54
  5. package/assets/scss/bootstrap-4.6.2/_breadcrumb.scss +42 -42
  6. package/assets/scss/bootstrap-4.6.2/_button-group.scss +163 -163
  7. package/assets/scss/bootstrap-4.6.2/_buttons.scss +142 -142
  8. package/assets/scss/bootstrap-4.6.2/_card.scss +286 -286
  9. package/assets/scss/bootstrap-4.6.2/_carousel.scss +200 -200
  10. package/assets/scss/bootstrap-4.6.2/_close.scss +40 -40
  11. package/assets/scss/bootstrap-4.6.2/_code.scss +48 -48
  12. package/assets/scss/bootstrap-4.6.2/_custom-forms.scss +526 -526
  13. package/assets/scss/bootstrap-4.6.2/_dropdown.scss +192 -192
  14. package/assets/scss/bootstrap-4.6.2/_forms.scss +347 -347
  15. package/assets/scss/bootstrap-4.6.2/_functions.scss +190 -190
  16. package/assets/scss/bootstrap-4.6.2/_grid.scss +73 -73
  17. package/assets/scss/bootstrap-4.6.2/_images.scss +42 -42
  18. package/assets/scss/bootstrap-4.6.2/_input-group.scss +211 -211
  19. package/assets/scss/bootstrap-4.6.2/_jumbotron.scss +17 -17
  20. package/assets/scss/bootstrap-4.6.2/_list-group.scss +154 -154
  21. package/assets/scss/bootstrap-4.6.2/_media.scss +8 -8
  22. package/assets/scss/bootstrap-4.6.2/_mixins.scss +47 -47
  23. package/assets/scss/bootstrap-4.6.2/_modal.scss +240 -240
  24. package/assets/scss/bootstrap-4.6.2/_nav.scss +125 -125
  25. package/assets/scss/bootstrap-4.6.2/_navbar.scss +332 -332
  26. package/assets/scss/bootstrap-4.6.2/_pagination.scss +74 -74
  27. package/assets/scss/bootstrap-4.6.2/_popover.scss +170 -170
  28. package/assets/scss/bootstrap-4.6.2/_print.scss +132 -132
  29. package/assets/scss/bootstrap-4.6.2/_progress.scss +47 -47
  30. package/assets/scss/bootstrap-4.6.2/_reboot.scss +484 -484
  31. package/assets/scss/bootstrap-4.6.2/_root.scss +19 -19
  32. package/assets/scss/bootstrap-4.6.2/_spinners.scss +65 -65
  33. package/assets/scss/bootstrap-4.6.2/_tables.scss +185 -185
  34. package/assets/scss/bootstrap-4.6.2/_toasts.scss +46 -46
  35. package/assets/scss/bootstrap-4.6.2/_tooltip.scss +115 -115
  36. package/assets/scss/bootstrap-4.6.2/_transitions.scss +26 -26
  37. package/assets/scss/bootstrap-4.6.2/_type.scss +125 -125
  38. package/assets/scss/bootstrap-4.6.2/_utilities.scss +18 -18
  39. package/assets/scss/bootstrap-4.6.2/_variables.scss +1150 -1150
  40. package/assets/scss/bootstrap-4.6.2/bootstrap-grid.scss +30 -30
  41. package/assets/scss/bootstrap-4.6.2/bootstrap-reboot.scss +12 -12
  42. package/assets/scss/bootstrap-4.6.2/bootstrap.scss +44 -44
  43. package/assets/scss/bootstrap-4.6.2/mixins/_alert.scss +13 -13
  44. package/assets/scss/bootstrap-4.6.2/mixins/_background-variant.scss +23 -23
  45. package/assets/scss/bootstrap-4.6.2/mixins/_badge.scss +17 -17
  46. package/assets/scss/bootstrap-4.6.2/mixins/_border-radius.scss +76 -76
  47. package/assets/scss/bootstrap-4.6.2/mixins/_box-shadow.scss +20 -20
  48. package/assets/scss/bootstrap-4.6.2/mixins/_breakpoints.scss +123 -123
  49. package/assets/scss/bootstrap-4.6.2/mixins/_buttons.scss +110 -110
  50. package/assets/scss/bootstrap-4.6.2/mixins/_caret.scss +62 -62
  51. package/assets/scss/bootstrap-4.6.2/mixins/_clearfix.scss +7 -7
  52. package/assets/scss/bootstrap-4.6.2/mixins/_deprecate.scss +10 -10
  53. package/assets/scss/bootstrap-4.6.2/mixins/_float.scss +14 -14
  54. package/assets/scss/bootstrap-4.6.2/mixins/_forms.scss +195 -195
  55. package/assets/scss/bootstrap-4.6.2/mixins/_gradients.scss +45 -45
  56. package/assets/scss/bootstrap-4.6.2/mixins/_grid-framework.scss +80 -80
  57. package/assets/scss/bootstrap-4.6.2/mixins/_grid.scss +69 -69
  58. package/assets/scss/bootstrap-4.6.2/mixins/_hover.scss +37 -37
  59. package/assets/scss/bootstrap-4.6.2/mixins/_image.scss +36 -36
  60. package/assets/scss/bootstrap-4.6.2/mixins/_list-group.scss +21 -21
  61. package/assets/scss/bootstrap-4.6.2/mixins/_lists.scss +7 -7
  62. package/assets/scss/bootstrap-4.6.2/mixins/_nav-divider.scss +11 -11
  63. package/assets/scss/bootstrap-4.6.2/mixins/_pagination.scss +22 -22
  64. package/assets/scss/bootstrap-4.6.2/mixins/_reset-text.scss +17 -17
  65. package/assets/scss/bootstrap-4.6.2/mixins/_resize.scss +6 -6
  66. package/assets/scss/bootstrap-4.6.2/mixins/_screen-reader.scss +34 -34
  67. package/assets/scss/bootstrap-4.6.2/mixins/_size.scss +7 -7
  68. package/assets/scss/bootstrap-4.6.2/mixins/_table-row.scss +39 -39
  69. package/assets/scss/bootstrap-4.6.2/mixins/_text-emphasis.scss +17 -17
  70. package/assets/scss/bootstrap-4.6.2/mixins/_text-hide.scss +11 -11
  71. package/assets/scss/bootstrap-4.6.2/mixins/_text-truncate.scss +8 -8
  72. package/assets/scss/bootstrap-4.6.2/mixins/_transition.scss +26 -26
  73. package/assets/scss/bootstrap-4.6.2/mixins/_visibility.scss +8 -8
  74. package/assets/scss/bootstrap-4.6.2/utilities/_align.scss +8 -8
  75. package/assets/scss/bootstrap-4.6.2/utilities/_background.scss +19 -19
  76. package/assets/scss/bootstrap-4.6.2/utilities/_borders.scss +75 -75
  77. package/assets/scss/bootstrap-4.6.2/utilities/_clearfix.scss +3 -3
  78. package/assets/scss/bootstrap-4.6.2/utilities/_display.scss +26 -26
  79. package/assets/scss/bootstrap-4.6.2/utilities/_embed.scss +39 -39
  80. package/assets/scss/bootstrap-4.6.2/utilities/_flex.scss +51 -51
  81. package/assets/scss/bootstrap-4.6.2/utilities/_float.scss +11 -11
  82. package/assets/scss/bootstrap-4.6.2/utilities/_interactions.scss +5 -5
  83. package/assets/scss/bootstrap-4.6.2/utilities/_overflow.scss +5 -5
  84. package/assets/scss/bootstrap-4.6.2/utilities/_position.scss +32 -32
  85. package/assets/scss/bootstrap-4.6.2/utilities/_screenreaders.scss +11 -11
  86. package/assets/scss/bootstrap-4.6.2/utilities/_shadows.scss +6 -6
  87. package/assets/scss/bootstrap-4.6.2/utilities/_sizing.scss +20 -20
  88. package/assets/scss/bootstrap-4.6.2/utilities/_spacing.scss +73 -73
  89. package/assets/scss/bootstrap-4.6.2/utilities/_stretched-link.scss +19 -19
  90. package/assets/scss/bootstrap-4.6.2/utilities/_text.scss +72 -72
  91. package/assets/scss/bootstrap-4.6.2/utilities/_visibility.scss +13 -13
  92. package/assets/scss/bootstrap-4.6.2/vendor/_rfs.scss +228 -228
  93. package/assets/scss/core/print.scss +47 -47
  94. package/assets/scss/core/scrollbar.scss +30 -30
  95. package/assets/scss/core/typography.scss +121 -121
  96. package/components/anchor/index.d.ts +1 -0
  97. package/components/anchor/src/components/anchor-item/anchor-item.component.d.ts +8 -11
  98. package/components/anchor/src/components/anchor-vertical/anchor-list/anchor-list.component.d.ts +12 -13
  99. package/components/anchor/src/components/main/main.component.d.ts +13 -18
  100. package/components/anchor/src/models/anchor.model.d.ts +7 -0
  101. package/components/anchor/src/models/index.d.ts +1 -0
  102. package/components/editor/src/models/image-upload.plugin.model.d.ts +1 -3
  103. package/components/tab-router/src/components/tab-router-nav/tab-router-nav.component.d.ts +5 -6
  104. package/components/tab-router/src/components/tab-router-outlet/tab-router-outlet.component.d.ts +3 -2
  105. package/fesm2022/sd-angular-core-components-anchor-v2.mjs +4 -4
  106. package/fesm2022/sd-angular-core-components-anchor-v2.mjs.map +1 -1
  107. package/fesm2022/sd-angular-core-components-anchor.mjs +115 -210
  108. package/fesm2022/sd-angular-core-components-anchor.mjs.map +1 -1
  109. package/fesm2022/sd-angular-core-components-avatar.mjs +2 -2
  110. package/fesm2022/sd-angular-core-components-avatar.mjs.map +1 -1
  111. package/fesm2022/sd-angular-core-components-chart.mjs +40 -40
  112. package/fesm2022/sd-angular-core-components-chart.mjs.map +1 -1
  113. package/fesm2022/sd-angular-core-components-editor.mjs +3 -1
  114. package/fesm2022/sd-angular-core-components-editor.mjs.map +1 -1
  115. package/fesm2022/sd-angular-core-components-quick-action.mjs.map +1 -1
  116. package/fesm2022/sd-angular-core-components-tab-router.mjs +40 -36
  117. package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
  118. package/fesm2022/sd-angular-core-components-table.mjs +6 -6
  119. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  120. package/fesm2022/sd-angular-core-components-upload-file.mjs +13 -13
  121. package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
  122. package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
  123. package/fesm2022/sd-angular-core-forms-directives.mjs.map +1 -1
  124. package/fesm2022/sd-angular-core-forms-models.mjs.map +1 -1
  125. package/fesm2022/sd-angular-core-forms-select.mjs +6 -3
  126. package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
  127. package/fesm2022/sd-angular-core-forms.mjs.map +1 -1
  128. package/fesm2022/sd-angular-core-interceptors.mjs +24 -1
  129. package/fesm2022/sd-angular-core-interceptors.mjs.map +1 -1
  130. package/fesm2022/sd-angular-core-modules-authom.mjs.map +1 -1
  131. package/fesm2022/sd-angular-core-modules-layout.mjs +16 -12
  132. package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
  133. package/fesm2022/sd-angular-core-pipes.mjs.map +1 -1
  134. package/fesm2022/sd-angular-core-services-api.mjs.map +1 -1
  135. package/fesm2022/sd-angular-core-services-cache.mjs.map +1 -1
  136. package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
  137. package/fesm2022/sd-angular-core-services-firebase.mjs.map +1 -1
  138. package/fesm2022/sd-angular-core-services-license.mjs.map +1 -1
  139. package/fesm2022/sd-angular-core-services-storage.mjs.map +1 -1
  140. package/fesm2022/sd-angular-core-utilities-extensions.mjs.map +1 -1
  141. package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
  142. package/fesm2022/sd-angular-core.mjs.map +1 -1
  143. package/forms/select/src/select.component.d.ts +1 -1
  144. package/interceptors/index.d.ts +1 -0
  145. package/interceptors/unauthorized/unauthorized.interceptor.d.ts +12 -0
  146. package/package.json +35 -35
  147. package/sd-angular-core-19.0.0-beta.88.tgz +0 -0
  148. package/components/anchor/src/components/anchor-horizontal/anchor-list/anchor-list.component.d.ts +0 -16
  149. package/components/anchor/src/services/anchor.service.d.ts +0 -12
  150. package/components/anchor/src/services/index.d.ts +0 -1
  151. package/sd-angular-core-19.0.0-beta.86.tgz +0 -0
@@ -43,11 +43,11 @@ class SdPageComponent {
43
43
  });
44
44
  }
45
45
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
46
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.21", type: SdPageComponent, isStandalone: true, selector: "sd-page", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, noHeader: { classPropertyName: "noHeader", publicName: "noHeader", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (!noHeader()) {\r\n <div class=\"c-page-header bg-white\">\r\n <div class=\"p-16 d-flex align-items-center w-full justify-content-between\">\r\n <div class=\"d-flex\">\r\n <ng-content select=\"[headerLeft]\">\r\n <div class=\"d-flex flex-column\">\r\n <div class=\"T20M\">{{ title() }}</div>\r\n @if (description()) {\r\n <div class=\"T14R text-secondary mt-4\">{{ description() }}</div>\r\n }\r\n </div>\r\n </ng-content>\r\n </div>\r\n <ng-content select=\"[headerRight]\"></ng-content>\r\n </div>\r\n </div>\r\n}\r\n\r\n<div class=\"c-page-wrapper px-0\">\r\n <div class=\"c-page-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [":host{height:100%;display:flex;flex-direction:column;background-color:#f9f9f9}.c-page-header{box-shadow:0 1px 2px #2f31361a;z-index:1;position:relative}.c-page-wrapper{flex:1;display:flex;flex-direction:row;width:100%;overflow-y:auto;max-height:100vh}.c-page-wrapper .c-page-content{flex:1;height:100%;width:100%}.c-page-wrapper .c-page-right{position:-webkit-sticky;position:sticky;top:0;height:100%;overflow-y:auto}\n"] });
46
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.21", type: SdPageComponent, isStandalone: true, selector: "sd-page", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, noHeader: { classPropertyName: "noHeader", publicName: "noHeader", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (!noHeader()) {\n <div class=\"c-page-header bg-white\">\n <div class=\"p-16 d-flex align-items-center w-full justify-content-between\">\n <div class=\"d-flex\">\n <ng-content select=\"[headerLeft]\">\n <div class=\"d-flex flex-column\">\n <div class=\"T20M\">{{ title() }}</div>\n @if (description()) {\n <div class=\"T14R text-secondary mt-4\">{{ description() }}</div>\n }\n </div>\n </ng-content>\n </div>\n <ng-content select=\"[headerRight]\"></ng-content>\n </div>\n </div>\n}\n\n<div class=\"c-page-wrapper px-0\">\n <div class=\"c-page-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{height:100%;display:flex;flex-direction:column;background-color:#f9f9f9}.c-page-header{box-shadow:0 1px 2px #2f31361a;z-index:1;position:relative}.c-page-wrapper{flex:1;display:flex;flex-direction:row;width:100%;overflow-y:auto;max-height:100vh}.c-page-wrapper .c-page-content{flex:1;height:100%;width:100%}.c-page-wrapper .c-page-right{position:-webkit-sticky;position:sticky;top:0;height:100%;overflow-y:auto}\n"] });
47
47
  }
48
48
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdPageComponent, decorators: [{
49
49
  type: Component,
50
- args: [{ selector: 'sd-page', template: "@if (!noHeader()) {\r\n <div class=\"c-page-header bg-white\">\r\n <div class=\"p-16 d-flex align-items-center w-full justify-content-between\">\r\n <div class=\"d-flex\">\r\n <ng-content select=\"[headerLeft]\">\r\n <div class=\"d-flex flex-column\">\r\n <div class=\"T20M\">{{ title() }}</div>\r\n @if (description()) {\r\n <div class=\"T14R text-secondary mt-4\">{{ description() }}</div>\r\n }\r\n </div>\r\n </ng-content>\r\n </div>\r\n <ng-content select=\"[headerRight]\"></ng-content>\r\n </div>\r\n </div>\r\n}\r\n\r\n<div class=\"c-page-wrapper px-0\">\r\n <div class=\"c-page-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [":host{height:100%;display:flex;flex-direction:column;background-color:#f9f9f9}.c-page-header{box-shadow:0 1px 2px #2f31361a;z-index:1;position:relative}.c-page-wrapper{flex:1;display:flex;flex-direction:row;width:100%;overflow-y:auto;max-height:100vh}.c-page-wrapper .c-page-content{flex:1;height:100%;width:100%}.c-page-wrapper .c-page-right{position:-webkit-sticky;position:sticky;top:0;height:100%;overflow-y:auto}\n"] }]
50
+ args: [{ selector: 'sd-page', template: "@if (!noHeader()) {\n <div class=\"c-page-header bg-white\">\n <div class=\"p-16 d-flex align-items-center w-full justify-content-between\">\n <div class=\"d-flex\">\n <ng-content select=\"[headerLeft]\">\n <div class=\"d-flex flex-column\">\n <div class=\"T20M\">{{ title() }}</div>\n @if (description()) {\n <div class=\"T14R text-secondary mt-4\">{{ description() }}</div>\n }\n </div>\n </ng-content>\n </div>\n <ng-content select=\"[headerRight]\"></ng-content>\n </div>\n </div>\n}\n\n<div class=\"c-page-wrapper px-0\">\n <div class=\"c-page-content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{height:100%;display:flex;flex-direction:column;background-color:#f9f9f9}.c-page-header{box-shadow:0 1px 2px #2f31361a;z-index:1;position:relative}.c-page-wrapper{flex:1;display:flex;flex-direction:row;width:100%;overflow-y:auto;max-height:100vh}.c-page-wrapper .c-page-content{flex:1;height:100%;width:100%}.c-page-wrapper .c-page-right{position:-webkit-sticky;position:sticky;top:0;height:100%;overflow-y:auto}\n"] }]
51
51
  }], ctorParameters: () => [] });
52
52
 
53
53
  class SdLayoutStorageService {
@@ -383,7 +383,7 @@ class SidebarComponent {
383
383
  // DATA STRUCTURES
384
384
  // ==========================================
385
385
  dataSource = new MatTreeNestedDataSource();
386
- treeControl = new NestedTreeControl(node => 'children' in node && node.children?.length ? node.children : []);
386
+ treeControl = new NestedTreeControl(node => ('children' in node && node.children?.length ? node.children : []));
387
387
  constructor() {
388
388
  // 1. EFFECT: Lắng nghe menus đầu vào thay đổi
389
389
  effect(() => {
@@ -677,7 +677,7 @@ class SidebarComponent {
677
677
  return true;
678
678
  return this.#normalizePath(this.currentPath()).startsWith(this.#normalizePath(path));
679
679
  };
680
- #normalizePath = (p) => p.endsWith('/') ? p : p + '/';
680
+ #normalizePath = (p) => (p.endsWith('/') ? p : p + '/');
681
681
  #closeMenu() {
682
682
  this.showSideBar.emit(null);
683
683
  }
@@ -690,7 +690,10 @@ class SidebarComponent {
690
690
  if (hexRegex.test(input)) {
691
691
  let hex = input.slice(1);
692
692
  if (hex.length === 3) {
693
- hex = hex.split('').map(c => c + c).join('');
693
+ hex = hex
694
+ .split('')
695
+ .map(c => c + c)
696
+ .join('');
694
697
  }
695
698
  const r = parseInt(hex.substring(0, 2), 16);
696
699
  const g = parseInt(hex.substring(2, 4), 16);
@@ -713,14 +716,15 @@ class SidebarComponent {
713
716
  return str.trim();
714
717
  };
715
718
  #getTotalMenus = (menus) => {
716
- return menus.reduce((total, menu) => total + this.#countMenuNode(menu), 0);
719
+ return menus.reduce((total, menu) => total + this.#countMenuChildrenNode(menu), 0);
717
720
  };
718
- #countMenuNode = (menu) => {
719
- let count = 0;
720
- if ('children' in menu && menu.children?.length) {
721
- for (const child of menu.children) {
722
- count += this.#countMenuNode(child);
723
- }
721
+ #countMenuChildrenNode = (menu) => {
722
+ if (!('children' in menu) || !menu.children?.length) {
723
+ return 0;
724
+ }
725
+ let count = menu.children.length;
726
+ for (const child of menu.children) {
727
+ count += this.#countMenuChildrenNode(child);
724
728
  }
725
729
  return count;
726
730
  };