sccoreui 3.6.8 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/App.scss CHANGED
@@ -481,4 +481,80 @@ div:has(ul.date_filter) .p-datepicker-footer {
481
481
  .p-multiselect-header {
482
482
  display: none;
483
483
  }
484
+ }
485
+
486
+ .errorField {
487
+ color: var(--red-500);
488
+ }
489
+
490
+ .fullWidth {
491
+ width: 37.125rem;
492
+ }
493
+
494
+ .PhoneInput {
495
+ background: #ffffff;
496
+ border: 1px solid var(--gray-300);
497
+ transition: background-color 0.2s, color 0.2s, border-color 0.2s,
498
+ box-shadow 0.2s;
499
+ border-radius: 8px;
500
+ box-shadow: 0px 1px 2px rgba(16, 24, 40, 0.05);
501
+ padding-top: 10px;
502
+ padding-bottom: 10px;
503
+ padding-right: 12px;
504
+ padding-left: 0px;
505
+ height: 40px;
506
+ :focus-visible {
507
+ outline: none;
508
+ }
509
+ &:focus-within {
510
+ outline: 0 none;
511
+ outline-offset: 0;
512
+ box-shadow: 0px 1px 2px rgba(16, 24, 40, 0.05),
513
+ 0px 0px 0px 4px var(--primary-100);
514
+ border-radius: 8px;
515
+ border: 1px solid var(--primary-300);
516
+ }
517
+
518
+ .PhoneInputInput {
519
+ border: none;
520
+ }
521
+ }
522
+
523
+ .PhoneInputCountry {
524
+ .PhoneInputCountryIcon--border {
525
+ box-shadow: none;
526
+ background-color: #ffffff;
527
+ }
528
+ .PhoneInputCountryIconImg {
529
+ width: 20px;
530
+ height: 20px;
531
+ object-fit: cover;
532
+ border-radius: 100%;
533
+ position: absolute;
534
+ top: 0;
535
+ }
536
+ }
537
+
538
+ .phoneNumberClass {
539
+ margin-left: 14.5rem;
540
+ }
541
+
542
+ #customCountryDropDown {
543
+ .p-dropdown {
544
+ border: none;
545
+ box-shadow: none;
546
+ background: none;
547
+ padding: 0;
548
+ .p-dropdown-label {
549
+ padding: 0;
550
+ padding-right: 4px;
551
+ }
552
+ .p-dropdown-trigger {
553
+ padding-top: 20px;
554
+ }
555
+ .p-dropdown-trigger[aria-expanded="true"] {
556
+ padding-bottom: 20px;
557
+ }
558
+ }
559
+
484
560
  }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const formik_1 = require("formik");
