@sdcorejs/angular 21.1.6 → 21.2.1
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 +10 -0
- package/assets/scss/core/menu.scss +18 -0
- package/assets/scss/core/utilities/_misc.scss +15 -0
- package/assets/scss/sd-core.scss +1 -0
- package/fesm2022/sdcorejs-angular-components-anchor.mjs +37 -13
- package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-api-contract-builder.mjs +3409 -0
- package/fesm2022/sdcorejs-angular-components-api-contract-builder.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-badge.mjs +27 -2
- package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-button.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs +1 -1
- package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-data-state.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-editor.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs +324 -192
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-history.mjs +4 -4
- package/fesm2022/sdcorejs-angular-components-history.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs +13 -5
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-inform.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs +164 -8
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal.mjs +30 -18
- package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-operator.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-operator.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs +60 -13
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-preview.mjs +27 -17
- package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs +192 -30
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs +187 -127
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-section.mjs +33 -2
- package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +83 -24
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-splitter.mjs +57 -21
- package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-stepper.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs +68 -20
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab.mjs +3 -2
- package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-table.mjs +556 -268
- package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tree.mjs +80 -17
- package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs +48 -13
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components.mjs +7 -1
- package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-configurations.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-directives.mjs +45 -8
- package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +40 -29
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +5 -5
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +67 -50
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip.mjs +57 -43
- package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs +232 -61
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date.mjs +96 -24
- package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs +131 -27
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +40 -16
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs +16 -5
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs +24 -9
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input.mjs +58 -10
- package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-models.mjs +227 -6
- package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-radio.mjs +4 -4
- package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-select.mjs +136 -38
- package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-switch.mjs +18 -3
- package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs +51 -62
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs +57 -12
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-time.mjs +16 -5
- package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +100 -9
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms.mjs +91 -46
- package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-handlers.mjs +18 -3
- package/fesm2022/sdcorejs-angular-handlers.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-i18n.mjs +895 -68
- package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-interceptors.mjs +87 -29
- package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-auth.mjs +25 -15
- package/fesm2022/sdcorejs-angular-modules-auth.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-icon.mjs +2 -2
- package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs +32 -3
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-layout.mjs +342 -111
- package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-permission.mjs +177 -40
- package/fesm2022/sdcorejs-angular-modules-permission.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-pipes.mjs +62 -28
- package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-api.mjs +123 -13
- package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-cache.mjs +53 -3
- package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-confirm.mjs +25 -73
- package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-excel.mjs +12 -10
- package/fesm2022/sdcorejs-angular-services-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-loading.mjs +75 -84
- package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-notify.mjs +46 -5
- package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-storage.mjs +4 -0
- package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services.mjs +0 -1
- package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs +225 -80
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-models.mjs +1 -63
- package/fesm2022/sdcorejs-angular-utilities-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular.mjs +17 -10
- package/fesm2022/sdcorejs-angular.mjs.map +1 -1
- package/package.json +36 -25
- package/types/sdcorejs-angular-components-anchor.d.ts +3 -1
- package/types/sdcorejs-angular-components-api-contract-builder.d.ts +694 -0
- package/types/sdcorejs-angular-components-badge.d.ts +2 -0
- package/types/sdcorejs-angular-components-ckeditor-styles.d.ts +1 -1
- package/types/sdcorejs-angular-components-form-generic.d.ts +44 -33
- package/types/sdcorejs-angular-components-import-excel.d.ts +1 -0
- package/types/sdcorejs-angular-components-mini-editor.d.ts +1 -1
- package/types/sdcorejs-angular-components-modal-resizable.d.ts +92 -0
- package/types/sdcorejs-angular-components-modal.d.ts +3 -2
- package/types/sdcorejs-angular-components-org-chart.d.ts +6 -0
- package/types/sdcorejs-angular-components-preview.d.ts +1 -0
- package/types/sdcorejs-angular-components-query-bar.d.ts +55 -17
- package/types/sdcorejs-angular-components-query-builder.d.ts +150 -98
- package/types/sdcorejs-angular-components-section.d.ts +5 -0
- package/types/sdcorejs-angular-components-tab-router.d.ts +19 -19
- package/types/sdcorejs-angular-components-table.d.ts +251 -109
- package/types/sdcorejs-angular-components-tree.d.ts +48 -30
- package/types/sdcorejs-angular-components-upload-file.d.ts +6 -3
- package/types/sdcorejs-angular-components.d.ts +7 -1
- package/types/sdcorejs-angular-configurations.d.ts +1 -2
- package/types/sdcorejs-angular-forms-autocomplete.d.ts +5 -2
- package/types/sdcorejs-angular-forms-chip-calendar.d.ts +10 -0
- package/types/sdcorejs-angular-forms-date-range.d.ts +14 -2
- package/types/sdcorejs-angular-forms-date.d.ts +13 -2
- package/types/sdcorejs-angular-forms-datetime.d.ts +13 -2
- package/types/sdcorejs-angular-forms-entity-picker.d.ts +9 -3
- package/types/sdcorejs-angular-forms-input-color.d.ts +4 -0
- package/types/sdcorejs-angular-forms-input-number.d.ts +3 -0
- package/types/sdcorejs-angular-forms-input.d.ts +3 -0
- package/types/sdcorejs-angular-forms-models.d.ts +119 -4
- package/types/sdcorejs-angular-forms-select.d.ts +27 -4
- package/types/sdcorejs-angular-forms-switch.d.ts +7 -1
- package/types/sdcorejs-angular-forms-textarea.d.ts +5 -3
- package/types/sdcorejs-angular-forms-time-range.d.ts +22 -1
- package/types/sdcorejs-angular-forms-tree-select.d.ts +36 -5
- package/types/sdcorejs-angular-forms.d.ts +22 -13
- package/types/sdcorejs-angular-i18n.d.ts +175 -16
- package/types/sdcorejs-angular-interceptors.d.ts +13 -3
- package/types/sdcorejs-angular-modules-auth.d.ts +1 -1
- package/types/sdcorejs-angular-modules-keycloak.d.ts +1 -0
- package/types/sdcorejs-angular-modules-layout.d.ts +94 -28
- package/types/sdcorejs-angular-modules-permission.d.ts +66 -4
- package/types/sdcorejs-angular-pipes.d.ts +27 -5
- package/types/sdcorejs-angular-services-api.d.ts +21 -1
- package/types/sdcorejs-angular-services-cache.d.ts +11 -1
- package/types/sdcorejs-angular-services-notify.d.ts +1 -1
- package/types/sdcorejs-angular-services.d.ts +0 -1
- package/types/sdcorejs-angular-utilities-extensions.d.ts +83 -61
- package/types/sdcorejs-angular-utilities-models.d.ts +2 -76
- package/types/sdcorejs-angular.d.ts +11 -2
- package/fesm2022/sdcorejs-angular-components-base.mjs +0 -23
- package/fesm2022/sdcorejs-angular-components-base.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs +0 -5038
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-models.mjs +0 -6
- package/fesm2022/sdcorejs-angular-models.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-services-docx.mjs +0 -291
- package/fesm2022/sdcorejs-angular-services-docx.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-services-license.mjs +0 -97
- package/fesm2022/sdcorejs-angular-services-license.mjs.map +0 -1
- package/types/sdcorejs-angular-components-base.d.ts +0 -11
- package/types/sdcorejs-angular-components-document-builder.d.ts +0 -252
- package/types/sdcorejs-angular-models.d.ts +0 -2
- package/types/sdcorejs-angular-services-docx.d.ts +0 -27
- package/types/sdcorejs-angular-services-license.d.ts +0 -12
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as _sdcorejs_angular_components_query_builder from '@sdcorejs/angular/components/query-builder';
|
|
2
1
|
import * as _angular_core from '@angular/core';
|
|
3
2
|
import { Operator, DateRelative, Filter } from '@sdcorejs/utils/models';
|
|
4
3
|
|
|
@@ -22,17 +21,17 @@ interface SdQueryBuilderField {
|
|
|
22
21
|
label: string;
|
|
23
22
|
/** Field type — picks the default operator set + value editor control. */
|
|
24
23
|
type: SdQueryBuilderFieldType;
|
|
25
|
-
/** Material icon shown before the label in the field picker; falls back to `
|
|
24
|
+
/** Material icon shown before the label in the field picker; falls back to `SD_QB_TYPE_ICON[type]` then `'tune'`. */
|
|
26
25
|
icon?: string;
|
|
27
|
-
/** Override the allowed operator set (otherwise `
|
|
26
|
+
/** Override the allowed operator set (otherwise `SD_QB_OPERATORS_BY_TYPE[type]`). */
|
|
28
27
|
operators?: Operator[];
|
|
29
|
-
/** Override the starting operator (otherwise `
|
|
28
|
+
/** Override the starting operator (otherwise `SD_QB_DEFAULT_OPERATOR_BY_TYPE[type]`). */
|
|
30
29
|
defaultOperator?: Operator;
|
|
31
30
|
/** Options for `type: 'values'` — the select list + display-label lookup. */
|
|
32
31
|
values?: SdQueryBuilderFieldOption[];
|
|
33
|
-
/** Label for the `true` branch of a boolean field (
|
|
32
|
+
/** Label for the `true` branch of a boolean field (defaults to i18n `core.component.query-builder.boolean.true`). */
|
|
34
33
|
trueLabel?: string;
|
|
35
|
-
/** Label for the `false` branch of a boolean field (
|
|
34
|
+
/** Label for the `false` branch of a boolean field (defaults to i18n `core.component.query-builder.boolean.false`). */
|
|
36
35
|
falseLabel?: string;
|
|
37
36
|
/** Lower bound for number / date value editors. */
|
|
38
37
|
min?: number | string;
|
|
@@ -47,7 +46,7 @@ interface SdQueryBuilderOption {
|
|
|
47
46
|
autoId?: string;
|
|
48
47
|
fields: SdQueryBuilderField[];
|
|
49
48
|
mode?: 'edit' | 'view';
|
|
50
|
-
comparisonMode?:
|
|
49
|
+
comparisonMode?: SdQbComparisonMode;
|
|
51
50
|
disabled?: boolean;
|
|
52
51
|
value?: Filter | null;
|
|
53
52
|
filters?: Filter[];
|
|
@@ -56,22 +55,22 @@ interface SdQueryBuilderOption {
|
|
|
56
55
|
onFiltersChange?: (filters: Filter[]) => void;
|
|
57
56
|
onRootLogicChange?: (logic: 'AND' | 'OR') => void;
|
|
58
57
|
}
|
|
59
|
-
type
|
|
58
|
+
type SdQbNode = SdQbGroup | SdQbRule;
|
|
60
59
|
/** Component-level capability for right-hand operands. */
|
|
61
|
-
type
|
|
60
|
+
type SdQbComparisonMode = 'value-only' | 'value-or-field';
|
|
62
61
|
/** Per-rule right-hand operand source. */
|
|
63
|
-
type
|
|
62
|
+
type SdQbValueSource = 'literal' | 'field';
|
|
64
63
|
/** A logical group of nodes joined by AND / OR. Maps to `FilterAndOr`. */
|
|
65
|
-
interface
|
|
64
|
+
interface SdQbGroup {
|
|
66
65
|
id: string;
|
|
67
66
|
kind: 'group';
|
|
68
67
|
logic: 'AND' | 'OR';
|
|
69
|
-
children:
|
|
68
|
+
children: SdQbNode[];
|
|
70
69
|
/** UI-only: whether this group's "+" dropdown is open. */
|
|
71
70
|
open?: boolean;
|
|
72
71
|
}
|
|
73
72
|
/** A single `field operator value` condition. Maps to a leaf `Filter`. */
|
|
74
|
-
interface
|
|
73
|
+
interface SdQbRule {
|
|
75
74
|
id: string;
|
|
76
75
|
kind: 'rule';
|
|
77
76
|
field?: string;
|
|
@@ -79,94 +78,101 @@ interface QbRule {
|
|
|
79
78
|
/** Single value, `{ from, to }` for BETWEEN, or an array for IN / NOT_IN. */
|
|
80
79
|
value?: any;
|
|
81
80
|
/** Internal UI state: literal input or a same-type field reference. */
|
|
82
|
-
valueSource?:
|
|
81
|
+
valueSource?: SdQbValueSource;
|
|
83
82
|
/** Right-hand field key when `valueSource` is `'field'`. */
|
|
84
83
|
compareField?: string;
|
|
85
84
|
}
|
|
86
|
-
/** Type guard — narrows a `
|
|
87
|
-
declare function
|
|
88
|
-
type
|
|
85
|
+
/** Type guard — narrows a `SdQbNode` to a `SdQbGroup`. */
|
|
86
|
+
declare function sdIsQbGroup(node: SdQbNode): node is SdQbGroup;
|
|
87
|
+
type SdQbTokenKind = 'field' | 'op' | 'value' | 'logic' | 'paren' | 'plain';
|
|
89
88
|
/** One piece of the rendered raw query string, tagged for highlight styling. */
|
|
90
|
-
interface
|
|
89
|
+
interface SdQbToken {
|
|
91
90
|
text: string;
|
|
92
|
-
kind:
|
|
91
|
+
kind: SdQbTokenKind;
|
|
93
92
|
}
|
|
94
93
|
/** Allowed operators per field type — used when `field.operators` is not set. */
|
|
95
|
-
declare const
|
|
94
|
+
declare const SD_QB_OPERATORS_BY_TYPE: Record<SdQueryBuilderFieldType, Operator[]>;
|
|
96
95
|
/** Default operator when a rule is first created for a field. */
|
|
97
|
-
declare const
|
|
96
|
+
declare const SD_QB_DEFAULT_OPERATOR_BY_TYPE: Record<SdQueryBuilderFieldType, Operator>;
|
|
98
97
|
/** Operators with no value payload — the value editor is hidden for these. */
|
|
99
|
-
declare const
|
|
98
|
+
declare const SD_QB_NO_DATA_OPERATORS: Operator[];
|
|
100
99
|
/** Operators whose value is an array — the value editor offers multi-select. */
|
|
101
|
-
declare const
|
|
100
|
+
declare const SD_QB_MULTI_OPERATORS: Operator[];
|
|
102
101
|
/** Operators allowed for `field` — explicit override wins, else the per-type set. */
|
|
103
|
-
declare function
|
|
102
|
+
declare function sdQbAllowedOperators(field: SdQueryBuilderField | undefined): Operator[];
|
|
104
103
|
/** Starting operator for a new rule on `field` — falls back to the per-type default. */
|
|
105
|
-
declare function
|
|
104
|
+
declare function sdQbDefaultOperator(field: SdQueryBuilderField | undefined): Operator | undefined;
|
|
106
105
|
/** True when `op` is NULL / NOT_NULL (no value editor). */
|
|
107
|
-
declare function
|
|
106
|
+
declare function sdQbIsNoDataOperator(op: Operator | undefined): boolean;
|
|
108
107
|
/** True when `op` is IN / NOT_IN (array value). */
|
|
109
|
-
declare function
|
|
108
|
+
declare function sdQbIsMultiOperator(op: Operator | undefined): boolean;
|
|
110
109
|
/** True when the operator accepts one right-hand operand, including a field reference. */
|
|
111
|
-
declare function
|
|
110
|
+
declare function sdQbSupportsFieldCompareOperator(op: Operator | undefined): boolean;
|
|
112
111
|
/**
|
|
113
112
|
* Icon fallback per field type when `SdQueryBuilderField.icon` is not set.
|
|
114
113
|
* Mirrors query-bar's `SD_QUERY_TYPE_ICON` so the two components read consistently,
|
|
115
114
|
* but kept local so query-builder has no dependency on the query-bar package.
|
|
116
115
|
*/
|
|
117
|
-
declare const
|
|
116
|
+
declare const SD_QB_TYPE_ICON: Record<SdQueryBuilderFieldType, string>;
|
|
118
117
|
/**
|
|
119
118
|
* Icon shown before a field in the field picker / selected trigger.
|
|
120
|
-
* Priority: `field.icon` → `
|
|
119
|
+
* Priority: `field.icon` → `SD_QB_TYPE_ICON[field.type]` → `'tune'` (default, like query-bar).
|
|
121
120
|
*/
|
|
122
|
-
declare function
|
|
121
|
+
declare function sdQbFieldIcon(field: SdQueryBuilderField | undefined): string;
|
|
123
122
|
/** Next stable node id with the given prefix. */
|
|
124
|
-
declare function
|
|
123
|
+
declare function sdQbId(prefix?: string): string;
|
|
125
124
|
/** Build a fresh rule node (optionally pre-filled). */
|
|
126
|
-
declare function
|
|
125
|
+
declare function sdQbNewRule(field?: string, operator?: Operator, value?: any, valueSource?: SdQbValueSource, compareField?: string): SdQbRule;
|
|
127
126
|
/** Build a fresh group node. */
|
|
128
|
-
declare function
|
|
127
|
+
declare function sdQbNewGroup(logic?: 'AND' | 'OR', children?: SdQbNode[]): SdQbGroup;
|
|
129
128
|
/** Offset unit for a relative date — re-exported from the utils `DateRelative` model. */
|
|
130
129
|
type SdQbRelativeUnit = DateRelative['unit'];
|
|
131
130
|
/** Offset direction for a relative date — re-exported from the utils `DateRelative` model. */
|
|
132
131
|
type SdQbRelativeDirection = DateRelative['direction'];
|
|
133
132
|
/** Sentinel held as a rule value (and emitted as `data`) for the "today" date mode. */
|
|
134
|
-
declare const
|
|
133
|
+
declare const SD_QB_TODAY = "TODAY";
|
|
135
134
|
/** The `'TODAY'` sentinel type (matches the utils `date-today` data literal). */
|
|
136
|
-
type
|
|
135
|
+
type SdQbToday = typeof SD_QB_TODAY;
|
|
137
136
|
/** Date value editor mode for a date/datetime rule (derived from the rule value). */
|
|
138
|
-
type
|
|
137
|
+
type SdQbDateMode = 'absolute' | 'now' | 'relative';
|
|
139
138
|
/** Type guard — narrows a rule value to a utils `DateRelative` (offset spec). */
|
|
140
|
-
declare const
|
|
139
|
+
declare const sdQbIsRelativeDate: (v: any) => v is DateRelative;
|
|
141
140
|
/** Type guard — narrows a rule value to the `'TODAY'` sentinel ("now"/today mode). */
|
|
142
|
-
declare function
|
|
141
|
+
declare function sdQbIsToday(v: any): v is SdQbToday;
|
|
143
142
|
/** Starting relative value when a rule first switches to "relative" mode. */
|
|
144
|
-
declare function
|
|
143
|
+
declare function sdQbDefaultRelative(): DateRelative;
|
|
145
144
|
/** One date-mode option — carries a Material icon shown in the dropdown + selected trigger. */
|
|
146
|
-
interface
|
|
147
|
-
value:
|
|
148
|
-
|
|
145
|
+
interface SdQbDateModeOption {
|
|
146
|
+
value: SdQbDateMode;
|
|
147
|
+
/** i18n key of the label — resolved at read time, NOT at module-eval time. */
|
|
148
|
+
labelKey: string;
|
|
149
149
|
/** Material icon name (outlined set). */
|
|
150
150
|
icon: string;
|
|
151
151
|
}
|
|
152
152
|
/** Stable option list for the date-mode select (module ref — never reallocated). */
|
|
153
|
-
declare const
|
|
153
|
+
declare const SD_QB_DATE_MODES: SdQbDateModeOption[];
|
|
154
154
|
/** One value-source option for field-to-field comparison UI. */
|
|
155
|
-
interface
|
|
156
|
-
value:
|
|
157
|
-
|
|
155
|
+
interface SdQbValueSourceOption {
|
|
156
|
+
value: SdQbValueSource;
|
|
157
|
+
/** i18n key of the label — resolved at read time, NOT at module-eval time. */
|
|
158
|
+
labelKey: string;
|
|
158
159
|
/** Material icon name (outlined set). */
|
|
159
160
|
icon: string;
|
|
160
161
|
}
|
|
161
162
|
/** Stable option list for choosing between a literal value and another field. */
|
|
162
|
-
declare const
|
|
163
|
-
/**
|
|
164
|
-
|
|
163
|
+
declare const SD_QB_VALUE_SOURCE_OPTIONS: SdQbValueSourceOption[];
|
|
164
|
+
/** One combined direction×unit option (token `'unit:direction'`). */
|
|
165
|
+
interface SdQbRelativeUnitOption {
|
|
165
166
|
value: string;
|
|
166
|
-
|
|
167
|
-
|
|
167
|
+
/** i18n key of the label — resolved at read time, NOT at module-eval time. */
|
|
168
|
+
labelKey: string;
|
|
169
|
+
}
|
|
170
|
+
/** Stable combined direction×unit option list (token `'unit:direction'`). */
|
|
171
|
+
declare const SD_QB_RELATIVE_UNIT_OPTIONS: SdQbRelativeUnitOption[];
|
|
172
|
+
/** i18n key of the combined `unit`×`direction` phrase for a relative-date offset. */
|
|
173
|
+
declare function qbRelativeLabelKey(unit: SdQbRelativeUnit, direction: SdQbRelativeDirection): string;
|
|
168
174
|
/** Shared empty option array — stable ref for fallbacks (avoids per-call allocation). */
|
|
169
|
-
declare const
|
|
175
|
+
declare const SD_QB_EMPTY_OPTIONS: SdQueryBuilderFieldOption[];
|
|
170
176
|
|
|
171
177
|
/**
|
|
172
178
|
* Visual filter / rule builder. Compose nested AND / OR groups of
|
|
@@ -184,7 +190,7 @@ declare class SdQueryBuilder {
|
|
|
184
190
|
/** `'edit'` (default) = interactive tree · `'view'` = read-only raw-query string. */
|
|
185
191
|
readonly mode: _angular_core.InputSignal<"edit" | "view">;
|
|
186
192
|
/** `value-only` = literal operands only · `value-or-field` = each rule may compare against another field. */
|
|
187
|
-
readonly comparisonMode: _angular_core.InputSignal<
|
|
193
|
+
readonly comparisonMode: _angular_core.InputSignal<SdQbComparisonMode>;
|
|
188
194
|
/** Disable all editing controls. */
|
|
189
195
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
190
196
|
/** Prefix for `data-autoid` on inner controls (E2E selectors). */
|
|
@@ -195,42 +201,64 @@ declare class SdQueryBuilder {
|
|
|
195
201
|
readonly filters: _angular_core.ModelSignal<Filter[]>;
|
|
196
202
|
/** Root group's logical connector. `[(rootLogic)]`. */
|
|
197
203
|
readonly rootLogic: _angular_core.ModelSignal<"AND" | "OR">;
|
|
198
|
-
readonly tree: _angular_core.Signal<
|
|
204
|
+
readonly tree: _angular_core.Signal<SdQbGroup>;
|
|
199
205
|
/** `field.key` → field, for fast lookup from a rule. */
|
|
200
206
|
readonly resolvedFields: _angular_core.Signal<SdQueryBuilderField[]>;
|
|
201
207
|
readonly resolvedMode: _angular_core.Signal<"edit" | "view">;
|
|
202
|
-
readonly resolvedComparisonMode: _angular_core.Signal<
|
|
208
|
+
readonly resolvedComparisonMode: _angular_core.Signal<SdQbComparisonMode>;
|
|
203
209
|
readonly resolvedDisabled: _angular_core.Signal<boolean>;
|
|
204
210
|
readonly resolvedAutoId: _angular_core.Signal<string | undefined>;
|
|
205
211
|
readonly fieldByKey: _angular_core.Signal<Record<string, SdQueryBuilderField>>;
|
|
206
212
|
/** Stable option list for the date-mode select. */
|
|
207
|
-
readonly dateModes:
|
|
213
|
+
readonly dateModes: _angular_core.Signal<{
|
|
214
|
+
display: string;
|
|
215
|
+
value: SdQbDateMode;
|
|
216
|
+
labelKey: string;
|
|
217
|
+
icon: string;
|
|
218
|
+
}[]>;
|
|
208
219
|
/** Stable option list for the literal-vs-field operand select. */
|
|
209
|
-
readonly valueSourceOptions:
|
|
220
|
+
readonly valueSourceOptions: _angular_core.Signal<{
|
|
221
|
+
display: string;
|
|
222
|
+
value: SdQbValueSource;
|
|
223
|
+
labelKey: string;
|
|
224
|
+
icon: string;
|
|
225
|
+
}[]>;
|
|
210
226
|
/** Stable combined unit×direction option list for the relative select. */
|
|
211
|
-
readonly relativeUnitOptions: {
|
|
212
|
-
value: string;
|
|
227
|
+
readonly relativeUnitOptions: _angular_core.Signal<{
|
|
213
228
|
display: string;
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
229
|
+
value: string;
|
|
230
|
+
labelKey: string;
|
|
231
|
+
}[]>;
|
|
232
|
+
readonly selectFieldLabel: _angular_core.Signal<string>;
|
|
233
|
+
readonly valueLabel: _angular_core.Signal<string>;
|
|
234
|
+
readonly fromLabel: _angular_core.Signal<string>;
|
|
235
|
+
readonly toLabel: _angular_core.Signal<string>;
|
|
236
|
+
readonly addLabel: _angular_core.Signal<string>;
|
|
237
|
+
readonly addNodeLabel: _angular_core.Signal<string>;
|
|
238
|
+
readonly conditionLabel: _angular_core.Signal<string>;
|
|
239
|
+
readonly groupLabel: _angular_core.Signal<string>;
|
|
240
|
+
readonly removeGroupLabel: _angular_core.Signal<string>;
|
|
241
|
+
readonly removeConditionLabel: _angular_core.Signal<string>;
|
|
242
|
+
readonly emptyLabel: _angular_core.Signal<string>;
|
|
243
|
+
/** View-mode token stream — recomputed from the emitted value (and from the active language). */
|
|
244
|
+
readonly tokens: _angular_core.Signal<SdQbToken[]>;
|
|
217
245
|
readonly isView: _angular_core.Signal<boolean>;
|
|
218
246
|
/** Expose the type-guard to the template. */
|
|
219
|
-
readonly isGroup: typeof
|
|
247
|
+
readonly isGroup: typeof sdIsQbGroup;
|
|
220
248
|
/** Resolve the leading icon for a field (own `icon` → per-type → `'tune'`) — used by the field picker. */
|
|
221
|
-
readonly fieldIcon: typeof
|
|
249
|
+
readonly fieldIcon: typeof sdQbFieldIcon;
|
|
222
250
|
constructor();
|
|
223
251
|
/** Switch a group's AND/OR connector and re-emit. No-op when disabled or unchanged. */
|
|
224
|
-
setGroupLogic(group:
|
|
252
|
+
setGroupLogic(group: SdQbGroup, logic: 'AND' | 'OR'): void;
|
|
225
253
|
/** Open this group's "+" menu (closing any other open one). UI-only — does not emit. */
|
|
226
|
-
toggleDropdown(group:
|
|
254
|
+
toggleDropdown(group: SdQbGroup, event: Event): void;
|
|
227
255
|
closeAllDropdowns(): void;
|
|
228
256
|
/** Append a blank rule to `group`. */
|
|
229
|
-
addRule(group:
|
|
257
|
+
addRule(group: SdQbGroup): void;
|
|
230
258
|
/** Append a nested sub-group (seeded with one blank rule) to `group`. */
|
|
231
|
-
addGroup(group:
|
|
259
|
+
addGroup(group: SdQbGroup): void;
|
|
232
260
|
/** Remove the child at `index` from `parent` (a rule or a whole sub-group). */
|
|
233
|
-
removeNode(parent:
|
|
261
|
+
removeNode(parent: SdQbGroup, index: number): void;
|
|
234
262
|
/**
|
|
235
263
|
* Point `rule` at a new field. Resets operator to the field's default and the value
|
|
236
264
|
* to that operator's empty shape — the old operator/value rarely fit the new type.
|
|
@@ -239,52 +267,73 @@ declare class SdQueryBuilder {
|
|
|
239
267
|
* @param key - the chosen field key (from the field picker). Swap-only: a null / undefined
|
|
240
268
|
* key is a no-op — the field can be changed but never cleared (issue #2).
|
|
241
269
|
*/
|
|
242
|
-
setField(rule:
|
|
270
|
+
setField(rule: SdQbRule, key: any): void;
|
|
243
271
|
/** Change `rule`'s operator and reshape its value to fit the new operator (array / range / none). */
|
|
244
|
-
setOperator(rule:
|
|
272
|
+
setOperator(rule: SdQbRule, op: Operator | undefined): void;
|
|
245
273
|
/** Set a single-value rule's value (coercing numeric fields to `number`). */
|
|
246
|
-
setScalar(rule:
|
|
274
|
+
setScalar(rule: SdQbRule, raw: any): void;
|
|
247
275
|
/** Set the lower bound of a BETWEEN rule's `{ from, to }` value. */
|
|
248
|
-
setBetweenFrom(rule:
|
|
276
|
+
setBetweenFrom(rule: SdQbRule, raw: any): void;
|
|
249
277
|
/** Set the upper bound of a BETWEEN rule's `{ from, to }` value. */
|
|
250
|
-
setBetweenTo(rule:
|
|
251
|
-
setValueSource(rule:
|
|
252
|
-
setCompareField(rule:
|
|
278
|
+
setBetweenTo(rule: SdQbRule, raw: any): void;
|
|
279
|
+
setValueSource(rule: SdQbRule, source: unknown): void;
|
|
280
|
+
setCompareField(rule: SdQbRule, key: any): void;
|
|
253
281
|
/** The field metadata for a rule's current `field` key (or undefined if unset). */
|
|
254
|
-
fieldOf(rule:
|
|
282
|
+
fieldOf(rule: SdQbRule): SdQueryBuilderField | undefined;
|
|
255
283
|
/** Operators allowed for a rule, derived from its field's type / override. */
|
|
256
|
-
allowedOperators(rule:
|
|
284
|
+
allowedOperators(rule: SdQbRule): Operator[];
|
|
257
285
|
/** Whether to render the operator picker — hidden when only one operator is allowed. */
|
|
258
|
-
showOperatorSelector(rule:
|
|
259
|
-
compareFields(rule:
|
|
260
|
-
canCompareWithField(rule:
|
|
261
|
-
showValueSourceSelector(rule:
|
|
262
|
-
valueSourceOf(rule:
|
|
263
|
-
isFieldSource(rule:
|
|
286
|
+
showOperatorSelector(rule: SdQbRule): boolean;
|
|
287
|
+
compareFields(rule: SdQbRule): SdQueryBuilderField[];
|
|
288
|
+
canCompareWithField(rule: SdQbRule): boolean;
|
|
289
|
+
showValueSourceSelector(rule: SdQbRule): boolean;
|
|
290
|
+
valueSourceOf(rule: SdQbRule): SdQbValueSource;
|
|
291
|
+
isFieldSource(rule: SdQbRule): boolean;
|
|
264
292
|
/** True for NULL / NOT_NULL — the template then renders no value editor. */
|
|
265
293
|
isNoData(op: Operator | undefined): boolean;
|
|
266
294
|
/** True for IN / NOT_IN — the template then renders a multi-select value editor. */
|
|
267
295
|
isMulti(op: Operator | undefined): boolean;
|
|
268
296
|
/** `[true/false]` option list for a boolean field's value select (stable reference). */
|
|
269
297
|
booleanItems(field: SdQueryBuilderField): SdQueryBuilderFieldOption[];
|
|
298
|
+
/**
|
|
299
|
+
* Option list cho field `type:'values'`.
|
|
300
|
+
*
|
|
301
|
+
* why: template cũ bind thẳng `[items]="fieldOf(rule)!.values || []"`. `values` là OPTIONAL trên
|
|
302
|
+
* `SdQueryBuilderField`, nên với field khai thiếu `values`, nhánh `|| []` cấp phát một mảng MỚI
|
|
303
|
+
* mỗi lần change detection chạy — đúng nguyên nhân OOM đã ghi ở `#booleanOptionsByKey`:
|
|
304
|
+
* `sd-select` có `toObservable(items)` → `markForCheck()` → CD mới → mảng mới → lặp vô hạn.
|
|
305
|
+
*
|
|
306
|
+
* why: KHÔNG memo hoá qua `computed<Map>` snapshot. `field.values` vốn ĐÃ là mảng của consumer
|
|
307
|
+
* nên tự nó ổn định; snapshot vào Map chỉ thêm một tầng cache không bao giờ invalidate khi
|
|
308
|
+
* consumer nạp option bất đồng bộ bằng cách gán tại chỗ (`fields[0].values = loaded`) — reference
|
|
309
|
+
* `fields` không đổi nên `computed` giữ nguyên list cũ vĩnh viễn. Chỉ nhánh RỖNG cần hằng số
|
|
310
|
+
* dùng chung để tránh literal mới mỗi CD.
|
|
311
|
+
*/
|
|
312
|
+
valueItems(field: SdQueryBuilderField): SdQueryBuilderFieldOption[];
|
|
270
313
|
/** Current date-value mode of a rule, derived from its value (no separate state). */
|
|
271
|
-
dateMode(rule:
|
|
314
|
+
dateMode(rule: SdQbRule): SdQbDateMode;
|
|
272
315
|
/** Switch a date/datetime rule's value mode, reseeding the value for the new mode. */
|
|
273
|
-
setDateMode(rule:
|
|
316
|
+
setDateMode(rule: SdQbRule, mode: unknown): void;
|
|
274
317
|
/** Read the offset amount of a relative rule (default 1). */
|
|
275
|
-
relativeAmount(rule:
|
|
318
|
+
relativeAmount(rule: SdQbRule): number;
|
|
276
319
|
/** Set the offset amount (clamped to an integer >= 1). */
|
|
277
|
-
setRelativeAmount(rule:
|
|
320
|
+
setRelativeAmount(rule: SdQbRule, raw: any): void;
|
|
278
321
|
/** Read the `'unit:direction'` token of a relative rule (default `'day:previous'`). */
|
|
279
|
-
relativeUnitDirValue(rule:
|
|
322
|
+
relativeUnitDirValue(rule: SdQbRule): string;
|
|
280
323
|
/** Set the offset unit + direction from a `'unit:direction'` token. */
|
|
281
|
-
setRelativeUnitDir(rule:
|
|
324
|
+
setRelativeUnitDir(rule: SdQbRule, token: unknown): void;
|
|
282
325
|
/** Build a `data-autoid` for an inner control under this builder's `autoId` prefix. */
|
|
283
326
|
autoIdFor(suffix: string): string;
|
|
284
327
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdQueryBuilder, never>;
|
|
285
328
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdQueryBuilder, "sd-query-builder", never, { "option": { "alias": "option"; "required": false; "isSignal": true; }; "fields": { "alias": "fields"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "comparisonMode": { "alias": "comparisonMode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "autoId": { "alias": "autoId"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "rootLogic": { "alias": "rootLogic"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "filters": "filtersChange"; "rootLogic": "rootLogicChange"; }, never, never, true, never>;
|
|
286
329
|
}
|
|
287
330
|
|
|
331
|
+
/**
|
|
332
|
+
* Hàm dịch một key i18n, do component truyền xuống.
|
|
333
|
+
* why: `filterToTokens` là hàm thuần cấp module nên không inject `I18nService` được; nhận translator
|
|
334
|
+
* qua tham số vẫn giữ được tính thuần mà bỏ được chuỗi tiếng Việt hardcode trong chuỗi view.
|
|
335
|
+
*/
|
|
336
|
+
type SdQbTranslate = (key: string, params?: Record<string, string | number>) => string;
|
|
288
337
|
/**
|
|
289
338
|
* Map the internal builder tree to the public `Filter` (the root is always a
|
|
290
339
|
* `FilterAndOr`). Rules missing field / operator / value — and empty nested
|
|
@@ -293,28 +342,31 @@ declare class SdQueryBuilder {
|
|
|
293
342
|
* @param group - the editable tree's root group.
|
|
294
343
|
* @returns the canonical nested `Filter`, or `null` when no complete rule survives.
|
|
295
344
|
*/
|
|
296
|
-
declare function treeToFilter(group:
|
|
345
|
+
declare function treeToFilter(group: SdQbGroup): Filter | null;
|
|
297
346
|
/**
|
|
298
347
|
* Inverse of {@link treeToFilter} — rebuild the editable tree from a `Filter` so a
|
|
299
348
|
* consumer can seed `[value]`. A non-group (bare) filter is wrapped in an AND root;
|
|
300
349
|
* `null` yields an empty AND root.
|
|
301
350
|
*
|
|
302
351
|
* @param filter - a `Filter` (group or leaf), or `null` / `undefined` for an empty tree.
|
|
303
|
-
* @returns a fresh root `
|
|
352
|
+
* @returns a fresh root `SdQbGroup` mirroring the filter's structure.
|
|
304
353
|
*/
|
|
305
|
-
declare function filterToTree(filter: Filter | null | undefined):
|
|
354
|
+
declare function filterToTree(filter: Filter | null | undefined): SdQbGroup;
|
|
306
355
|
/**
|
|
307
356
|
* Render a `Filter` to a SQL-ish token stream for view mode. Field tokens use the
|
|
308
357
|
* matching field's `label`; operators map to SQL syntax (`= != like between is null …`);
|
|
309
358
|
* `and` / `or` are lowercase; nested multi-child groups are wrapped in parentheses.
|
|
310
359
|
* Returns a token stream (not a string) so the template can wrap each piece in a
|
|
311
|
-
* highlight `<span>` keyed by `
|
|
360
|
+
* highlight `<span>` keyed by `SdQbToken.kind`.
|
|
312
361
|
*
|
|
313
362
|
* @param filter - the `Filter` to render, or `null` / `undefined`.
|
|
314
363
|
* @param fields - field metadata, used to resolve each field key to its display label + value formatting.
|
|
364
|
+
* @param translate - i18n lookup for language-dependent value tokens (today / relative offsets /
|
|
365
|
+
* boolean labels). Optional so the serializer stays callable outside an Angular injection context;
|
|
366
|
+
* omitting it renders the raw i18n keys.
|
|
315
367
|
* @returns the ordered tokens, or `[]` when `filter` is empty.
|
|
316
368
|
*/
|
|
317
|
-
declare function filterToTokens(filter: Filter | null | undefined, fields: SdQueryBuilderField[]):
|
|
369
|
+
declare function filterToTokens(filter: Filter | null | undefined, fields: SdQueryBuilderField[], translate?: SdQbTranslate): SdQbToken[];
|
|
318
370
|
|
|
319
|
-
export {
|
|
320
|
-
export type {
|
|
371
|
+
export { SD_QB_DATE_MODES, SD_QB_DEFAULT_OPERATOR_BY_TYPE, SD_QB_EMPTY_OPTIONS, SD_QB_MULTI_OPERATORS, SD_QB_NO_DATA_OPERATORS, SD_QB_OPERATORS_BY_TYPE, SD_QB_RELATIVE_UNIT_OPTIONS, SD_QB_TODAY, SD_QB_TYPE_ICON, SD_QB_VALUE_SOURCE_OPTIONS, SdQueryBuilder, filterToTokens, filterToTree, qbRelativeLabelKey, sdIsQbGroup, sdQbAllowedOperators, sdQbDefaultOperator, sdQbDefaultRelative, sdQbFieldIcon, sdQbId, sdQbIsMultiOperator, sdQbIsNoDataOperator, sdQbIsRelativeDate, sdQbIsToday, sdQbNewGroup, sdQbNewRule, sdQbSupportsFieldCompareOperator, treeToFilter };
|
|
372
|
+
export type { SdQbComparisonMode, SdQbDateMode, SdQbDateModeOption, SdQbGroup, SdQbNode, SdQbRelativeDirection, SdQbRelativeUnit, SdQbRelativeUnitOption, SdQbRule, SdQbToday, SdQbToken, SdQbTokenKind, SdQbTranslate, SdQbValueSource, SdQbValueSourceOption, SdQueryBuilderField, SdQueryBuilderFieldOption, SdQueryBuilderFieldType, SdQueryBuilderOption };
|
|
@@ -10,8 +10,13 @@ declare class SdSection {
|
|
|
10
10
|
collapsed: _angular_core.ModelSignal<boolean>;
|
|
11
11
|
collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
12
12
|
hideHeader: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
13
|
+
/** Id của vùng body, để header `aria-controls` trỏ tới khi section collapsible. */
|
|
14
|
+
readonly bodyId: string;
|
|
13
15
|
constructor();
|
|
14
16
|
toggleCollapse: () => void;
|
|
17
|
+
protected onHeaderClick: (event: MouseEvent) => void;
|
|
18
|
+
protected onCollapseButtonClick: (event: MouseEvent) => void;
|
|
19
|
+
onHeaderKeydown: (event: KeyboardEvent) => void;
|
|
15
20
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdSection, never>;
|
|
16
21
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdSection, "sd-section", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subTitle": { "alias": "subTitle"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "hideHeader": { "alias": "hideHeader"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "*", "[sdFooterLeft]", "[sdFooterRight]"], true, never>;
|
|
17
22
|
}
|
|
@@ -10,7 +10,7 @@ interface SdTabInfo {
|
|
|
10
10
|
tooltip?: string;
|
|
11
11
|
color?: Color;
|
|
12
12
|
}
|
|
13
|
-
interface
|
|
13
|
+
interface SdTabRouterTab {
|
|
14
14
|
component: Type<any>;
|
|
15
15
|
injector?: any;
|
|
16
16
|
key: string;
|
|
@@ -22,17 +22,17 @@ interface SdTab {
|
|
|
22
22
|
tabInfoChanges: Subject<SdTabInfo>;
|
|
23
23
|
beforeClose?: () => boolean | Promise<boolean>;
|
|
24
24
|
}
|
|
25
|
-
declare const SD_TAB: InjectionToken<
|
|
25
|
+
declare const SD_TAB: InjectionToken<SdTabRouterTab>;
|
|
26
26
|
|
|
27
27
|
declare class SdTabRouterNavComponent {
|
|
28
28
|
tabRouterNav: i0.Signal<ElementRef<any> | undefined>;
|
|
29
|
-
tabs: i0.InputSignal<
|
|
29
|
+
tabs: i0.InputSignal<SdTabRouterTab[]>;
|
|
30
30
|
mode: 'default' | 'compact';
|
|
31
31
|
cdRef: ChangeDetectorRef;
|
|
32
32
|
elementRef: ElementRef<any>;
|
|
33
33
|
onResize(): void;
|
|
34
34
|
checkUI: () => void;
|
|
35
|
-
onDrop: (event: CdkDragDrop<
|
|
35
|
+
onDrop: (event: CdkDragDrop<SdTabRouterTab[]>) => void;
|
|
36
36
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdTabRouterNavComponent, never>;
|
|
37
37
|
static ɵcmp: i0.ɵɵComponentDeclaration<SdTabRouterNavComponent, "sd-tab-router-nav", never, { "tabs": { "alias": "tabs"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
38
38
|
}
|
|
@@ -41,17 +41,17 @@ declare class SdTabRouterOutletComponent implements OnDestroy {
|
|
|
41
41
|
#private;
|
|
42
42
|
disabled: i0.InputSignalWithTransform<boolean, unknown>;
|
|
43
43
|
tabRouterNav: i0.Signal<SdTabRouterNavComponent | undefined>;
|
|
44
|
-
tabs: i0.WritableSignal<
|
|
44
|
+
tabs: i0.WritableSignal<SdTabRouterTab[]>;
|
|
45
45
|
constructor();
|
|
46
46
|
ngOnDestroy(): void;
|
|
47
|
-
tabTrackBy: (index: number, tab:
|
|
47
|
+
tabTrackBy: (index: number, tab: SdTabRouterTab) => string;
|
|
48
48
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdTabRouterOutletComponent, never>;
|
|
49
49
|
static ɵcmp: i0.ɵɵComponentDeclaration<SdTabRouterOutletComponent, "sd-tab-router-outlet", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
interface SdTabAction {
|
|
53
53
|
type: 'close';
|
|
54
|
-
tab:
|
|
54
|
+
tab: SdTabRouterTab;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
interface SdTabComponentArgs {
|
|
@@ -67,12 +67,12 @@ declare interface SdTabComponentBuilder {
|
|
|
67
67
|
tooltip?: string | ((args: SdTabComponentArgs) => string);
|
|
68
68
|
color?: Color | ((args: SdTabComponentArgs) => Color);
|
|
69
69
|
}
|
|
70
|
-
declare function SdTabComponent<T>(builder: SdTabComponentBuilder): (
|
|
70
|
+
declare function SdTabComponent<T>(builder: SdTabComponentBuilder): (_constructor: T) => void;
|
|
71
71
|
|
|
72
72
|
declare class SdTabBase {
|
|
73
73
|
#private;
|
|
74
|
-
constructor(tab:
|
|
75
|
-
get tab():
|
|
74
|
+
constructor(tab: SdTabRouterTab | undefined);
|
|
75
|
+
get tab(): SdTabRouterTab | undefined;
|
|
76
76
|
}
|
|
77
77
|
declare class SdTabActivated extends SdTabBase {
|
|
78
78
|
}
|
|
@@ -85,20 +85,20 @@ declare class SdTabRouterService {
|
|
|
85
85
|
events: BehaviorSubject<SdTabEvent>;
|
|
86
86
|
actions: BehaviorSubject<SdTabAction | undefined>;
|
|
87
87
|
builders: BehaviorSubject<SdTabComponentBuilder[]>;
|
|
88
|
-
currentTabChanges: BehaviorSubject<
|
|
89
|
-
newTabs: BehaviorSubject<
|
|
90
|
-
updateTabs: BehaviorSubject<
|
|
88
|
+
currentTabChanges: BehaviorSubject<SdTabRouterTab | undefined>;
|
|
89
|
+
newTabs: BehaviorSubject<SdTabRouterTab | undefined>;
|
|
90
|
+
updateTabs: BehaviorSubject<SdTabRouterTab | undefined>;
|
|
91
91
|
addBuilder: (builder: SdTabComponentBuilder) => void;
|
|
92
|
-
get currentTab():
|
|
92
|
+
get currentTab(): SdTabRouterTab | undefined;
|
|
93
93
|
get currentKey(): string | null;
|
|
94
|
-
setCurrentTab: (tab:
|
|
95
|
-
pushEvent: (tab:
|
|
94
|
+
setCurrentTab: (tab: SdTabRouterTab) => void;
|
|
95
|
+
pushEvent: (tab: SdTabRouterTab, Event: Type<SdTabEvent>) => void;
|
|
96
96
|
setOptions: () => void;
|
|
97
|
-
close: (tab?:
|
|
98
|
-
updateTab: (tab:
|
|
97
|
+
close: (tab?: SdTabRouterTab) => void;
|
|
98
|
+
updateTab: (tab: SdTabRouterTab) => void;
|
|
99
99
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdTabRouterService, never>;
|
|
100
100
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdTabRouterService>;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
export { SD_TAB, SdTabComponent, SdTabRouterOutletComponent, SdTabRouterService };
|
|
104
|
-
export type {
|
|
104
|
+
export type { SdTabComponentArgs, SdTabComponentBuilder, SdTabInfo, SdTabRouterTab };
|