@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.
- package/dist/charts/index.d.mts +146 -0
- package/dist/charts/index.d.ts +146 -0
- package/dist/charts/index.js +193 -0
- package/dist/charts/index.js.map +1 -0
- package/dist/charts/index.mjs +164 -0
- package/dist/charts/index.mjs.map +1 -0
- package/dist/index.d.mts +10 -63
- package/dist/index.d.ts +10 -63
- package/dist/index.js +15 -134
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +15 -133
- package/dist/index.mjs.map +1 -1
- package/dist/selectors/index.d.mts +227 -0
- package/dist/selectors/index.d.ts +227 -0
- package/dist/selectors/index.js +509 -0
- package/dist/selectors/index.js.map +1 -0
- package/dist/selectors/index.mjs +470 -0
- package/dist/selectors/index.mjs.map +1 -0
- package/package.json +11 -1
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|