@sdcorejs/angular 19.0.9 → 19.0.11
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 +270 -140
- package/assets/STYLE-GUIDE.md +2 -2
- package/assets/scss/core/_inline-edit.scss +1 -1
- package/assets/scss/core/form.scss +1 -1
- package/assets/scss/core/utilities/_grid.scss +25 -19
- package/assets/scss/themes/default.scss +2 -2
- package/components/anchor/src/models/sd-anchor.model.d.ts +1 -1
- package/components/badge/src/badge.component.d.ts +3 -14
- package/components/button/src/button.component.d.ts +5 -3
- package/components/document-builder/src/document-builder.component.d.ts +2 -2
- package/components/document-builder/src/plugins/paste-handler/filters/parse.d.ts +1 -1
- package/components/editor/src/plugins/image-upload/utils/batch.utils.d.ts +3 -3
- package/components/form-generic/src/components/form-builder/components/attribute-expression/attribute-expression.component.d.ts +10 -6
- package/components/form-generic/src/components/form-builder/components/attribute-expression/form-expression-query-adapter.d.ts +6 -0
- package/components/form-generic/src/components/form-builder/components/attribute-parameter/attribute-parameter.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/attribute-selection/attribute-selection.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/attribute-selection/components/build-queries/build-queries.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/attribute-selection/components/build-variables/build-variables.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/attribute-table/attribute-table.component.d.ts +2 -4
- package/components/form-generic/src/components/form-builder/components/attribute-template/attribute-template.component.d.ts +2 -4
- package/components/form-generic/src/components/form-builder/components/checkbox/attribute/checkbox-attribute.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/chip-calendar/attribute/chip-calendar-attribute.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/chip-calendar/control/chip-calendar-control.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/chip-string/attribute/chip-string-attribute.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/chip-string/control/chip-string-control.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/configure-validation/configure-validation.component.d.ts +6 -7
- package/components/form-generic/src/components/form-builder/components/datetime/attribute/datetime-attribute.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/datetime/control/datetime-control.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/expression-builder/expression-builder.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/html/attribute/components/build-queries/build-queries.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/html/control/html-control.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/number/attribute/number-attribute.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/number/control/number-control.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/radio/attribute/radio-attribute.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/radio/control/radio-control.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/select/attribute/select-attribute.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/select/control/select-control.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/table/attribute/table-attribute.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/table/control/table-control.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/textarea/attribute/textarea-attribute.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/textarea/control/textarea-control.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/textfield/attribute/textfield-attribute.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/textfield/control/textfield-control.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/upload/attribute/upload-attribute.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/components/upload/control/upload-control.component.d.ts +2 -2
- package/components/form-generic/src/components/form-builder/form-builder-layout.d.ts +22 -0
- package/components/form-generic/src/components/form-builder/form-builder.component.d.ts +24 -5
- package/components/form-generic/src/components/form-render/components/item/components/chip-calendar/chip-calendar.component.d.ts +2 -2
- package/components/form-generic/src/components/form-render/components/item/components/chip-string/chip-string.component.d.ts +2 -2
- package/components/form-generic/src/components/form-render/components/item/components/datetime/datetime.component.d.ts +2 -2
- package/components/form-generic/src/components/form-render/components/item/components/html/html.component.d.ts +2 -2
- package/components/form-generic/src/components/form-render/components/item/components/number/number.component.d.ts +2 -2
- package/components/form-generic/src/components/form-render/components/item/components/radio/radio.component.d.ts +2 -2
- package/components/form-generic/src/components/form-render/components/item/components/select/select.component.d.ts +2 -2
- package/components/form-generic/src/components/form-render/components/item/components/table/table.component.d.ts +2 -2
- package/components/form-generic/src/components/form-render/components/item/components/textarea/textarea.component.d.ts +2 -2
- package/components/form-generic/src/components/form-render/components/item/components/textfield/textfield.component.d.ts +2 -2
- package/components/form-generic/src/components/form-render/components/item/components/upload/upload.component.d.ts +2 -2
- package/components/form-generic/src/components/form-render/components/variable/variable.component.d.ts +2 -2
- package/components/form-generic/src/components/form-render/form-render.component.d.ts +4 -6
- package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +2 -2
- package/components/form-generic/src/configurations/form.configuration.d.ts +1 -1
- package/components/form-generic/src/models/form-generic-component.model.d.ts +2 -2
- package/components/form-generic/src/services/form-generic.service.d.ts +1 -3
- package/components/import-excel/src/import-excel.model.d.ts +2 -2
- package/components/inform/src/inform.component.d.ts +2 -8
- package/components/mini-editor/src/mini-editor.component.d.ts +4 -4
- package/components/modal/src/modal.component.d.ts +1 -1
- package/components/query-builder/src/query-builder.component.d.ts +3 -3
- package/components/query-builder/src/query-builder.model.d.ts +4 -4
- package/components/splitter/src/splitter-state.service.d.ts +1 -1
- package/components/tab-router/src/models/tab-router.model.d.ts +2 -1
- package/components/tab-router/src/services/tab-router.service.d.ts +0 -1
- package/components/table/src/components/command/desktop-command.component.d.ts +7 -7
- package/components/table/src/components/command/pipes/command.pipe.d.ts +1 -12
- package/components/table/src/components/command/pipes/filter.pipe.d.ts +1 -8
- package/components/table/src/components/filter/column-filter/column-filter.component.d.ts +1 -0
- package/components/table/src/models/table-column.model.d.ts +3 -2
- package/components/table/src/models/table-command.model.d.ts +3 -3
- package/components/table/src/models/table-option-selector.model.d.ts +5 -5
- package/components/table/src/pipes/selection-disabled.pipe.d.ts +1 -1
- package/components/table/src/services/config.service.d.ts +4 -5
- package/components/tree/src/tree.model.d.ts +3 -2
- package/components/view/src/view.component.d.ts +1 -1
- package/configurations/src/sd-core.configuration.d.ts +2 -2
- package/fesm2022/sdcorejs-angular-components-anchor.mjs +20 -24
- package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs +4 -5
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-avatar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-badge.mjs +14 -13
- package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-button.mjs +15 -17
- package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-chart.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs +5 -6
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs +17 -26
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-editor.mjs +11 -7
- package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs +715 -436
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-history.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-history.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs +38 -23
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-inform.mjs +5 -16
- package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs +5 -6
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal.mjs +28 -18
- package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-operator.mjs +1 -1
- package/fesm2022/sdcorejs-angular-components-operator.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs +4 -5
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-preview.mjs +40 -37
- package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs +38 -55
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs +5 -7
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-quick-action.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-section.mjs +3 -5
- package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +6 -7
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-splitter.mjs +4 -4
- package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-stepper.mjs +3 -4
- package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs +36 -37
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab.mjs +3 -4
- package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-table.mjs +79 -101
- package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tree.mjs +6 -8
- package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs +14 -15
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-view.mjs +3 -9
- package/fesm2022/sdcorejs-angular-components-view.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-configurations.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-directives.mjs +2 -7
- package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +5 -10
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +9 -11
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip.mjs +7 -9
- package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs +8 -12
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date.mjs +8 -12
- package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs +7 -13
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-inline-text.mjs +4 -5
- package/fesm2022/sdcorejs-angular-forms-inline-text.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs +3 -3
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs +6 -8
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input.mjs +5 -7
- package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-label.mjs +4 -6
- package/fesm2022/sdcorejs-angular-forms-label.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-radio.mjs +12 -4
- package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-select.mjs +51 -22
- package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs +7 -9
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-handlers.mjs +3 -6
- package/fesm2022/sdcorejs-angular-handlers.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-i18n.mjs +11 -7
- package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-interceptors.mjs +0 -2
- package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-auth.mjs +14 -38
- package/fesm2022/sdcorejs-angular-modules-auth.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-authom.mjs +14 -14
- package/fesm2022/sdcorejs-angular-modules-authom.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-icon.mjs +523 -0
- package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs +22 -11
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-layout.mjs +53 -52
- package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-permission.mjs +5 -12
- package/fesm2022/sdcorejs-angular-modules-permission.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules.mjs +1 -0
- package/fesm2022/sdcorejs-angular-modules.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-pipes.mjs +71 -17
- package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-api.mjs +0 -2
- package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-cache.mjs +5 -11
- package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-confirm.mjs +19 -25
- package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-docx.mjs +2 -8
- package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-excel.mjs +24 -16
- package/fesm2022/sdcorejs-angular-services-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-license.mjs +5 -12
- package/fesm2022/sdcorejs-angular-services-license.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-notify.mjs +70 -87
- package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-storage.mjs +6 -15
- package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-data-state.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs +47 -5
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-models.mjs +21 -5
- package/fesm2022/sdcorejs-angular-utilities-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular.mjs.map +1 -1
- package/forms/chip/src/chip.component.d.ts +2 -2
- package/forms/chip-calendar/src/chip-calendar.component.d.ts +2 -2
- package/forms/input-color/src/input-color.component.d.ts +2 -1
- package/forms/select/src/select-footer-action.directive.d.ts +5 -1
- package/forms/select/src/select.component.d.ts +4 -0
- package/modules/auth/guards/auth.guard.d.ts +2 -4
- package/modules/auth/guards/portal.guard.d.ts +2 -4
- package/modules/auth/services/auth.service.d.ts +3 -4
- package/modules/icon/index.d.ts +1 -0
- package/modules/icon/src/icon.component.d.ts +101 -0
- package/modules/icon/src/icon.model.d.ts +59 -0
- package/modules/icon/src/icon.provider.d.ts +33 -0
- package/modules/icon/src/index.d.ts +3 -0
- package/modules/index.d.ts +1 -0
- package/modules/layout/modules/home/guards/home-redirect.guard.d.ts +3 -5
- package/modules/permission/src/configurations/permission.configuration.d.ts +3 -3
- package/modules/permission/src/guards/permission.guard.d.ts +2 -5
- package/package.json +11 -6
- package/pipes/index.d.ts +3 -0
- package/pipes/src/format-date.pipe.d.ts +8 -0
- package/pipes/src/format-datetime.pipe.d.ts +8 -0
- package/pipes/src/format-number.pipe.d.ts +1 -3
- package/pipes/src/view.pipe.d.ts +7 -0
- package/services/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.d.ts +3 -3
- package/services/excel/src/lib/spreadsheet-formula-injection.util.d.ts +5 -0
- package/services/license/src/license.service.d.ts +2 -3
- package/services/notify/src/components/toast/toast.component.d.ts +9 -13
- package/services/notify/src/notify.service.d.ts +4 -5
- package/services/storage/src/storage.service.d.ts +3 -4
- package/utilities/extensions/index.d.ts +1 -0
- package/utilities/extensions/src/object.extension.d.ts +8 -0
- package/utilities/models/src/icon.model.d.ts +4 -2
- package/components/document-builder/src/plugins/paste-handler/filters/replacetabswithinprewithspaces.d.ts +0 -24
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AfterViewInit, ElementRef, TemplateRef } from '@angular/core';
|
|
1
|
+
import { AfterViewInit, ElementRef, TemplateRef, OnDestroy } from '@angular/core';
|
|
2
2
|
import { FormControl, FormGroup, FormGroupDirective, NgForm } from '@angular/forms';
|
|
3
3
|
import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
|
|
4
4
|
import { ErrorStateMatcher } from '@angular/material/core';
|
|
@@ -14,7 +14,7 @@ declare class SdChipCalendarErrorStateMatcher implements ErrorStateMatcher {
|
|
|
14
14
|
constructor(formControl: FormControl);
|
|
15
15
|
isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean;
|
|
16
16
|
}
|
|
17
|
-
export declare class SdChipCalendar implements AfterViewInit {
|
|
17
|
+
export declare class SdChipCalendar implements AfterViewInit, OnDestroy {
|
|
18
18
|
#private;
|
|
19
19
|
menuTrigger: import("@angular/core").Signal<MatMenuTrigger | undefined>;
|
|
20
20
|
calendar: import("@angular/core").Signal<MatCalendar<Date> | undefined>;
|
|
@@ -18,6 +18,7 @@ export declare class SdInputColor {
|
|
|
18
18
|
readonly required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
19
19
|
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
20
20
|
readonly readonly: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
21
|
+
readonly hideInlineError: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
21
22
|
/** Display mode — forwarded to the inner `<sd-input>`. `'inline'` = borderless inline-edit; disabled `'inline'` → static. */
|
|
22
23
|
readonly viewed: import("@angular/core").InputSignalWithTransform<SdViewed, SdViewedInput>;
|
|
23
24
|
readonly valueModel: import("@angular/core").ModelSignal<string | null | undefined>;
|
|
@@ -30,5 +31,5 @@ export declare class SdInputColor {
|
|
|
30
31
|
onPickerChange: (ev: Event) => void;
|
|
31
32
|
clear: (ev?: Event) => void;
|
|
32
33
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdInputColor, never>;
|
|
33
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SdInputColor, "sd-input-color", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autoId": { "alias": "autoId"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; }, never, never, true, never>;
|
|
34
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdInputColor, "sd-input-color", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autoId": { "alias": "autoId"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "hideInlineError": { "alias": "hideInlineError"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; }, never, never, true, never>;
|
|
34
35
|
}
|
|
@@ -2,10 +2,14 @@ import { TemplateRef } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export interface SdSelectFooterActionContext {
|
|
4
4
|
searchText: string;
|
|
5
|
+
filteredItems: unknown[];
|
|
6
|
+
selectedItems: unknown[];
|
|
5
7
|
}
|
|
8
|
+
export type SdSelectFooterActionWhenFn = (ctx: SdSelectFooterActionContext) => boolean | Promise<boolean>;
|
|
9
|
+
export type SdSelectFooterActionWhen = 'always' | 'empty' | 'has-result' | SdSelectFooterActionWhenFn;
|
|
6
10
|
export declare class SdSelectFooterActionDirective {
|
|
7
11
|
readonly templateRef: TemplateRef<any>;
|
|
8
|
-
readonly when: import("@angular/core").InputSignal<
|
|
12
|
+
readonly when: import("@angular/core").InputSignal<SdSelectFooterActionWhen>;
|
|
9
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdSelectFooterActionDirective, never>;
|
|
10
14
|
static ɵdir: i0.ɵɵDirectiveDeclaration<SdSelectFooterActionDirective, "ng-template[sdSelectFooterAction]", never, { "when": { "alias": "when"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
11
15
|
}
|
|
@@ -100,6 +100,8 @@ export declare class SdSelect<T extends object | string | number = Record<string
|
|
|
100
100
|
readonly searchText: import("@angular/core").WritableSignal<string>;
|
|
101
101
|
readonly footerActionContext: Signal<{
|
|
102
102
|
searchText: string;
|
|
103
|
+
filteredItems: T[];
|
|
104
|
+
selectedItems: T[];
|
|
103
105
|
}>;
|
|
104
106
|
readonly visibleFooterActions: Signal<SdSelectFooterActionDirective[]>;
|
|
105
107
|
normalizedValue: Signal<string | number | boolean | (string | number | boolean)[] | null | undefined>;
|
|
@@ -119,6 +121,8 @@ export declare class SdSelect<T extends object | string | number = Record<string
|
|
|
119
121
|
clear: ($event?: any) => void;
|
|
120
122
|
onClick: () => void;
|
|
121
123
|
focus: () => void;
|
|
124
|
+
/** Clears the panel search/filter input and resets `searchText`. */
|
|
125
|
+
clearSearch: () => void;
|
|
122
126
|
/** Open the select panel programmatically (anchors to the mat-select trigger). */
|
|
123
127
|
open: () => void;
|
|
124
128
|
onOpenedChange: (isOpened: boolean) => void;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';
|
|
2
|
-
import { ISdAuthConfiguration } from '../configurations';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class SdAuthGuard implements CanActivate {
|
|
5
|
-
private authConfiguration;
|
|
4
|
+
private readonly authConfiguration;
|
|
6
5
|
protected readonly router: Router;
|
|
7
|
-
constructor(authConfiguration: ISdAuthConfiguration, router: Router);
|
|
8
6
|
canActivate: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => import("@angular/router").MaybeAsync<import("@angular/router").GuardResult>;
|
|
9
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdAuthGuard,
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdAuthGuard, never>;
|
|
10
8
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdAuthGuard>;
|
|
11
9
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';
|
|
2
|
-
import { ISdAuthConfiguration } from '../configurations';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class SdPortalGuard implements CanActivate {
|
|
5
|
-
private authConfiguration;
|
|
4
|
+
private readonly authConfiguration;
|
|
6
5
|
protected readonly router: Router;
|
|
7
|
-
constructor(authConfiguration: ISdAuthConfiguration, router: Router);
|
|
8
6
|
canActivate: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => import("@angular/router").MaybeAsync<import("@angular/router").GuardResult>;
|
|
9
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdPortalGuard,
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdPortalGuard, never>;
|
|
10
8
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdPortalGuard>;
|
|
11
9
|
}
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { Signal } from '@angular/core';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
|
-
import { ISdAuthConfiguration } from '../configurations';
|
|
4
3
|
import { SdAuthInfo } from './auth.model';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
export declare class SdAuthService {
|
|
7
6
|
#private;
|
|
8
|
-
private authConfiguration;
|
|
9
7
|
getAuthInfo?: Signal<SdAuthInfo | undefined>;
|
|
10
8
|
signout$?: Observable<void>;
|
|
11
9
|
changePassword$?: Observable<void>;
|
|
12
|
-
|
|
10
|
+
private readonly authConfiguration;
|
|
11
|
+
constructor();
|
|
13
12
|
signout: () => void;
|
|
14
13
|
changePassword: () => void;
|
|
15
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdAuthService,
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdAuthService, never>;
|
|
16
15
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdAuthService>;
|
|
17
16
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src';
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { type Size } from '@sdcorejs/utils/models';
|
|
2
|
+
import { type SdIconSet, type SdMaterialIconSet } from './icon.model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Facade icon dùng chung cho Core UI.
|
|
6
|
+
*
|
|
7
|
+
* Component này giữ template app theo tên icon ổn định, còn renderer có thể đổi giữa Material font và Lucide SVG qua provider hoặc input.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SdIcon {
|
|
10
|
+
private readonly config;
|
|
11
|
+
/**
|
|
12
|
+
* Tên icon theo namespace hiện tại.
|
|
13
|
+
*
|
|
14
|
+
* Khi `set` là `lucide`, tên này sẽ đi qua alias để app có thể tiếp tục dùng tên Material trong template.
|
|
15
|
+
*/
|
|
16
|
+
name: import("@angular/core").InputSignalWithTransform<string | undefined, string | null | undefined>;
|
|
17
|
+
fontIcon: import("@angular/core").InputSignalWithTransform<string | undefined, string | null | undefined>;
|
|
18
|
+
color: import("@angular/core").InputSignalWithTransform<string | undefined, string | null | undefined>;
|
|
19
|
+
/**
|
|
20
|
+
* Renderer icon của riêng instance này.
|
|
21
|
+
*
|
|
22
|
+
* Deprecated alias for `fontSet`.
|
|
23
|
+
*/
|
|
24
|
+
set: import("@angular/core").InputSignalWithTransform<SdIconSet | undefined, SdIconSet | null | undefined>;
|
|
25
|
+
/**
|
|
26
|
+
* Escape hatch cho Material icon font set.
|
|
27
|
+
*
|
|
28
|
+
* Prefer this input for both Material font families and Lucide SVG icons.
|
|
29
|
+
*/
|
|
30
|
+
fontSet: import("@angular/core").InputSignalWithTransform<SdIconSet | undefined, SdIconSet | null | undefined>;
|
|
31
|
+
/**
|
|
32
|
+
* Kích thước icon theo token SDCoreJS hoặc CSS size tùy biến.
|
|
33
|
+
*
|
|
34
|
+
* Token `sm | md | lg` giữ icon đồng bộ với các component Core UI; CSS string xử lý các ngoại lệ layout.
|
|
35
|
+
*/
|
|
36
|
+
size: import("@angular/core").InputSignalWithTransform<Size | (string & {}), Size | (string & {}) | null | undefined>;
|
|
37
|
+
/**
|
|
38
|
+
* Độ dày stroke riêng cho Lucide SVG.
|
|
39
|
+
*
|
|
40
|
+
* Bỏ trống để nhận giá trị từ `lucideConfig` app-level.
|
|
41
|
+
*/
|
|
42
|
+
strokeWidth: import("@angular/core").InputSignalWithTransform<string | number | undefined, string | number | null | undefined>;
|
|
43
|
+
/**
|
|
44
|
+
* Giữ stroke width tuyệt đối cho Lucide khi SVG đổi kích thước.
|
|
45
|
+
*
|
|
46
|
+
* Input này đi qua `booleanAttribute` để hỗ trợ cả attribute trần trong template.
|
|
47
|
+
*/
|
|
48
|
+
absoluteStrokeWidth: import("@angular/core").InputSignalWithTransform<boolean | undefined, string | boolean | null | undefined>;
|
|
49
|
+
/**
|
|
50
|
+
* Nhãn truy cập cho icon có ý nghĩa.
|
|
51
|
+
*
|
|
52
|
+
* Khi không có nhãn, component tự đánh dấu decorative bằng `aria-hidden`.
|
|
53
|
+
*/
|
|
54
|
+
ariaLabel: import("@angular/core").InputSignalWithTransform<string | undefined, string | null | undefined>;
|
|
55
|
+
/**
|
|
56
|
+
* Set icon cuối cùng sau khi áp dụng input và provider.
|
|
57
|
+
*
|
|
58
|
+
* @returns renderer hiện tại của component.
|
|
59
|
+
*/
|
|
60
|
+
resolvedFontSet: import("@angular/core").Signal<SdIconSet>;
|
|
61
|
+
/** @deprecated Use `resolvedFontSet` instead. */
|
|
62
|
+
resolvedSet: import("@angular/core").Signal<SdIconSet>;
|
|
63
|
+
/**
|
|
64
|
+
* Tên icon cuối cùng theo renderer hiện tại.
|
|
65
|
+
*
|
|
66
|
+
* @returns tên icon đã áp alias nếu renderer yêu cầu.
|
|
67
|
+
*/
|
|
68
|
+
resolvedName: import("@angular/core").Signal<string | undefined>;
|
|
69
|
+
/**
|
|
70
|
+
* Font set Material cuối cùng.
|
|
71
|
+
*
|
|
72
|
+
* @returns font set dùng cho `mat-icon`; với Lucide trả về fallback Material để computed luôn có type ổn định.
|
|
73
|
+
*/
|
|
74
|
+
resolvedMaterialFontSet: import("@angular/core").Signal<SdMaterialIconSet>;
|
|
75
|
+
/**
|
|
76
|
+
* Kích thước runtime cho renderer hiện tại.
|
|
77
|
+
*
|
|
78
|
+
* @returns số pixel cho token chuẩn hoặc CSS string nguyên bản cho custom size.
|
|
79
|
+
*/
|
|
80
|
+
resolvedSize: import("@angular/core").Signal<string | number>;
|
|
81
|
+
/**
|
|
82
|
+
* Kích thước CSS cuối cùng cho host element.
|
|
83
|
+
*
|
|
84
|
+
* @returns CSS length dùng cho custom property `--sd-icon-size`.
|
|
85
|
+
*/
|
|
86
|
+
resolvedCssSize: import("@angular/core").Signal<string>;
|
|
87
|
+
/**
|
|
88
|
+
* Stroke width cuối cùng cho Lucide SVG.
|
|
89
|
+
*
|
|
90
|
+
* @returns giá trị input instance hoặc fallback từ provider.
|
|
91
|
+
*/
|
|
92
|
+
resolvedStrokeWidth: import("@angular/core").Signal<string | number | undefined>;
|
|
93
|
+
/**
|
|
94
|
+
* Absolute stroke width cuối cùng cho Lucide SVG.
|
|
95
|
+
*
|
|
96
|
+
* @returns giá trị input instance hoặc fallback từ provider.
|
|
97
|
+
*/
|
|
98
|
+
resolvedAbsoluteStrokeWidth: import("@angular/core").Signal<boolean | undefined>;
|
|
99
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdIcon, never>;
|
|
100
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdIcon, "sd-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "fontIcon": { "alias": "fontIcon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "set": { "alias": "set"; "required": false; "isSignal": true; }; "fontSet": { "alias": "fontSet"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "absoluteStrokeWidth": { "alias": "absoluteStrokeWidth"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
101
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type LucideConfig, type LucideIcon, type LucideIconData } from '@lucide/angular';
|
|
2
|
+
import { type Size } from '@sdcorejs/utils/models';
|
|
3
|
+
import { type SdIconSet, type SdMaterialIconSet } from '@sdcorejs/angular/utilities/models';
|
|
4
|
+
/**
|
|
5
|
+
* Chọn renderer icon chính cho `SdIcon`.
|
|
6
|
+
*
|
|
7
|
+
* Material dùng đúng tên font set để tránh thêm mapping nội bộ; `lucide` chuyển sang renderer SVG của `@lucide/angular`.
|
|
8
|
+
*/
|
|
9
|
+
export type { SdIconSet, SdMaterialIconSet };
|
|
10
|
+
/** @deprecated Use `SdIconSet` instead. */
|
|
11
|
+
export type SdIconFontSet = SdIconSet;
|
|
12
|
+
/**
|
|
13
|
+
* Một icon Lucide có thể đăng ký bằng class icon Angular hoặc dữ liệu path thuần.
|
|
14
|
+
*/
|
|
15
|
+
export type SdLucideIconRegistration = LucideIcon | LucideIconData;
|
|
16
|
+
/**
|
|
17
|
+
* Danh sách đăng ký Lucide cho provider, hỗ trợ cả array và object map để app có thể giữ cấu trúc import riêng.
|
|
18
|
+
*/
|
|
19
|
+
export type SdLucideIconRegistrations = SdLucideIconRegistration[] | Record<string, SdLucideIconRegistration>;
|
|
20
|
+
/**
|
|
21
|
+
* Cấu hình app-level cho `SdIcon`.
|
|
22
|
+
*
|
|
23
|
+
* Các alias tách riêng theo renderer để app có thể giữ tên Material trong template trong lúc chuyển dần sang Lucide.
|
|
24
|
+
*/
|
|
25
|
+
export interface ISdIconConfiguration {
|
|
26
|
+
/** Default icon font set when component does not pass `fontSet`. */
|
|
27
|
+
defaultFontSet?: SdIconSet;
|
|
28
|
+
/** Alias áp dụng khi renderer hiện tại là Material. */
|
|
29
|
+
materialAliases?: Record<string, string>;
|
|
30
|
+
/** Alias áp dụng khi renderer hiện tại là Lucide. */
|
|
31
|
+
lucideAliases?: Record<string, string>;
|
|
32
|
+
/** Cấu hình stroke toàn cục cho Lucide SVG. */
|
|
33
|
+
lucideConfig?: Partial<LucideConfig>;
|
|
34
|
+
/** Icon Lucide cần đăng ký vào `@lucide/angular`. */
|
|
35
|
+
lucideIcons?: SdLucideIconRegistrations;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Cấu hình đã resolve đầy đủ để component không phải tự xử lý fallback nhiều lần.
|
|
39
|
+
*/
|
|
40
|
+
export interface ISdIconResolvedConfiguration extends Required<Omit<ISdIconConfiguration, 'lucideIcons'>> {
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Quy đổi token `Size` chung của SDCoreJS sang pixel cho icon.
|
|
44
|
+
*/
|
|
45
|
+
export declare const SD_ICON_SIZE_MAP: Record<Size, number>;
|
|
46
|
+
/**
|
|
47
|
+
* Alias mặc định giúp template giữ tên Material trong khi renderer có thể là Lucide.
|
|
48
|
+
*/
|
|
49
|
+
export declare const SD_DEFAULT_LUCIDE_ALIASES: Record<string, string>;
|
|
50
|
+
/**
|
|
51
|
+
* Alias mac dinh giup template dung ten Lucide van render duoc khi quay ve Material font.
|
|
52
|
+
*/
|
|
53
|
+
export declare const SD_DEFAULT_MATERIAL_ALIASES: Record<string, string>;
|
|
54
|
+
/**
|
|
55
|
+
* Cấu hình mặc định của Core UI icon.
|
|
56
|
+
*
|
|
57
|
+
* `material-icons-outlined` được giữ làm mặc định để không đổi visual của các component Material hiện có.
|
|
58
|
+
*/
|
|
59
|
+
export declare const SD_ICON_DEFAULT_CONFIG: ISdIconResolvedConfiguration;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { InjectionToken, type EnvironmentProviders } from '@angular/core';
|
|
2
|
+
import { type ISdIconConfiguration, type ISdIconResolvedConfiguration, type SdLucideIconRegistration, type SdLucideIconRegistrations } from './icon.model';
|
|
3
|
+
/**
|
|
4
|
+
* Injection token chứa cấu hình icon đã resolve cho toàn bộ app.
|
|
5
|
+
*
|
|
6
|
+
* Token có factory mặc định để `SdIcon` vẫn chạy khi app chưa gọi `provideSdIcon`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const SD_ICON_CONFIGURATION: InjectionToken<ISdIconResolvedConfiguration>;
|
|
9
|
+
/**
|
|
10
|
+
* Đăng ký cấu hình icon Core UI ở app-level.
|
|
11
|
+
*
|
|
12
|
+
* Provider này gom cả cấu hình `SdIcon` và registry của `@lucide/angular` để consumer chỉ cần gọi một hàm.
|
|
13
|
+
*
|
|
14
|
+
* @param config - cấu hình app-level cho Material/Lucide icon.
|
|
15
|
+
* @returns environment providers dùng được trong `ApplicationConfig.providers`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function provideSdIcon(config?: ISdIconConfiguration): EnvironmentProviders;
|
|
18
|
+
/**
|
|
19
|
+
* Resolve cấu hình `SdIcon` thành object đầy đủ, không còn field optional.
|
|
20
|
+
*
|
|
21
|
+
* Alias mặc định đứng trước để app có thể override từng key mà không phải copy toàn bộ bảng alias.
|
|
22
|
+
*
|
|
23
|
+
* @param config - cấu hình rời rạc từ consumer hoặc mặc định rỗng.
|
|
24
|
+
* @returns cấu hình đầy đủ dùng trực tiếp trong component.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveSdIconConfig(config?: ISdIconConfiguration): ISdIconResolvedConfiguration;
|
|
27
|
+
/**
|
|
28
|
+
* Chuẩn hóa nhiều kiểu khai báo Lucide icon về array cho `provideLucideIcons`.
|
|
29
|
+
*
|
|
30
|
+
* @param registrations - array hoặc object map icon Lucide từ consumer.
|
|
31
|
+
* @returns danh sách icon Lucide đã sẵn sàng để spread vào provider của Lucide.
|
|
32
|
+
*/
|
|
33
|
+
export declare function normalizeSdLucideIcons(registrations?: SdLucideIconRegistrations): SdLucideIconRegistration[];
|
package/modules/index.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { CanActivate
|
|
2
|
-
import { ISdLayoutConfiguration } from '../../../configurations';
|
|
1
|
+
import { CanActivate } from '@angular/router';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class HomeRedirectGuard implements CanActivate {
|
|
5
|
-
private router;
|
|
6
|
-
private layoutConfiguration;
|
|
7
|
-
constructor(router: Router, layoutConfiguration: ISdLayoutConfiguration);
|
|
4
|
+
private readonly router;
|
|
5
|
+
private readonly layoutConfiguration;
|
|
8
6
|
canActivate(): Promise<true | import("@angular/router").UrlTree>;
|
|
9
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<HomeRedirectGuard, never>;
|
|
10
8
|
static ɵprov: i0.ɵɵInjectableDeclaration<HomeRedirectGuard>;
|
|
@@ -15,9 +15,9 @@ import { MaybeAsync } from '@sdcorejs/utils/models';
|
|
|
15
15
|
export interface ISdPermissionConfiguration {
|
|
16
16
|
/**
|
|
17
17
|
* Khóa định danh cấu hình.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
* Dùng để phân biệt khi hệ thống mở rộng theo nhiều profile permission.
|
|
19
|
+
*
|
|
20
|
+
* Lưu ý: `undefined` cũng được xem là một key hợp lệ (cấu hình mặc định).
|
|
21
21
|
*/
|
|
22
22
|
key?: string;
|
|
23
23
|
/**
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, RouterStateSnapshot } from '@angular/router';
|
|
2
|
-
import { ISdPermissionConfiguration } from '../configurations';
|
|
3
|
-
import { SdPermissionService } from '../services';
|
|
4
2
|
import * as i0 from "@angular/core";
|
|
5
3
|
export declare class SdPermissionGuard implements CanActivate, CanActivateChild {
|
|
6
4
|
#private;
|
|
7
|
-
private configuration;
|
|
8
|
-
private permissionService;
|
|
9
|
-
constructor(configuration: ISdPermissionConfiguration | ISdPermissionConfiguration[], permissionService: SdPermissionService);
|
|
5
|
+
private readonly configuration;
|
|
6
|
+
private readonly permissionService;
|
|
10
7
|
canActivate: (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => Promise<boolean>;
|
|
11
8
|
canActivateChild: (activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot) => Promise<boolean>;
|
|
12
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdPermissionGuard, never>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdcorejs/angular",
|
|
3
|
-
"version": "19.0.
|
|
3
|
+
"version": "19.0.11",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"@angular/material-date-fns-adapter": "^19.0.0 || ^20.0.0 || ^21.0.0"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@sdcorejs/utils": "
|
|
12
|
+
"@sdcorejs/utils": "1.1.4",
|
|
13
|
+
"@lucide/angular": "^1.22.0",
|
|
13
14
|
"@ckeditor/ckeditor5-angular": "11.1.2",
|
|
14
15
|
"@omer-go/docx-parser-converter-ts": "^1.0.0",
|
|
15
16
|
"@bjorn3/browser_wasi_shim": "^0.4.2",
|
|
@@ -45,14 +46,14 @@
|
|
|
45
46
|
"types": "./directives/index.d.ts",
|
|
46
47
|
"default": "./fesm2022/sdcorejs-angular-directives.mjs"
|
|
47
48
|
},
|
|
48
|
-
"./forms": {
|
|
49
|
-
"types": "./forms/index.d.ts",
|
|
50
|
-
"default": "./fesm2022/sdcorejs-angular-forms.mjs"
|
|
51
|
-
},
|
|
52
49
|
"./handlers": {
|
|
53
50
|
"types": "./handlers/index.d.ts",
|
|
54
51
|
"default": "./fesm2022/sdcorejs-angular-handlers.mjs"
|
|
55
52
|
},
|
|
53
|
+
"./forms": {
|
|
54
|
+
"types": "./forms/index.d.ts",
|
|
55
|
+
"default": "./fesm2022/sdcorejs-angular-forms.mjs"
|
|
56
|
+
},
|
|
56
57
|
"./i18n": {
|
|
57
58
|
"types": "./i18n/index.d.ts",
|
|
58
59
|
"default": "./fesm2022/sdcorejs-angular-i18n.mjs"
|
|
@@ -297,6 +298,10 @@
|
|
|
297
298
|
"types": "./modules/authom/index.d.ts",
|
|
298
299
|
"default": "./fesm2022/sdcorejs-angular-modules-authom.mjs"
|
|
299
300
|
},
|
|
301
|
+
"./modules/icon": {
|
|
302
|
+
"types": "./modules/icon/index.d.ts",
|
|
303
|
+
"default": "./fesm2022/sdcorejs-angular-modules-icon.mjs"
|
|
304
|
+
},
|
|
300
305
|
"./modules/keycloak": {
|
|
301
306
|
"types": "./modules/keycloak/index.d.ts",
|
|
302
307
|
"default": "./fesm2022/sdcorejs-angular-modules-keycloak.mjs"
|
package/pipes/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
export * from './src/format-date.pipe';
|
|
2
|
+
export * from './src/format-datetime.pipe';
|
|
1
3
|
export * from './src/format-number.pipe';
|
|
2
4
|
export * from './src/safe-html.pipe';
|
|
3
5
|
export * from './src/time-different.pipe';
|
|
4
6
|
export * from './src/empty.pipe';
|
|
7
|
+
export * from './src/view.pipe';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class SdFormatDatePipe implements PipeTransform {
|
|
4
|
+
transform(value: unknown, format?: string): string | null;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdFormatDatePipe, never>;
|
|
6
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<SdFormatDatePipe, "sdFormatDate", true>;
|
|
7
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SdFormatDatePipe>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class SdFormatDatetimePipe implements PipeTransform {
|
|
4
|
+
transform(value: unknown, format?: string): string | null;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdFormatDatetimePipe, never>;
|
|
6
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<SdFormatDatetimePipe, "sdFormatDatetime", true>;
|
|
7
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SdFormatDatetimePipe>;
|
|
8
|
+
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { PipeTransform } from '@angular/core';
|
|
2
|
-
import { ISdCoreConfiguration } from '@sdcorejs/angular/configurations';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class SdFormatNumberPipe implements PipeTransform {
|
|
5
4
|
private readonly coreConfiguration;
|
|
6
|
-
constructor(coreConfiguration: ISdCoreConfiguration | undefined);
|
|
7
5
|
transform(value: any, digits?: number, format?: '1,234,567.89' | '1.234.567,89'): string | null;
|
|
8
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdFormatNumberPipe,
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdFormatNumberPipe, never>;
|
|
9
7
|
static ɵpipe: i0.ɵɵPipeDeclaration<SdFormatNumberPipe, "sdFormatNumber", true>;
|
|
10
8
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdFormatNumberPipe>;
|
|
11
9
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class SdViewPipe implements PipeTransform {
|
|
4
|
+
transform(value: unknown): string;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdViewPipe, never>;
|
|
6
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<SdViewPipe, "sdView", true>;
|
|
7
|
+
}
|
|
@@ -33,12 +33,12 @@ export interface DialogData {
|
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
export declare class DialogConfirmComponent {
|
|
36
|
-
dialogRef: MatDialogRef<DialogConfirmComponent>;
|
|
37
|
-
data: DialogData;
|
|
38
36
|
value: any;
|
|
39
37
|
required: boolean;
|
|
40
38
|
id: string;
|
|
41
|
-
|
|
39
|
+
readonly dialogRef: MatDialogRef<any, any>;
|
|
40
|
+
readonly data: DialogData;
|
|
41
|
+
constructor();
|
|
42
42
|
onCancel: () => void;
|
|
43
43
|
onAccept: () => void;
|
|
44
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<DialogConfirmComponent, never>;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { ISdCoreConfiguration } from '@sdcorejs/angular/configurations';
|
|
2
1
|
import * as i0 from "@angular/core";
|
|
3
2
|
export declare class SdLicenseService {
|
|
4
3
|
#private;
|
|
5
4
|
private readonly coreConfiguration;
|
|
6
|
-
constructor(
|
|
5
|
+
constructor();
|
|
7
6
|
enforceLicense: () => void;
|
|
8
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdLicenseService,
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdLicenseService, never>;
|
|
9
8
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdLicenseService>;
|
|
10
9
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
3
|
import { ToastData } from '../../notify.model';
|
|
4
4
|
import { SdNotifyService } from '../../notify.service';
|
|
@@ -7,21 +7,15 @@ export declare class ToastComponent implements OnInit, OnDestroy {
|
|
|
7
7
|
private notifyService;
|
|
8
8
|
private sanitizer;
|
|
9
9
|
data: ToastData;
|
|
10
|
-
isExpanded: import("@angular/core").WritableSignal<boolean>;
|
|
10
|
+
readonly isExpanded: import("@angular/core").WritableSignal<boolean>;
|
|
11
|
+
readonly isClosing: import("@angular/core").WritableSignal<boolean>;
|
|
12
|
+
readonly hostClasses: import("@angular/core").Signal<"bg-white sd-toast sd-toast--closing" | "bg-white sd-toast">;
|
|
11
13
|
readonly MAX_SHOW = 2;
|
|
12
14
|
private timer;
|
|
15
|
+
private closeTimer;
|
|
13
16
|
private start;
|
|
14
17
|
private remaining;
|
|
15
18
|
constructor(notifyService: SdNotifyService, sanitizer: DomSanitizer);
|
|
16
|
-
/**
|
|
17
|
-
* Sanitize HTML tường minh trước khi render qua `[innerHTML]` — strip
|
|
18
|
-
* `<script>`, event handler (`on*`), `javascript:` URL. Chỉ chạy ở nhánh
|
|
19
|
-
* `data.html === true`; nhánh mặc định render text (auto-escape) nên không
|
|
20
|
-
* có sink này. // why: phơi rõ việc sanitize cho review/scanner bảo mật.
|
|
21
|
-
*/
|
|
22
|
-
sanitizeHtml(value: string): string;
|
|
23
|
-
/** Message ở dạng chuỗi đơn (chỉ dùng khi !isMultiMessage). */
|
|
24
|
-
get singleMessage(): string;
|
|
25
19
|
ngOnInit(): void;
|
|
26
20
|
ngOnDestroy(): void;
|
|
27
21
|
pauseTimer(): void;
|
|
@@ -29,15 +23,17 @@ export declare class ToastComponent implements OnInit, OnDestroy {
|
|
|
29
23
|
close(): void;
|
|
30
24
|
onActionClick(): void;
|
|
31
25
|
toggleExpand(): void;
|
|
26
|
+
sanitizeHtml(value: string): string;
|
|
27
|
+
get singleMessage(): string;
|
|
32
28
|
get isMultiMessage(): boolean;
|
|
33
29
|
get messages(): string[];
|
|
34
30
|
get displayMessages(): string[];
|
|
35
31
|
get restCount(): number;
|
|
36
32
|
get hasMore(): boolean;
|
|
37
|
-
/** autoid theo loại toast để E2E chọn trực tiếp, vd `services-notify-toast-success`. */
|
|
38
33
|
get autoId(): string;
|
|
39
|
-
/** Gộp message (mảng nối ' | ') để phơi ra data-message cho E2E. */
|
|
40
34
|
get dataMessage(): string;
|
|
35
|
+
private clearAutoDismissTimer;
|
|
36
|
+
private clearCloseTimer;
|
|
41
37
|
static ɵfac: i0.ɵɵFactoryDeclaration<ToastComponent, never>;
|
|
42
38
|
static ɵcmp: i0.ɵɵComponentDeclaration<ToastComponent, "toast", never, { "data": { "alias": "data"; "required": true; }; }, {}, never, never, true, never>;
|
|
43
39
|
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { ApplicationRef, EnvironmentInjector } from '@angular/core';
|
|
2
1
|
import { NotifyOption, ToastData, ToastType } from './notify.model';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class SdNotifyService {
|
|
5
4
|
#private;
|
|
6
|
-
private appRef;
|
|
7
|
-
private injector;
|
|
8
|
-
private document;
|
|
9
5
|
readonly toasts: import("@angular/core").WritableSignal<ToastData[]>;
|
|
10
|
-
|
|
6
|
+
private readonly appRef;
|
|
7
|
+
private readonly injector;
|
|
8
|
+
private readonly document;
|
|
9
|
+
constructor();
|
|
11
10
|
success(message: string, option?: NotifyOption): void;
|
|
12
11
|
info(message: string, option?: NotifyOption): void;
|
|
13
12
|
warning(message: string | string[], option?: NotifyOption): void;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SdStorage, SdStorageOption } from './storage.model';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class SdStorageService {
|
|
4
4
|
#private;
|
|
5
|
-
private configuration;
|
|
6
|
-
constructor(configuration: ISdStorageConfiguration);
|
|
5
|
+
private readonly configuration;
|
|
7
6
|
create<T = any>(key: string | object, option?: SdStorageOption<T>): SdStorage<T>;
|
|
8
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdStorageService,
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdStorageService, never>;
|
|
9
8
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdStorageService>;
|
|
10
9
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type PlainObject = Record<PropertyKey, unknown>;
|
|
2
|
+
export declare const ObjectUtilities: {
|
|
3
|
+
isPlainObject: (value: unknown) => value is PlainObject;
|
|
4
|
+
clone: <T>(value: T) => T;
|
|
5
|
+
merge: <T extends PlainObject, U extends PlainObject>(target: T, source: U) => T & U;
|
|
6
|
+
deepMerge: <T extends PlainObject>(...sources: T[]) => T;
|
|
7
|
+
};
|
|
8
|
+
export {};
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
export type
|
|
2
|
-
export
|
|
1
|
+
export type SdIconSet = 'material-icons' | 'material-icons-outlined' | 'material-icons-round' | 'material-icons-sharp' | 'lucide';
|
|
2
|
+
export type SdMaterialIconSet = Exclude<SdIconSet, 'lucide'>;
|
|
3
|
+
export declare const DefaultSdIconSet: SdIconSet;
|
|
4
|
+
export declare const DefaultSdMaterialIconSet: SdMaterialIconSet;
|