@erpsquad/common 1.7.4 → 1.8.1

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 (141) hide show
  1. package/dist/components/action-bar/action-bar/index.esm.js +4 -56
  2. package/dist/components/action-bar/action-bar/index.esm.js.map +1 -1
  3. package/dist/components/action-bar/action-bar/index.js +18 -28
  4. package/dist/components/action-bar/action-bar/index.js.map +1 -1
  5. package/dist/components/filter/filter/index.esm.js +1 -1
  6. package/dist/components/filter/filter/index.esm.js.map +1 -1
  7. package/dist/components/filter/filter/index.js +1 -1
  8. package/dist/components/filter/filter/index.js.map +1 -1
  9. package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
  10. package/dist/components/header/redux/actionCreator/index.esm.js.map +1 -1
  11. package/dist/components/header/redux/actionCreator/index.js +1 -1
  12. package/dist/components/header/redux/actionCreator/index.js.map +1 -1
  13. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  14. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
  15. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js +1 -1
  16. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js.map +1 -1
  17. package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  18. package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
  19. package/dist/components/reports-title-bar/redux/actionCreator/index.js +1 -1
  20. package/dist/components/reports-title-bar/redux/actionCreator/index.js.map +1 -1
  21. package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
  22. package/dist/components/share-modal/redux/actionCreator/index.esm.js.map +1 -1
  23. package/dist/components/share-modal/redux/actionCreator/index.js +1 -1
  24. package/dist/components/share-modal/redux/actionCreator/index.js.map +1 -1
  25. package/dist/components/upload/upload/index.esm.js +2 -2
  26. package/dist/components/upload/upload/index.esm.js.map +1 -1
  27. package/dist/components/upload/upload/index.js +2 -2
  28. package/dist/components/upload/upload/index.js.map +1 -1
  29. package/dist/contexts/AuthContext/index.esm.js +1 -1
  30. package/dist/contexts/AuthContext/index.esm.js.map +1 -1
  31. package/dist/contexts/AuthContext/index.js +1 -1
  32. package/dist/contexts/AuthContext/index.js.map +1 -1
  33. package/dist/contexts/languageContext/index.esm.js +1 -1
  34. package/dist/contexts/languageContext/index.esm.js.map +1 -1
  35. package/dist/contexts/languageContext/index.js +1 -1
  36. package/dist/contexts/languageContext/index.js.map +1 -1
  37. package/dist/index.esm.js +68 -67
  38. package/dist/index.js +1 -1
  39. package/dist/{node_modules/ckeditor5/dist/ckeditor5.css → style.css} +161 -0
  40. package/dist/utils/api/index.esm.js +4 -4
  41. package/dist/utils/api/index.esm.js.map +1 -1
  42. package/dist/utils/api/index.js +1 -1
  43. package/dist/utils/api/index.js.map +1 -1
  44. package/dist/utils/common/index.esm.js +6 -6
  45. package/dist/utils/common/index.esm.js.map +1 -1
  46. package/dist/utils/common/index.js +1 -1
  47. package/dist/utils/common/index.js.map +1 -1
  48. package/dist/utils/index.d.ts +1 -0
  49. package/dist/utils/index.esm.js +4 -3
  50. package/dist/utils/index.js +1 -1
  51. package/dist/views/template-editor/components/EditorSidebar/index.esm.js +1 -1
  52. package/dist/views/template-editor/components/EditorSidebar/index.esm.js.map +1 -1
  53. package/dist/views/template-editor/components/EditorSidebar/index.js +1 -1
  54. package/dist/views/template-editor/components/EditorSidebar/index.js.map +1 -1
  55. package/dist/views/template-editor/templates/index.esm.js +1 -1
  56. package/dist/views/template-editor/templates/index.esm.js.map +1 -1
  57. package/dist/views/template-editor/templates/index.js +1 -1
  58. package/dist/views/template-editor/templates/index.js.map +1 -1
  59. package/package.json +2 -4
  60. package/CSS_SETUP.md +0 -195
  61. package/QUICK_START.md +0 -118
  62. package/dist/components/Dashboard/dashboard.css +0 -1
  63. package/dist/components/action-bar/action-bar.css +0 -1
  64. package/dist/components/activity-tag/activity-tag.css +0 -1
  65. package/dist/components/activityArea/activityArea.css +0 -1
  66. package/dist/components/activityLog/activity-log.css +0 -1
  67. package/dist/components/avatar/avatar.css +0 -1
  68. package/dist/components/board/board.css +0 -1
  69. package/dist/components/calculation-summary/calculation-summary.css +0 -1
  70. package/dist/components/calendar/calendar.css +0 -1
  71. package/dist/components/card-wrapper/card-wrapper.css +0 -1
  72. package/dist/components/charts/barLineChart/barLineChart.css +0 -1
  73. package/dist/components/charts/chartLegend.css +0 -1
  74. package/dist/components/charts/donut-chart/donut-chart.css +0 -1
  75. package/dist/components/charts/donutChart/donut-chart.css +0 -1
  76. package/dist/components/confirm-modal/confirm-modal.css +0 -1
  77. package/dist/components/country-select/index.css +0 -1
  78. package/dist/components/custom-snackbar/custom-snackbar.css +0 -1
  79. package/dist/components/date-picker/date-picker.css +0 -1
  80. package/dist/components/date-range-picker/date-range-picker.css +0 -1
  81. package/dist/components/editor/custom-editor.css +0 -1
  82. package/dist/components/expandable-summary-wrapper/expandable-summary-wrapper.css +0 -1
  83. package/dist/components/fallback/fallback.css +0 -1
  84. package/dist/components/filter/filter.css +0 -1
  85. package/dist/components/footer/footer.css +0 -1
  86. package/dist/components/form-control/form-builder/form-builder-element/element.css +0 -1
  87. package/dist/components/form-control/form-builder/form-builder-element/location-add-modal/location-add-modal.css +0 -1
  88. package/dist/components/form-control/form-parser/form-parser.css +0 -1
  89. package/dist/components/form-header/form-header.css +0 -1
  90. package/dist/components/gantt/gantt.css +0 -1
  91. package/dist/components/grid/grid-wrapper/grid-wrapper.css +0 -1
  92. package/dist/components/header/header.css +0 -1
  93. package/dist/components/header-card/header-card.css +0 -1
  94. package/dist/components/hr-line/hr-line.css +0 -1
  95. package/dist/components/info-card/info-card.css +0 -1
  96. package/dist/components/inventory-reports-title-bar/component/reportFilter.css +0 -1
  97. package/dist/components/inventory-reports-title-bar/inventory-reports-title-bar.css +0 -1
  98. package/dist/components/inventory-reports-title-bar/report-buttons/report-buttons.css +0 -1
  99. package/dist/components/material-table/material-table.css +0 -1
  100. package/dist/components/module-button/module-button.css +0 -1
  101. package/dist/components/mulitline/multiline.css +0 -1
  102. package/dist/components/multi-select/multi-select.css +0 -1
  103. package/dist/components/page-navigator/components/shared-page-modal.css +0 -1
  104. package/dist/components/page-navigator/page-navigator.css +0 -1
  105. package/dist/components/pagination/pagination.css +0 -1
  106. package/dist/components/parties-modal/parties-modal.css +0 -1
  107. package/dist/components/quick-approval-modal/quick-approval-modal.css +0 -1
  108. package/dist/components/reports/dynamic-report/dynamic-report.css +0 -1
  109. package/dist/components/reports-title-bar/reports-title-bar.css +0 -1
  110. package/dist/components/schedule-report/schedule-report-modal.css +0 -1
  111. package/dist/components/schedule-report/schedule-report.css +0 -1
  112. package/dist/components/search-bar/search-bar.css +0 -1
  113. package/dist/components/select/controller/controller-select.css +0 -1
  114. package/dist/components/share-modal/share-modal.css +0 -1
  115. package/dist/components/sidebar/sidebar.css +0 -1
  116. package/dist/components/sub-header-doc/sub-header-doc.css +0 -1
  117. package/dist/components/tab-bar-ui/tab-bar-ui.css +0 -1
  118. package/dist/components/tabs/tabs.css +0 -1
  119. package/dist/components/text-field/text-field.css +0 -1
  120. package/dist/components/time-picker/time-picker.css +0 -1
  121. package/dist/components/time-range-picker/time-range-picker.css +0 -1
  122. package/dist/components/toast/toast.css +0 -1
  123. package/dist/components/toggle/toggle.css +0 -1
  124. package/dist/components/upload/upload.css +0 -1
  125. package/dist/components/upload-excel/upload-excel.css +0 -1
  126. package/dist/components/user-dropdown/user-dropdown.css +0 -1
  127. package/dist/components/value-field/value-field.css +0 -1
  128. package/dist/components/view-modal/view-modal.css +0 -1
  129. package/dist/node_modules/@asseinfo/react-kanban/dist/styles.css +0 -1
  130. package/dist/node_modules/@glideapps/glide-data-grid/dist/index.css +0 -1
  131. package/dist/node_modules/gantt-task-react/dist/index.css +0 -1
  132. package/dist/node_modules/normalize.css/normalize.css +0 -1
  133. package/dist/styles/sass/_animations.css +0 -1
  134. package/dist/styles/sass/_utils.css +0 -1
  135. package/dist/views/afterAuth/dashboard/dashboard.css +0 -1
  136. package/dist/views/beforeAuth/components/index.css +0 -1
  137. package/dist/views/beforeAuth/landing/landing.css +0 -1
  138. package/dist/views/template-editor/add-template/add-template.css +0 -1
  139. package/dist/views/template-editor/company-selection-modal/company-selection-modal.css +0 -1
  140. package/dist/views/template-editor/edit-section-modal/edit-section-modal.css +0 -1
  141. package/dist/views/template-editor/templates.css +0 -1
@@ -16,6 +16,7 @@ export * from './form-builder-conversion';
16
16
  export * from './form-builder-deconversion';
17
17
  export { default as formBuilderDeConversion } from './form-builder-deconversion';
18
18
  export * from './format-text';
19
+ export { default as formatText } from './format-text';
19
20
  export * from './language';
20
21
  export * from './metaComponent';
21
22
  export * from './migration-utils';
@@ -10,13 +10,13 @@ import { RANGE, handleCompareDateRange, handleCompareDateRangeSync } from "./dat
10
10
  import { COMMON_DATE_VALIDATIONS, anyDateValidation, businessDateValidation, conditionalDateValidation, createCustomMessages, createDateValidation, dateRangeValidation, dateTimeValidation, dateValidation, futureDateValidation, pastDateValidation } from "./dateValidation/index.esm.js";
11
11
  import { specificFilters, subModuleMappings } from "./export-filters/index.esm.js";
12
12
  import { convertTableColumns, default as default2 } from "./form-builder-deconversion/index.esm.js";
13
- import { convertToUnderscore, formatLabel } from "./format-text/index.esm.js";
13
+ import { convertToUnderscore, formatLabel, default as default3 } from "./format-text/index.esm.js";
14
14
  import { fetchLanguages } from "./language/index.esm.js";
15
15
  import { createParameterizedNavigationHandler, migrateRoutesToUseParams, migrateToPathWithId, updateTableConfigForParameterizedNavigation } from "./migration-utils/index.esm.js";
16
16
  import { getEntityId, navigateWithId } from "./navigation-utils/index.esm.js";
17
17
  import { convertRoutesToUseIdParams, generateRouteWithId, navigateToRouteWithId, updatePathnameWithIdParams } from "./route-utils/index.esm.js";
18
18
  import { loadModuleTranslations } from "./translations/index.esm.js";
19
- import { default as default3 } from "dayjs";
19
+ import { default as default4 } from "dayjs";
20
20
  export * from "react-i18next";
21
21
  import { MenuFilter, MenuFilterService, ModuleAccessService, StorageUtils } from "./menu-filter/index.esm.js";
22
22
  import { closeSnackbar, enqueueSnackbar, useSnackbar } from "../node_modules/notistack/notistack.esm/index.esm.js";