6
+ const react_1 = require("react");
7
+ const inputtext_1 = require("primereact/inputtext");
8
+ const dropdown_1 = require("primereact/dropdown");
9
+ const multiselect_1 = require("primereact/multiselect");
10
+ const inputtextarea_1 = require("primereact/inputtextarea");
11
+ const max_1 = tslib_1.__importStar(require("react-phone-number-input/max"));
12
+ const InputTextField = (props) => {
13
+ const { errors, touched, name, length, label, placeholder, optional, max } = props;
14
+ return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "flex flex-column gap-1" }, { children: [optional && (0, jsx_runtime_1.jsxs)("label", Object.assign({ className: "font-medium text-base mb-1 w-full flex justify-content-between", htmlFor: name }, { children: [label, (0, jsx_runtime_1.jsx)("span", Object.assign({ className: "text-base font-medium font-italic text-gray-600" }, { children: "Optional" }))] })), !optional && (0, jsx_runtime_1.jsx)("label", Object.assign({ className: "font-medium text-base mb-1", htmlFor: name }, { children: label })), (0, jsx_runtime_1.jsx)(formik_1.Field, Object.assign({ type: "text", name: name }, { children: ({ field }) => ((0, jsx_runtime_1.jsx)(inputtext_1.InputText, Object.assign({ maxLength: max, placeholder: placeholder }, field, { className: `'fullWidth' ${errors[name] ? 'p-invalid' : ''} ${length === 'full' ? '' : 'w-18rem'}`, id: name }))) })), errors[name] && touched[name] ? ((0, jsx_runtime_1.jsx)("small", Object.assign({ className: 'errorField' }, { children: errors[name] }))) : (0, jsx_runtime_1.jsx)("small", { children: "\u00A0" })] })));
15
+ };
16
+ const InputNumberField = (props) => {
17
+ const { errors, touched, name, length, label, placeholder, optional, min, max } = props;
18
+ return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "flex flex-column gap-1" }, { children: [optional && (0, jsx_runtime_1.jsxs)("label", Object.assign({ className: "font-medium text-base mb-1 w-full flex justify-content-between", htmlFor: name }, { children: [label, (0, jsx_runtime_1.jsx)("span", Object.assign({ className: "text-base font-medium font-italic text-gray-600" }, { children: "Optional" }))] })), !optional && (0, jsx_runtime_1.jsx)("label", Object.assign({ className: "font-medium text-base mb-1", htmlFor: name }, { children: label })), (0, jsx_runtime_1.jsx)(formik_1.Field, Object.assign({ name: name, type: "number" }, { children: ({ field }) => ((0, jsx_runtime_1.jsx)(inputtext_1.InputText, Object.assign({ type: "number", min: min, maxLength: max, placeholder: placeholder }, field, { className: `fullWidth ${errors[name] ? 'p-invalid' : ''} ${length === 'full' ? '' : 'w-18rem'}`, id: name }))) })), errors[name] && touched[name] ? ((0, jsx_runtime_1.jsx)("small", Object.assign({ className: `errorField` }, { children: errors[name] }))) : (0, jsx_runtime_1.jsx)("small", { children: "\u00A0" })] })));
19
+ };
20
+ const InputCurrencyField = (props) => {
21
+ const { errors, touched, name, length, label, placeholder, optional, min, max } = props;
22
+ return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "flex flex-column gap-1" }, { children: [optional && (0, jsx_runtime_1.jsxs)("label", Object.assign({ className: "font-medium text-base mb-1 w-full flex justify-content-between", htmlFor: name }, { children: [label, (0, jsx_runtime_1.jsx)("span", Object.assign({ className: "text-base font-medium font-italic text-gray-600" }, { children: "Optional" }))] })), !optional && (0, jsx_runtime_1.jsx)("label", Object.assign({ className: "font-medium text-base mb-1", htmlFor: name }, { children: label })), (0, jsx_runtime_1.jsx)(formik_1.Field, Object.assign({ name: name, type: "number" }, { children: ({ field }) => ((0, jsx_runtime_1.jsxs)("span", Object.assign({ className: "p-input-icon-left" }, { children: [(0, jsx_runtime_1.jsx)("span", Object.assign({ className: "p-input-prefix text-lg" }, { children: "$" })), (0, jsx_runtime_1.jsx)(inputtext_1.InputText, Object.assign({ min: min, maxLength: max, type: "number", placeholder: placeholder }, field, { className: `fullWidth ${errors[name] ? 'p-invalid' : ''} ${length === 'full' ? '' : 'w-18rem'}`, id: name }))] }))) })), errors[name] && touched[name] ? ((0, jsx_runtime_1.jsx)("small", Object.assign({ className: `errorField` }, { children: errors[name] }))) : (0, jsx_runtime_1.jsx)("small", { children: "\u00A0" })] })));
23
+ };
24
+ const InputTextAreaField = (props) => {
25
+ const [charCount, setCharCount] = (0, react_1.useState)(0);
26
+ const { errors, touched, name, length, label, placeholder, optional, values } = props;
27
+ (0, react_1.useEffect)(() => {
28
+ setCharCount(values[name].length);
29
+ }, [values[name]]);
30
+ (0, jsx_runtime_1.jsx)("span", Object.assign({ className: "text-base font-medium font-italic text-gray-600" }, { children: "Optional" }));
31
+ return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "flex flex-column gap-1 relative" }, { children: [optional && (0, jsx_runtime_1.jsxs)("label", Object.assign({ className: "font-medium text-base mb-1 w-full flex justify-content-between", htmlFor: name }, { children: [label, (0, jsx_runtime_1.jsx)("span", Object.assign({ className: "text-base font-medium font-italic text-gray-600" }, { children: "Optional" }))] })), !optional && (0, jsx_runtime_1.jsx)("label", Object.assign({ className: "font-medium text-base mb-1", htmlFor: name }, { children: label })), (0, jsx_runtime_1.jsx)(formik_1.Field, Object.assign({ name: name, type: "textarea" }, { children: ({ field }) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(inputtextarea_1.InputTextarea, Object.assign({ placeholder: placeholder, style: { height: '154px', resize: 'none', overflowY: 'scroll' } }, field, { maxLength: 100, className: `pt-2 fullWidth ${errors[name] ? 'p-invalid' : ''} ${length === 'full' ? '' : 'w-18rem'}`, id: name })), (0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "absolute text-base font-normal text-gray-600", style: { bottom: '30px', right: '12px' } }, { children: [charCount, "/100"] }))] })) })), errors[name] && touched[name] ? ((0, jsx_runtime_1.jsx)("small", Object.assign({ className: `errorField` }, { children: errors[name] }))) : (0, jsx_runtime_1.jsx)("small", { children: "\u00A0" })] })));
32
+ };
33
+ const DropDownField = (props) => {
34
+ const { errors, touched, name, length, label, placeholder, options, optional, customSelectedTemplate, customFieldsTemplate, optionLabel, optionDisabled } = props;
35
+ return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "flex flex-column gap-1" }, { children: [optional && (0, jsx_runtime_1.jsxs)("label", Object.assign({ className: "font-medium text-base mb-1 w-full flex justify-content-between", htmlFor: name }, { children: [label, (0, jsx_runtime_1.jsx)("span", Object.assign({ className: "text-base font-medium font-italic text-gray-600" }, { children: "Optional" }))] })), !optional && (0, jsx_runtime_1.jsx)("label", Object.assign({ className: "font-medium text-base mb-1", htmlFor: name }, { children: label })), (0, jsx_runtime_1.jsx)(formik_1.Field, Object.assign({ type: "text", name: name }, { children: ({ field }) => ((0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, Object.assign({ placeholder: placeholder }, field, { options: options, itemTemplate: customFieldsTemplate, valueTemplate: customSelectedTemplate, optionDisabled: optionDisabled, optionLabel: optionLabel, className: `fullWidth ${errors[name] ? 'p-invalid' : ''} ${length === 'full' ? '' : 'w-18rem'}`, id: name }))) })), errors[name] && touched[name] ? ((0, jsx_runtime_1.jsx)("small", Object.assign({ className: 'errorField' }, { children: errors[name] }))) : (0, jsx_runtime_1.jsx)("small", { children: "\u00A0" })] })));
36
+ };
37
+ const MultiSelectField = (props) => {
38
+ const { errors, touched, name, length, label, placeholder, options, optional, customSelectedTemplate, customFieldsTemplate, optionLabel, optionDisabled } = props;
39
+ return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "flex flex-column gap-1" }, { children: [optional && (0, jsx_runtime_1.jsxs)("label", Object.assign({ className: "font-medium text-base mb-1 w-full flex justify-content-between", htmlFor: name }, { children: [label, (0, jsx_runtime_1.jsx)("span", Object.assign({ className: "text-base font-medium font-italic text-gray-600" }, { children: "Optional" }))] })), !optional && (0, jsx_runtime_1.jsx)("label", Object.assign({ className: "font-medium text-base mb-1", htmlFor: name }, { children: label })), (0, jsx_runtime_1.jsx)(formik_1.Field, Object.assign({ type: "text", name: name }, { children: ({ field }) => ((0, jsx_runtime_1.jsx)(multiselect_1.MultiSelect, Object.assign({ placeholder: placeholder }, field, { options: options, itemTemplate: customFieldsTemplate, valueTemplate: customSelectedTemplate, optionDisabled: optionDisabled, optionLabel: optionLabel, className: `fullWidth ${errors[name] ? 'p-invalid' : ''} ${length === 'full' ? '' : 'w-18rem'}`, id: name }))) })), errors[name] && touched[name] ? ((0, jsx_runtime_1.jsx)("small", Object.assign({ className: 'errorField' }, { children: errors[name] }))) : (0, jsx_runtime_1.jsx)("small", { children: "\u00A0" })] })));
40
+ };
41
+ const PhoneNumberField = (props) => {
42
+ const [defaultCountry, setDefaultCountry] = (0, react_1.useState)('US');
43
+ const { errors, touched, name, length, label, placeholder, optional, position } = props;
44
+ const customCountry = (props) => {
45
+ const customCountryTemplate = (options) => {
46
+ let callCode = (0, max_1.getCountryCallingCode)(options.value);
47
+ return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: 'flex align-items-center gap-2' }, { children: [(0, jsx_runtime_1.jsx)("img", { src: `https://catamphetamine.github.io/country-flag-icons/3x2/${options.value}.svg`, alt: 'countries', className: 'border-circle', style: { width: '1.5rem', height: '1.5rem', objectFit: 'cover' } }), (0, jsx_runtime_1.jsx)("span", Object.assign({ className: 'text-lg font-medium text-gray-900 line-height-3' }, { children: options.label })), (0, jsx_runtime_1.jsxs)("span", Object.assign({ className: 'text-lg font-normal text-gray-600 line-height-3' }, { children: ["+", callCode] }))] })));
48
+ };
49
+ const customSelectedVal = (options) => {
50
+ if (options) {
51
+ return ((0, jsx_runtime_1.jsx)("img", { src: `https://catamphetamine.github.io/country-flag-icons/3x2/${options.value}.svg`, alt: 'selected-country', className: 'border-circle ml-2', style: { width: '1.5rem', height: '1.5rem', objectFit: 'cover' } }));
52
+ }
53
+ return ((0, jsx_runtime_1.jsx)("div", { children: placeholder }));
54
+ };
55
+ return ((0, jsx_runtime_1.jsx)("div", Object.assign({ id: 'customCountryDropDown' }, { children: (0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, { filter: true, filterBy: 'label', options: props.options, panelClassName: `${position === 'left' ? '' : 'phoneNumberClass'}`, panelStyle: { maxWidth: '18rem' }, value: props.value, itemTemplate: customCountryTemplate, valueTemplate: customSelectedVal, optionLabel: 'value', onChange: (e) => {
56
+ props.onChange(e.value);
57
+ setDefaultCountry(e.value);
58
+ } }) })));
59
+ };
60
+ return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "flex flex-column gap-1" }, { children: [optional && (0, jsx_runtime_1.jsxs)("label", Object.assign({ className: "font-medium text-base mb-1 w-full flex justify-content-between", htmlFor: name }, { children: [label, (0, jsx_runtime_1.jsx)("span", Object.assign({ className: "text-base font-medium font-italic text-gray-600" }, { children: "Optional" }))] })), !optional && (0, jsx_runtime_1.jsx)("label", Object.assign({ className: "font-medium text-base mb-1", htmlFor: name }, { children: label })), (0, jsx_runtime_1.jsx)(formik_1.Field, Object.assign({ type: "text", name: name }, { children: ({ field }) => ((0, jsx_runtime_1.jsx)(max_1.default, Object.assign({ international: true, name: "phoneNumber", countryCallingCodeEditable: false, withCountryCallingCode: false, countrySelectComponent: customCountry, usenationalformatfordefaultcountryvalue: "true", defaultCountry: defaultCountry, limitMaxLength: true, className: `fullWidth flex align-items-center ${errors[name] ? 'p-invalid' : ''} ${length === 'full' ? 'w-18rem' : 'w-18rem'}` }, field))) })), errors[name] && touched[name] ? ((0, jsx_runtime_1.jsx)("small", Object.assign({ className: 'errorField' }, { children: errors[name] }))) : (0, jsx_runtime_1.jsx)("small", { children: "\u00A0" })] })));
61
+ };
62
+ exports.default = { InputTextField, InputNumberField, InputCurrencyField, InputTextAreaField, DropDownField, MultiSelectField, PhoneNumberField };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const formik_1 = require("formik");
5
+ const FormComponent = (props) => {
6
+ const { values, validations, children } = props;
7
+ return ((0, jsx_runtime_1.jsx)(formik_1.Formik, Object.assign({ initialValues: values, validationSchema: validations, onSubmit: (values) => values }, { children: ({ errors, touched, isValid, values }) => ((0, jsx_runtime_1.jsx)(formik_1.Form, { children: children({ errors, touched, isValid, values }) })) })));
8
+ };
9
+ exports.default = FormComponent;
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Chart = exports.ProgressSpinner = exports.Skeleton = exports.Chip = exports.Chips = exports.Rating = exports.InputTextarea = exports.InputSwitch = exports.InputMask = exports.SpeedDial = exports.SplitButton = exports.DataViewLayoutOptions = exports.DataView = exports.Toast = exports.InputNumber = exports.OverlayPanel = exports.Tag = exports.Carousel = exports.ToggleButton = exports.CustomSlider = exports.Card = exports.Dialog = exports.Password = exports.confirmPopup = exports.ConfirmDialog = exports.RadioButton = exports.Badge = exports.Tooltip = exports.Calendar = exports.Image = exports.AvatarGroup = exports.Avatar = exports.classNames = exports.Paginator = exports.MultiSelect = exports.FileUpload = exports.TabMenu = exports.TabPanel = exports.TabView = exports.Sidebar = exports.Column = exports.DataTable = exports.Checkbox = exports.AutoComplete = exports.ColorPicker = exports.AccordionTab = exports.Accordion = exports.InputText = exports.Dropdown = exports.Button = void 0;
4
4
  exports.Terminal = exports.StyleClass = exports.ScrollTop = exports.InplaceContent = exports.InplaceDisplay = exports.Inplace = exports.BlockUI = exports.Messages = exports.Message = exports.TieredMenu = exports.Stesp = exports.SlideMenu = exports.Menubar = exports.Menu = exports.Dock = exports.ContextMenu = exports.Toolbar = exports.SplitterPanel = exports.Splitter = exports.ScrollPanel = exports.Panel = exports.Fieldset = exports.DeferredContent = exports.Timeline = exports.TreeTable = exports.Tree = exports.PickList = exports.OrganizationChart = exports.OrderList = exports.DataScroller = exports.TriStateCheckbox = exports.TreeSelect = exports.SelectButton = exports.MultiStateCheckbox = exports.Mention = exports.ListBox = exports.Knob = exports.Editor = exports.CascadeSelect = exports.FilterOperator = exports.FilterMatchMode = exports.Slider = exports.Galleria = exports.SvgComponent = exports.CircleProgressComponent = exports.ProgressSteps = exports.ProgressBar = exports.Divider = exports.MegaMenu = exports.BreadCrumb = void 0;
