@solidstarters/solid-core-ui 1.1.11 → 1.1.13

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 (179) hide show
  1. package/dist/components/auth/SolidForgotPassword.d.ts.map +1 -1
  2. package/dist/components/auth/SolidForgotPassword.js +2 -1
  3. package/dist/components/auth/SolidForgotPassword.js.map +1 -1
  4. package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
  5. package/dist/components/auth/SolidInitialLoginOtp.js +2 -1
  6. package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
  7. package/dist/components/auth/SolidInitiateRegisterOtp.d.ts.map +1 -1
  8. package/dist/components/auth/SolidInitiateRegisterOtp.js +2 -1
  9. package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
  10. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  11. package/dist/components/auth/SolidLogin.js +2 -1
  12. package/dist/components/auth/SolidLogin.js.map +1 -1
  13. package/dist/components/auth/SolidOTPVerify.d.ts.map +1 -1
  14. package/dist/components/auth/SolidOTPVerify.js +2 -1
  15. package/dist/components/auth/SolidOTPVerify.js.map +1 -1
  16. package/dist/components/auth/SolidRegister.d.ts.map +1 -1
  17. package/dist/components/auth/SolidRegister.js +125 -103
  18. package/dist/components/auth/SolidRegister.js.map +1 -1
  19. package/dist/components/auth/SolidResetPassword.d.ts.map +1 -1
  20. package/dist/components/auth/SolidResetPassword.js +2 -1
  21. package/dist/components/auth/SolidResetPassword.js.map +1 -1
  22. package/dist/components/common/DropzonePlaceholder.js +1 -1
  23. package/dist/components/common/DropzonePlaceholder.js.map +1 -1
  24. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  25. package/dist/components/common/GeneralSettings.js +43 -31
  26. package/dist/components/common/GeneralSettings.js.map +1 -1
  27. package/dist/components/core/common/FilterComponent.d.ts +2 -1
  28. package/dist/components/core/common/FilterComponent.d.ts.map +1 -1
  29. package/dist/components/core/common/FilterComponent.js +52 -16
  30. package/dist/components/core/common/FilterComponent.js.map +1 -1
  31. package/dist/components/core/common/SolidConfigureLayoutElement.d.ts +1 -1
  32. package/dist/components/core/common/SolidConfigureLayoutElement.d.ts.map +1 -1
  33. package/dist/components/core/common/SolidConfigureLayoutElement.js +5 -2
  34. package/dist/components/core/common/SolidConfigureLayoutElement.js.map +1 -1
  35. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  36. package/dist/components/core/common/SolidGlobalSearchElement.js +131 -23
  37. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  38. package/dist/components/core/filter/SolidManyToOneFilterElement.d.ts.map +1 -1
  39. package/dist/components/core/filter/SolidManyToOneFilterElement.js +1 -1
  40. package/dist/components/core/filter/SolidManyToOneFilterElement.js.map +1 -1
  41. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js +1 -1
  42. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js.map +1 -1
  43. package/dist/components/core/filter/SolidSelectionStaticFilterElement.js +1 -1
  44. package/dist/components/core/filter/SolidSelectionStaticFilterElement.js.map +1 -1
  45. package/dist/components/core/filter/SolidVarInputsFilterElement.d.ts.map +1 -1
  46. package/dist/components/core/filter/SolidVarInputsFilterElement.js +11 -10
  47. package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
  48. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  49. package/dist/components/core/form/SolidFormView.js +18 -9
  50. package/dist/components/core/form/SolidFormView.js.map +1 -1
  51. package/dist/components/core/form/fields/SolidBooleanField.d.ts.map +1 -1
  52. package/dist/components/core/form/fields/SolidBooleanField.js +4 -4
  53. package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
  54. package/dist/components/core/form/fields/SolidDateField.js +7 -7
  55. package/dist/components/core/form/fields/SolidDateField.js.map +1 -1
  56. package/dist/components/core/form/fields/SolidDateTimeField.d.ts.map +1 -1
  57. package/dist/components/core/form/fields/SolidDateTimeField.js +7 -7
  58. package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
  59. package/dist/components/core/form/fields/SolidDecimalField.d.ts.map +1 -1
  60. package/dist/components/core/form/fields/SolidDecimalField.js +4 -4
  61. package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
  62. package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
  63. package/dist/components/core/form/fields/SolidIntegerField.js +4 -4
  64. package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
  65. package/dist/components/core/form/fields/SolidJsonField.d.ts.map +1 -1
  66. package/dist/components/core/form/fields/SolidJsonField.js +2 -2
  67. package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
  68. package/dist/components/core/form/fields/SolidLongTextField.d.ts.map +1 -1
  69. package/dist/components/core/form/fields/SolidLongTextField.js +2 -2
  70. package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
  71. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  72. package/dist/components/core/form/fields/SolidMediaMultipleField.js +155 -46
  73. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  74. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  75. package/dist/components/core/form/fields/SolidMediaSingleField.js +87 -31
  76. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  77. package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
  78. package/dist/components/core/form/fields/SolidRichTextField.js +2 -2
  79. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  80. package/dist/components/core/form/fields/SolidSelectionDynamicField.d.ts.map +1 -1
  81. package/dist/components/core/form/fields/SolidSelectionDynamicField.js +4 -4
  82. package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
  83. package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -1
  84. package/dist/components/core/form/fields/SolidSelectionStaticField.js +4 -4
  85. package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
  86. package/dist/components/core/form/fields/SolidShortTextField.d.ts.map +1 -1
  87. package/dist/components/core/form/fields/SolidShortTextField.js +2 -2
  88. package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
  89. package/dist/components/core/form/fields/SolidTimeField.d.ts.map +1 -1
  90. package/dist/components/core/form/fields/SolidTimeField.js +7 -7
  91. package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
  92. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +2 -2
  93. package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  94. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  95. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +2 -2
  96. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  97. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +2 -2
  98. package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  99. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  100. package/dist/components/core/list/SolidListView.js +57 -54
  101. package/dist/components/core/list/SolidListView.js.map +1 -1
  102. package/dist/components/core/model/CreateModel.d.ts.map +1 -1
  103. package/dist/components/core/model/CreateModel.js +20 -16
  104. package/dist/components/core/model/CreateModel.js.map +1 -1
  105. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  106. package/dist/components/core/module/CreateModule.js +23 -23
  107. package/dist/components/core/module/CreateModule.js.map +1 -1
  108. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  109. package/dist/components/layout/AppSidebar.js +42 -11
  110. package/dist/components/layout/AppSidebar.js.map +1 -1
  111. package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
  112. package/dist/components/layout/navbar-two-menu.js +6 -2
  113. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  114. package/dist/components/layout/user-profile-menu.d.ts.map +1 -1
  115. package/dist/components/layout/user-profile-menu.js +7 -3
  116. package/dist/components/layout/user-profile-menu.js.map +1 -1
  117. package/dist/helpers/AppTitle.d.ts +4 -0
  118. package/dist/helpers/AppTitle.d.ts.map +1 -0
  119. package/dist/helpers/AppTitle.js +8 -0
  120. package/dist/helpers/AppTitle.js.map +1 -0
  121. package/dist/index.d.ts +1 -0
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +3 -2
  124. package/dist/index.js.map +1 -1
  125. package/package.json +1 -1
  126. package/src/components/auth/SolidForgotPassword.tsx +2 -6
  127. package/src/components/auth/SolidInitialLoginOtp.tsx +2 -6
  128. package/src/components/auth/SolidInitiateRegisterOtp.tsx +2 -6
  129. package/src/components/auth/SolidLogin.tsx +2 -5
  130. package/src/components/auth/SolidOTPVerify.tsx +4 -7
  131. package/src/components/auth/SolidRegister.tsx +207 -178
  132. package/src/components/auth/SolidResetPassword.tsx +2 -6
  133. package/src/components/common/DropzonePlaceholder.tsx +1 -1
  134. package/src/components/common/GeneralSettings.tsx +310 -193
  135. package/src/components/core/common/FilterComponent.tsx +148 -202
  136. package/src/components/core/common/SolidConfigureLayoutElement.tsx +6 -4
  137. package/src/components/core/common/SolidGlobalSearchElement.tsx +193 -50
  138. package/src/components/core/filter/SolidManyToOneFilterElement.tsx +3 -1
  139. package/src/components/core/filter/SolidSelectionDynamicFilterElement.tsx +1 -1
  140. package/src/components/core/filter/SolidSelectionStaticFilterElement.tsx +1 -1
  141. package/src/components/core/filter/SolidVarInputsFilterElement.tsx +103 -135
  142. package/src/components/core/form/SolidFormView.tsx +32 -21
  143. package/src/components/core/form/fields/SolidBooleanField.tsx +8 -6
  144. package/src/components/core/form/fields/SolidDateField.tsx +5 -5
  145. package/src/components/core/form/fields/SolidDateTimeField.tsx +23 -22
  146. package/src/components/core/form/fields/SolidDecimalField.tsx +5 -3
  147. package/src/components/core/form/fields/SolidIntegerField.tsx +18 -16
  148. package/src/components/core/form/fields/SolidJsonField.tsx +14 -12
  149. package/src/components/core/form/fields/SolidLongTextField.tsx +18 -17
  150. package/src/components/core/form/fields/SolidMediaMultipleField.tsx +257 -79
  151. package/src/components/core/form/fields/SolidMediaSingleField.tsx +148 -61
  152. package/src/components/core/form/fields/SolidRichTextField.tsx +6 -4
  153. package/src/components/core/form/fields/SolidSelectionDynamicField.tsx +6 -5
  154. package/src/components/core/form/fields/SolidSelectionStaticField.tsx +24 -23
  155. package/src/components/core/form/fields/SolidShortTextField.tsx +19 -17
  156. package/src/components/core/form/fields/SolidTimeField.tsx +23 -21
  157. package/src/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +2 -2
  158. package/src/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +17 -16
  159. package/src/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +2 -2
  160. package/src/components/core/list/SolidListView.tsx +60 -43
  161. package/src/components/core/model/CreateModel.tsx +92 -81
  162. package/src/components/core/module/CreateModule.tsx +181 -183
  163. package/src/components/layout/AppSidebar.tsx +35 -10
  164. package/src/components/layout/navbar-two-menu.tsx +6 -1
  165. package/src/components/layout/user-profile-menu.tsx +20 -8
  166. package/src/helpers/AppTitle.tsx +14 -0
  167. package/src/index.ts +2 -1
  168. package/dist/components/common/FilterComponent.d.ts +0 -3
  169. package/dist/components/common/FilterComponent.d.ts.map +0 -1
  170. package/dist/components/common/FilterComponent.js +0 -214
  171. package/dist/components/common/FilterComponent.js.map +0 -1
  172. package/dist/components/core/extension/dynamicComponentMap.d.ts +0 -3
  173. package/dist/components/core/extension/dynamicComponentMap.d.ts.map +0 -1
  174. package/dist/components/core/extension/dynamicComponentMap.js +0 -6
  175. package/dist/components/core/extension/dynamicComponentMap.js.map +0 -1
  176. package/dist/components/core/hooks/GlobalStateContext.d.ts +0 -11
  177. package/dist/components/core/hooks/GlobalStateContext.d.ts.map +0 -1
  178. package/dist/components/core/hooks/GlobalStateContext.js +0 -17
  179. package/dist/components/core/hooks/GlobalStateContext.js.map +0 -1