@@ -64,7 +64,7 @@ export {
64
64
  dateRangeValidation,
65
65
  dateTimeValidation,
66
66
  dateValidation,
67
- default3 as dayjs,
67
+ default4 as dayjs,
68
68
  defaultCompany,
69
69
  defaultCurrencyFormat,
70
70
  defaultCurrencySymbol,
@@ -98,6 +98,7 @@ export {
98
98
  formatOnlyTime,
99
99
  formatResponseDatesToDayJS,
100
100
  formatResponseOnlyDatesToDayJS,
101
+ default3 as formatText,
101
102
  formatTimeForPayload,
102
103
  formatUtcDate,
103
104
  futureDateValidation,
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./api/index.js"),t=require("./calculation/index.js"),a=require("./color/index.js"),r=require("./common-utility/index.js"),o=require("./common/index.js"),s=require("./constant/index.js"),i=require("./country/index.js"),n=require("./dateFormat/index.js"),p=require("./date-range/index.js"),l=require("./dateValidation/index.js"),d=require("./export-filters/index.js"),x=require("./form-builder-deconversion/index.js"),u=require("./format-text/index.js"),m=require("./language/index.js"),c=require("./migration-utils/index.js"),g=require("./navigation-utils/index.js"),D=require("./route-utils/index.js"),I=require("./translations/index.js"),T=require("dayjs"),y=require("react-i18next"),f=require("./menu-filter/index.js"),E=require("../node_modules/notistack/notistack.esm/index.js"),S=require("../api-client/api.rbac/api/index.js"),A=require("../api-client/api.drive/api/index.js"),F=require("../api-client/api.system-feature/api/index.js");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var N=/* @__PURE__ */h(T);exports.apiConfigurations=e.apiConfigurations,exports.fetchApi=e.fetchApi,exports.getCurrency=e.getCurrency,exports.getItems=e.getItems,exports.getOptions=e.getOptions,exports.calculateEntries=t.calculateEntries,exports.blue=a.blue,exports.error=a.error,exports.green=a.green,exports.lightGreen=a.lightGreen,exports.magenta=a.magenta,exports.neutral=a.neutral,exports.olive=a.olive,exports.primaryGreen=a.primaryGreen,exports.red=a.red,exports.getFileNamesFromUrls=r.getFileNamesFromUrls,exports.getFileNamesFromUrlsAsLink=r.getFileNamesFromUrlsAsLink,exports.renderEmptyRowsFallback=r.renderEmptyRowsFallback,exports.renderValueField=r.renderValueField,exports.transformTableColumns=r.transformTableColumns,exports.InvoiceStatus=o.InvoiceStatus,exports.addOrEditArray=o.addOrEditArray,exports.appendConditionSafely=o.appendConditionSafely,exports.calculateAmountData=o.calculateAmountData,exports.calculatePeriods=o.calculatePeriods,exports.checkDuplicateTracking=o.checkDuplicateTracking,exports.checkForDuplicate=o.checkForDuplicate,exports.checkSkuAndItemName=o.checkSkuAndItemName,exports.createdOnAndBy=o.createdOnAndBy,exports.defaultCompany=o.defaultCompany,exports.defaultCurrencyFormat=o.defaultCurrencyFormat,exports.defaultCurrencySymbol=o.defaultCurrencySymbol,exports.displayPhone=o.displayPhone,exports.downloadDoc=o.downloadDoc,exports.downloadFile=o.downloadFile,exports.fetchAssemblyItemData=o.fetchAssemblyItemData,exports.fetchCompanyLocations=o.fetchCompanyLocations,exports.fetchExchageRate=o.fetchExchageRate,exports.fetchItems=o.fetchItems,exports.fetchOptions=o.fetchOptions,exports.fetchRentalResponseItems=o.fetchRentalResponseItems,exports.fetchRfqItemsByIdForResponse=o.fetchRfqItemsByIdForResponse,exports.filterAccessibleModules=o.filterAccessibleModules,exports.filterCoaByCompanyIdOrNull=o.filterCoaByCompanyIdOrNull,exports.findById=o.findById,exports.formatAmount=o.formatAmount,exports.formatAmountWithCurrency=o.formatAmountWithCurrency,exports.formatAmountWithCurrencyData=o.formatAmountWithCurrencyData,exports.formatDateForPayload=o.formatDateForPayload,exports.formatDateTimeForPayload=o.formatDateTimeForPayload,exports.formatEmptyDataToNull=o.formatEmptyDataToNull,exports.formatResponseDatesToDayJS=o.formatResponseDatesToDayJS,exports.formatResponseOnlyDatesToDayJS=o.formatResponseOnlyDatesToDayJS,exports.formatTimeForPayload=o.formatTimeForPayload,exports.generateAndFormatStringFromObj=o.generateAndFormatStringFromObj,exports.generateFields=o.generateFields,exports.generateQueryString=o.generateQueryString,exports.generateRandomId=o.generateRandomId,exports.getAccessibleModules=o.getAccessibleModules,exports.getCountryIdByName=o.getCountryIdByName,exports.getErrorMessage=o.getErrorMessage,exports.getExcelExportTemplate=o.getExcelExportTemplate,exports.getExcelTemplateGenerateTemplate=o.getExcelTemplateGenerateTemplate,exports.getFieldFilters=o.getFieldFilters,exports.getFileName=o.getFileName,exports.getLabelValuePairs=o.getLabelValuePairs,exports.getName=o.getName,exports.getNestedValue=o.getNestedValue,exports.getNextScheduleDate=o.getNextScheduleDate,exports.getOperatorLabel=o.getOperatorLabel,exports.getOptionsData=o.getOptionsData,exports.getPartyDependentData=o.getPartyDependentData,exports.getPartyName=o.getPartyName,exports.getSlicedValue=o.getSlicedValue,exports.getTaxAmountDataFromMultipleTaxCodes=o.getTaxAmountDataFromMultipleTaxCodes,exports.getTaxAmountFromMultipleTaxCodes=o.getTaxAmountFromMultipleTaxCodes,exports.getToken=o.getToken,exports.handleRegularUpload=o.handleRegularUpload,exports.hasValue=o.hasValue,exports.isBetweenTheDates=o.isBetweenTheDates,exports.isJSONString=o.isJSONString,exports.isJsonParse=o.isJsonParse,exports.manageItems=o.manageItems,exports.mapApiPayload=o.mapApiPayload,exports.mapAsyncApiPayload=o.mapAsyncApiPayload,exports.matchedMaterialCostingTypeLabel=o.matchedMaterialCostingTypeLabel,exports.omitDataKeys=o.omitDataKeys,exports.partyDuplicateCheck=o.partyDuplicateCheck,exports.partyEmailIds=o.partyEmailIds,exports.postImportSheet=o.postImportSheet,exports.remainingMaterialCostingTypes=o.remainingMaterialCostingTypes,exports.removeIdFromObject=o.removeIdFromObject,exports.removeIdStaticIdsFromMongoObject=o.removeIdStaticIdsFromMongoObject,exports.setRateBasedOnPriceRules=o.setRateBasedOnPriceRules,exports.showSnackBar=o.showSnackBar,exports.skuGenerator=o.skuGenerator,exports.toFixedWithNumbers=o.toFixedWithNumbers,exports.updateFieldsDisabledState=o.updateFieldsDisabledState,exports.uploadAttachments=o.uploadAttachments,exports.uploadFiles=o.uploadFiles,exports.validateDiscountValidity=o.validateDiscountValidity,exports.INVENTORY_ADD_MODE_DISABLED_FIELDS=s.INVENTORY_ADD_MODE_DISABLED_FIELDS,exports.INVENTORY_ALWAYS_DISABLED_FIELDS=s.INVENTORY_ALWAYS_DISABLED_FIELDS,exports.INVENTORY_EDIT_MODE_DISABLED_FIELDS=s.INVENTORY_EDIT_MODE_DISABLED_FIELDS,exports.INVENTORY_FIELDS_TO_BE_DISABLED=s.INVENTORY_FIELDS_TO_BE_DISABLED,exports.INVENTORY_MATERIAL_COSTING_TYPE_ARR=s.INVENTORY_MATERIAL_COSTING_TYPE_ARR,exports.INVENTORY_MATERIAL_COSTING_TYPE_OPTIONS=s.INVENTORY_MATERIAL_COSTING_TYPE_OPTIONS,exports.INVENTORY_VARIANT_DISABLED_FIELDS=s.INVENTORY_VARIANT_DISABLED_FIELDS,exports.SECTION_TYPES=s.SECTION_TYPES,exports.responseItemDetailsColumns=s.responseItemDetailsColumns,exports.getCountry=i.getCountry,exports.UTCDateFormat=n.UTCDateFormat,exports.formatDataTime=n.formatDataTime,exports.formatDate=n.formatDate,exports.formatOnlyTime=n.formatOnlyTime,exports.formatUtcDate=n.formatUtcDate,exports.getMinutesFromTime=n.getMinutesFromTime,exports.getTimeFromMinutes=n.getTimeFromMinutes,exports.RANGE=p.RANGE,exports.handleCompareDateRange=p.handleCompareDateRange,exports.handleCompareDateRangeSync=p.handleCompareDateRangeSync,exports.COMMON_DATE_VALIDATIONS=l.COMMON_DATE_VALIDATIONS,exports.anyDateValidation=l.anyDateValidation,exports.businessDateValidation=l.businessDateValidation,exports.conditionalDateValidation=l.conditionalDateValidation,exports.createCustomMessages=l.createCustomMessages,exports.createDateValidation=l.createDateValidation,exports.dateRangeValidation=l.dateRangeValidation,exports.dateTimeValidation=l.dateTimeValidation,exports.dateValidation=l.dateValidation,exports.futureDateValidation=l.futureDateValidation,exports.pastDateValidation=l.pastDateValidation,exports.specificFilters=d.specificFilters,exports.subModuleMappings=d.subModuleMappings,exports.convertTableColumns=x.convertTableColumns,exports.formBuilderDeConversion=x.default,exports.convertToUnderscore=u.convertToUnderscore,exports.formatLabel=u.formatLabel,exports.fetchLanguages=m.fetchLanguages,exports.createParameterizedNavigationHandler=c.createParameterizedNavigationHandler,exports.migrateRoutesToUseParams=c.migrateRoutesToUseParams,exports.migrateToPathWithId=c.migrateToPathWithId,exports.updateTableConfigForParameterizedNavigation=c.updateTableConfigForParameterizedNavigation,exports.getEntityId=g.getEntityId,exports.navigateWithId=g.navigateWithId,exports.convertRoutesToUseIdParams=D.convertRoutesToUseIdParams,exports.generateRouteWithId=D.generateRouteWithId,exports.navigateToRouteWithId=D.navigateToRouteWithId,exports.updatePathnameWithIdParams=D.updatePathnameWithIdParams,exports.loadModuleTranslations=I.loadModuleTranslations,Object.defineProperty(exports,"dayjs",{enumerable:!0,get:function(){return N.default}}),exports.MenuFilter=f.MenuFilter,exports.MenuFilterService=f.MenuFilterService,exports.ModuleAccessService=f.ModuleAccessService,exports.StorageUtils=f.StorageUtils,Object.defineProperty(exports,"closeSnackbar",{enumerable:!0,get:function(){return E.closeSnackbar}}),Object.defineProperty(exports,"enqueueSnackbar",{enumerable:!0,get:function(){return E.enqueueSnackbar}}),exports.useSnackbar=E.useSnackbar,exports.setRoleURL=S.setBaseUrl,exports.setDriveURL=A.setBaseUrl,exports.setSystemFeatureURL=F.setBaseUrl,Object.keys(y).forEach(function(e){"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return y[e]}})});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./api/index.js"),t=require("./calculation/index.js"),a=require("./color/index.js"),r=require("./common-utility/index.js"),o=require("./common/index.js"),s=require("./constant/index.js"),i=require("./country/index.js"),n=require("./dateFormat/index.js"),p=require("./date-range/index.js"),l=require("./dateValidation/index.js"),d=require("./export-filters/index.js"),x=require("./form-builder-deconversion/index.js"),u=require("./format-text/index.js"),m=require("./language/index.js"),c=require("./migration-utils/index.js"),g=require("./navigation-utils/index.js"),D=require("./route-utils/index.js"),T=require("./translations/index.js"),I=require("dayjs"),y=require("react-i18next"),f=require("./menu-filter/index.js"),E=require("../node_modules/notistack/notistack.esm/index.js"),S=require("../api-client/api.rbac/api/index.js"),A=require("../api-client/api.drive/api/index.js"),F=require("../api-client/api.system-feature/api/index.js");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var N=/* @__PURE__ */h(I);exports.apiConfigurations=e.apiConfigurations,exports.fetchApi=e.fetchApi,exports.getCurrency=e.getCurrency,exports.getItems=e.getItems,exports.getOptions=e.getOptions,exports.calculateEntries=t.calculateEntries,exports.blue=a.blue,exports.error=a.error,exports.green=a.green,exports.lightGreen=a.lightGreen,exports.magenta=a.magenta,exports.neutral=a.neutral,exports.olive=a.olive,exports.primaryGreen=a.primaryGreen,exports.red=a.red,exports.getFileNamesFromUrls=r.getFileNamesFromUrls,exports.getFileNamesFromUrlsAsLink=r.getFileNamesFromUrlsAsLink,exports.renderEmptyRowsFallback=r.renderEmptyRowsFallback,exports.renderValueField=r.renderValueField,exports.transformTableColumns=r.transformTableColumns,exports.InvoiceStatus=o.InvoiceStatus,exports.addOrEditArray=o.addOrEditArray,exports.appendConditionSafely=o.appendConditionSafely,exports.calculateAmountData=o.calculateAmountData,exports.calculatePeriods=o.calculatePeriods,exports.checkDuplicateTracking=o.checkDuplicateTracking,exports.checkForDuplicate=o.checkForDuplicate,exports.checkSkuAndItemName=o.checkSkuAndItemName,exports.createdOnAndBy=o.createdOnAndBy,exports.defaultCompany=o.defaultCompany,exports.defaultCurrencyFormat=o.defaultCurrencyFormat,exports.defaultCurrencySymbol=o.defaultCurrencySymbol,exports.displayPhone=o.displayPhone,exports.downloadDoc=o.downloadDoc,exports.downloadFile=o.downloadFile,exports.fetchAssemblyItemData=o.fetchAssemblyItemData,exports.fetchCompanyLocations=o.fetchCompanyLocations,exports.fetchExchageRate=o.fetchExchageRate,exports.fetchItems=o.fetchItems,exports.fetchOptions=o.fetchOptions,exports.fetchRentalResponseItems=o.fetchRentalResponseItems,exports.fetchRfqItemsByIdForResponse=o.fetchRfqItemsByIdForResponse,exports.filterAccessibleModules=o.filterAccessibleModules,exports.filterCoaByCompanyIdOrNull=o.filterCoaByCompanyIdOrNull,exports.findById=o.findById,exports.formatAmount=o.formatAmount,exports.formatAmountWithCurrency=o.formatAmountWithCurrency,exports.formatAmountWithCurrencyData=o.formatAmountWithCurrencyData,exports.formatDateForPayload=o.formatDateForPayload,exports.formatDateTimeForPayload=o.formatDateTimeForPayload,exports.formatEmptyDataToNull=o.formatEmptyDataToNull,exports.formatResponseDatesToDayJS=o.formatResponseDatesToDayJS,exports.formatResponseOnlyDatesToDayJS=o.formatResponseOnlyDatesToDayJS,exports.formatTimeForPayload=o.formatTimeForPayload,exports.generateAndFormatStringFromObj=o.generateAndFormatStringFromObj,exports.generateFields=o.generateFields,exports.generateQueryString=o.generateQueryString,exports.generateRandomId=o.generateRandomId,exports.getAccessibleModules=o.getAccessibleModules,exports.getCountryIdByName=o.getCountryIdByName,exports.getErrorMessage=o.getErrorMessage,exports.getExcelExportTemplate=o.getExcelExportTemplate,exports.getExcelTemplateGenerateTemplate=o.getExcelTemplateGenerateTemplate,exports.getFieldFilters=o.getFieldFilters,exports.getFileName=o.getFileName,exports.getLabelValuePairs=o.getLabelValuePairs,exports.getName=o.getName,exports.getNestedValue=o.getNestedValue,exports.getNextScheduleDate=o.getNextScheduleDate,exports.getOperatorLabel=o.getOperatorLabel,exports.getOptionsData=o.getOptionsData,exports.getPartyDependentData=o.getPartyDependentData,exports.getPartyName=o.getPartyName,exports.getSlicedValue=o.getSlicedValue,exports.getTaxAmountDataFromMultipleTaxCodes=o.getTaxAmountDataFromMultipleTaxCodes,exports.getTaxAmountFromMultipleTaxCodes=o.getTaxAmountFromMultipleTaxCodes,exports.getToken=o.getToken,exports.handleRegularUpload=o.handleRegularUpload,exports.hasValue=o.hasValue,exports.isBetweenTheDates=o.isBetweenTheDates,exports.isJSONString=o.isJSONString,exports.isJsonParse=o.isJsonParse,exports.manageItems=o.manageItems,exports.mapApiPayload=o.mapApiPayload,exports.mapAsyncApiPayload=o.mapAsyncApiPayload,exports.matchedMaterialCostingTypeLabel=o.matchedMaterialCostingTypeLabel,exports.omitDataKeys=o.omitDataKeys,exports.partyDuplicateCheck=o.partyDuplicateCheck,exports.partyEmailIds=o.partyEmailIds,exports.postImportSheet=o.postImportSheet,exports.remainingMaterialCostingTypes=o.remainingMaterialCostingTypes,exports.removeIdFromObject=o.removeIdFromObject,exports.removeIdStaticIdsFromMongoObject=o.removeIdStaticIdsFromMongoObject,exports.setRateBasedOnPriceRules=o.setRateBasedOnPriceRules,exports.showSnackBar=o.showSnackBar,exports.skuGenerator=o.skuGenerator,exports.toFixedWithNumbers=o.toFixedWithNumbers,exports.updateFieldsDisabledState=o.updateFieldsDisabledState,exports.uploadAttachments=o.uploadAttachments,exports.uploadFiles=o.uploadFiles,exports.validateDiscountValidity=o.validateDiscountValidity,exports.INVENTORY_ADD_MODE_DISABLED_FIELDS=s.INVENTORY_ADD_MODE_DISABLED_FIELDS,exports.INVENTORY_ALWAYS_DISABLED_FIELDS=s.INVENTORY_ALWAYS_DISABLED_FIELDS,exports.INVENTORY_EDIT_MODE_DISABLED_FIELDS=s.INVENTORY_EDIT_MODE_DISABLED_FIELDS,exports.INVENTORY_FIELDS_TO_BE_DISABLED=s.INVENTORY_FIELDS_TO_BE_DISABLED,exports.INVENTORY_MATERIAL_COSTING_TYPE_ARR=s.INVENTORY_MATERIAL_COSTING_TYPE_ARR,exports.INVENTORY_MATERIAL_COSTING_TYPE_OPTIONS=s.INVENTORY_MATERIAL_COSTING_TYPE_OPTIONS,exports.INVENTORY_VARIANT_DISABLED_FIELDS=s.INVENTORY_VARIANT_DISABLED_FIELDS,exports.SECTION_TYPES=s.SECTION_TYPES,exports.responseItemDetailsColumns=s.responseItemDetailsColumns,exports.getCountry=i.getCountry,exports.UTCDateFormat=n.UTCDateFormat,exports.formatDataTime=n.formatDataTime,exports.formatDate=n.formatDate,exports.formatOnlyTime=n.formatOnlyTime,exports.formatUtcDate=n.formatUtcDate,exports.getMinutesFromTime=n.getMinutesFromTime,exports.getTimeFromMinutes=n.getTimeFromMinutes,exports.RANGE=p.RANGE,exports.handleCompareDateRange=p.handleCompareDateRange,exports.handleCompareDateRangeSync=p.handleCompareDateRangeSync,exports.COMMON_DATE_VALIDATIONS=l.COMMON_DATE_VALIDATIONS,exports.anyDateValidation=l.anyDateValidation,exports.businessDateValidation=l.businessDateValidation,exports.conditionalDateValidation=l.conditionalDateValidation,exports.createCustomMessages=l.createCustomMessages,exports.createDateValidation=l.createDateValidation,exports.dateRangeValidation=l.dateRangeValidation,exports.dateTimeValidation=l.dateTimeValidation,exports.dateValidation=l.dateValidation,exports.futureDateValidation=l.futureDateValidation,exports.pastDateValidation=l.pastDateValidation,exports.specificFilters=d.specificFilters,exports.subModuleMappings=d.subModuleMappings,exports.convertTableColumns=x.convertTableColumns,exports.formBuilderDeConversion=x.default,exports.convertToUnderscore=u.convertToUnderscore,exports.formatLabel=u.formatLabel,exports.formatText=u.default,exports.fetchLanguages=m.fetchLanguages,exports.createParameterizedNavigationHandler=c.createParameterizedNavigationHandler,exports.migrateRoutesToUseParams=c.migrateRoutesToUseParams,exports.migrateToPathWithId=c.migrateToPathWithId,exports.updateTableConfigForParameterizedNavigation=c.updateTableConfigForParameterizedNavigation,exports.getEntityId=g.getEntityId,exports.navigateWithId=g.navigateWithId,exports.convertRoutesToUseIdParams=D.convertRoutesToUseIdParams,exports.generateRouteWithId=D.generateRouteWithId,exports.navigateToRouteWithId=D.navigateToRouteWithId,exports.updatePathnameWithIdParams=D.updatePathnameWithIdParams,exports.loadModuleTranslations=T.loadModuleTranslations,Object.defineProperty(exports,"dayjs",{enumerable:!0,get:function(){return N.default}}),exports.MenuFilter=f.MenuFilter,exports.MenuFilterService=f.MenuFilterService,exports.ModuleAccessService=f.ModuleAccessService,exports.StorageUtils=f.StorageUtils,Object.defineProperty(exports,"closeSnackbar",{enumerable:!0,get:function(){return E.closeSnackbar}}),Object.defineProperty(exports,"enqueueSnackbar",{enumerable:!0,get:function(){return E.enqueueSnackbar}}),exports.useSnackbar=E.useSnackbar,exports.setRoleURL=S.setBaseUrl,exports.setDriveURL=A.setBaseUrl,exports.setSystemFeatureURL=F.setBaseUrl,Object.keys(y).forEach(function(e){"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return y[e]}})});
2
2
  //# sourceMappingURL=index.js.map
@@ -26,7 +26,7 @@ import AccordionDetails from "../../../../node_modules/@mui/material/AccordionDe
26
26
  import ListItemIcon from "../../../../node_modules/@mui/material/ListItemIcon/ListItemIcon/index.esm.js";
27
27
  import ListItemText from "../../../../node_modules/@mui/material/ListItemText/ListItemText/index.esm.js";
28
28
  import ListItem from "../../../../node_modules/@mui/material/ListItem/ListItem/index.esm.js";