5
- exports.DatePicker = exports.MultiSelectDropDown = void 0;
5
+ exports.FormFields = exports.FormComponent = exports.DatePicker = exports.MultiSelectDropDown = void 0;
6
6
  const tslib_1 = require("tslib");
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const client_1 = tslib_1.__importDefault(require("react-dom/client"));
@@ -207,4 +207,8 @@ var multi_select_dropdown_1 = require("./components/multi-select-dropdown/multi-
207
207
  Object.defineProperty(exports, "MultiSelectDropDown", { enumerable: true, get: function () { return tslib_1.__importDefault(multi_select_dropdown_1).default; } });
208
208
  var date_picker_1 = require("./components/date-picker/date-picker");
209
209
  Object.defineProperty(exports, "DatePicker", { enumerable: true, get: function () { return tslib_1.__importDefault(date_picker_1).default; } });
210
+ var form_1 = require("./components/form/form");
211
+ Object.defineProperty(exports, "FormComponent", { enumerable: true, get: function () { return tslib_1.__importDefault(form_1).default; } });
212
+ var form_fields_1 = require("./components/form/form-fields/form-fields");
213
+ Object.defineProperty(exports, "FormFields", { enumerable: true, get: function () { return tslib_1.__importDefault(form_fields_1).default; } });
210
214
  client_1.default.createRoot(document.getElementById("root")).render((0, jsx_runtime_1.jsx)(App_1.default, {}));
@@ -0,0 +1,10 @@
1
+ declare const _default: {
2
+ InputTextField: (props: any) => import("react/jsx-runtime").JSX.Element;
3
+ InputNumberField: (props: any) => import("react/jsx-runtime").JSX.Element;
4
+ InputCurrencyField: (props: any) => import("react/jsx-runtime").JSX.Element;
5
+ InputTextAreaField: (props: any) => import("react/jsx-runtime").JSX.Element;
6
+ DropDownField: (props: any) => import("react/jsx-runtime").JSX.Element;
7
+ MultiSelectField: (props: any) => import("react/jsx-runtime").JSX.Element;
8
+ PhoneNumberField: (props: any) => import("react/jsx-runtime").JSX.Element;
9
+ };
10
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const FormComponent: (props: any) => import("react/jsx-runtime").JSX.Element;
2
+ export default FormComponent;
@@ -93,6 +93,8 @@ export { default as StyleClass } from "./components/style-class/styleClass";
93
93
  export { default as Terminal } from "./components/terminal/terminal";
94
94
  export { default as MultiSelectDropDown } from './components/multi-select-dropdown/multi-select-dropdown';
95
95
  export { default as DatePicker } from "./components/date-picker/date-picker";
96
+ export { default as FormComponent } from "./components/form/form";
97
+ export { default as FormFields } from "./components/form/form-fields/form-fields";
96
98
  import { DropdownChangeEvent } from "primereact/dropdown";
97
99
  import { ColorPickerChangeEvent } from "primereact/colorpicker";
98
100
  import { SliderChangeEvent } from "primereact/slider";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sccoreui",
3
- "version": "3.6.8",
3
+ "version": "3.7.0",
4
4
  "description": "ui-sccore",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -30,16 +30,20 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "chart.js": "^4.3.0",
33
+ "formik": "^2.4.5",
34
+ "libphonenumber-js": "^1.10.44",
33
35
  "primeflex": "^3.3.1",
34
36
  "primeicons": "^6.0.1",
35
37
  "primereact": "^9.5.0",
36
38
  "quill": "^1.3.7",
37
39
  "react": "^18.2.0",
38
40
  "react-dom": "^18.2.0",
41
+ "react-phone-number-input": "^3.3.6",
39
42
  "react-router-dom": "^6.12.0",
40
43
  "react-scripts": "^5.0.1",
41
44
  "sccoreui": "^2.5.2",
42
- "typescript": "^4.9.5"
45
+ "typescript": "^4.9.5",
46
+ "yup": "^1.3.0"
43
47
  },
44
48
  "browserslist": {
45
49
  "production": [