@qualcomm-ui/angular-core 1.6.0 → 2.0.0
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/fesm2022/qualcomm-ui-angular-core-accordion.mjs +44 -50
- package/fesm2022/qualcomm-ui-angular-core-accordion.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-avatar.mjs +24 -24
- package/fesm2022/qualcomm-ui-angular-core-avatar.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-checkbox.mjs +56 -66
- package/fesm2022/qualcomm-ui-angular-core-checkbox.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-collapsible.mjs +22 -24
- package/fesm2022/qualcomm-ui-angular-core-collapsible.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-collection.mjs +3 -3
- package/fesm2022/qualcomm-ui-angular-core-collection.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-combobox.mjs +116 -152
- package/fesm2022/qualcomm-ui-angular-core-combobox.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-dialog.mjs +64 -78
- package/fesm2022/qualcomm-ui-angular-core-dialog.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-dom.mjs +15 -15
- package/fesm2022/qualcomm-ui-angular-core-dom.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-events.mjs +4 -4
- package/fesm2022/qualcomm-ui-angular-core-events.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-highlight.mjs +9 -15
- package/fesm2022/qualcomm-ui-angular-core-highlight.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-inline-notification.mjs +32 -32
- package/fesm2022/qualcomm-ui-angular-core-inline-notification.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-input.mjs +35 -51
- package/fesm2022/qualcomm-ui-angular-core-input.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-locale.mjs +3 -3
- package/fesm2022/qualcomm-ui-angular-core-locale.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-lorem-ipsum.mjs +11 -23
- package/fesm2022/qualcomm-ui-angular-core-lorem-ipsum.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-machine.mjs +20 -20
- package/fesm2022/qualcomm-ui-angular-core-machine.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-menu.mjs +111 -127
- package/fesm2022/qualcomm-ui-angular-core-menu.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-number-input.mjs +80 -106
- package/fesm2022/qualcomm-ui-angular-core-number-input.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-observers.mjs +3 -3
- package/fesm2022/qualcomm-ui-angular-core-observers.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-pagination.mjs +46 -60
- package/fesm2022/qualcomm-ui-angular-core-pagination.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-password-input.mjs +46 -50
- package/fesm2022/qualcomm-ui-angular-core-password-input.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-popover.mjs +62 -66
- package/fesm2022/qualcomm-ui-angular-core-popover.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-portal.mjs +18 -22
- package/fesm2022/qualcomm-ui-angular-core-portal.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-presence.mjs +18 -24
- package/fesm2022/qualcomm-ui-angular-core-presence.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-progress-ring.mjs +30 -30
- package/fesm2022/qualcomm-ui-angular-core-progress-ring.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-progress.mjs +42 -54
- package/fesm2022/qualcomm-ui-angular-core-progress.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-radio.mjs +72 -80
- package/fesm2022/qualcomm-ui-angular-core-radio.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-segmented-control.mjs +32 -38
- package/fesm2022/qualcomm-ui-angular-core-segmented-control.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-select.mjs +88 -102
- package/fesm2022/qualcomm-ui-angular-core-select.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-side-nav.mjs +44 -58
- package/fesm2022/qualcomm-ui-angular-core-side-nav.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-signals.mjs +2 -2
- package/fesm2022/qualcomm-ui-angular-core-signals.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-slider.mjs +98 -102
- package/fesm2022/qualcomm-ui-angular-core-slider.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-state.mjs +5 -5
- package/fesm2022/qualcomm-ui-angular-core-state.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-switch.mjs +38 -40
- package/fesm2022/qualcomm-ui-angular-core-switch.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-tabs.mjs +51 -65
- package/fesm2022/qualcomm-ui-angular-core-tabs.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-text-area.mjs +34 -34
- package/fesm2022/qualcomm-ui-angular-core-text-area.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-text-input.mjs +37 -37
- package/fesm2022/qualcomm-ui-angular-core-text-input.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-toast.mjs +30 -30
- package/fesm2022/qualcomm-ui-angular-core-toast.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-tooltip.mjs +37 -45
- package/fesm2022/qualcomm-ui-angular-core-tooltip.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-tree.mjs +70 -78
- package/fesm2022/qualcomm-ui-angular-core-tree.mjs.map +1 -1
- package/fesm2022/qualcomm-ui-angular-core-virtual.mjs +5 -5
- package/fesm2022/qualcomm-ui-angular-core-virtual.mjs.map +1 -1
- package/package.json +57 -57
- package/{accordion/index.d.ts → types/qualcomm-ui-angular-core-accordion.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-accordion.d.ts.map +1 -0
- package/{attributes/index.d.ts → types/qualcomm-ui-angular-core-attributes.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-attributes.d.ts.map +1 -0
- package/{avatar/index.d.ts → types/qualcomm-ui-angular-core-avatar.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-avatar.d.ts.map +1 -0
- package/{checkbox/index.d.ts → types/qualcomm-ui-angular-core-checkbox.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-checkbox.d.ts.map +1 -0
- package/{collapsible/index.d.ts → types/qualcomm-ui-angular-core-collapsible.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-collapsible.d.ts.map +1 -0
- package/{collection/index.d.ts → types/qualcomm-ui-angular-core-collection.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-collection.d.ts.map +1 -0
- package/{combobox/index.d.ts → types/qualcomm-ui-angular-core-combobox.d.ts} +2 -2
- package/types/qualcomm-ui-angular-core-combobox.d.ts.map +1 -0
- package/{common/index.d.ts → types/qualcomm-ui-angular-core-common.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-common.d.ts.map +1 -0
- package/{dialog/index.d.ts → types/qualcomm-ui-angular-core-dialog.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-dialog.d.ts.map +1 -0
- package/{dom/index.d.ts → types/qualcomm-ui-angular-core-dom.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-dom.d.ts.map +1 -0
- package/{events/index.d.ts → types/qualcomm-ui-angular-core-events.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-events.d.ts.map +1 -0
- package/{forms/index.d.ts → types/qualcomm-ui-angular-core-forms.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-forms.d.ts.map +1 -0
- package/{highlight/index.d.ts → types/qualcomm-ui-angular-core-highlight.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-highlight.d.ts.map +1 -0
- package/{inline-notification/index.d.ts → types/qualcomm-ui-angular-core-inline-notification.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-inline-notification.d.ts.map +1 -0
- package/{input/index.d.ts → types/qualcomm-ui-angular-core-input.d.ts} +2 -2
- package/types/qualcomm-ui-angular-core-input.d.ts.map +1 -0
- package/{locale/index.d.ts → types/qualcomm-ui-angular-core-locale.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-locale.d.ts.map +1 -0
- package/{lorem-ipsum/index.d.ts → types/qualcomm-ui-angular-core-lorem-ipsum.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-lorem-ipsum.d.ts.map +1 -0
- package/{lucide/index.d.ts → types/qualcomm-ui-angular-core-lucide.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-lucide.d.ts.map +1 -0
- package/{machine/index.d.ts → types/qualcomm-ui-angular-core-machine.d.ts} +2 -2
- package/types/qualcomm-ui-angular-core-machine.d.ts.map +1 -0
- package/{menu/index.d.ts → types/qualcomm-ui-angular-core-menu.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-menu.d.ts.map +1 -0
- package/{number-input/index.d.ts → types/qualcomm-ui-angular-core-number-input.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-number-input.d.ts.map +1 -0
- package/{observers/index.d.ts → types/qualcomm-ui-angular-core-observers.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-observers.d.ts.map +1 -0
- package/{pagination/index.d.ts → types/qualcomm-ui-angular-core-pagination.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-pagination.d.ts.map +1 -0
- package/{password-input/index.d.ts → types/qualcomm-ui-angular-core-password-input.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-password-input.d.ts.map +1 -0
- package/{popover/index.d.ts → types/qualcomm-ui-angular-core-popover.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-popover.d.ts.map +1 -0
- package/{portal/index.d.ts → types/qualcomm-ui-angular-core-portal.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-portal.d.ts.map +1 -0
- package/{presence/index.d.ts → types/qualcomm-ui-angular-core-presence.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-presence.d.ts.map +1 -0
- package/{progress-ring/index.d.ts → types/qualcomm-ui-angular-core-progress-ring.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-progress-ring.d.ts.map +1 -0
- package/{progress/index.d.ts → types/qualcomm-ui-angular-core-progress.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-progress.d.ts.map +1 -0
- package/{radio/index.d.ts → types/qualcomm-ui-angular-core-radio.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-radio.d.ts.map +1 -0
- package/{segmented-control/index.d.ts → types/qualcomm-ui-angular-core-segmented-control.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-segmented-control.d.ts.map +1 -0
- package/{select/index.d.ts → types/qualcomm-ui-angular-core-select.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-select.d.ts.map +1 -0
- package/{side-nav/index.d.ts → types/qualcomm-ui-angular-core-side-nav.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-side-nav.d.ts.map +1 -0
- package/{signals/index.d.ts → types/qualcomm-ui-angular-core-signals.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-signals.d.ts.map +1 -0
- package/{slider/index.d.ts → types/qualcomm-ui-angular-core-slider.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-slider.d.ts.map +1 -0
- package/{state/index.d.ts → types/qualcomm-ui-angular-core-state.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-state.d.ts.map +1 -0
- package/{switch/index.d.ts → types/qualcomm-ui-angular-core-switch.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-switch.d.ts.map +1 -0
- package/{tabs/index.d.ts → types/qualcomm-ui-angular-core-tabs.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-tabs.d.ts.map +1 -0
- package/{text-area/index.d.ts → types/qualcomm-ui-angular-core-text-area.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-text-area.d.ts.map +1 -0
- package/{text-input/index.d.ts → types/qualcomm-ui-angular-core-text-input.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-text-input.d.ts.map +1 -0
- package/{toast/index.d.ts → types/qualcomm-ui-angular-core-toast.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-toast.d.ts.map +1 -0
- package/{tooltip/index.d.ts → types/qualcomm-ui-angular-core-tooltip.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-tooltip.d.ts.map +1 -0
- package/{tree/index.d.ts → types/qualcomm-ui-angular-core-tree.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-tree.d.ts.map +1 -0
- package/{virtual/index.d.ts → types/qualcomm-ui-angular-core-virtual.d.ts} +1 -1
- package/types/qualcomm-ui-angular-core-virtual.d.ts.map +1 -0
- package/types/qualcomm-ui-angular-core.d.ts +3 -0
- package/types/qualcomm-ui-angular-core.d.ts.map +1 -0
- package/accordion/index.d.ts.map +0 -1
- package/attributes/index.d.ts.map +0 -1
- package/avatar/index.d.ts.map +0 -1
- package/checkbox/index.d.ts.map +0 -1
- package/collapsible/index.d.ts.map +0 -1
- package/collection/index.d.ts.map +0 -1
- package/combobox/index.d.ts.map +0 -1
- package/common/index.d.ts.map +0 -1
- package/dialog/index.d.ts.map +0 -1
- package/dom/index.d.ts.map +0 -1
- package/events/index.d.ts.map +0 -1
- package/forms/index.d.ts.map +0 -1
- package/highlight/index.d.ts.map +0 -1
- package/index.d.ts +0 -3
- package/index.d.ts.map +0 -1
- package/inline-notification/index.d.ts.map +0 -1
- package/input/index.d.ts.map +0 -1
- package/locale/index.d.ts.map +0 -1
- package/lorem-ipsum/index.d.ts.map +0 -1
- package/lucide/index.d.ts.map +0 -1
- package/machine/index.d.ts.map +0 -1
- package/menu/index.d.ts.map +0 -1
- package/number-input/index.d.ts.map +0 -1
- package/observers/index.d.ts.map +0 -1
- package/pagination/index.d.ts.map +0 -1
- package/password-input/index.d.ts.map +0 -1
- package/popover/index.d.ts.map +0 -1
- package/portal/index.d.ts.map +0 -1
- package/presence/index.d.ts.map +0 -1
- package/progress/index.d.ts.map +0 -1
- package/progress-ring/index.d.ts.map +0 -1
- package/radio/index.d.ts.map +0 -1
- package/segmented-control/index.d.ts.map +0 -1
- package/select/index.d.ts.map +0 -1
- package/side-nav/index.d.ts.map +0 -1
- package/signals/index.d.ts.map +0 -1
- package/slider/index.d.ts.map +0 -1
- package/state/index.d.ts.map +0 -1
- package/switch/index.d.ts.map +0 -1
- package/tabs/index.d.ts.map +0 -1
- package/text-area/index.d.ts.map +0 -1
- package/text-input/index.d.ts.map +0 -1
- package/toast/index.d.ts.map +0 -1
- package/tooltip/index.d.ts.map +0 -1
- package/tree/index.d.ts.map +0 -1
- package/virtual/index.d.ts.map +0 -1
|
@@ -47,7 +47,7 @@ function initInputFormControl() {
|
|
|
47
47
|
...defaultErrors,
|
|
48
48
|
...(inject(FORM_CONTROL_ERROR_MESSAGE_PROVIDER, { optional: true }) ?? {}),
|
|
49
49
|
};
|
|
50
|
-
const formEventData = signal(null, ...(ngDevMode ? [{ debugName: "formEventData" }] : []));
|
|
50
|
+
const formEventData = signal(null, ...(ngDevMode ? [{ debugName: "formEventData" }] : /* istanbul ignore next */ []));
|
|
51
51
|
function isTemplateDrivenForm() {
|
|
52
52
|
return ngControl instanceof NgModel;
|
|
53
53
|
}
|
|
@@ -83,46 +83,38 @@ class AbstractInputFormControlDirective {
|
|
|
83
83
|
* need to control the checked state of the input. This property will be
|
|
84
84
|
* ignored if you opt into controlled state via form control bindings.
|
|
85
85
|
*/
|
|
86
|
-
defaultValue = input(undefined, ...(ngDevMode ? [{ debugName: "defaultValue" }] : []));
|
|
86
|
+
defaultValue = input(undefined, ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
|
|
87
87
|
/**
|
|
88
88
|
* Controls whether the input is disabled in template-driven forms. When true,
|
|
89
89
|
* prevents user interaction and applies visual styling to indicate the disabled
|
|
90
90
|
* state.
|
|
91
91
|
*/
|
|
92
|
-
disabled = input(undefined, ...(ngDevMode ?
|
|
93
|
-
transform: booleanAttribute,
|
|
94
|
-
}]));
|
|
92
|
+
disabled = input(undefined, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
95
93
|
/**
|
|
96
94
|
* Controls the visual error state of the input. When true, applies semantic error
|
|
97
95
|
* styling to indicate validation failure.
|
|
98
96
|
*/
|
|
99
|
-
invalid = input(undefined, ...(ngDevMode ?
|
|
100
|
-
transform: booleanAttribute,
|
|
101
|
-
}]));
|
|
97
|
+
invalid = input(undefined, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
102
98
|
/**
|
|
103
99
|
* The name of the input field. Useful for form submission.
|
|
104
100
|
*/
|
|
105
|
-
name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : []));
|
|
101
|
+
name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : /* istanbul ignore next */ []));
|
|
106
102
|
/**
|
|
107
103
|
* Whether the input is read-only. When true, prevents user interaction while
|
|
108
104
|
* keeping the input focusable and visible.
|
|
109
105
|
*/
|
|
110
|
-
readOnly = input(undefined, ...(ngDevMode ?
|
|
111
|
-
transform: booleanAttribute,
|
|
112
|
-
}]));
|
|
106
|
+
readOnly = input(undefined, { ...(ngDevMode ? { debugName: "readOnly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
113
107
|
/**
|
|
114
108
|
* Controls whether the input is required in template-driven forms. When
|
|
115
109
|
* true, the input must have a value for form validation to pass.
|
|
116
110
|
*/
|
|
117
|
-
required = input(undefined, ...(ngDevMode ?
|
|
118
|
-
transform: booleanAttribute,
|
|
119
|
-
}]));
|
|
111
|
+
required = input(undefined, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
120
112
|
/* the internal "value" state of the input */
|
|
121
|
-
value = signal("", ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
113
|
+
value = signal("", ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
122
114
|
onDestroy = useOnDestroy();
|
|
123
115
|
injector = inject(Injector);
|
|
124
|
-
formControlStatus = signal(undefined, ...(ngDevMode ? [{ debugName: "formControlStatus" }] : []));
|
|
125
|
-
formSubmitted = signal(false, ...(ngDevMode ? [{ debugName: "formSubmitted" }] : []));
|
|
116
|
+
formControlStatus = signal(undefined, ...(ngDevMode ? [{ debugName: "formControlStatus" }] : /* istanbul ignore next */ []));
|
|
117
|
+
formSubmitted = signal(false, ...(ngDevMode ? [{ debugName: "formSubmitted" }] : /* istanbul ignore next */ []));
|
|
126
118
|
formControlContext = initInputFormControl();
|
|
127
119
|
/**
|
|
128
120
|
* If the component is bound to an Angular AbstractControl, its state wins.
|
|
@@ -139,7 +131,7 @@ class AbstractInputFormControlDirective {
|
|
|
139
131
|
return status === "DISABLED";
|
|
140
132
|
}
|
|
141
133
|
return !!disabled;
|
|
142
|
-
}, ...(ngDevMode ? [{ debugName: "isDisabled" }] : []));
|
|
134
|
+
}, ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
|
|
143
135
|
isInvalid = computed(() => {
|
|
144
136
|
const formEventData = this.formControlContext.formEventData();
|
|
145
137
|
this.formSubmitted();
|
|
@@ -171,7 +163,7 @@ class AbstractInputFormControlDirective {
|
|
|
171
163
|
// "change"
|
|
172
164
|
return dirty && invalid;
|
|
173
165
|
}
|
|
174
|
-
}, ...(ngDevMode ? [{ debugName: "isInvalid" }] : []));
|
|
166
|
+
}, ...(ngDevMode ? [{ debugName: "isInvalid" }] : /* istanbul ignore next */ []));
|
|
175
167
|
isRequired = linkedSignal(() => {
|
|
176
168
|
const control = this.control;
|
|
177
169
|
const required = this.required();
|
|
@@ -183,7 +175,7 @@ class AbstractInputFormControlDirective {
|
|
|
183
175
|
control.hasValidator(Validators.requiredTrue));
|
|
184
176
|
}
|
|
185
177
|
return false;
|
|
186
|
-
}, ...(ngDevMode ? [{ debugName: "isRequired" }] : []));
|
|
178
|
+
}, ...(ngDevMode ? [{ debugName: "isRequired" }] : /* istanbul ignore next */ []));
|
|
187
179
|
constructor() {
|
|
188
180
|
if (this.formControlContext.ngControl) {
|
|
189
181
|
this.formControlContext.ngControl.valueAccessor = this;
|
|
@@ -314,10 +306,10 @@ class AbstractInputFormControlDirective {
|
|
|
314
306
|
setDisabledState(isDisabled) {
|
|
315
307
|
this.isDisabled.set(isDisabled);
|
|
316
308
|
}
|
|
317
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
318
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
309
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AbstractInputFormControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
310
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.2", type: AbstractInputFormControlDirective, isStandalone: true, inputs: { defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
319
311
|
}
|
|
320
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
312
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AbstractInputFormControlDirective, decorators: [{
|
|
321
313
|
type: Directive
|
|
322
314
|
}], ctorParameters: () => [], propDecorators: { defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }] } });
|
|
323
315
|
|
|
@@ -331,46 +323,38 @@ class AbstractBaseListCollectionFormControlDirective {
|
|
|
331
323
|
*
|
|
332
324
|
* @inheritDoc
|
|
333
325
|
*/
|
|
334
|
-
defaultValue = input(undefined, ...(ngDevMode ? [{ debugName: "defaultValue" }] : []));
|
|
326
|
+
defaultValue = input(undefined, ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
|
|
335
327
|
/**
|
|
336
328
|
* Controls whether the input is disabled in template-driven forms. When true,
|
|
337
329
|
* prevents user interaction and applies visual styling to indicate the disabled
|
|
338
330
|
* state.
|
|
339
331
|
*/
|
|
340
|
-
disabled = input(undefined, ...(ngDevMode ?
|
|
341
|
-
transform: booleanAttribute,
|
|
342
|
-
}]));
|
|
332
|
+
disabled = input(undefined, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
343
333
|
/**
|
|
344
334
|
* Controls the visual error state of the input. When true, applies semantic error
|
|
345
335
|
* styling to indicate validation failure.
|
|
346
336
|
*/
|
|
347
|
-
invalid = input(undefined, ...(ngDevMode ?
|
|
348
|
-
transform: booleanAttribute,
|
|
349
|
-
}]));
|
|
337
|
+
invalid = input(undefined, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
350
338
|
/**
|
|
351
339
|
* The name of the input field. Useful for form submission.
|
|
352
340
|
*/
|
|
353
|
-
name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : []));
|
|
341
|
+
name = input(...(ngDevMode ? [undefined, { debugName: "name" }] : /* istanbul ignore next */ []));
|
|
354
342
|
/**
|
|
355
343
|
* Whether the input is read-only. When true, prevents user interaction while
|
|
356
344
|
* keeping the input focusable and visible.
|
|
357
345
|
*/
|
|
358
|
-
readOnly = input(undefined, ...(ngDevMode ?
|
|
359
|
-
transform: booleanAttribute,
|
|
360
|
-
}]));
|
|
346
|
+
readOnly = input(undefined, { ...(ngDevMode ? { debugName: "readOnly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
361
347
|
/**
|
|
362
348
|
* Controls whether the input is required in template-driven forms. When
|
|
363
349
|
* true, the input must have a value for form validation to pass.
|
|
364
350
|
*/
|
|
365
|
-
required = input(undefined, ...(ngDevMode ?
|
|
366
|
-
transform: booleanAttribute,
|
|
367
|
-
}]));
|
|
351
|
+
required = input(undefined, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
368
352
|
/* the internal "value" state of the input */
|
|
369
|
-
value = signal([], ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
353
|
+
value = signal([], ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
370
354
|
onDestroy = useOnDestroy();
|
|
371
355
|
injector = inject(Injector);
|
|
372
|
-
formControlStatus = signal(undefined, ...(ngDevMode ? [{ debugName: "formControlStatus" }] : []));
|
|
373
|
-
formSubmitted = signal(false, ...(ngDevMode ? [{ debugName: "formSubmitted" }] : []));
|
|
356
|
+
formControlStatus = signal(undefined, ...(ngDevMode ? [{ debugName: "formControlStatus" }] : /* istanbul ignore next */ []));
|
|
357
|
+
formSubmitted = signal(false, ...(ngDevMode ? [{ debugName: "formSubmitted" }] : /* istanbul ignore next */ []));
|
|
374
358
|
formControlContext = initInputFormControl();
|
|
375
359
|
/**
|
|
376
360
|
* If the component is bound to an Angular AbstractControl, its state wins.
|
|
@@ -387,7 +371,7 @@ class AbstractBaseListCollectionFormControlDirective {
|
|
|
387
371
|
return status === "DISABLED";
|
|
388
372
|
}
|
|
389
373
|
return !!disabled;
|
|
390
|
-
}, ...(ngDevMode ? [{ debugName: "isDisabled" }] : []));
|
|
374
|
+
}, ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
|
|
391
375
|
isInvalid = computed(() => {
|
|
392
376
|
const formEventData = this.formControlContext.formEventData();
|
|
393
377
|
this.formSubmitted();
|
|
@@ -419,7 +403,7 @@ class AbstractBaseListCollectionFormControlDirective {
|
|
|
419
403
|
// "change"
|
|
420
404
|
return dirty && invalid;
|
|
421
405
|
}
|
|
422
|
-
}, ...(ngDevMode ? [{ debugName: "isInvalid" }] : []));
|
|
406
|
+
}, ...(ngDevMode ? [{ debugName: "isInvalid" }] : /* istanbul ignore next */ []));
|
|
423
407
|
isRequired = linkedSignal(() => {
|
|
424
408
|
const control = this.control;
|
|
425
409
|
const required = this.required();
|
|
@@ -431,7 +415,7 @@ class AbstractBaseListCollectionFormControlDirective {
|
|
|
431
415
|
control.hasValidator(Validators.requiredTrue));
|
|
432
416
|
}
|
|
433
417
|
return false;
|
|
434
|
-
}, ...(ngDevMode ? [{ debugName: "isRequired" }] : []));
|
|
418
|
+
}, ...(ngDevMode ? [{ debugName: "isRequired" }] : /* istanbul ignore next */ []));
|
|
435
419
|
constructor() {
|
|
436
420
|
if (this.formControlContext.ngControl) {
|
|
437
421
|
this.formControlContext.ngControl.valueAccessor = this;
|
|
@@ -577,10 +561,10 @@ class AbstractBaseListCollectionFormControlDirective {
|
|
|
577
561
|
setDisabledState(isDisabled) {
|
|
578
562
|
this.isDisabled.set(isDisabled);
|
|
579
563
|
}
|
|
580
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
581
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
564
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AbstractBaseListCollectionFormControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
565
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.2", type: AbstractBaseListCollectionFormControlDirective, isStandalone: true, inputs: { defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
582
566
|
}
|
|
583
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
567
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AbstractBaseListCollectionFormControlDirective, decorators: [{
|
|
584
568
|
type: Directive
|
|
585
569
|
}], ctorParameters: () => [], propDecorators: { defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }] } });
|
|
586
570
|
class AbstractListCollectionFormControlDirective extends AbstractBaseListCollectionFormControlDirective {
|
|
@@ -589,11 +573,11 @@ class AbstractListCollectionFormControlDirective extends AbstractBaseListCollect
|
|
|
589
573
|
*
|
|
590
574
|
* @inheritDoc
|
|
591
575
|
*/
|
|
592
|
-
collection = input.required(...(ngDevMode ? [{ debugName: "collection" }] : []));
|
|
593
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
594
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
576
|
+
collection = input.required(...(ngDevMode ? [{ debugName: "collection" }] : /* istanbul ignore next */ []));
|
|
577
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AbstractListCollectionFormControlDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
578
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.2", type: AbstractListCollectionFormControlDirective, isStandalone: true, inputs: { collection: { classPropertyName: "collection", publicName: "collection", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
|
|
595
579
|
}
|
|
596
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
580
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AbstractListCollectionFormControlDirective, decorators: [{
|
|
597
581
|
type: Directive
|
|
598
582
|
}], propDecorators: { collection: [{ type: i0.Input, args: [{ isSignal: true, alias: "collection", required: true }] }] } });
|
|
599
583
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qualcomm-ui-angular-core-input.mjs","sources":["../../src/input/input-form-control-provider.ts","../../src/input/abstract-input-form-control.directive.ts","../../src/input/abstract-list-collection-form-control.directive.ts","../../src/input/qualcomm-ui-angular-core-input.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n computed,\n inject,\n InjectionToken,\n type Signal,\n signal,\n type WritableSignal,\n} from \"@angular/core\"\nimport {NgControl, NgModel} from \"@angular/forms\"\n\nimport type {FormEventData} from \"@qualcomm-ui/angular-core/forms\"\n\nexport interface InputFormControlContext<T> {\n control?: NgControl[\"control\"] | null\n /**\n * Computed error message from the underlying control.\n */\n errorText: Signal<string | undefined | null>\n formEventData: WritableSignal<FormEventData<T | undefined> | null>\n /** `true` when used with reactive-forms (`formControl`, `formControlName`). */\n isReactiveForm: () => boolean\n /** `true` when used with template-driven forms (`[(ngModel)]`, `ngModel`). */\n isTemplateDrivenForm: () => boolean\n ngControl: NgControl | null\n}\n\nexport type FormControlKnownErrors = Record<\n string,\n ((error: any) => string) | undefined\n>\n\nconst defaultErrors: FormControlKnownErrors = {\n email: () => \"Invalid email\",\n max: (err) => `Max: ${err.max}`,\n maxLength: (err) => `Max length: ${err.maxLength}`,\n min: (err) => `Min: ${err.min}`,\n minLength: (err) => `Min length: ${err.requiredLength}`,\n pattern: () => \"Invalid format\",\n required: () => \"This field is required\",\n requiredTrue: () => \"Required\",\n}\n\n/**\n * Override the default error messages for known form control errors.\n *\n * The defaults are as follows:\n * ```angular-html\n * const defaultKnownErrors: FormControlKnownErrors = {\n * email: () => \"Invalid email\",\n * max: (err) => `Max: ${err.max}`,\n * maxLength: (err) => `Max length: ${err.maxLength}`,\n * min: (err) => `Min: ${err.min}`,\n * minLength: (err) => `Min length: ${err.requiredLength}`,\n * pattern: () => \"Invalid format\",\n * required: () => \"This field is required\",\n * requiredTrue: () => \"This field is required\",\n * }\n * ```\n */\nexport const FORM_CONTROL_ERROR_MESSAGE_PROVIDER = new InjectionToken<\n Partial<FormControlKnownErrors>\n>(\"FormControlErrorProvider\")\n\nexport const INPUT_FORM_CONTROL_CONTEXT = new InjectionToken<\n InputFormControlContext<any>\n>(\"InputFormControl\")\n\nexport function initInputFormControl<T = string>(): InputFormControlContext<T> {\n const ngControl: NgControl | null = inject(NgControl, {\n optional: true,\n self: true,\n })\n\n const knownErrors: FormControlKnownErrors = {\n ...defaultErrors,\n ...(inject(FORM_CONTROL_ERROR_MESSAGE_PROVIDER, {optional: true}) ?? {}),\n }\n\n const formEventData = signal<FormEventData<T | undefined> | null>(null)\n\n function isTemplateDrivenForm(): boolean {\n return ngControl instanceof NgModel\n }\n\n function isReactiveForm(): boolean {\n // Any NgControl that is *not* NgModel belongs to the reactive-forms package\n return !!ngControl && !isTemplateDrivenForm()\n }\n\n return {\n control: ngControl?.control ?? null,\n errorText: computed(() => {\n // make this reactive so that the error message is updated when the form state\n // changes.\n formEventData()\n const errors = ngControl?.control?.errors ?? {}\n const [errorKey, errorValue] = Object.entries(errors)[0] ?? []\n if (errorKey && knownErrors[errorKey]) {\n return knownErrors[errorKey](errorValue)\n }\n return errors[\"errorText\"] ?? errors[\"error\"] ?? null\n }),\n formEventData,\n isReactiveForm,\n isTemplateDrivenForm,\n ngControl,\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n type OnInit,\n runInInjectionContext,\n signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n type FormControlStatus,\n FormGroupDirective,\n FormSubmittedEvent,\n NgForm,\n PristineChangeEvent,\n Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractInputFormControlDirective\n implements ControlValueAccessor, OnInit\n{\n /**\n * The initial state of the input when rendered. Use when you don't\n * need to control the checked state of the input. This property will be\n * ignored if you opt into controlled state via form control bindings.\n */\n readonly defaultValue = input<string | undefined>(undefined)\n\n /**\n * Controls whether the input is disabled in template-driven forms. When true,\n * prevents user interaction and applies visual styling to indicate the disabled\n * state.\n */\n readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls the visual error state of the input. When true, applies semantic error\n * styling to indicate validation failure.\n */\n readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * The name of the input field. Useful for form submission.\n */\n readonly name = input<string | undefined>()\n\n /**\n * Whether the input is read-only. When true, prevents user interaction while\n * keeping the input focusable and visible.\n */\n readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls whether the input is required in template-driven forms. When\n * true, the input must have a value for form validation to pass.\n */\n readonly required = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /* the internal \"value\" state of the input */\n protected readonly value = signal<string>(\"\")\n protected readonly onDestroy = useOnDestroy()\n protected readonly injector = inject(Injector)\n protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n undefined,\n )\n protected readonly formSubmitted = signal(false)\n\n readonly formControlContext = initInputFormControl()\n\n /**\n * If the component is bound to an Angular AbstractControl, its state wins.\n * If not, fall back to the host attribute.\n */\n protected readonly isDisabled = linkedSignal(() => {\n /**\n * When the component is bound to any AbstractControl, status is guaranteed to\n * be non-undefined.\n */\n const status = this.formControlStatus()\n const disabled = this.disabled()\n if (status !== undefined) {\n return status === \"DISABLED\"\n }\n\n return !!disabled\n })\n\n readonly isInvalid = computed(() => {\n const formEventData = this.formControlContext.formEventData()\n this.formSubmitted()\n const isInvalidDefined = defined(this.invalid())\n const invalidProp = this.invalid() || false\n if (!this.control) {\n return invalidProp\n }\n\n let invalid, touched, dirty\n\n if (this.formControlContext.isTemplateDrivenForm()) {\n invalid = isInvalidDefined ? invalidProp : this.control.invalid\n touched = this.control.touched\n dirty = this.control.dirty\n } else if (formEventData) {\n invalid = formEventData.invalid\n touched = formEventData.touched\n dirty = formEventData.dirty\n } else {\n return invalidProp\n }\n\n switch (this.control.updateOn) {\n case \"submit\":\n return invalid\n case \"blur\":\n return invalid && touched\n default:\n // \"change\"\n return dirty && invalid\n }\n })\n\n readonly isRequired = linkedSignal(() => {\n const control = this.control\n const required = this.required()\n if (!control || !this.formControlContext.isReactiveForm()) {\n return required\n }\n\n if (typeof control.hasValidator === \"function\") {\n return (\n control.hasValidator(Validators.required) ||\n control.hasValidator(Validators.requiredTrue)\n )\n }\n return false\n })\n\n constructor() {\n if (this.formControlContext.ngControl) {\n this.formControlContext.ngControl.valueAccessor = this\n this.value.set(this.formControlContext.ngControl.control?.value || \"\")\n }\n\n afterNextRender(() => {\n if (\n isDefined(this.required()) &&\n this.formControlContext.isReactiveForm() &&\n isDevMode()\n ) {\n console.warn(\n \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n )\n }\n })\n\n effect(() => {\n const required = this.required()\n if (this.control && this.formControlContext.isTemplateDrivenForm()) {\n if (required) {\n this.control.addValidators(Validators.required)\n } else if (this.control.hasValidator(Validators.required)) {\n this.control.removeValidators(Validators.required)\n }\n }\n })\n }\n\n ngOnInit() {\n // Ensure the form control receives the initial value\n const defaultValue = this.defaultValue()\n if (!this.control && defaultValue) {\n this.value.set(defaultValue)\n } else if (this.control) {\n const subscription = this.control.statusChanges.subscribe((status) => {\n this.formControlStatus.set(status)\n })\n this.onDestroy(() => {\n subscription.unsubscribe()\n })\n\n const parent = this.getParentForm()\n\n runInInjectionContext(this.injector, () => {\n if (this.control) {\n const formSignal = allEventsSignal<string | undefined>(this.control)\n effect(() => {\n this.formControlContext.formEventData.set(formSignal())\n })\n }\n\n if (parent) {\n let prevPristine = this.control?.pristine || false\n parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof PristineChangeEvent) {\n if (event.pristine && !prevPristine) {\n // if this event fires with pristine status and the control was\n // previously not pristine, this means that the form was reset. There\n // isn't another way to determine form resets programmatically,\n // unfortunately.\n this.formSubmitted.set(false)\n }\n prevPristine = event.pristine\n } else if (event instanceof FormSubmittedEvent) {\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n }\n })\n parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.formControlContext.isReactiveForm()) {\n // already accounted for in the above event subscription.\n return\n }\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n })\n }\n })\n }\n }\n\n /** Convenience access to the underlying AbstractControl (can be null). */\n get control(): AbstractControl | null {\n return this.formControlContext.ngControl?.control ?? null\n }\n\n /**\n * Used to subscribe to form submit events.\n */\n private getParentForm(): NgForm | FormGroupDirective | null {\n if (!this.control) {\n return null\n }\n\n // Try to find NgForm first\n try {\n const ngForm = this.injector.get(NgForm, null)\n if (ngForm) {\n return ngForm\n }\n } catch {}\n\n // Fall back to FormGroupDirective\n try {\n const formGroupDirective = this.injector.get(FormGroupDirective, null)\n if (formGroupDirective) {\n return formGroupDirective\n }\n } catch {}\n\n return null\n }\n\n /*\n * Control value accessor methods\n */\n writeValue(value: any): void {\n this.value.set(value)\n }\n\n // placeholder\n protected onChange = (_value: any) => {}\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = (_value) => {\n fn(_value)\n this.value.set(_value)\n }\n }\n\n protected onTouched = () => {}\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /**\n * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n * and Template forms.\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled)\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n type OnInit,\n runInInjectionContext,\n signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n type FormControlStatus,\n FormGroupDirective,\n FormSubmittedEvent,\n NgForm,\n PristineChangeEvent,\n Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {\n type CollectionItem,\n ListCollection,\n} from \"@qualcomm-ui/utils/collection\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractBaseListCollectionFormControlDirective<\n T extends CollectionItem,\n >\n implements ControlValueAccessor, OnInit\n{\n /**\n * The initial value of the input when rendered. Use when you don't need to\n * control the value of the input. This property will be ignored if you\n * opt into controlled state via form control bindings.\n *\n * @inheritDoc\n */\n readonly defaultValue = input<T[] | undefined>(undefined)\n\n /**\n * Controls whether the input is disabled in template-driven forms. When true,\n * prevents user interaction and applies visual styling to indicate the disabled\n * state.\n */\n readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls the visual error state of the input. When true, applies semantic error\n * styling to indicate validation failure.\n */\n readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * The name of the input field. Useful for form submission.\n */\n readonly name = input<string | undefined>()\n\n /**\n * Whether the input is read-only. When true, prevents user interaction while\n * keeping the input focusable and visible.\n */\n readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls whether the input is required in template-driven forms. When\n * true, the input must have a value for form validation to pass.\n */\n readonly required = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /* the internal \"value\" state of the input */\n protected readonly value = signal<T[]>([])\n protected readonly onDestroy = useOnDestroy()\n protected readonly injector = inject(Injector)\n protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n undefined,\n )\n protected readonly formSubmitted = signal(false)\n\n readonly formControlContext = initInputFormControl<T[]>()\n\n /**\n * If the component is bound to an Angular AbstractControl, its state wins.\n * If not, fall back to the host attribute.\n */\n protected readonly isDisabled = linkedSignal(() => {\n /**\n * When the component is bound to any AbstractControl, status is guaranteed to\n * be non-undefined.\n */\n const status = this.formControlStatus()\n const disabled = this.disabled()\n if (status !== undefined) {\n return status === \"DISABLED\"\n }\n\n return !!disabled\n })\n\n readonly isInvalid = computed(() => {\n const formEventData = this.formControlContext.formEventData()\n this.formSubmitted()\n const isInvalidDefined = defined(this.invalid())\n const invalidProp = this.invalid() || false\n if (!this.control) {\n return invalidProp\n }\n\n let invalid, touched, dirty\n\n if (this.formControlContext.isTemplateDrivenForm()) {\n invalid = isInvalidDefined ? invalidProp : this.control.invalid\n touched = this.control.touched\n dirty = this.control.dirty\n } else if (formEventData) {\n invalid = formEventData.invalid\n touched = formEventData.touched\n dirty = formEventData.dirty\n } else {\n return invalidProp\n }\n\n switch (this.control.updateOn) {\n case \"submit\":\n return invalid\n case \"blur\":\n return invalid && touched\n default:\n // \"change\"\n return dirty && invalid\n }\n })\n\n readonly isRequired = linkedSignal(() => {\n const control = this.control\n const required = this.required()\n if (!control || !this.formControlContext.isReactiveForm()) {\n return required\n }\n\n if (typeof control.hasValidator === \"function\") {\n return (\n control.hasValidator(Validators.required) ||\n control.hasValidator(Validators.requiredTrue)\n )\n }\n return false\n })\n\n constructor() {\n if (this.formControlContext.ngControl) {\n this.formControlContext.ngControl.valueAccessor = this\n this.value.set(this.formControlContext.ngControl.control?.value || [])\n }\n\n afterNextRender(() => {\n if (\n isDefined(this.required()) &&\n this.formControlContext.isReactiveForm() &&\n isDevMode()\n ) {\n console.warn(\n \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n )\n }\n })\n\n effect(() => {\n const required = this.required()\n const isRequired = this.isRequired()\n if (!this.control) {\n return\n }\n if (this.formControlContext.isTemplateDrivenForm()) {\n if (required) {\n this.control.addValidators([\n Validators.required,\n Validators.minLength(1),\n ])\n } else if (\n this.control.hasValidator(Validators.required) &&\n this.control.hasValidator(Validators.minLength(1))\n ) {\n this.control.removeValidators([\n Validators.required,\n Validators.minLength(1),\n ])\n }\n } else if (isRequired) {\n this.control.addValidators(Validators.minLength(1))\n }\n })\n }\n\n ngOnInit() {\n // Ensure the form control receives the initial value\n const defaultValue = this.defaultValue()\n if (!this.control) {\n if (defaultValue) {\n this.value.set(defaultValue)\n }\n return\n }\n\n const subscription = this.control.statusChanges.subscribe((status) => {\n this.formControlStatus.set(status)\n })\n this.onDestroy(() => {\n subscription.unsubscribe()\n })\n\n const parent = this.getParentForm()\n\n runInInjectionContext(this.injector, () => {\n if (this.control) {\n const formSignal = allEventsSignal<T[] | undefined>(this.control)\n effect(() => {\n this.formControlContext.formEventData.set(formSignal())\n })\n }\n\n if (parent) {\n let prevPristine = this.control?.pristine || false\n parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof PristineChangeEvent) {\n if (event.pristine && !prevPristine) {\n // if this event fires with pristine status and the control was\n // previously not pristine, this means that the form was reset. There\n // isn't another way to determine form resets programmatically,\n // unfortunately.\n this.formSubmitted.set(false)\n }\n prevPristine = event.pristine\n } else if (event instanceof FormSubmittedEvent) {\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n }\n })\n parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.formControlContext.isReactiveForm()) {\n // already accounted for in the above event subscription.\n return\n }\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n })\n }\n })\n }\n\n /** Convenience access to the underlying AbstractControl (can be null). */\n get control(): AbstractControl | null {\n return this.formControlContext.ngControl?.control ?? null\n }\n\n /**\n * Used to subscribe to form submit events.\n */\n private getParentForm(): NgForm | FormGroupDirective | null {\n if (!this.control) {\n return null\n }\n\n // Try to find NgForm first\n try {\n const ngForm = this.injector.get(NgForm, null)\n if (ngForm) {\n return ngForm\n }\n } catch {}\n\n // Fall back to FormGroupDirective\n try {\n const formGroupDirective = this.injector.get(FormGroupDirective, null)\n if (formGroupDirective) {\n return formGroupDirective\n }\n } catch {}\n\n return null\n }\n\n /*\n * Control value accessor methods\n */\n writeValue(value: any): void {\n this.value.set(value ?? [])\n }\n\n // placeholder\n protected onChange = (_value: any) => {}\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = (_value) => {\n fn(_value)\n this.value.set(_value ?? [])\n }\n }\n\n protected onTouched = () => {}\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /**\n * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n * and Template forms.\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled)\n }\n}\n\n@Directive()\nexport abstract class AbstractListCollectionFormControlDirective<\n T extends CollectionItem,\n> extends AbstractBaseListCollectionFormControlDirective<T> {\n /**\n * The item collection\n *\n * @inheritDoc\n */\n readonly collection = input.required<ListCollection<T>>()\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"qualcomm-ui-angular-core-input.mjs","sources":["../../src/input/input-form-control-provider.ts","../../src/input/abstract-input-form-control.directive.ts","../../src/input/abstract-list-collection-form-control.directive.ts","../../src/input/qualcomm-ui-angular-core-input.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n computed,\n inject,\n InjectionToken,\n type Signal,\n signal,\n type WritableSignal,\n} from \"@angular/core\"\nimport {NgControl, NgModel} from \"@angular/forms\"\n\nimport type {FormEventData} from \"@qualcomm-ui/angular-core/forms\"\n\nexport interface InputFormControlContext<T> {\n control?: NgControl[\"control\"] | null\n /**\n * Computed error message from the underlying control.\n */\n errorText: Signal<string | undefined | null>\n formEventData: WritableSignal<FormEventData<T | undefined> | null>\n /** `true` when used with reactive-forms (`formControl`, `formControlName`). */\n isReactiveForm: () => boolean\n /** `true` when used with template-driven forms (`[(ngModel)]`, `ngModel`). */\n isTemplateDrivenForm: () => boolean\n ngControl: NgControl | null\n}\n\nexport type FormControlKnownErrors = Record<\n string,\n ((error: any) => string) | undefined\n>\n\nconst defaultErrors: FormControlKnownErrors = {\n email: () => \"Invalid email\",\n max: (err) => `Max: ${err.max}`,\n maxLength: (err) => `Max length: ${err.maxLength}`,\n min: (err) => `Min: ${err.min}`,\n minLength: (err) => `Min length: ${err.requiredLength}`,\n pattern: () => \"Invalid format\",\n required: () => \"This field is required\",\n requiredTrue: () => \"Required\",\n}\n\n/**\n * Override the default error messages for known form control errors.\n *\n * The defaults are as follows:\n * ```angular-html\n * const defaultKnownErrors: FormControlKnownErrors = {\n * email: () => \"Invalid email\",\n * max: (err) => `Max: ${err.max}`,\n * maxLength: (err) => `Max length: ${err.maxLength}`,\n * min: (err) => `Min: ${err.min}`,\n * minLength: (err) => `Min length: ${err.requiredLength}`,\n * pattern: () => \"Invalid format\",\n * required: () => \"This field is required\",\n * requiredTrue: () => \"This field is required\",\n * }\n * ```\n */\nexport const FORM_CONTROL_ERROR_MESSAGE_PROVIDER = new InjectionToken<\n Partial<FormControlKnownErrors>\n>(\"FormControlErrorProvider\")\n\nexport const INPUT_FORM_CONTROL_CONTEXT = new InjectionToken<\n InputFormControlContext<any>\n>(\"InputFormControl\")\n\nexport function initInputFormControl<T = string>(): InputFormControlContext<T> {\n const ngControl: NgControl | null = inject(NgControl, {\n optional: true,\n self: true,\n })\n\n const knownErrors: FormControlKnownErrors = {\n ...defaultErrors,\n ...(inject(FORM_CONTROL_ERROR_MESSAGE_PROVIDER, {optional: true}) ?? {}),\n }\n\n const formEventData = signal<FormEventData<T | undefined> | null>(null)\n\n function isTemplateDrivenForm(): boolean {\n return ngControl instanceof NgModel\n }\n\n function isReactiveForm(): boolean {\n // Any NgControl that is *not* NgModel belongs to the reactive-forms package\n return !!ngControl && !isTemplateDrivenForm()\n }\n\n return {\n control: ngControl?.control ?? null,\n errorText: computed(() => {\n // make this reactive so that the error message is updated when the form state\n // changes.\n formEventData()\n const errors = ngControl?.control?.errors ?? {}\n const [errorKey, errorValue] = Object.entries(errors)[0] ?? []\n if (errorKey && knownErrors[errorKey]) {\n return knownErrors[errorKey](errorValue)\n }\n return errors[\"errorText\"] ?? errors[\"error\"] ?? null\n }),\n formEventData,\n isReactiveForm,\n isTemplateDrivenForm,\n ngControl,\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n type OnInit,\n runInInjectionContext,\n signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n type FormControlStatus,\n FormGroupDirective,\n FormSubmittedEvent,\n NgForm,\n PristineChangeEvent,\n Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractInputFormControlDirective\n implements ControlValueAccessor, OnInit\n{\n /**\n * The initial state of the input when rendered. Use when you don't\n * need to control the checked state of the input. This property will be\n * ignored if you opt into controlled state via form control bindings.\n */\n readonly defaultValue = input<string | undefined>(undefined)\n\n /**\n * Controls whether the input is disabled in template-driven forms. When true,\n * prevents user interaction and applies visual styling to indicate the disabled\n * state.\n */\n readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls the visual error state of the input. When true, applies semantic error\n * styling to indicate validation failure.\n */\n readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * The name of the input field. Useful for form submission.\n */\n readonly name = input<string | undefined>()\n\n /**\n * Whether the input is read-only. When true, prevents user interaction while\n * keeping the input focusable and visible.\n */\n readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls whether the input is required in template-driven forms. When\n * true, the input must have a value for form validation to pass.\n */\n readonly required = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /* the internal \"value\" state of the input */\n protected readonly value = signal<string>(\"\")\n protected readonly onDestroy = useOnDestroy()\n protected readonly injector = inject(Injector)\n protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n undefined,\n )\n protected readonly formSubmitted = signal(false)\n\n readonly formControlContext = initInputFormControl()\n\n /**\n * If the component is bound to an Angular AbstractControl, its state wins.\n * If not, fall back to the host attribute.\n */\n protected readonly isDisabled = linkedSignal(() => {\n /**\n * When the component is bound to any AbstractControl, status is guaranteed to\n * be non-undefined.\n */\n const status = this.formControlStatus()\n const disabled = this.disabled()\n if (status !== undefined) {\n return status === \"DISABLED\"\n }\n\n return !!disabled\n })\n\n readonly isInvalid = computed(() => {\n const formEventData = this.formControlContext.formEventData()\n this.formSubmitted()\n const isInvalidDefined = defined(this.invalid())\n const invalidProp = this.invalid() || false\n if (!this.control) {\n return invalidProp\n }\n\n let invalid, touched, dirty\n\n if (this.formControlContext.isTemplateDrivenForm()) {\n invalid = isInvalidDefined ? invalidProp : this.control.invalid\n touched = this.control.touched\n dirty = this.control.dirty\n } else if (formEventData) {\n invalid = formEventData.invalid\n touched = formEventData.touched\n dirty = formEventData.dirty\n } else {\n return invalidProp\n }\n\n switch (this.control.updateOn) {\n case \"submit\":\n return invalid\n case \"blur\":\n return invalid && touched\n default:\n // \"change\"\n return dirty && invalid\n }\n })\n\n readonly isRequired = linkedSignal(() => {\n const control = this.control\n const required = this.required()\n if (!control || !this.formControlContext.isReactiveForm()) {\n return required\n }\n\n if (typeof control.hasValidator === \"function\") {\n return (\n control.hasValidator(Validators.required) ||\n control.hasValidator(Validators.requiredTrue)\n )\n }\n return false\n })\n\n constructor() {\n if (this.formControlContext.ngControl) {\n this.formControlContext.ngControl.valueAccessor = this\n this.value.set(this.formControlContext.ngControl.control?.value || \"\")\n }\n\n afterNextRender(() => {\n if (\n isDefined(this.required()) &&\n this.formControlContext.isReactiveForm() &&\n isDevMode()\n ) {\n console.warn(\n \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n )\n }\n })\n\n effect(() => {\n const required = this.required()\n if (this.control && this.formControlContext.isTemplateDrivenForm()) {\n if (required) {\n this.control.addValidators(Validators.required)\n } else if (this.control.hasValidator(Validators.required)) {\n this.control.removeValidators(Validators.required)\n }\n }\n })\n }\n\n ngOnInit() {\n // Ensure the form control receives the initial value\n const defaultValue = this.defaultValue()\n if (!this.control && defaultValue) {\n this.value.set(defaultValue)\n } else if (this.control) {\n const subscription = this.control.statusChanges.subscribe((status) => {\n this.formControlStatus.set(status)\n })\n this.onDestroy(() => {\n subscription.unsubscribe()\n })\n\n const parent = this.getParentForm()\n\n runInInjectionContext(this.injector, () => {\n if (this.control) {\n const formSignal = allEventsSignal<string | undefined>(this.control)\n effect(() => {\n this.formControlContext.formEventData.set(formSignal())\n })\n }\n\n if (parent) {\n let prevPristine = this.control?.pristine || false\n parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof PristineChangeEvent) {\n if (event.pristine && !prevPristine) {\n // if this event fires with pristine status and the control was\n // previously not pristine, this means that the form was reset. There\n // isn't another way to determine form resets programmatically,\n // unfortunately.\n this.formSubmitted.set(false)\n }\n prevPristine = event.pristine\n } else if (event instanceof FormSubmittedEvent) {\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n }\n })\n parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.formControlContext.isReactiveForm()) {\n // already accounted for in the above event subscription.\n return\n }\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n })\n }\n })\n }\n }\n\n /** Convenience access to the underlying AbstractControl (can be null). */\n get control(): AbstractControl | null {\n return this.formControlContext.ngControl?.control ?? null\n }\n\n /**\n * Used to subscribe to form submit events.\n */\n private getParentForm(): NgForm | FormGroupDirective | null {\n if (!this.control) {\n return null\n }\n\n // Try to find NgForm first\n try {\n const ngForm = this.injector.get(NgForm, null)\n if (ngForm) {\n return ngForm\n }\n } catch {}\n\n // Fall back to FormGroupDirective\n try {\n const formGroupDirective = this.injector.get(FormGroupDirective, null)\n if (formGroupDirective) {\n return formGroupDirective\n }\n } catch {}\n\n return null\n }\n\n /*\n * Control value accessor methods\n */\n writeValue(value: any): void {\n this.value.set(value)\n }\n\n // placeholder\n protected onChange = (_value: any) => {}\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = (_value) => {\n fn(_value)\n this.value.set(_value)\n }\n }\n\n protected onTouched = () => {}\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /**\n * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n * and Template forms.\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled)\n }\n}\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n effect,\n inject,\n Injector,\n input,\n isDevMode,\n linkedSignal,\n type OnInit,\n runInInjectionContext,\n signal,\n} from \"@angular/core\"\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\"\nimport {\n type AbstractControl,\n type ControlValueAccessor,\n type FormControlStatus,\n FormGroupDirective,\n FormSubmittedEvent,\n NgForm,\n PristineChangeEvent,\n Validators,\n} from \"@angular/forms\"\n\nimport {useOnDestroy} from \"@qualcomm-ui/angular-core/common\"\nimport {allEventsSignal} from \"@qualcomm-ui/angular-core/forms\"\nimport type {Booleanish} from \"@qualcomm-ui/utils/coercion\"\nimport {\n type CollectionItem,\n ListCollection,\n} from \"@qualcomm-ui/utils/collection\"\nimport {defined, isDefined} from \"@qualcomm-ui/utils/guard\"\n\nimport {initInputFormControl} from \"./input-form-control-provider\"\n\n@Directive()\nexport abstract class AbstractBaseListCollectionFormControlDirective<\n T extends CollectionItem,\n >\n implements ControlValueAccessor, OnInit\n{\n /**\n * The initial value of the input when rendered. Use when you don't need to\n * control the value of the input. This property will be ignored if you\n * opt into controlled state via form control bindings.\n *\n * @inheritDoc\n */\n readonly defaultValue = input<T[] | undefined>(undefined)\n\n /**\n * Controls whether the input is disabled in template-driven forms. When true,\n * prevents user interaction and applies visual styling to indicate the disabled\n * state.\n */\n readonly disabled = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls the visual error state of the input. When true, applies semantic error\n * styling to indicate validation failure.\n */\n readonly invalid = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * The name of the input field. Useful for form submission.\n */\n readonly name = input<string | undefined>()\n\n /**\n * Whether the input is read-only. When true, prevents user interaction while\n * keeping the input focusable and visible.\n */\n readonly readOnly = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Controls whether the input is required in template-driven forms. When\n * true, the input must have a value for form validation to pass.\n */\n readonly required = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /* the internal \"value\" state of the input */\n protected readonly value = signal<T[]>([])\n protected readonly onDestroy = useOnDestroy()\n protected readonly injector = inject(Injector)\n protected readonly formControlStatus = signal<FormControlStatus | undefined>(\n undefined,\n )\n protected readonly formSubmitted = signal(false)\n\n readonly formControlContext = initInputFormControl<T[]>()\n\n /**\n * If the component is bound to an Angular AbstractControl, its state wins.\n * If not, fall back to the host attribute.\n */\n protected readonly isDisabled = linkedSignal(() => {\n /**\n * When the component is bound to any AbstractControl, status is guaranteed to\n * be non-undefined.\n */\n const status = this.formControlStatus()\n const disabled = this.disabled()\n if (status !== undefined) {\n return status === \"DISABLED\"\n }\n\n return !!disabled\n })\n\n readonly isInvalid = computed(() => {\n const formEventData = this.formControlContext.formEventData()\n this.formSubmitted()\n const isInvalidDefined = defined(this.invalid())\n const invalidProp = this.invalid() || false\n if (!this.control) {\n return invalidProp\n }\n\n let invalid, touched, dirty\n\n if (this.formControlContext.isTemplateDrivenForm()) {\n invalid = isInvalidDefined ? invalidProp : this.control.invalid\n touched = this.control.touched\n dirty = this.control.dirty\n } else if (formEventData) {\n invalid = formEventData.invalid\n touched = formEventData.touched\n dirty = formEventData.dirty\n } else {\n return invalidProp\n }\n\n switch (this.control.updateOn) {\n case \"submit\":\n return invalid\n case \"blur\":\n return invalid && touched\n default:\n // \"change\"\n return dirty && invalid\n }\n })\n\n readonly isRequired = linkedSignal(() => {\n const control = this.control\n const required = this.required()\n if (!control || !this.formControlContext.isReactiveForm()) {\n return required\n }\n\n if (typeof control.hasValidator === \"function\") {\n return (\n control.hasValidator(Validators.required) ||\n control.hasValidator(Validators.requiredTrue)\n )\n }\n return false\n })\n\n constructor() {\n if (this.formControlContext.ngControl) {\n this.formControlContext.ngControl.valueAccessor = this\n this.value.set(this.formControlContext.ngControl.control?.value || [])\n }\n\n afterNextRender(() => {\n if (\n isDefined(this.required()) &&\n this.formControlContext.isReactiveForm() &&\n isDevMode()\n ) {\n console.warn(\n \"The required attribute is not supported on reactive forms. Use Validators instead. https://angular.dev/guide/forms/form-validation#validating-input-in-reactive-forms\",\n )\n }\n })\n\n effect(() => {\n const required = this.required()\n const isRequired = this.isRequired()\n if (!this.control) {\n return\n }\n if (this.formControlContext.isTemplateDrivenForm()) {\n if (required) {\n this.control.addValidators([\n Validators.required,\n Validators.minLength(1),\n ])\n } else if (\n this.control.hasValidator(Validators.required) &&\n this.control.hasValidator(Validators.minLength(1))\n ) {\n this.control.removeValidators([\n Validators.required,\n Validators.minLength(1),\n ])\n }\n } else if (isRequired) {\n this.control.addValidators(Validators.minLength(1))\n }\n })\n }\n\n ngOnInit() {\n // Ensure the form control receives the initial value\n const defaultValue = this.defaultValue()\n if (!this.control) {\n if (defaultValue) {\n this.value.set(defaultValue)\n }\n return\n }\n\n const subscription = this.control.statusChanges.subscribe((status) => {\n this.formControlStatus.set(status)\n })\n this.onDestroy(() => {\n subscription.unsubscribe()\n })\n\n const parent = this.getParentForm()\n\n runInInjectionContext(this.injector, () => {\n if (this.control) {\n const formSignal = allEventsSignal<T[] | undefined>(this.control)\n effect(() => {\n this.formControlContext.formEventData.set(formSignal())\n })\n }\n\n if (parent) {\n let prevPristine = this.control?.pristine || false\n parent.form.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof PristineChangeEvent) {\n if (event.pristine && !prevPristine) {\n // if this event fires with pristine status and the control was\n // previously not pristine, this means that the form was reset. There\n // isn't another way to determine form resets programmatically,\n // unfortunately.\n this.formSubmitted.set(false)\n }\n prevPristine = event.pristine\n } else if (event instanceof FormSubmittedEvent) {\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n }\n })\n parent.ngSubmit.pipe(takeUntilDestroyed()).subscribe(() => {\n if (this.formControlContext.isReactiveForm()) {\n // already accounted for in the above event subscription.\n return\n }\n this.formSubmitted.set(true)\n this.control?.markAsDirty()\n })\n }\n })\n }\n\n /** Convenience access to the underlying AbstractControl (can be null). */\n get control(): AbstractControl | null {\n return this.formControlContext.ngControl?.control ?? null\n }\n\n /**\n * Used to subscribe to form submit events.\n */\n private getParentForm(): NgForm | FormGroupDirective | null {\n if (!this.control) {\n return null\n }\n\n // Try to find NgForm first\n try {\n const ngForm = this.injector.get(NgForm, null)\n if (ngForm) {\n return ngForm\n }\n } catch {}\n\n // Fall back to FormGroupDirective\n try {\n const formGroupDirective = this.injector.get(FormGroupDirective, null)\n if (formGroupDirective) {\n return formGroupDirective\n }\n } catch {}\n\n return null\n }\n\n /*\n * Control value accessor methods\n */\n writeValue(value: any): void {\n this.value.set(value ?? [])\n }\n\n // placeholder\n protected onChange = (_value: any) => {}\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = (_value) => {\n fn(_value)\n this.value.set(_value ?? [])\n }\n }\n\n protected onTouched = () => {}\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /**\n * NgModel never calls setDisabledState, but ReactiveForms does. Everything else\n * (writeValue, registerOnChange, registerOnTouched) is identical between Reactive\n * and Template forms.\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled)\n }\n}\n\n@Directive()\nexport abstract class AbstractListCollectionFormControlDirective<\n T extends CollectionItem,\n> extends AbstractBaseListCollectionFormControlDirective<T> {\n /**\n * The item collection\n *\n * @inheritDoc\n */\n readonly collection = input.required<ListCollection<T>>()\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -6,10 +6,10 @@ import { createFilter } from '@qualcomm-ui/utils/i18n';
|
|
|
6
6
|
// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
7
7
|
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
8
8
|
class LocaleContextService extends BaseApiContextService {
|
|
9
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: LocaleContextService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
10
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: LocaleContextService });
|
|
11
11
|
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: LocaleContextService, decorators: [{
|
|
13
13
|
type: Injectable
|
|
14
14
|
}] });
|
|
15
15
|
const [LOCALE_CONTEXT, useLocaleContext, provideLocaleContext,] = createApiContext("LocaleContext", LocaleContextService, { dir: "ltr", locale: "en-US" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qualcomm-ui-angular-core-locale.mjs","sources":["../../src/locale/locale-context.service.ts","../../src/locale/use-filter.ts","../../src/locale/qualcomm-ui-angular-core-locale.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {Injectable} from \"@angular/core\"\n\nimport {\n type ApiContext,\n BaseApiContextService,\n createApiContext,\n} from \"@qualcomm-ui/angular-core/machine\"\nimport type {Locale} from \"@qualcomm-ui/utils/direction\"\n\n@Injectable()\nexport class LocaleContextService extends BaseApiContextService<Locale> {}\n\nexport const [\n LOCALE_CONTEXT,\n useLocaleContext,\n provideLocaleContext,\n]: ApiContext<Locale> = createApiContext<Locale>(\n \"LocaleContext\",\n LocaleContextService,\n {dir: \"ltr\", locale: \"en-US\"},\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {computed, inject, type Signal} from \"@angular/core\"\n\nimport {\n createFilter,\n type FilterOptions,\n type FilterReturn,\n} from \"@qualcomm-ui/utils/i18n\"\n\nimport {LocaleContextService} from \"./locale-context.service\"\n\nexport interface UseFilterProps extends FilterOptions {}\nexport interface UseFilterReturn extends FilterReturn {}\n\nexport function useFilter(props: UseFilterProps): Signal<UseFilterReturn> {\n const env = inject(LocaleContextService, {optional: true})\n return computed(() => {\n const localeContext = env?.context?.()\n return createFilter({\n ...props,\n locale: props.locale ?? localeContext?.locale ?? \"en-US\",\n })\n })\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;AACA;AAYM,MAAO,oBAAqB,SAAQ,qBAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"qualcomm-ui-angular-core-locale.mjs","sources":["../../src/locale/locale-context.service.ts","../../src/locale/use-filter.ts","../../src/locale/qualcomm-ui-angular-core-locale.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {Injectable} from \"@angular/core\"\n\nimport {\n type ApiContext,\n BaseApiContextService,\n createApiContext,\n} from \"@qualcomm-ui/angular-core/machine\"\nimport type {Locale} from \"@qualcomm-ui/utils/direction\"\n\n@Injectable()\nexport class LocaleContextService extends BaseApiContextService<Locale> {}\n\nexport const [\n LOCALE_CONTEXT,\n useLocaleContext,\n provideLocaleContext,\n]: ApiContext<Locale> = createApiContext<Locale>(\n \"LocaleContext\",\n LocaleContextService,\n {dir: \"ltr\", locale: \"en-US\"},\n)\n","// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {computed, inject, type Signal} from \"@angular/core\"\n\nimport {\n createFilter,\n type FilterOptions,\n type FilterReturn,\n} from \"@qualcomm-ui/utils/i18n\"\n\nimport {LocaleContextService} from \"./locale-context.service\"\n\nexport interface UseFilterProps extends FilterOptions {}\nexport interface UseFilterReturn extends FilterReturn {}\n\nexport function useFilter(props: UseFilterProps): Signal<UseFilterReturn> {\n const env = inject(LocaleContextService, {optional: true})\n return computed(() => {\n const localeContext = env?.context?.()\n return createFilter({\n ...props,\n locale: props.locale ?? localeContext?.locale ?? \"en-US\",\n })\n })\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;AACA;AAYM,MAAO,oBAAqB,SAAQ,qBAA6B,CAAA;uGAA1D,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAApB,oBAAoB,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;AAGM,MAAM,CACX,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACrB,GAAuB,gBAAgB,CACtC,eAAe,EACf,oBAAoB,EACpB,EAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAC;;ACtB/B;AACA;AAeM,SAAU,SAAS,CAAC,KAAqB,EAAA;AAC7C,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IAC1D,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,aAAa,GAAG,GAAG,EAAE,OAAO,IAAI;AACtC,QAAA,OAAO,YAAY,CAAC;AAClB,YAAA,GAAG,KAAK;YACR,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,aAAa,EAAE,MAAM,IAAI,OAAO;AACzD,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;ACzBA;;AAEG;;;;"}
|
|
@@ -12,46 +12,34 @@ class LoremIpsumDirective {
|
|
|
12
12
|
*
|
|
13
13
|
* @default 5
|
|
14
14
|
*/
|
|
15
|
-
avgSentencesPerParagraph = input(undefined, ...(ngDevMode ?
|
|
16
|
-
transform: numberAttributeOrUndefined,
|
|
17
|
-
}]));
|
|
15
|
+
avgSentencesPerParagraph = input(undefined, { ...(ngDevMode ? { debugName: "avgSentencesPerParagraph" } : /* istanbul ignore next */ {}), transform: numberAttributeOrUndefined });
|
|
18
16
|
/**
|
|
19
17
|
* Average number of words created for each sentence (standard deviation is fixed
|
|
20
18
|
* ±25%)
|
|
21
19
|
*
|
|
22
20
|
* @default 8
|
|
23
21
|
*/
|
|
24
|
-
avgWordsPerSentence = input(undefined, ...(ngDevMode ?
|
|
25
|
-
transform: numberAttributeOrUndefined,
|
|
26
|
-
}]));
|
|
22
|
+
avgWordsPerSentence = input(undefined, { ...(ngDevMode ? { debugName: "avgWordsPerSentence" } : /* istanbul ignore next */ {}), transform: numberAttributeOrUndefined });
|
|
27
23
|
/**
|
|
28
24
|
* @default 1
|
|
29
25
|
*/
|
|
30
|
-
numParagraphs = input(undefined, ...(ngDevMode ?
|
|
31
|
-
transform: numberAttributeOrUndefined,
|
|
32
|
-
}]));
|
|
26
|
+
numParagraphs = input(undefined, { ...(ngDevMode ? { debugName: "numParagraphs" } : /* istanbul ignore next */ {}), transform: numberAttributeOrUndefined });
|
|
33
27
|
/**
|
|
34
28
|
* If `false`, always generates the same paragraphs in order.
|
|
35
29
|
*
|
|
36
30
|
* @default false
|
|
37
31
|
*/
|
|
38
|
-
random = input(undefined, ...(ngDevMode ?
|
|
39
|
-
transform: booleanAttribute,
|
|
40
|
-
}]));
|
|
32
|
+
random = input(undefined, { ...(ngDevMode ? { debugName: "random" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
41
33
|
/**
|
|
42
34
|
* Seed for deterministic random generation. If not provided, uses Math.random()
|
|
43
35
|
*/
|
|
44
|
-
seed = input(undefined, ...(ngDevMode ?
|
|
45
|
-
transform: numberAttributeOrUndefined,
|
|
46
|
-
}]));
|
|
36
|
+
seed = input(undefined, { ...(ngDevMode ? { debugName: "seed" } : /* istanbul ignore next */ {}), transform: numberAttributeOrUndefined });
|
|
47
37
|
/**
|
|
48
38
|
* Start with 'Lorem ipsum odor amet...' to first sentence of first paragraph
|
|
49
39
|
*
|
|
50
40
|
* @default true
|
|
51
41
|
*/
|
|
52
|
-
startWithLoremIpsum = input(undefined, ...(ngDevMode ?
|
|
53
|
-
transform: booleanAttribute,
|
|
54
|
-
}]));
|
|
42
|
+
startWithLoremIpsum = input(undefined, { ...(ngDevMode ? { debugName: "startWithLoremIpsum" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
55
43
|
loremIpsumOptions = computed(() => {
|
|
56
44
|
return {
|
|
57
45
|
avgSentencesPerParagraph: this.avgSentencesPerParagraph(),
|
|
@@ -61,16 +49,16 @@ class LoremIpsumDirective {
|
|
|
61
49
|
seed: this.seed(),
|
|
62
50
|
startWithLoremIpsum: this.startWithLoremIpsum(),
|
|
63
51
|
};
|
|
64
|
-
}, ...(ngDevMode ? [{ debugName: "loremIpsumOptions" }] : []));
|
|
65
|
-
paragraphs = computed(() => loremIpsum(this.loremIpsumOptions()), ...(ngDevMode ? [{ debugName: "paragraphs" }] : []));
|
|
66
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
67
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
52
|
+
}, ...(ngDevMode ? [{ debugName: "loremIpsumOptions" }] : /* istanbul ignore next */ []));
|
|
53
|
+
paragraphs = computed(() => loremIpsum(this.loremIpsumOptions()), ...(ngDevMode ? [{ debugName: "paragraphs" }] : /* istanbul ignore next */ []));
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: LoremIpsumDirective, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: LoremIpsumDirective, isStandalone: true, selector: "[q-lorem-ipsum]", inputs: { avgSentencesPerParagraph: { classPropertyName: "avgSentencesPerParagraph", publicName: "avgSentencesPerParagraph", isSignal: true, isRequired: false, transformFunction: null }, avgWordsPerSentence: { classPropertyName: "avgWordsPerSentence", publicName: "avgWordsPerSentence", isSignal: true, isRequired: false, transformFunction: null }, numParagraphs: { classPropertyName: "numParagraphs", publicName: "numParagraphs", isSignal: true, isRequired: false, transformFunction: null }, random: { classPropertyName: "random", publicName: "random", isSignal: true, isRequired: false, transformFunction: null }, seed: { classPropertyName: "seed", publicName: "seed", isSignal: true, isRequired: false, transformFunction: null }, startWithLoremIpsum: { classPropertyName: "startWithLoremIpsum", publicName: "startWithLoremIpsum", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
68
56
|
@for (paragraph of paragraphs(); track $index) {
|
|
69
57
|
<div>{{ paragraph }}</div>
|
|
70
58
|
}
|
|
71
59
|
`, isInline: true });
|
|
72
60
|
}
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: LoremIpsumDirective, decorators: [{
|
|
74
62
|
type: Component,
|
|
75
63
|
args: [{
|
|
76
64
|
selector: "[q-lorem-ipsum]",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qualcomm-ui-angular-core-lorem-ipsum.mjs","sources":["../../src/lorem-ipsum/lorem-ipsum.directive.ts","../../src/lorem-ipsum/qualcomm-ui-angular-core-lorem-ipsum.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {booleanAttribute, Component, computed, input} from \"@angular/core\"\n\nimport {numberAttributeOrUndefined} from \"@qualcomm-ui/angular-core/attributes\"\nimport type {Booleanish, NumberInput} from \"@qualcomm-ui/utils/coercion\"\nimport {\n loremIpsum,\n type LoremIpsumOptions,\n} from \"@qualcomm-ui/utils/lorem-ipsum\"\n\n@Component({\n selector: \"[q-lorem-ipsum]\",\n template: `\n @for (paragraph of paragraphs(); track $index) {\n <div>{{ paragraph }}</div>\n }\n `,\n})\nexport class LoremIpsumDirective {\n /**\n * Average number of sentences created for each paragraph (standard deviation is\n * fixed ±25%)\n *\n * @default 5\n */\n readonly avgSentencesPerParagraph = input<number | undefined, NumberInput>(\n undefined,\n {\n transform: numberAttributeOrUndefined,\n },\n )\n\n /**\n * Average number of words created for each sentence (standard deviation is fixed\n * ±25%)\n *\n * @default 8\n */\n readonly avgWordsPerSentence = input<number | undefined, NumberInput>(\n undefined,\n {\n transform: numberAttributeOrUndefined,\n },\n )\n\n /**\n * @default 1\n */\n readonly numParagraphs = input<number | undefined, NumberInput>(undefined, {\n transform: numberAttributeOrUndefined,\n })\n\n /**\n * If `false`, always generates the same paragraphs in order.\n *\n * @default false\n */\n readonly random = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Seed for deterministic random generation. If not provided, uses Math.random()\n */\n readonly seed = input<number | undefined, NumberInput>(undefined, {\n transform: numberAttributeOrUndefined,\n })\n\n /**\n * Start with 'Lorem ipsum odor amet...' to first sentence of first paragraph\n *\n * @default true\n */\n readonly startWithLoremIpsum = input<boolean | undefined, Booleanish>(\n undefined,\n {\n transform: booleanAttribute,\n },\n )\n\n readonly loremIpsumOptions = computed<LoremIpsumOptions>(() => {\n return {\n avgSentencesPerParagraph: this.avgSentencesPerParagraph(),\n avgWordsPerSentence: this.avgWordsPerSentence(),\n numParagraphs: this.numParagraphs(),\n random: this.random(),\n seed: this.seed(),\n startWithLoremIpsum: this.startWithLoremIpsum(),\n }\n })\n\n readonly paragraphs = computed(() => loremIpsum(this.loremIpsumOptions()))\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;AACA;MAmBa,mBAAmB,CAAA;AAC9B;;;;;AAKG;IACM,wBAAwB,GAAG,KAAK,CACvC,SAAS,
|
|
1
|
+
{"version":3,"file":"qualcomm-ui-angular-core-lorem-ipsum.mjs","sources":["../../src/lorem-ipsum/lorem-ipsum.directive.ts","../../src/lorem-ipsum/qualcomm-ui-angular-core-lorem-ipsum.ts"],"sourcesContent":["// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.\n// SPDX-License-Identifier: BSD-3-Clause-Clear\n\nimport {booleanAttribute, Component, computed, input} from \"@angular/core\"\n\nimport {numberAttributeOrUndefined} from \"@qualcomm-ui/angular-core/attributes\"\nimport type {Booleanish, NumberInput} from \"@qualcomm-ui/utils/coercion\"\nimport {\n loremIpsum,\n type LoremIpsumOptions,\n} from \"@qualcomm-ui/utils/lorem-ipsum\"\n\n@Component({\n selector: \"[q-lorem-ipsum]\",\n template: `\n @for (paragraph of paragraphs(); track $index) {\n <div>{{ paragraph }}</div>\n }\n `,\n})\nexport class LoremIpsumDirective {\n /**\n * Average number of sentences created for each paragraph (standard deviation is\n * fixed ±25%)\n *\n * @default 5\n */\n readonly avgSentencesPerParagraph = input<number | undefined, NumberInput>(\n undefined,\n {\n transform: numberAttributeOrUndefined,\n },\n )\n\n /**\n * Average number of words created for each sentence (standard deviation is fixed\n * ±25%)\n *\n * @default 8\n */\n readonly avgWordsPerSentence = input<number | undefined, NumberInput>(\n undefined,\n {\n transform: numberAttributeOrUndefined,\n },\n )\n\n /**\n * @default 1\n */\n readonly numParagraphs = input<number | undefined, NumberInput>(undefined, {\n transform: numberAttributeOrUndefined,\n })\n\n /**\n * If `false`, always generates the same paragraphs in order.\n *\n * @default false\n */\n readonly random = input<boolean | undefined, Booleanish>(undefined, {\n transform: booleanAttribute,\n })\n\n /**\n * Seed for deterministic random generation. If not provided, uses Math.random()\n */\n readonly seed = input<number | undefined, NumberInput>(undefined, {\n transform: numberAttributeOrUndefined,\n })\n\n /**\n * Start with 'Lorem ipsum odor amet...' to first sentence of first paragraph\n *\n * @default true\n */\n readonly startWithLoremIpsum = input<boolean | undefined, Booleanish>(\n undefined,\n {\n transform: booleanAttribute,\n },\n )\n\n readonly loremIpsumOptions = computed<LoremIpsumOptions>(() => {\n return {\n avgSentencesPerParagraph: this.avgSentencesPerParagraph(),\n avgWordsPerSentence: this.avgWordsPerSentence(),\n numParagraphs: this.numParagraphs(),\n random: this.random(),\n seed: this.seed(),\n startWithLoremIpsum: this.startWithLoremIpsum(),\n }\n })\n\n readonly paragraphs = computed(() => loremIpsum(this.loremIpsumOptions()))\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|