@mamrp/components 1.0.34 → 1.0.35

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../react-shim.js","../../src/charts/bar/index.tsx","../../src/charts/pie/index.tsx"],"sourcesContent":["import * as React from \"react\";\nexport { React };\n","import { Chart } from \"react-chartjs-2\";\r\nimport {\r\n Chart as ChartJS,\r\n BarElement,\r\n LineElement,\r\n PointElement,\r\n CategoryScale,\r\n LinearScale,\r\n Tooltip,\r\n Legend,\r\n Chart as ChartType,\r\n} from \"chart.js\";\r\nimport { Box } from \"@mui/material\";\r\n\r\nChartJS.register(\r\n BarElement,\r\n LineElement,\r\n PointElement,\r\n CategoryScale,\r\n LinearScale,\r\n Tooltip,\r\n Legend\r\n);\r\n\r\ninterface Props {\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n backgroundColor: string;\r\n borderColor?: string;\r\n borderWidth?: number;\r\n type?: \"line\";\r\n order?: number;\r\n tension?: number;\r\n pointRadius?: number;\r\n fill?: boolean;\r\n }[];\r\n height?: number;\r\n}\r\n/**\r\n * 📊 BarChart — کامپوننت نمودار میله‌ای (Bar/Combo)\r\n *\r\n * @component BarChart\r\n *\r\n * @param {string[]} labels - آرایه‌ای از برچسب‌ها برای محور افقی (X).\r\n * @param {Array<{\r\n * label: string,\r\n * data: number[],\r\n * backgroundColor: string,\r\n * borderColor?: string,\r\n * borderWidth?: number,\r\n * type?: \"line\",\r\n * order?: number,\r\n * tension?: number,\r\n * pointRadius?: number,\r\n * fill?: boolean\r\n * }>} datasets - آرایه‌ای از آبجکت‌های داده برای هر سری نمودار.\r\n * - label: عنوان داده‌ها (نمایش در legend)\r\n * - data: آرایه‌ای از مقادیر هر سری\r\n * - backgroundColor: رنگ میله یا خط\r\n * - borderColor: (اختیاری) رنگ خط دور میله یا خط\r\n * - borderWidth: (اختیاری) ضخامت خط دور میله یا خط\r\n * - type: (اختیاری) اگر \"line\" باشد، سری به صورت خطی نمایش داده می‌شود (نمودار ترکیبی)\r\n * - order: (اختیاری) ترتیب رسم سری (سری با order بالاتر روی بقیه قرار می‌گیرد)\r\n * - tension: (اختیاری) میزان خمیدگی خط (برای سری‌های خطی)\r\n * - pointRadius: (اختیاری) شعاع نقاط روی خط (برای سری‌های خطی)\r\n * - fill: (اختیاری) پر شدن زیر خط (برای سری‌های خطی)\r\n *\r\n * @param {number} [height] - ارتفاع نمودار (پیش‌فرض: 600 پیکسل)\r\n *\r\n * @description\r\n * این کامپوننت یک نمودار میله‌ای (Bar) یا ترکیبی Bar/Line با قابلیت شخصی‌سازی کامل است.\r\n * - پشتیبانی از فونت وزیر و راست‌چین\r\n * - ریسپانسیو و مناسب صفحات فارسی\r\n * - امکان نمایش چند سری داده به صورت میله‌ای و خطی همزمان (Combo)\r\n * - شخصی‌سازی رنگ، ضخامت، ترتیب و استایل هر سری\r\n *\r\n * @returns {JSX.Element} یک نمودار میله‌ای یا ترکیبی با داده‌های ورودی\r\n *\r\n * @example\r\n * ```jsx\r\n * <BarChart\r\n * labels={[\"شنبه\", \"یکشنبه\", \"دوشنبه\"]}\r\n * datasets={[\r\n * {\r\n * label: \"فروش\",\r\n * data: [10, 20, 15],\r\n * backgroundColor: \"rgba(75,192,192,0.7)\",\r\n * },\r\n * {\r\n * label: \"میانگین\",\r\n * data: [12, 18, 14],\r\n * borderColor: \"red\",\r\n * backgroundColor: \"transparent\",\r\n * type: \"line\",\r\n * order: 0,\r\n * borderWidth: 3,\r\n * tension: 0.4,\r\n * pointRadius: 4,\r\n * fill: false,\r\n * },\r\n * ]}\r\n * height={400}\r\n * />\r\n * ```\r\n */\r\nexport default function BarChart({ labels, datasets, height }: Props) {\r\n const options = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n scales: {\r\n y: {\r\n ticks: {\r\n font: {\r\n family: \"'Vazir', sans-serif\",\r\n size: 14,\r\n },\r\n },\r\n },\r\n x: {\r\n ticks: {\r\n autoSkip: false,\r\n font: {\r\n family: \"'Vazir', sans-serif\",\r\n size: 13,\r\n },\r\n },\r\n },\r\n },\r\n plugins: {\r\n tooltip: {\r\n bodyFont: {\r\n family: \"'Vazir', sans-serif\",\r\n size: 14,\r\n },\r\n titleFont: {\r\n family: \"'Vazir', sans-serif\",\r\n size: 16,\r\n },\r\n },\r\n legend: {\r\n labels: {\r\n generateLabels: function (chart: ChartType) {\r\n const labels =\r\n ChartJS.defaults.plugins.legend.labels.generateLabels(chart);\r\n return labels.map((label) => ({\r\n ...label,\r\n text: \" \" + label.text + \" \",\r\n boxWidth: 40,\r\n boxHeight: 20,\r\n }));\r\n },\r\n padding: 15,\r\n usePointStyle: true,\r\n font: {\r\n size: 16,\r\n family: \"'Vazir', sans-serif\",\r\n },\r\n boxWidth: 40,\r\n paddingBottom: 10,\r\n },\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <Box height={height ?? 600}>\r\n <Chart type=\"bar\" data={{ labels, datasets }} options={options} />\r\n </Box>\r\n );\r\n}\r\n","import { Pie } from \"react-chartjs-2\";\nimport { Chart as ChartJS, ArcElement, Tooltip, Legend, Chart } from \"chart.js\";\nimport { useMemo } from \"react\";\nimport { Box } from \"@mui/material\";\nimport Image from \"next/image\";\nChartJS.register(ArcElement, Tooltip, Legend);\n\ninterface Props {\n labels: string[];\n datasets: {\n label: string;\n data: number[];\n backgroundColor: string | string[];\n borderWidth?: number;\n }[];\n height?: number;\n disableLogo?: boolean;\n logoSRC?: string;\n}\n/**\n * 📊 PieChart — کامپوننت نمودار دایره‌ای (Pie)\n *\n * @component PieChart\n *\n * @param {string[]} labels - آرایه‌ای از برچسب‌ها برای هر بخش نمودار.\n * @param {Array<{\n * label: string,\n * data: number[],\n * backgroundColor: string[],\n * borderWidth?: number\n * }>} datasets - آرایه‌ای شامل یک آبجکت داده برای مقداردهی بخش‌های نمودار.\n * - label: عنوان داده‌ها (نمایش در legend)\n * - data: آرایه‌ای از مقادیر هر بخش\n * - backgroundColor: آرایه‌ای از رنگ‌ها برای هر بخش\n * - borderWidth: (اختیاری) ضخامت خط دور هر بخش\n * @param {number} [height] - ارتفاع نمودار (پیش‌فرض: 600 پیکسل)\n *\n * @description\n * این کامپوننت یک نمودار دایره‌ای با قابلیت شخصی‌سازی رنگ، داده و فونت (هماهنگ با وزیر) است.\n * - ریسپانسیو و مناسب صفحات فارسی\n * - امکان نمایش لوگو یا کامپوننت دلخواه در مرکز نمودار\n *\n * @returns {JSX.Element} یک نمودار دایره‌ای با داده‌های ورودی\n *\n * @example\n * ```jsx\n * <PieChart\n * labels={[\"بخش اول\", \"بخش دوم\", \"بخش سوم\"]}\n * datasets={[\n * {\n * label: \"مقدار\",\n * data: [10, 20, 30],\n * backgroundColor: [\n * \"rgba(75,192,192,1)\",\n * \"rgba(255,99,132,1)\",\n * \"rgba(153,102,255,1)\",\n * ],\n * borderWidth: 2,\n * },\n * ]}\n * />\n * ```\n */\nexport default function PieChart({ labels, datasets, height , disableLogo,logoSRC }: Props) {\n const options = {\n responsive: true,\n maintainAspectRatio: false,\n cutout: !disableLogo ? \"59%\" : \"0%\",\n plugins: {\n tooltip: {\n bodyFont: {\n family: \"'Vazir', sans-serif\",\n size: 14,\n },\n titleFont: {\n family: \"'Vazir', sans-serif\",\n size: 16,\n },\n },\n legend: {\n labels: {\n padding: 15,\n usePointStyle: true,\n font: {\n size: 16,\n family: \"'Vazir', sans-serif\",\n },\n boxWidth: 40,\n paddingBottom: 10,\n },\n },\n },\n };\n\n // کامپوننتی که می‌خواهید در مرکز نمودار نمایش داده شود\n const CenterComponent = () => {\n return (\n <div\n style={{\n padding: \"10px\",\n borderRadius: \"8px\",\n textAlign: \"center\",\n width: 220,\n }}\n >\n <Image alt=\"\" width={220} height={220} src={logoSRC ?? \"/assets/images/pilogo.png\"} unoptimized/>\n </div>\n );\n };\n\n return (\n <Box height={height ?? 600} sx={{ position: \"relative\" }}>\n <Pie\n data={{\n labels: labels,\n datasets: datasets,\n }}\n options={options}\n />\n {!disableLogo && <div\n style={{\n position: \"absolute\",\n top: \"53%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n pointerEvents: \"none\", // جلوگیری از دریافت event روی این لایه\n }}\n >\n <CenterComponent />\n </div>}\n </Box>\n );\n}\n"],"mappings":"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","names":["labels","ChartJS","Tooltip","Legend","Box"]}
package/dist/index.d.mts CHANGED
@@ -6,7 +6,7 @@ import { SxProps, Theme } from '@mui/material';
6
6
  import { GridColDef } from '@mui/x-data-grid';
