@sd-angular/core 19.0.12 → 19.0.14

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 (167) hide show
  1. package/README.md +712 -712
  2. package/assets/STYLE-GUIDE.md +601 -601
  3. package/assets/images/coming-soon.svg +22 -22
  4. package/assets/images/data-empty.svg +20 -20
  5. package/assets/images/expired.svg +21 -21
  6. package/assets/images/file-error.svg +27 -27
  7. package/assets/images/filter-empty.svg +19 -19
  8. package/assets/images/filter-required.svg +20 -20
  9. package/assets/images/forbidden.svg +14 -14
  10. package/assets/images/image-error.svg +26 -26
  11. package/assets/images/maintenance.svg +22 -22
  12. package/assets/images/not-found.svg +19 -19
  13. package/assets/images/offline.svg +19 -19
  14. package/assets/images/submitted.svg +17 -17
  15. package/assets/images/success.svg +17 -17
  16. package/assets/images/unauthorized.svg +21 -21
  17. package/assets/images/unknown-error.svg +17 -17
  18. package/assets/scss/ckeditor5.scss +88 -88
  19. package/assets/scss/core/_inline-edit.scss +105 -105
  20. package/assets/scss/core/color.scss +73 -73
  21. package/assets/scss/core/form.scss +317 -317
  22. package/assets/scss/core/image.scss +35 -35
  23. package/assets/scss/core/utilities/_base.scss +333 -333
  24. package/assets/scss/core/utilities/_border.scss +22 -22
  25. package/assets/scss/core/utilities/_display.scss +10 -10
  26. package/assets/scss/core/utilities/_elevation.scss +80 -80
  27. package/assets/scss/core/utilities/_flexbox.scss +54 -54
  28. package/assets/scss/core/utilities/_gap.scss +9 -9
  29. package/assets/scss/core/utilities/_index.scss +17 -17
  30. package/assets/scss/core/utilities/_misc.scss +20 -20
  31. package/assets/scss/core/utilities/_overflow.scss +9 -9
  32. package/assets/scss/core/utilities/_position.scss +8 -8
  33. package/assets/scss/core/utilities/_sizing.scss +28 -28
  34. package/assets/scss/core/utilities/_spacing.scss +31 -31
  35. package/assets/scss/core/utilities/_typography.scss +99 -99
  36. package/assets/scss/sd-core.scss +16 -16
  37. package/assets/scss/themes/default.scss +45 -45
  38. package/assets/scss/themes/material-theme.scss +101 -101
  39. package/components/preview/src/preview-pdf/pdf-worker-inline.generated.d.ts +7 -0
  40. package/components/table/src/services/table-export/table-export.service.d.ts +3 -1
  41. package/components/table/src/table.component.d.ts +1 -1
  42. package/fesm2022/sd-angular-core-components-anchor.mjs +6 -6
  43. package/fesm2022/sd-angular-core-components-anchor.mjs.map +1 -1
  44. package/fesm2022/sd-angular-core-components-autoid-inspector.mjs +2 -2
  45. package/fesm2022/sd-angular-core-components-autoid-inspector.mjs.map +1 -1
  46. package/fesm2022/sd-angular-core-components-badge.mjs +2 -2
  47. package/fesm2022/sd-angular-core-components-badge.mjs.map +1 -1
  48. package/fesm2022/sd-angular-core-components-base.mjs.map +1 -1
  49. package/fesm2022/sd-angular-core-components-button.mjs +2 -2
  50. package/fesm2022/sd-angular-core-components-button.mjs.map +1 -1
  51. package/fesm2022/sd-angular-core-components-chart.mjs +40 -40
  52. package/fesm2022/sd-angular-core-components-chart.mjs.map +1 -1
  53. package/fesm2022/sd-angular-core-components-ckeditor-styles.mjs.map +1 -1
  54. package/fesm2022/sd-angular-core-components-code-editor.mjs +2 -2
  55. package/fesm2022/sd-angular-core-components-code-editor.mjs.map +1 -1
  56. package/fesm2022/sd-angular-core-components-document-builder.mjs +77 -77
  57. package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
  58. package/fesm2022/sd-angular-core-components-editor.mjs +2 -2
  59. package/fesm2022/sd-angular-core-components-editor.mjs.map +1 -1
  60. package/fesm2022/sd-angular-core-components-form-generic.mjs +106 -106
  61. package/fesm2022/sd-angular-core-components-form-generic.mjs.map +1 -1
  62. package/fesm2022/sd-angular-core-components-history.mjs +2 -2
  63. package/fesm2022/sd-angular-core-components-history.mjs.map +1 -1
  64. package/fesm2022/sd-angular-core-components-import-excel.mjs +2 -2
  65. package/fesm2022/sd-angular-core-components-import-excel.mjs.map +1 -1
  66. package/fesm2022/sd-angular-core-components-inform.mjs.map +1 -1
  67. package/fesm2022/sd-angular-core-components-mini-editor.mjs +2 -2
  68. package/fesm2022/sd-angular-core-components-mini-editor.mjs.map +1 -1
  69. package/fesm2022/sd-angular-core-components-modal-resizable.mjs +2 -2
  70. package/fesm2022/sd-angular-core-components-modal-resizable.mjs.map +1 -1
  71. package/fesm2022/sd-angular-core-components-modal.mjs +2 -2
  72. package/fesm2022/sd-angular-core-components-modal.mjs.map +1 -1
  73. package/fesm2022/sd-angular-core-components-operator.mjs +2 -2
  74. package/fesm2022/sd-angular-core-components-operator.mjs.map +1 -1
  75. package/fesm2022/sd-angular-core-components-org-chart.mjs +2 -2
  76. package/fesm2022/sd-angular-core-components-org-chart.mjs.map +1 -1
  77. package/fesm2022/sd-angular-core-components-preview.mjs +32 -6
  78. package/fesm2022/sd-angular-core-components-preview.mjs.map +1 -1
  79. package/fesm2022/sd-angular-core-components-query-bar.mjs +10 -10
  80. package/fesm2022/sd-angular-core-components-query-bar.mjs.map +1 -1
  81. package/fesm2022/sd-angular-core-components-query-builder.mjs +2 -2
  82. package/fesm2022/sd-angular-core-components-query-builder.mjs.map +1 -1
  83. package/fesm2022/sd-angular-core-components-section.mjs +4 -4
  84. package/fesm2022/sd-angular-core-components-section.mjs.map +1 -1
  85. package/fesm2022/sd-angular-core-components-side-drawer.mjs +2 -2
  86. package/fesm2022/sd-angular-core-components-side-drawer.mjs.map +1 -1
  87. package/fesm2022/sd-angular-core-components-stepper.mjs +2 -2
  88. package/fesm2022/sd-angular-core-components-stepper.mjs.map +1 -1
  89. package/fesm2022/sd-angular-core-components-tab-router.mjs +6 -6
  90. package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
  91. package/fesm2022/sd-angular-core-components-tab.mjs +2 -2
  92. package/fesm2022/sd-angular-core-components-tab.mjs.map +1 -1
  93. package/fesm2022/sd-angular-core-components-table.mjs +32 -17
  94. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  95. package/fesm2022/sd-angular-core-components-upload-file.mjs +4 -4
  96. package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
  97. package/fesm2022/sd-angular-core-components-view.mjs +2 -2
  98. package/fesm2022/sd-angular-core-components-view.mjs.map +1 -1
  99. package/fesm2022/sd-angular-core-configurations.mjs.map +1 -1
  100. package/fesm2022/sd-angular-core-directives.mjs +20 -20
  101. package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
  102. package/fesm2022/sd-angular-core-forms-autocomplete.mjs +2 -2
  103. package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
  104. package/fesm2022/sd-angular-core-forms-checkbox.mjs +2 -2
  105. package/fesm2022/sd-angular-core-forms-checkbox.mjs.map +1 -1
  106. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs +2 -2
  107. package/fesm2022/sd-angular-core-forms-chip-calendar.mjs.map +1 -1
  108. package/fesm2022/sd-angular-core-forms-chip.mjs +2 -2
  109. package/fesm2022/sd-angular-core-forms-chip.mjs.map +1 -1
  110. package/fesm2022/sd-angular-core-forms-date-range.mjs +2 -2
  111. package/fesm2022/sd-angular-core-forms-date-range.mjs.map +1 -1
  112. package/fesm2022/sd-angular-core-forms-date.mjs +114 -35
  113. package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
  114. package/fesm2022/sd-angular-core-forms-datetime.mjs +6 -6
  115. package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
  116. package/fesm2022/sd-angular-core-forms-directives.mjs.map +1 -1
  117. package/fesm2022/sd-angular-core-forms-inline-text.mjs +2 -2
  118. package/fesm2022/sd-angular-core-forms-inline-text.mjs.map +1 -1
  119. package/fesm2022/sd-angular-core-forms-input-color.mjs +2 -2
  120. package/fesm2022/sd-angular-core-forms-input-color.mjs.map +1 -1
  121. package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
  122. package/fesm2022/sd-angular-core-forms-input.mjs +2 -2
  123. package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
  124. package/fesm2022/sd-angular-core-forms-label.mjs +2 -2
  125. package/fesm2022/sd-angular-core-forms-label.mjs.map +1 -1
  126. package/fesm2022/sd-angular-core-forms-models.mjs.map +1 -1
  127. package/fesm2022/sd-angular-core-forms-radio.mjs +2 -2
  128. package/fesm2022/sd-angular-core-forms-radio.mjs.map +1 -1
  129. package/fesm2022/sd-angular-core-forms-select.mjs +2 -2
  130. package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
  131. package/fesm2022/sd-angular-core-forms-switch.mjs +2 -2
  132. package/fesm2022/sd-angular-core-forms-switch.mjs.map +1 -1
  133. package/fesm2022/sd-angular-core-forms-textarea.mjs +2 -2
  134. package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
  135. package/fesm2022/sd-angular-core-handlers.mjs.map +1 -1
  136. package/fesm2022/sd-angular-core-i18n.mjs +20 -0
  137. package/fesm2022/sd-angular-core-i18n.mjs.map +1 -1
  138. package/fesm2022/sd-angular-core-interceptors.mjs.map +1 -1
  139. package/fesm2022/sd-angular-core-modules-auth.mjs.map +1 -1
  140. package/fesm2022/sd-angular-core-modules-authom.mjs.map +1 -1
  141. package/fesm2022/sd-angular-core-modules-keycloak.mjs.map +1 -1
  142. package/fesm2022/sd-angular-core-modules-layout.mjs +145 -46
  143. package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
  144. package/fesm2022/sd-angular-core-modules-permission.mjs.map +1 -1
  145. package/fesm2022/sd-angular-core-pipes.mjs.map +1 -1
  146. package/fesm2022/sd-angular-core-services-api.mjs.map +1 -1
  147. package/fesm2022/sd-angular-core-services-cache.mjs.map +1 -1
  148. package/fesm2022/sd-angular-core-services-confirm.mjs +2 -2
  149. package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
  150. package/fesm2022/sd-angular-core-services-docx.mjs.map +1 -1
  151. package/fesm2022/sd-angular-core-services-excel.mjs.map +1 -1
  152. package/fesm2022/sd-angular-core-services-license.mjs.map +1 -1
  153. package/fesm2022/sd-angular-core-services-loading.mjs +5 -5
  154. package/fesm2022/sd-angular-core-services-loading.mjs.map +1 -1
  155. package/fesm2022/sd-angular-core-services-notify.mjs +12 -12
  156. package/fesm2022/sd-angular-core-services-notify.mjs.map +1 -1
  157. package/fesm2022/sd-angular-core-services-storage.mjs.map +1 -1
  158. package/fesm2022/sd-angular-core-utilities-data-state.mjs.map +1 -1
  159. package/fesm2022/sd-angular-core-utilities-extensions.mjs.map +1 -1
  160. package/forms/date/src/date.component.d.ts +9 -1
  161. package/i18n/src/en.d.ts +4 -0
  162. package/modules/layout/components/sidebar-v1/main.component.d.ts +1 -0
  163. package/modules/layout/index.d.ts +1 -0
  164. package/modules/layout/utils/index.d.ts +1 -0
  165. package/modules/layout/utils/tab-name.util.d.ts +8 -0
  166. package/package.json +41 -41
  167. package/sd-angular-core-19.0.12.tgz +0 -0
