@sd-angular/core 19.0.13 → 19.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +712 -712
- package/assets/STYLE-GUIDE.md +601 -601
- package/assets/images/coming-soon.svg +22 -22
- package/assets/images/data-empty.svg +20 -20
- package/assets/images/expired.svg +21 -21
- package/assets/images/file-error.svg +27 -27
- package/assets/images/filter-empty.svg +19 -19
- package/assets/images/filter-required.svg +20 -20
- package/assets/images/forbidden.svg +14 -14
- package/assets/images/image-error.svg +26 -26
- package/assets/images/maintenance.svg +22 -22
- package/assets/images/not-found.svg +19 -19
- package/assets/images/offline.svg +19 -19
- package/assets/images/submitted.svg +17 -17
- package/assets/images/success.svg +17 -17
- package/assets/images/unauthorized.svg +21 -21
- package/assets/images/unknown-error.svg +17 -17
- package/assets/scss/ckeditor5.scss +88 -88
- package/assets/scss/core/_inline-edit.scss +105 -105
- package/assets/scss/core/color.scss +73 -73
- package/assets/scss/core/form.scss +317 -317
- package/assets/scss/core/image.scss +35 -35
- package/assets/scss/core/utilities/_base.scss +333 -333
- package/assets/scss/core/utilities/_border.scss +22 -22
- package/assets/scss/core/utilities/_display.scss +10 -10
- package/assets/scss/core/utilities/_elevation.scss +80 -80
- package/assets/scss/core/utilities/_flexbox.scss +54 -54
- package/assets/scss/core/utilities/_gap.scss +9 -9
- package/assets/scss/core/utilities/_index.scss +17 -17
- package/assets/scss/core/utilities/_misc.scss +20 -20
- package/assets/scss/core/utilities/_overflow.scss +9 -9
- package/assets/scss/core/utilities/_position.scss +8 -8
- package/assets/scss/core/utilities/_sizing.scss +28 -28
- package/assets/scss/core/utilities/_spacing.scss +31 -31
- package/assets/scss/core/utilities/_typography.scss +99 -99
- package/assets/scss/sd-core.scss +16 -16
- package/assets/scss/themes/default.scss +45 -45
- package/assets/scss/themes/material-theme.scss +101 -101
- package/components/preview/src/preview-pdf/pdf-worker-inline.generated.d.ts +7 -0
- package/components/table/src/services/table-export/table-export.service.d.ts +3 -1
- package/components/table/src/table.component.d.ts +1 -1
- package/fesm2022/sd-angular-core-components-anchor.mjs +6 -6
- package/fesm2022/sd-angular-core-components-anchor.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-autoid-inspector.mjs +2 -2
- package/fesm2022/sd-angular-core-components-autoid-inspector.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-badge.mjs +2 -2
- package/fesm2022/sd-angular-core-components-badge.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-base.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-button.mjs +2 -2
- package/fesm2022/sd-angular-core-components-button.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-chart.mjs +40 -40
- package/fesm2022/sd-angular-core-components-chart.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-ckeditor-styles.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-code-editor.mjs +2 -2
- package/fesm2022/sd-angular-core-components-code-editor.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-document-builder.mjs +77 -77
- package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-editor.mjs +2 -2
- package/fesm2022/sd-angular-core-components-editor.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-form-generic.mjs +106 -106
- package/fesm2022/sd-angular-core-components-form-generic.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-history.mjs +2 -2
- package/fesm2022/sd-angular-core-components-history.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-import-excel.mjs +2 -2
- package/fesm2022/sd-angular-core-components-import-excel.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-inform.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-mini-editor.mjs +2 -2
- package/fesm2022/sd-angular-core-components-mini-editor.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-modal-resizable.mjs +2 -2
- package/fesm2022/sd-angular-core-components-modal-resizable.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-modal.mjs +2 -2
- package/fesm2022/sd-angular-core-components-modal.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-operator.mjs +2 -2
- package/fesm2022/sd-angular-core-components-operator.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-org-chart.mjs +2 -2
- package/fesm2022/sd-angular-core-components-org-chart.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-preview.mjs +32 -6
- package/fesm2022/sd-angular-core-components-preview.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-query-bar.mjs +10 -10
- package/fesm2022/sd-angular-core-components-query-bar.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-query-builder.mjs +2 -2
- package/fesm2022/sd-angular-core-components-query-builder.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-section.mjs +4 -4
- package/fesm2022/sd-angular-core-components-section.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-side-drawer.mjs +2 -2
- package/fesm2022/sd-angular-core-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-stepper.mjs +2 -2
- package/fesm2022/sd-angular-core-components-stepper.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-tab-router.mjs +6 -6
- package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-tab.mjs +2 -2
- package/fesm2022/sd-angular-core-components-tab.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-table.mjs +32 -17
- package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-upload-file.mjs +4 -4
- package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-view.mjs +2 -2
- package/fesm2022/sd-angular-core-components-view.mjs.map +1 -1
- package/fesm2022/sd-angular-core-configurations.mjs.map +1 -1
- package/fesm2022/sd-angular-core-directives.mjs +20 -20
- package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-autocomplete.mjs +2 -2
- package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-checkbox.mjs +2 -2
- package/fesm2022/sd-angular-core-forms-checkbox.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-chip-calendar.mjs +2 -2
- package/fesm2022/sd-angular-core-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-chip.mjs +2 -2
- package/fesm2022/sd-angular-core-forms-chip.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-date-range.mjs +5 -6
- package/fesm2022/sd-angular-core-forms-date-range.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-date.mjs +136 -43
- package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-datetime.mjs +6 -6
- package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-directives.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-inline-text.mjs +2 -2
- package/fesm2022/sd-angular-core-forms-inline-text.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-input-color.mjs +2 -2
- package/fesm2022/sd-angular-core-forms-input-color.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-input.mjs +2 -2
- package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-label.mjs +2 -2
- package/fesm2022/sd-angular-core-forms-label.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-models.mjs +54 -2
- package/fesm2022/sd-angular-core-forms-models.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-radio.mjs +2 -2
- package/fesm2022/sd-angular-core-forms-radio.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-select.mjs +2 -2
- package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-switch.mjs +2 -2
- package/fesm2022/sd-angular-core-forms-switch.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-textarea.mjs +2 -2
- package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
- package/fesm2022/sd-angular-core-handlers.mjs.map +1 -1
- package/fesm2022/sd-angular-core-i18n.mjs +20 -0
- package/fesm2022/sd-angular-core-i18n.mjs.map +1 -1
- package/fesm2022/sd-angular-core-interceptors.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-auth.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-authom.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-keycloak.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-layout.mjs +130 -43
- package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-permission.mjs.map +1 -1
- package/fesm2022/sd-angular-core-pipes.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-api.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-cache.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-confirm.mjs +2 -2
- package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-docx.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-excel.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-license.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-loading.mjs +5 -5
- package/fesm2022/sd-angular-core-services-loading.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-notify.mjs +12 -12
- package/fesm2022/sd-angular-core-services-notify.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-storage.mjs.map +1 -1
- package/fesm2022/sd-angular-core-utilities-data-state.mjs.map +1 -1
- package/fesm2022/sd-angular-core-utilities-extensions.mjs.map +1 -1
- package/forms/date/src/date-input.util.d.ts +18 -0
- package/forms/date/src/date.component.d.ts +9 -1
- package/forms/models/index.d.ts +1 -0
- package/forms/models/src/sd-strict-date-adapter.d.ts +26 -0
- package/i18n/src/en.d.ts +4 -0
- package/modules/layout/index.d.ts +1 -0
- package/modules/layout/utils/index.d.ts +1 -0
- package/modules/layout/utils/tab-name.util.d.ts +8 -0
- package/package.json +70 -70
- package/sd-angular-core-19.0.13.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; }
|