7
7
  import { TextFieldProps } from '@mui/material/TextField';
8
8
 
9
- interface MultipleSelectChipProps$1 {
9
+ interface MultipleSelectChipProps {
10
10
  name: string;
11
11
  control: Control<any>;
12
12
  label?: string;
@@ -18,7 +18,7 @@ interface MultipleSelectChipProps$1 {
18
18
  clear?: boolean;
19
19
  }
20
20
  declare function MultipleSelectChip({ name, control, label, data, multipleitems, //قابلیت انتخاب چند گزینه ای
21
- isLoading, disabled, size, clear, }: MultipleSelectChipProps$1): React.JSX.Element;
21
+ isLoading, disabled, size, clear, }: MultipleSelectChipProps): React.JSX.Element;
22
22
 
23
23
  interface AdvancedSearchButtonProps {
24
24
  isShowFilter: boolean;
@@ -240,16 +240,22 @@ type FormInputNumberProps<T extends FieldValues> = {
240
240
  thousandSeparator?: string | null;
241
241
  allowLeadingZeros?: boolean;
242
242
  allowNegative?: boolean;
243
+ onChangeHandler?: (param: any, onChange: (data: any) => void, value: any) => void;
244
+ valueHandler?: (value: any) => void;
243
245
  maxLength?: number;
244
246
  rules?: any;
245
247
  isLoading?: boolean;
246
248
  data?: any;
247
249
  borderColor?: string;
248
250
  decimalScale?: number;
251
+ placeholder?: string;
252
+ nputRef?: any;
253
+ onKeyDown?: any;
249
254
  textAlign?: "left" | "right" | "center";
255
+ autoComplete?: string;
250
256
  borderless?: boolean;
251
257
  } & TextFieldProps;
252
- declare const FormInputNumber: <T extends FieldValues>({ name, control, label, endAdornment, thousandSeparator, startAdornment, allowLeadingZeros, allowNegative, maxLength, isLoading, rules, data, borderColor, decimalScale, textAlign, borderless, ...rest }: FormInputNumberProps<T>) => React__default.JSX.Element;
258
+ declare const FormInputNumber: <T extends FieldValues>({ name, control, label, inputRef, onKeyDown, endAdornment, thousandSeparator, startAdornment, onChangeHandler, valueHandler, allowLeadingZeros, allowNegative, maxLength, isLoading, rules, data, borderColor, placeholder, decimalScale, autoComplete, textAlign, borderless, ...rest }: FormInputNumberProps<T>) => React__default.JSX.Element;
253
259
 
254
260
  type FormInputTextProps<T extends FieldValues> = {
255
261
  control: Control<T>;
@@ -305,63 +311,4 @@ type ConnectToBasculeButtonProps = {
305
311
  };
306
312
  declare const ConnectToBasculeButton: React__default.FC<ConnectToBasculeButtonProps>;
307
313
 
308
- interface OptionType {
309
- title: string;
310
- key: string | number;
311
- [x: string]: any;
312
- }
313
- interface MultipleSelectChipProps<T extends OptionType> {
314
- name: string;
315
- control: Control<any>;
316
- label?: string;
317
- data?: T[];
318
- isLoading?: boolean;
319
- disabled?: boolean;
320
- size?: "small" | "medium";
321
- clear?: boolean;
322
- renderOption?: (props: React.HTMLAttributes<HTMLLIElement>, option: T) => React.ReactNode;
323
- }
324
- /**
325
- * 📦 کامپوننت انتخاب چند گزینه‌ای با پشتیبانی از react-hook-form و MUI Autocomplete
326
- *
327
- * @component MultipleSelector
328
- *
329
- * @param {string} name - نام فیلدی که در فرم ثبت می‌شود.
330
- * @param {string} [label] - برچسب نمایشی برای فیلد.
331
- * @param {Control<any>} control - کنترل فرم از react-hook-form.
332
- * @param {{ title: string; key: string | number }[]} [data] - لیستی از گزینه‌ها شامل `title` (متن) و `key` (مقدار).
333
- * @param {boolean} [isLoading=false] - آیا داده‌ها در حال بارگذاری هستند.
334
- * @param {boolean} [disabled=false] - غیرفعال‌سازی ورودی.
335
- * @param {"small" | "medium"} [size="medium"] - سایز ورودی.
336
- * @param {boolean} [clear=false] - آیا امکان پاک کردن وجود دارد یا نه.
337
- * @param {string} [tooltip] - متن راهنما هنگام هاور.
338
- * @param {(props, option) => React.ReactNode} [renderOption] - تابعی سفارشی برای رندر آیتم‌ها در لیست.
339
- *
340
- * @returns {Array<{ key: string | number }>} لیستی از آیتم‌های انتخاب‌شده ( فقط آیدی‌ها).
341
- *
342
- * @example
343
- * ```tsx
344
- * <MultipleSelector<{title:string; key:number;}>
345
- * name="productIds"
346
- * label="محصولات"
347
- * control={control}
348
- * data={[{ title: "محصول ۱", key: 1 }, { title: "محصول ۲", key: 2 }]}
349
- * />
350
- * ```
351
- *
352
- * @description
353
- * کامپوننتی چندانتخابی با قابلیت انتخاب همه‌ی موارد، سفارشی‌سازی گزینه‌ها،
354
- * نمایش راهنمای هاور، و بازگرداندن لیست کامل از آبجکت‌های انتخاب‌شده.
355
- *
356
- * برای سفارشی‌سازی نحوه نمایش آیتم‌ها:
357
- * ```tsx
358
- * renderOption={(props, option) => (
359
- * <li {...props} key={`${option.key}`}>
360
- * <span style={{ color: "green" }}>{option.title}</span>
361
- * </li>
362
- * )}
363
- * ```
364
- */
365
- declare function MultipleSelector<T extends OptionType>({ name, control, label, data, isLoading, disabled, size, clear, renderOption, }: MultipleSelectChipProps<T>): React.JSX.Element;
366
-
367
- export { Page as Accordion, AdvancedSearchButton, ConfirmationDialog$1 as ConfirmationDialog, ConnectToBasculeButton, CustomCheckbox, CustomTimePicker, DateFilter, DateFilterRange, JalaliDatePicker$2 as DatePicker, JalaliDatePicker$1 as DateTimePicker, JalaliDateTimeRangePicker as DateTimeRangePicker, FormInputNumber, FormInputText, HorizontalStepper, LicensePlate, JalaliDatePicker as MobileDateTimePicker, ConfirmationDialog as Modal, MultipleSelector, NestedSelect as NestedSelectort, NoResult, PaginationList, RadioButton, SearchLicensePlate, MultipleSelectChip as Selector, SkeletonCard, SonarSpinner, SwitchButton, Table, UploadImage };
314
+ export { Page as Accordion, AdvancedSearchButton, ConfirmationDialog$1 as ConfirmationDialog, ConnectToBasculeButton, CustomCheckbox, CustomTimePicker, DateFilter, DateFilterRange, JalaliDatePicker$2 as DatePicker, JalaliDatePicker$1 as DateTimePicker, JalaliDateTimeRangePicker as DateTimeRangePicker, FormInputNumber, FormInputText, HorizontalStepper, LicensePlate, JalaliDatePicker as MobileDateTimePicker, ConfirmationDialog as Modal, NestedSelect as NestedSelectort, NoResult, PaginationList, RadioButton, SearchLicensePlate, MultipleSelectChip as Selector, SkeletonCard, SonarSpinner, SwitchButton, Table, UploadImage };
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ import { SxProps, Theme } from '@mui/material';
6
6
  import { GridColDef } from '@mui/x-data-grid';
7
7
  import { TextFieldProps } from '@mui/material/TextField';
8
8
 
9
- interface MultipleSelectChipProps$1 {
9
+ interface MultipleSelectChipProps {
10
10
  name: string;
11
11
  control: Control<any>;
12
12
  label?: string;
@@ -18,7 +18,7 @@ interface MultipleSelectChipProps$1 {
18
18
  clear?: boolean;
19
19
  }
20
20
  declare function MultipleSelectChip({ name, control, label, data, multipleitems, //قابلیت انتخاب چند گزینه ای
21
- isLoading, disabled, size, clear, }: MultipleSelectChipProps$1): React.JSX.Element;
21
+ isLoading, disabled, size, clear, }: MultipleSelectChipProps): React.JSX.Element;
22
22
 
23
23
  interface AdvancedSearchButtonProps {
24
24
  isShowFilter: boolean;
@@ -240,16 +240,22 @@ type FormInputNumberProps<T extends FieldValues> = {
240
240
  thousandSeparator?: string | null;
241
241
  allowLeadingZeros?: boolean;
242
242
  allowNegative?: boolean;
243
+ onChangeHandler?: (param: any, onChange: (data: any) => void, value: any) => void;
244
+ valueHandler?: (value: any) => void;
243
245
  maxLength?: number;
244
246
  rules?: any;
245
247
  isLoading?: boolean;
246
248
  data?: any;
247
249
  borderColor?: string;
248
250
  decimalScale?: number;
251
+ placeholder?: string;
252
+ nputRef?: any;
253
+ onKeyDown?: any;
249
254
  textAlign?: "left" | "right" | "center";
255
+ autoComplete?: string;
250
256
  borderless?: boolean;
251
257
  } & TextFieldProps;
252
- declare const FormInputNumber: <T extends FieldValues>({ name, control, label, endAdornment, thousandSeparator, startAdornment, allowLeadingZeros, allowNegative, maxLength, isLoading, rules, data, borderColor, decimalScale, textAlign, borderless, ...rest }: FormInputNumberProps<T>) => React__default.JSX.Element;
258
+ declare const FormInputNumber: <T extends FieldValues>({ name, control, label, inputRef, onKeyDown, endAdornment, thousandSeparator, startAdornment, onChangeHandler, valueHandler, allowLeadingZeros, allowNegative, maxLength, isLoading, rules, data, borderColor, placeholder, decimalScale, autoComplete, textAlign, borderless, ...rest }: FormInputNumberProps<T>) => React__default.JSX.Element;
253
259
 
254
260
  type FormInputTextProps<T extends FieldValues> = {
255
261
  control: Control<T>;
@@ -305,63 +311,4 @@ type ConnectToBasculeButtonProps = {
305
311
  };
306
312
  declare const ConnectToBasculeButton: React__default.FC<ConnectToBasculeButtonProps>;
307
313
 
308
- interface OptionType {
309
- title: string;
310
- key: string | number;
311
- [x: string]: any;
312
- }
313
- interface MultipleSelectChipProps<T extends OptionType> {
314
- name: string;
315
- control: Control<any>;
316
- label?: string;
317
- data?: T[];
318
- isLoading?: boolean;
319
- disabled?: boolean;
320
- size?: "small" | "medium";
321
- clear?: boolean;
322
- renderOption?: (props: React.HTMLAttributes<HTMLLIElement>, option: T) => React.ReactNode;
323
- }
324
- /**
325
- * 📦 کامپوننت انتخاب چند گزینه‌ای با پشتیبانی از react-hook-form و MUI Autocomplete
326
- *
327
- * @component MultipleSelector
328
- *
329
- * @param {string} name - نام فیلدی که در فرم ثبت می‌شود.
330
- * @param {string} [label] - برچسب نمایشی برای فیلد.
331
- * @param {Control<any>} control - کنترل فرم از react-hook-form.
332
- * @param {{ title: string; key: string | number }[]} [data] - لیستی از گزینه‌ها شامل `title` (متن) و `key` (مقدار).
333
- * @param {boolean} [isLoading=false] - آیا داده‌ها در حال بارگذاری هستند.
334
- * @param {boolean} [disabled=false] - غیرفعال‌سازی ورودی.
335
- * @param {"small" | "medium"} [size="medium"] - سایز ورودی.
336
- * @param {boolean} [clear=false] - آیا امکان پاک کردن وجود دارد یا نه.
337
- * @param {string} [tooltip] - متن راهنما هنگام هاور.
338
- * @param {(props, option) => React.ReactNode} [renderOption] - تابعی سفارشی برای رندر آیتم‌ها در لیست.
339
- *
340
- * @returns {Array<{ key: string | number }>} لیستی از آیتم‌های انتخاب‌شده ( فقط آیدی‌ها).
341
- *
342
- * @example
343
- * ```tsx
344
- * <MultipleSelector<{title:string; key:number;}>
345
- * name="productIds"
346
- * label="محصولات"
347
- * control={control}
348
- * data={[{ title: "محصول ۱", key: 1 }, { title: "محصول ۲", key: 2 }]}
349
- * />
350
- * ```
351
- *
352
- * @description
353
- * کامپوننتی چندانتخابی با قابلیت انتخاب همه‌ی موارد، سفارشی‌سازی گزینه‌ها،
354
- * نمایش راهنمای هاور، و بازگرداندن لیست کامل از آبجکت‌های انتخاب‌شده.
355
- *
356
- * برای سفارشی‌سازی نحوه نمایش آیتم‌ها:
357
- * ```tsx
358
- * renderOption={(props, option) => (
359
- * <li {...props} key={`${option.key}`}>
360
- * <span style={{ color: "green" }}>{option.title}</span>
361
- * </li>
362
- * )}
363
- * ```
364
- */
365
- declare function MultipleSelector<T extends OptionType>({ name, control, label, data, isLoading, disabled, size, clear, renderOption, }: MultipleSelectChipProps<T>): React.JSX.Element;
366
-
367
- export { Page as Accordion, AdvancedSearchButton, ConfirmationDialog$1 as ConfirmationDialog, ConnectToBasculeButton, CustomCheckbox, CustomTimePicker, DateFilter, DateFilterRange, JalaliDatePicker$2 as DatePicker, JalaliDatePicker$1 as DateTimePicker, JalaliDateTimeRangePicker as DateTimeRangePicker, FormInputNumber, FormInputText, HorizontalStepper, LicensePlate, JalaliDatePicker as MobileDateTimePicker, ConfirmationDialog as Modal, MultipleSelector, NestedSelect as NestedSelectort, NoResult, PaginationList, RadioButton, SearchLicensePlate, MultipleSelectChip as Selector, SkeletonCard, SonarSpinner, SwitchButton, Table, UploadImage };
314
+ export { Page as Accordion, AdvancedSearchButton, ConfirmationDialog$1 as ConfirmationDialog, ConnectToBasculeButton, CustomCheckbox, CustomTimePicker, DateFilter, DateFilterRange, JalaliDatePicker$2 as DatePicker, JalaliDatePicker$1 as DateTimePicker, JalaliDateTimeRangePicker as DateTimeRangePicker, FormInputNumber, FormInputText, HorizontalStepper, LicensePlate, JalaliDatePicker as MobileDateTimePicker, ConfirmationDialog as Modal, NestedSelect as NestedSelectort, NoResult, PaginationList, RadioButton, SearchLicensePlate, MultipleSelectChip as Selector, SkeletonCard, SonarSpinner, SwitchButton, Table, UploadImage };
package/dist/index.js CHANGED
@@ -47,7 +47,6 @@ __export(src_exports, {
47
47
  LicensePlate: () => LicensePlate,
48
48
  MobileDateTimePicker: () => mobile_date_time_picker_default,
49
49
  Modal: () => ConfirmationDialog2,
50
- MultipleSelector: () => MultipleSelector,
51
50
  NestedSelectort: () => selector_default,
52
51
  NoResult: () => NoResult,
53
52
  PaginationList: () => PaginationList,
@@ -3300,9 +3299,13 @@ var FormInputNumber = ({
3300
3299
  name,
3301
3300
  control,
3302
3301
  label,
3302
+ inputRef,
3303
+ onKeyDown,
3303
3304
  endAdornment,
3304
3305
  thousandSeparator,
3305
3306
  startAdornment,
3307
+ onChangeHandler,
3308
+ valueHandler,
3306
3309
  allowLeadingZeros = false,
3307
3310
  allowNegative = false,
3308
3311
  maxLength,
@@ -3310,8 +3313,10 @@ var FormInputNumber = ({
3310
3313
  rules,
3311
3314
  data,
3312
3315
  borderColor,
3316
+ placeholder,
3313
3317
  decimalScale = 2,
3314
- textAlign = "left",
3318
+ autoComplete = "off",
3319
+ textAlign = "right",
3315
3320
  borderless = false,
3316
3321
  ...rest
3317
3322
  }) => {
@@ -3324,12 +3329,17 @@ var FormInputNumber = ({
3324
3329
  render: ({ field: { onChange, value, ref }, fieldState: { error } }) => /* @__PURE__ */ import_react21.default.createElement(
3325
3330
  import_TextField2.default,
3326
3331
  {
3332
+ onKeyDown,
3327
3333
  disabled: isLoading,
3328
3334
  helperText: error ? error.message : null,
3335
+ placeholder,
3329
3336
  size: "small",
3337
+ autoComplete,
3330
3338
  error: !!error,
3331
- onChange,
3332
- value: data && !value ? data : value == null ? "" : value,
3339
+ onChange: (param) => {
3340
+ onChangeHandler ? onChangeHandler(param, onChange, value) : onChange(param);
3341
+ },
3342
+ value: data && !value ? data : value == null ? "" : valueHandler ? valueHandler(value) : value,
3333
3343
  fullWidth: true,
3334
3344
  variant: borderless ? "standard" : "outlined",
3335
3345
  sx: {
@@ -3365,7 +3375,7 @@ var FormInputNumber = ({
3365
3375
  }
3366
3376
  },
3367
3377
  label,
3368
- inputRef: ref,
3378
+ inputRef: inputRef ?? ref,
3369
3379
  InputLabelProps: { shrink: true },
3370
3380
  InputProps: {
3371
3381
  inputComponent: NumericFormatCustom,
@@ -3900,134 +3910,6 @@ var ConnectToBasculeButton = ({
3900
3910
  ));
3901
3911
  };
3902
3912
  var bascule_connection_button_default = ConnectToBasculeButton;
3903
-
3904
- // src/multiple-selector/index.tsx
3905
- var import_Autocomplete2 = __toESM(require("@mui/material/Autocomplete"));
3906
- var import_TextField4 = __toESM(require("@mui/material/TextField"));
3907
- var React27 = __toESM(require("react"));
3908
- var import_react_hook_form14 = require("react-hook-form");
3909
- var import_material26 = require("@mui/material");
3910
- function MultipleSelector({
3911
- name,
3912
- control,
3913
- label,
3914
- data,
3915
- isLoading,
3916
- disabled = false,
3917
- size = "medium",
3918
- clear = false,
3919
- renderOption
3920
- }) {
3921
- const dataOptions = data?.map((value) => ({
3922
- ...value,
3923
- key: value.key || `key_${Math.random()}`
3924
- })) || [];
3925
- const combinedOptions = dataOptions.length > 0 ? [{ title: "\u0627\u0646\u062A\u062E\u0627\u0628 \u0647\u0645\u0647", key: "All" }, ...dataOptions] : [...dataOptions];
3926
- const handleChange = (_event, selected, onChange) => {
3927
- if (selected.some((item) => item.key === "All")) {
3928
- const allItems = [...dataOptions];
3929
- onChange(allItems.map((item) => item.key));
3930
- } else {
3931
- onChange(selected.map((item) => item.key));
3932
- }
3933
- };
3934
- return /* @__PURE__ */ React27.createElement(
3935
- import_react_hook_form14.Controller,
3936
- {
3937
- name,
3938
- control,
3939
- render: ({ field: { onChange, value, ref }, fieldState: { error } }) => {
3940
- const computedValue = React27.useMemo(() => {
3941
- if (Array.isArray(value) && dataOptions.length > 0) {
3942
- return dataOptions.filter(
3943
- (option) => value.includes(option.key)
3944
- );
3945
- }
3946
- return [];
3947
- }, [value, dataOptions]);
3948
- return /* @__PURE__ */ React27.createElement(
3949
- import_Autocomplete2.default,
3950
- {
3951
- multiple: true,
3952
- disableClearable: clear,
3953
- disabled: disabled || isLoading,
3954
- size,
3955
- disableCloseOnSelect: true,
3956
- options: combinedOptions,
3957
- sx: { width: "100%" },
3958
- noOptionsText: "\u062F\u0627\u062F\u0647\u200C\u0627\u06CC \u0628\u0631\u0627\u06CC \u0646\u0645\u0627\u06CC\u0634 \u0648\u062C\u0648\u062F \u0646\u062F\u0627\u0631\u062F",
3959
- value: computedValue,
3960
- onChange: (event, value2) => handleChange(event, value2, onChange),
3961
- isOptionEqualToValue: (option, value2) => String(option.key) === String(value2?.key),
3962
- getOptionLabel: (option) => option.title,
3963
- loading: isLoading,
3964
- loadingText: "\u062F\u0631 \u062D\u0627\u0644 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC...",
3965
- renderOption: (props, option) => {
3966
- if (renderOption) {
3967
- return renderOption(props, option);
3968
- }
3969
- return /* @__PURE__ */ React27.createElement(
3970
- "li",
3971
- {
3972
- ...props,
3973
- key: `${option.key}`,
3974
- style: { margin: 5, borderRadius: 3 }
3975
- },
3976
- /* @__PURE__ */ React27.createElement(
3977
- "div",
3978
- {
3979
- style: {
3980
- display: "flex",
3981
- flexDirection: "row",
3982
- width: "100%"
3983
- }
3984
- },
3985
- /* @__PURE__ */ React27.createElement("div", { style: { flexDirection: "column", width: "100%" } }, /* @__PURE__ */ React27.createElement("div", { style: { fontWeight: "normal" } }, option.title))
3986
- )
3987
- );
3988
- },
3989
- slots: { popper: import_material26.Popper },
3990
- slotProps: {
3991
- popper: {
3992
- modifiers: [
3993
- {
3994
- name: "preventOverflow",
3995
- options: {
3996
- boundary: "window",
3997
- rootBoundary: "viewport",
3998
- altBoundary: true,
3999
- padding: 10
4000
- }
4001
- },
4002
- {
4003
- name: "flip",
4004
- options: {
4005
- fallbackPlacements: ["top", "bottom"]
4006
- }
4007
- }
4008
- ]
4009
- }
4010
- },
4011
- renderInput: (params) => /* @__PURE__ */ React27.createElement(
4012
- import_TextField4.default,
4013
- {
4014
- ...params,
4015
- label,
4016
- error: !!error,
4017
- helperText: error?.message,
4018
- inputRef: ref,
4019
- InputProps: {
4020
- ...params.InputProps,
4021
- endAdornment: /* @__PURE__ */ React27.createElement(React27.Fragment, null, isLoading ? /* @__PURE__ */ React27.createElement(import_material26.CircularProgress, { color: "primary", size: 20 }) : null, params.InputProps.endAdornment)
4022
- }
4023
- }
4024
- )
4025
- }
4026
- );
4027
- }
4028
- }
4029
- );
4030
- }
4031
3913
  // Annotate the CommonJS export names for ESM import in node:
4032
3914
  0 && (module.exports = {
4033
3915
  Accordion,
@@ -4047,7 +3929,6 @@ function MultipleSelector({
4047
3929
  LicensePlate,
4048
3930
  MobileDateTimePicker,
4049
3931
  Modal,
4050
- MultipleSelector,
4051
3932
  NestedSelectort,
4052
3933
  NoResult,
4053
3934
  PaginationList,