@@ -1,22 +1,22 @@
1
- // --------------------------------------------------------------------------
2
- // Border-radius (px-based, 0–200)
3
- // rounded-0 … rounded-200 | rounded-full
4
- // --------------------------------------------------------------------------
5
- @for $i from 0 through 200 {
6
- .rounded-#{$i} { border-radius: #{$i}px !important; }
7
- }
8
-
9
- .rounded-full { border-radius: 9999px !important; }
10
-
11
- // --------------------------------------------------------------------------
12
- // Border utilities
13
- // border | border-0 | border-top | border-bottom | border-left | border-right
14
- // --------------------------------------------------------------------------
15
- $_border-color: var(--sd-black200);
16
-
17
- .border { border: 1px solid $_border-color !important; }
18
- .border-0 { border: 0 !important; }
19
- .border-top { border-top: 1px solid $_border-color !important; }
20
- .border-bottom { border-bottom: 1px solid $_border-color !important; }
21
- .border-left { border-left: 1px solid $_border-color !important; }
22
- .border-right { border-right: 1px solid $_border-color !important; }
1
+ // --------------------------------------------------------------------------
2
+ // Border-radius (px-based, 0–200)
3
+ // rounded-0 … rounded-200 | rounded-full
4
+ // --------------------------------------------------------------------------
5
+ @for $i from 0 through 200 {
6
+ .rounded-#{$i} { border-radius: #{$i}px !important; }
7
+ }
8
+
9
+ .rounded-full { border-radius: 9999px !important; }
10
+
11
+ // --------------------------------------------------------------------------
12
+ // Border utilities
13
+ // border | border-0 | border-top | border-bottom | border-left | border-right
14
+ // --------------------------------------------------------------------------
15
+ $_border-color: var(--sd-black200);
16
+
17
+ .border { border: 1px solid $_border-color !important; }
18
+ .border-0 { border: 0 !important; }
19
+ .border-top { border-top: 1px solid $_border-color !important; }
20
+ .border-bottom { border-bottom: 1px solid $_border-color !important; }
21
+ .border-left { border-left: 1px solid $_border-color !important; }
22
+ .border-right { border-right: 1px solid $_border-color !important; }
@@ -1,10 +1,10 @@
1
- // --------------------------------------------------------------------------
2
- // Display
3
- // --------------------------------------------------------------------------
4
- .d-none { display: none !important; }
5
- .d-block { display: block !important; }
6
- .d-inline { display: inline !important; }
7
- .d-inline-block { display: inline-block !important; }
8
- .d-flex { display: flex !important; }
9
- .d-inline-flex { display: inline-flex !important; }
10
- .d-grid { display: grid !important; }
1
+ // --------------------------------------------------------------------------
2
+ // Display
3
+ // --------------------------------------------------------------------------
4
+ .d-none { display: none !important; }
5
+ .d-block { display: block !important; }
6
+ .d-inline { display: inline !important; }
7
+ .d-inline-block { display: inline-block !important; }
8
+ .d-flex { display: flex !important; }
9
+ .d-inline-flex { display: inline-flex !important; }
10
+ .d-grid { display: grid !important; }
@@ -1,80 +1,80 @@
1
- // --------------------------------------------------------------------------
2
- // Elevation — CSS tĩnh cho Angular Material shadow levels (Light Mode)
3
- // Thay thế Angular Material mixin `mat.elevation()` bằng CSS cứng để
4
- // tránh phụ thuộc vào Material theme SCSS khi cần dùng elevation riêng lẻ.
5
- //
6
- // Tương đương: mat-elevation-z{0..8}
7
- // Nguồn shadow: Material Design spec (3 lớp: ambient + penumbra + umbra)
8
- // --------------------------------------------------------------------------
9
-
10
- // z0 — không có shadow (dùng để reset)
11
- .mat-elevation-z0 {
12
- box-shadow:
13
- 0px 0px 0px 0px rgba(0, 0, 0, 0.2),
14
- 0px 0px 0px 0px rgba(0, 0, 0, 0.14),
15
- 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
16
- }
17
-
18
- // z1 — surface nhẹ (card, chip)
19
- .mat-elevation-z1 {
20
- box-shadow:
21
- 0px 2px 1px -1px rgba(0, 0, 0, 0.2),
22
- 0px 1px 1px 0px rgba(0, 0, 0, 0.14),
23
- 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
24
- }
25
-
26
- // z2 — button raised
27
- .mat-elevation-z2 {
28
- box-shadow:
29
- 0px 3px 1px -2px rgba(0, 0, 0, 0.2),
30
- 0px 2px 2px 0px rgba(0, 0, 0, 0.14),
31
- 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
32
- }
33
-
34
- // z3 — card hover
35
- .mat-elevation-z3 {
36
- box-shadow:
37
- 0px 3px 3px -2px rgba(0, 0, 0, 0.2),
38
- 0px 3px 4px 0px rgba(0, 0, 0, 0.14),
39
- 0px 1px 8px 0px rgba(0, 0, 0, 0.12);
40
- }
41
-
42
- // z4 — app bar
43
- .mat-elevation-z4 {
44
- box-shadow:
45
- 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
46
- 0px 4px 5px 0px rgba(0, 0, 0, 0.14),
47
- 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
48
- }
49
-
50
- // z5
51
- .mat-elevation-z5 {
52
- box-shadow:
53
- 0px 3px 5px -1px rgba(0, 0, 0, 0.2),
54
- 0px 5px 8px 0px rgba(0, 0, 0, 0.14),
55
- 0px 1px 14px 0px rgba(0, 0, 0, 0.12);
56
- }
57
-
58
- // z6 — floating action button
59
- .mat-elevation-z6 {
60
- box-shadow:
61
- 0px 3px 5px -1px rgba(0, 0, 0, 0.2),
62
- 0px 6px 10px 0px rgba(0, 0, 0, 0.14),
63
- 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
64
- }
65
-
66
- // z7
67
- .mat-elevation-z7 {
68
- box-shadow:
69
- 0px 4px 5px -2px rgba(0, 0, 0, 0.2),
70
- 0px 7px 10px 1px rgba(0, 0, 0, 0.14),
71
- 0px 2px 16px 1px rgba(0, 0, 0, 0.12);
72
- }
73
-
74
- // z8 — dialog, drawer
75
- .mat-elevation-z8 {
76
- box-shadow:
77
- 0px 5px 5px -3px rgba(0, 0, 0, 0.2),
78
- 0px 8px 10px 1px rgba(0, 0, 0, 0.14),
79
- 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
80
- }
1
+ // --------------------------------------------------------------------------
2
+ // Elevation — CSS tĩnh cho Angular Material shadow levels (Light Mode)
3
+ // Thay thế Angular Material mixin `mat.elevation()` bằng CSS cứng để
4
+ // tránh phụ thuộc vào Material theme SCSS khi cần dùng elevation riêng lẻ.
5
+ //
6
+ // Tương đương: mat-elevation-z{0..8}
7
+ // Nguồn shadow: Material Design spec (3 lớp: ambient + penumbra + umbra)
8
+ // --------------------------------------------------------------------------
9
+
10
+ // z0 — không có shadow (dùng để reset)
11
+ .mat-elevation-z0 {
12
+ box-shadow:
13
+ 0px 0px 0px 0px rgba(0, 0, 0, 0.2),
14
+ 0px 0px 0px 0px rgba(0, 0, 0, 0.14),
15
+ 0px 0px 0px 0px rgba(0, 0, 0, 0.12);
16
+ }
17
+
18
+ // z1 — surface nhẹ (card, chip)
19
+ .mat-elevation-z1 {
20
+ box-shadow:
21
+ 0px 2px 1px -1px rgba(0, 0, 0, 0.2),
22
+ 0px 1px 1px 0px rgba(0, 0, 0, 0.14),
23
+ 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
24
+ }
25
+
26
+ // z2 — button raised
27
+ .mat-elevation-z2 {
28
+ box-shadow:
29
+ 0px 3px 1px -2px rgba(0, 0, 0, 0.2),
30
+ 0px 2px 2px 0px rgba(0, 0, 0, 0.14),
31
+ 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
32
+ }
33
+
34
+ // z3 — card hover
35
+ .mat-elevation-z3 {
36
+ box-shadow:
37
+ 0px 3px 3px -2px rgba(0, 0, 0, 0.2),
38
+ 0px 3px 4px 0px rgba(0, 0, 0, 0.14),
39
+ 0px 1px 8px 0px rgba(0, 0, 0, 0.12);
40
+ }
41
+
42
+ // z4 — app bar
43
+ .mat-elevation-z4 {
44
+ box-shadow:
45
+ 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
46
+ 0px 4px 5px 0px rgba(0, 0, 0, 0.14),
47
+ 0px 1px 10px 0px rgba(0, 0, 0, 0.12);
48
+ }
49
+
50
+ // z5
51
+ .mat-elevation-z5 {
52
+ box-shadow:
53
+ 0px 3px 5px -1px rgba(0, 0, 0, 0.2),
54
+ 0px 5px 8px 0px rgba(0, 0, 0, 0.14),
55
+ 0px 1px 14px 0px rgba(0, 0, 0, 0.12);
56
+ }
57
+
58
+ // z6 — floating action button
59
+ .mat-elevation-z6 {
60
+ box-shadow:
61
+ 0px 3px 5px -1px rgba(0, 0, 0, 0.2),
62
+ 0px 6px 10px 0px rgba(0, 0, 0, 0.14),
63
+ 0px 1px 18px 0px rgba(0, 0, 0, 0.12);
64
+ }
65
+
66
+ // z7
67
+ .mat-elevation-z7 {
68
+ box-shadow:
69
+ 0px 4px 5px -2px rgba(0, 0, 0, 0.2),
70
+ 0px 7px 10px 1px rgba(0, 0, 0, 0.14),
71
+ 0px 2px 16px 1px rgba(0, 0, 0, 0.12);
72
+ }
73
+
74
+ // z8 — dialog, drawer
75
+ .mat-elevation-z8 {
76
+ box-shadow:
77
+ 0px 5px 5px -3px rgba(0, 0, 0, 0.2),
78
+ 0px 8px 10px 1px rgba(0, 0, 0, 0.14),
79
+ 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
80
+ }
@@ -1,54 +1,54 @@
1
- // --------------------------------------------------------------------------
2
- // Flexbox
3
- // --------------------------------------------------------------------------
4
-
5
- // Flex shorthand
6
- .flex-1 { flex: 1 !important; }
7
- .flex-none { flex: none !important; }
8
- .flex-auto { flex: auto !important; }
9
-
10
- // Direction
11
- .flex-row { flex-direction: row !important; }
12
- .flex-column { flex-direction: column !important; }
13
- .flex-row-reverse { flex-direction: row-reverse !important; }
14
- .flex-column-reverse { flex-direction: column-reverse !important; }
15
-
16
- // Wrap
17
- .flex-wrap { flex-wrap: wrap !important; }
18
- .flex-nowrap { flex-wrap: nowrap !important; }
19
-
20
- // Grow & shrink
21
- .flex-grow-0 { flex-grow: 0 !important; }
22
- .flex-grow-1 { flex-grow: 1 !important; }
23
- .flex-shrink-0 { flex-shrink: 0 !important; }
24
- .flex-shrink-1 { flex-shrink: 1 !important; }
25
-
26
- // align-items
27
- .align-items-start { align-items: flex-start !important; }
28
- .align-items-end { align-items: flex-end !important; }
29
- .align-items-center { align-items: center !important; }
30
- .align-items-baseline { align-items: baseline !important; }
31
- .align-items-stretch { align-items: stretch !important; }
32
-
33
- // align-self
34
- .align-self-start { align-self: flex-start !important; }
35
- .align-self-end { align-self: flex-end !important; }
36
- .align-self-center { align-self: center !important; }
37
- .align-self-stretch { align-self: stretch !important; }
38
- .align-self-auto { align-self: auto !important; }
39
-
40
- // align-content
41
- .align-content-start { align-content: flex-start !important; }
42
- .align-content-end { align-content: flex-end !important; }
43
- .align-content-center { align-content: center !important; }
44
- .align-content-between { align-content: space-between !important; }
45
- .align-content-around { align-content: space-around !important; }
46
- .align-content-stretch { align-content: stretch !important; }
47
-
48
- // justify-content
49
- .justify-content-start { justify-content: flex-start !important; }
50
- .justify-content-end { justify-content: flex-end !important; }
51
- .justify-content-center { justify-content: center !important; }
52
- .justify-content-between { justify-content: space-between !important; }
53
- .justify-content-around { justify-content: space-around !important; }
54
- .justify-content-evenly { justify-content: space-evenly !important; }
1
+ // --------------------------------------------------------------------------
2
+ // Flexbox
3
+ // --------------------------------------------------------------------------
4
+
5
+ // Flex shorthand
6
+ .flex-1 { flex: 1 !important; }
7
+ .flex-none { flex: none !important; }
8
+ .flex-auto { flex: auto !important; }
9
+
10
+ // Direction
11
+ .flex-row { flex-direction: row !important; }
12
+ .flex-column { flex-direction: column !important; }
13
+ .flex-row-reverse { flex-direction: row-reverse !important; }
14
+ .flex-column-reverse { flex-direction: column-reverse !important; }
15
+
16
+ // Wrap
17
+ .flex-wrap { flex-wrap: wrap !important; }
18
+ .flex-nowrap { flex-wrap: nowrap !important; }
19
+
20
+ // Grow & shrink
21
+ .flex-grow-0 { flex-grow: 0 !important; }
22
+ .flex-grow-1 { flex-grow: 1 !important; }
23
+ .flex-shrink-0 { flex-shrink: 0 !important; }
24
+ .flex-shrink-1 { flex-shrink: 1 !important; }
25
+
26
+ // align-items
27
+ .align-items-start { align-items: flex-start !important; }
28
+ .align-items-end { align-items: flex-end !important; }
29
+ .align-items-center { align-items: center !important; }
30
+ .align-items-baseline { align-items: baseline !important; }
31
+ .align-items-stretch { align-items: stretch !important; }
32
+
33
+ // align-self
34
+ .align-self-start { align-self: flex-start !important; }
35
+ .align-self-end { align-self: flex-end !important; }
36
+ .align-self-center { align-self: center !important; }
37
+ .align-self-stretch { align-self: stretch !important; }
38
+ .align-self-auto { align-self: auto !important; }
39
+
40
+ // align-content
41
+ .align-content-start { align-content: flex-start !important; }
42
+ .align-content-end { align-content: flex-end !important; }
43
+ .align-content-center { align-content: center !important; }
44
+ .align-content-between { align-content: space-between !important; }
45
+ .align-content-around { align-content: space-around !important; }
46
+ .align-content-stretch { align-content: stretch !important; }
47
+
48
+ // justify-content
49
+ .justify-content-start { justify-content: flex-start !important; }
50
+ .justify-content-end { justify-content: flex-end !important; }
51
+ .justify-content-center { justify-content: center !important; }
52
+ .justify-content-between { justify-content: space-between !important; }
53
+ .justify-content-around { justify-content: space-around !important; }
54
+ .justify-content-evenly { justify-content: space-evenly !important; }
@@ -1,9 +1,9 @@
1
- // --------------------------------------------------------------------------
2
- // Gap (px-based, 0–200)
3
- // gap-0 … gap-200 | gap-x-* | gap-y-*
4
- // --------------------------------------------------------------------------
5
- @for $i from 0 through 200 {
6
- .gap-#{$i} { gap: #{$i}px !important; }
7
- .gap-x-#{$i} { column-gap: #{$i}px !important; }
8
- .gap-y-#{$i} { row-gap: #{$i}px !important; }
9
- }
1
+ // --------------------------------------------------------------------------
2
+ // Gap (px-based, 0–200)
3
+ // gap-0 … gap-200 | gap-x-* | gap-y-*
4
+ // --------------------------------------------------------------------------
5
+ @for $i from 0 through 200 {
6
+ .gap-#{$i} { gap: #{$i}px !important; }
7
+ .gap-x-#{$i} { column-gap: #{$i}px !important; }
8
+ .gap-y-#{$i} { row-gap: #{$i}px !important; }
9
+ }
@@ -1,17 +1,17 @@
1
- /* ==========================================================================
2
- SD-ANGULAR UTILITY CLASSES — thuần SCSS, không phụ thuộc 3rd-party.
3
- Mỗi partial độc lập, có thể import riêng lẻ nếu cần.
4
- ========================================================================== */
5
-
6
- @use 'spacing';
7
- @use 'sizing';
8
- @use 'border';
9
- @use 'typography';
10
- @use 'gap';
11
- @use 'display';
12
- @use 'flexbox';
13
- @use 'overflow';
14
- @use 'position';
15
- @use 'misc';
16
- @use 'grid';
17
- @use 'elevation';
1
+ /* ==========================================================================
2
+ SD-ANGULAR UTILITY CLASSES — thuần SCSS, không phụ thuộc 3rd-party.
3
+ Mỗi partial độc lập, có thể import riêng lẻ nếu cần.
4
+ ========================================================================== */
5
+
6
+ @use 'spacing';
7
+ @use 'sizing';
8
+ @use 'border';
9
+ @use 'typography';
10
+ @use 'gap';
11
+ @use 'display';
12
+ @use 'flexbox';
13
+ @use 'overflow';
14
+ @use 'position';
15
+ @use 'misc';
16
+ @use 'grid';
17
+ @use 'elevation';
@@ -1,20 +1,20 @@
1
- // --------------------------------------------------------------------------
2
- // Vertical-align
3
- // --------------------------------------------------------------------------
4
- .align-middle { vertical-align: middle !important; }
5
- .align-top { vertical-align: top !important; }
6
- .align-bottom { vertical-align: bottom !important; }
7
- .align-baseline { vertical-align: baseline !important; }
8
-
9
- // --------------------------------------------------------------------------
10
- // Cursor
11
- // --------------------------------------------------------------------------
12
- .cursor-pointer { cursor: pointer !important; }
13
- .cursor-default { cursor: default !important; }
14
- .cursor-not-allowed { cursor: not-allowed !important; }
15
-
16
- // --------------------------------------------------------------------------
17
- // Visibility
18
- // --------------------------------------------------------------------------
19
- .visible { visibility: visible !important; }
20
- .invisible { visibility: hidden !important; }
1
+ // --------------------------------------------------------------------------
2
+ // Vertical-align
3
+ // --------------------------------------------------------------------------
4
+ .align-middle { vertical-align: middle !important; }
5
+ .align-top { vertical-align: top !important; }
6
+ .align-bottom { vertical-align: bottom !important; }
7
+ .align-baseline { vertical-align: baseline !important; }
8
+
9
+ // --------------------------------------------------------------------------
10
+ // Cursor
11
+ // --------------------------------------------------------------------------
12
+ .cursor-pointer { cursor: pointer !important; }
13
+ .cursor-default { cursor: default !important; }
14
+ .cursor-not-allowed { cursor: not-allowed !important; }
15
+
16
+ // --------------------------------------------------------------------------
17
+ // Visibility
18
+ // --------------------------------------------------------------------------
19
+ .visible { visibility: visible !important; }
20
+ .invisible { visibility: hidden !important; }
@@ -1,9 +1,9 @@
1
- // --------------------------------------------------------------------------
2
- // Overflow
3
- // --------------------------------------------------------------------------
4
- .overflow-auto { overflow: auto !important; }
5
- .overflow-hidden { overflow: hidden !important; }
6
- .overflow-visible { overflow: visible !important; }
7
- .overflow-scroll { overflow: scroll !important; }
8
- .overflow-x-auto { overflow-x: auto !important; }
9
- .overflow-y-auto { overflow-y: auto !important; }
1
+ // --------------------------------------------------------------------------
2
+ // Overflow
3
+ // --------------------------------------------------------------------------
4
+ .overflow-auto { overflow: auto !important; }
5
+ .overflow-hidden { overflow: hidden !important; }
6
+ .overflow-visible { overflow: visible !important; }
7
+ .overflow-scroll { overflow: scroll !important; }
8
+ .overflow-x-auto { overflow-x: auto !important; }
9
+ .overflow-y-auto { overflow-y: auto !important; }
@@ -1,8 +1,8 @@
1
- // --------------------------------------------------------------------------
2
- // Position
3
- // --------------------------------------------------------------------------
4
- .position-relative { position: relative !important; }
5
- .position-absolute { position: absolute !important; }
6
- .position-fixed { position: fixed !important; }
7
- .position-sticky { position: sticky !important; }
8
- .position-static { position: static !important; }
1
+ // --------------------------------------------------------------------------
2
+ // Position
3
+ // --------------------------------------------------------------------------
4
+ .position-relative { position: relative !important; }
5
+ .position-absolute { position: absolute !important; }
6
+ .position-fixed { position: fixed !important; }
7
+ .position-sticky { position: sticky !important; }
8
+ .position-static { position: static !important; }
@@ -1,28 +1,28 @@
1
- // --------------------------------------------------------------------------
2
- // Sizing – Width & Height (px-based, 0–200)
3
- // w-0 … w-200 | h-0 … h-200
4
- // --------------------------------------------------------------------------
5
- @for $i from 0 through 200 {
6
- .w-#{$i} { width: #{$i}px !important; }
7
- .h-#{$i} { height: #{$i}px !important; }
8
- }
9
-
10
- // Percentage / keyword shorthands
11
- .w-full { width: 100% !important; }
12
- .w-100 { width: 100% !important; } // alias of w-full
13
- .w-auto { width: auto !important; }
14
- .w-screen { width: 100vw !important; }
15
- .w-fit { width: fit-content !important; }
16
-
17
- .h-full { height: 100% !important; }
18
- .h-100 { height: 100% !important; } // alias of h-full
19
- .h-auto { height: auto !important; }
20
- .h-screen { height: 100vh !important; }
21
- .h-fit { height: fit-content !important; }
22
-
23
- .min-h-full { min-height: 100% !important; }
24
- .min-h-screen { min-height: 100vh !important; }
25
- .min-w-full { min-width: 100% !important; }
26
-
27
- .max-h-full { max-height: 100% !important; }
28
- .max-w-full { max-width: 100% !important; }
1
+ // --------------------------------------------------------------------------
2
+ // Sizing – Width & Height (px-based, 0–200)
3
+ // w-0 … w-200 | h-0 … h-200
4
+ // --------------------------------------------------------------------------
5
+ @for $i from 0 through 200 {
6
+ .w-#{$i} { width: #{$i}px !important; }
7
+ .h-#{$i} { height: #{$i}px !important; }
8
+ }
9
+
10
+ // Percentage / keyword shorthands
11
+ .w-full { width: 100% !important; }
12
+ .w-100 { width: 100% !important; } // alias of w-full
13
+ .w-auto { width: auto !important; }
14
+ .w-screen { width: 100vw !important; }
15
+ .w-fit { width: fit-content !important; }
16
+
17
+ .h-full { height: 100% !important; }
18
+ .h-100 { height: 100% !important; } // alias of h-full
19
+ .h-auto { height: auto !important; }
20
+ .h-screen { height: 100vh !important; }
21
+ .h-fit { height: fit-content !important; }
22
+
23
+ .min-h-full { min-height: 100% !important; }
24
+ .min-h-screen { min-height: 100vh !important; }
25
+ .min-w-full { min-width: 100% !important; }
26
+
27
+ .max-h-full { max-height: 100% !important; }
28
+ .max-w-full { max-width: 100% !important; }
@@ -1,31 +1,31 @@
1
- // --------------------------------------------------------------------------
2
- // Spacing – Margin & Padding (px-based, 0–200)
3
- // m-0 … m-200 | mt-* | mr-* | mb-* | ml-* | mx-* | my-*
4
- // p-0 … p-200 | pt-* | pr-* | pb-* | pl-* | px-* | py-*
5
- // --------------------------------------------------------------------------
6
- @for $i from 0 through 200 {
7
- .m-#{$i} { margin: #{$i}px !important; }
8
- .mt-#{$i} { margin-top: #{$i}px !important; }
9
- .mr-#{$i} { margin-right: #{$i}px !important; }
10
- .mb-#{$i} { margin-bottom: #{$i}px !important; }
11
- .ml-#{$i} { margin-left: #{$i}px !important; }
12
- .mx-#{$i} { margin-left: #{$i}px !important; margin-right: #{$i}px !important; }
13
- .my-#{$i} { margin-top: #{$i}px !important; margin-bottom: #{$i}px !important; }
14
-
15
- .p-#{$i} { padding: #{$i}px !important; }
16
- .pt-#{$i} { padding-top: #{$i}px !important; }
17
- .pr-#{$i} { padding-right: #{$i}px !important; }
18
- .pb-#{$i} { padding-bottom: #{$i}px !important; }
19
- .pl-#{$i} { padding-left: #{$i}px !important; }
20
- .px-#{$i} { padding-left: #{$i}px !important; padding-right: #{$i}px !important; }
21
- .py-#{$i} { padding-top: #{$i}px !important; padding-bottom: #{$i}px !important; }
22
- }
23
-
24
- // Auto margin helpers
25
- .m-auto { margin: auto !important; }
26
- .mt-auto { margin-top: auto !important; }
27
- .mr-auto { margin-right: auto !important; }
28
- .mb-auto { margin-bottom: auto !important; }
29
- .ml-auto { margin-left: auto !important; }
30
- .mx-auto { margin-left: auto !important; margin-right: auto !important; }
31
- .my-auto { margin-top: auto !important; margin-bottom: auto !important; }
1
+ // --------------------------------------------------------------------------
2
+ // Spacing – Margin & Padding (px-based, 0–200)
3
+ // m-0 … m-200 | mt-* | mr-* | mb-* | ml-* | mx-* | my-*
4
+ // p-0 … p-200 | pt-* | pr-* | pb-* | pl-* | px-* | py-*
5
+ // --------------------------------------------------------------------------
6
+ @for $i from 0 through 200 {
7
+ .m-#{$i} { margin: #{$i}px !important; }
8
+ .mt-#{$i} { margin-top: #{$i}px !important; }
9
+ .mr-#{$i} { margin-right: #{$i}px !important; }
10
+ .mb-#{$i} { margin-bottom: #{$i}px !important; }
11
+ .ml-#{$i} { margin-left: #{$i}px !important; }
12
+ .mx-#{$i} { margin-left: #{$i}px !important; margin-right: #{$i}px !important; }
13
+ .my-#{$i} { margin-top: #{$i}px !important; margin-bottom: #{$i}px !important; }
14
+
15
+ .p-#{$i} { padding: #{$i}px !important; }
16
+ .pt-#{$i} { padding-top: #{$i}px !important; }
17
+ .pr-#{$i} { padding-right: #{$i}px !important; }
18
+ .pb-#{$i} { padding-bottom: #{$i}px !important; }
19
+ .pl-#{$i} { padding-left: #{$i}px !important; }
20
+ .px-#{$i} { padding-left: #{$i}px !important; padding-right: #{$i}px !important; }
21
+ .py-#{$i} { padding-top: #{$i}px !important; padding-bottom: #{$i}px !important; }
22
+ }
23
+
24
+ // Auto margin helpers
25
+ .m-auto { margin: auto !important; }
26
+ .mt-auto { margin-top: auto !important; }
27
+ .mr-auto { margin-right: auto !important; }
28
+ .mb-auto { margin-bottom: auto !important; }
29
+ .ml-auto { margin-left: auto !important; }
30
+ .mx-auto { margin-left: auto !important; margin-right: auto !important; }
31
+ .my-auto { margin-top: auto !important; margin-bottom: auto !important; }