@ktjs/mui 0.18.2 → 0.18.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -129,13 +129,14 @@ declare function LinearProgress(props: LinearProgressProps): KTMuiLinearProgress
129
129
 
130
130
  type ChangeHandler<T = string> = (value: T, ...args: any[]) => void;
131
131
 
132
- interface TextFieldProps {
132
+ type InputTypes = 'text' | 'password' | 'email' | 'number' | 'tel' | 'url';
133
+ interface TextFieldProps<T extends InputTypes> {
133
134
  class?: string;
134
135
  style?: string;
135
136
  label?: string;
136
137
  placeholder?: string;
137
138
  value?: any;
138
- type?: 'text' | 'password' | 'email' | 'number' | 'tel' | 'url';
139
+ type?: T;
139
140
  disabled?: boolean;
140
141
  readonly?: boolean;
141
142
  required?: boolean;
@@ -145,12 +146,12 @@ interface TextFieldProps {
145
146
  multiline?: boolean;
146
147
  rows?: number;
147
148
  size?: 'small' | 'medium';
148
- 'kt:input'?: ChangeHandler | KTRef<string>;
149
- 'kt-trim:input'?: ChangeHandler | KTRef<string>;
150
- 'kt:change'?: ChangeHandler | KTRef<string>;
151
- 'kt-trim:change'?: ChangeHandler | KTRef<string>;
152
- 'kt:blur'?: ChangeHandler | KTRef<string>;
153
- 'kt:focus'?: ChangeHandler | KTRef<string>;
149
+ 'kt:input'?: T extends 'number' ? ChangeHandler<number> | KTRef<number> : ChangeHandler | KTRef<string>;
150
+ 'kt-trim:input'?: T extends 'number' ? ChangeHandler<number> | KTRef<number> : ChangeHandler | KTRef<string>;
151
+ 'kt:change'?: T extends 'number' ? ChangeHandler<number> | KTRef<number> : ChangeHandler | KTRef<string>;
152
+ 'kt-trim:change'?: T extends 'number' ? ChangeHandler<number> | KTRef<number> : ChangeHandler | KTRef<string>;
153
+ 'kt:blur'?: () => void;
154
+ 'kt:focus'?: () => void;
154
155
  }
155
156
  type KTMuiTextField = KTHTMLElement$1 & {
156
157
  value: string;
@@ -166,7 +167,7 @@ type KTMuiTextField = KTHTMLElement$1 & {
166
167
  /**
167
168
  * TextField component - mimics MUI TextField appearance and behavior
168
169
  */
169
- declare function TextField(props: TextFieldProps): KTMuiTextField;
170
+ declare function TextField<T extends InputTypes>(props: TextFieldProps<T>): KTMuiTextField;
170
171
 
171
172
  interface RadioProps {
172
173
  value: string;
@@ -462,18 +462,33 @@ var __ktjs_mui__ = (function (exports, jsxRuntime, kt_js) {
462
462
  error ? 'mui-textfield-error' : '',
463
463
  disabled ? 'mui-textfield-disabled' : '',
464
464
  fullWidth ? 'mui-textfield-fullwidth' : '',
465
- label && isFocused && inputEl.value ? 'mui-textfield-has-value' : '',
465
+ label && inputEl.value ? 'mui-textfield-has-value' : '',
466
466
  label ? '' : 'mui-textfield-no-label',
467
467
  ].join(' ');
468
468
  };
469
469
  const handleInput = () => {
470
470
  updateContainerClass();
471
- onInput(inputEl.value);
472
- onInputTrim(inputEl.value.trim());
471
+ if (type === 'number') {
472
+ const v = Number(inputEl.value);
473
+ onInput(v);
474
+ onInputTrim(v);
475
+ }
476
+ else {
477
+ onInput(inputEl.value);
478
+ onInputTrim(inputEl.value.trim());
479
+ }
473
480
  };
474
481
  const handleChange = () => {
475
- onChange(inputEl.value);
476
- onChangeTrim(inputEl.value.trim());
482
+ updateContainerClass();
483
+ if (type === 'number') {
484
+ const v = Number(inputEl.value);
485
+ onChange(v);
486
+ onChangeTrim(v);
487
+ }
488
+ else {
489
+ onChange(inputEl.value);
490
+ onChangeTrim(inputEl.value.trim());
491
+ }
477
492
  };
478
493
  const handleFocus = () => {
479
494
  isFocused = true;
package/dist/index.mjs CHANGED
@@ -462,18 +462,33 @@ function TextField(props) {
462
462
  error ? 'mui-textfield-error' : '',
463
463
  disabled ? 'mui-textfield-disabled' : '',
464
464
  fullWidth ? 'mui-textfield-fullwidth' : '',
465
- label && isFocused && inputEl.value ? 'mui-textfield-has-value' : '',
465
+ label && inputEl.value ? 'mui-textfield-has-value' : '',
466
466
  label ? '' : 'mui-textfield-no-label',
467
467
  ].join(' ');
468
468
  };
469
469
  const handleInput = () => {
470
470
  updateContainerClass();
471
- onInput(inputEl.value);
472
- onInputTrim(inputEl.value.trim());
471
+ if (type === 'number') {
472
+ const v = Number(inputEl.value);
473
+ onInput(v);
474
+ onInputTrim(v);
475
+ }
476
+ else {
477
+ onInput(inputEl.value);
478
+ onInputTrim(inputEl.value.trim());
479
+ }
473
480
  };
474
481
  const handleChange = () => {
475
- onChange(inputEl.value);
476
- onChangeTrim(inputEl.value.trim());
482
+ updateContainerClass();
483
+ if (type === 'number') {
484
+ const v = Number(inputEl.value);
485
+ onChange(v);
486
+ onChangeTrim(v);
487
+ }
488
+ else {
489
+ onChange(inputEl.value);
490
+ onChangeTrim(inputEl.value.trim());
491
+ }
477
492
  };
478
493
  const handleFocus = () => {
479
494
  isFocused = true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ktjs/mui",
3
- "version": "0.18.2",
3
+ "version": "0.18.4",
4
4
  "description": "Material-UI inspired components for kt.js - pre-styled UI components",
5
5
  "type": "module",
6
6
  "module": "./dist/index.mjs",