@@ -375,7 +375,7 @@ const CreateModule = ({ data }: any) => {
375
375
  return (
376
376
  <div className="solid-form-wrapper">
377
377
  <Toast ref={toast} />
378
- <form onSubmit={formik.handleSubmit}>
378
+ <form style={{ width: '77.5%', borderRight: '1px solid var(--primary-light-color' }} onSubmit={formik.handleSubmit}>
379
379
  <div className="solid-form-header">
380
380
  {pathname.includes('new') ?
381
381
  <>
@@ -410,197 +410,195 @@ const CreateModule = ({ data }: any) => {
410
410
  <SolidFormStepper />
411
411
  </div>
412
412
  <div className="p-4 solid-form-content">
413
- <div className="grid">
414
- <div className="col-8 mx-auto">
415
- <p className="form-wrapper-heading text-base">Basic Info</p>
416
- <div className="formgrid grid">
417
- <div className="field col-6 flex flex-column gap-2">
418
- <label htmlFor="displayName" className="form-field-label">
419
- Display Name <span style={{ color: 'red' }}>*</span>
420
- </label>
421
- <InputText
422
- disabled={data ? true : false}
423
- type="text"
424
- id="displayName"
425
- name="displayName"
426
- // onChange={formik.handleChange}
427
- onChange={(e) => {
428
- formik.handleChange(e);
429
- const { toKebabCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(e.target.value);
430
- if (pathname.includes('new')) {
431
- formik.setFieldValue("name", toKebabCase);
432
- }
433
-
434
- }}
435
- value={formik.values.displayName}
436
- className={classNames("", {
437
- "p-invalid": isFormFieldValid(formik, "displayName"),
438
- })}
439
- />
440
- {isFormFieldValid(formik, "displayName") && (
441
- <Message
442
- severity="error"
443
- text={formik?.errors?.displayName?.toString()}
444
- />
445
- )}
446
- </div>
447
- <div className="field col-6 flex flex-column gap-2">
448
- <label htmlFor="name" className="form-field-label">
449
- Name <span style={{ color: 'red' }}>*</span>
450
- </label>
451
- <InputText
452
- disabled
453
- type="text"
454
- id="name"
455
- name="name"
456
- onChange={formik.handleChange}
457
- value={formik.values.name}
458
- className={classNames("", {
459
- "p-invalid": isFormFieldValid(formik, "name"),
460
- })}
461
- />
462
- {isFormFieldValid(formik, "name") && (
463
- <Message severity="error" text={formik?.errors?.name?.toString()} />
464
- )}
465
- </div>
466
- </div>
467
- <div className="formgrid grid mt-4">
468
- <div className="field col-6 flex flex-column gap-2">
469
- <label htmlFor="description" className="form-field-label">
470
- Menu Sequence Number
471
- </label>
472
- <InputText
473
- id="menuSequenceNumber"
474
- type="number"
475
- onChange={formik.handleChange}
476
- min={0}
477
- value={formik.values.menuSequenceNumber}
478
- className={classNames("", {
479
- "p-invalid": isFormFieldValid(formik, "menuSequenceNumber"),
480
- })}
481
- />
482
- {isFormFieldValid(formik, "menuSequenceNumber") && (
483
- <Message
484
- severity="error"
485
- text={formik?.errors?.menuSequenceNumber?.toString()}
486
- />
487
- )}
488
- </div>
489
- <div className="field col-6 flex flex-column gap-2">
490
- <label htmlFor="description" className="form-field-label">
491
- Description <span style={{ color: 'red' }}>*</span>
492
- </label>
493
- <InputTextarea
494
- id="description"
495
- name="description"
496
- onChange={formik.handleChange}
497
- value={formik.values.description}
498
- className={classNames("", {
499
- "p-invalid": isFormFieldValid(formik, "description"),
500
- })}
501
- rows={5}
502
- cols={30}
503
- />
504
- {isFormFieldValid(formik, "description") && (
505
- <Message
506
- severity="error"
507
- text={formik?.errors?.description?.toString()}
508
- />
509
- )}
510
- </div>
413
+ <p className="form-wrapper-heading text-base">Basic Info</p>
414
+ <div className="formgrid grid">
415
+ <div className="field col-6 flex flex-column gap-2">
416
+ <label htmlFor="displayName" className="form-field-label">
417
+ Display Name <span style={{ color: 'red' }}>*</span>
418
+ </label>
419
+ <InputText
420
+ disabled={data ? true : false}
421
+ type="text"
422
+ id="displayName"
423
+ name="displayName"
424
+ // onChange={formik.handleChange}
425
+ onChange={(e) => {
426
+ formik.handleChange(e);
427
+ const { toKebabCase, toSnakeCase, toPluralCamelCase } = getSingularAndPlural(e.target.value);
428
+ if (pathname.includes('new')) {
429
+ formik.setFieldValue("name", toKebabCase);
430
+ }
431
+
432
+ }}
433
+ value={formik.values.displayName}
434
+ className={classNames("", {
435
+ "p-invalid": isFormFieldValid(formik, "displayName"),
436
+ })}
437
+ />
438
+ {isFormFieldValid(formik, "displayName") && (
439
+ <Message
440
+ severity="error"
441
+ text={formik?.errors?.displayName?.toString()}
442
+ />
443
+ )}
444
+ </div>
445
+ <div className="field col-6 flex flex-column gap-2">
446
+ <label htmlFor="name" className="form-field-label">
447
+ Name <span style={{ color: 'red' }}>*</span>
448
+ </label>
449
+ <InputText
450
+ disabled
451
+ type="text"
452
+ id="name"
453
+ name="name"
454
+ onChange={formik.handleChange}
455
+ value={formik.values.name}
456
+ className={classNames("", {
457
+ "p-invalid": isFormFieldValid(formik, "name"),
458
+ })}
459
+ />
460
+ {isFormFieldValid(formik, "name") && (
461
+ <Message severity="error" text={formik?.errors?.name?.toString()} />
462
+ )}
463
+ </div>
464
+ </div>
465
+ <div className="formgrid grid mt-4">
466
+ <div className="field col-6 flex flex-column gap-2">
467
+ <label htmlFor="description" className="form-field-label">
468
+ Menu Sequence Number
469
+ </label>
470
+ <InputText
471
+ id="menuSequenceNumber"
472
+ type="number"
473
+ onChange={formik.handleChange}
474
+ min={0}
475
+ value={formik.values.menuSequenceNumber}
476
+ className={classNames("", {
477
+ "p-invalid": isFormFieldValid(formik, "menuSequenceNumber"),
478
+ })}
479
+ />
480
+ {isFormFieldValid(formik, "menuSequenceNumber") && (
481
+ <Message
482
+ severity="error"
483
+ text={formik?.errors?.menuSequenceNumber?.toString()}
484
+ />
485
+ )}
486
+ </div>
487
+ <div className="field col-6 flex flex-column gap-2">
488
+ <label htmlFor="description" className="form-field-label">
489
+ Description <span style={{ color: 'red' }}>*</span>
490
+ </label>
491
+ <InputTextarea
492
+ id="description"
493
+ name="description"
494
+ onChange={formik.handleChange}
495
+ value={formik.values.description}
496
+ className={classNames("", {
497
+ "p-invalid": isFormFieldValid(formik, "description"),
498
+ })}
499
+ rows={5}
500
+ cols={30}
501
+ />
502
+ {isFormFieldValid(formik, "description") && (
503
+ <Message
504
+ severity="error"
505
+ text={formik?.errors?.description?.toString()}
506
+ />
507
+ )}
508
+ </div>
509
+ </div>
510
+ <Divider />
511
+ <p className="form-wrapper-heading text-base" style={{ fontSize: 16 }}>Configurations</p>
512
+ <div className="formgrid grid">
513
+ <div className="field col-6 flex flex-column gap-2">
514
+ <label htmlFor="defaultDataSource" className="form-field-label">
515
+ Default Data Source
516
+ </label>
517
+ <SingleSelectAutoCompleteField
518
+ disabled={data ? true : false}
519
+ key="defaultDataSource"
520
+ formik={formik}
521
+ isFormFieldValid={isFormFieldValid}
522
+ // relationField={false}
523
+ fieldName="defaultDataSource"
524
+ fieldNameId={null}
525
+ labelKey="label"
526
+ valueKey="value"
527
+ searchData={serachDDefaultDataSource}
528
+ existingData={formik.values.defaultDataSource}
529
+ />
530
+ {isFormFieldValid(formik, "defaultDataSource") && (
531
+ <Message
532
+ severity="error"
533
+ text={formik?.errors?.defaultDataSource?.toString()}
534
+ />
535
+ )}
536
+ </div>
537
+ <div className="field col-6 flex flex-column gap-2">
538
+ <label htmlFor="menuIconUrl" className="form-label form-field-label">
539
+ Menu Icon <small className="text-red-500 helper-text">(only svg, png and jpeg are allowed)</small>
540
+ </label>
541
+ <div {...getRootPropsmenuIcon()} className="solid-dropzone-wrapper">
542
+ <input {...getInputPropsmenuIcon()} />
543
+ <DropzonePlaceholder />
511
544
  </div>
512
- <Divider />
513
- <p className="form-wrapper-heading text-base" style={{ fontSize: 16 }}>Configurations</p>
514
- <div className="formgrid grid">
515
- <div className="field col-6 flex flex-column gap-2">
516
- <label htmlFor="defaultDataSource" className="form-field-label">
517
- Default Data Source
518
- </label>
519
- <SingleSelectAutoCompleteField
520
- disabled={data ? true : false}
521
- key="defaultDataSource"
522
- formik={formik}
523
- isFormFieldValid={isFormFieldValid}
524
- // relationField={false}
525
- fieldName="defaultDataSource"
526
- fieldNameId={null}
527
- labelKey="label"
528
- valueKey="value"
529
- searchData={serachDDefaultDataSource}
530
- existingData={formik.values.defaultDataSource}
531
- />
532
- {isFormFieldValid(formik, "defaultDataSource") && (
533
- <Message
534
- severity="error"
535
- text={formik?.errors?.defaultDataSource?.toString()}
536
- />
537
- )}
538
- </div>
539
- <div className="field col-6 flex flex-column gap-2">
540
- <label htmlFor="menuIconUrl" className="form-label form-field-label">
541
- Menu Icon <small className="text-red-500 helper-text">(only svg, png and jpeg are allowed)</small>
542
- </label>
543
- <div {...getRootPropsmenuIcon()} className="solid-dropzone-wrapper">
544
- <input {...getInputPropsmenuIcon()} />
545
- <DropzonePlaceholder />
546
- </div>
547
- {isFormFieldValid(formik, "menuIconUrl") && (
548
- <Message severity="error" text={formik?.errors?.menuIconUrl?.toString()} />
549
- )}
550
-
551
- {fileDetails && (
552
- <div className="solid-file-upload-wrapper">
553
- <div className="flex align-items-center gap-2">
554
- <FileReaderExt fileDetails={fileDetails} />
555
- <div className="w-full flex flex-column gap-1">
556
- <div className="flex align-items-center justify-content-between">
557
- <div className="font-bold">{fileDetails.name}</div>
558
- <div className="cancel-upload-button" onClick={handleCancelUpload}>
559
- <svg xmlns="http://www.w3.org/2000/svg" width="6" height="6" viewBox="0 0 6 6" fill="none">
560
- <path d="M0.6 6L0 5.4L2.4 3L0 0.6L0.6 0L3 2.4L5.4 0L6 0.6L3.6 3L6 5.4L5.4 6L3 3.6L0.6 6Z" fill="#4B4D52" />
561
- </svg>
562
- </div>
563
- </div>
564
- {
565
- uploadCompleted ?
566
- <div className="flex align-items-center gap-2 text-sm">
567
- {totalSize} of {totalSize}
568
- <svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
569
- <circle cx="2" cy="2" r="2" fill="#C1C1C1" />
570
- </svg>
571
- <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
572
- <mask id="mask0_2480_8635" style={{ maskType: 'alpha' }} maskUnits="userSpaceOnUse" x="0" y="0" width="20" height="20">
573
- <rect width="20" height="20" fill="#D9D9D9" />
574
- </mask>
575
- <g mask="url(#mask0_2480_8635)">
576
- <path d="M9.16 12.76L13.39 8.53L12.55 7.69L9.16 11.08L7.45 9.37L6.61 10.21L9.16 12.76ZM10 16C9.17 16 8.39 15.8424 7.66 15.5272C6.93 15.2124 6.295 14.785 5.755 14.245C5.215 13.705 4.7876 13.07 4.4728 12.34C4.1576 11.61 4 10.83 4 10C4 9.17 4.1576 8.39 4.4728 7.66C4.7876 6.93 5.215 6.295 5.755 5.755C6.295 5.215 6.93 4.7874 7.66 4.4722C8.39 4.1574 9.17 4 10 4C10.83 4 11.61 4.1574 12.34 4.4722C13.07 4.7874 13.705 5.215 14.245 5.755C14.785 6.295 15.2124 6.93 15.5272 7.66C15.8424 8.39 16 9.17 16 10C16 10.83 15.8424 11.61 15.5272 12.34C15.2124 13.07 14.785 13.705 14.245 14.245C13.705 14.785 13.07 15.2124 12.34 15.5272C11.61 15.8424 10.83 16 10 16Z" fill="#722ED1" />
577
- </g>
578
- </svg>
579
- Completed
580
- </div>
581
- :
582
- <div className="flex align-items-center gap-2 text-sm">
583
- {uploadedSize} of {totalSize}
584
- <svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
585
- <circle cx="2" cy="2" r="2" fill="#C1C1C1" />
586
- </svg>
587
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
588
- <path d="M7.375 10.5V5.40625L5.75 7.03125L4.875 6.125L8 3L11.125 6.125L10.25 7.03125L8.625 5.40625V10.5H7.375ZM4.25 13C3.90625 13 3.61198 12.8776 3.36719 12.6328C3.1224 12.388 3 12.0938 3 11.75V9.875H4.25V11.75H11.75V9.875H13V11.75C13 12.0938 12.8776 12.388 12.6328 12.6328C12.388 12.8776 12.0938 13 11.75 13H4.25Z" fill="black" />
589
- </svg>
590
- Uploading ${uploadProgress}% Completed
591
- </div>
592
- }
545
+ {isFormFieldValid(formik, "menuIconUrl") && (
546
+ <Message severity="error" text={formik?.errors?.menuIconUrl?.toString()} />
547
+ )}
548
+
549
+ {fileDetails && (
550
+ <div className="solid-file-upload-wrapper">
551
+ <div className="flex align-items-center gap-2">
552
+ <FileReaderExt fileDetails={fileDetails} />
553
+ <div className="w-full flex flex-column gap-1">
554
+ <div className="flex align-items-center justify-content-between">
555
+ <div className="font-bold">{fileDetails.name}</div>
556
+ <div className="cancel-upload-button" onClick={handleCancelUpload}>
557
+ <svg xmlns="http://www.w3.org/2000/svg" width="6" height="6" viewBox="0 0 6 6" fill="none">
558
+ <path d="M0.6 6L0 5.4L2.4 3L0 0.6L0.6 0L3 2.4L5.4 0L6 0.6L3.6 3L6 5.4L5.4 6L3 3.6L0.6 6Z" fill="#4B4D52" />
559
+ </svg>
593
560
  </div>
594
561
  </div>
595
- <ProgressBar value={uploadProgress} showValue={false} style={{ height: 4 }} className="mt-2" />
562
+ {
563
+ uploadCompleted ?
564
+ <div className="flex align-items-center gap-2 text-sm">
565
+ {totalSize} of {totalSize}
566
+ <svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
567
+ <circle cx="2" cy="2" r="2" fill="#C1C1C1" />
568
+ </svg>
569
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
570
+ <mask id="mask0_2480_8635" style={{ maskType: 'alpha' }} maskUnits="userSpaceOnUse" x="0" y="0" width="20" height="20">
571
+ <rect width="20" height="20" fill="#D9D9D9" />
572
+ </mask>
573
+ <g mask="url(#mask0_2480_8635)">
574
+ <path d="M9.16 12.76L13.39 8.53L12.55 7.69L9.16 11.08L7.45 9.37L6.61 10.21L9.16 12.76ZM10 16C9.17 16 8.39 15.8424 7.66 15.5272C6.93 15.2124 6.295 14.785 5.755 14.245C5.215 13.705 4.7876 13.07 4.4728 12.34C4.1576 11.61 4 10.83 4 10C4 9.17 4.1576 8.39 4.4728 7.66C4.7876 6.93 5.215 6.295 5.755 5.755C6.295 5.215 6.93 4.7874 7.66 4.4722C8.39 4.1574 9.17 4 10 4C10.83 4 11.61 4.1574 12.34 4.4722C13.07 4.7874 13.705 5.215 14.245 5.755C14.785 6.295 15.2124 6.93 15.5272 7.66C15.8424 8.39 16 9.17 16 10C16 10.83 15.8424 11.61 15.5272 12.34C15.2124 13.07 14.785 13.705 14.245 14.245C13.705 14.785 13.07 15.2124 12.34 15.5272C11.61 15.8424 10.83 16 10 16Z" fill="#722ED1" />
575
+ </g>
576
+ </svg>
577
+ Completed
578
+ </div>
579
+ :
580
+ <div className="flex align-items-center gap-2 text-sm">
581
+ {uploadedSize} of {totalSize}
582
+ <svg xmlns="http://www.w3.org/2000/svg" width="4" height="4" viewBox="0 0 4 4" fill="none">
583
+ <circle cx="2" cy="2" r="2" fill="#C1C1C1" />
584
+ </svg>
585
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
586
+ <path d="M7.375 10.5V5.40625L5.75 7.03125L4.875 6.125L8 3L11.125 6.125L10.25 7.03125L8.625 5.40625V10.5H7.375ZM4.25 13C3.90625 13 3.61198 12.8776 3.36719 12.6328C3.1224 12.388 3 12.0938 3 11.75V9.875H4.25V11.75H11.75V9.875H13V11.75C13 12.0938 12.8776 12.388 12.6328 12.6328C12.388 12.8776 12.0938 13 11.75 13H4.25Z" fill="black" />
587
+ </svg>
588
+ Uploading ${uploadProgress}% Completed
589
+ </div>
590
+ }
596
591
  </div>
597
- )}
592
+ </div>
593
+ <ProgressBar value={uploadProgress} showValue={false} style={{ height: 4 }} className="mt-2" />
598
594
  </div>
599
- </div>
595
+ )}
600
596
  </div>
601
597
  </div>
602
598
  </div>
603
599
  </form>
600
+ <div style={{ width: '22.5%' }}>
601
+ </div>
604
602
  </div>
605
603
  );
606
604
  };
@@ -80,6 +80,36 @@ const AppSidebar = () => {
80
80
  };
81
81
  }, [isSearchShow]);
82
82
 
83
+ const additionalMenu = {
84
+ title: "General Settings",
85
+ key: "general-settings",
86
+ children: [
87
+ {
88
+ title: "Settings",
89
+ path: "",
90
+ key: "settings-menu-item",
91
+ children: [
92
+ {
93
+ title: "App Settings",
94
+ path: "/admin/settings/app-settings",
95
+ key: "app-setting"
96
+ },
97
+ {
98
+ title: "Authentication Settings",
99
+ path: "/admin/settings/authentication-settings",
100
+ key: "auth-setting"
101
+ },
102
+ {
103
+ title: "Misc",
104
+ path: "/admin/settings/misc-settings",
105
+ key: "misc-setting"
106
+ }
107
+ ]
108
+ }
109
+ ],
110
+ icon: "/images/Navigation/settings.png" // Default icon (optional)
111
+ };
112
+ const updatedMenuData = menu?.data ? [...menu.data, additionalMenu] : [additionalMenu];
83
113
 
84
114
 
85
115
  return (
@@ -91,7 +121,7 @@ const AppSidebar = () => {
91
121
  <div
92
122
  className={`sidebar-toggle-button ${!visibleNavbar ? "s-collapsed" : ""}`}
93
123
  onClick={handleToggle}
94
- // severity="secondary"
124
+ // severity="secondary"
95
125
  >
96
126
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
97
127
  <rect x="0.3" y="0.3" width="23.4" height="23.4" rx="2.1" fill="white" />
@@ -104,7 +134,7 @@ const AppSidebar = () => {
104
134
 
105
135
  <div className="sidebar-left">
106
136
  <div className="navbar-menu">
107
- {menu && menu.data.length > 0 && menu.data.map((m: any) => (
137
+ {updatedMenuData.length > 0 && updatedMenuData.map((m: any) => (
108
138
  <div
109
139
  key={m.title}
110
140
  className={`menu-item ${currentMainMenu === m.title ? "active-menu-image" : ""}`}
@@ -112,20 +142,15 @@ const AppSidebar = () => {
112
142
  <a onClick={() => handleMenu(m)}>
113
143
  {m.icon ?
114
144
  <img
115
- style={{ cursor: "pointer", width: '30px' , mixBlendMode: "multiply"}}
116
- // src={currentMainMenu === m.title ? `/images/${m.title.toLocaleLowerCase()}-active.svg` : `/images/${m.title.toLocaleLowerCase()}.svg`}
117
- // src={`/images/menu/${m.title}.svg`}
145
+ style={{ cursor: "pointer", width: '30px', mixBlendMode: "multiply" }}
118
146
  src={(m.icon && m.icon.startsWith("/")) ? m.icon : `${process.env.API_URL}/${m.icon}`}
119
- // src={`/images/menu/app-builder.svg`}
120
- alt="Solid"
147
+ alt={m.title}
121
148
  />
122
149
  :
123
150
  <img
124
151
  style={{ cursor: "pointer", width: '30px' }}
125
- // src={currentMainMenu === m.title ? `/images/${m.title.toLocaleLowerCase()}-active.svg` : `/images/${m.title.toLocaleLowerCase()}.svg`}
126
- // src={`/images/menu/${m.title}.svg`}
127
152
  src={`/images/menu/app-builder.svg`}
128
- alt="Solid"
153
+ alt={m.title}
129
154
  />
130
155
  }
131
156
  </a>
@@ -11,8 +11,13 @@ const NavbarTwoMenu = ({ menuItems }: any) => {
11
11
  const [expandedKeys, setExpandedKeys] = useState<any>({});
12
12
  const itemRenderer = (item: any, options: any) => {
13
13
  const currentItem = item?.url?.split('/').slice(-2, -1)[0];
14
+ const isSettingsPage = pathname.includes('/settings/') && item?.url?.includes('/settings/')
15
+ ? pathname === item?.url // Exact match check for settings pages
16
+ : currentItem === activeParentPath
17
+
18
+ // currentItem === activeParentPath ?' p-highlight' : ''
14
19
  return (
15
- <div key={item?.key} className={`flex align-items-center cursor-pointer menuHead px-3 ${currentItem === activeParentPath ? ' p-highlight' : ''}`} onClick={options.onClick}>
20
+ <div key={item?.key} className={`flex align-items-center cursor-pointer menuHead px-3 ${isSettingsPage ? ' p-highlight' : ''}`} onClick={options.onClick}>
16
21
  <Link href={item?.url ? item?.url : '#'} className="w-full flex justify-content-between font-medium">
17
22
  <div className="flex align-items-center gap-3">
18
23
  <span className={item.icon} />
@@ -11,6 +11,8 @@ import { toggleTheme } from "@/redux/features/themeSlice";
11
11
  import { InputSwitch } from "primereact/inputswitch";
12
12
  import { Button } from "primereact/button";
13
13
  import { useRouter } from "next/navigation";
14
+ import { Dialog } from "primereact/dialog";
15
+ import { Divider } from "primereact/divider";
14
16
 
15
17
  const UserProfileMenu = () => {
16
18
  const router = useRouter();
@@ -18,9 +20,10 @@ const UserProfileMenu = () => {
18
20
  // const { user } = useAppSelector((state) => state.auth);
19
21
  const { changeTheme } = useContext(PrimeReactContext);
20
22
  const { layoutConfig, setLayoutConfig } = useContext(LayoutContext);
21
- const { theme } = useSelector((state:any) => state.theme); // Get current theme from Redux
22
- const { user } = useSelector((state:any) => state.auth);
23
+ const { theme } = useSelector((state: any) => state.theme); // Get current theme from Redux
24
+ const { user } = useSelector((state: any) => state.auth);
23
25
  const [checked, setChecked] = useState(theme === "dark");
26
+ const [confirmLogout, setConfirmLogout] = useState(false);
24
27
  const dispatch = useDispatch();
25
28
  const op = useRef(null);
26
29
  const logoutHandler = () => {
@@ -79,9 +82,6 @@ const UserProfileMenu = () => {
79
82
  </div>
80
83
  <InputSwitch checked={checked} onChange={handleThemeToggle} />
81
84
  </div>
82
- <div className="p-2">
83
- <Button icon="pi pi-cog" label="General Settings" size="small" text severity="secondary" className="w-full text-left gap-2" onClick={()=>router.push("/admin/settings") }/>
84
- </div>
85
85
  <div className="user-profile-body p-3">
86
86
  <Button
87
87
  text
@@ -92,13 +92,25 @@ const UserProfileMenu = () => {
92
92
  <path d="M3.75 15.75C3.3375 15.75 2.98438 15.6031 2.69063 15.3094C2.39687 15.0156 2.25 14.6625 2.25 14.25V3.75C2.25 3.3375 2.39687 2.98438 2.69063 2.69063C2.98438 2.39687 3.3375 2.25 3.75 2.25H9V3.75H3.75V14.25H9V15.75H3.75ZM12 12.75L10.9688 11.6625L12.8813 9.75H6.75V8.25H12.8813L10.9688 6.3375L12 5.25L15.75 9L12 12.75Z" fill="#F04A4A" />
93
93
  </svg>
94
94
  }
95
- onClick={e => logoutHandler()}
95
+ onClick={() => setConfirmLogout(true)}
96
96
  label="Logout"
97
97
  />
98
98
  </div>
99
99
  </OverlayPanel>
100
- </div >
101
- </div >
100
+ </div>
101
+ <Dialog header="Logout" headerClassName="py-2" contentClassName="px-0 pb-0" visible={confirmLogout} style={{ width: '20vw' }} onHide={() => { if (!confirmLogout) return; setConfirmLogout(false); }}>
102
+ <Divider className="m-0" />
103
+ <div className="p-4">
104
+ <p className="m-0 solid-primary-title" style={{ fontSize: 16 }}>
105
+ Are you sure you want to log out?
106
+ </p>
107
+ <div className="flex align-items-center gap-2 mt-3">
108
+ <Button label="Logout" size="small" onClick={e => logoutHandler()} />
109
+ <Button label="Cancel" size="small" onClick={() => setConfirmLogout(false)} outlined />
110
+ </div>
111
+ </div>
112
+ </Dialog>
113
+ </div>
102
114
  );
103
115
  };
104
116
 
@@ -0,0 +1,14 @@
1
+ import React from 'react'
2
+
3
+ export const AppTitle = ({ title }: { title: any }) => {
4
+ const appTitle = title ? title?.data?.appTitle : "Solid Starters";
5
+ return (
6
+ <div>
7
+ <p className="solid-logo-title">
8
+ {appTitle?.split(" ").map((word: string, index: number) => (
9
+ <div key={index}>{word}</div>
10
+ ))}
11
+ </p>
12
+ </div>
13
+ )
14
+ }
package/src/index.ts CHANGED
@@ -366,6 +366,7 @@ export type { Product } from '@/components/tables/ListViewTable';
366
366
 
367
367
  export { ToastContainer, handleError, handleSuccess } from '@/helpers/ToastContainer';
368
368
  export { getAuthCookieName, getAuthHeader } from '@/helpers/authHeader';
369
+ export { AppTitle } from '@/helpers/AppTitle'
369
370
  // export * from '@/helpers/countries';
370
371
  export { addCommasToAmount, calculateDaysOfStay, getSingularAndPlural } from '@/helpers/helpers';
371
372
  // export * from '@/helpers/menu';
@@ -417,7 +418,7 @@ export { revalidateTag } from '@/helpers/revalidate';
417
418
  // │ └── userSlice.ts
418
419
  // ├── hooks.ts
419
420
  // export * from '@/redux/api/articleApi';
420
- export { authApi, useForgotPasswordMutation, useRegisterMutation, useRegisterPrivateMutation, useResetPasswordMutation, useUpdateUserMutation ,useInitateLoginMutation, useConfirmOtpLoginMutation, useInitateRegisterMutation, useConfirmOtpRegisterMutation,} from '@/redux/api/authApi';
421
+ export { authApi, useForgotPasswordMutation, useRegisterMutation, useRegisterPrivateMutation, useResetPasswordMutation, useUpdateUserMutation, useInitateLoginMutation, useConfirmOtpLoginMutation, useInitateRegisterMutation, useConfirmOtpRegisterMutation, } from '@/redux/api/authApi';
421
422
  // export * from '@/redux/api/automationApi';
422
423
  // export * from '@/redux/api/categoryApi';
423
424
  // export * from '@/redux/api/cityApi';
@@ -1,3 +0,0 @@
1
- declare const FilterComponent: () => import("react/jsx-runtime").JSX.Element;
2
- export default FilterComponent;
3
- //# sourceMappingURL=FilterComponent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FilterComponent.d.ts","sourceRoot":"","sources":["../../../src/components/common/FilterComponent.tsx"],"names":[],"mappings":"AAuRA,QAAA,MAAM,eAAe,+CAkJpB,CAAC;AAEF,eAAe,eAAe,CAAC"}