@magmonium/one 0.4.98 → 0.4.100

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.
Files changed (35) hide show
  1. package/fesm2022/{magmonium-one-base-dropdown-2hgXcmhE.mjs → magmonium-one-base-dropdown-xhoyZ8I5.mjs} +4 -4
  2. package/fesm2022/{magmonium-one-base-dropdown-2hgXcmhE.mjs.map → magmonium-one-base-dropdown-xhoyZ8I5.mjs.map} +1 -1
  3. package/fesm2022/{magmonium-one-button-C5dk4R_m.mjs → magmonium-one-button-BPIU6Ww0.mjs} +29 -3
  4. package/fesm2022/magmonium-one-button-BPIU6Ww0.mjs.map +1 -0
  5. package/fesm2022/{magmonium-one-checkbox-a3Dwmu2X.mjs → magmonium-one-checkbox-BXNvtkzo.mjs} +2 -2
  6. package/fesm2022/{magmonium-one-checkbox-a3Dwmu2X.mjs.map → magmonium-one-checkbox-BXNvtkzo.mjs.map} +1 -1
  7. package/fesm2022/{magmonium-one-group-bRamdzPO.mjs → magmonium-one-group-mOaqnb5q.mjs} +12 -5
  8. package/fesm2022/magmonium-one-group-mOaqnb5q.mjs.map +1 -0
  9. package/fesm2022/{magmonium-one-header-BZzD8uTJ.mjs → magmonium-one-header-Cz3oggF7.mjs} +3 -2
  10. package/fesm2022/{magmonium-one-header-BZzD8uTJ.mjs.map → magmonium-one-header-Cz3oggF7.mjs.map} +1 -1
  11. package/fesm2022/{magmonium-one-image-editor-BLqlV2ki.mjs → magmonium-one-image-editor-D40RzxsY.mjs} +5 -4
  12. package/fesm2022/{magmonium-one-image-editor-BLqlV2ki.mjs.map → magmonium-one-image-editor-D40RzxsY.mjs.map} +1 -1
  13. package/fesm2022/{magmonium-one-label-Dkis_mGP.mjs → magmonium-one-label-D-wnA_Fl.mjs} +3 -3
  14. package/fesm2022/magmonium-one-label-D-wnA_Fl.mjs.map +1 -0
  15. package/fesm2022/{magmonium-one-menu-CJjjxFfu.mjs → magmonium-one-menu-eSnsKCez.mjs} +3 -2
  16. package/fesm2022/{magmonium-one-menu-CJjjxFfu.mjs.map → magmonium-one-menu-eSnsKCez.mjs.map} +1 -1
  17. package/fesm2022/{magmonium-one-multi-range-DL_JlKVL.mjs → magmonium-one-multi-range-C0S7udf5.mjs} +2 -2
  18. package/fesm2022/{magmonium-one-multi-range-DL_JlKVL.mjs.map → magmonium-one-multi-range-C0S7udf5.mjs.map} +1 -1
  19. package/fesm2022/{magmonium-one-otp-COE0X33y.mjs → magmonium-one-otp-CeSz8ZZ2.mjs} +2 -2
  20. package/fesm2022/{magmonium-one-otp-COE0X33y.mjs.map → magmonium-one-otp-CeSz8ZZ2.mjs.map} +1 -1
  21. package/fesm2022/{magmonium-one-password-CvgWZkAX.mjs → magmonium-one-password-CSNZtS__.mjs} +4 -3
  22. package/fesm2022/{magmonium-one-password-CvgWZkAX.mjs.map → magmonium-one-password-CSNZtS__.mjs.map} +1 -1
  23. package/fesm2022/{magmonium-one-radio-DPz4-SAJ.mjs → magmonium-one-radio-DlS31qJG.mjs} +2 -2
  24. package/fesm2022/{magmonium-one-radio-DPz4-SAJ.mjs.map → magmonium-one-radio-DlS31qJG.mjs.map} +1 -1
  25. package/fesm2022/{magmonium-one-range-DlQfnl9p.mjs → magmonium-one-range-CR8go24u.mjs} +2 -2
  26. package/fesm2022/{magmonium-one-range-DlQfnl9p.mjs.map → magmonium-one-range-CR8go24u.mjs.map} +1 -1
  27. package/fesm2022/{magmonium-one-text-vDPAhn74.mjs → magmonium-one-text-4zWYsKpH.mjs} +2 -2
  28. package/fesm2022/{magmonium-one-text-vDPAhn74.mjs.map → magmonium-one-text-4zWYsKpH.mjs.map} +1 -1
  29. package/fesm2022/magmonium-one.mjs +95 -30
  30. package/fesm2022/magmonium-one.mjs.map +1 -1
  31. package/package.json +1 -1
  32. package/types/magmonium-one.d.ts +29 -3
  33. package/fesm2022/magmonium-one-button-C5dk4R_m.mjs.map +0 -1
  34. package/fesm2022/magmonium-one-group-bRamdzPO.mjs.map +0 -1
  35. package/fesm2022/magmonium-one-label-Dkis_mGP.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"magmonium-one-otp-COE0X33y.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/text/otp.ts"],"sourcesContent":["import {\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n signal,\n untracked,\n viewChildren,\n} from '@angular/core';\nimport { LabelComponent } from '../label';\nimport { TextOutputComponent } from '../../../text-output';\nimport { BaseTextInputComponent } from './base-text';\nimport { CommonModule } from '@angular/common';\nimport { OtpInput } from '../../model/input';\nimport { IS_DESIGN_MODE } from '../../../../config/tokens';\n\n@Component({\n selector: 'm-otp-input',\n template: `\n @if (otpConfig(); as otp) {\n <m-label\n [for]=\"otp.name\"\n [placeholder]=\"otp.label\"\n [params]=\"otp.params\"\n [required]=\"required()\"\n [disabled]=\"isDisabled()\"\n />\n <div class=\"otp-container\">\n @for (item of otpArray(); track $index) {\n <input\n [id]=\"$index === 0 ? (otp.name ?? '') : ''\"\n #otpInput\n type=\"text\"\n maxlength=\"1\"\n [class.error]=\"showErrors()\"\n [disabled]=\"isDisabled()\"\n [value]=\"otpValues()[$index] || ''\"\n (input)=\"onInput($event, $index)\"\n (keydown)=\"onKeyDown($event, $index)\"\n (paste)=\"onPaste($event)\"\n />\n }\n </div>\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n `,\n styleUrl: './otp.sass',\n imports: [LabelComponent, TextOutputComponent, CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OtpInputComponent extends BaseTextInputComponent<OtpInput> {\n otpValues = signal<string[]>([]);\n otpInputs = viewChildren<ElementRef<HTMLInputElement>>('otpInput');\n protected readonly otpConfig = computed(() => this.config() as OtpInput);\n otpArray = computed(() => {\n const length = this.otpConfig()?.length || 6;\n return Array(length).fill(0);\n });\n\n // Inert on the Canvas — other inputs stay idle because they never autofocus;\n // OTP used to steal focus and look live while composing (DesignMode).\n private readonly isDesignMode = !!inject(IS_DESIGN_MODE, { optional: true });\n protected readonly isDisabled = computed(\n () => this.isDesignMode || this.disabled()\n );\n\n // BaseText answers `focused` by focusing its `#inputElement`, and an OTP has\n // none — it has a row of boxes. Without this the caret never lands on an OTP\n // field, so the form that opens on one (login's verification step) reads as\n // dead until the User clicks it.\n private hasAutofocused = false;\n\n constructor() {\n super();\n effect(() => {\n const length = this.otpConfig()?.length || 6;\n this.otpValues.set(Array(length).fill(''));\n });\n\n afterRenderEffect(() => {\n const inputs = this.otpInputs();\n if (!this.focused() || !inputs.length || this.hasAutofocused) return;\n this.hasAutofocused = true;\n untracked(() => this.focusInput(0));\n });\n }\n\n onInput = (event: Event, index: number): void => {\n if (this.isDisabled()) return;\n const input = event.target as HTMLInputElement;\n let value = input.value;\n\n value = value.replace(/[^a-zA-Z0-9]/g, '');\n\n if (value.length > 1) {\n value = value.slice(-1);\n }\n\n input.value = value.toUpperCase();\n\n const newValues = [...this.otpValues()];\n newValues[index] = value.toUpperCase();\n this.otpValues.set(newValues);\n\n const length = this.otpConfig()?.length || 6;\n if (value && index < length - 1) {\n this.focusInput(index + 1);\n }\n this.updateValue();\n };\n\n onKeyDown = (event: KeyboardEvent, index: number): void => {\n if (this.isDisabled()) return;\n const input = event.target as HTMLInputElement;\n const length = this.otpConfig()?.length || 6;\n\n const isAlphaNumeric = /^[a-zA-Z0-9]$/.test(event.key);\n const isControlKey = [\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Tab',\n ].includes(event.key);\n\n if (!isAlphaNumeric && !isControlKey) {\n event.preventDefault();\n return;\n }\n\n if (event.key === 'Backspace') {\n if (!input.value && index > 0) {\n this.focusInput(index - 1);\n }\n }\n if (event.key === 'ArrowLeft' && index > 0) {\n event.preventDefault();\n this.focusInput(index - 1);\n }\n if (event.key === 'ArrowRight' && index < length - 1) {\n event.preventDefault();\n this.focusInput(index + 1);\n }\n };\n\n onPaste = (event: ClipboardEvent): void => {\n if (this.isDisabled()) return;\n event.preventDefault();\n event.stopPropagation();\n\n const length = this.otpConfig()?.length || 6;\n const pastedData = event.clipboardData?.getData('text') || '';\n\n const alphanumeric = pastedData\n .replace(/[^a-zA-Z0-9]/g, '')\n .slice(0, length);\n\n if (alphanumeric.length > 0) {\n const newValues = Array(length).fill('');\n alphanumeric.split('').forEach((char, index) => {\n if (index < length) {\n newValues[index] = char.toUpperCase();\n }\n });\n\n this.otpValues.set(newValues);\n this.updateValue();\n\n const focusIndex = Math.min(alphanumeric.length, length - 1);\n setTimeout(() => this.focusInput(focusIndex), 0);\n }\n };\n\n private focusInput(index: number): void {\n if (this.isDisabled()) return;\n const inputs = this.otpInputs();\n if (inputs[index]) {\n inputs[index].nativeElement.focus();\n }\n }\n\n private updateValue(): void {\n const otpValue = this.otpValues().join('');\n this.setValue(otpValue);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"magmonium-one-otp-CeSz8ZZ2.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/text/otp.ts"],"sourcesContent":["import {\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n signal,\n untracked,\n viewChildren,\n} from '@angular/core';\nimport { LabelComponent } from '../label';\nimport { TextOutputComponent } from '../../../text-output';\nimport { BaseTextInputComponent } from './base-text';\nimport { CommonModule } from '@angular/common';\nimport { OtpInput } from '../../model/input';\nimport { IS_DESIGN_MODE } from '../../../../config/tokens';\n\n@Component({\n selector: 'm-otp-input',\n template: `\n @if (otpConfig(); as otp) {\n <m-label\n [for]=\"otp.name\"\n [placeholder]=\"otp.label\"\n [params]=\"otp.params\"\n [required]=\"required()\"\n [disabled]=\"isDisabled()\"\n />\n <div class=\"otp-container\">\n @for (item of otpArray(); track $index) {\n <input\n [id]=\"$index === 0 ? (otp.name ?? '') : ''\"\n #otpInput\n type=\"text\"\n maxlength=\"1\"\n [class.error]=\"showErrors()\"\n [disabled]=\"isDisabled()\"\n [value]=\"otpValues()[$index] || ''\"\n (input)=\"onInput($event, $index)\"\n (keydown)=\"onKeyDown($event, $index)\"\n (paste)=\"onPaste($event)\"\n />\n }\n </div>\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n `,\n styleUrl: './otp.sass',\n imports: [LabelComponent, TextOutputComponent, CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OtpInputComponent extends BaseTextInputComponent<OtpInput> {\n otpValues = signal<string[]>([]);\n otpInputs = viewChildren<ElementRef<HTMLInputElement>>('otpInput');\n protected readonly otpConfig = computed(() => this.config() as OtpInput);\n otpArray = computed(() => {\n const length = this.otpConfig()?.length || 6;\n return Array(length).fill(0);\n });\n\n // Inert on the Canvas — other inputs stay idle because they never autofocus;\n // OTP used to steal focus and look live while composing (DesignMode).\n private readonly isDesignMode = !!inject(IS_DESIGN_MODE, { optional: true });\n protected readonly isDisabled = computed(\n () => this.isDesignMode || this.disabled()\n );\n\n // BaseText answers `focused` by focusing its `#inputElement`, and an OTP has\n // none — it has a row of boxes. Without this the caret never lands on an OTP\n // field, so the form that opens on one (login's verification step) reads as\n // dead until the User clicks it.\n private hasAutofocused = false;\n\n constructor() {\n super();\n effect(() => {\n const length = this.otpConfig()?.length || 6;\n this.otpValues.set(Array(length).fill(''));\n });\n\n afterRenderEffect(() => {\n const inputs = this.otpInputs();\n if (!this.focused() || !inputs.length || this.hasAutofocused) return;\n this.hasAutofocused = true;\n untracked(() => this.focusInput(0));\n });\n }\n\n onInput = (event: Event, index: number): void => {\n if (this.isDisabled()) return;\n const input = event.target as HTMLInputElement;\n let value = input.value;\n\n value = value.replace(/[^a-zA-Z0-9]/g, '');\n\n if (value.length > 1) {\n value = value.slice(-1);\n }\n\n input.value = value.toUpperCase();\n\n const newValues = [...this.otpValues()];\n newValues[index] = value.toUpperCase();\n this.otpValues.set(newValues);\n\n const length = this.otpConfig()?.length || 6;\n if (value && index < length - 1) {\n this.focusInput(index + 1);\n }\n this.updateValue();\n };\n\n onKeyDown = (event: KeyboardEvent, index: number): void => {\n if (this.isDisabled()) return;\n const input = event.target as HTMLInputElement;\n const length = this.otpConfig()?.length || 6;\n\n const isAlphaNumeric = /^[a-zA-Z0-9]$/.test(event.key);\n const isControlKey = [\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Tab',\n ].includes(event.key);\n\n if (!isAlphaNumeric && !isControlKey) {\n event.preventDefault();\n return;\n }\n\n if (event.key === 'Backspace') {\n if (!input.value && index > 0) {\n this.focusInput(index - 1);\n }\n }\n if (event.key === 'ArrowLeft' && index > 0) {\n event.preventDefault();\n this.focusInput(index - 1);\n }\n if (event.key === 'ArrowRight' && index < length - 1) {\n event.preventDefault();\n this.focusInput(index + 1);\n }\n };\n\n onPaste = (event: ClipboardEvent): void => {\n if (this.isDisabled()) return;\n event.preventDefault();\n event.stopPropagation();\n\n const length = this.otpConfig()?.length || 6;\n const pastedData = event.clipboardData?.getData('text') || '';\n\n const alphanumeric = pastedData\n .replace(/[^a-zA-Z0-9]/g, '')\n .slice(0, length);\n\n if (alphanumeric.length > 0) {\n const newValues = Array(length).fill('');\n alphanumeric.split('').forEach((char, index) => {\n if (index < length) {\n newValues[index] = char.toUpperCase();\n }\n });\n\n this.otpValues.set(newValues);\n this.updateValue();\n\n const focusIndex = Math.min(alphanumeric.length, length - 1);\n setTimeout(() => this.focusInput(focusIndex), 0);\n }\n };\n\n private focusInput(index: number): void {\n if (this.isDisabled()) return;\n const inputs = this.otpInputs();\n if (inputs[index]) {\n inputs[index].nativeElement.focus();\n }\n }\n\n private updateValue(): void {\n const otpValue = this.otpValues().join('');\n this.setValue(otpValue);\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { c as TranslatePipe } from "./magmonium-one-size-converter-BqkALIWA.mjs";
2
- import { t as LabelComponent } from "./magmonium-one-label-Dkis_mGP.mjs";
3
- import { t as ButtonComponent } from "./magmonium-one-button-C5dk4R_m.mjs";
2
+ import { t as LabelComponent } from "./magmonium-one-label-D-wnA_Fl.mjs";
3
+ import { t as ButtonComponent } from "./magmonium-one-button-BPIU6Ww0.mjs";
4
4
  import { t as BaseTextInputComponent } from "./magmonium-one-base-text-ChjG3GNw.mjs";
5
5
  import { t as TextOutputComponent } from "./magmonium-one-text-output-E6pe3IOL.mjs";
6
6
  import * as i0 from "@angular/core";
@@ -133,6 +133,7 @@ var PasswordInputComponent = class PasswordInputComponent extends BaseTextInputC
133
133
  "icon",
134
134
  "isRightIcon",
135
135
  "iconOnly",
136
+ "size",
136
137
  "stacked",
137
138
  "imgSrc",
138
139
  "nonClickable",
@@ -215,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({
215
216
  });
216
217
  export { PasswordInputComponent };
217
218
 
218
- //# sourceMappingURL=magmonium-one-password-CvgWZkAX.mjs.map
219
+ //# sourceMappingURL=magmonium-one-password-CSNZtS__.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"magmonium-one-password-CvgWZkAX.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/text/password.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n signal,\n} from '@angular/core';\nimport { LabelComponent } from '../label';\nimport { TextOutputComponent } from '../../../text-output';\nimport { BaseTextInputComponent } from './base-text';\nimport { ButtonComponent } from '../../../button/ui/button';\nimport { TranslatePipe } from '../../../../pipe';\n\n@Component({\n selector: 'm-password-input',\n template: `\n @if (config(); as text) {\n <m-label\n [for]=\"text.name\"\n [placeholder]=\"text.label\"\n [params]=\"text.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n <div class=\"input-wrapper\">\n <input\n [id]=\"text.name ?? ''\"\n [attr.data-testid]=\"text.testid ?? (text.name ? text.name + '-input' : null)\"\n [value]=\"value()\"\n #inputElement\n [class.error]=\"showErrors()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"(text.placeholder ?? '') | translate: text.params\"\n (input)=\"onInput($event)\"\n (focus)=\"isFocused.set(true)\"\n (blur)=\"isFocused.set(false); touched.set(true)\"\n [type]=\"type()\"\n />\n <m-one-button\n type=\"button\"\n [disabled]=\"disabled()\"\n [name]=\"button()\"\n [color]=\"iconColor()\"\n (clicked)=\"toggleType()\"\n />\n </div>\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n `,\n imports: [LabelComponent, TextOutputComponent, ButtonComponent, TranslatePipe],\n styleUrl: './password.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PasswordInputComponent extends BaseTextInputComponent {\n isPassword = signal<boolean>(true);\n type = computed(() => (this.isPassword() ? 'password' : 'text'));\n button = computed(() => (!this.isPassword() ? 'eye' : 'eye_close'));\n\n protected toggleType() {\n this.isPassword.update((now) => !now);\n }\n\n protected onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.setValue(target?.value ?? '');\n }\n}\n"],"mappings":";;;;;;;AA4DA,IAAa,yBAAb,MAAa,+BAA+B,uBAAsB;CAChE,aAAa,OAAgB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CAClC,OAAO,eAAgB,KAAK,WAAU,IAAK,aAAa,QAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAChE,SAAS,eAAgB,CAAC,KAAK,WAAU,IAAK,QAAQ,aAAa,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAEzD,aAAU;EAClB,KAAK,WAAW,QAAQ,QAAQ,CAAC,GAAG;CACtC;CAEU,QAAQ,OAAY;EAC5B,MAAM,SAAS,MAAM;EACrB,KAAK,SAAS,QAAQ,SAAS,EAAE;CACnC;CAZW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAsB,MAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAtB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAsB,cAAA;EAAA,UAAA;EAAA,iBAAA;EAAA,UAAA;EAAA,UA9CvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCT,UAAA;EAAA,QAAA,CAAA,s8HAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MACS;IAAc,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAmB,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA,CAAA,gBAAA,SAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAe,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA,CAAA,gBAAA,SAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAa,MAAA;GAAA;EAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAIlE,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EAhDlC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAkB,UAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCT,SACQ;IAAC;IAAgB;IAAqB;IAAiB;GAAa;GAAC,iBAE7D,wBAAwB;GAAM,QAAA,CAAA,s8HAAA;EAAA,CAAA"}
1
+ {"version":3,"file":"magmonium-one-password-CSNZtS__.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/text/password.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n signal,\n} from '@angular/core';\nimport { LabelComponent } from '../label';\nimport { TextOutputComponent } from '../../../text-output';\nimport { BaseTextInputComponent } from './base-text';\nimport { ButtonComponent } from '../../../button/ui/button';\nimport { TranslatePipe } from '../../../../pipe';\n\n@Component({\n selector: 'm-password-input',\n template: `\n @if (config(); as text) {\n <m-label\n [for]=\"text.name\"\n [placeholder]=\"text.label\"\n [params]=\"text.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n <div class=\"input-wrapper\">\n <input\n [id]=\"text.name ?? ''\"\n [attr.data-testid]=\"text.testid ?? (text.name ? text.name + '-input' : null)\"\n [value]=\"value()\"\n #inputElement\n [class.error]=\"showErrors()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"(text.placeholder ?? '') | translate: text.params\"\n (input)=\"onInput($event)\"\n (focus)=\"isFocused.set(true)\"\n (blur)=\"isFocused.set(false); touched.set(true)\"\n [type]=\"type()\"\n />\n <m-one-button\n type=\"button\"\n [disabled]=\"disabled()\"\n [name]=\"button()\"\n [color]=\"iconColor()\"\n (clicked)=\"toggleType()\"\n />\n </div>\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n `,\n imports: [LabelComponent, TextOutputComponent, ButtonComponent, TranslatePipe],\n styleUrl: './password.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PasswordInputComponent extends BaseTextInputComponent {\n isPassword = signal<boolean>(true);\n type = computed(() => (this.isPassword() ? 'password' : 'text'));\n button = computed(() => (!this.isPassword() ? 'eye' : 'eye_close'));\n\n protected toggleType() {\n this.isPassword.update((now) => !now);\n }\n\n protected onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.setValue(target?.value ?? '');\n }\n}\n"],"mappings":";;;;;;;AA4DA,IAAa,yBAAb,MAAa,+BAA+B,uBAAsB;CAChE,aAAa,OAAgB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CAClC,OAAO,eAAgB,KAAK,WAAU,IAAK,aAAa,QAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAChE,SAAS,eAAgB,CAAC,KAAK,WAAU,IAAK,QAAQ,aAAa,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAEzD,aAAU;EAClB,KAAK,WAAW,QAAQ,QAAQ,CAAC,GAAG;CACtC;CAEU,QAAQ,OAAY;EAC5B,MAAM,SAAS,MAAM;EACrB,KAAK,SAAS,QAAQ,SAAS,EAAE;CACnC;CAZW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAsB,MAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAtB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAsB,cAAA;EAAA,UAAA;EAAA,iBAAA;EAAA,UAAA;EAAA,UA9CvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCT,UAAA;EAAA,QAAA,CAAA,s8HAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MACS;IAAc,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAmB,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA,CAAA,gBAAA,SAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAe,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA,CAAA,gBAAA,SAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAa,MAAA;GAAA;EAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAIlE,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EAhDlC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAkB,UAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCT,SACQ;IAAC;IAAgB;IAAqB;IAAiB;GAAa;GAAC,iBAE7D,wBAAwB;GAAM,QAAA,CAAA,s8HAAA;EAAA,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./magmonium-one-rolldown-runtime-DpJrqANO.mjs";
2
- import { t as LabelComponent } from "./magmonium-one-label-Dkis_mGP.mjs";
2
+ import { t as LabelComponent } from "./magmonium-one-label-D-wnA_Fl.mjs";
3
3
  import { t as BaseCheckboxInputComponent } from "./magmonium-one-base-checkbox-LdM6dqF_.mjs";
4
4
  import * as i0 from "@angular/core";
5
5
  import { ChangeDetectionStrategy, Component, computed } from "@angular/core";
@@ -108,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({
108
108
  });
109
109
  export { radio_exports as n, RadioInputComponent as t };
110
110
 
111
- //# sourceMappingURL=magmonium-one-radio-DPz4-SAJ.mjs.map
111
+ //# sourceMappingURL=magmonium-one-radio-DlS31qJG.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"magmonium-one-radio-DPz4-SAJ.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/checkbox/radio.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { BaseCheckboxInputComponent } from './base-checkbox';\nimport { LabelComponent } from '../label';\nimport { RadioInput } from '../../model/input';\n\n@Component({\n selector: 'm-radio',\n template: `\n @if (radioConfig(); as radio) {\n <div class=\"radio\">\n <input\n [checked]=\"checked()\"\n #inputElement\n [class.error]=\"showErrors()\"\n [disabled]=\"disabled()\"\n (change)=\"onChange($event)\"\n type=\"radio\"\n [name]=\"radio.name\"\n [id]=\"radio.id\"\n />\n <m-label\n [for]=\"radio.id\"\n [placeholder]=\"radio.label\"\n [params]=\"radio.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n </div>\n }\n `,\n styleUrl: './checkbox.sass',\n imports: [LabelComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioInputComponent extends BaseCheckboxInputComponent {\n protected readonly radioConfig = computed(() => this.config() as RadioInput);\n\n protected onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.setValue(target?.checked ?? false);\n }\n}\n"],"mappings":";;;;;;AAkCA,IAAa,sBAAb,MAAa,4BAA4B,2BAA0B;CAC9C,cAAc,eAAe,KAAK,OAAM,GAAiB,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAElE,SAAS,OAAY;EAC7B,MAAM,SAAS,MAAM;EACrB,KAAK,SAAS,QAAQ,WAAW,KAAK;CACxC;CANW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAmB,MAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAnB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAmB,cAAA;EAAA,UAAA;EAAA,iBAAA;EAAA,UAAA;EAAA,UA3BpB;;;;;;;;;;;;;;;;;;;;;;;EAsBT,UAAA;EAAA,QAAA,CAAA,oljBAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MAES;GAAc,UAAA;GAAA,QAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;GAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAGb,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAmB,YAAA,CAAA;EA7B/B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAS,UACT;;;;;;;;;;;;;;;;;;;;;;;GAsBT,SAEQ,CAAC,cAAc;GAAC,iBACR,wBAAwB;GAAM,QAAA,CAAA,oljBAAA;EAAA,CAAA"}
1
+ {"version":3,"file":"magmonium-one-radio-DlS31qJG.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/checkbox/radio.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { BaseCheckboxInputComponent } from './base-checkbox';\nimport { LabelComponent } from '../label';\nimport { RadioInput } from '../../model/input';\n\n@Component({\n selector: 'm-radio',\n template: `\n @if (radioConfig(); as radio) {\n <div class=\"radio\">\n <input\n [checked]=\"checked()\"\n #inputElement\n [class.error]=\"showErrors()\"\n [disabled]=\"disabled()\"\n (change)=\"onChange($event)\"\n type=\"radio\"\n [name]=\"radio.name\"\n [id]=\"radio.id\"\n />\n <m-label\n [for]=\"radio.id\"\n [placeholder]=\"radio.label\"\n [params]=\"radio.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n </div>\n }\n `,\n styleUrl: './checkbox.sass',\n imports: [LabelComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioInputComponent extends BaseCheckboxInputComponent {\n protected readonly radioConfig = computed(() => this.config() as RadioInput);\n\n protected onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.setValue(target?.checked ?? false);\n }\n}\n"],"mappings":";;;;;;AAkCA,IAAa,sBAAb,MAAa,4BAA4B,2BAA0B;CAC9C,cAAc,eAAe,KAAK,OAAM,GAAiB,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAElE,SAAS,OAAY;EAC7B,MAAM,SAAS,MAAM;EACrB,KAAK,SAAS,QAAQ,WAAW,KAAK;CACxC;CANW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAmB,MAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAnB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAmB,cAAA;EAAA,UAAA;EAAA,iBAAA;EAAA,UAAA;EAAA,UA3BpB;;;;;;;;;;;;;;;;;;;;;;;EAsBT,UAAA;EAAA,QAAA,CAAA,oljBAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MAES;GAAc,UAAA;GAAA,QAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;GAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAGb,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAmB,YAAA,CAAA;EA7B/B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAS,UACT;;;;;;;;;;;;;;;;;;;;;;;GAsBT,SAEQ,CAAC,cAAc;GAAC,iBACR,wBAAwB;GAAM,QAAA,CAAA,oljBAAA;EAAA,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./magmonium-one-rolldown-runtime-DpJrqANO.mjs";
2
- import { t as LabelComponent } from "./magmonium-one-label-Dkis_mGP.mjs";
2
+ import { t as LabelComponent } from "./magmonium-one-label-D-wnA_Fl.mjs";
3
3
  import { u as DraggableDirective } from "./magmonium-one-directives-hJ7wkmQn.mjs";
4
4
  import { t as BaseTextInputComponent } from "./magmonium-one-base-text-ChjG3GNw.mjs";
5
5
  import * as i0 from "@angular/core";
@@ -215,4 +215,4 @@ i0.ɵɵngDeclareClassMetadata({
215
215
  });
216
216
  export { range_exports as n, RangeInputComponent as t };
217
217
 
218
- //# sourceMappingURL=magmonium-one-range-DlQfnl9p.mjs.map
218
+ //# sourceMappingURL=magmonium-one-range-CR8go24u.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"magmonium-one-range-DlQfnl9p.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/range/range.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n HostListener,\n linkedSignal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { BaseTextInputComponent } from '../text/base-text';\nimport { DraggableDirective, Draggable } from '../../../../directives';\nimport { LabelComponent } from '../label';\nimport { RangeInput } from '../../model/input';\nimport { Direction } from '../../../../type';\n\n@Component({\n selector: 'm-range',\n imports: [DraggableDirective, LabelComponent],\n template: `\n @if (config(); as range) {\n <div class=\"m-range\">\n <m-label\n class=\"m-range__label\"\n [placeholder]=\"range.label\"\n [params]=\"range.params\"\n [noTranslate]=\"range.noTranslate\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n <div class=\"m-range__control\">\n <div class=\"m-range__track\" #track>\n <div\n class=\"m-range__fill\"\n [style.width.px]=\"thumbDraggable().position.x\"\n ></div>\n <div\n class=\"m-range__thumb\"\n [(mDraggable)]=\"thumbDraggable\"\n [min]=\"{ x: 0, y: _TRACK_HALF_H }\"\n [max]=\"{ x: _trackWidth(), y: _TRACK_HALF_H }\"\n ></div>\n </div>\n <span class=\"m-range__value\" [class.hidden]=\"_displayValue() === 0\">{{ _displayValue() !== 0 ? _displayValue() : '' }}</span>\n </div>\n </div>\n }\n `,\n styleUrl: './range.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RangeInputComponent extends BaseTextInputComponent<RangeInput> {\n private readonly _track = viewChild<ElementRef<HTMLDivElement>>('track');\n protected readonly _trackWidth = signal(0);\n protected readonly _TRACK_HALF_H = 3;\n\n /**\n * Measured live rather than once. The track shares its row with the value\n * readout and opens inside panels that animate in, and a width read mid\n * animation is the scaled one — `getBoundingClientRect` counts transforms\n * where a ResizeObserver's box does not. A stale width is a thumb that stops\n * short of the track's end or, before the bounds became inputs on the\n * Draggable, ran clean past it.\n */\n private readonly _measure = effect((onCleanup) => {\n const track = this._track();\n if (!track) return;\n\n const el = track.nativeElement;\n this._trackWidth.set(el.getBoundingClientRect().width);\n\n // Absent under jsdom, where the window resize below is the only signal.\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(([entry]) =>\n this._trackWidth.set(entry.contentRect.width)\n );\n observer.observe(el);\n onCleanup(() => observer.disconnect());\n });\n\n thumbDraggable = linkedSignal({\n source: () => ({\n val: this.value(),\n tw: this._trackWidth(),\n cfg: this.config(),\n }),\n computation: ({\n val,\n tw,\n cfg,\n }: {\n val: string;\n tw: number;\n cfg: unknown;\n }): Draggable => {\n const rangeCfg = cfg as RangeInput | undefined;\n const min = rangeCfg?.min ?? 0;\n const max = rangeCfg?.max ?? 100;\n const numVal = Number(val) || min;\n const x = tw > 0 ? (tw * (numVal - min)) / (max - min) : 0;\n return {\n direction: 'x' as Direction,\n position: { x, y: this._TRACK_HALF_H },\n };\n },\n });\n\n readonly _displayValue = computed(() => {\n const cfg = this.config() as RangeInput | undefined;\n const min = cfg?.min ?? 0;\n const max = cfg?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return Number(this.value()) || min;\n const x = this.thumbDraggable().position.x ?? 0;\n return Math.round(min + ((max - min) * x) / tw);\n });\n\n constructor() {\n super();\n effect(() => {\n const pos = this.thumbDraggable().position;\n const cfg = this.config() as RangeInput | undefined;\n const min = cfg?.min ?? 0;\n const max = cfg?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return;\n const numVal = Number(this.value()) || min;\n const expectedX = tw > 0 ? (tw * (numVal - min)) / (max - min) : 0;\n if (pos.x !== expectedX) {\n const val = Math.round(min + ((max - min) * (pos.x ?? 0)) / tw);\n this.setValue(String(val));\n }\n });\n }\n\n @HostListener('window:resize')\n protected _onResize(): void {\n const track = this._track();\n if (track) {\n this._trackWidth.set(track.nativeElement.getBoundingClientRect().width);\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"magmonium-one-range-CR8go24u.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/range/range.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n HostListener,\n linkedSignal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { BaseTextInputComponent } from '../text/base-text';\nimport { DraggableDirective, Draggable } from '../../../../directives';\nimport { LabelComponent } from '../label';\nimport { RangeInput } from '../../model/input';\nimport { Direction } from '../../../../type';\n\n@Component({\n selector: 'm-range',\n imports: [DraggableDirective, LabelComponent],\n template: `\n @if (config(); as range) {\n <div class=\"m-range\">\n <m-label\n class=\"m-range__label\"\n [placeholder]=\"range.label\"\n [params]=\"range.params\"\n [noTranslate]=\"range.noTranslate\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n <div class=\"m-range__control\">\n <div class=\"m-range__track\" #track>\n <div\n class=\"m-range__fill\"\n [style.width.px]=\"thumbDraggable().position.x\"\n ></div>\n <div\n class=\"m-range__thumb\"\n [(mDraggable)]=\"thumbDraggable\"\n [min]=\"{ x: 0, y: _TRACK_HALF_H }\"\n [max]=\"{ x: _trackWidth(), y: _TRACK_HALF_H }\"\n ></div>\n </div>\n <span class=\"m-range__value\" [class.hidden]=\"_displayValue() === 0\">{{ _displayValue() !== 0 ? _displayValue() : '' }}</span>\n </div>\n </div>\n }\n `,\n styleUrl: './range.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RangeInputComponent extends BaseTextInputComponent<RangeInput> {\n private readonly _track = viewChild<ElementRef<HTMLDivElement>>('track');\n protected readonly _trackWidth = signal(0);\n protected readonly _TRACK_HALF_H = 3;\n\n /**\n * Measured live rather than once. The track shares its row with the value\n * readout and opens inside panels that animate in, and a width read mid\n * animation is the scaled one — `getBoundingClientRect` counts transforms\n * where a ResizeObserver's box does not. A stale width is a thumb that stops\n * short of the track's end or, before the bounds became inputs on the\n * Draggable, ran clean past it.\n */\n private readonly _measure = effect((onCleanup) => {\n const track = this._track();\n if (!track) return;\n\n const el = track.nativeElement;\n this._trackWidth.set(el.getBoundingClientRect().width);\n\n // Absent under jsdom, where the window resize below is the only signal.\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(([entry]) =>\n this._trackWidth.set(entry.contentRect.width)\n );\n observer.observe(el);\n onCleanup(() => observer.disconnect());\n });\n\n thumbDraggable = linkedSignal({\n source: () => ({\n val: this.value(),\n tw: this._trackWidth(),\n cfg: this.config(),\n }),\n computation: ({\n val,\n tw,\n cfg,\n }: {\n val: string;\n tw: number;\n cfg: unknown;\n }): Draggable => {\n const rangeCfg = cfg as RangeInput | undefined;\n const min = rangeCfg?.min ?? 0;\n const max = rangeCfg?.max ?? 100;\n const numVal = Number(val) || min;\n const x = tw > 0 ? (tw * (numVal - min)) / (max - min) : 0;\n return {\n direction: 'x' as Direction,\n position: { x, y: this._TRACK_HALF_H },\n };\n },\n });\n\n readonly _displayValue = computed(() => {\n const cfg = this.config() as RangeInput | undefined;\n const min = cfg?.min ?? 0;\n const max = cfg?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return Number(this.value()) || min;\n const x = this.thumbDraggable().position.x ?? 0;\n return Math.round(min + ((max - min) * x) / tw);\n });\n\n constructor() {\n super();\n effect(() => {\n const pos = this.thumbDraggable().position;\n const cfg = this.config() as RangeInput | undefined;\n const min = cfg?.min ?? 0;\n const max = cfg?.max ?? 100;\n const tw = this._trackWidth();\n if (tw === 0) return;\n const numVal = Number(this.value()) || min;\n const expectedX = tw > 0 ? (tw * (numVal - min)) / (max - min) : 0;\n if (pos.x !== expectedX) {\n const val = Math.round(min + ((max - min) * (pos.x ?? 0)) / tw);\n this.setValue(String(val));\n }\n });\n }\n\n @HostListener('window:resize')\n protected _onResize(): void {\n const track = this._track();\n if (track) {\n this._trackWidth.set(track.nativeElement.getBoundingClientRect().width);\n }\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./magmonium-one-rolldown-runtime-DpJrqANO.mjs";
2
2
  import { c as TranslatePipe } from "./magmonium-one-size-converter-BqkALIWA.mjs";
3
- import { t as LabelComponent } from "./magmonium-one-label-Dkis_mGP.mjs";
3
+ import { t as LabelComponent } from "./magmonium-one-label-D-wnA_Fl.mjs";
4
4
  import { r as IconComponent } from "./magmonium-one-icon-CH-g8CUR.mjs";
5
5
  import { t as InputType } from "./magmonium-one-input-DqHPorA1.mjs";
6
6
  import { t as BaseTextInputComponent } from "./magmonium-one-base-text-ChjG3GNw.mjs";
@@ -407,4 +407,4 @@ i0.ɵɵngDeclareClassMetadata({
407
407
  });
408
408
  export { text_exports as n, TextInputComponent as t };
409
409
 
410
- //# sourceMappingURL=magmonium-one-text-vDPAhn74.mjs.map
410
+ //# sourceMappingURL=magmonium-one-text-4zWYsKpH.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"magmonium-one-text-vDPAhn74.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/text/text.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n} from '@angular/core';\nimport { LabelComponent } from '../label';\nimport { TextOutputComponent } from '../../../text-output';\nimport { BaseTextInputComponent } from './base-text';\nimport { IconComponent } from '../../../icon';\nimport { TranslatePipe } from '../../../../pipe';\nimport { Input, InputType, NumberInput } from '../../model/input';\nimport { ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\n/**\n * What this one component draws: a line of text, or the same line typed\n * `number`. WrapperInputComponent has no case for a `number` Field, so it\n * lands here — and the figures a NumberInput carries have to be readable off\n * the config the template already holds.\n */\nexport type TextOrNumberInput = Omit<Input, 'type'> &\n Pick<NumberInput, 'min' | 'max' | 'step'> & {\n type: InputType.TEXT | InputType.NUMBER;\n };\n\n@Component({\n selector: 'm-text-input',\n template: `\n @if (config(); as text) {\n @if (text.label) {\n <m-label\n [for]=\"text.name ?? ''\"\n [placeholder]=\"text.label\"\n [params]=\"text.params\"\n [noTranslate]=\"text.noTranslate\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n <div class=\"input-wrapper\">\n @if (text.icon) {\n <m-icon\n [name]=\"text.icon\"\n [color]=\"iconColor()\"\n [one]=\"text.one\"\n />\n }\n @if (text.prefix) {\n <span class=\"input-prefix\">{{ text.prefix }}</span>\n }\n <input\n [id]=\"text.name ?? ''\"\n [attr.data-testid]=\"text.testid ?? (text.name ? text.name + '-input' : null)\"\n [value]=\"value()\"\n #inputElement\n [class.error]=\"showErrors()\"\n [class.has-icon]=\"!!text.icon\"\n [class.has-prefix]=\"!!text.prefix\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly() || config()?.readonly\"\n [placeholder]=\"text.placeholder ?? '' | translate: text.params\"\n (input)=\"onInput($event)\"\n (focus)=\"isFocused.set(true)\"\n (blur)=\"isFocused.set(false); touched.set(true)\"\n [type]=\"isNumber() ? 'number' : 'text'\"\n [attr.min]=\"isNumber() ? text.min ?? null : null\"\n [attr.max]=\"isNumber() ? text.max ?? null : null\"\n [attr.step]=\"isNumber() ? text.step ?? null : null\"\n />\n @if (config()?.status; as status) {\n <div class=\"input-indicator\" [class]=\"'input-indicator--' + status\">\n @if (status === 'checking') {\n <span class=\"spinner\"></span>\n } @else if (status === 'available') {\n <m-icon name=\"check\" color=\"success\" />\n }\n </div>\n }\n @if (text.suffix) {\n <span class=\"input-suffix\">{{ text.suffix }}</span>\n }\n </div>\n @if (showErrors() && !hideErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n `,\n imports: [LabelComponent, TextOutputComponent, IconComponent, TranslatePipe],\n styleUrl: './text.sass',\n host: {\n '[class]': \"config()?.variant ? 'm-input--' + config()?.variant : ''\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextInputComponent extends BaseTextInputComponent<TextOrNumberInput> {\n public override value = model<string>('');\n public override config = input<Partial<TextOrNumberInput> | undefined>();\n public override required = input<boolean>(false);\n public override disabled = input<boolean>(false);\n public override invalid = input<boolean>(false);\n public override touched = model<boolean>(false);\n public override focused = input<boolean>(false);\n public override errors = input<readonly WithOptionalFieldTree<ValidationError>[]>(\n []\n );\n public override showErrors = computed(() => this.touched() && this.invalid());\n readonly hideErrors = input<boolean>(false);\n\n // A `number` Field draws this same component (WrapperInputComponent has no\n // case of its own for it), so the type it declares decides the element it\n // draws. What *leaves* the field is coerced a level up, in the wrapper: an\n // `<input>` reads its value as text whatever its type, and every other\n // component on this base is a string field.\n protected readonly isNumber = computed(() => {\n const config = this.config();\n return !!config && config.type === InputType.NUMBER;\n });\n\n protected onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.setValue(target?.value ?? '');\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"magmonium-one-text-4zWYsKpH.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/text/text.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n} from '@angular/core';\nimport { LabelComponent } from '../label';\nimport { TextOutputComponent } from '../../../text-output';\nimport { BaseTextInputComponent } from './base-text';\nimport { IconComponent } from '../../../icon';\nimport { TranslatePipe } from '../../../../pipe';\nimport { Input, InputType, NumberInput } from '../../model/input';\nimport { ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\n/**\n * What this one component draws: a line of text, or the same line typed\n * `number`. WrapperInputComponent has no case for a `number` Field, so it\n * lands here — and the figures a NumberInput carries have to be readable off\n * the config the template already holds.\n */\nexport type TextOrNumberInput = Omit<Input, 'type'> &\n Pick<NumberInput, 'min' | 'max' | 'step'> & {\n type: InputType.TEXT | InputType.NUMBER;\n };\n\n@Component({\n selector: 'm-text-input',\n template: `\n @if (config(); as text) {\n @if (text.label) {\n <m-label\n [for]=\"text.name ?? ''\"\n [placeholder]=\"text.label\"\n [params]=\"text.params\"\n [noTranslate]=\"text.noTranslate\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n <div class=\"input-wrapper\">\n @if (text.icon) {\n <m-icon\n [name]=\"text.icon\"\n [color]=\"iconColor()\"\n [one]=\"text.one\"\n />\n }\n @if (text.prefix) {\n <span class=\"input-prefix\">{{ text.prefix }}</span>\n }\n <input\n [id]=\"text.name ?? ''\"\n [attr.data-testid]=\"text.testid ?? (text.name ? text.name + '-input' : null)\"\n [value]=\"value()\"\n #inputElement\n [class.error]=\"showErrors()\"\n [class.has-icon]=\"!!text.icon\"\n [class.has-prefix]=\"!!text.prefix\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly() || config()?.readonly\"\n [placeholder]=\"text.placeholder ?? '' | translate: text.params\"\n (input)=\"onInput($event)\"\n (focus)=\"isFocused.set(true)\"\n (blur)=\"isFocused.set(false); touched.set(true)\"\n [type]=\"isNumber() ? 'number' : 'text'\"\n [attr.min]=\"isNumber() ? text.min ?? null : null\"\n [attr.max]=\"isNumber() ? text.max ?? null : null\"\n [attr.step]=\"isNumber() ? text.step ?? null : null\"\n />\n @if (config()?.status; as status) {\n <div class=\"input-indicator\" [class]=\"'input-indicator--' + status\">\n @if (status === 'checking') {\n <span class=\"spinner\"></span>\n } @else if (status === 'available') {\n <m-icon name=\"check\" color=\"success\" />\n }\n </div>\n }\n @if (text.suffix) {\n <span class=\"input-suffix\">{{ text.suffix }}</span>\n }\n </div>\n @if (showErrors() && !hideErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n `,\n imports: [LabelComponent, TextOutputComponent, IconComponent, TranslatePipe],\n styleUrl: './text.sass',\n host: {\n '[class]': \"config()?.variant ? 'm-input--' + config()?.variant : ''\",\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextInputComponent extends BaseTextInputComponent<TextOrNumberInput> {\n public override value = model<string>('');\n public override config = input<Partial<TextOrNumberInput> | undefined>();\n public override required = input<boolean>(false);\n public override disabled = input<boolean>(false);\n public override invalid = input<boolean>(false);\n public override touched = model<boolean>(false);\n public override focused = input<boolean>(false);\n public override errors = input<readonly WithOptionalFieldTree<ValidationError>[]>(\n []\n );\n public override showErrors = computed(() => this.touched() && this.invalid());\n readonly hideErrors = input<boolean>(false);\n\n // A `number` Field draws this same component (WrapperInputComponent has no\n // case of its own for it), so the type it declares decides the element it\n // draws. What *leaves* the field is coerced a level up, in the wrapper: an\n // `<input>` reads its value as text whatever its type, and every other\n // component on this base is a string field.\n protected readonly isNumber = computed(() => {\n const config = this.config();\n return !!config && config.type === InputType.NUMBER;\n });\n\n protected onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.setValue(target?.value ?? '');\n }\n}\n"],"mappings":"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"}