29
- setBaseUrl(`${"http://127.0.0.1:4011"}/document`);
29
+ setBaseUrl(`${"https://apidev.erpforce.co"}/document`);
30
30
  const StyledListItem = styled(ListItem)(({ theme }) => ({
31
31
  padding: theme.spacing(1.5),
32
32
  cursor: "grab",
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../../../src/views/template-editor/components/EditorSidebar.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable unused-imports/no-unused-vars */\r\nimport React, { useState, useCallback, useEffect } from 'react';\r\nimport { useDraggable } from '@dnd-kit/core';\r\nimport { useDropzone } from 'react-dropzone';\r\nimport {\r\n Box,\r\n Divider,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n Grid,\r\n Accordion,\r\n AccordionSummary,\r\n AccordionDetails,\r\n Typography,\r\n CircularProgress,\r\n Alert,\r\n} from '@mui/material';\r\nimport {\r\n Heading,\r\n Text as TextIcon,\r\n Image as ImageIcon,\r\n Table as TableIcon,\r\n Blocks as SignatureIcon,\r\n QrCode as QrCodeIcon,\r\n Barcode as BarcodeIcon,\r\n} from 'lucide-react';\r\nimport { styled } from '@mui/material/styles';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport { getV1Drive, postV1Drive, setBaseUrl as setDriveUrl } from '../../../api-client/api.drive/api';\r\nimport SearchBar from '../../../components/search-bar/search-bar';\r\nimport { getToken, uploadFiles } from '../../../utils/common';\r\n\r\nsetDriveUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/document`);\r\n\r\nconst StyledListItem = styled(ListItem)(({ theme }) => ({\r\n padding: theme.spacing(1.5),\r\n cursor: 'grab',\r\n borderRadius: theme.shape.borderRadius,\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[100],\r\n },\r\n '&.dragging': {\r\n opacity: 0.5,\r\n },\r\n}));\r\n\r\nconst DropzoneBox = styled(Box)(({ theme }) => ({\r\n border: `2px dashed ${theme.palette.grey[400]}`,\r\n borderRadius: theme.shape.borderRadius,\r\n padding: theme.spacing(2),\r\n textAlign: 'center',\r\n backgroundColor: theme.palette.grey[50],\r\n cursor: 'pointer',\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[100],\r\n },\r\n}));\r\n\r\nconst SidebarItem = ({ id, icon, label, imageUrl }: { id: string; icon?: React.ReactElement; label: string; imageUrl?: string }) => {\r\n // Extract the element type from the sidebar item id\r\n const elementType = typeof id === 'string' ? id.replace('sidebar-', '') : id;\r\n \r\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\r\n id,\r\n data: {\r\n // Pass the correct type based on the id\r\n type: imageUrl ? 'image' : elementType,\r\n imageUrl,\r\n label,\r\n },\r\n });\r\n \r\n return (\r\n <StyledListItem\r\n ref={setNodeRef}\r\n {...listeners}\r\n {...attributes}\r\n className={isDragging ? 'dragging' : ''}\r\n sx={{ border: '1px solid', borderColor: 'grey.200', p: 0.75 }}\r\n >\r\n {imageUrl ? (\r\n <img\r\n src={imageUrl}\r\n alt={label}\r\n style={{ width: '100%', height: 140, objectFit: 'cover', marginRight: 8 }}\r\n />\r\n ) : (\r\n <>\r\n <ListItemIcon sx={{ minWidth: 40 }}>{icon}</ListItemIcon>\r\n <ListItemText primary={label} primaryTypographyProps={{ variant: 'body2' }} />\r\n </>\r\n )}\r\n </StyledListItem>\r\n );\r\n};\r\n\r\nconst EditorSidebar = () => {\r\n const [expanded, setExpanded] = useState('text');\r\n const [uploadedImages, setUploadedImages] = useState([]);\r\n const [uploading, setUploading] = useState(false);\r\n const [error, setError] = useState(null);\r\n\r\n const handleChange = (panel) => (event, isExpanded) => {\r\n setExpanded(isExpanded ? panel : false);\r\n };\r\n\r\n const onDrop = useCallback(async (acceptedFiles) => {\r\n setUploading(true);\r\n setError(null);\r\n try {\r\n for (const file of acceptedFiles) {\r\n const uFiles = await uploadFiles([file], \"document\");\r\n const token = getToken();\r\n const payload = {\r\n ...token,\r\n \"x-timezone\": String(token[\"x-timezone\"] || \"\"),\r\n \"title\": file?.name.split(\".\")[0],\r\n \"path\": \"/\",\r\n \"is_private\": true,\r\n \"is_directory\": false,\r\n \"file_size\": file.size,\r\n \"is_child\": false,\r\n \"file_extension\": file?.name.split(\".\")[1],\r\n \"type\": \"image\",\r\n \"mime_type\": file.type,\r\n \"url\": `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`\r\n }\r\n // Replace with your actual API endpoint\r\n await postV1Drive(payload);\r\n\r\n setUploadedImages((prev) => [\r\n ...prev,\r\n {\r\n id: `uploaded-image-${Date.now()}-${Math.random()}`,\r\n url: `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`, // Assume API returns imageUrl\r\n name: file.name,\r\n },\r\n ]);\r\n }\r\n } catch (err) {\r\n setError('Failed to upload image. Please try again.');\r\n } finally {\r\n setUploading(false);\r\n }\r\n }, []);\r\n\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDrop,\r\n accept: { 'image/*': ['.jpeg', '.png', '.jpg', '.gif'] },\r\n multiple: true,\r\n });\r\n\r\n const sections = [\r\n {\r\n id: 'text',\r\n icon: <TextIcon size={18} />,\r\n label: 'Text',\r\n content: (\r\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: 1 }}>\r\n <SidebarItem id=\"sidebar-heading\" icon={<Heading size={20} />} label=\"Heading 1\" />\r\n <SidebarItem id=\"sidebar-heading-2\" icon={<Heading size={18} />} label=\"Heading 2\" />\r\n <SidebarItem id=\"sidebar-heading-3\" icon={<Heading size={16} />} label=\"Heading 3\" />\r\n <SidebarItem id=\"sidebar-heading-4\" icon={<Heading size={14} />} label=\"Heading 4\" />\r\n <SidebarItem id=\"sidebar-text\" icon={<TextIcon size={20} />} label=\"Body\" />\r\n <SidebarItem id=\"sidebar-text-block\" icon={<TextIcon size={20} />} label=\"Text Block\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'images',\r\n icon: <ImageIcon size={18} />,\r\n label: 'Images',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <Box sx={{ mt: 2 }}>\r\n <DropzoneBox {...getRootProps()}>\r\n <input {...getInputProps()} />\r\n {isDragActive ? (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n Drop the images here...\r\n </Typography>\r\n ) : (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n Drag and drop images here, or click to select\r\n </Typography>\r\n )}\r\n {uploading && (\r\n <Box sx={{ mt: 1 }}>\r\n <CircularProgress size={20} />\r\n </Box>\r\n )}\r\n </DropzoneBox>\r\n {error && (\r\n <Alert severity=\"error\" sx={{ mt: 2 }}>\r\n {error}\r\n </Alert>\r\n )}\r\n {uploadedImages.length > 0 && (\r\n <Box sx={{ mt: 2 }}>\r\n <Typography variant=\"body2\" sx={{ mb: 1, color: 'grey.500' }}>\r\n Uploaded Images\r\n </Typography>\r\n <Grid container spacing={1}>\r\n {uploadedImages.map((image) => (\r\n <Grid item xs={6} key={image.id}>\r\n <SidebarItem\r\n id={image.id}\r\n label={image.name}\r\n imageUrl={image.url}\r\n />\r\n </Grid>\r\n ))}\r\n </Grid>\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'buttons',\r\n icon: (\r\n <Box\r\n sx={{\r\n width: 16,\r\n height: 16,\r\n bgcolor: 'grey.400',\r\n borderRadius: 1,\r\n color: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '8px',\r\n }}\r\n >\r\n BTN\r\n </Box>\r\n ),\r\n label: 'Buttons',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem\r\n id=\"sidebar-buttons\"\r\n icon={\r\n <Box\r\n sx={{\r\n width: 20,\r\n height: 20,\r\n bgcolor: 'success.main',\r\n borderRadius: 1,\r\n color: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '10px',\r\n }}\r\n >\r\n BTN\r\n </Box>\r\n }\r\n label=\"Buttons\"\r\n />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'divider',\r\n icon: <Divider sx={{ width: 18 }} />,\r\n label: 'Divider',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-divider\" icon={<Divider sx={{ width: 20 }} />} label=\"Divider\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'table',\r\n icon: <TableIcon size={18} />,\r\n label: 'Table',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-table\" icon={<TableIcon size={20} />} label=\"Table\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'signature',\r\n icon: <SignatureIcon size={18} />,\r\n label: 'Signature',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-signature\" icon={<SignatureIcon size={20} />} label=\"Signature\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'qr-code',\r\n icon: <QrCodeIcon size={18} />,\r\n label: 'QR Code',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-qr-code\" icon={<QrCodeIcon size={20} />} label=\"QR Code\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'bar-code',\r\n icon: <BarcodeIcon size={18} />,\r\n label: 'Bar Code',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-bar-code\" icon={<BarcodeIcon size={20} />} label=\"Bar Code\" />\r\n </Box>\r\n ),\r\n },\r\n ];\r\n\r\n const getDriveFiles = async () => {\r\n try {\r\n const token = getToken();\r\n const response = await getV1Drive({\r\n ...token,\r\n \"x-timezone\": String(token[\"x-timezone\"] || \"\"),\r\n skip: 0,\r\n limit: 10,\r\n filters: `(is_directory.eq=0)`\r\n });\r\n // Check if response is successful and has data\r\n if ('data' in response && response.data && typeof response.data === 'object' && 'drive' in response.data) {\r\n const files = (response.data as any).drive || [];\r\n setUploadedImages(files);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getDriveFiles()\r\n }, [])\r\n\r\n return (\r\n <Box\r\n sx={{\r\n bgcolor: 'background.paper',\r\n borderRight: 1,\r\n borderColor: 'grey.200',\r\n width: 390,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: 'calc(100vh - 104px)',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.05)',\r\n fontFamily: 'Inter, system-ui, Avenir, Helvetica, Arial, sans-serif',\r\n }}\r\n >\r\n <Box sx={{ p: 2, borderBottom: 1, borderColor: 'grey.200' }}>\r\n <SearchBar \r\n handleSearch={(key) => console.log('Search:', key)}\r\n sx={{ backgroundColor: \"#fff !important\", border: \"1px solid grey\" }}\r\n />\r\n </Box>\r\n <Box sx={{ flexGrow: 1, overflowY: 'auto', p: 1 }}>\r\n {sections.map((section) => (\r\n <Accordion\r\n key={section.id}\r\n expanded={expanded === section.id}\r\n onChange={handleChange(section.id)}\r\n sx={{\r\n border: 'none',\r\n boxShadow: 'none',\r\n backgroundColor: 'transparent',\r\n '&:before': { display: 'none' },\r\n marginBottom: 1,\r\n }}\r\n >\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon sx={{ color: 'grey.600' }} />}\r\n sx={{\r\n borderRadius: '8px',\r\n padding: '0 12px',\r\n backgroundColor: expanded === section.id ? 'grey.200' : 'grey.50',\r\n '&:hover': {\r\n backgroundColor: 'grey.50',\r\n },\r\n transition: 'background-color 0.2s ease',\r\n minHeight: 42,\r\n '& .MuiAccordionSummary-content': {\r\n alignItems: 'center',\r\n margin: '8px 0',\r\n },\r\n '&.Mui-expanded': {\r\n minHeight: 42,\r\n },\r\n }}\r\n >\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\r\n {section.icon}\r\n <Typography\r\n variant=\"body2\"\r\n sx={{ fontWeight: 500, color: 'text.primary' }}\r\n >\r\n {section.label}\r\n </Typography>\r\n </Box>\r\n </AccordionSummary>\r\n <AccordionDetails sx={{ padding: '8px 16px' }}>\r\n {section.content}\r\n </AccordionDetails>\r\n </Accordion>\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default EditorSidebar;"],"names":["setDriveUrl","TextIcon","ImageIcon","TableIcon","SignatureIcon","QrCodeIcon","BarcodeIcon","error","ExpandMoreIcon"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../../src/views/template-editor/components/EditorSidebar.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable unused-imports/no-unused-vars */\r\nimport React, { useState, useCallback, useEffect } from 'react';\r\nimport { useDraggable } from '@dnd-kit/core';\r\nimport { useDropzone } from 'react-dropzone';\r\nimport {\r\n Box,\r\n Divider,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n Grid,\r\n Accordion,\r\n AccordionSummary,\r\n AccordionDetails,\r\n Typography,\r\n CircularProgress,\r\n Alert,\r\n} from '@mui/material';\r\nimport {\r\n Heading,\r\n Text as TextIcon,\r\n Image as ImageIcon,\r\n Table as TableIcon,\r\n Blocks as SignatureIcon,\r\n QrCode as QrCodeIcon,\r\n Barcode as BarcodeIcon,\r\n} from 'lucide-react';\r\nimport { styled } from '@mui/material/styles';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport { getV1Drive, postV1Drive, setBaseUrl as setDriveUrl } from '../../../api-client/api.drive/api';\r\nimport SearchBar from '../../../components/search-bar/search-bar';\r\nimport { getToken, uploadFiles } from '../../../utils/common';\r\n\r\nsetDriveUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/document`);\r\n\r\nconst StyledListItem = styled(ListItem)(({ theme }) => ({\r\n padding: theme.spacing(1.5),\r\n cursor: 'grab',\r\n borderRadius: theme.shape.borderRadius,\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[100],\r\n },\r\n '&.dragging': {\r\n opacity: 0.5,\r\n },\r\n}));\r\n\r\nconst DropzoneBox = styled(Box)(({ theme }) => ({\r\n border: `2px dashed ${theme.palette.grey[400]}`,\r\n borderRadius: theme.shape.borderRadius,\r\n padding: theme.spacing(2),\r\n textAlign: 'center',\r\n backgroundColor: theme.palette.grey[50],\r\n cursor: 'pointer',\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[100],\r\n },\r\n}));\r\n\r\nconst SidebarItem = ({ id, icon, label, imageUrl }: { id: string; icon?: React.ReactElement; label: string; imageUrl?: string }) => {\r\n // Extract the element type from the sidebar item id\r\n const elementType = typeof id === 'string' ? id.replace('sidebar-', '') : id;\r\n \r\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\r\n id,\r\n data: {\r\n // Pass the correct type based on the id\r\n type: imageUrl ? 'image' : elementType,\r\n imageUrl,\r\n label,\r\n },\r\n });\r\n \r\n return (\r\n <StyledListItem\r\n ref={setNodeRef}\r\n {...listeners}\r\n {...attributes}\r\n className={isDragging ? 'dragging' : ''}\r\n sx={{ border: '1px solid', borderColor: 'grey.200', p: 0.75 }}\r\n >\r\n {imageUrl ? (\r\n <img\r\n src={imageUrl}\r\n alt={label}\r\n style={{ width: '100%', height: 140, objectFit: 'cover', marginRight: 8 }}\r\n />\r\n ) : (\r\n <>\r\n <ListItemIcon sx={{ minWidth: 40 }}>{icon}</ListItemIcon>\r\n <ListItemText primary={label} primaryTypographyProps={{ variant: 'body2' }} />\r\n </>\r\n )}\r\n </StyledListItem>\r\n );\r\n};\r\n\r\nconst EditorSidebar = () => {\r\n const [expanded, setExpanded] = useState('text');\r\n const [uploadedImages, setUploadedImages] = useState([]);\r\n const [uploading, setUploading] = useState(false);\r\n const [error, setError] = useState(null);\r\n\r\n const handleChange = (panel) => (event, isExpanded) => {\r\n setExpanded(isExpanded ? panel : false);\r\n };\r\n\r\n const onDrop = useCallback(async (acceptedFiles) => {\r\n setUploading(true);\r\n setError(null);\r\n try {\r\n for (const file of acceptedFiles) {\r\n const uFiles = await uploadFiles([file], \"document\");\r\n const token = getToken();\r\n const payload = {\r\n ...token,\r\n \"x-timezone\": String(token[\"x-timezone\"] || \"\"),\r\n \"title\": file?.name.split(\".\")[0],\r\n \"path\": \"/\",\r\n \"is_private\": true,\r\n \"is_directory\": false,\r\n \"file_size\": file.size,\r\n \"is_child\": false,\r\n \"file_extension\": file?.name.split(\".\")[1],\r\n \"type\": \"image\",\r\n \"mime_type\": file.type,\r\n \"url\": `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`\r\n }\r\n // Replace with your actual API endpoint\r\n await postV1Drive(payload);\r\n\r\n setUploadedImages((prev) => [\r\n ...prev,\r\n {\r\n id: `uploaded-image-${Date.now()}-${Math.random()}`,\r\n url: `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`, // Assume API returns imageUrl\r\n name: file.name,\r\n },\r\n ]);\r\n }\r\n } catch (err) {\r\n setError('Failed to upload image. Please try again.');\r\n } finally {\r\n setUploading(false);\r\n }\r\n }, []);\r\n\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDrop,\r\n accept: { 'image/*': ['.jpeg', '.png', '.jpg', '.gif'] },\r\n multiple: true,\r\n });\r\n\r\n const sections = [\r\n {\r\n id: 'text',\r\n icon: <TextIcon size={18} />,\r\n label: 'Text',\r\n content: (\r\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: 1 }}>\r\n <SidebarItem id=\"sidebar-heading\" icon={<Heading size={20} />} label=\"Heading 1\" />\r\n <SidebarItem id=\"sidebar-heading-2\" icon={<Heading size={18} />} label=\"Heading 2\" />\r\n <SidebarItem id=\"sidebar-heading-3\" icon={<Heading size={16} />} label=\"Heading 3\" />\r\n <SidebarItem id=\"sidebar-heading-4\" icon={<Heading size={14} />} label=\"Heading 4\" />\r\n <SidebarItem id=\"sidebar-text\" icon={<TextIcon size={20} />} label=\"Body\" />\r\n <SidebarItem id=\"sidebar-text-block\" icon={<TextIcon size={20} />} label=\"Text Block\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'images',\r\n icon: <ImageIcon size={18} />,\r\n label: 'Images',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <Box sx={{ mt: 2 }}>\r\n <DropzoneBox {...getRootProps()}>\r\n <input {...getInputProps()} />\r\n {isDragActive ? (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n Drop the images here...\r\n </Typography>\r\n ) : (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n Drag and drop images here, or click to select\r\n </Typography>\r\n )}\r\n {uploading && (\r\n <Box sx={{ mt: 1 }}>\r\n <CircularProgress size={20} />\r\n </Box>\r\n )}\r\n </DropzoneBox>\r\n {error && (\r\n <Alert severity=\"error\" sx={{ mt: 2 }}>\r\n {error}\r\n </Alert>\r\n )}\r\n {uploadedImages.length > 0 && (\r\n <Box sx={{ mt: 2 }}>\r\n <Typography variant=\"body2\" sx={{ mb: 1, color: 'grey.500' }}>\r\n Uploaded Images\r\n </Typography>\r\n <Grid container spacing={1}>\r\n {uploadedImages.map((image) => (\r\n <Grid item xs={6} key={image.id}>\r\n <SidebarItem\r\n id={image.id}\r\n label={image.name}\r\n imageUrl={image.url}\r\n />\r\n </Grid>\r\n ))}\r\n </Grid>\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'buttons',\r\n icon: (\r\n <Box\r\n sx={{\r\n width: 16,\r\n height: 16,\r\n bgcolor: 'grey.400',\r\n borderRadius: 1,\r\n color: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '8px',\r\n }}\r\n >\r\n BTN\r\n </Box>\r\n ),\r\n label: 'Buttons',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem\r\n id=\"sidebar-buttons\"\r\n icon={\r\n <Box\r\n sx={{\r\n width: 20,\r\n height: 20,\r\n bgcolor: 'success.main',\r\n borderRadius: 1,\r\n color: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '10px',\r\n }}\r\n >\r\n BTN\r\n </Box>\r\n }\r\n label=\"Buttons\"\r\n />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'divider',\r\n icon: <Divider sx={{ width: 18 }} />,\r\n label: 'Divider',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-divider\" icon={<Divider sx={{ width: 20 }} />} label=\"Divider\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'table',\r\n icon: <TableIcon size={18} />,\r\n label: 'Table',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-table\" icon={<TableIcon size={20} />} label=\"Table\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'signature',\r\n icon: <SignatureIcon size={18} />,\r\n label: 'Signature',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-signature\" icon={<SignatureIcon size={20} />} label=\"Signature\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'qr-code',\r\n icon: <QrCodeIcon size={18} />,\r\n label: 'QR Code',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-qr-code\" icon={<QrCodeIcon size={20} />} label=\"QR Code\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'bar-code',\r\n icon: <BarcodeIcon size={18} />,\r\n label: 'Bar Code',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-bar-code\" icon={<BarcodeIcon size={20} />} label=\"Bar Code\" />\r\n </Box>\r\n ),\r\n },\r\n ];\r\n\r\n const getDriveFiles = async () => {\r\n try {\r\n const token = getToken();\r\n const response = await getV1Drive({\r\n ...token,\r\n \"x-timezone\": String(token[\"x-timezone\"] || \"\"),\r\n skip: 0,\r\n limit: 10,\r\n filters: `(is_directory.eq=0)`\r\n });\r\n // Check if response is successful and has data\r\n if ('data' in response && response.data && typeof response.data === 'object' && 'drive' in response.data) {\r\n const files = (response.data as any).drive || [];\r\n setUploadedImages(files);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getDriveFiles()\r\n }, [])\r\n\r\n return (\r\n <Box\r\n sx={{\r\n bgcolor: 'background.paper',\r\n borderRight: 1,\r\n borderColor: 'grey.200',\r\n width: 390,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: 'calc(100vh - 104px)',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.05)',\r\n fontFamily: 'Inter, system-ui, Avenir, Helvetica, Arial, sans-serif',\r\n }}\r\n >\r\n <Box sx={{ p: 2, borderBottom: 1, borderColor: 'grey.200' }}>\r\n <SearchBar \r\n handleSearch={(key) => console.log('Search:', key)}\r\n sx={{ backgroundColor: \"#fff !important\", border: \"1px solid grey\" }}\r\n />\r\n </Box>\r\n <Box sx={{ flexGrow: 1, overflowY: 'auto', p: 1 }}>\r\n {sections.map((section) => (\r\n <Accordion\r\n key={section.id}\r\n expanded={expanded === section.id}\r\n onChange={handleChange(section.id)}\r\n sx={{\r\n border: 'none',\r\n boxShadow: 'none',\r\n backgroundColor: 'transparent',\r\n '&:before': { display: 'none' },\r\n marginBottom: 1,\r\n }}\r\n >\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon sx={{ color: 'grey.600' }} />}\r\n sx={{\r\n borderRadius: '8px',\r\n padding: '0 12px',\r\n backgroundColor: expanded === section.id ? 'grey.200' : 'grey.50',\r\n '&:hover': {\r\n backgroundColor: 'grey.50',\r\n },\r\n transition: 'background-color 0.2s ease',\r\n minHeight: 42,\r\n '& .MuiAccordionSummary-content': {\r\n alignItems: 'center',\r\n margin: '8px 0',\r\n },\r\n '&.Mui-expanded': {\r\n minHeight: 42,\r\n },\r\n }}\r\n >\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\r\n {section.icon}\r\n <Typography\r\n variant=\"body2\"\r\n sx={{ fontWeight: 500, color: 'text.primary' }}\r\n >\r\n {section.label}\r\n </Typography>\r\n </Box>\r\n </AccordionSummary>\r\n <AccordionDetails sx={{ padding: '8px 16px' }}>\r\n {section.content}\r\n </AccordionDetails>\r\n </Accordion>\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default EditorSidebar;"],"names":["setDriveUrl","TextIcon","ImageIcon","TableIcon","SignatureIcon","QrCodeIcon","BarcodeIcon","error","ExpandMoreIcon"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),i=require("react"),r=require("../../../../node_modules/@dnd-kit/core/dist/core.esm/index.js"),d=require("react-dropzone"),t=require("../../../../node_modules/@mui/icons-material/ExpandMore/index.js"),a=require("../../../../api-client/api.drive/api/index.js"),s=require("../../../../components/search-bar/search-bar/index.js"),o=require("../../../../utils/common/index.js"),l=require("../../../../node_modules/@mui/material/Box/Box/index.js"),n=require("../../../../node_modules/lucide-react/dist/esm/icons/heading/index.js"),c=require("../../../../node_modules/lucide-react/dist/esm/icons/text/index.js"),u=require("../../../../node_modules/@mui/material/styles/styled/index.js"),x=require("../../../../node_modules/@mui/material/Typography/Typography/index.js"),m=require("../../../../node_modules/@mui/material/CircularProgress/CircularProgress/index.js"),g=require("../../../../node_modules/@mui/material/Alert/Alert/index.js"),p=require("../../../../node_modules/@mui/material/Grid/Grid/index.js"),j=require("../../../../node_modules/lucide-react/dist/esm/icons/image/index.js"),b=require("../../../../node_modules/@mui/material/Divider/Divider/index.js"),f=require("../../../../node_modules/lucide-react/dist/esm/icons/table/index.js"),h=require("../../../../node_modules/lucide-react/dist/esm/icons/blocks/index.js"),y=require("../../../../node_modules/lucide-react/dist/esm/icons/qr-code/index.js"),v=require("../../../../node_modules/lucide-react/dist/esm/icons/barcode/index.js"),q=require("../../../../node_modules/@mui/material/Accordion/Accordion/index.js"),_=require("../../../../node_modules/@mui/material/AccordionSummary/AccordionSummary/index.js"),z=require("../../../../node_modules/@mui/material/AccordionDetails/AccordionDetails/index.js"),C=require("../../../../node_modules/@mui/material/ListItemIcon/ListItemIcon/index.js"),w=require("../../../../node_modules/@mui/material/ListItemText/ListItemText/index.js"),k=require("../../../../node_modules/@mui/material/ListItem/ListItem/index.js");a.setBaseUrl("http://127.0.0.1:4011/document");const D=u.default(k.default)(({theme:e})=>({padding:e.spacing(1.5),cursor:"grab",borderRadius:e.shape.borderRadius,"&:hover":{backgroundColor:e.palette.grey[100]},"&.dragging":{opacity:.5}})),I=u.default(l.default)(({theme:e})=>({border:`2px dashed ${e.palette.grey[400]}`,borderRadius:e.shape.borderRadius,padding:e.spacing(2),textAlign:"center",backgroundColor:e.palette.grey[50],cursor:"pointer","&:hover":{backgroundColor:e.palette.grey[100]}})),S=({id:i,icon:d,label:t,imageUrl:a})=>{const s="string"==typeof i?i.replace("sidebar-",""):i,{attributes:o,listeners:l,setNodeRef:n,isDragging:c}=r.useDraggable({id:i,data:{type:a?"image":s,imageUrl:a,label:t}});/* @__PURE__ */
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),i=require("react"),r=require("../../../../node_modules/@dnd-kit/core/dist/core.esm/index.js"),d=require("react-dropzone"),t=require("../../../../node_modules/@mui/icons-material/ExpandMore/index.js"),a=require("../../../../api-client/api.drive/api/index.js"),s=require("../../../../components/search-bar/search-bar/index.js"),o=require("../../../../utils/common/index.js"),l=require("../../../../node_modules/@mui/material/Box/Box/index.js"),n=require("../../../../node_modules/lucide-react/dist/esm/icons/heading/index.js"),c=require("../../../../node_modules/lucide-react/dist/esm/icons/text/index.js"),u=require("../../../../node_modules/@mui/material/styles/styled/index.js"),x=require("../../../../node_modules/@mui/material/Typography/Typography/index.js"),m=require("../../../../node_modules/@mui/material/CircularProgress/CircularProgress/index.js"),g=require("../../../../node_modules/@mui/material/Alert/Alert/index.js"),p=require("../../../../node_modules/@mui/material/Grid/Grid/index.js"),j=require("../../../../node_modules/lucide-react/dist/esm/icons/image/index.js"),b=require("../../../../node_modules/@mui/material/Divider/Divider/index.js"),f=require("../../../../node_modules/lucide-react/dist/esm/icons/table/index.js"),h=require("../../../../node_modules/lucide-react/dist/esm/icons/blocks/index.js"),y=require("../../../../node_modules/lucide-react/dist/esm/icons/qr-code/index.js"),v=require("../../../../node_modules/lucide-react/dist/esm/icons/barcode/index.js"),q=require("../../../../node_modules/@mui/material/Accordion/Accordion/index.js"),_=require("../../../../node_modules/@mui/material/AccordionSummary/AccordionSummary/index.js"),z=require("../../../../node_modules/@mui/material/AccordionDetails/AccordionDetails/index.js"),C=require("../../../../node_modules/@mui/material/ListItemIcon/ListItemIcon/index.js"),w=require("../../../../node_modules/@mui/material/ListItemText/ListItemText/index.js"),k=require("../../../../node_modules/@mui/material/ListItem/ListItem/index.js");a.setBaseUrl("https://apidev.erpforce.co/document");const D=u.default(k.default)(({theme:e})=>({padding:e.spacing(1.5),cursor:"grab",borderRadius:e.shape.borderRadius,"&:hover":{backgroundColor:e.palette.grey[100]},"&.dragging":{opacity:.5}})),I=u.default(l.default)(({theme:e})=>({border:`2px dashed ${e.palette.grey[400]}`,borderRadius:e.shape.borderRadius,padding:e.spacing(2),textAlign:"center",backgroundColor:e.palette.grey[50],cursor:"pointer","&:hover":{backgroundColor:e.palette.grey[100]}})),S=({id:i,icon:d,label:t,imageUrl:a})=>{const s="string"==typeof i?i.replace("sidebar-",""):i,{attributes:o,listeners:l,setNodeRef:n,isDragging:c}=r.useDraggable({id:i,data:{type:a?"image":s,imageUrl:a,label:t}});/* @__PURE__ */
2
2
  return e.jsx(D,{ref:n,...l,...o,className:c?"dragging":"",sx:{border:"1px solid",borderColor:"grey.200",p:.75},children:a?/* @__PURE__ */e.jsx("img",{src:a,alt:t,style:{width:"100%",height:140,objectFit:"cover",marginRight:8}}):/* @__PURE__ */e.jsxs(e.Fragment,{children:[
3
3
  /* @__PURE__ */e.jsx(C.default,{sx:{minWidth:40},children:d}),
4
4
  /* @__PURE__ */e.jsx(w.default,{primary:t,primaryTypographyProps:{variant:"body2"}})]})})};exports.default=()=>{const[r,u]=i.useState("text"),[C,w]=i.useState([]),[k,D]=i.useState(!1),[T,A]=i.useState(null),B=i.useCallback(async e=>{D(!0),A(null);try{for(const i of e){const e=await o.uploadFiles([i],"document"),r=o.getToken(),d={...r,"x-timezone":String(r["x-timezone"]||""),title:null==i?void 0:i.name.split(".")[0],path:"/",is_private:!0,is_directory:!1,file_size:i.size,is_child:!1,file_extension:null==i?void 0:i.name.split(".")[1],type:"image",mime_type:i.type,url:`https://erpforce-dev.s3.eu-west-1.amazonaws.com/${e[0]}`};await a.postV1Drive(d),w(r=>[...r,{id:`uploaded-image-${Date.now()}-${Math.random()}`,url:`https://erpforce-dev.s3.eu-west-1.amazonaws.com/${e[0]}`,name:i.name}])}}catch(i){A("Failed to upload image. Please try again.")}finally{D(!1)}},[]),{getRootProps:R,getInputProps:H,isDragActive:P}=d.useDropzone({onDrop:B,accept:{"image/*":[".jpeg",".png",".jpg",".gif"]},multiple:!0}),L=[{id:"text",icon:/* @__PURE__ */e.jsx(c.default,{size:18}),label:"Text",content:/* @__PURE__ */e.jsxs(l.default,{sx:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:1},children:[
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/views/template-editor/components/EditorSidebar.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable unused-imports/no-unused-vars */\r\nimport React, { useState, useCallback, useEffect } from 'react';\r\nimport { useDraggable } from '@dnd-kit/core';\r\nimport { useDropzone } from 'react-dropzone';\r\nimport {\r\n Box,\r\n Divider,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n Grid,\r\n Accordion,\r\n AccordionSummary,\r\n AccordionDetails,\r\n Typography,\r\n CircularProgress,\r\n Alert,\r\n} from '@mui/material';\r\nimport {\r\n Heading,\r\n Text as TextIcon,\r\n Image as ImageIcon,\r\n Table as TableIcon,\r\n Blocks as SignatureIcon,\r\n QrCode as QrCodeIcon,\r\n Barcode as BarcodeIcon,\r\n} from 'lucide-react';\r\nimport { styled } from '@mui/material/styles';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport { getV1Drive, postV1Drive, setBaseUrl as setDriveUrl } from '../../../api-client/api.drive/api';\r\nimport SearchBar from '../../../components/search-bar/search-bar';\r\nimport { getToken, uploadFiles } from '../../../utils/common';\r\n\r\nsetDriveUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/document`);\r\n\r\nconst StyledListItem = styled(ListItem)(({ theme }) => ({\r\n padding: theme.spacing(1.5),\r\n cursor: 'grab',\r\n borderRadius: theme.shape.borderRadius,\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[100],\r\n },\r\n '&.dragging': {\r\n opacity: 0.5,\r\n },\r\n}));\r\n\r\nconst DropzoneBox = styled(Box)(({ theme }) => ({\r\n border: `2px dashed ${theme.palette.grey[400]}`,\r\n borderRadius: theme.shape.borderRadius,\r\n padding: theme.spacing(2),\r\n textAlign: 'center',\r\n backgroundColor: theme.palette.grey[50],\r\n cursor: 'pointer',\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[100],\r\n },\r\n}));\r\n\r\nconst SidebarItem = ({ id, icon, label, imageUrl }: { id: string; icon?: React.ReactElement; label: string; imageUrl?: string }) => {\r\n // Extract the element type from the sidebar item id\r\n const elementType = typeof id === 'string' ? id.replace('sidebar-', '') : id;\r\n \r\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\r\n id,\r\n data: {\r\n // Pass the correct type based on the id\r\n type: imageUrl ? 'image' : elementType,\r\n imageUrl,\r\n label,\r\n },\r\n });\r\n \r\n return (\r\n <StyledListItem\r\n ref={setNodeRef}\r\n {...listeners}\r\n {...attributes}\r\n className={isDragging ? 'dragging' : ''}\r\n sx={{ border: '1px solid', borderColor: 'grey.200', p: 0.75 }}\r\n >\r\n {imageUrl ? (\r\n <img\r\n src={imageUrl}\r\n alt={label}\r\n style={{ width: '100%', height: 140, objectFit: 'cover', marginRight: 8 }}\r\n />\r\n ) : (\r\n <>\r\n <ListItemIcon sx={{ minWidth: 40 }}>{icon}</ListItemIcon>\r\n <ListItemText primary={label} primaryTypographyProps={{ variant: 'body2' }} />\r\n </>\r\n )}\r\n </StyledListItem>\r\n );\r\n};\r\n\r\nconst EditorSidebar = () => {\r\n const [expanded, setExpanded] = useState('text');\r\n const [uploadedImages, setUploadedImages] = useState([]);\r\n const [uploading, setUploading] = useState(false);\r\n const [error, setError] = useState(null);\r\n\r\n const handleChange = (panel) => (event, isExpanded) => {\r\n setExpanded(isExpanded ? panel : false);\r\n };\r\n\r\n const onDrop = useCallback(async (acceptedFiles) => {\r\n setUploading(true);\r\n setError(null);\r\n try {\r\n for (const file of acceptedFiles) {\r\n const uFiles = await uploadFiles([file], \"document\");\r\n const token = getToken();\r\n const payload = {\r\n ...token,\r\n \"x-timezone\": String(token[\"x-timezone\"] || \"\"),\r\n \"title\": file?.name.split(\".\")[0],\r\n \"path\": \"/\",\r\n \"is_private\": true,\r\n \"is_directory\": false,\r\n \"file_size\": file.size,\r\n \"is_child\": false,\r\n \"file_extension\": file?.name.split(\".\")[1],\r\n \"type\": \"image\",\r\n \"mime_type\": file.type,\r\n \"url\": `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`\r\n }\r\n // Replace with your actual API endpoint\r\n await postV1Drive(payload);\r\n\r\n setUploadedImages((prev) => [\r\n ...prev,\r\n {\r\n id: `uploaded-image-${Date.now()}-${Math.random()}`,\r\n url: `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`, // Assume API returns imageUrl\r\n name: file.name,\r\n },\r\n ]);\r\n }\r\n } catch (err) {\r\n setError('Failed to upload image. Please try again.');\r\n } finally {\r\n setUploading(false);\r\n }\r\n }, []);\r\n\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDrop,\r\n accept: { 'image/*': ['.jpeg', '.png', '.jpg', '.gif'] },\r\n multiple: true,\r\n });\r\n\r\n const sections = [\r\n {\r\n id: 'text',\r\n icon: <TextIcon size={18} />,\r\n label: 'Text',\r\n content: (\r\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: 1 }}>\r\n <SidebarItem id=\"sidebar-heading\" icon={<Heading size={20} />} label=\"Heading 1\" />\r\n <SidebarItem id=\"sidebar-heading-2\" icon={<Heading size={18} />} label=\"Heading 2\" />\r\n <SidebarItem id=\"sidebar-heading-3\" icon={<Heading size={16} />} label=\"Heading 3\" />\r\n <SidebarItem id=\"sidebar-heading-4\" icon={<Heading size={14} />} label=\"Heading 4\" />\r\n <SidebarItem id=\"sidebar-text\" icon={<TextIcon size={20} />} label=\"Body\" />\r\n <SidebarItem id=\"sidebar-text-block\" icon={<TextIcon size={20} />} label=\"Text Block\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'images',\r\n icon: <ImageIcon size={18} />,\r\n label: 'Images',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <Box sx={{ mt: 2 }}>\r\n <DropzoneBox {...getRootProps()}>\r\n <input {...getInputProps()} />\r\n {isDragActive ? (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n Drop the images here...\r\n </Typography>\r\n ) : (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n Drag and drop images here, or click to select\r\n </Typography>\r\n )}\r\n {uploading && (\r\n <Box sx={{ mt: 1 }}>\r\n <CircularProgress size={20} />\r\n </Box>\r\n )}\r\n </DropzoneBox>\r\n {error && (\r\n <Alert severity=\"error\" sx={{ mt: 2 }}>\r\n {error}\r\n </Alert>\r\n )}\r\n {uploadedImages.length > 0 && (\r\n <Box sx={{ mt: 2 }}>\r\n <Typography variant=\"body2\" sx={{ mb: 1, color: 'grey.500' }}>\r\n Uploaded Images\r\n </Typography>\r\n <Grid container spacing={1}>\r\n {uploadedImages.map((image) => (\r\n <Grid item xs={6} key={image.id}>\r\n <SidebarItem\r\n id={image.id}\r\n label={image.name}\r\n imageUrl={image.url}\r\n />\r\n </Grid>\r\n ))}\r\n </Grid>\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'buttons',\r\n icon: (\r\n <Box\r\n sx={{\r\n width: 16,\r\n height: 16,\r\n bgcolor: 'grey.400',\r\n borderRadius: 1,\r\n color: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '8px',\r\n }}\r\n >\r\n BTN\r\n </Box>\r\n ),\r\n label: 'Buttons',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem\r\n id=\"sidebar-buttons\"\r\n icon={\r\n <Box\r\n sx={{\r\n width: 20,\r\n height: 20,\r\n bgcolor: 'success.main',\r\n borderRadius: 1,\r\n color: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '10px',\r\n }}\r\n >\r\n BTN\r\n </Box>\r\n }\r\n label=\"Buttons\"\r\n />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'divider',\r\n icon: <Divider sx={{ width: 18 }} />,\r\n label: 'Divider',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-divider\" icon={<Divider sx={{ width: 20 }} />} label=\"Divider\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'table',\r\n icon: <TableIcon size={18} />,\r\n label: 'Table',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-table\" icon={<TableIcon size={20} />} label=\"Table\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'signature',\r\n icon: <SignatureIcon size={18} />,\r\n label: 'Signature',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-signature\" icon={<SignatureIcon size={20} />} label=\"Signature\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'qr-code',\r\n icon: <QrCodeIcon size={18} />,\r\n label: 'QR Code',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-qr-code\" icon={<QrCodeIcon size={20} />} label=\"QR Code\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'bar-code',\r\n icon: <BarcodeIcon size={18} />,\r\n label: 'Bar Code',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-bar-code\" icon={<BarcodeIcon size={20} />} label=\"Bar Code\" />\r\n </Box>\r\n ),\r\n },\r\n ];\r\n\r\n const getDriveFiles = async () => {\r\n try {\r\n const token = getToken();\r\n const response = await getV1Drive({\r\n ...token,\r\n \"x-timezone\": String(token[\"x-timezone\"] || \"\"),\r\n skip: 0,\r\n limit: 10,\r\n filters: `(is_directory.eq=0)`\r\n });\r\n // Check if response is successful and has data\r\n if ('data' in response && response.data && typeof response.data === 'object' && 'drive' in response.data) {\r\n const files = (response.data as any).drive || [];\r\n setUploadedImages(files);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getDriveFiles()\r\n }, [])\r\n\r\n return (\r\n <Box\r\n sx={{\r\n bgcolor: 'background.paper',\r\n borderRight: 1,\r\n borderColor: 'grey.200',\r\n width: 390,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: 'calc(100vh - 104px)',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.05)',\r\n fontFamily: 'Inter, system-ui, Avenir, Helvetica, Arial, sans-serif',\r\n }}\r\n >\r\n <Box sx={{ p: 2, borderBottom: 1, borderColor: 'grey.200' }}>\r\n <SearchBar \r\n handleSearch={(key) => console.log('Search:', key)}\r\n sx={{ backgroundColor: \"#fff !important\", border: \"1px solid grey\" }}\r\n />\r\n </Box>\r\n <Box sx={{ flexGrow: 1, overflowY: 'auto', p: 1 }}>\r\n {sections.map((section) => (\r\n <Accordion\r\n key={section.id}\r\n expanded={expanded === section.id}\r\n onChange={handleChange(section.id)}\r\n sx={{\r\n border: 'none',\r\n boxShadow: 'none',\r\n backgroundColor: 'transparent',\r\n '&:before': { display: 'none' },\r\n marginBottom: 1,\r\n }}\r\n >\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon sx={{ color: 'grey.600' }} />}\r\n sx={{\r\n borderRadius: '8px',\r\n padding: '0 12px',\r\n backgroundColor: expanded === section.id ? 'grey.200' : 'grey.50',\r\n '&:hover': {\r\n backgroundColor: 'grey.50',\r\n },\r\n transition: 'background-color 0.2s ease',\r\n minHeight: 42,\r\n '& .MuiAccordionSummary-content': {\r\n alignItems: 'center',\r\n margin: '8px 0',\r\n },\r\n '&.Mui-expanded': {\r\n minHeight: 42,\r\n },\r\n }}\r\n >\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\r\n {section.icon}\r\n <Typography\r\n variant=\"body2\"\r\n sx={{ fontWeight: 500, color: 'text.primary' }}\r\n >\r\n {section.label}\r\n </Typography>\r\n </Box>\r\n </AccordionSummary>\r\n <AccordionDetails sx={{ padding: '8px 16px' }}>\r\n {section.content}\r\n </AccordionDetails>\r\n </Accordion>\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default EditorSidebar;"],"names":["setDriveUrl","StyledListItem","styled","ListItem","theme","padding","spacing","cursor","borderRadius","shape","backgroundColor","palette","grey","opacity","DropzoneBox","Box","border","textAlign","SidebarItem","id","icon","label","imageUrl","elementType","replace","attributes","listeners","setNodeRef","isDragging","useDraggable","data","type","jsx","ref","className","sx","borderColor","p","children","src","alt","style","width","height","objectFit","marginRight","jsxs","Fragment","ListItemIcon","minWidth","ListItemText","primary","primaryTypographyProps","variant","expanded","setExpanded","useState","uploadedImages","setUploadedImages","uploading","setUploading","error","setError","onDrop","useCallback","async","acceptedFiles","file","uFiles","uploadFiles","token","getToken","payload","String","title","name","split","path","is_private","is_directory","file_size","size","is_child","file_extension","mime_type","url","postV1Drive","prev","Date","now","Math","random","err","getRootProps","getInputProps","isDragActive","useDropzone","accept","multiple","sections","TextIcon","content","display","gridTemplateColumns","gap","Heading","ImageIcon","mt","Typography","color","CircularProgress","Alert","severity","length","mb","Grid","container","map","image","item","xs","bgcolor","alignItems","justifyContent","fontSize","Divider","TableIcon","SignatureIcon","QrCodeIcon","BarcodeIcon","useEffect","response","getV1Drive","skip","limit","filters","files","drive","getDriveFiles","borderRight","flexDirection","boxShadow","fontFamily","borderBottom","SearchBar","handleSearch","key","flexGrow","overflowY","section","Accordion","onChange","panel","event","isExpanded","marginBottom","AccordionSummary","expandIcon","ExpandMoreIcon","transition","minHeight","margin","fontWeight","AccordionDetails"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/views/template-editor/components/EditorSidebar.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable unused-imports/no-unused-vars */\r\nimport React, { useState, useCallback, useEffect } from 'react';\r\nimport { useDraggable } from '@dnd-kit/core';\r\nimport { useDropzone } from 'react-dropzone';\r\nimport {\r\n Box,\r\n Divider,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n Grid,\r\n Accordion,\r\n AccordionSummary,\r\n AccordionDetails,\r\n Typography,\r\n CircularProgress,\r\n Alert,\r\n} from '@mui/material';\r\nimport {\r\n Heading,\r\n Text as TextIcon,\r\n Image as ImageIcon,\r\n Table as TableIcon,\r\n Blocks as SignatureIcon,\r\n QrCode as QrCodeIcon,\r\n Barcode as BarcodeIcon,\r\n} from 'lucide-react';\r\nimport { styled } from '@mui/material/styles';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport { getV1Drive, postV1Drive, setBaseUrl as setDriveUrl } from '../../../api-client/api.drive/api';\r\nimport SearchBar from '../../../components/search-bar/search-bar';\r\nimport { getToken, uploadFiles } from '../../../utils/common';\r\n\r\nsetDriveUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/document`);\r\n\r\nconst StyledListItem = styled(ListItem)(({ theme }) => ({\r\n padding: theme.spacing(1.5),\r\n cursor: 'grab',\r\n borderRadius: theme.shape.borderRadius,\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[100],\r\n },\r\n '&.dragging': {\r\n opacity: 0.5,\r\n },\r\n}));\r\n\r\nconst DropzoneBox = styled(Box)(({ theme }) => ({\r\n border: `2px dashed ${theme.palette.grey[400]}`,\r\n borderRadius: theme.shape.borderRadius,\r\n padding: theme.spacing(2),\r\n textAlign: 'center',\r\n backgroundColor: theme.palette.grey[50],\r\n cursor: 'pointer',\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[100],\r\n },\r\n}));\r\n\r\nconst SidebarItem = ({ id, icon, label, imageUrl }: { id: string; icon?: React.ReactElement; label: string; imageUrl?: string }) => {\r\n // Extract the element type from the sidebar item id\r\n const elementType = typeof id === 'string' ? id.replace('sidebar-', '') : id;\r\n \r\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\r\n id,\r\n data: {\r\n // Pass the correct type based on the id\r\n type: imageUrl ? 'image' : elementType,\r\n imageUrl,\r\n label,\r\n },\r\n });\r\n \r\n return (\r\n <StyledListItem\r\n ref={setNodeRef}\r\n {...listeners}\r\n {...attributes}\r\n className={isDragging ? 'dragging' : ''}\r\n sx={{ border: '1px solid', borderColor: 'grey.200', p: 0.75 }}\r\n >\r\n {imageUrl ? (\r\n <img\r\n src={imageUrl}\r\n alt={label}\r\n style={{ width: '100%', height: 140, objectFit: 'cover', marginRight: 8 }}\r\n />\r\n ) : (\r\n <>\r\n <ListItemIcon sx={{ minWidth: 40 }}>{icon}</ListItemIcon>\r\n <ListItemText primary={label} primaryTypographyProps={{ variant: 'body2' }} />\r\n </>\r\n )}\r\n </StyledListItem>\r\n );\r\n};\r\n\r\nconst EditorSidebar = () => {\r\n const [expanded, setExpanded] = useState('text');\r\n const [uploadedImages, setUploadedImages] = useState([]);\r\n const [uploading, setUploading] = useState(false);\r\n const [error, setError] = useState(null);\r\n\r\n const handleChange = (panel) => (event, isExpanded) => {\r\n setExpanded(isExpanded ? panel : false);\r\n };\r\n\r\n const onDrop = useCallback(async (acceptedFiles) => {\r\n setUploading(true);\r\n setError(null);\r\n try {\r\n for (const file of acceptedFiles) {\r\n const uFiles = await uploadFiles([file], \"document\");\r\n const token = getToken();\r\n const payload = {\r\n ...token,\r\n \"x-timezone\": String(token[\"x-timezone\"] || \"\"),\r\n \"title\": file?.name.split(\".\")[0],\r\n \"path\": \"/\",\r\n \"is_private\": true,\r\n \"is_directory\": false,\r\n \"file_size\": file.size,\r\n \"is_child\": false,\r\n \"file_extension\": file?.name.split(\".\")[1],\r\n \"type\": \"image\",\r\n \"mime_type\": file.type,\r\n \"url\": `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`\r\n }\r\n // Replace with your actual API endpoint\r\n await postV1Drive(payload);\r\n\r\n setUploadedImages((prev) => [\r\n ...prev,\r\n {\r\n id: `uploaded-image-${Date.now()}-${Math.random()}`,\r\n url: `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`, // Assume API returns imageUrl\r\n name: file.name,\r\n },\r\n ]);\r\n }\r\n } catch (err) {\r\n setError('Failed to upload image. Please try again.');\r\n } finally {\r\n setUploading(false);\r\n }\r\n }, []);\r\n\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDrop,\r\n accept: { 'image/*': ['.jpeg', '.png', '.jpg', '.gif'] },\r\n multiple: true,\r\n });\r\n\r\n const sections = [\r\n {\r\n id: 'text',\r\n icon: <TextIcon size={18} />,\r\n label: 'Text',\r\n content: (\r\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: 1 }}>\r\n <SidebarItem id=\"sidebar-heading\" icon={<Heading size={20} />} label=\"Heading 1\" />\r\n <SidebarItem id=\"sidebar-heading-2\" icon={<Heading size={18} />} label=\"Heading 2\" />\r\n <SidebarItem id=\"sidebar-heading-3\" icon={<Heading size={16} />} label=\"Heading 3\" />\r\n <SidebarItem id=\"sidebar-heading-4\" icon={<Heading size={14} />} label=\"Heading 4\" />\r\n <SidebarItem id=\"sidebar-text\" icon={<TextIcon size={20} />} label=\"Body\" />\r\n <SidebarItem id=\"sidebar-text-block\" icon={<TextIcon size={20} />} label=\"Text Block\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'images',\r\n icon: <ImageIcon size={18} />,\r\n label: 'Images',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <Box sx={{ mt: 2 }}>\r\n <DropzoneBox {...getRootProps()}>\r\n <input {...getInputProps()} />\r\n {isDragActive ? (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n Drop the images here...\r\n </Typography>\r\n ) : (\r\n <Typography variant=\"body2\" color=\"text.secondary\">\r\n Drag and drop images here, or click to select\r\n </Typography>\r\n )}\r\n {uploading && (\r\n <Box sx={{ mt: 1 }}>\r\n <CircularProgress size={20} />\r\n </Box>\r\n )}\r\n </DropzoneBox>\r\n {error && (\r\n <Alert severity=\"error\" sx={{ mt: 2 }}>\r\n {error}\r\n </Alert>\r\n )}\r\n {uploadedImages.length > 0 && (\r\n <Box sx={{ mt: 2 }}>\r\n <Typography variant=\"body2\" sx={{ mb: 1, color: 'grey.500' }}>\r\n Uploaded Images\r\n </Typography>\r\n <Grid container spacing={1}>\r\n {uploadedImages.map((image) => (\r\n <Grid item xs={6} key={image.id}>\r\n <SidebarItem\r\n id={image.id}\r\n label={image.name}\r\n imageUrl={image.url}\r\n />\r\n </Grid>\r\n ))}\r\n </Grid>\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'buttons',\r\n icon: (\r\n <Box\r\n sx={{\r\n width: 16,\r\n height: 16,\r\n bgcolor: 'grey.400',\r\n borderRadius: 1,\r\n color: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '8px',\r\n }}\r\n >\r\n BTN\r\n </Box>\r\n ),\r\n label: 'Buttons',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem\r\n id=\"sidebar-buttons\"\r\n icon={\r\n <Box\r\n sx={{\r\n width: 20,\r\n height: 20,\r\n bgcolor: 'success.main',\r\n borderRadius: 1,\r\n color: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontSize: '10px',\r\n }}\r\n >\r\n BTN\r\n </Box>\r\n }\r\n label=\"Buttons\"\r\n />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'divider',\r\n icon: <Divider sx={{ width: 18 }} />,\r\n label: 'Divider',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-divider\" icon={<Divider sx={{ width: 20 }} />} label=\"Divider\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'table',\r\n icon: <TableIcon size={18} />,\r\n label: 'Table',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-table\" icon={<TableIcon size={20} />} label=\"Table\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'signature',\r\n icon: <SignatureIcon size={18} />,\r\n label: 'Signature',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-signature\" icon={<SignatureIcon size={20} />} label=\"Signature\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'qr-code',\r\n icon: <QrCodeIcon size={18} />,\r\n label: 'QR Code',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-qr-code\" icon={<QrCodeIcon size={20} />} label=\"QR Code\" />\r\n </Box>\r\n ),\r\n },\r\n {\r\n id: 'bar-code',\r\n icon: <BarcodeIcon size={18} />,\r\n label: 'Bar Code',\r\n content: (\r\n <Box sx={{ mt: 2 }}>\r\n <SidebarItem id=\"sidebar-bar-code\" icon={<BarcodeIcon size={20} />} label=\"Bar Code\" />\r\n </Box>\r\n ),\r\n },\r\n ];\r\n\r\n const getDriveFiles = async () => {\r\n try {\r\n const token = getToken();\r\n const response = await getV1Drive({\r\n ...token,\r\n \"x-timezone\": String(token[\"x-timezone\"] || \"\"),\r\n skip: 0,\r\n limit: 10,\r\n filters: `(is_directory.eq=0)`\r\n });\r\n // Check if response is successful and has data\r\n if ('data' in response && response.data && typeof response.data === 'object' && 'drive' in response.data) {\r\n const files = (response.data as any).drive || [];\r\n setUploadedImages(files);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getDriveFiles()\r\n }, [])\r\n\r\n return (\r\n <Box\r\n sx={{\r\n bgcolor: 'background.paper',\r\n borderRight: 1,\r\n borderColor: 'grey.200',\r\n width: 390,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: 'calc(100vh - 104px)',\r\n boxShadow: '0 2px 8px rgba(0,0,0,0.05)',\r\n fontFamily: 'Inter, system-ui, Avenir, Helvetica, Arial, sans-serif',\r\n }}\r\n >\r\n <Box sx={{ p: 2, borderBottom: 1, borderColor: 'grey.200' }}>\r\n <SearchBar \r\n handleSearch={(key) => console.log('Search:', key)}\r\n sx={{ backgroundColor: \"#fff !important\", border: \"1px solid grey\" }}\r\n />\r\n </Box>\r\n <Box sx={{ flexGrow: 1, overflowY: 'auto', p: 1 }}>\r\n {sections.map((section) => (\r\n <Accordion\r\n key={section.id}\r\n expanded={expanded === section.id}\r\n onChange={handleChange(section.id)}\r\n sx={{\r\n border: 'none',\r\n boxShadow: 'none',\r\n backgroundColor: 'transparent',\r\n '&:before': { display: 'none' },\r\n marginBottom: 1,\r\n }}\r\n >\r\n <AccordionSummary\r\n expandIcon={<ExpandMoreIcon sx={{ color: 'grey.600' }} />}\r\n sx={{\r\n borderRadius: '8px',\r\n padding: '0 12px',\r\n backgroundColor: expanded === section.id ? 'grey.200' : 'grey.50',\r\n '&:hover': {\r\n backgroundColor: 'grey.50',\r\n },\r\n transition: 'background-color 0.2s ease',\r\n minHeight: 42,\r\n '& .MuiAccordionSummary-content': {\r\n alignItems: 'center',\r\n margin: '8px 0',\r\n },\r\n '&.Mui-expanded': {\r\n minHeight: 42,\r\n },\r\n }}\r\n >\r\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\r\n {section.icon}\r\n <Typography\r\n variant=\"body2\"\r\n sx={{ fontWeight: 500, color: 'text.primary' }}\r\n >\r\n {section.label}\r\n </Typography>\r\n </Box>\r\n </AccordionSummary>\r\n <AccordionDetails sx={{ padding: '8px 16px' }}>\r\n {section.content}\r\n </AccordionDetails>\r\n </Accordion>\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default EditorSidebar;"],"names":["setDriveUrl","StyledListItem","styled","ListItem","theme","padding","spacing","cursor","borderRadius","shape","backgroundColor","palette","grey","opacity","DropzoneBox","Box","border","textAlign","SidebarItem","id","icon","label","imageUrl","elementType","replace","attributes","listeners","setNodeRef","isDragging","useDraggable","data","type","jsx","ref","className","sx","borderColor","p","children","src","alt","style","width","height","objectFit","marginRight","jsxs","Fragment","ListItemIcon","minWidth","ListItemText","primary","primaryTypographyProps","variant","expanded","setExpanded","useState","uploadedImages","setUploadedImages","uploading","setUploading","error","setError","onDrop","useCallback","async","acceptedFiles","file","uFiles","uploadFiles","token","getToken","payload","String","title","name","split","path","is_private","is_directory","file_size","size","is_child","file_extension","mime_type","url","postV1Drive","prev","Date","now","Math","random","err","getRootProps","getInputProps","isDragActive","useDropzone","accept","multiple","sections","TextIcon","content","display","gridTemplateColumns","gap","Heading","ImageIcon","mt","Typography","color","CircularProgress","Alert","severity","length","mb","Grid","container","map","image","item","xs","bgcolor","alignItems","justifyContent","fontSize","Divider","TableIcon","SignatureIcon","QrCodeIcon","BarcodeIcon","useEffect","response","getV1Drive","skip","limit","filters","files","drive","getDriveFiles","borderRight","flexDirection","boxShadow","fontFamily","borderBottom","SearchBar","handleSearch","key","flexGrow","overflowY","section","Accordion","onChange","panel","event","isExpanded","marginBottom","AccordionSummary","expandIcon","ExpandMoreIcon","transition","minHeight","margin","fontWeight","AccordionDetails"],"mappings":"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"}
@@ -24,7 +24,7 @@ import CompanySelectionModal from "../company-selection-modal/company-selection-
24
24
  import { setBaseUrl } from "../../../api-client/api.rbac/api/index.esm.js";
25
25
  /* empty css */
26
26
  import MenuItem from "../../../node_modules/@mui/material/MenuItem/MenuItem/index.esm.js";
27
- setBaseUrl(`${"http://127.0.0.1:4011"}/rbac`);
27
+ setBaseUrl(`${"https://apidev.erpforce.co"}/rbac`);
28
28
  const Templates = ({ type, module, modulePath }) => {
29
29
  const { t } = useTranslation();
30
30
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../../src/views/template-editor/templates.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable unused-imports/no-unused-vars */\r\nimport { useCallback, useEffect, useMemo, useState } from 'react';\r\n\r\nimport ActionBar from '../../components/action-bar/action-bar';\r\nimport viewTypes from '../../constants/action-bar';\r\nimport MaterialTable, { MaterialTableColumnProps } from '../../components/material-table/material-table';\r\nimport Typography from '../../components/typography/typography';\r\nimport Fallback from '../../components/fallback/fallback';\r\nimport Menu from '../../components/menu/menu';\r\nimport Footer from '../../components/footer/footer';\r\nimport useDeepMemo from '../../hooks/use-deep-memo';\r\nimport { PageState } from '../../contexts/page-context';\r\nimport { usePages } from '../../hooks/use-pages';\r\nimport { transformTableColumns } from '../../utils/common-utility';\r\nimport { appendConditionSafely, defaultCurrencySymbol, getToken } from '../../utils/common';\r\nimport logo from '../../assets/images';\r\nimport { IPaginationModel } from '../../@types/pagination-model';\r\nimport { fetchApi } from '../../utils/api';\r\n\r\nimport { MenuItem } from '@mui/material';\r\n\r\n// import GridCard from './grid-view/grid-view';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { enqueueSnackbar } from 'notistack';\r\n\r\nimport { templateRoutes } from './utils/common';\r\nimport { IEmail, ITemplateProps, Pagination } from './utils/types';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\nimport { usePermissions } from '../../hooks/use-permissions';\r\nimport { getV1Subjects } from '../../api-client/api.system-feature/api';\r\nimport TemplateModal from './template-modal/template-modal';\r\nimport CompanySelectionModal from './company-selection-modal/company-selection-modal';\r\nimport { setBaseUrl } from '../../api-client/api.rbac/api';\r\n\r\nimport './templates.scss';\r\n\r\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\r\n\r\n\r\ninterface ActionData {\r\n\tlabel: string;\r\n\tposition: number;\r\n}\r\n\r\nconst Templates: React.FC<ITemplateProps> = ({ type, module, modulePath }) => {\r\n const { t } = useTranslation();\r\n\tconst {\r\n\t\tactivePage: aPage,\r\n\t\tupdatePageInfo,\r\n\t\tschemaFields,\r\n\t\tgeneratedColumns,\r\n\t\tupdateGeneratedColumns,\r\n\t\t// error: pageError\r\n\t} = usePages();\r\n\tconst activePage = useDeepMemo<PageState>(aPage);\r\n\t/* LOCAL STATES */\r\n\tconst [actionAnchorEl, setActionAnchorEl] = useState<null | HTMLElement>(null);\r\n const viewEmails = localStorage.getItem('email-subjects-view');\r\n const [actionBarData, setActionBarData] = useState<ActionData[]>(viewEmails ? JSON.parse(viewEmails) : [{ label: 'Table', position: 0 }]);\r\n\r\n const [actionBarActiveTab, setActionBarActiveTab] = useState<string>(viewTypes.TABLE);\r\n\tconst [paginationModel, setPaginationModel] = useState<Pagination>({ pageNo: 1, limit: 10, totalCount: 0, skip: 0 }); \r\n\tconst [rows, setRows] = useState<any[]>([]); \r\n\tconst [isFetching, setIsFetching] = useState<boolean>(false); \r\n\tconst [selectedRow, setSelectedRow] = useState([]);\r\n\tconst [showTemplateModal, setShowTemplateModal] = useState<IEmail | null>(null);\r\n\tconst [showCompanySelectionModal, setShowCompanySelectionModal] = useState<IEmail | null>(null);\r\n\tconst [companies, setCompanies] = useState<Record<string, any>[]>([]);\r\n\t/* VARS */\r\n\tconst navigate = useNavigate();\r\n\tconst { pageNo, limit: pLimit, totalCount } = paginationModel;\r\n\tconst limit = activePage.page_size || pLimit;\r\n\tconst total = limit ? Math.ceil(totalCount / limit) : 0;\r\n\tconst skip = limit * (pageNo - 1);\r\n\tconst permissions = usePermissions();\r\n\tconst ROUTES = templateRoutes(modulePath, type);\r\n\r\n\tconst SubjectPermissions = permissions?.Subjects || {};\r\n\tconst ConditionsImport = permissions?.RentalTerms?.ConditionsImport || {};\r\n\t\r\n\tconst {\r\n\t\tcanAdd = false,\r\n\t\tcanEdit = false,\r\n\t\tcanDelete = false,\r\n\t} = SubjectPermissions;\r\n\r\n\tconst { canAdd: canImport = false } = ConditionsImport;\r\n\r\n\tconst handleNewEmail = (email) => {\r\n\t\tif(!companies?.length) {\r\n\t\t\tenqueueSnackbar('Please add a company first', { variant: 'error' })\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif(companies?.length > 1) {\r\n\t\t\tsetShowCompanySelectionModal(email)\r\n\t\t} else{\r\n\t\t\tnavigate(ROUTES.ADD_TEMPLATE(email._id), { state: { company_id: companies[0]?.id || companies[0]?.value }})\r\n\t\t}\r\n\t};\r\n \r\n\tconst rowActionMenu = [\r\n\t\t{\r\n\t\t\tlabel: 'New Template',\r\n\t\t\thandleAction: (email: IEmail) => handleNewEmail(email),\r\n\t\t\tdisabled: (row: any) => !canEdit\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: 'Add From Template',\r\n\t\t\thandleAction: (email: IEmail) => setShowTemplateModal(email),\r\n\t\t\tdisabled: (row: any) => !canAdd\r\n\t\t}\r\n\t];\r\n\r\n\t/* LOCAL FUNCTIONS */\r\n\tconst getEmails = useCallback(\r\n\t\tasync () => {\r\n\t\t\tconst { sort, filterQueryString, search } = activePage;\r\n\t\t\tconst searchFiters = search ? `&subject.like=${search}` : '';\r\n\t\t\tconst types = [];\r\n\t\t\ttypes.push(type)\r\n\t\t\tif(type == \"email\"){\r\n\t\t\t\ttypes.push(\"approval_email\")\r\n\t\t\t}\r\n\t\t\tconst uFilters = appendConditionSafely(filterQueryString, `&type.in=[${types.join(\",\")}]&module.eq=${module}${searchFiters}`);\r\n\r\n\t\t\tconst response = await getV1Subjects({\r\n\t\t\t\t...getToken(),\r\n\t\t\t\tskip,\r\n\t\t\t\tlimit,\r\n\t\t\t\t// search,\r\n\t\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\r\n\t\t\t\t...(uFilters && uFilters !== '()' && { filters: uFilters })\r\n\t\t\t});\r\n\r\n\t\t\tsetRows(response?.data || []);\r\n\t\t\tsetPaginationModel({...paginationModel, ...(response?.pagination ||{})});\r\n\t\t},\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t[\r\n\t\t\tlimit,\r\n\t\t\tskip,\r\n\t\t\tactivePage?.search,\r\n\t\t\tactivePage?.filterQueryString,\r\n\t\t\tactivePage?.sort\r\n\t\t]\r\n\t);\r\n\r\n\tconst getCopmanies = async () => {\r\n\t\t\tconst companiesArr = await fetchApi({apiKey: 'company', filters: { skip: 0, limit: 100, order: \"id:1\" }});\r\n\t\t\tsetCompanies(companiesArr?.data || []);\r\n\t\t}\r\n\r\n\tconst tableRows = useMemo(() => rows || [], [rows]);\r\n\r\n\tconst tableColumns = useMemo(\r\n\t\t() =>\r\n\t\t\ttransformTableColumns({\r\n\t\t\t\tcolumns: generatedColumns.columns,\r\n\t\t\t\tcurrencySymbol: (row) =>\r\n\t\t\t\t\trow.original?.currency_data?.symbol || defaultCurrencySymbol(),\r\n\t\t\t\ttranslationFn: t,\r\n\t\t\t\tenableFooter: true,\r\n\t\t\t\t// redirectionLink: ROUTES.VIEW,\r\n\t\t\t\t// redirectionLinkState: (row) => ({ termsAndCondition: row.original }),\r\n\t\t\t\trows: tableRows,\r\n\t\t\t\tstatusClasses: ``,\r\n\t\t\t}),\r\n\t\t[tableRows, t, generatedColumns.columns]\r\n\t);\r\n\r\n\tconst handlePaginationModel = (model: IPaginationModel) => {\r\n\t\tif (activePage.page_size != model?.limit) {\r\n\t\t\tupdatePageInfo({ page_size: model.limit });\r\n\t\t}\r\n\t\tsetPaginationModel(model);\r\n\t};\r\n\r\n\tconst cleanUp = () => {\r\n\t\tconst pModel = { pageNo: 1, limit: 10, totalCount: 0 };\r\n\t\tsetPaginationModel(pModel);\r\n\t};\r\n\r\n\t/* USE EFFECTS */\r\n\tuseEffect(() => {\r\n\t\tgetEmails();\r\n\t}, [getEmails]);\r\n\t\r\n\r\n\tuseEffect(() => {\r\n\t\tgetCopmanies();\r\n\t\treturn cleanUp;\r\n\t}, []);\r\n useEffect(() => {\r\n\t\tif (actionBarData?.length) {\r\n\t\t\tlocalStorage.setItem('email-subjects-view', JSON.stringify(actionBarData));\r\n\t\t}\r\n\t}, [actionBarData]);\r\n\r\n\t/* JSX STRUCTURE STARTED */\r\n\treturn (\r\n\t\t<section className='templates'>\r\n\t\t\t<ActionBar\r\n\t\t\t\ttitle={type === 'email' ? 'Emails' : 'PDFs'}\r\n\t\t\t\tdata={actionBarData}\r\n\t\t\t\tsetData={setActionBarData}\r\n\t\t\t\tactive={actionBarActiveTab}\r\n\t\t\t\tsetActive={setActionBarActiveTab}\r\n\t\t\t\thandleSearch={(search) => {\r\n\t\t\t\t\tupdatePageInfo({ search });\r\n\t\t\t\t\tsetPaginationModel({ ...paginationModel, pageNo: 1 });\r\n\t\t\t\t}}\r\n\t\t\t\tdisabledViews={['Kanban', 'Calendar', 'Gantt',viewTypes.GRID]}\r\n\t\t\t\tfields={schemaFields}\r\n\t\t\t\tselectedIds={selectedRow}\r\n\t\t\t\tbutton={false}\r\n\t\t\t/>\r\n\t\t\t\t\t{actionBarActiveTab === viewTypes.TABLE && (\r\n\t\t\t\t\t\t<MaterialTable\r\n\t\t\t\t\t\t\trows={tableRows || []}\r\n\t\t\t\t\t\t\tcolumns={tableColumns}\r\n\t\t\t\t\t\t\tpaginationModel={paginationModel}\r\n\t\t\t\t\t\t\ttotalPages={total}\r\n\t\t\t\t\t\t\tcolumnOrder={['mrt-row-select', ...generatedColumns.orderKeys]}\r\n\t\t\t\t\t\t\tstates={{ isLoading: isFetching }}\r\n\t\t\t\t\t\t\tonSortingChange={(sort) => updatePageInfo({ sort })}\r\n\t\t\t\t\t\t\tenableColumnDragging={false}\r\n\t\t\t\t\t\t\tenableEditing={false}\r\n\t\t\t\t\t\t\tonSelectRow={(r) =>\r\n\t\t\t\t\t\t\t\tsetSelectedRow(r.map((ele) => ele.original.id))\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tenableAddCustomField={false}\r\n\t\t\t\t\t\t\trowActionMenu={rowActionMenu}\r\n\t\t\t\t\t\t\tisResetRow={false}\r\n\t\t\t\t\t\t\thandleColumnOrdering={(colOrder) =>\r\n\t\t\t\t\t\t\t\tupdateGeneratedColumns({ orderKeys: colOrder.slice(1) })\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tonColumnVisibility={(columns: MaterialTableColumnProps[]) =>\r\n\t\t\t\t\t\t\t\tupdateGeneratedColumns({ columns: columns })\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{actionBarActiveTab === viewTypes.GRID && (\r\n\t\t\t\t\t\t<GridCard\r\n\t\t\t\t\t\t\tdata={tableRows}\r\n\t\t\t\t\t\t\trowActionMenu={rowActionMenu}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{!actionBarActiveTab && (\r\n\t\t\t\t\t\t<Fallback\r\n\t\t\t\t\t\t\theading={t('rental.settings.termsAndConditions.title')}\r\n\t\t\t\t\t\t\tsubHeading='No data available'\r\n\t\t\t\t\t\t\ticon={<img src={logo.invoiceFallback} />}>\r\n\t\t\t\t\t\t</Fallback>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t<Footer\r\n\t\t\t\t\t\ttotal={total}\r\n\t\t\t\t\t\tpaginationModel={{\r\n\t\t\t\t\t\t\t...paginationModel,\r\n\t\t\t\t\t\t\tlimit: activePage.page_size\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\thandlePaginationModel={handlePaginationModel}\r\n\t\t\t\t\t\tresource=''\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t{/* Action Menu */}\r\n\t\t\t\t\t<Menu\r\n\t\t\t\t\t\tanchorEl={actionAnchorEl}\r\n\t\t\t\t\t\topen={Boolean(actionAnchorEl)}\r\n\t\t\t\t\t\tonClose={() => setActionAnchorEl(null)}>\r\n\t\t\t\t\t\t<MenuItem>\r\n\t\t\t\t\t\t\t<Typography type='s4' color='theme.secondary.1000'>\r\n\t\t\t\t\t\t\t\t{t('common.upload')}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t<MenuItem>\r\n\t\t\t\t\t\t\t<Typography type='s4' color='theme.secondary.1000'>\r\n\t\t\t\t\t\t\t\t{t('common.print')}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t</Menu>\r\n\t\t\t\t\t{showTemplateModal && (\r\n\t\t\t\t\t\t<TemplateModal \r\n\t\t\t\t\t\t\temail={showTemplateModal} \r\n\t\t\t\t\t\t\tonClose={() => setShowTemplateModal(null)} \r\n\t\t\t\t\t\t\topen={showTemplateModal !== null} \r\n\t\t\t\t\t\t\tcompanies={companies}\r\n\t\t\t\t\t\t\ttemplateRoutes={ROUTES}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{showCompanySelectionModal && (\r\n\t\t\t\t\t\t<CompanySelectionModal \r\n\t\t\t\t\t\t\tisOpen={showCompanySelectionModal !== null} \r\n\t\t\t\t\t\t\tsetIsOpen={setShowCompanySelectionModal} \r\n\t\t\t\t\t\t\tcompanies={companies} \r\n\t\t\t\t\t\t\temail={showCompanySelectionModal}\r\n\t\t\t\t\t\t\ttemplateRoutes={ROUTES}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t</section>\r\n\t);\r\n};\r\n\r\nexport default Templates;\r\n"],"names":["logo"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../src/views/template-editor/templates.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable unused-imports/no-unused-vars */\r\nimport { useCallback, useEffect, useMemo, useState } from 'react';\r\n\r\nimport ActionBar from '../../components/action-bar/action-bar';\r\nimport viewTypes from '../../constants/action-bar';\r\nimport MaterialTable, { MaterialTableColumnProps } from '../../components/material-table/material-table';\r\nimport Typography from '../../components/typography/typography';\r\nimport Fallback from '../../components/fallback/fallback';\r\nimport Menu from '../../components/menu/menu';\r\nimport Footer from '../../components/footer/footer';\r\nimport useDeepMemo from '../../hooks/use-deep-memo';\r\nimport { PageState } from '../../contexts/page-context';\r\nimport { usePages } from '../../hooks/use-pages';\r\nimport { transformTableColumns } from '../../utils/common-utility';\r\nimport { appendConditionSafely, defaultCurrencySymbol, getToken } from '../../utils/common';\r\nimport logo from '../../assets/images';\r\nimport { IPaginationModel } from '../../@types/pagination-model';\r\nimport { fetchApi } from '../../utils/api';\r\n\r\nimport { MenuItem } from '@mui/material';\r\n\r\n// import GridCard from './grid-view/grid-view';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { enqueueSnackbar } from 'notistack';\r\n\r\nimport { templateRoutes } from './utils/common';\r\nimport { IEmail, ITemplateProps, Pagination } from './utils/types';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\nimport { usePermissions } from '../../hooks/use-permissions';\r\nimport { getV1Subjects } from '../../api-client/api.system-feature/api';\r\nimport TemplateModal from './template-modal/template-modal';\r\nimport CompanySelectionModal from './company-selection-modal/company-selection-modal';\r\nimport { setBaseUrl } from '../../api-client/api.rbac/api';\r\n\r\nimport './templates.scss';\r\n\r\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\r\n\r\n\r\ninterface ActionData {\r\n\tlabel: string;\r\n\tposition: number;\r\n}\r\n\r\nconst Templates: React.FC<ITemplateProps> = ({ type, module, modulePath }) => {\r\n const { t } = useTranslation();\r\n\tconst {\r\n\t\tactivePage: aPage,\r\n\t\tupdatePageInfo,\r\n\t\tschemaFields,\r\n\t\tgeneratedColumns,\r\n\t\tupdateGeneratedColumns,\r\n\t\t// error: pageError\r\n\t} = usePages();\r\n\tconst activePage = useDeepMemo<PageState>(aPage);\r\n\t/* LOCAL STATES */\r\n\tconst [actionAnchorEl, setActionAnchorEl] = useState<null | HTMLElement>(null);\r\n const viewEmails = localStorage.getItem('email-subjects-view');\r\n const [actionBarData, setActionBarData] = useState<ActionData[]>(viewEmails ? JSON.parse(viewEmails) : [{ label: 'Table', position: 0 }]);\r\n\r\n const [actionBarActiveTab, setActionBarActiveTab] = useState<string>(viewTypes.TABLE);\r\n\tconst [paginationModel, setPaginationModel] = useState<Pagination>({ pageNo: 1, limit: 10, totalCount: 0, skip: 0 }); \r\n\tconst [rows, setRows] = useState<any[]>([]); \r\n\tconst [isFetching, setIsFetching] = useState<boolean>(false); \r\n\tconst [selectedRow, setSelectedRow] = useState([]);\r\n\tconst [showTemplateModal, setShowTemplateModal] = useState<IEmail | null>(null);\r\n\tconst [showCompanySelectionModal, setShowCompanySelectionModal] = useState<IEmail | null>(null);\r\n\tconst [companies, setCompanies] = useState<Record<string, any>[]>([]);\r\n\t/* VARS */\r\n\tconst navigate = useNavigate();\r\n\tconst { pageNo, limit: pLimit, totalCount } = paginationModel;\r\n\tconst limit = activePage.page_size || pLimit;\r\n\tconst total = limit ? Math.ceil(totalCount / limit) : 0;\r\n\tconst skip = limit * (pageNo - 1);\r\n\tconst permissions = usePermissions();\r\n\tconst ROUTES = templateRoutes(modulePath, type);\r\n\r\n\tconst SubjectPermissions = permissions?.Subjects || {};\r\n\tconst ConditionsImport = permissions?.RentalTerms?.ConditionsImport || {};\r\n\t\r\n\tconst {\r\n\t\tcanAdd = false,\r\n\t\tcanEdit = false,\r\n\t\tcanDelete = false,\r\n\t} = SubjectPermissions;\r\n\r\n\tconst { canAdd: canImport = false } = ConditionsImport;\r\n\r\n\tconst handleNewEmail = (email) => {\r\n\t\tif(!companies?.length) {\r\n\t\t\tenqueueSnackbar('Please add a company first', { variant: 'error' })\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif(companies?.length > 1) {\r\n\t\t\tsetShowCompanySelectionModal(email)\r\n\t\t} else{\r\n\t\t\tnavigate(ROUTES.ADD_TEMPLATE(email._id), { state: { company_id: companies[0]?.id || companies[0]?.value }})\r\n\t\t}\r\n\t};\r\n \r\n\tconst rowActionMenu = [\r\n\t\t{\r\n\t\t\tlabel: 'New Template',\r\n\t\t\thandleAction: (email: IEmail) => handleNewEmail(email),\r\n\t\t\tdisabled: (row: any) => !canEdit\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: 'Add From Template',\r\n\t\t\thandleAction: (email: IEmail) => setShowTemplateModal(email),\r\n\t\t\tdisabled: (row: any) => !canAdd\r\n\t\t}\r\n\t];\r\n\r\n\t/* LOCAL FUNCTIONS */\r\n\tconst getEmails = useCallback(\r\n\t\tasync () => {\r\n\t\t\tconst { sort, filterQueryString, search } = activePage;\r\n\t\t\tconst searchFiters = search ? `&subject.like=${search}` : '';\r\n\t\t\tconst types = [];\r\n\t\t\ttypes.push(type)\r\n\t\t\tif(type == \"email\"){\r\n\t\t\t\ttypes.push(\"approval_email\")\r\n\t\t\t}\r\n\t\t\tconst uFilters = appendConditionSafely(filterQueryString, `&type.in=[${types.join(\",\")}]&module.eq=${module}${searchFiters}`);\r\n\r\n\t\t\tconst response = await getV1Subjects({\r\n\t\t\t\t...getToken(),\r\n\t\t\t\tskip,\r\n\t\t\t\tlimit,\r\n\t\t\t\t// search,\r\n\t\t\t\t...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\r\n\t\t\t\t...(uFilters && uFilters !== '()' && { filters: uFilters })\r\n\t\t\t});\r\n\r\n\t\t\tsetRows(response?.data || []);\r\n\t\t\tsetPaginationModel({...paginationModel, ...(response?.pagination ||{})});\r\n\t\t},\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t\t[\r\n\t\t\tlimit,\r\n\t\t\tskip,\r\n\t\t\tactivePage?.search,\r\n\t\t\tactivePage?.filterQueryString,\r\n\t\t\tactivePage?.sort\r\n\t\t]\r\n\t);\r\n\r\n\tconst getCopmanies = async () => {\r\n\t\t\tconst companiesArr = await fetchApi({apiKey: 'company', filters: { skip: 0, limit: 100, order: \"id:1\" }});\r\n\t\t\tsetCompanies(companiesArr?.data || []);\r\n\t\t}\r\n\r\n\tconst tableRows = useMemo(() => rows || [], [rows]);\r\n\r\n\tconst tableColumns = useMemo(\r\n\t\t() =>\r\n\t\t\ttransformTableColumns({\r\n\t\t\t\tcolumns: generatedColumns.columns,\r\n\t\t\t\tcurrencySymbol: (row) =>\r\n\t\t\t\t\trow.original?.currency_data?.symbol || defaultCurrencySymbol(),\r\n\t\t\t\ttranslationFn: t,\r\n\t\t\t\tenableFooter: true,\r\n\t\t\t\t// redirectionLink: ROUTES.VIEW,\r\n\t\t\t\t// redirectionLinkState: (row) => ({ termsAndCondition: row.original }),\r\n\t\t\t\trows: tableRows,\r\n\t\t\t\tstatusClasses: ``,\r\n\t\t\t}),\r\n\t\t[tableRows, t, generatedColumns.columns]\r\n\t);\r\n\r\n\tconst handlePaginationModel = (model: IPaginationModel) => {\r\n\t\tif (activePage.page_size != model?.limit) {\r\n\t\t\tupdatePageInfo({ page_size: model.limit });\r\n\t\t}\r\n\t\tsetPaginationModel(model);\r\n\t};\r\n\r\n\tconst cleanUp = () => {\r\n\t\tconst pModel = { pageNo: 1, limit: 10, totalCount: 0 };\r\n\t\tsetPaginationModel(pModel);\r\n\t};\r\n\r\n\t/* USE EFFECTS */\r\n\tuseEffect(() => {\r\n\t\tgetEmails();\r\n\t}, [getEmails]);\r\n\t\r\n\r\n\tuseEffect(() => {\r\n\t\tgetCopmanies();\r\n\t\treturn cleanUp;\r\n\t}, []);\r\n useEffect(() => {\r\n\t\tif (actionBarData?.length) {\r\n\t\t\tlocalStorage.setItem('email-subjects-view', JSON.stringify(actionBarData));\r\n\t\t}\r\n\t}, [actionBarData]);\r\n\r\n\t/* JSX STRUCTURE STARTED */\r\n\treturn (\r\n\t\t<section className='templates'>\r\n\t\t\t<ActionBar\r\n\t\t\t\ttitle={type === 'email' ? 'Emails' : 'PDFs'}\r\n\t\t\t\tdata={actionBarData}\r\n\t\t\t\tsetData={setActionBarData}\r\n\t\t\t\tactive={actionBarActiveTab}\r\n\t\t\t\tsetActive={setActionBarActiveTab}\r\n\t\t\t\thandleSearch={(search) => {\r\n\t\t\t\t\tupdatePageInfo({ search });\r\n\t\t\t\t\tsetPaginationModel({ ...paginationModel, pageNo: 1 });\r\n\t\t\t\t}}\r\n\t\t\t\tdisabledViews={['Kanban', 'Calendar', 'Gantt',viewTypes.GRID]}\r\n\t\t\t\tfields={schemaFields}\r\n\t\t\t\tselectedIds={selectedRow}\r\n\t\t\t\tbutton={false}\r\n\t\t\t/>\r\n\t\t\t\t\t{actionBarActiveTab === viewTypes.TABLE && (\r\n\t\t\t\t\t\t<MaterialTable\r\n\t\t\t\t\t\t\trows={tableRows || []}\r\n\t\t\t\t\t\t\tcolumns={tableColumns}\r\n\t\t\t\t\t\t\tpaginationModel={paginationModel}\r\n\t\t\t\t\t\t\ttotalPages={total}\r\n\t\t\t\t\t\t\tcolumnOrder={['mrt-row-select', ...generatedColumns.orderKeys]}\r\n\t\t\t\t\t\t\tstates={{ isLoading: isFetching }}\r\n\t\t\t\t\t\t\tonSortingChange={(sort) => updatePageInfo({ sort })}\r\n\t\t\t\t\t\t\tenableColumnDragging={false}\r\n\t\t\t\t\t\t\tenableEditing={false}\r\n\t\t\t\t\t\t\tonSelectRow={(r) =>\r\n\t\t\t\t\t\t\t\tsetSelectedRow(r.map((ele) => ele.original.id))\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tenableAddCustomField={false}\r\n\t\t\t\t\t\t\trowActionMenu={rowActionMenu}\r\n\t\t\t\t\t\t\tisResetRow={false}\r\n\t\t\t\t\t\t\thandleColumnOrdering={(colOrder) =>\r\n\t\t\t\t\t\t\t\tupdateGeneratedColumns({ orderKeys: colOrder.slice(1) })\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tonColumnVisibility={(columns: MaterialTableColumnProps[]) =>\r\n\t\t\t\t\t\t\t\tupdateGeneratedColumns({ columns: columns })\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{actionBarActiveTab === viewTypes.GRID && (\r\n\t\t\t\t\t\t<GridCard\r\n\t\t\t\t\t\t\tdata={tableRows}\r\n\t\t\t\t\t\t\trowActionMenu={rowActionMenu}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{!actionBarActiveTab && (\r\n\t\t\t\t\t\t<Fallback\r\n\t\t\t\t\t\t\theading={t('rental.settings.termsAndConditions.title')}\r\n\t\t\t\t\t\t\tsubHeading='No data available'\r\n\t\t\t\t\t\t\ticon={<img src={logo.invoiceFallback} />}>\r\n\t\t\t\t\t\t</Fallback>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t<Footer\r\n\t\t\t\t\t\ttotal={total}\r\n\t\t\t\t\t\tpaginationModel={{\r\n\t\t\t\t\t\t\t...paginationModel,\r\n\t\t\t\t\t\t\tlimit: activePage.page_size\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\thandlePaginationModel={handlePaginationModel}\r\n\t\t\t\t\t\tresource=''\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t{/* Action Menu */}\r\n\t\t\t\t\t<Menu\r\n\t\t\t\t\t\tanchorEl={actionAnchorEl}\r\n\t\t\t\t\t\topen={Boolean(actionAnchorEl)}\r\n\t\t\t\t\t\tonClose={() => setActionAnchorEl(null)}>\r\n\t\t\t\t\t\t<MenuItem>\r\n\t\t\t\t\t\t\t<Typography type='s4' color='theme.secondary.1000'>\r\n\t\t\t\t\t\t\t\t{t('common.upload')}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t<MenuItem>\r\n\t\t\t\t\t\t\t<Typography type='s4' color='theme.secondary.1000'>\r\n\t\t\t\t\t\t\t\t{t('common.print')}\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t</Menu>\r\n\t\t\t\t\t{showTemplateModal && (\r\n\t\t\t\t\t\t<TemplateModal \r\n\t\t\t\t\t\t\temail={showTemplateModal} \r\n\t\t\t\t\t\t\tonClose={() => setShowTemplateModal(null)} \r\n\t\t\t\t\t\t\topen={showTemplateModal !== null} \r\n\t\t\t\t\t\t\tcompanies={companies}\r\n\t\t\t\t\t\t\ttemplateRoutes={ROUTES}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{showCompanySelectionModal && (\r\n\t\t\t\t\t\t<CompanySelectionModal \r\n\t\t\t\t\t\t\tisOpen={showCompanySelectionModal !== null} \r\n\t\t\t\t\t\t\tsetIsOpen={setShowCompanySelectionModal} \r\n\t\t\t\t\t\t\tcompanies={companies} \r\n\t\t\t\t\t\t\temail={showCompanySelectionModal}\r\n\t\t\t\t\t\t\ttemplateRoutes={ROUTES}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t</section>\r\n\t);\r\n};\r\n\r\nexport default Templates;\r\n"],"names":["logo"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,WAAW,GAAG,4BAAqC,OAAO;AAQ1D,MAAM,YAAsC,CAAC,EAAE,MAAM,QAAQ,iBAAiB;AAC5E,QAAM,EAAE,EAAA,IAAM,eAAA;AACf,QAAM;AAAA,IACL,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAAA,IAEG,SAAA;AACJ,QAAM,aAAa,YAAuB,KAAK;AAE/C,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAA6B,IAAI;AAC5E,QAAM,aAAa,aAAa,QAAQ,qBAAqB;AAC7D,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAuB,aAAa,KAAK,MAAM,UAAU,IAAI,CAAC,EAAE,OAAO,SAAS,UAAU,EAAA,CAAG,CAAC;AAExI,QAAM,CAAC,oBAAoB,qBAAqB,IAAI,SAAiB,UAAU,KAAK;AACrF,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAqB,EAAE,QAAQ,GAAG,OAAO,IAAI,YAAY,GAAG,MAAM,GAAG;AACnH,QAAM,CAAC,MAAM,OAAO,IAAI,SAAgB,CAAA,CAAE;AAC1C,QAAM,CAAC,UAAyB,IAAI,SAAkB,KAAK;AAC3D,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,CAAA,CAAE;AACjD,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAwB,IAAI;AAC9E,QAAM,CAAC,2BAA2B,4BAA4B,IAAI,SAAwB,IAAI;AAC9F,QAAM,CAAC,WAAW,YAAY,IAAI,SAAgC,CAAA,CAAE;AAEpE,QAAM,WAAW,YAAA;AACjB,QAAM,EAAE,QAAQ,OAAO,QAAQ,eAAe;AAC9C,QAAM,QAAQ,WAAW,aAAa;AACtC,QAAM,QAAQ,QAAQ,KAAK,KAAK,aAAa,KAAK,IAAI;AACtD,QAAM,OAAO,SAAS,SAAS;AAC/B,QAAM,cAAc,eAAA;AACpB,QAAM,SAAS,eAAe,YAAY,IAAI;AAE9C,QAAM,sBAAqB,2CAAa,aAAY,CAAA;AAGpD,QAAM;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,EAEX,IAAI;AAIJ,QAAM,iBAAiB,CAAC,UAAU;;AACjC,QAAG,EAAC,uCAAW,SAAQ;AACtB,sBAAgB,8BAA8B,EAAE,SAAS,QAAA,CAAS;AAClE;AAAA,IACD;AAEA,SAAG,uCAAW,UAAS,GAAG;AACzB,mCAA6B,KAAK;AAAA,IACnC,OAAM;AACL,eAAS,OAAO,aAAa,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,cAAY,eAAU,CAAC,MAAX,mBAAc,SAAM,eAAU,CAAC,MAAX,mBAAc,OAAA,GAAQ;AAAA,IAC3G;AAAA,EACD;AAEA,QAAM,gBAAgB;AAAA,IACrB;AAAA,MACC,OAAO;AAAA,MACP,cAAc,CAAC,UAAkB,eAAe,KAAK;AAAA,MACrD,UAAU,CAAC,QAAc,CAAC;AAAA,IAAA;AAAA,IAE3B;AAAA,MACC,OAAO;AAAA,MACP,cAAc,CAAC,UAAkB,qBAAqB,KAAK;AAAA,MAC3D,UAAU,CAAC,QAAc,CAAC;AAAA,IAAA;AAAA,EAC3B;AAID,QAAM,YAAY;AAAA,IACjB,YAAY;AACX,YAAM,EAAE,MAAM,mBAAmB,OAAA,IAAW;AAC5C,YAAM,eAAe,SAAS,iBAAiB,MAAM,KAAK;AAC1D,YAAM,QAAQ,CAAA;AACd,YAAM,KAAK,IAAI;AACf,UAAG,QAAQ,SAAQ;AAClB,cAAM,KAAK,gBAAgB;AAAA,MAC5B;AACA,YAAM,WAAW,sBAAsB,mBAAmB,aAAa,MAAM,KAAK,GAAG,CAAC,eAAe,MAAM,GAAG,YAAY,EAAE;AAE5H,YAAM,WAAW,MAAM,cAAc;AAAA,QACpC,GAAG,SAAA;AAAA,QACH;AAAA,QACA;AAAA;AAAA,QAEA,GAAI,QAAQ,EAAE,OAAO,GAAG,KAAK,EAAE,IAAI,KAAK,OAAO,KAAK,CAAC,GAAA;AAAA,QACrD,GAAI,YAAY,aAAa,QAAQ,EAAE,SAAS,SAAA;AAAA,MAAS,CACzD;AAED,eAAQ,qCAAU,SAAQ,EAAE;AAC5B,yBAAmB,EAAC,GAAG,iBAAiB,IAAI,qCAAU,eAAa,CAAA,GAAI;AAAA,IACxE;AAAA;AAAA,IAEA;AAAA,MACC;AAAA,MACA;AAAA,MACA,yCAAY;AAAA,MACZ,yCAAY;AAAA,MACZ,yCAAY;AAAA,IAAA;AAAA,EACb;AAGD,QAAM,eAAgB,YAAY;AAChC,UAAM,eAAe,MAAM,SAAS,EAAC,QAAQ,WAAW,SAAS,EAAE,MAAM,GAAG,OAAO,KAAK,OAAO,OAAA,GAAS;AACxG,kBAAa,6CAAc,SAAQ,EAAE;AAAA,EACtC;AAED,QAAM,YAAY,QAAQ,MAAM,QAAQ,CAAA,GAAI,CAAC,IAAI,CAAC;AAElD,QAAM,eAAe;AAAA,IACpB,MACC,sBAAsB;AAAA,MACrB,SAAS,iBAAiB;AAAA,MAC1B,gBAAgB,CAAC;;AAChB,gCAAI,aAAJ,mBAAc,kBAAd,mBAA6B,WAAU,sBAAA;AAAA;AAAA,MACxC,eAAe;AAAA,MACf,cAAc;AAAA;AAAA;AAAA,MAGd,MAAM;AAAA,MACN,eAAe;AAAA,IAAA,CACf;AAAA,IACF,CAAC,WAAW,GAAG,iBAAiB,OAAO;AAAA,EAAA;AAGxC,QAAM,wBAAwB,CAAC,UAA4B;AAC1D,QAAI,WAAW,cAAa,+BAAO,QAAO;AACzC,qBAAe,EAAE,WAAW,MAAM,MAAA,CAAO;AAAA,IAC1C;AACA,uBAAmB,KAAK;AAAA,EACzB;AAEA,QAAM,UAAU,MAAM;AACrB,UAAM,SAAS,EAAE,QAAQ,GAAG,OAAO,IAAI,YAAY,EAAA;AACnD,uBAAmB,MAAM;AAAA,EAC1B;AAGA,YAAU,MAAM;AACf,cAAA;AAAA,EACD,GAAG,CAAC,SAAS,CAAC;AAGd,YAAU,MAAM;AACf,iBAAA;AACA,WAAO;AAAA,EACR,GAAG,CAAA,CAAE;AACJ,YAAU,MAAM;AAChB,QAAI,+CAAe,QAAQ;AAC1B,mBAAa,QAAQ,uBAAuB,KAAK,UAAU,aAAa,CAAC;AAAA,IAC1E;AAAA,EACD,GAAG,CAAC,aAAa,CAAC;AAGlB,SACC,qBAAC,WAAA,EAAQ,WAAU,aAClB,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,OAAO,SAAS,UAAU,WAAW;AAAA,QACrC,MAAM;AAAA,QACN,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,cAAc,CAAC,WAAW;AACzB,yBAAe,EAAE,QAAQ;AACzB,6BAAmB,EAAE,GAAG,iBAAiB,QAAQ,GAAG;AAAA,QACrD;AAAA,QACA,eAAe,CAAC,UAAU,YAAY,SAAQ,UAAU,IAAI;AAAA,QAC5D,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,QAAQ;AAAA,MAAA;AAAA,IAAA;AAAA,IAEN,uBAAuB,UAAU,SACjC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAM,aAAa,CAAA;AAAA,QACnB,SAAS;AAAA,QACT;AAAA,QACA,YAAY;AAAA,QACZ,aAAa,CAAC,kBAAkB,GAAG,iBAAiB,SAAS;AAAA,QAC7D,QAAQ,EAAE,WAAW,WAAA;AAAA,QACrB,iBAAiB,CAAC,SAAS,eAAe,EAAE,MAAM;AAAA,QAClD,sBAAsB;AAAA,QACtB,eAAe;AAAA,QACf,aAAa,CAAC,MACb,eAAe,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;AAAA,QAE/C,sBAAsB;AAAA,QACtB;AAAA,QACA,YAAY;AAAA,QACZ,sBAAsB,CAAC,aACtB,uBAAuB,EAAE,WAAW,SAAS,MAAM,CAAC,GAAG;AAAA,QAExD,oBAAoB,CAAC,YACpB,uBAAuB,EAAE,SAAkB;AAAA,MAAA;AAAA,IAAA;AAAA,IAI7C,uBAAuB,UAAU,QACjC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAM;AAAA,QACN;AAAA,MAAA;AAAA,IAAA;AAAA,IAID,CAAC,sBACD;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,SAAS,EAAE,0CAA0C;AAAA,QACrD,YAAW;AAAA,QACX,MAAM,oBAAC,OAAA,EAAI,KAAKA,OAAK,iBAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,IAIxC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA;AAAA,QACA,iBAAiB;AAAA,UAChB,GAAG;AAAA,UACH,OAAO,WAAW;AAAA,QAAA;AAAA,QAEnB;AAAA,QACA,UAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAIV;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,UAAU;AAAA,QACV,MAAM,QAAQ,cAAc;AAAA,QAC5B,SAAS,MAAM,kBAAkB,IAAI;AAAA,QACrC,UAAA;AAAA,8BAAC,UAAA,EACA,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBAC1B,UAAA,EAAE,eAAe,EAAA,CACnB,GACD;AAAA,8BACC,UAAA,EACA,UAAA,oBAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBAC1B,UAAA,EAAE,cAAc,EAAA,CAClB,GACD;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEA,qBACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,OAAO;AAAA,QACP,SAAS,MAAM,qBAAqB,IAAI;AAAA,QACxC,MAAM,sBAAsB;AAAA,QAC5B;AAAA,QACA,gBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,IAGjB,6BACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,QAAQ,8BAA8B;AAAA,QACtC,WAAW;AAAA,QACX;AAAA,QACA,OAAO;AAAA,QACP,gBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,EACjB,GAEJ;AAEF;"}
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),a=,/* empty css */i=,/* empty css */s=,/* empty css */l=,/* empty css */n=,/* empty css */o=,/* empty css */r=,/* empty css */u=,/* empty css */d=,/* empty css */c=,/* empty css */m=,/* empty css */p=,/* empty css */g=,/* empty css */j=require("react-i18next"),x=,/* empty css */f=,/* empty css */b=require("react-router-dom"),y=,/* empty css */h=,/* empty css */v=,/* empty css */q=,/* empty css */S=;/* empty css */;/* empty css */var C=;/* empty css */S.setBaseUrl("http://127.0.0.1:4011/rbac"),exports.default=({type:S,module:k,modulePath:A})=>{const{t:w}=j.useTranslation(),{activePage:_,updatePageInfo:M,schemaFields:T,generatedColumns:E,updateGeneratedColumns:P}=d.usePages(),N=u.default(_),[I,R]=t.useState(null),D=localStorage.getItem("email-subjects-view"),[F,O]=t.useState(D?JSON.parse(D):[{label:"Table",position:0}]),[$,G]=t.useState(i.default.TABLE),[z,B]=t.useState({pageNo:1,limit:10,totalCount:0,skip:0}),[K,L]=t.useState([]),[V]=t.useState(!1),[J,Q]=t.useState([]),[H,U]=t.useState(null),[W,X]=t.useState(null),[Y,Z]=t.useState([]),ee=b.useNavigate(),{pageNo:te,limit:ae,totalCount:ie}=z,se=N.page_size||ae,le=se?Math.ceil(ie/se):0,ne=se*(te-1),oe=y.usePermissions(),re=f.templateRoutes(A,S),ue=(null==oe?void 0:oe.Subjects)||{},{canAdd:de=!1,canEdit:ce=!1}=ue,me=[{label:"New Template",handleAction:e=>(e=>{var t,a;(null==Y?void 0:Y.length)?(null==Y?void 0:Y.length)>1?X(e):ee(re.ADD_TEMPLATE(e._id),{state:{company_id:(null==(t=Y[0])?void 0:t.id)||(null==(a=Y[0])?void 0:a.value)}}):x.enqueueSnackbar("Please add a company first",{variant:"error"})})(e),disabled:e=>!ce},{label:"Add From Template",handleAction:e=>U(e),disabled:e=>!de}],pe=t.useCallback(async()=>{const{sort:e,filterQueryString:t,search:a}=N,i=a?`&subject.like=${a}`:"",s=[];s.push(S),"email"==S&&s.push("approval_email");const l=m.appendConditionSafely(t,`&type.in=[${s.join(",")}]&module.eq=${k}${i}`),n=await h.getV1Subjects({...m.getToken(),skip:ne,limit:se,...e&&{order:`${e.id}:${e.desc?-1:1}`},...l&&"()"!==l&&{filters:l}});L((null==n?void 0:n.data)||[]),B({...z,...(null==n?void 0:n.pagination)||{}})},[se,ne,null==N?void 0:N.search,null==N?void 0:N.filterQueryString,null==N?void 0:N.sort]),ge=t.useMemo(()=>K||[],[K]),je=t.useMemo(()=>c.transformTableColumns({columns:E.columns,currencySymbol:e=>{var t,a;return(null==(a=null==(t=e.original)?void 0:t.currency_data)?void 0:a.symbol)||m.defaultCurrencySymbol()},translationFn:w,enableFooter:!0,rows:ge,statusClasses:""}),[ge,w,E.columns]),xe=()=>{B({pageNo:1,limit:10,totalCount:0})};return t.useEffect(()=>{pe()},[pe]),t.useEffect(()=>((async()=>{const e=await g.fetchApi({apiKey:"company",filters:{skip:0,limit:100,order:"id:1"}});Z((null==e?void 0:e.data)||[])})(),xe),[]),t.useEffect(()=>{(null==F?void 0:F.length)&&localStorage.setItem("email-subjects-view",JSON.stringify(F))},[F]),/* @__PURE__ */e.jsxs("section",{className:"templates",children:[
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),a=,/* empty css */i=,/* empty css */s=,/* empty css */l=,/* empty css */n=,/* empty css */o=,/* empty css */r=,/* empty css */u=,/* empty css */d=,/* empty css */c=,/* empty css */m=,/* empty css */p=,/* empty css */g=,/* empty css */j=require("react-i18next"),f=,/* empty css */x=,/* empty css */b=require("react-router-dom"),y=,/* empty css */h=,/* empty css */v=,/* empty css */q=,/* empty css */S=;/* empty css */;/* empty css */var C=;/* empty css */S.setBaseUrl("https://apidev.erpforce.co/rbac"),exports.default=({type:S,module:k,modulePath:A})=>{const{t:w}=j.useTranslation(),{activePage:_,updatePageInfo:M,schemaFields:T,generatedColumns:E,updateGeneratedColumns:P}=d.usePages(),N=u.default(_),[I,R]=t.useState(null),D=localStorage.getItem("email-subjects-view"),[F,O]=t.useState(D?JSON.parse(D):[{label:"Table",position:0}]),[$,G]=t.useState(i.default.TABLE),[z,B]=t.useState({pageNo:1,limit:10,totalCount:0,skip:0}),[K,L]=t.useState([]),[V]=t.useState(!1),[J,Q]=t.useState([]),[H,U]=t.useState(null),[W,X]=t.useState(null),[Y,Z]=t.useState([]),ee=b.useNavigate(),{pageNo:te,limit:ae,totalCount:ie}=z,se=N.page_size||ae,le=se?Math.ceil(ie/se):0,ne=se*(te-1),oe=y.usePermissions(),re=x.templateRoutes(A,S),ue=(null==oe?void 0:oe.Subjects)||{},{canAdd:de=!1,canEdit:ce=!1}=ue,me=[{label:"New Template",handleAction:e=>(e=>{var t,a;(null==Y?void 0:Y.length)?(null==Y?void 0:Y.length)>1?X(e):ee(re.ADD_TEMPLATE(e._id),{state:{company_id:(null==(t=Y[0])?void 0:t.id)||(null==(a=Y[0])?void 0:a.value)}}):f.enqueueSnackbar("Please add a company first",{variant:"error"})})(e),disabled:e=>!ce},{label:"Add From Template",handleAction:e=>U(e),disabled:e=>!de}],pe=t.useCallback(async()=>{const{sort:e,filterQueryString:t,search:a}=N,i=a?`&subject.like=${a}`:"",s=[];s.push(S),"email"==S&&s.push("approval_email");const l=m.appendConditionSafely(t,`&type.in=[${s.join(",")}]&module.eq=${k}${i}`),n=await h.getV1Subjects({...m.getToken(),skip:ne,limit:se,...e&&{order:`${e.id}:${e.desc?-1:1}`},...l&&"()"!==l&&{filters:l}});L((null==n?void 0:n.data)||[]),B({...z,...(null==n?void 0:n.pagination)||{}})},[se,ne,null==N?void 0:N.search,null==N?void 0:N.filterQueryString,null==N?void 0:N.sort]),ge=t.useMemo(()=>K||[],[K]),je=t.useMemo(()=>c.transformTableColumns({columns:E.columns,currencySymbol:e=>{var t,a;return(null==(a=null==(t=e.original)?void 0:t.currency_data)?void 0:a.symbol)||m.defaultCurrencySymbol()},translationFn:w,enableFooter:!0,rows:ge,statusClasses:""}),[ge,w,E.columns]),fe=()=>{B({pageNo:1,limit:10,totalCount:0})};return t.useEffect(()=>{pe()},[pe]),t.useEffect(()=>((async()=>{const e=await g.fetchApi({apiKey:"company",filters:{skip:0,limit:100,order:"id:1"}});Z((null==e?void 0:e.data)||[])})(),fe),[]),t.useEffect(()=>{(null==F?void 0:F.length)&&localStorage.setItem("email-subjects-view",JSON.stringify(F))},[F]),/* @__PURE__ */e.jsxs("section",{className:"templates",children:[
2
2
  /* @__PURE__ */e.jsx(a.default,{title:"email"===S?"Emails":"PDFs",data:F,setData:O,active:$,setActive:G,handleSearch:e=>{M({search:e}),B({...z,pageNo:1})},disabledViews:["Kanban","Calendar","Gantt",i.default.GRID],fields:T,selectedIds:J,button:!1}),$===i.default.TABLE&&/* @__PURE__ */e.jsx(s.default,{rows:ge||[],columns:je,paginationModel:z,totalPages:le,columnOrder:["mrt-row-select",...E.orderKeys],states:{isLoading:V},onSortingChange:e=>M({sort:e}),enableColumnDragging:!1,enableEditing:!1,onSelectRow:e=>Q(e.map(e=>e.original.id)),enableAddCustomField:!1,rowActionMenu:me,isResetRow:!1,handleColumnOrdering:e=>P({orderKeys:e.slice(1)}),onColumnVisibility:e=>P({columns:e})}),$===i.default.GRID&&/* @__PURE__ */e.jsx(GridCard,{data:ge,rowActionMenu:me}),!$&&/* @__PURE__ */e.jsx(n.default,{heading:w("rental.settings.termsAndConditions.title"),subHeading:"No data available",icon:/* @__PURE__ */e.jsx("img",{src:p.images.invoiceFallback})}),
3
3
  /* @__PURE__ */e.jsx(r.default,{total:le,paginationModel:{...z,limit:N.page_size},handlePaginationModel:e=>{N.page_size!=(null==e?void 0:e.limit)&&M({page_size:e.limit}),B(e)},resource:""}),
4
4
  /* @__PURE__ */e.jsxs(o.default,{anchorEl:I,open:Boolean(I),onClose:()=>R(null),children:[