@sdcorejs/angular 21.1.2 → 21.1.4
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 +127 -807
- package/fesm2022/sdcorejs-angular-components-anchor.mjs +14 -14
- package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-audit-diff.mjs +332 -0
- package/fesm2022/sdcorejs-angular-components-audit-diff.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-badge.mjs +1 -0
- package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs +121 -0
- package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-data-state.mjs +68 -0
- package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs +18 -23
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-editor.mjs +6 -4
- package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs +633 -886
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs +26 -41
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-job-progress.mjs +97 -0
- package/fesm2022/sdcorejs-angular-components-job-progress.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-mini-editor.mjs +10 -20
- package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal.mjs +61 -4
- package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-preview.mjs +1438 -218
- package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs +9 -17
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +39 -2
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs +76 -52
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab.mjs +48 -4
- package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-table.mjs +123 -89
- package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tree.mjs +188 -18
- package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs +17 -23
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components.mjs +4 -0
- package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-directives.mjs +29 -41
- package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +9 -8
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +20 -71
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +8 -4
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip.mjs +8 -4
- package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs +18 -14
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date.mjs +48 -70
- package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs +62 -528
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +384 -0
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs +5 -3
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs +16 -11
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input.mjs +297 -59
- package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-models.mjs +155 -2
- package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-radio.mjs +44 -66
- package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-select.mjs +8 -21
- package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-switch.mjs +19 -64
- package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs +8 -6
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs +277 -0
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-time.mjs +307 -0
- package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +210 -0
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-forms.mjs +73 -4
- package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-i18n.mjs +355 -10
- package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-interceptors.mjs +12 -17
- package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-layout.mjs +861 -80
- package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules.mjs +0 -1
- package/fesm2022/sdcorejs-angular-modules.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-pipes.mjs +5 -7
- package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-api.mjs +407 -137
- package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-cache.mjs +515 -105
- package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-confirm.mjs +5 -7
- package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-docx.mjs +7 -10
- package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-loading.mjs +340 -66
- package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-notify.mjs +7 -10
- package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-persistence.mjs +899 -0
- package/fesm2022/sdcorejs-angular-services-persistence.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-storage.mjs +324 -122
- package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-task.mjs +389 -0
- package/fesm2022/sdcorejs-angular-services-task.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs +255 -0
- package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services-viewport.mjs +76 -0
- package/fesm2022/sdcorejs-angular-services-viewport.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-services.mjs +4 -0
- package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
- package/package.json +50 -5
- package/types/sdcorejs-angular-components-audit-diff.d.ts +74 -0
- package/types/sdcorejs-angular-components-badge.d.ts +1 -1
- package/types/sdcorejs-angular-components-breadcrumb.d.ts +53 -0
- package/types/sdcorejs-angular-components-data-state.d.ts +44 -0
- package/types/sdcorejs-angular-components-document-builder.d.ts +5 -5
- package/types/sdcorejs-angular-components-form-generic.d.ts +89 -103
- package/types/sdcorejs-angular-components-import-excel.d.ts +4 -14
- package/types/sdcorejs-angular-components-job-progress.d.ts +38 -0
- package/types/sdcorejs-angular-components-mini-editor.d.ts +9 -9
- package/types/sdcorejs-angular-components-modal.d.ts +7 -1
- package/types/sdcorejs-angular-components-preview.d.ts +181 -28
- package/types/sdcorejs-angular-components-side-drawer.d.ts +7 -1
- package/types/sdcorejs-angular-components-tab.d.ts +9 -2
- package/types/sdcorejs-angular-components-table.d.ts +8 -7
- package/types/sdcorejs-angular-components-tree.d.ts +24 -2
- package/types/sdcorejs-angular-components-upload-file.d.ts +5 -4
- package/types/sdcorejs-angular-components.d.ts +4 -0
- package/types/sdcorejs-angular-directives.d.ts +10 -8
- package/types/sdcorejs-angular-forms-autocomplete.d.ts +3 -4
- package/types/sdcorejs-angular-forms-checkbox.d.ts +4 -8
- package/types/sdcorejs-angular-forms-date-range.d.ts +6 -7
- package/types/sdcorejs-angular-forms-date.d.ts +3 -3
- package/types/sdcorejs-angular-forms-datetime.d.ts +3 -3
- package/types/sdcorejs-angular-forms-entity-picker.d.ts +128 -0
- package/types/sdcorejs-angular-forms-input-color.d.ts +3 -1
- package/types/sdcorejs-angular-forms-input-number.d.ts +4 -2
- package/types/sdcorejs-angular-forms-input.d.ts +76 -11
- package/types/sdcorejs-angular-forms-models.d.ts +86 -3
- package/types/sdcorejs-angular-forms-radio.d.ts +12 -8
- package/types/sdcorejs-angular-forms-switch.d.ts +4 -7
- package/types/sdcorejs-angular-forms-time-range.d.ts +98 -0
- package/types/sdcorejs-angular-forms-time.d.ts +117 -0
- package/types/sdcorejs-angular-forms-tree-select.d.ts +76 -0
- package/types/sdcorejs-angular-forms.d.ts +15 -5
- package/types/sdcorejs-angular-i18n.d.ts +68 -2
- package/types/sdcorejs-angular-interceptors.d.ts +5 -6
- package/types/sdcorejs-angular-modules-icon.d.ts +2 -3
- package/types/sdcorejs-angular-modules-layout.d.ts +288 -15
- package/types/sdcorejs-angular-modules.d.ts +0 -1
- package/types/sdcorejs-angular-pipes.d.ts +2 -2
- package/types/sdcorejs-angular-services-api.d.ts +68 -24
- package/types/sdcorejs-angular-services-cache.d.ts +52 -16
- package/types/sdcorejs-angular-services-confirm.d.ts +3 -2
- package/types/sdcorejs-angular-services-docx.d.ts +2 -3
- package/types/sdcorejs-angular-services-loading.d.ts +16 -8
- package/types/sdcorejs-angular-services-persistence.d.ts +159 -0
- package/types/sdcorejs-angular-services-storage.d.ts +26 -8
- package/types/sdcorejs-angular-services-task.d.ts +104 -0
- package/types/sdcorejs-angular-services-unsaved-changes.d.ts +83 -0
- package/types/sdcorejs-angular-services-viewport.d.ts +42 -0
- package/types/sdcorejs-angular-services.d.ts +4 -0
- package/fesm2022/sdcorejs-angular-modules-authom.mjs +0 -360
- package/fesm2022/sdcorejs-angular-modules-authom.mjs.map +0 -1
- package/types/sdcorejs-angular-modules-authom.d.ts +0 -70
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InjectionToken, Signal } from '@angular/core';
|
|
2
2
|
import { MatFormFieldAppearance } from '@angular/material/form-field';
|
|
3
|
-
import { FormControl, FormControlState, ValidatorFn, FormControlOptions, AsyncValidatorFn, AbstractControl } from '@angular/forms';
|
|
3
|
+
import { FormControl, FormControlState, ValidatorFn, FormControlOptions, AsyncValidatorFn, AbstractControl, FormGroup, NgForm } from '@angular/forms';
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
5
|
|
|
6
6
|
interface ISdFormConfiguration {
|
|
@@ -119,5 +119,88 @@ interface SdViewedInlineApi {
|
|
|
119
119
|
*/
|
|
120
120
|
declare function sdViewedInline(viewed: Signal<SdViewed>, open?: () => void, disabled?: Signal<boolean>): SdViewedInlineApi;
|
|
121
121
|
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
type ɵSdFormControlParent = FormGroup | NgForm | {
|
|
123
|
+
readonly form: unknown;
|
|
124
|
+
} | null | undefined;
|
|
125
|
+
interface ɵSdFormControlConnectorBaseOptions<TControl> {
|
|
126
|
+
/** Parent form source. NgForm and wrapper values are unwrapped on every rebind. */
|
|
127
|
+
readonly form: Signal<ɵSdFormControlParent>;
|
|
128
|
+
/** Registration name. Empty names intentionally leave the control unregistered. */
|
|
129
|
+
readonly name: Signal<string | null | undefined>;
|
|
130
|
+
/** Canonical control registered in the parent form. */
|
|
131
|
+
readonly control: Signal<AbstractControl<TControl>>;
|
|
132
|
+
readonly validators?: Signal<ValidatorFn | readonly ValidatorFn[] | null | undefined>;
|
|
133
|
+
readonly asyncValidators?: Signal<AsyncValidatorFn | readonly AsyncValidatorFn[] | null | undefined>;
|
|
134
|
+
/** Adds/removes Validators.required while preserving validators supplied above. */
|
|
135
|
+
readonly required?: Signal<boolean | null | undefined>;
|
|
136
|
+
readonly disabled?: Signal<boolean | null | undefined>;
|
|
137
|
+
/** UI-only read-only policy. This never disables the Angular control. */
|
|
138
|
+
readonly readonly?: Signal<boolean | null | undefined>;
|
|
139
|
+
/** Exact SDCoreJS display policy. This never disables the Angular control. */
|
|
140
|
+
readonly viewed?: Signal<SdViewed | null | undefined>;
|
|
141
|
+
/** Component-local validation message. Visibility is interaction-gated in state. */
|
|
142
|
+
readonly validationError?: Signal<string | null | undefined>;
|
|
143
|
+
}
|
|
144
|
+
interface ɵSdFormControlRegistrationOptions<TControl> extends ɵSdFormControlConnectorBaseOptions<TControl> {
|
|
145
|
+
readonly model?: never;
|
|
146
|
+
readonly writeModel?: never;
|
|
147
|
+
readonly modelToControl?: never;
|
|
148
|
+
readonly controlToModel?: never;
|
|
149
|
+
readonly modelEquals?: never;
|
|
150
|
+
readonly controlEquals?: never;
|
|
151
|
+
}
|
|
152
|
+
interface ɵSdFormControlIdentityOptions<TValue> extends ɵSdFormControlConnectorBaseOptions<TValue> {
|
|
153
|
+
readonly model: Signal<TValue>;
|
|
154
|
+
readonly writeModel: (value: TValue) => void;
|
|
155
|
+
readonly modelToControl?: never;
|
|
156
|
+
readonly controlToModel?: never;
|
|
157
|
+
readonly modelEquals?: (left: TValue, right: TValue) => boolean;
|
|
158
|
+
readonly controlEquals?: (left: TValue, right: TValue) => boolean;
|
|
159
|
+
}
|
|
160
|
+
interface ɵSdFormControlAdaptedOptions<TModel, TControl> extends ɵSdFormControlConnectorBaseOptions<TControl> {
|
|
161
|
+
readonly model: Signal<TModel>;
|
|
162
|
+
readonly writeModel: (value: TModel) => void;
|
|
163
|
+
readonly modelToControl: (value: TModel) => TControl;
|
|
164
|
+
readonly controlToModel: (value: TControl) => TModel;
|
|
165
|
+
readonly modelEquals?: (left: TModel, right: TModel) => boolean;
|
|
166
|
+
readonly controlEquals?: (left: TControl, right: TControl) => boolean;
|
|
167
|
+
}
|
|
168
|
+
type ɵSdTypesExactlyMatch<TLeft, TRight> = [TLeft] extends [TRight] ? ([TRight] extends [TLeft] ? true : false) : false;
|
|
169
|
+
/**
|
|
170
|
+
* @internal Unstable connector contract for cross-entrypoint SDCoreJS controls.
|
|
171
|
+
* Consumers must use registration-only, same-type identity binding, or provide
|
|
172
|
+
* both adapters when model and control representations differ.
|
|
173
|
+
*/
|
|
174
|
+
type ɵSdFormControlConnectorOptions<TModel, TControl> = ɵSdFormControlRegistrationOptions<TControl> | ɵSdFormControlAdaptedOptions<TModel, TControl> | (ɵSdTypesExactlyMatch<TModel, TControl> extends true ? ɵSdFormControlIdentityOptions<TModel> : never);
|
|
175
|
+
interface ɵSdFormControlConnectorState<TControl> {
|
|
176
|
+
readonly value: TControl | undefined;
|
|
177
|
+
readonly disabled: boolean;
|
|
178
|
+
readonly invalid: boolean;
|
|
179
|
+
readonly touched: boolean;
|
|
180
|
+
readonly dirty: boolean;
|
|
181
|
+
readonly required: boolean;
|
|
182
|
+
readonly readonly: boolean;
|
|
183
|
+
readonly viewed: SdViewed;
|
|
184
|
+
readonly isViewed: boolean;
|
|
185
|
+
readonly isInline: boolean;
|
|
186
|
+
readonly showValidationError: boolean;
|
|
187
|
+
readonly validationError: string | undefined;
|
|
188
|
+
}
|
|
189
|
+
interface ɵSdFormControlConnector<TControl = unknown> {
|
|
190
|
+
readonly state: Signal<ɵSdFormControlConnectorState<TControl>>;
|
|
191
|
+
markAsTouched(): void;
|
|
192
|
+
markAsUntouched(): void;
|
|
193
|
+
markAsDirty(): void;
|
|
194
|
+
markAsPristine(): void;
|
|
195
|
+
}
|
|
196
|
+
/** Coerces the form shapes accepted by SDCoreJS controls into one FormGroup. */
|
|
197
|
+
declare function ɵsdCoerceFormGroup(value: unknown): FormGroup | undefined;
|
|
198
|
+
/**
|
|
199
|
+
* Connects the signal-based SDCoreJS model contract to an Angular control.
|
|
200
|
+
* Registration and subscriptions are rebound transactionally, and cleanup only
|
|
201
|
+
* removes a control while the connector still owns that exact registration.
|
|
202
|
+
*/
|
|
203
|
+
declare function ɵsdFormControlConnector<TModel, TControl>(options: ɵSdFormControlConnectorOptions<TModel, TControl>): ɵSdFormControlConnector<TControl>;
|
|
204
|
+
|
|
205
|
+
export { HandleSdCustomValidator, SD_FORM_CONFIGURATION, SdFormControl, SdInlineErrorValidator, sdFormControlState, sdViewedInline, sdViewedTransform, ɵsdCoerceFormGroup, ɵsdFormControlConnector };
|
|
206
|
+
export type { ISdFormConfiguration, SdCustomValidator, SdFormControlSnapshot, SdSearch, SdSearchReq, SdSelectionData, SdViewed, SdViewedInlineApi, SdViewedInput, ɵSdFormControlConnector, ɵSdFormControlConnectorOptions, ɵSdFormControlConnectorState, ɵSdFormControlParent };
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { OnInit,
|
|
3
|
-
import { FormGroup } from '@angular/forms';
|
|
2
|
+
import { OnInit, OnDestroy } from '@angular/core';
|
|
4
3
|
import { SdSuffixDefDirective, SdLabelDefDirective, SdViewDefDirective } from '@sdcorejs/angular/forms/directives';
|
|
5
|
-
import { SdFormControl, SdViewed, SdViewedInput } from '@sdcorejs/angular/forms/models';
|
|
4
|
+
import { SdFormControl, ɵSdFormControlParent as _SdFormControlParent, SdViewed, SdViewedInput } from '@sdcorejs/angular/forms/models';
|
|
6
5
|
import { Color } from '@sdcorejs/utils/models';
|
|
7
6
|
|
|
8
|
-
declare class SdRadio implements OnInit,
|
|
7
|
+
declare class SdRadio implements OnInit, OnDestroy {
|
|
9
8
|
#private;
|
|
10
|
-
id: string;
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly labelId: string;
|
|
11
|
+
readonly errorId: string;
|
|
11
12
|
formControl: SdFormControl;
|
|
12
13
|
readonly autoIdInput: _angular_core.InputSignalWithTransform<string | undefined, string | null | undefined>;
|
|
13
14
|
readonly name: _angular_core.InputSignalWithTransform<string | undefined, string | null | undefined>;
|
|
14
|
-
readonly form: _angular_core.
|
|
15
|
+
readonly form: _angular_core.InputSignal<_SdFormControlParent>;
|
|
15
16
|
readonly label: _angular_core.InputSignalWithTransform<string | undefined, string | null | undefined>;
|
|
16
17
|
readonly placeholder: _angular_core.InputSignalWithTransform<string | undefined, string | null | undefined>;
|
|
17
18
|
readonly display: _angular_core.InputSignalWithTransform<"row" | "column", "row" | "column" | null | undefined>;
|
|
@@ -42,10 +43,13 @@ declare class SdRadio implements OnInit, AfterViewInit, OnDestroy {
|
|
|
42
43
|
readonly dataEmpty: _angular_core.Signal<"true" | "false">;
|
|
43
44
|
readonly dataValue: _angular_core.Signal<string>;
|
|
44
45
|
readonly dataRequired: _angular_core.Signal<"true" | "false">;
|
|
46
|
+
readonly visibleError: _angular_core.Signal<"required" | "inlineError" | undefined>;
|
|
47
|
+
readonly ariaLabelledBy: _angular_core.Signal<string | undefined>;
|
|
48
|
+
readonly ariaLabel: _angular_core.Signal<string | undefined>;
|
|
49
|
+
readonly ariaDescribedBy: _angular_core.Signal<string | undefined>;
|
|
50
|
+
readonly ariaInvalid: _angular_core.Signal<"true" | "false">;
|
|
45
51
|
readonly viewedText: _angular_core.Signal<any>;
|
|
46
|
-
constructor();
|
|
47
52
|
ngOnInit(): void;
|
|
48
|
-
ngAfterViewInit(): void;
|
|
49
53
|
ngOnDestroy(): void;
|
|
50
54
|
reValidate: () => void;
|
|
51
55
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdRadio, never>;
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { OnInit,
|
|
3
|
-
import {
|
|
4
|
-
import { SdFormControl, SdViewed, SdViewedInput } from '@sdcorejs/angular/forms/models';
|
|
2
|
+
import { OnInit, OnDestroy } from '@angular/core';
|
|
3
|
+
import { SdFormControl, ɵSdFormControlParent as _SdFormControlParent, SdViewed, SdViewedInput } from '@sdcorejs/angular/forms/models';
|
|
5
4
|
import { Color } from '@sdcorejs/utils/models';
|
|
6
5
|
|
|
7
|
-
declare class SdSwitch implements OnInit,
|
|
6
|
+
declare class SdSwitch implements OnInit, OnDestroy {
|
|
8
7
|
#private;
|
|
9
8
|
id: string;
|
|
10
9
|
formControl: SdFormControl;
|
|
11
10
|
readonly autoIdInput: _angular_core.InputSignalWithTransform<string | undefined, string | null | undefined>;
|
|
12
11
|
readonly name: _angular_core.InputSignalWithTransform<string | undefined, string | null | undefined>;
|
|
13
|
-
readonly form: _angular_core.
|
|
12
|
+
readonly form: _angular_core.InputSignal<_SdFormControlParent>;
|
|
14
13
|
readonly label: _angular_core.InputSignalWithTransform<string | undefined, string | null | undefined>;
|
|
15
14
|
readonly color: _angular_core.InputSignalWithTransform<Color, Color | null | undefined>;
|
|
16
15
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -27,9 +26,7 @@ declare class SdSwitch implements OnInit, AfterViewInit, OnDestroy {
|
|
|
27
26
|
readonly dataEmpty: _angular_core.Signal<"true" | "false">;
|
|
28
27
|
readonly dataValue: _angular_core.Signal<string>;
|
|
29
28
|
readonly dataRequired: _angular_core.Signal<"true" | "false">;
|
|
30
|
-
constructor();
|
|
31
29
|
ngOnInit(): void;
|
|
32
|
-
ngAfterViewInit(): void;
|
|
33
30
|
ngOnDestroy(): void;
|
|
34
31
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdSwitch, never>;
|
|
35
32
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdSwitch, "sd-switch", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "hideInlineError": { "alias": "hideInlineError"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "model": { "alias": "model"; "required": false; "isSignal": true; }; }, { "model": "modelChange"; "sdChange": "sdChange"; }, never, never, true, never>;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { SdTimeConstraints, SdTime, SdTimeModelValue } from '@sdcorejs/angular/forms/time';
|
|
2
|
+
import * as _sdcorejs_angular_forms_models from '@sdcorejs/angular/forms/models';
|
|
3
|
+
import { ɵSdFormControlParent as _SdFormControlParent, SdViewed, SdViewedInput, SdFormControl } from '@sdcorejs/angular/forms/models';
|
|
4
|
+
import * as _angular_core from '@angular/core';
|
|
5
|
+
import { TemplateRef } from '@angular/core';
|
|
6
|
+
import { FormGroup } from '@angular/forms';
|
|
7
|
+
import { SdViewDefDirective } from '@sdcorejs/angular/forms/directives';
|
|
8
|
+
import { Size } from '@sdcorejs/utils/models';
|
|
9
|
+
|
|
10
|
+
interface SdTimeRangeValue {
|
|
11
|
+
readonly from?: string | null;
|
|
12
|
+
readonly to?: string | null;
|
|
13
|
+
}
|
|
14
|
+
interface SdTimeRangeConstraints extends SdTimeConstraints {
|
|
15
|
+
readonly required?: boolean;
|
|
16
|
+
readonly allowOpenEnded?: boolean;
|
|
17
|
+
}
|
|
18
|
+
type SdTimeRangeValidationError = 'required' | 'incomplete' | 'fromTime' | 'fromMin' | 'fromMax' | 'fromStep' | 'toTime' | 'toMin' | 'toMax' | 'toStep' | 'range';
|
|
19
|
+
/** Normalizes both endpoints while retaining explicit open-ended null values. */
|
|
20
|
+
declare function sdNormalizeTimeRange(value: SdTimeRangeValue | null | undefined): SdTimeRangeValue | null;
|
|
21
|
+
/** Validates endpoint syntax, openness, shared boundaries, step, and ordering. */
|
|
22
|
+
declare function sdValidateTimeRange(value: SdTimeRangeValue | null | undefined, constraints?: SdTimeRangeConstraints): SdTimeRangeValidationError | null;
|
|
23
|
+
|
|
24
|
+
type SdTimeRangeModelValue = SdTimeRangeValue | null | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Composes two `SdTime` editors into one timezone-free range model.
|
|
27
|
+
* Endpoint and aggregate validation are surfaced through the group state.
|
|
28
|
+
*/
|
|
29
|
+
declare class SdTimeRange {
|
|
30
|
+
#private;
|
|
31
|
+
readonly fromName: string;
|
|
32
|
+
readonly toName: string;
|
|
33
|
+
readonly sdLabelTemplate: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
34
|
+
readonly sdValueTemplate: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
35
|
+
readonly sdViewDef: _angular_core.Signal<SdViewDefDirective<any, any> | undefined>;
|
|
36
|
+
readonly fromTime: _angular_core.Signal<SdTime | undefined>;
|
|
37
|
+
readonly toTime: _angular_core.Signal<SdTime | undefined>;
|
|
38
|
+
readonly autoIdInput: _angular_core.InputSignal<string | null | undefined>;
|
|
39
|
+
readonly autoId: _angular_core.Signal<string | undefined>;
|
|
40
|
+
readonly fromAutoId: _angular_core.Signal<string | undefined>;
|
|
41
|
+
readonly toAutoId: _angular_core.Signal<string | undefined>;
|
|
42
|
+
readonly fromAriaLabel: _angular_core.Signal<string>;
|
|
43
|
+
readonly toAriaLabel: _angular_core.Signal<string>;
|
|
44
|
+
readonly groupAriaLabel: _angular_core.Signal<string>;
|
|
45
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
46
|
+
readonly form: _angular_core.InputSignalWithTransform<FormGroup<any> | undefined, _SdFormControlParent>;
|
|
47
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
48
|
+
readonly helperText: _angular_core.InputSignal<string | undefined>;
|
|
49
|
+
readonly fromPlaceholder: _angular_core.InputSignal<string | undefined>;
|
|
50
|
+
readonly toPlaceholder: _angular_core.InputSignal<string | undefined>;
|
|
51
|
+
readonly size: _angular_core.InputSignal<Size>;
|
|
52
|
+
readonly min: _angular_core.InputSignal<string | null | undefined>;
|
|
53
|
+
readonly max: _angular_core.InputSignal<string | null | undefined>;
|
|
54
|
+
readonly stepInput: _angular_core.InputSignalWithTransform<number | undefined, string | number | null | undefined>;
|
|
55
|
+
readonly step: _angular_core.Signal<number>;
|
|
56
|
+
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
57
|
+
readonly allowOpenEnded: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
58
|
+
readonly clearable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
59
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
60
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
61
|
+
readonly viewed: _angular_core.InputSignalWithTransform<SdViewed, SdViewedInput>;
|
|
62
|
+
readonly hideInlineError: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
63
|
+
readonly inlineError: _angular_core.InputSignal<string | undefined>;
|
|
64
|
+
readonly hyperlink: _angular_core.InputSignal<string | null | undefined>;
|
|
65
|
+
readonly valueModel: _angular_core.ModelSignal<SdTimeRangeModelValue>;
|
|
66
|
+
readonly sdChange: _angular_core.OutputEmitterRef<SdTimeRangeModelValue>;
|
|
67
|
+
readonly sdFocus: _angular_core.OutputEmitterRef<void>;
|
|
68
|
+
readonly sdBlur: _angular_core.OutputEmitterRef<SdTimeRangeModelValue>;
|
|
69
|
+
readonly fromValue: _angular_core.WritableSignal<SdTimeModelValue>;
|
|
70
|
+
readonly toValue: _angular_core.WritableSignal<SdTimeModelValue>;
|
|
71
|
+
readonly formControl: SdFormControl;
|
|
72
|
+
readonly connectorState: _angular_core.Signal<_sdcorejs_angular_forms_models.ɵSdFormControlConnectorState<SdTimeRangeValue>>;
|
|
73
|
+
readonly isViewed: _angular_core.Signal<boolean>;
|
|
74
|
+
readonly isInline: _angular_core.Signal<boolean>;
|
|
75
|
+
readonly isReadonly: _angular_core.Signal<boolean>;
|
|
76
|
+
readonly viewTemplate: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
77
|
+
readonly displayValue: _angular_core.Signal<string>;
|
|
78
|
+
readonly showClear: _angular_core.Signal<boolean>;
|
|
79
|
+
readonly endpointInvalid: _angular_core.Signal<boolean>;
|
|
80
|
+
readonly dataDisabled: _angular_core.Signal<"true" | "false">;
|
|
81
|
+
readonly dataInvalid: _angular_core.Signal<"true" | "false">;
|
|
82
|
+
readonly dataEmpty: _angular_core.Signal<"true" | "false">;
|
|
83
|
+
readonly dataValue: _angular_core.Signal<string>;
|
|
84
|
+
readonly dataRequired: _angular_core.Signal<"true" | "false">;
|
|
85
|
+
readonly dataErrorMessage: _angular_core.Signal<string | null>;
|
|
86
|
+
readonly errorMessage: _angular_core.Signal<string | undefined>;
|
|
87
|
+
constructor();
|
|
88
|
+
onFromChange(value: SdTimeModelValue): void;
|
|
89
|
+
onToChange(value: SdTimeModelValue): void;
|
|
90
|
+
onFocus(): void;
|
|
91
|
+
onBlur(): void;
|
|
92
|
+
clear(): void;
|
|
93
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdTimeRange, never>;
|
|
94
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdTimeRange, "sd-time-range", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "fromPlaceholder": { "alias": "fromPlaceholder"; "required": false; "isSignal": true; }; "toPlaceholder": { "alias": "toPlaceholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "stepInput": { "alias": "step"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "allowOpenEnded": { "alias": "allowOpenEnded"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "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; }; "hideInlineError": { "alias": "hideInlineError"; "required": false; "isSignal": true; }; "inlineError": { "alias": "inlineError"; "required": false; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; "sdFocus": "sdFocus"; "sdBlur": "sdBlur"; }, ["sdLabelTemplate", "sdValueTemplate", "sdViewDef"], ["[sdLabel]"], true, never>;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export { SdTimeRange, sdNormalizeTimeRange, sdValidateTimeRange };
|
|
98
|
+
export type { SdTimeRangeConstraints, SdTimeRangeModelValue, SdTimeRangeValidationError, SdTimeRangeValue };
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import * as _sdcorejs_angular_forms_models from '@sdcorejs/angular/forms/models';
|
|
2
|
+
import { ɵSdFormControlParent as _SdFormControlParent, SdViewed, SdViewedInput, SdFormControl } from '@sdcorejs/angular/forms/models';
|
|
3
|
+
import * as _angular_core from '@angular/core';
|
|
4
|
+
import { ElementRef, TemplateRef } from '@angular/core';
|
|
5
|
+
import { FormGroup } from '@angular/forms';
|
|
6
|
+
import { MatFormFieldAppearance, FloatLabelType } from '@angular/material/form-field';
|
|
7
|
+
import { MatMenuTrigger } from '@angular/material/menu';
|
|
8
|
+
import { SdViewDefDirective } from '@sdcorejs/angular/forms/directives';
|
|
9
|
+
import { Size } from '@sdcorejs/utils/models';
|
|
10
|
+
|
|
11
|
+
interface SdTimeParts {
|
|
12
|
+
readonly hour: number;
|
|
13
|
+
readonly minute: number;
|
|
14
|
+
}
|
|
15
|
+
interface SdTimeConstraints {
|
|
16
|
+
readonly min?: string | null;
|
|
17
|
+
readonly max?: string | null;
|
|
18
|
+
/** Minute increment. Non-positive and non-finite values disable step validation. */
|
|
19
|
+
readonly step?: number | null;
|
|
20
|
+
}
|
|
21
|
+
type SdTimeValidationError = 'time' | 'min' | 'max' | 'step';
|
|
22
|
+
/** Parses a time-only string without constructing a Date or applying a timezone. */
|
|
23
|
+
declare function sdParseTime(value: unknown): SdTimeParts | null;
|
|
24
|
+
/** Converts a valid time-only value to the canonical `HH:mm` representation. */
|
|
25
|
+
declare function sdNormalizeTime(value: unknown): string | null;
|
|
26
|
+
/** Returns minutes since midnight for ordering and range validation. */
|
|
27
|
+
declare function sdTimeToMinutes(value: unknown): number | null;
|
|
28
|
+
/** Validates syntax, inclusive boundaries, and minute-step alignment. */
|
|
29
|
+
declare function sdValidateTime(value: unknown, constraints?: SdTimeConstraints): SdTimeValidationError | null;
|
|
30
|
+
|
|
31
|
+
interface SdTimePickerAdapter<TPickerValue> {
|
|
32
|
+
toPickerValue(value: string | null | undefined): TPickerValue;
|
|
33
|
+
fromPickerValue(value: TPickerValue): string | null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Bridges the public time-only string contract to Date-based picker controls.
|
|
37
|
+
* The fixed date never escapes this adapter, so timezone/calendar data cannot
|
|
38
|
+
* leak into the model.
|
|
39
|
+
*/
|
|
40
|
+
declare class SdDateTimePickerAdapter implements SdTimePickerAdapter<Date> {
|
|
41
|
+
toPickerValue(value: string | null | undefined): Date;
|
|
42
|
+
fromPickerValue(value: Date): string | null;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
type SdTimeModelValue = string | null | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Edits a timezone-free time of day and emits valid values as canonical `HH:mm` strings.
|
|
48
|
+
* Invalid typed text remains in the control without replacing the last valid model.
|
|
49
|
+
*/
|
|
50
|
+
declare class SdTime {
|
|
51
|
+
#private;
|
|
52
|
+
readonly id: string;
|
|
53
|
+
readonly inputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
54
|
+
readonly menuTrigger: _angular_core.Signal<MatMenuTrigger | undefined>;
|
|
55
|
+
readonly sdLabelTemplate: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
56
|
+
readonly sdValueTemplate: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
57
|
+
readonly sdViewDef: _angular_core.Signal<SdViewDefDirective<any, any> | undefined>;
|
|
58
|
+
readonly autoIdInput: _angular_core.InputSignal<string | null | undefined>;
|
|
59
|
+
readonly autoId: _angular_core.Signal<string | undefined>;
|
|
60
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
61
|
+
readonly form: _angular_core.InputSignalWithTransform<FormGroup<any> | undefined, _SdFormControlParent>;
|
|
62
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
63
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
64
|
+
readonly helperText: _angular_core.InputSignal<string | undefined>;
|
|
65
|
+
readonly placeholder: _angular_core.InputSignal<string | undefined>;
|
|
66
|
+
readonly size: _angular_core.InputSignal<Size>;
|
|
67
|
+
readonly appearanceInput: _angular_core.InputSignal<MatFormFieldAppearance | undefined>;
|
|
68
|
+
readonly appearance: _angular_core.Signal<MatFormFieldAppearance>;
|
|
69
|
+
readonly floatLabel: _angular_core.InputSignal<FloatLabelType>;
|
|
70
|
+
readonly min: _angular_core.InputSignal<string | null | undefined>;
|
|
71
|
+
readonly max: _angular_core.InputSignal<string | null | undefined>;
|
|
72
|
+
readonly stepInput: _angular_core.InputSignalWithTransform<number | undefined, string | number | null | undefined>;
|
|
73
|
+
readonly step: _angular_core.Signal<number>;
|
|
74
|
+
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
75
|
+
readonly clearable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
76
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
77
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
78
|
+
readonly viewed: _angular_core.InputSignalWithTransform<SdViewed, SdViewedInput>;
|
|
79
|
+
readonly hideInlineError: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
80
|
+
readonly inlineError: _angular_core.InputSignal<string | undefined>;
|
|
81
|
+
readonly hyperlink: _angular_core.InputSignal<string | null | undefined>;
|
|
82
|
+
readonly valueModel: _angular_core.ModelSignal<SdTimeModelValue>;
|
|
83
|
+
readonly sdChange: _angular_core.OutputEmitterRef<SdTimeModelValue>;
|
|
84
|
+
readonly sdFocus: _angular_core.OutputEmitterRef<void>;
|
|
85
|
+
readonly sdBlur: _angular_core.OutputEmitterRef<SdTimeModelValue>;
|
|
86
|
+
readonly formControl: SdFormControl;
|
|
87
|
+
readonly connectorState: _angular_core.Signal<_sdcorejs_angular_forms_models.ɵSdFormControlConnectorState<string | null>>;
|
|
88
|
+
readonly isViewed: _angular_core.Signal<boolean>;
|
|
89
|
+
readonly isInline: _angular_core.Signal<boolean>;
|
|
90
|
+
readonly isReadonly: _angular_core.Signal<boolean>;
|
|
91
|
+
readonly viewTemplate: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
92
|
+
readonly displayValue: _angular_core.Signal<string | null>;
|
|
93
|
+
readonly showClear: _angular_core.Signal<boolean>;
|
|
94
|
+
readonly dataDisabled: _angular_core.Signal<"true" | "false">;
|
|
95
|
+
readonly dataInvalid: _angular_core.Signal<"true" | "false">;
|
|
96
|
+
readonly dataEmpty: _angular_core.Signal<"true" | "false">;
|
|
97
|
+
readonly dataValue: _angular_core.Signal<string>;
|
|
98
|
+
readonly dataRequired: _angular_core.Signal<"true" | "false">;
|
|
99
|
+
readonly dataErrorMessage: _angular_core.Signal<string | null>;
|
|
100
|
+
readonly errorMessage: _angular_core.Signal<string | undefined>;
|
|
101
|
+
protected readonly pickerDraft: _angular_core.WritableSignal<Date>;
|
|
102
|
+
preparePicker(): void;
|
|
103
|
+
onPickerValue(value: Date): void;
|
|
104
|
+
applyPicker(): void;
|
|
105
|
+
cancelPicker(): void;
|
|
106
|
+
open(): void;
|
|
107
|
+
focus(): void;
|
|
108
|
+
clear(event?: Event): void;
|
|
109
|
+
onFocus(): void;
|
|
110
|
+
onBlur(): void;
|
|
111
|
+
stepBy(direction: 1 | -1, event: KeyboardEvent): void;
|
|
112
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdTime, never>;
|
|
113
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdTime, "sd-time", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "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; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "stepInput": { "alias": "step"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "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; }; "hideInlineError": { "alias": "hideInlineError"; "required": false; "isSignal": true; }; "inlineError": { "alias": "inlineError"; "required": false; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; "sdFocus": "sdFocus"; "sdBlur": "sdBlur"; }, ["sdLabelTemplate", "sdValueTemplate", "sdViewDef"], ["[sdLabel]"], true, never>;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export { SdDateTimePickerAdapter, SdTime, sdNormalizeTime, sdParseTime, sdTimeToMinutes, sdValidateTime };
|
|
117
|
+
export type { SdTimeConstraints, SdTimeModelValue, SdTimeParts, SdTimePickerAdapter, SdTimeValidationError };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import * as _sdcorejs_angular_forms_models from '@sdcorejs/angular/forms/models';
|
|
2
|
+
import { ɵSdFormControlParent as _SdFormControlParent, SdViewed, SdViewedInput, SdFormControl } from '@sdcorejs/angular/forms/models';
|
|
3
|
+
import * as _angular_core from '@angular/core';
|
|
4
|
+
import { ElementRef, TemplateRef } from '@angular/core';
|
|
5
|
+
import { FormGroup } from '@angular/forms';
|
|
6
|
+
import { SdModal } from '@sdcorejs/angular/components/modal';
|
|
7
|
+
import { SdTree, SdTreeItemContext, SdTreeDataSource, SdTreeItem, SdTreeOption, SdTreeLoadErrorEvent, SdTreeComponentOption, SdTreeSelectionEvent } from '@sdcorejs/angular/components/tree';
|
|
8
|
+
|
|
9
|
+
type SdTreeSelectModel<TKey> = TKey | TKey[] | null | undefined;
|
|
10
|
+
type SdTreeSelectTemplateContext<T> = SdTreeItemContext<T>;
|
|
11
|
+
declare class SdTreeSelectNodeTemplateDirective<T> {
|
|
12
|
+
readonly template: TemplateRef<SdTreeSelectTemplateContext<T>>;
|
|
13
|
+
static ngTemplateContextGuard<T>(_directive: SdTreeSelectNodeTemplateDirective<T>, _context: unknown): _context is SdTreeSelectTemplateContext<T>;
|
|
14
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdTreeSelectNodeTemplateDirective<any>, never>;
|
|
15
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SdTreeSelectNodeTemplateDirective<any>, "ng-template[sdTreeSelectNode]", never, {}, {}, never, never, true, never>;
|
|
16
|
+
}
|
|
17
|
+
declare class SdTreeSelect<T = unknown, TKey = string | number> {
|
|
18
|
+
#private;
|
|
19
|
+
readonly trigger: _angular_core.Signal<ElementRef<HTMLButtonElement> | undefined>;
|
|
20
|
+
readonly modal: _angular_core.Signal<SdModal | undefined>;
|
|
21
|
+
readonly treeComponent: _angular_core.Signal<SdTree<T> | undefined>;
|
|
22
|
+
readonly nodeTemplate: _angular_core.Signal<SdTreeSelectNodeTemplateDirective<any> | undefined>;
|
|
23
|
+
readonly autoIdInput: _angular_core.InputSignal<string | null | undefined>;
|
|
24
|
+
readonly autoId: _angular_core.Signal<string | undefined>;
|
|
25
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
26
|
+
readonly form: _angular_core.InputSignalWithTransform<FormGroup<any> | undefined, _SdFormControlParent>;
|
|
27
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
28
|
+
readonly placeholder: _angular_core.InputSignal<string | null | undefined>;
|
|
29
|
+
readonly modalTitle: _angular_core.InputSignal<string | null | undefined>;
|
|
30
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
31
|
+
readonly items: _angular_core.InputSignal<SdTreeDataSource<SdTreeItem<T>>>;
|
|
32
|
+
readonly tree: _angular_core.InputSignal<SdTreeOption<T>>;
|
|
33
|
+
readonly valueField: _angular_core.InputSignal<(T extends object ? { [Key in keyof T & string]: T[Key] extends string | number | boolean | Function | Date | null | undefined ? Key : T[Key] extends any[] ? Key : T[Key] extends object ? Key | `${Key}.${T[Key] extends infer T_1 ? T_1 extends T[Key] ? T_1 extends object ? { [Key_2 in keyof T_1 & string]: T_1[Key_2] extends string | number | boolean | Function | Date | null | undefined ? Key_2 : T_1[Key_2] extends any[] ? Key_2 : T_1[Key_2] extends object ? Key_2 | `${Key_2}.${T_1[Key_2] extends infer T_2 ? T_2 extends T_1[Key_2] ? T_2 extends object ? { [Key_3 in keyof T_2 & string]: T_2[Key_3] extends string | number | boolean | Function | Date | null | undefined ? Key_3 : T_2[Key_3] extends any[] ? Key_3 : T_2[Key_3] extends object ? Key_3 | `${Key_3}.${T_2[Key_3] extends infer T_3 ? T_3 extends T_2[Key_3] ? T_3 extends object ? { [Key_4 in keyof T_3 & string]: T_3[Key_4] extends string | number | boolean | Function | Date | null | undefined ? Key_4 : T_3[Key_4] extends any[] ? Key_4 : T_3[Key_4] extends object ? Key_4 : Key_4; }[keyof T_3 & string] : string : never : never}` : Key_3; }[keyof T_2 & string] : string : never : never}` : Key_2; }[keyof T_1 & string] : string : never : never}` : Key; }[keyof T & string] : string) | undefined>;
|
|
34
|
+
readonly keySelector: _angular_core.InputSignal<((item: T) => TKey) | undefined>;
|
|
35
|
+
readonly displayField: _angular_core.InputSignal<(T extends object ? { [Key in keyof T & string]: T[Key] extends string | number | boolean | Function | Date | null | undefined ? Key : T[Key] extends any[] ? Key : T[Key] extends object ? Key | `${Key}.${T[Key] extends infer T_1 ? T_1 extends T[Key] ? T_1 extends object ? { [Key_2 in keyof T_1 & string]: T_1[Key_2] extends string | number | boolean | Function | Date | null | undefined ? Key_2 : T_1[Key_2] extends any[] ? Key_2 : T_1[Key_2] extends object ? Key_2 | `${Key_2}.${T_1[Key_2] extends infer T_2 ? T_2 extends T_1[Key_2] ? T_2 extends object ? { [Key_3 in keyof T_2 & string]: T_2[Key_3] extends string | number | boolean | Function | Date | null | undefined ? Key_3 : T_2[Key_3] extends any[] ? Key_3 : T_2[Key_3] extends object ? Key_3 | `${Key_3}.${T_2[Key_3] extends infer T_3 ? T_3 extends T_2[Key_3] ? T_3 extends object ? { [Key_4 in keyof T_3 & string]: T_3[Key_4] extends string | number | boolean | Function | Date | null | undefined ? Key_4 : T_3[Key_4] extends any[] ? Key_4 : T_3[Key_4] extends object ? Key_4 : Key_4; }[keyof T_3 & string] : string : never : never}` : Key_3; }[keyof T_2 & string] : string : never : never}` : Key_2; }[keyof T_1 & string] : string : never : never}` : Key; }[keyof T & string] : string) | undefined>;
|
|
36
|
+
readonly displayWith: _angular_core.InputSignal<((item: T) => string) | undefined>;
|
|
37
|
+
readonly compareWith: _angular_core.InputSignal<(left: TKey, right: TKey) => boolean>;
|
|
38
|
+
readonly disabledNode: _angular_core.InputSignal<((item: T, selectedItems: T[]) => boolean) | undefined>;
|
|
39
|
+
readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
40
|
+
readonly cascade: _angular_core.InputSignal<"independent" | "descendants">;
|
|
41
|
+
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
42
|
+
readonly clearable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
43
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
44
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
45
|
+
readonly viewed: _angular_core.InputSignalWithTransform<SdViewed, SdViewedInput>;
|
|
46
|
+
readonly model: _angular_core.ModelSignal<SdTreeSelectModel<TKey>>;
|
|
47
|
+
readonly sdChange: _angular_core.OutputEmitterRef<SdTreeSelectModel<TKey>>;
|
|
48
|
+
readonly sdLoadError: _angular_core.OutputEmitterRef<SdTreeLoadErrorEvent<T>>;
|
|
49
|
+
readonly formControl: SdFormControl;
|
|
50
|
+
readonly connectorState: _angular_core.Signal<_sdcorejs_angular_forms_models.ɵSdFormControlConnectorState<SdTreeSelectModel<TKey>>>;
|
|
51
|
+
readonly draftKeys: _angular_core.WritableSignal<TKey[]>;
|
|
52
|
+
readonly modelKeys: _angular_core.Signal<TKey[]>;
|
|
53
|
+
readonly effectivePlaceholder: _angular_core.Signal<string>;
|
|
54
|
+
readonly effectiveModalTitle: _angular_core.Signal<string>;
|
|
55
|
+
readonly loadedEntities: _angular_core.Signal<T[]>;
|
|
56
|
+
readonly selectedEntities: _angular_core.Signal<T[]>;
|
|
57
|
+
readonly draftEntities: _angular_core.Signal<T[]>;
|
|
58
|
+
readonly displayText: _angular_core.Signal<string>;
|
|
59
|
+
readonly treeOption: _angular_core.Signal<SdTreeComponentOption<T>>;
|
|
60
|
+
open(): void;
|
|
61
|
+
applySelection(): void;
|
|
62
|
+
cancel(): void;
|
|
63
|
+
clear(event?: Event): void;
|
|
64
|
+
onModalClosed(): void;
|
|
65
|
+
onTreeSelection(event: SdTreeSelectionEvent<T>): void;
|
|
66
|
+
filter(value: string): void;
|
|
67
|
+
retry(): void;
|
|
68
|
+
keyOf(item: T): TKey;
|
|
69
|
+
displayEntity(item: T): string;
|
|
70
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdTreeSelect<any, any>, never>;
|
|
71
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdTreeSelect<any, any>, "sd-tree-select", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "modalTitle": { "alias": "modalTitle"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "tree": { "alias": "tree"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "keySelector": { "alias": "keySelector"; "required": false; "isSignal": true; }; "displayField": { "alias": "displayField"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "disabledNode": { "alias": "disabledNode"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "cascade": { "alias": "cascade"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "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; }; "model": { "alias": "model"; "required": false; "isSignal": true; }; }, { "model": "modelChange"; "sdChange": "sdChange"; "sdLoadError": "sdLoadError"; }, ["nodeTemplate"], never, true, never>;
|
|
72
|
+
}
|
|
73
|
+
declare function normalizeTreeSelectKeys<TKey>(value: SdTreeSelectModel<TKey>, multiple: boolean): TKey[];
|
|
74
|
+
|
|
75
|
+
export { SdTreeSelect, SdTreeSelectNodeTemplateDirective, normalizeTreeSelectKeys };
|
|
76
|
+
export type { SdTreeSelectModel, SdTreeSelectTemplateContext };
|
|
@@ -3,6 +3,8 @@ export * from '@sdcorejs/angular/forms/models';
|
|
|
3
3
|
export * from '@sdcorejs/angular/forms/label';
|
|
4
4
|
import * as i1 from '@sdcorejs/angular/forms/input';
|
|
5
5
|
export * from '@sdcorejs/angular/forms/input';
|
|
6
|
+
export * from '@sdcorejs/angular/forms/input-color';
|
|
7
|
+
export * from '@sdcorejs/angular/forms/inline-text';
|
|
6
8
|
import * as i2 from '@sdcorejs/angular/forms/input-number';
|
|
7
9
|
export * from '@sdcorejs/angular/forms/input-number';
|
|
8
10
|
import * as i3 from '@sdcorejs/angular/forms/date';
|
|
@@ -10,14 +12,22 @@ export * from '@sdcorejs/angular/forms/date';
|
|
|
10
12
|
export * from '@sdcorejs/angular/forms/datetime';
|
|
11
13
|
import * as i4 from '@sdcorejs/angular/forms/date-range';
|
|
12
14
|
export * from '@sdcorejs/angular/forms/date-range';
|
|
13
|
-
import * as i5 from '@sdcorejs/angular/forms/
|
|
15
|
+
import * as i5 from '@sdcorejs/angular/forms/time';
|
|
16
|
+
export * from '@sdcorejs/angular/forms/time';
|
|
17
|
+
import * as i6 from '@sdcorejs/angular/forms/time-range';
|
|
18
|
+
export * from '@sdcorejs/angular/forms/time-range';
|
|
19
|
+
import * as i7 from '@sdcorejs/angular/forms/entity-picker';
|
|
20
|
+
export * from '@sdcorejs/angular/forms/entity-picker';
|
|
21
|
+
import * as i8 from '@sdcorejs/angular/forms/tree-select';
|
|
22
|
+
export * from '@sdcorejs/angular/forms/tree-select';
|
|
23
|
+
import * as i9 from '@sdcorejs/angular/forms/select';
|
|
14
24
|
export * from '@sdcorejs/angular/forms/select';
|
|
15
|
-
import * as
|
|
25
|
+
import * as i10 from '@sdcorejs/angular/forms/autocomplete';
|
|
16
26
|
export * from '@sdcorejs/angular/forms/autocomplete';
|
|
17
27
|
export * from '@sdcorejs/angular/forms/switch';
|
|
18
|
-
import * as
|
|
28
|
+
import * as i11 from '@sdcorejs/angular/forms/radio';
|
|
19
29
|
export * from '@sdcorejs/angular/forms/radio';
|
|
20
|
-
import * as
|
|
30
|
+
import * as i12 from '@sdcorejs/angular/forms/textarea';
|
|
21
31
|
export * from '@sdcorejs/angular/forms/textarea';
|
|
22
32
|
export * from '@sdcorejs/angular/forms/chip';
|
|
23
33
|
export * from '@sdcorejs/angular/forms/chip-calendar';
|
|
@@ -26,7 +36,7 @@ import * as i0 from '@angular/core';
|
|
|
26
36
|
|
|
27
37
|
declare class SdFormsModule {
|
|
28
38
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdFormsModule, never>;
|
|
29
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<SdFormsModule, never, [typeof i1.SdInput, typeof i2.SdInputNumber, typeof i3.SdDate, typeof i4.SdDateRange, typeof i5.
|
|
39
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<SdFormsModule, never, [typeof i1.SdInput, typeof i2.SdInputNumber, typeof i3.SdDate, typeof i4.SdDateRange, typeof i5.SdTime, typeof i6.SdTimeRange, typeof i7.SdEntityPicker, typeof i8.SdTreeSelect, typeof i9.SdSelect, typeof i10.SdAutocomplete, typeof i11.SdRadio, typeof i12.SdTextarea], [typeof i1.SdInput, typeof i2.SdInputNumber, typeof i3.SdDate, typeof i4.SdDateRange, typeof i5.SdTime, typeof i6.SdTimeRange, typeof i7.SdEntityPicker, typeof i8.SdTreeSelect, typeof i9.SdSelect, typeof i10.SdAutocomplete, typeof i11.SdRadio, typeof i12.SdTextarea]>;
|
|
30
40
|
static ɵinj: i0.ɵɵInjectorDeclaration<SdFormsModule>;
|
|
31
41
|
}
|
|
32
42
|
|