@sd-angular/core 19.0.0-beta.103 → 19.0.0-beta.105
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/assets/scss/README.md +433 -353
- package/assets/scss/core/form.scss +43 -1
- package/assets/scss/core/utilities/_base.scss +6 -6
- package/assets/scss/core/utilities/_grid.scss +4 -3
- package/assets/scss/core/utilities/_index.scss +1 -1
- package/assets/scss/core/utilities/_sizing.scss +2 -2
- package/assets/scss/sd-core.scss +0 -2
- package/components/badge/src/badge.component.d.ts +20 -3
- package/components/button/src/button.component.d.ts +2 -1
- package/components/ckeditor-styles/index.d.ts +1 -0
- package/components/ckeditor-styles/src/ckeditor-styles.component.d.ts +25 -0
- package/components/form-generic/src/models/form-generic-component.model.d.ts +5 -6
- package/components/form-generic/src/models/form-generic-expression.model.d.ts +1 -1
- package/components/history/models/history.model.d.ts +2 -2
- package/components/inform/index.d.ts +2 -0
- package/components/inform/src/inform-action.directive.d.ts +9 -0
- package/components/inform/src/inform.component.d.ts +59 -0
- package/components/modal/src/modal.component.d.ts +3 -2
- package/components/query-bar/src/{actions-bar.component.d.ts → components/actions-bar/actions-bar.component.d.ts} +8 -11
- package/components/query-bar/src/{build-chip.component.d.ts → components/build-chip/build-chip.component.d.ts} +2 -2
- package/components/query-bar/src/{chip-popover.component.d.ts → components/chip-popover/chip-popover.component.d.ts} +2 -2
- package/components/query-bar/src/{field-picker.component.d.ts → components/field-picker/field-picker.component.d.ts} +1 -1
- package/components/query-bar/src/{inline-chip.component.d.ts → components/inline-chip/inline-chip.component.d.ts} +2 -2
- package/components/query-bar/src/{inline-value-chip.component.d.ts → components/inline-value-chip/inline-value-chip.component.d.ts} +2 -2
- package/components/query-bar/src/{popover-chip.component.d.ts → components/popover-chip/popover-chip.component.d.ts} +2 -2
- package/components/query-bar/src/{saved-filters-menu.component.d.ts → components/saved-filters-menu/saved-filters-menu.component.d.ts} +1 -1
- package/components/query-bar/src/query-bar.component.d.ts +3 -3
- package/components/query-bar/src/query-bar.model.d.ts +1 -1
- package/components/section/src/section.component.d.ts +2 -1
- package/components/stepper/index.d.ts +2 -0
- package/components/stepper/src/step.component.d.ts +17 -0
- package/components/stepper/src/stepper.component.d.ts +33 -0
- package/components/tab/index.d.ts +2 -0
- package/components/tab/src/tab-group.component.d.ts +37 -0
- package/components/tab/src/tab.component.d.ts +13 -0
- package/components/tab-router/src/decorators/tab.decorator.d.ts +2 -2
- package/components/tab-router/src/models/tab-router.model.d.ts +2 -2
- package/components/table/index.d.ts +1 -0
- package/components/table/src/configurations/table.configuration.d.ts +3 -3
- package/components/table/src/directives/index.d.ts +1 -0
- package/components/table/src/directives/sd-table-group-def.directive.d.ts +44 -0
- package/components/table/src/models/index.d.ts +1 -0
- package/components/table/src/models/table-column.model.d.ts +13 -13
- package/components/table/src/models/table-command.model.d.ts +3 -2
- package/components/table/src/models/table-item.model.d.ts +19 -4
- package/components/table/src/models/table-option-export.model.d.ts +3 -3
- package/components/table/src/models/table-option-group.model.d.ts +19 -2
- package/components/table/src/models/table-option-selector.model.d.ts +17 -1
- package/components/table/src/models/table-option.model.d.ts +11 -2
- package/components/table/src/pipes/sd-group.pipe.d.ts +15 -1
- package/components/table/src/services/table-filter/table-filter.model.d.ts +9 -9
- package/components/table/src/services/table-filter/table-filter.service.d.ts +2 -2
- package/components/table/src/table.component.d.ts +29 -4
- package/fesm2022/sd-angular-core-components-anchor.mjs +2 -2
- package/fesm2022/sd-angular-core-components-anchor.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-badge.mjs +18 -3
- package/fesm2022/sd-angular-core-components-badge.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-ckeditor-styles.mjs +38 -0
- package/fesm2022/sd-angular-core-components-ckeditor-styles.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-document-builder.mjs +10 -8
- package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-editor.mjs +3 -2
- package/fesm2022/sd-angular-core-components-editor.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-form-generic.mjs +49 -48
- package/fesm2022/sd-angular-core-components-form-generic.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-history.mjs +3 -2
- package/fesm2022/sd-angular-core-components-history.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-inform.mjs +190 -0
- package/fesm2022/sd-angular-core-components-inform.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-mini-editor.mjs +4 -3
- package/fesm2022/sd-angular-core-components-mini-editor.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 +1 -1
- package/fesm2022/sd-angular-core-components-operator.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-query-bar.mjs +15 -22
- package/fesm2022/sd-angular-core-components-query-bar.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-section.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-splitter.mjs +5 -2
- package/fesm2022/sd-angular-core-components-splitter.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-stepper.mjs +140 -0
- package/fesm2022/sd-angular-core-components-stepper.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-tab-router.mjs +3 -3
- package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-tab.mjs +145 -0
- package/fesm2022/sd-angular-core-components-tab.mjs.map +1 -0
- package/fesm2022/sd-angular-core-components-table.mjs +284 -95
- package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-upload-file.mjs +5 -6
- package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
- package/fesm2022/sd-angular-core-directives.mjs +4 -4
- package/fesm2022/sd-angular-core-directives.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-autocomplete.mjs +5 -4
- package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-checkbox.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-chip.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-date-range.mjs +3 -2
- package/fesm2022/sd-angular-core-forms-date-range.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-date.mjs +5 -4
- package/fesm2022/sd-angular-core-forms-date.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-datetime.mjs +5 -4
- package/fesm2022/sd-angular-core-forms-datetime.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-input-color.mjs +117 -0
- package/fesm2022/sd-angular-core-forms-input-color.mjs.map +1 -0
- package/fesm2022/sd-angular-core-forms-input-number.mjs +24 -2
- package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-input.mjs +26 -2
- package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-radio.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-select.mjs +10 -10
- package/fesm2022/sd-angular-core-forms-select.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-switch.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-textarea.mjs.map +1 -1
- package/fesm2022/sd-angular-core-i18n.mjs +10 -0
- package/fesm2022/sd-angular-core-i18n.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-auth.mjs +4 -4
- package/fesm2022/sd-angular-core-modules-auth.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-authom.mjs +1 -1
- package/fesm2022/sd-angular-core-modules-authom.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-layout.mjs +14 -14
- package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-permission.mjs +3 -3
- package/fesm2022/sd-angular-core-modules-permission.mjs.map +1 -1
- package/fesm2022/sd-angular-core-pipes.mjs +2 -2
- package/fesm2022/sd-angular-core-pipes.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-api.mjs +3 -3
- package/fesm2022/sd-angular-core-services-api.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-cache.mjs +3 -2
- package/fesm2022/sd-angular-core-services-cache.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-excel.mjs +6 -5
- package/fesm2022/sd-angular-core-services-excel.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-notify.mjs +3 -3
- package/fesm2022/sd-angular-core-services-notify.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-storage.mjs +2 -2
- package/fesm2022/sd-angular-core-services-storage.mjs.map +1 -1
- package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
- package/forms/autocomplete/src/autocomplete.component.d.ts +2 -1
- package/forms/checkbox/src/checkbox.component.d.ts +1 -1
- package/forms/chip/src/chip.component.d.ts +1 -1
- package/forms/chip-calendar/src/chip-calendar.component.d.ts +1 -1
- package/forms/date/src/date.component.d.ts +2 -1
- package/forms/date-range/src/date-range.component.d.ts +2 -1
- package/forms/datetime/src/datetime.component.d.ts +2 -1
- package/forms/input/src/input.component.d.ts +6 -2
- package/forms/input-color/index.d.ts +1 -0
- package/forms/input-color/src/input-color.component.d.ts +32 -0
- package/forms/input-number/src/input-number.component.d.ts +6 -2
- package/forms/radio/src/radio.component.d.ts +1 -1
- package/forms/select/src/select.component.d.ts +5 -5
- package/forms/switch/src/switch.component.d.ts +1 -1
- package/forms/textarea/src/textarea.component.d.ts +2 -1
- package/i18n/src/en.d.ts +2 -0
- package/modules/auth/configurations/auth.configuration.d.ts +4 -4
- package/modules/layout/configurations/layout.configuration.d.ts +3 -3
- package/modules/permission/src/configurations/permission.configuration.d.ts +3 -3
- package/package.json +123 -103
- package/sd-angular-core-19.0.0-beta.105.tgz +0 -0
- package/services/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.d.ts +3 -3
- package/services/confirm/src/lib/confirm.service.d.ts +9 -9
- package/utilities/models/src/icon.model.d.ts +1 -1
- package/assets/scss/bootstrap-4.6.2/_alert.scss +0 -52
- package/assets/scss/bootstrap-4.6.2/_badge.scss +0 -54
- package/assets/scss/bootstrap-4.6.2/_breadcrumb.scss +0 -42
- package/assets/scss/bootstrap-4.6.2/_button-group.scss +0 -163
- package/assets/scss/bootstrap-4.6.2/_buttons.scss +0 -142
- package/assets/scss/bootstrap-4.6.2/_card.scss +0 -286
- package/assets/scss/bootstrap-4.6.2/_carousel.scss +0 -200
- package/assets/scss/bootstrap-4.6.2/_close.scss +0 -40
- package/assets/scss/bootstrap-4.6.2/_code.scss +0 -48
- package/assets/scss/bootstrap-4.6.2/_custom-forms.scss +0 -526
- package/assets/scss/bootstrap-4.6.2/_dropdown.scss +0 -192
- package/assets/scss/bootstrap-4.6.2/_forms.scss +0 -347
- package/assets/scss/bootstrap-4.6.2/_functions.scss +0 -190
- package/assets/scss/bootstrap-4.6.2/_grid.scss +0 -73
- package/assets/scss/bootstrap-4.6.2/_images.scss +0 -42
- package/assets/scss/bootstrap-4.6.2/_input-group.scss +0 -211
- package/assets/scss/bootstrap-4.6.2/_jumbotron.scss +0 -17
- package/assets/scss/bootstrap-4.6.2/_list-group.scss +0 -154
- package/assets/scss/bootstrap-4.6.2/_media.scss +0 -8
- package/assets/scss/bootstrap-4.6.2/_mixins.scss +0 -47
- package/assets/scss/bootstrap-4.6.2/_modal.scss +0 -240
- package/assets/scss/bootstrap-4.6.2/_nav.scss +0 -125
- package/assets/scss/bootstrap-4.6.2/_navbar.scss +0 -332
- package/assets/scss/bootstrap-4.6.2/_pagination.scss +0 -74
- package/assets/scss/bootstrap-4.6.2/_popover.scss +0 -170
- package/assets/scss/bootstrap-4.6.2/_print.scss +0 -132
- package/assets/scss/bootstrap-4.6.2/_progress.scss +0 -47
- package/assets/scss/bootstrap-4.6.2/_reboot.scss +0 -484
- package/assets/scss/bootstrap-4.6.2/_root.scss +0 -19
- package/assets/scss/bootstrap-4.6.2/_spinners.scss +0 -65
- package/assets/scss/bootstrap-4.6.2/_tables.scss +0 -185
- package/assets/scss/bootstrap-4.6.2/_toasts.scss +0 -46
- package/assets/scss/bootstrap-4.6.2/_tooltip.scss +0 -115
- package/assets/scss/bootstrap-4.6.2/_transitions.scss +0 -26
- package/assets/scss/bootstrap-4.6.2/_type.scss +0 -125
- package/assets/scss/bootstrap-4.6.2/_utilities.scss +0 -18
- package/assets/scss/bootstrap-4.6.2/_variables.scss +0 -1150
- package/assets/scss/bootstrap-4.6.2/bootstrap-grid.scss +0 -30
- package/assets/scss/bootstrap-4.6.2/bootstrap-reboot.scss +0 -12
- package/assets/scss/bootstrap-4.6.2/bootstrap.scss +0 -44
- package/assets/scss/bootstrap-4.6.2/mixins/_alert.scss +0 -13
- package/assets/scss/bootstrap-4.6.2/mixins/_background-variant.scss +0 -23
- package/assets/scss/bootstrap-4.6.2/mixins/_badge.scss +0 -17
- package/assets/scss/bootstrap-4.6.2/mixins/_border-radius.scss +0 -76
- package/assets/scss/bootstrap-4.6.2/mixins/_box-shadow.scss +0 -20
- package/assets/scss/bootstrap-4.6.2/mixins/_breakpoints.scss +0 -123
- package/assets/scss/bootstrap-4.6.2/mixins/_buttons.scss +0 -110
- package/assets/scss/bootstrap-4.6.2/mixins/_caret.scss +0 -62
- package/assets/scss/bootstrap-4.6.2/mixins/_clearfix.scss +0 -7
- package/assets/scss/bootstrap-4.6.2/mixins/_deprecate.scss +0 -10
- package/assets/scss/bootstrap-4.6.2/mixins/_float.scss +0 -14
- package/assets/scss/bootstrap-4.6.2/mixins/_forms.scss +0 -195
- package/assets/scss/bootstrap-4.6.2/mixins/_gradients.scss +0 -45
- package/assets/scss/bootstrap-4.6.2/mixins/_grid-framework.scss +0 -80
- package/assets/scss/bootstrap-4.6.2/mixins/_grid.scss +0 -69
- package/assets/scss/bootstrap-4.6.2/mixins/_hover.scss +0 -37
- package/assets/scss/bootstrap-4.6.2/mixins/_image.scss +0 -36
- package/assets/scss/bootstrap-4.6.2/mixins/_list-group.scss +0 -21
- package/assets/scss/bootstrap-4.6.2/mixins/_lists.scss +0 -7
- package/assets/scss/bootstrap-4.6.2/mixins/_nav-divider.scss +0 -11
- package/assets/scss/bootstrap-4.6.2/mixins/_pagination.scss +0 -22
- package/assets/scss/bootstrap-4.6.2/mixins/_reset-text.scss +0 -17
- package/assets/scss/bootstrap-4.6.2/mixins/_resize.scss +0 -6
- package/assets/scss/bootstrap-4.6.2/mixins/_screen-reader.scss +0 -34
- package/assets/scss/bootstrap-4.6.2/mixins/_size.scss +0 -7
- package/assets/scss/bootstrap-4.6.2/mixins/_table-row.scss +0 -39
- package/assets/scss/bootstrap-4.6.2/mixins/_text-emphasis.scss +0 -17
- package/assets/scss/bootstrap-4.6.2/mixins/_text-hide.scss +0 -11
- package/assets/scss/bootstrap-4.6.2/mixins/_text-truncate.scss +0 -8
- package/assets/scss/bootstrap-4.6.2/mixins/_transition.scss +0 -26
- package/assets/scss/bootstrap-4.6.2/mixins/_visibility.scss +0 -8
- package/assets/scss/bootstrap-4.6.2/utilities/_align.scss +0 -8
- package/assets/scss/bootstrap-4.6.2/utilities/_background.scss +0 -19
- package/assets/scss/bootstrap-4.6.2/utilities/_borders.scss +0 -75
- package/assets/scss/bootstrap-4.6.2/utilities/_clearfix.scss +0 -3
- package/assets/scss/bootstrap-4.6.2/utilities/_display.scss +0 -26
- package/assets/scss/bootstrap-4.6.2/utilities/_embed.scss +0 -39
- package/assets/scss/bootstrap-4.6.2/utilities/_flex.scss +0 -51
- package/assets/scss/bootstrap-4.6.2/utilities/_float.scss +0 -11
- package/assets/scss/bootstrap-4.6.2/utilities/_interactions.scss +0 -5
- package/assets/scss/bootstrap-4.6.2/utilities/_overflow.scss +0 -5
- package/assets/scss/bootstrap-4.6.2/utilities/_position.scss +0 -32
- package/assets/scss/bootstrap-4.6.2/utilities/_screenreaders.scss +0 -11
- package/assets/scss/bootstrap-4.6.2/utilities/_shadows.scss +0 -6
- package/assets/scss/bootstrap-4.6.2/utilities/_sizing.scss +0 -20
- package/assets/scss/bootstrap-4.6.2/utilities/_spacing.scss +0 -73
- package/assets/scss/bootstrap-4.6.2/utilities/_stretched-link.scss +0 -19
- package/assets/scss/bootstrap-4.6.2/utilities/_text.scss +0 -72
- package/assets/scss/bootstrap-4.6.2/utilities/_visibility.scss +0 -13
- package/assets/scss/bootstrap-4.6.2/vendor/_rfs.scss +0 -228
- package/assets/scss/core/bootstrap.scss +0 -13
- package/sd-angular-core-19.0.0-beta.103.tgz +0 -0
|
@@ -33,6 +33,48 @@
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
// why: nút clear "thanh mảnh" dùng chung cho sd-select/sd-date/sd-datetime —
|
|
37
|
+
// hình tròn nền trong suốt, hover mới hiện nền xám + chuyển đỏ. Icon `close`
|
|
38
|
+
// (nét mảnh) thay cho `cancel` (tròn đặc, trông "mập"). Đồng bộ với sd-input-color.
|
|
39
|
+
.sd-clear-btn {
|
|
40
|
+
display: inline-flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
justify-content: center;
|
|
43
|
+
width: 20px;
|
|
44
|
+
height: 20px;
|
|
45
|
+
border-radius: 50%;
|
|
46
|
+
border: 0;
|
|
47
|
+
padding: 0;
|
|
48
|
+
background: transparent;
|
|
49
|
+
cursor: pointer;
|
|
50
|
+
color: #757575;
|
|
51
|
+
transition: background-color 80ms ease, color 80ms ease;
|
|
52
|
+
|
|
53
|
+
&:hover {
|
|
54
|
+
background: rgba(0, 0, 0, 0.06);
|
|
55
|
+
color: map.get(color.$color_map, 'error');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
mat-icon {
|
|
59
|
+
font-size: 16px;
|
|
60
|
+
width: 16px;
|
|
61
|
+
height: 16px;
|
|
62
|
+
line-height: 16px;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// why: biến thể hover-gate — nút clear ẩn cho tới khi hover (hoặc field đang
|
|
67
|
+
// focus, để người dùng bàn phím vẫn thấy). Dùng cho sd-input/sd-input-number/
|
|
68
|
+
// sd-input-color/sd-date/sd-datetime. KHÔNG dùng cho sd-select/sd-autocomplete
|
|
69
|
+
// vì ở đó clear thay thế icon dropdown/search nên phải luôn hiển thị.
|
|
70
|
+
.sd-clear-btn.sd-hover {
|
|
71
|
+
visibility: hidden;
|
|
72
|
+
}
|
|
73
|
+
.mat-mdc-form-field-flex:hover .sd-clear-btn.sd-hover,
|
|
74
|
+
.mat-mdc-form-field-flex:focus-within .sd-clear-btn.sd-hover {
|
|
75
|
+
visibility: visible;
|
|
76
|
+
}
|
|
77
|
+
|
|
36
78
|
// sdSuffixIcon
|
|
37
79
|
// Directive sdSuffixIcon (truyền icon từ component sử dụng vào Core)
|
|
38
80
|
.sd-suffix-icon.sd-hover {
|
|
@@ -247,7 +289,7 @@
|
|
|
247
289
|
}
|
|
248
290
|
}
|
|
249
291
|
|
|
250
|
-
//
|
|
292
|
+
// Override reboot rule `label { margin-bottom: 0.5rem }` cho mat-checkbox layout
|
|
251
293
|
mat-checkbox {
|
|
252
294
|
label.mat-mdc-checkbox-layout {
|
|
253
295
|
margin-bottom: 0;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// --------------------------------------------------------------------------
|
|
2
|
-
// Base / Reboot —
|
|
3
|
-
//
|
|
4
|
-
// ứng dụng. Không phụ thuộc Bootstrap variables hay mixins.
|
|
2
|
+
// Base / Reboot — chuẩn hóa rendering giữa các browser, thiết lập baseline
|
|
3
|
+
// cho toàn bộ ứng dụng. Thuần CSS, không phụ thuộc 3rd-party reset.
|
|
5
4
|
//
|
|
6
|
-
// Nguồn
|
|
5
|
+
// Nguồn gốc rule: kế thừa từ Bootstrap 4 reboot + modern-normalize (đã được
|
|
6
|
+
// inline trực tiếp ở đây để dứt điểm phụ thuộc Bootstrap).
|
|
7
7
|
// --------------------------------------------------------------------------
|
|
8
8
|
|
|
9
9
|
// --------------------------------------------------------------------------
|
|
@@ -202,8 +202,8 @@ th {
|
|
|
202
202
|
// 11. Forms
|
|
203
203
|
// --------------------------------------------------------------------------
|
|
204
204
|
|
|
205
|
-
// label là inline-block để có thể set margin
|
|
206
|
-
//
|
|
205
|
+
// label là inline-block để có thể set margin; margin-bottom mặc định 0.5rem
|
|
206
|
+
// có thể override per-component (xem core/form.scss cho mat-checkbox).
|
|
207
207
|
label {
|
|
208
208
|
display: inline-block;
|
|
209
209
|
margin-bottom: 0.5rem;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// --------------------------------------------------------------------------
|
|
2
|
-
// Grid —
|
|
3
|
-
//
|
|
2
|
+
// Grid — row/col 12-column flexbox + native CSS Grid container
|
|
3
|
+
// Thuần CSS Flexbox / CSS Grid, không phụ thuộc framework ngoài.
|
|
4
|
+
// Breakpoint convention (sm/md/lg/xl) trùng Bootstrap để host app dễ migrate.
|
|
4
5
|
// --------------------------------------------------------------------------
|
|
5
6
|
|
|
6
7
|
// --------------------------------------------------------------------------
|
|
@@ -63,7 +64,7 @@ $grid-gutter: 16px;
|
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
// --------------------------------------------------------------------------
|
|
66
|
-
// 1b. Responsive columns
|
|
67
|
+
// 1b. Responsive columns
|
|
67
68
|
// col-sm-{1-12} : ≥ 576px
|
|
68
69
|
// col-md-{1-12} : ≥ 768px
|
|
69
70
|
// col-lg-{1-12} : ≥ 992px
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* ==========================================================================
|
|
2
|
-
SD-ANGULAR UTILITY CLASSES — không phụ thuộc
|
|
2
|
+
SD-ANGULAR UTILITY CLASSES — thuần SCSS, không phụ thuộc 3rd-party.
|
|
3
3
|
Mỗi partial độc lập, có thể import riêng lẻ nếu cần.
|
|
4
4
|
========================================================================== */
|
|
5
5
|
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
|
|
10
10
|
// Percentage / keyword shorthands
|
|
11
11
|
.w-full { width: 100% !important; }
|
|
12
|
-
.w-100 { width: 100% !important; } //
|
|
12
|
+
.w-100 { width: 100% !important; } // alias of w-full
|
|
13
13
|
.w-auto { width: auto !important; }
|
|
14
14
|
.w-screen { width: 100vw !important; }
|
|
15
15
|
.w-fit { width: fit-content !important; }
|
|
16
16
|
|
|
17
17
|
.h-full { height: 100% !important; }
|
|
18
|
-
.h-100 { height: 100% !important; } //
|
|
18
|
+
.h-100 { height: 100% !important; } // alias of h-full
|
|
19
19
|
.h-auto { height: auto !important; }
|
|
20
20
|
.h-screen { height: 100vh !important; }
|
|
21
21
|
.h-fit { height: fit-content !important; }
|
package/assets/scss/sd-core.scss
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
@use '../fonts/fonts.scss';
|
|
2
|
-
// Tạm thời giữ bootstrap.scss để so sánh — xóa sau khi confirm _base.scss OK
|
|
3
|
-
// @use './core/bootstrap.scss';
|
|
4
2
|
@use './core/utilities/base'; // Reset / Reboot — phải load trước tất cả
|
|
5
3
|
@use './core/utilities';
|
|
6
4
|
@use './core/color.scss';
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { Color, Size } from '@sdcorejs/utils/models';
|
|
2
3
|
import { MaterialIconFontSet } from '@sd-angular/core/utilities/models';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export type SdBadgeType = 'tag' | 'round' | 'icon';
|
|
5
6
|
export declare class SdBadge {
|
|
6
7
|
defaultIcon: string;
|
|
7
8
|
type: import("@angular/core").InputSignalWithTransform<SdBadgeType, SdBadgeType | null | undefined>;
|
|
8
|
-
color: import("@angular/core").InputSignalWithTransform<
|
|
9
|
+
color: import("@angular/core").InputSignalWithTransform<Color, Color | null | undefined>;
|
|
9
10
|
primary: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
10
11
|
secondary: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
11
12
|
success: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
@@ -17,10 +18,10 @@ export declare class SdBadge {
|
|
|
17
18
|
description: import("@angular/core").InputSignal<string | null | undefined>;
|
|
18
19
|
tooltip: import("@angular/core").InputSignal<string | null | undefined>;
|
|
19
20
|
icon: import("@angular/core").InputSignal<string | null | undefined>;
|
|
20
|
-
size: import("@angular/core").InputSignalWithTransform<
|
|
21
|
+
size: import("@angular/core").InputSignalWithTransform<Size, Size | null | undefined>;
|
|
21
22
|
click: EventEmitter<Event>;
|
|
22
23
|
onClick: (event: Event) => void;
|
|
23
|
-
effectiveColor: import("@angular/core").Signal<
|
|
24
|
+
effectiveColor: import("@angular/core").Signal<Color>;
|
|
24
25
|
baseColorClasses: import("@angular/core").Signal<{
|
|
25
26
|
'c-primary': boolean;
|
|
26
27
|
'c-secondary': boolean;
|
|
@@ -46,6 +47,11 @@ export declare class SdBadge {
|
|
|
46
47
|
'material-icons-round': boolean;
|
|
47
48
|
'material-icons-sharp': boolean;
|
|
48
49
|
}>;
|
|
50
|
+
containerSizeClasses: import("@angular/core").Signal<{
|
|
51
|
+
'c-badge--sm': boolean;
|
|
52
|
+
'c-badge--md': boolean;
|
|
53
|
+
'c-badge--lg': boolean;
|
|
54
|
+
}>;
|
|
49
55
|
tagIconCombinedClasses: import("@angular/core").Signal<{
|
|
50
56
|
'c-primary': boolean;
|
|
51
57
|
'c-secondary': boolean;
|
|
@@ -61,6 +67,17 @@ export declare class SdBadge {
|
|
|
61
67
|
'material-icons-round': boolean;
|
|
62
68
|
'material-icons-sharp': boolean;
|
|
63
69
|
}>;
|
|
70
|
+
containerCombinedClasses: import("@angular/core").Signal<{
|
|
71
|
+
'c-badge--sm': boolean;
|
|
72
|
+
'c-badge--md': boolean;
|
|
73
|
+
'c-badge--lg': boolean;
|
|
74
|
+
'c-primary': boolean;
|
|
75
|
+
'c-secondary': boolean;
|
|
76
|
+
'c-info': boolean;
|
|
77
|
+
'c-success': boolean;
|
|
78
|
+
'c-warning': boolean;
|
|
79
|
+
'c-error': boolean;
|
|
80
|
+
}>;
|
|
64
81
|
iconCombinedClasses: import("@angular/core").Signal<{
|
|
65
82
|
'c-primary': boolean;
|
|
66
83
|
'c-black400': boolean;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { SdBaseSecureComponent } from '@sd-angular/core/components/base';
|
|
3
|
+
import { Color } from '@sdcorejs/utils/models';
|
|
3
4
|
import { MaterialIconFontSet } from '@sd-angular/core/utilities/models';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export type SdButtonType = 'fill' | 'light' | 'outline' | 'link';
|
|
@@ -10,7 +11,7 @@ export declare class SdButton extends SdBaseSecureComponent implements OnInit, O
|
|
|
10
11
|
private el;
|
|
11
12
|
autoIdInput: import("@angular/core").InputSignal<string | null | undefined>;
|
|
12
13
|
type: import("@angular/core").InputSignalWithTransform<SdButtonType, SdButtonType | null | undefined>;
|
|
13
|
-
color: import("@angular/core").InputSignalWithTransform<
|
|
14
|
+
color: import("@angular/core").InputSignalWithTransform<Color, Color | null | undefined>;
|
|
14
15
|
size: import("@angular/core").InputSignalWithTransform<SdButtonSize, SdButtonSize | null | undefined>;
|
|
15
16
|
fontSet: import("@angular/core").InputSignalWithTransform<MaterialIconFontSet, MaterialIconFontSet | null | undefined>;
|
|
16
17
|
title: import("@angular/core").InputSignal<string | null | undefined>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/ckeditor-styles.component';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Styles-only component that loads the global CKEditor 5 stylesheet on demand.
|
|
4
|
+
*
|
|
5
|
+
* Why this exists:
|
|
6
|
+
* - CKEditor's CSS must be global (applies to body-rendered overlays, dialogs, balloons),
|
|
7
|
+
* which means whichever Angular component declares it must use ViewEncapsulation.None.
|
|
8
|
+
* - Switching encapsulation on the main editor components (`<sd-editor>`, `<sd-mini-editor>`,
|
|
9
|
+
* `<sd-document-builder>`) would un-scope all their local styles too.
|
|
10
|
+
* - Instead, this tiny no-render component owns the global CSS. The editor components embed
|
|
11
|
+
* `<sd-ckeditor-styles>` at the top of their template; the CSS is injected once into <head>
|
|
12
|
+
* the first time any editor instance mounts. Editor components themselves keep
|
|
13
|
+
* ViewEncapsulation.Emulated.
|
|
14
|
+
*
|
|
15
|
+
* Behavior:
|
|
16
|
+
* - Renders nothing in the DOM (empty template).
|
|
17
|
+
* - Angular dedupes styles per component class — multiple instances inject the <style> tag
|
|
18
|
+
* only once.
|
|
19
|
+
* - When the host editor component is lazy-loaded, this component's chunk and its CSS travel
|
|
20
|
+
* with it.
|
|
21
|
+
*/
|
|
22
|
+
export declare class SdCKEditorStyles {
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdCKEditorStyles, never>;
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdCKEditorStyles, "sd-ckeditor-styles", never, {}, {}, never, never, true, never>;
|
|
25
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { SdTableColumn, SdTableOption } from '@sd-angular/core/components/table';
|
|
2
2
|
import { SdUploadFile } from '@sd-angular/core/components/upload-file';
|
|
3
|
-
import {
|
|
4
|
-
import { SdPatternType } from '@sd-angular/core/utilities/models';
|
|
3
|
+
import { Color, ValidationPatternType } from '@sdcorejs/utils/models';
|
|
5
4
|
import { SdFormGenericSelectionStaticItem } from './form-generic-definition-selection.model';
|
|
6
5
|
import { SdFormGenericExpression } from './form-generic-expression.model';
|
|
7
6
|
import { SdFormGeneric } from './form-generic.model';
|
|
@@ -58,7 +57,7 @@ export interface SdFormGenericTextfield extends SdFormGenericComponentBase {
|
|
|
58
57
|
validate?: {
|
|
59
58
|
maxlength?: number;
|
|
60
59
|
minlength?: number;
|
|
61
|
-
pattern?:
|
|
60
|
+
pattern?: ValidationPatternType | string;
|
|
62
61
|
patternErrorMessage?: string;
|
|
63
62
|
} & SdFormGenericComponentBase['validate'];
|
|
64
63
|
}
|
|
@@ -68,7 +67,7 @@ export interface SdFormGenericChipString extends SdFormGenericComponentBase {
|
|
|
68
67
|
validate?: {
|
|
69
68
|
maxlength?: number;
|
|
70
69
|
minlength?: number;
|
|
71
|
-
pattern?:
|
|
70
|
+
pattern?: ValidationPatternType | string;
|
|
72
71
|
patternErrorMessage?: string;
|
|
73
72
|
maxOfItems?: number;
|
|
74
73
|
} & SdFormGenericComponentBase['validate'];
|
|
@@ -79,7 +78,7 @@ export interface SdFormGenericChipCalendar extends SdFormGenericComponentBase {
|
|
|
79
78
|
validate?: {
|
|
80
79
|
maxlength?: number;
|
|
81
80
|
minlength?: number;
|
|
82
|
-
pattern?:
|
|
81
|
+
pattern?: ValidationPatternType | string;
|
|
83
82
|
patternErrorMessage?: string;
|
|
84
83
|
maxOfItems?: number;
|
|
85
84
|
} & SdFormGenericComponentBase['validate'];
|
|
@@ -150,7 +149,7 @@ export interface SdFormGenericGroup {
|
|
|
150
149
|
components: SdFormGenericComponent[];
|
|
151
150
|
properties: {
|
|
152
151
|
icon: string;
|
|
153
|
-
color:
|
|
152
|
+
color: Color;
|
|
154
153
|
hidden?: boolean;
|
|
155
154
|
hiddenWhenExpression?: SdFormGenericExpression;
|
|
156
155
|
visibleWhenExpression?: SdFormGenericExpression;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SdOperator } from '@
|
|
1
|
+
import { Operator as SdOperator } from '@sdcorejs/utils/models';
|
|
2
2
|
import { SdFormGenericComponent, SdFormGenericGroup } from './form-generic-component.model';
|
|
3
3
|
export interface SdFormGenericExpression {
|
|
4
4
|
key: string;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Color } from '@sdcorejs/utils/models';
|
|
2
2
|
export interface SdHistoryItemType {
|
|
3
3
|
title: string;
|
|
4
4
|
status?: {
|
|
5
5
|
title?: string;
|
|
6
|
-
color?:
|
|
6
|
+
color?: Color;
|
|
7
7
|
icon?: string;
|
|
8
8
|
};
|
|
9
9
|
date?: string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Marker cho vùng action custom chiếu vào <sd-inform>.
|
|
4
|
+
* Khi có phần tử mang [sdInformAction], component ẩn link `actionLabel` mặc định.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SdInformActionDirective {
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdInformActionDirective, never>;
|
|
8
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SdInformActionDirective, "[sdInformAction]", never, {}, {}, never, never, true, never>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
2
|
+
import { Color } from '@sdcorejs/utils/models';
|
|
3
|
+
import { MaterialIconFontSet } from '@sd-angular/core/utilities/models';
|
|
4
|
+
import { SdInformActionDirective } from './inform-action.directive';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class SdInform {
|
|
7
|
+
#private;
|
|
8
|
+
color: import("@angular/core").InputSignalWithTransform<Color, Color | null | undefined>;
|
|
9
|
+
primary: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
10
|
+
secondary: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
11
|
+
info: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
12
|
+
success: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
13
|
+
warning: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
14
|
+
error: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
15
|
+
title: import("@angular/core").InputSignal<string | undefined>;
|
|
16
|
+
description: import("@angular/core").InputSignal<string | undefined>;
|
|
17
|
+
icon: import("@angular/core").InputSignal<string | undefined>;
|
|
18
|
+
hideIcon: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
19
|
+
fontSet: import("@angular/core").InputSignalWithTransform<MaterialIconFontSet, MaterialIconFontSet | null | undefined>;
|
|
20
|
+
closable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
21
|
+
actionLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
22
|
+
lineClamp: import("@angular/core").InputSignal<number | undefined>;
|
|
23
|
+
autoId: import("@angular/core").InputSignal<string | undefined>;
|
|
24
|
+
sdClosed: import("@angular/core").OutputEmitterRef<Event>;
|
|
25
|
+
sdAction: import("@angular/core").OutputEmitterRef<Event>;
|
|
26
|
+
readonly dismissed: import("@angular/core").WritableSignal<boolean>;
|
|
27
|
+
readonly expanded: import("@angular/core").WritableSignal<boolean>;
|
|
28
|
+
readonly overflowing: import("@angular/core").WritableSignal<boolean>;
|
|
29
|
+
protected readonly bodyRef: import("@angular/core").Signal<ElementRef<HTMLElement> | undefined>;
|
|
30
|
+
protected readonly actionSlot: import("@angular/core").Signal<SdInformActionDirective | undefined>;
|
|
31
|
+
effectiveColor: import("@angular/core").Signal<Color>;
|
|
32
|
+
colorClasses: import("@angular/core").Signal<{
|
|
33
|
+
'c-primary': boolean;
|
|
34
|
+
'c-secondary': boolean;
|
|
35
|
+
'c-info': boolean;
|
|
36
|
+
'c-success': boolean;
|
|
37
|
+
'c-warning': boolean;
|
|
38
|
+
'c-error': boolean;
|
|
39
|
+
}>;
|
|
40
|
+
effectiveIcon: import("@angular/core").Signal<string | null>;
|
|
41
|
+
fontSetClasses: import("@angular/core").Signal<{
|
|
42
|
+
'material-icons': boolean;
|
|
43
|
+
'material-icons-outlined': boolean;
|
|
44
|
+
'material-icons-round': boolean;
|
|
45
|
+
'material-icons-sharp': boolean;
|
|
46
|
+
}>;
|
|
47
|
+
hasActionSlot: import("@angular/core").Signal<boolean>;
|
|
48
|
+
clampLines: import("@angular/core").Signal<number | null>;
|
|
49
|
+
showToggle: import("@angular/core").Signal<boolean>;
|
|
50
|
+
liveRole: import("@angular/core").Signal<"alert" | "status">;
|
|
51
|
+
constructor();
|
|
52
|
+
/** Đo tràn dòng của body; chỉ có ý nghĩa khi đang clamp. */
|
|
53
|
+
measureOverflow(): void;
|
|
54
|
+
toggleExpanded(): void;
|
|
55
|
+
onClose(event: Event): void;
|
|
56
|
+
onAction(event: Event): void;
|
|
57
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdInform, never>;
|
|
58
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdInform, "sd-inform", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "primary": { "alias": "primary"; "required": false; "isSignal": true; }; "secondary": { "alias": "secondary"; "required": false; "isSignal": true; }; "info": { "alias": "info"; "required": false; "isSignal": true; }; "success": { "alias": "success"; "required": false; "isSignal": true; }; "warning": { "alias": "warning"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "hideIcon": { "alias": "hideIcon"; "required": false; "isSignal": true; }; "fontSet": { "alias": "fontSet"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "lineClamp": { "alias": "lineClamp"; "required": false; "isSignal": true; }; "autoId": { "alias": "autoId"; "required": false; "isSignal": true; }; }, { "sdClosed": "sdClosed"; "sdAction": "sdAction"; }, ["actionSlot"], ["[sdInformAction]"], true, never>;
|
|
59
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ElementRef, TemplateRef } from '@angular/core';
|
|
2
|
+
import { Color } from '@sdcorejs/utils/models';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
export declare class SdModal {
|
|
4
5
|
#private;
|
|
@@ -10,11 +11,11 @@ export declare class SdModal {
|
|
|
10
11
|
readonly closeButtonAutoId: import("@angular/core").Signal<string | undefined>;
|
|
11
12
|
readonly dataOpened: import("@angular/core").Signal<"true" | "false">;
|
|
12
13
|
title: import("@angular/core").InputSignalWithTransform<string, string | null | undefined>;
|
|
13
|
-
color: import("@angular/core").InputSignalWithTransform<
|
|
14
|
+
color: import("@angular/core").InputSignalWithTransform<Color, Color | null | undefined>;
|
|
14
15
|
width: import("@angular/core").InputSignalWithTransform<string, string | null | undefined>;
|
|
15
16
|
height: import("@angular/core").InputSignalWithTransform<string, string | null | undefined>;
|
|
16
17
|
view: import("@angular/core").InputSignalWithTransform<"dialog" | "bottom-sheet" | undefined, "dialog" | "bottom-sheet" | null | undefined>;
|
|
17
|
-
modalClass: import("@angular/core").InputSignalWithTransform<string |
|
|
18
|
+
modalClass: import("@angular/core").InputSignalWithTransform<string | Record<string, boolean> | string[], string | Record<string, boolean> | string[] | null | undefined>;
|
|
18
19
|
lazyLoadContent: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
19
20
|
hideClose: import("@angular/core").InputSignalWithTransform<boolean, boolean | "">;
|
|
20
21
|
disableBackdropClose: import("@angular/core").InputSignalWithTransform<boolean, boolean | "">;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { SdQuery, SdQueryLogic, SdSavedFilter } from '
|
|
1
|
+
import { SdQuery, SdQueryLogic, SdSavedFilter } from '../../query-bar.model';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
/**
|
|
4
|
-
* Right-pinned toolbar for `sd-query-bar`: AND/OR connector toggle,
|
|
5
|
-
* dropdown
|
|
6
|
-
* Owns no business logic — just routes user intent back via
|
|
7
|
-
* (`(logic)` model, `(clear)`, `(search)`, `(applyFilter)`).
|
|
4
|
+
* Right-pinned toolbar for `sd-query-bar`: AND/OR connector toggle, clear-all,
|
|
5
|
+
* saved-filters dropdown (with footer "Lưu bộ lọc hiện tại"), and the deferred
|
|
6
|
+
* Search trigger. Owns no business logic — just routes user intent back via
|
|
7
|
+
* outputs (`(logic)` model, `(clear)`, `(search)`, `(applyFilter)`).
|
|
8
8
|
*
|
|
9
|
-
* The "save
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* The "save current query" action lives INSIDE the saved-filters mat-menu
|
|
10
|
+
* footer (one zone for both apply + save). The dropdown trigger sits
|
|
11
|
+
* immediately before Search so the user sees one filter-cluster on the right.
|
|
12
12
|
*/
|
|
13
13
|
export declare class SdQueryActionsBar {
|
|
14
14
|
readonly showLogicToggle: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
@@ -22,10 +22,7 @@ export declare class SdQueryActionsBar {
|
|
|
22
22
|
readonly clear: import("@angular/core").OutputEmitterRef<void>;
|
|
23
23
|
readonly canSearch: import("@angular/core").InputSignal<boolean>;
|
|
24
24
|
readonly search: import("@angular/core").OutputEmitterRef<void>;
|
|
25
|
-
private readonly savedFiltersMenu;
|
|
26
25
|
setLogic(value: SdQueryLogic): void;
|
|
27
|
-
/** Trigger save-current-query via the saved-filters child (no-op when menu absent / no key). */
|
|
28
|
-
promptSave(): void;
|
|
29
26
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdQueryActionsBar, never>;
|
|
30
27
|
static ɵcmp: i0.ɵɵComponentDeclaration<SdQueryActionsBar, "sd-query-actions-bar", never, { "showLogicToggle": { "alias": "showLogicToggle"; "required": false; "isSignal": true; }; "logic": { "alias": "logic"; "required": false; "isSignal": true; }; "filtersCount": { "alias": "filtersCount"; "required": false; "isSignal": true; }; "showSavedFilters": { "alias": "showSavedFilters"; "required": false; "isSignal": true; }; "savedFiltersKey": { "alias": "savedFiltersKey"; "required": false; "isSignal": true; }; "query": { "alias": "query"; "required": false; "isSignal": true; }; "showClearAll": { "alias": "showClearAll"; "required": false; "isSignal": true; }; "canSearch": { "alias": "canSearch"; "required": false; "isSignal": true; }; }, { "logic": "logicChange"; "applyFilter": "applyFilter"; "clear": "clear"; "search": "search"; }, never, never, true, never>;
|
|
31
28
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Operator } from '@
|
|
2
|
-
import { BuildingChip } from '
|
|
1
|
+
import { Operator } from '@sdcorejs/utils/models';
|
|
2
|
+
import { BuildingChip } from '../../query-bar.model';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
type Density = 'compact' | 'comfortable';
|
|
5
5
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MatMenu } from '@angular/material/menu';
|
|
2
|
-
import { Filter, Operator } from '@
|
|
3
|
-
import { SdQueryField, sdQueryFieldIcon } from '
|
|
2
|
+
import { Filter, Operator } from '@sdcorejs/utils/models';
|
|
3
|
+
import { SdQueryField, sdQueryFieldIcon } from '../../query-bar.model';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
/**
|
|
6
6
|
* Popover-mode chip editor — the entire `<mat-menu>` that opens when a popover-mode
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MatMenu } from '@angular/material/menu';
|
|
2
|
-
import { SdQueryField, sdQueryFieldIcon } from '
|
|
2
|
+
import { SdQueryField, sdQueryFieldIcon } from '../../query-bar.model';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
5
5
|
* Field picker mat-menu for `sd-query-bar`.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Filter, Operator } from '@
|
|
2
|
-
import { SdQueryField } from '
|
|
1
|
+
import { Filter, Operator } from '@sdcorejs/utils/models';
|
|
2
|
+
import { SdQueryField } from '../../query-bar.model';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
type Density = 'compact' | 'comfortable';
|
|
5
5
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Operator } from '@
|
|
2
|
-
import { SdQueryField } from '
|
|
1
|
+
import { Operator } from '@sdcorejs/utils/models';
|
|
2
|
+
import { SdQueryField } from '../../query-bar.model';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
type ChipState = 'pending' | 'active' | 'focus' | 'error';
|
|
5
5
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MatMenu } from '@angular/material/menu';
|
|
2
|
-
import { Filter, Operator } from '@
|
|
3
|
-
import { SdQueryField, sdQueryFieldIcon } from '
|
|
2
|
+
import { Filter, Operator } from '@sdcorejs/utils/models';
|
|
3
|
+
import { SdQueryField, sdQueryFieldIcon } from '../../query-bar.model';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
/**
|
|
6
6
|
* Compact popover-mode chip face. Click → opens the parent-supplied [menu] (mat-menu
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Filter, Operator } from '@
|
|
2
|
-
import { SdQueryChipPopover } from './chip-popover.component';
|
|
3
|
-
import { SdQueryPopoverChip } from './popover-chip.component';
|
|
1
|
+
import { Filter, Operator } from '@sdcorejs/utils/models';
|
|
2
|
+
import { SdQueryChipPopover } from './components/chip-popover/chip-popover.component';
|
|
3
|
+
import { SdQueryPopoverChip } from './components/popover-chip/popover-chip.component';
|
|
4
4
|
import { BuildingChip, SdQuery, SdQueryField, SdQueryLogic, SdSavedFilter, sdQueryFieldIcon } from './query-bar.model';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
type Density = 'compact' | 'comfortable';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Signal } from '@angular/core';
|
|
2
2
|
import { SdSearch } from '@sd-angular/core/forms/models';
|
|
3
|
-
import { Filter, NestedKeyOf, Operator } from '@
|
|
3
|
+
import { Filter, NestedKeyOf, Operator } from '@sdcorejs/utils/models';
|
|
4
4
|
export type SdQueryFieldType = 'string' | 'number' | 'boolean' | 'date' | 'datetime' | 'values' | 'lazy-values';
|
|
5
5
|
interface SdQueryFieldBase<T = any> {
|
|
6
6
|
/** Dot-notation field path (matches `Filter.field`). */
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { SdBaseSecureComponent } from '@sd-angular/core/components/base';
|
|
2
|
+
import { Color } from '@sdcorejs/utils/models';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
export declare class SdSection extends SdBaseSecureComponent {
|
|
4
5
|
#private;
|
|
5
6
|
title: import("@angular/core").InputSignal<string | null | undefined>;
|
|
6
7
|
subTitle: import("@angular/core").InputSignal<string | null | undefined>;
|
|
7
8
|
icon: import("@angular/core").InputSignal<string | null | undefined>;
|
|
8
|
-
iconColor: import("@angular/core").InputSignal<
|
|
9
|
+
iconColor: import("@angular/core").InputSignal<Color>;
|
|
9
10
|
collapsed: import("@angular/core").ModelSignal<boolean>;
|
|
10
11
|
collapsable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
11
12
|
hideHeader: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TemplateRef } from '@angular/core';
|
|
2
|
+
import { AbstractControl } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export type SdStepState = 'pending' | 'active' | 'completed' | 'error' | string;
|
|
5
|
+
export declare class SdStep {
|
|
6
|
+
label: import("@angular/core").InputSignal<string>;
|
|
7
|
+
icon: import("@angular/core").InputSignal<string | null | undefined>;
|
|
8
|
+
optional: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
9
|
+
editable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
10
|
+
stepControl: import("@angular/core").InputSignal<AbstractControl<any, any> | null | undefined>;
|
|
11
|
+
state: import("@angular/core").InputSignal<string | undefined>;
|
|
12
|
+
errorMessage: import("@angular/core").InputSignal<string | undefined>;
|
|
13
|
+
selectChange: import("@angular/core").OutputEmitterRef<void>;
|
|
14
|
+
bodyTpl: import("@angular/core").Signal<TemplateRef<unknown>>;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdStep, never>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdStep, "sd-step", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "optional": { "alias": "optional"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "stepControl": { "alias": "stepControl"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; }, { "selectChange": "selectChange"; }, never, ["*"], true, never>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { StepperSelectionEvent } from '@angular/cdk/stepper';
|
|
2
|
+
import { MatStepper } from '@angular/material/stepper';
|
|
3
|
+
import { SdBaseSecureComponent } from '@sd-angular/core/components/base';
|
|
4
|
+
import { Color } from '@sdcorejs/utils/models';
|
|
5
|
+
import { SdStep } from './step.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class SdStepper extends SdBaseSecureComponent {
|
|
8
|
+
steps: import("@angular/core").Signal<readonly SdStep[]>;
|
|
9
|
+
selectedIndex: import("@angular/core").ModelSignal<number>;
|
|
10
|
+
linear: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
11
|
+
orientation: import("@angular/core").InputSignal<"horizontal" | "vertical">;
|
|
12
|
+
labelPosition: import("@angular/core").InputSignal<"end" | "bottom">;
|
|
13
|
+
headerPosition: import("@angular/core").InputSignal<"bottom" | "top">;
|
|
14
|
+
animationDuration: import("@angular/core").InputSignal<string>;
|
|
15
|
+
disableRipple: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
16
|
+
color: import("@angular/core").InputSignal<Color>;
|
|
17
|
+
autoId: import("@angular/core").InputSignal<string | undefined>;
|
|
18
|
+
selectionChange: import("@angular/core").OutputEmitterRef<StepperSelectionEvent>;
|
|
19
|
+
protected matStepper: import("@angular/core").Signal<MatStepper | undefined>;
|
|
20
|
+
get autoIdAttr(): string | null;
|
|
21
|
+
get cssActive(): string;
|
|
22
|
+
get cssActiveBg(): string;
|
|
23
|
+
get cssCompleted(): string;
|
|
24
|
+
get cssLine(): string;
|
|
25
|
+
constructor();
|
|
26
|
+
next(): void;
|
|
27
|
+
previous(): void;
|
|
28
|
+
reset(): void;
|
|
29
|
+
goTo(index: number): void;
|
|
30
|
+
protected onSelectionChange(ev: StepperSelectionEvent): void;
|
|
31
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdStepper, never>;
|
|
32
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdStepper, "sd-stepper", never, { "selectedIndex": { "alias": "selectedIndex"; "required": false; "isSignal": true; }; "linear": { "alias": "linear"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; "headerPosition": { "alias": "headerPosition"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; "disableRipple": { "alias": "disableRipple"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "autoId": { "alias": "autoId"; "required": false; "isSignal": true; }; }, { "selectedIndex": "selectedIndexChange"; "selectionChange": "selectionChange"; }, ["steps"], never, true, never>;
|
|
33
|
+
}
|