@educarehq/solaris-ui 0.2.0 → 0.3.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/esm2022/index.js +40 -1
- package/esm2022/index.js.map +1 -1
- package/esm2022/lib/components/actions/button/index.js +3 -0
- package/esm2022/lib/components/actions/button/index.js.map +1 -0
- package/esm2022/lib/components/data-display/badge/index.js +3 -0
- package/esm2022/lib/components/data-display/badge/index.js.map +1 -0
- package/esm2022/lib/components/data-display/divider/component/divider.component.js +46 -0
- package/esm2022/lib/components/data-display/divider/component/divider.component.js.map +1 -0
- package/esm2022/lib/components/data-display/divider/index.js +2 -0
- package/esm2022/lib/components/data-display/divider/index.js.map +1 -0
- package/esm2022/lib/components/data-display/divider/model/divider.types.js +1 -0
- package/esm2022/lib/components/data-display/divider/model/divider.types.js.map +1 -0
- package/esm2022/lib/components/feedback/toast/component/toast.component.js +268 -0
- package/esm2022/lib/components/feedback/toast/component/toast.component.js.map +1 -0
- package/esm2022/lib/components/feedback/toast/container/toast-container.component.js +24 -0
- package/esm2022/lib/components/feedback/toast/container/toast-container.component.js.map +1 -0
- package/esm2022/lib/components/feedback/toast/model/toast.types.js +1 -0
- package/esm2022/lib/components/feedback/toast/model/toast.types.js.map +1 -0
- package/esm2022/lib/components/feedback/toast/provider/provide-solaris-toast.js +17 -0
- package/esm2022/lib/components/feedback/toast/provider/provide-solaris-toast.js.map +1 -0
- package/esm2022/lib/components/feedback/toast/service/toast.service.js +219 -0
- package/esm2022/lib/components/feedback/toast/service/toast.service.js.map +1 -0
- package/esm2022/lib/components/feedback/toast/token/toast.tokens.js +13 -0
- package/esm2022/lib/components/feedback/toast/token/toast.tokens.js.map +1 -0
- package/esm2022/lib/components/forms/email-field/component/email-field.component.js +5 -4
- package/esm2022/lib/components/forms/email-field/component/email-field.component.js.map +1 -1
- package/esm2022/lib/components/forms/form-field/component/form-field.component.js +50 -2
- package/esm2022/lib/components/forms/form-field/component/form-field.component.js.map +1 -1
- package/esm2022/lib/components/forms/form-field/directives/form-field-trigger.directive.js.map +1 -1
- package/esm2022/lib/components/forms/form-field/index.js.map +1 -1
- package/esm2022/lib/components/forms/multi-select/component/multi-select.component.js +11 -28
- package/esm2022/lib/components/forms/multi-select/component/multi-select.component.js.map +1 -1
- package/esm2022/lib/components/forms/multi-select/model/multi-select.types.js.map +1 -1
- package/esm2022/lib/components/forms/option/component/option.component.js +2 -2
- package/esm2022/lib/components/forms/option/component/option.component.js.map +1 -1
- package/esm2022/lib/components/forms/password-field/component/password-field.component.js +2 -2
- package/esm2022/lib/components/forms/password-field/component/password-field.component.js.map +1 -1
- package/esm2022/lib/components/forms/radio/component/radio.component.js +2 -2
- package/esm2022/lib/components/forms/select/component/select.component.js +4 -8
- package/esm2022/lib/components/forms/select/component/select.component.js.map +1 -1
- package/esm2022/lib/components/icon/component/solaris-icon.component.js +2 -2
- package/esm2022/lib/components/icon/component/solaris-icon.component.js.map +1 -1
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.js +27 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.js +96 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.js +22 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.js +105 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.js +95 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu.component.js +631 -0
- package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu.component.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/directives/dropdown-menu-trigger.directive.js +365 -0
- package/esm2022/lib/components/interaction/dropdown-menu/directives/dropdown-menu-trigger.directive.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/index.js +8 -0
- package/esm2022/lib/components/interaction/dropdown-menu/index.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu-navigation.js +3 -0
- package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu-navigation.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu.types.js +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu.types.js.map +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-submenu.types.js +1 -0
- package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-submenu.types.js.map +1 -0
- package/esm2022/lib/components/interaction/popover/component/popover-panel.component.js +2 -2
- package/esm2022/lib/components/interaction/popover/component/popover-panel.component.js.map +1 -1
- package/esm2022/lib/components/interaction/popover/directives/popover-trigger.directive.js +28 -20
- package/esm2022/lib/components/interaction/popover/directives/popover-trigger.directive.js.map +1 -1
- package/esm2022/lib/components/interaction/tooltip/component/tooltip-panel.component.js.map +1 -1
- package/esm2022/lib/components/interaction/tooltip/directive/tooltip.directive.js.map +1 -1
- package/esm2022/lib/components/interaction/tooltip/model/tooltip-position.js.map +1 -1
- package/esm2022/lib/components/navigation/editable-tabs/component/editable-tabs.component.js +323 -0
- package/esm2022/lib/components/navigation/editable-tabs/component/editable-tabs.component.js.map +1 -0
- package/esm2022/lib/components/navigation/editable-tabs/editable-tab/editable-tab.component.js +34 -0
- package/esm2022/lib/components/navigation/editable-tabs/editable-tab/editable-tab.component.js.map +1 -0
- package/esm2022/lib/components/navigation/editable-tabs/model/editable-tabs.types.js +1 -0
- package/esm2022/lib/components/navigation/editable-tabs/model/editable-tabs.types.js.map +1 -0
- package/esm2022/lib/components/navigation/segmented-control/component/segmented-control.component.js +242 -0
- package/esm2022/lib/components/navigation/segmented-control/component/segmented-control.component.js.map +1 -0
- package/esm2022/lib/components/navigation/segmented-control/item/segmented-item.component.js +197 -0
- package/esm2022/lib/components/navigation/segmented-control/item/segmented-item.component.js.map +1 -0
- package/esm2022/lib/components/navigation/segmented-control/model/segmented-control.types.js +1 -0
- package/esm2022/lib/components/navigation/segmented-control/model/segmented-control.types.js.map +1 -0
- package/esm2022/lib/components/navigation/segmented-control/token/segmented-control.tokens.js +3 -0
- package/esm2022/lib/components/navigation/segmented-control/token/segmented-control.tokens.js.map +1 -0
- package/esm2022/lib/components/navigation/stepper/actions/stepper-actions.component.js +15 -0
- package/esm2022/lib/components/navigation/stepper/actions/stepper-actions.component.js.map +1 -0
- package/esm2022/lib/components/navigation/stepper/component/stepper.component.js +99 -0
- package/esm2022/lib/components/navigation/stepper/component/stepper.component.js.map +1 -0
- package/esm2022/lib/components/navigation/stepper/content/stepper-content.component.js +13 -0
- package/esm2022/lib/components/navigation/stepper/content/stepper-content.component.js.map +1 -0
- package/esm2022/lib/components/navigation/stepper/model/stepper.types.js +1 -0
- package/esm2022/lib/components/navigation/stepper/model/stepper.types.js.map +1 -0
- package/esm2022/lib/components/navigation/stepper/step/step.component.js +91 -0
- package/esm2022/lib/components/navigation/stepper/step/step.component.js.map +1 -0
- package/esm2022/lib/components/navigation/stepper/token/stepper.tokens.js +3 -0
- package/esm2022/lib/components/navigation/stepper/token/stepper.tokens.js.map +1 -0
- package/esm2022/lib/components/navigation/tabs/component/tabs.component.js +169 -0
- package/esm2022/lib/components/navigation/tabs/component/tabs.component.js.map +1 -0
- package/esm2022/lib/components/navigation/tabs/index.js +5 -0
- package/esm2022/lib/components/navigation/tabs/index.js.map +1 -0
- package/esm2022/lib/components/navigation/tabs/model/tabs.types.js +1 -0
- package/esm2022/lib/components/navigation/tabs/model/tabs.types.js.map +1 -0
- package/esm2022/lib/components/navigation/tabs/tab/tab.component.js +195 -0
- package/esm2022/lib/components/navigation/tabs/tab/tab.component.js.map +1 -0
- package/esm2022/lib/components/navigation/tabs/tab-panel/tab-panel.component.js +55 -0
- package/esm2022/lib/components/navigation/tabs/tab-panel/tab-panel.component.js.map +1 -0
- package/esm2022/lib/components/navigation/tabs/token/tabs.tokens.js +3 -0
- package/esm2022/lib/components/navigation/tabs/token/tabs.tokens.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/component/dialog.component.js +49 -0
- package/esm2022/lib/components/overlay/dialog/component/dialog.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/components/dialog-actions.component.js +37 -0
- package/esm2022/lib/components/overlay/dialog/components/dialog-actions.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/components/dialog-content.component.js +13 -0
- package/esm2022/lib/components/overlay/dialog/components/dialog-content.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/components/dialog-header.component.js +32 -0
- package/esm2022/lib/components/overlay/dialog/components/dialog-header.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/container/dialog-container.component.js +142 -0
- package/esm2022/lib/components/overlay/dialog/container/dialog-container.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/flow/dialog-flow.component.js +56 -0
- package/esm2022/lib/components/overlay/dialog/flow/dialog-flow.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/flow/dialog-step.component.js +20 -0
- package/esm2022/lib/components/overlay/dialog/flow/dialog-step.component.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/model/dialog.types.js +1 -0
- package/esm2022/lib/components/overlay/dialog/model/dialog.types.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/provider/provide-solaris-dialog.js +13 -0
- package/esm2022/lib/components/overlay/dialog/provider/provide-solaris-dialog.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/service/dialog-ref.js +23 -0
- package/esm2022/lib/components/overlay/dialog/service/dialog-ref.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/service/dialog.service.js +111 -0
- package/esm2022/lib/components/overlay/dialog/service/dialog.service.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/token/dialog-data.token.js +4 -0
- package/esm2022/lib/components/overlay/dialog/token/dialog-data.token.js.map +1 -0
- package/esm2022/lib/components/overlay/dialog/token/dialog.tokens.js +15 -0
- package/esm2022/lib/components/overlay/dialog/token/dialog.tokens.js.map +1 -0
- package/esm2022/lib/services/icon/icons/groups/actions.js +242 -0
- package/esm2022/lib/services/icon/icons/groups/actions.js.map +1 -0
- package/esm2022/lib/services/icon/icons/groups/data.js +129 -0
- package/esm2022/lib/services/icon/icons/groups/data.js.map +1 -0
- package/esm2022/lib/services/icon/icons/groups/layout.js +50 -0
- package/esm2022/lib/services/icon/icons/groups/layout.js.map +1 -0
- package/esm2022/lib/services/icon/icons/groups/navigation.js +354 -0
- package/esm2022/lib/services/icon/icons/groups/navigation.js.map +1 -0
- package/esm2022/lib/services/icon/icons/groups/status.js +70 -0
- package/esm2022/lib/services/icon/icons/groups/status.js.map +1 -0
- package/esm2022/lib/services/icon/icons/groups/theme.js +49 -0
- package/esm2022/lib/services/icon/icons/groups/theme.js.map +1 -0
- package/esm2022/lib/services/icon/icons/solaris-built-in-icons.js +12 -204
- package/esm2022/lib/services/icon/icons/solaris-built-in-icons.js.map +1 -1
- package/esm2022/lib/services/icon/model/solaris-icon-definition.interface.js.map +1 -1
- package/esm2022/lib/services/icon/model/solaris-icon.types.js.map +1 -1
- package/esm2022/lib/services/translation/model/solaris-translate-defaults.js +56 -0
- package/esm2022/lib/services/translation/model/solaris-translate-defaults.js.map +1 -1
- package/index.d.ts +92 -1
- package/lib/components/actions/button/index.d.ts +3 -0
- package/lib/components/data-display/badge/index.d.ts +3 -0
- package/lib/components/data-display/divider/component/divider.component.d.ts +17 -0
- package/lib/components/data-display/divider/index.d.ts +2 -0
- package/lib/components/data-display/divider/model/divider.types.d.ts +5 -0
- package/lib/components/feedback/toast/component/toast.component.d.ts +62 -0
- package/lib/components/feedback/toast/container/toast-container.component.d.ts +10 -0
- package/lib/components/feedback/toast/model/toast.types.d.ts +106 -0
- package/lib/components/feedback/toast/provider/provide-solaris-toast.d.ts +3 -0
- package/lib/components/feedback/toast/service/toast.service.d.ts +36 -0
- package/lib/components/feedback/toast/token/toast.tokens.d.ts +5 -0
- package/lib/components/forms/email-field/component/email-field.component.d.ts +2 -1
- package/lib/components/forms/form-field/component/form-field.component.d.ts +6 -0
- package/lib/components/forms/multi-select/component/multi-select.component.d.ts +4 -7
- package/lib/components/forms/select/component/select.component.d.ts +2 -2
- package/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.d.ts +10 -0
- package/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.d.ts +28 -0
- package/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.d.ts +7 -0
- package/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.d.ts +21 -0
- package/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.d.ts +21 -0
- package/lib/components/interaction/dropdown-menu/component/dropdown-submenu.component.d.ts +68 -0
- package/lib/components/interaction/dropdown-menu/directives/dropdown-menu-trigger.directive.d.ts +61 -0
- package/lib/components/interaction/dropdown-menu/index.d.ts +9 -0
- package/lib/components/interaction/dropdown-menu/model/dropdown-menu-navigation.d.ts +8 -0
- package/lib/components/interaction/dropdown-menu/model/dropdown-menu.types.d.ts +11 -0
- package/lib/components/interaction/dropdown-menu/model/dropdown-submenu.types.d.ts +2 -0
- package/lib/components/navigation/editable-tabs/component/editable-tabs.component.d.ts +69 -0
- package/lib/components/navigation/editable-tabs/editable-tab/editable-tab.component.d.ts +20 -0
- package/lib/components/navigation/editable-tabs/model/editable-tabs.types.d.ts +60 -0
- package/lib/components/navigation/segmented-control/component/segmented-control.component.d.ts +64 -0
- package/lib/components/navigation/segmented-control/item/segmented-item.component.d.ts +35 -0
- package/lib/components/navigation/segmented-control/model/segmented-control.types.d.ts +12 -0
- package/lib/components/navigation/segmented-control/token/segmented-control.tokens.d.ts +22 -0
- package/lib/components/navigation/stepper/actions/stepper-actions.component.d.ts +7 -0
- package/lib/components/navigation/stepper/component/stepper.component.d.ts +36 -0
- package/lib/components/navigation/stepper/content/stepper-content.component.d.ts +5 -0
- package/lib/components/navigation/stepper/model/stepper.types.d.ts +15 -0
- package/lib/components/navigation/stepper/step/step.component.d.ts +27 -0
- package/lib/components/navigation/stepper/token/stepper.tokens.d.ts +13 -0
- package/lib/components/navigation/tabs/component/tabs.component.d.ts +47 -0
- package/lib/components/navigation/tabs/index.d.ts +6 -0
- package/lib/components/navigation/tabs/model/tabs.types.d.ts +17 -0
- package/lib/components/navigation/tabs/tab/tab.component.d.ts +38 -0
- package/lib/components/navigation/tabs/tab-panel/tab-panel.component.d.ts +15 -0
- package/lib/components/navigation/tabs/token/tabs.tokens.d.ts +19 -0
- package/lib/components/overlay/dialog/component/dialog.component.d.ts +29 -0
- package/lib/components/overlay/dialog/components/dialog-actions.component.d.ts +12 -0
- package/lib/components/overlay/dialog/components/dialog-content.component.d.ts +5 -0
- package/lib/components/overlay/dialog/components/dialog-header.component.d.ts +19 -0
- package/lib/components/overlay/dialog/container/dialog-container.component.d.ts +32 -0
- package/lib/components/overlay/dialog/flow/dialog-flow.component.d.ts +19 -0
- package/lib/components/overlay/dialog/flow/dialog-step.component.d.ts +7 -0
- package/lib/components/overlay/dialog/model/dialog.types.d.ts +87 -0
- package/lib/components/overlay/dialog/provider/provide-solaris-dialog.d.ts +3 -0
- package/lib/components/overlay/dialog/service/dialog-ref.d.ts +11 -0
- package/lib/components/overlay/dialog/service/dialog.service.d.ts +20 -0
- package/lib/components/overlay/dialog/token/dialog-data.token.d.ts +4 -0
- package/lib/components/overlay/dialog/token/dialog.tokens.d.ts +4 -0
- package/lib/services/icon/icons/groups/actions.d.ts +2 -0
- package/lib/services/icon/icons/groups/data.d.ts +2 -0
- package/lib/services/icon/icons/groups/layout.d.ts +2 -0
- package/lib/services/icon/icons/groups/navigation.d.ts +2 -0
- package/lib/services/icon/icons/groups/status.d.ts +2 -0
- package/lib/services/icon/icons/groups/theme.d.ts +2 -0
- package/lib/services/icon/model/solaris-icon-definition.interface.d.ts +10 -1
- package/lib/services/icon/model/solaris-icon.types.d.ts +1 -1
- package/package.json +1 -1
- package/styles/_dropdown-menu.scss +72 -0
- package/styles/_popover.scss +24 -19
- package/styles/_toast.scss +9 -0
- package/styles/_tooltip.scss +3 -3
|
@@ -63,10 +63,36 @@ export class SolarisFormFieldComponent {
|
|
|
63
63
|
autoDetectedDisabled = signal(false, ...(ngDevMode ? [{ debugName: "autoDetectedDisabled" }] : /* istanbul ignore next */ []));
|
|
64
64
|
autoDetectedReadonly = signal(false, ...(ngDevMode ? [{ debugName: "autoDetectedReadonly" }] : /* istanbul ignore next */ []));
|
|
65
65
|
controlResize = signal(null, ...(ngDevMode ? [{ debugName: "controlResize" }] : /* istanbul ignore next */ []));
|
|
66
|
+
maxLength = signal(undefined, ...(ngDevMode ? [{ debugName: "maxLength" }] : /* istanbul ignore next */ []));
|
|
67
|
+
currentLength = signal(0, ...(ngDevMode ? [{ debugName: "currentLength" }] : /* istanbul ignore next */ []));
|
|
68
|
+
showCharacterCounter = computed(() => {
|
|
69
|
+
const max = this.maxLength();
|
|
70
|
+
return max !== undefined && max > 0;
|
|
71
|
+
}, ...(ngDevMode ? [{ debugName: "showCharacterCounter" }] : /* istanbul ignore next */ []));
|
|
72
|
+
characterCounterText = computed(() => {
|
|
73
|
+
const max = this.maxLength();
|
|
74
|
+
if (max === undefined || max <= 0)
|
|
75
|
+
return '';
|
|
76
|
+
const current = this.currentLength();
|
|
77
|
+
return `${current}/${max}`;
|
|
78
|
+
}, ...(ngDevMode ? [{ debugName: "characterCounterText" }] : /* istanbul ignore next */ []));
|
|
79
|
+
characterCounterSeverity = computed(() => {
|
|
80
|
+
const max = this.maxLength();
|
|
81
|
+
const current = this.currentLength();
|
|
82
|
+
if (max === undefined || max <= 0)
|
|
83
|
+
return 'normal';
|
|
84
|
+
const ratio = current / max;
|
|
85
|
+
if (ratio >= 1)
|
|
86
|
+
return 'danger';
|
|
87
|
+
if (ratio >= 0.9)
|
|
88
|
+
return 'warning';
|
|
89
|
+
return 'normal';
|
|
90
|
+
}, ...(ngDevMode ? [{ debugName: "characterCounterSeverity" }] : /* istanbul ignore next */ []));
|
|
66
91
|
controlId = null;
|
|
67
92
|
controlElement = null;
|
|
68
93
|
focusListener = null;
|
|
69
94
|
blurListener = null;
|
|
95
|
+
inputListener = null;
|
|
70
96
|
hasProjectedLabel = computed(() => !!this.projectedLabel, ...(ngDevMode ? [{ debugName: "hasProjectedLabel" }] : /* istanbul ignore next */ []));
|
|
71
97
|
hasProjectedHint = computed(() => !!this.projectedHint, ...(ngDevMode ? [{ debugName: "hasProjectedHint" }] : /* istanbul ignore next */ []));
|
|
72
98
|
hasProjectedError = computed(() => !!this.projectedError, ...(ngDevMode ? [{ debugName: "hasProjectedError" }] : /* istanbul ignore next */ []));
|
|
@@ -268,6 +294,17 @@ export class SolarisFormFieldComponent {
|
|
|
268
294
|
// SECURITY_EXCEPTION: nativeElement.tagName is the standard DOM API to check element type.
|
|
269
295
|
const isTextarea = first.tagName === 'TEXTAREA';
|
|
270
296
|
this.isTextareaControl.set(isTextarea);
|
|
297
|
+
// SECURITY_EXCEPTION: getAttribute is the standard DOM API to read HTML attributes.
|
|
298
|
+
const maxlengthAttr = first.getAttribute('maxlength');
|
|
299
|
+
if (maxlengthAttr !== null) {
|
|
300
|
+
const parsed = parseInt(maxlengthAttr, 10);
|
|
301
|
+
this.maxLength.set(!isNaN(parsed) ? parsed : undefined);
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
this.maxLength.set(undefined);
|
|
305
|
+
}
|
|
306
|
+
// SECURITY_EXCEPTION: reading value.length from native input/textarea is required for character counter.
|
|
307
|
+
this.currentLength.set(first.value?.length ?? 0);
|
|
271
308
|
if (isTextarea) {
|
|
272
309
|
const resize = first.dataset['resize'] ?? first.getAttribute('resize');
|
|
273
310
|
const validResize = resize === 'none' ||
|
|
@@ -310,17 +347,28 @@ export class SolarisFormFieldComponent {
|
|
|
310
347
|
const onBlur = () => {
|
|
311
348
|
this.ngZone.run(() => this.isFocused.set(false));
|
|
312
349
|
};
|
|
350
|
+
const onInput = () => {
|
|
351
|
+
// SECURITY_EXCEPTION: reading value.length from native input/textarea is standard DOM API for character counter.
|
|
352
|
+
this.ngZone.run(() => {
|
|
353
|
+
this.currentLength.set(element.value?.length ??
|
|
354
|
+
0);
|
|
355
|
+
});
|
|
356
|
+
};
|
|
313
357
|
element.addEventListener('focusin', onFocus);
|
|
314
358
|
element.addEventListener('focusout', onBlur);
|
|
359
|
+
element.addEventListener('input', onInput);
|
|
315
360
|
this.focusListener = () => element.removeEventListener('focusin', onFocus);
|
|
316
361
|
this.blurListener = () => element.removeEventListener('focusout', onBlur);
|
|
362
|
+
this.inputListener = () => element.removeEventListener('input', onInput);
|
|
317
363
|
});
|
|
318
364
|
}
|
|
319
365
|
removeListeners() {
|
|
320
366
|
this.focusListener?.();
|
|
321
367
|
this.blurListener?.();
|
|
368
|
+
this.inputListener?.();
|
|
322
369
|
this.focusListener = null;
|
|
323
370
|
this.blurListener = null;
|
|
371
|
+
this.inputListener = null;
|
|
324
372
|
}
|
|
325
373
|
warnNoControl() {
|
|
326
374
|
const hasAnyControl = !!this.control() ||
|
|
@@ -344,7 +392,7 @@ export class SolarisFormFieldComponent {
|
|
|
344
392
|
}
|
|
345
393
|
}
|
|
346
394
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
347
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SolarisFormFieldComponent, isStandalone: true, selector: "solaris-form-field", inputs: { hintKey: { classPropertyName: "hintKey", publicName: "hintKey", isSignal: true, isRequired: false, transformFunction: null }, labelKey: { classPropertyName: "labelKey", publicName: "labelKey", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, errorKey: { classPropertyName: "errorKey", publicName: "errorKey", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, optionalLabel: { classPropertyName: "optionalLabel", publicName: "optionalLabel", isSignal: true, isRequired: false, transformFunction: null }, requiredLabel: { classPropertyName: "requiredLabel", publicName: "requiredLabel", isSignal: true, isRequired: false, transformFunction: null }, optionalLabelKey: { classPropertyName: "optionalLabelKey", publicName: "optionalLabelKey", isSignal: true, isRequired: false, transformFunction: null }, requiredLabelKey: { classPropertyName: "requiredLabelKey", publicName: "requiredLabelKey", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, optional: { classPropertyName: "optional", publicName: "optional", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "attr.data-radius": "radius()", "attr.data-bwignore": "\"true\"", "attr.data-appearance": "appearance()", "attr.data-density": "effectiveDensity()", "attr.data-control-type": "controlType()", "attr.data-control-resize": "controlResize()", "attr.data-invalid": "isInvalid() ? \"\" : null", "attr.data-focused": "isFocused() ? \"\" : null", "attr.data-has-prefix": "hasPrefix() ? \"\" : null", "attr.data-has-suffix": "hasSuffix() ? \"\" : null", "attr.data-disabled": "isEffectivelyDisabled() ? \"\" : null", "attr.data-readonly": "isEffectivelyReadonly() ? \"\" : null" } }, queries: [{ propertyName: "projectedLabel", first: true, predicate: SolarisFormLabelComponent, descendants: true }, { propertyName: "projectedHint", first: true, predicate: SolarisFormHintComponent, descendants: true }, { propertyName: "projectedError", first: true, predicate: SolarisFormErrorComponent, descendants: true }, { propertyName: "prefix", first: true, predicate: SolarisFormPrefixDirective, descendants: true }, { propertyName: "suffix", first: true, predicate: SolarisFormSuffixDirective, descendants: true }, { propertyName: "formControl", first: true, predicate: SolarisFormControl, descendants: true }, { propertyName: "formControlDirective", first: true, predicate: FormControlDirective, descendants: true }, { propertyName: "formControlName", first: true, predicate: FormControlName, descendants: true }, { propertyName: "ngModelDir", first: true, predicate: NgModel, descendants: true }], ngImport: i0, template: "@if (labelText() || hasProjectedLabel()) {\n <div class=\"solaris-form-field__label-row\">\n @if (hasProjectedLabel()) {\n <ng-content select=\"solaris-form-label\" />\n } @else if (labelText()) {\n <label\n class=\"solaris-form-field__label\"\n [id]=\"labelId\"\n [for]=\"controlId ?? undefined\"\n >\n {{ labelText() }}\n </label>\n }\n @if (optional()) {\n <span\n class=\"solaris-form-field__optional-marker\"\n [attr.aria-label]=\"optionalLabelText()\"\n >\n {{ optionalLabelText() }}\n </span>\n }\n </div>\n}\n\n<div class=\"solaris-form-field__control-wrapper\">\n <span\n class=\"solaris-form-field__affix solaris-form-field__affix--prefix\"\n [attr.data-empty]=\"hasPrefix() ? null : ''\"\n >\n <ng-content select=\"[solaris-form-prefix]\" />\n </span>\n\n <div class=\"solaris-form-field__control\">\n <ng-content />\n </div>\n\n <span\n class=\"solaris-form-field__affix solaris-form-field__affix--suffix\"\n [attr.data-empty]=\"hasSuffix() ? null : ''\"\n >\n <ng-content select=\"[solaris-form-suffix]\" />\n </span>\n</div>\n\n<div class=\"solaris-form-field__message-row\">\n @if (showError()) {\n <div class=\"solaris-form-field__error\" [id]=\"errorId\" role=\"alert\">\n @if (hasProjectedError()) {\n <ng-content select=\"solaris-form-error\" />\n } @else {\n {{ errorText() }}\n }\n </div>\n } @else if (showHint()) {\n <div class=\"solaris-form-field__hint\" [id]=\"hintId\">\n @if (hasProjectedHint()) {\n <ng-content select=\"solaris-form-hint\" />\n } @else {\n {{ hintText() }}\n }\n </div>\n }\n</div>\n", styles: [":host{--solaris-form-field-font-size: initial;--solaris-form-field-hint-color: initial;--solaris-form-field-label-color: initial;--solaris-form-field-control-gap: initial;--solaris-form-field-error-color: initial;--solaris-form-field-prefix-color: initial;--solaris-form-field-suffix-color: initial;--solaris-form-field-control-color: initial;--solaris-form-field-control-height: initial;--solaris-form-field-control-radius: initial;--solaris-form-field-hint-font-size: initial;--solaris-form-field-optional-color: initial;--solaris-form-field-label-font-size: initial;--solaris-form-field-error-font-size: initial;--solaris-form-field-disabled-opacity: initial;--solaris-form-field-focus-ring-width: initial;--solaris-form-field-focus-ring-color: initial;--solaris-form-field-control-padding-x: initial;--solaris-form-field-label-font-weight: initial;--solaris-form-field-message-margin-top: initial;--solaris-form-field-optional-font-size: initial;--solaris-form-field-error-border-color: initial;--solaris-form-field-control-background: initial;--solaris-form-field-label-margin-bottom: initial;--solaris-form-field-readonly-background: initial;--solaris-form-field-control-border-color: initial;--solaris-form-field-control-border-width: initial;display:block;box-sizing:border-box;font-size:var(--solaris-form-field-font-size);font-family:var(--solaris-font-family-sans),system-ui}.solaris-form-field__label-row{display:flex;align-items:center;gap:var(--solaris-spacing-2);margin-bottom:var(--solaris-form-field-label-margin-bottom)}.solaris-form-field__label,::ng-deep .solaris-form-label{display:inline-block;color:var(--solaris-form-field-label-color);font-size:var(--solaris-form-field-label-font-size);font-weight:var(--solaris-form-field-label-font-weight);cursor:pointer}.solaris-form-field__optional-marker{color:var(--solaris-form-field-optional-color);font-size:var(--solaris-form-field-optional-font-size);white-space:nowrap}.solaris-form-field__control-wrapper{position:relative;display:flex;align-items:stretch;gap:var(--solaris-form-field-control-gap);min-height:var(--solaris-form-field-control-height);padding:0 var(--solaris-form-field-control-padding-x);box-sizing:border-box;border-width:var(--solaris-form-field-control-border-width);border-style:solid;border-color:var(--solaris-form-field-control-border-color);border-radius:var(--solaris-form-field-control-radius);background:var(--solaris-form-field-control-background);transition:border-color var(--solaris-motion-duration-fast) ease,box-shadow var(--solaris-motion-duration-fast) ease}:host([data-has-prefix]) .solaris-form-field__control-wrapper{padding-left:0}.solaris-form-field__control-wrapper[data-connected-side=bottom]{border-bottom-left-radius:0;border-bottom-right-radius:0}.solaris-form-field__control-wrapper[data-connected-side=top]{border-top-left-radius:0;border-top-right-radius:0}.solaris-form-field__control{display:flex;flex:1;align-items:center;min-width:0}.solaris-form-field__affix{display:flex;flex:0 0 auto;align-self:stretch;align-items:center;justify-content:center;min-width:0;box-sizing:border-box;line-height:1;cursor:default}.solaris-form-field__affix[data-empty]{display:none}.solaris-form-field__affix--prefix{inline-size:var(--solaris-form-field-control-height);color:var(--solaris-form-field-prefix-color);border-inline-end:var(--solaris-border-width-sm) solid var(--solaris-border-subtle);transition:color var(--solaris-motion-duration-fast) ease}.solaris-form-field__affix--suffix{color:var(--solaris-form-field-suffix-color);transition:color var(--solaris-motion-duration-slow) ease}.solaris-form-field__affix--prefix:hover,.solaris-form-field__affix--suffix:hover{color:var(--solaris-text-default)}:host ::ng-deep .solaris-form-prefix,:host ::ng-deep .solaris-form-suffix{display:inline-flex;flex:0 0 auto;align-self:auto;align-items:center;justify-content:center;color:inherit;border:0;line-height:1;cursor:inherit}:host ::ng-deep solaris-icon.solaris-form-prefix,:host ::ng-deep solaris-icon.solaris-form-suffix,:host ::ng-deep .solaris-form-prefix solaris-icon,:host ::ng-deep .solaris-form-suffix solaris-icon{inline-size:1em;block-size:1em;flex:0 0 auto;color:inherit;font-size:var(--solaris-font-size-lg);transition:color var(--solaris-motion-duration-slow) ease}:host([data-control-type=textarea]){min-width:0}:host([data-control-type=textarea]) .solaris-form-field__control-wrapper{padding-right:0;overflow:visible}:host([data-control-type=textarea]) .solaris-form-field__control{overflow:visible}:host([data-control-type=textarea][data-control-resize=horizontal]) .solaris-form-field__control-wrapper{width:100%;min-width:8rem;overflow:hidden;resize:horizontal}:host([data-control-type=textarea][data-control-resize=horizontal]) .solaris-form-field__control{min-width:0}:host([data-control-type=textarea][data-control-resize=horizontal]) ::ng-deep textarea[solaris-textarea]{display:block;width:100%;min-width:0;resize:none}:host([data-control-type=textarea][data-control-resize=both]) .solaris-form-field__control-wrapper{width:100%;min-width:8rem;min-height:var(--solaris-form-field-control-height);align-items:stretch;overflow:hidden;resize:both}:host([data-control-type=textarea][data-control-resize=both]) .solaris-form-field__control{align-items:stretch;min-width:0;min-height:0;overflow:hidden}:host([data-control-type=textarea][data-control-resize=both]) ::ng-deep textarea[solaris-textarea]{display:block;flex:1 1 auto;width:100%;height:100%;min-width:0;min-height:0;resize:none}.solaris-form-field__message-row{margin-top:var(--solaris-form-field-message-margin-top)}.solaris-form-field__hint{margin:var(--solaris-spacing-1);color:var(--solaris-form-field-hint-color);font-size:var(--solaris-form-field-hint-font-size)}.solaris-form-field__error{margin:var(--solaris-spacing-1);color:var(--solaris-form-field-error-color);font-size:var(--solaris-form-field-error-font-size)}:host([data-size=sm]){--solaris-form-field-control-gap: var(--solaris-spacing-1);--solaris-form-field-font-size: var(--solaris-font-size-sm);--solaris-form-field-control-height: var(--solaris-spacing-8);--solaris-form-field-control-padding-x: var(--solaris-spacing-2);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-1);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-1);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-size=md]){--solaris-form-field-control-height: var(--solaris-spacing-10);--solaris-form-field-control-gap: var(--solaris-spacing-2);--solaris-form-field-font-size: var(--solaris-font-size-md);--solaris-form-field-control-padding-x: var(--solaris-spacing-3);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-sm);--solaris-form-field-message-margin-top: var(--solaris-spacing-1);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-1);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-size=lg]){--solaris-form-field-control-height: var(--solaris-spacing-12);--solaris-form-field-control-gap: var(--solaris-spacing-2);--solaris-form-field-font-size: var(--solaris-font-size-lg);--solaris-form-field-control-padding-x: var(--solaris-spacing-4);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-md);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-2);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-2);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-density=compact]){--solaris-form-field-control-height: var(--solaris-density-min-height);--solaris-form-field-control-gap: var(--solaris-spacing-1);--solaris-form-field-font-size: var(--solaris-font-size-sm);--solaris-form-field-control-padding-x: var(--solaris-spacing-2);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-1);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-1);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-density=comfortable]){--solaris-form-field-control-height: var(--solaris-density-min-height);--solaris-form-field-control-gap: var(--solaris-spacing-2);--solaris-form-field-control-padding-x: var(--solaris-spacing-3);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-2);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-2);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-radius=none]){--solaris-form-field-control-radius: var(--solaris-radius-none)}:host([data-radius=sm]){--solaris-form-field-control-radius: var(--solaris-radius-sm)}:host([data-radius=md]){--solaris-form-field-control-radius: var(--solaris-radius-md)}:host([data-radius=lg]){--solaris-form-field-control-radius: var(--solaris-radius-lg)}:host([data-focused]){--solaris-form-field-control-border-color: var( --solaris-form-field-focus-ring-color )}:host([data-disabled]){--solaris-form-field-control-color: var( --solaris-text-disabled, var(--solaris-text-muted) );--solaris-form-field-control-background: var( --solaris-surface-disabled, var(--solaris-surface-muted) );opacity:var(--solaris-form-field-disabled-opacity);cursor:not-allowed}:host([data-readonly]){--solaris-form-field-control-border-color: var(--solaris-border-subtle);--solaris-form-field-control-background: var( --solaris-form-field-readonly-background )}:host([data-appearance=outline]),:host([data-appearance=surface]),:host([data-appearance=filled]){--solaris-form-field-disabled-opacity: .5;--solaris-form-field-focus-ring-width: 2px;--solaris-form-field-hint-color: var(--solaris-text-muted);--solaris-form-field-prefix-color: var(--solaris-text-muted);--solaris-form-field-suffix-color: var(--solaris-text-muted);--solaris-form-field-error-color: var(--solaris-danger-text);--solaris-form-field-label-color: var(--solaris-text-default);--solaris-form-field-optional-color: var(--solaris-text-muted);--solaris-form-field-focus-ring-color: var(--solaris-primary-base);--solaris-form-field-error-border-color: var(--solaris-danger-base);--solaris-form-field-label-font-weight: var(--solaris-font-weight-medium)}:host([data-appearance=outline]){--solaris-form-field-control-border-width: var(--solaris-border-width-sm);--solaris-form-field-control-background: var(--solaris-surface-base);--solaris-form-field-readonly-background: var(--solaris-surface-muted);--solaris-form-field-control-border-color: var(--solaris-border-subtle)}:host([data-appearance=surface]){--solaris-form-field-control-border-width: 0;--solaris-form-field-readonly-background: var(--solaris-surface-base);--solaris-form-field-control-background: var(--solaris-surface-subtle);--solaris-form-field-control-border-color: var(--solaris-border-subtle)}:host([data-appearance=filled]){--solaris-form-field-control-background: var(--solaris-surface-subtle);--solaris-form-field-readonly-background: var(--solaris-surface-muted);--solaris-form-field-control-border-color: var(--solaris-border-subtle);--solaris-form-field-control-border-width: var(--solaris-border-width-sm)}:host([data-invalid]){--solaris-form-field-control-border-color: var( --solaris-form-field-error-border-color )}:host([data-invalid][data-focused]){--solaris-form-field-control-border-color: var( --solaris-form-field-error-border-color );outline-color:var(--solaris-form-field-error-border-color)}\n"] });
|
|
395
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SolarisFormFieldComponent, isStandalone: true, selector: "solaris-form-field", inputs: { hintKey: { classPropertyName: "hintKey", publicName: "hintKey", isSignal: true, isRequired: false, transformFunction: null }, labelKey: { classPropertyName: "labelKey", publicName: "labelKey", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, errorKey: { classPropertyName: "errorKey", publicName: "errorKey", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, optionalLabel: { classPropertyName: "optionalLabel", publicName: "optionalLabel", isSignal: true, isRequired: false, transformFunction: null }, requiredLabel: { classPropertyName: "requiredLabel", publicName: "requiredLabel", isSignal: true, isRequired: false, transformFunction: null }, optionalLabelKey: { classPropertyName: "optionalLabelKey", publicName: "optionalLabelKey", isSignal: true, isRequired: false, transformFunction: null }, requiredLabelKey: { classPropertyName: "requiredLabelKey", publicName: "requiredLabelKey", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, optional: { classPropertyName: "optional", publicName: "optional", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "attr.data-radius": "radius()", "attr.data-bwignore": "\"true\"", "attr.data-appearance": "appearance()", "attr.data-density": "effectiveDensity()", "attr.data-control-type": "controlType()", "attr.data-control-resize": "controlResize()", "attr.data-invalid": "isInvalid() ? \"\" : null", "attr.data-focused": "isFocused() ? \"\" : null", "attr.data-has-prefix": "hasPrefix() ? \"\" : null", "attr.data-has-suffix": "hasSuffix() ? \"\" : null", "attr.data-disabled": "isEffectivelyDisabled() ? \"\" : null", "attr.data-readonly": "isEffectivelyReadonly() ? \"\" : null" } }, queries: [{ propertyName: "projectedLabel", first: true, predicate: SolarisFormLabelComponent, descendants: true }, { propertyName: "projectedHint", first: true, predicate: SolarisFormHintComponent, descendants: true }, { propertyName: "projectedError", first: true, predicate: SolarisFormErrorComponent, descendants: true }, { propertyName: "prefix", first: true, predicate: SolarisFormPrefixDirective, descendants: true }, { propertyName: "suffix", first: true, predicate: SolarisFormSuffixDirective, descendants: true }, { propertyName: "formControl", first: true, predicate: SolarisFormControl, descendants: true }, { propertyName: "formControlDirective", first: true, predicate: FormControlDirective, descendants: true }, { propertyName: "formControlName", first: true, predicate: FormControlName, descendants: true }, { propertyName: "ngModelDir", first: true, predicate: NgModel, descendants: true }], ngImport: i0, template: "@if (labelText() || hasProjectedLabel()) {\n <div class=\"solaris-form-field__label-row\">\n @if (hasProjectedLabel()) {\n <ng-content select=\"solaris-form-label\" />\n } @else if (labelText()) {\n <label\n class=\"solaris-form-field__label\"\n [id]=\"labelId\"\n [for]=\"controlId ?? undefined\"\n >\n {{ labelText() }}\n </label>\n }\n @if (optional()) {\n <span\n class=\"solaris-form-field__optional-marker\"\n [attr.aria-label]=\"optionalLabelText()\"\n >\n {{ optionalLabelText() }}\n </span>\n }\n @if (showCharacterCounter()) {\n <span\n class=\"solaris-form-field__character-counter\"\n aria-live=\"polite\"\n [attr.aria-label]=\"characterCounterText()\"\n [attr.data-severity]=\"characterCounterSeverity()\"\n >\n {{ characterCounterText() }}\n </span>\n }\n </div>\n}\n\n<div class=\"solaris-form-field__control-wrapper\">\n <span\n class=\"solaris-form-field__affix solaris-form-field__affix--prefix\"\n [attr.data-empty]=\"hasPrefix() ? null : ''\"\n >\n <ng-content select=\"[solaris-form-prefix]\" />\n </span>\n\n <div class=\"solaris-form-field__control\">\n <ng-content />\n </div>\n\n <span\n class=\"solaris-form-field__affix solaris-form-field__affix--suffix\"\n [attr.data-empty]=\"hasSuffix() ? null : ''\"\n >\n <ng-content select=\"[solaris-form-suffix]\" />\n </span>\n</div>\n\n@if (showError() || showHint()) {\n <div class=\"solaris-form-field__message-row\">\n @if (showError()) {\n <div class=\"solaris-form-field__error\" [id]=\"errorId\" role=\"alert\">\n @if (hasProjectedError()) {\n <ng-content select=\"solaris-form-error\" />\n } @else {\n {{ errorText() }}\n }\n </div>\n } @else if (showHint()) {\n <div class=\"solaris-form-field__hint\" [id]=\"hintId\">\n @if (hasProjectedHint()) {\n <ng-content select=\"solaris-form-hint\" />\n } @else {\n {{ hintText() }}\n }\n </div>\n }\n </div>\n}\n", styles: [":host{--solaris-form-field-font-size: initial;--solaris-form-field-hint-color: initial;--solaris-form-field-label-color: initial;--solaris-form-field-control-gap: initial;--solaris-form-field-error-color: initial;--solaris-form-field-prefix-color: initial;--solaris-form-field-suffix-color: initial;--solaris-form-field-control-color: initial;--solaris-form-field-control-height: initial;--solaris-form-field-control-radius: initial;--solaris-form-field-hint-font-size: initial;--solaris-form-field-optional-color: initial;--solaris-form-field-label-font-size: initial;--solaris-form-field-error-font-size: initial;--solaris-form-field-disabled-opacity: initial;--solaris-form-field-focus-ring-width: initial;--solaris-form-field-focus-ring-color: initial;--solaris-form-field-control-padding-x: initial;--solaris-form-field-label-font-weight: initial;--solaris-form-field-message-margin-top: initial;--solaris-form-field-optional-font-size: initial;--solaris-form-field-error-border-color: initial;--solaris-form-field-control-background: initial;--solaris-form-field-label-margin-bottom: initial;--solaris-form-field-readonly-background: initial;--solaris-form-field-control-border-color: initial;--solaris-form-field-control-border-width: initial;display:block;box-sizing:border-box;font-size:var(--solaris-form-field-font-size);font-family:var(--solaris-font-family-sans),system-ui}.solaris-form-field__label-row{display:flex;align-items:center;gap:var(--solaris-spacing-2);margin-bottom:var(--solaris-form-field-label-margin-bottom)}.solaris-form-field__label,::ng-deep .solaris-form-label{display:inline-block;color:var(--solaris-form-field-label-color);font-size:var(--solaris-form-field-label-font-size);font-weight:var(--solaris-form-field-label-font-weight);cursor:pointer}.solaris-form-field__optional-marker{color:var(--solaris-form-field-optional-color);font-size:var(--solaris-form-field-optional-font-size);white-space:nowrap}.solaris-form-field__character-counter{margin-left:auto;color:var(--solaris-form-field-optional-color);font-size:var(--solaris-form-field-optional-font-size);font-variant-numeric:tabular-nums;white-space:nowrap;transition:color var(--solaris-motion-duration-fast) ease}.solaris-form-field__character-counter[data-severity=warning]{color:var(--solaris-warning-text)}.solaris-form-field__character-counter[data-severity=danger]{color:var(--solaris-danger-text)}.solaris-form-field__control-wrapper{position:relative;display:flex;align-items:stretch;gap:var(--solaris-form-field-control-gap);min-height:var(--solaris-form-field-control-height);padding:0 var(--solaris-form-field-control-padding-x);box-sizing:border-box;border-width:var(--solaris-form-field-control-border-width);border-style:solid;border-color:var(--solaris-form-field-control-border-color);border-radius:var(--solaris-form-field-control-radius);background:var(--solaris-form-field-control-background);transition:border-color var(--solaris-motion-duration-fast) ease,box-shadow var(--solaris-motion-duration-fast) ease}:host([data-has-prefix]) .solaris-form-field__control-wrapper{padding-left:0}.solaris-form-field__control-wrapper[data-connected-side=bottom]{border-bottom-left-radius:0;border-bottom-right-radius:0}.solaris-form-field__control-wrapper[data-connected-side=top]{border-top-left-radius:0;border-top-right-radius:0}.solaris-form-field__control{display:flex;flex:1;align-items:center;min-width:0}.solaris-form-field__affix{display:flex;flex:0 0 auto;align-self:stretch;align-items:center;justify-content:center;min-width:0;box-sizing:border-box;line-height:1;cursor:default}.solaris-form-field__affix[data-empty]{display:none}.solaris-form-field__affix--prefix{inline-size:var(--solaris-form-field-control-height);color:var(--solaris-form-field-prefix-color);border-inline-end:var(--solaris-border-width-sm) solid var(--solaris-border-subtle);transition:color var(--solaris-motion-duration-fast) ease}.solaris-form-field__affix--suffix{color:var(--solaris-form-field-suffix-color);transition:color var(--solaris-motion-duration-slow) ease}.solaris-form-field__affix--prefix:hover,.solaris-form-field__affix--suffix:hover{color:var(--solaris-text-default)}:host ::ng-deep .solaris-form-prefix,:host ::ng-deep .solaris-form-suffix{display:inline-flex;flex:0 0 auto;align-self:auto;align-items:center;justify-content:center;color:inherit;border:0;line-height:1;cursor:inherit}:host ::ng-deep solaris-icon.solaris-form-prefix,:host ::ng-deep solaris-icon.solaris-form-suffix,:host ::ng-deep .solaris-form-prefix solaris-icon,:host ::ng-deep .solaris-form-suffix solaris-icon{inline-size:1em;block-size:1em;flex:0 0 auto;color:inherit;font-size:var(--solaris-font-size-lg);transition:color var(--solaris-motion-duration-slow) ease}:host([data-control-type=textarea]){min-width:0}:host([data-control-type=textarea]) .solaris-form-field__control-wrapper{padding-right:0;overflow:visible}:host([data-control-type=textarea]) .solaris-form-field__control{overflow:visible}:host([data-control-type=textarea][data-control-resize=horizontal]) .solaris-form-field__control-wrapper{width:100%;min-width:8rem;overflow:hidden;resize:horizontal}:host([data-control-type=textarea][data-control-resize=horizontal]) .solaris-form-field__control{min-width:0}:host([data-control-type=textarea][data-control-resize=horizontal]) ::ng-deep textarea[solaris-textarea]{display:block;width:100%;min-width:0;resize:none}:host([data-control-type=textarea][data-control-resize=both]) .solaris-form-field__control-wrapper{width:100%;min-width:8rem;min-height:var(--solaris-form-field-control-height);align-items:stretch;overflow:hidden;resize:both}:host([data-control-type=textarea][data-control-resize=both]) .solaris-form-field__control{align-items:stretch;min-width:0;min-height:0;overflow:hidden}:host([data-control-type=textarea][data-control-resize=both]) ::ng-deep textarea[solaris-textarea]{display:block;flex:1 1 auto;width:100%;height:100%;min-width:0;min-height:0;resize:none}.solaris-form-field__message-row{margin-top:var(--solaris-form-field-message-margin-top)}.solaris-form-field__hint{margin:var(--solaris-spacing-1);color:var(--solaris-form-field-hint-color);font-size:var(--solaris-form-field-hint-font-size)}.solaris-form-field__error{margin:var(--solaris-spacing-1);color:var(--solaris-form-field-error-color);font-size:var(--solaris-form-field-error-font-size)}:host([data-size=sm]){--solaris-form-field-control-gap: var(--solaris-spacing-1);--solaris-form-field-font-size: var(--solaris-font-size-sm);--solaris-form-field-control-height: var(--solaris-spacing-8);--solaris-form-field-control-padding-x: var(--solaris-spacing-2);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-1);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-1);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-size=md]){--solaris-form-field-control-height: var(--solaris-spacing-10);--solaris-form-field-control-gap: var(--solaris-spacing-2);--solaris-form-field-font-size: var(--solaris-font-size-md);--solaris-form-field-control-padding-x: var(--solaris-spacing-3);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-sm);--solaris-form-field-message-margin-top: var(--solaris-spacing-1);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-1);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-size=lg]){--solaris-form-field-control-height: var(--solaris-spacing-12);--solaris-form-field-control-gap: var(--solaris-spacing-2);--solaris-form-field-font-size: var(--solaris-font-size-lg);--solaris-form-field-control-padding-x: var(--solaris-spacing-4);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-md);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-2);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-2);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-density=compact]){--solaris-form-field-control-height: var(--solaris-density-min-height);--solaris-form-field-control-gap: var(--solaris-spacing-1);--solaris-form-field-font-size: var(--solaris-font-size-sm);--solaris-form-field-control-padding-x: var(--solaris-spacing-2);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-1);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-1);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-density=comfortable]){--solaris-form-field-control-height: var(--solaris-density-min-height);--solaris-form-field-control-gap: var(--solaris-spacing-2);--solaris-form-field-control-padding-x: var(--solaris-spacing-3);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-2);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-2);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-radius=none]){--solaris-form-field-control-radius: var(--solaris-radius-none)}:host([data-radius=sm]){--solaris-form-field-control-radius: var(--solaris-radius-sm)}:host([data-radius=md]){--solaris-form-field-control-radius: var(--solaris-radius-md)}:host([data-radius=lg]){--solaris-form-field-control-radius: var(--solaris-radius-lg)}:host([data-focused]){--solaris-form-field-control-border-color: var( --solaris-form-field-focus-ring-color )}:host([data-disabled]){--solaris-form-field-control-color: var( --solaris-text-disabled, var(--solaris-text-muted) );--solaris-form-field-control-background: var( --solaris-surface-disabled, var(--solaris-surface-muted) );opacity:var(--solaris-form-field-disabled-opacity);cursor:not-allowed}:host([data-readonly]){--solaris-form-field-control-border-color: var(--solaris-border-subtle);--solaris-form-field-control-background: var( --solaris-form-field-readonly-background )}:host([data-appearance=outline]),:host([data-appearance=surface]),:host([data-appearance=filled]){--solaris-form-field-disabled-opacity: .5;--solaris-form-field-focus-ring-width: 2px;--solaris-form-field-hint-color: var(--solaris-text-muted);--solaris-form-field-prefix-color: var(--solaris-text-muted);--solaris-form-field-suffix-color: var(--solaris-text-muted);--solaris-form-field-error-color: var(--solaris-danger-text);--solaris-form-field-label-color: var(--solaris-text-default);--solaris-form-field-optional-color: var(--solaris-text-muted);--solaris-form-field-focus-ring-color: var(--solaris-primary-base);--solaris-form-field-error-border-color: var(--solaris-danger-base);--solaris-form-field-label-font-weight: var(--solaris-font-weight-medium)}:host([data-appearance=outline]){--solaris-form-field-control-border-width: var(--solaris-border-width-sm);--solaris-form-field-control-background: var(--solaris-surface-base);--solaris-form-field-readonly-background: var(--solaris-surface-muted);--solaris-form-field-control-border-color: var(--solaris-border-subtle)}:host([data-appearance=surface]){--solaris-form-field-control-border-width: 0;--solaris-form-field-readonly-background: var(--solaris-surface-base);--solaris-form-field-control-background: var(--solaris-surface-subtle);--solaris-form-field-control-border-color: var(--solaris-border-subtle)}:host([data-appearance=filled]){--solaris-form-field-control-background: var(--solaris-surface-subtle);--solaris-form-field-readonly-background: var(--solaris-surface-muted);--solaris-form-field-control-border-color: var(--solaris-border-subtle);--solaris-form-field-control-border-width: var(--solaris-border-width-sm)}:host([data-invalid]){--solaris-form-field-control-border-color: var( --solaris-form-field-error-border-color )}:host([data-invalid][data-focused]){--solaris-form-field-control-border-color: var( --solaris-form-field-error-border-color );outline-color:var(--solaris-form-field-error-border-color)}\n"] });
|
|
348
396
|
}
|
|
349
397
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisFormFieldComponent, decorators: [{
|
|
350
398
|
type: Component,
|
|
@@ -362,7 +410,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
362
410
|
'[attr.data-has-suffix]': 'hasSuffix() ? "" : null',
|
|
363
411
|
'[attr.data-disabled]': 'isEffectivelyDisabled() ? "" : null',
|
|
364
412
|
'[attr.data-readonly]': 'isEffectivelyReadonly() ? "" : null',
|
|
365
|
-
}, template: "@if (labelText() || hasProjectedLabel()) {\n <div class=\"solaris-form-field__label-row\">\n @if (hasProjectedLabel()) {\n <ng-content select=\"solaris-form-label\" />\n } @else if (labelText()) {\n <label\n class=\"solaris-form-field__label\"\n [id]=\"labelId\"\n [for]=\"controlId ?? undefined\"\n >\n {{ labelText() }}\n </label>\n }\n @if (optional()) {\n <span\n class=\"solaris-form-field__optional-marker\"\n [attr.aria-label]=\"optionalLabelText()\"\n >\n {{ optionalLabelText() }}\n </span>\n }\n </div>\n}\n\n<div class=\"solaris-form-field__control-wrapper\">\n <span\n class=\"solaris-form-field__affix solaris-form-field__affix--prefix\"\n [attr.data-empty]=\"hasPrefix() ? null : ''\"\n >\n <ng-content select=\"[solaris-form-prefix]\" />\n </span>\n\n <div class=\"solaris-form-field__control\">\n <ng-content />\n </div>\n\n <span\n class=\"solaris-form-field__affix solaris-form-field__affix--suffix\"\n [attr.data-empty]=\"hasSuffix() ? null : ''\"\n >\n <ng-content select=\"[solaris-form-suffix]\" />\n </span>\n</div>\n\n<div class=\"solaris-form-field__message-row\">\n @if (showError()) {\n <div class=\"solaris-form-field__error\" [id]=\"errorId\" role=\"alert\">\n @if (hasProjectedError()) {\n <ng-content select=\"solaris-form-error\" />\n } @else {\n {{ errorText() }}\n }\n </div>\n } @else if (showHint()) {\n <div class=\"solaris-form-field__hint\" [id]=\"hintId\">\n @if (hasProjectedHint()) {\n <ng-content select=\"solaris-form-hint\" />\n } @else {\n {{ hintText() }}\n }\n </div>\n }\n</div>\n", styles: [":host{--solaris-form-field-font-size: initial;--solaris-form-field-hint-color: initial;--solaris-form-field-label-color: initial;--solaris-form-field-control-gap: initial;--solaris-form-field-error-color: initial;--solaris-form-field-prefix-color: initial;--solaris-form-field-suffix-color: initial;--solaris-form-field-control-color: initial;--solaris-form-field-control-height: initial;--solaris-form-field-control-radius: initial;--solaris-form-field-hint-font-size: initial;--solaris-form-field-optional-color: initial;--solaris-form-field-label-font-size: initial;--solaris-form-field-error-font-size: initial;--solaris-form-field-disabled-opacity: initial;--solaris-form-field-focus-ring-width: initial;--solaris-form-field-focus-ring-color: initial;--solaris-form-field-control-padding-x: initial;--solaris-form-field-label-font-weight: initial;--solaris-form-field-message-margin-top: initial;--solaris-form-field-optional-font-size: initial;--solaris-form-field-error-border-color: initial;--solaris-form-field-control-background: initial;--solaris-form-field-label-margin-bottom: initial;--solaris-form-field-readonly-background: initial;--solaris-form-field-control-border-color: initial;--solaris-form-field-control-border-width: initial;display:block;box-sizing:border-box;font-size:var(--solaris-form-field-font-size);font-family:var(--solaris-font-family-sans),system-ui}.solaris-form-field__label-row{display:flex;align-items:center;gap:var(--solaris-spacing-2);margin-bottom:var(--solaris-form-field-label-margin-bottom)}.solaris-form-field__label,::ng-deep .solaris-form-label{display:inline-block;color:var(--solaris-form-field-label-color);font-size:var(--solaris-form-field-label-font-size);font-weight:var(--solaris-form-field-label-font-weight);cursor:pointer}.solaris-form-field__optional-marker{color:var(--solaris-form-field-optional-color);font-size:var(--solaris-form-field-optional-font-size);white-space:nowrap}.solaris-form-field__control-wrapper{position:relative;display:flex;align-items:stretch;gap:var(--solaris-form-field-control-gap);min-height:var(--solaris-form-field-control-height);padding:0 var(--solaris-form-field-control-padding-x);box-sizing:border-box;border-width:var(--solaris-form-field-control-border-width);border-style:solid;border-color:var(--solaris-form-field-control-border-color);border-radius:var(--solaris-form-field-control-radius);background:var(--solaris-form-field-control-background);transition:border-color var(--solaris-motion-duration-fast) ease,box-shadow var(--solaris-motion-duration-fast) ease}:host([data-has-prefix]) .solaris-form-field__control-wrapper{padding-left:0}.solaris-form-field__control-wrapper[data-connected-side=bottom]{border-bottom-left-radius:0;border-bottom-right-radius:0}.solaris-form-field__control-wrapper[data-connected-side=top]{border-top-left-radius:0;border-top-right-radius:0}.solaris-form-field__control{display:flex;flex:1;align-items:center;min-width:0}.solaris-form-field__affix{display:flex;flex:0 0 auto;align-self:stretch;align-items:center;justify-content:center;min-width:0;box-sizing:border-box;line-height:1;cursor:default}.solaris-form-field__affix[data-empty]{display:none}.solaris-form-field__affix--prefix{inline-size:var(--solaris-form-field-control-height);color:var(--solaris-form-field-prefix-color);border-inline-end:var(--solaris-border-width-sm) solid var(--solaris-border-subtle);transition:color var(--solaris-motion-duration-fast) ease}.solaris-form-field__affix--suffix{color:var(--solaris-form-field-suffix-color);transition:color var(--solaris-motion-duration-slow) ease}.solaris-form-field__affix--prefix:hover,.solaris-form-field__affix--suffix:hover{color:var(--solaris-text-default)}:host ::ng-deep .solaris-form-prefix,:host ::ng-deep .solaris-form-suffix{display:inline-flex;flex:0 0 auto;align-self:auto;align-items:center;justify-content:center;color:inherit;border:0;line-height:1;cursor:inherit}:host ::ng-deep solaris-icon.solaris-form-prefix,:host ::ng-deep solaris-icon.solaris-form-suffix,:host ::ng-deep .solaris-form-prefix solaris-icon,:host ::ng-deep .solaris-form-suffix solaris-icon{inline-size:1em;block-size:1em;flex:0 0 auto;color:inherit;font-size:var(--solaris-font-size-lg);transition:color var(--solaris-motion-duration-slow) ease}:host([data-control-type=textarea]){min-width:0}:host([data-control-type=textarea]) .solaris-form-field__control-wrapper{padding-right:0;overflow:visible}:host([data-control-type=textarea]) .solaris-form-field__control{overflow:visible}:host([data-control-type=textarea][data-control-resize=horizontal]) .solaris-form-field__control-wrapper{width:100%;min-width:8rem;overflow:hidden;resize:horizontal}:host([data-control-type=textarea][data-control-resize=horizontal]) .solaris-form-field__control{min-width:0}:host([data-control-type=textarea][data-control-resize=horizontal]) ::ng-deep textarea[solaris-textarea]{display:block;width:100%;min-width:0;resize:none}:host([data-control-type=textarea][data-control-resize=both]) .solaris-form-field__control-wrapper{width:100%;min-width:8rem;min-height:var(--solaris-form-field-control-height);align-items:stretch;overflow:hidden;resize:both}:host([data-control-type=textarea][data-control-resize=both]) .solaris-form-field__control{align-items:stretch;min-width:0;min-height:0;overflow:hidden}:host([data-control-type=textarea][data-control-resize=both]) ::ng-deep textarea[solaris-textarea]{display:block;flex:1 1 auto;width:100%;height:100%;min-width:0;min-height:0;resize:none}.solaris-form-field__message-row{margin-top:var(--solaris-form-field-message-margin-top)}.solaris-form-field__hint{margin:var(--solaris-spacing-1);color:var(--solaris-form-field-hint-color);font-size:var(--solaris-form-field-hint-font-size)}.solaris-form-field__error{margin:var(--solaris-spacing-1);color:var(--solaris-form-field-error-color);font-size:var(--solaris-form-field-error-font-size)}:host([data-size=sm]){--solaris-form-field-control-gap: var(--solaris-spacing-1);--solaris-form-field-font-size: var(--solaris-font-size-sm);--solaris-form-field-control-height: var(--solaris-spacing-8);--solaris-form-field-control-padding-x: var(--solaris-spacing-2);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-1);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-1);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-size=md]){--solaris-form-field-control-height: var(--solaris-spacing-10);--solaris-form-field-control-gap: var(--solaris-spacing-2);--solaris-form-field-font-size: var(--solaris-font-size-md);--solaris-form-field-control-padding-x: var(--solaris-spacing-3);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-sm);--solaris-form-field-message-margin-top: var(--solaris-spacing-1);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-1);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-size=lg]){--solaris-form-field-control-height: var(--solaris-spacing-12);--solaris-form-field-control-gap: var(--solaris-spacing-2);--solaris-form-field-font-size: var(--solaris-font-size-lg);--solaris-form-field-control-padding-x: var(--solaris-spacing-4);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-md);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-2);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-2);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-density=compact]){--solaris-form-field-control-height: var(--solaris-density-min-height);--solaris-form-field-control-gap: var(--solaris-spacing-1);--solaris-form-field-font-size: var(--solaris-font-size-sm);--solaris-form-field-control-padding-x: var(--solaris-spacing-2);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-1);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-1);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-density=comfortable]){--solaris-form-field-control-height: var(--solaris-density-min-height);--solaris-form-field-control-gap: var(--solaris-spacing-2);--solaris-form-field-control-padding-x: var(--solaris-spacing-3);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-2);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-2);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-radius=none]){--solaris-form-field-control-radius: var(--solaris-radius-none)}:host([data-radius=sm]){--solaris-form-field-control-radius: var(--solaris-radius-sm)}:host([data-radius=md]){--solaris-form-field-control-radius: var(--solaris-radius-md)}:host([data-radius=lg]){--solaris-form-field-control-radius: var(--solaris-radius-lg)}:host([data-focused]){--solaris-form-field-control-border-color: var( --solaris-form-field-focus-ring-color )}:host([data-disabled]){--solaris-form-field-control-color: var( --solaris-text-disabled, var(--solaris-text-muted) );--solaris-form-field-control-background: var( --solaris-surface-disabled, var(--solaris-surface-muted) );opacity:var(--solaris-form-field-disabled-opacity);cursor:not-allowed}:host([data-readonly]){--solaris-form-field-control-border-color: var(--solaris-border-subtle);--solaris-form-field-control-background: var( --solaris-form-field-readonly-background )}:host([data-appearance=outline]),:host([data-appearance=surface]),:host([data-appearance=filled]){--solaris-form-field-disabled-opacity: .5;--solaris-form-field-focus-ring-width: 2px;--solaris-form-field-hint-color: var(--solaris-text-muted);--solaris-form-field-prefix-color: var(--solaris-text-muted);--solaris-form-field-suffix-color: var(--solaris-text-muted);--solaris-form-field-error-color: var(--solaris-danger-text);--solaris-form-field-label-color: var(--solaris-text-default);--solaris-form-field-optional-color: var(--solaris-text-muted);--solaris-form-field-focus-ring-color: var(--solaris-primary-base);--solaris-form-field-error-border-color: var(--solaris-danger-base);--solaris-form-field-label-font-weight: var(--solaris-font-weight-medium)}:host([data-appearance=outline]){--solaris-form-field-control-border-width: var(--solaris-border-width-sm);--solaris-form-field-control-background: var(--solaris-surface-base);--solaris-form-field-readonly-background: var(--solaris-surface-muted);--solaris-form-field-control-border-color: var(--solaris-border-subtle)}:host([data-appearance=surface]){--solaris-form-field-control-border-width: 0;--solaris-form-field-readonly-background: var(--solaris-surface-base);--solaris-form-field-control-background: var(--solaris-surface-subtle);--solaris-form-field-control-border-color: var(--solaris-border-subtle)}:host([data-appearance=filled]){--solaris-form-field-control-background: var(--solaris-surface-subtle);--solaris-form-field-readonly-background: var(--solaris-surface-muted);--solaris-form-field-control-border-color: var(--solaris-border-subtle);--solaris-form-field-control-border-width: var(--solaris-border-width-sm)}:host([data-invalid]){--solaris-form-field-control-border-color: var( --solaris-form-field-error-border-color )}:host([data-invalid][data-focused]){--solaris-form-field-control-border-color: var( --solaris-form-field-error-border-color );outline-color:var(--solaris-form-field-error-border-color)}\n"] }]
|
|
413
|
+
}, template: "@if (labelText() || hasProjectedLabel()) {\n <div class=\"solaris-form-field__label-row\">\n @if (hasProjectedLabel()) {\n <ng-content select=\"solaris-form-label\" />\n } @else if (labelText()) {\n <label\n class=\"solaris-form-field__label\"\n [id]=\"labelId\"\n [for]=\"controlId ?? undefined\"\n >\n {{ labelText() }}\n </label>\n }\n @if (optional()) {\n <span\n class=\"solaris-form-field__optional-marker\"\n [attr.aria-label]=\"optionalLabelText()\"\n >\n {{ optionalLabelText() }}\n </span>\n }\n @if (showCharacterCounter()) {\n <span\n class=\"solaris-form-field__character-counter\"\n aria-live=\"polite\"\n [attr.aria-label]=\"characterCounterText()\"\n [attr.data-severity]=\"characterCounterSeverity()\"\n >\n {{ characterCounterText() }}\n </span>\n }\n </div>\n}\n\n<div class=\"solaris-form-field__control-wrapper\">\n <span\n class=\"solaris-form-field__affix solaris-form-field__affix--prefix\"\n [attr.data-empty]=\"hasPrefix() ? null : ''\"\n >\n <ng-content select=\"[solaris-form-prefix]\" />\n </span>\n\n <div class=\"solaris-form-field__control\">\n <ng-content />\n </div>\n\n <span\n class=\"solaris-form-field__affix solaris-form-field__affix--suffix\"\n [attr.data-empty]=\"hasSuffix() ? null : ''\"\n >\n <ng-content select=\"[solaris-form-suffix]\" />\n </span>\n</div>\n\n@if (showError() || showHint()) {\n <div class=\"solaris-form-field__message-row\">\n @if (showError()) {\n <div class=\"solaris-form-field__error\" [id]=\"errorId\" role=\"alert\">\n @if (hasProjectedError()) {\n <ng-content select=\"solaris-form-error\" />\n } @else {\n {{ errorText() }}\n }\n </div>\n } @else if (showHint()) {\n <div class=\"solaris-form-field__hint\" [id]=\"hintId\">\n @if (hasProjectedHint()) {\n <ng-content select=\"solaris-form-hint\" />\n } @else {\n {{ hintText() }}\n }\n </div>\n }\n </div>\n}\n", styles: [":host{--solaris-form-field-font-size: initial;--solaris-form-field-hint-color: initial;--solaris-form-field-label-color: initial;--solaris-form-field-control-gap: initial;--solaris-form-field-error-color: initial;--solaris-form-field-prefix-color: initial;--solaris-form-field-suffix-color: initial;--solaris-form-field-control-color: initial;--solaris-form-field-control-height: initial;--solaris-form-field-control-radius: initial;--solaris-form-field-hint-font-size: initial;--solaris-form-field-optional-color: initial;--solaris-form-field-label-font-size: initial;--solaris-form-field-error-font-size: initial;--solaris-form-field-disabled-opacity: initial;--solaris-form-field-focus-ring-width: initial;--solaris-form-field-focus-ring-color: initial;--solaris-form-field-control-padding-x: initial;--solaris-form-field-label-font-weight: initial;--solaris-form-field-message-margin-top: initial;--solaris-form-field-optional-font-size: initial;--solaris-form-field-error-border-color: initial;--solaris-form-field-control-background: initial;--solaris-form-field-label-margin-bottom: initial;--solaris-form-field-readonly-background: initial;--solaris-form-field-control-border-color: initial;--solaris-form-field-control-border-width: initial;display:block;box-sizing:border-box;font-size:var(--solaris-form-field-font-size);font-family:var(--solaris-font-family-sans),system-ui}.solaris-form-field__label-row{display:flex;align-items:center;gap:var(--solaris-spacing-2);margin-bottom:var(--solaris-form-field-label-margin-bottom)}.solaris-form-field__label,::ng-deep .solaris-form-label{display:inline-block;color:var(--solaris-form-field-label-color);font-size:var(--solaris-form-field-label-font-size);font-weight:var(--solaris-form-field-label-font-weight);cursor:pointer}.solaris-form-field__optional-marker{color:var(--solaris-form-field-optional-color);font-size:var(--solaris-form-field-optional-font-size);white-space:nowrap}.solaris-form-field__character-counter{margin-left:auto;color:var(--solaris-form-field-optional-color);font-size:var(--solaris-form-field-optional-font-size);font-variant-numeric:tabular-nums;white-space:nowrap;transition:color var(--solaris-motion-duration-fast) ease}.solaris-form-field__character-counter[data-severity=warning]{color:var(--solaris-warning-text)}.solaris-form-field__character-counter[data-severity=danger]{color:var(--solaris-danger-text)}.solaris-form-field__control-wrapper{position:relative;display:flex;align-items:stretch;gap:var(--solaris-form-field-control-gap);min-height:var(--solaris-form-field-control-height);padding:0 var(--solaris-form-field-control-padding-x);box-sizing:border-box;border-width:var(--solaris-form-field-control-border-width);border-style:solid;border-color:var(--solaris-form-field-control-border-color);border-radius:var(--solaris-form-field-control-radius);background:var(--solaris-form-field-control-background);transition:border-color var(--solaris-motion-duration-fast) ease,box-shadow var(--solaris-motion-duration-fast) ease}:host([data-has-prefix]) .solaris-form-field__control-wrapper{padding-left:0}.solaris-form-field__control-wrapper[data-connected-side=bottom]{border-bottom-left-radius:0;border-bottom-right-radius:0}.solaris-form-field__control-wrapper[data-connected-side=top]{border-top-left-radius:0;border-top-right-radius:0}.solaris-form-field__control{display:flex;flex:1;align-items:center;min-width:0}.solaris-form-field__affix{display:flex;flex:0 0 auto;align-self:stretch;align-items:center;justify-content:center;min-width:0;box-sizing:border-box;line-height:1;cursor:default}.solaris-form-field__affix[data-empty]{display:none}.solaris-form-field__affix--prefix{inline-size:var(--solaris-form-field-control-height);color:var(--solaris-form-field-prefix-color);border-inline-end:var(--solaris-border-width-sm) solid var(--solaris-border-subtle);transition:color var(--solaris-motion-duration-fast) ease}.solaris-form-field__affix--suffix{color:var(--solaris-form-field-suffix-color);transition:color var(--solaris-motion-duration-slow) ease}.solaris-form-field__affix--prefix:hover,.solaris-form-field__affix--suffix:hover{color:var(--solaris-text-default)}:host ::ng-deep .solaris-form-prefix,:host ::ng-deep .solaris-form-suffix{display:inline-flex;flex:0 0 auto;align-self:auto;align-items:center;justify-content:center;color:inherit;border:0;line-height:1;cursor:inherit}:host ::ng-deep solaris-icon.solaris-form-prefix,:host ::ng-deep solaris-icon.solaris-form-suffix,:host ::ng-deep .solaris-form-prefix solaris-icon,:host ::ng-deep .solaris-form-suffix solaris-icon{inline-size:1em;block-size:1em;flex:0 0 auto;color:inherit;font-size:var(--solaris-font-size-lg);transition:color var(--solaris-motion-duration-slow) ease}:host([data-control-type=textarea]){min-width:0}:host([data-control-type=textarea]) .solaris-form-field__control-wrapper{padding-right:0;overflow:visible}:host([data-control-type=textarea]) .solaris-form-field__control{overflow:visible}:host([data-control-type=textarea][data-control-resize=horizontal]) .solaris-form-field__control-wrapper{width:100%;min-width:8rem;overflow:hidden;resize:horizontal}:host([data-control-type=textarea][data-control-resize=horizontal]) .solaris-form-field__control{min-width:0}:host([data-control-type=textarea][data-control-resize=horizontal]) ::ng-deep textarea[solaris-textarea]{display:block;width:100%;min-width:0;resize:none}:host([data-control-type=textarea][data-control-resize=both]) .solaris-form-field__control-wrapper{width:100%;min-width:8rem;min-height:var(--solaris-form-field-control-height);align-items:stretch;overflow:hidden;resize:both}:host([data-control-type=textarea][data-control-resize=both]) .solaris-form-field__control{align-items:stretch;min-width:0;min-height:0;overflow:hidden}:host([data-control-type=textarea][data-control-resize=both]) ::ng-deep textarea[solaris-textarea]{display:block;flex:1 1 auto;width:100%;height:100%;min-width:0;min-height:0;resize:none}.solaris-form-field__message-row{margin-top:var(--solaris-form-field-message-margin-top)}.solaris-form-field__hint{margin:var(--solaris-spacing-1);color:var(--solaris-form-field-hint-color);font-size:var(--solaris-form-field-hint-font-size)}.solaris-form-field__error{margin:var(--solaris-spacing-1);color:var(--solaris-form-field-error-color);font-size:var(--solaris-form-field-error-font-size)}:host([data-size=sm]){--solaris-form-field-control-gap: var(--solaris-spacing-1);--solaris-form-field-font-size: var(--solaris-font-size-sm);--solaris-form-field-control-height: var(--solaris-spacing-8);--solaris-form-field-control-padding-x: var(--solaris-spacing-2);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-1);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-1);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-size=md]){--solaris-form-field-control-height: var(--solaris-spacing-10);--solaris-form-field-control-gap: var(--solaris-spacing-2);--solaris-form-field-font-size: var(--solaris-font-size-md);--solaris-form-field-control-padding-x: var(--solaris-spacing-3);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-sm);--solaris-form-field-message-margin-top: var(--solaris-spacing-1);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-1);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-size=lg]){--solaris-form-field-control-height: var(--solaris-spacing-12);--solaris-form-field-control-gap: var(--solaris-spacing-2);--solaris-form-field-font-size: var(--solaris-font-size-lg);--solaris-form-field-control-padding-x: var(--solaris-spacing-4);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-md);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-2);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-2);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-density=compact]){--solaris-form-field-control-height: var(--solaris-density-min-height);--solaris-form-field-control-gap: var(--solaris-spacing-1);--solaris-form-field-font-size: var(--solaris-font-size-sm);--solaris-form-field-control-padding-x: var(--solaris-spacing-2);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-label-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-1);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-1);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-density=comfortable]){--solaris-form-field-control-height: var(--solaris-density-min-height);--solaris-form-field-control-gap: var(--solaris-spacing-2);--solaris-form-field-control-padding-x: var(--solaris-spacing-3);--solaris-form-field-hint-font-size: var(--solaris-font-size-xs);--solaris-form-field-error-font-size: var(--solaris-font-size-xs);--solaris-form-field-message-margin-top: var(--solaris-spacing-2);--solaris-form-field-label-margin-bottom: var(--solaris-spacing-2);--solaris-form-field-optional-font-size: var(--solaris-font-size-xs)}:host([data-radius=none]){--solaris-form-field-control-radius: var(--solaris-radius-none)}:host([data-radius=sm]){--solaris-form-field-control-radius: var(--solaris-radius-sm)}:host([data-radius=md]){--solaris-form-field-control-radius: var(--solaris-radius-md)}:host([data-radius=lg]){--solaris-form-field-control-radius: var(--solaris-radius-lg)}:host([data-focused]){--solaris-form-field-control-border-color: var( --solaris-form-field-focus-ring-color )}:host([data-disabled]){--solaris-form-field-control-color: var( --solaris-text-disabled, var(--solaris-text-muted) );--solaris-form-field-control-background: var( --solaris-surface-disabled, var(--solaris-surface-muted) );opacity:var(--solaris-form-field-disabled-opacity);cursor:not-allowed}:host([data-readonly]){--solaris-form-field-control-border-color: var(--solaris-border-subtle);--solaris-form-field-control-background: var( --solaris-form-field-readonly-background )}:host([data-appearance=outline]),:host([data-appearance=surface]),:host([data-appearance=filled]){--solaris-form-field-disabled-opacity: .5;--solaris-form-field-focus-ring-width: 2px;--solaris-form-field-hint-color: var(--solaris-text-muted);--solaris-form-field-prefix-color: var(--solaris-text-muted);--solaris-form-field-suffix-color: var(--solaris-text-muted);--solaris-form-field-error-color: var(--solaris-danger-text);--solaris-form-field-label-color: var(--solaris-text-default);--solaris-form-field-optional-color: var(--solaris-text-muted);--solaris-form-field-focus-ring-color: var(--solaris-primary-base);--solaris-form-field-error-border-color: var(--solaris-danger-base);--solaris-form-field-label-font-weight: var(--solaris-font-weight-medium)}:host([data-appearance=outline]){--solaris-form-field-control-border-width: var(--solaris-border-width-sm);--solaris-form-field-control-background: var(--solaris-surface-base);--solaris-form-field-readonly-background: var(--solaris-surface-muted);--solaris-form-field-control-border-color: var(--solaris-border-subtle)}:host([data-appearance=surface]){--solaris-form-field-control-border-width: 0;--solaris-form-field-readonly-background: var(--solaris-surface-base);--solaris-form-field-control-background: var(--solaris-surface-subtle);--solaris-form-field-control-border-color: var(--solaris-border-subtle)}:host([data-appearance=filled]){--solaris-form-field-control-background: var(--solaris-surface-subtle);--solaris-form-field-readonly-background: var(--solaris-surface-muted);--solaris-form-field-control-border-color: var(--solaris-border-subtle);--solaris-form-field-control-border-width: var(--solaris-border-width-sm)}:host([data-invalid]){--solaris-form-field-control-border-color: var( --solaris-form-field-error-border-color )}:host([data-invalid][data-focused]){--solaris-form-field-control-border-color: var( --solaris-form-field-error-border-color );outline-color:var(--solaris-form-field-error-border-color)}\n"] }]
|
|
366
414
|
}], ctorParameters: () => [], propDecorators: { hintKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "hintKey", required: false }] }], labelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelKey", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], errorKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorKey", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], optionalLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionalLabel", required: false }] }], requiredLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "requiredLabel", required: false }] }], optionalLabelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionalLabelKey", required: false }] }], requiredLabelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "requiredLabelKey", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], optional: [{ type: i0.Input, args: [{ isSignal: true, alias: "optional", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], control: [{ type: i0.Input, args: [{ isSignal: true, alias: "control", required: false }] }], projectedLabel: [{
|
|
367
415
|
type: ContentChild,
|
|
368
416
|
args: [SolarisFormLabelComponent]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-field.component.js","sourceRoot":"","sources":["../../../../../../../../../packages/angular/src/lib/components/forms/form-field/component/form-field.component.ts","../../../../../../../../../packages/angular/src/lib/components/forms/form-field/component/form-field.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\r\n Component,\r\n input,\r\n computed,\r\n signal,\r\n effect,\r\n ContentChild,\r\n AfterContentInit,\r\n OnDestroy,\r\n ElementRef,\r\n inject,\r\n NgZone,\r\n} from '@angular/core';\r\nimport { FormControlDirective, FormControlName, NgModel } from '@angular/forms';\r\n\r\nimport { SolarisFormPrefixDirective } from '../directives/form-prefix.directive';\r\nimport { SolarisFormSuffixDirective } from '../directives/form-suffix.directive';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SolarisFormControl } from '../model/form-control.contract';\r\nimport { SolarisFormLabelComponent } from './form-label.component';\r\nimport { SolarisFormErrorComponent } from './form-error.component';\r\nimport { SolarisFormHintComponent } from './form-hint.component';\r\n\r\nimport type {\r\n SolarisFormFieldAppearance,\r\n SolarisFormFieldSize,\r\n SolarisFormFieldDensity,\r\n SolarisFormFieldRadius,\r\n ControlResize,\r\n} from '../model/form-field.types';\r\n\r\nlet nextId = 0;\r\nfunction generateId(): string {\r\n return `solaris-form-field-${++nextId}`;\r\n}\r\n\r\n@Component({\r\n selector: 'solaris-form-field',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './form-field.component.html',\r\n styleUrls: ['./form-field.component.scss'],\r\n host: {\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-radius]': 'radius()',\r\n '[attr.data-bwignore]': '\"true\"',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-density]': 'effectiveDensity()',\r\n '[attr.data-control-type]': 'controlType()',\r\n '[attr.data-control-resize]': 'controlResize()',\r\n '[attr.data-invalid]': 'isInvalid() ? \"\" : null',\r\n '[attr.data-focused]': 'isFocused() ? \"\" : null',\r\n '[attr.data-has-prefix]': 'hasPrefix() ? \"\" : null',\r\n '[attr.data-has-suffix]': 'hasSuffix() ? \"\" : null',\r\n '[attr.data-disabled]': 'isEffectivelyDisabled() ? \"\" : null',\r\n '[attr.data-readonly]': 'isEffectivelyReadonly() ? \"\" : null',\r\n },\r\n})\r\nexport class SolarisFormFieldComponent implements AfterContentInit, OnDestroy {\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly translateService = inject(SolarisTranslateService);\r\n private readonly ngZone = inject(NgZone);\r\n\r\n constructor() {\r\n // SECURITY_EXCEPTION: Setting disabled/readonly on native control is standard DOM API.\r\n // SECURITY_EXCEPTION: Required for FormField to propagate disabled/readonly state to projected control.\r\n effect(() => {\r\n this.isEffectivelyDisabled();\r\n this.isEffectivelyReadonly();\r\n this.syncControlDisabledReadonly();\r\n });\r\n }\r\n\r\n readonly hintKey = input<string>();\r\n readonly labelKey = input<string>();\r\n readonly hint = input<string>('');\r\n readonly errorKey = input<string>();\r\n readonly label = input<string>('');\r\n readonly error = input<string>('');\r\n readonly optionalLabel = input<string>();\r\n readonly requiredLabel = input<string>();\r\n readonly optionalLabelKey = input<string>();\r\n readonly requiredLabelKey = input<string>();\r\n readonly required = input<boolean>(false);\r\n readonly optional = input<boolean>(false);\r\n readonly invalid = input<boolean | undefined>();\r\n readonly disabled = input<boolean | undefined>();\r\n readonly readonly = input<boolean | undefined>();\r\n readonly density = input<SolarisFormFieldDensity>();\r\n readonly size = input<SolarisFormFieldSize>('md');\r\n readonly radius = input<SolarisFormFieldRadius>('md');\r\n readonly appearance = input<SolarisFormFieldAppearance>('outline');\r\n readonly control = input<SolarisFormControl | undefined>(undefined);\r\n\r\n @ContentChild(SolarisFormLabelComponent)\r\n protected projectedLabel?: SolarisFormLabelComponent;\r\n @ContentChild(SolarisFormHintComponent)\r\n protected projectedHint?: SolarisFormHintComponent;\r\n @ContentChild(SolarisFormErrorComponent)\r\n protected projectedError?: SolarisFormErrorComponent;\r\n @ContentChild(SolarisFormPrefixDirective)\r\n protected prefix?: SolarisFormPrefixDirective;\r\n @ContentChild(SolarisFormSuffixDirective)\r\n protected suffix?: SolarisFormSuffixDirective;\r\n @ContentChild(SolarisFormControl)\r\n protected formControl?: SolarisFormControl;\r\n @ContentChild(FormControlDirective)\r\n protected formControlDirective?: FormControlDirective;\r\n @ContentChild(FormControlName)\r\n protected formControlName?: FormControlName;\r\n @ContentChild(NgModel)\r\n protected ngModelDir?: NgModel;\r\n\r\n protected readonly fieldId = generateId();\r\n protected readonly hintId = `solaris-form-field-hint-${this.fieldId}`;\r\n protected readonly errorId = `solaris-form-field-error-${this.fieldId}`;\r\n protected readonly labelId = `solaris-form-field-label-${this.fieldId}`;\r\n\r\n protected readonly isFocused = signal(false);\r\n protected readonly isTextareaControl = signal(false);\r\n protected readonly autoDetectedDisabled = signal(false);\r\n protected readonly autoDetectedReadonly = signal(false);\r\n protected readonly controlResize = signal<ControlResize | null>(null);\r\n\r\n protected controlId: string | null = null;\r\n private controlElement: HTMLElement | null = null;\r\n private focusListener: (() => void) | null = null;\r\n private blurListener: (() => void) | null = null;\r\n\r\n protected readonly hasProjectedLabel = computed(() => !!this.projectedLabel);\r\n protected readonly hasProjectedHint = computed(() => !!this.projectedHint);\r\n protected readonly hasProjectedError = computed(() => !!this.projectedError);\r\n protected readonly hasPrefix = signal(false);\r\n protected readonly hasSuffix = signal(false);\r\n\r\n protected readonly controlType = computed<\r\n 'input' | 'textarea' | 'select' | 'other'\r\n >(() => {\r\n return this.isTextareaControl() ? 'textarea' : 'other';\r\n });\r\n\r\n protected readonly effectiveDensity = computed<SolarisFormFieldDensity>(\r\n () => {\r\n return this.density() ?? 'comfortable';\r\n },\r\n );\r\n\r\n protected readonly labelText = computed(() => {\r\n const key = this.labelKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n return this.label();\r\n });\r\n\r\n protected readonly hintText = computed(() => {\r\n const key = this.hintKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n return this.hint();\r\n });\r\n\r\n protected readonly errorText = computed(() => {\r\n const key = this.errorKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n return this.error();\r\n });\r\n\r\n protected readonly optionalLabelText = computed(() => {\r\n const key = this.optionalLabelKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const explicit = this.optionalLabel();\r\n if (explicit) {\r\n return explicit;\r\n }\r\n return this.translateService.translate('solaris.form-field.optional');\r\n });\r\n\r\n protected readonly isEffectivelyDisabled = computed(() => {\r\n const manual = this.disabled();\r\n if (manual !== undefined) {\r\n return manual;\r\n }\r\n const explicitControl = this.control();\r\n if (explicitControl) {\r\n return explicitControl.disabled;\r\n }\r\n if (this.formControl) {\r\n return this.formControl.disabled;\r\n }\r\n return this.autoDetectedDisabled();\r\n });\r\n\r\n protected readonly isEffectivelyReadonly = computed(() => {\r\n const manual = this.readonly();\r\n if (manual !== undefined) {\r\n return manual;\r\n }\r\n const explicitControl = this.control();\r\n if (explicitControl) {\r\n return explicitControl.readonly;\r\n }\r\n if (this.formControl) {\r\n return this.formControl.readonly;\r\n }\r\n return this.autoDetectedReadonly();\r\n });\r\n\r\n protected readonly effectiveNgControl = computed(() => {\r\n return (\r\n this.formControlDirective ??\r\n this.formControlName ??\r\n this.ngModelDir ??\r\n null\r\n );\r\n });\r\n\r\n protected readonly isAutoInvalid = computed(() => {\r\n const control = this.effectiveNgControl();\r\n if (!control?.control) {\r\n return false;\r\n }\r\n const ctrl = control.control;\r\n const invalid = ctrl.invalid;\r\n const touched = ctrl.touched;\r\n const dirty = ctrl.dirty;\r\n const focused = this.isFocused();\r\n if (!invalid) {\r\n return false;\r\n }\r\n if (focused) {\r\n return false;\r\n }\r\n return touched || dirty;\r\n });\r\n\r\n protected readonly isInvalid = computed(() => {\r\n const manual = this.invalid();\r\n if (manual !== undefined) {\r\n return manual;\r\n }\r\n const explicitControl = this.control();\r\n if (explicitControl) {\r\n return explicitControl.invalid;\r\n }\r\n if (this.formControl) {\r\n return this.formControl.invalid && !this.isFocused();\r\n }\r\n return this.isAutoInvalid();\r\n });\r\n\r\n protected readonly showError = computed(() => {\r\n return this.isInvalid() && (!!this.errorText() || this.hasProjectedError());\r\n });\r\n\r\n protected readonly showHint = computed(() => {\r\n if (this.showError()) {\r\n return false;\r\n }\r\n return !!this.hintText() || this.hasProjectedHint();\r\n });\r\n\r\n protected readonly describedBy = computed(() => {\r\n const ids: string[] = [];\r\n if (this.showHint()) {\r\n ids.push(this.hintId);\r\n }\r\n if (this.showError()) {\r\n ids.push(this.errorId);\r\n }\r\n return ids.length > 0 ? ids.join(' ') : null;\r\n });\r\n\r\n ngAfterContentInit(): void {\r\n this.hasPrefix.set(!!this.prefix);\r\n this.hasSuffix.set(!!this.suffix);\r\n this.detectControl();\r\n this.connectControl();\r\n this.syncDescribedBy();\r\n this.syncControlDisabledReadonly();\r\n this.warnNoControl();\r\n this.warnMultipleControls();\r\n }\r\n\r\n private syncControlDisabledReadonly(): void {\r\n if (!this.controlElement) {\r\n return;\r\n }\r\n if (this.control()) {\r\n return;\r\n }\r\n // SECURITY_EXCEPTION: Setting disabled/readonly on native control is required for FormField propagation.\r\n const input = this.controlElement as HTMLInputElement;\r\n const shouldDisable = this.isEffectivelyDisabled();\r\n const shouldReadonly = this.isEffectivelyReadonly();\r\n if (input.disabled !== shouldDisable) {\r\n input.disabled = shouldDisable;\r\n }\r\n if (input.readOnly !== shouldReadonly) {\r\n input.readOnly = shouldReadonly;\r\n }\r\n }\r\n\r\n private syncDescribedBy(): void {\r\n const describedBy = this.describedBy();\r\n const targetControl = this.control() ?? this.formControl;\r\n if (targetControl) {\r\n if (describedBy) {\r\n targetControl.setDescribedByIds(describedBy.split(' '));\r\n } else {\r\n targetControl.setDescribedByIds([]);\r\n }\r\n }\r\n }\r\n\r\n protected readonly describedByEffect = effect(() => {\r\n this.describedBy();\r\n this.syncDescribedBy();\r\n });\r\n\r\n ngOnDestroy(): void {\r\n this.removeListeners();\r\n }\r\n\r\n private detectControl(): void {\r\n const explicitControl = this.control();\r\n if (explicitControl) {\r\n this.controlId = explicitControl.id;\r\n // SECURITY_EXCEPTION: nativeElement.querySelector required to find trigger element. Standard DOM API used after Angular CDK pattern.\r\n const triggerEl = this.elementRef.nativeElement.querySelector(\r\n '[solaris-form-field-trigger]',\r\n );\r\n if (triggerEl) {\r\n this.controlElement = triggerEl as HTMLElement;\r\n if (triggerEl.id) {\r\n this.controlId = triggerEl.id;\r\n }\r\n this.connectControl();\r\n }\r\n return;\r\n }\r\n\r\n // SECURITY_EXCEPTION: nativeElement access required to detect projected form controls.\r\n // SECURITY_EXCEPTION: Angular CDK and Material use the same approach.\r\n // SECURITY_EXCEPTION: Read-only querySelectorAll, no DOM mutation.\r\n const nativeElement = this.elementRef.nativeElement;\r\n const children = nativeElement.querySelectorAll(\r\n 'input, select, textarea, [solaris-input], [solaris-select], [solaris-textarea]',\r\n );\r\n\r\n if (children.length > 0) {\r\n const first = children[0] as HTMLElement;\r\n this.controlElement = first;\r\n // SECURITY_EXCEPTION: nativeElement.tagName is the standard DOM API to check element type.\r\n const isTextarea = first.tagName === 'TEXTAREA';\r\n this.isTextareaControl.set(isTextarea);\r\n\r\n if (isTextarea) {\r\n const resize = first.dataset['resize'] ?? first.getAttribute('resize');\r\n\r\n const validResize: ControlResize =\r\n resize === 'none' ||\r\n resize === 'vertical' ||\r\n resize === 'horizontal' ||\r\n resize === 'both'\r\n ? resize\r\n : 'vertical';\r\n\r\n this.controlResize.set(validResize);\r\n } else {\r\n this.controlResize.set(null);\r\n }\r\n }\r\n\r\n if (this.formControl) {\r\n this.controlId = this.formControl.id;\r\n } else if (this.controlElement) {\r\n if (!this.controlElement.id) {\r\n const generatedId = `solaris-control-${this.fieldId}`;\r\n this.controlElement.id = generatedId;\r\n this.controlId = generatedId;\r\n } else {\r\n this.controlId = this.controlElement.id;\r\n }\r\n }\r\n }\r\n\r\n private connectControl(): void {\r\n if (this.controlElement) {\r\n this.addListeners(this.controlElement);\r\n }\r\n }\r\n\r\n private addListeners(element: HTMLElement): void {\r\n this.removeListeners();\r\n this.ngZone.runOutsideAngular(() => {\r\n const onFocus = (): void => {\r\n this.ngZone.run(() => this.isFocused.set(true));\r\n };\r\n const onBlur = (): void => {\r\n this.ngZone.run(() => this.isFocused.set(false));\r\n };\r\n element.addEventListener('focusin', onFocus);\r\n element.addEventListener('focusout', onBlur);\r\n this.focusListener = () =>\r\n element.removeEventListener('focusin', onFocus);\r\n this.blurListener = () => element.removeEventListener('focusout', onBlur);\r\n });\r\n }\r\n\r\n private removeListeners(): void {\r\n this.focusListener?.();\r\n this.blurListener?.();\r\n this.focusListener = null;\r\n this.blurListener = null;\r\n }\r\n\r\n private warnNoControl(): void {\r\n const hasAnyControl =\r\n !!this.control() ||\r\n !!this.formControl ||\r\n !!this.controlElement ||\r\n !!this.effectiveNgControl();\r\n if (!hasAnyControl) {\r\n console.warn(\r\n `[SolarisFormField] No form control found inside <solaris-form-field id=\"${this.fieldId}\">. ` +\r\n 'Form Field requires a control (input, select, textarea, or a Solaris form control directive). ' +\r\n 'This warning is shown in development only. The component will render safely without the control.',\r\n );\r\n }\r\n }\r\n\r\n private warnMultipleControls(): void {\r\n // SECURITY_EXCEPTION: nativeElement access required to count projected controls.\r\n // SECURITY_EXCEPTION: Same justification as detectControl: read-only query, no DOM mutation.\r\n const nativeElement = this.elementRef.nativeElement;\r\n const children = nativeElement.querySelectorAll(\r\n 'input, select, textarea, [solaris-input], [solaris-select], [solaris-textarea]',\r\n );\r\n if (children.length > 1) {\r\n console.warn(\r\n `[SolarisFormField] Multiple form controls detected inside <solaris-form-field id=\"${this.fieldId}\">. ` +\r\n 'Form Field v1 supports one main control. Multiple controls may cause unexpected behavior.',\r\n );\r\n }\r\n }\r\n}\r\n","@if (labelText() || hasProjectedLabel()) {\n <div class=\"solaris-form-field__label-row\">\n @if (hasProjectedLabel()) {\n <ng-content select=\"solaris-form-label\" />\n } @else if (labelText()) {\n <label\n class=\"solaris-form-field__label\"\n [id]=\"labelId\"\n [for]=\"controlId ?? undefined\"\n >\n {{ labelText() }}\n </label>\n }\n @if (optional()) {\n <span\n class=\"solaris-form-field__optional-marker\"\n [attr.aria-label]=\"optionalLabelText()\"\n >\n {{ optionalLabelText() }}\n </span>\n }\n </div>\n}\n\n<div class=\"solaris-form-field__control-wrapper\">\n <span\n class=\"solaris-form-field__affix solaris-form-field__affix--prefix\"\n [attr.data-empty]=\"hasPrefix() ? null : ''\"\n >\n <ng-content select=\"[solaris-form-prefix]\" />\n </span>\n\n <div class=\"solaris-form-field__control\">\n <ng-content />\n </div>\n\n <span\n class=\"solaris-form-field__affix solaris-form-field__affix--suffix\"\n [attr.data-empty]=\"hasSuffix() ? null : ''\"\n >\n <ng-content select=\"[solaris-form-suffix]\" />\n </span>\n</div>\n\n<div class=\"solaris-form-field__message-row\">\n @if (showError()) {\n <div class=\"solaris-form-field__error\" [id]=\"errorId\" role=\"alert\">\n @if (hasProjectedError()) {\n <ng-content select=\"solaris-form-error\" />\n } @else {\n {{ errorText() }}\n }\n </div>\n } @else if (showHint()) {\n <div class=\"solaris-form-field__hint\" [id]=\"hintId\">\n @if (hasProjectedHint()) {\n <ng-content select=\"solaris-form-hint\" />\n } @else {\n {{ hintText() }}\n }\n </div>\n }\n</div>\n"]}
|
|
1
|
+
{"version":3,"file":"form-field.component.js","sourceRoot":"","sources":["../../../../../../../../../packages/angular/src/lib/components/forms/form-field/component/form-field.component.ts","../../../../../../../../../packages/angular/src/lib/components/forms/form-field/component/form-field.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n input,\n computed,\n signal,\n effect,\n ContentChild,\n AfterContentInit,\n OnDestroy,\n ElementRef,\n inject,\n NgZone,\n} from '@angular/core';\nimport { FormControlDirective, FormControlName, NgModel } from '@angular/forms';\n\nimport { SolarisFormPrefixDirective } from '../directives/form-prefix.directive';\nimport { SolarisFormSuffixDirective } from '../directives/form-suffix.directive';\nimport { SolarisTranslateService } from '../../../../services/translation';\nimport { SolarisFormControl } from '../model/form-control.contract';\nimport { SolarisFormLabelComponent } from './form-label.component';\nimport { SolarisFormErrorComponent } from './form-error.component';\nimport { SolarisFormHintComponent } from './form-hint.component';\n\nimport type {\n SolarisFormFieldAppearance,\n SolarisFormFieldSize,\n SolarisFormFieldDensity,\n SolarisFormFieldRadius,\n ControlResize,\n} from '../model/form-field.types';\n\nlet nextId = 0;\nfunction generateId(): string {\n return `solaris-form-field-${++nextId}`;\n}\n\n@Component({\n selector: 'solaris-form-field',\n standalone: true,\n imports: [],\n templateUrl: './form-field.component.html',\n styleUrls: ['./form-field.component.scss'],\n host: {\n '[attr.data-size]': 'size()',\n '[attr.data-radius]': 'radius()',\n '[attr.data-bwignore]': '\"true\"',\n '[attr.data-appearance]': 'appearance()',\n '[attr.data-density]': 'effectiveDensity()',\n '[attr.data-control-type]': 'controlType()',\n '[attr.data-control-resize]': 'controlResize()',\n '[attr.data-invalid]': 'isInvalid() ? \"\" : null',\n '[attr.data-focused]': 'isFocused() ? \"\" : null',\n '[attr.data-has-prefix]': 'hasPrefix() ? \"\" : null',\n '[attr.data-has-suffix]': 'hasSuffix() ? \"\" : null',\n '[attr.data-disabled]': 'isEffectivelyDisabled() ? \"\" : null',\n '[attr.data-readonly]': 'isEffectivelyReadonly() ? \"\" : null',\n },\n})\nexport class SolarisFormFieldComponent implements AfterContentInit, OnDestroy {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly translateService = inject(SolarisTranslateService);\n private readonly ngZone = inject(NgZone);\n\n constructor() {\n // SECURITY_EXCEPTION: Setting disabled/readonly on native control is standard DOM API.\n // SECURITY_EXCEPTION: Required for FormField to propagate disabled/readonly state to projected control.\n effect(() => {\n this.isEffectivelyDisabled();\n this.isEffectivelyReadonly();\n this.syncControlDisabledReadonly();\n });\n }\n\n readonly hintKey = input<string>();\n readonly labelKey = input<string>();\n readonly hint = input<string>('');\n readonly errorKey = input<string>();\n readonly label = input<string>('');\n readonly error = input<string>('');\n readonly optionalLabel = input<string>();\n readonly requiredLabel = input<string>();\n readonly optionalLabelKey = input<string>();\n readonly requiredLabelKey = input<string>();\n readonly required = input<boolean>(false);\n readonly optional = input<boolean>(false);\n readonly invalid = input<boolean | undefined>();\n readonly disabled = input<boolean | undefined>();\n readonly readonly = input<boolean | undefined>();\n readonly density = input<SolarisFormFieldDensity>();\n readonly size = input<SolarisFormFieldSize>('md');\n readonly radius = input<SolarisFormFieldRadius>('md');\n readonly appearance = input<SolarisFormFieldAppearance>('outline');\n readonly control = input<SolarisFormControl | undefined>(undefined);\n\n @ContentChild(SolarisFormLabelComponent)\n protected projectedLabel?: SolarisFormLabelComponent;\n @ContentChild(SolarisFormHintComponent)\n protected projectedHint?: SolarisFormHintComponent;\n @ContentChild(SolarisFormErrorComponent)\n protected projectedError?: SolarisFormErrorComponent;\n @ContentChild(SolarisFormPrefixDirective)\n protected prefix?: SolarisFormPrefixDirective;\n @ContentChild(SolarisFormSuffixDirective)\n protected suffix?: SolarisFormSuffixDirective;\n @ContentChild(SolarisFormControl)\n protected formControl?: SolarisFormControl;\n @ContentChild(FormControlDirective)\n protected formControlDirective?: FormControlDirective;\n @ContentChild(FormControlName)\n protected formControlName?: FormControlName;\n @ContentChild(NgModel)\n protected ngModelDir?: NgModel;\n\n protected readonly fieldId = generateId();\n protected readonly hintId = `solaris-form-field-hint-${this.fieldId}`;\n protected readonly errorId = `solaris-form-field-error-${this.fieldId}`;\n protected readonly labelId = `solaris-form-field-label-${this.fieldId}`;\n\n protected readonly isFocused = signal(false);\n protected readonly isTextareaControl = signal(false);\n protected readonly autoDetectedDisabled = signal(false);\n protected readonly autoDetectedReadonly = signal(false);\n protected readonly controlResize = signal<ControlResize | null>(null);\n\n protected readonly maxLength = signal<number | undefined>(undefined);\n protected readonly currentLength = signal<number>(0);\n protected readonly showCharacterCounter = computed(() => {\n const max = this.maxLength();\n return max !== undefined && max > 0;\n });\n protected readonly characterCounterText = computed(() => {\n const max = this.maxLength();\n if (max === undefined || max <= 0) return '';\n const current = this.currentLength();\n return `${current}/${max}`;\n });\n protected readonly characterCounterSeverity = computed<\n 'normal' | 'warning' | 'danger'\n >(() => {\n const max = this.maxLength();\n const current = this.currentLength();\n if (max === undefined || max <= 0) return 'normal';\n const ratio = current / max;\n if (ratio >= 1) return 'danger';\n if (ratio >= 0.9) return 'warning';\n return 'normal';\n });\n\n protected controlId: string | null = null;\n private controlElement: HTMLElement | null = null;\n private focusListener: (() => void) | null = null;\n private blurListener: (() => void) | null = null;\n private inputListener: (() => void) | null = null;\n\n protected readonly hasProjectedLabel = computed(() => !!this.projectedLabel);\n protected readonly hasProjectedHint = computed(() => !!this.projectedHint);\n protected readonly hasProjectedError = computed(() => !!this.projectedError);\n protected readonly hasPrefix = signal(false);\n protected readonly hasSuffix = signal(false);\n\n protected readonly controlType = computed<\n 'input' | 'textarea' | 'select' | 'other'\n >(() => {\n return this.isTextareaControl() ? 'textarea' : 'other';\n });\n\n protected readonly effectiveDensity = computed<SolarisFormFieldDensity>(\n () => {\n return this.density() ?? 'comfortable';\n },\n );\n\n protected readonly labelText = computed(() => {\n const key = this.labelKey();\n if (key) {\n return this.translateService.translate(key);\n }\n return this.label();\n });\n\n protected readonly hintText = computed(() => {\n const key = this.hintKey();\n if (key) {\n return this.translateService.translate(key);\n }\n return this.hint();\n });\n\n protected readonly errorText = computed(() => {\n const key = this.errorKey();\n if (key) {\n return this.translateService.translate(key);\n }\n return this.error();\n });\n\n protected readonly optionalLabelText = computed(() => {\n const key = this.optionalLabelKey();\n if (key) {\n return this.translateService.translate(key);\n }\n const explicit = this.optionalLabel();\n if (explicit) {\n return explicit;\n }\n return this.translateService.translate('solaris.form-field.optional');\n });\n\n protected readonly isEffectivelyDisabled = computed(() => {\n const manual = this.disabled();\n if (manual !== undefined) {\n return manual;\n }\n const explicitControl = this.control();\n if (explicitControl) {\n return explicitControl.disabled;\n }\n if (this.formControl) {\n return this.formControl.disabled;\n }\n return this.autoDetectedDisabled();\n });\n\n protected readonly isEffectivelyReadonly = computed(() => {\n const manual = this.readonly();\n if (manual !== undefined) {\n return manual;\n }\n const explicitControl = this.control();\n if (explicitControl) {\n return explicitControl.readonly;\n }\n if (this.formControl) {\n return this.formControl.readonly;\n }\n return this.autoDetectedReadonly();\n });\n\n protected readonly effectiveNgControl = computed(() => {\n return (\n this.formControlDirective ??\n this.formControlName ??\n this.ngModelDir ??\n null\n );\n });\n\n protected readonly isAutoInvalid = computed(() => {\n const control = this.effectiveNgControl();\n if (!control?.control) {\n return false;\n }\n const ctrl = control.control;\n const invalid = ctrl.invalid;\n const touched = ctrl.touched;\n const dirty = ctrl.dirty;\n const focused = this.isFocused();\n if (!invalid) {\n return false;\n }\n if (focused) {\n return false;\n }\n return touched || dirty;\n });\n\n protected readonly isInvalid = computed(() => {\n const manual = this.invalid();\n if (manual !== undefined) {\n return manual;\n }\n const explicitControl = this.control();\n if (explicitControl) {\n return explicitControl.invalid;\n }\n if (this.formControl) {\n return this.formControl.invalid && !this.isFocused();\n }\n return this.isAutoInvalid();\n });\n\n protected readonly showError = computed(() => {\n return this.isInvalid() && (!!this.errorText() || this.hasProjectedError());\n });\n\n protected readonly showHint = computed(() => {\n if (this.showError()) {\n return false;\n }\n return !!this.hintText() || this.hasProjectedHint();\n });\n\n protected readonly describedBy = computed(() => {\n const ids: string[] = [];\n if (this.showHint()) {\n ids.push(this.hintId);\n }\n if (this.showError()) {\n ids.push(this.errorId);\n }\n return ids.length > 0 ? ids.join(' ') : null;\n });\n\n ngAfterContentInit(): void {\n this.hasPrefix.set(!!this.prefix);\n this.hasSuffix.set(!!this.suffix);\n this.detectControl();\n this.connectControl();\n this.syncDescribedBy();\n this.syncControlDisabledReadonly();\n this.warnNoControl();\n this.warnMultipleControls();\n }\n\n private syncControlDisabledReadonly(): void {\n if (!this.controlElement) {\n return;\n }\n if (this.control()) {\n return;\n }\n // SECURITY_EXCEPTION: Setting disabled/readonly on native control is required for FormField propagation.\n const input = this.controlElement as HTMLInputElement;\n const shouldDisable = this.isEffectivelyDisabled();\n const shouldReadonly = this.isEffectivelyReadonly();\n if (input.disabled !== shouldDisable) {\n input.disabled = shouldDisable;\n }\n if (input.readOnly !== shouldReadonly) {\n input.readOnly = shouldReadonly;\n }\n }\n\n private syncDescribedBy(): void {\n const describedBy = this.describedBy();\n const targetControl = this.control() ?? this.formControl;\n if (targetControl) {\n if (describedBy) {\n targetControl.setDescribedByIds(describedBy.split(' '));\n } else {\n targetControl.setDescribedByIds([]);\n }\n }\n }\n\n protected readonly describedByEffect = effect(() => {\n this.describedBy();\n this.syncDescribedBy();\n });\n\n ngOnDestroy(): void {\n this.removeListeners();\n }\n\n private detectControl(): void {\n const explicitControl = this.control();\n if (explicitControl) {\n this.controlId = explicitControl.id;\n // SECURITY_EXCEPTION: nativeElement.querySelector required to find trigger element. Standard DOM API used after Angular CDK pattern.\n const triggerEl = this.elementRef.nativeElement.querySelector(\n '[solaris-form-field-trigger]',\n );\n if (triggerEl) {\n this.controlElement = triggerEl as HTMLElement;\n if (triggerEl.id) {\n this.controlId = triggerEl.id;\n }\n this.connectControl();\n }\n return;\n }\n\n // SECURITY_EXCEPTION: nativeElement access required to detect projected form controls.\n // SECURITY_EXCEPTION: Angular CDK and Material use the same approach.\n // SECURITY_EXCEPTION: Read-only querySelectorAll, no DOM mutation.\n const nativeElement = this.elementRef.nativeElement;\n const children = nativeElement.querySelectorAll(\n 'input, select, textarea, [solaris-input], [solaris-select], [solaris-textarea]',\n );\n\n if (children.length > 0) {\n const first = children[0] as HTMLElement;\n this.controlElement = first;\n // SECURITY_EXCEPTION: nativeElement.tagName is the standard DOM API to check element type.\n const isTextarea = first.tagName === 'TEXTAREA';\n this.isTextareaControl.set(isTextarea);\n\n // SECURITY_EXCEPTION: getAttribute is the standard DOM API to read HTML attributes.\n const maxlengthAttr = first.getAttribute('maxlength');\n if (maxlengthAttr !== null) {\n const parsed = parseInt(maxlengthAttr, 10);\n this.maxLength.set(!isNaN(parsed) ? parsed : undefined);\n } else {\n this.maxLength.set(undefined);\n }\n // SECURITY_EXCEPTION: reading value.length from native input/textarea is required for character counter.\n this.currentLength.set(\n (first as HTMLInputElement | HTMLTextAreaElement).value?.length ?? 0,\n );\n\n if (isTextarea) {\n const resize = first.dataset['resize'] ?? first.getAttribute('resize');\n\n const validResize: ControlResize =\n resize === 'none' ||\n resize === 'vertical' ||\n resize === 'horizontal' ||\n resize === 'both'\n ? resize\n : 'vertical';\n\n this.controlResize.set(validResize);\n } else {\n this.controlResize.set(null);\n }\n }\n\n if (this.formControl) {\n this.controlId = this.formControl.id;\n } else if (this.controlElement) {\n if (!this.controlElement.id) {\n const generatedId = `solaris-control-${this.fieldId}`;\n this.controlElement.id = generatedId;\n this.controlId = generatedId;\n } else {\n this.controlId = this.controlElement.id;\n }\n }\n }\n\n private connectControl(): void {\n if (this.controlElement) {\n this.addListeners(this.controlElement);\n }\n }\n\n private addListeners(element: HTMLElement): void {\n this.removeListeners();\n this.ngZone.runOutsideAngular(() => {\n const onFocus = (): void => {\n this.ngZone.run(() => this.isFocused.set(true));\n };\n const onBlur = (): void => {\n this.ngZone.run(() => this.isFocused.set(false));\n };\n const onInput = (): void => {\n // SECURITY_EXCEPTION: reading value.length from native input/textarea is standard DOM API for character counter.\n this.ngZone.run(() => {\n this.currentLength.set(\n (element as HTMLInputElement | HTMLTextAreaElement).value?.length ??\n 0,\n );\n });\n };\n element.addEventListener('focusin', onFocus);\n element.addEventListener('focusout', onBlur);\n element.addEventListener('input', onInput);\n this.focusListener = () =>\n element.removeEventListener('focusin', onFocus);\n this.blurListener = () => element.removeEventListener('focusout', onBlur);\n this.inputListener = () => element.removeEventListener('input', onInput);\n });\n }\n\n private removeListeners(): void {\n this.focusListener?.();\n this.blurListener?.();\n this.inputListener?.();\n this.focusListener = null;\n this.blurListener = null;\n this.inputListener = null;\n }\n\n private warnNoControl(): void {\n const hasAnyControl =\n !!this.control() ||\n !!this.formControl ||\n !!this.controlElement ||\n !!this.effectiveNgControl();\n if (!hasAnyControl) {\n console.warn(\n `[SolarisFormField] No form control found inside <solaris-form-field id=\"${this.fieldId}\">. ` +\n 'Form Field requires a control (input, select, textarea, or a Solaris form control directive). ' +\n 'This warning is shown in development only. The component will render safely without the control.',\n );\n }\n }\n\n private warnMultipleControls(): void {\n // SECURITY_EXCEPTION: nativeElement access required to count projected controls.\n // SECURITY_EXCEPTION: Same justification as detectControl: read-only query, no DOM mutation.\n const nativeElement = this.elementRef.nativeElement;\n const children = nativeElement.querySelectorAll(\n 'input, select, textarea, [solaris-input], [solaris-select], [solaris-textarea]',\n );\n if (children.length > 1) {\n console.warn(\n `[SolarisFormField] Multiple form controls detected inside <solaris-form-field id=\"${this.fieldId}\">. ` +\n 'Form Field v1 supports one main control. Multiple controls may cause unexpected behavior.',\n );\n }\n }\n}\n","@if (labelText() || hasProjectedLabel()) {\n <div class=\"solaris-form-field__label-row\">\n @if (hasProjectedLabel()) {\n <ng-content select=\"solaris-form-label\" />\n } @else if (labelText()) {\n <label\n class=\"solaris-form-field__label\"\n [id]=\"labelId\"\n [for]=\"controlId ?? undefined\"\n >\n {{ labelText() }}\n </label>\n }\n @if (optional()) {\n <span\n class=\"solaris-form-field__optional-marker\"\n [attr.aria-label]=\"optionalLabelText()\"\n >\n {{ optionalLabelText() }}\n </span>\n }\n @if (showCharacterCounter()) {\n <span\n class=\"solaris-form-field__character-counter\"\n aria-live=\"polite\"\n [attr.aria-label]=\"characterCounterText()\"\n [attr.data-severity]=\"characterCounterSeverity()\"\n >\n {{ characterCounterText() }}\n </span>\n }\n </div>\n}\n\n<div class=\"solaris-form-field__control-wrapper\">\n <span\n class=\"solaris-form-field__affix solaris-form-field__affix--prefix\"\n [attr.data-empty]=\"hasPrefix() ? null : ''\"\n >\n <ng-content select=\"[solaris-form-prefix]\" />\n </span>\n\n <div class=\"solaris-form-field__control\">\n <ng-content />\n </div>\n\n <span\n class=\"solaris-form-field__affix solaris-form-field__affix--suffix\"\n [attr.data-empty]=\"hasSuffix() ? null : ''\"\n >\n <ng-content select=\"[solaris-form-suffix]\" />\n </span>\n</div>\n\n@if (showError() || showHint()) {\n <div class=\"solaris-form-field__message-row\">\n @if (showError()) {\n <div class=\"solaris-form-field__error\" [id]=\"errorId\" role=\"alert\">\n @if (hasProjectedError()) {\n <ng-content select=\"solaris-form-error\" />\n } @else {\n {{ errorText() }}\n }\n </div>\n } @else if (showHint()) {\n <div class=\"solaris-form-field__hint\" [id]=\"hintId\">\n @if (hasProjectedHint()) {\n <ng-content select=\"solaris-form-hint\" />\n } @else {\n {{ hintText() }}\n }\n </div>\n }\n </div>\n}\n"]}
|
package/esm2022/lib/components/forms/form-field/directives/form-field-trigger.directive.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-field-trigger.directive.js","sourceRoot":"","sources":["../../../../../../../../../packages/angular/src/lib/components/forms/form-field/directives/form-field-trigger.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;;AAM1C,MAAM,OAAO,gCAAgC;wGAAhC,gCAAgC;4FAAhC,gCAAgC;;4FAAhC,gCAAgC;kBAJ5C,SAAS;mBAAC;oBACT,QAAQ,EAAE,8BAA8B;oBACxC,UAAU,EAAE,IAAI;iBACjB","sourcesContent":["import { Directive } from '@angular/core';\
|
|
1
|
+
{"version":3,"file":"form-field-trigger.directive.js","sourceRoot":"","sources":["../../../../../../../../../packages/angular/src/lib/components/forms/form-field/directives/form-field-trigger.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;;AAM1C,MAAM,OAAO,gCAAgC;wGAAhC,gCAAgC;4FAAhC,gCAAgC;;4FAAhC,gCAAgC;kBAJ5C,SAAS;mBAAC;oBACT,QAAQ,EAAE,8BAA8B;oBACxC,UAAU,EAAE,IAAI;iBACjB","sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[solaris-form-field-trigger]',\n standalone: true,\n})\nexport class SolarisFormFieldTriggerDirective {}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/angular/src/lib/components/forms/form-field/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC","sourcesContent":["export { SolarisFormFieldComponent } from './component/form-field.component';\
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/angular/src/lib/components/forms/form-field/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC","sourcesContent":["export { SolarisFormFieldComponent } from './component/form-field.component';\nexport { SolarisFormLabelComponent } from './component/form-label.component';\nexport { SolarisFormHintComponent } from './component/form-hint.component';\nexport { SolarisFormErrorComponent } from './component/form-error.component';\nexport { SolarisFormFieldTriggerDirective } from './directives/form-field-trigger.directive';\nexport { SolarisFormPrefixDirective } from './directives/form-prefix.directive';\nexport { SolarisFormSuffixDirective } from './directives/form-suffix.directive';\n\nexport type {\n SolarisFormFieldAppearance,\n SolarisFormFieldSize,\n SolarisFormFieldDensity,\n SolarisFormFieldRadius,\n} from './model/form-field.types';\n"]}
|