bpm-core 0.0.140 → 0.0.141

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.
@@ -1 +1 @@
1
- {"version":3,"file":"bpm-core.mjs","sources":["../../../projects/bpm-core/src/lib/constants/constants.ts","../../../projects/bpm-core/src/lib/i18n/en.ts","../../../projects/bpm-core/src/lib/i18n/ar.ts","../../../projects/bpm-core/src/lib/services/i18n.service.ts","../../../projects/bpm-core/src/lib/services/sidenav.service.ts","../../../projects/bpm-core/src/lib/services/feedBack.service.ts","../../../projects/bpm-core/src/lib/hooks/save-form.ts","../../../projects/bpm-core/src/lib/services/core.service.ts.ts","../../../projects/bpm-core/src/lib/services/action.service.ts.ts","../../../projects/bpm-core/src/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.html","../../../projects/bpm-core/src/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.html","../../../projects/bpm-core/src/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.html","../../../projects/bpm-core/src/lib/pipes/format-as-password.pipe.ts","../../../projects/bpm-core/src/lib/pipes/currency.pipe.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/date-picker/date-format.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/base-component/base-component.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/control-value-accessor.directive.ts","../../../projects/bpm-core/src/lib/components/shared-components/terms-conditions/terms-conditions.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/terms-conditions/terms-conditions.component.html","../../../projects/bpm-core/src/lib/pipes/translate.pipe.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/form-label/form-label.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/form-label/form-label.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/validation-errors/validation-error-messages.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/validation-errors/validation-errors.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/validation-errors/validation-errors.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/info-item/info-item.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/info-item/info-item.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/shared-imports.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/checkbox/checkbox.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/checkbox/checkbox.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/date-picker/date-picker.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/date-picker/date-picker.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.html","../../../projects/bpm-core/src/lib/directives/input-map-filter/input-map-filter.directive.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input/input.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input/input.component.html","../../../projects/bpm-core/src/lib/directives/input-map-filter/input-filters.ts","../../../projects/bpm-core/src/lib/directives/input-map-filter/input-mappers.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-number/input-number.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-number/input-number.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-email/input-email.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-email/input-email.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-mask/input-mask.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-mask/input-mask.component.html","../../../projects/bpm-core/src/lib/directives/currency.directive.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-currency/input-currency.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-currency/input-currency.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-autocomplete/index.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-telephone/input-telephone.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-telephone/input-telephone.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/search-employee/search-employee.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/search-employee/search-employee.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/select/select.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/select/select.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/textarea/textarea.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/textarea/textarea.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/toggle-button/toggle-button.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/toggle-button/toggle-button.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/repeated-list/repeated-list.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/repeated-list/repeated-list.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/table-list/table-list.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/table-list/table-list.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/attachment-section/attachment-section.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/attachment-section/attachment-section.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/radio/radio.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/radio/radio.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/multiselect/multiselect.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/multiselect/multiselect.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/time-picker/time-picker.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/time-picker/time-picker.component.html","../../../projects/bpm-core/src/lib/helpers/shared.helper.ts","../../../projects/bpm-core/src/lib/enums/colors.enum.ts","../../../projects/bpm-core/src/lib/enums/events.enum.ts","../../../projects/bpm-core/src/lib/enums/actions.enum.ts","../../../projects/bpm-core/src/lib/directives/skip-location.directive.ts","../../../projects/bpm-core/src/lib/components/shared-components/table/table.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/table/table.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/approvals/approvals.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/approvals/approvals.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.html","../../../projects/bpm-core/src/lib/components/shared-components/action-buttons/action-buttons.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/action-buttons/action-buttons.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/faqs/faqs.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/faqs/faqs.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.html","../../../projects/bpm-core/src/lib/components/shared-components/title-section/title-section.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/title-section/title-section.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/profile-section/profile-section.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/profile-section/profile-section.component.html","../../../projects/bpm-core/src/lib/interfaces/form.interface.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/feedback-section/feedback-section.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/feedback-section/feedback-section.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/activities/activities.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/activities/activities.component.html","../../../projects/bpm-core/src/lib/pipes/status-style.pipe.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/previous-requests/previous-requests.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/previous-requests/previous-requests.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/service-header/service-header.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/service-header/service-header.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/status/status.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/status/status.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/form-section/form-section.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/form-section/form-section.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/main-request-details/main-request-details.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/main-request-details/main-request-details.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/workflow-section/workflow-section.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/workflow-section/workflow-section.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/layout/header/header.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/layout/header/header.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/layout/side-nav/side-nav.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/layout/side-nav/side-nav.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/layout/layout.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/layout/layout.component.html","../../../projects/bpm-core/src/lib/testComponent/request-details-section/request-details-section.component.ts","../../../projects/bpm-core/src/lib/testComponent/request-details-section/request-details-section.component.html","../../../projects/bpm-core/src/lib/testComponent/general-approver-section/general-approver-section.component.ts","../../../projects/bpm-core/src/lib/testComponent/general-approver-section/general-approver-section.component.html","../../../projects/bpm-core/src/lib/testComponent/config/segment-dynamic-loader.config.ts","../../../projects/bpm-core/src/lib/testComponent/services/i18n.service.ts","../../../projects/bpm-core/src/lib/testComponent/services/segment-dynamic-loader.service.ts","../../../projects/bpm-core/src/lib/app/app.component.ts","../../../projects/bpm-core/src/lib/app/app.component.html","../../../projects/bpm-core/src/lib/hooks/load-form.ts","../../../projects/bpm-core/src/lib/functions/encode-password.ts","../../../projects/bpm-core/src/lib/functions/validators.ts","../../../projects/bpm-core/src/lib/functions/handel-error-response.ts","../../../projects/bpm-core/src/lib/functions/data-to-blob.ts","../../../projects/bpm-core/src/lib/validators/id.validator.ts","../../../projects/bpm-core/src/lib/validators/text.directive.ts","../../../projects/bpm-core/src/lib/validators/string-to-boolean.pipe.ts","../../../projects/bpm-core/src/lib/validators/timer.pipe.ts","../../../projects/bpm-core/src/lib/validators/index.ts","../../../projects/bpm-core/src/lib/regex/regex-patterns.ts","../../../projects/bpm-core/src/public-api.ts","../../../projects/bpm-core/src/bpm-core.ts"],"sourcesContent":["// Constant for basic validations\r\nexport const DONT_SHOW = null;\r\nexport const NO_COMMENTS = false;\r\nexport const HAS_COMMENTS = true;\r\nexport const URL_SEPARATOR = '/';\r\nexport const READ_ONLY = true;\r\nexport const WRITE_MODE = false;\r\nexport const NO_VALUE = null;\r\nexport const TRUE_STRING = 'TRUE';\r\nexport const FALSE_STRING = 'FALSE';\r\nexport const TRUE_BOOL = true;\r\nexport const FALSE_BOOL = false;\r\n\r\n// State Machine statuses\r\nexport const STATE_MACHINE_STATUS_IDLE = 'idle';\r\nexport const STATE_MACHINE_STATUS_FETCHING = 'fetching';\r\nexport const STATE_MACHINE_STATUS_SENDING = 'sending';\r\nexport const STATE_MACHINE_STATUS_RESULT = 'result';\r\nexport const STATE_MACHINE_STATUS_ERROR = 'error';\r\n\r\n// State Machine actions\r\nexport const STATE_MACHINE_ACTION_LOAD_FORM = 'loadForm';\r\nexport const STATE_MACHINE_ACTION_SUBMIT_FORM = 'submitForm';\r\nexport const STATE_MACHINE_ACTION_SEARCH_EMPLOYEE = 'searchEmployee';\r\nexport const STATE_MACHINE_ACTION_EMPLOYEE_PROFILE = 'employeeProfile';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_WM = 'successWm';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_RESPONSE = 'serviceResponce';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_USERS = 'successUsers';\r\nexport const STATE_MACHINE_ACTION_CONVERT = 'convert';\r\nexport const STATE_MACHINE_ACTION_SUCCESS = 'success';\r\nexport const STATE_MACHINE_ACTION_FAILURE = 'failure';\r\nexport const STATE_MACHINE_ACTION_HANDLE_ERROR = 'handleError';\r\nexport const STATE_MACHINE_ACTION_LOAD_FILE = 'loadFile';\r\nexport const STATE_MACHINE_ACTION_USER_MAF = 'userDetails';\r\nexport const STATE_MACHINE_ACTION_USER_CEP = 'user';\r\nexport const STATE_MACHINE_ACTION_CALC = 'calc';\r\n\r\n\r\nexport const STATE_MACHINE_ACTION_SHOW_PRINT = 'showPrint';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_PRINT = 'successPrint';\r\nexport const SERVICE_NAME_WM_HTML_GENERATOR = 'htmlGenerator';\r\n\r\n// Process name code\r\nexport const PROCESS_NAME_CODE = 'SCR';\r\n\r\n// HTTP protocols that are available\r\nexport const HTTP_PROTOCOL_HTTP = 'http://';\r\nexport const HTTP_PROTOCOL_HTTPS = 'https://';\r\n\r\n// Liferay constants\r\n// export const LR_AUTH_SERVICE_URL_PATH = '/group/i-gate/wm-bpm/forms/-/proxy/authenticate';\r\n// export const LR_SERVICE_URL_PATH = '/group/i-gate/wm-bpm/forms/-/proxy/execute';\r\n// export const LR_SERVICE_URL_HOST = '10.0.0.48';\r\n// export const LR_SERVICE_URL_HOST_DEV = '10.0.0.156';\r\n// export const LR_SERVICE_URL_PORT_DEV = '8000';\r\n// export const LR_SERVICE_URL_PATH_DEV = '/new.json';\r\n// export const LR_SERVICE_URL_PORT = '17899';\r\n\r\n// HTTP methods that are available are\r\nexport const HTTP_METHOD_GET = 'GET';\r\nexport const HTTP_METHOD_POST = 'POST';\r\nexport const HTTP_METHOD_PUT = 'PUT';\r\n\r\n// Available servers to the UI\r\nexport const TARGET_SERVER_WM = 'WM';\r\nexport const TARGET_SERVER_DP = 'DP';\r\n\r\n// Service Names that are available\r\nexport const SERVICE_NAME_WM_FORM = 'form';\r\nexport const SERVICE_NAME_WM_CHILD_FORM = '';\r\nexport const SERVICE_NAME_DP_SEARCH_EMPLOYEE = 'igate.users.search.v3';\r\n\r\n// Languages codes available in the application\r\nexport const LANGUAGE_CODE_EN = 'en';\r\nexport const LANGUAGE_CODE_AR = 'ar';\r\n\r\n// URLs form static assets\r\nexport const IGATE_STATIC_ASSET_PROFILE_PHOTO_URL = '/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=';\r\nexport const HEADER_CONTENT_TYPE_FORM = 'application/x-www-form-urlencoded';\r\n\r\n// Roles constants\r\nexport const ROLE_REQUESTER = 'R';\r\n\r\n// Section IDs\r\nexport const SECTION_ID_REQUEST_DETAILS = 'requestDetails';\r\nexport const SECTION_ID_GM_PARTIAL_ROLE = 'GM';\r\nexport const SECTION_ID_SM_PARTIAL_ROLE = 'SM';\r\nexport const SECTION_ID_DM_PARTIAL_ROLE = 'DM';\r\nexport const SECTION_ID_VP_PARTIAL_ROLE = 'VP';\r\nexport const SECTION_ID_SVP_PARTIAL_ROLE = 'SVP';\r\nexport const SECTION_ID_EXECUTE_PARTIAL_ROLE = 'GovtRelationsLead';\r\nexport const SECTION_ID_PERFORM_PARTIAL_ROLE = 'GovtRelationsMember';\r\nexport const SECTION_ID_EMP_INFO_APPROVAL_PARTIAL_ROLE = 'EmpInfo';\r\nexport const SECTION_ID_PAYROLL_APPROVAL_PARTIAL_ROLE = 'Payroll';\r\n\r\nexport const SECTION_ID_REQUESTER_PARTIAL_NAME = 'Requester';\r\nexport const SECTION_ID_APPROVAL_PARTIAL_NAME = 'Approval';\r\nexport const SECTION_ID_NOTHING_PARTIAL_NAME = '';\r\n\r\nexport const SECTION_STATUS_PENDING = 'PENDING';\r\nexport const SECTION_STATUS_APPROVED = 'APPROVED';\r\nexport const SECTION_STATUS_UNSATISFIED = 'UNSATISFIED';\r\n\r\nexport const WM_ACTION_SAVE = 'SAVE';\r\nexport const WM_ACTION_SUBMIT = 'SUBMIT';\r\n\r\nexport const FORM_STATUS_NEW = 'NEW';\r\nexport const FORM_STATUS_PENDING = 'PENDING';\r\nexport const FORM_STATUS_APPROVED = 'APPROVED';\r\nexport const FORM_STATUS_APPROVE = 'APPROVE';\r\nexport const FORM_STATUS_REJECTED = 'REJECTED';\r\nexport const FORM_STATUS_REJECT = 'REJECT';\r\nexport const FORM_STATUS_SEND_BACK = 'SENDBACK';\r\nexport const FORM_STATUS_CANCELLED= 'CANCELLED';\r\nexport const FORM_STATUS_CANCEL= 'CANCEL';\r\nexport const FORM_STATUS_COMPLETED = 'COMPLETED';\r\n\r\nexport const STATE_MACHINE_ACTION_LOAD_HISTORY = 'loadHistory';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_HISTORY = 'successHistory';\r\nexport const SERVICE_NAME_DP_LOAD_HISTORY = 'igate.get.inbox.item.workflow';\r\nexport const WM_ACTION_SAVE_CHANGES = 'SAVE_CHANGES';\r\nexport const SERVICE_NAME_WM_DRAFT_FORM = 'draft';\r\n\r\n// feedback and flag\r\nexport const STATE_MACHINE_ACTION_GET_INBOX_ITEM = 'getInboxItem';\r\nexport const SERVICE_NAME_DP_INBOX_ITEM = 'igate.get.inbox.item';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_INBOX_ITEM = 'successInboxItem';\r\n\r\nexport const STATE_MACHINE_ACTION_SET_FLAG = 'setFlagPriority';\r\nexport const SERVICE_NAME_DP_UPDATE_INBOX_ITEM = 'igate.update.inbox.item';\r\nexport const STATE_MACHINE_ACTION_INBOX_ITEM_RESPONSE = 'inboxItemResponse';\r\n\r\nexport const FEEDBACK_STATUS_REQUEST = 'requestFeedback';\r\nexport const FEEDBACK_STATUS_RESPOND = 'respondToFeedback';\r\nexport const FEEDBACK_STATUS_WAITING = 'waitingFeedback';\r\nexport const FEEDBACK_STATUS_RESPONDED = 'feedbackResponded';\r\n\r\n\r\nexport const STATE_MACHINE_ACTION_SUBMIT_FEEDBACK = 'submitFeedback';\r\nexport const STATE_MACHINE_ACTION_GET_FEEDBACK = 'getFeedback';\r\nexport const STATE_MACHINE_ACTION_UPDATE_FEEDBACK = 'submitFeedbackResponse';\r\nexport const SERVICE_NAME_DP_CREATE_FEEDBACK = 'igate.create.inbox.item.feedback';\r\nexport const STATE_NAME_DP_GET_FEEDBACK = 'igate.get.inbox.item.feedback';\r\nexport const SERVICE_NAME_DP_UPDATE_FEEDBACK = 'igate.update.inbox.item.feedback';\r\n\r\n\r\nexport const PROFILE_CONTAINER = '#profileFormContent';\r\nexport const COMMENT_CONTAINER = '#commentsFormContent';\r\nexport const FEEDBACK_CONTAINER = '#feedbackFormContent';\r\nexport const INBOX_STATUS_PENDING = 'pending';\r\nexport const INBOX_STATUS_PROCESSED = 'processed';\r\nexport const INBOX_STATUS_SENT = 'sent';\r\nexport const REPORT = 'report';\r\nexport const DATE_TIME = 'DD/MM/YYYY HH:mm:ss';\r\nexport const DATE_DASH = 'DD-MMM-YYYY';\r\nexport const DATE_SLASH = 'DD/MM/YYYY';\r\n\r\n\r\nexport const SERVICE_NAME_WM_GET_APPROVED_REQUEST = 'requests' ;\r\nexport const SERVICE_NAME_WM_GET_MY_APPROVED_REQUEST = 'myRequests' ;\r\nexport const STATE_MACHINE_ACTION_GET_APPROVED_REQUEST = 'getApprovedRequest';\r\nexport const STATE_MACHINE_ACTION_GET_APPROVED_REQUEST_RESPONSE = 'getApprovedRequestResponse' ;\r\n\r\n\r\nexport const STATE_MACHINE_ACTION_PROJECT_MAF = 'projectDetails';\r\nexport const STATE_MACHINE_ACTION_PROJECT_CEP = 'project';\r\nexport const STATE_MACHINE_ACTION_COMMONAPI = 'commonApi';\r\nexport const STATE_MACHINE_ACTION_SEARCH = 'search';\r\nexport const STATE_MACHINE_ACTION_PPROVED_REQUESTS = 'approvedRequests';\r\nexport const GETSIPORTENTRYGROUPS = 'getSiportEntryGroups';\r\nexport const GETSIPORTENTRYLOCATIONS = 'getSiportEntryLocations';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_SERVICES= 'serviceResponce';\r\nexport const SERVICE_NAME_MAF = 'MAF';\r\nexport const SERVICE_NAME_CEP = 'CEP';\r\nexport const STATE_MACHINE_ACTION_PDF = 'pdfAttachments';\r\n\r\nexport const LOGOUT_URL = '/c/portal/logout';\r\n\r\nexport const WORKFLOW_ITEMS = 'workflowItems';\r\nexport const APPROVERS = 'approvers';\r\n","export default {\r\n \"pageTimeOut\": 'Looks like the server is taking too long to respond, this can be caused by either poor connectivity or an error with our servers. Please try again in a while',\r\n \"pageErrorLoading\":'An error occurred, Please try after sometimes. If the error continues, please contact the IT Helpdesk',\r\n // Buttons\r\n \"reset\": \"Reset\",\r\n \"submit\": \"Submit\",\r\n // Select\r\n \"selectYourOption\": \"Select your option\",\r\n // Labels\r\n \"optional\": \"Optional\",\r\n \"Optional\": \"Optional\",\r\n //Buttons\r\n \"browse\": \"Browse\",\r\n // Request Details Title\r\n \"requestDetailsTitle\":\"Request Details\",\r\n \"hrRequestDetailsTitle\":\"Request Details (Grievance Employee)\",\r\n \"applyRequestFor\": 'Apply Request For',\r\n \"searchForEmployee\":'Search for employee',\r\n // Profile Info Labels\r\n \"directManager\": \"Direct Manager\",\r\n \"employeeEmail\": \"Email\",\r\n \"generalDepartmentName\": \"General Dep.Name\",\r\n \"departmentName\": \"Department\",\r\n \"generalDepartmentCode\": \"General Dep. Code\",\r\n \"humanResourcesLocation\": \"HR location\",\r\n \"nationality\": \"Nationality\",\r\n \"businessPhone\": \"Business Phone\",\r\n \"viewAllDetails\": \"View All Details\",\r\n \"jobPosition\": \"Job Position\",\r\n \"sector\": \"Sector\",\r\n // Form Section labels\r\n \"delegateTo\": \"Delegated to\",\r\n \"processedBy\":\"Processed by\",\r\n // Datepicker labels\r\n \"gregorian\": \"Gregorian\",\r\n \"hijri\": \"Hijri\",\r\n // Messages\r\n \"successSubmited\": \"Thank you for submitting this form\",\r\n \"lenghtMin15Max500\":\"Please enter minimum 15 characters and maximum 500 characters\",\r\n \"lenghtMin15Max1000\":\"Please enter minimum 15 characters and maximum 1000 characters\",\r\n \"minLength15\": \"Please enter a minimum of 15 characters\",\r\n \"maxlength500\": \"500 is the maximum number of characters supported\",\r\n \"maxSize\": \"Maximum file size is 10MB\",\r\n \"unsupportedType\": \"Maximum file size allowed is 10MB and accepted extensions are (pdf, doc, docx, ppt, pptx, pps, ppsx, odt, xls, xlsx, zip, msg, csv, txt, rtf, html, mp4, m4v, mov, wmv, avi, mpg, ogv, 3gp, 3g2, jpg, jpej, png, gif, bmp)\",\r\n \"unsupportedTypeImgPdf\": \"Maximum file size allowed is 10MB and accepted extensions are (pdf, jpg, jpej, png, bmp)\",\r\n \"unsupportedTypeImgPdf2\": \"Maximum file size allowed is 10MB and accepted extensions are (pdf, docx, xlsx, jpg, email, pptx)\",\r\n \"unsupportedTypeImg\": \"Maximum file size allowed is 10MB and accepted extensions are (jpg, jpej, png, bmp)\",\r\n \"unsupportedTypePdf\": \"Maximum file size allowed is 10MB and accepted extension is (pdf)\",\r\n \"noUsersFound\": \"Please enter valid search data\",\r\n // Submit Table\r\n \"formTableFormId\": \"Form ID\",\r\n \"formTableFormStatus\": \"Form Status\",\r\n \"formTableCreationDate\": \"Creation Date\",\r\n \"formTablePendingWith\": \"Pending With\",\r\n \"formTableBackToInbox\": \"Back to Inbox\",\r\n // feedback\r\n \"requestFeedback\": \"Request Feedback\",\r\n \"requestTo\": \"Request To\",\r\n \"feedback\": \"Feedback\",\r\n \"viewFeedback\": \"View Feedback\",\r\n \"requestFrom\": \"Request From\",\r\n \"feedbackQuestion\": \"Feedback Question\",\r\n \"employeeSearch\": \"Employee Search\",\r\n \"searchEmployeeTooltip_1\": \"Enter minimum 3 character to start employee search\",\r\n \"searchEmployeeTooltip_2\": \"Type umber to search by employee number\",\r\n \"searchEmployeeTooltip_3\": \"To search by email. use @ before or after search character\",\r\n \"searchEmployeeTooltip_4\": \"Seperate First name, Second Name, Family Name with space to search by First Name, Second Name and Family Name\",\r\n \"onBehalfFlag\":\"Request On-behalf\",\r\n \"onBehalfOfEmail\":\"Employee Name\",\r\n \"commentHistory\":\"Comments History\",\r\n \"NODATA\": 'No Data',\r\n \"termsAndConditions\": 'Terms And Conditions',\r\n \"no-files\": \" No documents attached\",\r\n \"drag-files\": \"Drag and drop file here\",\r\n \"limit-error\": \"limit error\",\r\n \"size-error\": \"size error\",\r\n \"type-error\": \"type error\",\r\n \"duplicated-error\": \"This file already exist\",\r\n \"thisIsInvalidFile\": 'This is invalid file',\r\n \"add\": \"Add\",\r\n \"addAttachments\": \"Add Attachments\",\r\n \"attachmentdescription\": \"File Description\",\r\n \"attachmentcomment\": \"Comments\",\r\n // \"attachment\": \"Attachment\",\r\n \"addAttachment\": \"Add Attachment\",\r\n \"locationOfIncident\": \"Location Of The Incident\",\r\n \"FileName\": \"File Name\",\r\n \"FileDescription\": \"File Description\",\r\n // \"delete\": \"Delete\",\r\n \"Attachments\":\"Attachments\",\r\n \"Attachment\":\"Attachment\",\r\n \"comment\":\"Comments\",\r\n \"comments\":\"Comments\",\r\n \"description\":\"Description\",\r\n \"MyRequests\": \"My Requests\",\r\n \"processingDate\":\"Processing Date\",\r\n \"Approvals\":\"Approvals\",\r\n \"submittedSuccessfully\": \"Your request submitted successfully\",\r\n \"support\": \" Supported files: JPG,PNG & PDF\",\r\n \"support2\": \"Maximum file size allowed is \",\r\n \"mb\": \"MB\",\r\n \"support3\": \"Maximum file size is 300 KB\",\r\n \"maxAllowedSize\": \"Maximum file size allowed is 10MB\",\r\n \"ViewDetails\":\"View Details\",\r\n \"NoData2\": \"No Data found\",\r\n \"NoData1\": \"No Comments found\",\r\n \"NoData\": \"No Data found\",\r\n \"Filters\": \"Filter\",\r\n \"ApplyFilters\": \"Apply\",\r\n \"Discard\": \"Discard\",\r\n \"employeeID\": \"Employee ID\",\r\n \"Delete\": \"Delete\",\r\n \"fullName\":\"Full Name\",\r\n \"welcomeBack\": \"Welcome back\",\r\n \"welcome\": \"Welcome \",\r\n \"logout\": \"Logout\",\r\n \"otherLang\": \"العربية\",\r\n \"Hello\": \"Hello\",\r\n \"Cancel\":\"Cancel\",\r\n \"validEmailError\": 'Please enter valid Email ',\r\n \"validFieldError\": 'Please enter valid ',\r\n \"validSelectError\": 'Please select ',\r\n \"validSearchError\": 'Please search for valid ',\r\n \"delete\": \"Delete\",\r\n \"Areyousureyouwantdelete\":\"Are you sure you want to delete?\",\r\n \"drf-confirmatton-msg\":\"There are still pending stakeholders actions. Please confirm if you want to move to the next level without these actions.\",\r\n \"Yes-Proceed\":\" Yes - Proceed\",\r\n \"No-Discard\":\"No - Discard\",\r\n \"yes\":\" Yes, Delete\",\r\n \"NoAttachments\": \"There are no Attachments\",\r\n \"cancel\": \"Cancel\",\r\n \"View\":\"View\",\r\n \"edit\":\"Edit\",\r\n \"Viewapprovalcycle\": \"View Approval Cycle\",\r\n \"approvalCycle\": \"Approval Cycle\",\r\n \"link\":\"Link\",\r\n\r\n\r\n AttachmentInvoices: 'Attachment Invoices',\r\n AttachmentsOfBank:'Attachments of Bank Statement or Credit Card',\r\n DepositVoucherAttachments:'Deposit Voucher Attachments',\r\n placeholder: 'Enter value here',\r\n approve:'Approve',\r\n downloadLink:\"Download Link\",\r\n serviceBrief : \"Service Brief\",\r\n PreviousRequests:\"Previous Requests\",\r\n 'Product Implementation': 'Product Implementation',\r\n 'Sales Order and Quality Assurance':'Sales Order and Quality Assurance',\r\n 'Billing Support and Contracts':'Billing Support and Contracts',\r\n 'Sales Excellence':'Sales Excellence',\r\n 'Order Engineering and Delivery Management':'Order Engineering and Delivery Management',\r\n 'Third Party Control and Projects':'Third Party Control and Projects',\r\n 'Enterprise Customer Care':'Enterprise Customer Care',\r\n 'Enterprise Account Sales':'Enterprise Account Sales',\r\n 'Government Accounts Sales':'Government Accounts Sales',\r\n 'Marketing Communications':'Marketing Communications',\r\n 'Customer Experience Excellence':'Customer Experience Excellence',\r\n 'Commercial Regulation':'Commercial Regulation',\r\n 'Enterprise Commercial Finance':'Enterprise Commercial Finance',\r\n 'Product Pricing and Profitability':'Product Pricing and Profitability',\r\n 'Data Protection and Privacy':'Data Protection and Privacy',\r\n 'Customer Value Management':'Customer Value Management',\r\n\r\n termNote1: \"1. The requesting department is responsible for the validity of the attached papers and supervision of labor\",\r\n termNote2: \"2. The worker must be on the sponsorship of the contracting company. In the case of subcontracting, the contract between the two parties must be attached, signed, stamped and updated. And the worker must be on the sponsorship of the subcontracting company\",\r\n termNote3: \"3. The profession of the worker in his residence must be identical to his work and in accordance with the nature of his work\",\r\n termNote4: \"4. For persons who attend a visit visa, a valid visit visa must be attached, with attachment of proof of the relationship with the stc company, either (contract / or letter from the requesting party stating the mission of the visit to the company (stc)). They will be granted a permission for the duration of their stay with the visa.\",\r\n termNote5: \"5. The entry permit card must not be used by someone else, and should be returned to the security department once you're finished. In case it is lost, please call Security and Safety Department 8001231616 or 0114251616 (the main center). A new entry permit application is required to be exchanged for a lost card. With a fine of 500 riyals for the first time and 1000 riyals for the second time, and on the third time it is forbidden to enter and referred to the relevant government agencies.\",\r\n termNote6: \"6. The contracting company bears all legal consequences of any damage caused by the worker inside the work sites of the company (stc).\",\r\n termNote7: \"7. We hope to print the form (from the print button at the top of the form) after approval by the Card Services Division, and bring it upon review to issue a card.\",\r\n termNote8: \"8. The main contractor and subcontractors shall comply with safety and security instructions as stipulated in the contracts concluded with all the contractors of the company (stc) and subject to periodic inspection procedures for the sites by safety inspectors to ensure compliance with safety instructions and safe work policy and violations. Financial violations and fines will be released if they are shown and described in financial values via vendor relations department:\",\r\n termNote9: \"9. The requesting department shall include the technical reports recommended for exchange and safety violations, if any. It is deducted from the entitlement, in implementation of the list of fines and penalties for safety violations against contractors signed by the Vice President for Procurement.\",\r\n termNote10: \"10. Collecting the ID cards of the main center in the card-issuing center-Gate 3 , as for the rest of the regions, you can collect it from the Department of Security of Regions.\",\r\n termNote11: \"11. The list of penalties and fines is applied to vehicles violators inside the STC sites where the violating vehicles are stopped by putting the brakes on them, and the company fully disclaims any damage caused by the brake upon tying or untying\",\r\n \"messageErrorPhoneNumber\": \"Please enter valid mobile number.\",\r\n serviceAgreement: \"Service agreement\",\r\n lengthError: \"can't upload more than\",\r\n userAlreadyExist: \"User already exists\",\r\n INTERNAL: 'Internal: Make the document/record available for viewing within the company only',\r\n SPECIFIC_OR_CONFIDENTIAL: 'Specific or confidential: Publication of the document/record with viewing permit limited to: <br>* Specific Names <br>* Specific organizational unit <br>* Specific administrative levels',\r\n AVAILABLE: 'Available: make the document/record available for viewing within and outside the company.',\r\n other:'Other',\r\n others:'Others',\r\n selectAll:'Select All',\r\n URGENT: '1 day',\r\n NORMAL: '3 days',\r\n select: 'Select',\r\n addMultiAttachments:\"Add Multi Attachments\",\r\n flagStatusUpdated:\"Flag status updated successfully\",\r\n \"AllRequests\": \"All Requests\",\r\n \"applyFilters\": \"Apply Filters\",\r\n \"clear\": \"Clear\",\r\n \"filters\": \"Filters\",\r\n month: \"Month\",\r\n year: \"Year\",\r\n status: \"Status\",\r\n downloadAll:'Download All Attachment',\r\n startDate: \"Start Date\",\r\n endDate: \"End Date\",\r\n textArea: \"Text area\",\r\n enter: \"Enter\",\r\n}\r\n","export default {\r\n pageErrorLoading: \"حدث خطأ، يرجى المحاولة لاحقا. إذا استمر الخطأ، يرجى الاتصال بمكتب مساعدة تقنية المعلومات\",\r\n pageTimeOut:\"يبدو أن الخادم يستغرق وقتًا طويلاً للرد، وقد يحدث هذا بسبب ضعف الاتصال أو خطأ في خوادمنا. يرجى المحاولة مرة أخرى بعد قليل\",\r\n // Buttons\r\n \"reset\": \"إعادة تهيئة\",\r\n \"submit\": \"إرسال\",\r\n // Select\r\n \"selectYourOption\": \"الرجاء الإختيار\",\r\n // Labels\r\n \"optional\": \"إختياري\",\r\n \"Optional\": \"إختياري\",\r\n //Buttons\r\n \"browse\": \"تصفح\",\r\n \"MyRequests\": \"طلباتي\",\r\n \"maxAllowedSize\": \"حجم الملف يجب ألا يتعدى 10 ميغابايت\",\r\n // Request Details Title\r\n \"requestDetailsTitle\":\"تفاصيل الطلب\",\r\n \"hrRequestDetailsTitle\":\"تفاصيل الطلب (الموارد البشرية)\",\r\n \"applyRequestFor\": \"تقديم الطلب لـ\",\r\n \"searchForEmployee\":\"البحث عن موظف\",\r\n // Profile Info labels\r\n \"directManager\": \"المدير المباشر\",\r\n \"employeeEmail\": \"البريد الإلكتروني\",\r\n \"generalDepartmentName\": \"الإدارة العامة\",\r\n \"departmentName\": \"القسم\",\r\n \"generalDepartmentCode\": \"رمز الإدارة العامة\",\r\n \"humanResourcesLocation\": \"شئون الموظفين\",\r\n \"nationality\": \"الجنسية\",\r\n \"businessPhone\": \"هاتف العمل\",\r\n \"Viewapprovalcycle\": \"عرض دورة الموافقة\",\r\n \"approvalCycle\": \" دورة الموافقة\",\r\n \"viewAllDetails\": \"عرض جميع التفاصيل\",\r\n \"jobPosition\": \"الوظيفة\",\r\n \"sector\": \"القطاع\",\r\n // Form Section labels\r\n \"delegateTo\": \"فوض\",\r\n \"processedBy\":\"تمت معالجته بواسطة\",\r\n // Datepicker labels\r\n \"gregorian\": \"ميلادي\",\r\n \"hijri\": \"هجري\",\r\n // Messages\r\n \"successSubmited\": \".شكراً لإرسالك النموذج\",\r\n \"lenghtMin15Max500\":\"الرجاء إدخال 15 حرف كحد أدنى و 500 حرف كحد أقصى\",\r\n \"lenghtMin15Max1000\":\"الرجاء إدخال 15 حرف كحد أدنى و 1000 حرف كحد أقصى\",\r\n \"minLength15\": \"الرجاء كتابة 15 حرف بحد أدنى\",\r\n \"maxlength500\": \"الحد الأقصى المسموح 500 حرف\",\r\n \"maxSize\": \"حجم الملف يجب ألا يتعدى 10 ميغابايت\",\r\n \"unsupportedType\": \"الحد الأقصى المسموح لحجم الملف 10 ميجابيت و أنواع الملفات المسموح إضافتها pdf, doc, docx, ppt, pptx, pps, ppsx, odt, xls, xlsx, zip, csv, txt, rtf, html, mp4, m4v, mov, wmv, avi, mpg, ogv, 3gp, 3g2, jpg, jpej, png, gif, bmp\",\r\n \"unsupportedTypeImgPdf\": \"الحد الأقصى المسموح لحجم الملف 10 ميجابيت و أنواع الملفات المسموح إضافتها (pdf, jpg, jpej, png, bmp)\",\r\n \"unsupportedTypeImgPdf2\": \"الحد الأقصى المسموح لحجم الملف 10 ميجابيت و أنواع الملفات المسموح إضافتها (pdf, docx, xlsx, jpg, email, pptx)\",\r\n \"unsupportedTypeImg\": \"الحد الأقصى المسموح لحجم الملف 10 ميجابيت و أنواع الملفات المسموح إضافتها (jpg, jpej, png, bmp)\",\r\n \"unsupportedTypePdf\": \"الحد الأقصى المسموح لحجم الملف 10 ميجابيت و أنواع الملفات المسموح إضافتها (pdf)\",\r\n \"noUsersFound\": \"الرجاء إدخال بيانات البحث بشكل صحيح\",\r\n // Submit Table\r\n \"formTableFormId\": \"رقم النموذج\",\r\n \"formTableFormStatus\": \"حالة النموذج\",\r\n \"formTableCreationDate\": \"تاريخ النموذج\",\r\n \"formTablePendingWith\": \"في انتظار\",\r\n \"formTableBackToInbox\": \"عودة إلى البريد الوارد\",\r\n // feedback\r\n \"requestFeedback\":\"طلب إفادة\",\r\n \"requestTo\": \"أرسل الى\",\r\n \"feedback\": \"إفادة\",\r\n \"viewFeedback\": \"إظهار الإفادة\",\r\n \"requestFrom\": \"مرسلة من\",\r\n \"feedbackQuestion\": \"سؤال الإفادة\",\r\n \"employeeSearch\": \"البحث عن موظف\",\r\n \"searchEmployeeTooltip_1\": \"أدخل ثلاثة أحرف بحد أدنى لتبدأ البحث عن الموظف\",\r\n \"searchEmployeeTooltip_2\": \"أدخل رقم للبحث برقم الموظف\",\r\n \"searchEmployeeTooltip_3\": \"للبحث بالعنوان البريدي أدخل @ قبل أو بعد حرف\",\r\n \"searchEmployeeTooltip_4\": \"أترك مسافة للبحث بالإسم الأول أو الثاني أو الأخير\",\r\n \"onBehalfFlag\":\"طلب بالانابة عن\",\r\n \"onBehalfOfEmail\":\"إسم الموظف\",\r\n \"commentHistory\":\"سجل التعليقات\",\r\n \"NODATA\": \"لا يوجد بيانات\",\r\n \"termsAndConditions\":\"الشروط والاحكام\",\r\n \"no-files\": \" لا توجد مرفقات\",\r\n \"drag-files\": \"إسحب المرفقات هنا\",\r\n \"limit-error\": \"عدد المرفقات تجاوز المطلوب\",\r\n \"size-error\": \"حجم المرفقات تجاوز المطلوب\",\r\n \"type-error\": \"توع المرفقات غير مناسب\",\r\n \"duplicated-error\": \"تم إرفاق الملف بالفعل\",\r\n \"thisIsInvalidFile\": 'هذا ملف غير صالح',\r\n \"add\": \"اضافة\",\r\n \"addAttachments\": \"اضافة مرفقات\",\r\n \"attachmentdescription\": \"وصف الملف\",\r\n \"attachmentcomment\": \"التعليقات\",\r\n // \"attachment\": \"المرفق\",\r\n \"addAttachment\": \"اضافة المرفق\",\r\n \"locationOfIncident\": \"موقع البلاغ\",\r\n \"FileName\": \"اسم الملف\",\r\n \"FileDescription\": \"وصف الملف\",\r\n // \"delete\": \"حذف\",\r\n \"Attachments\": \"المرفقات\",\r\n \"Attachment\": \"المرفق\",\r\n \"comment\":\"ملاحظات\",\r\n \"comments\":\"ملاحظات\",\r\n \"description\":\"الوصف\",\r\n \"processingDate\":\"تاريخ معالجة الطلب\",\r\n \"Approvals\":\"الموافقات\",\r\n \"submittedSuccessfully\":\"تم تقديم الطلب بنجاح\",\r\n \"support\": \"الملفات المسموحة : PNG & JPG & PDF\",\r\n \"support2\": \"الحد الأقصى لحجم الملف المسموح به هو \",\r\n \"mb\": \"ميغابايت\",\r\n \"support3\": \" الحد الأقصى لحجم الملف المسموح به هو 300 كيلوبايت\",\r\n \"employeeID\": \"الرقم الوظيفي \",\r\n \"NoData\": \"لا توجد طلبات\",\r\n \"NoData1\": \"لا توجد تعليقات\",\r\n \"NoData2\": \"لا توجد بيانات\",\r\n \"Delete\": \"حذف\",\r\n \"ViewDetails\":\"عرض التفاصيل\",\r\n \"fullName\":\"الإسم\",\r\n \"welcomeBack\": \"مرحبا بعودتك\",\r\n \"Hello\": \"مرحبا\",\r\n \"Cancel\":\"إلغاء\",\r\n \"validEmailError\": 'يجب إدخال بريد الكتروني صحيح ',\r\n \"validFieldError\": 'يجب إدخال ',\r\n \"validSelectError\": 'برجاء اختيار ',\r\n \"validSearchError\": 'برجاء البحث عن ',\r\n \"delete\": \"حذف\",\r\n \"Areyousureyouwantdelete\": \"هل أنت متأكد من أنك تريد حذف هذا الطلب؟\",\r\n \"drf-confirmatton-msg\":\"يوجد طلبات لم تتم حتى الان .. الرجاء التأكيد اذا رغبت بنقل الطلب للمرحله التالية بدون مدخلاتهم\",\r\n \"Yes-Proceed\":\" نعم – اكمل الطلب\",\r\n \"No-Discard\":\" لا – الغاء\",\r\n \"yes\": \" نعم\",\r\n \"NoAttachments\": \"لا توجد مرفقات\",\r\n \"cancel\" : \"إلغاء\",\r\n \"View\":\"عرض\",\r\n \"edit\":\"تعديل\",\r\n placeholder: 'أملا هذا الحقل',\r\n downloadLink:\"تحميل الرابط\",\r\n \"link\":\"الرابط\",\r\n\r\n\r\n\r\n AttachmentInvoices: 'مرفقات الفواتير',\r\n AttachmentsOfBank: 'مرفقات كشف الحساب البنكي أو البطاقة الإئتمانية',\r\n DepositVoucherAttachments: 'مرفقات قسيمة الإيداع',\r\n serviceBrief : \"وصف الخدمة\",\r\n PreviousRequests:\"الطلبات السابقة\",\r\n 'Product Implementation': 'Product Implementation',\r\n 'Sales Order and Quality Assurance':'Sales Order and Quality Assurance',\r\n 'Billing Support and Contracts':'Billing Support and Contracts',\r\n 'Sales Excellence':'Sales Excellence',\r\n 'Order Engineering and Delivery Management':'Order Engineering and Delivery Management',\r\n 'Third Party Control and Projects':'Third Party Control and Projects',\r\n 'Enterprise Customer Care':'Enterprise Customer Care',\r\n 'Enterprise Account Sales':'Enterprise Account Sales',\r\n 'Government Accounts Sales':'Government Accounts Sales',\r\n 'Marketing Communications':'Marketing Communications',\r\n 'Customer Experience Excellence':'Customer Experience Excellence',\r\n 'Commercial Regulation':'Commercial Regulation',\r\n 'Enterprise Commercial Finance':'Enterprise Commercial Finance',\r\n 'Product Pricing and Profitability':'Product Pricing and Profitability',\r\n 'Data Protection and Privacy':'Data Protection and Privacy',\r\n 'Customer Value Management':'Customer Value Management',\r\n\r\n\r\n termNote1: \"1. الإدارة الطالبة مسئولة عن صحة الأوراق المرفقة، والإشراف على العمالة.\",\r\n termNote2: \"2.\tيجب أن يكون العامل على كفالة الشركة المقاولة ، وفي حالة التعاقد من الباطن يجب ارفاق العقد بين الطرفين موقعا ومختوما وحديثا ، وأن يكون العامل على كفالة الشركة المتعاقد من الباطن .\",\r\n termNote3: \"3. يجب أن تكون مهنة العامل في إقامته مطابقة لما يقوم به من أعمال وبما يتوافق مع طبيعة عمله\",\r\n termNote4: \"4. بالنسبة للأشخاص الذين يحضرون بتأشيرة زيارة يلزم ارفاق تأشيرة الزيارة سارية المفعول ، مع إرفاق مايثبت العلاقة مع شركة (stc) .إما عقد / أو خطاب من الجهة الطالبة موضحاً مهام الزيارة لشركة (stc). ويمنح فترة تصريح بمدة أقامته بالتأشيرة\",\r\n termNote5: \"5. يمنع استخدام بطاقة تصريح الدخول من قبل شخص أخر ، ويجب إعادتها عند الإنتهاء إلى إدارة الأمن . وفي حال ضياعها يجب إبلاغ إدارة الأمن والسلامة على الهاتف 8001231616 أو 0114251616 ( المركز الرئيسي ). ثم يلزم تقديم طلب تصريح دخول جديد ليتم صرف بطاقة بدل فاقد مع فرض غرامة مالية 500 ريال للمرة الأولى و1000 ريال للمرة الثانية ، وفي المرة الثالثة يمنع من الدخول ويحال للجهات الحكومية ذات العلاقة.\",\r\n termNote6: \"6. تتحمل الشركة المقاولة كافة التبعات القانونية لأي اضرار يحدثها العامل داخل مواقع العمل بشركة (stc)\",\r\n termNote7: \"7. نأمل طباعة النموذج (من زر الطباعة أعلى النموذج) بعد الموافقة عليه من قبل شعبة خدمات البطاقات، وإحضاره عند المراجعة ليتم إصدار البطاقة\",\r\n termNote8: \"8. يلتزم المقاول الرئيسي ومقاولي الباطن بتعليمات الأمن والسلامة كما نصت على ذلك العقود المبرمة مع جميع مقاولي شركة (stc) والخضوع لإجراءات التفتيش الدورية للمواقع من قبل مفتشي السلامة للتأكد من الإلتزام بتعليمات السلامة وسياسة العمل الآمن وسوف يتم تحرير مخالفات وغرامات مالية في حال وجودها موضحة وموصوفة بالقيم المالية عبر علاقات الموردين على الرابط :\",\r\n termNote9: \"9. تلتزم الإدارة الطالبة بتضمين التقارير الفنية الموصية بالصرف مخالفات السلامة إن وجدت وتخصم من الاستحقاق وذلك تطبيقاً لإجراء لائحة الغرامات والجزاءات لمخالفات السلامة على المقاولين\",\r\n termNote10: \"10. تسليم بطاقات المركز الرئيسي في مركز إصدار البطاقات بوابة رقم 3 , أما بقية المناطق تسلم في إدارة أمن المناطق\",\r\n termNote11: \"11. يتم تطبيق لائحة الجزاءات والغرامات على المخالفين داخل مواقع STC حيث يتم إيقاف المركبات المخالفة عن طريق وضع الكوابح عليها، وتخلي الشركة مسؤوليتها بشكل كامل عن أي أضرار يتسبب بها الكابح عند التركيب أو الفك\",\r\n messageErrorPhoneNumber: \"الرجاء ادخال رقم جوال صحيح\",\r\n\r\n serviceAgreement: \" الشروط و الضوابط\",\r\n lengthError: \"لا يمكن أدخال أكثر من\",\r\n userAlreadyExist: \"هذا المستخدم موجود مسبقاً\",\r\n INTERNAL: 'داخلي: إتاحة الوثيقة/السجل للإطلاع داخل الشركة فقط',\r\n SPECIFIC_OR_CONFIDENTIAL: 'محدد/سري: نشر الوثيقة/السجل بصلاحية إطلاع مقصورة على: <br> أسماء محددة <br> وحدة تنظيمية محددة<br> مستويات إدارية محددة',\r\n AVAILABLE: 'متاح: إتاحة الوثيقة/السجل للإطلاع داخل و خارج الشركة',\r\n other:'آخر',\r\n others:'آحرون',\r\n selectAll:'اختر الكل',\r\n URGENT: '1 يوم',\r\n NORMAL: '3 أيام',\r\n select: 'اختر',\r\n addMultiAttachments:\"إضافة أكثر من ملف\",\r\n \"welcome\": \"مرحبا \",\r\n \"logout\": \"تسجيل خروج\",\r\n \"otherLang\": \"English\",\r\n flagStatusUpdated:\"تم التحديث بنجاح\",\r\n \"AllRequests\": \"عدد الطلبات\",\r\n \"clear\": \"مسح\",\r\n \"applyFilters\": \"تصفية\",\r\n \"filters\": \"تصفية\",\r\n month: \"الشهر\",\r\n year: \"السنة\",\r\n status:\"الحالة\",\r\n downloadAll:'تحميل جميع المرفقات',\r\n startDate: \"تاريخ البداية\",\r\n endDate: \"تاريخ النهاية\",\r\n textArea: \"خانة النص\",\r\n enter: \"ادخل\",\r\n\r\n\r\n\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Injectable } from '@angular/core';\r\nimport * as coreEn from '../i18n/en';\r\nimport * as coreAr from '../i18n/ar';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class CoreI18nService {\r\n private coreLocales: { [key: string]: { [key: string]: string } };\r\n public language: string;\r\n\r\n constructor() {\r\n // this.language = \"en\";\r\n this.language = (window as any).wmConfig.language;\r\n this.coreLocales = { en: coreEn.default, ar: coreAr.default };\r\n }\r\n\r\n translate(key) {\r\n let result = null;\r\n try {\r\n result = this.coreLocales[this.language][key];\r\n } catch (e) {\r\n result = null;\r\n }\r\n return result || key;\r\n }\r\n\r\n getLanguage() {\r\n return this.language;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SidenavService {\r\n public subject = new Subject<{}>();\r\n public sideNavOpened = new BehaviorSubject(false);\r\n public data: any = new ReplaySubject();\r\n public field: any = new ReplaySubject();\r\n public mode: any = new ReplaySubject();\r\n public index: any = new ReplaySubject();\r\n public value: any = new BehaviorSubject(false);\r\n public contentData: any = {};\r\n public afterClosed: ReplaySubject<any> = new ReplaySubject();\r\n\r\n publish(eventName: string, componentName: any, position: any = 'end', mode: any = 'over', content?: any) {\r\n this.sideNavOpened.next(true);\r\n if (content) {\r\n this.contentData = content;\r\n }\r\n this.subject.next({ eventName, componentName, position, mode, content });\r\n }\r\n\r\n closeSidenav(data?: any) {\r\n this.publish('close', null);\r\n this.afterClosed.next(data);\r\n this.afterClosed = new ReplaySubject();\r\n this.contentData = {};\r\n }\r\n}\r\n","import {HttpClient, HttpHeaders} from \"@angular/common/http\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {Inject, Injectable} from \"@angular/core\";\r\nimport {catchError, throwError} from \"rxjs\";\r\nimport * as constants from '../constants'\r\nimport type {MyLibConfig} from \"../interfaces/shared.interface\";\r\nimport {MY_LIB_CONFIG_TOKEN} from \"../../public-api\";\r\n\r\n@Injectable({\r\n providedIn: \"any\"\r\n})\r\nexport class FeedBackService {\r\n apiUrl: string = ''\r\n\r\n constructor(private http: HttpClient,\r\n @Inject(MY_LIB_CONFIG_TOKEN) private config: MyLibConfig) {\r\n const language = (window as any)?.wmConfig?.language ? (window as any).wmConfig.language : 'en';\r\n this.apiUrl = this.config.proxyServiceBaseUrl + language + this.config.proxyFullAddress + this.config.proxyServiceExecute;\r\n console.log('Config: ', this.config); // for testing purposes only\r\n }\r\n\r\n feedbackForm: boolean = false;\r\n feedBackSent: boolean = false;\r\n pendingForm: boolean = false;\r\n responderForm: boolean = false;\r\n feedbackResponse: any = {\r\n requestFrom: null,\r\n requestTo: null,\r\n requestFeedback: null,\r\n responseFeedback: null\r\n };\r\n\r\n private createRequestBody(method: string, serviceName: string, urlParameters, requestBody = null) {\r\n return {\r\n method: method,\r\n destination: constants.TARGET_SERVER_DP,\r\n serviceName: serviceName,\r\n formName: this.config.formName,\r\n urlParameters: {\r\n inboxid: this.config.formId,\r\n ...urlParameters\r\n },\r\n body: requestBody\r\n };\r\n }\r\n\r\n private performPostRequest(body) {\r\n return this.http.post(this.apiUrl, body, {\r\n headers: new HttpHeaders({\r\n authToken: this.config.authToken,\r\n \"Content-Type\": \"application/x-www-form-urlencoded\"\r\n }),\r\n observe: \"body\"\r\n }).pipe(\r\n map((response: any) => response),\r\n catchError((err: any) => throwError(err))\r\n );\r\n }\r\n\r\n getFeedback(email: string) {\r\n const body = this.createRequestBody(constants.HTTP_METHOD_GET, constants.STATE_NAME_DP_GET_FEEDBACK, {email});\r\n return this.performPostRequest(body);\r\n }\r\n\r\n submitFeedback(data) {\r\n const [email, question] = data;\r\n const body = this.createRequestBody(constants.HTTP_METHOD_POST, constants.SERVICE_NAME_DP_CREATE_FEEDBACK, {}, {request: question, to: email});\r\n return this.performPostRequest(body);\r\n }\r\n\r\n addResponse(data) {\r\n const [feedbackId, feedbackResponse] = data;\r\n const body = this.createRequestBody(constants.HTTP_METHOD_PUT, constants.SERVICE_NAME_DP_UPDATE_FEEDBACK, {}, {\r\n response: feedbackResponse,\r\n feedbackId: feedbackId\r\n });\r\n return this.performPostRequest(body);\r\n }\r\n\r\n}\r\n","import { Section } from \"../interfaces\";\r\n\r\nexport default {\r\n beforeTranspileSection (section: Section): Section {\r\n const hookResult = section;\r\n // Here should be the code to manipulate the section object before the transpile stage\r\n return hookResult;\r\n },\r\n\r\n beforeSendPayload (submitPayload: {[key: string]: any}): {[key: string]: any} {\r\n const hookResult = submitPayload;\r\n // Here should be the code to manipulate the submit payload before the request to backend\r\n return hookResult;\r\n },\r\n\r\n afterSendPayload (responsePayload: {[key: string]: any}): {[key: string]: any} {\r\n const hookResult = responsePayload;\r\n // Here should be the code to manipulate the response payload to a submit of a form\r\n return hookResult;\r\n }\r\n}\r\n","import {HttpClient, HttpHeaders} from \"@angular/common/http\";\r\nimport {DestroyRef, inject, Inject, Injectable} from \"@angular/core\";\r\nimport type {MyLibConfig} from \"../interfaces/shared.interface\";\r\nimport {CommentsDrop, Form, Header, InboxItem, Messages, MY_LIB_CONFIG_TOKEN, ProfileInfoDrop, Section, SectionHeader} from \"../../public-api\";\r\nimport * as constants from '../constants'\r\nimport {catchError, from, Observable, of, switchMap, throwError} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport saveFormHooks from '../hooks/save-form';\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class CoreService {\r\n apiUrl: string = ''\r\n private authToken: string;\r\n private refreshToken: string;\r\n private readonly projectConfig: string;\r\n public userData: string;\r\n private readonly localUser: {};\r\n public loggedInUserData: {};\r\n currentActor: string\r\n private authorizedEmail!: string;\r\n private requesterEmail!: string;\r\n private currentSubmitter: any;\r\n language: string\r\n activities = []\r\n approvals: any\r\n historyDataLoaded: boolean\r\n historyData: any[] = []\r\n private readonly isMobile: boolean;\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor(private readonly http: HttpClient,\r\n @Inject(MY_LIB_CONFIG_TOKEN) private readonly config: MyLibConfig) {\r\n const language = (window as any)?.wmConfig?.language ? (window as any).wmConfig.language : 'en';\r\n this.apiUrl = this.config.proxyServiceBaseUrl + language + this.config.proxyFullAddress + this.config.proxyServiceExecute;\r\n console.log('Config: ', this.config);\r\n this.localUser = {\r\n \"formPrefix\": \"CEP\",\r\n \"formId\": \"CEP5595432\",\r\n \"inboxUri\": \"\\/group\\/hub\\/inbox\",\r\n \"baseUrl\": \"\\/group\\/i-gate\\/wm-bpm\\/forms\\/-\\/proxy\",\r\n \"showPrint\": true,\r\n \"language\": \"en\",\r\n \"isMobile\": true,\r\n \"outlook\": false,\r\n \"loggedInUserEmail\": \"ibrahimmaa.c@stc.com.sa\"\r\n }\r\n this.projectConfig = (this.config.production) ? (window as any)['wmConfig'] : btoa(JSON.stringify(this.localUser));\r\n this.userData = this.projectConfig;\r\n this.language = (window as any)?.wmConfig?.language ? (window as any).wmConfig.language : \"en\";\r\n this.isMobile = this.projectConfig?.['isMobile'];\r\n }\r\n\r\n public getLoggedInUserData() {\r\n let loggedInEmail = this.loggedInUserId()\r\n this.employeeProfile(loggedInEmail).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((response: any) => {\r\n this.loggedInUserData = response?.[\"Users\"]?.[0]\r\n console.log('getLoggedInUserData', response)\r\n })\r\n }\r\n\r\n public loadForm() {\r\n const authUrl = this.buildAuthUrl();\r\n return this.http.get(authUrl, {observe: 'response'}).pipe(\r\n map((res: any) => {\r\n const tokenInformation = res.body;\r\n this.authToken = tokenInformation.token;\r\n this.getLoggedInUserData();\r\n this.refreshToken = tokenInformation.refreshToken;\r\n const body = this.buildBody();\r\n const options = this.getRequestOptions();\r\n return this.callPost(body, options);\r\n }),\r\n switchMap(postObservable => postObservable),\r\n catchError((httpError: any) => {\r\n return throwError(httpError);\r\n })\r\n );\r\n }\r\n\r\n private buildAuthUrl(): string {\r\n const baseUrl = this.config.proxyServiceBaseUrl;\r\n const language = (window as any)?.wmConfig?.language ? (window as any).wmConfig.language : 'en';\r\n const fullAddress = this.config.proxyFullAddress;\r\n const authPart = this.config.proxyServiceAuthorization;\r\n return `${baseUrl}${language}${fullAddress}${authPart}?ts=${(new Date()).valueOf()}`;\r\n }\r\n\r\n private buildBody(): object {\r\n const baseBody = {\r\n method: constants.HTTP_METHOD_GET,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: constants.SERVICE_NAME_WM_FORM,\r\n formName: this.config.formName,\r\n formId: \"\",\r\n // queryParameters: null\r\n };\r\n if (!this.config.formId) {\r\n delete baseBody.formId;\r\n } else {\r\n baseBody.formId = this.config.formId;\r\n }\r\n return baseBody;\r\n }\r\n\r\n public employeeProfile(employeeEmail: any) {\r\n let body = {\r\n method: constants.HTTP_METHOD_GET,\r\n formName: this.config.formName,\r\n destination: constants.TARGET_SERVER_DP,\r\n serviceName: constants.SERVICE_NAME_DP_SEARCH_EMPLOYEE,\r\n parameters: {\r\n q: employeeEmail\r\n }\r\n };\r\n return this.http.post(this.apiUrl, body, {\r\n headers: new HttpHeaders({\r\n authToken: this.authToken,\r\n \"Content-Type\": \"application/x-www-form-urlencoded\"\r\n }),\r\n observe: \"body\"\r\n }).pipe(\r\n map((response: any) => {\r\n return response\r\n })\r\n , catchError((err: any) => {\r\n return throwError(err)\r\n }));\r\n }\r\n\r\n private getRequestOptions() {\r\n const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\r\n const ts = (new Date()).valueOf()?.toString();\r\n const userAgent = navigator.userAgent;\r\n return {\r\n headers: new HttpHeaders({\r\n authToken: this.authToken,\r\n 'Content-Type': constants.HEADER_CONTENT_TYPE_FORM,\r\n 'feHeader': '{\"isMobile\":' + this.isMobile + ', \",aIsMobile\":' + isMobile + ',ts:' + ts + ',loggedInUserEmail:' + this.loggedInUserId() + ',formName:' + this.config.formName + ',user-agent:' + userAgent + '}'\r\n }),\r\n observe: 'body'\r\n }\r\n }\r\n\r\n private getDraftId(val) {\r\n return val.toUpperCase().startsWith('DRAFT');\r\n }\r\n\r\n public submitForm(...args) {\r\n const [section, action] = args;\r\n const method = this.getHttpMethod();\r\n let sectionId = this.beforeTranspileSectionWrapper(section).id;\r\n let serviceName = this.getServiceName(action);\r\n let formName = this.getFormName(action);\r\n let body = this.getBodyObject(method, serviceName, action, formName, this.populatedPayload(sectionId, section), this.config.formId);\r\n const options = this.getRequestOptions();\r\n\r\n return this.submit(body, options);\r\n }\r\n\r\n private getHttpMethod() {\r\n return (this.config.formId && !this.getDraftId(this.config.formId)) ? constants.HTTP_METHOD_PUT : constants.HTTP_METHOD_POST;\r\n }\r\n\r\n private beforeTranspileSectionWrapper(section) {\r\n return saveFormHooks.beforeTranspileSection ? saveFormHooks.beforeTranspileSection(section) : section;\r\n }\r\n\r\n private getServiceName(action) {\r\n if (action === constants.WM_ACTION_SAVE_CHANGES) {\r\n return constants.SERVICE_NAME_WM_DRAFT_FORM\r\n } else {\r\n return constants.SERVICE_NAME_WM_FORM\r\n }\r\n }\r\n\r\n private getFormName(action) {\r\n if (action === constants.WM_ACTION_SAVE_CHANGES) {\r\n return 'common';\r\n } else {\r\n return this.config.formName;\r\n }\r\n }\r\n\r\n private populatedPayload(sectionId, section) {\r\n let payload;\r\n if (sectionId === constants.SECTION_ID_REQUEST_DETAILS) {\r\n payload = {request: {details: section.body.details}};\r\n } else {\r\n payload = {workflowSteps: {}};\r\n payload.workflowSteps.details = section.body.details;\r\n payload.workflowSteps.actor = this.currentSubmitter.actor;\r\n payload.workflowSteps.actor.email = this.currentActor;\r\n payload.workflowSteps.status = constants.SECTION_STATUS_PENDING;\r\n }\r\n return payload;\r\n }\r\n\r\n private getBodyObject(method, serviceName, action, formName, payload, formId) {\r\n let body = {\r\n method: method,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: serviceName,\r\n parameters: {\r\n action: action\r\n },\r\n formName: formName,\r\n body: payload,\r\n formId: formId,\r\n queryParameters: {},\r\n // payload\r\n }\r\n\r\n if (this.config.formId) {\r\n body.formId = this.config.formId;\r\n }\r\n\r\n if (!this.authorizedEmail || !this.authorizedEmail.length || this.authorizedEmail === this.requesterEmail) {\r\n delete body.queryParameters;\r\n }\r\n\r\n if (saveFormHooks.beforeSendPayload) {\r\n body.body.payload = saveFormHooks.beforeSendPayload(body.body.payload);\r\n }\r\n\r\n return body;\r\n }\r\n\r\n\r\n private callPost(body, options): Observable<any> {\r\n const language = (window as any)?.wmConfig?.language ? (window as any).wmConfig.language : \"en\";\r\n let apiUrl = this.config.proxyServiceBaseUrl + language + this.config.proxyFullAddress + this.config.proxyServiceExecute;\r\n\r\n return this.http.post(apiUrl, encodeURIComponent(JSON.stringify(body)), options).pipe(\r\n map((responseObject: any) => this.successWm(responseObject)),\r\n catchError((httpError: any) => throwError(httpError))\r\n );\r\n }\r\n\r\n private submit(body: any, options: any) {\r\n const language = (window as any)?.wmConfig?.language ? (window as any).wmConfig.language : \"en\";\r\n const apiUrl = this.config.proxyServiceBaseUrl + language + this.config.proxyFullAddress + this.config.proxyServiceExecute;\r\n\r\n return from(\r\n this.http.post(apiUrl, encodeURIComponent(JSON.stringify(body)), options).toPromise().then(\r\n (responseObject: any) => {\r\n let formResponse = responseObject.data.form;\r\n if (saveFormHooks.afterSendPayload) {\r\n formResponse = saveFormHooks.afterSendPayload(formResponse);\r\n }\r\n let result = {\r\n id: null,\r\n status: null,\r\n nextApprover: {\r\n name: null,\r\n email: null,\r\n role: null\r\n },\r\n creationDate: null\r\n };\r\n result.id = formResponse.formId;\r\n result.status = formResponse['formStatus'];\r\n if (formResponse.currentActor) {\r\n result.nextApprover = {\r\n name: formResponse.currentActor.name,\r\n email: formResponse.currentActor.email,\r\n role: formResponse['formStep']\r\n }\r\n }\r\n result.creationDate = formResponse.creationDate;\r\n return result;\r\n }, (httpError: any) => {\r\n throw httpError;\r\n }\r\n )\r\n );\r\n }\r\n\r\n private successWm(...args) {\r\n let [payload] = args;\r\n let wasSendBack = false;\r\n let result = new Form(\r\n constants.NO_VALUE,\r\n constants.NO_VALUE,\r\n constants.NO_VALUE,\r\n constants.NO_VALUE,\r\n constants.NO_VALUE,\r\n constants.NO_VALUE,\r\n constants.NO_VALUE\r\n );\r\n this.requesterEmail = payload.data['requester'].employeeEmail;\r\n this.authorizedEmail = payload.data['requester'].authorizedEmail;\r\n /* Generate Header Object */\r\n let payloadFormDetails = payload.data.form;\r\n let isReadOnly = (payloadFormDetails.readOnly.toUpperCase() === constants.TRUE_STRING ? constants.TRUE_BOOL : (payloadFormDetails.readOnly.toUpperCase() === constants.FALSE_STRING ? constants.FALSE_BOOL : constants.NO_VALUE))\r\n result.header = new Header(\r\n payload.data['requester'].fullName,\r\n constants.IGATE_STATIC_ASSET_PROFILE_PHOTO_URL + payload.data['requester'].employeeEmail,\r\n (payloadFormDetails.formId ? payloadFormDetails.formId : constants.DONT_SHOW),\r\n (payloadFormDetails.creationDate ? payloadFormDetails.creationDate : constants.DONT_SHOW),\r\n payloadFormDetails['formStatus'],\r\n payloadFormDetails.details\r\n );\r\n /* Generate Profile Information Object */\r\n let payloadProfileInfo = payload.data['requester'];\r\n result.profileInfoDrop = new ProfileInfoDrop(\r\n (payloadProfileInfo['onBehalfAuthorized'] ? JSON.parse(payloadProfileInfo['onBehalfAuthorized']) : null),\r\n payloadProfileInfo['employeeId'],\r\n payloadProfileInfo.employeeEmail,\r\n payloadProfileInfo.fullName,\r\n payloadProfileInfo.generalDepartmentName,\r\n payloadProfileInfo.jobPosition,\r\n payloadProfileInfo['sectorName'],\r\n payloadProfileInfo.departmentName,\r\n payloadProfileInfo.generalDepartmentCode,\r\n payloadProfileInfo['humanResourceLocation'],\r\n payloadProfileInfo.nationality,\r\n payloadProfileInfo.businessPhone,\r\n payloadProfileInfo['directManagerName'],\r\n payloadProfileInfo.seniorSectorName\r\n );\r\n result.sections = [];\r\n let requestDetailsHasComment = false;\r\n if (payload.data.request.details.comment) {\r\n requestDetailsHasComment = true;\r\n }\r\n result.sections.push(\r\n new Section(\r\n constants.SECTION_ID_REQUEST_DETAILS,\r\n new SectionHeader(constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, requestDetailsHasComment, (payload.data['workflowSteps'] ? constants.READ_ONLY : isReadOnly)),\r\n payload.data.request\r\n )\r\n );\r\n\r\n if (result.header.formId) {\r\n result.commentsDrop = (!result.commentsDrop ? [] : result.commentsDrop);\r\n this.loadHistory(result.header.formId).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n (response: any) => {\r\n if (response) {\r\n response.items.forEach((item: any) => {\r\n if (item.sequenceNumber !== '0' && item.processedBy) {\r\n const name = item.processedBy['firstName'] + ' ' + item.processedBy['secondMiddleName'] + ' ' + item.processedBy['familyName'];\r\n result.commentsDrop.push(new CommentsDrop(\r\n constants.IGATE_STATIC_ASSET_PROFILE_PHOTO_URL + item.processedBy.email,\r\n name,\r\n item.comments,\r\n item['modifiedDate'],\r\n item.attachments,\r\n item.processedBy.job\r\n ));\r\n }\r\n });\r\n }\r\n },\r\n );\r\n }\r\n\r\n\r\n const inboxType = this.getInboxType(result);\r\n if (result.header.formId && (!this.isOpenOnInbox())) {\r\n this.getInboxItem(result.header.formId, inboxType).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n (response: any) => {\r\n if (response) {\r\n const item = response.item;\r\n result.inboxItem = new InboxItem(\r\n item['flagging'].flagPriority,\r\n item['flagging']['isFlagged'],\r\n item.feedback['canRequestFeedback'],\r\n item.feedback['hasFeedback'],\r\n item.feedback['isPending'],\r\n item.feedback['isRequested'],\r\n item.feedback['isResponded']\r\n );\r\n }\r\n },\r\n );\r\n }\r\n\r\n let payloadWorkflowSteps = payload.data.workflowSteps;\r\n if (payloadWorkflowSteps && payloadWorkflowSteps.constructor === Array && payloadWorkflowSteps.length > 0) {\r\n payloadWorkflowSteps.forEach((step, index) => {\r\n let currentIsRequesterSendBack = JSON.stringify(step.details) === JSON.stringify({});\r\n let hasComments = (!currentIsRequesterSendBack && (step.details.comment || step.comment) ? constants.HAS_COMMENTS : constants.NO_COMMENTS);\r\n let currentActor = (step.actor.email === step.actor.recipient.email ? step.actor.recipient : (step.actor.delegate ? step.actor.delegate : null))\r\n if (wasSendBack && step.actor.recipient.role === 'REQUESTER') {\r\n console.log(\"wasSendBack && REQUESTER\")\r\n result.sections = [new Section(\r\n constants.SECTION_ID_REQUEST_DETAILS,\r\n new SectionHeader(\r\n constants.DONT_SHOW,\r\n constants.DONT_SHOW,\r\n constants.DONT_SHOW,\r\n constants.DONT_SHOW,\r\n constants.DONT_SHOW,\r\n constants.DONT_SHOW,\r\n constants.DONT_SHOW,\r\n requestDetailsHasComment,\r\n (payload.data.workflowSteps ? constants.READ_ONLY : isReadOnly)\r\n ),\r\n payload.data.request\r\n )]\r\n } else if (wasSendBack) {\r\n console.log(\"Pop\")\r\n if (result.sections.length > 1) {\r\n result.sections.pop();\r\n }\r\n wasSendBack = false;\r\n }\r\n\r\n\r\n if (step.details.decision && step.details.decision.key === constants.FORM_STATUS_SEND_BACK) {\r\n wasSendBack = true;\r\n } else if (JSON.stringify(step.details) !== JSON.stringify({})) {\r\n\r\n let date = step.date\r\n let currentActorName = currentActor ? this.getShortName(currentActor.name)?.toString() : \"\"\r\n let shortName = step.actor.recipient?.name ? this.getShortName(step.actor.recipient.name)?.toString() : \"\"\r\n let delegateName= step.actor.delegate?.name ? this.getShortName(step.actor.delegate.name)?.toString() : \"\"\r\n let image = constants.IGATE_STATIC_ASSET_PROFILE_PHOTO_URL + step.actor.recipient.email\r\n let delegateImage = step.actor.delegate?.email ? constants.IGATE_STATIC_ASSET_PROFILE_PHOTO_URL + step.actor.delegate.email : \"\"\r\n let status = step.actor.status\r\n result.sections.push(\r\n new Section(\r\n step.actor.recipient.role.toLowerCase() + constants.SECTION_ID_APPROVAL_PARTIAL_NAME,\r\n new SectionHeader(\r\n currentActorName,\r\n date,\r\n shortName,\r\n image,\r\n delegateName,\r\n delegateImage,\r\n status,\r\n hasComments,\r\n (index < payloadWorkflowSteps.length - 1 ? constants.READ_ONLY : isReadOnly)\r\n ),\r\n {details: step.details, processingDate: step.date}\r\n )\r\n );\r\n this.currentSubmitter = {actor: step.actor, recipient: step.recipient, delegate: step.actor.delegate};\r\n }\r\n });\r\n }\r\n /* Create Lov Sections */\r\n result.lovs = (payload?.meta?.lovs ? payload.meta.lovs : null);\r\n\r\n if (payload?.meta?.messages) {\r\n result.messages = new Messages(\r\n {},\r\n [],\r\n [],\r\n []\r\n );\r\n payload.meta.messages.forEach((message) => {\r\n result.messages.originalMsgs.push(message);\r\n result.messages[message.type].push(message.message);\r\n });\r\n }\r\n result.sections[result.sections.length - 1].header.readOnly = isReadOnly;\r\n return result;\r\n }\r\n\r\n public loadFile(...args: any): Observable<any> {\r\n const [id] = args;\r\n return this.http.get(\r\n `${this.config.proxyFullAddress}${this.config.proxyServiceForms}${this.config.formId}${this.config.proxyServiceAttachment}${id}`,\r\n {observe: 'response'}\r\n );\r\n }\r\n\r\n public dataURItoBlob(dataURI: any) {\r\n const byteString = atob(dataURI);\r\n const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n return new Blob([arrayBuffer], {type: 'image/jpeg'});\r\n }\r\n\r\n saveFile(fileInformation) {\r\n const fileBlob = this.dataURItoBlob(fileInformation.fileContents);\r\n const file = new File([fileBlob], fileInformation.fileName, {type: fileInformation.mimeType});\r\n const blobUrl = URL.createObjectURL(file);\r\n const link = document.createElement('a');\r\n link.href = blobUrl;\r\n link.download = fileInformation.fileName;\r\n link.click();\r\n URL.revokeObjectURL(blobUrl);\r\n }\r\n\r\n setFlagPriority(id: string) {\r\n let body = {\r\n method: constants.HTTP_METHOD_PUT,\r\n destination: constants.TARGET_SERVER_DP,\r\n serviceName: constants.SERVICE_NAME_DP_UPDATE_INBOX_ITEM,\r\n formName: this.config.formName,\r\n urlParameters: {\r\n inboxid: this.config.formId\r\n },\r\n body: {\r\n flag: id\r\n }\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_SUCCESS_INBOX_ITEM, options);\r\n }\r\n\r\n public loadHistory(...args) {\r\n const [id] = args;\r\n const body = {\r\n method: constants.HTTP_METHOD_GET,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: constants.WORKFLOW_ITEMS,\r\n formId: id || this.config.formId,\r\n formName: \"bpm\",\r\n };\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_LOAD_HISTORY, options);\r\n }\r\n\r\n public getInboxItem(...args) {\r\n const [id, inboxType] = args;\r\n const body = {\r\n formName: this.config.formName,\r\n method: constants.HTTP_METHOD_GET,\r\n destination: constants.TARGET_SERVER_DP,\r\n serviceName: constants.SERVICE_NAME_DP_INBOX_ITEM,\r\n urlParameters: {\r\n inboxid: id,\r\n inboxtype: inboxType\r\n }\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_GET_INBOX_ITEM, options);\r\n }\r\n\r\n public perspectiveApproves(details) {\r\n if (!this.config.production) {\r\n details = {}\r\n }\r\n let serviceName = \"form/\" + this.config.formName\r\n if (this.config.formId) {\r\n serviceName = \"form/\" + this.config.formId\r\n }\r\n let body = {\r\n method: constants.HTTP_METHOD_POST,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: serviceName\r\n , formName: constants.APPROVERS\r\n , body: {\r\n \"request\": {\r\n \"details\":\r\n details\r\n }\r\n }\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_SUCCESS_RESPONSE, options);\r\n }\r\n\r\n getAttachments(data: any, ...args: any) {\r\n let body = {\r\n method: constants.HTTP_METHOD_POST,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: 'attachment'\r\n , formName: 'common'\r\n , body: {\r\n attachment: {\r\n fileName: this.config.production ? data.fileName : '',\r\n mimeType: this.config.production ? data.mimeType : '',\r\n fileContents: this.config.production ? data.fileContents : '',\r\n }\r\n , comment: data.attachmentcomment\r\n , description: data.fileDescription,\r\n }\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_SUCCESS_RESPONSE, options);\r\n }\r\n\r\n searchEmployee(...args) {\r\n let [searchString] = args;\r\n let body = {\r\n method: constants.HTTP_METHOD_GET,\r\n formName: this.config.formName,\r\n destination: constants.TARGET_SERVER_DP,\r\n serviceName: constants.SERVICE_NAME_DP_SEARCH_EMPLOYEE,\r\n parameters: {\r\n q: searchString,\r\n limit: 10\r\n }\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_SUCCESS_RESPONSE, options);\r\n }\r\n\r\n\r\n\r\n customSearchEmployee(q,ApiAlias, args= {}) {\r\n // let [searchString] = args;\r\n let body = {\r\n method: constants.HTTP_METHOD_GET,\r\n formName: this.config.formName,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: ApiAlias,\r\n queryParameters:\r\n {\r\n q: q,\r\n limit: 10,\r\n ...args\r\n }\r\n\r\n\r\n // \"parameters\":\r\n // {\"language\":\"en\",\r\n // \"gd\":\"6017\",\r\n // \"q\":\"dfgd\",\r\n // \"limit\":10}\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_SUCCESS_RESPONSE, options);\r\n }\r\n\r\n\r\n public myRequests(details) {\r\n let body = {\r\n method: constants.HTTP_METHOD_GET,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: \"form\" //, //this.getServiceName(),\r\n , formName: \"history\"\r\n , queryParameters: {\r\n formName: this.config.formName,\r\n year: details.year,\r\n month: details.month,\r\n email: this.loggedInUserId()\r\n }\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_SUCCESS_RESPONSE, options);\r\n }\r\n\r\n generalCallApi(body, type: string, options) {\r\n let apiUrl = this.config.proxyServiceBaseUrl + this.language + this.config.proxyFullAddress + this.config.proxyServiceExecute;\r\n return this.http.post(apiUrl, encodeURIComponent(JSON.stringify(body)), options).pipe(\r\n map((responseObject: any) => {\r\n return responseObject\r\n }),\r\n catchError((httpError: any) => {\r\n return throwError(httpError);\r\n })\r\n );\r\n }\r\n\r\n public loggedInUserId() {\r\n return this.userData['loggedInUserEmail'];\r\n }\r\n\r\n public getShortName(name: string) {\r\n if (name) {\r\n let nameTokens = name.split(' ');\r\n if (nameTokens.length == 1) {\r\n return [nameTokens[0]]\r\n } else if (nameTokens[nameTokens.length - 2].toLowerCase() == 'al') {\r\n return [nameTokens[0], nameTokens[nameTokens.length - 2], nameTokens[nameTokens.length - 1]].join(' ');\r\n } else {\r\n return [nameTokens[0], nameTokens[nameTokens.length - 1]].join(' ');\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public isMobileApp() {\r\n return (window as any).wmConfig.isMobile;\r\n }\r\n\r\n public getInboxType(result) {\r\n let rtn = null;\r\n if (this.loggedInUserId() === result.profileInfoDrop.employeeEmail) {\r\n rtn = constants.INBOX_STATUS_SENT;\r\n } else {\r\n rtn = constants.INBOX_STATUS_PENDING;\r\n }\r\n return rtn;\r\n }\r\n\r\n public isOpenOnInbox() {\r\n return (window as any).wmConfig.outlook;\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {BehaviorSubject, Subject} from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: \"any\"\r\n})\r\nexport class ActionStateService {\r\n private actionStatesSubject = new BehaviorSubject<{ [action: string]: boolean }>({});\r\n\r\n actionStates$ = this.actionStatesSubject.asObservable();\r\n resetAction$ = new Subject<void>()\r\n \r\n\r\n setActionValid(action: string, isValid: boolean) {\r\n const currentState = this.actionStatesSubject.value;\r\n currentState[action] = isValid;\r\n this.actionStatesSubject.next(currentState);\r\n }\r\n\r\n resetForm(){\r\n return this.resetAction$\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport {MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle} from '@angular/material/dialog';\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';\r\nimport {CoreI18nService} from '../../../../services';\r\n\r\n@Component({\r\n selector: 'app-delete-dialog',\r\n templateUrl: './delete-dialog.component.html',\r\n styleUrls: ['./delete-dialog.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n MatDialogContent,\r\n MatDialogClose,\r\n MatDialogTitle\r\n ]\r\n})\r\nexport class DeleteDialogComponent {\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<any>,\r\n public i18n: CoreI18nService\r\n ) { }\r\n\r\n\r\n delete() {\r\n this.dialogRef.close('yes');\r\n }\r\n\r\n}\r\n","<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-between\" mat-dialog-title>\r\n <h3> {{i18n.translate('delete')}}</h3>\r\n <ds-button matDialogClose icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"d-flex flex-column align-items-center justify-content-center py-4\">\r\n <h2 class=\"fs-16 fw-medium fc-black mb-4\">\r\n {{i18n.translate('Areyousureyouwantdelete')}}\r\n </h2>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button shape=\"outline\" color=\"dark-gray\" matDialogClose>{{i18n.translate('Cancel')}}</ds-button>\r\n <ds-button color=\"red\" (click)=\"delete()\">{{i18n.translate('yes')}}</ds-button>\r\n </div>\r\n </div>\r\n </mat-dialog-content>\r\n</div>","import {MAT_DIALOG_DATA, MatDialogClose, MatDialogContent, MatDialogTitle} from '@angular/material/dialog';\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA, Inject} from '@angular/core';\r\nimport {CoreI18nService, CoreService} from '../../../../services';\r\nimport {NgIf} from \"@angular/common\";\r\n\r\n@Component({\r\n selector: 'app-submit-dialog',\r\n templateUrl: './submit-dialog.component.html',\r\n styleUrls: ['./submit-dialog.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n MatDialogClose,\r\n MatDialogContent,\r\n NgIf,\r\n MatDialogTitle\r\n ]\r\n})\r\nexport class SubmitDialogComponent {\r\n successData: any;\r\n inboxUri;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n public i18n: CoreI18nService,\r\n public coreService: CoreService\r\n ) {\r\n this.successData = data;\r\n this.inboxUri = (window as any).wmConfig.inboxUri\r\n }\r\n getImage(email: string) {\r\n if (email) {\r\n return '/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=' + email;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n viewForm(formId: string, formName?: string) {\r\n if (formId) {\r\n if (formId?.toLowerCase().includes('draft')) {\r\n window.open(`/group/i-gate/wm-bpm/forms?formName=${formName}&formId=${formId}`);\r\n return;\r\n }\r\n window.open('/group/i-gate/wm-bpm/forms?formId=' + formId);\r\n }\r\n }\r\n\r\n getStatus(statusKey: string) {\r\n switch (statusKey) {\r\n case 'APPROVED':\r\n return 'success';\r\n case 'COMPLETED':\r\n return 'success';\r\n case 'REJECTED':\r\n return 'danger';\r\n case 'CANCELLED':\r\n return 'danger';\r\n case 'PENDING':\r\n return 'warning';\r\n default:\r\n return 'success';\r\n }\r\n }\r\n}\r\n","<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-end\" mat-dialog-title>\r\n <ds-button matDialogClose icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"d-flex flex-column align-items-center justify-content-center py-4\">\r\n <div class=\"text-center mb-4\">\r\n <svg width=\"79\" height=\"76\" viewBox=\"0 0 79 76\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M59.9804 0.0998676L1.39239 19.2479C1.02223 19.3692 0.69498 19.5948 0.44999 19.8976C0.205 20.2005 0.0526985 20.5676 0.0113985 20.955C-0.0299016 21.3423 0.0415576 21.7333 0.217184 22.081C0.39281 22.4287 0.665128 22.7183 1.00139 22.9149L23.1454 35.7899C23.487 35.9886 23.8794 36.0828 24.274 36.0608C24.6686 36.0388 25.0481 35.9014 25.3654 35.6659L31.5894 31.0439L26.9674 37.2679C26.7318 37.5852 26.5944 37.9646 26.5722 38.3591C26.5499 38.7537 26.6439 39.1461 26.8424 39.4879L39.7174 61.6289C39.9138 61.9652 40.2031 62.2377 40.5506 62.4135C40.8981 62.5894 41.289 62.6611 41.6763 62.6201C42.0636 62.5791 42.4308 62.4272 42.7338 62.1825C43.0369 61.9378 43.2628 61.6108 43.3844 61.2409L62.5294 2.65187C62.6458 2.29686 62.6615 1.91654 62.5749 1.55313C62.4883 1.18971 62.3026 0.857401 62.0386 0.593071C61.7746 0.328741 61.4425 0.142726 61.0792 0.0556665C60.7159 -0.0313933 60.3355 -0.0160937 59.9804 0.0998676ZM40.9434 55.6999L31.0014 38.6069L42.9894 22.4689C43.2797 22.0798 43.4202 21.5993 43.3852 21.1152C43.3502 20.631 43.142 20.1757 42.7988 19.8325C42.4556 19.4893 42.0002 19.2811 41.5161 19.2461C41.032 19.2111 40.5514 19.3516 40.1624 19.6419L24.0254 31.6279L6.93339 21.6889L57.4514 5.18087L40.9434 55.6999ZM21.2134 44.2759L7.80139 57.6909C7.42253 58.0701 6.90853 58.2833 6.37246 58.2836C5.83638 58.2839 5.32215 58.0712 4.94289 57.6924C4.56363 57.3135 4.35041 56.7995 4.35013 56.2634C4.34985 55.7274 4.56253 55.2131 4.94139 54.8339L18.3564 41.4189C18.7353 41.04 19.2491 40.8272 19.7849 40.8272C20.3207 40.8272 20.8345 41.04 21.2134 41.4189C21.5923 41.7977 21.8051 42.3116 21.8051 42.8474C21.8051 43.3832 21.5923 43.897 21.2134 44.2759ZM3.49139 44.7839C3.30378 44.5963 3.15495 44.3736 3.05341 44.1285C2.95187 43.8834 2.89961 43.6207 2.89961 43.3554C2.89961 43.0901 2.95187 42.8274 3.05341 42.5823C3.15495 42.3371 3.30378 42.1144 3.49139 41.9269L8.78439 36.6339C9.16326 36.255 9.6771 36.0422 10.2129 36.0422C10.7487 36.0422 11.2625 36.255 11.6414 36.6339C12.0203 37.0127 12.2331 37.5266 12.2331 38.0624C12.2331 38.5982 12.0203 39.112 11.6414 39.4909L6.34939 44.7839C6.1618 44.9716 5.93903 45.1206 5.69384 45.2222C5.44864 45.3238 5.18582 45.3762 4.92039 45.3762C4.65497 45.3762 4.39215 45.3238 4.14695 45.2222C3.90176 45.1206 3.67899 44.9716 3.49139 44.7839ZM26.0014 50.9899C26.189 51.1774 26.3378 51.4001 26.4394 51.6453C26.5409 51.8904 26.5932 52.1531 26.5932 52.4184C26.5932 52.6837 26.5409 52.9464 26.4394 53.1915C26.3378 53.4366 26.189 53.6593 26.0014 53.8469L20.7014 59.1409C20.3225 59.5197 19.8087 59.7326 19.2729 59.7326C18.7371 59.7326 18.2233 59.5197 17.8444 59.1409C17.4655 58.762 17.2527 58.2482 17.2527 57.7124C17.2527 57.1766 17.4655 56.6627 17.8444 56.2839L23.1374 50.9909C23.325 50.8032 23.5477 50.6544 23.7928 50.5529C24.0379 50.4513 24.3006 50.3991 24.5659 50.3991C24.8312 50.3991 25.0939 50.4513 25.339 50.5529C25.5841 50.6544 25.8068 50.8032 25.9944 50.9909L26.0014 50.9899Z\"\r\n fill=\"#8E9AA0\"/>\r\n <path\r\n d=\"M58.0015 75.3119C69.0472 75.3119 78.0015 66.3576 78.0015 55.3119C78.0015 44.2662 69.0472 35.3119 58.0015 35.3119C46.9558 35.3119 38.0015 44.2662 38.0015 55.3119C38.0015 66.3576 46.9558 75.3119 58.0015 75.3119Z\"\r\n fill=\"#00C48C\"/>\r\n <path\r\n d=\"M56.8804 57.3183L54.0346 54.4725L52.9743 55.5336L56.8774 59.4367L65.8354 50.5267L65.4927 50.0138C63.8557 47.5812 61.1134 46.002 58.0015 46.002C53.0313 46.002 49.0015 50.031 49.0015 55.002C49.0015 59.9729 53.0305 64.002 58.0015 64.002C62.9716 64.002 67.0007 59.9729 67.0015 55.0035H65.5017C65.5017 55.005 65.5017 55.0072 65.5017 55.0095C65.5017 59.1503 62.1453 62.5067 58.0045 62.5067C53.8637 62.5067 50.5072 59.1503 50.5072 55.0095C50.5072 50.8686 53.8637 47.5122 58.0045 47.5122C60.3793 47.5122 62.4962 48.6168 63.87 50.3392L63.882 50.3542L56.8804 57.3183Z\"\r\n fill=\"white\"/>\r\n </svg>\r\n\r\n </div>\r\n <h2 class=\"fs-16 fw-medium fc-black mb-4 text-center\">\r\n {{ i18n.translate('submittedSuccessfully') }}\r\n </h2>\r\n\r\n <div class=\"info-section reverse w-100\">\r\n <div class=\"info-item px-3\">\r\n <span class=\"name fs-16-imp\">{{ i18n.translate('formTableFormId') }}</span>\r\n <span class=\"disc fs-16-imp\">\r\n <a class=\"cursor-pointer fc-black underline\" (click)=\"viewForm(successData.id, successData?.['formName'])\">\r\n {{ successData.id }}\r\n </a>\r\n </span>\r\n </div>\r\n <div class=\"info-item px-3\">\r\n <span class=\"name fs-16-imp\">{{ i18n.translate('formTableFormStatus') }}</span>\r\n <ds-status class=\"disc\" status=\"{{getStatus(successData?.status?.['key'])}}\">\r\n {{ successData.status?.['value'] }}\r\n </ds-status>\r\n </div>\r\n @if (successData?.status?.['key'] === 'PENDING') {\r\n <div class=\"info-item px-3\">\r\n <div class=\"d-flex align-items-center mt-2\">\r\n <div class=\"img-card circled-img small\">\r\n <img\r\n [src]=\"getImage(successData?.['nextApprover']?.['email'])\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2\">\r\n <h5 class=\"fs-14 fw-bold fc-black mb-0\">{{ successData?.['nextApprover']?.['name'] }}</h5>\r\n <span class=\"fs-12 text-color-dark-gray\">{{ successData?.['nextApprover']?.['email'] }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n @if (!coreService.isMobileApp()) {\r\n <div class=\"d-flex align-items-center gap-3 mt-3\">\r\n <ds-button>\r\n <a class=\"inboxUri\" href=\"{{inboxUri}}\">\r\n {{ i18n.translate('formTableBackToInbox') }}</a>\r\n </ds-button>\r\n </div>\r\n }\r\n </div>\r\n </mat-dialog-content>\r\n</div>\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport {MatDialogClose, MatDialogContent, MatDialogRef} from '@angular/material/dialog';\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';\r\nimport {CoreI18nService} from '../../../../services';\r\n\r\n//import { CoreI18nService} from '../../../../services';\r\n\r\n@Component({\r\n selector: 'app-confirm-dialog',\r\n templateUrl: './confirm-dialog.component.html',\r\n styleUrls: ['./confirm-dialog.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n MatDialogContent,\r\n MatDialogClose\r\n ]\r\n})\r\nexport class ConfirmDialogComponent {\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<any>,\r\n public i18n: CoreI18nService\r\n ) { }\r\n\r\n\r\n confirm() {\r\n this.dialogRef.close('yes');\r\n\r\n\r\n //////\r\n }\r\n\r\n}\r\n","<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-between\" mat-dialog-title>\r\n <h3> {{i18n.translate('delete')}}</h3>\r\n <ds-button matDialogClose icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"d-flex flex-column align-items-center justify-content-center py-4\">\r\n <h2 class=\"fs-16 fw-medium fc-black mb-4\">\r\n {{i18n.translate('drf-confirmatton-msg')}}\r\n </h2>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button shape=\"outline\" color=\"dark-gray\" matDialogClose>{{i18n.translate('No-Discard')}}</ds-button>\r\n <ds-button color=\"red\" (click)=\"confirm()\">{{i18n.translate('Yes-Proceed')}}</ds-button>\r\n </div>\r\n </div>\r\n </mat-dialog-content>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'formatAsPassword'\r\n})\r\nexport class FormatAsPasswordPipe implements PipeTransform {\r\n\r\n transform(value: string | number): unknown {\r\n if(typeof value === 'number') value = value.toString();\r\n const length = value.length;\r\n return '*'.repeat(length);\r\n }\r\n\r\n}\r\n","/* eslint-disable no-useless-escape */\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'mycurrency'\r\n})\r\nexport class MycurrencyPipe implements PipeTransform {\r\n private prefix: string;\r\n private decimal_separator:string;\r\n private thousands_separator:string;\r\n private suffix:string;\r\n\r\n constructor(){\r\n this.prefix='';\r\n this.suffix='';\r\n this.decimal_separator='.';\r\n this.thousands_separator = ',';\r\n }\r\n transform(value: string, allowNegative = false, decimalPrecision: number = 2) {\r\n if (value == undefined || value === '') {\r\n return null;\r\n }\r\n if (allowNegative) {\r\n value = value.toString();\r\n if (value.startsWith('(') || value.startsWith('-')) {\r\n value = '-' + value.substr(1, value.length).replace(/\\(|\\)|\\$|\\-/g, '');\r\n } else {\r\n value = value.replace(/\\(|\\)|\\$|\\-/g, '');\r\n }\r\n }\r\n let [integer, fraction = ''] = (value || '').toString().split(this.decimal_separator);\r\n fraction = decimalPrecision > 0 ? this.decimal_separator + (fraction + '000000').substring(0, 2) : '';\r\n integer = integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousands_separator);\r\n // If user types .xx we can display 0.xx\r\n if (integer === '') {\r\n integer = '0';\r\n } else if (integer.startsWith('$')) {\r\n // If there are multiple transforms, remove the previous dollar sign (blur and change at the same time)\r\n integer = integer.substr(1, integer.length);\r\n } else if (allowNegative && integer.startsWith('-')) {\r\n // If user inputs negative number set to paranthesis format\r\n integer = integer.substr(1, integer.length);\r\n return '(' + this.prefix + integer + fraction + ')';\r\n }\r\n return this.prefix + integer + fraction;\r\n }\r\n\r\n parse(value: string, allowNegative = false) {\r\n let [integer, fraction = ''] = (value || '').split(this.decimal_separator);\r\n integer = integer.replace(new RegExp(/[^\\d\\.]/, 'g'), '');\r\n fraction = parseInt(fraction, 10) > 0 && 2 > 0 ? this.decimal_separator + (fraction + '000000').substring(0, 2) : '';\r\n if (allowNegative && value.startsWith('(') && value.endsWith(')')) {\r\n return (-1 * parseFloat(integer + fraction)).toString();\r\n } else {\r\n return integer + fraction;\r\n }\r\n }\r\n\r\n}\r\n","export interface DateParse { dateInput: string; }\r\nexport type DateDisplay = DateParse & {\r\n monthYearLabel?: string,\r\n dateA11yLabel?: string,\r\n monthYearA11yLabel?: string,\r\n};\r\n\r\nexport class CustomDateFormat {\r\n private _parse: DateParse = {\r\n dateInput: 'DD/MM/YYYY'\r\n };\r\n private _display: DateDisplay = {\r\n dateInput: 'DD/MM/YYYY',\r\n monthYearLabel: 'DD MMM YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'MMMM YYYY'\r\n };\r\n\r\n set parse(parse: DateParse) {\r\n this._parse = Object.assign({}, this._parse, parse);\r\n }\r\n\r\n get parse(): DateParse {\r\n return this._parse;\r\n }\r\n\r\n set display(display: DateDisplay) {\r\n this._display = Object.assign({}, this._display, display);\r\n }\r\n\r\n get display(): DateDisplay {\r\n return this._display;\r\n }\r\n\r\n updateDateFormat(parse: DateParse, display?: DateDisplay) {\r\n this.parse = parse;\r\n if (!display) {\r\n display = parse;\r\n }\r\n this.display = display;\r\n }\r\n}","import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n forwardRef,\r\n ChangeDetectorRef,\r\n Inject,\r\n} from '@angular/core';\r\nimport {\r\n ControlContainer,\r\n NgForm,\r\n NG_VALUE_ACCESSOR,\r\n FormBuilder,\r\n} from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Section } from '../../../../interfaces';\r\nimport {\r\n CoreI18nService\r\n} from '../../../../services';\r\nimport { MycurrencyPipe } from '../../../../pipes';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { CustomDateFormat } from '../date-picker/date-format';\r\n\r\nconst CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BaseComponent),\r\n multi: true,\r\n};\r\n@Component({\r\n selector: 'app-base-component',\r\n template: '',\r\n styleUrls: ['./base-component.component.scss'],\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR],\r\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}],\r\n standalone: true\r\n})\r\nexport class BaseComponent {\r\n @Input() hideOption = false;\r\n // hideOption: InputSignal<boolean> = input(false);\r\n @Input() type = 'text';\r\n // hideOption: InputSignal<string> = input('text');\r\n @Input() loading!: boolean;\r\n // loading: InputSignal<boolean>;\r\n @Input() field: any;\r\n // loafieldding: InputSignal<any>;\r\n @Input() labelTextReadMode: string;\r\n // labelTextReadMode: InputSignal<string>\r\n @Input() labelTextWriteMode: string;\r\n // labelTextWriteMode: InputSignal<string>\r\n @Input() isReadOnly: boolean;\r\n // isReadOnly: InputSignal<boolean>;\r\n @Input() name: string;\r\n // name: InputSignal<string>\r\n @Input() required = true;\r\n // required: InputSignal<boolean> = input(true);\r\n @Input() mask: string;\r\n // mask: InputSignal<string>\r\n @Input() allowedExtensions = '';\r\n // allowedExtensions: InputSignal<string> = input('');\r\n @Input() link: boolean;\r\n // link: InputSignal<boolean>;\r\n @Input() multiple: boolean;\r\n // multiple: InputSignal<boolean>;\r\n @Input() insideTable: boolean;\r\n // insideTable: InputSignal<boolean>;\r\n @Input() showIfEmpty = false;\r\n // showIfEmpty: InputSignal<boolean> = input(false);\r\n @Input() showErrorMessage: boolean;\r\n // showErrorMessage: InputSignal<boolean>;\r\n @Input() showHint = false;\r\n // showHint: InputSignal<boolean> = input(false);\r\n @Input() hint = '';\r\n // hint: InputSignal<string> = input('');\r\n @Input() errorMessage: string;\r\n // errorMessage: InputSignal<string>\r\n @Input() placeholder: string\r\n // placeholder: InputSignal<string>\r\n @Input() maxLength: number;\r\n // maxLength: InputSignal<number>\r\n @Input() minLength: number;\r\n // minLength: InputSignal<number>\r\n @Input() maxValue: string;\r\n // maxValue: InputSignal<string>\r\n @Input() minValue: string;\r\n // minValue: InputSignal<string>\r\n @Input() disabled = false;\r\n // disabled: InputSignal<boolean> = input(false);\r\n @Input() lov: any;\r\n // lov: InputSignal<any>\r\n @Input() hasLabel = true;\r\n // hasLabel: InputSignal<boolean> = input(true);\r\n @Input() section: Section;\r\n // section: InputSignal<Section>\r\n @Input() controller: FormControl = new FormControl();\r\n value: any;\r\n @Output() emitedValue = new EventEmitter();\r\n\r\n filesize: string;\r\n // public options: any;\r\n public randomID: number =\r\n Math.floor(Math.random() * (999999 - 100000)) + 100000;\r\n constructor(\r\n public i18n: CoreI18nService,\r\n public http: HttpClient,\r\n public fb: FormBuilder,\r\n private dateAdapter: DateAdapter<Date>,\r\n public cdRef: ChangeDetectorRef,\r\n public dialog: MatDialog,\r\n public dialogRef: MatDialogRef<any>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any,\r\n public mycurrencyPipe: MycurrencyPipe,\r\n @Inject(MAT_DATE_FORMATS) public dateFormat: CustomDateFormat,\r\n public sanitizer: DomSanitizer\r\n ) {\r\n this.dateAdapter.setLocale(this.i18n.language);\r\n this.value = this.field;\r\n this.emitedValue = new EventEmitter();\r\n if (this.shouldSetDateFormateInAr) {\r\n dateFormat.display = {dateInput: 'YYYY/MM/DD'};\r\n dateFormat.parse = {dateInput: 'YYYY/MM/DD'};\r\n }\r\n }\r\n\r\n get shouldSetDateFormateInAr(): boolean {\r\n return this.i18n.language == 'ar';\r\n }\r\n\r\n resetData() {\r\n if (!this.isReadOnly) {\r\n this.field = '';\r\n this.controller.setValue(this.field)\r\n this.controller.markAsUntouched()\r\n this.emitedValue.emit(this.field);\r\n }\r\n }\r\n}\r\n","import {Directive, Injector, Input, OnInit} from '@angular/core';\r\nimport {ControlValueAccessor, FormBuilder, FormControl, FormControlDirective, FormControlName, FormGroupDirective, NgControl, NgModel, Validators,} from '@angular/forms';\r\nimport {ActionStateService, CoreI18nService, CoreService} from '../../../services';\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\nimport {ToastrService} from \"ngx-toastr\";\r\nimport { ErrorMsg } from './validation-errors/validation-error-messages';\r\n\r\n@Directive({\r\n selector: '[appControlValueAccessor]',\r\n})\r\nexport class ControlValueAccessorDirective<Type>\r\n implements ControlValueAccessor, OnInit\r\n{\r\n @Input() tooltip;\r\n @Input() isReadOnly: boolean;\r\n @Input() hint = '';\r\n @Input() loading!: boolean;\r\n @Input() placeholder: string;\r\n @Input() type: string;\r\n @Input() showErrorMessage: string;\r\n @Input() showHint: string;\r\n @Input() showIfEmpty: string;\r\n @Input() insideTable: any;\r\n @Input() mask: any;\r\n @Input() label!: string;\r\n @Input() matSuffix: boolean;\r\n @Input() hasTooltip = false;\r\n @Input() name!: string;\r\n @Input() randomID!: string;\r\n @Input() multiple: boolean = false;\r\n @Input() customErrorMessages: Record<string, ErrorMsg>;\r\n searchControl = new FormControl();\r\n toggleButtonControl = new FormControl();\r\n employeeSearchControl = new FormControl();\r\n telephoneControl = new FormControl();\r\n attachments = [];\r\n\r\n\r\n startDateControl = new FormControl();\r\n endDateControl = new FormControl();\r\n Validators = Validators;\r\n\r\n\r\n\r\n\r\n minDateValue: any\r\n maxDateValue: any\r\n @Input() maxDate: 'today' | 'oneYear';\r\n // @ViewChild('default')\r\n public datepickerObj!: any;\r\n @Input() minDate: 'today';\r\n @Input() customMaxDate: string;\r\n @Input() customMinDate: string;\r\n\r\n value: any;\r\n control: FormControl | undefined;\r\n @Input() required: boolean; //hide optional label and add required validator from angular side\r\n @Input() mandatory: boolean; //only hide optional label\r\n\r\n isDisabled = false;\r\n onChangeFn: (val: Type | null) => void = () => {};\r\n onTouchedFn: () => void = () => {};\r\n\r\n constructor(\r\n private readonly injector: Injector, public i18n: CoreI18nService,\r\n public toasterService: ToastrService,\r\n public coreService: CoreService, public sanitizer: DomSanitizer,\r\n public fb: FormBuilder,\r\n public actionStateService: ActionStateService\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.setFormControl();\r\n }\r\n\r\n setFormControl() {\r\n try {\r\n const formControl = this.injector.get(NgControl);\r\n switch (formControl.constructor) {\r\n case FormControlName:\r\n this.control = this.injector\r\n .get(FormGroupDirective)\r\n .getControl(formControl as FormControlName);\r\n break;\r\n case NgModel:\r\n this.control = (formControl as NgModel).control;\r\n break;\r\n default:\r\n this.control = (formControl as FormControlDirective)\r\n .form as FormControl;\r\n break;\r\n }\r\n } catch (err) {\r\n this.control = new FormControl();\r\n }\r\n this.setFormValidators();\r\n }\r\n\r\n setFormValidators(){\r\n\r\n // this.required = this.control?.hasValidator(Validators.required) ?? false;\r\n if (this.required){\r\n this.searchControl.setValidators(Validators.required);\r\n this.employeeSearchControl.setValidators(Validators.required);\r\n } else {\r\n this.searchControl.clearValidators();\r\n this.employeeSearchControl.clearValidators();\r\n }\r\n this.searchControl.updateValueAndValidity();\r\n this.employeeSearchControl.updateValueAndValidity();\r\n }\r\n\r\n\r\n writeValue(value: Type): void {\r\n this.value = value;\r\n if(!this.value){\r\n this.startDateControl.reset();\r\n this.endDateControl.reset();\r\n this.telephoneControl.reset();\r\n this.toggleButtonControl.reset();\r\n this.attachments = [];\r\n this.searchControl.reset();\r\n this.employeeSearchControl.reset();\r\n } else {\r\n this.startDateControl.setValue(this.value?.startDate);\r\n this.endDateControl.setValue(this.value?.endDate);\r\n this.toggleButtonControl.setValue(value);\r\n this.searchControl.setValue(value['value']);\r\n this.telephoneControl.setValue(value)\r\n if(this.value['value'] === ''){\r\n this.control.reset()\r\n }\r\n this.employeeSearchControl.setValue(value['personName'])\r\n }\r\n }\r\n\r\n registerOnChange(fn: (val: Type | null) => void): void {\r\n this.onChangeFn = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouchedFn = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n setValue(value: any): void {\r\n this.value = value;\r\n this.onChangeFn(value);\r\n }\r\n}\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, Inject} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle} from '@angular/material/dialog';\r\nimport {CoreI18nService} from '../../../services';\r\n\r\n@Component({\r\n selector: 'app-terms-conditions',\r\n templateUrl: './terms-conditions.component.html',\r\n styleUrls: ['./terms-conditions.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n MatDialogContent,\r\n MatDialogClose,\r\n MatDialogTitle\r\n ],\r\n standalone: true\r\n})\r\nexport class TermsConditionsComponent {\r\n termsBody: string = null;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<TermsConditionsComponent>,\r\n public i18n: CoreI18nService,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) {\r\n this.termsBody = data;\r\n }\r\n}\r\n","<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-between\" mat-dialog-title>\r\n <h3 class=\"mb-0 font-16 fw-medium\" >{{i18n.translate('termsAndConditions')}}</h3>\r\n <ds-button matDialogClose icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"px-md-4\">\r\n <p class=\"fs-15 fw-normal bg-color-light-gray p-3 text-break\" [innerHTML]='termsBody' > </p>\r\n </div>\r\n </mat-dialog-content>\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport * as en from '../i18n/en';\r\nimport * as ar from '../i18n/ar';\r\n\r\n@Pipe({\r\n name: 'translate',\r\n standalone: true\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n private coreLocales: { [key: string]: { [key: string]: string } };\r\n public language: string;\r\n\r\n constructor() {\r\n // this.language = \"en\";\r\n this.language = (window as any).wmConfig.language;\r\n this.coreLocales = { en: en.default, ar: ar.default };\r\n }\r\n\r\n transform(key) {\r\n let result = null;\r\n try {\r\n result = this.coreLocales[this.language][key];\r\n } catch (e) {\r\n result = null;\r\n }\r\n return result || key;\r\n }\r\n\r\n getLanguage() {\r\n return this.language;\r\n }\r\n}","/* eslint-disable @angular-eslint/component-selector */\r\nimport { CoreI18nService } from '../../../../services';\r\nimport { Component, Input } from '@angular/core';\r\nimport {NgIf} from \"@angular/common\";\r\nimport {SatPopoverModule} from \"@ncstate/sat-popover\";\r\nimport {TranslatePipe} from \"../../../../pipes/translate.pipe\";\r\n\r\n\r\n@Component({\r\n selector: 'app-form-label',\r\n templateUrl: './form-label.component.html',\r\n styleUrls: ['./form-label.component.scss'],\r\n imports: [\r\n NgIf,\r\n SatPopoverModule,\r\n TranslatePipe\r\n\r\n ],\r\n standalone: true\r\n})\r\nexport class FormLabelComponent {\r\n @Input() tooltip: string;\r\n @Input() label = '';\r\n @Input() optional = false;\r\n constructor( public i18n: CoreI18nService) { }\r\n\r\n\r\n\r\n\r\n}\r\n","<div class=\"d-flex justify-content-between\">\r\n <div class=\"d-flex\">\r\n <span class=\"form-label mb-0\">{{ label }}</span>\r\n @if(tooltip) {\r\n <span class=\"form-label mb-0 mx-1\">\r\n <ds-icon\r\n icon=\"info fs-18\"\r\n class=\"cursor-pointer\"\r\n [satPopoverAnchor]=\"popover\"\r\n (click)=\"popover.toggle(); $event.stopImmediatePropagation()\"\r\n ></ds-icon>\r\n </span>\r\n }\r\n </div>\r\n <span *ngIf=\"optional\" class=\"optional-input\">\r\n {{ 'optional' | translate }}\r\n </span>\r\n</div>\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"default-popover p-3 fs-14\">\r\n <span class=\"fs-12 signature-notes\" [innerHTML]=\"tooltip\"></span>\r\n </div>\r\n</sat-popover>","import { ValidationErrors } from \"@angular/forms\";\r\n\r\ntype TextInEnAr = {ar: string; en: string};\r\nexport type ErrorMsg = TextInEnAr | ((errors: ValidationErrors) => TextInEnAr);\r\n\r\nexport class ValidationErrorMessages {\r\n private _msg: string;\r\n get msg(): string {\r\n return this._msg;\r\n }\r\n set msg(msg: string){\r\n this._msg = msg;\r\n }\r\n\r\n constructor(\r\n errors: ValidationErrors, \r\n msgs: Record<string, ErrorMsg>\r\n ){\r\n this.update(errors, msgs);\r\n }\r\n\r\n update(errors: ValidationErrors, msgs: Record<string, ErrorMsg>){\r\n if(!errors){\r\n this.msg = null;\r\n return;\r\n }\r\n for(const key in msgs){\r\n if(errors[key]){\r\n const msgBody = msgs[key];\r\n const obj = typeof msgBody === 'function' ? msgBody(errors) : msgBody;\r\n const currentLang = (window as any).wmConfig.language;\r\n this.msg = obj[currentLang];\r\n return;\r\n }\r\n }\r\n this.msg = null;\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, SimpleChanges } from '@angular/core';\r\nimport { MatError } from '@angular/material/form-field';\r\nimport { ErrorMsg, ValidationErrorMessages } from './validation-error-messages';\r\nimport { ValidationErrors } from '@angular/forms';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-validation-errors,[app-validation-errors]',\r\n templateUrl: './validation-errors.component.html',\r\n styleUrls: ['./validation-errors.component.scss'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatError\r\n ],\r\n animations: [\r\n trigger('fadeInDown', [\r\n state('hidden', style({opacity: 0, transform: 'translateY(-5px)'})),\r\n state('visible', style({opacity: 1, transform: 'translateY(0%)'})),\r\n transition('void => visible', [\r\n style({opacity: 0, transform: 'translateY(-5px)'}),\r\n animate('300ms ease-in-out')\r\n ]),\r\n transition('hidden => visible', [animate('300ms ease-in-out')])\r\n ])\r\n ],\r\n host: {\r\n 'class': 'mat-mdc-form-field-error',\r\n '[@fadeInDown]': \"isErrorMsgVisible ? 'visible' : 'hidden'\",\r\n '[style.display]': \"isErrorMsgVisible ? '' : 'none'\",\r\n }\r\n})\r\nexport class ValidationErrorsComponent {\r\n @Input() errors = {};\r\n @Input() customErrorMessages: Record<string, ErrorMsg>;\r\n validationErrorMsgs = new ValidationErrorMessages({}, this.getDefaultErrorMsgs());\r\n isErrorMsgVisible = false;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes?.errors || changes?.customErrorMessages){\r\n const msgs = {...this.getDefaultErrorMsgs(), ...this.customErrorMessages}\r\n this.validationErrorMsgs.update(this.errors, msgs);\r\n this.isErrorMsgVisible = this.validationErrorMsgs.msg ? true : false;\r\n }\r\n }\r\n\r\n private getDefaultErrorMsgs() : Record<string, ErrorMsg>{\r\n return {\r\n required: {en: \"This field is required\", ar: \"هذه الخانة مطلوبه\"},\r\n minlength: (errors: ValidationErrors) => {\r\n const minLengthError: {requiredLength: number, actualLength: number} = errors.minlength;\r\n return {\r\n en: `Minimum length is ${minLengthError.requiredLength} characters. You entered ${minLengthError.actualLength}.`,\r\n ar: `يجب ألا يقل عدد الأحرف عن ${minLengthError.requiredLength}. لقد أدخلت ${minLengthError.actualLength} حرفًا.`\r\n }\r\n },\r\n maxlength: (errors: ValidationErrors) => {\r\n const maxLengthError: {requiredLength: number, actualLength: number} = errors.maxlength;\r\n return {\r\n en: `Maximum length is ${maxLengthError.requiredLength} characters. You entered ${maxLengthError.actualLength}.`,\r\n ar: `يجب ألا يزيد عدد الأحرف عن ${maxLengthError.requiredLength}. لقد أدخلت ${maxLengthError.actualLength} حرفًا.`\r\n }\r\n },\r\n validatePhoneNumber: {\r\n en: \"Please enter valid number\",\r\n ar: \"برجاء إدخال رقم صحيح\"\r\n },\r\n invalidTimeFormat: {\r\n en: \"Invalid time format\",\r\n ar: \"صيغة الوقت غير صحيحة\"\r\n },\r\n max: (errors: ValidationErrors) => {\r\n const maxError: {max: number, actual: number} = errors.max;\r\n return {\r\n en: `The number must not exceed ${maxError.max}. You entered ${maxError.actual}.`,\r\n ar: `يجب ألا يتجاوز الرقم ${maxError.max}. لقد أدخلت ${maxError.actual}.`\r\n };\r\n },\r\n min: (errors: ValidationErrors) => {\r\n const minError: {min: number, actual: number} = errors.min;\r\n return {\r\n en: `The number must be at least ${minError.min}. You entered ${minError.actual}.`,\r\n ar: `يجب أن يكون الرقم على الأقل ${minError.min}. لقد أدخلت ${minError.actual}.`\r\n };\r\n },\r\n };\r\n }\r\n}\r\n","{{validationErrorMsgs.msg}}","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input, OnInit } from '@angular/core';\r\nimport { CoreI18nService } from '../../../../services';\r\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\r\nimport { DatePipe, DecimalPipe, NgClass, NgSwitch, NgSwitchCase, NgSwitchDefault } from '@angular/common';\r\nimport {TranslatePipe} from \"../../../../pipes/translate.pipe\";\r\nimport { format } from 'date-fns';\r\n\r\n@Component({\r\n selector: 'app-info-item',\r\n templateUrl: './info-item.component.html',\r\n styleUrls: ['./info-item.component.scss'],\r\n standalone: true,\r\n imports: [\r\n MatSlideToggle,\r\n NgSwitchCase,\r\n DecimalPipe,\r\n DatePipe,\r\n NgClass,\r\n NgSwitchDefault,\r\n NgSwitch,\r\n TranslatePipe\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class InfoItemComponent implements OnInit {\r\n @Input() label!: string;\r\n @Input() value!: any;\r\n @Input() name!: any;\r\n @Input() type = 'text';\r\n @Input() dateType!: string;\r\n @Input() multiple!: boolean;\r\n @Input() insideTable!: boolean;\r\n @Input() hasLabel = true;\r\n @Input() arrayList!: any[];\r\n @Input() actionType!: string;\r\n @Input() download!: boolean;\r\n\r\n constructor(public i18n: CoreI18nService) { }\r\n\r\n ngOnInit() {\r\n if (this.type == 'currency') {\r\n this.value = this.value.replaceAll(',', '');\r\n }\r\n }\r\n\r\n viewForm(url: string) {\r\n window.open('/group/i-gate/wm-bpm/forms?formId=' + url);\r\n }\r\n\r\n getImage(email: string) {\r\n return '/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=' + email;\r\n }\r\n\r\n getDate(date){\r\n return format(\r\n new Date(date),\r\n \"dd/MM/yyyy\"\r\n );\r\n }\r\n\r\n}\r\n","<ng-container [ngSwitch]=\"type\">\r\n @if(label){\r\n <span class=\"name \">{{ label }}</span>\r\n }\r\n\r\n <!-- class=\"disc\" -->\r\n <span *ngSwitchCase=\"'attach'\">\r\n<!-- <app-docs-uploader [field]=\"value\" styleHeight=\"mini\" display=\"only-files\"></app-docs-uploader>-->\r\n </span>\r\n <span class=\"disc mt-2 \" *ngSwitchCase=\"'user-picker'\">\r\n @if(!multiple){\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(value)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2\" [ngClass]=\"{'flex-grow-1': actionType === 'delete'}\">\r\n <h6 class=\"fs-14 fw-bold fc-onyx mb-0\">{{name}}</h6>\r\n <span class=\"fs-12 fc-dark-gray\">{{value}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if(multiple){\r\n @if(multiple){\r\n <ng-container>\r\n @for (emails of arrayList; track $index; let ind = $index) {\r\n <div class=\"d-flex flex-wrap\">\r\n <ng-container>\r\n <div class=\"img-card circled-img small mb-3\">\r\n <img [src]=\"getImage(value)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2 mb-3\" [ngClass]=\"{'flex-grow-1': actionType === 'delete'}\">\r\n <h6 class=\"fs-14 fw-bold fc-onyx mb-0\"> {{(emails?.['personName'])}}</h6>\r\n <span class=\"fs-12 fc-dark-gray\"> {{emails?.['personEmail']}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n }\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'toggle'\">\r\n <mat-slide-toggle [checked]=\"value\"></mat-slide-toggle>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'toggleBtn'\">\r\n <span>{{value}}</span>\r\n </span>\r\n <span class=\"disc\" *ngSwitchCase=\"'telephone'\">\r\n <div class=\"d-flex align-items-center\">\r\n <bdi>{{ value }}</bdi>\r\n </div>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'currency'\">\r\n <span>{{value | number:'1.2-2'}}</span>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'date'\">\r\n @if(dateType === 'hijri'){\r\n <span>\r\n {{ value }}\r\n </span>\r\n }\r\n @if(dateType === 'yearOnly'){\r\n <span>\r\n {{ value }}\r\n </span>\r\n }\r\n@if(dateType !== 'hijri' && dateType !== 'yearOnly' && !value?.startDate){\r\n <span>\r\n {{value | date :'dd/MM/yyyy' : 'GMT+3'}}\r\n<!-- {{ getDate(value) }}-->\r\n </span>\r\n}\r\n @if(dateType !== 'hijri' && dateType !== 'yearOnly' && value?.startDate){\r\n <span>\r\n {{value?.['startDate'] | date :'dd/MM/yyyy'}}\r\n -\r\n {{value?.['endDate'] | date :'dd/MM/yyyy'}}\r\n </span>\r\n }\r\n\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'dateHijri'\">\r\n {{ value }}\r\n </span>\r\n\r\n <span class=\"disc breakLine fc-coral cursor-pointer\" *ngSwitchCase=\"'link'\">\r\n <a [href]=\"value\" target=\"_blank\">{{'View' | translate}} {{ label }} </a>\r\n </span>\r\n <span class=\"disc breakLine\" *ngSwitchCase=\"'formIdLink'\">\r\n <a (click)=\"viewForm(value)\">{{ value }} </a>\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'text'\">\r\n {{ value }}\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'multipleSelect'\">\r\n @for(item of value; track $index; let i =$index){\r\n <span>{{item.value}}\r\n @if(!(i === value.length-1)){\r\n <span>, </span>\r\n }\r\n </span>\r\n }\r\n\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'time'\">\r\n {{ value | date : 'shortTime' : 'GMT+3' }}\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" [innerHTML]=\"value\" *ngSwitchDefault>\r\n </span>\r\n</ng-container>\r\n","import { MatDatepickerInput, MatDatepickerModule, MatDatepickerToggle } from \"@angular/material/datepicker\";\r\nimport { MatFormField, MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInput } from \"@angular/material/input\";\r\nimport { FormLabelComponent } from \"./form-label/form-label.component\";\r\nimport { ValidationErrorsComponent } from \"./validation-errors/validation-errors.component\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { InfoItemComponent } from \"./info-item/info-item.component\";\r\nimport { NgClass } from \"@angular/common\";\r\nimport { TranslatePipe } from \"../../../pipes/translate.pipe\";\r\nimport { MatNativeDateModule } from \"@angular/material/core\";\r\n\r\nexport const MatDatePickerImports = [\r\n MatDatepickerToggle,\r\n MatDatepickerInput,\r\n MatDatepickerModule,\r\n MatNativeDateModule\r\n]\r\n\r\nexport const MatFormImports = [\r\n MatFormFieldModule,\r\n MatFormField,\r\n MatInput,\r\n]\r\n\r\nexport const Shareds = [\r\n FormLabelComponent,\r\n ValidationErrorsComponent,\r\n InfoItemComponent,\r\n ReactiveFormsModule,\r\n NgClass,\r\n TranslatePipe\r\n]\r\n\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, EventEmitter, forwardRef, inject, Input, OnInit, Output } from '@angular/core';\r\nimport {MatCheckbox, MatCheckboxChange} from \"@angular/material/checkbox\";\r\nimport {FormsModule, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { TermsConditionsComponent } from '../../terms-conditions/terms-conditions.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n MatCheckbox,\r\n FormsModule,\r\n ...Shareds\r\n ],\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CheckBoxComponent),\r\n multi: true,\r\n },\r\n ]\r\n\r\n})\r\nexport class CheckBoxComponent<Type> extends ControlValueAccessorDirective<Type> implements OnInit {\r\n @Input() containTerms: boolean;\r\n @Input() termsLabel: string;\r\n @Input() linkText: string;\r\n @Input() hrefLink: string;\r\n @Input() link: string;\r\n @Input() termsBody: any;\r\n @Output() downloadCheckBox = new EventEmitter();\r\n destroyRef = inject(DestroyRef);\r\n dialog = inject(MatDialog);\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n\r\n\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n \r\n }\r\n\r\n openUrl(){\r\n window.open(this.hrefLink)\r\n }\r\n\r\n valueChange(event: MatCheckboxChange) {\r\n const checked = event.checked;\r\n this.control.setValue(checked.toString());\r\n if(!this.control.touched){\r\n this.control.markAsTouched();\r\n }\r\n }\r\n\r\n openTermsPopup(): void {\r\n const dialogRef = this.dialog.open(TermsConditionsComponent, {\r\n data: this.termsBody,\r\n width: '700px',\r\n panelClass: ['main-popup'],\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(() => {\r\n });\r\n }\r\n}\r\n","<mat-checkbox\r\n [ngClass]=\"{'mx-3': isReadOnly}\"\r\n class=\"mt-3 mb-1\"\r\n [style.pointerEvents]=\"isReadOnly ? 'none' : 'auto'\"\r\n id=\"{{ name }}{{ randomID }}\"\r\n [name]=\"name\"\r\n (change)=\"valueChange($event)\"\r\n [checked]=\"control.value === 'true' ? true : false\">\r\n\r\n <div class=\"d-flex pt-1\">\r\n @if(label){\r\n <app-form-label class=\"mb-0\" [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n @if(containTerms) {\r\n <span\r\n class=\"fs-12 fw-bold fc-coral cursor-pointer mx-1\"\r\n (click)=\"openTermsPopup(); false\">\r\n {{ termsLabel ? termsLabel : 'termsAndConditions' | translate }}\r\n </span>\r\n }\r\n </div>\r\n\r\n @if(link) {\r\n <ng-container>\r\n <span> | </span>\r\n <a\r\n class=\"fs-12 fw-bold fc-coral cursor-pointer mx-1 d-inline-flex align-items-center gap-1\"\r\n href=\"{{ hrefLink }}\"\r\n target=\"_blank\">\r\n <ds-icon icon=\"external-link\"></ds-icon>\r\n <span class=\"underline\">{{ linkText }}</span>\r\n </a>\r\n </ng-container>\r\n }\r\n</mat-checkbox>\r\n<div>\r\n @if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n</div>\r\n","import {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport { Component, Input, Output, EventEmitter, SimpleChanges, CUSTOM_ELEMENTS_SCHEMA, forwardRef, OnInit, DestroyRef, inject } from '@angular/core';\r\nimport {NgClass} from \"@angular/common\";\r\nimport {MatAutocomplete, MatAutocompleteTrigger, MatOption} from \"@angular/material/autocomplete\";\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n\r\n@Component({\r\n selector: 'app-custom-searchable',\r\n templateUrl: './custom-searchable.component.html',\r\n styleUrls: ['./custom-searchable.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n NgClass,\r\n MatAutocomplete,\r\n MatOption,\r\n MatAutocompleteTrigger,\r\n MatInputModule,\r\n ...Shareds\r\n],\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CustomSearchableComponent),\r\n multi: true,\r\n },\r\n ]\r\n})\r\n\r\n\r\n\r\nexport class CustomSearchableComponent <Type> extends ControlValueAccessorDirective<Type> implements OnInit {\r\n @Input() options!: any;\r\n @Output() selectedValue = new EventEmitter();\r\n @Output() isLengthGreaterThan4 = new EventEmitter();\r\n @Input() disabled = false;\r\n @Input() displayedLabel: string= 'description';\r\n @Input() key: string = 'value';\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n destroyRef = inject(DestroyRef);\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n\r\n noData = false;\r\n filteredOptions!: any;\r\n\r\n clearInput() {\r\n this.control.reset()\r\n this.searchControl.reset()\r\n if (!this.isReadOnly) {\r\n this.setFilteredOptions()\r\n }\r\n }\r\n\r\n onFocusOut(){\r\n this.control.markAsTouched()\r\n }\r\n\r\n onKeyDown(e: KeyboardEvent, input: HTMLInputElement){\r\n setTimeout(() => {\r\n //reset in case no value and delete or backspace pressed\r\n if( (e.keyCode == 8 || e.keyCode == 46) && !this.control.value){\r\n if(this.control){\r\n this.control.reset()\r\n this.control.markAsTouched()\r\n }\r\n input.focus();\r\n }\r\n })\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.setFilteredOptions()\r\n }\r\n onValueChange(data) {\r\n this.setFilteredOptions(data)\r\n }\r\n\r\n setFilteredOptions(data?) {\r\n if (this.options?.length > 0) {\r\n this.noData = false\r\n // this.loading = false\r\n this.filteredOptions = data?.target?.value ? this._filter(data.target.value) : this.options;\r\n } else {\r\n this.noData = true\r\n }\r\n }\r\n\r\n private _filter(value: any): any {\r\n const filterValue = typeof value === 'string' ? value?.toLowerCase() : value;\r\n return this.options?.filter((option: any) => Object.values(option).join('')?.toLowerCase().includes(filterValue));\r\n }\r\n\r\n displayFn(option: any): string {\r\n return option ? option : '';\r\n }\r\n\r\n getAutoComplete(value: any) {\r\n this.control.setValue({key:value[this.key],value:value[this.displayedLabel]});\r\n this.searchControl.setValue(value[this.displayedLabel]);\r\n this.selectedValue.emit(value)\r\n }\r\n\r\n}\r\n","@if(isReadOnly && control?.value) {\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [value]=\"control?.value.value\"\r\n ></app-info-item>\r\n</ng-container>\r\n} @if(!isReadOnly) {\r\n<ng-container>\r\n @if(label) {\r\n <app-form-label\r\n [label]=\"label\"\r\n [optional]=\"required || mandatory ? false : true\"\r\n [tooltip]=\"tooltip\"\r\n ></app-form-label>\r\n }\r\n\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': disabled || loading,\r\n 'custom-validation': !control.hasValidator(Validators['required'])\r\n }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <span class=\"sfi sfi-search fc-coral fs-18\" matPrefix></span>\r\n <label class=\"mat-form-content\">\r\n <input\r\n #autocompleteInput\r\n type=\"text\"\r\n (keydown)=\"onKeyDown($event, autocompleteInput)\"\r\n [attr.disabled]=\"disabled\"\r\n [placeholder]=\"placeholder || (label ? ('select' | translate) + ' ' + label : '')\"\r\n aria-label=\"Number\"\r\n matInput\r\n (input)=\"onValueChange($event)\"\r\n [formControl]=\"searchControl\"\r\n [name]=\"name\"\r\n [matAutocomplete]=\"auto\"\r\n [value]=\"value?.key\"\r\n (focusout)=\"onFocusOut()\"\r\n />\r\n </label>\r\n\r\n @if(loading) {\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n } @if(!loading && searchControl?.value) {\r\n <span\r\n class=\"sfi sfi-close d-inline-block fc-coral cursor-pointer fs-12\"\r\n (click)=\"clearInput()\"\r\n matSuffix\r\n ></span>\r\n }\r\n\r\n <mat-autocomplete\r\n autoActiveFirstOption\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayFn\"\r\n (optionSelected)=\"getAutoComplete($event.option.value)\">\r\n\r\n\r\n\r\n\r\n @if(!noData) {\r\n <ng-container>\r\n @for(option of filteredOptions; track option) {\r\n <mat-option [value]=\"option\">\r\n <div class=\"d-flex align-items-center\">\r\n @if(option['avatar_url']) {\r\n <figure class=\"img-card small circled-img p-0 m-0\">\r\n <img [src]=\"option['avatar_url']\" alt=\"\" />\r\n </figure>\r\n } @if(option['avatar_url']) {\r\n <span class=\"mx-2\"></span>\r\n }\r\n\r\n {{ option[displayedLabel] }}\r\n </div>\r\n </mat-option>\r\n }\r\n </ng-container>\r\n } @if(noData) {\r\n <ng-container>\r\n <mat-option [disabled]=\"true\" class=\"text-center\">No Data</mat-option>\r\n </ng-container>\r\n }\r\n </mat-autocomplete>\r\n\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">{{ 'validSelectError' | translate }}{{ label }}</mat-error> -->\r\n\r\n @if(showHint) {\r\n <mat-hint>\r\n <span\r\n class=\"sfi sfi-check-circle font-10 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n @if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n</ng-container>\r\n}\r\n","import {\r\n FormControl,\r\n NG_VALUE_ACCESSOR,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n DestroyRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Inject,\r\n Input,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { CustomDateFormat } from './date-format';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { format } from 'date-fns';\r\nimport { MatDatePickerImports, MatFormImports, Shareds } from '../shared-imports';\r\nimport { MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nconst YEAR_ONLY_FORMAT = {\r\n parse: {\r\n dateInput: 'YYYY',\r\n },\r\n display: {\r\n dateInput: 'YYYY',\r\n monthYearLabel: 'YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'YYYY',\r\n },\r\n};\r\n\r\n@Component({\r\n selector: 'app-datepicker',\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DatePickerComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: MAT_DATE_FORMATS,\r\n useClass: CustomDateFormat,\r\n },\r\n ],\r\n\r\n imports: [\r\n MatDatepicker,\r\n ...MatDatePickerImports,\r\n ...MatFormImports,\r\n ...Shareds\r\n ],\r\n})\r\nexport class DatePickerComponent<Type>\r\n extends ControlValueAccessorDirective<Type>\r\n implements AfterViewInit\r\n{\r\n date = new FormControl();\r\n @Input() className!: string;\r\n @Input() calendarType!: string;\r\n @Input() yearOnly: boolean;\r\n @Output() dateValue: EventEmitter<any> = new EventEmitter();\r\n showIslamic = false;\r\n @Input() error!: string;\r\n @Inject(MAT_DATE_FORMATS) public dateFormat: CustomDateFormat;\r\n destroyRef = inject(DestroyRef);\r\n\r\n @Input() set format(_format: string) {\r\n if (_format) {\r\n this.dateFormat.updateDateFormat(\r\n { dateInput: _format },\r\n { dateInput: _format }\r\n );\r\n }\r\n }\r\n\r\n @ViewChild(MatDatepicker) datepicker: MatDatepicker<any>;\r\n floatLabel: any = 'auto';\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.isReadOnly && this.yearOnly) this.activateYearOnlyMode();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.setDateFormControl();\r\n }\r\n\r\n setDateFormControl() {\r\n const today = new Date();\r\n const currentYear = today.getFullYear();\r\n const currentMonth = today.getMonth();\r\n const currentDay = today.getDate();\r\n if (this.minDate) {\r\n if (this.minDate == 'today') {\r\n this.minDateValue = new Date(currentYear, currentMonth, currentDay);\r\n }\r\n }\r\n\r\n if (this.maxDate) {\r\n if (this.maxDate == 'today') {\r\n this.maxDateValue = new Date(currentYear, currentMonth, currentDay);\r\n } else if (this.maxDate == 'oneYear') {\r\n this.maxDateValue = new Date(\r\n currentYear + 1,\r\n currentMonth,\r\n currentDay - 1\r\n );\r\n }\r\n }\r\n if (this.customMaxDate) {\r\n const date = new Date(this.customMaxDate);\r\n this.maxDateValue = new Date(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate()\r\n );\r\n }\r\n if (this.customMinDate) {\r\n const date = new Date(this.customMinDate);\r\n this.minDateValue = new Date(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate()\r\n );\r\n }\r\n // if (this.required) this.control.addValidators(Validators.required);\r\n }\r\n\r\n focusPicker(picker) {\r\n picker.open();\r\n }\r\n\r\n dateChange(event: any) {\r\n if (event?.value && !this.isDisabled) {\r\n let inputValue;\r\n inputValue = format(\r\n new Date(event.value),\r\n \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\"\r\n );\r\n this.control.setValue(inputValue);\r\n }\r\n }\r\n\r\n clearDateValue(event): void {\r\n this.control.reset();\r\n this.control.markAsTouched();\r\n }\r\n\r\n private activateYearOnlyMode(): void {\r\n this.dateFormat.updateDateFormat(\r\n YEAR_ONLY_FORMAT.parse,\r\n YEAR_ONLY_FORMAT.display\r\n );\r\n if (this.control) {\r\n this.control.setValue(format(new Date(this.control.value), 'yyyy'));\r\n }\r\n this.datepicker.startView = 'multi-year';\r\n this.datepicker.yearSelected.subscribe((e) => {\r\n this.control.setValue(format(new Date(e), 'yyyy'));\r\n this.datepicker.close();\r\n });\r\n this.datepicker.openedStream.subscribe(() => {\r\n document.body.classList.add('year-only');\r\n });\r\n this.datepicker.closedStream.subscribe(() => {\r\n document.body.classList.remove('year-only');\r\n });\r\n }\r\n}\r\n","@if(!isReadOnly) {\r\n <ng-container>\r\n @if(label) {\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n\r\n <div class=\"datePicker justify-content-between\">\r\n <mat-form-field\r\n [ngClass]=\"{ 'input-disabled': isDisabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n (dateInput)=\"dateChange($event)\"\r\n [placeholder]=\"placeholder || (label ? ('select' | translate) + ' ' + label : '')\"\r\n (click)=\"focusPicker(dp)\"\r\n [min]=\"minDateValue\"\r\n [max]=\"maxDateValue\"\r\n readonly\r\n [matDatepicker]=\"dp\"\r\n [formControl]=\"control\"\r\n />\r\n </label>\r\n\r\n @if(control?.value) {\r\n <ds-icon\r\n matSuffix\r\n icon=\"close\"\r\n class=\"fc-coral fs-10 mx-2 cursor-pointer\"\r\n (click)=\"clearDateValue($event)\"\r\n ></ds-icon>\r\n }\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"dp\">\r\n <ds-icon\r\n icon=\"calendar-o\"\r\n class=\"fc-black fs-18\"\r\n matDatepickerToggleIcon\r\n ></ds-icon>\r\n </mat-datepicker-toggle>\r\n\r\n <mat-datepicker #dp></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n @if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n\r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly && control.value) {\r\n <ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n type=\"date\"\r\n [insideTable]=\"insideTable\"\r\n [dateType]=\"calendarType\"\r\n [label]=\"label\"\r\n [value]=\"control.value\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n </ng-container>\r\n}\r\n","/* eslint-disable @angular-eslint/component-selector */\r\n/* eslint-disable @typescript-eslint/no-empty-function */\r\nimport {\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n DestroyRef,\r\n forwardRef,\r\n inject,\r\n Inject,\r\n Input,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport { MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { CustomDateFormat } from '../date-picker/date-format';\r\nimport { format } from 'date-fns';\r\nimport { MatDatePickerImports, MatFormImports, Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nconst YEAR_ONLY_FORMAT = {\r\n parse: {\r\n dateInput: 'YYYY',\r\n },\r\n display: {\r\n dateInput: 'YYYY',\r\n monthYearLabel: 'YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'YYYY',\r\n },\r\n};\r\n\r\n@Component({\r\n selector: 'app-date-range-picker',\r\n templateUrl: './date-range-picker.component.html',\r\n styleUrls: ['./date-range-picker.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateRangePickerComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: MAT_DATE_FORMATS,\r\n useClass: CustomDateFormat,\r\n },\r\n ],\r\n imports: [\r\n ...MatDatePickerImports,\r\n ...MatFormImports,\r\n ...Shareds\r\n ],\r\n})\r\nexport class DateRangePickerComponent<\r\n Type\r\n> extends ControlValueAccessorDirective<Type> {\r\n @Input() className = 'white-input';\r\n @Input() yearOnly: boolean;\r\n @Inject(MAT_DATE_FORMATS) public dateFormat: CustomDateFormat;\r\n @ViewChild(MatDatepicker) datepicker: MatDatepicker<any>;\r\n @Input() calendarType!: string;\r\n startInputValue: string;\r\n endInputValue: string;\r\n destroyRef = inject(DestroyRef);\r\n dateRange: any;\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.isReadOnly && this.yearOnly) this.activateYearOnlyMode();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.setDateFormControl();\r\n }\r\n\r\n setDateFormControl() {\r\n const today = new Date();\r\n const currentYear = today.getFullYear();\r\n const currentMonth = today.getMonth();\r\n const currentDay = today.getDate();\r\n if (this.minDate) {\r\n if (this.minDate == 'today') {\r\n this.minDateValue = new Date(currentYear, currentMonth, currentDay);\r\n }\r\n }\r\n\r\n if (this.maxDate) {\r\n if (this.maxDate == 'today') {\r\n this.maxDateValue = new Date(currentYear, currentMonth, currentDay);\r\n }\r\n if (this.maxDate == 'oneYear') {\r\n this.maxDateValue = new Date(\r\n currentYear + 1,\r\n currentMonth,\r\n currentDay - 1\r\n );\r\n }\r\n }\r\n if (this.customMaxDate) {\r\n const date = new Date(this.customMaxDate);\r\n this.maxDateValue = new Date(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate()\r\n );\r\n }\r\n if (this.customMinDate) {\r\n const date = new Date(this.customMinDate);\r\n this.minDateValue = new Date(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate()\r\n );\r\n }\r\n\r\n if (this.required) this.control.addValidators(Validators.required);\r\n }\r\n\r\n focusPicker(picker) {\r\n picker.open();\r\n this.control.markAsTouched();\r\n }\r\n\r\n startDateChange(event: any) {\r\n if (event?.value && !this.isDisabled) {\r\n if (this.startDateControl.value) {\r\n this.startDateControl.setValue(\r\n format(new Date(event.value), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\r\n );\r\n }\r\n }\r\n }\r\n\r\n endDateChange(event: any) {\r\n if (event?.value && !this.isDisabled) {\r\n if (this.startDateControl.value && this.endDateControl.value) {\r\n this.endDateControl.setValue(\r\n format(new Date(event.value), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\r\n );\r\n this.setDateRangeControlValue();\r\n }\r\n }\r\n }\r\n\r\n setDateRangeControlValue() {\r\n this.dateRange = {\r\n startDate: this.startDateControl.value,\r\n endDate: this.endDateControl.value,\r\n };\r\n this.control.setValue(this.dateRange);\r\n }\r\n\r\n clearDateValue(event): void {\r\n this.dateRange = null;\r\n this.startInputValue = null;\r\n this.endInputValue = null;\r\n this.control.reset();\r\n this.endDateControl.reset();\r\n this.startDateControl.reset();\r\n this.control.markAsTouched();\r\n this.endDateControl.markAsTouched();\r\n this.startDateControl.markAsTouched();\r\n }\r\n\r\n private activateYearOnlyMode(): void {\r\n this.dateFormat.updateDateFormat(\r\n YEAR_ONLY_FORMAT.parse,\r\n YEAR_ONLY_FORMAT.display\r\n );\r\n if (this.control) {\r\n this.control.setValue(format(new Date(this.control.value), 'yyyy'));\r\n }\r\n this.datepicker.startView = 'multi-year';\r\n this.datepicker.yearSelected.subscribe((e) => {\r\n this.control.setValue(format(new Date(e), 'yyyy'));\r\n this.datepicker.close();\r\n });\r\n this.datepicker.openedStream.subscribe(() => {\r\n document.body.classList.add('year-only');\r\n });\r\n this.datepicker.closedStream.subscribe(() => {\r\n document.body.classList.remove('year-only');\r\n });\r\n }\r\n}\r\n","@if(!isReadOnly) {\r\n @if(label) {\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n\r\n<div class=\"datePicker\">\r\n <mat-form-field class=\"date-range primary-form {{ className }}\"\r\n [ngClass]=\"{\r\n 'custom-validation-error': !startDateControl.value && !endDateControl.value && startDateControl.touched\r\n }\">\r\n <label class=\"mat-form-content\">\r\n <mat-date-range-input\r\n [rangePicker]=\"picker\"\r\n [min]=\"minDateValue\"\r\n [max]=\"maxDateValue\"\r\n >\r\n <input\r\n matStartDate\r\n placeholder=\"{{ 'startDate' | translate }}\"\r\n [formControl]=\"startDateControl\"\r\n (dateInput)=\"startDateChange($event)\"\r\n (click)=\"focusPicker(picker)\"\r\n readonly\r\n />\r\n <input\r\n matEndDate\r\n placeholder=\"{{ 'endDate' | translate }}\"\r\n [formControl]=\"endDateControl\"\r\n (dateInput)=\"endDateChange($event)\"\r\n (click)=\"focusPicker(picker)\"\r\n readonly\r\n />\r\n </mat-date-range-input>\r\n </label>\r\n\r\n @if(control?.value) {\r\n <ds-icon\r\n matSuffix\r\n icon=\"close\"\r\n class=\"fc-coral fs-10 mx-2 cursor-pointer\"\r\n (click)=\"clearDateValue($event)\"\r\n ></ds-icon>\r\n }\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\" [disableRipple]=\"true\">\r\n <i class=\"sfi sfi-calendar-o fc-black font-18\" matDatepickerToggleIcon></i>\r\n </mat-datepicker-toggle>\r\n\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n </mat-form-field>\r\n</div>\r\n@if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n}\r\n\r\n\r\n} @else if(isReadOnly && control.value) {\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n type=\"date\"\r\n [insideTable]=\"insideTable\"\r\n [dateType]=\"calendarType\"\r\n [label]=\"label\"\r\n [value]=\"{\r\n startDate: control?.value?.startDate,\r\n endDate: control?.value?.endDate\r\n }\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n</ng-container>\r\n}\r\n","import { Directive, HostListener, Input, Optional, Self } from \"@angular/core\";\r\nimport { NgControl } from \"@angular/forms\";\r\nimport type { InputFilterFn, InputMapFn } from \"./types\";\r\n\r\n@Directive({\r\n selector: '[inputMapFilter]',\r\n standalone: true\r\n})\r\nexport class InputMapFilterDirective {\r\n @Input() mapFn: InputMapFn;\r\n @Input() filterFn: InputFilterFn;\r\n @Input() maxLength: number | string;\r\n\r\n constructor(@Optional() @Self() private ngControl: NgControl) {}\r\n\r\n @HostListener('keydown', ['$event'])\r\n handleKeydown(event: KeyboardEvent) {\r\n if(!this.shouldProceed()) return true;\r\n const key = event.key;\r\n const input = event.target as HTMLInputElement;\r\n const currentValue = input.value || '';\r\n const start = input.selectionStart || 0;\r\n const end = input.selectionEnd || 0;\r\n const isCtrl = event.ctrlKey || event.metaKey || event.altKey;\r\n \r\n // Allow native handling if user is using shortcut (e.g. Ctrl+V, Ctrl+A, etc.)\r\n if (isCtrl) return true;\r\n // Allow native handling of non-printable control keys (arrows, tab, etc.)\r\n if(event.key.length > 1 && key !== 'Backspace' && key !== 'Delete') return true;\r\n // Simulate Backspace or Delete\r\n if(key === 'Backspace' || key === 'Delete') {\r\n let nextValue = currentValue;\r\n let caretPos = start;\r\n if (key === 'Backspace') {\r\n if (start === end && start > 0) {\r\n nextValue = currentValue.slice(0, start - 1) + currentValue.slice(end);\r\n caretPos = Math.max(0, start - 1);\r\n } else {\r\n nextValue = currentValue.slice(0, start) + currentValue.slice(end);\r\n }\r\n }\r\n if (key === 'Delete') {\r\n if (start === end) {\r\n nextValue = currentValue.slice(0, start) + currentValue.slice(end + 1);\r\n } else {\r\n nextValue = currentValue.slice(0, start) + currentValue.slice(end);\r\n }\r\n }\r\n this.updateValue(input, '', currentValue, nextValue, caretPos, event);\r\n event.preventDefault();\r\n return false;\r\n }\r\n // Handle normal character input\r\n const char = key;\r\n const nextValue = currentValue.slice(0, start) + char + currentValue.slice(end);\r\n this.updateValue(input, char, currentValue, nextValue, start + 1, event);\r\n event.preventDefault();\r\n return false;\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n handlePaste(event: ClipboardEvent) {\r\n if(!this.shouldProceed()) return;\r\n const pasted = event.clipboardData?.getData('text') || '';\r\n const input = event.target as HTMLInputElement;\r\n for(let char of pasted) {\r\n const currentValue = input.value || '';\r\n const start = input.selectionStart || 0;\r\n const end = input.selectionEnd || 0;\r\n const nextValue = currentValue.slice(0, start) + char + currentValue.slice(end);\r\n this.updateValue(input, char, currentValue, nextValue, start + 1, event);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener('drop', ['$event'])\r\n handleDrop(event: DragEvent) {\r\n if(!this.shouldProceed()) return;\r\n const droppedText = event.dataTransfer?.getData('text') || '';\r\n const input = event.target as HTMLInputElement;\r\n for(let char of droppedText) {\r\n const currentValue = input.value || '';\r\n const start = input.selectionStart || 0;\r\n const end = input.selectionEnd || 0;\r\n const nextValue = currentValue.slice(0, start) + char + currentValue.slice(end);\r\n this.updateValue(input, char, currentValue, nextValue, start + 1, event);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n private shouldProceed(): boolean {\r\n if(this.mapFn || this.filterFn) return true;\r\n if(this.hasMaxLength) return true;\r\n return false;\r\n }\r\n\r\n private hasMaxLength(): boolean {\r\n return typeof +this.maxLength === 'number' && !isNaN(+this.maxLength);\r\n }\r\n\r\n private updateValue(\r\n input: HTMLInputElement, \r\n char: string, \r\n currentValue: string, \r\n nextValue: string, \r\n caretPos: number,\r\n event: KeyboardEvent | ClipboardEvent | DragEvent\r\n ) {\r\n if(this.hasMaxLength && nextValue.length > +this.maxLength) return;\r\n if(char ? (!this.filterFn || this.filterFn(char, currentValue, nextValue, event)) : true) {\r\n const value = this.mapFn ? this.mapFn(char, currentValue, nextValue) : nextValue;\r\n input.value = value;\r\n if (this.ngControl?.control) {\r\n this.ngControl.control.setValue(value);\r\n } else {\r\n input.dispatchEvent(new Event('input', { bubbles: true }));\r\n }\r\n input.setSelectionRange(caretPos, caretPos);\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n","import { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, Input, EventEmitter, forwardRef, inject, DestroyRef } from '@angular/core';\r\nimport { MatHint } from '@angular/material/form-field';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { MatFormImports, Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { InputMapFilterDirective } from '../../../../directives/input-map-filter/input-map-filter.directive';\r\nimport type { InputMapFn, InputFilterFn } from '../../../../directives/input-map-filter/types';\r\n\r\n\r\n@Component({\r\n selector: 'app-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n MatHint,\r\n ...Shareds,\r\n ...MatFormImports,\r\n InputMapFilterDirective\r\n ],\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputComponent),\r\n multi: true,\r\n },\r\n ]\r\n\r\n})\r\nexport class InputComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n @Input() iconPrefixName!: string;\r\n @Input() iconSuffixName!: string;\r\n @Input() emitedChangedValue1 = new EventEmitter();\r\n @Input() maxLength: number | string;\r\n\r\n /**\r\n * A mapping function that modifies the input value during typing, pasting, or dropping text.\r\n * You can use it to modify the full input value **before it appears** (e.g., for auto-capitalization,\r\n * formatting, or custom replacements).\r\n *\r\n * This function is called:\r\n * - On each **key press**, to determine how the input value should change when a character is typed.\r\n * - On **paste**, to transform the pasted content before it’s applied.\r\n * - On **drop**, to transform the dropped text before it’s applied.\r\n *\r\n * **Built-in mappers are available via the `InputMappers` utility class:**\r\n *\r\n * - `InputMappers.toUpperCase` — Transforms all input to UPPERCASE.\r\n * - `InputMappers.toLowerCase` — Transforms all input to lowercase.\r\n *\r\n * @param char - The character(s) being inserted. This is:\r\n * - A single character (e.g., `'a'`) during typing.\r\n * - The full pasted string during paste events.\r\n * - The full dropped string during drop events.\r\n * @param currentValue - The current value of the input **before** the change is applied.\r\n * @param nextValue - The simulated value of the input **after** the character, paste, or drop is inserted, but before transformation.\r\n *\r\n * @returns The final string to use as the new input value.\r\n *\r\n * @example\r\n * // Use a built-in mapper to force UPPERCASE input:\r\n * this.mapFn = InputMappers.toUpperCase;\r\n *\r\n * @example\r\n * // Custom mapper: Capitalize the first letter of each word\r\n * this.mapFn = (char, current, next) =>\r\n * typeof next === 'string' ? next.replace(/\\b\\w/g, c => c.toUpperCase()) : next;\r\n */\r\n @Input() mapFn: InputMapFn;\r\n\r\n /**\r\n * A filtering function that determines whether a character or string should be allowed into the input.\r\n *\r\n * This function is called during:\r\n * - **Typing**: When a key is pressed to decide if the character should be accepted.\r\n * - **Paste**: When text is pasted to decide if the entire pasted string should be accepted.\r\n * - **Drop**: When text is dropped into the input to decide if it should be allowed.\r\n *\r\n * You can use it to reject unwanted characters (e.g. numbers, symbols) or block input entirely based\r\n * on the current or predicted value.\r\n *\r\n * **Built-in filters are available via the `InputFilters` utility class:**\r\n *\r\n * - `InputFilters.arabicOnly` — Allows Arabic letters and digits, as well as common symbols.\r\n * - `InputFilters.englishOnly` — Allows English letters and digits, as well as common symbols.\r\n * - `InputFilters.digitsOnly` — Allows digits only (`0–9`), no letters or symbols.\r\n * - You can also use `InputFilters.buildPattern()` to define a custom filter.\r\n *\r\n * @param char - The character(s) being inserted:\r\n * - A single typed character (e.g., `'a'`) during key presses\r\n * - The full pasted or dropped string during paste/drop\r\n * @param currentValue - The current value of the input before the character or string is applied.\r\n * @param nextValue - The simulated next value if the character or string were applied.\r\n * @param event - The originating event triggering the input change. This can be a\r\n * `KeyboardEvent` (for typing), `ClipboardEvent` (for paste), or `DragEvent` (for drop).\r\n *\r\n * @returns `true` to allow the input, or `false` to block it.\r\n *\r\n *\r\n * @example\r\n * // Use a built-in filter to restrict to digits only\r\n * this.filterFn = InputFilters.digitsOnly;\r\n *\r\n * @example\r\n * // Custom filter: Allow only letters (no numbers or symbols)\r\n * this.filterFn = (char, current, next, event) => {\r\n * return /^[a-zA-Z]+$/.test(char);\r\n * };\r\n */\r\n @Input() filterFn: InputFilterFn;\r\n\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n }\r\n\r\n matSuffixClicked(){\r\n\r\n }\r\n\r\n}\r\n","@if(!isReadOnly){\r\n@if(label){\r\n<app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n}\r\n<mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': control.disabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n>\r\n @if(iconPrefixName){<span class=\"sfi {{ iconPrefixName }}\"></span>}\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n [value]=\"value\"\r\n oninput=\"validity.valid || (value='');\"\r\n [formControl]=\"control\"\r\n [type]=\"type\"\r\n [placeholder]=\"placeholder || (label ? ('enter' | translate) + ' ' + label : '')\"\r\n inputMapFilter\r\n [mapFn]=\"mapFn\"\r\n [filterFn]=\"filterFn\"\r\n [maxLength]=\"maxLength\"\r\n />\r\n </label>\r\n\r\n @if(iconSuffixName){<span (click)=\"matSuffixClicked()\" matSuffix class=\"sfi {{ iconSuffixName }}\"></span>}\r\n @if(hint){\r\n <mat-hint class=\"d-flex align-items-center gap-1 mt-1\">\r\n <span\r\n class=\"sfi sfi-info fs-17 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n <mat-error\r\n app-validation-errors\r\n [errors]=\"control.errors\"\r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n</mat-form-field>\r\n\r\n} @if(isReadOnly && control.value && (showIfEmpty || control)){\r\n<ng-container class=\"info-section\">\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [type]=\"type\"\r\n [value]=\"control.value\"\r\n ></app-info-item>\r\n</ng-container>\r\n}\r\n","import { InputFilterFn } from \"./types\";\r\n\r\nexport class InputFilters {\r\n /**\r\n * A filter that allows only Arabic characters (letters, punctuation) and Arabic-Indic digits (٠–٩),\r\n * as well as basic common symbols and spaces.\r\n *\r\n * @returns `true` if the character should be allowed; otherwise, `false`\r\n */\r\n static arabicOnly(\r\n char: string,\r\n current: string,\r\n next: string,\r\n event: KeyboardEvent | ClipboardEvent | DragEvent,\r\n ) {\r\n const additionalCharactersRegex = /^[~`!@#$%^&*()_+=[\\]\\{}|;':\",.\\/<>?0-9- ]+$/;\r\n const arabicAlphabetDigits = /[\\u0600-\\u06ff]|[\\u0750-\\u077f]|[\\ufb50-\\ufc3f]|[\\ufe70-\\ufefc]|[\\u0200]|[\\u00A0]/g;\r\n return additionalCharactersRegex.test(char) || arabicAlphabetDigits.test(char);\r\n }\r\n\r\n /**\r\n * A filter that allows only English letters (A–Z, a–z), digits (0–9), common symbols, and space.\r\n *\r\n * @returns `true` if the character should be allowed; otherwise, `false`\r\n */\r\n static englishOnly(\r\n char: string,\r\n current: string,\r\n next: string,\r\n event: KeyboardEvent | ClipboardEvent | DragEvent,\r\n ) {\r\n const additionalCharactersRegex = /^[~`!@#$%^&*()_+=[\\]\\{}|;':\",.\\/<>?0-9- ]+$/;\r\n const english = /^[a-zA-Z ]*$/;\r\n return additionalCharactersRegex.test(char) || english.test(char);\r\n }\r\n\r\n /**\r\n * A filter that allows only digits (0–9).\r\n *\r\n * @returns `true` if the character is a digit; otherwise, `false`\r\n */\r\n static digitsOnly(\r\n char: string,\r\n current: string,\r\n next: string,\r\n event: KeyboardEvent | ClipboardEvent | DragEvent,\r\n ) {\r\n return /^[0-9]+$/.test(char);\r\n };\r\n\r\n static decimalDigitsOnly(\r\n char: string,\r\n current: string,\r\n next: string,\r\n event: KeyboardEvent | ClipboardEvent | DragEvent,\r\n ) {\r\n return /^\\d*\\.?\\d*$/.test(next);\r\n };\r\n\r\n /**\r\n * Creates a new `PatternBuilder` instance for building a custom input filter.\r\n *\r\n * The builder allows chaining methods like `.allowArabicAlphabets()`, `.allowDigits()`, `.allowSpace()`, etc.\r\n * Once configured, call `.build()` to generate the `InputFilterFn`.\r\n *\r\n * @example\r\n * ```ts\r\n * this.filterFn = InputFilters.buildPattern()\r\n * .allowArabicAlphabets()\r\n * .allowArabicDigits()\r\n * .allowSpace()\r\n * .build();\r\n * ```\r\n *\r\n * @returns An instance of `PatternBuilder` for building a custom filter\r\n */\r\n static buildPattern(): PatternBuilder {\r\n return new PatternBuilder();\r\n }\r\n\r\n}\r\nclass PatternBuilder {\r\n private patternParts: string[] = [];\r\n\r\n /**\r\n * Allow Arabic letters and Arabic symbols (e.g., Tatweel, diacritics, Arabic punctuation).\r\n */\r\n allowArabicAlphabets() {\r\n this.patternParts.push(\r\n '\\u0621-\\u064A' + // Arabic letters\r\n '\\u060C\\u061B\\u061F' + // Arabic punctuation: ، ؛ ؟\r\n '\\u0640' + // Tatweel\r\n '\\u064B-\\u0652' + // Diacritics (Tashkeel)\r\n '\\u066A-\\u066C' // Arabic percent, decimal, thousands separator\r\n );\r\n return this;\r\n }\r\n\r\n /**\r\n * Allow Arabic-Indic digits: ٠١٢٣٤٥٦٧٨٩\r\n */\r\n allowArabicDigits() {\r\n this.patternParts.push('\\u0660-\\u0669');\r\n return this;\r\n }\r\n\r\n /**\r\n * Allow English letters A–Z (uppercase/lowercase).\r\n */\r\n allowEnglishAlphabets() {\r\n this.patternParts.push('a-zA-Z');\r\n return this;\r\n }\r\n\r\n allowDigits() {\r\n this.patternParts.push('0-9');\r\n return this;\r\n }\r\n\r\n allowSpace() {\r\n this.patternParts.push(' ');\r\n return this;\r\n }\r\n\r\n allowSymbols() {\r\n this.patternParts.push(`~\\`!@#$%^&*()_+=\\\\[\\\\]{}|;:'\",.<>/?\\\\-`);\r\n return this;\r\n }\r\n\r\n /**\r\n * Builds and returns the filter function.\r\n */\r\n build(): InputFilterFn {\r\n const regex = new RegExp(`^[${this.patternParts.join('')}]+$`);\r\n return (\r\n char: string,\r\n current: string,\r\n next: string,\r\n event: KeyboardEvent | ClipboardEvent | DragEvent\r\n ): boolean => {\r\n return regex.test(char);\r\n };\r\n }\r\n}\r\n","export class InputMappers {\r\n /**\r\n * A mapping function that transforms all input to UPPERCASE.\r\n */\r\n static toUpperCase(char: string, currentValue: string, nextValue: string): string {\r\n return typeof nextValue === 'string' ? nextValue.toUpperCase() : nextValue;\r\n };\r\n\r\n /**\r\n * A mapping function that transforms all input to lowercase.\r\n */\r\n static toLowerCase(char: string, currentValue: string, nextValue: string): string {\r\n return typeof nextValue === 'string' ? nextValue.toLowerCase() : nextValue;\r\n };\r\n}","/* eslint-disable @angular-eslint/use-lifecycle-interface */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, EventEmitter, forwardRef, inject, Input, Output } from '@angular/core';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { MatFormImports, Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { InputFilterFn, InputFilters, InputMapFilterDirective } from '../../../../directives/input-map-filter';\r\n\r\n\r\n@Component({\r\n selector: 'app-input-number',\r\n templateUrl: './input-number.component.html',\r\n styleUrls: ['./input-number.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n InputMapFilterDirective,\r\n ...Shareds,\r\n ...MatFormImports\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputNumberComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class InputNumberComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n @Input() iconPrefixName!: string;\r\n @Input() iconSuffixName!: string;\r\n @Input() numberSuffixName!: string;\r\n @Input() allowedPattern = '';\r\n destroyRef = inject(DestroyRef);\r\n @Output() emitedChangedValue = new EventEmitter();\r\n onlyNumbers: InputFilterFn = InputFilters.decimalDigitsOnly;\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n\r\n}\r\n","@if(!isReadOnly){\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': control.disabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n @if(iconPrefixName){<span class=\"sfi {{ iconPrefixName }}\"></span>}\r\n @if(loading){<span\r\n class=\"sfi sfi-spinner d-inline-block spin fc-coral\"\r\n matSuffix\r\n ></span\r\n >}\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n [value]=\"value\"\r\n oninput=\"validity.valid || (value='');\"\r\n [formControl]=\"control\"\r\n [type]=\"type\"\r\n [placeholder]=\"placeholder || (label ? ('enter' | translate) + ' ' + label : '')\"\r\n inputMapFilter\r\n [filterFn]=\"onlyNumbers\"\r\n />\r\n </label>\r\n @if(iconSuffixName){<span matSuffix class=\"sfi {{ iconSuffixName }}\"></span>}\r\n @if(hint){\r\n <mat-hint class=\"d-flex align-items-center gap-1 mt-1\">\r\n <span\r\n class=\"sfi sfi-info fs-17 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n </mat-form-field>\r\n } @if(isReadOnly && control.value && (showIfEmpty || control)){\r\n <ng-container class=\"info-section\">\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [type]=\"type\"\r\n [value]=\"control.value\"\r\n ></app-info-item>\r\n </ng-container>\r\n }\r\n","import {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Input } from '@angular/core';\r\nimport {NgClass} from \"@angular/common\";\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { MatFormImports, Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-input-email',\r\n templateUrl: './input-email.component.html',\r\n styleUrls: ['./input-email.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n ...Shareds,\r\n ...MatFormImports\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputEmailComponent),\r\n multi: true,\r\n },\r\n ]\r\n})\r\nexport class InputEmailComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n @Input() matPrefix!: boolean;\r\n @Input() iconPrefixName!: string;\r\n @Input() iconSuffixName!: string;\r\n @Input() numberSuffixName!: string;\r\n destroyRef = inject(DestroyRef);\r\n displayErrors(data){\r\n console.log(this.control.errors)\r\n }\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n}\r\n","@if(!isReadOnly){\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': control.disabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n @if(iconPrefixName){<span class=\"sfi {{ iconPrefixName }}\"></span>}\r\n @if(loading){<span\r\n class=\"sfi sfi-spinner d-inline-block spin fc-coral\"\r\n matSuffix\r\n ></span\r\n >}\r\n <label class=\"mat-form-content\">\r\n <!-- add input for ar && en custom directive with add type = arOnly || type = enOnly-->\r\n <input\r\n matInput\r\n [value]=\"value\"\r\n oninput=\"validity.valid || (value='');\"\r\n [formControl]=\"control\"\r\n [type]=\"type\"\r\n [placeholder]=\"placeholder || (label ? ('enter' | translate) + ' ' + label : '')\"\r\n (change)=\"displayErrors($event)\"\r\n />\r\n </label>\r\n @if(iconSuffixName){<span matSuffix class=\"sfi {{ iconSuffixName }}\"></span>}\r\n @if(hint){\r\n <mat-hint class=\"d-flex align-items-center gap-1 mt-1\">\r\n <span\r\n class=\"sfi sfi-info fs-17 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n </mat-form-field>\r\n } @if(isReadOnly && control.value && (showIfEmpty || control)){\r\n <ng-container class=\"info-section\">\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [type]=\"type\"\r\n [value]=\"control.value\"\r\n ></app-info-item>\r\n </ng-container>\r\n }\r\n","/* eslint-disable @angular-eslint/use-lifecycle-interface */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/component-selector */\r\n// import { Validators } from '@angular/forms';\r\nimport {\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n forwardRef,\r\n Input,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { MatFormField } from '@angular/material/form-field';\r\nimport { SatPopoverModule } from '@ncstate/sat-popover';\r\nimport { NgxMaskDirective } from 'ngx-mask';\r\nimport { NgClass, NgIf } from '@angular/common';\r\nimport { InfoItemComponent } from '../info-item/info-item.component';\r\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { TranslatePipe } from '../../../../pipes/translate.pipe';\r\n\r\n@Component({\r\n selector: 'app-input-mask',\r\n templateUrl: './input-mask.component.html',\r\n styleUrls: ['./input-mask.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputMaskComponent),\r\n multi: true,\r\n },\r\n ],\r\n imports: [\r\n SatPopoverModule,\r\n MatFormField,\r\n NgxMaskDirective,\r\n InfoItemComponent,\r\n ReactiveFormsModule,\r\n NgClass,\r\n TranslatePipe\r\n ],\r\n})\r\nexport class InputMaskComponent<\r\n Type\r\n> extends ControlValueAccessorDirective<Type> {\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n @Input() matPrefix!: boolean;\r\n @Input() iconPrefixName!: string;\r\n @Input() iconSuffixName!: string;\r\n @Input() numberSuffixName!: string;\r\n // ngOnInit(): void {\r\n // this.resetPropagator.subscribe(this, this.resetData);\r\n\r\n // code\tmeaning\r\n // 0\tdigits (like 0 to 9 numbers)\r\n // 9\tdigits (like 0 to 9 numbers), but optional\r\n // A\tletters (uppercase or lowercase) and digits\r\n // S\tonly letters (uppercase or lowercase)\r\n // U\tonly letters uppercase\r\n // L\tonly letters lowercase\r\n\r\n // }\r\n}\r\n","\r\n@if(!isReadOnly){\r\n <ng-container>\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n @if(!required){\r\n <span class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : isDisabled }\"\r\n [floatLabel]=\"floatLabel\">\r\n\r\n @if(iconPrefixName){\r\n <span matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n }\r\n <label class=\"mat-form-content\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [attr.disabled]=\"isDisabled\" [mask]=\"mask\"\r\n [showMaskTyped]=\"false\" oninput=\"validity.valid || (value='');\" [formControl]=\"control\"\r\n [required]=\"required\" [placeholder]=\"placeholder || (label ? ('enter' | translate) + ' ' + label : '')\">\r\n </label>\r\n\r\n @if(matSuffix){\r\n <span matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n }\r\n @if(type === 'number'){\r\n <div matSuffix class=\"d-flex align-items-center gap-2\">\r\n @if(numberSuffixName){\r\n <span class=\"fs-14 fw-medium\">{{numberSuffixName}}</span>\r\n }\r\n <!-- <span class=\"sfi sfi-minus p-2 bc-light-gray fc-black\"></span>\r\n <span class=\"sfi sfi-plus p-2 bc-light-gray fc-black\"></span> -->\r\n </div>\r\n }\r\n <!-- @if((!control?.valid)){\r\n <mat-error class=\"mb-2\">\r\n {{i18n.translate('validFieldError')}}{{label}}\r\n </mat-error>\r\n } -->\r\n\r\n\r\n <!-- <mat-error *ngIf=\"(type ==='email' && !control?.valid)\">\r\n {{i18n.translate('validEmailError')}}\r\n </mat-error> -->\r\n @if(showHint){\r\n <mat-hint>\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n <!-- <span class=\"fc-coral\" style=\"color:#f44336\" *ngIf=\"( showErrorMessage && control.value)\">\r\n {{errorMessage}}\r\n </span> -->\r\n\r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly && control.value){\r\n <ng-container class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"label ? true: false\"\r\n [value]=\"control\"></app-info-item>\r\n </ng-container>\r\n\r\n}\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/directive-selector */\r\nimport {Directive, ElementRef, HostListener, Input, OnInit} from '@angular/core';\r\nimport {MycurrencyPipe} from \"../pipes\";\r\n\r\n@Directive({\r\n selector: '[appMycurrency]',\r\n standalone: true\r\n})\r\nexport class MycurrencyDirective implements OnInit{\r\n private el: any;\r\n @Input() decimals!: number;\r\n\r\n constructor(\r\n private elementRef:ElementRef,\r\n private formatcurrencypipe:MycurrencyPipe\r\n ) {\r\n this.el = this.elementRef.nativeElement;\r\n }\r\n ngOnInit(){\r\n setTimeout(() => {\r\n this.el.value = this.formatcurrencypipe.transform(this.el.value);\r\n });\r\n }\r\n @HostListener(\"focus\",[\"$event.target.value\",\"$event\"])\r\n onFocus(value,event) {\r\n this.el.value = this.formatcurrencypipe.parse(value); // opossite of transform\r\n if(event.which== 9)\r\n {\r\n return false;\r\n }\r\n return this.el.select();\r\n\r\n }\r\n\r\n @HostListener(\"blur\", [\"$event.target.value\"])\r\n onBlur(value) {\r\n this.el.value = this.formatcurrencypipe.transform(value);\r\n }\r\n @HostListener('keydown', ['$event']) onKeyDown(event) {\r\n const e = <KeyboardEvent> event;\r\n if(e.key == 'و' || e.key == 'ز'){\r\n e.preventDefault();\r\n }\r\n if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||\r\n // Allow: Ctrl+A\r\n (e.keyCode === 65 && (e.ctrlKey || e.metaKey)) ||\r\n // Allow: Ctrl+C\r\n (e.keyCode === 67 && (e.ctrlKey || e.metaKey)) ||\r\n // Allow: Ctrl+V\r\n (e.keyCode === 86 && (e.ctrlKey || e.metaKey)) ||\r\n // Allow: Ctrl+X\r\n (e.keyCode === 88 && (e.ctrlKey || e.metaKey)) ||\r\n (e.keyCode === 188 ) ||\r\n // Allow: home, end, left, right\r\n (e.keyCode >= 35 && e.keyCode <= 39)) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n // Ensure that it is a number and stop the keypress\r\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105 )) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n onPaste(event: ClipboardEvent) {\r\n const clipboardData = event.clipboardData ;\r\n const pastedText = clipboardData.getData('text');\r\n\r\n // Example: block pasting if pasted text contains forbidden characters\r\n if (pastedText.includes('و') || pastedText.includes('ز')) {\r\n event.preventDefault();\r\n }\r\n\r\n // Or only allow digits (example)\r\n if (!/^\\d+$/.test(pastedText)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n}\r\n","import {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Input } from '@angular/core';\r\nimport {MatHint} from '@angular/material/form-field';\r\nimport {NgClass, NgSwitchCase,} from \"@angular/common\";\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport {MycurrencyPipe} from \"../../../../pipes\";\r\nimport {MycurrencyDirective} from \"../../../../directives/currency.directive\";\r\nimport { MatFormImports, Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-input-currency',\r\n templateUrl: './input-currency.component.html',\r\n styleUrls: ['./input-currency.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n MatHint,\r\n MycurrencyDirective,\r\n ...Shareds,\r\n ...MatFormImports,\r\n NgSwitchCase\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputCurrencyComponent),\r\n multi: true,\r\n\r\n },\r\n MycurrencyPipe\r\n ]\r\n})\r\nexport class InputCurrencyComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n @Input() iconPrefixName!: string;\r\n @Input() iconSuffixName!: string;\r\n @Input() numberSuffixName!: string;\r\n destroyRef = inject(DestroyRef);\r\n public mycurrencyPipe: MycurrencyPipe\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n}\r\n","@if(!isReadOnly){\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': control.disabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n @if(iconPrefixName){<span class=\"sfi {{ iconPrefixName }}\"></span>}\r\n @if(loading){<span\r\n class=\"sfi sfi-spinner d-inline-block spin fc-coral\"\r\n matSuffix\r\n ></span\r\n >}\r\n <label class=\"mat-form-content\">\r\n <!-- add input for ar && en custom directive with add type = arOnly || type = enOnly-->\r\n <input\r\n matInput\r\n [value]=\"value\"\r\n oninput=\"validity.valid || (value='');\"\r\n [formControl]=\"control\"\r\n [type]=\"type\"\r\n [placeholder]=\"placeholder || (label ? ('enter' | translate) + ' ' + label : '')\"\r\n appMycurrency\r\n />\r\n </label>\r\n @if(iconSuffixName){<span matSuffix class=\"sfi {{ iconSuffixName }}\"></span>}\r\n @if(hint){\r\n <mat-hint class=\"d-flex align-items-center gap-1 mt-1\">\r\n <span\r\n class=\"sfi sfi-info fs-17 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n </mat-form-field>\r\n } @if(isReadOnly && control.value && (showIfEmpty || control)){\r\n <ng-container class=\"info-section\">\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [type]=\"'currency'\"\r\n [value]=\"control.value\"\r\n ></app-info-item>\r\n </ng-container>\r\n }\r\n","// export * from './input-autocomplete.module';\r\nexport * from './input-autocomplete.model';","import { NgxIntlTelInputModule } from 'ngx-intl-tel-input-gg';\r\nimport { CountryISO, SearchCountryField } from 'ngx-intl-tel-input-gg';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\r\nimport { Component, Input, CUSTOM_ELEMENTS_SCHEMA, forwardRef, OnInit, inject, DestroyRef } from '@angular/core';\r\nimport {InfoItemComponent} from \"../info-item/info-item.component\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { ValidationErrorsComponent } from '../validation-errors/validation-errors.component';\r\nimport { Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatError } from '@angular/material/form-field';\r\n\r\n@Component({\r\n selector: 'app-input-telephone',\r\n templateUrl: './input-telephone.component.html',\r\n styleUrls: ['./input-telephone.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgxIntlTelInputModule,\r\n ...Shareds,\r\n MatError\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputTelephoneComponent),\r\n multi: true,\r\n },\r\n ]\r\n})\r\nexport class InputTelephoneComponent<Type> extends ControlValueAccessorDirective<Type> implements OnInit {\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n controlValue:string = '';\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\noverride ngOnInit(): void {\r\n super.ngOnInit();\r\n if(this.control.hasValidator(this.Validators.required)){\r\n this.telephoneControl.setValidators(this.Validators.required)\r\n } else {\r\n this.telephoneControl.setValidators(null)\r\n }\r\n this.telephoneControl.updateValueAndValidity\r\n\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n \r\n}\r\n CountryISO = CountryISO;\r\n SearchCountryField = SearchCountryField;\r\n show:boolean = false;\r\n \r\n setControlValue(controlValue){\r\n console.log(this.telephoneControl.errors)\r\n if (this.telephoneControl.valid && controlValue){\r\n this.control.setValue(controlValue['internationalNumber'])\r\n this.telephoneControl.setValue(controlValue['internationalNumber'])\r\n } \r\n if(!controlValue){\r\n this.control.reset()\r\n }\r\n\r\n if ( this.telephoneControl.invalid && this.telephoneControl.touched){\r\n this.control.markAsTouched()\r\n }\r\n }\r\n}\r\n","@if(!isReadOnly){\r\n <ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <!-- <mat-form-field style=\"height: 50px;\" class=\"primary-form input-telephone {{className}}\" floatLabel=\"always\"> -->\r\n <div class=\"primary-form input-telephone {{className}}\" floatLabel=\"always\">\r\n <label class=\"mat-form-content\">\r\n <!-- [placeholder]=\"label\" -->\r\n <!-- <input matInput [disabled]=\"disabled\" ng2TelInput numberOnly #phone\r\n [ng2TelInputOptions]=\"{initialCountry: 'sa', utilsScript: 'assets/js/utils.js'}\" (hasError)=\"hasError($event)\"\r\n (ng2TelOutput)=\"getNumber($event)\" (intlTelInputObject)=\"telInputObject($event)\"\r\n (countryChange)=\"onCountryChange($event)\" [(ngModel)]=\"field\" [name]=\"name\"\r\n oninput=\"this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\\..*)\\./g, '$1');\"\r\n [maxlength]=\"maxLength\" [minLength]=\"minLength\" />-->\r\n <!-- <input matInput [hidden]=\"true\"/> -->\r\n <ngx-intl-tel-input\r\n (input)=\"setControlValue(telephoneControl.value)\"\r\n [formControl]=\"telephoneControl\"\r\n [cssClass]=\"'custom'\"\r\n [preferredCountries]=\"[CountryISO.UnitedStates, CountryISO.UnitedKingdom]\"\r\n [enableAutoCountrySelect]=\"false\"\r\n [enablePlaceholder]=\"true\"\r\n [searchCountryFlag]=\"true\"\r\n [searchCountryField]=\"[SearchCountryField.Iso2, SearchCountryField.Name]\"\r\n [selectFirstCountry]=\"false\"\r\n [selectedCountryISO]=\"CountryISO.SaudiArabia\"\r\n [maxLength]=\"17\"\r\n [phoneValidation]=\"true\"\r\n [inputId]=\"\"\r\n name=\"phone\"\r\n ></ngx-intl-tel-input>\r\n </label>\r\n </div>\r\n <!-- </mat-form-field> -->\r\n @if (telephoneControl.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"telephoneControl.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n\r\n </ng-container>\r\n}\r\n@if(isReadOnly && control.value){\r\n <ng-container>\r\n <app-info-item class=\"info-item w-100\" [type]=\"'telephone'\" [label]=\"label\"\r\n [value]=\"control.value\"></app-info-item>\r\n </ng-container>\r\n}\r\n","import {\r\n FormsModule,\r\n NG_VALUE_ACCESSOR,\r\n} from '@angular/forms';\r\nimport {\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n DestroyRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { MatError, MatFormField } from '@angular/material/form-field';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { SatPopoverModule } from '@ncstate/sat-popover';\r\nimport { Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-search-employee',\r\n templateUrl: './search-employee.component.html',\r\n styleUrls: ['./search-employee.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n MatFormField,\r\n MatError,\r\n MatInput,\r\n NgClass,\r\n MatAutocompleteModule,\r\n FormsModule,\r\n SatPopoverModule,\r\n ...Shareds,\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SearchEmployeeComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SearchEmployeeComponent<\r\n Type\r\n> extends ControlValueAccessorDirective<Type> {\r\n @Input() valueName!: string;\r\n @Input() className = 'bordered-input';\r\n @Input() optional = false;\r\n @Input() data!: any[];\r\n @Input() floatLabel: any = 'auto';\r\n @Input() error!: string;\r\n selected = false;\r\n @Input() ApiAlias!: any;\r\n @Input() parameters: any;\r\n @Input() hasCustomAPI = false;\r\n\r\n\r\n /**\r\n * Emits the full details of the selected employee.\r\n */\r\n @Output() selectedEmployee = new EventEmitter();\r\n @Input() showEdit = false;\r\n @Input() arrayList: any[] = [];\r\n @Input() isUniqueUsers = false;\r\n userAlreadyExist = false;\r\n @Output() emitedDeletedValue = new EventEmitter();\r\n destroyRef = inject(DestroyRef);\r\n\r\n @Input() hasCustomApi = false;\r\n @Output() customApiEmit = new EventEmitter();\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n deleteRow(ind: number, rowData) {\r\n if (!this.isReadOnly) {\r\n this.arrayList = this.arrayList?.filter((item: any, index) => {\r\n return index != ind;\r\n });\r\n const obj = {\r\n rowData: rowData,\r\n arrayList: this.arrayList,\r\n };\r\n this.emitedDeletedValue.emit(obj);\r\n }\r\n if (!this.arrayList?.length && this.multiple) {\r\n this.employeeSearchControl.markAsTouched();\r\n this.control.setValue([]);\r\n this.control.setValidators(this.Validators['required'])\r\n this.control.updateValueAndValidity()\r\n }\r\n }\r\n\r\n onLoadOptions(event: any) {\r\n const input = event.target.value;\r\n this.data = [];\r\n if (input.length >= 3) {\r\n this.selected = false;\r\n this.loading = true;\r\n if (this.hasCustomAPI) { \r\n this.coreService\r\n .customSearchEmployee(input,this.ApiAlias,this.parameters)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (form: any) => {\r\n this.loading = false;\r\n this.data = form.Users;\r\n },\r\n error: (err) => { },\r\n complete: () => { },\r\n });\r\n\r\n }\r\n else {\r\n\r\n this.coreService\r\n .searchEmployee(input)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (form: any) => {\r\n this.loading = false;\r\n this.data = form.Users;\r\n },\r\n error: (err) => { },\r\n complete: () => { },\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n\r\n } else if (input.length == 0) {\r\n if (this.multiple) {\r\n } else {\r\n this.control.reset();\r\n this.control.markAsTouched();\r\n }\r\n }\r\n }\r\n\r\n includeData(option: any, filterValue: string) {\r\n if (\r\n option?.email.toLowerCase().includes(filterValue) ||\r\n option?.name.toLowerCase().includes(filterValue)\r\n ) {\r\n return option;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n getImage(id: string): string {\r\n return '/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=' + id;\r\n }\r\n\r\n selectOption(object: any, ev: any) {\r\n this.selectedEmployee.emit(object);\r\n if (!this.control.touched) this.onTouchedFn();\r\n this.userAlreadyExist = false;\r\n this.selected = true;\r\n this.data = [];\r\n if (this.multiple) {\r\n if (this.arrayList?.some((item) => item?.personEmail === object?.email)) {\r\n this.userAlreadyExist = true;\r\n return;\r\n }\r\n let obj = {\r\n personName: object.name,\r\n personEmail: object.email,\r\n // job: object.job.name,\r\n // jobCode: object.job.code,\r\n // manager: object.manager,\r\n // department: object.department,\r\n // generalDepartment: object.generalDepartment,\r\n // sector: object.sector,\r\n // section: object.section,\r\n // seniorSectorName: object.seniorSectorName,\r\n };\r\n this.arrayList?.push(obj);\r\n this.control.setValue(this.arrayList);\r\n\r\n } else {\r\n const controlValue = {\r\n personName: object.name,\r\n personEmail: object.email,\r\n };\r\n this.control.setValue(controlValue);\r\n this.employeeSearchControl.setValue(object.name);\r\n }\r\n }\r\n}\r\n\r\nexport interface searchEmp {\r\n personName?: string;\r\n personEmail?: string;\r\n contact?: string;\r\n employeeNumber?: string;\r\n}\r\n","@if (!isReadOnly) {\r\n<ng-container>\r\n @if(label) {\r\n <app-form-label\r\n [label]=\"label\"\r\n [optional]=\"required || mandatory ? false : true\"\r\n [tooltip]=\"tooltip\"\r\n ></app-form-label>\r\n }\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [floatLabel]=\"floatLabel\"\r\n [ngClass]=\"{\r\n 'custom-validation': !control?.errors\r\n }\"\r\n >\r\n <mat-label>{{ label }}</mat-label>\r\n <ds-icon icon=\"search\" class=\"fc-coral fs-18\"></ds-icon>\r\n <label class=\"mat-form-content\">\r\n <input\r\n type=\"text\"\r\n aria-label=\"Number\"\r\n (input)=\"onLoadOptions($event)\"\r\n matInput\r\n [disabled]=\"isDisabled\"\r\n [matAutocomplete]=\"auto\"\r\n [formControl]=\"employeeSearchControl\"\r\n [placeholder]=\"placeholder || (label ? ('select' | translate) + ' ' + label : '')\"\r\n />\r\n </label>\r\n @if (loading) {\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n }\r\n <mat-autocomplete #auto=\"matAutocomplete\">\r\n @for (option of data; track option) {\r\n <mat-option\r\n [value]=\"option?.['personName']\"\r\n (onSelectionChange)=\"selectOption(option, $event)\"\r\n >\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <div class=\"dropdown-img\">\r\n <ds-avatar\r\n [image]=\"getImage(option?.email)\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user.svg';\"\r\n slot=\"prefix\"\r\n class=\"avatar\"\r\n size=\"small\"\r\n >\r\n </ds-avatar>\r\n </div>\r\n <div class=\"line-height-1\">\r\n <h6 class=\"fs-14 fw-medium fc-onyx mb-0 line-height-1\">\r\n {{ option?.name }}\r\n </h6>\r\n <span class=\"fs-13 fw-normal fc-dark-gray\">{{\r\n option?.description\r\n }}</span>\r\n </div>\r\n </div>\r\n </mat-option>\r\n\r\n }\r\n </mat-autocomplete>\r\n @if (showHint) {\r\n <mat-hint>\r\n <span\r\n class=\"sfi sfi-check-circle font-10 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n @if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control?.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n\r\n @if (userAlreadyExist) {\r\n <mat-error class=\"mb-2\">{{ \"userAlreadyExist\" | translate }}</mat-error>\r\n } @if (arrayList?.length && !isReadOnly && multiple) {\r\n <div class=\"col-12 mt-2\">\r\n <div class=\"example-list n-results\">\r\n @for (emails of arrayList; track $index) {\r\n <div class=\"example-box n-col px-3\" [ngClass]=\"{ 'mt-0': $index === 0 }\">\r\n <div class=\"d-flex flex-grow-1 w-100\">\r\n <div class=\"user-info flex-grow-1\">\r\n <ds-avatar\r\n [image]=\"getImage(emails?.['personEmail'])\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user.svg';\"\r\n slot=\"prefix\"\r\n class=\"avatar prof-img\"\r\n >\r\n </ds-avatar>\r\n @if (emails?.['personName']) {\r\n <label>\r\n {{ emails?.['personName'] }}\r\n <span class=\"title\">{{ emails?.['personEmail'] }}</span>\r\n </label>\r\n }\r\n </div>\r\n @if (!isReadOnly) {\r\n <ds-button\r\n class=\"ds-btn-action\"\r\n size=\"small\"\r\n (click)=\"deleteRow($index, emails)\"\r\n icon\r\n >\r\n <ds-icon icon=\"trash\" class=\"fc-coral fs-20\"></ds-icon>\r\n </ds-button>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n</ng-container>\r\n} @if (isReadOnly && control.value) {\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item\"\r\n type=\"user-picker\"\r\n [hasLabel]=\"!!label\"\r\n [multiple]=\"multiple\"\r\n [ngClass]=\"{ 'user-picker': !isReadOnly }\"\r\n [actionType]=\"!isReadOnly ? 'delete' : 'edit'\"\r\n [label]=\"label\"\r\n [name]=\"control.value['personName']\"\r\n [value]=\"control.value['personEmail']\"\r\n [arrayList]=\"arrayList\"\r\n >\r\n </app-info-item>\r\n</ng-container>\r\n}\r\n\r\n<sat-popover #searchEmpPopover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"default-popover p-3\">\r\n <ol class=\"px-3 m-0\">\r\n <li>{{ \"searchEmployeeTooltip_1\" | translate }}</li>\r\n <li>{{ \"searchEmployeeTooltip_2\" | translate }}</li>\r\n <li>{{ \"searchEmployeeTooltip_3\" | translate }}</li>\r\n <li>{{ \"searchEmployeeTooltip_4\" | translate }}</li>\r\n </ol>\r\n </div>\r\n</sat-popover>\r\n","import {ReactiveFormsModule, Validators} from '@angular/forms';\r\n/* eslint-disable @angular-eslint/component-selector */\r\n/* eslint-disable @angular-eslint/use-lifecycle-interface */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/no-output-on-prefix */\r\nimport { BaseComponent } from '../base-component/base-component.component';\r\nimport {MatError, MatFormField, MatLabel, MatOption, MatSelect, MatSelectChange} from '@angular/material/select';\r\nimport {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n SimpleChanges,\r\n ElementRef,\r\n ViewChild,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n} from '@angular/core';\r\nimport {MatProgressSpinner} from \"@angular/material/progress-spinner\";\r\nimport {NgForOf, NgIf} from \"@angular/common\";\r\nimport {InfoItemComponent} from \"../info-item/info-item.component\";\r\nimport {FormLabelComponent} from \"../form-label/form-label.component\";\r\n\r\n@Component({\r\n selector: 'app-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n MatSelect,\r\n MatOption,\r\n MatLabel,\r\n MatProgressSpinner,\r\n MatError,\r\n NgIf,\r\n NgForOf,\r\n InfoItemComponent,\r\n FormLabelComponent,\r\n MatFormField\r\n ]\r\n})\r\nexport class SelectComponent extends BaseComponent {\r\n emitedValues = [];\r\n @Input() valueName: any = 'description';\r\n @Input() parentKey = '';\r\n @Input() label!: string;\r\n @Input() tooltip!: string;\r\n @Input() className = 'bordered-input';\r\n @Input() showLabel = true;\r\n @Input() readonly = false;\r\n @Input() optional = false;\r\n @Input() data!: any[];\r\n @Output() onChange = new EventEmitter();\r\n @Input() error!: string;\r\n @Input() optionAr!: string;\r\n @Input() optionEn!: string;\r\n @Input() hasPlaceHolder = false;\r\n @Output() emitedMultiValue = new EventEmitter();\r\n @ViewChild('selectCtrl') selectCtrl!: ElementRef;\r\n selectAllEnabled = true;\r\n @ViewChild('selectAllOption') selectAllOption;\r\n selectedValues: string[] = [];\r\n @Input() parentValue: string;\r\n ngOnInit(): void {\r\n // this.resetPropagator.subscribe(this, this.resetKeyValue);\r\n if (this.field?.key) {\r\n this.controller.setValue(this.field.key);\r\n } else {\r\n this.controller.setValue('');\r\n }\r\n\r\n if (this.field?.length > 0) {\r\n this.controller.setValue(this.field);\r\n }\r\n\r\n if (this.required) {\r\n this.controller.setValidators([Validators.required]);\r\n }\r\n\r\n // send back case\r\n if (\r\n this.lov && this.lov?.options?.length &&\r\n Array.isArray(this.controller?.value) &&\r\n this.controller?.value?.length === this.lov?.options?.length\r\n ) {\r\n this.selectAllOption?.select();\r\n this.toggleAllOptions(true);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes?.['field'] && !this.multiple) {\r\n if (changes['field'].currentValue?.key == null) {\r\n this.controller.setValue('');\r\n } else {\r\n this.controller.setValue(changes['field'].currentValue.key);\r\n }\r\n }\r\n }\r\n\r\n resetKeyValue() {\r\n if (!this.isReadOnly) {\r\n this.controller.reset();\r\n this.controller.markAsUntouched();\r\n if (this.multiple) {\r\n this.field = [];\r\n this.emitedValues = [];\r\n this.emitedValue.emit(this.emitedValues);\r\n } else {\r\n this.field = {\r\n value: null,\r\n key: null,\r\n };\r\n this.emitedValue.emit(this.field);\r\n }\r\n }\r\n }\r\n\r\n toggleAllOptions(value: any) {\r\n this.selectCtrl['options'].forEach((option) => {\r\n if (value.selected) {\r\n option.select();\r\n } else {\r\n option.deselect();\r\n }\r\n });\r\n }\r\n\r\n transformSelectedData(value) {\r\n if (!value) {\r\n return '';\r\n }\r\n if (value[0] === 'all') {\r\n return this.lov.options[1]['description'];\r\n } else {\r\n const selectedOption = this.lov?.options?.find((option) => {\r\n let val = value[0];\r\n if (typeof val !== 'string') {\r\n val = val && val['value'];\r\n }\r\n return option.value === val;\r\n });\r\n return selectedOption?.description;\r\n }\r\n }\r\n\r\n handleOnOptionSelected(value: any) {\r\n value = value.filter((value) => value !== 'all'); // without all\r\n\r\n const selectedValues = value.map((val: any) => {\r\n const item = this.lov?.options?.find((element) => element.value == val);\r\n\r\n return {\r\n key: val,\r\n value: item.description,\r\n };\r\n });\r\n\r\n this.emitedMultiValue.emit(selectedValues);\r\n }\r\n\r\n emitSelectedValue(event: MatSelectChange): void {\r\n const index = this.lov.options.findIndex(\r\n (option) => option.value === event.value\r\n );\r\n this.controller.setValue(event.value);\r\n this.emitedValue.emit({\r\n key: event.value,\r\n value: this.lov.options[index].description,\r\n });\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isReadOnly\">\r\n <app-form-label [label]=\"label\" [optional]=\"optional\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\">\r\n </app-form-label>\r\n <mat-form-field class=\"{{className}}\" [floatLabel]=\"'auto'\">\r\n <mat-label>\r\n {{ hasPlaceHolder ? placeholder : i18n.translate('selectYourOption')}}\r\n </mat-label>\r\n <label class=\"mat-form-content\">\r\n <ng-container *ngIf=\"!multiple\">\r\n <mat-select disableOptionCentering [disabled]=\"disabled\" [formControl]=\"controller\"\r\n (selectionChange)=\"emitSelectedValue($event)\"\r\n [placeholder]=\"hasPlaceHolder ? placeholder : i18n.translate('selectYourOption')\">\r\n <ng-container *ngIf=\"parentKey !== ''\">\r\n <ng-container *ngFor=\"let element of lov?.options\">\r\n <mat-option *ngIf=\"element?.parentValue === parentKey\" [value]=\"element.value\">\r\n {{element.description}}\r\n </mat-option>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"parentKey ===''\">\r\n <mat-option *ngFor=\"let element of lov?.options\" [value]=\"element.value\">\r\n {{element.description}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </ng-container>\r\n <ng-container *ngIf=\"multiple\">\r\n <mat-select #selectCtrl [disabled]=\"disabled\" [formControl]=\"controller\" multiple\r\n (selectionChange)=\"handleOnOptionSelected($event?.value)\"\r\n [placeholder]=\"hasPlaceHolder ? placeholder : i18n.translate('selectYourOption')\">\r\n\r\n <mat-select-trigger *ngIf=\"selectAllEnabled\">\r\n {{ transformSelectedData(controller?.getRawValue())}}\r\n <span *ngIf=\"(controller.value?.length || 0) > 1\" >\r\n (+{{ (controller.value?.length || 0) - 1 }} {{ controller.value?.length === 2 ? i18n.translate('other') : i18n.translate('others') }})\r\n </span>\r\n </mat-select-trigger>\r\n\r\n <ng-container *ngIf=\"parentKey !== ''\" >\r\n <ng-container *ngFor=\"let element of lov?.options\" class=\"mx-2\">\r\n <mat-option *ngIf=\"element?.parentValue === parentKey\" [value]=\"element.value\">\r\n {{element.description}}\r\n </mat-option>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"parentKey ===''\" >\r\n\r\n <mat-option #selectAllOption *ngIf=\"selectAllEnabled && lov?.options?.length\" value=\"all\" class=\"mx-2\" (click)=\"toggleAllOptions(selectAllOption)\">\r\n {{i18n.translate('selectAll')}}\r\n </mat-option>\r\n\r\n <mat-option *ngFor=\"let element of lov?.options\" [value]=\"element.value\" class=\"mx-2\">\r\n {{element.description}}\r\n </mat-option>\r\n\r\n\r\n </ng-container>\r\n </mat-select>\r\n </ng-container>\r\n\r\n\r\n\r\n\r\n\r\n <mat-label *ngIf=\"loading\">\r\n <div class=\"select-placeholder-container\">\r\n <!-- <span>Loading...</span> -->\r\n <mat-spinner class=\"spinner\" diameter=\"20\"></mat-spinner>\r\n </div>\r\n </mat-label>\r\n\r\n </label>\r\n\r\n <mat-error class=\"mb-2\" *ngIf=\"(!controller?.valid)\">{{i18n.translate('validSelectError')}}{{label}}\r\n </mat-error>\r\n\r\n <mat-hint *ngIf=\"showHint && hint\" class=\"mb-2\">\r\n <span class=\"mat-error\">{{hint}}</span>\r\n </mat-hint>\r\n\r\n <!-- <mat-error *ngIf=\"!controller.valid\">{{error}}</mat-error> -->\r\n </mat-form-field>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && (showIfEmpty || field?.value)\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [hasLabel]=\"hasLabel\" [insideTable]=\"insideTable\"\r\n [value]=\"field?.value || field?.key\"></app-info-item>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && multiple\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [type]=\"'multipleSelect'\" [hasLabel]=\"hasLabel\" [insideTable]=\"insideTable\"\r\n [value]=\"field\"></app-info-item>\r\n</ng-container>\r\n","import {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Input} from '@angular/core';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { MatFormImports, Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { InputMapFilterDirective } from '../../../../directives/input-map-filter/input-map-filter.directive';\r\nimport type { InputMapFn, InputFilterFn } from '../../../../directives/input-map-filter/types';\r\n\r\n@Component({\r\n selector: 'app-textarea',\r\n templateUrl: './textarea.component.html',\r\n styleUrls: ['./textarea.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n ...MatFormImports,\r\n ...Shareds,\r\n InputMapFilterDirective\r\n ],\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TextareaComponent),\r\n multi: true,\r\n },\r\n ]\r\n})\r\nexport class TextareaComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() className!: string;\r\n @Input() preventSpecailChar!: boolean;\r\n @Input() maxLength: number | string;\r\n\r\n /**\r\n * A mapping function that modifies the input value during typing, pasting, or dropping text.\r\n * You can use it to modify the full input value **before it appears** (e.g., for auto-capitalization,\r\n * formatting, or custom replacements).\r\n *\r\n * This function is called:\r\n * - On each **key press**, to determine how the input value should change when a character is typed.\r\n * - On **paste**, to transform the pasted content before it’s applied.\r\n * - On **drop**, to transform the dropped text before it’s applied.\r\n * \r\n * **Built-in mappers are available via the `InputMappers` utility class:**\r\n *\r\n * - `InputMappers.toUpperCase` — Transforms all input to UPPERCASE.\r\n * - `InputMappers.toLowerCase` — Transforms all input to lowercase.\r\n *\r\n * @param char - The character(s) being inserted. This is:\r\n * - A single character (e.g., `'a'`) during typing.\r\n * - The full pasted string during paste events.\r\n * - The full dropped string during drop events.\r\n * @param currentValue - The current value of the input **before** the change is applied.\r\n * @param nextValue - The simulated value of the input **after** the character, paste, or drop is inserted, but before transformation.\r\n *\r\n * @returns The final string to use as the new input value.\r\n * \r\n * @example\r\n * // Use a built-in mapper to force UPPERCASE input:\r\n * this.mapFn = InputMappers.toUpperCase;\r\n *\r\n * @example\r\n * // Custom mapper: Capitalize the first letter of each word\r\n * this.mapFn = (char, current, next) =>\r\n * typeof next === 'string' ? next.replace(/\\b\\w/g, c => c.toUpperCase()) : next;\r\n */\r\n @Input() mapFn: InputMapFn;\r\n\r\n /**\r\n * A filtering function that determines whether a character or string should be allowed into the input.\r\n *\r\n * This function is called during:\r\n * - **Typing**: When a key is pressed to decide if the character should be accepted.\r\n * - **Paste**: When text is pasted to decide if the entire pasted string should be accepted.\r\n * - **Drop**: When text is dropped into the input to decide if it should be allowed.\r\n *\r\n * You can use it to reject unwanted characters (e.g. numbers, symbols) or block input entirely based\r\n * on the current or predicted value.\r\n * \r\n * **Built-in filters are available via the `InputFilters` utility class:**\r\n *\r\n * - `InputFilters.arabicOnly` — Allows Arabic letters and digits, as well as common symbols.\r\n * - `InputFilters.englishOnly` — Allows English letters and digits, as well as common symbols.\r\n * - `InputFilters.digitsOnly` — Allows digits only (`0–9`), no letters or symbols.\r\n * - You can also use `InputFilters.buildPattern()` to define a custom filter.\r\n *\r\n * @param char - The character(s) being inserted:\r\n * - A single typed character (e.g., `'a'`) during key presses\r\n * - The full pasted or dropped string during paste/drop\r\n * @param currentValue - The current value of the input before the character or string is applied.\r\n * @param nextValue - The simulated next value if the character or string were applied.\r\n * @param event - The originating event triggering the input change. This can be a\r\n * `KeyboardEvent` (for typing), `ClipboardEvent` (for paste), or `DragEvent` (for drop).\r\n *\r\n * @returns `true` to allow the input, or `false` to block it.\r\n *\r\n *\r\n * @example\r\n * // Use a built-in filter to restrict to digits only\r\n * this.filterFn = InputFilters.digitsOnly;\r\n *\r\n * @example\r\n * // Custom filter: Allow only letters (no numbers or symbols)\r\n * this.filterFn = (char, current, next, event) => {\r\n * return /^[a-zA-Z]+$/.test(char);\r\n * };\r\n */\r\n @Input() filterFn: InputFilterFn;\r\n\r\n destroyRef = inject(DestroyRef);\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n}\r\n","@if(!isReadOnly){\r\n <ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-form-field class=\"custom-textarea bordered-input {{className}}\">\r\n <mat-label>{{ label }}</mat-label>\r\n <label class=\"mat-form-content\">\r\n <textarea \r\n #textarea \r\n [placeholder]=\"placeholder || (label ? ('enter' | translate) + ' ' + label : '')\"\r\n [value]=\"value\"\r\n (input)=\"setValue(textarea.value)\" \r\n (blur)=\"onTouchedFn()\" \r\n matInput\r\n inputMapFilter\r\n [mapFn]=\"mapFn\"\r\n [filterFn]=\"filterFn\"\r\n [maxLength]=\"maxLength\"\r\n >\r\n </textarea>\r\n </label>\r\n @if (showHint){\r\n <mat-hint class=\"d-flex align-items-center gap-1 mt-1\">\r\n <span class=\"sfi sfi-info fs-17 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n @if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n\r\n </ng-container>\r\n}\r\n@if (isReadOnly && control.value && (showIfEmpty || control)){\r\n <ng-container>\r\n <app-info-item class=\"info-item w-100\" [insideTable]=\"insideTable\" [label]=\"label\" [value]=\"control?.value\" [type]=\"type\"></app-info-item>\r\n </ng-container>\r\n}\r\n","import {Component, Input, Output, EventEmitter, forwardRef, inject, DestroyRef} from '@angular/core';\r\nimport {MatButtonToggle, MatButtonToggleGroup} from \"@angular/material/button-toggle\";\r\nimport {SatPopoverModule} from \"@ncstate/sat-popover\";\r\nimport {ControlValueAccessorDirective} from '../control-value-accessor.directive';\r\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {Shareds} from '../shared-imports';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-toggle-button',\r\n templateUrl: './toggle-button.component.html',\r\n styleUrls: ['./toggle-button.component.scss'],\r\n imports: [\r\n MatButtonToggleGroup,\r\n MatButtonToggle,\r\n SatPopoverModule,\r\n ...Shareds\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ToggleButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true\r\n})\r\nexport class ToggleButtonComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() className = 'bordered-input';\r\n @Input() data!: any[];\r\n @Output() onChange = new EventEmitter();\r\n @Input() error!: string;\r\n @Input() optionAr!: string;\r\n @Input() optionEn!: string;\r\n @Input() hasHint = false;\r\n @Input() options: any[];\r\n @Input() displayedLabel: string = 'description';\r\n @Input() key: string = 'value';\r\n destroyRef = inject(DestroyRef);\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n this.toggleButtonControl.setValue(this.control.value?.key)\r\n\r\n this.toggleButtonControl.valueChanges.subscribe((ctrlValue) => {\r\n if (ctrlValue?.key) {\r\n this.toggleButtonControl.setValue(ctrlValue?.key)\r\n }\r\n }\r\n )\r\n }\r\n\r\n setToggelButtonValue(hasHint: boolean, hintSection: any, item: any) {\r\n hasHint ? hintSection?.toggle() : null\r\n this.control.setValue({key: item[this.key], value: item[this.displayedLabel]})\r\n this.toggleButtonControl.setValue(item[this.key]);\r\n }\r\n}\r\n","@if(!isReadOnly){\r\n <ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n\r\n @if(options){\r\n <mat-button-toggle-group class=\"Toggle__buttons d-flex align-items-center gap-3\" [value]=\"toggleButtonControl.value\" [formControl]=\"toggleButtonControl\"\r\n aria-label=\"Font Style\" [multiple]=\"multiple\">\r\n @for(item of options; track item){\r\n <mat-button-toggle (click)=\"setToggelButtonValue(hasHint, hintSection, item)\" [value]=\"item[key]\" [satPopoverAnchor]=\"hintSection\">\r\n <span>\r\n {{item[displayedLabel]}}\r\n </span>\r\n <sat-popover #hintSection [hasBackdrop]=\" true\" verticalAlign=\"below\">\r\n <div class=\"default-tooltip\">\r\n <p class=\"m-0\" [innerHTML]=\"item[displayedLabel]\"></p>\r\n </div>\r\n </sat-popover>\r\n </mat-button-toggle>\r\n }\r\n\r\n </mat-button-toggle-group>\r\n }\r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly && toggleButtonControl.value){\r\n <ng-container>\r\n <app-info-item class=\"info-item w-100\" [insideTable]=\"insideTable\" [type]=\"'toggleBtn'\" [label]=\"label\" [value]=\"control.value?.value\"></app-info-item>\r\n </ng-container>\r\n\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/component-selector */\r\n/* eslint-disable @typescript-eslint/no-empty-function */\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA, Input} from '@angular/core';\r\nimport {NgClass, NgForOf, NgIf} from \"@angular/common\";\r\nimport {SatPopoverModule} from \"@ncstate/sat-popover\";\r\n\r\n@Component({\r\n selector: 'app-repeated-list',\r\n templateUrl: './repeated-list.component.html',\r\n styleUrls: ['./repeated-list.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n NgForOf,\r\n SatPopoverModule,\r\n NgClass,\r\n NgIf\r\n ]\r\n})\r\nexport class RepeatedListComponent {\r\n @Input() listOfItems: any;\r\n @Input() type = ''; // users-avatar, categories\r\n constructor() { }\r\n\r\n getImage(email: string) {\r\n return \"/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=\" + email;\r\n }\r\n\r\n\r\n}\r\n","<div class=\"{{type}}\">\r\n <ng-container *ngFor=\"let item of listOfItems; let i = index\">\r\n <div class=\"item\" *ngIf=\"i <= 1\">\r\n <span class=\"img-card circled-img x-small\" *ngIf=\"item.image\">\r\n <img [src]=\"item.image\" [alt]=\"item.personName\">\r\n </span>\r\n <span class=\"name font-12\">\r\n {{item.personName}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <span class=\"text-color-onyx font-14 font-weight-medium cursor-pointer more\" *ngIf=\"listOfItems.length > 2\"\r\n [satPopoverAnchor]=\"tooltipOfItems\" (mouseenter)=\"tooltipOfItems.open()\" (mouseleave)=\"tooltipOfItems.close()\">\r\n {{listOfItems.length - 2 !== 0 ? '+' + (listOfItems.length - 2) : ''}}\r\n </span>\r\n <sat-popover #tooltipOfItems horizontalAlign=\"center\" verticalAlign=\"above\">\r\n <div class=\"border bg-color-white\">\r\n <div class=\"d-flex align-items-center border-bottom p-2\" [ngClass]=\"{'border-0': last}\"\r\n *ngFor=\"let item of listOfItems; let i = index; let last = last\">\r\n <span class=\"img-card circled-img x-small\" *ngIf=\"item.image\">\r\n <img [src]=\"item.image\" [alt]=\"item.personName\">\r\n </span>\r\n <span class=\"mx-1\" *ngIf=\"item.image\"></span>\r\n <span class=\"name font-12\">\r\n {{item.personName}}\r\n </span>\r\n\r\n </div>\r\n </div>\r\n </sat-popover>\r\n\r\n\r\n</div>\r\n","/* eslint-disable @angular-eslint/use-lifecycle-interface */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport {CUSTOM_ELEMENTS_SCHEMA, EventEmitter} from '@angular/core';\r\nimport {BaseComponent} from './../base-component/base-component.component';\r\nimport {Component, Input, Output} from '@angular/core';\r\nimport {MatTableDataSource, MatTableModule} from '@angular/material/table';\r\nimport {MatPaginatorModule} from '@angular/material/paginator';\r\nimport {DatePipe, NgClass, NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault} from \"@angular/common\";\r\nimport {RouterLink} from \"@angular/router\";\r\nimport {RepeatedListComponent} from \"../repeated-list/repeated-list.component\";\r\nimport {MatButton} from \"@angular/material/button\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\n\r\n// import { ConfirmationPopupComponent } from '../../confirmation-popup/confirmation-popup.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-table-list',\r\n templateUrl: './table-list.component.html',\r\n styleUrls: ['./table-list.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n MatPaginatorModule,\r\n MatTableModule,\r\n NgForOf,\r\n NgClass,\r\n NgSwitchCase,\r\n RouterLink,\r\n NgSwitch,\r\n NgIf,\r\n DatePipe,\r\n RepeatedListComponent,\r\n MatButton,\r\n MatMenu,\r\n MatMenuTrigger,\r\n MatMenuItem,\r\n NgSwitchDefault\r\n ]\r\n})\r\nexport class TableListComponent extends BaseComponent {\r\n @Input() columns: any;\r\n @Input() columnsConfig: any;\r\n @Input() rows: any;\r\n @Input() actions: any = [];\r\n @Input() totalRecords !: number;\r\n @Input() className = '';\r\n public dataSource = new MatTableDataSource<any>();\r\n @Output() pageChanged: EventEmitter<any> = new EventEmitter();\r\n @Output() buttonAction: EventEmitter<any> = new EventEmitter();\r\n @Output() emitDataRow: EventEmitter<any> = new EventEmitter();\r\n\r\n // constructor(public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n this.dataSource.data = this.rows;\r\n }\r\n\r\n truncateName(text: string) {\r\n if (text) {\r\n const characters = text.match(/\\b(\\w)/g);\r\n if (characters) {\r\n return characters.join('');\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n onPageChange(event: any) {\r\n this.pageChanged.emit(event)\r\n }\r\n\r\n\r\n delete(): void {\r\n // const dialogRef = this.dialog.open(ConfirmationPopupComponent, {\r\n // width: '700px',\r\n // panelClass: ['confirm-popup', 'main-popup'],\r\n // data: {\r\n // title: 'Delete Match',\r\n // message: 'Are you sure you want delete',\r\n // confirmText: 'match making example name',\r\n // moreText: '',\r\n // type: 'delete',\r\n // icon: 'delete-match',\r\n // }\r\n // });\r\n\r\n // dialogRef.afterClosed().subscribe(() => {\r\n // // closed\r\n // });\r\n }\r\n\r\n buttonClicked(element, fn: string, $event: MouseEvent) {\r\n\r\n }\r\n\r\n selectedRow(row) {\r\n\r\n }\r\n\r\n getSlaColor(value: any, max: number) {\r\n\r\n }\r\n\r\n sentBack() {\r\n\r\n }\r\n}\r\n","<div class=\"overflow-auto\">\r\n <!-- #table (scroll)=\"onPageChange($event)\" -->\r\n <ng-container >\r\n <!-- (matSortChange)=\"sortData($event)\" -->\r\n <table mat-table [dataSource]=\"dataSource\" class=\"primary-table {{className}}\" matSort >\r\n <ng-container *ngFor=\"let column of columns; let i = index;\">\r\n <ng-container [matColumnDef]=\"column\">\r\n <th mat-header-cell *matHeaderCellDef [ngClass]=\"{'last-column' : columnsConfig[i].type === 'actions', 'sortArrow': columnsConfig[i]?.sortName?.length }\" mat-sort-header>\r\n {{i18n.translate(columnsConfig[i].label)}} </th>\r\n \r\n <td mat-cell [ngClass]=\"{'account-disabled': element?.user?.disabledCleanUp===true}\" *matCellDef=\"let element\">\r\n <ng-container [ngSwitch]=\"columnsConfig[i].type\" *ngIf=\"rows.length\">\r\n <a [ngClass]=\"columnsConfig[i].type\" [href]=\"element[column]\" *ngSwitchCase=\"'link'\">\r\n {{ element[column] }}\r\n </a>\r\n \r\n <a [ngClass]=\"columnsConfig[i].type\" [routerLink]=\"[element.id]\" [href]=\"element[column]\"\r\n *ngSwitchCase=\"'rout'\">\r\n {{ element[column] }}\r\n </a>\r\n \r\n <span class=\"d-inline-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'date'\">\r\n <span class=\"sfi sfi-clock text-color-coral\" *ngIf=\"!loading\"></span>\r\n <span class=\"mx-2\">\r\n <!-- {{ element?.Date.from }}\r\n <ng-container *ngIf=\"element?.Date.to\">\r\n : {{ element?.Date.to }}\r\n </ng-container> -->\r\n {{ element[column] | date: 'dd/MM/YYYY' }}\r\n </span>\r\n </span>\r\n \r\n <div class=\"d-inline-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'sla'\">\r\n <app-sla [value]=\"element?.SLA.value\" [maxValue]=\"element?.SLA.max\" [canvasScale]=\"45\"\r\n [outerLineColor]=\"getSlaColor(element?.SLA.value, element?.SLA.max)\"></app-sla>\r\n </div>\r\n \r\n <div class=\"img-card table-img\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'image'\">\r\n <img [src]=\"element?.image\" alt=\"\">\r\n </div>\r\n \r\n <span class=\"{{ element[column].type }}\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'status'\">\r\n {{ element[column].label }}\r\n </span>\r\n \r\n \r\n <div class=\"d-flex mx-n1\" *ngSwitchCase=\"'RequestType'\">\r\n <div class=\"request-type mx-1 {{item.status}}\" *ngFor=\"let item of element?.RequestType\">\r\n {{ item.label }}\r\n <span class=\"mx-1\" *ngIf=\"item.status === 'need-action'\"></span>\r\n <span class=\"sfi sfi-info \" *ngIf=\"item.status === 'need-action'\"></span>\r\n </div>\r\n </div>\r\n \r\n \r\n <span class=\"{{ element[column].type }} {{ element[column] ? 'text-color-coral underline' : '' }}\"\r\n [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'number'\">\r\n {{ element[column] ? element[column] : '-' }}\r\n </span>\r\n \r\n <div class=\"text-nowrap d-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\"\r\n *ngSwitchCase=\"'group'\">\r\n <span>{{element?.Group.groupName}}</span>\r\n <span class=\"mx-2\"></span>\r\n <app-repeated-list type=\"users-avatar\" [listOfItems]=\"element?.Group.users\"></app-repeated-list>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center gap-2\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'user'\">\r\n <span class=\"img-card circled-img small\" *ngIf=\"!loading\">\r\n <img src=\"{{'data:image/png;base64,' + element?.user?.personalPhoto}}\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </span>\r\n <div class=\"d-flex flex-column\">\r\n <span class=\"font-14 font-weight-medium\">{{element?.user?.name}}</span>\r\n <span class=\"font-12 font-weight-normal text-color-dark-gray mt-1\">{{element?.user?.email}}</span>\r\n </div>\r\n </div>\r\n \r\n \r\n <div class=\"delegate d-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\"\r\n *ngSwitchCase=\"'assigned'\">\r\n <div class=\"img-card x-small circled-img\">\r\n <img [src]=\"element?.AssignedTo.image\" alt=\"\">\r\n </div>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"font-14 font-weight-medium text-color-onyx\">{{element?.AssignedTo.name}}</span>\r\n <span class=\"sfi sfi-close text-color-coral\"></span>\r\n </div>\r\n \r\n \r\n <ng-container *ngSwitchCase=\"'statusAction'\">\r\n <div class=\"table-action\">\r\n \r\n <div class=\"count-down mx-n1\" *ngIf=\"element[column] === 'need-action'\">\r\n <div class=\"item mx-1\">\r\n <span class=\"font-12 font-weight-medium text-color-onyx d-block\">01</span>\r\n <span class=\"font-8 font-weight-light text-color-onyx d-block\">Days</span>\r\n </div>\r\n <div class=\"item mx-1\">\r\n <span class=\"font-12 font-weight-medium text-color-onyx d-block\">18</span>\r\n <span class=\"font-8 font-weight-light text-color-onyx d-block\">Hours</span>\r\n </div>\r\n <div class=\"item mx-1\">\r\n <span class=\"font-12 font-weight-medium text-color-onyx d-block\">44</span>\r\n <span class=\"font-8 font-weight-light text-color-onyx d-block\">Mins</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center\" *ngIf=\"element[column] === 'approved'\">\r\n <span class=\"status approved\">\r\n Approved\r\n </span>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center\" *ngIf=\"element[column] === 'sent-back'\">\r\n <span class=\"status rejected\">\r\n Sent Back\r\n </span>\r\n <span class=\"mx-2\"></span>\r\n <button mat-stroked-button class=\"btn button-primary square br-w-1 font-14 font-weight-medium\"\r\n (click)=\"sentBack()\">\r\n <span class=\"sfi sfi-chat-o\"></span>\r\n </button>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center\" *ngIf=\"element[column] === 'pending'\">\r\n <span class=\"status pending\">\r\n Pending\r\n </span>\r\n <span class=\"mx-2\"></span>\r\n \r\n <div class=\"d-flex align-items-center mx-n1\">\r\n <div class=\"img-card circled-img x-small mx-1\">\r\n <img [src]=\"element?.pendingWith.image\" alt=\"\">\r\n </div>\r\n \r\n <div class=\"d-flex flex-column mx-1\">\r\n <span class=\"font-8 font-weight-medium text-color-yellow text-nowrap\">Pending With</span>\r\n <span class=\"font-11 font-weight-medium text-nowrap\">{{element?.pendingWith.name}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </div>\r\n </ng-container>\r\n \r\n \r\n <ng-container *ngSwitchCase=\"'actions'\">\r\n \r\n <div class=\"d-flex justify-content-between mx-n2\">\r\n <ng-container *ngFor=\"let action of element[column]\">\r\n \r\n <div class=\"flex-grow-1\">\r\n <ng-container *ngIf=\"action.type.buttonType === 'stroked'\">\r\n <button mat-stroked-button (click)=\"buttonClicked(element,action.fn, $event)\"\r\n class=\"btn button-{{action.type.buttonClass}} mx-2\">\r\n {{action.label}}\r\n </button>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"action.type.buttonType === 'flat'\">\r\n <button mat-flat-button (click)=\"buttonClicked(element,action.fn, $event)\"\r\n class=\"btn button-{{action.type.buttonClass}} mx-2\">\r\n {{action.label}}\r\n </button>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"action.type.buttonType === 'icon'\">\r\n <button mat-icon-button (click)=\"buttonClicked(element,action.fn, $event)\"\r\n class=\"btn button-{{action.type.buttonClass}} mx-2\">\r\n <span class=\"sfi sfi-{{action.type.icon}}\"></span>\r\n </button>\r\n </ng-container>\r\n </div>\r\n \r\n <ng-container *ngIf=\"action.type.buttonType === 'all'\">\r\n <button mat-icon-button class=\"btn button-transparent square medium mx-2 text-end\"\r\n [matMenuTriggerFor]=\"menuAction\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"sfi sfi-dots text-color-onyx\"></span>\r\n </button>\r\n <mat-menu #menuAction=\"matMenu\" xPosition=\"before\" class=\"actions-menu\">\r\n <button *ngIf=\"!element?.user?.email && element?.user?.disabledCleanUp!==true\" mat-menu-item class=\"text-color-onyx font-12\"\r\n (click)=\"buttonClicked(element,'CreateEmail', $event)\">\r\n {{i18n.translate('createEmail')}} \r\n </button>\r\n <button *ngIf=\"element?.user?.email && element?.user?.enabled==='true'\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'DisableEmail', $event)\">\r\n {{ i18n.translate('disableEmail')}}\r\n </button>\r\n <button *ngIf=\"element?.user?.email && element?.user?.disabledCleanUp===true\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'EnableEmail', $event)\">\r\n {{ i18n.translate('enableEmail')}}\r\n </button>\r\n <button *ngIf=\"element?.user!==null && element?.user?.disabledCleanUp!==true\" mat-menu-item class=\"text-color-onyx font-12\"\r\n (click)=\"buttonClicked(element,'CreateEntryPermission', $event)\">\r\n {{ i18n.translate('createCEP')}}\r\n </button>\r\n <!-- <button *ngIf=\"!element?.user?.email\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'DisableEntryPermission', $event)\">\r\n {{i18n.translate('disableEntryPermission')}}\r\n </button> -->\r\n <button *ngIf=\"!element?.user?.email && element?.user?.disabledCleanUp!==true\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'DeleteAccount', $event)\">\r\n {{i18n.translate('deleteAccount')}}\r\n </button>\r\n\r\n <button *ngIf=\"element?.user?.email && element?.user?.disabledCleanUp!==true\" [disabled]=\"!element?.mailExtensionAllowed\" mat-menu-item class=\"text-color-onyx font-12\"\r\n (click)=\"buttonClicked(element,'ExtendAccount', $event)\">\r\n {{ i18n.translate('extendAccount')}}\r\n </button>\r\n <button mat-menu-item class=\"text-color-onyx font-12\" *ngIf=\"element?.user?.disabledCleanUp!==true\" (click)=\"buttonClicked(element,'update', $event)\">\r\n {{ i18n.translate('updateEmploymentInformation')}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n \r\n <span class=\"text-nowrap\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchDefault>\r\n {{ element[column] }}\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"loading\">\r\n <span class=\" d-block loading-bg\"></span>\r\n </ng-container>\r\n \r\n </td>\r\n \r\n \r\n </ng-container>\r\n </ng-container>\r\n \r\n <tr mat-header-row *matHeaderRowDef=\"columns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columns;\" class=\"cursor-pointer\" (click)=\"selectedRow(row)\"></tr>\r\n </table>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"loading\">\r\n <span>loading...</span>\r\n </ng-container> -->\r\n <!-- <ng-container *ngIf=\"loading\">-->\r\n <!-- <td *matCellDef=\"let element\" >loading....</td>-->\r\n <!-- </ng-container>-->\r\n <!--{{this.rows | json}}-->\r\n \r\n<!-- <app-no-data-placeholder *ngIf=\"noData && !loading\" [noDataPlaceholder]=\"noDataObj\"></app-no-data-placeholder> -->\r\n\r\n <mat-paginator [pageSize]=\"10\" [length]=\"totalRecords\" (page)=\"onPageChange($event)\" \r\n [pageSizeOptions]=\"[5, 10, 25, 100]\" aria-label=\"Select page of users\"></mat-paginator>\r\n <!-- style-paginator -->\r\n <!-- showFirstLastButtons -->\r\n</div>","import {DeleteDialogComponent} from '../../dialogs/delete-dialog/delete-dialog.component';\r\nimport {NoopScrollStrategy} from '@angular/cdk/overlay';\r\nimport {\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport * as FileSaver from 'file-saver';\r\nimport {DocumentFile} from '../../../../interfaces';\r\nimport {FormGroup, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {NgClass, NgTemplateOutlet} from \"@angular/common\";\r\nimport {MatError, MatHint} from \"@angular/material/form-field\";\r\nimport {ControlValueAccessorDirective} from '../control-value-accessor.directive';\r\nimport {MatDialog} from '@angular/material/dialog';\r\nimport {MatTooltip} from \"@angular/material/tooltip\";\r\nimport {FormLabelComponent} from '../form-label/form-label.component';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {TranslatePipe} from \"../../../../pipes/translate.pipe\";\r\n\r\n\r\n@Component({\r\n selector: 'app-file-uploader',\r\n templateUrl: './docs-uploader.component.html',\r\n styleUrls: ['./docs-uploader.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n MatError,\r\n NgTemplateOutlet,\r\n MatHint,\r\n MatTooltip,\r\n FormLabelComponent,\r\n TranslatePipe\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DocsUploaderComponent),\r\n multi: true,\r\n },\r\n ]\r\n})\r\nexport class DocsUploaderComponent<Type> extends ControlValueAccessorDirective<Type> implements OnInit, OnChanges {\r\n maxSizeFlag = true;\r\n maxSizeValue: any;\r\n wrongExtensionFlag = true;\r\n @Input() useCrop: boolean;\r\n @Input() formKey!: string;\r\n @Input() showLabel = true;\r\n @Input() downloadLink = false;\r\n @Input() showActions = true;\r\n @Input() styleHeight = ''; // medium, mini\r\n @Input() fileInputHeight = ''; // medium, mini\r\n @Input() styleWidth = '6';\r\n @Input() hints!: any;\r\n @Input() allowedExtensions = '';\r\n @Input() callApi: boolean = true;\r\n @Input() display = '';\r\n validExtension = true;\r\n @Input() attachType = '';\r\n @Input() error!: string;\r\n @Input() displayedFiles: DocumentFile[] = [];\r\n @Output() selectedTemplateAttachment = new EventEmitter();\r\n fileNotDuplicated = true;\r\n allowedFileSize = true;\r\n @Input() getDataFromTemplate = false;\r\n @Input() allowFileContentsWithMultiAttachments = false;\r\n @Input() accept: string[];\r\n filesize: string;\r\n wrongFile = {\r\n mimeType: \"\",\r\n fileContents: \"\",\r\n fileName: this.i18n.language == 'ar' ? \"امتداد الملف خاطىء\" : \"Wrong File Extension\",\r\n name: this.i18n.language == 'ar' ? \"امتداد الملف خاطىء\" : \"Wrong File Extension\"\r\n }\r\n @Input() allAttachments = [];\r\n\r\n uploadForm: FormGroup;\r\n @Input() signType = 'Sign';\r\n @Input() customDownload: boolean;\r\n @Input() showSignButton = false;\r\n @Input() printType = 'Print';\r\n @Input() showPrintButton = false;\r\n @Input() downloadType = 'Download';\r\n @Input() showDownloadButton = false;\r\n @Input() preventFileContents = false;\r\n @Output() addSignatureClicked = new EventEmitter();\r\n @Output() printActionClicked = new EventEmitter();\r\n @Output() emitedValue = new EventEmitter();\r\n @Output() downloadActionClicked = new EventEmitter();\r\n @Input() maxSize = '10';\r\n @ViewChild('inputFile') inputFile: ElementRef;\r\n dialog: MatDialog = inject(MatDialog)\r\n destroyRef = inject(DestroyRef);\r\n @Input() maxLength: number | string;\r\n\r\n private readonly validImageTypes = {\r\n jpg: ['image/jpeg', 'image/pjpeg'],\r\n JPG: ['image/jpeg', 'image/pjpeg'],\r\n jpeg: ['image/jpeg', 'image/pjpeg'],\r\n png: ['image/png']\r\n }\r\n\r\n validImgPdfTypes = {\r\n pdf: ['application/pdf'],\r\n jpg: ['image/jpeg', 'image/pjpeg'],\r\n JPG: ['image/jpeg', 'image/pjpeg'],\r\n jpeg: ['image/jpeg', 'image/pjpeg'],\r\n bmp: ['image/bmp', 'image/x-windows-bmp'],\r\n png: ['image/png']\r\n }\r\n\r\n validFileTypes = {\r\n 'pdf': ['application/pdf'],\r\n 'doc': ['application/msword'],\r\n 'docx': ['application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\r\n 'ppt': ['application/vnd.ms-powerpoint'],\r\n 'pptx': ['application/vnd.openxmlformats-officedocument.presentationml.presentation'],\r\n 'pps': ['application/vnd.ms-powerpoint'],\r\n 'ppsx': ['application/vnd.openxmlformats-officedocument.presentationml.slideshow'],\r\n 'odt': ['application/vnd.oasis.opendocument.text'],\r\n 'xls': ['application/vnd.ms-excel'],\r\n 'xlsx': ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\r\n 'zip': ['application/zip', 'application/x-zip-compressed', 'multipart/x-zip', 'application/zip'],\r\n 'msg': ['application/vnd.ms-outlook', 'application/msg'],\r\n 'csv': ['text/csv'],\r\n 'txt': ['text/plain'],\r\n 'rtf': ['application/rtf', 'application/x-rtf', 'text/richtext'],\r\n 'html': ['text/html'],\r\n // 'mp4': ['video/mp4'],\r\n // 'm4v': ['video/mp4'],\r\n 'mov': ['video/quicktime'],\r\n 'wmv': ['video/x-ms-wmv'],\r\n // 'avi': ['video/x-msvideo'],\r\n 'mpg': ['mpg'],\r\n 'rmvb': ['rmvb'],\r\n // 'ogv': ['video/ogg'],\r\n // '3gp': ['video/3gpp', 'audio/3gpp'],\r\n // '3g2': ['video/3gpp2', 'audio/3gpp'],\r\n 'jpg': ['image/jpeg', 'image/pjpeg'],\r\n 'jpeg': ['image/jpeg', 'image/pjpeg'],\r\n 'png': ['image/png'],\r\n 'gif': ['image/gif'],\r\n 'bmp': ['image/bmp', 'image/x-windows-bmp']\r\n }\r\n\r\n\r\n private readonly validPdfTypes = {\r\n 'pdf': ['application/pdf'],\r\n }\r\n uploading: boolean;\r\n lengthError: boolean;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.attachments?.length) {\r\n this.allAttachments = [...this.attachments];\r\n }\r\n }\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.reset();\r\n }\r\n });\r\n }\r\n\r\n getFileType(attachment: any): string {\r\n if (!attachment.fileName?.includes('.') && attachment.mimeType.includes('.')) {\r\n return this.checkFileType(attachment.mimeType);\r\n } else if (attachment.fileName) {\r\n return this.checkFileType(attachment.fileName);\r\n } else {\r\n return attachment.mimeType;\r\n }\r\n }\r\n\r\n private checkFileType(attachmentData: string): string {\r\n if (attachmentData.split('.').pop() == 'msg') {\r\n return 'email-icon'\r\n } else if (attachmentData.split('.').pop() == 'jpeg') {\r\n return 'jpg'\r\n } else if (attachmentData.split('.').pop() == 'xlsx' || attachmentData.split('.').pop() == 'xls') {\r\n return 'application/vnd.ms-excel;charset=utf-8';\r\n }\r\n return attachmentData.split('.').pop();\r\n }\r\n\r\n attachmentAction(type: any, index: number, field: any) {\r\n if (type == \"download\") {\r\n if (this.downloadLink) {\r\n window.open(field?.attachmentId, '_blank', 'top=0,left=0,height=auto,width=auto');\r\n } else if (field?.attachmentId) {\r\n this.downloadFile(type, field);\r\n } else if (field?.fileContents) {\r\n this.downloadFileNew(field);\r\n }\r\n }\r\n if (type == \"delete\") {\r\n if (this.validExtension) {\r\n if (this.multiple) {\r\n this.confirmDelete(index)\r\n } else {\r\n this.removeAttachedFile()\r\n }\r\n } else {\r\n this.validExtension = true;\r\n }\r\n }\r\n }\r\n\r\n confirmDelete(index: number) {\r\n const dialogRef = this.dialog.open(DeleteDialogComponent, {\r\n panelClass: ['main-popup', 'confirm-dialog'],\r\n scrollStrategy: new NoopScrollStrategy(),\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((returnValue) => {\r\n if (returnValue == 'yes') {\r\n this.removeMulti(index)\r\n }\r\n });\r\n }\r\n\r\n removeMulti(index: number) {\r\n this.displayedFiles.splice(index, 1);\r\n this.allAttachments.splice(index, 1);\r\n this.lengthError = this.displayedFiles?.length >= +this.maxLength;\r\n if(this.displayedFiles?.length==0){\r\n this.reset();\r\n }\r\n }\r\n\r\n downloadFileNew(fileData: any) {\r\n const fileType = this.getFileType(fileData);\r\n const blob = new Blob([fileData.fileContents], {type: fileType});\r\n FileSaver.saveAs(blob, `${fileData.fileName}`);\r\n }\r\n\r\n onValueChange(event: any) {\r\n const input = event.target;\r\n if(!this.multiple) this.reset();\r\n if (input?.files?.length > 0) {\r\n this.handleFileInput(input);\r\n this.processUploadedFile(input);\r\n }\r\n }\r\n\r\n private handleFileInput(input: any): void {\r\n if (input.files && this.formKey === 'TSV') {\r\n this.selectedTemplateAttachment.emit(input.files[0]);\r\n }\r\n\r\n const file: File = input.files[0];\r\n let fileType = file.name?.endsWith(\".msg\") ? 'application/vnd.ms-outlook' : file.type;\r\n\r\n if (this.accept?.length && !this.accept.includes(fileType)) {\r\n alert(this.i18n.translate('thisIsInvalidFile'));\r\n return;\r\n }\r\n\r\n this.uploadForm?.get('file')?.setValue(file);\r\n this.uploadForm?.get('name')?.setValue(file?.name);\r\n }\r\n\r\n private processUploadedFile(input: any): void {\r\n if (!this.uploading) {\r\n const fileData = new FileInfo(\r\n input.files[0].name,\r\n input.files[0].name,\r\n input.files[0].type,\r\n '',\r\n this.filesize\r\n );\r\n this.updateFileProperties(input, fileData);\r\n if (!this.lengthError && +this.filesize < +this.maxSize) {\r\n this.allowedFileSize = true;\r\n this.uploadValidAndNonDuplicateFile(input, fileData);\r\n } else {\r\n this.allowedFileSize = +this.filesize < +this.maxSize;\r\n }\r\n\r\n input.value = '';\r\n }\r\n }\r\n\r\n private updateFileProperties(input: any, fileInfo: FileInfo): void {\r\n this.maxSizeValue = this.maxSize ? this.maxSize : 1;\r\n this.filesize = ((input.files[0].size / 1024) / 1024).toFixed(4);\r\n this.maxSizeFlag = +this.filesize < +this.maxSize;\r\n this.lengthError = this.displayedFiles?.length >= +this.maxLength;\r\n this.wrongExtensionFlag = this.isValidMimeType(input.files[0].type);\r\n this.validExtension = this.isValidExtension(input.files[0].name.split('.').pop(), this.type);\r\n this.value = fileInfo;\r\n }\r\n\r\n private uploadValidAndNonDuplicateFile(input: any, fileData: FileInfo): void {\r\n if (this.validExtension) {\r\n if (this.getDataFromTemplate) this.selectedTemplateAttachment.emit(input);\r\n this.readFileAndUpload(input.files[0], fileData);\r\n } else if (!this.multiple) {\r\n this.emitEmptyFile();\r\n }\r\n }\r\n\r\n private readFileAndUpload(file: File, fileInfo: FileInfo): void {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const fileContents = (reader.result as string).split(',')[1];\r\n fileInfo.fileContents = fileContents;\r\n fileInfo.filesize = this.filesize;\r\n if (!this.multiple) {\r\n this.uploadSingleFile(fileContents, fileInfo);\r\n } else if (this.isFileNotDuplicate(fileInfo)) {\r\n this.addMultiAttachments(fileInfo);\r\n }\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n private uploadSingleFile(fileContents: string, fileInfo: FileInfo): void {\r\n this.fileNotDuplicated = this.isFileNotDuplicate(fileInfo);\r\n if (!this.fileNotDuplicated) {\r\n return;\r\n }\r\n this.value.fileContents = fileContents;\r\n if (this.callApi) {\r\n this.addAttachments()\r\n } else {\r\n this.updateValue(this.value);\r\n this.selectedTemplateAttachment.emit(this.value);\r\n }\r\n }\r\n\r\n private emitEmptyFile(): void {\r\n const emptyObj = {\r\n mimeType: \"\",\r\n fileContents: \"\",\r\n fileName: \"\",\r\n }\r\n this.updateValue(emptyObj)\r\n this.selectedTemplateAttachment.emit(null);\r\n }\r\n\r\n processAttachments(field: any, allowMultiAttachments: boolean) {\r\n const data = {\r\n \"fileDescription\": \"\",\r\n \"attachmentcomment\": \"\",\r\n \"fileName\": field.fileName,\r\n \"mimeType\": field.mimeType,\r\n \"fileContents\": field.fileContents,\r\n }\r\n this.uploading = true;\r\n this.coreService.getAttachments(data).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe({\r\n next: (form: any) => {\r\n const newObj = {\r\n \"fileName\": field.fileName,\r\n \"attachmentId\": form.attachment.attachmentId,\r\n \"mimeType\": form.attachment.mimeType,\r\n // \"fileContents\": field.fileContents\r\n }\r\n if (allowMultiAttachments) {\r\n if (this.allowFileContentsWithMultiAttachments) newObj['fileContents'] = field.fileContents;\r\n this.displayedFiles = this.displayedFiles?.length ? this.displayedFiles : []\r\n this.displayedFiles.push(newObj);\r\n this.allAttachments.push(newObj);\r\n this.updateValue(this.displayedFiles);\r\n } else {\r\n this.updateValue(newObj);\r\n }\r\n this.uploading = false;\r\n },\r\n error: (err) => {\r\n this.uploading = false;\r\n err?.error?.meta?.messages?.forEach((msg) => {\r\n this.toasterService.error(msg.message);\r\n });\r\n }\r\n });\r\n }\r\n\r\n addAttachments() {\r\n this.processAttachments(this.value, false);\r\n }\r\n\r\n addMultiAttachments(field: any) {\r\n this.processAttachments(field, true);\r\n }\r\n\r\n\r\n isFileNotDuplicate(file: FileInfo): boolean {\r\n if (this.allAttachments?.length) {\r\n return this.allAttachments?.findIndex(($file) => (file.fileName === $file.fileName)) === -1;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n\r\n isValidMimeType(value: any) {\r\n if (this.attachType == 'pdf') {\r\n return ([] as string[]).concat(...Object.values(this.validPdfTypes)).includes(value);\r\n } else if (this.attachType == 'image') {\r\n return ([] as string[]).concat(...Object.values(this.validImageTypes)).includes(value);\r\n } else {\r\n return true\r\n }\r\n }\r\n\r\n isValidExtension(value: string, type: string) {\r\n if (type == 'image') {\r\n return [].concat(...Object.keys(this.validImageTypes)).includes(value.toLowerCase());\r\n } else if (type == \"imagePdf\") {\r\n return [].concat(...Object.keys(this.validImgPdfTypes)).includes(value.toLowerCase());\r\n } else if (type === \"pdf\") {\r\n return [].concat(...Object.keys(this.validPdfTypes)).includes(value.toLowerCase());\r\n } else {\r\n return [].concat(...Object.keys(this.validFileTypes)).includes(value.toLowerCase());\r\n }\r\n }\r\n\r\n removeAttachedFile() {\r\n if (this.inputFile) {\r\n this.inputFile.nativeElement.value = null;\r\n }\r\n this.reset();\r\n }\r\n\r\n downloadFile(event, field) {\r\n if (this.customDownload) {\r\n this.downloadActionClicked.emit(field)\r\n } else {\r\n this.coreService.loadFile(field.attachmentId).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n (responseObject: { body: any; }) => {\r\n const fileInformation = responseObject.body;\r\n this.coreService.saveFile(fileInformation)\r\n },\r\n error => {\r\n this.toasterService.error(error.error?.['message'])\r\n }\r\n );\r\n\r\n }\r\n }\r\n\r\n private updateValue<T>(value: T | T[]) {\r\n if (this.preventFileContents) {\r\n value = JSON.parse(JSON.stringify(value));\r\n this.deleteFileContents(value);\r\n }\r\n this.control.setValue(value);\r\n this.emitedValue.emit(value);\r\n }\r\n\r\n private deleteFileContents(data: any) {\r\n if (typeof data === 'object' && 'fileContents' in data) {\r\n delete data.fileContents;\r\n } else if (Array.isArray(data)) {\r\n data.forEach(elem => this.deleteFileContents(elem));\r\n }\r\n }\r\n\r\n private reset(): void { \r\n this.control.reset();\r\n this.emitedValue.emit(null);\r\n this.selectedTemplateAttachment.emit(null);\r\n if(this.multiple)\r\n {\r\n this.allAttachments =[]\r\n this.displayedFiles =[]\r\n }\r\n }\r\n}\r\n\r\nclass FileInfo {\r\n constructor(\r\n public fileName: string,\r\n public name: string,\r\n public mimeType: string,\r\n public fileContents: string,\r\n public filesize: string\r\n ) { }\r\n}\r\n","@if (!isReadOnly) {\r\n <ng-container>\r\n @if(label) {\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <section\r\n (click)=\"fileAttached.click()\"\r\n [ngClass]=\"insideTable ? 'file-uploader-table' : 'file-uploader'\" class=\" mb-2\"\r\n [class.insideTableStyle]=\"insideTable\">\r\n <div\r\n [ngClass]=\"insideTable ? 'file-uploader-table-dev' : ''\" class=\"file-uploader-input\"\r\n >\r\n @if (!uploading) {\r\n <div class=\"icon mb-1\">\r\n <svg\r\n [ngClass]=\"insideTable ? 'file-uploader-table-svg' : ''\" width=\"41\" height=\"38\" viewBox=\"0 0 41 38\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M0 22.1947V20.6736C0.0971303 20.1019 0.070094 19.5141 0.276371 18.9533C1.28372 16.2086 3.21231 14.5023 6.0421 13.8094C6.70499 13.6472 6.68497 13.6632 6.69899 12.9843C6.73203 11.3321 6.99839 9.71992 7.62423 8.17986C8.86289 5.13678 10.9467 2.83969 13.8816 1.39175C17.168 -0.230424 20.5956 -0.450719 24.0553 0.81598C27.4929 2.07467 29.9622 4.41581 31.4802 7.74828C31.7786 8.40316 32.027 9.08307 32.1712 9.79202C32.2402 10.1315 32.4035 10.2566 32.7529 10.3107C36.7012 10.9165 39.3358 13.1255 40.6946 16.8735C40.9069 17.4603 40.9199 18.0731 40.9599 18.6829C40.9649 18.7601 40.9389 18.8442 41 18.9113V20.5124C40.9109 20.995 40.969 21.4937 40.8608 21.9734C40.5244 23.4614 39.8454 24.7821 38.8501 25.9297C37.4522 27.5418 35.7059 28.5882 33.6161 29.0519C32.791 29.2351 31.9499 29.2521 31.1117 29.2922C30.6571 29.3142 30.584 29.193 30.592 28.7484C30.6451 25.8446 29.802 23.2571 27.8624 21.0591C25.9979 18.9463 23.6597 17.7167 20.867 17.4012C18.8553 17.1739 16.9057 17.4593 15.0612 18.3395C11.8319 19.8816 9.81416 22.4069 8.96102 25.8696C8.74273 26.7538 8.68265 27.658 8.70568 28.5702C8.7217 29.2111 8.60254 29.3122 7.95968 29.2972C5.95098 29.2511 4.10551 28.7234 2.58146 27.3596C1.07644 26.0168 0.0680913 24.3996 0.0400537 22.3028C0.0400537 22.2607 0.0250336 22.2257 0 22.1937V22.1947Z\"\r\n fill=\"#DEE0E2\"/>\r\n <path\r\n d=\"M29.0303 28.2632C29.0604 33.4031 24.8657 37.6187 19.6838 37.6548C14.5169 37.6908 10.2852 33.4952 10.2521 28.3042C10.2201 23.1403 14.4297 18.9126 19.6227 18.8946C24.8037 18.8766 28.9993 23.0542 29.0303 28.2632Z\"\r\n fill=\"#8E9AA0\"/>\r\n <path\r\n d=\"M20.5573 25.2644C20.4622 25.4477 20.5012 25.5939 20.5012 25.734C20.4982 28.2154 20.5002 30.6957 20.4982 33.177C20.4982 33.8099 20.2339 34.1704 19.7462 34.2234C19.2645 34.2765 18.88 33.9831 18.8169 33.5025C18.7959 33.3443 18.7969 33.183 18.7969 33.0238C18.7959 30.5826 18.7969 28.1423 18.7969 25.701C18.7969 25.5728 18.7969 25.4447 18.7969 25.2003C18.1971 25.8031 17.6774 26.3288 17.1527 26.8505C17.0115 26.9907 16.8683 27.1349 16.7061 27.2471C16.3566 27.4864 15.9341 27.4413 15.6457 27.154C15.3643 26.8746 15.3203 26.442 15.5486 26.0925C15.6207 25.9824 15.7128 25.8832 15.8069 25.7891C16.8613 24.7307 17.9167 23.6733 18.9732 22.6179C19.4017 22.1893 19.8784 22.1763 20.3039 22.5988C21.3914 23.6803 22.4739 24.7667 23.5533 25.8572C23.9809 26.2898 24.0129 26.8065 23.6534 27.167C23.299 27.5214 22.7753 27.4844 22.3437 27.0568C21.7499 26.47 21.1661 25.8732 20.5603 25.2644H20.5573Z\"\r\n fill=\"#F9F9F9\"/>\r\n </svg>\r\n </div>\r\n }\r\n @if (uploading) {\r\n <ds-icon class=\"sfi sfi-spinner d-inline-block spin fc-coral fs-30-imp\"></ds-icon>\r\n }\r\n @if (insideTable) {\r\n <ds-icon class=\"d-inline-block fc-black fs-20-imp\" icon=\"upload-to-cloud\"></ds-icon>\r\n }\r\n <div class=\"f-14 fc-black fw-normal\">\r\n <span class=\"fc-coral fw-medium\">{{ 'browse' | translate }}</span>\r\n </div>\r\n <div class=\"fs-10 fc-dark-gray\">\r\n {{ allowedExtensions ? allowedExtensions : '' }}\r\n </div>\r\n\r\n <input type=\"file\" #inputFile [accept]=\"accept\" class=\"d-none\" #fileAttached (change)=\"onValueChange($event)\">\r\n </div>\r\n </section>\r\n\r\n @if (hints) {\r\n <div class=\"d-flex align-items-center gap-3 mb-3\">\r\n @for (hint of hints; track hint) {\r\n <ng-container>\r\n <div class=\"d-flex align-items-center gap-1 fs-12\">\r\n <ds-icon\r\n icon=\"{{ hint.valid ? 'check-circle-f' : 'check-circle-o' }}\"\r\n class=\"fs-24 {{ hint.valid ? 'fc-green' : 'fc-dark-gray' }}\"></ds-icon>\r\n <span class=\"{{ hint.valid ? 'fc-black' : 'fc-dark-gray' }}\">{{ hint.label }}</span>\r\n </div>\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n\r\n @if (hint) {\r\n <mat-hint class=\"d-flex align-items-center gap-1\">\r\n <ds-icon icon=\"info\" class=\"fs-17 fc-dark-gray\"></ds-icon>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n\r\n @if (multiple) {\r\n <section class=\"files-list\">\r\n @for (file of displayedFiles; track file; let i = $index) {\r\n <div class=\"file-item-container\">\r\n <ds-attachments\r\n [matTooltip]=\"file?.fileName\"\r\n [file]=\"{ name: file.fileName }\"\r\n (downloadEvent)=\"attachmentAction('download', i, file)\"\r\n (deleteEvent)=\"attachmentAction('delete', i, file)\"\r\n [showActions]=\"showActions\">\r\n </ds-attachments>\r\n </div>\r\n }\r\n </section>\r\n }\r\n\r\n @if (!multiple && (control?.value?.fileContents || control?.value?.attachmentId)) {\r\n <section class=\"files-list\">\r\n <div class=\"file-item-container file-item-container-actions\">\r\n <ds-attachments\r\n [matTooltip]=\"control?.value?.fileName\"\r\n [file]=\"{ name: control?.value.fileName }\"\r\n (downloadEvent)=\"attachmentAction('download', null, control?.value)\"\r\n (deleteEvent)=\"attachmentAction('delete', null, control?.value)\"\r\n [showActions]=\"showActions\">\r\n </ds-attachments>\r\n </div>\r\n </section>\r\n }\r\n\r\n <div class=\"attachments-error\">\r\n @if (!validExtension) {\r\n <section class=\"files-list mt-2\">\r\n <div class=\"file-item-container \">\r\n <ds-attachments\r\n [file]=\"wrongFile\" error [showActions]=\"false\">\r\n </ds-attachments>\r\n </div>\r\n </section>\r\n }\r\n\r\n @if (!this.lengthError && !allowedFileSize) {\r\n <mat-error class=\"fs-12 my-2\">\r\n {{ maxSize === \"0.3\" ? ('support3' | translate ): ('support2' | translate) + maxSize + ('mb' | translate) }}\r\n </mat-error>\r\n }\r\n\r\n @if (!fileNotDuplicated) {\r\n <mat-error class=\"fs-12 my-2\">{{ 'duplicated-error' | translate }}</mat-error>\r\n }\r\n\r\n @if (lengthError) {\r\n <mat-error class=\"fs-12\">{{ 'lengthError' | translate }}: {{ maxLength }}</mat-error>\r\n }\r\n\r\n @if (showErrorMessage) {\r\n <!-- <mat-error class=\"fs-12\">{{errorMessage}} </mat-error> -->\r\n }\r\n </div>\r\n </ng-container>\r\n}\r\n\r\n@if (isReadOnly) {\r\n <ng-container>\r\n @if (multiple && displayedFiles) {\r\n <ng-container>\r\n <div class=\"info-item\">\r\n @if (label) {\r\n <span class=\"name\">{{ label }}</span>\r\n }\r\n @if (displayedFiles?.length) {\r\n <span>\r\n @for (file of displayedFiles; track file; let i = $index) {\r\n <div class=\"file-item-container\">\r\n <ds-attachments\r\n [matTooltip]=\"file?.fileName\"\r\n class=\"my-2\" [file]=\"{ name: file.fileName }\" readOnly (downloadEvent)=\"downloadFile($event, file)\"\r\n [showActions]=\"showActions\">\r\n </ds-attachments>\r\n </div>\r\n }\r\n </span>\r\n }\r\n @if (!displayedFiles?.length) {\r\n <span class=\"disc\">\r\n {{ 'NoAttachments' | translate }}\r\n </span>\r\n }\r\n </div>\r\n </ng-container>\r\n }\r\n\r\n @if (!multiple && (control?.value?.['attachmentId'] || control?.value?.['fileContents'])) {\r\n <ng-container>\r\n <div class=\"info-item\">\r\n @if (label) {\r\n <span class=\"name\">{{ label }}</span>\r\n }\r\n <div class=\"disc file-item-container file-item-container-actions\" [ngClass]=\"{'insideTableWidth': insideTable}\">\r\n @if (control?.value?.['attachmentId'] || control?.value?.['fileContents']) {\r\n <ds-attachments\r\n [matTooltip]=\"control?.value?.fileName\" [file]=\"{ name: control?.value.fileName }\" [showActions]=\"showActions\"\r\n (downloadEvent)=\"attachmentAction('download', null, control?.value)\"\r\n (deleteEvent)=\"attachmentAction('delete', null, control?.value)\"\r\n readOnly>\r\n </ds-attachments>\r\n }\r\n </div>\r\n </div>\r\n </ng-container>\r\n }\r\n </ng-container>\r\n}","import {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Inject, Injector, Input,} from '@angular/core';\r\nimport {TextareaComponent} from '../textarea/textarea.component';\r\nimport {MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogModule, MatDialogRef,} from '@angular/material/dialog';\r\nimport {NgIf} from '@angular/common';\r\nimport {ControlValueAccessorDirective} from '../control-value-accessor.directive';\r\nimport {Section} from '../../../../interfaces';\r\nimport {FormBuilder, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators,} from '@angular/forms';\r\nimport {DocsUploaderComponent} from '../doc-uploader/docs-uploader.component';\r\nimport {ToastrService} from 'ngx-toastr';\r\nimport {DomSanitizer} from '@angular/platform-browser';\r\nimport {ActionStateService, CoreI18nService, CoreService} from \"../../../../services\";\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {TranslatePipe} from \"../../../../pipes/translate.pipe\";\r\n\r\n@Component({\r\n selector: 'app-add-attachment-section',\r\n templateUrl: './add-attachment-section.component.html',\r\n styleUrls: ['./add-attachment-section.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n TextareaComponent,\r\n MatDialogContent,\r\n DocsUploaderComponent,\r\n MatDialogActions,\r\n NgIf,\r\n MatDialogModule,\r\n ReactiveFormsModule,\r\n MatDialogClose,\r\n TranslatePipe\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AttachmentSectionDataComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class AttachmentSectionDataComponent<\r\n Type\r\n> extends ControlValueAccessorDirective<Type> {\r\n popupData: any = {};\r\n popupDataOrg: any = {};\r\n uploading: boolean;\r\n editMode: boolean;\r\n @Input() hasColumnBreak: boolean;\r\n @Input() section: Section;\r\n formGroup: FormGroup;\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor(\r\n injector: Injector,\r\n i18n: CoreI18nService,\r\n toasterService: ToastrService,\r\n coreService: CoreService,\r\n sanitizer: DomSanitizer,\r\n fb: FormBuilder,\r\n actionStateService: ActionStateService,\r\n public dialogRef: MatDialogRef<any>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any\r\n ) {\r\n super(injector, i18n, toasterService, coreService, sanitizer, fb, actionStateService);\r\n }\r\n\r\n override ngOnInit() {\r\n // super.ngOnInit()\r\n this.createForm();\r\n if (this.dialogData?.attachmentListData) {\r\n this.popupData = this.dialogData.attachmentListData;\r\n this.popupDataOrg = Object.assign({}, this.popupData);\r\n this.formGroup.controls['file'].setValue(\r\n this.dialogData.attachmentListData\r\n );\r\n this.formGroup.controls['description'].setValue(\r\n this.dialogData.attachmentListData.fileDescription\r\n );\r\n this.formGroup.controls['comments'].setValue(\r\n this.dialogData.attachmentListData.fileComments\r\n );\r\n this.editMode = true;\r\n }\r\n }\r\n createForm() {\r\n this.formGroup = this.fb.group({\r\n file: new FormControl(null, Validators.required),\r\n description: new FormControl(null,this.dialogData.descriptionRequired ? Validators.required: null),\r\n comments: new FormControl(null, this.dialogData.commentsRequired ? Validators.required: null),\r\n });\r\n }\r\n\r\n close() {\r\n this.dialogRef.close(this.popupDataOrg);\r\n }\r\n\r\n handleEmitValue(data: any, fieldName: string) {\r\n this.popupData[fieldName] = data;\r\n }\r\n\r\n handleAttachmentEmitValue(data: any) {\r\n this.popupData = {\r\n fileContents: data?.fileContents,\r\n fileName: data?.fileName,\r\n mimeType: data?.mimeType,\r\n fileDescription: this.popupData?.fileDescription,\r\n attachmentcomment: this.popupData?.attachmentcomment,\r\n fileComments: this.popupData?.attachmentcomment,\r\n };\r\n }\r\n\r\n addAttachments() {\r\n const newObj = {\r\n fileDescription: this.formGroup.controls['description'].value,\r\n attachmentcomment: this.formGroup.controls['comments'].value,\r\n fileComments: this.formGroup.controls['comments'].value,\r\n fileName: this.formGroup.controls['file'].value.fileName,\r\n attachmentId: this.formGroup.controls['file'].value.attachmentId,\r\n mimeType: this.formGroup.controls['file'].value.mimeType,\r\n };\r\n this.dialogRef.close(newObj);\r\n\r\n/* const data = {\r\n fileDescription: this.formGroup.controls['description'].value,\r\n attachmentcomment: this.formGroup.controls['comments'].value,\r\n fileComments: this.formGroup.controls['comments'].value,\r\n fileName: this.formGroup.controls['file'].value.fileName,\r\n mimeType: this.formGroup.controls['file'].value.mimeType,\r\n fileContents: this.formGroup.controls['file'].value.fileContents,\r\n };\r\n this.uploading = true;\r\n this.coreService.getAttachments(data).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((Response: any) => {\r\n this.uploading = false;\r\n if (Response) {\r\n const newObj = {\r\n fileDescription: this.formGroup.controls['description'].value,\r\n attachmentcomment: this.formGroup.controls['comments'].value,\r\n fileComments: this.formGroup.controls['comments'].value,\r\n fileName: this.formGroup.controls['file'].value.fileName,\r\n attachmentId: Response.attachment.attachmentId ?? this.formGroup.controls['file'].value.attachmentId,\r\n mimeType: this.formGroup.controls['file'].value.mimeType,\r\n };\r\n this.dialogRef.close(newObj);\r\n }\r\n });*/\r\n }\r\n}\r\n","<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-end\" mat-dialog-title>\r\n <h3 class=\"mb-0 font-16 fw-medium\">{{ 'addAttachments' | translate }}</h3>\r\n <ds-button icon matDialogClose>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"px-md-4 mt-3\">\r\n <form [formGroup]=\"formGroup\">\r\n <app-file-uploader\r\n class=\"section-item full\" [field]=\"popupData\" name=\"file\" [attachments]=\"dialogData?.attachments\"\r\n [labelTextReadMode]=\"'Attachment' | translate\" [labelTextWriteMode]=\"'Attachment' | translate\"\r\n [hasColumnBreak]=\"false\" [label]=\"'Attachment' | translate\" [mandatory]=\"true\" [multiple]=\"false\"\r\n [allowedExtensions]=\"dialogData?.data\"\r\n [allAttachments]=\"dialogData?.attachments\"\r\n [isReadOnly]=\"section?.header?.readOnly\" [showActions]=\"false\"\r\n formControlName=\"file\">\r\n </app-file-uploader>\r\n\r\n <app-textarea\r\n class=\"section-item d-block mt-4 mb-4\"\r\n (emitedValue)=\"handleEmitValue($event,'fileDescription')\"\r\n [label]=\"'description' | translate\" [maxLength]=\"500\"\r\n [isReadOnly]=\"section?.header?.readOnly\"\r\n formControlName=\"description\"\r\n [mandatory]=\"dialogData.descriptionRequired\">\r\n </app-textarea>\r\n\r\n <app-textarea\r\n class=\"section-item\"\r\n (emitedValue)=\"handleEmitValue($event,'attachmentcomment')\"\r\n [label]=\"'comments' | translate\" [maxLength]=\"500\"\r\n [isReadOnly]=\"section?.header?.readOnly\"\r\n formControlName=\"comments\"\r\n [mandatory]=\"dialogData.commentsRequired\">\r\n </app-textarea>\r\n </form>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"default-footer justify-content-end gap-3\">\r\n <ds-button shape=\"outline\" matDialogClose [disabled]=\"uploading\" [class.disabled]=\"uploading\">{{ 'cancel' | translate }}</ds-button>\r\n <ds-button\r\n (click)=\"addAttachments()\" [loading]=\"uploading\"\r\n [disabled]=\"(!formGroup?.value?.file?.attachmentId || uploading || !formGroup.valid)\">\r\n <ng-container *ngIf=\"!editMode; else editTemplate\">\r\n <span>{{ 'add' | translate }}</span>\r\n </ng-container>\r\n <ng-template #editTemplate>\r\n <span>{{ 'edit' | translate }}</span>\r\n </ng-template>\r\n </ds-button>\r\n </mat-dialog-actions>\r\n</div>\r\n","import {AfterViewInit, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, EventEmitter, forwardRef, inject, Input, OnDestroy, Output, ViewChild} from '@angular/core';\r\nimport {AttachmentSectionDataComponent} from '../add-attachment-section/add-attachment-section.component';\r\nimport {CdkDrag, CdkDragDrop, CdkDropList, moveItemInArray} from '@angular/cdk/drag-drop';\r\nimport {SatPopoverModule} from '@ncstate/sat-popover';\r\nimport {MatTooltip} from \"@angular/material/tooltip\";\r\nimport {NgClass, NgForOf, NgIf, SlicePipe} from \"@angular/common\";\r\nimport {DocsUploaderComponent} from '../doc-uploader/docs-uploader.component';\r\nimport {DeleteDialogComponent} from \"../../dialogs/delete-dialog/delete-dialog.component\";\r\nimport {ControlValueAccessorDirective} from \"../control-value-accessor.directive\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {MatPaginator} from \"@angular/material/paginator\";\r\nimport {\r\n MatCell,\r\n MatCellDef,\r\n MatColumnDef,\r\n MatHeaderCell,\r\n MatHeaderCellDef,\r\n MatHeaderRow,\r\n MatHeaderRowDef,\r\n MatRow,\r\n MatRowDef,\r\n MatTable,\r\n MatTableDataSource\r\n} from \"@angular/material/table\";\r\nimport { FormLabelComponent } from '../form-label/form-label.component';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {TranslatePipe} from \"../../../../pipes/translate.pipe\";\r\nimport { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { CoreI18nService } from '../../../../services/i18n.service';\r\n\r\n\r\nexport function getPaginatorIntl(i18nService: CoreI18nService): MatPaginatorIntl {\r\n const paginatorIntl = new MatPaginatorIntl();\r\n\r\n if (i18nService.getLanguage() === 'ar') {\r\n paginatorIntl.itemsPerPageLabel = 'عدد العناصر في الصفحة:';\r\n paginatorIntl.nextPageLabel = 'الصفحة التالية';\r\n paginatorIntl.previousPageLabel = 'الصفحة السابقة';\r\n paginatorIntl.firstPageLabel = 'الصفحة الأولى';\r\n paginatorIntl.lastPageLabel = 'الصفحة الأخيرة';\r\n paginatorIntl.getRangeLabel = (page: number, pageSize: number, length: number): string => {\r\n if (length === 0 || pageSize === 0) {\r\n return `0 من ${length}`;\r\n }\r\n const startIndex = page * pageSize;\r\n const endIndex = Math.min(startIndex + pageSize, length);\r\n return `${startIndex + 1} - ${endIndex} من ${length}`;\r\n };\r\n }\r\n return paginatorIntl;\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'app-attachment-section',\r\n templateUrl: './attachment-section.component.html',\r\n styleUrls: ['./attachment-section.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AttachmentSectionComponent),\r\n multi: true,\r\n },\r\n { provide: MatPaginatorIntl, useFactory: getPaginatorIntl, deps: [CoreI18nService] }\r\n ],\r\n imports: [\r\n SatPopoverModule,\r\n MatTooltip,\r\n NgClass,\r\n CdkDropList,\r\n DocsUploaderComponent,\r\n CdkDrag,\r\n SlicePipe,\r\n MatPaginator,\r\n MatTable,\r\n MatColumnDef,\r\n MatCell,\r\n MatCellDef,\r\n MatHeaderCellDef,\r\n MatHeaderCell,\r\n MatRow,\r\n MatHeaderRow,\r\n MatHeaderRowDef,\r\n MatRowDef,\r\n FormLabelComponent,\r\n TranslatePipe\r\n ],\r\n standalone: true\r\n})\r\nexport class AttachmentSectionComponent extends ControlValueAccessorDirective<any> implements AfterViewInit {\r\n @Input() className = 'info-section';\r\n @Output() downloadActionClicked = new EventEmitter();\r\n @Input() customDownload: boolean;\r\n\r\n @Input() attachmentsMax = 1000;\r\n @Input() isSortable = false;\r\n @Input() downloadAll = false;\r\n popupData: any = {};\r\n @Input() descriptionRequired: boolean;\r\n @Input() commentsRequired: boolean;\r\n @Input() allowedExtensions = '';\r\n @Output() emitedValue = new EventEmitter();\r\n dialog = inject(MatDialog);\r\n displayedColumns: string[] = [\"index\", \"file\", \"description\", \"comment\", \"actions\"];\r\n dataSource: MatTableDataSource<any>;\r\n @ViewChild('paginator') paginator: MatPaginator;\r\n totalRecords: number = 0;\r\n pageSize: number = 5;\r\n pageNumber: number = 0;\r\n destroyRef = inject(DestroyRef);\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n if (this.control.value) {\r\n this.attachments = this.control.value\r\n }\r\n /*if (this.attachments) {\r\n this.attachments.forEach(element => {\r\n element.name = element.fileName;\r\n });\r\n }*/\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addDataToTable();\r\n }\r\n\r\n onPaginateChange(event: any) {\r\n this.pageNumber = event.pageIndex\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>) {\r\n moveItemInArray(this.attachments, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n\r\n resetAttachmentData() {\r\n if (!this.isReadOnly) {\r\n this.attachments = [];\r\n this.emitedValue.emit(this.attachments);\r\n }\r\n }\r\n\r\n addDataToTable(){\r\n this.dataSource = new MatTableDataSource(this.attachments);\r\n this.totalRecords = this.dataSource.data.length;\r\n this.dataSource.paginator = this.paginator;\r\n }\r\n\r\n handleEmitValue(data: any, fieldName: string) {\r\n this.popupData[fieldName] = data;\r\n }\r\n\r\n addAttachment(): void {\r\n const dialogRef = this.dialog.open(AttachmentSectionDataComponent, {\r\n panelClass: ['main-popup', 'add-attachment-dialog'],\r\n data: {\r\n attachmentListData: null,\r\n data: this.allowedExtensions,\r\n multiple: this.multiple,\r\n attachments: this.attachments,\r\n descriptionRequired: this.descriptionRequired,\r\n commentsRequired: this.commentsRequired\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe((resultData) => {\r\n if (resultData != 'close') {\r\n if (resultData?.attachmentId) {\r\n this.attachments.push(resultData);\r\n this.addDataToTable();\r\n\r\n }\r\n }\r\n this.control.setValue(this.attachments)\r\n });\r\n }\r\n\r\n deleteAttachments(index: number, item: any) {\r\n const dialogRef = this.dialog.open(DeleteDialogComponent, {\r\n panelClass: ['main-popup', 'add-attachment-dialog']\r\n });\r\n dialogRef.afterClosed().subscribe((resultData) => {\r\n if (resultData == 'yes') {\r\n this.deleteAttachment(index, item);\r\n }\r\n });\r\n }\r\n\r\n deleteAttachment(index: number, item: any) {\r\n this.attachments = this.attachments.filter((row: any) => {\r\n return row.attachmentId != item.attachmentId;\r\n });\r\n this.addDataToTable();\r\n this.control.setValue(this.attachments)\r\n }\r\n\r\n editRow(rowData, index): void {\r\n const dialogRef = this.dialog.open(AttachmentSectionDataComponent, {\r\n panelClass: ['main-popup', 'add-attachment-dialog'],\r\n data: {\r\n attachmentListData: Object.assign(rowData),\r\n data: this.allowedExtensions,\r\n descriptionRequired: this.descriptionRequired,\r\n commentsRequired: this.commentsRequired,\r\n multiple: this.multiple,\r\n attachments: this.attachments,\r\n\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe((resultData) => {\r\n if (resultData != 'close') {\r\n if (resultData?.attachmentId) {\r\n this.attachments[index] = resultData;\r\n this.emitedValue.emit(this.attachments);\r\n this.addDataToTable();\r\n this.control.setValue(this.attachments)\r\n }\r\n }\r\n });\r\n }\r\n\r\n downloadAllAttachments(event) {\r\n this.loading = true\r\n const downloads = this.attachments.map((file) => this.downloadFile(event, file));\r\n Promise.all(downloads)\r\n .then(() => {\r\n this.loading = false\r\n })\r\n .catch((error) => {\r\n this.loading = false\r\n });\r\n }\r\n\r\n downloadFile(event, field): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n this.coreService.loadFile(field.attachmentId).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n (responseObject: { body: any; }) => {\r\n const fileInformation = responseObject.body;\r\n this.coreService.saveFile(fileInformation)\r\n resolve();\r\n },\r\n error => {\r\n this.toasterService.error(error.error?.['message']);\r\n }\r\n );\r\n });\r\n }\r\n\r\n customDownloadAction(event){\r\n this.downloadActionClicked.emit(event);\r\n }\r\n\r\n}\r\n","@if (isReadOnly ? attachments?.length : true) {\r\n <div class=\"mt-2 p-0\">\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"(required || mandatory ? false : true) && !isReadOnly\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n \r\n @if (!attachments?.length && !isReadOnly) {\r\n <section\r\n [ngClass]=\"insideTable ? 'file-uploader-table' : 'file-uploader'\"\r\n class=\"mb-2\"\r\n [class.insideTableStyle]=\"insideTable\"\r\n (click)=\"addAttachment()\">\r\n <div\r\n [ngClass]=\"insideTable ? 'file-uploader-table-dev' : ''\"\r\n class=\"file-uploader-input\">\r\n <div class=\"icon mb-1\">\r\n <svg\r\n [ngClass]=\"insideTable ? 'file-uploader-table-svg' : ''\"\r\n width=\"41\"\r\n height=\"38\"\r\n viewBox=\"0 0 41 38\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M0 22.1947V20.6736C0.0971303 20.1019 0.070094 19.5141 0.276371 18.9533C1.28372 16.2086 3.21231 14.5023 6.0421 13.8094C6.70499 13.6472 6.68497 13.6632 6.69899 12.9843C6.73203 11.3321 6.99839 9.71992 7.62423 8.17986C8.86289 5.13678 10.9467 2.83969 13.8816 1.39175C17.168 -0.230424 20.5956 -0.450719 24.0553 0.81598C27.4929 2.07467 29.9622 4.41581 31.4802 7.74828C31.7786 8.40316 32.027 9.08307 32.1712 9.79202C32.2402 10.1315 32.4035 10.2566 32.7529 10.3107C36.7012 10.9165 39.3358 13.1255 40.6946 16.8735C40.9069 17.4603 40.9199 18.0731 40.9599 18.6829C40.9649 18.7601 40.9389 18.8442 41 18.9113V20.5124C40.9109 20.995 40.969 21.4937 40.8608 21.9734C40.5244 23.4614 39.8454 24.7821 38.8501 25.9297C37.4522 27.5418 35.7059 28.5882 33.6161 29.0519C32.791 29.2351 31.9499 29.2521 31.1117 29.2922C30.6571 29.3142 30.584 29.193 30.592 28.7484C30.6451 25.8446 29.802 23.2571 27.8624 21.0591C25.9979 18.9463 23.6597 17.7167 20.867 17.4012C18.8553 17.1739 16.9057 17.4593 15.0612 18.3395C11.8319 19.8816 9.81416 22.4069 8.96102 25.8696C8.74273 26.7538 8.68265 27.658 8.70568 28.5702C8.7217 29.2111 8.60254 29.3122 7.95968 29.2972C5.95098 29.2511 4.10551 28.7234 2.58146 27.3596C1.07644 26.0168 0.0680913 24.3996 0.0400537 22.3028C0.0400537 22.2607 0.0250336 22.2257 0 22.1937V22.1947Z\"\r\n fill=\"#DEE0E2\"/>\r\n <path\r\n d=\"M29.0303 28.2632C29.0604 33.4031 24.8657 37.6187 19.6838 37.6548C14.5169 37.6908 10.2852 33.4952 10.2521 28.3042C10.2201 23.1403 14.4297 18.9126 19.6227 18.8946C24.8037 18.8766 28.9993 23.0542 29.0303 28.2632Z\"\r\n fill=\"#8E9AA0\"/>\r\n <path\r\n d=\"M20.5573 25.2644C20.4622 25.4477 20.5012 25.5939 20.5012 25.734C20.4982 28.2154 20.5002 30.6957 20.4982 33.177C20.4982 33.8099 20.2339 34.1704 19.7462 34.2234C19.2645 34.2765 18.88 33.9831 18.8169 33.5025C18.7959 33.3443 18.7969 33.183 18.7969 33.0238C18.7959 30.5826 18.7969 28.1423 18.7969 25.701C18.7969 25.5728 18.7969 25.4447 18.7969 25.2003C18.1971 25.8031 17.6774 26.3288 17.1527 26.8505C17.0115 26.9907 16.8683 27.1349 16.7061 27.2471C16.3566 27.4864 15.9341 27.4413 15.6457 27.154C15.3643 26.8746 15.3203 26.442 15.5486 26.0925C15.6207 25.9824 15.7128 25.8832 15.8069 25.7891C16.8613 24.7307 17.9167 23.6733 18.9732 22.6179C19.4017 22.1893 19.8784 22.1763 20.3039 22.5988C21.3914 23.6803 22.4739 24.7667 23.5533 25.8572C23.9809 26.2898 24.0129 26.8065 23.6534 27.167C23.299 27.5214 22.7753 27.4844 22.3437 27.0568C21.7499 26.47 21.1661 25.8732 20.5603 25.2644H20.5573Z\"\r\n fill=\"#F9F9F9\"/>\r\n </svg>\r\n </div>\r\n <div class=\"f-14 fc-black fw-normal\">\r\n <span class=\"fc-coral fw-medium\">{{ 'browse' | translate }}</span>\r\n </div>\r\n <div class=\"fs-10 fc-dark-gray\">\r\n {{ 'addMultiAttachments' | translate }}\r\n </div>\r\n </div>\r\n </section>\r\n }\r\n \r\n @if (attachments?.length) {\r\n <div\r\n class=\"table-responsive full\"\r\n cdkDropList\r\n [cdkDropListData]=\"attachments\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n >\r\n <table mat-table [dataSource]=\"dataSource\">\r\n \r\n <!-- index Column -->\r\n <ng-container matColumnDef=\"index\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ds-button\r\n [matTooltip]=\"'downloadAll' | translate\"\r\n square icon size=\"small\"\r\n (click)=\"downloadAllAttachments($event)\"\r\n class=\"icon-btn-shadow\">\r\n @if (loading) {\r\n <ds-icon class=\"sfi sfi-spinner d-inline-block spin fc-coral fs-30-imp\"></ds-icon>\r\n } @else {\r\n <ds-icon\r\n icon=\"download\"\r\n class=\"fs-20 fs-md-17 fc-purple\"></ds-icon>\r\n }\r\n </ds-button>\r\n </th>\r\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 + pageSize * (pageNumber) }}</td>\r\n </ng-container>\r\n \r\n <!-- Name Column -->\r\n <ng-container matColumnDef=\"file\">\r\n <th mat-header-cell *matHeaderCellDef>{{ 'FileName' | translate }}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <app-file-uploader\r\n [allowedExtensions]=\"allowedExtensions\"\r\n [displayedFiles]=\"[element]\"\r\n name=\"attachment\"\r\n [showActions]=\"true\"\r\n [isReadOnly]=\"true\"\r\n [customDownload]=\"customDownload\"\r\n (downloadActionClicked)=\"customDownloadAction($event)\"\r\n [multiple]=\"true\">\r\n </app-file-uploader>\r\n </td>\r\n </ng-container>\r\n \r\n <!-- Description Column -->\r\n <ng-container matColumnDef=\"description\">\r\n <th mat-header-cell *matHeaderCellDef>{{ 'FileDescription' | translate }}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <a\r\n class=\"fw-medium fc-black underline cursor-pointer fs-12\"\r\n [hidden]=\"!element?.['fileDescription']\"\r\n (click)=\"$event.stopPropagation(); fileDescriptionAnchor.popover.open()\"\r\n [satPopoverAnchor]=\"fileDescriptionPopover\"\r\n #fileDescriptionAnchor=\"satPopoverAnchor\"\r\n [matTooltip]=\"element?.['fileDescription']\">\r\n {{ element?.['fileDescription']?.length > 10 ? (element?.['fileDescription'] | slice : 0 : 10) + '....' : element?.['fileDescription'] }}\r\n </a>\r\n <sat-popover\r\n #fileDescriptionPopover\r\n [anchor]=\"fileDescriptionAnchor\"\r\n [hasBackdrop]=\"true\"\r\n [restoreFocus]=\"false\"\r\n verticalAlign=\"below\"\r\n horizontalAlign=\"center\">\r\n <div class=\"default-popover p-3 fs-14 text-break view-note-popover\">\r\n <bdi class=\"fc-black\">{{ element?.['fileDescription'] }}</bdi>\r\n </div>\r\n </sat-popover>\r\n </td>\r\n </ng-container>\r\n \r\n <!-- Comment Column -->\r\n <ng-container matColumnDef=\"comment\">\r\n <th mat-header-cell *matHeaderCellDef>{{ 'comment' | translate }}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <a\r\n class=\"fw-medium fc-black underline cursor-pointer fs-12\"\r\n [hidden]=\"!element?.['attachmentcomment']\"\r\n (click)=\"$event.stopPropagation(); commentsAnchor.popover.open()\"\r\n [satPopoverAnchor]=\"commentsPopover\"\r\n [matTooltip]=\"element?.['attachmentcomment']\"\r\n #commentsAnchor=\"satPopoverAnchor\">\r\n {{ element?.['attachmentcomment']?.length > 10 ? (element?.['attachmentcomment'] | slice : 0 : 10) + '....' : element?.['attachmentcomment'] }}\r\n </a>\r\n <sat-popover\r\n #commentsPopover\r\n [anchor]=\"commentsAnchor\"\r\n [hasBackdrop]=\"true\"\r\n [restoreFocus]=\"false\"\r\n verticalAlign=\"below\"\r\n horizontalAlign=\"center\">\r\n <div class=\"default-popover p-3 fs-14 text-break view-note-popover\">\r\n <bdi class=\"fc-black\">{{ element?.['attachmentcomment'] }}</bdi>\r\n </div>\r\n </sat-popover>\r\n </td>\r\n </ng-container>\r\n \r\n <ng-container matColumnDef=\"actions\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element; let i = index\">\r\n @if (!isReadOnly) {\r\n <td>\r\n <div class=\"d-flex gap-2\">\r\n <ds-button\r\n square\r\n icon\r\n size=\"small\"\r\n (click)=\"deleteAttachments(i, element)\"\r\n class=\"icon-btn-shadow\">\r\n <ds-icon icon=\"trash\" class=\"fs-20 fs-md-17 fc-coral\"></ds-icon>\r\n </ds-button>\r\n \r\n <ds-button\r\n square\r\n icon\r\n size=\"small\"\r\n (click)=\"editRow(element, i)\"\r\n class=\"icon-btn-shadow\">\r\n <ds-icon icon=\"pen\" class=\"fs-20 fs-md-17 fc-purple\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n </td>\r\n }\r\n </td>\r\n </ng-container>\r\n \r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n </table>\r\n \r\n <mat-paginator\r\n #paginator\r\n [pageSizeOptions]=\"[5]\"\r\n (page)=\"onPaginateChange($event)\"\r\n [length]=\"attachments.length\"\r\n [pageSize]=\"pageSize\"\r\n showFirstLastButtons></mat-paginator>\r\n </div>\r\n }\r\n \r\n @if (!isReadOnly && attachments?.length && attachments?.length < attachmentsMax) {\r\n <div class=\"text-center full mt-3\">\r\n <ds-button\r\n shape=\"{{ attachments?.length ? 'outline' : '' }}\"\r\n [ngClass]=\"{ 'full-add-btn w-100 pt-1': attachments?.length }\"\r\n (click)=\"addAttachment(); $event.stopPropagation()\">\r\n <ds-icon slot=\"prefix\" icon=\"plus\" class=\"fs-22 pb-1\"></ds-icon>\r\n {{ 'addAttachments' | translate }}\r\n </ds-button>\r\n </div>\r\n }\r\n </div>\r\n}\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Input } from '@angular/core';\r\nimport {MatRadioButton, MatRadioChange, MatRadioGroup} from '@angular/material/radio';\r\nimport {FormsModule, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport {NgSwitchCase} from \"@angular/common\";\r\nimport { Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n/**\r\n * Radio Component for selecting a single option from a list of options.\r\n * \r\n * Supports both Reactive Forms and Template-driven forms.\r\n * \r\n * Inputs:\r\n * - `options`: Accepts an array of objects used as the selection list.\r\n * - `displayedLabel`: Property name from the option object to display in the UI (default: `'description'`).\r\n * - `key`: Property name from the option object used as the value (default: `'value'`).\r\n * - `label`: Defines the label text shown above the radio buttons.\r\n * - `isReadOnly`: Disables interaction and renders the component in a read-only display mode.\r\n * - `mandatory`: Hides the \"optional\" label visually. Does not add validation.\r\n * - `required`: Hides the \"optional\" label and also adds Angular's required validator.\r\n * - `tooltip`: Displays a tooltip beside the label.\r\n *\r\n * Emits:\r\n * - The selected value is emitted as an object with `key` and `value` properties:\r\n * ```ts\r\n * { key: option[key], value: option[displayedLabel] }\r\n * ```\r\n *\r\n * Example usage:\r\n * ```html\r\n*<app-radio\r\n* class=\"section-item\" \r\n* [isReadOnly]=\"isReadOnly\" \r\n* formControlName=\"radio\" \r\n* [options]=\"[]\" \r\n* label=\"Radio\"\r\n*>\r\n*</app-radio>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'app-radio',\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n MatRadioButton,\r\n MatRadioGroup,\r\n FormsModule,\r\n NgSwitchCase,\r\n ...Shareds\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RadioComponent),\r\n multi: true,\r\n },\r\n ]\r\n})\r\nexport class RadioComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() options: Array<Record<string, any>> = [];\r\n @Input() displayedLabel: string= 'description';\r\n @Input() key: string = 'value';\r\n destroyRef = inject(DestroyRef);\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n\r\n onChange(event: MatRadioChange) {\r\n const controlValue = {key: event?.value, value: event?.source?.ariaLabel};\r\n this.setValue(controlValue);\r\n if(this.control && !this.control.touched) this.onTouchedFn();\r\n }\r\n}\r\n","@if(!isReadOnly){\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-radio-group\r\n [aria-label]=\"label\"\r\n [value]=\"control?.value?.key\"\r\n (change)=\"onChange($event)\"\r\n >\r\n @for(option of options; track $index){\r\n <mat-radio-button\r\n [disabled]=\"isReadOnly || isDisabled\"\r\n [value]=\"option[key]\"\r\n [aria-label]=\"option[displayedLabel]\"\r\n >\r\n <span class=\"fs-12 fw-medium fc-onyx cursor-pointer\">\r\n {{ option[displayedLabel] }}\r\n </span>\r\n </mat-radio-button>\r\n }\r\n </mat-radio-group>\r\n\r\n}@else if(isReadOnly && control.value) {\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [insideTable]=\"insideTable\"\r\n [label]=\"label\"\r\n [value]=\"control.value?.value\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Input, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\n\r\nimport { FormLabelComponent } from '../form-label/form-label.component';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { InfoItemComponent } from '../info-item/info-item.component';\r\nimport { ValidationErrorsComponent } from '../validation-errors/validation-errors.component';\r\nimport { TranslatePipe } from '../../../../pipes/translate.pipe';\r\n\r\ninterface KeyValuePair {\r\n key: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * Multi-select dropdown component for selecting multiple options.\r\n * \r\n * Supports both Reactive Forms and Template-driven forms.\r\n * \r\n * Inputs:\r\n * - `options`: Accepts an array of objects used as the selection list.\r\n * - `displayedLabel`: Property name from the option object to display in the UI (default: `'description'`).\r\n * - `key`: Property name from the option object used as the value (default: `'value'`).\r\n * - `label`: Defines the label text shown above the multi-select field.\r\n * - `placeholder`: Sets the placeholder text when no value is selected.\r\n * - `isReadOnly`: Disables interaction and renders the component in a read-only display mode.\r\n * - `mandatory`: Hides the \"optional\" label visually. Does not add validation.\r\n * - `required`: Hides the \"optional\" label and also adds Angular's required validator.\r\n * - `tooltip`: Displays a tooltip beside the label.\r\n * - `loading`: Shows a loading spinner inside the dropdown when set to true.\r\n * - `customErrorMessages`: Custom messages for validation errors.\r\n *\r\n * Emits:\r\n * - The selected value is emitted as an array of objects:\r\n * ```ts\r\n * [{ key: option[key], value: option[displayedLabel] }, ...]\r\n * ```\r\n *\r\n * Example usage:\r\n * ```html\r\n * <app-multiselect\r\n * class=\"section-item\"\r\n * formControlName=\"multi\"\r\n * [options]=\"[]\"\r\n * label=\"Multi select\"\r\n * placeholder=\"Select from here\"\r\n * [isReadOnly]=\"false\"\r\n * [mandatory]=\"true\"\r\n * >\r\n * </app-multiselect>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'app-multiselect',\r\n templateUrl: './multiselect.component.html',\r\n styleUrls: ['./multiselect.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n CommonModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n FormLabelComponent,\r\n InfoItemComponent,\r\n ValidationErrorsComponent,\r\n TranslatePipe\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MultiselectComponent),\r\n multi: true,\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n\r\nexport class MultiselectComponent<Type> extends ControlValueAccessorDirective<Type> implements OnInit {\r\n\r\n @Input() options: any[] = [];\r\n @Input() displayedLabel: string= 'description';\r\n @Input() key: string = 'value';\r\n private cdRef = inject(ChangeDetectorRef);\r\n private destroyRef = inject(DestroyRef);\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n if(!this.isReadOnly){\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n \r\n if (this.control?.valueChanges) {\r\n this.control.valueChanges\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.cdRef.markForCheck());\r\n }\r\n }\r\n\r\n }\r\n\r\n selectionChange(event: MatSelectChange<any[]>){\r\n const selectedOptions: KeyValuePair[] = event.source.options.filter(op => op.selected).map(op => ({key: op.value, value: op.viewValue}));\r\n this.setValue(selectedOptions);\r\n if(!this.control.touched) this.control.markAsTouched();\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n mapKeyValuePairsToKeys(value: KeyValuePair[] | null): string[] {\r\n if(!value) return [];\r\n return value.map(item => item.key);\r\n }\r\n\r\n}\r\n","@if (isReadOnly) {\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [value]=\"control?.value\"\r\n type=\"multipleSelect\"\r\n ></app-info-item>\r\n} @else {\r\n @if(label){\r\n <app-form-label\r\n [label]=\"label\"\r\n [optional]=\"required || mandatory ? false : true\"\r\n [tooltip]=\"tooltip\"\r\n ></app-form-label>\r\n }\r\n <mat-form-field>\r\n <mat-select \r\n (selectionChange)=\"selectionChange($event)\" \r\n [value]=\"mapKeyValuePairsToKeys(value)\" \r\n multiple \r\n [placeholder]=\"placeholder || (label ? ('select' | translate) + ' ' + label : '')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <mat-select-trigger>\r\n {{value?.[0]?.value || ''}}\r\n @if (value?.length > 1) {\r\n <span class=\"additional-selection\">\r\n (+{{value.length - 1}} {{value.length === 2 ? ('other' | translate) : ('others' | translate)}})\r\n </span>\r\n }\r\n </mat-select-trigger>\r\n @for (item of options; track item) {\r\n <mat-option [value]=\"item[key]\">{{item[displayedLabel]}}</mat-option>\r\n }\r\n </mat-select>\r\n @if (loading) {\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n }\r\n </mat-form-field>\r\n @if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n DestroyRef,\r\n forwardRef,\r\n inject,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { MatFormField, MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInput } from \"@angular/material/input\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { MatTimepickerModule } from \"@angular/material/timepicker\";\r\nimport { ValidationErrorsComponent } from \"../validation-errors/validation-errors.component\";\r\nimport { InfoItemComponent } from \"../info-item/info-item.component\";\r\nimport { FormLabelComponent } from \"../form-label/form-label.component\";\r\nimport { ControlValueAccessorDirective } from \"../control-value-accessor.directive\";\r\nimport { provideNativeDateAdapter } from \"@angular/material/core\";\r\nimport { TranslatePipe } from \"../../../../pipes/translate.pipe\";\r\n\r\n/**\r\n * Time picker component for selecting a time value.\r\n *\r\n * Supports both Reactive Forms and Template-driven forms.\r\n *\r\n * Inputs:\r\n * - `placeholder`: Placeholder text for the input field.\r\n * - `isReadOnly`: Renders the component in a read-only display mode.\r\n * - `label`: Text label displayed above the time picker.\r\n * - `required`: Hides the \"optional\" label and adds Angular's required validator.\r\n * - `mandatory`: Hides the \"optional\" label visually without adding validation.\r\n * - `customErrorMessages`: Object with custom validation error messages.\r\n * - `insideTable`: If true, renders styles suitable for inside-table use.\r\n *\r\n * Emits:\r\n * - The selected time is emitted as an ISO string (e.g. `\"2025-06-29T10:30:00.000Z\"`).\r\n *\r\n * Example usage:\r\n * ```html\r\n * <app-timepicker\r\n * formControlName=\"appointmentTime\"\r\n * label=\"Choose time\"\r\n * placeholder=\"Select time\"\r\n * [mandatory]=\"true\"\r\n * >\r\n * </app-timepicker>\r\n * ```\r\n */\r\n@Component({\r\n selector: \"app-timepicker\",\r\n templateUrl: \"./time-picker.component.html\",\r\n styleUrls: [\"./time-picker.component.scss\"],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n CommonModule,\r\n MatFormFieldModule,\r\n MatTimepickerModule,\r\n FormLabelComponent,\r\n InfoItemComponent,\r\n ValidationErrorsComponent,\r\n MatFormField,\r\n MatInput,\r\n FormsModule,\r\n TranslatePipe\r\n ],\r\n providers: [\r\n provideNativeDateAdapter(),\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TimepickerComponent),\r\n multi: true,\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class TimepickerComponent<Type>\r\n extends ControlValueAccessorDirective<Type>\r\n implements OnInit\r\n{\r\n private cdRef = inject(ChangeDetectorRef);\r\n private destroyRef = inject(DestroyRef);\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n if (!this.isReadOnly) {\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((res) => {\r\n if (this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n if (this.control?.valueChanges) {\r\n this.control.valueChanges\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.cdRef.markForCheck());\r\n }\r\n }\r\n }\r\n\r\n timePickerChange(event: Date | null): void {\r\n if(this.control.hasError('invalidTimeFormat')) this.control.setErrors({ invalid: null });\r\n try {\r\n const newValue: string | null = event instanceof Date ? event.toISOString() : null;\r\n this.setValue(newValue);\r\n } catch (error){\r\n this.control.setErrors({ invalidTimeFormat: true });\r\n }\r\n }\r\n}\r\n","@if (isReadOnly) {\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [value]=\"control?.value\"\r\n type=\"time\"\r\n ></app-info-item>\r\n} @else { \r\n @if(label){\r\n <app-form-label\r\n [label]=\"label\"\r\n [optional]=\"required || mandatory ? false : true\"\r\n [tooltip]=\"tooltip\"\r\n ></app-form-label>\r\n }\r\n <mat-form-field>\r\n <input\r\n matInput\r\n [matTimepicker]=\"timepicker\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"timePickerChange($event)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [placeholder]=\"placeholder || (label ? ('select' | translate) + ' ' + label : '')\"\r\n [disabled]=\"isDisabled\"\r\n />\r\n <mat-timepicker #timepicker (closed)=\"onTouchedFn()\" />\r\n <mat-timepicker-toggle [for]=\"timepicker\" matSuffix />\r\n </mat-form-field>\r\n @if (control.touched) {\r\n <mat-error\r\n app-validation-errors\r\n [errors]=\"control.errors\"\r\n [customErrorMessages]=\"customErrorMessages\"\r\n >\r\n </mat-error>\r\n } \r\n}\r\n","export function mapTo(path: string, source: any, allowUndefined = false, allowArrayWithSingleValue = false): any {\r\n let toBeReturned: any;\r\n if (source) {\r\n const attributes: string[] = path.split('.');\r\n toBeReturned = source[attributes[0]];\r\n for (let i = 1; i < attributes.length && toBeReturned != null; i++) toBeReturned = toBeReturned[attributes[i]];\r\n }\r\n\r\n\r\n // Check if the value is a valid date\r\n if (toBeReturned instanceof Date) {\r\n return toBeReturned;\r\n }\r\n\r\n // Return null for undefined or missing date values\r\n if (toBeReturned === undefined || toBeReturned === null) {\r\n return allowUndefined ? toBeReturned : null;\r\n }\r\n\r\n // Return '-' for other missing values\r\n let toReturn = toBeReturned || toBeReturned === 0 ? toBeReturned : '-';\r\n\r\n\r\n // // to make sure that if the returned data is undefined, we will override it by -\r\n // let toReturn = toBeReturned || toBeReturned === 0 ? toBeReturned : allowUndefined ? toBeReturned : '-';\r\n\r\n if (Array.isArray(toReturn) && toReturn.length == 1 && !allowArrayWithSingleValue) {\r\n toReturn = toReturn[0];\r\n }\r\n\r\n return toReturn;\r\n}","export enum Colors {\r\n RED = '#CA102F',\r\n GREEN = '#02C389',\r\n}","export enum Events {\r\n SCROLL = 'scroll',\r\n ENTER = 'enter',\r\n}","export enum Actions {\r\n VIEW = 'view',\r\n COPY = 'copy',\r\n EDIT = 'edit',\r\n CLOSE = 'close',\r\n DELETE = 'delete',\r\n DELETEPENDING = 'deletePendingContract',\r\n CHART = 'chart',\r\n APPROVE = 'approve',\r\n REJECT = 'reject',\r\n DETAILS = 'Details',\r\n START = 'Start',\r\n PREPARE = 'Prepare',\r\n CUSTOMACTION = 'customAction',\r\n CUSTOMACTIONMANAGE = 'customActionManage',\r\n CUSTOMACTIONEXTEND = 'customActionExtend',\r\n CUSTOMACTIONDETAILS = 'customActionDetails',\r\n STATUS = 'status',\r\n ALLOCATE = 'allocate'\r\n}\r\n","import {Directive, HostListener, Input} from '@angular/core';\r\nimport {Router} from '@angular/router';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[appSkipLocation]'\r\n})\r\nexport class SkipLocationDirective {\r\n @Input() appSkipLocation: any;\r\n\r\n constructor(private router: Router) {\r\n }\r\n\r\n @HostListener('click')\r\n onClick() {\r\n this.router.navigate([this.appSkipLocation], {skipLocationChange: true});\r\n }\r\n}\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from '@angular/forms';\r\nimport {MatDialog} from '@angular/material/dialog';\r\nimport {MatPaginator, PageEvent} from '@angular/material/paginator';\r\nimport {MatSort, Sort} from '@angular/material/sort';\r\nimport {\r\n MatCell,\r\n MatCellDef,\r\n MatColumnDef,\r\n MatHeaderCell,\r\n MatHeaderCellDef,\r\n MatHeaderRow,\r\n MatHeaderRowDef,\r\n MatRow,\r\n MatRowDef,\r\n MatTable,\r\n MatTableDataSource\r\n} from '@angular/material/table';\r\nimport {debounceTime, fromEvent, Subject} from 'rxjs';\r\n\r\nimport {DatePipe, JsonPipe, NgClass, NgFor, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault} from \"@angular/common\";\r\nimport {MatCheckbox} from \"@angular/material/checkbox\";\r\nimport {MatTooltip} from \"@angular/material/tooltip\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\nimport {MatSlideToggle} from \"@angular/material/slide-toggle\";\r\nimport {RouterLink} from \"@angular/router\";\r\n\r\nimport {ActionModel} from '../../../interfaces/action.interface';\r\nimport {mapTo} from '../../../helpers/shared.helper';\r\nimport {CustomSearchableComponent, InputComponent} from '../form-field';\r\nimport {Colors} from '../../../enums/colors.enum';\r\nimport {Events} from '../../../enums/events.enum';\r\nimport {Actions} from '../../../enums/actions.enum';\r\nimport {SkipLocationDirective} from '../../../directives/skip-location.directive';\r\nimport { CoreI18nService } from '../../../services';\r\nimport { TranslatePipe } from '../../../pipes/translate.pipe';\r\n\r\nconst matModules = [\r\n MatTable,\r\n MatColumnDef, MatHeaderCellDef,\r\n MatCheckbox, NgSwitch, MatCellDef, NgSwitchCase,\r\n NgClass, DatePipe, InputComponent, ReactiveFormsModule, MatTooltip,\r\n MatMenu, MatSlideToggle, MatMenuTrigger, MatMenuItem, MatSort, MatHeaderRowDef, MatHeaderRow, MatRow, MatRowDef,\r\n MatHeaderCell, MatCell, CustomSearchableComponent\r\n]\r\n\r\n@Component({\r\n selector: 'app-table',\r\n standalone: true,\r\n imports: [NgFor, NgIf, matModules, FormsModule, NgSwitchDefault, SkipLocationDirective, MatPaginator, TranslatePipe],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class TableComponent implements OnInit {\r\n @ViewChild('table', {read: ElementRef}) public matTableRef!: ElementRef;\r\n control = new FormControl(null);\r\n serviceDetailForm!: FormGroup;\r\n @Input() columns: any;\r\n @Input() isError: any = false;\r\n @Input() isLoading: any = false;\r\n @Input() customMessage!: string;\r\n @Input() columnsConfig: any;\r\n @Input() loadData: any;\r\n @Input() actions: ActionModel[] = [];\r\n @Input() className = '';\r\n @Input() totalElements: number = 0;\r\n @Input() showPagination: boolean = false;\r\n @Input() pageIndex: number = 0;\r\n @Input() pageSize: number = 15;\r\n @Input() sortDisabled: boolean = false;\r\n @Input() useScroll: boolean = false;\r\n @Output() serviceRowSelect = new EventEmitter<any>();\r\n @Output() selectPage = new EventEmitter<any>();\r\n @Output() rowClicked = new EventEmitter<any>();\r\n @Output() autoCompleteValueSelected = new EventEmitter<any>();\r\n @Output() selectValueSelected = new EventEmitter<any>();\r\n @Output() sortChanged = new EventEmitter<Sort>();\r\n @Output() inputCellChanged = new EventEmitter<any>()\r\n @Output() pageScroll = new EventEmitter<any>();\r\n @Output() toggleChanged = new EventEmitter<any>();\r\n @Output() eventClicked = new EventEmitter<any>();\r\n public dataSource = new MatTableDataSource<any>();\r\n @ViewChild('tableSort') tableSort = new MatSort();\r\n localControl = new FormControl()\r\n lang: string = '';\r\n spans = [];\r\n ctrl = new FormControl();\r\n protected readonly Actions = Actions;\r\n private unSubscribe = new Subject;\r\n @Input() hasPaginator = false;\r\n @Input() currentPage = 0;\r\n @Output() pageChange = new EventEmitter<any>();\r\n form: FormGroup;\r\n\r\n constructor(\r\n public dialog: MatDialog,\r\n public i18Service: CoreI18nService,\r\n private fb: FormBuilder\r\n ) {}\r\n\r\n @Input() set keyWord(value: string) {\r\n this.applyFilter(value)\r\n };\r\n\r\n _rows: any;\r\n\r\n get rows(): any {\r\n return this._rows;\r\n }\r\n\r\n @Input() set rows(value: any) {\r\n this._rows = value;\r\n this.dataSource = new MatTableDataSource(this.rows);\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log(this.rows)\r\n }\r\n\r\n pageChanged(event: PageEvent) {\r\n this.pageSize = event.pageSize;\r\n this.currentPage = event.pageIndex;\r\n this.pageChange.emit({pageSize: this.pageSize, pageIndex: this.currentPage})\r\n }\r\n\r\n ngAfterViewInit() {\r\n // this.tableSort.disableClear = true;\r\n // this.tableSort.disabled = this.sortDisabled;\r\n this.dataSource.sort = this.tableSort;\r\n //this.dataSource.paginator = this.paginator;\r\n this.handleScroll()\r\n }\r\n\r\n applyFilter(keyWord: string) {\r\n this.dataSource.filter = keyWord\r\n }\r\n\r\n truncateName(text: string) {\r\n if (text) {\r\n let characters = text.match(/\\b(\\w)/g);\r\n if (characters) {\r\n return characters.join('');\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n sortChange(sortState: Sort) {\r\n const data = this.dataSource.data.slice();\r\n if (!sortState.active || sortState.direction === '') {\r\n this.dataSource.data = data;\r\n return;\r\n }\r\n this.sortChanged.emit(sortState);\r\n }\r\n\r\n mapText(path: string, source: any) {\r\n return mapTo(path, source);\r\n }\r\n\r\n getSlaColor(min: number, max: number): string {\r\n const slaColor = min >= max ? Colors.RED : Colors.GREEN;\r\n return slaColor\r\n }\r\n\r\n\r\n clickRow(row: any) {\r\n this.rowClicked.emit(row)\r\n }\r\n\r\n emitElement(row: any) {\r\n this.eventClicked.emit(row)\r\n }\r\n\r\n toggleValueChange(e: any, element?: any) {\r\n this.toggleChanged.emit({e, element})\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubscribe.next;\r\n this.unSubscribe.complete();\r\n }\r\n\r\n\r\n parseInt(value: string) {\r\n return parseInt(value)\r\n }\r\n\r\n private handleScroll() {\r\n fromEvent(this.matTableRef.nativeElement, Events.SCROLL)\r\n .pipe(debounceTime(200))\r\n .subscribe((e: any) => this.onTableScroll(e));\r\n }\r\n\r\n viewForm(url: string) {\r\n window.open('/group/i-gate/wm-bpm/forms?formId=' + url);\r\n }\r\n\r\n private onTableScroll(e: any): void {\r\n const tableViewHeight = e.target.offsetHeight // viewport: ~500px\r\n const tableScrollHeight = e.target.scrollHeight // length of all table\r\n const scrollLocation = e.target.scrollTop; // how far user scrolled\r\n const scrollDownLimit = tableScrollHeight - tableViewHeight;\r\n const isScrollingVertically = e.target.scrollHeight > e.target.offsetHeight;\r\n if (isScrollingVertically && (scrollLocation + 2) > scrollDownLimit) {\r\n this.pageScroll.emit(true)\r\n }\r\n }\r\n}\r\n","<div #table class=\"table-container table-responsive sticky-table\">\r\n @if (!isLoading) {\r\n <ng-container>\r\n @if (dataSource.filteredData?.length! > 0) {\r\n <table #tableSort=\"matSort\" (matSortChange)=\"sortChange($event)\" [dataSource]=\"dataSource\" class=\"primary-table {{ className }}\" mat-table matSort>\r\n @for (column of columns; track $index; let i = $index) {\r\n <ng-container>\r\n <!-- Add a check to ensure 'columnsConfig' and 'columnsConfig[i]' are defined before using them -->\r\n\r\n @if (columnsConfig && columnsConfig[i]) {\r\n <ng-container>\r\n <ng-container [matColumnDef]=\"column\" [stickyEnd]=\"!!columnsConfig[i].stickyEnd!\">\r\n @if (!columnsConfig[i].notSortable) {\r\n <ng-container>\r\n <th *matHeaderCellDef [ngClass]=\"{ 'text-end': columnsConfig[i].type === 'actions' }\" mat-header-cell mat-sort-header>\r\n @if (columnsConfig[i].type !== 'checkbox' || ( this.columnsConfig[i]?.type! == 'actions' && this.columnsConfig[i]?.actions?.length === 0)) {\r\n <ng-container>\r\n @if (!(this.columnsConfig[i].type == 'actions' && this.columnsConfig[i].actions.length === 0)) {\r\n <div class=\"d-flex align-items-center th-center\">\r\n <div class=\"mx-1 fc-{{ columnsConfig[i].fontColor }}\">\r\n {{ columnsConfig[i].label | translate }}\r\n </div>\r\n @if (columnsConfig[i].slaMax) {\r\n <ds-sla\r\n [canvasScale]=\"'40'\"\r\n [innerLineWidth]=\"'3'\"\r\n [maxValue]=\"columnsConfig[i].slaMax\"\r\n [outerLineColor]=\"'limegreen'\"\r\n [outerLineWidth]=\"'3'\"\r\n [value]=\"columnsConfig[i].slaValue\"\r\n class=\"table-header-sla my-1\"\r\n ></ds-sla>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n } @if (columnsConfig[i].type == 'checkbox') {\r\n <mat-checkbox class=\"checkbox\"></mat-checkbox>\r\n }\r\n </th>\r\n </ng-container>\r\n } @if (columnsConfig[i].notSortable) {\r\n <ng-container>\r\n <th *matHeaderCellDef [ngClass]=\"{ 'text-end': columnsConfig[i].type === 'actions' }\" mat-header-cell>\r\n <div class=\"d-flex align-items-center th-center\">\r\n <div class=\"mx-1\">\r\n {{ columnsConfig[i].label | translate }}\r\n </div>\r\n @if (columnsConfig[i].slaMax) {\r\n <ds-sla\r\n [canvasScale]=\"'50'\"\r\n [innerLineWidth]=\"'3'\"\r\n [maxValue]=\"columnsConfig[i].slaMax\"\r\n [outerLineColor]=\"'limegreen'\"\r\n [outerLineWidth]=\"'3'\"\r\n [value]=\"columnsConfig[i].slaValue\"\r\n class=\"table-header-sla my-1\"\r\n ></ds-sla>\r\n }\r\n </div>\r\n </th>\r\n </ng-container>\r\n }\r\n\r\n <td *matCellDef=\"let element; let j = index\" mat-cell>\r\n <ng-container [ngSwitch]=\"columnsConfig[i].type\">\r\n <!-- <a target=\"_blank\"-->\r\n <!-- routerLink=\"/inbox\" [queryParams]=\"{ id: element[column] }\"-->\r\n <!-- class=\"fc-black text-decoration-underline fw-medium\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'link'\">-->\r\n <!-- {{ element[column] }}-->\r\n <!-- </a>-->\r\n <span *ngSwitchCase=\"'serial'\" [ngClass]=\"columnsConfig[i].type\" class=\"fc-coral fw-medium\">\r\n {{ j+1 }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'formId'\" (click)=\"viewForm(element[column])\" [ngClass]=\"columnsConfig[i].type\" class=\"fc-coral cursor-pointer text-decoration-underline fw-medium\">\r\n {{ element[column] }}\r\n </span>\r\n <!-- <span\r\n *ngSwitchCase=\"'link'\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"fc-black text-decoration-underline fw-medium\"\r\n >\r\n {{ element[column] }}\r\n </span>-->\r\n\r\n <span *ngSwitchCase=\"'linkWithIcon'\" [appSkipLocation]=\"columnsConfig[i].link\" [ngClass]=\"columnsConfig[i].type\" class=\"fc-black text-decoration-underline fw-medium\">\r\n <ds-icon class=\"fs-20 fc-black\" icon=\" {{ columnsConfig[i].icon }}\"></ds-icon>\r\n <span class=\"fs-13 fc-coral px-1 text-decoration-underline\">{{ element[column] }}</span>\r\n </span>\r\n <span *ngSwitchCase=\"'underLineWithIcon'\" [ngClass]=\"columnsConfig[i].type\" class=\"fc-black text-decoration-underline fw-medium\">\r\n <ds-icon class=\"fs-20 fc-black\" icon=\" {{ columnsConfig[i].icon }}\"></ds-icon>\r\n <span class=\"fs-13 fc-coral px-1 text-decoration-underline\">{{ element[column] }}</span>\r\n </span>\r\n <mat-checkbox *ngSwitchCase=\"'checkbox'\" checked=\"{{ columnsConfig[i].checked }}\" class=\"checkbox\" disabled=\"{{ columnsConfig[i].disabled }}\"> </mat-checkbox>\r\n <span *ngSwitchCase=\"'ServiceDetails'\" [ngClass]=\"columnsConfig[i].type\" class=\"cursor-pointer\">\r\n {{ element[column] }}\r\n </span>\r\n <span *ngSwitchCase=\"'dateOnly'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center gap-2 text-nowrap\">\r\n <span class=\"sfi sfi-calendar-o fc-coral fs-18\"></span>\r\n {{ element[column] | date : \"MMM d, y\" }}\r\n </span>\r\n <span *ngSwitchCase=\"'Search'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center\">\r\n <app-input [formControl]=\"ctrl\" [placeholder]=\"'Search for item '\" [showLabel]=\"false\" class=\"\" className=\"no-padding \" prefix=\"sfi-search fs-16\" type=\"text\"> </app-input>\r\n </span>\r\n <span *ngSwitchCase=\"'Number'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center\">\r\n <app-input [formControl]=\"ctrl\" [placeholder]=\"'number'\" [showLabel]=\"false\" class=\"\" className=\"no-padding\" type=\"text\"> </app-input>\r\n </span>\r\n <span *ngSwitchCase=\"'dateFromTo'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center\">\r\n <span class=\"sfi sfi-clock fc-coral\"></span>\r\n <span class=\"mx-2\">\r\n {{ element?.date.from }} @if (element?.date.to) {\r\n <ng-container> : {{ element?.date.to }} </ng-container>\r\n }\r\n </span>\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'dateTime'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center gap-1 flex-wrap\">\r\n <span class=\"sfi sfi-calendar-o fc-dark-gray fs-20\"></span>\r\n {{ element[column] | date : \"MMM d, y, h:mm a\" }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'singleTimeOnly'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center gap-1 flex-wrap\">\r\n {{ element[column] | date : \"h:mm a\" }}\r\n </span>\r\n <!--dir=\"ltr\" and text-left for English text on ar page -->\r\n <span *ngSwitchCase=\"'timeOnly'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center gap-1 flex-wrap text-nowrap text-left\" dir=\"ltr\">\r\n <!-- -->\r\n {{ mapText(columnsConfig[i].firstVal, element[column]) | date : \"h:mm a\" }} @if (mapText(columnsConfig[i].secondVal, element[column])) {\r\n <ng-container>\r\n - {{ mapText(columnsConfig[i].secondVal, element[column]) | date : \"h:mm a\" }}\r\n </ng-container>\r\n }\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'multipleRows'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center gap-1 flex-wrap\">\r\n <!-- -->\r\n @if (!element[column].monthlyFineEscalation) {\r\n <div>\r\n {{ element[column].fixedFineValue }} {{ \"global.SAR\" | translate }}\r\n </div>\r\n } @if (element[column].monthlyFineEscalation) {\r\n <div>\r\n <br />\r\n {{ element[column].firstTimeFine }} {{ \"global.SAR\" | translate }} <br />\r\n <br />\r\n {{ element[column].secondTimeFine }} {{ \"global.SAR\" | translate }} <br />\r\n <br />\r\n {{ element[column].thirdTimeFine }} {{ \"global.SAR\" | translate }} <br />\r\n <br />\r\n </div>\r\n }\r\n </span>\r\n\r\n <div *ngSwitchCase=\"'sla'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center\">\r\n <!-- <app-sla [value]=\"element?.SLA.value\" [maxValue]=\"element?.SLA.max\" [canvasScale]=\"38\" -->\r\n <!-- class=\"font-9 fw-medium\" [outerLineColor]=\"getSlaColor(element?.SLA.value, element?.SLA.max)\">-->\r\n <!-- </app-sla>-->\r\n\r\n <ds-sla\r\n [attr.outerLineColor]=\"\r\n getSlaColor(element?.SLA.value, element?.SLA.max)\r\n \"\r\n [canvasScale]=\"'55'\"\r\n [innerLineWidth]=\"'3'\"\r\n [maxValue]=\"element?.SLA?.max\"\r\n [outerLineWidth]=\"'3'\"\r\n [value]=\"element?.SLA?.value\"\r\n ></ds-sla>\r\n </div>\r\n <div *ngSwitchCase=\"'slaProgress'\">\r\n <!-- <mat-sp-->\r\n\r\n @if (element[column]?.percentage >= 0) {\r\n <ds-sla\r\n [canvasScale]=\"'55'\"\r\n [customValue]=\"element[column]?.percentage + '%'\"\r\n [innerLineWidth]=\"'3'\"\r\n [maxValue]=\"'100'\"\r\n [outerLineColor]=\"\r\n getSlaColor(element[column]?.percentage, 100)\r\n \"\r\n [outerLineWidth]=\"'3'\"\r\n [value]=\"element[column]?.percentage\"\r\n ></ds-sla>\r\n } @else {\r\n <ng-template>Not started</ng-template>\r\n }\r\n </div>\r\n <div *ngSwitchCase=\"'Priority'\" [ngClass]=\"columnsConfig[i].type\" class=\"{{ element[column] }}\">\r\n {{ element[column] }}\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'serviceStatus'\" [ngClass]=\"columnsConfig[i].type\" class=\"{{ element[column] }}\">\r\n <span [ngClass]=\"element[column] == 'FALSE' ? 'green' : 'red'\" class=\"dot-status\"></span>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'image'\" [ngClass]=\"columnsConfig[i].type\" class=\"img-card table-img\">\r\n <img [src]=\"element?.image\" alt=\"\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" />\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'employee'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-flex align-items-center gap-2 text-nowrap\">\r\n <ds-avatar [image]=\"'https://igateapp.stc.com.sa'+element[column]?.['imageUrl']\" size=\"x-small\"> </ds-avatar>\r\n <span>{{ (element[column]?.['name']) }}</span>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'progress_group'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-flex gap-1\">\r\n <ng-container *ngFor=\"let item of element[column]\">\r\n <div class=\"progress-container default-progress medium radius-0\" matTooltip=\"Team assignment {{ item.value }}%\" matTooltipPosition=\"below\">\r\n <div [style.width.%]=\"item.value\" class=\"progress-bar bg-color-{{ item.color }}\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngSwitchCase=\"'input'\" [ngClass]=\"columnsConfig[i].type\" class=\"\">\r\n <app-input\r\n (input)=\"inputCellChanged.emit({element,column,i})\"\r\n [(ngModel)]=\"element[column]\"\r\n [min]=\"0\"\r\n [placeholder]=\"element[column]\"\r\n class=\"w-100\"\r\n className=\" no-padding w-100\"\r\n type=\"number\"\r\n value=\"{{ element[column] }}\"\r\n >\r\n </app-input>\r\n </div>\r\n <div *ngSwitchCase=\"'autoComplete'\"></div>\r\n <div *ngSwitchCase=\"'select'\" [ngClass]=\"columnsConfig[i].type\" class=\"\">\r\n <app-custom-searchable\r\n (selectedValue)=\"selectValueSelected.emit($event)\"\r\n [isSearchable]=\"columnsConfig[i].config?.isSearchable\"\r\n [key]=\"columnsConfig[i]?.key\"\r\n [displayedLabel]=\"columnsConfig[i]?.displayedLable\"\r\n [options]=\"columnsConfig[i]?.options\"\r\n [postKey]=\"columnsConfig[i]?.postKey\"\r\n [showLabel]=\"false\"\r\n className=\"no-padding w-100\"\r\n >\r\n </app-custom-searchable>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'status'\" [ngClass]=\"'New' + columnsConfig[i].type\" class=\"d-flex align-items-center gap-2\">\r\n @if (element[column]) {\r\n <ds-status [status]=\"element[column]?.status\" class=\"fs-12\">\r\n {{ element[column]?.title | translate }}\r\n </ds-status>\r\n } @if (element[column]?.reason) {\r\n <span\r\n (click)=\"$event.stopPropagation()\"\r\n [matMenuTriggerFor]=\"reasonMenu\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{\r\n columnsConfig[i].type\r\n }} fc-red underline cursor-pointer\"\r\n >\r\n Show reason\r\n </span>\r\n }\r\n\r\n <mat-menu #reasonMenu=\"matMenu\" class=\"p-4 text-center\">\r\n <span class=\"fs-14\">\r\n {{ element[column]?.reason }}\r\n </span>\r\n </mat-menu>\r\n </div>\r\n <div *ngSwitchCase=\"'toggle'\" [ngClass]=\"columnsConfig[i].type\">\r\n <mat-slide-toggle (change)=\"toggleValueChange($event, element)\" [checked]=\"element[column] == 1\" [disabled]=\"false\"></mat-slide-toggle>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'customToggle'\" [ngClass]=\"columnsConfig[i].type\">\r\n <mat-slide-toggle (change)=\"toggleValueChange($event, element)\" [checked]=\"element[column] == 7\" [disabled]=\"element[column] != 1\"></mat-slide-toggle>\r\n </div>\r\n <div *ngSwitchCase=\"'meetingStatus'\" [ngClass]=\"columnsConfig[i].type\" class=\"{{ columnsConfig[i].type }}\">\r\n @if (element[column].label == 'Finished') {\r\n <span class=\" {{ element[column].label }} status \">\r\n {{ element[column].label }}\r\n </span>\r\n } @if (element[column].label != 'Finished') {\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"Finished d-flex flex-column align-items-center justify-content-center py-1 fc-black\">\r\n <span class=\"fs-11 fw-medium mb-1\"> {{ element[column].hours }}</span>\r\n <span class=\"fs-10 fw-light\">HRS</span>\r\n </div>\r\n <div class=\"Finished d-flex flex-column align-items-center justify-content-center py-1 fc-black\">\r\n <span class=\"fs-11 fw-medium mb-1\"> {{ element[column].min }}</span>\r\n <span class=\"fs-10 fw-light\">MINS</span>\r\n </div>\r\n <div class=\"Finished d-flex flex-column align-items-center justify-content-center py-1 fc-black\">\r\n <span class=\"fs-11 fw-medium mb-1\"> {{ element[column].sec }}</span>\r\n <span class=\"fs-10 fw-light\">SECS</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <span\r\n *ngSwitchCase=\"'number'\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{ columnsConfig[i].type }} {{\r\n element[column] ? 'underline' : ''\r\n }}\"\r\n >\r\n {{ element[column] ? element[column] : 0 }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'currency'\" [ngClass]=\"columnsConfig[i].type\" class=\"{{ columnsConfig[i].type }}\">\r\n {{ element[column] ? parseInt(element[column]).toFixed(2) + (columnsConfig[i].currency | translate) : \"-\" }}\r\n </span>\r\n <span *ngSwitchCase=\"'active'\" [ngClass]=\"columnsConfig[i].type\" class=\"{{ columnsConfig[i].type }}\">\r\n <ds-icon [ngClass]=\"element[column] ? 'fc-green' : 'fc-gray'\" icon=\"check-circle-f fs-30\"></ds-icon>\r\n </span>\r\n <div\r\n *ngSwitchCase=\"'sync'\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{\r\n columnsConfig[i].type\r\n }} d-flex align-items-center gap-2\"\r\n >\r\n <svg fill=\"none\" height=\"19\" viewBox=\"0 0 18 19\" width=\"18\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M14.25 13.2604C13.9425 13.2604 13.6875 12.9913 13.6875 12.6667V5.14583C13.6875 4.59958 13.2675 4.15625 12.75 4.15625H8.625C8.3175 4.15625 8.0625 3.88708 8.0625 3.5625C8.0625 3.23792 8.3175 2.96875 8.625 2.96875H12.75C13.89 2.96875 14.8125 3.9425 14.8125 5.14583V12.6667C14.8125 12.9913 14.5575 13.2604 14.25 13.2604Z\"\r\n fill=\"#FF375E\"\r\n />\r\n <path\r\n d=\"M10.5 6.13549C10.3725 6.13549 10.245 6.088 10.14 6.00092L7.88999 4.02175C7.76249 3.91092 7.6875 3.74465 7.6875 3.56257C7.6875 3.38048 7.76249 3.22214 7.88999 3.10339L10.14 1.12422C10.38 0.910471 10.7325 0.950084 10.935 1.20342C11.1375 1.45675 11.1 1.82883 10.86 2.04258L9.12751 3.56257L10.86 5.08255C11.1 5.29631 11.13 5.66839 10.935 5.92172C10.8225 6.06422 10.6575 6.13549 10.5 6.13549Z\"\r\n fill=\"#FF375E\"\r\n />\r\n <path\r\n d=\"M14.25 18.0105C12.6975 18.0105 11.4375 16.6805 11.4375 15.0417C11.4375 13.403 12.6975 12.073 14.25 12.073C15.8025 12.073 17.0625 13.403 17.0625 15.0417C17.0625 16.6805 15.8025 18.0105 14.25 18.0105ZM14.25 13.2605C13.32 13.2605 12.5625 14.0601 12.5625 15.0417C12.5625 16.0234 13.32 16.823 14.25 16.823C15.18 16.823 15.9375 16.0234 15.9375 15.0417C15.9375 14.0601 15.18 13.2605 14.25 13.2605Z\"\r\n fill=\"#FF375E\"\r\n />\r\n <path\r\n d=\"M9.375 16.0312H5.25C4.11 16.0312 3.1875 15.0574 3.1875 13.8541V6.33325C3.1875 6.00867 3.4425 5.7395 3.75 5.7395C4.0575 5.7395 4.3125 6.00867 4.3125 6.33325V13.8541C4.3125 14.4003 4.7325 14.8437 5.25 14.8437H9.375C9.6825 14.8437 9.9375 15.1128 9.9375 15.4374C9.9375 15.762 9.6825 16.0312 9.375 16.0312Z\"\r\n fill=\"#FF375E\"\r\n />\r\n <path\r\n d=\"M7.4997 18.0104C7.3422 18.0104 7.17721 17.9391 7.06471 17.7966C6.86221 17.5433 6.89969 17.1712 7.13969 16.9574L8.87219 15.4375L7.13969 13.9175C6.89969 13.7037 6.86971 13.3316 7.06471 13.0783C7.26721 12.825 7.61971 12.7933 7.85971 12.9991L10.1097 14.9783C10.2372 15.0891 10.3122 15.2554 10.3122 15.4375C10.3122 15.6195 10.2372 15.7779 10.1097 15.8966L7.85971 17.8758C7.75471 17.9629 7.6272 18.0104 7.4997 18.0104Z\"\r\n fill=\"#FF375E\"\r\n />\r\n <path\r\n d=\"M3.75 6.927C2.1975 6.927 0.9375 5.597 0.9375 3.95825C0.9375 2.3195 2.1975 0.989502 3.75 0.989502C5.3025 0.989502 6.5625 2.3195 6.5625 3.95825C6.5625 5.597 5.3025 6.927 3.75 6.927ZM3.75 2.177C2.82 2.177 2.0625 2.97659 2.0625 3.95825C2.0625 4.93992 2.82 5.7395 3.75 5.7395C4.68 5.7395 5.4375 4.93992 5.4375 3.95825C5.4375 2.97659 4.68 2.177 3.75 2.177Z\"\r\n fill=\"#FF375E\"\r\n />\r\n </svg>\r\n {{ element[column] }}\r\n </div>\r\n\r\n <ng-container *ngSwitchCase=\"'clickable'\">\r\n @if (element?.[column]) {\r\n <span\r\n #statusMenuTrigger=\"matMenuTrigger\"\r\n (click)=\"$event.stopPropagation()\"\r\n [matMenuTriggerFor]=\"descMenu\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{\r\n columnsConfig[i].type\r\n }} fc-coral underline cursor-pointer\"\r\n >\r\n {{ columnsConfig[i].clickableText | translate }}\r\n </span>\r\n }\r\n\r\n <mat-menu #descMenu=\"matMenu\" class=\"p-4 text-center\">\r\n <span class=\"fs-14\">\r\n {{ element[column] }}\r\n </span>\r\n </mat-menu>\r\n </ng-container>\r\n\r\n <span\r\n #statusMenuTrigger=\"matMenuTrigger\"\r\n (click)=\"$event.stopPropagation()\"\r\n *ngSwitchCase=\"'translatedClickable'\"\r\n [matMenuTriggerFor]=\"descMenuTranslated\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{\r\n columnsConfig[i].type\r\n }} fc-coral underline cursor-pointer\"\r\n >\r\n {{ columnsConfig[i].clickableText | translate }}\r\n <!-- {{ 'global.view' | translate}} -->\r\n </span>\r\n\r\n <mat-menu #descMenuTranslated=\"matMenu\" class=\"p-4 text-center\">\r\n <span class=\"fs-14\">\r\n {{ columnsConfig[i].arKey ? i18Service.language == \"ar\" ? mapText(columnsConfig[i].arKey, element[column]) : mapText(columnsConfig[i].enKey, element[column]) : element[column] ?\r\n element[column] : \"-\" }}\r\n </span>\r\n </mat-menu>\r\n\r\n <span\r\n #statusMenuTrigger=\"matMenuTrigger\"\r\n (click)=\"$event.stopPropagation()\"\r\n *ngSwitchCase=\"'conditionalClickable'\"\r\n [matMenuTriggerFor]=\"descConditionalMenu\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{\r\n columnsConfig[i].type\r\n }} fc-coral underline cursor-pointer\"\r\n >\r\n @if (element[column] && element[column] != 'null') {\r\n <span>{{ columnsConfig[i].clickableText | translate }}</span>\r\n }\r\n <!-- {{ 'global.view' | translate}} -->\r\n </span>\r\n\r\n <mat-menu #descConditionalMenu=\"matMenu\" class=\"p-4 text-center\">\r\n <span class=\"fs-14\">\r\n {{ element[column] }}\r\n </span>\r\n </mat-menu>\r\n\r\n <span (click)=\"$event.stopPropagation()\" *ngSwitchCase=\"'dropdown'\" [matMenuTriggerFor]=\"dropdownMenu\" [ngClass]=\"columnsConfig[i].type\" class=\"{{ columnsConfig[i].type }} cursor-pointer\">\r\n {{ columnsConfig[i].arKey ? i18Service.language == \"ar\" ? mapText(columnsConfig[i].arKey, element[column]) : mapText(columnsConfig[i].enKey, element[column]) : element[column] ? element[column] :\r\n \"-\" }}\r\n <!-- <span *ngFor=\"let item of element[column]\">\r\n {{item.id}}\r\n </span> -->\r\n\r\n <ds-icon class=\"fc-black fw-medium\" icon=\"arrow\"></ds-icon>\r\n </span>\r\n\r\n <mat-menu #dropdownMenu=\"matMenu\" class=\"p-4 text-center\">\r\n <ng-container *ngSwitchCase=\"'dropdown'\">\r\n <span class=\"fs-12 fc-black\" mat-menu-item>\r\n <!-- {{translateService.currentLang == 'ar' ? item.groupNameAr : item.groupNameEn}} -->\r\n {{ columnsConfig[i].arKey ? i18Service.language == \"ar\" ? mapText(columnsConfig[i].arKey, element[column]) : mapText(columnsConfig[i].enKey, element[column]) : element[column] ?\r\n element[column] : \"-\" }}\r\n </span>\r\n </ng-container>\r\n </mat-menu>\r\n\r\n <span\r\n *ngSwitchCase=\"'formatNumber'\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n matTooltip=\"{{\r\n element[column] > 1000 ? element[column] : ''\r\n }}\"\r\n >\r\n {{ element[column] }}\r\n </span>\r\n\r\n <div *ngSwitchCase=\"'group'\" [ngClass]=\"columnsConfig[i].type\" class=\"text-nowrap d-flex align-items-center\"></div>\r\n\r\n <div *ngSwitchCase=\"'company'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-flex align-items-center\">\r\n <span class=\"img-card circled-img\">\r\n <img [src]=\"element?.image\" alt=\"\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" />\r\n </span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"full-name\">{{ element[column] }}</span>\r\n </div>\r\n\r\n <span *ngSwitchCase=\"'translated'\" [ngClass]=\"columnsConfig[i].type\" class=\"text-nowrap\">\r\n {{ element[column] }}\r\n </span>\r\n <span *ngSwitchCase=\"'title'\" [ngClass]=\"columnsConfig[i].type\" class=\"text-nowrap\">\r\n {{ element[column]?.title }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'maxWidth'\" [ngClass]=\"columnsConfig[i].type\">\r\n {{ element[column]?.title }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'progress'\" [ngClass]=\"columnsConfig[i].type\">\r\n <div class=\"Progress\">\r\n <div class=\"progress-container default-progress\">\r\n <div\r\n [style.width.%]=\"\r\n (element[column].consumed! / element[column].total!) *\r\n 100\r\n \"\r\n class=\"progress-bar\"\r\n ></div>\r\n </div>\r\n <div class=\"Progress__footer\">\r\n <div></div>\r\n <div>\r\n <span class=\"fs-12\">\r\n <span>{{ element[column].consumed }}</span>\r\n <span>/</span>\r\n <span class=\"fc-silver\">{{ element[column].total }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </span>\r\n\r\n <div *ngSwitchCase=\"'subsidiary'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-flex align-items-center gap-2\">\r\n <img [alt]=\"element[column]?.title\" src=\"assets/subsidiaries/ids/{{ element[column]?.id }}.png\" />\r\n <!-- <span class=\"full-name\">{{element[column]}}</span>-->\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'Service'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-flex align-items-center gap-2\">\r\n <svg fill=\"none\" height=\"35\" viewBox=\"0 0 34 35\" width=\"34\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect fill=\"#FF375E\" fill-opacity=\"0.1\" height=\"33.5\" rx=\"4\" width=\"33.5\" y=\"0.75\" />\r\n <path\r\n d=\"M24.213 17.0338H22.1448L21.4532 15.1884C21.2221 14.5845 20.649 14.1622 19.9761 14.1592H13.5315C12.8586 14.1622 12.2847 14.5838 12.0582 15.1771L12.0544 15.1876L11.3628 17.033H9.29312C9.05532 17.033 8.86328 17.2258 8.86328 17.4629V19.1845C8.86328 19.4223 9.05607 19.6143 9.29312 19.6143H10.2076L9.69896 20.378C9.53242 20.6233 9.4334 20.9263 9.4334 21.2519C9.4334 21.2527 9.4334 21.2527 9.4334 21.2534V26.0702C9.4334 26.308 9.62619 26.5 9.86324 26.5H12.1595C12.3973 26.5 12.5893 26.3072 12.5893 26.0702V24.7791H20.91V26.0702C20.91 26.308 21.1028 26.5 21.3399 26.5H23.6361C23.8739 26.5 24.066 26.3072 24.066 26.0702V21.2519C24.066 21.2512 24.066 21.2512 24.066 21.2504C24.066 20.9248 23.9669 20.6218 23.7974 20.3705L23.8011 20.3757L23.2925 19.6121H24.207C24.4448 19.6121 24.6368 19.4193 24.6368 19.1822V17.4606C24.6361 17.2258 24.4478 17.036 24.2145 17.0315L24.213 17.0338ZM12.8654 15.4915C12.9711 15.2176 13.2314 15.0271 13.5368 15.0264H19.9798C20.2852 15.0271 20.5455 15.2184 20.649 15.487L20.6505 15.4922L21.8747 18.7569H11.6359L12.8654 15.4915ZM23.2138 23.9202H10.2983V21.2542C10.2983 21.2534 10.2983 21.2534 10.2983 21.2527C10.2983 21.1049 10.3433 20.9676 10.4199 20.8536L10.4184 20.8558L11.245 19.6151H22.2618L23.0885 20.8558C23.1635 20.9668 23.2085 21.1049 23.2085 21.2519C23.2085 21.2527 23.2085 21.2527 23.2085 21.2534L23.2138 23.9202ZM9.72896 17.895H11.0357L10.7132 18.7561H9.72071L9.72896 17.895ZM11.7379 25.6411H10.2983V24.7799H11.7334L11.7379 25.6411ZM23.2153 25.6411H21.775V24.7799H23.21L23.2153 25.6411ZM23.7869 18.7546H22.7899L22.4674 17.8935H23.7831L23.7869 18.7546ZM12.1632 20.4762C11.2915 20.4762 10.5856 21.1829 10.5856 22.0538C10.5856 22.9248 11.2923 23.6314 12.1632 23.6314C13.0349 23.6314 13.7408 22.9248 13.7408 22.0538C13.7408 21.1821 13.0342 20.4762 12.1632 20.4762V20.4762ZM12.1632 22.7725C11.7671 22.7725 11.4461 22.4514 11.4461 22.0553C11.4461 21.6592 11.7671 21.3382 12.1632 21.3382C12.5593 21.3382 12.8804 21.6592 12.8804 22.0553C12.8804 22.4514 12.5593 22.7725 12.1632 22.7725V22.7725ZM21.3444 20.4762C20.4727 20.4762 19.7668 21.1829 19.7668 22.0538C19.7668 22.9248 20.4735 23.6314 21.3444 23.6314C22.2161 23.6314 22.922 22.9248 22.922 22.0538C22.922 21.1821 22.2153 20.4762 21.3444 20.4762ZM21.3444 22.7725C20.9483 22.7725 20.6272 22.4514 20.6272 22.0553C20.6272 21.6592 20.9483 21.3382 21.3444 21.3382C21.7405 21.3382 22.0615 21.6592 22.0615 22.0553C22.0615 22.4514 21.7405 22.7725 21.3444 22.7725ZM19.0489 21.0509H14.4579C14.2201 21.0509 14.0274 21.2437 14.0274 21.4815C14.0274 21.7193 14.2201 21.912 14.4579 21.912H19.0489C19.2867 21.912 19.4795 21.7193 19.4795 21.4815C19.4795 21.2437 19.2867 21.0509 19.0489 21.0509ZM19.0489 22.1986H14.4579C14.2201 22.1986 14.0274 22.3914 14.0274 22.6292C14.0274 22.867 14.2201 23.0598 14.4579 23.0598H19.0489C19.2867 23.0598 19.4795 22.867 19.4795 22.6292C19.4795 22.3914 19.2867 22.1986 19.0489 22.1986ZM15.2321 12.5703C15.1541 12.6484 15.1061 12.7556 15.1061 12.8742C15.1061 13.112 15.2989 13.304 15.5359 13.304C15.6544 13.304 15.7625 13.256 15.8397 13.178C16.0738 12.9439 16.3971 12.7991 16.7542 12.7991C17.1113 12.7991 17.4346 12.9439 17.6686 13.178C17.7466 13.256 17.8539 13.304 17.9724 13.304C18.2102 13.304 18.4023 13.1112 18.4023 12.8742C18.4023 12.7556 18.3543 12.6476 18.2762 12.5703C17.8862 12.181 17.3483 11.9395 16.7534 11.9395C16.1586 11.9395 15.6199 12.1803 15.2306 12.5703H15.2321ZM19.1877 12.0865C19.1884 12.0865 19.1884 12.0865 19.1892 12.0865C19.427 12.0865 19.619 11.8937 19.619 11.6567C19.619 11.5374 19.5703 11.4294 19.4915 11.3513C18.7909 10.6507 17.8224 10.2171 16.7527 10.2171C15.683 10.2171 14.7145 10.6507 14.0139 11.3513C13.9358 11.4294 13.8878 11.5366 13.8878 11.6552C13.8878 11.893 14.0806 12.085 14.3177 12.085C14.4362 12.085 14.5442 12.037 14.6215 11.959C15.1668 11.4136 15.92 11.0768 16.7519 11.0768C17.5838 11.0768 18.337 11.4136 18.8824 11.959C18.9604 12.037 19.0677 12.0857 19.1869 12.0857H19.1877V12.0865ZM13.4062 10.743C14.2637 9.88704 15.4467 9.35818 16.7542 9.35818C18.0617 9.35818 19.2447 9.88704 20.1021 10.743C20.1801 10.821 20.2874 10.869 20.4059 10.869C20.6437 10.869 20.8358 10.6762 20.8358 10.4392C20.8358 10.3206 20.7878 10.2126 20.7098 10.1353C19.6963 9.12488 18.298 8.5 16.7534 8.5C15.2089 8.5 13.8106 9.12488 12.7971 10.1353C12.7191 10.2134 12.6711 10.3206 12.6711 10.4392C12.6711 10.677 12.8639 10.869 13.1009 10.869C13.2194 10.869 13.3275 10.821 13.4047 10.743H13.4062Z\"\r\n fill=\"#FF375E\"\r\n />\r\n </svg>\r\n\r\n <span class=\"fs-12 fw-normal fc-black\">{{ element?.Service.name }}</span>\r\n </div>\r\n <div *ngSwitchCase=\"'Color'\" class=\"d-flex align-items-center gap-2\">\r\n <span\r\n [ngClass]=\"columnsConfig[i].type\"\r\n [style.background]=\"\r\n element[column]?.colorCode\r\n ? element[column]?.colorCode\r\n : element[column]\r\n \"\r\n ></span>\r\n {{ element[column].title }}\r\n </div>\r\n <div\r\n *ngSwitchCase=\"'colorBg'\"\r\n [style.background]=\"\r\n 'rgba(var(--rgb-' + element[column]?.colorName + '), 0.1)'\r\n \"\r\n class=\"d-flex align-items-center gap-2 Colorbg p-2\"\r\n >\r\n <span class=\"bc-{{ element[column]?.colorName }}\"></span>\r\n {{ element[column].title }}\r\n </div>\r\n <div *ngSwitchCase=\"'assigned'\" [ngClass]=\"columnsConfig[i].type\" class=\"delegate d-flex align-items-center\">\r\n <div class=\"img-card x-small circled-img\">\r\n <img [src]=\"element?.AssignedTo.image\" alt=\"\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" />\r\n </div>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-black\">{{ element?.AssignedTo.name }}</span>\r\n <!--\r\n <span class=\"sfi sfi-close fc-coral\"></span>\r\n -->\r\n </div>\r\n\r\n <span *ngSwitchCase=\"'coloredText'\" [style.color]=\"element[column]?.['color']\">{{ element[column]?.['title'] }}</span>\r\n <div *ngSwitchCase=\"'survey'\" [style.color]=\"element[column]?.['color']\" class=\"d-flex align-items-center gap-1 text-nowrap\">\r\n <span class=\"fs-20 sfi sfi-emoji-{{(element[column]?.['title']['en'].toLowerCase()) }}\"></span>\r\n {{ element[column]?.['title'] }}\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'Satisfaction'\" [ngClass]=\"columnsConfig[i].type\" class=\"delegate d-flex gap-2 align-items-center\">\r\n <!--\r\n <ds-icon icon=\"star-f\" class=\"fc-dark-gray\"></ds-icon>\r\n -->\r\n\r\n <span class=\"fs-12 fc-black\">{{ element[column].percentage }}%</span>\r\n <ds-status class=\"auto-status\" size=\"small\" status=\"{{ element[column].status }}\">\r\n <span class=\"fs-10\">\r\n {{ element[column].percentageTrend }}%\r\n </span>\r\n @if (element[column].trendStatus == 'up') {\r\n <ds-icon class=\"fs-13 mx-1 growthIcon\" icon=\"up-growth\"> </ds-icon>\r\n } @if (element[column].trendStatus != 'up') {\r\n <ds-icon class=\"fs-13 mx-1 downIcon\" icon=\"down-growth\"> </ds-icon>\r\n }\r\n </ds-status>\r\n </div>\r\n\r\n <ng-container *ngSwitchCase=\"'actions'\">\r\n <div class=\"d-flex justify-content-start gap-2\">\r\n <ng-container *ngIf=\"columnsConfig[i]?.actions?.length <= 6\">\r\n <ng-container *ngFor=\"let action of columnsConfig[i]?.actions\">\r\n <ds-button (click)=\"$event.stopPropagation()\" *ngIf=\"action.viewMode === Actions.ALLOCATE\" shape=\"outline\" size=\"small\">\r\n <span class=\"fs-12 fc-{{ action?.actionFontColor }}\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n </ds-button>\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"action === Actions.ALLOCATE\"\r\n icon\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fs-15\" icon=\"pen\"></ds-icon>\r\n </ds-button>\r\n <ng-container\r\n *ngIf=\"\r\n action.viewMode != Actions.VIEW ||\r\n action.viewMode != Actions.COPY\r\n \"\r\n >\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.VIEW &&\r\n !action?.isHidden\r\n \"\r\n icon\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fs-15\" icon=\"eye\"></ds-icon>\r\n </ds-button>\r\n <ds-button (click)=\"$event.stopPropagation(); action?.onClick(element)\"\r\n *ngIf=\"action?.action === Actions.CLOSE && !action?.isHidden\"\r\n icon size=\"small\">\r\n <ds-icon class=\"fs-15 fc-coral\" icon=\"close\"></ds-icon>\r\n </ds-button>\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.COPY &&\r\n !action?.isHidden\r\n \"\r\n icon\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fs-15\" icon=\"files-copy\"></ds-icon>\r\n </ds-button>\r\n <!-- @if(element.hasOwnProperty('canUpdate')){\r\n <ds-button (click)=\"$event.stopPropagation();action?.onClick(element)\" icon size=\"small\"\r\n *ngIf=\"action?.action === 'edit' && !action?.isHidden && element.canUpdate == true\">\r\n <ds-icon icon=\"pen\" class=\"fs-15\"></ds-icon>\r\n </ds-button>\r\n }@else { -->\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\"\r\n *ngIf=\"\r\n action?.action === Actions.EDIT &&\r\n ![4, 7].includes(element?.contractStatus?.id)\"\r\n icon\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fs-15\" icon=\"pen\"></ds-icon>\r\n </ds-button>\r\n <!-- } -->\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.DELETE &&\r\n !action?.isHidden &&\r\n ![4, 7].includes(element?.contractStatus?.id)\r\n \"\r\n icon\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fc-coral fs-15\" icon=\"trash\"></ds-icon>\r\n </ds-button>\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.DELETEPENDING &&\r\n !action?.isHidden &&\r\n element?.contractStatus?.id == 1\r\n \"\r\n icon\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fc-coral fs-15\" icon=\"trash\"></ds-icon>\r\n </ds-button>\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"action?.action === Actions.CHART\"\r\n color=\"transparent\"\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fc-coral fs-15\" icon=\"chart-o\"></ds-icon>\r\n </ds-button>\r\n\r\n @if (element.hasOwnProperty('canTakeAction')) {\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n size=\"small\"\r\n *ngIf=\"\r\n action?.action === Actions.APPROVE &&\r\n element.canTakeAction == true\r\n \"\r\n >\r\n <span class=\"fs-12\">\r\n {{ \"global.approve\" | translate }}\r\n </span>\r\n </ds-button>\r\n <ds-button\r\n shape=\"outline\"\r\n color=\"dark-gray\"\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n size=\"small\"\r\n *ngIf=\"\r\n action?.action === Actions.REJECT &&\r\n element.canTakeAction == true\r\n \"\r\n shape=\"outline\"\r\n >\r\n <span class=\"fs-12\">\r\n {{ \"global.reject\" | translate }}\r\n </span>\r\n </ds-button>\r\n } @else {\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n size=\"small\"\r\n *ngIf=\"action?.action === Actions.APPROVE\"\r\n >\r\n <span class=\"fs-12\">\r\n {{ \"global.approve\" | translate }}\r\n </span>\r\n </ds-button>\r\n <ds-button\r\n shape=\"outline\"\r\n color=\"dark-gray\"\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n size=\"small\"\r\n *ngIf=\"action?.action === Actions.REJECT\"\r\n shape=\"outline\"\r\n >\r\n <span class=\"fs-12\">\r\n {{ \"global.reject\" | translate }}\r\n </span>\r\n </ds-button>\r\n }\r\n\r\n <ds-button *ngIf=\"action?.action === Actions.DETAILS\" shape=\"text\" size=\"small\">\r\n <span class=\"fs-12 underline\"> View Details </span>\r\n </ds-button>\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.START &&\r\n element?.isFinalize\r\n \"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n <ds-icon class=\"fs-16\" icon=\"media-play\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"action?.action === Actions.PREPARE\"\r\n color=\"light-gray\"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12 fc-black\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n <ds-icon class=\"fs-12 fc-black\" icon=\"settings\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.START &&\r\n element?.isFinalize\r\n \"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n <ds-icon class=\"fs-16\" icon=\"media-play\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n\r\n <!-- <ds-button [color]=\"action?.actionColor\" size=\"small\"\r\n *ngIf=\"action?.action === 'customAction'\"\r\n (click)=\"$event.stopPropagation();action?.onClick(element)\" shape=\"{{action?.actionShape}}\" [class]=\"action?.actionColor\"\r\n ></ds-button> -->\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"action?.action === Actions.CUSTOMACTION\"\r\n [class]=\"action?.actionColor\"\r\n [color]=\"action?.actionColor\"\r\n shape=\"{{ action?.actionShape }}\"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12 fc-{{ action?.actionFontColor }}\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n </ds-button>\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.CUSTOMACTIONMANAGE &&\r\n (element.contractStatus.id == 7 ||\r\n element.contractStatus.id == 1)\r\n \"\r\n [class]=\"action?.actionColor\"\r\n [color]=\"action?.actionColor\"\r\n shape=\"{{ action?.actionShape }}\"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12 fc-{{ action?.actionFontColor }}\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n </ds-button>\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.CUSTOMACTIONEXTEND &&\r\n element.contractStatus.id == 7\r\n \"\r\n [class]=\"action?.actionColor\"\r\n [color]=\"action?.actionColor\"\r\n shape=\"{{ action?.actionShape }}\"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12 fc-{{ action?.actionFontColor }}\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n </ds-button>\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.CUSTOMACTIONDETAILS\r\n \"\r\n [class]=\"action?.actionColor\"\r\n [color]=\"action?.actionColor\"\r\n shape=\"{{ action?.actionShape }}\"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12 fc-{{ action?.actionFontColor }}\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n </ds-button>\r\n <ds-status *ngIf=\"action?.action === Actions.STATUS\" [status]=\"action?.Status.status\" class=\"fs-12 statusAction w-100\">\r\n <span class=\"fc-black\">\r\n {{ action?.Status.title | translate }}\r\n </span>\r\n </ds-status>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"columnsConfig[i]?.actions?.length > 6\">\r\n <ds-button\r\n #statusMenuTrigger=\"matMenuTrigger\"\r\n (click)=\"$event.stopPropagation()\"\r\n *ngIf=\"columnsConfig[i]?.actions?.length > 1\"\r\n [matMenuTriggerFor]=\"statusMenu\"\r\n class=\"dots\"\r\n shape=\"text\"\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fs-20 fc-dark-gray\" icon=\"dots\"></ds-icon>\r\n </ds-button>\r\n\r\n <mat-menu #statusMenu=\"matMenu\">\r\n <button (click)=\"action?.onClick(element)\" *ngFor=\"let action of columnsConfig[i]?.actions\" mat-menu-item>\r\n <span class=\"fs-12 fc-black\">{{ action?.actionName | translate }} </span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'specs'\">\r\n @if (element?.[column]) {\r\n <span\r\n #statusMenuTrigger=\"matMenuTrigger\"\r\n (click)=\"$event.stopPropagation()\"\r\n [matMenuTriggerFor]=\"specsMenu\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{\r\n columnsConfig[i].type\r\n }} fc-coral underline cursor-pointer\"\r\n >\r\n {{ columnsConfig[i].clickableText | translate }}\r\n </span>\r\n }\r\n\r\n <mat-menu #specsMenu=\"matMenu\" class=\"p-4 text-center\">\r\n <span class=\"fs-14\">\r\n {{ element[column] }}\r\n </span>\r\n </mat-menu>\r\n </ng-container>\r\n\r\n <!--<div\r\n *ngSwitchCase=\"'specs'\" [ngClass]=\"columnsConfig[i].type\"\r\n class=\"d-flex gap-1\">\r\n {{ element[column] | json }}\r\n <ng-container *ngFor=\"let item of element[column]\">\r\n\r\n <div\r\n class=\"progress-container default-progress medium radius-0 \"\r\n matTooltip=\"Team assignment {{item.value}}%\" matTooltipPosition=\"below\">\r\n <div\r\n [style.width.%]=\"item.value\"\r\n class=\"progress-bar bg-color-{{item.color}}\"></div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>-->\r\n\r\n <span\r\n *ngSwitchDefault\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"text-nowrap\"\r\n matTooltip=\" {{\r\n columnsConfig[i].arKey\r\n ? i18Service.language == 'ar'\r\n ? mapText(columnsConfig[i].arKey, element[column])\r\n : mapText(columnsConfig[i].enKey, element[column])\r\n : element[column]\r\n ? element[column]\r\n : '-'\r\n }}\"\r\n matTooltipPosition=\"below\"\r\n >\r\n {{ columnsConfig[i].arKey ? i18Service.language == \"ar\" ? mapText(columnsConfig[i].arKey, element[column]) : mapText(columnsConfig[i].enKey, element[column]) : element[column] ? element[column] :\r\n \"-\" }}\r\n </span>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n }\r\n </ng-container>\r\n }\r\n\r\n <tr *matHeaderRowDef=\"columns; sticky: true\" mat-header-row></tr>\r\n <tr (click)=\"clickRow(row)\" *matRowDef=\"let row; columns: columns\" [ngClass]=\"{ 'selected-row': row?.fastTrackSeen === false }\" mat-row role=\"button\"></tr>\r\n </table>\r\n }\r\n </ng-container>\r\n } @if (isLoading) {\r\n <ds-loading-table [cols]=\"columns.length\" [rows]=\"5\"></ds-loading-table>\r\n } @if (!isLoading && dataSource.filteredData?.length == 0) {\r\n <ds-message [label]=\" customMessage?? 'NoData' | translate\" type=\"emptyList\"></ds-message>\r\n }\r\n</div>\r\n@if (dataSource.filteredData?.length && hasPaginator) {\r\n<mat-paginator #paginator (page)=\"pageChanged($event)\" [length]=\"totalElements\" [pageIndex]=\"currentPage\" [pageSizeOptions]=\"[5, 10, 15, 20, 100]\" [pageSize]=\"pageSize\" aria-label=\"Select page\" showFirstLastButtons> </mat-paginator>\r\n}\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';\r\nimport {CoreI18nService, CoreService, SidenavService} from '../../../services';\r\n\r\n@Component({\r\n selector: 'app-approvals',\r\n templateUrl: './approvals.component.html',\r\n styleUrls: ['./approvals.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: []\r\n})\r\nexport class ApprovalsComponent {\r\n\r\n constructor(private readonly sidenavService: SidenavService,\r\n public i18n: CoreI18nService,\r\n public coreService: CoreService\r\n ) { }\r\n\r\n\r\n\r\n closeSidenav() {\r\n this.sidenavService.publish('close', null);\r\n }\r\n\r\n}\r\n","<section class=\"main-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('approvalCycle') }}</h3>\r\n <ds-button (click)=\"closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <div class=\"sidenav-body p-4\">\r\n @if (coreService.approvals) {\r\n <ds-approvals approvalsData=\"{{coreService.approvals}}\"></ds-approvals>\r\n } @else {\r\n <ds-message label=\"{{i18n.translate('NoData2')}}\"></ds-message>\r\n }\r\n </div>\r\n</section>\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Input} from '@angular/core';\r\nimport * as Constants from '../../../constants/constants';\r\nimport {CoreI18nService, CoreService, SidenavService} from '../../../services';\r\nimport {Form, Section} from '../../../interfaces';\r\nimport {ApprovalsComponent} from '../approvals/approvals.component';\r\nimport {ToastrService} from \"ngx-toastr\";\r\nimport {SatPopoverModule} from \"@ncstate/sat-popover\";\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nconst dangerStatusValues = [\r\n Constants.FORM_STATUS_REJECTED,\r\n Constants.FORM_STATUS_CANCELLED,\r\n 'deny',\r\n 'reject',\r\n 'unsatisfied',\r\n 'cancel'\r\n];\r\n\r\nconst warningStatusValues = [\r\n Constants.FORM_STATUS_PENDING,\r\n 'pending'\r\n];\r\n\r\n@Component({\r\n selector: 'lib-approvals-workflow',\r\n templateUrl: './approvals-workflow.component.html',\r\n styleUrls: ['./approvals-workflow.component.scss'],\r\n standalone: true,\r\n imports: [\r\n SatPopoverModule\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class ApprovalsWorkflowComponent {\r\n @Input() section: Section;\r\n @Input() form: Form;\r\n approvals: unknown[] = [];\r\n loading = false;\r\n destroyRef = inject(DestroyRef);\r\n\r\n constructor(\r\n public i18n: CoreI18nService,\r\n private readonly sidenavService: SidenavService,\r\n private readonly coreService: CoreService,\r\n private readonly toasterService: ToastrService\r\n ) { }\r\n\r\n getApprovals() {\r\n if (this.isLoading()) {\r\n return;\r\n }\r\n\r\n this.initializeApprovals();\r\n this.coreService.perspectiveApproves(this.section.body.details).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n response => this.handleResponse(response),\r\n err => this.handleError(err)\r\n );\r\n }\r\n\r\n isLoading(): boolean {\r\n return this.loading;\r\n }\r\n\r\n initializeApprovals() {\r\n this.approvals = [];\r\n this.loading = true;\r\n }\r\n\r\n handleResponse(response: any) {\r\n this.loading = false;\r\n if (response?.approvals) {\r\n this.approvals = response.approvals.map(approval => this.createApprovalObject(approval));\r\n this.showProspectiveApprovals();\r\n }\r\n }\r\n\r\n createApprovalObject(approval) {\r\n const stageDetails = this.getStageDetails(approval);\r\n const status = stageDetails ? this.getClassBasedOnStatus(stageDetails.header.status) : '';\r\n return {\r\n id: 1,\r\n name: approval.value,\r\n title: approval.key,\r\n image: `/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=${approval.key}`,\r\n status,\r\n statusLabel: status\r\n };\r\n }\r\n\r\n getStageDetails(approval) {\r\n return this.form.sections.find(stage =>\r\n stage.id === `${(approval?.role)?.toLowerCase()}Approval`\r\n );\r\n }\r\n\r\n handleError(err: any) {\r\n this.loading = false;\r\n err?.error?.meta?.messages?.forEach(msg => {\r\n this.toasterService.error(msg.message);\r\n });\r\n }\r\n\r\n transformStatus(status: string): string {\r\n return status?.toLowerCase() || '';\r\n }\r\n\r\n getClassBasedOnStatus(status: string) {\r\n const lowerStatus = this.transformStatus(status);\r\n\r\n if (!status ||\r\n warningStatusValues.includes(lowerStatus)) {\r\n return 'success';\r\n }\r\n\r\n if (dangerStatusValues.find(value => lowerStatus.includes(value))) {\r\n return 'danger';\r\n }\r\n\r\n if (warningStatusValues.find(value => lowerStatus.includes(value))) {\r\n return 'warning';\r\n }\r\n\r\n return 'success';\r\n }\r\n\r\n showProspectiveApprovals() {\r\n this.coreService.approvals = JSON.stringify(this.approvals);\r\n this.sidenavService.publish('open', ApprovalsComponent);\r\n }\r\n\r\n}\r\n","<ds-button\r\n color=\"white\" shape=\"text\" square size=\"small\"\r\n (click)=\"getApprovals()\">\r\n <slot name=\"prefix\">\r\n @if (loading) {\r\n <ds-icon class=\"sfi sfi-spinner d-inline-block spin fc-coral fs-30-imp\"></ds-icon>\r\n } @else {\r\n <ds-icon icon=\"workflow\" class=\"fs-24\"></ds-icon>\r\n }\r\n </slot>\r\n</ds-button>\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n DestroyRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n NO_ERRORS_SCHEMA,\r\n Output\r\n} from '@angular/core';\r\nimport * as constants from \"../../../constants\";\r\nimport {NgClass, NgForOf, NgIf} from \"@angular/common\";\r\nimport {InputComponent} from \"../form-field\";\r\nimport {ActionStateService, CoreI18nService, CoreService, SidenavService} from \"../../../services\";\r\nimport {Form, Section} from \"../../../interfaces\";\r\nimport {SubmitDialogComponent} from \"../dialogs/submit-dialog/submit-dialog.component\";\r\nimport {NoopScrollStrategy} from \"@angular/cdk/overlay\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {ToastrService} from \"ngx-toastr\";\r\nimport {ApprovalsWorkflowComponent} from \"../../app-component-sections/approvals-workflow/approvals-workflow.component\";\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'lib-action-buttons',\r\n templateUrl: './action-buttons.component.html',\r\n styleUrl: './action-buttons.component.scss',\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\r\n imports: [\r\n NgClass,\r\n InputComponent,\r\n NgIf,\r\n NgForOf,\r\n ApprovalsWorkflowComponent\r\n ]\r\n})\r\nexport class ActionButtonsComponent implements AfterViewInit {\r\n @Input() lovOptions: any[];\r\n @Input() lovType: string;\r\n @Input() fieldsForm: FormGroup;\r\n @Input() form: Form;\r\n @Input() section: Section;\r\n @Input() sections: Section[];\r\n @Input() showApprovalCycle: boolean = true;\r\n @Input() customCall: boolean = false;\r\n @Output() resetFormEmit: EventEmitter<any> = new EventEmitter();\r\n @Output() customCallEmit: EventEmitter<any> = new EventEmitter();\r\n actionStates: { [action: string]: boolean };\r\n isSubmitting = {\r\n 'SUBMIT': false\r\n };\r\n submittingForm: boolean;\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor(public i18n: CoreI18nService,\r\n private actionStateService: ActionStateService,\r\n private coreService: CoreService,\r\n public dialog: MatDialog,\r\n private toasterService: ToastrService,\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n this.actionStateService.actionStates$.pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(states => this.actionStates = states);\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.lovOptions?.forEach((item) => {\r\n this.isSubmitting[item.value] = false\r\n })\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n resetForm() {\r\n this.resetFormEmit.emit()\r\n }\r\n\r\n onSubmit(action: string) {\r\n if (this.customCall) {\r\n this.customCallEmit.emit(action)\r\n } else {\r\n this.submitForm(action, this.section)\r\n }\r\n }\r\n\r\n submitForm(action: string, section: Section) {\r\n section = JSON.parse(JSON.stringify(section));\r\n if (section.body.details.decision) {\r\n section.body.details.decision['key'] = action;\r\n }\r\n\r\n this.isSubmitting[action] = true;\r\n this.submittingForm = true;\r\n\r\n this.coreService.submitForm(section, action).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n (response: any) => {\r\n if (response) {\r\n this.isSubmitting[action] = false;\r\n this.success(response);\r\n }\r\n },\r\n (err: any) => {\r\n err?.error?.meta?.messages?.forEach((msg) => {\r\n this.submittingForm = false;\r\n this.isSubmitting[action] = false;\r\n this.toasterService.error(msg.message);\r\n });\r\n }\r\n );\r\n }\r\n\r\n success(response) {\r\n console.log('success', response)\r\n const dialogRef = this.dialog.open(SubmitDialogComponent, {\r\n data: response,\r\n panelClass: ['main-popup', 'confirm-dialog'],\r\n scrollStrategy: new NoopScrollStrategy(),\r\n });\r\n dialogRef.afterClosed().subscribe(() => {\r\n window.location.reload();\r\n });\r\n }\r\n\r\n buttonShape(item) {\r\n if (item?.value === constants.FORM_STATUS_REJECT || item?.value === constants.FORM_STATUS_CANCEL || item?.value === constants.FORM_STATUS_SEND_BACK) {\r\n return 'outline';\r\n }\r\n return '';\r\n }\r\n\r\n buttonColor(item) {\r\n if (item?.value === constants.FORM_STATUS_REJECT || item?.value === constants.FORM_STATUS_SEND_BACK) {\r\n return 'red';\r\n }\r\n return '';\r\n }\r\n}\r\n","<div class=\"mt-4\">\r\n @if (lovType === 'button') {\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button shape=\"text\" color=\"red\" (click)=\"resetForm()\">\r\n <span class=\"fs-16 fw-medium\">{{ i18n.translate('reset') }}</span>\r\n </ds-button>\r\n @if (form?.sections?.length == 1 && showApprovalCycle) {\r\n <lib-approvals-workflow [section]=\"section\" [form]=\"form\"></lib-approvals-workflow>\r\n }\r\n <div class=\"d-flex flex-wrap align-items-center flex-grow-1 flex-row-reverse gap-3\">\r\n @for (item of lovOptions; track $index) {\r\n <ds-button\r\n loading=\"{{isSubmitting[item.value]}}\"\r\n [ngClass]=\"{'disabled': !actionStates[item.value] || submittingForm}\"\r\n shape=\"{{ buttonShape(item) }}\"\r\n color=\"{{ buttonColor(item) }}\"\r\n (click)=\"onSubmit(item?.value)\">\r\n {{ item?.['description'] }}\r\n </ds-button>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button shape=\"text\" color=\"red\" (click)=\"resetForm()\">\r\n <span class=\"fs-16 fw-medium\">{{ i18n.translate('reset') }}</span>\r\n </ds-button>\r\n @if (form?.sections?.length == 1 && showApprovalCycle) {\r\n <lib-approvals-workflow [section]=\"section\" [form]=\"form\"></lib-approvals-workflow>\r\n }\r\n <div class=\"d-flex flex-wrap align-items-center flex-grow-1 flex-row-reverse gap-3\">\r\n <ds-button\r\n [ngClass]=\"{'disabled': !actionStates['SUBMIT'] || submittingForm}\"\r\n loading=\"{{isSubmitting['SUBMIT']}}\"\r\n (click)=\"onSubmit('SUBMIT')\">\r\n {{ i18n.translate('submit') }}\r\n </ds-button>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\r\nimport { CoreI18nService } from '../../../services';\r\nimport { MatAccordion, MatExpansionPanel, MatExpansionPanelTitle } from '@angular/material/expansion';\r\n\r\ninterface FAQ {\r\n title: string,\r\n content: string\r\n}\r\n\r\n@Component({\r\n selector: 'app-faqs',\r\n templateUrl: './faqs.component.html',\r\n styleUrls: ['./faqs.component.scss'],\r\n standalone: true,\r\n imports: [\r\n MatAccordion,\r\n MatExpansionPanel,\r\n MatExpansionPanelTitle\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class FaqsComponent {\r\n @Input() adminView = false;\r\n @Input() faqs: FAQ[];\r\n\r\n constructor(public i18n: CoreI18nService) { }\r\n\r\n\r\n}\r\n","<mat-accordion class=\"primary-accordion\">\r\n @for (item of faqs; track $index) {\r\n <mat-expansion-panel [expanded]=\"$index==0\" class=\"mb-4\" hideToggle #expansionPanel=\"matExpansionPanel\">\r\n @if (item.title) {\r\n <mat-expansion-panel-header class=\"expansion-header\">\r\n <mat-panel-title>\r\n <h3 class=\"fs-14 fw-medium fc-black mb-0 flex-grow-1 align-self-center\">{{ item.title }}</h3>\r\n @if (expansionPanel.expanded) {\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n } @else {\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n }\r\n </mat-panel-title>\r\n\r\n </mat-expansion-panel-header>\r\n }\r\n <p class=\"fs-14 fc-dark-gray\">\r\n {{ item.content }}\r\n </p>\r\n </mat-expansion-panel>\r\n }\r\n</mat-accordion>\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { CoreI18nService, SidenavService } from '../../../services';\r\nimport { FaqsComponent } from '../faqs';\r\n\r\n@Component({\r\n selector: 'app-faq-sidenav',\r\n templateUrl: './faq-sidenav.component.html',\r\n styleUrls: ['./faq-sidenav.component.scss'],\r\n standalone: true,\r\n imports: [\r\n FaqsComponent\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n\r\n})\r\nexport class FaqSidenavComponent {\r\n\r\n data = [];\r\n\r\n constructor(private readonly sidenavService: SidenavService,\r\n public i18n: CoreI18nService) { }\r\n\r\n\r\n closeSidenav() {\r\n this.sidenavService.publish('close', FaqSidenavComponent);\r\n }\r\n\r\n}\r\n","<div class=\"main-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{i18n.translate('serviceBrief')}}</h3>\r\n\r\n <ds-button (click)=\"closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <div class=\"sidenav-body\">\r\n <app-faqs [faqs]=\"data\"></app-faqs>\r\n </div>\r\n</div>\r\n","/* eslint-disable @angular-eslint/component-selector */\r\nimport {Component, Input} from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { SidenavService } from '../../../services';\r\nimport {FaqSidenavComponent} from \"../../app-component-sections/faq-sidenav/faq-sidenav.component\";\r\n@Component({\r\n selector: 'app-title-section',\r\n templateUrl: './title-section.component.html',\r\n styleUrls: ['./title-section.component.scss']\r\n})\r\nexport class TitleSectionComponent {\r\n\r\n @Input() title = '';\r\n @Input() tooltip = true;\r\n // introJS = introJs();\r\n constructor(private sidenavService: SidenavService, private dialog: MatDialog ) { }\r\n\r\n\r\n openFaq(){\r\n this.sidenavService.publish('open', FaqSidenavComponent, 'end', 'over');\r\n }\r\n\r\n // add(): void {\r\n // const dialogRef = this.dialog.open(ConfirmationPopupComponent, {\r\n // width: '700px',\r\n // panelClass: ['confirm-popup', 'main-popup'],\r\n // data: {\r\n // title: 'Your request has been submitted Successfully',\r\n // id: '862456',\r\n // type: 'view',\r\n // icon: 'done',\r\n // },\r\n // });\r\n\r\n // // dialogRef.afterClosed().subscribe(() => {\r\n // // location.reload()\r\n // // });\r\n // }\r\n\r\n}\r\n","<header class=\"section-title\">\r\n <div class=\"d-flex align-items-center\">\r\n <h1 class=\"main-title mb-0\" >{{title}}</h1>\r\n <!-- <span class=\"mx-1\"></span>\r\n <button mat-icon-button class=\"btn button-transparent square\" *ngIf=\"tooltip\" (click)=\"openFaq()\">\r\n <span class=\"sfi sfi-info fc-dark-gray font-20-imp\" id=\"step1\"></span>\r\n </button>\r\n <span class=\"mx-1\"></span> -->\r\n </div>\r\n <div class=\"filter-actions\">\r\n <div class=\"filter-section\">\r\n <ng-content select=\"[filter]\"></ng-content>\r\n </div>\r\n <span class=\"mx-1\"></span>\r\n <ng-content select=\"[action]\"></ng-content>\r\n <ng-content select=\"[search]\"></ng-content>\r\n </div>\r\n</header>\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Inject, Input, Output} from '@angular/core';\r\nimport {MAT_DIALOG_DATA} from '@angular/material/dialog';\r\nimport {CoreI18nService, SidenavService} from '../../../services';\r\nimport {ProfileInfoDrop} from '../../../interfaces';\r\nimport {NgIf} from '@angular/common';\r\nimport {InfoItemComponent} from \"../../shared-components\";\r\n\r\n\r\n@Component({\r\n selector: 'app-profile-section',\r\n templateUrl: './profile-section.component.html',\r\n styleUrls: ['./profile-section.component.scss'],\r\n standalone: true,\r\n imports: [\r\n InfoItemComponent,\r\n NgIf\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [\r\n {provide: MAT_DIALOG_DATA, useValue: { }}\r\n ]\r\n})\r\nexport class ProfileSectionComponent {\r\n\r\n @Input() profileFormVisibility: any;\r\n profile: ProfileInfoDrop;\r\n message: any;\r\n @Output() close: EventEmitter<boolean> = new EventEmitter();\r\n\r\n constructor(public i18n: CoreI18nService,\r\n private readonly sidenavService: SidenavService,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n this.profile = sidenavService.data;\r\n }\r\n\r\n\r\n closeSidenav() {\r\n this.sidenavService.publish('close', null);\r\n }\r\n\r\n}\r\n","<div class=\"main-sidenav\">\r\n <div class=\"sidenav-title bc-white\">\r\n <h3> {{ profile?.fullName }}</h3>\r\n <ds-icon icon=\"close\" class=\"fc-black fs-20 p-3 cursor-pointer\" (click)=\"closeSidenav()\"></ds-icon>\r\n </div>\r\n <div class=\"sidenav-body p-0\">\r\n <div class=\"d-flex flex-column align-items-center gap-3 sidenav-user bc-off-white text-center\">\r\n <ds-avatar image=\"/group/i-gate/wm-bpm/forms/-/proxy/portrait?email={{profile?.employeeEmail}}\" class=\"mb-2\"></ds-avatar>\r\n <div class=\"d-flex flex-column gap-1\">\r\n <h4 class=\"fs-16 fc-black fw-medium mb-0\">{{ profile?.fullName }}</h4>\r\n <h6 class=\"fs-12 fc-dark-gray fw-normal mb-0\" *ngIf=\"profile?.jobPosition\">{{ profile?.jobPosition }}</h6>\r\n </div>\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\">\r\n <ds-icon icon=\"mail-o\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'mailTo:' + profile?.employeeEmail\" class=\"fc-black\">{{ profile?.employeeEmail }}</a>\r\n </div>\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\" *ngIf=\"profile?.businessPhone\">\r\n <ds-icon icon=\"phone\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'tel:' + profile?.businessPhone\" class=\"fc-black\">\r\n <bdi>{{ profile?.businessPhone }}</bdi>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"info-section no-bg px-4 pb-4\"\r\n *ngIf=\"\r\n profile?.departmentName ||\r\n profile?.generalDepartmentName ||\r\n profile?.directManagerName ||\r\n profile?.humanResourcesLocation ||\r\n profile?.nationality ||\r\n profile?.generalDepartmentCode\r\n \"\r\n >\r\n <app-info-item\r\n *ngIf=\"profile?.employeeNumber\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('employeeID')\"\r\n [value]=\"profile?.employeeNumber\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.departmentName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('departmentName')\"\r\n [value]=\"profile?.departmentName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.generalDepartmentName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('generalDepartmentName')\"\r\n [value]=\"profile?.generalDepartmentName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.directManagerName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('directManager')\"\r\n [value]=\"profile?.directManagerName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.humanResourcesLocation\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('humanResourcesLocation')\"\r\n [value]=\"profile?.humanResourcesLocation\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.nationality\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('nationality') \"\r\n [value]=\"profile?.nationality\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.sectorName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('sector')\"\r\n [value]=\"profile?.sectorName\"\r\n ></app-info-item>\r\n\r\n </div>\r\n <ng-container\r\n *ngIf=\"\r\n !profile?.departmentName &&\r\n !profile?.generalDepartmentName &&\r\n !profile?.directManagerName &&\r\n !profile?.humanResourcesLocation &&\r\n !profile?.nationality &&\r\n !profile?.generalDepartmentCode\r\n \"\r\n >\r\n <ds-message type=\"emptyList\" [attr.label]=\"'noData' \"></ds-message>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","export class Form {\r\n constructor(\r\n public header: Header,\r\n public profileInfoDrop: ProfileInfoDrop,\r\n public commentsDrop: CommentsDrop[],\r\n public inboxItem: InboxItem,\r\n public sections: Section[],\r\n public lovs: any,\r\n public messages: Messages | null, // Added null as a type\r\n public confidentialComments?: CommentsDrop[]\r\n ) {}\r\n}\r\n\r\nexport class Header {\r\n constructor(\r\n public requesterName: string,\r\n public requesterPhoto: string,\r\n public formId?: string,\r\n public creationDate?: string,\r\n public status?: {[key:string]: string},\r\n public details?: any\r\n ) {}\r\n}\r\n\r\nexport class ProfileInfoDrop {\r\n constructor(\r\n public onBehalfAuthorized?: boolean,\r\n public employeeNumber?: string,\r\n public employeeEmail?: string,\r\n public fullName?: string,\r\n public generalDepartmentName?: string,\r\n public jobPosition?: string,\r\n public sectorName?: string,\r\n public departmentName?: string,\r\n public generalDepartmentCode?: string,\r\n public humanResourcesLocation?: string,\r\n public nationality?: string,\r\n public businessPhone?: string,\r\n public directManagerName?: string,\r\n public seniorSectorName?: string\r\n ) {}\r\n}\r\n\r\nexport class CommentsDrop {\r\n constructor(\r\n public profilePicture?: string,\r\n public employeeName?: string,\r\n public commentBody?: string,\r\n public commentDate?: string,\r\n public attachment?: string,\r\n public jobPosition?: string\r\n ) {}\r\n}\r\n\r\nexport class Section<T = any> {\r\n constructor(\r\n public id?: string,\r\n public header?: SectionHeader,\r\n public body?: any\r\n ) {}\r\n}\r\n\r\nexport class SectionHeader {\r\n constructor(\r\n public processedBy?: string,\r\n public processingDate?: string,\r\n public personTo?: string,\r\n public personToThumbnail?: string,\r\n public delegatedTo?: string,\r\n public delegatedToThumbnail?: string,\r\n public status?: string,\r\n public hasComments?: boolean,\r\n public readOnly?: boolean\r\n ) {}\r\n}\r\n\r\nexport class Messages {\r\n constructor(\r\n public errorFields?: any,\r\n public info?: string[],\r\n public warning?: string[],\r\n public error?: string[],\r\n public originalMsgs?: Array<{code: string; message: string; type: string}>\r\n ) {}\r\n}\r\n\r\n\r\nexport class InboxItem {\r\n constructor(\r\n public flagPriority?: string,\r\n public isFlagged?: string,\r\n public canRequestFeedback?: string,\r\n public hasFeedback?: string,\r\n public isPending?: string,\r\n public isRequested?: string,\r\n public isResponded?: string\r\n ) {}\r\n}\r\n","import {MAT_DIALOG_DATA, MatDialogClose, MatDialogContent, MatDialogTitle} from '@angular/material/dialog';\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Inject, Input, OnInit} from '@angular/core';\r\nimport {CoreI18nService} from '../../../services';\r\nimport {Form, InboxItem, Messages, ProfileInfoDrop} from '../../../interfaces';\r\nimport * as Constants from '../../../constants/constants';\r\nimport {NgIf} from '@angular/common';\r\nimport {InfoItemComponent, SearchEmployeeComponent, TextareaComponent} from \"../../shared-components\";\r\nimport {FeedBackService} from \"../../../services\";\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-feedback-section',\r\n templateUrl: './feedback-section.component.html',\r\n styleUrls: ['./feedback-section.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n MatDialogContent,\r\n NgIf,\r\n SearchEmployeeComponent,\r\n TextareaComponent,\r\n InfoItemComponent,\r\n MatDialogTitle,\r\n MatDialogClose\r\n ],\r\n standalone: true,\r\n})\r\nexport class FeedbackSectionComponent implements OnInit {\r\n @Input() inboxItem: InboxItem;\r\n @Input() profile: ProfileInfoDrop;\r\n form: Form;\r\n searchEmp: any;\r\n submitted = false;\r\n feedbackStatus: string = null;\r\n feedBackQuestion: string = null;\r\n feedBackResponse: string = null;\r\n isFeedbackValidated = false;\r\n isResponseValidated = false;\r\n employeeInput: string = null;\r\n feedbackId: string = null;\r\n destroyRef = inject(DestroyRef);\r\n\r\n constructor(\r\n public feedBackService: FeedBackService,\r\n public i18n: CoreI18nService,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) {\r\n this.profile = data.profile;\r\n this.inboxItem = data.inboxItem;\r\n this.form = data.form;\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.feedBackService.feedBackSent) {\r\n const item = this.inboxItem;\r\n if (item?.canRequestFeedback === 'true') {\r\n this.feedbackStatus = Constants.FEEDBACK_STATUS_REQUEST;\r\n this.feedBackService.feedbackForm = true;\r\n }\r\n\r\n if (\r\n item.isRequested === 'true' &&\r\n item.hasFeedback === 'true' &&\r\n item.isPending === 'false' &&\r\n item.isResponded === 'false'\r\n ) {\r\n this.feedbackStatus = Constants.FEEDBACK_STATUS_WAITING;\r\n this.feedBackService.pendingForm = true;\r\n this.getFeedBack();\r\n }\r\n\r\n if (\r\n item.isRequested === 'false' &&\r\n item.hasFeedback === 'true' &&\r\n item.isPending === 'true' &&\r\n item.isResponded === 'false'\r\n ) {\r\n this.feedbackStatus = Constants.FEEDBACK_STATUS_RESPOND;\r\n this.feedBackService.responderForm = true;\r\n this.getFeedBack();\r\n }\r\n\r\n if (\r\n item.isRequested === 'true' &&\r\n item.hasFeedback === 'true' &&\r\n item.isPending === 'false' &&\r\n item.isResponded === 'true'\r\n ) {\r\n this.feedbackStatus = Constants.FEEDBACK_STATUS_RESPONDED;\r\n this.feedBackService.pendingForm = true;\r\n this.getFeedBack();\r\n }\r\n /* const obj = {\r\n name: 'changeFeedbackStatus',\r\n data: this.feedbackStatus!\r\n };\r\n this._listenerService.filter(obj);*/\r\n }\r\n }\r\n\r\n getFeedBack() {\r\n this.feedBackService.getFeedback(this.profile.employeeEmail).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((Response: any) => {\r\n if (Response) {\r\n if (Response instanceof Messages) {\r\n this.showError(Response);\r\n } else {\r\n const resp = Response['items'][0];\r\n this.feedBackService.feedbackResponse.requestFrom =\r\n resp.from['firstName'] +\r\n ' ' +\r\n resp.from['middleName'] +\r\n ' ' +\r\n resp.from['familyName'];\r\n this.feedBackService.feedbackResponse.requestTo =\r\n resp.to['firstName'] +\r\n ' ' +\r\n resp.to['middleName'] +\r\n ' ' +\r\n resp.to['familyName'];\r\n this.feedBackService.feedbackResponse.requestFeedback =\r\n resp.query;\r\n this.feedBackService.feedbackResponse.responseFeedback =\r\n resp.response;\r\n this.feedbackId = resp.id;\r\n }\r\n }\r\n })\r\n }\r\n\r\n addFeedback() {\r\n if (this.isFeedbackValidated) {\r\n const email = this.searchEmp.personEmail,\r\n question = this.feedBackQuestion;\r\n this.feedBackService.submitFeedback({email, question}).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((Response: any) => {\r\n if (Response) {\r\n if (Response instanceof Messages) {\r\n this.showError(Response);\r\n } else {\r\n this.submitted = true;\r\n\r\n this.feedbackStatus = Constants.FEEDBACK_STATUS_WAITING;\r\n // const obj = {\r\n // name: 'changeFeedbackStatus',\r\n // data: this.feedbackStatus\r\n // };\r\n // this._listenerService.filter(obj);\r\n this.feedBackService.feedbackForm = false;\r\n this.feedBackService.pendingForm = true;\r\n this.feedBackService.feedBackSent = true;\r\n this.feedBackService.feedbackResponse.requestFrom =\r\n this.profile.fullName;\r\n this.feedBackService.feedbackResponse.requestTo =\r\n this.searchEmp.personName;\r\n this.feedBackService.feedbackResponse.requestFeedback =\r\n this.feedBackQuestion;\r\n }\r\n } else {\r\n this.submitted = true;\r\n }\r\n })\r\n }\r\n }\r\n\r\n\r\n addResponse() {\r\n if (this.isFeedbackValidated) {\r\n const feedbackId = this.feedbackId,\r\n feedbackResponse = this.feedBackResponse;\r\n this.feedBackService.addResponse({feedbackId, feedbackResponse}).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((Response: any) => {\r\n if (Response) {\r\n if (Response instanceof Messages) {\r\n this.showError(Response);\r\n } else {\r\n this.submitted = true;\r\n this.feedbackStatus = Constants.FEEDBACK_STATUS_RESPONDED;\r\n /*const obj = {\r\n name: 'changeFeedbackStatus',\r\n data: this.feedbackStatus\r\n };\r\n this._listenerService.filter(obj);*/\r\n this.feedBackService.responderForm = false;\r\n this.feedBackService.feedBackSent = true;\r\n this.feedBackService.pendingForm = true;\r\n this.feedBackService.feedbackResponse.responseFeedback =\r\n this.feedBackResponse;\r\n }\r\n } else {\r\n this.submitted = true;\r\n }\r\n })\r\n }\r\n }\r\n\r\n errorOccured = false;\r\n isSubmiting = false;\r\n errorMsg = '';\r\n\r\n showError(Response: any) {\r\n if (!this.form) {\r\n this.form = new Form(\r\n Constants.NO_VALUE,\r\n Constants.NO_VALUE,\r\n Constants.NO_VALUE,\r\n Constants.NO_VALUE,\r\n Constants.NO_VALUE,\r\n Constants.NO_VALUE,\r\n Response\r\n );\r\n } else {\r\n this.errorOccured = true;\r\n this.errorMsg = Response?.error[0];\r\n // this.form.messages = Response;\r\n }\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n handleFeedbackQuestion(event) {\r\n this.feedBackQuestion = event;\r\n this.handleFeedbackValidation();\r\n }\r\n\r\n handleFeedbackResponse(event) {\r\n this.feedBackResponse = event;\r\n this.handleResponseValidation();\r\n }\r\n\r\n handleUserSelected(event) {\r\n this.searchEmp = {\r\n personEmail: event.personEmail,\r\n personName: event.personName\r\n };\r\n if (!this.feedBackQuestion) {\r\n return;\r\n }\r\n this.handleFeedbackValidation();\r\n }\r\n\r\n handleResponseValidation() {\r\n if (\r\n this.feedBackResponse.length >= 1 &&\r\n this.feedBackResponse.length < 500\r\n ) {\r\n this.isResponseValidated = true;\r\n } else {\r\n this.isResponseValidated = false;\r\n }\r\n }\r\n\r\n handleFeedbackValidation() {\r\n if (\r\n this.feedBackQuestion.length >= 1 &&\r\n this.feedBackQuestion.length < 500 &&\r\n this.searchEmp.personEmail\r\n ) {\r\n this.isFeedbackValidated = true;\r\n } else {\r\n this.isFeedbackValidated = false;\r\n }\r\n }\r\n}\r\n","<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-between\" mat-dialog-title>\r\n <h3>{{i18n.translate('requestFeedback')}}</h3>\r\n <ds-button square icon matDialogClose>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"d-flex flex-column align-items-center justify-content-center py-4\" *ngIf=\"submitted\">\r\n <div class=\"text-center mb-4\">\r\n <svg width=\"79\" height=\"76\" viewBox=\"0 0 79 76\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M59.9804 0.0998676L1.39239 19.2479C1.02223 19.3692 0.69498 19.5948 0.44999 19.8976C0.205 20.2005 0.0526985 20.5676 0.0113985 20.955C-0.0299016 21.3423 0.0415576 21.7333 0.217184 22.081C0.39281 22.4287 0.665128 22.7183 1.00139 22.9149L23.1454 35.7899C23.487 35.9886 23.8794 36.0828 24.274 36.0608C24.6686 36.0388 25.0481 35.9014 25.3654 35.6659L31.5894 31.0439L26.9674 37.2679C26.7318 37.5852 26.5944 37.9646 26.5722 38.3591C26.5499 38.7537 26.6439 39.1461 26.8424 39.4879L39.7174 61.6289C39.9138 61.9652 40.2031 62.2377 40.5506 62.4135C40.8981 62.5894 41.289 62.6611 41.6763 62.6201C42.0636 62.5791 42.4308 62.4272 42.7338 62.1825C43.0369 61.9378 43.2628 61.6108 43.3844 61.2409L62.5294 2.65187C62.6458 2.29686 62.6615 1.91654 62.5749 1.55313C62.4883 1.18971 62.3026 0.857401 62.0386 0.593071C61.7746 0.328741 61.4425 0.142726 61.0792 0.0556665C60.7159 -0.0313933 60.3355 -0.0160937 59.9804 0.0998676ZM40.9434 55.6999L31.0014 38.6069L42.9894 22.4689C43.2797 22.0798 43.4202 21.5993 43.3852 21.1152C43.3502 20.631 43.142 20.1757 42.7988 19.8325C42.4556 19.4893 42.0002 19.2811 41.5161 19.2461C41.032 19.2111 40.5514 19.3516 40.1624 19.6419L24.0254 31.6279L6.93339 21.6889L57.4514 5.18087L40.9434 55.6999ZM21.2134 44.2759L7.80139 57.6909C7.42253 58.0701 6.90853 58.2833 6.37246 58.2836C5.83638 58.2839 5.32215 58.0712 4.94289 57.6924C4.56363 57.3135 4.35041 56.7995 4.35013 56.2634C4.34985 55.7274 4.56253 55.2131 4.94139 54.8339L18.3564 41.4189C18.7353 41.04 19.2491 40.8272 19.7849 40.8272C20.3207 40.8272 20.8345 41.04 21.2134 41.4189C21.5923 41.7977 21.8051 42.3116 21.8051 42.8474C21.8051 43.3832 21.5923 43.897 21.2134 44.2759ZM3.49139 44.7839C3.30378 44.5963 3.15495 44.3736 3.05341 44.1285C2.95187 43.8834 2.89961 43.6207 2.89961 43.3554C2.89961 43.0901 2.95187 42.8274 3.05341 42.5823C3.15495 42.3371 3.30378 42.1144 3.49139 41.9269L8.78439 36.6339C9.16326 36.255 9.6771 36.0422 10.2129 36.0422C10.7487 36.0422 11.2625 36.255 11.6414 36.6339C12.0203 37.0127 12.2331 37.5266 12.2331 38.0624C12.2331 38.5982 12.0203 39.112 11.6414 39.4909L6.34939 44.7839C6.1618 44.9716 5.93903 45.1206 5.69384 45.2222C5.44864 45.3238 5.18582 45.3762 4.92039 45.3762C4.65497 45.3762 4.39215 45.3238 4.14695 45.2222C3.90176 45.1206 3.67899 44.9716 3.49139 44.7839ZM26.0014 50.9899C26.189 51.1774 26.3378 51.4001 26.4394 51.6453C26.5409 51.8904 26.5932 52.1531 26.5932 52.4184C26.5932 52.6837 26.5409 52.9464 26.4394 53.1915C26.3378 53.4366 26.189 53.6593 26.0014 53.8469L20.7014 59.1409C20.3225 59.5197 19.8087 59.7326 19.2729 59.7326C18.7371 59.7326 18.2233 59.5197 17.8444 59.1409C17.4655 58.762 17.2527 58.2482 17.2527 57.7124C17.2527 57.1766 17.4655 56.6627 17.8444 56.2839L23.1374 50.9909C23.325 50.8032 23.5477 50.6544 23.7928 50.5529C24.0379 50.4513 24.3006 50.3991 24.5659 50.3991C24.8312 50.3991 25.0939 50.4513 25.339 50.5529C25.5841 50.6544 25.8068 50.8032 25.9944 50.9909L26.0014 50.9899Z\"\r\n fill=\"#8E9AA0\" />\r\n <path\r\n d=\"M58.0015 75.3119C69.0472 75.3119 78.0015 66.3576 78.0015 55.3119C78.0015 44.2662 69.0472 35.3119 58.0015 35.3119C46.9558 35.3119 38.0015 44.2662 38.0015 55.3119C38.0015 66.3576 46.9558 75.3119 58.0015 75.3119Z\"\r\n fill=\"#00C48C\" />\r\n <path\r\n d=\"M56.8804 57.3183L54.0346 54.4725L52.9743 55.5336L56.8774 59.4367L65.8354 50.5267L65.4927 50.0138C63.8557 47.5812 61.1134 46.002 58.0015 46.002C53.0313 46.002 49.0015 50.031 49.0015 55.002C49.0015 59.9729 53.0305 64.002 58.0015 64.002C62.9716 64.002 67.0007 59.9729 67.0015 55.0035H65.5017C65.5017 55.005 65.5017 55.0072 65.5017 55.0095C65.5017 59.1503 62.1453 62.5067 58.0045 62.5067C53.8637 62.5067 50.5072 59.1503 50.5072 55.0095C50.5072 50.8686 53.8637 47.5122 58.0045 47.5122C60.3793 47.5122 62.4962 48.6168 63.87 50.3392L63.882 50.3542L56.8804 57.3183Z\"\r\n fill=\"white\" />\r\n </svg>\r\n\r\n </div>\r\n <h2 class=\"fs-16 fw-medium fc-black mb-4 text-center\">\r\n {{i18n.translate('submittedSuccessfully')}}\r\n </h2>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!submitted\">\r\n <div class=\"mb-3\" *ngIf=\"feedBackService.feedbackForm \">\r\n <app-search-employee #employee label=\"{{i18n.translate('requestTo')}}\" [field]=\"searchEmp\"\r\n [labelTextReadMode]=\"i18n.translate('requestTo')\" [labelTextWriteMode]=\"i18n.translate('requestTo')\"\r\n [name]=\"'searchEmp'\" (emitedValue)=\"handleUserSelected($event)\">\r\n </app-search-employee>\r\n <app-textarea #request [field]=\"employeeInput\" name=\"employeeInput\" label=\"{{i18n.translate('feedback')}}\"\r\n [required]=\"true\" [minLength]='1' (emitedValue)=\"handleFeedbackQuestion($event)\" [maxLength]='500'\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max500')\">\r\n </app-textarea>\r\n </div>\r\n\r\n <div class=\"info-section\" *ngIf=\"!feedBackService.feedbackForm\">\r\n <ng-container *ngIf=\"feedBackService.responderForm\">\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('requestFrom')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.requestFrom}}\"></app-info-item>\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('requestTo')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.requestTo}}\"></app-info-item>\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('feedbackQuestion')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.requestFeedback}}\"></app-info-item>\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('feedback')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.responseFeedback}}\"></app-info-item>\r\n <app-textarea #request class=\"full mx-3 mt-3 section-item\" [field]=\"employeeInput\" name=\"employeeInput\"\r\n label=\"{{i18n.translate('feedback')}}\" [required]=\"true\" [minLength]='1'\r\n (emitedValue)=\"handleFeedbackResponse($event)\" [maxLength]='500'\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max500')\">\r\n </app-textarea>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"feedBackService.pendingForm\" id=\"responce_form\">\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('requestFrom')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.requestFrom}}\"></app-info-item>\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('requestTo')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.requestTo}}\"></app-info-item>\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('feedbackQuestion')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.requestFeedback}}\"></app-info-item>\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('feedback')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.responseFeedback}}\"></app-info-item>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center justify-content-center w-100 gap-3\" *ngIf=\"!submitted\">\r\n <ds-button shape=\"outline\" matDialogClose>\r\n {{i18n.translate('Cancel')}}\r\n </ds-button>\r\n <ds-button *ngIf=\"feedBackService.feedbackForm\" (click)=\"addFeedback()\"\r\n disabled=\"{{!(isFeedbackValidated)}}\">\r\n {{i18n.translate('submit')}}\r\n </ds-button>\r\n <ds-button *ngIf=\"!feedBackService.feedbackForm && feedBackService.responderForm\"\r\n disabled=\"{{!(isResponseValidated)}}\" (click)=\"addResponse()\">\r\n {{i18n.translate('submit')}}\r\n </ds-button>\r\n </div>\r\n </ng-container>\r\n\r\n </mat-dialog-content>\r\n\r\n</div>\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject} from '@angular/core';\r\nimport {CoreI18nService, CoreService, SidenavService} from '../../../services';\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\n\r\n\r\n@Component({\r\n selector: 'app-activities',\r\n templateUrl: './activities.component.html',\r\n styleUrls: ['./activities.component.scss'],\r\n standalone: true,\r\n imports: [],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class ActivitiesComponent {\r\n parsedData: string;\r\n destroyRef = inject(DestroyRef);\r\n\r\n constructor(\r\n private readonly sidenavService: SidenavService,\r\n public i18n: CoreI18nService,\r\n public coreService: CoreService\r\n ) {\r\n this.parsedData = JSON.stringify(this.coreService.activities)\r\n }\r\n\r\n downloadFile(event: any) {\r\n console.log(event.detail.value);\r\n const placeholder = event.target.nextElementSibling;\r\n \r\n this.coreService.loadFile(event.detail.value.id).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe({\r\n next: (responseObject: { body: any }) => {\r\n const fileInformation = responseObject.body;\r\n const fileBlob = this.coreService.dataURItoBlob(fileInformation.fileContents);\r\n const file = new File([fileBlob], fileInformation.fileName, { type: fileInformation.mimeType });\r\n placeholder.href = URL.createObjectURL(file);\r\n placeholder.download = file.name;\r\n placeholder.click();\r\n },\r\n error: (error) => {\r\n console.error('Error loading file:', error);\r\n }\r\n });\r\n }\r\n\r\n\r\n closeSidenav() {\r\n this.sidenavService.publish('close', null);\r\n }\r\n}\r\n","<section class=\"main-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('commentHistory') }}</h3>\r\n\r\n <ds-button (click)=\"closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n\r\n </div>\r\n <div class=\"sidenav-body\">\r\n @if (coreService.activities) {\r\n <ds-activity-log activitiesData=\"{{parsedData}}\" readOnly (downloadEvent)=\"downloadFile($event)\">\r\n </ds-activity-log>\r\n <a href=\"\" class=\"d-none\"></a>\r\n } @else {\r\n <ds-message label=\"{{i18n.translate('NoData1')}}\"></ds-message>\r\n }\r\n </div>\r\n</section>\r\n","import {Pipe, PipeTransform} from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'statusClass',\r\n standalone: true,\r\n})\r\nexport class StatusStylePipe implements PipeTransform {\r\n transform(status: string): string {\r\n let statusClass = {\r\n APPROVED: 'success',\r\n STORED: 'success',\r\n GM_APPROVAL: 'success',\r\n COMPLETED: 'success',\r\n COMPLETE: 'success',\r\n ACCEPTED: 'success',\r\n SUBMIT: 'success',\r\n SUBMIT_TRAINING: 'success',\r\n VEHICLE_IS_AVAILABLE: 'success',\r\n VEHICLE_RECEIVED: 'success',\r\n RETRY: 'success',\r\n REJECT: 'danger',\r\n REJECTED: 'danger',\r\n AUTO_REJECT: 'danger',\r\n VEHICLE_IS_NOT_AVAILABLE: 'danger',\r\n SEND_TO_SAFETY_INSPECTOR: 'success',\r\n SEND_TO_DESIGN_TEAM: 'success',\r\n SEND_TO_SECURITY_SUPERVISOR: 'success',\r\n PENDING: 'warning',\r\n QUEUED: 'warning',\r\n UNACCEPTABLE: 'success',\r\n RECEIVED: 'success',\r\n CLOSED: 'success',\r\n\r\n SENT: 'info',\r\n\r\n SENDBACKTOREQUESTER: 'send_back',\r\n 'COLLECT_SITE_FEEDBACK': 'success',\r\n 'COLLECT_SITE_VISIT_FEEDBACK': 'success',\r\n 'SUBMIT_FEEDBACK': 'success',\r\n 'CONFIRM_SITE_HANDOVER': 'success',\r\n\r\n\r\n // \"SENDBACKTOREQUESTER\": \"send_back\",\r\n SEND_BACK_TO_REQUESTER: 'send_back',\r\n 'SEND BACK TO REQUESTER': 'send_back',\r\n SENDBACK: 'send_back',\r\n\r\n EXPIRED: 'expired',\r\n\r\n CANCELLED: 'pending',\r\n CANCELED: 'pending',\r\n SHIPMENT_DELIVERY_REJECTED: 'danger'\r\n }\r\n\r\n // status == 'SEND BACK TO REQUESTER' ? 'SENDBACKTOREQUESTER' : status\r\n\r\n return statusClass[status?.toUpperCase()] || 'success'\r\n }\r\n}\r\n","import {AfterViewInit, ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, OnInit} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {MatMenuModule} from \"@angular/material/menu\";\r\nimport {MatDialog, MatDialogModule} from \"@angular/material/dialog\";\r\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators} from \"@angular/forms\";\r\nimport {MatButtonToggleModule} from \"@angular/material/button-toggle\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {CoreI18nService, CoreService, SidenavService} from \"../../../services\";\r\nimport {StatusStylePipe} from \"../../../pipes/status-style.pipe\";\r\nimport {ToastrService} from \"ngx-toastr\";\r\nimport {CdkConnectedOverlay, CdkOverlayOrigin} from \"@angular/cdk/overlay\";\r\nimport {CustomSearchableComponent} from \"../../shared-components\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {Subject} from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'app-history',\r\n standalone: true,\r\n\r\n imports: [\r\n CommonModule,\r\n MatMenuModule,\r\n RouterModule,\r\n MatDialogModule,\r\n ReactiveFormsModule,\r\n MatButtonToggleModule,\r\n StatusStylePipe,\r\n CdkOverlayOrigin,\r\n CustomSearchableComponent,\r\n CdkConnectedOverlay\r\n\r\n ],\r\n templateUrl: './previous-requests.component.html',\r\n styleUrls: ['./previous-requests.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class PreviousRequestsComponent implements OnInit, AfterViewInit {\r\n previousRequests: any[] = []\r\n destroyRef = inject(DestroyRef);\r\n\r\n loading: boolean\r\n filterFormGroup: FormGroup;\r\n errorMessage: string\r\n isOpen: boolean = false;\r\n monthsOptions = [\r\n {key: '1', value: '1'},\r\n {key: '2', value: '2'},\r\n {key: '3', value: '3'},\r\n {key: '4', value: '4'},\r\n {key: '5', value: '5'},\r\n {key: '6', value: '6'},\r\n {key: '7', value: '7'},\r\n {key: '8', value: '8'},\r\n {key: '9', value: '9'},\r\n {key: '10', value: '10'},\r\n {key: '11', value: '11'},\r\n {key: '12', value: '12'}\r\n ];\r\n yearsOptions = [\r\n {key: new Date().getFullYear(), value: new Date().getFullYear()},\r\n {key: new Date().getFullYear() - 1, value: new Date().getFullYear() - 1},\r\n {key: new Date().getFullYear() - 2, value: new Date().getFullYear() - 2},\r\n {key: new Date().getFullYear() - 3, value: new Date().getFullYear() - 3}];\r\n\r\n statuses = []\r\n searchData = {\r\n year: null,\r\n month: null\r\n }\r\n\r\n constructor(public dialog: MatDialog,\r\n private readonly sidenavService: SidenavService,\r\n public coreService: CoreService,\r\n private readonly toasterService: ToastrService,\r\n public i18n: CoreI18nService,\r\n private readonly fb: FormBuilder,\r\n private cd: ChangeDetectorRef\r\n ) {}\r\n\r\n /**\r\n * Initializes the component on initialization.\r\n * It creates a form and sets the available statuses based on the current language.\r\n *\r\n * @return {void}\r\n */\r\n ngOnInit() {\r\n this.createForm();\r\n this.statuses = [\r\n {key: \"APPROVED\", value: this.i18n.language == 'en' ? \"Approve\" : \"موافقة\"},\r\n {key: \"REJECTED\", value: this.i18n.language == 'en' ? \"Reject\" : \"مرفوض\"},\r\n {key: \"PENDING\", value: this.i18n.language == 'en' ? \"Pending\" : \"معلق\"}\r\n ]\r\n }\r\n\r\n // variables to manage subscription\r\n private readonly ngUnsubscribe: Subject<void> = new Subject<void>();\r\n\r\n// new helper methods for form controls\r\n /**\r\n * Generates form controls for the current month and year.\r\n *\r\n * @return {object} An object containing form controls for the current month and year.\r\n * - month: FormControl for the current month with Validators required\r\n * - year: FormControl for the current year with Validators required\r\n */\r\n private currentDateControl(): { [key: string]: FormControl } {\r\n const date = new Date();\r\n const month = date.getUTCMonth() + 1;\r\n const year = date.getFullYear();\r\n\r\n return {\r\n month: new FormControl({key: month, value: month}, Validators.required),\r\n year: new FormControl({key: year, value: year}, Validators.required),\r\n };\r\n }\r\n\r\n /**\r\n * Initializes a form group for filtering data.\r\n * It creates form controls for the current date and status.\r\n * Also sets up a subscription to listen for changes in the status control.\r\n *\r\n * @return {void}\r\n */\r\n createForm() {\r\n this.filterFormGroup = this.fb.group({\r\n ...this.currentDateControl(),\r\n status: new FormControl('', Validators.required)\r\n });\r\n this.filterFormGroup.get('status').valueChanges.pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(value => {\r\n this.filterStatus()\r\n })\r\n }\r\n\r\n\r\n /**\r\n * Perform initialization after Angular has fully initialized a component's view.\r\n *\r\n * @return {void}\r\n */\r\n ngAfterViewInit() {\r\n if (this.coreService.historyDataLoaded) {\r\n this.previousRequests = this.coreService.historyData\r\n } else {\r\n this.getRequests()\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n /**\r\n * Clear all filters and reset the form group to its initial state.\r\n * Sets the month and year filters to the current date's month and year respectively.\r\n * Sets the status filter to an empty string.\r\n * Toggles the isOpen property and triggers the filterStatus method.\r\n *\r\n * @return {void}\r\n */\r\n clearFilters() {\r\n this.filterFormGroup.reset()\r\n this.filterFormGroup.get('month').setValue({key: new Date().getUTCMonth() + 1, value: new Date().getUTCMonth() + 1})\r\n this.filterFormGroup.get('year').setValue({key: new Date().getFullYear(), value: new Date().getFullYear() + 1})\r\n this.filterFormGroup.get('status').setValue('')\r\n this.isOpen = !this.isOpen\r\n this.filterStatus()\r\n }\r\n\r\n /**\r\n * Toggles the isOpen property and triggers the getRequests() method.\r\n *\r\n * @return {void}\r\n */\r\n applyFilters() {\r\n this.isOpen = !this.isOpen\r\n this.getRequests()\r\n }\r\n\r\n /**\r\n * Retrieves request data based on form values.\r\n *\r\n * @return {void}\r\n */\r\n getRequests() {\r\n const formValues = this.getFormValues()\r\n if (this.areFormValuesEqual(this.searchData, formValues)) {\r\n this.filterStatus()\r\n } else {\r\n this.updateSearchData(formValues)\r\n this.requestCoreData()\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the form values including the year and month.\r\n *\r\n * @return {Object} Returns an object containing the year and month values.\r\n */\r\n getFormValues() {\r\n return {\r\n year: this.getYearValue(),\r\n month: this.getMonthValue(),\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the selected year value from the filter form group.\r\n *\r\n * @return The selected year value as a number.\r\n */\r\n private getYearValue(): number {\r\n return this.filterFormGroup.get('year').value?.key;\r\n }\r\n\r\n /**\r\n * Retrieves the month value from the filter form group.\r\n *\r\n * @return {number} The month value retrieved from the form group.\r\n */\r\n private getMonthValue(): number {\r\n return this.filterFormGroup.get('month').value?.key;\r\n }\r\n\r\n /**\r\n * Checks if the year and month values of two form objects are equal.\r\n *\r\n * @param {Object} first - The first form object to compare.\r\n * @param {Object} second - The second form object to compare.\r\n * @returns {boolean} - true if the year and month values are equal, otherwise false.\r\n */\r\n areFormValuesEqual(first, second) {\r\n return first.year == second.year && first.month == second.month\r\n }\r\n\r\n /**\r\n * Update the search data with the provided data.\r\n *\r\n * @param {Object} data - The new search data to update.\r\n *\r\n * @return {void}\r\n */\r\n updateSearchData(data) {\r\n this.searchData = data\r\n }\r\n\r\n /**\r\n * Sends a request to retrieve core data using the Core Service API.\r\n * Initializes loading and requests before making the call.\r\n *\r\n * @return {void}\r\n */\r\n requestCoreData() {\r\n this.initializeLoadingAndRequests()\r\n this.loading = true\r\n this.coreService.historyData = []\r\n this.previousRequests = []\r\n this.coreService.myRequests(this.searchData).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe({\r\n next: (response: any) => {\r\n this.coreService.historyData = response.history;\r\n this.previousRequests = this.coreService.historyData\r\n this.coreService.historyDataLoaded = true\r\n this.filterStatus()\r\n },\r\n error: (err) => {\r\n this.loading = false;\r\n this.errorMessage = err?.error?.meta?.messages?.['0']?.message;\r\n this.toasterService.error(this.errorMessage)\r\n },\r\n complete: () => {\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Initializes loading and requests.\r\n *\r\n * @return {void}\r\n */\r\n initializeLoadingAndRequests() {\r\n this.loading = true\r\n this.coreService.historyData = []\r\n this.previousRequests = []\r\n }\r\n\r\n /**\r\n * Handles successful response from a request.\r\n *\r\n * @param {Object} response - The response object containing history data.\r\n * @return {void}\r\n */\r\n handleRequestSuccess(response) {\r\n this.coreService.historyData = response.history\r\n this.previousRequests = this.coreService.historyData\r\n this.coreService.historyDataLoaded = true\r\n this.filterStatus()\r\n }\r\n\r\n /**\r\n * Handles the error received from a request\r\n *\r\n * @param {Object} err - The error object containing information about the error\r\n * @return {void}\r\n */\r\n handleRequestError(err) {\r\n this.loading = false\r\n this.errorMessage = err?.error?.meta?.messages?.['0']?.message\r\n this.toasterService.error(this.errorMessage)\r\n }\r\n\r\n /**\r\n * Filters the previous requests based on the status selected in the filter form.\r\n *\r\n * @return {void}\r\n */\r\n filterStatus() {\r\n const statusKey = this.filterFormGroup.get('status').value?.key;\r\n this.previousRequests = this.coreService.historyData\r\n let filterData: any[];\r\n\r\n if (statusKey) {\r\n filterData = this.previousRequests.filter((request) => request.form?.['formStatus']?.key === statusKey);\r\n } else {\r\n filterData = this.previousRequests;\r\n }\r\n\r\n this.previousRequests = filterData;\r\n }\r\n\r\n /**\r\n * Opens a form in a new window based on the provided form ID.\r\n *\r\n * @param {string} formId - The ID of the form to be opened.\r\n * @return {void}\r\n */\r\n viewForm(formId: string) {\r\n if (formId) {\r\n window.open('/group/i-gate/wm-bpm/forms?formId=' + formId);\r\n }\r\n }\r\n\r\n /**\r\n * Closes the side navigation panel.\r\n *\r\n * @return {void}\r\n */\r\n closeSidenav() {\r\n this.sidenavService.publish('close', null);\r\n }\r\n\r\n /**\r\n * Emit the value to complete all active subscriptions\r\n *\r\n * @return {void}\r\n */\r\n ngOnDestroy() {\r\n // emit the value to complete all active subscriptions\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n}\r\n","<section class=\"main-sidenav history-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('PreviousRequests') }}</h3>\r\n <ds-button class=\"close-sidenav\" (click)=\"closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n\r\n <div class=\"sidenav-body bc-light-gray\">\r\n <section class=\"p-3\">\r\n <header class=\"d-flex align-items-center justify-content-between gap-2 mb-3\">\r\n <h2 class=\"fs-20 fw-medium fc-black mb-0 d-flex align-items-center flex-grow-1 gap-3\">\r\n {{ i18n.translate('AllRequests') }}\r\n <span class=\"title-count fs-14 fw-normal\">{{ previousRequests?.length ? previousRequests?.length : '0' }}</span>\r\n </h2>\r\n <ds-button icon size=\"small\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <ds-icon icon=\"filter\" class=\"fc-coral fs-20\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <mat-button-toggle-group\r\n class=\"icon-toggle flex-nowrap\"\r\n #pageView=\"matButtonToggleGroup\"\r\n (click)=\"$event.stopImmediatePropagation()\"\r\n value=\"list\"\r\n >\r\n <mat-button-toggle value=\"card\">\r\n <span class=\"sfi sfi-card fs-20\"></span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"list\">\r\n <span class=\"sfi sfi-list-dots fs-20\"></span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </header>\r\n\r\n @if (pageView.value === 'card') {\r\n <div class=\"history-cards-container\">\r\n @if (loading) {\r\n <ng-container>\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of [0,1,2,3]\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3 class=\"loading-bg fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"></h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2 loading-bg\"></span>\r\n <span class=\"fs-12 fw-medium fc-black loading-bg\"></span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n } @else {\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of previousRequests\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3\r\n class=\"fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"\r\n (click)=\"viewForm(row?.form?.['formId'])\">{{ row?.form?.['formId'] }}</h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2\">{{ i18n.translate('formTableCreationDate') }}</span>\r\n <span class=\"fs-12 fw-medium fc-black\">{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n @if (pageView.value === 'list') {\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"previousRequests?.length && !loading\">\r\n <thead>\r\n <tr>\r\n <th>{{ i18n.translate('formTableFormId') }}</th>\r\n <th>{{ i18n.translate('formTableCreationDate') }}</th>\r\n <th>{{ i18n.translate('Status') }}</th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody *ngFor=\"let row of previousRequests\">\r\n <tr>\r\n <td>\r\n <span class=\"fw-medium cursor-pointer underline fw-bold \" (click)=\"viewForm(row?.form?.['formId'])\">\r\n {{ row?.form?.['formId'] }}\r\n </span>\r\n </td>\r\n <td>{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</td>\r\n <td>\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <ds-loading-table *ngIf=\"loading\" [cols]=\"4\" [rows]=\"4\"></ds-loading-table>\r\n </div>\r\n }\r\n @if (!previousRequests?.length && !loading) {\r\n <ng-container *ngTemplateOutlet=\"emptyMessage\"></ng-container>\r\n }\r\n </section>\r\n </div>\r\n</section>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"isOpen = false\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n>\r\n <form [formGroup]=\"filterFormGroup\">\r\n <div class=\"filter-container\">\r\n <div class=\"popup-header border-bottom pb-2\">\r\n <h3 class=\"fs-16 fc-black fw-medium\">{{ i18n.translate('filters') }}</h3>\r\n </div>\r\n <div class=\"d-flex flex-column gap-4 gap-md-3 filter-section bc-white mt-0 pt-3\">\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"status\"\r\n label=\"{{ i18n.translate('status') }}\"\r\n [options]=\"statuses\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"year\"\r\n label=\"{{ i18n.translate('year') }}\"\r\n [options]=\"yearsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"month\"\r\n label=\"{{ i18n.translate('month') }}\"\r\n [options]=\"monthsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <div class=\"d-flex align-items-center gap-3 mt-4\">\r\n <ds-button shape=\"outline\" size=\"small\" (click)=\"clearFilters()\">\r\n <span class=\"fs-12\"> {{ i18n.translate('clear') }} </span>\r\n </ds-button>\r\n <ds-button class=\"w-100\" size=\"small\" (click)=\"applyFilters()\">\r\n <span class=\"fs-12\">{{ i18n.translate('applyFilters') }} </span>\r\n </ds-button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n\r\n <ng-template #emptyMessage>\r\n <ds-message label=\"{{i18n.translate('NoData')}}\"></ds-message>\r\n </ng-template>\r\n","import {AfterViewInit, ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Input} from '@angular/core';\r\nimport {Form, Section} from '../../../interfaces';\r\nimport * as Constants from '../../../constants/constants';\r\nimport {MAT_DIALOG_DATA, MatDialog} from '@angular/material/dialog';\r\nimport {CoreI18nService, CoreService, FeedBackService, SidenavService} from '../../../services';\r\nimport {ProfileSectionComponent} from '../profile-section/profile-section.component';\r\nimport {FeedbackSectionComponent} from '../feedback-section/feedback-section.component';\r\nimport {NgClass, NgIf} from '@angular/common';\r\nimport {SatPopoverModule} from '@ncstate/sat-popover';\r\nimport {MatDivider} from '@angular/material/divider';\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from '@angular/material/menu';\r\nimport {FaqSidenavComponent} from '../faq-sidenav/faq-sidenav.component';\r\nimport {ActivitiesComponent} from '../activities/activities.component';\r\nimport {format} from 'date-fns';\r\nimport {ToastrService} from \"ngx-toastr\";\r\nimport {PreviousRequestsComponent} from \"../previous-requests/previous-requests.component\";\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nconst StatusMap = {\r\n [Constants.FORM_STATUS_REJECTED]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_CANCELLED]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_REJECT]: {class: 'danger', icon: 'close'},\r\n [Constants.SECTION_STATUS_UNSATISFIED]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_CANCEL]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_PENDING]: {class: 'warning', icon: 'clock'},\r\n 'default': {class: 'success', icon: 'check'}\r\n}\r\n\r\ninterface ApprovalHistoryItem {\r\n approver: {\r\n personName: string;\r\n personEmail: string;\r\n };\r\n positionType: string;\r\n}\r\n\r\n@Component({\r\n selector: 'core-service-header',\r\n templateUrl: './service-header.component.html',\r\n styleUrls: ['./service-header.component.scss'],\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n SatPopoverModule,\r\n MatDivider,\r\n MatMenuTrigger,\r\n NgClass,\r\n MatMenu,\r\n MatMenuItem\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [FeedBackService,\r\n {provide: MAT_DIALOG_DATA, useValue: {}},\r\n ]\r\n})\r\nexport class ServiceHeaderComponent implements AfterViewInit {\r\n @Input() form: Form;\r\n @Input() showHistory = false;\r\n @Input() isLoading = false;\r\n @Input() isReadOnly = false;\r\n @Input() showApprovalHistory = false;\r\n @Input() approvalHistory: any;\r\n @Input() creationDate: string;\r\n @Input() formTitle: string;\r\n @Input() section: Section;\r\n @Input() serviceFaq: any[] = [];\r\n approvals: any[] = [];\r\n flagPriority: string;\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor(\r\n private readonly cdRef: ChangeDetectorRef,\r\n public coreService: CoreService,\r\n public i18n: CoreI18nService, private readonly feedBackService: FeedBackService,\r\n private readonly dialog: MatDialog, private readonly sidenavService: SidenavService,\r\n private readonly toasterService: ToastrService\r\n ) {}\r\n\r\n /**\r\n * Executes after the view has been fully initialized.\r\n *\r\n * @return {void}\r\n */\r\n ngAfterViewInit() {\r\n this.getApprovalHistory(this.approvalHistory);\r\n if (this.form?.header?.creationDate) {\r\n this.creationDate = format(new Date(this.form?.header?.creationDate), \"dd/MM/yyyy hh:mm:ss\");\r\n }\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Handles the click event on the comments form.\r\n * Retrieves comments from the form, transforms them, and updates activities in the core service.\r\n * Finally, publishes an 'open' event to the sidenav service to open the ActivitiesComponent.\r\n *\r\n * @return {void}\r\n */\r\n onCommentsFormClick() {\r\n const formComments: any = this.form.commentsDrop;\r\n const transformedComments = [];\r\n for (const comment of formComments) {\r\n transformedComments.push(this.transformCommentItem(comment));\r\n }\r\n this.coreService.activities = transformedComments;\r\n this.sidenavService.publish('open', ActivitiesComponent);\r\n }\r\n\r\n /**\r\n * Transforms a comment item into a different format for display.\r\n *\r\n * @param {Object} item - The original comment item to transform.\r\n * @return {Object} - The transformed comment item with specific properties including name, title, image, date, time, comment, and attachments.\r\n */\r\n private transformCommentItem(item) {\r\n return {\r\n name: item['employeeName'],\r\n title: item.jobPosition,\r\n image: item['profilePicture'],\r\n date: format(new Date(item['commentDate']), 'yyyy-MM-dd'),\r\n time: format(new Date(item['commentDate']), 'h:mm a'),\r\n comment: item['commentBody'],\r\n attachments: item['attachment']\r\n };\r\n }\r\n\r\n /**\r\n * Opens a dialog for providing feedback.\r\n *\r\n * @return {void}\r\n */\r\n feedback(): void {\r\n this.dialog.open(FeedbackSectionComponent, {\r\n panelClass: ['main-popup'],\r\n data: {\r\n profile: this.form.profileInfoDrop,\r\n inboxItem: this.form.inboxItem,\r\n form: this.form\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Updates the sidenav with user profile information if not already loading.\r\n *\r\n * @return {void}\r\n */\r\n showUserInfo(): void {\r\n if (!this.isLoading) {\r\n this.sidenavService.data = this.form?.profileInfoDrop;\r\n this.sidenavService.publish('open', ProfileSectionComponent);\r\n }\r\n }\r\n\r\n /**\r\n * Set the priority flag for the inbox item with the provided ID.\r\n *\r\n * @param {string} id - The ID of the priority flag to be set for the inbox item.\r\n * @return {void}\r\n */\r\n setFlagPriority(id: string) {\r\n this.flagPriority = id;\r\n this.form.inboxItem.flagPriority = id;\r\n this.subscribeToSetFlagPriority(id);\r\n }\r\n\r\n /**\r\n * Subscribe to set flag priority for a specific identifier.\r\n *\r\n * @param {string} id - The identifier of the flag to set priority for.\r\n * @return {void}\r\n */\r\n subscribeToSetFlagPriority(id: string): void {\r\n this.coreService.setFlagPriority(id).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((response: any) => {\r\n if (response) {\r\n this.toasterService.success(this.i18n.translate('flagStatusUpdated'));\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Returns the CSS class associated with the input status.\r\n *\r\n * @param {string} status - The status for which the CSS class is needed.\r\n * @return {string} - The CSS class corresponding to the given status.\r\n */\r\n statusClass(status: string): string {\r\n // status = status ? status.toLowerCase() : '';\r\n let statusStrategy = StatusMap[status] || StatusMap['default'];\r\n return statusStrategy.class;\r\n }\r\n\r\n /**\r\n * Opens the FAQ side navigation.\r\n * @return {void}\r\n */\r\n openFaq() {\r\n this.sidenavService.publish('open', FaqSidenavComponent, 'end', 'over', this.serviceFaq);\r\n }\r\n\r\n /**\r\n * Retrieves approval history information for each approval item in the provided array.\r\n *\r\n * @param {ApprovalHistoryItem[]} approvalHistory - The array containing approval history items.\r\n *\r\n * @return {void} - This method does not return any value. It updates the internal 'approvals' array.\r\n */\r\n getApprovalHistory(approvalHistory: ApprovalHistoryItem[]) {\r\n approvalHistory?.forEach((approvalItem, index) => {\r\n let approvalStatus = this.getApprovalStatus(index);\r\n let approvalStatusLabel = this.getApprovalStatusLabel(index);\r\n const obj = {\r\n id: index + 1,\r\n name: approvalItem.approver.personName,\r\n title: approvalItem.positionType,\r\n image: this.getImageUrl(approvalItem.approver.personEmail),\r\n status: approvalStatus,\r\n statusLabel: approvalStatusLabel,\r\n };\r\n this.approvals.push(obj);\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves the approval status for a specific section in the form.\r\n *\r\n * @param {number} index - The index of the section for which the approval status is required.\r\n * @return {string} The approval status of the specified section. Returns an empty string if the section does not exist.\r\n */\r\n private getApprovalStatus(index: number): string {\r\n let status = '';\r\n if (this.form.sections[index + 1]) {\r\n status = this.statusClass(this.form.sections[index + 1].body.details.decision.key);\r\n }\r\n return status;\r\n }\r\n\r\n /**\r\n * Retrieves the approval status label from the form section based on the given index.\r\n *\r\n * @param {number} index - The index of the form section for which the approval status label will be retrieved.\r\n * @return {string} The approval status label retrieved from the specified form section.\r\n */\r\n private getApprovalStatusLabel(index: number): string {\r\n let statusLabel = '';\r\n if (this.form.sections[index + 1]) {\r\n statusLabel = this.form.sections[index + 1].body.details.decision.value;\r\n }\r\n return statusLabel;\r\n }\r\n\r\n /**\r\n * Retrieves the URL of the user's portrait image based on the provided email.\r\n *\r\n * @param {string} email - The email address of the user for whom the portrait URL is to be retrieved.\r\n * @return {string} - The URL used to fetch the user's portrait image.\r\n */\r\n private getImageUrl(email: string): string {\r\n return '/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=' + email;\r\n }\r\n\r\n showPreviousRequests() {\r\n this.sidenavService.publish('open', PreviousRequestsComponent);\r\n }\r\n}\r\n","@if (form?.header?.status?.['key'] === 'NEW') {\r\n <section\r\n class=\"main-sidenav main-sidenav-full mb-4\"\r\n\r\n >\r\n <div class=\"sidenav-title\">\r\n <div class=\"d-flex align-items-center gap-3 w-100\">\r\n <!-- <ds-button icon class=\"rotate-arrow\" size=\"small\" (click)=\"goBack()\" *ngIf=\"!isInMobileApp() && showBack\">\r\n <ds-icon icon=\"arrow-right\" class=\"fs-19 fc-black\"></ds-icon>\r\n </ds-button>-->\r\n\r\n <!-- <h3 class=\"flex-grow-0\">\r\n {{ formTitle }}\r\n </h3>-->\r\n\r\n <section>\r\n <p class=\"fs-14 fs-md-12 fw-normal fc-dark-gray mb-1\">\r\n {{ i18n.translate('Hello') }}\r\n {{ coreService.getShortName(form?.header?.requesterName) }}, {{ i18n.translate('welcomeBack') }}!\r\n </p>\r\n <h1 class=\"fs-26 fs-md-20 fw-bold fc-black d-flex align-items-center gap-2 mb-1\">\r\n {{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n </section>\r\n <div class=\"d-flex align-items-center justify-content-end gap-2 flex-grow-1\">\r\n @if (serviceFaq.length) {\r\n <ds-button size=\"small\" icon>\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n </ds-button>\r\n }\r\n <!-- <ds-button size=\"small\" icon (click)=\"openWorkflow()\">\r\n <ds-icon icon=\"bell-2-o\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </ds-button> -->\r\n @if (!isReadOnly) {\r\n <ds-button size=\"small\" icon (click)=\"showPreviousRequests()\">\r\n <ds-icon icon=\"clock\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </ds-button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- <header class=\"mb-4 mt-4 d-flex align-items-center justify-content-between align-items-end gap-2\">\r\n <section>\r\n <h6 class=\"fs-14 fs-md-12 fw-normal fc-dark-gray mb-0\">\r\n {{ i18n.translate('Hello') }}\r\n {{ coreService.getShortName(form?.header?.requesterName) }}, {{ i18n.translate('welcomeBack') }}!\r\n </h6>\r\n <h1 class=\"fs-26 fs-md-20 fw-bold fc-black d-flex align-items-center gap-2 mb-1\">\r\n {{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n </section>\r\n </header>-->\r\n} @else {\r\n\r\n <div class=\"w-100\">\r\n <section class=\"request-main-info {{statusClass(form?.header?.status?.['key'])}}\">\r\n <section class=\"request-info\">\r\n <div class=\"request-info--body\">\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1\">\r\n <img\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMjkiIHZpZXdCb3g9IjAgMCAzMCAyOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI1LjEgMEg0LjlDMi4yIDAgMCAyLjIgMCA0LjlWMjguNkgyNS4xQzI3LjggMjguNiAzMCAyNi40IDMwIDIzLjdWNC45QzMwIDIuMiAyNy44IDAgMjUuMSAwWk0yIDQuOUMyIDMuMyAzLjMgMiA0LjkgMkgyNS4xQzI2LjcgMiAyOCAzLjMgMjggNC45VjIzLjdDMjggMjUuMyAyNi43IDI2LjYgMjUuMSAyNi42SDJWNC45Wk0xMS41IDYuM0M3LjEgNi4zIDMuNSA5LjkgMy41IDE0LjNDMy41IDE4LjcgNy4xIDIyLjMgMTEuNSAyMi4zQzE1LjkgMjIuMyAxOS41IDE4LjcgMTkuNSAxNC4zQzE5LjUgOS45IDE1LjkgNi4zIDExLjUgNi4zWk0xNS4xIDE5QzE0LjEgMTkuOCAxMi44IDIwLjIgMTEuNSAyMC4yQzEwLjIgMjAuMiA4LjkgMTkuOCA3LjkgMTlDOC43IDE3LjcgMTAgMTcgMTEuNSAxN0MxMyAxNyAxNC40IDE3LjggMTUuMSAxOVpNMTMuMSAxMy40QzEzLjEgMTQuMyAxMi40IDE1IDExLjUgMTVDMTAuNiAxNSA5LjkgMTQuMyA5LjkgMTMuNEM5LjkgMTIuNSAxMC42IDExLjggMTEuNSAxMS44QzEyLjQgMTEuOCAxMy4xIDEyLjUgMTMuMSAxMy40Wk0xNS4xIDEzLjRDMTUuMSAxMS40IDEzLjUgOS44IDExLjUgOS44QzkuNSA5LjggNy45IDExLjQgNy45IDEzLjRDNy45IDE0LjIgOC4yIDE1IDguNyAxNS43QzcuOCAxNi4xIDcuMSAxNi44IDYuNSAxNy42QzUuOCAxNi42IDUuNSAxNS41IDUuNSAxNC4zQzUuNSAxMSA4LjIgOC4zIDExLjUgOC4zQzE0LjggOC4zIDE3LjUgMTEgMTcuNSAxNC4zQzE3LjUgMTUuNSAxNy4yIDE2LjYgMTYuNSAxNy42QzE1LjkgMTYuOCAxNS4yIDE2LjIgMTQuMyAxNS43QzE0LjggMTUuMSAxNS4xIDE0LjIgMTUuMSAxMy40Wk0yMSA5LjFDMjEgOC42IDIxLjQgOC4xIDIyIDguMUgyNS41QzI2IDguMSAyNi41IDguNSAyNi41IDkuMUMyNi41IDkuNiAyNi4xIDEwLjEgMjUuNSAxMC4xSDIyQzIxLjQgMTAuMSAyMSA5LjYgMjEgOS4xWk0yMSAxMi41QzIxIDEyIDIxLjQgMTEuNSAyMiAxMS41SDI1LjVDMjYgMTEuNSAyNi41IDExLjkgMjYuNSAxMi41QzI2LjUgMTMgMjYuMSAxMy41IDI1LjUgMTMuNUgyMkMyMS40IDEzLjUgMjEgMTMuMSAyMSAxMi41Wk0yMSAxNkMyMSAxNS41IDIxLjQgMTUgMjIgMTVIMjUuNUMyNiAxNSAyNi41IDE1LjQgMjYuNSAxNkMyNi41IDE2LjUgMjYuMSAxNyAyNS41IDE3SDIyQzIxLjQgMTcgMjEgMTYuNiAyMSAxNlpNMjUuNSAyMC41SDIyQzIxLjUgMjAuNSAyMSAyMC4xIDIxIDE5LjVDMjEgMTguOSAyMS40IDE4LjUgMjIgMTguNUgyNS41QzI2IDE4LjUgMjYuNSAxOC45IDI2LjUgMTkuNUMyNi41IDIwLjEgMjYuMSAyMC41IDI1LjUgMjAuNVoiIGZpbGw9IiNGRjM3NUUiLz4KPC9zdmc+Cg==\"/>\r\n <h4 class=\"fs-22 fs-md-16 fc-black fw-medium mb-0 flex-grow-1 line-height-1-2\">\r\n {{ formTitle }}\r\n </h4>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 request-info--status-action\">\r\n <div class=\"d-inline-flex flex-column align-items-end\">\r\n @if (!isLoading) {\r\n <ds-status\r\n status=\"{{statusClass(form?.header?.status?.['key'])}}\" class=\"header-status\">{{ form?.header?.status?.['value'] }}\r\n </ds-status>\r\n }\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <!-- <ds-button\r\n *ngIf=\"form?.inboxItem && (form?.inboxItem?.canRequestFeedback =='true'|| form?.inboxItem?.hasFeedback=='true')\"\r\n square icon size=\"small\">\r\n <ds-icon icon=\"chat-o\" class=\"fs-20 fs-md-17 fc-coral\">\r\n &lt;!&ndash; [ngClass]=\"{'fc-green':feedBackIcon == 'feedbackResponded' , 'fc-red': feedBackIcon == 'respondToFeedback' , 'fc-yellow': feedBackIcon == 'waitingFeedback'}\"&ndash;&gt;\r\n </ds-icon>\r\n </ds-button>-->\r\n <!-- history-->\r\n <ds-button\r\n *ngIf=\"form?.commentsDrop?.length > 0 && !isLoading\" square icon size=\"small\"\r\n (click)=\"onCommentsFormClick()\" class=\"has-comments\">\r\n <ds-icon icon=\"clock\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </ds-button>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"request-info--footer\">\r\n @if (!isLoading) {\r\n <ds-avatar\r\n image=\"{{form?.header?.requesterPhoto}}\" size=\"xx-small\"\r\n class=\"d-inline-flex cursor-pointer\" (click)=\"showUserInfo()\"></ds-avatar>\r\n }\r\n <div\r\n class=\"d-flex align-items-center flex-wrap flex-grow-1 gap-1 gap-sm-2 line-height-1 request-info--header__details\">\r\n <span\r\n [ngClass]=\"{'loading-bg loading-width': isLoading}\"\r\n class=\"fs-12 fw-medium d-none d-sm-inline-block\">{{ coreService.getShortName(form?.header?.['requesterName']) }}</span>\r\n <span class=\"fs-20\">&#8226;</span>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\"> {{ form?.header?.formId }}</span>\r\n <span class=\"fs-20\" *ngIf=\"creationDate\">&#8226;</span>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\"> {{ creationDate }}</span>\r\n </div>\r\n </div>\r\n </section>\r\n </section>\r\n\r\n </div>\r\n\r\n\r\n <!--<ng-container>\r\n <div class=\"d-flex align-items-center justify-content-end gap-2 my-2\">\r\n <ds-button\r\n *ngIf=\"form?.inboxItem && !form.sections[form.sections.length -1].header.readOnly && !isLoading\"\r\n square\r\n icon\r\n size=\"small\"\r\n [matMenuTriggerFor]=\"menu\"\r\n class=\"icon-btn-shadow\">\r\n <ds-icon\r\n [ngClass]=\"{'fc-purple' : (flagPriority === '0' || flagPriority === null),'fc-yellow' : flagPriority === '1','fc-green' : flagPriority === '2','fc-coral' : flagPriority === '3'}\"\r\n icon=\"flag-o\" class=\"fs-20 fs-md-17 fc-purple\">\r\n </ds-icon>\r\n </ds-button>\r\n <mat-menu #menu=\"matMenu\" panelClass=\"action-menu\">\r\n <button mat-menu-item (click)=\"setFlagPriority('0')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-purple fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('1')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-yellow fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('2')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-green fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('3')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n </mat-menu>\r\n\r\n <ng-content></ng-content>\r\n </div>\r\n <header class=\"service-header bc-white p-3 p-sm-4 py-4 gap-3 {{statusClass(form?.header?.status?.['key'])}}\">\r\n\r\n <div class=\"service-header-icon\">\r\n <img\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMjkiIHZpZXdCb3g9IjAgMCAzMCAyOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI1LjEgMEg0LjlDMi4yIDAgMCAyLjIgMCA0LjlWMjguNkgyNS4xQzI3LjggMjguNiAzMCAyNi40IDMwIDIzLjdWNC45QzMwIDIuMiAyNy44IDAgMjUuMSAwWk0yIDQuOUMyIDMuMyAzLjMgMiA0LjkgMkgyNS4xQzI2LjcgMiAyOCAzLjMgMjggNC45VjIzLjdDMjggMjUuMyAyNi43IDI2LjYgMjUuMSAyNi42SDJWNC45Wk0xMS41IDYuM0M3LjEgNi4zIDMuNSA5LjkgMy41IDE0LjNDMy41IDE4LjcgNy4xIDIyLjMgMTEuNSAyMi4zQzE1LjkgMjIuMyAxOS41IDE4LjcgMTkuNSAxNC4zQzE5LjUgOS45IDE1LjkgNi4zIDExLjUgNi4zWk0xNS4xIDE5QzE0LjEgMTkuOCAxMi44IDIwLjIgMTEuNSAyMC4yQzEwLjIgMjAuMiA4LjkgMTkuOCA3LjkgMTlDOC43IDE3LjcgMTAgMTcgMTEuNSAxN0MxMyAxNyAxNC40IDE3LjggMTUuMSAxOVpNMTMuMSAxMy40QzEzLjEgMTQuMyAxMi40IDE1IDExLjUgMTVDMTAuNiAxNSA5LjkgMTQuMyA5LjkgMTMuNEM5LjkgMTIuNSAxMC42IDExLjggMTEuNSAxMS44QzEyLjQgMTEuOCAxMy4xIDEyLjUgMTMuMSAxMy40Wk0xNS4xIDEzLjRDMTUuMSAxMS40IDEzLjUgOS44IDExLjUgOS44QzkuNSA5LjggNy45IDExLjQgNy45IDEzLjRDNy45IDE0LjIgOC4yIDE1IDguNyAxNS43QzcuOCAxNi4xIDcuMSAxNi44IDYuNSAxNy42QzUuOCAxNi42IDUuNSAxNS41IDUuNSAxNC4zQzUuNSAxMSA4LjIgOC4zIDExLjUgOC4zQzE0LjggOC4zIDE3LjUgMTEgMTcuNSAxNC4zQzE3LjUgMTUuNSAxNy4yIDE2LjYgMTYuNSAxNy42QzE1LjkgMTYuOCAxNS4yIDE2LjIgMTQuMyAxNS43QzE0LjggMTUuMSAxNS4xIDE0LjIgMTUuMSAxMy40Wk0yMSA5LjFDMjEgOC42IDIxLjQgOC4xIDIyIDguMUgyNS41QzI2IDguMSAyNi41IDguNSAyNi41IDkuMUMyNi41IDkuNiAyNi4xIDEwLjEgMjUuNSAxMC4xSDIyQzIxLjQgMTAuMSAyMSA5LjYgMjEgOS4xWk0yMSAxMi41QzIxIDEyIDIxLjQgMTEuNSAyMiAxMS41SDI1LjVDMjYgMTEuNSAyNi41IDExLjkgMjYuNSAxMi41QzI2LjUgMTMgMjYuMSAxMy41IDI1LjUgMTMuNUgyMkMyMS40IDEzLjUgMjEgMTMuMSAyMSAxMi41Wk0yMSAxNkMyMSAxNS41IDIxLjQgMTUgMjIgMTVIMjUuNUMyNiAxNSAyNi41IDE1LjQgMjYuNSAxNkMyNi41IDE2LjUgMjYuMSAxNyAyNS41IDE3SDIyQzIxLjQgMTcgMjEgMTYuNiAyMSAxNlpNMjUuNSAyMC41SDIyQzIxLjUgMjAuNSAyMSAyMC4xIDIxIDE5LjVDMjEgMTguOSAyMS40IDE4LjUgMjIgMTguNUgyNS41QzI2IDE4LjUgMjYuNSAxOC45IDI2LjUgMTkuNUMyNi41IDIwLjEgMjYuMSAyMC41IDI1LjUgMjAuNVoiIGZpbGw9IiNGRjM3NUUiLz4KPC9zdmc+Cg==\"/>\r\n </div>\r\n\r\n <div class=\"flex-grow-1 d-flex flex-column flex-sm-row align-items-sm-center gap-2\">\r\n <div class=\"flex-grow-1\">\r\n <h1 class=\"fs-20 fs-md-16 fw-bold fc-black header-title m-0\">{{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n <div class=\"header-user d-flex align-items-sm-center gap-2 mt-sm-1\">\r\n @if (!isLoading) {\r\n <ds-avatar\r\n image=\"{{form?.header?.requesterPhoto}}\" size=\"xx-small\"\r\n class=\"d-inline-flex cursor-pointer\" (click)=\"showUserInfo()\"></ds-avatar>\r\n }\r\n <span\r\n class=\"fs-12 text-truncate d-sm-block cursor-pointer\" (click)=\"showUserInfo()\"\r\n [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ coreService.getShortName(form?.header?.requesterName) }}</span>\r\n <mat-divider class=\"divider circle mx-2 d-none d-sm-block\"></mat-divider>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ form?.header?.formId }}</span>\r\n @if (creationDate) {\r\n <mat-divider class=\"divider circle mx-2 d-none d-sm-block\"></mat-divider>\r\n <span class=\"fs-14\" [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ creationDate }}</span>\r\n }\r\n </div>\r\n\r\n </div>\r\n <div class=\"header-actions d-flex flex-row flex-sm-column justify-content-between justify-content-sm-center gap-2 mt-2 mt-sm-0\">\r\n @if (!isLoading) {\r\n <ds-status\r\n status=\"{{statusClass(form?.header?.status?.['key'])}}\" class=\"header-status\">{{ form?.header?.status?.['value'] }}\r\n </ds-status>\r\n }\r\n <div class=\"d-flex align-items-center justify-content-end gap-2\">\r\n &lt;!&ndash; feedback&ndash;&gt;\r\n &lt;!&ndash; *ngIf=\"form?.inboxItem && (form?.inboxItem?.canRequestFeedback ==='true'|| form?.inboxItem?.hasFeedback==='true') && !isLoading\"&ndash;&gt;\r\n &lt;!&ndash; <ds-button\r\n square icon size=\"small\" (click)=\"feedback()\">\r\n <ds-icon\r\n icon=\"chat-o\" class=\"fs-20 fs-md-17 fc-coral\"\r\n [ngClass]=\"{'fc-green':feedBackIcon === 'feedbackResponded' , 'fc-red': feedBackIcon === 'respondToFeedback' , 'fc-yellow': feedBackIcon === 'waitingFeedback'}\">\r\n </ds-icon>\r\n </ds-button>&ndash;&gt;\r\n <ds-button\r\n *ngIf=\"form?.commentsDrop?.length > 0 && !isLoading\" square icon size=\"small\"\r\n (click)=\"onCommentsFormClick()\" class=\"has-comments\">\r\n <ds-icon icon=\"clock\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </ds-button>\r\n @if (showApprovalHistory) {\r\n <ng-container>\r\n <ds-button\r\n color=\"white\" shape=\"text\" square size=\"small\" [satPopoverAnchor]=\"workflow\"\r\n #workflowAnchor=\"satPopoverAnchor\" (click)=\"workflowAnchor.popover.open()\">\r\n <slot name=\"prefix\">\r\n <ds-icon icon=\"workflow\" class=\"fs-24\"></ds-icon>\r\n </slot>\r\n </ds-button>\r\n <sat-popover\r\n #workflow [anchor]=\"workflowAnchor\" [hasBackdrop]=\"true\" verticalAlign=\"below\"\r\n horizontalAlign=\"end\">\r\n <div class=\"default-popover p-3\" style=\"min-width: 330px;\">\r\n <ds-approvals *ngIf=\"approvalHistory\" class=\"popover-approvals\" approvalsData=\"{{approvals}}\">\r\n </ds-approvals>\r\n </div>\r\n </sat-popover>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </header>\r\n </ng-container>-->\r\n}\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\r\nimport * as Constants from '../../../constants';\r\nimport { Form } from '../../../interfaces';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-status',\r\n templateUrl: './status.component.html',\r\n styleUrls: ['./status.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n NgClass\r\n ],\r\n})\r\nexport class StatusComponent {\r\n @Input() form: Form;\r\n\r\n statusClass(status: string) {\r\n if (status === Constants.FORM_STATUS_REJECTED || status === Constants.FORM_STATUS_CANCELLED) {\r\n return {\r\n status: true,\r\n danger: status === Constants.FORM_STATUS_REJECTED || status === Constants.FORM_STATUS_CANCELLED\r\n };\r\n } else if (status === Constants.FORM_STATUS_PENDING) {\r\n return {\r\n status: true,\r\n warning: status === Constants.FORM_STATUS_PENDING\r\n };\r\n } else {\r\n return {\r\n status: true,\r\n success: status === Constants.FORM_STATUS_COMPLETED || Constants.FORM_STATUS_APPROVED\r\n };\r\n }\r\n }\r\n\r\n}\r\n","<div [ngClass]=\"statusClass(form.header.status?.['key'])\">{{form.header.status?.['value']}}</div>\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Input, OnInit} from '@angular/core';\r\nimport {CoreI18nService, CoreService, SidenavService} from '../../../services';\r\nimport {ComponentOutletIoDirective, DynamicModule} from 'ng-dynamic-component';\r\nimport {NgClass, NgComponentOutlet, NgIf} from '@angular/common';\r\nimport {MatExpansionModule, MatExpansionPanel} from '@angular/material/expansion';\r\nimport {SatPopoverModule} from '@ncstate/sat-popover';\r\nimport {Form, ProfileInfoDrop, Section} from '../../../interfaces';\r\nimport * as Constants from '../../../constants';\r\nimport {ProfileSectionComponent} from \"../profile-section/profile-section.component\";\r\nimport {format} from 'date-fns';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nconst StatusMap = {\r\n [Constants.FORM_STATUS_REJECTED]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_CANCELLED]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_REJECT]: {class: 'danger', icon: 'close'},\r\n [Constants.SECTION_STATUS_UNSATISFIED]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_CANCEL]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_PENDING]: {class: 'warning', icon: 'clock'},\r\n 'default': {class: 'success', icon: 'check'}\r\n}\r\n\r\n@Component({\r\n selector: 'app-form-section',\r\n templateUrl: './form-section.component.html',\r\n styleUrls: ['./form-section.component.scss'],\r\n standalone: true,\r\n imports: [\r\n MatExpansionModule,\r\n MatExpansionPanel,\r\n NgIf,\r\n NgComponentOutlet,\r\n ComponentOutletIoDirective,\r\n SatPopoverModule,\r\n NgClass,\r\n DynamicModule\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class FormSectionComponent\r\n implements OnInit {\r\n userType = 'recipient';\r\n popoverType = 'recipient';\r\n @Input() requestDetails: Section;\r\n userPopoverInfo: any = {};\r\n @Input() section: Section;\r\n @Input() form: Form;\r\n @Input() lov: any;\r\n @Input() isReadOnly: boolean;\r\n @Input() controllers: any;\r\n @Input() segmentDynamicLoaderService: any;\r\n @Input() sectionFormComponent: any = null;\r\n @Input() sectionName = 'SECTION_NAME.requestDetails';\r\n sectionStatusKey: string;\r\n recipient = {\r\n isShowing: false,\r\n profile: null\r\n };\r\n delegate = {\r\n isShowing: false,\r\n profile: null\r\n };\r\n public input;\r\n processingDate: string;\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor(\r\n public i18n: CoreI18nService,\r\n private readonly coreService: CoreService,\r\n private readonly sidenavService: SidenavService\r\n ) {\r\n }\r\n\r\n /**\r\n * Method to initialize various components when the component is initialized.\r\n *\r\n * @return {void}\r\n */\r\n ngOnInit() {\r\n this.initSectionFormComponent();\r\n this.initSectionName();\r\n this.initInput();\r\n this.initProcessingDate();\r\n }\r\n\r\n /**\r\n * Initializes the section form component by fetching it from the segment dynamic loader service.\r\n *\r\n * @return {void}\r\n */\r\n private initSectionFormComponent() {\r\n this.sectionFormComponent = this.segmentDynamicLoaderService.getComponent(\r\n this.section.id\r\n );\r\n }\r\n\r\n /**\r\n * Initializes the section name based on the provided section data.\r\n * If the section's body contains a 'stageName' property, the section name is set to the value of that property.\r\n * Otherwise, the section name is retrieved using the segmentDynamicLoaderService based on the section ID.\r\n *\r\n * @return {void}\r\n */\r\n private initSectionName() {\r\n if (this.section.body.details?.['stageName']) {\r\n this.sectionName = this.section.body.details['stageName']?.value ??this.section.body.details['stageName'];\r\n } else {\r\n this.sectionName = this.segmentDynamicLoaderService.getSectionName(this.section.id);\r\n }\r\n }\r\n\r\n /**\r\n * Initializes the input object with the provided values for read-only status, list of values, section, and form.\r\n *\r\n * @return {void}\r\n */\r\n private initInput() {\r\n this.input = {\r\n isReadOnly: this.isReadOnly,\r\n lov: this.lov,\r\n section: this.section,\r\n form: this.form\r\n };\r\n }\r\n\r\n /**\r\n * Initializes the processing date based on the section's header processing date.\r\n * If the processing date is available in the section header, it formats the processing date\r\n * and assigns it to the processingDate property of the instance.\r\n *\r\n * @return {void}\r\n */\r\n private initProcessingDate() {\r\n if (this.section?.header?.processingDate) {\r\n this.processingDate = format(new Date(this.section.header.processingDate), \"dd/MM/yyyy hh:mm:ss\");\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Check if the section is expanded.\r\n *\r\n * @return {boolean} Returns true if the section is expanded, false otherwise.\r\n */\r\n get isExpanded(): boolean {\r\n const hasSections = Boolean(this.form?.sections?.length);\r\n const isAnySectionExpandable = hasSections && this.form.sections.some(section => 'expandStage' in (section?.body?.details || {}));\r\n return isAnySectionExpandable ? (this.section?.body?.details?.['expandStage'] === 'true') : true;\r\n }\r\n\r\n /**\r\n * Create a ProfileInfoDrop object from the response object.\r\n *\r\n * @param {any} response - The response object containing user profile information.\r\n *\r\n * @return {ProfileInfoDrop} A ProfileInfoDrop object created from the response data.\r\n */\r\n private createUserProfileFromResponse(response: any): ProfileInfoDrop {\r\n const user = response?.[\"Users\"][0];\r\n return new ProfileInfoDrop(\r\n false,\r\n user?.employeeNumber,\r\n user?.email,\r\n user?.name,\r\n user?.generalDepartment?.name,\r\n user?.position?.name,\r\n user?.sector?.name,\r\n user?.department?.name,\r\n user?.generalDepartment?.code,\r\n user?.location,\r\n user?.nationality?.desc,\r\n user?.contact?.mobile,\r\n user?.manager?.name,\r\n user?.seniorSectorName?.name\r\n );\r\n }\r\n\r\n /**\r\n * Method to open or create a user profile.\r\n *\r\n * @param {ProfileInfoDrop} userData - The user profile data to open or create.\r\n * @param {string} personType - The type of person this profile belongs to.\r\n *\r\n * @return {void}\r\n */\r\n private openOrCreateUserProfile(userData: ProfileInfoDrop, personType: string) {\r\n this.sidenavService.data = userData;\r\n this.userPopoverInfo = userData;\r\n this[personType].profile = userData;\r\n this.sidenavService.publish('open', ProfileSectionComponent);\r\n }\r\n\r\n /**\r\n * Toggles the display of small profile information for a given person type\r\n *\r\n * @param {any} event - The event that triggered the toggle\r\n * @param {string} personType - The type of person for which to display the profile information\r\n *\r\n * @return {void}\r\n */\r\n toggleSmallProfileInfo(event: any, personType: string): void {\r\n this.userType = personType;\r\n event.stopPropagation();\r\n let userInfo = this[personType];\r\n if (!userInfo.profile) {\r\n this.popoverType = personType;\r\n let userEmail = this.getUserEmail(personType);\r\n this.fetchAndSetUserProfile(userEmail, personType);\r\n } else {\r\n this.openOrCreateUserProfile(userInfo.profile, personType);\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the email of the user based on the personType parameter.\r\n *\r\n * @param {string} personType - Type of the person ('recipient' or others).\r\n * @return {string} - The email address of the user.\r\n */\r\n private getUserEmail(personType: string): string {\r\n return (personType === 'recipient'\r\n ? this.section.header.personToThumbnail.split('=')[1]\r\n : this?.section?.header?.delegatedToThumbnail.split('=')[1]\r\n );\r\n }\r\n\r\n /**\r\n * Fetches the user profile using the provided user email and person type, then sets the profile.\r\n *\r\n * @param {string} userEmail - The email of the user whose profile is to be fetched and set.\r\n * @param {string} personType - The type of person (e.g., employee, customer) for whom the profile is being fetched.\r\n *\r\n * @return {void}\r\n */\r\n private fetchAndSetUserProfile(userEmail: string, personType: string): void {\r\n this.coreService.employeeProfile(userEmail).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((response: any) => {\r\n if (response) {\r\n let userData = this.createUserProfileFromResponse(response);\r\n this.openOrCreateUserProfile(userData, personType);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Returns the CSS class associated with the input status.\r\n *\r\n * @param {string} status - The status for which the CSS class is needed.\r\n * @return {string} - The CSS class corresponding to the given status.\r\n */\r\n statusClass(status: string): string {\r\n // status = status ? status.toLowerCase() : '';\r\n let statusStrategy = StatusMap[status] || StatusMap['default'];\r\n return statusStrategy.class;\r\n }\r\n\r\n /**\r\n * Returns the icon associated with the provided status.\r\n *\r\n * @param {string} status - The status for which to retrieve the icon.\r\n * @return {string} The icon corresponding to the provided status.\r\n */\r\n statusIcon(status: string): string {\r\n status = status ? status.toLowerCase() : '';\r\n let statusStrategy = StatusMap[status] || StatusMap['default'];\r\n return statusStrategy.icon;\r\n }\r\n}\r\n","<mat-expansion-panel class=\"mb-4\" [expanded]=\"isExpanded\" hideToggle #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusClass(sectionStatusKey)}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIcon(sectionStatusKey)}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n @if (section.header?.processedBy) {\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block mt-1\">\r\n {{ processingDate }}\r\n </bdi>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n @if (!section?.body?.details?.['stage0']?.['isStage0'] || section?.body?.details?.['stage0']?.['isStage0'] === 'false') {\r\n <ng-container>\r\n @if (section?.header?.personTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'recipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n @if (!section?.header?.delegatedTo) {\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\"\r\n [ngClass]=\"{'panel-user-only': !section?.header?.delegatedTo}\"\r\n >{{ section?.header?.personTo }}</span>\r\n }\r\n </div>\r\n @if (section?.header?.delegatedTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"/>\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n\r\n @if (section?.body?.details?.['decision']?.key) {\r\n <ds-status\r\n class=\"main-status\"\r\n status=\"{{statusClass(section?.body?.details?.['decision']?.key)}}\">{{ section?.body?.details?.['decision']?.value }}\r\n </ds-status>\r\n }\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n @if (approvalPanel.expanded) {\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n } @else {\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n }\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"border-top pt-4\">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\r\nimport { CoreI18nService } from '../../../services';\r\nimport { Form, Section } from '../../../interfaces';\r\nimport {MatAccordion, MatExpansionModule, MatExpansionPanel} from '@angular/material/expansion';\r\n\r\n@Component({\r\n selector: 'app-main-request-details',\r\n templateUrl: './main-request-details.component.html',\r\n styleUrls: ['./main-request-details.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n MatExpansionModule,\r\n MatAccordion,\r\n MatExpansionPanel\r\n ]\r\n})\r\nexport class MainRequestDetailsComponent {\r\n @Input() section: Section;\r\n @Input() lov: any;\r\n @Input() form: Form;\r\n constructor(public i18n: CoreI18nService) {}\r\n\r\n get isExpanded(): boolean {\r\n return this.section?.body?.details?.['expandStage'] === 'true';\r\n }\r\n}\r\n","<mat-accordion class=\"primary-accordion main-request-accordion border-top\">\r\n <mat-expansion-panel\r\n [expanded]=\"isExpanded || form?.sections?.length === 1\"\r\n class=\"mb-3\"\r\n hideToggle\r\n #requestPanel=\"matExpansionPanel\"\r\n >\r\n <mat-expansion-panel-header>\r\n <h2 class=\"fs-16 fw-medium fc-coral m-0 flex-grow-1\">\r\n {{ i18n.translate(\"requestDetailsTitle\") }}\r\n </h2>\r\n @if (requestPanel.expanded) {\r\n <div class=\"d-inline-flex align-items-center gap-2\">\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n </div>\r\n } @else {\r\n <div class=\"d-inline-flex align-items-center gap-2\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </div>\r\n }\r\n </mat-expansion-panel-header>\r\n <section class=\"default-box box-shadow p-4 rounded-4\">\r\n <ng-content></ng-content>\r\n </section>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n","import {ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, EventEmitter, inject, Input, Output, ViewChild} from '@angular/core';\r\nimport * as constants from '../../../constants';\r\nimport {FormsModule, NgForm} from '@angular/forms';\r\nimport {Form, Section} from '../../../interfaces';\r\nimport {CoreI18nService} from '../../../services';\r\nimport {NgClass, NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\r\nimport {MatAccordion} from '@angular/material/expansion';\r\nimport {FormSectionComponent} from '../form-section/form-section.component';\r\nimport {MainRequestDetailsComponent} from '../main-request-details/main-request-details.component';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-workflow-section',\r\n templateUrl: './workflow-section.component.html',\r\n styleUrls: ['./workflow-section.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n NgClass,\r\n MatAccordion,\r\n NgTemplateOutlet,\r\n FormSectionComponent,\r\n MainRequestDetailsComponent,\r\n FormsModule\r\n ],\r\n standalone: true\r\n})\r\nexport class WorkflowSectionComponent {\r\n @ViewChild('f') public formStateObject: NgForm;\r\n @Output() sectionSubmitted: EventEmitter<any> = new EventEmitter();\r\n @Input() sections: Section[];\r\n @Input() isReadOnly: boolean;\r\n @Input() isLoading: boolean;\r\n @Input() form: Form;\r\n @Input() contentClass = 'default-box box-shadow p-4';\r\n startedListener = false;\r\n @Input() sectionsController: any;\r\n showButtonMenu = false;\r\n @Input() segmentDynamicLoaderService = null;\r\n @Input() sectionFormComponent = null;\r\n @Input() sectionName = constants.SECTION_ID_REQUEST_DETAILS;\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor(\r\n public i18n: CoreI18nService,\r\n private cdRef: ChangeDetectorRef,\r\n ) {\r\n/* _listenerService.listen().subscribe((result: any) => {\r\n if (result?.function == 'resetForm') {\r\n this.resetForm();\r\n } else if (result?.function == 'onSubmit') {\r\n const sectionSize = this.sections.length - 1;\r\n const section = this.sections[sectionSize];\r\n const data = result.data ? result.data : section;\r\n this.onSubmit(result?.action, data);\r\n }\r\n });*/\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.formStateObject && this.form && !this.startedListener) {\r\n this.formStateObject.valueChanges.pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n /* istanbul ignore next */\r\n (form) => {\r\n Object.keys(form).forEach((key) => {\r\n if (\r\n this.sections[this.sections.length - 1].body.details[key] !==\r\n form[key] &&\r\n form[key] !== undefined\r\n )\r\n this.sections[this.sections.length - 1].body.details[key] =\r\n form[key];\r\n });\r\n }\r\n );\r\n this.sectionsController = this.formStateObject.controls;\r\n this.startedListener = true;\r\n }\r\n this.checkButtons();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n/* isSubmitting = {};\r\n disableButtons = false;*/\r\n\r\n/* onSubmit(action: any, section: any) {\r\n const sectionSize = this.sections.length - 1;\r\n let sectionDecision = this.sections[sectionSize].body.details.decision;\r\n if (sectionDecision && action === 'SUBMIT') {\r\n sectionDecision = { key: action };\r\n }\r\n if (sectionDecision && action !== 'SUBMIT') {\r\n sectionDecision = { key: action };\r\n }\r\n this.sections[sectionSize].body.details.decision = sectionDecision;\r\n this.profileRequesterService.isSubmitting[action] = true;\r\n this.profileRequesterService.disableButtons = true;\r\n this.stateMachineService\r\n .dispatch(\r\n constants.STATE_MACHINE_ACTION_SUBMIT_FORM,\r\n section,\r\n action\r\n )\r\n .then((form: any) => {\r\n this.profileRequesterService.isSubmitting[action] = true;\r\n this.profileRequesterService.disableButtons = true;\r\n const obj = {\r\n form: form,\r\n action: action\r\n };\r\n this.sectionSubmitted.emit(obj);\r\n });\r\n }*/\r\n\r\n/* resetForm() {\r\n this.formStateObject.reset();\r\n this.resetPropagator.propagate();\r\n }*/\r\n\r\n get isExpandableFromBackend(): boolean {\r\n return this.form?.sections?.length && this.form.sections.some(section => 'expandStage' in section?.body?.details);\r\n }\r\n\r\n buttonTypes(type) {\r\n switch (type) {\r\n case 'APPROVE':\r\n return '';\r\n case 'SENDBACK':\r\n return 'red';\r\n case 'REJECT':\r\n return 'red';\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n checkButtons() {\r\n const options = this.form?.lovs?.decision?.options;\r\n if (!Array.isArray(options)) return;\r\n options.forEach((item) => {\r\n if (\r\n item?.value != 'APPROVE' &&\r\n item?.value != 'REJECT' &&\r\n item?.value != 'SENDBACK' &&\r\n item?.value != 'SUBMIT' &&\r\n item?.value != 'CANCEL'\r\n ) {\r\n this.showButtonMenu = true;\r\n }\r\n });\r\n }\r\n\r\n get hasStage0(): boolean {\r\n return this.sections?.[1]?.body?.details?.stage0?.isStage0 === 'true';\r\n }\r\n}\r\n","<form #f=\"ngForm\" autocomplete=\"off\">\r\n @if (form?.header?.status?.key === 'NEW') {\r\n <section class=\"default-box box-shadow p-4 rounded-4\">\r\n <ng-container *ngTemplateOutlet=\"contentReqDet\"></ng-container>\r\n </section>\r\n } @else {\r\n <div class=\"mt-n3\" id=\"accordion\" role=\"tablist\"\r\n aria-multiselectable=\"true\">\r\n @if (hasStage0) {\r\n <app-form-section \r\n class=\"app-form-section\" \r\n [segmentDynamicLoaderService]=\"segmentDynamicLoaderService\" \r\n [section]=\"sections[1]\" \r\n [lov]=\"form?.lovs\"\r\n [isReadOnly]=\"sections[1].header.readOnly\" \r\n [form]=\"form\" \r\n [controllers]=\"sectionsController\"\r\n >\r\n </app-form-section>\r\n }\r\n <app-main-request-details [lov]=\"form?.lovs\" [form]=\"form\" [section]=\"form?.sections[0]\">\r\n <ng-container *ngTemplateOutlet=\"contentReqDet\"></ng-container>\r\n </app-main-request-details>\r\n @if (hasStage0 ? form?.sections.length > 2 : form?.sections.length > 1) {\r\n <header class=\"header-line fs-12 fw-medium fc-dark-gray mt-sm-5 mt-4 mb-4\">\r\n {{i18n.translate('Approvals')}}\r\n </header>\r\n }\r\n <mat-accordion class=\"primary-accordion main-approval\">\r\n @for (section of form?.sections; track $index) {\r\n @if (hasStage0 ? $index > 1 : $index > 0) {\r\n <app-form-section \r\n class=\"app-form-section\" \r\n [segmentDynamicLoaderService]=\"segmentDynamicLoaderService\" \r\n [section]= \"section\" \r\n [lov]=\"form?.lovs\"\r\n [isReadOnly]=\"section.header.readOnly\" \r\n [form]=\"form\" \r\n [controllers]=\"sectionsController\"\r\n >\r\n </app-form-section>\r\n }\r\n }\r\n </mat-accordion>\r\n </div>\r\n }\r\n</form>\r\n\r\n\r\n<ng-template #contentReqDet><ng-content></ng-content></ng-template>\r\n","import {CommonModule} from '@angular/common';\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA, Inject, PLATFORM_ID} from '@angular/core';\r\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\r\nimport {MatMenuModule} from '@angular/material/menu';\r\nimport {MatToolbarModule} from '@angular/material/toolbar';\r\nimport {Router, RouterModule} from '@angular/router';\r\nimport {Subscription} from 'rxjs';\r\nimport {CoreI18nService, SidenavService} from '../../../../services';\r\nimport * as Constants from '../../../../constants';\r\nimport {CoreService} from \"../../../../services\";\r\n\r\n\r\n@Component({\r\n selector: 'app-header',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n MatMenuModule,\r\n MatToolbarModule\r\n ],\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class HeaderComponent {\r\n search = new FormControl('');\r\n sidenavSubscription!: Subscription;\r\n isSidenavOpened = false;\r\n device = '';\r\n isMobile!: boolean;\r\n userData: any;\r\n userName: any;\r\n\r\n constructor(\r\n public readonly translate: CoreI18nService,\r\n private sidenavService: SidenavService,\r\n public coreService: CoreService,\r\n private router: Router,\r\n @Inject(PLATFORM_ID) private platformId: any\r\n ) {\r\n this.device = navigator.userAgent;\r\n\r\n if (this.isMobile) {\r\n document.documentElement.classList.add('inside-mobile-app');\r\n }\r\n }\r\n\r\n\r\n setLanguage(): void {\r\n const targetLang = this.translate.getLanguage() === 'en' ? 'ar' : 'en';\r\n let url = location.origin + `/${targetLang}/group/i-gate/asset-management`;\r\n window.open(url, '_self');\r\n }\r\n\r\n logout() {\r\n let logoutUrl = Constants.LOGOUT_URL;\r\n localStorage.removeItem('token');\r\n localStorage.removeItem('userName');\r\n localStorage.removeItem('user');\r\n const userSelectedLanguage = localStorage.getItem('language') ?? 'en';\r\n sessionStorage.clear();\r\n localStorage.setItem('language', userSelectedLanguage);\r\n window.open(logoutUrl, '_self');\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n this.sidenavSubscription = this.sidenavService.sideNavOpened.subscribe((val) => {\r\n this.isSidenavOpened = val;\r\n });\r\n }\r\n\r\n\r\n toggleSideNav() {\r\n document.documentElement.classList.toggle('main-sidenav-opened');\r\n this.sidenavService.sideNavOpened.next(!this.isSidenavOpened);\r\n }\r\n\r\n protected readonly location = location;\r\n}\r\n","<ng-container *ngIf=\"!isMobile\">\r\n <mat-toolbar\r\n class=\"align-items-center justify-content-between gap-3 border-bottom\"\r\n >\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button\r\n shape=\"flat\"\r\n icon\r\n color=\"light-gray\"\r\n square\r\n (click)=\"toggleSideNav()\"\r\n >\r\n <ds-icon icon=\"burger-menu-1\" class=\"fs-24 fc-dark-gray\"></ds-icon>\r\n </ds-button>\r\n\r\n <a [href]=\"location.origin\">\r\n <figure class=\"m-0 d-flex\">\r\n <img class=\"main-logo\" src=\"assets/images/hub.svg\" alt=\"\" />\r\n </figure>\r\n </a>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button\r\n shape=\"flat\"\r\n color=\"light-gray\"\r\n class=\"user-menu-btn\"\r\n [matMenuTriggerFor]=\"userMenu\"\r\n >\r\n <ds-avatar\r\n image=\"/group/i-gate/wm-bpm/forms/-/proxy/portrait?email={{userData?.email}}\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user2.jpg'\"\r\n slot=\"prefix\"\r\n class=\"avatar\"\r\n >\r\n </ds-avatar>\r\n\r\n <span class=\"fs-14 fw-medium fc-black\">\r\n {{ coreService.getShortName( coreService?.loggedInUserData?.['name']) }}\r\n </span>\r\n\r\n <ds-icon\r\n slot=\"suffix\"\r\n icon=\"arrow\"\r\n class=\"fc-dark-gray fs-16\"\r\n ></ds-icon>\r\n </ds-button>\r\n </div>\r\n </mat-toolbar>\r\n\r\n <!-- User Menu -->\r\n <mat-menu #userMenu=\"matMenu\" class=\"user-menu\">\r\n <div mat-menu-item>\r\n <span class=\"fs-14\">{{ translate.translate('welcome') }}, </span>\r\n <br />\r\n <span class=\"fs-14 fw-medium line-height-1\">{{ coreService.getShortName( coreService?.loggedInUserData?.['name']) }}</span>\r\n </div>\r\n <button mat-menu-item (click)=\"setLanguage()\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <ds-icon icon=\"globe\" class=\"fs-25 fc-purple\"></ds-icon>\r\n <span class=\"fs-14 fw-medium fc-black\">{{\r\n translate.translate('otherLang')\r\n }}</span>\r\n </div>\r\n </button>\r\n <button mat-menu-item (click)=\"logout()\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <ds-icon icon=\"logout\" class=\"fs-25 fc-red\"></ds-icon>\r\n <span class=\"fs-14 fw-medium fc-black\">{{\r\n translate.translate('logout')\r\n }}</span>\r\n </div>\r\n </button>\r\n </mat-menu>\r\n</ng-container>\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, Input, ViewChild} from '@angular/core';\r\nimport {Router, RouterLink, RouterLinkActive} from '@angular/router';\r\nimport {MatTooltipModule} from '@angular/material/tooltip';\r\nimport {MatMenu, MatMenuTrigger} from '@angular/material/menu';\r\nimport {SidenavService} from '../../../../services';\r\n\r\n@Component({\r\n selector: 'app-side-nav',\r\n standalone: true,\r\n imports: [RouterLinkActive, RouterLink, MatTooltipModule, MatMenu, MatMenuTrigger],\r\n templateUrl: './side-nav.component.html',\r\n styleUrl: './side-nav.component.scss',\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class SideNavComponent {\r\n\r\n @Input() isOpened = false;\r\n lang: any = '';\r\n Menu = [\r\n {\r\n name: 'Home',\r\n routerLink: '/group/hub/home1',\r\n icon: 'home-o',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Inbox',\r\n routerLink: '/group/hub/inbox',\r\n icon: 'mail-o',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Dobox',\r\n routerLink: '/group/hub/dobox',\r\n icon: 'chick-sqaure',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Chat',\r\n routerLink: '/group/hub/chat',\r\n icon: 'chat-circle-2',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Mail',\r\n routerLink: '/group/hub/mail',\r\n icon: 'mail-f',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Meetings',\r\n routerLink: '/group/hub/meetings',\r\n icon: 'calendar',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Offers',\r\n routerLink: '/group/hub/hub-offers',\r\n icon: 'voucher',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'stc today',\r\n routerLink: '/group/hub/stc-profile',\r\n icon: 'stc-profile-o',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Articles',\r\n routerLink: '/group/hub/articles',\r\n icon: 'file-returned',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Timeline',\r\n routerLink: '/group/hub/timeline',\r\n icon: 'list-dots',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'eforms',\r\n routerLink: '/group/hub/efroms',\r\n icon: 'file-o',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Apps',\r\n routerLink: '/group/hub/apps',\r\n icon: 'card',\r\n matmenu: false,\r\n List: []\r\n },\r\n ];\r\n\r\n constructor(public sidenavService: SidenavService, private router: Router) {}\r\n\r\n\r\n closeSidenav() {\r\n document.documentElement.classList.remove('main-sidenav-opened');\r\n // this.sidenavService.sideNavOpened.next(false);\r\n }\r\n\r\n navigateTo(item: any) {\r\n window.location.href = item.routerLink;\r\n }\r\n\r\n innerWidth: any;\r\n menuMobile!: boolean;\r\n @ViewChild('MenuTrigger') MenuTrigger!: MatMenuTrigger;\r\n\r\n ngOnInit() {\r\n this.innerWidth = window.innerWidth;\r\n if (this.innerWidth < 1024) {\r\n this.menuMobile = true;\r\n } else {\r\n this.menuMobile = false;\r\n }\r\n }\r\n\r\n mouseover(matmenu: boolean, i: number) {\r\n if (!this.menuMobile) {\r\n if (matmenu) {\r\n document.documentElement.classList.remove('main-overlay-closed');\r\n // this.MenuTrigger[i].openMenu();\r\n } else {\r\n document.documentElement.classList.add('main-overlay-closed');\r\n // this.MenuTrigger[i].closeMenu();\r\n }\r\n }\r\n }\r\n\r\n goto(url?: string, matmenu?: boolean) {\r\n if (!this.menuMobile) {\r\n if (matmenu) {\r\n document.documentElement.classList.remove('main-overlay-closed');\r\n } else {\r\n document.documentElement.classList.add('main-overlay-closed');\r\n }\r\n }\r\n this.router.navigate([url]);\r\n }\r\n}\r\n","<aside>\r\n <div class=\"header d-flex d-lg-none\">\r\n <div class=\"d-flex h-100 mt-auto justify-content-between w-100\">\r\n <h1 class=\"fs-26 fw-bold fc-white logo\">academy</h1>\r\n <ds-button size=\"small\" color=\"purple\" class=\"close purple\" (click)=\"closeSidenav()\">\r\n <ds-icon icon=\"close\" class=\"fs-15 fc-white\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n </div>\r\n <nav>\r\n <ul>\r\n <!-- (mouseenter)=\"menuMobile ? null : MenuTrigger.openMenu()\"-->\r\n <!-- (click)=\"goto(item.routerLink,item.matmenu) -->\r\n @for (item of Menu; track $index) {\r\n @if (item.matmenu) {\r\n <li\r\n (click)=\"closeSidenav();navigateTo(item)\" matTooltipPosition=\"right\" matTooltip=\"{{item.name }}\"\r\n [routerLinkActive]=\"'active'\" (click)=\"goto(item.routerLink!,item.matmenu)\" #MenuTrigger=\"matMenuTrigger\"\r\n [matMenuTriggerFor]=\"menuMenu\" [routerLinkActiveOptions]=\"{ exact: true }\" class=\"cursor-pointer\">\r\n <ds-icon icon=\"{{item.icon}}\" class=\"icon\"></ds-icon>\r\n <span class=\"menu-label\">\r\n {{ item.name }}\r\n </span>\r\n </li>\r\n <mat-menu #menuMenu=\"matMenu\" class=\"aside-menu visible-{{item.matmenu}}\">\r\n <app-mat-menu [title]=\"item.name \" [icon]=\"item.icon\" [list]=\"item.List\"></app-mat-menu>\r\n </mat-menu>\r\n } @else {\r\n <li\r\n (click)=\"closeSidenav();navigateTo(item)\" matTooltipPosition=\"right\" matTooltip=\"{{item.name }}\"\r\n [routerLinkActive]=\"'active'\" [routerLinkActiveOptions]=\"{ exact: true }\" class=\"cursor-pointer\">\r\n <ds-icon icon=\"{{item.icon}}\" class=\"icon\"></ds-icon>\r\n <span class=\"menu-label\">\r\n {{ item.name }}\r\n </span>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n </nav>\r\n</aside>\r\n","import {DOCUMENT, NgClass, NgComponentOutlet, NgIf} from '@angular/common'\r\nimport {Component, Inject, Input, OnDestroy, OnInit, ViewChild} from \"@angular/core\";\r\nimport {MatSidenav, MatSidenavModule} from '@angular/material/sidenav'\r\nimport {Router, RouterOutlet} from \"@angular/router\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {SidenavService} from \"../../../services\";\r\nimport {HeaderComponent} from \"./header/header.component\";\r\nimport {SideNavComponent} from \"./side-nav/side-nav.component\";\r\nimport {WorkflowSectionComponent} from \"../workflow-section/workflow-section.component\";\r\nimport {Form} from \"../../../interfaces\";\r\nimport {ServiceHeaderComponent} from \"../service-header/service-header.component\";\r\n\r\n@Component({\r\n selector: \"core-layout\",\r\n standalone: true,\r\n imports: [HeaderComponent, SideNavComponent, MatSidenavModule, RouterOutlet, NgComponentOutlet, WorkflowSectionComponent, ServiceHeaderComponent, NgClass, NgIf],\r\n templateUrl: \"./layout.component.html\",\r\n styleUrl: \"./layout.component.scss\",\r\n})\r\nexport class LayoutComponent implements OnInit, OnDestroy {\r\n @ViewChild(\"sidenav\", {static: true}) public sidenav!: MatSidenav;\r\n sideContent: any;\r\n private sidenavSubscription!: Subscription;\r\n @Input() form: Form;\r\n @Input() hubContainerMini: boolean = true;\r\n @Input() formTitle: string\r\n @Input() isLoading = false;\r\n @Input() serviceBrief: any[] = [];\r\n\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private readonly document: Document,\r\n private readonly router: Router,\r\n private readonly sidenavService: SidenavService,\r\n ) {}\r\n\r\n\r\n ngOnInit(): void {\r\n this.sidenavSubscription = this.sidenavService.subject.subscribe(\r\n (value: any) => {\r\n this.sideContent = value.componentName;\r\n this.sidenav.mode = value.mode;\r\n this.sidenav.position = value.position;\r\n if (value.eventName === \"open\") {\r\n this.openSideNav();\r\n } else {\r\n this.closeSideNav();\r\n }\r\n }\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.sidenavSubscription) {\r\n this.sidenavSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n onClose() {\r\n this.document.body.classList.remove(\"NoScroll\");\r\n this.document.documentElement.classList.remove(\"NoScroll\");\r\n }\r\n\r\n backdropClick() {\r\n this.sidenav.close().then(r => {});\r\n this.sidenavService.closeSidenav();\r\n this.document.body.classList.remove(\"NoScroll\");\r\n this.document.documentElement.classList.remove(\"NoScroll\");\r\n }\r\n\r\n private openSideNav() {\r\n this.sidenav.open().then(r => {});\r\n this.document.body.classList.add(\"NoScroll\");\r\n this.document.documentElement.classList.add(\"NoScroll\");\r\n }\r\n\r\n private closeSideNav() {\r\n this.sidenav.close().then(r => {});\r\n }\r\n}\r\n","<!--<app-header></app-header>-->\r\n<section class=\"d-flex\">\r\n<!-- <app-side-nav></app-side-nav>-->\r\n <mat-sidenav-container\r\n class=\"flex-grow-1\"\r\n [hasBackdrop]=\"true\"\r\n (backdropClick)=\"backdropClick()\"\r\n >\r\n <mat-sidenav\r\n #sidenav\r\n autoFocus=\"false\"\r\n fixedInViewport\r\n [position]=\"'end'\"\r\n (closedStart)=\"onClose()\"\r\n >\r\n <ng-container *ngComponentOutlet=\"sideContent\">\r\n<!-- <app-side-nav></app-side-nav>-->\r\n </ng-container>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <main\r\n class=\"hadPadding service-wrapper\"\r\n [ngClass]=\"hubContainerMini ? 'hub-container-mini' : 'hub-container'\">\r\n\r\n <ng-content ></ng-content>\r\n <ng-content select=\"[workflow]\"></ng-content>\r\n\r\n </main>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</section>\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Input, NO_ERRORS_SCHEMA, OnInit} from '@angular/core';\r\nimport {Form, Section} from \"../../interfaces\";\r\nimport {ActionStateService, CoreI18nService} from \"../../services\";\r\nimport {NgClass} from \"@angular/common\";\r\nimport {\r\n ActionButtonsComponent,\r\n AttachmentSectionComponent,\r\n CheckBoxComponent,\r\n CustomSearchableComponent,\r\n DatePickerComponent,\r\n DateRangePickerComponent,\r\n InputComponent,\r\n InputCurrencyComponent,\r\n InputEmailComponent,\r\n InputNumberComponent,\r\n InputTelephoneComponent,\r\n RadioComponent,\r\n SearchEmployeeComponent,\r\n TextareaComponent\r\n} from '../../components/shared-components';\r\nimport {RegexPatterns} from '../../regex/regex-patterns';\r\nimport {ToggleButtonComponent} from \"../../components/shared-components\";\r\nimport {TableComponent} from '../../components/shared-components/table/table.component';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {FormBuilder, FormGroup, ReactiveFormsModule, Validators, FormControl, ValidatorFn, AbstractControl} from \"@angular/forms\";\r\nimport {DocsUploaderComponent} from \"../../components/shared-components\";\r\nimport {TranslatePipe} from '../../pipes/translate.pipe';\r\n\r\n// import { TranslatePipe } from '../../pipes/translate.pipe';\r\n\r\n@Component({\r\n selector: 'app-request-details-section',\r\n templateUrl: './request-details-section.component.html',\r\n styleUrls: ['./request-details-section.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\r\n imports: [\r\n NgClass,\r\n InputComponent,\r\n ActionButtonsComponent,\r\n ReactiveFormsModule,\r\n CustomSearchableComponent,\r\n CheckBoxComponent,\r\n TextareaComponent,\r\n InputCurrencyComponent,\r\n DatePickerComponent,\r\n DateRangePickerComponent,\r\n InputEmailComponent,\r\n InputNumberComponent,\r\n RadioComponent,\r\n ToggleButtonComponent,\r\n InputTelephoneComponent,\r\n DocsUploaderComponent,\r\n SearchEmployeeComponent,\r\n AttachmentSectionComponent,\r\n TableComponent,\r\n TranslatePipe\r\n ]\r\n})\r\n\r\n\r\nexport class RequestDetailsSectionComponent implements OnInit {\r\n\r\n @Input() isReadOnly: boolean;\r\n @Input() section: Section;\r\n @Input() form: Form;\r\n @Input() lov: any;\r\n isLoading: boolean = false;\r\n\r\n @Input() className: string = \"info-section\";\r\n formGroup: FormGroup;\r\n options: string[] = ['Option 1', 'Option 2', 'Option 3'];\r\n private readonly DEFAULT_PAGE_SIZE = 10;\r\n private readonly DEFAULT_PAGE_NUMBER = 0;\r\n pageNumber: number = this.DEFAULT_PAGE_NUMBER;\r\n pageSize: number = this.DEFAULT_PAGE_SIZE;\r\n columnsConfig: any[] = [];\r\n columns: string[] = [];\r\n destroyRef = inject(DestroyRef);\r\n requiredSearchable: boolean;\r\n\r\n isError: boolean = false;\r\n categoryData = [\r\n {\r\n \"assetDeviceType\": null,\r\n \"brand\": \"Benq\",\r\n \"colors\": null,\r\n \"assetCompanies\": null,\r\n \"descAr\": null,\r\n \"descEn\": null,\r\n \"estoreVisible\": false,\r\n \"id\": \"402\",\r\n \"model\": \"B400\",\r\n \"files\": null,\r\n \"vendors\": [\r\n {\r\n \"id\": 71,\r\n \"vendorName\": null,\r\n \"vendorNumber\": \"26\",\r\n \"__typename\": \"VendorDto\"\r\n }\r\n ],\r\n \"category\": null,\r\n \"assetType\": \"Scanner\",\r\n \"classifications\": null,\r\n \"consumedCount\": 0,\r\n \"consumedPercentage\": 0,\r\n \"specs\": [\r\n \"4GB\"\r\n ],\r\n \"sumQuantity\": 1,\r\n \"__typename\": \"AllAssetsDto\"\r\n },\r\n {\r\n \"assetDeviceType\": null,\r\n \"brand\": \"HP\",\r\n \"colors\": null,\r\n \"assetCompanies\": null,\r\n \"descAr\": null,\r\n \"descEn\": null,\r\n \"estoreVisible\": false,\r\n \"id\": \"403\",\r\n \"model\": \"EliteBook\",\r\n \"files\": null,\r\n \"vendors\": [\r\n {\r\n \"id\": 71,\r\n \"vendorName\": null,\r\n \"vendorNumber\": \"26\",\r\n \"__typename\": \"VendorDto\"\r\n }\r\n ],\r\n \"category\": null,\r\n \"assetType\": \"Laptop\",\r\n \"classifications\": null,\r\n \"consumedCount\": 0,\r\n \"consumedPercentage\": 0,\r\n \"specs\": [\r\n \"512GB\"\r\n ],\r\n \"sumQuantity\": 1,\r\n \"__typename\": \"AllAssetsDto\"\r\n },\r\n {\r\n \"assetDeviceType\": null,\r\n \"brand\": \"Hp\",\r\n \"colors\": null,\r\n \"assetCompanies\": null,\r\n \"descAr\": null,\r\n \"descEn\": null,\r\n \"estoreVisible\": false,\r\n \"id\": \"404\",\r\n \"model\": \"Laser\",\r\n \"files\": null,\r\n \"vendors\": [\r\n {\r\n \"id\": 71,\r\n \"vendorName\": null,\r\n \"vendorNumber\": \"26\",\r\n \"__typename\": \"VendorDto\"\r\n }\r\n ],\r\n \"category\": null,\r\n \"assetType\": \"Printer\",\r\n \"classifications\": null,\r\n \"consumedCount\": 0,\r\n \"consumedPercentage\": 0,\r\n \"specs\": [\r\n \"2GB\"\r\n ],\r\n \"sumQuantity\": 1,\r\n \"__typename\": \"AllAssetsDto\"\r\n },\r\n {\r\n \"assetDeviceType\": null,\r\n \"brand\": \"Asus\",\r\n \"colors\": null,\r\n \"assetCompanies\": null,\r\n \"descAr\": null,\r\n \"descEn\": null,\r\n \"estoreVisible\": false,\r\n \"id\": \"405\",\r\n \"model\": \"A500\",\r\n \"files\": null,\r\n \"vendors\": [\r\n {\r\n \"id\": 71,\r\n \"vendorName\": null,\r\n \"vendorNumber\": \"26\",\r\n \"__typename\": \"VendorDto\"\r\n }\r\n ],\r\n \"category\": null,\r\n \"assetType\": \"Laptop\",\r\n \"classifications\": null,\r\n \"consumedCount\": 0,\r\n \"consumedPercentage\": 0,\r\n \"specs\": [\r\n \"1TB\"\r\n ],\r\n \"sumQuantity\": 1,\r\n \"__typename\": \"AllAssetsDto\"\r\n },\r\n {\r\n \"assetDeviceType\": null,\r\n \"brand\": \"Dell\",\r\n \"colors\": null,\r\n \"assetCompanies\": null,\r\n \"descAr\": null,\r\n \"descEn\": null,\r\n \"estoreVisible\": false,\r\n \"id\": \"407\",\r\n \"model\": \"Latitude\",\r\n \"files\": null,\r\n \"vendors\": [\r\n {\r\n \"id\": 71,\r\n \"vendorName\": null,\r\n \"vendorNumber\": \"26\",\r\n \"__typename\": \"VendorDto\"\r\n }\r\n ],\r\n \"category\": null,\r\n \"assetType\": \"Laptop\",\r\n \"classifications\": null,\r\n \"consumedCount\": 0,\r\n \"consumedPercentage\": 0,\r\n \"specs\": [\r\n \"1TB\"\r\n ],\r\n \"sumQuantity\": 4,\r\n \"__typename\": \"AllAssetsDto\"\r\n },\r\n {\r\n \"assetDeviceType\": null,\r\n \"brand\": \"Samsung\",\r\n \"colors\": null,\r\n \"assetCompanies\": null,\r\n \"descAr\": null,\r\n \"descEn\": null,\r\n \"estoreVisible\": false,\r\n \"id\": \"408\",\r\n \"model\": \"Galaxy\",\r\n \"files\": null,\r\n \"vendors\": [\r\n {\r\n \"id\": 71,\r\n \"vendorName\": null,\r\n \"vendorNumber\": \"26\",\r\n \"__typename\": \"VendorDto\"\r\n }\r\n ],\r\n \"category\": null,\r\n \"assetType\": \"Tablet\",\r\n \"classifications\": null,\r\n \"consumedCount\": 0,\r\n \"consumedPercentage\": 0,\r\n \"specs\": [\r\n \"256GB\"\r\n ],\r\n \"sumQuantity\": 1,\r\n \"__typename\": \"AllAssetsDto\"\r\n }\r\n ]\r\n\r\n totalElements: number = 6;\r\n\r\n\r\n constructor(public i18n: CoreI18nService, private fb: FormBuilder, private actionStateService: ActionStateService) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.createForm();\r\n let data = this.section.body.details\r\n for (const key in data) {\r\n if (key !== 'decision') {\r\n this.formGroup.patchValue({[key]: data[key]});\r\n }\r\n }\r\n // this.initializeTableConfig()\r\n /* this.formGroup.get('checkbox').valueChanges.subscribe(res=> {\r\n if (res){\r\n this.formGroup.get('customSearchable').setValidators(Validators.required)\r\n this.requiredSearchable = true;\r\n console.log(this.requiredSearchable)\r\n }else {\r\n this.formGroup.get('customSearchable').clearValidators();\r\n this.requiredSearchable = false\r\n console.log(this.requiredSearchable)\r\n }\r\n this.formGroup.get('customSearchable').updateValueAndValidity();\r\n\r\n })*/\r\n }\r\n\r\n\r\n initializeTableConfig() {\r\n this.initializeColumns()\r\n this.initializeColumnConfig()\r\n\r\n }\r\n\r\n initializeColumns() {\r\n this.columns = ['id', 'assetType', 'brand', 'model', 'sumQuantity', 'specs', 'allocate'];\r\n }\r\n\r\n initializeColumnConfig() {\r\n this.columnsConfig = [\r\n {\r\n label: 'Id',\r\n type: 'text',\r\n },\r\n {\r\n label: 'Asset Type',\r\n type: 'text',\r\n },\r\n {\r\n label: 'Brand',\r\n type: 'text'\r\n },\r\n {\r\n label: 'Model',\r\n type: 'text'\r\n },\r\n {\r\n label: 'Quantity',\r\n type: 'formId'\r\n },\r\n {\r\n label: 'Capacity',\r\n type: 'specs',\r\n clickableText: 'View'\r\n },\r\n {\r\n label: 'Actions',\r\n type: 'actions',\r\n actions: [\r\n {viewMode: 'allocate', actionName: \"Allocate\", disabled: true},\r\n {\r\n viewMode: 'edit', actionName: \"Edit\", action: \"edit\", onClick: (asset: any) => {\r\n this.editAsset(asset);\r\n },\r\n },\r\n {\r\n viewMode: 'delete', actionName: \"Delete\", action: \"delete\", onClick: (asset: any) => {\r\n this.deleteAsset(asset);\r\n },\r\n },\r\n {viewMode: 'chart', actionName: \"Chart\", action: \"chart\"},\r\n ]\r\n },\r\n ];\r\n }\r\n\r\n\r\n createForm() {\r\n let newForm = {\r\n input1: ['', Validators.required]\r\n };\r\n this.lov?.['decision']?.options?.forEach(option => {\r\n newForm[option.value] = [''];\r\n })\r\n this.formGroup = this.fb.group({\r\n // input: new FormControl(null),\r\n // currencyInput: new FormControl(null, Validators.required),\r\n // emailInput: new FormControl({value: null, disabled: true}, Validators.required),\r\n // numberInput: new FormControl(null, Validators.required),\r\n // customSearchable: new FormControl(null, Validators.required),\r\n // checkbox: new FormControl(null, [Validators.requiredTrue, Validators.required]),\r\n // textArea: new FormControl(null, [Validators.required, Validators.maxLength(5)]),\r\n // datePicker: new FormControl(null, Validators.required),\r\n // datePickerRange: new FormControl(null, Validators.required),\r\n // radio: new FormControl(null, Validators.required),\r\n // toggle: new FormControl(null, Validators.required),\r\n // telephone: new FormControl(null, Validators.required),\r\n // approverList: new FormControl(null, Validators.required),\r\n // // ...newForm,\r\n attachment: new FormControl(null, Validators.required),\r\n // attachmentSection: new FormControl([], Validators.required),\r\n });\r\n/* if(this.lov?.['decision']?.options?.length){\r\n\r\n }else{\r\n\r\n }*/\r\n // this.lov?.['decision']?.options?.forEach(option => {\r\n // let isActionValid = this.checkValidity(option.value);\r\n // this.actionStateService.setActionValid(option.value, isActionValid);\r\n // console.log('isActionValid',isActionValid)\r\n\r\n // })\r\n\r\n\r\n // this.formGroup = this.fb.group({\r\n // input: new FormControl(null),\r\n // currencyInput: new FormControl(null),\r\n // emailInput: new FormControl({value: null,disabled: true}),\r\n // numberInput: new FormControl(null),\r\n // customSearchable: new FormControl(null),\r\n // checkbox: new FormControl(null),\r\n // textArea: new FormControl(null),\r\n // datePicker: new FormControl(null),\r\n // datePickerRange: new FormControl(null),\r\n // radio: new FormControl(null),\r\n // toggle: new FormControl(null),\r\n // telephone: new FormControl(null),\r\n // approverList: new FormControl(null),\r\n // // ...newForm,\r\n // attachment: new FormControl(null),\r\n // attachmentSection: new FormControl([]),\r\n // });\r\n // this.formGroup.setValue(this.section.body.details);\r\n // console.log(this.section.body.detils);\r\n // console.log(this.lov?.['approverActions']?.options)\r\n this.formGroup.valueChanges.subscribe(value => {\r\n this.lov?.['decision']?.options?.forEach(option => {\r\n let isActionValid = this.checkValidity(option.value);\r\n this.actionStateService.setActionValid(option.value, isActionValid);\r\n this.section.body.details = {...this.section.body.details, ...this.formGroup.value};\r\n\r\n })\r\n })\r\n }\r\n\r\n // this.formGroup.valueChanges.subscribe(value => {\r\n // this.lov?.['decision']?.options?.forEach(option => {\r\n // let isActionValid = this.checkValidity(option.value);\r\n // this.actionStateService.setActionValid(option.value, isActionValid);\r\n // this.section.body.details = this.formGroup.value\r\n // /!*{\r\n // input1: this.fieldsForm.get('input1').value\r\n // }*!/\r\n // })\r\n // })\r\n // }\r\n // createForm() {\r\n // this.formGroup = this.fb.group({\r\n // customerName: new FormControl(null, [Validators.required]),\r\n // customerPhone: new FormControl(null, [Validators.required]),\r\n // reasonForRequest: new FormControl(null, [Validators.required]),\r\n // callType: new FormControl(null, [Validators.required]),\r\n // centerOfCalls: new FormControl(null, [Validators.required]),\r\n // callDate: new FormControl(null, [Validators.required]),\r\n // agreement: new FormControl(null, [Validators.required,Validators.requiredTrue]),\r\n // });\r\n // this.formGroup.valueChanges.pipe(\r\n // takeUntilDestroyed(this.destroyRef)\r\n // ).subscribe(value => {\r\n // this.lov?.['decision']?.options?.forEach(option => {\r\n // let isActionValid = this.checkValidity(option.value);\r\n // this.actionStateService.setActionValid(option.value, isActionValid);\r\n // this.section.body.details = this.formGroup.value\r\n // this.section.body.details.customerPhone = this.section.body.details.customerPhone?.e164Number\r\n // // this.section.body.details.agreement = (this.section.body.details.agreement).toString()\r\n\r\n // })\r\n // })\r\n // console.log(this.lov?.['decision']?.options)\r\n // console.log(this.section.body.details)\r\n // this.formGroup.setValue(this.section.body.details);\r\n // console.log('customCallSubmit', this.formGroup.value)\r\n // }\r\n\r\n editAsset(asset) {\r\n console.log(asset)\r\n }\r\n\r\n startsWithDMOEOrCR(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const value = control.value;\r\n if (value && (value.startsWith('DMOE-') || value.startsWith('CR-'))) {\r\n return null; // Valid\r\n }\r\n return {startsWithInvalid: true}; // Invalid\r\n };\r\n }\r\n\r\n deleteAsset(asset) {\r\n console.log(asset)\r\n }\r\n\r\n formValue(form) {\r\n console.log(form.value)\r\n }\r\n\r\n checkValidity(action: string): boolean {\r\n switch (action) {\r\n case 'SUBMIT':\r\n return this.formGroup.valid;\r\n case 'APPROVE':\r\n return true;\r\n case 'REJECT':\r\n return this.formGroup.valid;\r\n case 'SENDBACK':\r\n return this.formGroup.valid;\r\n case 'SAVE_CHANGES':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n\r\n customCallSubmit(action: string) {\r\n console.log('customCallSubmit', action)\r\n }\r\n\r\n resetForm() {\r\n this.actionStateService.resetAction$.next();\r\n }\r\n\r\n pageChanged(event: any) {\r\n this.pageNumber = event.pageIndex\r\n this.pageSize = event.pageSize\r\n }\r\n\r\n}\r\n","<div>\r\n <form [ngClass]=\"{'form-section-divide form-section':!section?.header?.readOnly,'info-section':section?.header?.readOnly}\" [formGroup]=\"formGroup\">\r\n\r\n <!-- <app-search-employee\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"approverList\"\r\n [hasCustomAPI]=\"true\"\r\n [ApiAlias]=\"'getEmployeesByGd'\"\r\n [parameters]=\"{\r\n 'language':'en',\r\n 'gd': '6017'\r\n }\"\r\n label=\"Search-employee\"></app-search-employee> -->\r\n\r\n <!-- <app-attachment-section\r\n class=\"section-item full\"\r\n [descriptionRequired]=\"false\"\r\n label=\"Attachment section\"\r\n [commentsRequired]=\"false\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"attachmentSection\"></app-attachment-section> -->\r\n\r\n<!-- {{formGroup.valid}}-->\r\n<!-- <app-input class=\"section-item full\" [isReadOnly]=\"false\" [mandatory]=\"true\" [loading]=\"true\" type=\"enOnly\" formControlName=\"input\" label=\"Input\"></app-input>-->\r\n<!-- <app-checkbox\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"checkbox\"\r\n termsLabel=\"Terms and conditions\"\r\n label=\"check-box\"\r\n [containTerms]=\"true\"></app-checkbox>-->\r\n <!--\r\n <app-search-employee\r\n class=\"section-item full\"\r\n [multiple]=\"true\"\r\n [arrayList]=\"formGroup.get('searchEmployee').value\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"searchEmployee\"\r\n label=\"Search-employee\"></app-search-employee>\r\n <app-input class=\"section-item full\" [isReadOnly]=\"isReadOnly\" [loading]=\"true\" type=\"enOnly\" formControlName=\"input\" label=\"Input\"></app-input>\r\n <app-input-currency class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"currencyInput\" label=\"currency\"></app-input-currency>\r\n <app-input-email class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"emailInput\" label=\"email\"></app-input-email>\r\n <app-input-number class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"numberInput\" label=\"number\"></app-input-number>\r\n <app-custom-searchable\r\n class=\"section-item mb-0 full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"customSearchable\"\r\n label=\"Custom-searchable\"\r\n [options]=\"lov?.['approverActions']?.options\"\r\n [displayedLabel]=\"'name'\"\r\n [key]=\"'name'\"></app-custom-searchable>\r\n <app-checkbox\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"checkbox\"\r\n termsLabel=\"Terms and conditions\"\r\n label=\"check-box\"\r\n [containTerms]=\"true\"></app-checkbox>\r\n <app-textarea class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"textArea\" label=\"Text-area\"></app-textarea>\r\n\r\n <app-date-range-picker\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"datePickerRange\"\r\n label=\"Date-picker-range\"\r\n [matSuffix]=\"true\"></app-date-range-picker>\r\n <app-radio class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"radio\" [options]=\"options\" label=\"Radio\"></app-radio>-->\r\n <!-- <app-toggle-button\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"toggle\"\r\n [options]=\"lov?.['decision']?.options\"\r\n label=\"Toggle-button\"\r\n [displayedLabel]=\"'description'\"\r\n [key]=\"'value'\"></app-toggle-button>-->\r\n <!--<app-input-telephone class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"telephone\" label=\"Telephone\"></app-input-telephone>\r\n-->\r\n <app-file-uploader\r\n class=\"section-item full\"\r\n [callApi]=\"true\"\r\n [isReadOnly]=\"isReadOnly\"\r\n [multiple]=\"true\"\r\n label=\"attachment\"\r\n formControlName=\"attachment\"></app-file-uploader>\r\n\r\n <!-- <app-attachment-section\r\n class=\"section-item full\"\r\n [descriptionRequired]=\"false\"\r\n label=\"Attachment section\"\r\n [commentsRequired]=\"false\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"attachmentSection\"></app-attachment-section> -->\r\n\r\n\r\n\r\n\r\n <!-- <app-table\r\n [columnsConfig]=\"columnsConfig\"\r\n [columns]=\"columns\"\r\n [isError]=\"isError\"\r\n [isLoading]=\"isLoading\"\r\n [rows]=\"categoryData\" [hasPaginator]=\"true\"\r\n [pageSize]=\"pageSize\" [currentPage]=\"pageNumber\"\r\n [totalElements]=\"totalElements\"\r\n (pageChange)=\"pageChanged($event)\"\r\n class=\"new-primary-table full\">\r\n </app-table> -->\r\n\r\n<!-- <app-datepicker\r\n class=\"section-item full\"\r\n [isReadOnly]=\"false\"\r\n formControlName=\"datePicker\"\r\n [matSuffix]=\"true\"\r\n label=\"Date-picker\"></app-datepicker>-->\r\n\r\n\r\n </form>\r\n\r\n\r\n</div>\r\n@if (!section?.header?.readOnly) {\r\n <div class=\"mt-4\">\r\n <lib-action-buttons\r\n [lovOptions]=\"lov?.['decision']?.options\"\r\n [lovType]=\"lov?.['decision']?.type\"\r\n [section]=\"section\"\r\n [form]=\"form\"\r\n [sections]=\"form.sections\"\r\n [showApprovalCycle]=\"true\"\r\n [customCall]=\"false\"\r\n [fieldsForm]=\"formGroup\"\r\n (customCallEmit)=\"customCallSubmit($event)\"\r\n (resetFormEmit)=\"resetForm()\"\r\n />\r\n </div>\r\n}\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Input, NO_ERRORS_SCHEMA, OnInit} from '@angular/core';\r\nimport {Form, Section} from \"../../interfaces\";\r\nimport {ActionStateService, CoreI18nService} from \"../../services\";\r\nimport {NgClass, NgForOf, NgIf} from \"@angular/common\";\r\nimport {ActionButtonsComponent, TextareaComponent} from \"../../components/shared-components\";\r\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators} from \"@angular/forms\";\r\nimport {CustomSearchableComponent, InputComponent} from '../../components/shared-components';\r\nimport {ValidationErrorsComponent} from '../../components/shared-components/form-field/validation-errors/validation-errors.component';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-general-approver-section',\r\n templateUrl: './general-approver-section.component.html',\r\n styleUrls: ['./general-approver-section.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\r\n imports: [\r\n NgClass,\r\n InputComponent,\r\n NgIf,\r\n NgForOf,\r\n ActionButtonsComponent,\r\n ReactiveFormsModule,\r\n ValidationErrorsComponent,\r\n CustomSearchableComponent,\r\n TextareaComponent\r\n ]\r\n})\r\nexport class GeneralApproverSectionComponent implements OnInit{\r\n\r\n @Input() isReadOnly: boolean;\r\n @Input() section: Section;\r\n @Input() form: Form;\r\n @Input() lov: any;\r\n @Input() className: string = \"info-section\";\r\n fieldsForm: FormGroup;\r\n numbers = [...Array(100).keys()].map(i => i + 1);\r\n destroyRef = inject(DestroyRef);\r\n formGroup: FormGroup;\r\n\r\n\r\n constructor(public i18n: CoreI18nService, private fb: FormBuilder, private actionStateService: ActionStateService) {\r\n\r\n }\r\n\r\nngOnInit() {\r\n this.createForm();\r\n this.formGroup.setValue(this.section.body.details);\r\n }\r\n\r\n createForm() {\r\n this.formGroup = this.fb.group({\r\n comment: new FormControl('' ),\r\n decision: new FormControl(''),\r\n });\r\n this.formGroup.valueChanges.subscribe(value => {\r\n this.lov?.['decision']?.options?.forEach(option => {\r\n let isActionValid = this.checkValidity(option.value);\r\n this.actionStateService.setActionValid(option.value, isActionValid);\r\n this.section.body.details = this.formGroup.value\r\n })\r\n })\r\n }\r\n\r\n checkValidity(action: string): boolean {\r\n switch (action) {\r\n case 'APPROVE':\r\n return true;\r\n case 'REJECT':\r\n return this.fieldsForm.valid;\r\n case 'SENDBACK':\r\n return this.fieldsForm.valid;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n\r\n customCallSubmit(action: string) {\r\n console.log('customCallSubmit', action)\r\n }\r\n\r\n resetForm() {\r\n this.fieldsForm.reset()\r\n }\r\n\r\n}\r\n","<div>\r\n <form [ngClass]=\"{'form-section-divide form-section':!section?.header?.readOnly,'info-section':section?.header?.readOnly}\"\r\n [formGroup]=\"formGroup\">\r\n\r\n <app-textarea class=\"section-item\" formControlName=\"comment\" [label]=\"'comment'\" [required]=\"false\"\r\n [isReadOnly]=\"section?.header?.readOnly\">\r\n </app-textarea>\r\n\r\n </form>\r\n</div>\r\n\r\n\r\n@if (!section?.header?.readOnly) {\r\n<div class=\"mt-4\">\r\n <lib-action-buttons [lovOptions]=\"lov?.['decision']?.options\" [lovType]=\"lov?.['decision']?.type\" [section]=\"section\"\r\n [form]=\"form\" [sections]=\"form.sections\" [showApprovalCycle]=\"true\" [customCall]=\"false\" [fieldsForm]=\"formGroup\"\r\n (customCallEmit)=\"customCallSubmit($event)\" (resetFormEmit)=\"resetForm()\" />\r\n</div>\r\n}\r\n","import {GeneralApproverSectionComponent} from \"../general-approver-section/general-approver-section.component\";\r\n\r\n\r\nexport default {\r\n roleToApprovalSectionMapping: {\r\n vpr_d: GeneralApproverSectionComponent,\r\n sel_dsg : GeneralApproverSectionComponent,\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as en from '../../i18n/en';\r\nimport * as ar from '../../i18n/ar';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class I18nService {\r\n private locales: {[key: string]: {[key: string]: string}};\r\n private coreLocales: {[key: string]: {[key: string]: string}};\r\n private language : string;\r\n\r\n constructor() {\r\n this.language = (window as any).wmConfig.language;\r\n // this.language = \"en\";\r\n this.locales = {en: en.default, ar: ar.default};\r\n }\r\n\r\n translate(key) {\r\n let result = null;\r\n try {\r\n result = this.coreLocales[this.language][key];\r\n if (!result) {\r\n result = this.locales[this.language][key];\r\n }\r\n }\r\n catch(e) {\r\n result = null;\r\n }\r\n return result || key;\r\n }\r\n\r\n getLanguage() {\r\n return this.language;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as Constants from '../../constants';\r\nimport { I18nService } from './i18n.service';\r\nimport {RequestDetailsSectionComponent} from \"../request-details-section/request-details-section.component\";\r\nimport segmentDynamicLoaderConfiguration from '../config/segment-dynamic-loader.config';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class SegmentDynamicLoaderService {\r\n requestDetailsSection = RequestDetailsSectionComponent;\r\n roleToApprovalSectionMapping = segmentDynamicLoaderConfiguration.roleToApprovalSectionMapping;\r\n\r\n constructor(private i18n: I18nService) {\r\n\r\n }\r\n\r\n getComponent(componentId: string) {\r\n if (componentId.toLowerCase() === Constants.SECTION_ID_REQUEST_DETAILS.toLowerCase()) {\r\n return this.requestDetailsSection;\r\n }\r\n let role = componentId.toLowerCase().split(Constants.SECTION_ID_APPROVAL_PARTIAL_NAME.toLowerCase())[0].toLowerCase();\r\n return this.roleToApprovalSectionMapping[role];\r\n }\r\n\r\n getSectionName(componentId: string): string {\r\n if(componentId.toLowerCase() === Constants.SECTION_ID_REQUEST_DETAILS.toLowerCase()) {\r\n return this.i18n.translate('requestDetailsTitle');\r\n }\r\n else if(componentId.toLowerCase() === 'hrRequestDetails'.toLowerCase()) {\r\n return this.i18n.translate('hrRequestDetailsTitle');\r\n }\r\n let role = componentId.toLowerCase().split(Constants.SECTION_ID_APPROVAL_PARTIAL_NAME.toLowerCase())[0].toLowerCase();\r\n return this.i18n.translate(`${role.toLowerCase()}Role`);\r\n }\r\n\r\n getPrintPartialName (componentName: string) {\r\n\r\n\r\n\r\n if (componentName === Constants.SECTION_ID_REQUEST_DETAILS) {\r\n return 'sectionrequestDetails';\r\n }\r\n else if (componentName === 'wpo_dApproval' ) { return 'sectionGeneralApprover'}\r\n else if (componentName === 'wpo_gmApproval' ) { return 'sectionGeneralApprover'}\r\n\r\n else { return 'sectionGeneralApproval' }\r\n\r\n }\r\n}\r\n","import {AfterViewInit, Component, CUSTOM_ELEMENTS_SCHEMA, Inject, NO_ERRORS_SCHEMA, PLATFORM_ID} from '@angular/core';\r\nimport {LayoutComponent, ServiceHeaderComponent, WorkflowSectionComponent} from \"../components/app-component-sections\";\r\nimport {DOCUMENT, isPlatformBrowser} from \"@angular/common\";\r\nimport {Router} from \"@angular/router\";\r\nimport {CoreI18nService, CoreService, SidenavService} from \"../services\";\r\nimport {Form} from \"../interfaces\";\r\nimport {RequestDetailsSectionComponent} from \"../testComponent/request-details-section/request-details-section.component\";\r\nimport {SegmentDynamicLoaderService} from \"../testComponent/services/segment-dynamic-loader.service\";\r\nimport {DynamicComponentInjectorToken} from \"ng-dynamic-component\";\r\nimport {TranslatePipe} from \"../pipes/translate.pipe\";\r\n\r\n@Component({\r\n selector: 'lib-app',\r\n standalone: true,\r\n templateUrl: './app.component.html',\r\n styleUrl: './app.component.css',\r\n imports: [\r\n // DynamicModule,\r\n LayoutComponent,\r\n ServiceHeaderComponent,\r\n WorkflowSectionComponent,\r\n RequestDetailsSectionComponent,\r\n TranslatePipe\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\r\n providers: [\r\n {provide: DynamicComponentInjectorToken, useValue: { /* your value here */}}\r\n ]\r\n\r\n})\r\nexport class CoreAppComponent implements AfterViewInit {\r\n loading = {\r\n form: false\r\n }\r\n form: Form\r\n formTitle: string = 'Test';\r\n noError = true;\r\n errorMessage: [];\r\n constructor(\r\n public segmentDynamicLoader: SegmentDynamicLoaderService,\r\n @Inject(DOCUMENT) private readonly document: Document,\r\n private readonly router: Router,\r\n private readonly sidenavService: SidenavService,\r\n public i18n: CoreI18nService,\r\n private readonly coreService: CoreService,\r\n @Inject(PLATFORM_ID) private platformId: any\r\n ) {\r\n this.loading['form'] = true\r\n this.coreService.loadForm().subscribe({\r\n next: (form: any) => {\r\n this.form = form;\r\n this.loading['form'] = false\r\n },\r\n error: (err) => {\r\n this.noError = false;\r\n this.loading['form'] = false\r\n this.errorMessage = err?.error?.meta?.messages\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const direction = this.i18n.language == 'en' ? 'ltr' : 'rtl';\r\n document.documentElement.setAttribute('dir', direction);\r\n }\r\n }\r\n\r\n}\r\n","<core-layout>\r\n @if (!loading['form']) {\r\n\r\n @if (noError) {\r\n <core-service-header\r\n [isLoading]=\"false\"\r\n [formTitle]=\"formTitle\"\r\n [isReadOnly]=\"form.sections[0].header.readOnly\"\r\n [form]=\"form\">\r\n </core-service-header>\r\n <app-workflow-section\r\n workflow\r\n [segmentDynamicLoaderService]=\"segmentDynamicLoader\"\r\n [form]=\"form\" [sections]=\"form?.['sections']\">\r\n <app-request-details-section\r\n [section]=\"form.sections[0]\" [form]=\"form\" [lov]=\"form?.lovs\" className=\"form-section\"\r\n [isReadOnly]=\"form.sections[0].header.readOnly\"></app-request-details-section>\r\n </app-workflow-section>\r\n } @else {\r\n @if (errorMessage?.length) {\r\n <ds-message></ds-message>\r\n @for (item of errorMessage; track $index) {\r\n <div class=\"d-flex justify-content-center\">\r\n <span class=\"fc-coral fs-18\" >{{ item?.['message'] }}</span>\r\n </div>\r\n }\r\n } @else {\r\n <ds-message [label]=\"'pageErrorLoading' | translate\"></ds-message>\r\n }\r\n }\r\n } @else {\r\n <core-service-header header [formTitle]=\"formTitle\" [isLoading]=\"true\">\r\n </core-service-header>\r\n }\r\n</core-layout>\r\n","import { Form } from \"../interfaces\";\r\n\r\nexport default {\r\n beforeTranspilePayload (payload: {[key: string]: any}): {[key: string]: any} {\r\n const hookResult = payload;\r\n // Here should be the code to manipulate the payload before the transpile stage\r\n return hookResult;\r\n },\r\n\r\n afterTranspilePayload (form: Form): Form {\r\n const hookResult = form;\r\n // Here should be the code to manipulate the form object after the transpile stage\r\n return hookResult;\r\n }\r\n}\r\n","export function encodePassword(formId: string, password: string) {\r\n const formIdString = Array.from(\r\n new TextEncoder().encode(formId),\r\n (x) => String.fromCodePoint(x)\r\n ).join('');\r\n\r\n let encodedFormId = btoa(formIdString);\r\n\r\n let x = Math.floor(\r\n Math.random() * password.length\r\n );\r\n\r\n let [first, second] = [\r\n password.slice(0, x),\r\n password.slice(x),\r\n ];\r\n\r\n let newPassword = first + encodedFormId + second;\r\n\r\n const binString = Array.from(new TextEncoder().encode(newPassword), (x) =>\r\n String.fromCodePoint(x)\r\n ).join('');\r\n\r\n newPassword = btoa(binString);\r\n return newPassword;\r\n }","import { AbstractControl, FormArray, FormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\nconst ACTION_ERROR_SUFFIX = '_ACTION';\r\nclass ManageActionErrors {\r\n /*\r\n action error structure\r\n {error_key}_{action_name}ACTION_ERROR_SUFFIX\r\n e.g. required_REJECT_ACTION\r\n */\r\n hasActionError(errors: ValidationErrors, action: string): boolean {\r\n if(!errors) return false;\r\n return !!Object.keys(errors).filter(key => key.endsWith(`${action}${ACTION_ERROR_SUFFIX}`)).length;\r\n }\r\n\r\n hasOtherError(errors: ValidationErrors): boolean {\r\n if(!errors) return false;\r\n const actionErrorKeys = this.getActionErrorKeys(errors);\r\n const allErrorKeys = this.getAllErrorKeys(errors);\r\n if(actionErrorKeys.size === allErrorKeys.size) return false;\r\n return true;\r\n }\r\n\r\n private getActionErrorKeys(errors: ValidationErrors){\r\n return new Set(\r\n //required_REJECT_ACTION => required\r\n Object.keys(errors).filter(actionKey => actionKey.endsWith(ACTION_ERROR_SUFFIX)).map(key => key.split('_')[0])\r\n );\r\n }\r\n private getAllErrorKeys(errors: ValidationErrors){\r\n return new Set(\r\n Object.keys(errors).filter(key => !key.endsWith(ACTION_ERROR_SUFFIX))\r\n );\r\n }\r\n\r\n addActionError(actions: string[], errors: ValidationErrors) {\r\n const actionErrors = {};\r\n actions.forEach(action => {\r\n for(let key in errors){\r\n actionErrors[`${key}_${action}${ACTION_ERROR_SUFFIX}`] = errors[key];\r\n }\r\n })\r\n return {...errors, ...actionErrors};\r\n }\r\n}\r\n\r\n/**\r\n * Checks if the form group is valid for a specific action.\r\n * You should use this function to check form validity if you use `validateIfAction` function.\r\n * @param action The action to check against.\r\n * @param formGroup The form group or form array to validate.\r\n * @returns {boolean} True if all controls are valid for the action, false otherwise.\r\n */\r\nexport function isValidForAction(action: string, formGroup: FormGroup | FormArray): boolean {\r\n return Object.entries(formGroup.controls).every(([controlName, control]) => {\r\n if(control instanceof FormGroup || control instanceof FormArray) {\r\n return isValidForAction(action, control);\r\n }\r\n const errors = control.errors;\r\n if(!errors) return true;\r\n const invalidAction = new ManageActionErrors().hasActionError(errors, action);\r\n if(invalidAction) return false;\r\n const hasOtherError = new ManageActionErrors().hasOtherError(errors);\r\n if(hasOtherError) return false;\r\n return true;\r\n })\r\n}\r\n\r\n/**\r\n * Updates the value and validity of all controls.\r\n * Use this function when your validators depend on the values of other controls.\r\n * @param formGroup The FormGroup or FormArray to update.\r\n * @returns {void}\r\n */\r\nexport function updateValueAndValidity(formGroup: FormGroup | FormArray) {\r\n Object.values(formGroup.controls).forEach((control) => {\r\n if (control instanceof FormGroup || control instanceof FormArray) {\r\n updateValueAndValidity(control);\r\n } else {\r\n control.updateValueAndValidity({ emitEvent: false });\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Validates a control only when a certain condition is met.\r\n * @param condition A function that returns a boolean indicating whether to apply the validator.\r\n * @param validator A single ValidatorFn or an array of ValidatorFns to apply if the condition is true.\r\n * @returns {ValidatorFn} A ValidatorFn that applies the given validator only when the condition is true.\r\n */\r\nexport function validateOnlyWhen(\r\n condition: () => boolean,\r\n validator: ValidatorFn | ValidatorFn[]\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (condition()) {\r\n return Array.isArray(validator) ? Validators.compose(validator)(control) : validator(control);\r\n }\r\n return null;\r\n };\r\n}\r\n\r\n/**\r\n * Validates a control if the current action is one of the specified actions.\r\n * @param actions An array of action names to check against.\r\n * @param validator A single ValidatorFn or an array of ValidatorFns to apply if the current action matches one of the actions.\r\n * @returns {ValidatorFn} A ValidatorFn that applies the given validator only if the current action is one of the specified actions.\r\n * */\r\nexport function validateIfAction(actions: string[], validator: ValidatorFn | ValidatorFn[]): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const output: ValidationErrors | null = Array.isArray(validator) ? Validators.compose(validator)(control) : validator(control);\r\n if (output) {\r\n return new ManageActionErrors().addActionError(actions, output);\r\n }\r\n return null;\r\n };\r\n}\r\n\r\n/**\r\n * Logs the status of all controls in a FormGroup.\r\n * It traverses the form structure and logs whether each control is valid or invalid.\r\n * @param formGroup The FormGroup to log the status of.\r\n * @returns {void} This function does not return anything, it logs the status to the console.\r\n */\r\nexport function logFormStatus(formGroup: FormGroup): void {\r\n const stack = [{controls: formGroup.controls, path: ''}];\r\n const status = {\r\n all: {},\r\n valid: {},\r\n invalid: {}\r\n };\r\n while(stack.length){\r\n const {controls, path} = stack.pop();\r\n for(const key in controls){\r\n const control = controls[key];\r\n const newPath = path ? `${path}.${key}` : key;\r\n if(control instanceof FormGroup){\r\n stack.push({controls: control.controls, path: newPath});\r\n } else if(control instanceof FormArray) {\r\n const formArrayControlsAsObj = control.controls.reduce((prev, current, index) => {\r\n prev[index] = current;\r\n return prev;\r\n }, {});\r\n stack.push({controls: formArrayControlsAsObj, path: newPath});\r\n } else {\r\n status.all[newPath] = control.valid;\r\n if(control.valid) status.valid[newPath] = control.valid;\r\n else status.invalid[newPath] = control.valid;\r\n }\r\n }\r\n }\r\n console.log(status);\r\n}\r\n\r\n/**\r\n * A collection of custom validators for various data types.\r\n */\r\nexport class DataValidators {\r\n /**\r\n * Validates that the control's value is the string 'true'\r\n */\r\n static checkboxRequired(control: AbstractControl): ValidationErrors | null {\r\n if(control.value === 'true') return null;\r\n return {required: true};\r\n }\r\n\r\n /**\r\n * Validates that the control's value is a valid employee object.\r\n */\r\n static employeeRequired(control: AbstractControl): ValidationErrors | null {\r\n if(control.value?.personEmail) return null;\r\n return {required: true};\r\n }\r\n\r\n /**\r\n * Validates that the control's value is a valid attachment object.\r\n */\r\n static fileUploaderRequired(control: AbstractControl): ValidationErrors | null {\r\n if(control.value?.attachmentId) return null;\r\n return {required: true};\r\n }\r\n\r\n /**\r\n * Validates that the control's value is a valid attachments list.\r\n */\r\n static multiFileUploaderRequired(control: AbstractControl): ValidationErrors | null {\r\n if(!Array.isArray(control.value)) return {required: true};\r\n if(!control.value.length) return {required: true};\r\n if((control.value as any[]).every(item => item.attachmentId)) return null;\r\n return {required: true};\r\n }\r\n\r\n /**\r\n * Validates that the control's value is a valid select object.\r\n * The select object should have a 'key' property.\r\n */\r\n static selectRequired(control: AbstractControl): ValidationErrors | null {\r\n if(control.value?.key) return null;\r\n return {required: true};\r\n }\r\n}\r\n","import { Form, Messages } from \"../interfaces\";\r\nimport { NO_VALUE } from \"../constants/constants\";\r\n\r\nexport function handelErrorResponse<T extends {form: Form}>(obj: T, errorMsgs: Messages) {\r\n if (!obj.form) {\r\n obj.form = new Form(\r\n NO_VALUE,\r\n NO_VALUE,\r\n NO_VALUE,\r\n NO_VALUE,\r\n NO_VALUE,\r\n NO_VALUE,\r\n errorMsgs\r\n );\r\n } else {\r\n obj.form.messages = errorMsgs;\r\n }\r\n window.scrollTo(0, 0);\r\n }\r\n","export function dataURItoBlob(dataURI: any, mimeType?: string) {\r\n const byteString = atob(dataURI);\r\n const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n const blob = new Blob([arrayBuffer], { type: mimeType || 'image/jpeg' });\r\n return blob;\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nexport function validateSAID(this: any) {\r\n\r\n if (this?.personalInfoFormTemp) {\r\n let id = this?.personalInfoFormTemp?.get?.('elmIdNum')?.value\r\n const selectedType = this?.personalInfoFormTemp?.get?.('elmIdType')?.value?.value\r\n id = id.trim();\r\n if (id.length > 0 && (selectedType == 'IQAMA' || selectedType == 'NATIONAL ID')) {\r\n if (Number(id) === null) {\r\n // return { idInvalid: true };\r\n return false;\r\n }\r\n if (id.length !== 10) {\r\n return { idInvalid: true };\r\n // return false;\r\n }\r\n const type = id.substr(0, 1);\r\n if (type !== '2' && type !== '1') {\r\n return { idInvalid: true };\r\n // return false;\r\n }\r\n let idType\r\n if (selectedType == 'IQAMA') {\r\n idType = '2'\r\n } else if (selectedType == 'NATIONAL ID') {\r\n idType = '1'\r\n }\r\n if (idType !== type) {\r\n return { idInvalid: true };\r\n // return false;\r\n }\r\n\r\n let sum = 0;\r\n for (let i = 0; i < 10; i++) {\r\n if (i % 2 === 0) {\r\n const ZFOdd = String('00' + String(Number(id.substr(i, 1)) * 2)).slice(-2);\r\n sum += Number(ZFOdd.substr(0, 1)) + Number(ZFOdd.substr(1, 1));\r\n } else {\r\n sum += Number(id.substr(i, 1));\r\n }\r\n\r\n }\r\n return { idInvalid: (sum % 10 !== 0) ? true : false };\r\n // return (sum % 10 !== 0) ? false : true;\r\n }\r\n else if (id.length > 0 && selectedType == 'PASSPORT') {\r\n const nameWithNumbersRegex = '^[\\u0600-\\u065F\\u066A-\\u06EF\\u06FA-\\u06FFa-zA-Z0-9]+[\\u0600-\\u065F\\u066A-\\u06EF\\u06FA-\\u06FFa-zA-Z0-9-_ ]*$'\r\n if (!RegExp(nameWithNumbersRegex).test(id)) {\r\n return { idInvalid: true };\r\n // return false;\r\n }\r\n else {\r\n return { idInvalid: false };\r\n // return true;\r\n }\r\n }\r\n else {\r\n return { idInvalid: false };\r\n // return true;\r\n }\r\n } else {\r\n return { idInvalid: false };\r\n // return true;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable @angular-eslint/directive-selector */\r\n\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input\r\n} from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[textOnly]\"\r\n})\r\nexport class TextDirective {\r\n @Input() decimals = 0;\r\n\r\n constructor(private el: ElementRef) { }\r\n\r\n private check(value: string) {\r\n value.replace(/[\\u0000-\\u001F\\u007F-\\u009F]/g, \"\")\r\n const arabicAlphabetDigits = /[\\u0600-\\u06ff]|[\\u0750-\\u077f]|[\\ufb50-\\ufc3f]|[\\ufe70-\\ufefc]|[\\u0200]|[\\u00A0]/g;\r\n\r\n return (String(value).match(new RegExp('^[a-zA-Z ]*$')) || arabicAlphabetDigits.test(value) ) ;\r\n // return String(value).match(new RegExp('^[a-zA-Z ]*$'));\r\n }\r\n\r\n\r\n\r\n @HostListener(\"keydown\", [\"$event\"])\r\n onKeyDown(event: KeyboardEvent) {\r\n console.log(\"keydown\", event)\r\n const text = event.key;\r\n if (this.check(this.el.nativeElement.value + (event.key != 'Backspace' ? event.key : '')) || text == \" \" || text == 'Backspace' || (event.ctrlKey && (text == 'c' || text == 'ؤ' || text == 'v' || text == 'ر' || text == 'x' || text == 'ء' || text == 'a' || text == 'ش' || text == 'z' || text == 'ئ'))) {\r\n return;\r\n }\r\n else {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener(\"paste\", [\"$event\"])\r\n onPaste(event: ClipboardEvent) {\r\n const data = event.clipboardData.getData('text/plain');\r\n if (!this.check(data)) {\r\n event.preventDefault()\r\n\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"stringToBoolean\"\r\n})\r\nexport class stringToBooleanPipe implements PipeTransform {\r\n transform(value: string): boolean {\r\n return Boolean(value)\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"formatTime\"\r\n})\r\nexport class FormatTimePipe implements PipeTransform {\r\n transform(value: number): string {\r\n const minutes: number = Math.floor(value / 60);\r\n return (\r\n (\"00\" + minutes).slice(-2) +\r\n \":\" +\r\n (\"00\" + Math.floor(value - minutes * 60)).slice(-2)\r\n );\r\n }\r\n}\r\n","// export * from './ar.directive';\r\n// export * from './en.directive';\r\nexport * from './id.validator';\r\nexport * from './text.directive';\r\nexport * from './string-to-boolean.pipe';\r\nexport * from './timer.pipe';\r\n// export * from './currency.directive';\r\n","export const RegexPatterns = {\r\n email: '^[a-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$', // Email validation\r\n };","/*\r\n * Public API Surface of bpm-core\r\n */\r\nimport { InjectionToken } from '@angular/core';\r\nimport {MyLibConfig} from \"./lib/interfaces/shared.interface\";\r\n\r\nexport * from './lib/app/app.component';\r\nexport * from './lib/components/shared-components';\r\nexport * from './lib/components/app-component-sections';\r\nexport * from './lib/pipes';\r\nexport * from './lib/i18n';\r\nexport * from './lib/constants';\r\nexport * from './lib/interfaces';\r\nexport * from './lib/hooks';\r\nexport * from './lib/functions';\r\nexport * from './lib/validators';\r\nexport * from './lib/services';\r\nexport * from './lib/regex';\r\nexport * from './lib/directives/input-map-filter';\r\n\r\nexport const MY_LIB_CONFIG_TOKEN = new InjectionToken<MyLibConfig>('MyLibConfig');\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["coreEn.default","coreAr.default","constants.TARGET_SERVER_DP","constants.HTTP_METHOD_GET","constants.STATE_NAME_DP_GET_FEEDBACK","constants.HTTP_METHOD_POST","constants.SERVICE_NAME_DP_CREATE_FEEDBACK","constants.HTTP_METHOD_PUT","constants.SERVICE_NAME_DP_UPDATE_FEEDBACK","constants.TARGET_SERVER_WM","constants.SERVICE_NAME_WM_FORM","constants.SERVICE_NAME_DP_SEARCH_EMPLOYEE","constants.HEADER_CONTENT_TYPE_FORM","constants.WM_ACTION_SAVE_CHANGES","constants.SERVICE_NAME_WM_DRAFT_FORM","constants.SECTION_ID_REQUEST_DETAILS","constants.SECTION_STATUS_PENDING","constants.NO_VALUE","constants.TRUE_STRING","constants.TRUE_BOOL","constants.FALSE_STRING","constants.FALSE_BOOL","constants.IGATE_STATIC_ASSET_PROFILE_PHOTO_URL","constants.DONT_SHOW","constants.READ_ONLY","constants.HAS_COMMENTS","constants.NO_COMMENTS","constants.FORM_STATUS_SEND_BACK","constants.SECTION_ID_APPROVAL_PARTIAL_NAME","constants.SERVICE_NAME_DP_UPDATE_INBOX_ITEM","constants.STATE_MACHINE_ACTION_SUCCESS_INBOX_ITEM","constants.WORKFLOW_ITEMS","constants.STATE_MACHINE_ACTION_LOAD_HISTORY","constants.SERVICE_NAME_DP_INBOX_ITEM","constants.STATE_MACHINE_ACTION_GET_INBOX_ITEM","constants.APPROVERS","constants.STATE_MACHINE_ACTION_SUCCESS_RESPONSE","constants.INBOX_STATUS_SENT","constants.INBOX_STATUS_PENDING","i1","i2.CoreI18nService","i1.CoreI18nService","i1.CoreService","i2","i3","i4","i5","i6.MycurrencyPipe","i7","i1.ActionStateService","en.default","ar.default","i1.FormLabelComponent","i2.ValidationErrorsComponent","i5.TranslatePipe","i2.FormLabelComponent","i3.ValidationErrorsComponent","i4.InfoItemComponent","i6.TranslatePipe","YEAR_ONLY_FORMAT","i5.FormLabelComponent","i6.ValidationErrorsComponent","i7.InfoItemComponent","i8","i9","i10.TranslatePipe","i3.InfoItemComponent","i1.MycurrencyPipe","i6","i4.FormLabelComponent","i5.ValidationErrorsComponent","i6.InfoItemComponent","i7.TranslatePipe","MatOption","MatError","MatFormField","i2.InfoItemComponent","i1.SidenavService","Constants.FORM_STATUS_REJECTED","Constants.FORM_STATUS_CANCELLED","Constants.FORM_STATUS_PENDING","constants.FORM_STATUS_REJECT","constants.FORM_STATUS_CANCEL","Constants.FEEDBACK_STATUS_REQUEST","Constants.FEEDBACK_STATUS_WAITING","Constants.FEEDBACK_STATUS_RESPOND","Constants.FEEDBACK_STATUS_RESPONDED","Constants.NO_VALUE","i2.SidenavService","i2.CoreService","StatusMap","Constants.FORM_STATUS_REJECT","Constants.SECTION_STATUS_UNSATISFIED","Constants.FORM_STATUS_CANCEL","i1.FeedBackService","Constants.FORM_STATUS_COMPLETED","Constants.FORM_STATUS_APPROVED","Constants.LOGOUT_URL","Constants.SECTION_ID_REQUEST_DETAILS","Constants.SECTION_ID_APPROVAL_PARTIAL_NAME","i1.I18nService","i1.SegmentDynamicLoaderService","i3.SidenavService","i3.CoreI18nService","i3.CoreService"],"mappings":"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"}
1
+ {"version":3,"file":"bpm-core.mjs","sources":["../../../projects/bpm-core/src/lib/constants/constants.ts","../../../projects/bpm-core/src/lib/i18n/en.ts","../../../projects/bpm-core/src/lib/i18n/ar.ts","../../../projects/bpm-core/src/lib/services/i18n.service.ts","../../../projects/bpm-core/src/lib/services/sidenav.service.ts","../../../projects/bpm-core/src/lib/services/feedBack.service.ts","../../../projects/bpm-core/src/lib/hooks/save-form.ts","../../../projects/bpm-core/src/lib/services/core.service.ts.ts","../../../projects/bpm-core/src/lib/services/action.service.ts.ts","../../../projects/bpm-core/src/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.html","../../../projects/bpm-core/src/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.html","../../../projects/bpm-core/src/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.html","../../../projects/bpm-core/src/lib/pipes/format-as-password.pipe.ts","../../../projects/bpm-core/src/lib/pipes/currency.pipe.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/date-picker/date-format.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/base-component/base-component.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/control-value-accessor.directive.ts","../../../projects/bpm-core/src/lib/components/shared-components/terms-conditions/terms-conditions.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/terms-conditions/terms-conditions.component.html","../../../projects/bpm-core/src/lib/pipes/translate.pipe.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/form-label/form-label.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/form-label/form-label.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/validation-errors/validation-error-messages.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/validation-errors/validation-errors.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/validation-errors/validation-errors.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/info-item/info-item.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/info-item/info-item.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/shared-imports.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/checkbox/checkbox.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/checkbox/checkbox.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/date-picker/date-picker.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/date-picker/date-picker.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.html","../../../projects/bpm-core/src/lib/directives/input-map-filter/input-map-filter.directive.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input/input.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input/input.component.html","../../../projects/bpm-core/src/lib/directives/input-map-filter/input-filters.ts","../../../projects/bpm-core/src/lib/directives/input-map-filter/input-mappers.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-number/input-number.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-number/input-number.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-email/input-email.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-email/input-email.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-mask/input-mask.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-mask/input-mask.component.html","../../../projects/bpm-core/src/lib/directives/currency.directive.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-currency/input-currency.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-currency/input-currency.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-autocomplete/index.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-telephone/input-telephone.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/input-telephone/input-telephone.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/search-employee/search-employee.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/search-employee/search-employee.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/select/select.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/select/select.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/textarea/textarea.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/textarea/textarea.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/toggle-button/toggle-button.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/toggle-button/toggle-button.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/repeated-list/repeated-list.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/repeated-list/repeated-list.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/table-list/table-list.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/table-list/table-list.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/attachment-section/attachment-section.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/attachment-section/attachment-section.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/radio/radio.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/radio/radio.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/multiselect/multiselect.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/multiselect/multiselect.component.html","../../../projects/bpm-core/src/lib/components/shared-components/form-field/time-picker/time-picker.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/form-field/time-picker/time-picker.component.html","../../../projects/bpm-core/src/lib/helpers/shared.helper.ts","../../../projects/bpm-core/src/lib/enums/colors.enum.ts","../../../projects/bpm-core/src/lib/enums/events.enum.ts","../../../projects/bpm-core/src/lib/enums/actions.enum.ts","../../../projects/bpm-core/src/lib/directives/skip-location.directive.ts","../../../projects/bpm-core/src/lib/components/shared-components/table/table.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/table/table.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/approvals/approvals.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/approvals/approvals.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.html","../../../projects/bpm-core/src/lib/components/shared-components/action-buttons/action-buttons.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/action-buttons/action-buttons.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/faqs/faqs.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/faqs/faqs.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.html","../../../projects/bpm-core/src/lib/components/shared-components/title-section/title-section.component.ts","../../../projects/bpm-core/src/lib/components/shared-components/title-section/title-section.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/profile-section/profile-section.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/profile-section/profile-section.component.html","../../../projects/bpm-core/src/lib/interfaces/form.interface.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/feedback-section/feedback-section.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/feedback-section/feedback-section.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/activities/activities.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/activities/activities.component.html","../../../projects/bpm-core/src/lib/pipes/status-style.pipe.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/previous-requests/previous-requests.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/previous-requests/previous-requests.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/service-header/service-header.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/service-header/service-header.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/status/status.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/status/status.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/form-section/form-section.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/form-section/form-section.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/main-request-details/main-request-details.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/main-request-details/main-request-details.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/workflow-section/workflow-section.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/workflow-section/workflow-section.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/layout/header/header.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/layout/header/header.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/layout/side-nav/side-nav.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/layout/side-nav/side-nav.component.html","../../../projects/bpm-core/src/lib/components/app-component-sections/layout/layout.component.ts","../../../projects/bpm-core/src/lib/components/app-component-sections/layout/layout.component.html","../../../projects/bpm-core/src/lib/testComponent/request-details-section/request-details-section.component.ts","../../../projects/bpm-core/src/lib/testComponent/request-details-section/request-details-section.component.html","../../../projects/bpm-core/src/lib/testComponent/general-approver-section/general-approver-section.component.ts","../../../projects/bpm-core/src/lib/testComponent/general-approver-section/general-approver-section.component.html","../../../projects/bpm-core/src/lib/testComponent/config/segment-dynamic-loader.config.ts","../../../projects/bpm-core/src/lib/testComponent/services/i18n.service.ts","../../../projects/bpm-core/src/lib/testComponent/services/segment-dynamic-loader.service.ts","../../../projects/bpm-core/src/lib/app/app.component.ts","../../../projects/bpm-core/src/lib/app/app.component.html","../../../projects/bpm-core/src/lib/hooks/load-form.ts","../../../projects/bpm-core/src/lib/functions/encode-password.ts","../../../projects/bpm-core/src/lib/functions/validators.ts","../../../projects/bpm-core/src/lib/functions/handel-error-response.ts","../../../projects/bpm-core/src/lib/functions/data-to-blob.ts","../../../projects/bpm-core/src/lib/validators/id.validator.ts","../../../projects/bpm-core/src/lib/validators/text.directive.ts","../../../projects/bpm-core/src/lib/validators/string-to-boolean.pipe.ts","../../../projects/bpm-core/src/lib/validators/timer.pipe.ts","../../../projects/bpm-core/src/lib/validators/index.ts","../../../projects/bpm-core/src/lib/regex/regex-patterns.ts","../../../projects/bpm-core/src/public-api.ts","../../../projects/bpm-core/src/bpm-core.ts"],"sourcesContent":["// Constant for basic validations\r\nexport const DONT_SHOW = null;\r\nexport const NO_COMMENTS = false;\r\nexport const HAS_COMMENTS = true;\r\nexport const URL_SEPARATOR = '/';\r\nexport const READ_ONLY = true;\r\nexport const WRITE_MODE = false;\r\nexport const NO_VALUE = null;\r\nexport const TRUE_STRING = 'TRUE';\r\nexport const FALSE_STRING = 'FALSE';\r\nexport const TRUE_BOOL = true;\r\nexport const FALSE_BOOL = false;\r\n\r\n// State Machine statuses\r\nexport const STATE_MACHINE_STATUS_IDLE = 'idle';\r\nexport const STATE_MACHINE_STATUS_FETCHING = 'fetching';\r\nexport const STATE_MACHINE_STATUS_SENDING = 'sending';\r\nexport const STATE_MACHINE_STATUS_RESULT = 'result';\r\nexport const STATE_MACHINE_STATUS_ERROR = 'error';\r\n\r\n// State Machine actions\r\nexport const STATE_MACHINE_ACTION_LOAD_FORM = 'loadForm';\r\nexport const STATE_MACHINE_ACTION_SUBMIT_FORM = 'submitForm';\r\nexport const STATE_MACHINE_ACTION_SEARCH_EMPLOYEE = 'searchEmployee';\r\nexport const STATE_MACHINE_ACTION_EMPLOYEE_PROFILE = 'employeeProfile';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_WM = 'successWm';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_RESPONSE = 'serviceResponce';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_USERS = 'successUsers';\r\nexport const STATE_MACHINE_ACTION_CONVERT = 'convert';\r\nexport const STATE_MACHINE_ACTION_SUCCESS = 'success';\r\nexport const STATE_MACHINE_ACTION_FAILURE = 'failure';\r\nexport const STATE_MACHINE_ACTION_HANDLE_ERROR = 'handleError';\r\nexport const STATE_MACHINE_ACTION_LOAD_FILE = 'loadFile';\r\nexport const STATE_MACHINE_ACTION_USER_MAF = 'userDetails';\r\nexport const STATE_MACHINE_ACTION_USER_CEP = 'user';\r\nexport const STATE_MACHINE_ACTION_CALC = 'calc';\r\n\r\n\r\nexport const STATE_MACHINE_ACTION_SHOW_PRINT = 'showPrint';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_PRINT = 'successPrint';\r\nexport const SERVICE_NAME_WM_HTML_GENERATOR = 'htmlGenerator';\r\n\r\n// Process name code\r\nexport const PROCESS_NAME_CODE = 'SCR';\r\n\r\n// HTTP protocols that are available\r\nexport const HTTP_PROTOCOL_HTTP = 'http://';\r\nexport const HTTP_PROTOCOL_HTTPS = 'https://';\r\n\r\n// Liferay constants\r\n// export const LR_AUTH_SERVICE_URL_PATH = '/group/i-gate/wm-bpm/forms/-/proxy/authenticate';\r\n// export const LR_SERVICE_URL_PATH = '/group/i-gate/wm-bpm/forms/-/proxy/execute';\r\n// export const LR_SERVICE_URL_HOST = '10.0.0.48';\r\n// export const LR_SERVICE_URL_HOST_DEV = '10.0.0.156';\r\n// export const LR_SERVICE_URL_PORT_DEV = '8000';\r\n// export const LR_SERVICE_URL_PATH_DEV = '/new.json';\r\n// export const LR_SERVICE_URL_PORT = '17899';\r\n\r\n// HTTP methods that are available are\r\nexport const HTTP_METHOD_GET = 'GET';\r\nexport const HTTP_METHOD_POST = 'POST';\r\nexport const HTTP_METHOD_PUT = 'PUT';\r\n\r\n// Available servers to the UI\r\nexport const TARGET_SERVER_WM = 'WM';\r\nexport const TARGET_SERVER_DP = 'DP';\r\n\r\n// Service Names that are available\r\nexport const SERVICE_NAME_WM_FORM = 'form';\r\nexport const SERVICE_NAME_WM_CHILD_FORM = '';\r\nexport const SERVICE_NAME_DP_SEARCH_EMPLOYEE = 'igate.users.search.v3';\r\n\r\n// Languages codes available in the application\r\nexport const LANGUAGE_CODE_EN = 'en';\r\nexport const LANGUAGE_CODE_AR = 'ar';\r\n\r\n// URLs form static assets\r\nexport const IGATE_STATIC_ASSET_PROFILE_PHOTO_URL = '/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=';\r\nexport const HEADER_CONTENT_TYPE_FORM = 'application/x-www-form-urlencoded';\r\n\r\n// Roles constants\r\nexport const ROLE_REQUESTER = 'R';\r\n\r\n// Section IDs\r\nexport const SECTION_ID_REQUEST_DETAILS = 'requestDetails';\r\nexport const SECTION_ID_GM_PARTIAL_ROLE = 'GM';\r\nexport const SECTION_ID_SM_PARTIAL_ROLE = 'SM';\r\nexport const SECTION_ID_DM_PARTIAL_ROLE = 'DM';\r\nexport const SECTION_ID_VP_PARTIAL_ROLE = 'VP';\r\nexport const SECTION_ID_SVP_PARTIAL_ROLE = 'SVP';\r\nexport const SECTION_ID_EXECUTE_PARTIAL_ROLE = 'GovtRelationsLead';\r\nexport const SECTION_ID_PERFORM_PARTIAL_ROLE = 'GovtRelationsMember';\r\nexport const SECTION_ID_EMP_INFO_APPROVAL_PARTIAL_ROLE = 'EmpInfo';\r\nexport const SECTION_ID_PAYROLL_APPROVAL_PARTIAL_ROLE = 'Payroll';\r\n\r\nexport const SECTION_ID_REQUESTER_PARTIAL_NAME = 'Requester';\r\nexport const SECTION_ID_APPROVAL_PARTIAL_NAME = 'Approval';\r\nexport const SECTION_ID_NOTHING_PARTIAL_NAME = '';\r\n\r\nexport const SECTION_STATUS_PENDING = 'PENDING';\r\nexport const SECTION_STATUS_APPROVED = 'APPROVED';\r\nexport const SECTION_STATUS_UNSATISFIED = 'UNSATISFIED';\r\n\r\nexport const WM_ACTION_SAVE = 'SAVE';\r\nexport const WM_ACTION_SUBMIT = 'SUBMIT';\r\n\r\nexport const FORM_STATUS_NEW = 'NEW';\r\nexport const FORM_STATUS_PENDING = 'PENDING';\r\nexport const FORM_STATUS_APPROVED = 'APPROVED';\r\nexport const FORM_STATUS_APPROVE = 'APPROVE';\r\nexport const FORM_STATUS_REJECTED = 'REJECTED';\r\nexport const FORM_STATUS_REJECT = 'REJECT';\r\nexport const FORM_STATUS_SEND_BACK = 'SENDBACK';\r\nexport const FORM_STATUS_CANCELLED= 'CANCELLED';\r\nexport const FORM_STATUS_CANCEL= 'CANCEL';\r\nexport const FORM_STATUS_COMPLETED = 'COMPLETED';\r\n\r\nexport const STATE_MACHINE_ACTION_LOAD_HISTORY = 'loadHistory';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_HISTORY = 'successHistory';\r\nexport const SERVICE_NAME_DP_LOAD_HISTORY = 'igate.get.inbox.item.workflow';\r\nexport const WM_ACTION_SAVE_CHANGES = 'SAVE_CHANGES';\r\nexport const SERVICE_NAME_WM_DRAFT_FORM = 'draft';\r\n\r\n// feedback and flag\r\nexport const STATE_MACHINE_ACTION_GET_INBOX_ITEM = 'getInboxItem';\r\nexport const SERVICE_NAME_DP_INBOX_ITEM = 'igate.get.inbox.item';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_INBOX_ITEM = 'successInboxItem';\r\n\r\nexport const STATE_MACHINE_ACTION_SET_FLAG = 'setFlagPriority';\r\nexport const SERVICE_NAME_DP_UPDATE_INBOX_ITEM = 'igate.update.inbox.item';\r\nexport const STATE_MACHINE_ACTION_INBOX_ITEM_RESPONSE = 'inboxItemResponse';\r\n\r\nexport const FEEDBACK_STATUS_REQUEST = 'requestFeedback';\r\nexport const FEEDBACK_STATUS_RESPOND = 'respondToFeedback';\r\nexport const FEEDBACK_STATUS_WAITING = 'waitingFeedback';\r\nexport const FEEDBACK_STATUS_RESPONDED = 'feedbackResponded';\r\n\r\n\r\nexport const STATE_MACHINE_ACTION_SUBMIT_FEEDBACK = 'submitFeedback';\r\nexport const STATE_MACHINE_ACTION_GET_FEEDBACK = 'getFeedback';\r\nexport const STATE_MACHINE_ACTION_UPDATE_FEEDBACK = 'submitFeedbackResponse';\r\nexport const SERVICE_NAME_DP_CREATE_FEEDBACK = 'igate.create.inbox.item.feedback';\r\nexport const STATE_NAME_DP_GET_FEEDBACK = 'igate.get.inbox.item.feedback';\r\nexport const SERVICE_NAME_DP_UPDATE_FEEDBACK = 'igate.update.inbox.item.feedback';\r\n\r\n\r\nexport const PROFILE_CONTAINER = '#profileFormContent';\r\nexport const COMMENT_CONTAINER = '#commentsFormContent';\r\nexport const FEEDBACK_CONTAINER = '#feedbackFormContent';\r\nexport const INBOX_STATUS_PENDING = 'pending';\r\nexport const INBOX_STATUS_PROCESSED = 'processed';\r\nexport const INBOX_STATUS_SENT = 'sent';\r\nexport const REPORT = 'report';\r\nexport const DATE_TIME = 'DD/MM/YYYY HH:mm:ss';\r\nexport const DATE_DASH = 'DD-MMM-YYYY';\r\nexport const DATE_SLASH = 'DD/MM/YYYY';\r\n\r\n\r\nexport const SERVICE_NAME_WM_GET_APPROVED_REQUEST = 'requests' ;\r\nexport const SERVICE_NAME_WM_GET_MY_APPROVED_REQUEST = 'myRequests' ;\r\nexport const STATE_MACHINE_ACTION_GET_APPROVED_REQUEST = 'getApprovedRequest';\r\nexport const STATE_MACHINE_ACTION_GET_APPROVED_REQUEST_RESPONSE = 'getApprovedRequestResponse' ;\r\n\r\n\r\nexport const STATE_MACHINE_ACTION_PROJECT_MAF = 'projectDetails';\r\nexport const STATE_MACHINE_ACTION_PROJECT_CEP = 'project';\r\nexport const STATE_MACHINE_ACTION_COMMONAPI = 'commonApi';\r\nexport const STATE_MACHINE_ACTION_SEARCH = 'search';\r\nexport const STATE_MACHINE_ACTION_PPROVED_REQUESTS = 'approvedRequests';\r\nexport const GETSIPORTENTRYGROUPS = 'getSiportEntryGroups';\r\nexport const GETSIPORTENTRYLOCATIONS = 'getSiportEntryLocations';\r\nexport const STATE_MACHINE_ACTION_SUCCESS_SERVICES= 'serviceResponce';\r\nexport const SERVICE_NAME_MAF = 'MAF';\r\nexport const SERVICE_NAME_CEP = 'CEP';\r\nexport const STATE_MACHINE_ACTION_PDF = 'pdfAttachments';\r\n\r\nexport const LOGOUT_URL = '/c/portal/logout';\r\n\r\nexport const WORKFLOW_ITEMS = 'workflowItems';\r\nexport const APPROVERS = 'approvers';\r\n","export default {\r\n \"pageTimeOut\": 'Looks like the server is taking too long to respond, this can be caused by either poor connectivity or an error with our servers. Please try again in a while',\r\n \"pageErrorLoading\":'An error occurred, Please try after sometimes. If the error continues, please contact the IT Helpdesk',\r\n // Buttons\r\n \"reset\": \"Reset\",\r\n \"submit\": \"Submit\",\r\n // Select\r\n \"selectYourOption\": \"Select your option\",\r\n // Labels\r\n \"optional\": \"Optional\",\r\n \"Optional\": \"Optional\",\r\n //Buttons\r\n \"browse\": \"Browse\",\r\n // Request Details Title\r\n \"requestDetailsTitle\":\"Request Details\",\r\n \"hrRequestDetailsTitle\":\"Request Details (Grievance Employee)\",\r\n \"applyRequestFor\": 'Apply Request For',\r\n \"searchForEmployee\":'Search for employee',\r\n // Profile Info Labels\r\n \"directManager\": \"Direct Manager\",\r\n \"employeeEmail\": \"Email\",\r\n \"generalDepartmentName\": \"General Dep.Name\",\r\n \"departmentName\": \"Department\",\r\n \"generalDepartmentCode\": \"General Dep. Code\",\r\n \"humanResourcesLocation\": \"HR location\",\r\n \"nationality\": \"Nationality\",\r\n \"businessPhone\": \"Business Phone\",\r\n \"viewAllDetails\": \"View All Details\",\r\n \"jobPosition\": \"Job Position\",\r\n \"sector\": \"Sector\",\r\n // Form Section labels\r\n \"delegateTo\": \"Delegated to\",\r\n \"processedBy\":\"Processed by\",\r\n // Datepicker labels\r\n \"gregorian\": \"Gregorian\",\r\n \"hijri\": \"Hijri\",\r\n // Messages\r\n \"successSubmited\": \"Thank you for submitting this form\",\r\n \"lenghtMin15Max500\":\"Please enter minimum 15 characters and maximum 500 characters\",\r\n \"lenghtMin15Max1000\":\"Please enter minimum 15 characters and maximum 1000 characters\",\r\n \"minLength15\": \"Please enter a minimum of 15 characters\",\r\n \"maxlength500\": \"500 is the maximum number of characters supported\",\r\n \"maxSize\": \"Maximum file size is 10MB\",\r\n \"unsupportedType\": \"Maximum file size allowed is 10MB and accepted extensions are (pdf, doc, docx, ppt, pptx, pps, ppsx, odt, xls, xlsx, zip, msg, csv, txt, rtf, html, mp4, m4v, mov, wmv, avi, mpg, ogv, 3gp, 3g2, jpg, jpej, png, gif, bmp)\",\r\n \"unsupportedTypeImgPdf\": \"Maximum file size allowed is 10MB and accepted extensions are (pdf, jpg, jpej, png, bmp)\",\r\n \"unsupportedTypeImgPdf2\": \"Maximum file size allowed is 10MB and accepted extensions are (pdf, docx, xlsx, jpg, email, pptx)\",\r\n \"unsupportedTypeImg\": \"Maximum file size allowed is 10MB and accepted extensions are (jpg, jpej, png, bmp)\",\r\n \"unsupportedTypePdf\": \"Maximum file size allowed is 10MB and accepted extension is (pdf)\",\r\n \"noUsersFound\": \"Please enter valid search data\",\r\n // Submit Table\r\n \"formTableFormId\": \"Form ID\",\r\n \"formTableFormStatus\": \"Form Status\",\r\n \"formTableCreationDate\": \"Creation Date\",\r\n \"formTablePendingWith\": \"Pending With\",\r\n \"formTableBackToInbox\": \"Back to Inbox\",\r\n // feedback\r\n \"requestFeedback\": \"Request Feedback\",\r\n \"requestTo\": \"Request To\",\r\n \"feedback\": \"Feedback\",\r\n \"viewFeedback\": \"View Feedback\",\r\n \"requestFrom\": \"Request From\",\r\n \"feedbackQuestion\": \"Feedback Question\",\r\n \"employeeSearch\": \"Employee Search\",\r\n \"searchEmployeeTooltip_1\": \"Enter minimum 3 character to start employee search\",\r\n \"searchEmployeeTooltip_2\": \"Type umber to search by employee number\",\r\n \"searchEmployeeTooltip_3\": \"To search by email. use @ before or after search character\",\r\n \"searchEmployeeTooltip_4\": \"Seperate First name, Second Name, Family Name with space to search by First Name, Second Name and Family Name\",\r\n \"onBehalfFlag\":\"Request On-behalf\",\r\n \"onBehalfOfEmail\":\"Employee Name\",\r\n \"commentHistory\":\"Comments History\",\r\n \"NODATA\": 'No Data',\r\n \"termsAndConditions\": 'Terms And Conditions',\r\n \"no-files\": \" No documents attached\",\r\n \"drag-files\": \"Drag and drop file here\",\r\n \"limit-error\": \"limit error\",\r\n \"size-error\": \"size error\",\r\n \"type-error\": \"type error\",\r\n \"duplicated-error\": \"This file already exist\",\r\n \"thisIsInvalidFile\": 'This is invalid file',\r\n \"add\": \"Add\",\r\n \"addAttachments\": \"Add Attachments\",\r\n \"attachmentdescription\": \"File Description\",\r\n \"attachmentcomment\": \"Comments\",\r\n // \"attachment\": \"Attachment\",\r\n \"addAttachment\": \"Add Attachment\",\r\n \"locationOfIncident\": \"Location Of The Incident\",\r\n \"FileName\": \"File Name\",\r\n \"FileDescription\": \"File Description\",\r\n // \"delete\": \"Delete\",\r\n \"Attachments\":\"Attachments\",\r\n \"Attachment\":\"Attachment\",\r\n \"comment\":\"Comments\",\r\n \"comments\":\"Comments\",\r\n \"description\":\"Description\",\r\n \"MyRequests\": \"My Requests\",\r\n \"processingDate\":\"Processing Date\",\r\n \"Approvals\":\"Approvals\",\r\n \"submittedSuccessfully\": \"Your request submitted successfully\",\r\n \"support\": \" Supported files: JPG,PNG & PDF\",\r\n \"support2\": \"Maximum file size allowed is \",\r\n \"mb\": \"MB\",\r\n \"support3\": \"Maximum file size is 300 KB\",\r\n \"maxAllowedSize\": \"Maximum file size allowed is 10MB\",\r\n \"ViewDetails\":\"View Details\",\r\n \"NoData2\": \"No Data found\",\r\n \"NoData1\": \"No Comments found\",\r\n \"NoData\": \"No Data found\",\r\n \"Filters\": \"Filter\",\r\n \"ApplyFilters\": \"Apply\",\r\n \"Discard\": \"Discard\",\r\n \"employeeID\": \"Employee ID\",\r\n \"Delete\": \"Delete\",\r\n \"fullName\":\"Full Name\",\r\n \"welcomeBack\": \"Welcome back\",\r\n \"welcome\": \"Welcome \",\r\n \"logout\": \"Logout\",\r\n \"otherLang\": \"العربية\",\r\n \"Hello\": \"Hello\",\r\n \"Cancel\":\"Cancel\",\r\n \"validEmailError\": 'Please enter valid Email ',\r\n \"validFieldError\": 'Please enter valid ',\r\n \"validSelectError\": 'Please select ',\r\n \"validSearchError\": 'Please search for valid ',\r\n \"delete\": \"Delete\",\r\n \"Areyousureyouwantdelete\":\"Are you sure you want to delete?\",\r\n \"drf-confirmatton-msg\":\"There are still pending stakeholders actions. Please confirm if you want to move to the next level without these actions.\",\r\n \"Yes-Proceed\":\" Yes - Proceed\",\r\n \"No-Discard\":\"No - Discard\",\r\n \"yes\":\" Yes, Delete\",\r\n \"NoAttachments\": \"There are no Attachments\",\r\n \"cancel\": \"Cancel\",\r\n \"View\":\"View\",\r\n \"edit\":\"Edit\",\r\n \"Viewapprovalcycle\": \"View Approval Cycle\",\r\n \"approvalCycle\": \"Approval Cycle\",\r\n \"link\":\"Link\",\r\n\r\n\r\n AttachmentInvoices: 'Attachment Invoices',\r\n AttachmentsOfBank:'Attachments of Bank Statement or Credit Card',\r\n DepositVoucherAttachments:'Deposit Voucher Attachments',\r\n placeholder: 'Enter value here',\r\n approve:'Approve',\r\n downloadLink:\"Download Link\",\r\n serviceBrief : \"Service Brief\",\r\n PreviousRequests:\"Previous Requests\",\r\n 'Product Implementation': 'Product Implementation',\r\n 'Sales Order and Quality Assurance':'Sales Order and Quality Assurance',\r\n 'Billing Support and Contracts':'Billing Support and Contracts',\r\n 'Sales Excellence':'Sales Excellence',\r\n 'Order Engineering and Delivery Management':'Order Engineering and Delivery Management',\r\n 'Third Party Control and Projects':'Third Party Control and Projects',\r\n 'Enterprise Customer Care':'Enterprise Customer Care',\r\n 'Enterprise Account Sales':'Enterprise Account Sales',\r\n 'Government Accounts Sales':'Government Accounts Sales',\r\n 'Marketing Communications':'Marketing Communications',\r\n 'Customer Experience Excellence':'Customer Experience Excellence',\r\n 'Commercial Regulation':'Commercial Regulation',\r\n 'Enterprise Commercial Finance':'Enterprise Commercial Finance',\r\n 'Product Pricing and Profitability':'Product Pricing and Profitability',\r\n 'Data Protection and Privacy':'Data Protection and Privacy',\r\n 'Customer Value Management':'Customer Value Management',\r\n\r\n termNote1: \"1. The requesting department is responsible for the validity of the attached papers and supervision of labor\",\r\n termNote2: \"2. The worker must be on the sponsorship of the contracting company. In the case of subcontracting, the contract between the two parties must be attached, signed, stamped and updated. And the worker must be on the sponsorship of the subcontracting company\",\r\n termNote3: \"3. The profession of the worker in his residence must be identical to his work and in accordance with the nature of his work\",\r\n termNote4: \"4. For persons who attend a visit visa, a valid visit visa must be attached, with attachment of proof of the relationship with the stc company, either (contract / or letter from the requesting party stating the mission of the visit to the company (stc)). They will be granted a permission for the duration of their stay with the visa.\",\r\n termNote5: \"5. The entry permit card must not be used by someone else, and should be returned to the security department once you're finished. In case it is lost, please call Security and Safety Department 8001231616 or 0114251616 (the main center). A new entry permit application is required to be exchanged for a lost card. With a fine of 500 riyals for the first time and 1000 riyals for the second time, and on the third time it is forbidden to enter and referred to the relevant government agencies.\",\r\n termNote6: \"6. The contracting company bears all legal consequences of any damage caused by the worker inside the work sites of the company (stc).\",\r\n termNote7: \"7. We hope to print the form (from the print button at the top of the form) after approval by the Card Services Division, and bring it upon review to issue a card.\",\r\n termNote8: \"8. The main contractor and subcontractors shall comply with safety and security instructions as stipulated in the contracts concluded with all the contractors of the company (stc) and subject to periodic inspection procedures for the sites by safety inspectors to ensure compliance with safety instructions and safe work policy and violations. Financial violations and fines will be released if they are shown and described in financial values via vendor relations department:\",\r\n termNote9: \"9. The requesting department shall include the technical reports recommended for exchange and safety violations, if any. It is deducted from the entitlement, in implementation of the list of fines and penalties for safety violations against contractors signed by the Vice President for Procurement.\",\r\n termNote10: \"10. Collecting the ID cards of the main center in the card-issuing center-Gate 3 , as for the rest of the regions, you can collect it from the Department of Security of Regions.\",\r\n termNote11: \"11. The list of penalties and fines is applied to vehicles violators inside the STC sites where the violating vehicles are stopped by putting the brakes on them, and the company fully disclaims any damage caused by the brake upon tying or untying\",\r\n \"messageErrorPhoneNumber\": \"Please enter valid mobile number.\",\r\n serviceAgreement: \"Service agreement\",\r\n lengthError: \"can't upload more than\",\r\n userAlreadyExist: \"User already exists\",\r\n INTERNAL: 'Internal: Make the document/record available for viewing within the company only',\r\n SPECIFIC_OR_CONFIDENTIAL: 'Specific or confidential: Publication of the document/record with viewing permit limited to: <br>* Specific Names <br>* Specific organizational unit <br>* Specific administrative levels',\r\n AVAILABLE: 'Available: make the document/record available for viewing within and outside the company.',\r\n other:'Other',\r\n others:'Others',\r\n selectAll:'Select All',\r\n URGENT: '1 day',\r\n NORMAL: '3 days',\r\n select: 'Select',\r\n addMultiAttachments:\"Add Multi Attachments\",\r\n flagStatusUpdated:\"Flag status updated successfully\",\r\n \"AllRequests\": \"All Requests\",\r\n \"applyFilters\": \"Apply Filters\",\r\n \"clear\": \"Clear\",\r\n \"filters\": \"Filters\",\r\n month: \"Month\",\r\n year: \"Year\",\r\n status: \"Status\",\r\n downloadAll:'Download All Attachment',\r\n startDate: \"Start Date\",\r\n endDate: \"End Date\",\r\n textArea: \"Text area\",\r\n enter: \"Enter\",\r\n}\r\n","export default {\r\n pageErrorLoading: \"حدث خطأ، يرجى المحاولة لاحقا. إذا استمر الخطأ، يرجى الاتصال بمكتب مساعدة تقنية المعلومات\",\r\n pageTimeOut:\"يبدو أن الخادم يستغرق وقتًا طويلاً للرد، وقد يحدث هذا بسبب ضعف الاتصال أو خطأ في خوادمنا. يرجى المحاولة مرة أخرى بعد قليل\",\r\n // Buttons\r\n \"reset\": \"إعادة تهيئة\",\r\n \"submit\": \"إرسال\",\r\n // Select\r\n \"selectYourOption\": \"الرجاء الإختيار\",\r\n // Labels\r\n \"optional\": \"إختياري\",\r\n \"Optional\": \"إختياري\",\r\n //Buttons\r\n \"browse\": \"تصفح\",\r\n \"MyRequests\": \"طلباتي\",\r\n \"maxAllowedSize\": \"حجم الملف يجب ألا يتعدى 10 ميغابايت\",\r\n // Request Details Title\r\n \"requestDetailsTitle\":\"تفاصيل الطلب\",\r\n \"hrRequestDetailsTitle\":\"تفاصيل الطلب (الموارد البشرية)\",\r\n \"applyRequestFor\": \"تقديم الطلب لـ\",\r\n \"searchForEmployee\":\"البحث عن موظف\",\r\n // Profile Info labels\r\n \"directManager\": \"المدير المباشر\",\r\n \"employeeEmail\": \"البريد الإلكتروني\",\r\n \"generalDepartmentName\": \"الإدارة العامة\",\r\n \"departmentName\": \"القسم\",\r\n \"generalDepartmentCode\": \"رمز الإدارة العامة\",\r\n \"humanResourcesLocation\": \"شئون الموظفين\",\r\n \"nationality\": \"الجنسية\",\r\n \"businessPhone\": \"هاتف العمل\",\r\n \"Viewapprovalcycle\": \"عرض دورة الموافقة\",\r\n \"approvalCycle\": \" دورة الموافقة\",\r\n \"viewAllDetails\": \"عرض جميع التفاصيل\",\r\n \"jobPosition\": \"الوظيفة\",\r\n \"sector\": \"القطاع\",\r\n // Form Section labels\r\n \"delegateTo\": \"فوض\",\r\n \"processedBy\":\"تمت معالجته بواسطة\",\r\n // Datepicker labels\r\n \"gregorian\": \"ميلادي\",\r\n \"hijri\": \"هجري\",\r\n // Messages\r\n \"successSubmited\": \".شكراً لإرسالك النموذج\",\r\n \"lenghtMin15Max500\":\"الرجاء إدخال 15 حرف كحد أدنى و 500 حرف كحد أقصى\",\r\n \"lenghtMin15Max1000\":\"الرجاء إدخال 15 حرف كحد أدنى و 1000 حرف كحد أقصى\",\r\n \"minLength15\": \"الرجاء كتابة 15 حرف بحد أدنى\",\r\n \"maxlength500\": \"الحد الأقصى المسموح 500 حرف\",\r\n \"maxSize\": \"حجم الملف يجب ألا يتعدى 10 ميغابايت\",\r\n \"unsupportedType\": \"الحد الأقصى المسموح لحجم الملف 10 ميجابيت و أنواع الملفات المسموح إضافتها pdf, doc, docx, ppt, pptx, pps, ppsx, odt, xls, xlsx, zip, csv, txt, rtf, html, mp4, m4v, mov, wmv, avi, mpg, ogv, 3gp, 3g2, jpg, jpej, png, gif, bmp\",\r\n \"unsupportedTypeImgPdf\": \"الحد الأقصى المسموح لحجم الملف 10 ميجابيت و أنواع الملفات المسموح إضافتها (pdf, jpg, jpej, png, bmp)\",\r\n \"unsupportedTypeImgPdf2\": \"الحد الأقصى المسموح لحجم الملف 10 ميجابيت و أنواع الملفات المسموح إضافتها (pdf, docx, xlsx, jpg, email, pptx)\",\r\n \"unsupportedTypeImg\": \"الحد الأقصى المسموح لحجم الملف 10 ميجابيت و أنواع الملفات المسموح إضافتها (jpg, jpej, png, bmp)\",\r\n \"unsupportedTypePdf\": \"الحد الأقصى المسموح لحجم الملف 10 ميجابيت و أنواع الملفات المسموح إضافتها (pdf)\",\r\n \"noUsersFound\": \"الرجاء إدخال بيانات البحث بشكل صحيح\",\r\n // Submit Table\r\n \"formTableFormId\": \"رقم النموذج\",\r\n \"formTableFormStatus\": \"حالة النموذج\",\r\n \"formTableCreationDate\": \"تاريخ النموذج\",\r\n \"formTablePendingWith\": \"في انتظار\",\r\n \"formTableBackToInbox\": \"عودة إلى البريد الوارد\",\r\n // feedback\r\n \"requestFeedback\":\"طلب إفادة\",\r\n \"requestTo\": \"أرسل الى\",\r\n \"feedback\": \"إفادة\",\r\n \"viewFeedback\": \"إظهار الإفادة\",\r\n \"requestFrom\": \"مرسلة من\",\r\n \"feedbackQuestion\": \"سؤال الإفادة\",\r\n \"employeeSearch\": \"البحث عن موظف\",\r\n \"searchEmployeeTooltip_1\": \"أدخل ثلاثة أحرف بحد أدنى لتبدأ البحث عن الموظف\",\r\n \"searchEmployeeTooltip_2\": \"أدخل رقم للبحث برقم الموظف\",\r\n \"searchEmployeeTooltip_3\": \"للبحث بالعنوان البريدي أدخل @ قبل أو بعد حرف\",\r\n \"searchEmployeeTooltip_4\": \"أترك مسافة للبحث بالإسم الأول أو الثاني أو الأخير\",\r\n \"onBehalfFlag\":\"طلب بالانابة عن\",\r\n \"onBehalfOfEmail\":\"إسم الموظف\",\r\n \"commentHistory\":\"سجل التعليقات\",\r\n \"NODATA\": \"لا يوجد بيانات\",\r\n \"termsAndConditions\":\"الشروط والاحكام\",\r\n \"no-files\": \" لا توجد مرفقات\",\r\n \"drag-files\": \"إسحب المرفقات هنا\",\r\n \"limit-error\": \"عدد المرفقات تجاوز المطلوب\",\r\n \"size-error\": \"حجم المرفقات تجاوز المطلوب\",\r\n \"type-error\": \"توع المرفقات غير مناسب\",\r\n \"duplicated-error\": \"تم إرفاق الملف بالفعل\",\r\n \"thisIsInvalidFile\": 'هذا ملف غير صالح',\r\n \"add\": \"اضافة\",\r\n \"addAttachments\": \"اضافة مرفقات\",\r\n \"attachmentdescription\": \"وصف الملف\",\r\n \"attachmentcomment\": \"التعليقات\",\r\n // \"attachment\": \"المرفق\",\r\n \"addAttachment\": \"اضافة المرفق\",\r\n \"locationOfIncident\": \"موقع البلاغ\",\r\n \"FileName\": \"اسم الملف\",\r\n \"FileDescription\": \"وصف الملف\",\r\n // \"delete\": \"حذف\",\r\n \"Attachments\": \"المرفقات\",\r\n \"Attachment\": \"المرفق\",\r\n \"comment\":\"ملاحظات\",\r\n \"comments\":\"ملاحظات\",\r\n \"description\":\"الوصف\",\r\n \"processingDate\":\"تاريخ معالجة الطلب\",\r\n \"Approvals\":\"الموافقات\",\r\n \"submittedSuccessfully\":\"تم تقديم الطلب بنجاح\",\r\n \"support\": \"الملفات المسموحة : PNG & JPG & PDF\",\r\n \"support2\": \"الحد الأقصى لحجم الملف المسموح به هو \",\r\n \"mb\": \"ميغابايت\",\r\n \"support3\": \" الحد الأقصى لحجم الملف المسموح به هو 300 كيلوبايت\",\r\n \"employeeID\": \"الرقم الوظيفي \",\r\n \"NoData\": \"لا توجد طلبات\",\r\n \"NoData1\": \"لا توجد تعليقات\",\r\n \"NoData2\": \"لا توجد بيانات\",\r\n \"Delete\": \"حذف\",\r\n \"ViewDetails\":\"عرض التفاصيل\",\r\n \"fullName\":\"الإسم\",\r\n \"welcomeBack\": \"مرحبا بعودتك\",\r\n \"Hello\": \"مرحبا\",\r\n \"Cancel\":\"إلغاء\",\r\n \"validEmailError\": 'يجب إدخال بريد الكتروني صحيح ',\r\n \"validFieldError\": 'يجب إدخال ',\r\n \"validSelectError\": 'برجاء اختيار ',\r\n \"validSearchError\": 'برجاء البحث عن ',\r\n \"delete\": \"حذف\",\r\n \"Areyousureyouwantdelete\": \"هل أنت متأكد من أنك تريد حذف هذا الطلب؟\",\r\n \"drf-confirmatton-msg\":\"يوجد طلبات لم تتم حتى الان .. الرجاء التأكيد اذا رغبت بنقل الطلب للمرحله التالية بدون مدخلاتهم\",\r\n \"Yes-Proceed\":\" نعم – اكمل الطلب\",\r\n \"No-Discard\":\" لا – الغاء\",\r\n \"yes\": \" نعم\",\r\n \"NoAttachments\": \"لا توجد مرفقات\",\r\n \"cancel\" : \"إلغاء\",\r\n \"View\":\"عرض\",\r\n \"edit\":\"تعديل\",\r\n placeholder: 'أملا هذا الحقل',\r\n downloadLink:\"تحميل الرابط\",\r\n \"link\":\"الرابط\",\r\n\r\n\r\n\r\n AttachmentInvoices: 'مرفقات الفواتير',\r\n AttachmentsOfBank: 'مرفقات كشف الحساب البنكي أو البطاقة الإئتمانية',\r\n DepositVoucherAttachments: 'مرفقات قسيمة الإيداع',\r\n serviceBrief : \"وصف الخدمة\",\r\n PreviousRequests:\"الطلبات السابقة\",\r\n 'Product Implementation': 'Product Implementation',\r\n 'Sales Order and Quality Assurance':'Sales Order and Quality Assurance',\r\n 'Billing Support and Contracts':'Billing Support and Contracts',\r\n 'Sales Excellence':'Sales Excellence',\r\n 'Order Engineering and Delivery Management':'Order Engineering and Delivery Management',\r\n 'Third Party Control and Projects':'Third Party Control and Projects',\r\n 'Enterprise Customer Care':'Enterprise Customer Care',\r\n 'Enterprise Account Sales':'Enterprise Account Sales',\r\n 'Government Accounts Sales':'Government Accounts Sales',\r\n 'Marketing Communications':'Marketing Communications',\r\n 'Customer Experience Excellence':'Customer Experience Excellence',\r\n 'Commercial Regulation':'Commercial Regulation',\r\n 'Enterprise Commercial Finance':'Enterprise Commercial Finance',\r\n 'Product Pricing and Profitability':'Product Pricing and Profitability',\r\n 'Data Protection and Privacy':'Data Protection and Privacy',\r\n 'Customer Value Management':'Customer Value Management',\r\n\r\n\r\n termNote1: \"1. الإدارة الطالبة مسئولة عن صحة الأوراق المرفقة، والإشراف على العمالة.\",\r\n termNote2: \"2.\tيجب أن يكون العامل على كفالة الشركة المقاولة ، وفي حالة التعاقد من الباطن يجب ارفاق العقد بين الطرفين موقعا ومختوما وحديثا ، وأن يكون العامل على كفالة الشركة المتعاقد من الباطن .\",\r\n termNote3: \"3. يجب أن تكون مهنة العامل في إقامته مطابقة لما يقوم به من أعمال وبما يتوافق مع طبيعة عمله\",\r\n termNote4: \"4. بالنسبة للأشخاص الذين يحضرون بتأشيرة زيارة يلزم ارفاق تأشيرة الزيارة سارية المفعول ، مع إرفاق مايثبت العلاقة مع شركة (stc) .إما عقد / أو خطاب من الجهة الطالبة موضحاً مهام الزيارة لشركة (stc). ويمنح فترة تصريح بمدة أقامته بالتأشيرة\",\r\n termNote5: \"5. يمنع استخدام بطاقة تصريح الدخول من قبل شخص أخر ، ويجب إعادتها عند الإنتهاء إلى إدارة الأمن . وفي حال ضياعها يجب إبلاغ إدارة الأمن والسلامة على الهاتف 8001231616 أو 0114251616 ( المركز الرئيسي ). ثم يلزم تقديم طلب تصريح دخول جديد ليتم صرف بطاقة بدل فاقد مع فرض غرامة مالية 500 ريال للمرة الأولى و1000 ريال للمرة الثانية ، وفي المرة الثالثة يمنع من الدخول ويحال للجهات الحكومية ذات العلاقة.\",\r\n termNote6: \"6. تتحمل الشركة المقاولة كافة التبعات القانونية لأي اضرار يحدثها العامل داخل مواقع العمل بشركة (stc)\",\r\n termNote7: \"7. نأمل طباعة النموذج (من زر الطباعة أعلى النموذج) بعد الموافقة عليه من قبل شعبة خدمات البطاقات، وإحضاره عند المراجعة ليتم إصدار البطاقة\",\r\n termNote8: \"8. يلتزم المقاول الرئيسي ومقاولي الباطن بتعليمات الأمن والسلامة كما نصت على ذلك العقود المبرمة مع جميع مقاولي شركة (stc) والخضوع لإجراءات التفتيش الدورية للمواقع من قبل مفتشي السلامة للتأكد من الإلتزام بتعليمات السلامة وسياسة العمل الآمن وسوف يتم تحرير مخالفات وغرامات مالية في حال وجودها موضحة وموصوفة بالقيم المالية عبر علاقات الموردين على الرابط :\",\r\n termNote9: \"9. تلتزم الإدارة الطالبة بتضمين التقارير الفنية الموصية بالصرف مخالفات السلامة إن وجدت وتخصم من الاستحقاق وذلك تطبيقاً لإجراء لائحة الغرامات والجزاءات لمخالفات السلامة على المقاولين\",\r\n termNote10: \"10. تسليم بطاقات المركز الرئيسي في مركز إصدار البطاقات بوابة رقم 3 , أما بقية المناطق تسلم في إدارة أمن المناطق\",\r\n termNote11: \"11. يتم تطبيق لائحة الجزاءات والغرامات على المخالفين داخل مواقع STC حيث يتم إيقاف المركبات المخالفة عن طريق وضع الكوابح عليها، وتخلي الشركة مسؤوليتها بشكل كامل عن أي أضرار يتسبب بها الكابح عند التركيب أو الفك\",\r\n messageErrorPhoneNumber: \"الرجاء ادخال رقم جوال صحيح\",\r\n\r\n serviceAgreement: \" الشروط و الضوابط\",\r\n lengthError: \"لا يمكن أدخال أكثر من\",\r\n userAlreadyExist: \"هذا المستخدم موجود مسبقاً\",\r\n INTERNAL: 'داخلي: إتاحة الوثيقة/السجل للإطلاع داخل الشركة فقط',\r\n SPECIFIC_OR_CONFIDENTIAL: 'محدد/سري: نشر الوثيقة/السجل بصلاحية إطلاع مقصورة على: <br> أسماء محددة <br> وحدة تنظيمية محددة<br> مستويات إدارية محددة',\r\n AVAILABLE: 'متاح: إتاحة الوثيقة/السجل للإطلاع داخل و خارج الشركة',\r\n other:'آخر',\r\n others:'آحرون',\r\n selectAll:'اختر الكل',\r\n URGENT: '1 يوم',\r\n NORMAL: '3 أيام',\r\n select: 'اختر',\r\n addMultiAttachments:\"إضافة أكثر من ملف\",\r\n \"welcome\": \"مرحبا \",\r\n \"logout\": \"تسجيل خروج\",\r\n \"otherLang\": \"English\",\r\n flagStatusUpdated:\"تم التحديث بنجاح\",\r\n \"AllRequests\": \"عدد الطلبات\",\r\n \"clear\": \"مسح\",\r\n \"applyFilters\": \"تصفية\",\r\n \"filters\": \"تصفية\",\r\n month: \"الشهر\",\r\n year: \"السنة\",\r\n status:\"الحالة\",\r\n downloadAll:'تحميل جميع المرفقات',\r\n startDate: \"تاريخ البداية\",\r\n endDate: \"تاريخ النهاية\",\r\n textArea: \"خانة النص\",\r\n enter: \"ادخل\",\r\n\r\n\r\n\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Injectable } from '@angular/core';\r\nimport * as coreEn from '../i18n/en';\r\nimport * as coreAr from '../i18n/ar';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class CoreI18nService {\r\n private coreLocales: { [key: string]: { [key: string]: string } };\r\n public language: string;\r\n\r\n constructor() {\r\n // this.language = \"en\";\r\n this.language = (window as any).wmConfig.language;\r\n this.coreLocales = { en: coreEn.default, ar: coreAr.default };\r\n }\r\n\r\n translate(key) {\r\n let result = null;\r\n try {\r\n result = this.coreLocales[this.language][key];\r\n } catch (e) {\r\n result = null;\r\n }\r\n return result || key;\r\n }\r\n\r\n getLanguage() {\r\n return this.language;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SidenavService {\r\n public subject = new Subject<{}>();\r\n public sideNavOpened = new BehaviorSubject(false);\r\n public data: any = new ReplaySubject();\r\n public field: any = new ReplaySubject();\r\n public mode: any = new ReplaySubject();\r\n public index: any = new ReplaySubject();\r\n public value: any = new BehaviorSubject(false);\r\n public contentData: any = {};\r\n public afterClosed: ReplaySubject<any> = new ReplaySubject();\r\n\r\n publish(eventName: string, componentName: any, position: any = 'end', mode: any = 'over', content?: any) {\r\n this.sideNavOpened.next(true);\r\n if (content) {\r\n this.contentData = content;\r\n }\r\n this.subject.next({ eventName, componentName, position, mode, content });\r\n }\r\n\r\n closeSidenav(data?: any) {\r\n this.publish('close', null);\r\n this.afterClosed.next(data);\r\n this.afterClosed = new ReplaySubject();\r\n this.contentData = {};\r\n }\r\n}\r\n","import {HttpClient, HttpHeaders} from \"@angular/common/http\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {Inject, Injectable} from \"@angular/core\";\r\nimport {catchError, throwError} from \"rxjs\";\r\nimport * as constants from '../constants'\r\nimport type {MyLibConfig} from \"../interfaces/shared.interface\";\r\nimport {MY_LIB_CONFIG_TOKEN} from \"../../public-api\";\r\n\r\n@Injectable({\r\n providedIn: \"any\"\r\n})\r\nexport class FeedBackService {\r\n apiUrl: string = ''\r\n\r\n constructor(private http: HttpClient,\r\n @Inject(MY_LIB_CONFIG_TOKEN) private config: MyLibConfig) {\r\n const language = (window as any)?.wmConfig?.language ? (window as any).wmConfig.language : 'en';\r\n this.apiUrl = this.config.proxyServiceBaseUrl + language + this.config.proxyFullAddress + this.config.proxyServiceExecute;\r\n console.log('Config: ', this.config); // for testing purposes only\r\n }\r\n\r\n feedbackForm: boolean = false;\r\n feedBackSent: boolean = false;\r\n pendingForm: boolean = false;\r\n responderForm: boolean = false;\r\n feedbackResponse: any = {\r\n requestFrom: null,\r\n requestTo: null,\r\n requestFeedback: null,\r\n responseFeedback: null\r\n };\r\n\r\n private createRequestBody(method: string, serviceName: string, urlParameters, requestBody = null) {\r\n return {\r\n method: method,\r\n destination: constants.TARGET_SERVER_DP,\r\n serviceName: serviceName,\r\n formName: this.config.formName,\r\n urlParameters: {\r\n inboxid: this.config.formId,\r\n ...urlParameters\r\n },\r\n body: requestBody\r\n };\r\n }\r\n\r\n private performPostRequest(body) {\r\n return this.http.post(this.apiUrl, body, {\r\n headers: new HttpHeaders({\r\n authToken: this.config.authToken,\r\n \"Content-Type\": \"application/x-www-form-urlencoded\"\r\n }),\r\n observe: \"body\"\r\n }).pipe(\r\n map((response: any) => response),\r\n catchError((err: any) => throwError(err))\r\n );\r\n }\r\n\r\n getFeedback(email: string) {\r\n const body = this.createRequestBody(constants.HTTP_METHOD_GET, constants.STATE_NAME_DP_GET_FEEDBACK, {email});\r\n return this.performPostRequest(body);\r\n }\r\n\r\n submitFeedback(data) {\r\n const [email, question] = data;\r\n const body = this.createRequestBody(constants.HTTP_METHOD_POST, constants.SERVICE_NAME_DP_CREATE_FEEDBACK, {}, {request: question, to: email});\r\n return this.performPostRequest(body);\r\n }\r\n\r\n addResponse(data) {\r\n const [feedbackId, feedbackResponse] = data;\r\n const body = this.createRequestBody(constants.HTTP_METHOD_PUT, constants.SERVICE_NAME_DP_UPDATE_FEEDBACK, {}, {\r\n response: feedbackResponse,\r\n feedbackId: feedbackId\r\n });\r\n return this.performPostRequest(body);\r\n }\r\n\r\n}\r\n","import { Section } from \"../interfaces\";\r\n\r\nexport default {\r\n beforeTranspileSection (section: Section): Section {\r\n const hookResult = section;\r\n // Here should be the code to manipulate the section object before the transpile stage\r\n return hookResult;\r\n },\r\n\r\n beforeSendPayload (submitPayload: {[key: string]: any}): {[key: string]: any} {\r\n const hookResult = submitPayload;\r\n // Here should be the code to manipulate the submit payload before the request to backend\r\n return hookResult;\r\n },\r\n\r\n afterSendPayload (responsePayload: {[key: string]: any}): {[key: string]: any} {\r\n const hookResult = responsePayload;\r\n // Here should be the code to manipulate the response payload to a submit of a form\r\n return hookResult;\r\n }\r\n}\r\n","import {HttpClient, HttpHeaders} from \"@angular/common/http\";\r\nimport {DestroyRef, inject, Inject, Injectable} from \"@angular/core\";\r\nimport type {MyLibConfig} from \"../interfaces/shared.interface\";\r\nimport {CommentsDrop, Form, Header, InboxItem, Messages, MY_LIB_CONFIG_TOKEN, ProfileInfoDrop, Section, SectionHeader} from \"../../public-api\";\r\nimport * as constants from '../constants'\r\nimport {catchError, from, Observable, of, switchMap, throwError} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport saveFormHooks from '../hooks/save-form';\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class CoreService {\r\n apiUrl: string = ''\r\n private authToken: string;\r\n private refreshToken: string;\r\n private readonly projectConfig: string;\r\n public userData: string;\r\n private readonly localUser: {};\r\n public loggedInUserData: {};\r\n currentActor: string\r\n private authorizedEmail!: string;\r\n private requesterEmail!: string;\r\n private currentSubmitter: any;\r\n language: string\r\n activities = []\r\n approvals: any\r\n historyDataLoaded: boolean\r\n historyData: any[] = []\r\n private readonly isMobile: boolean;\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor(private readonly http: HttpClient,\r\n @Inject(MY_LIB_CONFIG_TOKEN) private readonly config: MyLibConfig) {\r\n const language = (window as any)?.wmConfig?.language ? (window as any).wmConfig.language : 'en';\r\n this.apiUrl = this.config.proxyServiceBaseUrl + language + this.config.proxyFullAddress + this.config.proxyServiceExecute;\r\n console.log('Config: ', this.config);\r\n this.localUser = {\r\n \"formPrefix\": \"CEP\",\r\n \"formId\": \"CEP5595432\",\r\n \"inboxUri\": \"\\/group\\/hub\\/inbox\",\r\n \"baseUrl\": \"\\/group\\/i-gate\\/wm-bpm\\/forms\\/-\\/proxy\",\r\n \"showPrint\": true,\r\n \"language\": \"en\",\r\n \"isMobile\": true,\r\n \"outlook\": false,\r\n \"loggedInUserEmail\": \"ibrahimmaa.c@stc.com.sa\"\r\n }\r\n this.projectConfig = (this.config.production) ? (window as any)['wmConfig'] : btoa(JSON.stringify(this.localUser));\r\n this.userData = this.projectConfig;\r\n this.language = (window as any)?.wmConfig?.language ? (window as any).wmConfig.language : \"en\";\r\n this.isMobile = this.projectConfig?.['isMobile'];\r\n }\r\n\r\n public getLoggedInUserData() {\r\n let loggedInEmail = this.loggedInUserId()\r\n this.employeeProfile(loggedInEmail).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((response: any) => {\r\n this.loggedInUserData = response?.[\"Users\"]?.[0]\r\n console.log('getLoggedInUserData', response)\r\n })\r\n }\r\n\r\n public loadForm() {\r\n const authUrl = this.buildAuthUrl();\r\n return this.http.get(authUrl, {observe: 'response'}).pipe(\r\n map((res: any) => {\r\n const tokenInformation = res.body;\r\n this.authToken = tokenInformation.token;\r\n this.getLoggedInUserData();\r\n this.refreshToken = tokenInformation.refreshToken;\r\n const body = this.buildBody();\r\n const options = this.getRequestOptions();\r\n return this.callPost(body, options);\r\n }),\r\n switchMap(postObservable => postObservable),\r\n catchError((httpError: any) => {\r\n return throwError(httpError);\r\n })\r\n );\r\n }\r\n\r\n private buildAuthUrl(): string {\r\n const baseUrl = this.config.proxyServiceBaseUrl;\r\n const language = (window as any)?.wmConfig?.language ? (window as any).wmConfig.language : 'en';\r\n const fullAddress = this.config.proxyFullAddress;\r\n const authPart = this.config.proxyServiceAuthorization;\r\n return `${baseUrl}${language}${fullAddress}${authPart}?ts=${(new Date()).valueOf()}`;\r\n }\r\n\r\n private buildBody(): object {\r\n const baseBody = {\r\n method: constants.HTTP_METHOD_GET,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: constants.SERVICE_NAME_WM_FORM,\r\n formName: this.config.formName,\r\n formId: \"\",\r\n // queryParameters: null\r\n };\r\n if (!this.config.formId) {\r\n delete baseBody.formId;\r\n } else {\r\n baseBody.formId = this.config.formId;\r\n }\r\n return baseBody;\r\n }\r\n\r\n public employeeProfile(employeeEmail: any) {\r\n let body = {\r\n method: constants.HTTP_METHOD_GET,\r\n formName: this.config.formName,\r\n destination: constants.TARGET_SERVER_DP,\r\n serviceName: constants.SERVICE_NAME_DP_SEARCH_EMPLOYEE,\r\n parameters: {\r\n q: employeeEmail\r\n }\r\n };\r\n return this.http.post(this.apiUrl, body, {\r\n headers: new HttpHeaders({\r\n authToken: this.authToken,\r\n \"Content-Type\": \"application/x-www-form-urlencoded\"\r\n }),\r\n observe: \"body\"\r\n }).pipe(\r\n map((response: any) => {\r\n return response\r\n })\r\n , catchError((err: any) => {\r\n return throwError(err)\r\n }));\r\n }\r\n\r\n private getRequestOptions() {\r\n const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\r\n const ts = (new Date()).valueOf()?.toString();\r\n const userAgent = navigator.userAgent;\r\n return {\r\n headers: new HttpHeaders({\r\n authToken: this.authToken,\r\n 'Content-Type': constants.HEADER_CONTENT_TYPE_FORM,\r\n 'feHeader': '{\"isMobile\":' + this.isMobile + ', \",aIsMobile\":' + isMobile + ',ts:' + ts + ',loggedInUserEmail:' + this.loggedInUserId() + ',formName:' + this.config.formName + ',user-agent:' + userAgent + '}'\r\n }),\r\n observe: 'body'\r\n }\r\n }\r\n\r\n private getDraftId(val) {\r\n return val.toUpperCase().startsWith('DRAFT');\r\n }\r\n\r\n public submitForm(...args) {\r\n const [section, action] = args;\r\n const method = this.getHttpMethod();\r\n let sectionId = this.beforeTranspileSectionWrapper(section).id;\r\n let serviceName = this.getServiceName(action);\r\n let formName = this.getFormName(action);\r\n let body = this.getBodyObject(method, serviceName, action, formName, this.populatedPayload(sectionId, section), this.config.formId);\r\n const options = this.getRequestOptions();\r\n\r\n return this.submit(body, options);\r\n }\r\n\r\n private getHttpMethod() {\r\n return (this.config.formId && !this.getDraftId(this.config.formId)) ? constants.HTTP_METHOD_PUT : constants.HTTP_METHOD_POST;\r\n }\r\n\r\n private beforeTranspileSectionWrapper(section) {\r\n return saveFormHooks.beforeTranspileSection ? saveFormHooks.beforeTranspileSection(section) : section;\r\n }\r\n\r\n private getServiceName(action) {\r\n if (action === constants.WM_ACTION_SAVE_CHANGES) {\r\n return constants.SERVICE_NAME_WM_DRAFT_FORM\r\n } else {\r\n return constants.SERVICE_NAME_WM_FORM\r\n }\r\n }\r\n\r\n private getFormName(action) {\r\n if (action === constants.WM_ACTION_SAVE_CHANGES) {\r\n return 'common';\r\n } else {\r\n return this.config.formName;\r\n }\r\n }\r\n\r\n private populatedPayload(sectionId, section) {\r\n let payload;\r\n if (sectionId === constants.SECTION_ID_REQUEST_DETAILS) {\r\n payload = {request: {details: section.body.details}};\r\n } else {\r\n payload = {workflowSteps: {}};\r\n payload.workflowSteps.details = section.body.details;\r\n payload.workflowSteps.actor = this.currentSubmitter.actor;\r\n payload.workflowSteps.actor.email = this.currentActor;\r\n payload.workflowSteps.status = constants.SECTION_STATUS_PENDING;\r\n }\r\n return payload;\r\n }\r\n\r\n private getBodyObject(method, serviceName, action, formName, payload, formId) {\r\n let body = {\r\n method: method,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: serviceName,\r\n parameters: {\r\n action: action\r\n },\r\n formName: formName,\r\n body: payload,\r\n formId: formId,\r\n queryParameters: {},\r\n // payload\r\n }\r\n\r\n if (this.config.formId) {\r\n body.formId = this.config.formId;\r\n }\r\n\r\n if (!this.authorizedEmail || !this.authorizedEmail.length || this.authorizedEmail === this.requesterEmail) {\r\n delete body.queryParameters;\r\n }\r\n\r\n if (saveFormHooks.beforeSendPayload) {\r\n body.body.payload = saveFormHooks.beforeSendPayload(body.body.payload);\r\n }\r\n\r\n return body;\r\n }\r\n\r\n\r\n private callPost(body, options): Observable<any> {\r\n const language = (window as any)?.wmConfig?.language ? (window as any).wmConfig.language : \"en\";\r\n let apiUrl = this.config.proxyServiceBaseUrl + language + this.config.proxyFullAddress + this.config.proxyServiceExecute;\r\n\r\n return this.http.post(apiUrl, encodeURIComponent(JSON.stringify(body)), options).pipe(\r\n map((responseObject: any) => this.successWm(responseObject)),\r\n catchError((httpError: any) => throwError(httpError))\r\n );\r\n }\r\n\r\n private submit(body: any, options: any) {\r\n const language = (window as any)?.wmConfig?.language ? (window as any).wmConfig.language : \"en\";\r\n const apiUrl = this.config.proxyServiceBaseUrl + language + this.config.proxyFullAddress + this.config.proxyServiceExecute;\r\n\r\n return from(\r\n this.http.post(apiUrl, encodeURIComponent(JSON.stringify(body)), options).toPromise().then(\r\n (responseObject: any) => {\r\n let formResponse = responseObject.data.form;\r\n if (saveFormHooks.afterSendPayload) {\r\n formResponse = saveFormHooks.afterSendPayload(formResponse);\r\n }\r\n let result = {\r\n id: null,\r\n status: null,\r\n nextApprover: {\r\n name: null,\r\n email: null,\r\n role: null\r\n },\r\n creationDate: null\r\n };\r\n result.id = formResponse.formId;\r\n result.status = formResponse['formStatus'];\r\n if (formResponse.currentActor) {\r\n result.nextApprover = {\r\n name: formResponse.currentActor.name,\r\n email: formResponse.currentActor.email,\r\n role: formResponse['formStep']\r\n }\r\n }\r\n result.creationDate = formResponse.creationDate;\r\n return result;\r\n }, (httpError: any) => {\r\n throw httpError;\r\n }\r\n )\r\n );\r\n }\r\n\r\n private successWm(...args) {\r\n let [payload] = args;\r\n let wasSendBack = false;\r\n let result = new Form(\r\n constants.NO_VALUE,\r\n constants.NO_VALUE,\r\n constants.NO_VALUE,\r\n constants.NO_VALUE,\r\n constants.NO_VALUE,\r\n constants.NO_VALUE,\r\n constants.NO_VALUE\r\n );\r\n this.requesterEmail = payload.data['requester'].employeeEmail;\r\n this.authorizedEmail = payload.data['requester'].authorizedEmail;\r\n /* Generate Header Object */\r\n let payloadFormDetails = payload.data.form;\r\n let isReadOnly = (payloadFormDetails.readOnly.toUpperCase() === constants.TRUE_STRING ? constants.TRUE_BOOL : (payloadFormDetails.readOnly.toUpperCase() === constants.FALSE_STRING ? constants.FALSE_BOOL : constants.NO_VALUE))\r\n result.header = new Header(\r\n payload.data['requester'].fullName,\r\n constants.IGATE_STATIC_ASSET_PROFILE_PHOTO_URL + payload.data['requester'].employeeEmail,\r\n (payloadFormDetails.formId ? payloadFormDetails.formId : constants.DONT_SHOW),\r\n (payloadFormDetails.creationDate ? payloadFormDetails.creationDate : constants.DONT_SHOW),\r\n payloadFormDetails['formStatus'],\r\n payloadFormDetails.details\r\n );\r\n /* Generate Profile Information Object */\r\n let payloadProfileInfo = payload.data['requester'];\r\n result.profileInfoDrop = new ProfileInfoDrop(\r\n (payloadProfileInfo['onBehalfAuthorized'] ? JSON.parse(payloadProfileInfo['onBehalfAuthorized']) : null),\r\n payloadProfileInfo['employeeId'],\r\n payloadProfileInfo.employeeEmail,\r\n payloadProfileInfo.fullName,\r\n payloadProfileInfo.generalDepartmentName,\r\n payloadProfileInfo.jobPosition,\r\n payloadProfileInfo['sectorName'],\r\n payloadProfileInfo.departmentName,\r\n payloadProfileInfo.generalDepartmentCode,\r\n payloadProfileInfo['humanResourceLocation'],\r\n payloadProfileInfo.nationality,\r\n payloadProfileInfo.businessPhone,\r\n payloadProfileInfo['directManagerName'],\r\n payloadProfileInfo.seniorSectorName\r\n );\r\n result.sections = [];\r\n let requestDetailsHasComment = false;\r\n if (payload.data.request.details.comment) {\r\n requestDetailsHasComment = true;\r\n }\r\n result.sections.push(\r\n new Section(\r\n constants.SECTION_ID_REQUEST_DETAILS,\r\n new SectionHeader(constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, requestDetailsHasComment, (payload.data['workflowSteps'] ? constants.READ_ONLY : isReadOnly)),\r\n payload.data.request\r\n )\r\n );\r\n\r\n if (result.header.formId) {\r\n result.commentsDrop = (!result.commentsDrop ? [] : result.commentsDrop);\r\n this.loadHistory(result.header.formId).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n (response: any) => {\r\n if (response) {\r\n response.items.forEach((item: any) => {\r\n if (item.sequenceNumber !== '0' && item.processedBy) {\r\n const name = item.processedBy['firstName'] + ' ' + item.processedBy['secondMiddleName'] + ' ' + item.processedBy['familyName'];\r\n result.commentsDrop.push(new CommentsDrop(\r\n constants.IGATE_STATIC_ASSET_PROFILE_PHOTO_URL + item.processedBy.email,\r\n name,\r\n item.comments,\r\n item['modifiedDate'],\r\n item.attachments,\r\n item.processedBy.job\r\n ));\r\n }\r\n });\r\n }\r\n },\r\n );\r\n }\r\n\r\n\r\n const inboxType = this.getInboxType(result);\r\n if (result.header.formId && (!this.isOpenOnInbox())) {\r\n this.getInboxItem(result.header.formId, inboxType).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n (response: any) => {\r\n if (response) {\r\n const item = response.item;\r\n result.inboxItem = new InboxItem(\r\n item['flagging'].flagPriority,\r\n item['flagging']['isFlagged'],\r\n item.feedback['canRequestFeedback'],\r\n item.feedback['hasFeedback'],\r\n item.feedback['isPending'],\r\n item.feedback['isRequested'],\r\n item.feedback['isResponded']\r\n );\r\n }\r\n },\r\n );\r\n }\r\n\r\n let payloadWorkflowSteps = payload.data.workflowSteps;\r\n if (payloadWorkflowSteps && payloadWorkflowSteps.constructor === Array && payloadWorkflowSteps.length > 0) {\r\n payloadWorkflowSteps.forEach((step, index) => {\r\n let currentIsRequesterSendBack = JSON.stringify(step.details) === JSON.stringify({});\r\n let hasComments = (!currentIsRequesterSendBack && (step.details.comment || step.comment) ? constants.HAS_COMMENTS : constants.NO_COMMENTS);\r\n let currentActor = (step.actor.email === step.actor.recipient.email ? step.actor.recipient : (step.actor.delegate ? step.actor.delegate : null))\r\n if (wasSendBack && step.actor.recipient.role === 'REQUESTER') {\r\n console.log(\"wasSendBack && REQUESTER\")\r\n result.sections = [new Section(\r\n constants.SECTION_ID_REQUEST_DETAILS,\r\n new SectionHeader(\r\n constants.DONT_SHOW,\r\n constants.DONT_SHOW,\r\n constants.DONT_SHOW,\r\n constants.DONT_SHOW,\r\n constants.DONT_SHOW,\r\n constants.DONT_SHOW,\r\n constants.DONT_SHOW,\r\n requestDetailsHasComment,\r\n (payload.data.workflowSteps ? constants.READ_ONLY : isReadOnly)\r\n ),\r\n payload.data.request\r\n )]\r\n } else if (wasSendBack) {\r\n console.log(\"Pop\")\r\n if (result.sections.length > 1) {\r\n result.sections.pop();\r\n }\r\n wasSendBack = false;\r\n }\r\n\r\n\r\n if (step.details.decision && step.details.decision.key === constants.FORM_STATUS_SEND_BACK) {\r\n wasSendBack = true;\r\n } else if (JSON.stringify(step.details) !== JSON.stringify({})) {\r\n\r\n let date = step.date\r\n let currentActorName = currentActor ? this.getShortName(currentActor.name)?.toString() : \"\"\r\n let shortName = step.actor.recipient?.name ? this.getShortName(step.actor.recipient.name)?.toString() : \"\"\r\n let delegateName= step.actor.delegate?.name ? this.getShortName(step.actor.delegate.name)?.toString() : \"\"\r\n let image = constants.IGATE_STATIC_ASSET_PROFILE_PHOTO_URL + step.actor.recipient.email\r\n let delegateImage = step.actor.delegate?.email ? constants.IGATE_STATIC_ASSET_PROFILE_PHOTO_URL + step.actor.delegate.email : \"\"\r\n let status = step.actor.status\r\n result.sections.push(\r\n new Section(\r\n step.actor.recipient.role.toLowerCase() + constants.SECTION_ID_APPROVAL_PARTIAL_NAME,\r\n new SectionHeader(\r\n currentActorName,\r\n date,\r\n shortName,\r\n image,\r\n delegateName,\r\n delegateImage,\r\n status,\r\n hasComments,\r\n (index < payloadWorkflowSteps.length - 1 ? constants.READ_ONLY : isReadOnly)\r\n ),\r\n {details: step.details, processingDate: step.date}\r\n )\r\n );\r\n this.currentSubmitter = {actor: step.actor, recipient: step.recipient, delegate: step.actor.delegate};\r\n }\r\n });\r\n }\r\n /* Create Lov Sections */\r\n result.lovs = (payload?.meta?.lovs ? payload.meta.lovs : null);\r\n\r\n if (payload?.meta?.messages) {\r\n result.messages = new Messages(\r\n {},\r\n [],\r\n [],\r\n []\r\n );\r\n payload.meta.messages.forEach((message) => {\r\n result.messages.originalMsgs.push(message);\r\n result.messages[message.type].push(message.message);\r\n });\r\n }\r\n result.sections[result.sections.length - 1].header.readOnly = isReadOnly;\r\n return result;\r\n }\r\n\r\n public loadFile(...args: any): Observable<any> {\r\n const [id] = args;\r\n return this.http.get(\r\n `${this.config.proxyFullAddress}${this.config.proxyServiceForms}${this.config.formId}${this.config.proxyServiceAttachment}${id}`,\r\n {observe: 'response'}\r\n );\r\n }\r\n\r\n public dataURItoBlob(dataURI: any) {\r\n const byteString = atob(dataURI);\r\n const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n return new Blob([arrayBuffer], {type: 'image/jpeg'});\r\n }\r\n\r\n saveFile(fileInformation) {\r\n const fileBlob = this.dataURItoBlob(fileInformation.fileContents);\r\n const file = new File([fileBlob], fileInformation.fileName, {type: fileInformation.mimeType});\r\n const blobUrl = URL.createObjectURL(file);\r\n const link = document.createElement('a');\r\n link.href = blobUrl;\r\n link.download = fileInformation.fileName;\r\n link.click();\r\n URL.revokeObjectURL(blobUrl);\r\n }\r\n\r\n setFlagPriority(id: string) {\r\n let body = {\r\n method: constants.HTTP_METHOD_PUT,\r\n destination: constants.TARGET_SERVER_DP,\r\n serviceName: constants.SERVICE_NAME_DP_UPDATE_INBOX_ITEM,\r\n formName: this.config.formName,\r\n urlParameters: {\r\n inboxid: this.config.formId\r\n },\r\n body: {\r\n flag: id\r\n }\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_SUCCESS_INBOX_ITEM, options);\r\n }\r\n\r\n public loadHistory(...args) {\r\n const [id] = args;\r\n const body = {\r\n method: constants.HTTP_METHOD_GET,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: constants.WORKFLOW_ITEMS,\r\n formId: id || this.config.formId,\r\n formName: \"bpm\",\r\n };\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_LOAD_HISTORY, options);\r\n }\r\n\r\n public getInboxItem(...args) {\r\n const [id, inboxType] = args;\r\n const body = {\r\n formName: this.config.formName,\r\n method: constants.HTTP_METHOD_GET,\r\n destination: constants.TARGET_SERVER_DP,\r\n serviceName: constants.SERVICE_NAME_DP_INBOX_ITEM,\r\n urlParameters: {\r\n inboxid: id,\r\n inboxtype: inboxType\r\n }\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_GET_INBOX_ITEM, options);\r\n }\r\n\r\n public perspectiveApproves(details) {\r\n if (!this.config.production) {\r\n details = {}\r\n }\r\n let serviceName = \"form/\" + this.config.formName\r\n if (this.config.formId) {\r\n serviceName = \"form/\" + this.config.formId\r\n }\r\n let body = {\r\n method: constants.HTTP_METHOD_POST,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: serviceName\r\n , formName: constants.APPROVERS\r\n , body: {\r\n \"request\": {\r\n \"details\":\r\n details\r\n }\r\n }\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_SUCCESS_RESPONSE, options);\r\n }\r\n\r\n getAttachments(data: any, ...args: any) {\r\n let body = {\r\n method: constants.HTTP_METHOD_POST,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: 'attachment'\r\n , formName: 'common'\r\n , body: {\r\n attachment: {\r\n fileName: this.config.production ? data.fileName : '',\r\n mimeType: this.config.production ? data.mimeType : '',\r\n fileContents: this.config.production ? data.fileContents : '',\r\n }\r\n , comment: data.attachmentcomment\r\n , description: data.fileDescription,\r\n }\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_SUCCESS_RESPONSE, options);\r\n }\r\n\r\n searchEmployee(...args) {\r\n let [searchString] = args;\r\n let body = {\r\n method: constants.HTTP_METHOD_GET,\r\n formName: this.config.formName,\r\n destination: constants.TARGET_SERVER_DP,\r\n serviceName: constants.SERVICE_NAME_DP_SEARCH_EMPLOYEE,\r\n parameters: {\r\n q: searchString,\r\n limit: 10\r\n }\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_SUCCESS_RESPONSE, options);\r\n }\r\n\r\n\r\n\r\n customSearchEmployee(q,ApiAlias, args= {}) {\r\n // let [searchString] = args;\r\n let body = {\r\n method: constants.HTTP_METHOD_GET,\r\n formName: this.config.formName,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: ApiAlias,\r\n queryParameters:\r\n {\r\n q: q,\r\n limit: 10,\r\n ...args\r\n }\r\n\r\n\r\n // \"parameters\":\r\n // {\"language\":\"en\",\r\n // \"gd\":\"6017\",\r\n // \"q\":\"dfgd\",\r\n // \"limit\":10}\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_SUCCESS_RESPONSE, options);\r\n }\r\n\r\n\r\n public myRequests(details) {\r\n let body = {\r\n method: constants.HTTP_METHOD_GET,\r\n destination: constants.TARGET_SERVER_WM,\r\n serviceName: \"form\" //, //this.getServiceName(),\r\n , formName: \"history\"\r\n , queryParameters: {\r\n formName: this.config.formName,\r\n year: details.year,\r\n month: details.month,\r\n email: this.loggedInUserId()\r\n }\r\n }\r\n let options = this.getRequestOptions();\r\n return this.generalCallApi(body, constants.STATE_MACHINE_ACTION_SUCCESS_RESPONSE, options);\r\n }\r\n\r\n generalCallApi(body, type: string, options) {\r\n let apiUrl = this.config.proxyServiceBaseUrl + this.language + this.config.proxyFullAddress + this.config.proxyServiceExecute;\r\n return this.http.post(apiUrl, encodeURIComponent(JSON.stringify(body)), options).pipe(\r\n map((responseObject: any) => {\r\n return responseObject\r\n }),\r\n catchError((httpError: any) => {\r\n return throwError(httpError);\r\n })\r\n );\r\n }\r\n\r\n public loggedInUserId() {\r\n return this.userData['loggedInUserEmail'];\r\n }\r\n\r\n public getShortName(name: string) {\r\n if (name) {\r\n let nameTokens = name.split(' ');\r\n if (nameTokens.length == 1) {\r\n return [nameTokens[0]]\r\n } else if (nameTokens[nameTokens.length - 2].toLowerCase() == 'al') {\r\n return [nameTokens[0], nameTokens[nameTokens.length - 2], nameTokens[nameTokens.length - 1]].join(' ');\r\n } else {\r\n return [nameTokens[0], nameTokens[nameTokens.length - 1]].join(' ');\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public isMobileApp() {\r\n return (window as any).wmConfig.isMobile;\r\n }\r\n\r\n public getInboxType(result) {\r\n let rtn = null;\r\n if (this.loggedInUserId() === result.profileInfoDrop.employeeEmail) {\r\n rtn = constants.INBOX_STATUS_SENT;\r\n } else {\r\n rtn = constants.INBOX_STATUS_PENDING;\r\n }\r\n return rtn;\r\n }\r\n\r\n public isOpenOnInbox() {\r\n return (window as any).wmConfig.outlook;\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {BehaviorSubject, Subject} from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: \"any\"\r\n})\r\nexport class ActionStateService {\r\n private actionStatesSubject = new BehaviorSubject<{ [action: string]: boolean }>({});\r\n\r\n actionStates$ = this.actionStatesSubject.asObservable();\r\n resetAction$ = new Subject<void>()\r\n \r\n\r\n setActionValid(action: string, isValid: boolean) {\r\n const currentState = this.actionStatesSubject.value;\r\n currentState[action] = isValid;\r\n this.actionStatesSubject.next(currentState);\r\n }\r\n\r\n resetForm(){\r\n return this.resetAction$\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport {MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle} from '@angular/material/dialog';\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';\r\nimport {CoreI18nService} from '../../../../services';\r\n\r\n@Component({\r\n selector: 'app-delete-dialog',\r\n templateUrl: './delete-dialog.component.html',\r\n styleUrls: ['./delete-dialog.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n MatDialogContent,\r\n MatDialogClose,\r\n MatDialogTitle\r\n ]\r\n})\r\nexport class DeleteDialogComponent {\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<any>,\r\n public i18n: CoreI18nService\r\n ) { }\r\n\r\n\r\n delete() {\r\n this.dialogRef.close('yes');\r\n }\r\n\r\n}\r\n","<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-between\" mat-dialog-title>\r\n <h3> {{i18n.translate('delete')}}</h3>\r\n <ds-button matDialogClose icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"d-flex flex-column align-items-center justify-content-center py-4\">\r\n <h2 class=\"fs-16 fw-medium fc-black mb-4\">\r\n {{i18n.translate('Areyousureyouwantdelete')}}\r\n </h2>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button shape=\"outline\" color=\"dark-gray\" matDialogClose>{{i18n.translate('Cancel')}}</ds-button>\r\n <ds-button color=\"red\" (click)=\"delete()\">{{i18n.translate('yes')}}</ds-button>\r\n </div>\r\n </div>\r\n </mat-dialog-content>\r\n</div>","import {MAT_DIALOG_DATA, MatDialogClose, MatDialogContent, MatDialogTitle} from '@angular/material/dialog';\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA, Inject} from '@angular/core';\r\nimport {CoreI18nService, CoreService} from '../../../../services';\r\nimport {NgIf} from \"@angular/common\";\r\n\r\n@Component({\r\n selector: 'app-submit-dialog',\r\n templateUrl: './submit-dialog.component.html',\r\n styleUrls: ['./submit-dialog.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n MatDialogClose,\r\n MatDialogContent,\r\n NgIf,\r\n MatDialogTitle\r\n ]\r\n})\r\nexport class SubmitDialogComponent {\r\n successData: any;\r\n inboxUri;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n public i18n: CoreI18nService,\r\n public coreService: CoreService\r\n ) {\r\n this.successData = data;\r\n this.inboxUri = (window as any).wmConfig.inboxUri\r\n }\r\n getImage(email: string) {\r\n if (email) {\r\n return '/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=' + email;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n viewForm(formId: string, formName?: string) {\r\n if (formId) {\r\n if (formId?.toLowerCase().includes('draft')) {\r\n window.open(`/group/i-gate/wm-bpm/forms?formName=${formName}&formId=${formId}`);\r\n return;\r\n }\r\n window.open('/group/i-gate/wm-bpm/forms?formId=' + formId);\r\n }\r\n }\r\n\r\n getStatus(statusKey: string) {\r\n switch (statusKey) {\r\n case 'APPROVED':\r\n return 'success';\r\n case 'COMPLETED':\r\n return 'success';\r\n case 'REJECTED':\r\n return 'danger';\r\n case 'CANCELLED':\r\n return 'danger';\r\n case 'PENDING':\r\n return 'warning';\r\n default:\r\n return 'success';\r\n }\r\n }\r\n}\r\n","<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-end\" mat-dialog-title>\r\n <ds-button matDialogClose icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"d-flex flex-column align-items-center justify-content-center py-4\">\r\n <div class=\"text-center mb-4\">\r\n <svg width=\"79\" height=\"76\" viewBox=\"0 0 79 76\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M59.9804 0.0998676L1.39239 19.2479C1.02223 19.3692 0.69498 19.5948 0.44999 19.8976C0.205 20.2005 0.0526985 20.5676 0.0113985 20.955C-0.0299016 21.3423 0.0415576 21.7333 0.217184 22.081C0.39281 22.4287 0.665128 22.7183 1.00139 22.9149L23.1454 35.7899C23.487 35.9886 23.8794 36.0828 24.274 36.0608C24.6686 36.0388 25.0481 35.9014 25.3654 35.6659L31.5894 31.0439L26.9674 37.2679C26.7318 37.5852 26.5944 37.9646 26.5722 38.3591C26.5499 38.7537 26.6439 39.1461 26.8424 39.4879L39.7174 61.6289C39.9138 61.9652 40.2031 62.2377 40.5506 62.4135C40.8981 62.5894 41.289 62.6611 41.6763 62.6201C42.0636 62.5791 42.4308 62.4272 42.7338 62.1825C43.0369 61.9378 43.2628 61.6108 43.3844 61.2409L62.5294 2.65187C62.6458 2.29686 62.6615 1.91654 62.5749 1.55313C62.4883 1.18971 62.3026 0.857401 62.0386 0.593071C61.7746 0.328741 61.4425 0.142726 61.0792 0.0556665C60.7159 -0.0313933 60.3355 -0.0160937 59.9804 0.0998676ZM40.9434 55.6999L31.0014 38.6069L42.9894 22.4689C43.2797 22.0798 43.4202 21.5993 43.3852 21.1152C43.3502 20.631 43.142 20.1757 42.7988 19.8325C42.4556 19.4893 42.0002 19.2811 41.5161 19.2461C41.032 19.2111 40.5514 19.3516 40.1624 19.6419L24.0254 31.6279L6.93339 21.6889L57.4514 5.18087L40.9434 55.6999ZM21.2134 44.2759L7.80139 57.6909C7.42253 58.0701 6.90853 58.2833 6.37246 58.2836C5.83638 58.2839 5.32215 58.0712 4.94289 57.6924C4.56363 57.3135 4.35041 56.7995 4.35013 56.2634C4.34985 55.7274 4.56253 55.2131 4.94139 54.8339L18.3564 41.4189C18.7353 41.04 19.2491 40.8272 19.7849 40.8272C20.3207 40.8272 20.8345 41.04 21.2134 41.4189C21.5923 41.7977 21.8051 42.3116 21.8051 42.8474C21.8051 43.3832 21.5923 43.897 21.2134 44.2759ZM3.49139 44.7839C3.30378 44.5963 3.15495 44.3736 3.05341 44.1285C2.95187 43.8834 2.89961 43.6207 2.89961 43.3554C2.89961 43.0901 2.95187 42.8274 3.05341 42.5823C3.15495 42.3371 3.30378 42.1144 3.49139 41.9269L8.78439 36.6339C9.16326 36.255 9.6771 36.0422 10.2129 36.0422C10.7487 36.0422 11.2625 36.255 11.6414 36.6339C12.0203 37.0127 12.2331 37.5266 12.2331 38.0624C12.2331 38.5982 12.0203 39.112 11.6414 39.4909L6.34939 44.7839C6.1618 44.9716 5.93903 45.1206 5.69384 45.2222C5.44864 45.3238 5.18582 45.3762 4.92039 45.3762C4.65497 45.3762 4.39215 45.3238 4.14695 45.2222C3.90176 45.1206 3.67899 44.9716 3.49139 44.7839ZM26.0014 50.9899C26.189 51.1774 26.3378 51.4001 26.4394 51.6453C26.5409 51.8904 26.5932 52.1531 26.5932 52.4184C26.5932 52.6837 26.5409 52.9464 26.4394 53.1915C26.3378 53.4366 26.189 53.6593 26.0014 53.8469L20.7014 59.1409C20.3225 59.5197 19.8087 59.7326 19.2729 59.7326C18.7371 59.7326 18.2233 59.5197 17.8444 59.1409C17.4655 58.762 17.2527 58.2482 17.2527 57.7124C17.2527 57.1766 17.4655 56.6627 17.8444 56.2839L23.1374 50.9909C23.325 50.8032 23.5477 50.6544 23.7928 50.5529C24.0379 50.4513 24.3006 50.3991 24.5659 50.3991C24.8312 50.3991 25.0939 50.4513 25.339 50.5529C25.5841 50.6544 25.8068 50.8032 25.9944 50.9909L26.0014 50.9899Z\"\r\n fill=\"#8E9AA0\"/>\r\n <path\r\n d=\"M58.0015 75.3119C69.0472 75.3119 78.0015 66.3576 78.0015 55.3119C78.0015 44.2662 69.0472 35.3119 58.0015 35.3119C46.9558 35.3119 38.0015 44.2662 38.0015 55.3119C38.0015 66.3576 46.9558 75.3119 58.0015 75.3119Z\"\r\n fill=\"#00C48C\"/>\r\n <path\r\n d=\"M56.8804 57.3183L54.0346 54.4725L52.9743 55.5336L56.8774 59.4367L65.8354 50.5267L65.4927 50.0138C63.8557 47.5812 61.1134 46.002 58.0015 46.002C53.0313 46.002 49.0015 50.031 49.0015 55.002C49.0015 59.9729 53.0305 64.002 58.0015 64.002C62.9716 64.002 67.0007 59.9729 67.0015 55.0035H65.5017C65.5017 55.005 65.5017 55.0072 65.5017 55.0095C65.5017 59.1503 62.1453 62.5067 58.0045 62.5067C53.8637 62.5067 50.5072 59.1503 50.5072 55.0095C50.5072 50.8686 53.8637 47.5122 58.0045 47.5122C60.3793 47.5122 62.4962 48.6168 63.87 50.3392L63.882 50.3542L56.8804 57.3183Z\"\r\n fill=\"white\"/>\r\n </svg>\r\n\r\n </div>\r\n <h2 class=\"fs-16 fw-medium fc-black mb-4 text-center\">\r\n {{ i18n.translate('submittedSuccessfully') }}\r\n </h2>\r\n\r\n <div class=\"info-section reverse w-100\">\r\n <div class=\"info-item px-3\">\r\n <span class=\"name fs-16-imp\">{{ i18n.translate('formTableFormId') }}</span>\r\n <span class=\"disc fs-16-imp\">\r\n <a class=\"cursor-pointer fc-black underline\" (click)=\"viewForm(successData.id, successData?.['formName'])\">\r\n {{ successData.id }}\r\n </a>\r\n </span>\r\n </div>\r\n <div class=\"info-item px-3\">\r\n <span class=\"name fs-16-imp\">{{ i18n.translate('formTableFormStatus') }}</span>\r\n <ds-status class=\"disc\" status=\"{{getStatus(successData?.status?.['key'])}}\">\r\n {{ successData.status?.['value'] }}\r\n </ds-status>\r\n </div>\r\n @if (successData?.status?.['key'] === 'PENDING') {\r\n <div class=\"info-item px-3\">\r\n <div class=\"d-flex align-items-center mt-2\">\r\n <div class=\"img-card circled-img small\">\r\n <img\r\n [src]=\"getImage(successData?.['nextApprover']?.['email'])\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2\">\r\n <h5 class=\"fs-14 fw-bold fc-black mb-0\">{{ successData?.['nextApprover']?.['name'] }}</h5>\r\n <span class=\"fs-12 text-color-dark-gray\">{{ successData?.['nextApprover']?.['email'] }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n @if (!coreService.isMobileApp()) {\r\n <div class=\"d-flex align-items-center gap-3 mt-3\">\r\n <ds-button>\r\n <a class=\"inboxUri\" href=\"{{inboxUri}}\">\r\n {{ i18n.translate('formTableBackToInbox') }}</a>\r\n </ds-button>\r\n </div>\r\n }\r\n </div>\r\n </mat-dialog-content>\r\n</div>\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport {MatDialogClose, MatDialogContent, MatDialogRef} from '@angular/material/dialog';\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';\r\nimport {CoreI18nService} from '../../../../services';\r\n\r\n//import { CoreI18nService} from '../../../../services';\r\n\r\n@Component({\r\n selector: 'app-confirm-dialog',\r\n templateUrl: './confirm-dialog.component.html',\r\n styleUrls: ['./confirm-dialog.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n MatDialogContent,\r\n MatDialogClose\r\n ]\r\n})\r\nexport class ConfirmDialogComponent {\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<any>,\r\n public i18n: CoreI18nService\r\n ) { }\r\n\r\n\r\n confirm() {\r\n this.dialogRef.close('yes');\r\n\r\n\r\n //////\r\n }\r\n\r\n}\r\n","<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-between\" mat-dialog-title>\r\n <h3> {{i18n.translate('delete')}}</h3>\r\n <ds-button matDialogClose icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"d-flex flex-column align-items-center justify-content-center py-4\">\r\n <h2 class=\"fs-16 fw-medium fc-black mb-4\">\r\n {{i18n.translate('drf-confirmatton-msg')}}\r\n </h2>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button shape=\"outline\" color=\"dark-gray\" matDialogClose>{{i18n.translate('No-Discard')}}</ds-button>\r\n <ds-button color=\"red\" (click)=\"confirm()\">{{i18n.translate('Yes-Proceed')}}</ds-button>\r\n </div>\r\n </div>\r\n </mat-dialog-content>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'formatAsPassword'\r\n})\r\nexport class FormatAsPasswordPipe implements PipeTransform {\r\n\r\n transform(value: string | number): unknown {\r\n if(typeof value === 'number') value = value.toString();\r\n const length = value.length;\r\n return '*'.repeat(length);\r\n }\r\n\r\n}\r\n","/* eslint-disable no-useless-escape */\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'mycurrency'\r\n})\r\nexport class MycurrencyPipe implements PipeTransform {\r\n private prefix: string;\r\n private decimal_separator:string;\r\n private thousands_separator:string;\r\n private suffix:string;\r\n\r\n constructor(){\r\n this.prefix='';\r\n this.suffix='';\r\n this.decimal_separator='.';\r\n this.thousands_separator = ',';\r\n }\r\n transform(value: string, allowNegative = false, decimalPrecision: number = 2) {\r\n if (value == undefined || value === '') {\r\n return null;\r\n }\r\n if (allowNegative) {\r\n value = value.toString();\r\n if (value.startsWith('(') || value.startsWith('-')) {\r\n value = '-' + value.substr(1, value.length).replace(/\\(|\\)|\\$|\\-/g, '');\r\n } else {\r\n value = value.replace(/\\(|\\)|\\$|\\-/g, '');\r\n }\r\n }\r\n let [integer, fraction = ''] = (value || '').toString().split(this.decimal_separator);\r\n fraction = decimalPrecision > 0 ? this.decimal_separator + (fraction + '000000').substring(0, 2) : '';\r\n integer = integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousands_separator);\r\n // If user types .xx we can display 0.xx\r\n if (integer === '') {\r\n integer = '0';\r\n } else if (integer.startsWith('$')) {\r\n // If there are multiple transforms, remove the previous dollar sign (blur and change at the same time)\r\n integer = integer.substr(1, integer.length);\r\n } else if (allowNegative && integer.startsWith('-')) {\r\n // If user inputs negative number set to paranthesis format\r\n integer = integer.substr(1, integer.length);\r\n return '(' + this.prefix + integer + fraction + ')';\r\n }\r\n return this.prefix + integer + fraction;\r\n }\r\n\r\n parse(value: string, allowNegative = false) {\r\n let [integer, fraction = ''] = (value || '').split(this.decimal_separator);\r\n integer = integer.replace(new RegExp(/[^\\d\\.]/, 'g'), '');\r\n fraction = parseInt(fraction, 10) > 0 && 2 > 0 ? this.decimal_separator + (fraction + '000000').substring(0, 2) : '';\r\n if (allowNegative && value.startsWith('(') && value.endsWith(')')) {\r\n return (-1 * parseFloat(integer + fraction)).toString();\r\n } else {\r\n return integer + fraction;\r\n }\r\n }\r\n\r\n}\r\n","export interface DateParse { dateInput: string; }\r\nexport type DateDisplay = DateParse & {\r\n monthYearLabel?: string,\r\n dateA11yLabel?: string,\r\n monthYearA11yLabel?: string,\r\n};\r\n\r\nexport class CustomDateFormat {\r\n private _parse: DateParse = {\r\n dateInput: 'DD/MM/YYYY'\r\n };\r\n private _display: DateDisplay = {\r\n dateInput: 'DD/MM/YYYY',\r\n monthYearLabel: 'DD MMM YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'MMMM YYYY'\r\n };\r\n\r\n set parse(parse: DateParse) {\r\n this._parse = Object.assign({}, this._parse, parse);\r\n }\r\n\r\n get parse(): DateParse {\r\n return this._parse;\r\n }\r\n\r\n set display(display: DateDisplay) {\r\n this._display = Object.assign({}, this._display, display);\r\n }\r\n\r\n get display(): DateDisplay {\r\n return this._display;\r\n }\r\n\r\n updateDateFormat(parse: DateParse, display?: DateDisplay) {\r\n this.parse = parse;\r\n if (!display) {\r\n display = parse;\r\n }\r\n this.display = display;\r\n }\r\n}","import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n forwardRef,\r\n ChangeDetectorRef,\r\n Inject,\r\n} from '@angular/core';\r\nimport {\r\n ControlContainer,\r\n NgForm,\r\n NG_VALUE_ACCESSOR,\r\n FormBuilder,\r\n} from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Section } from '../../../../interfaces';\r\nimport {\r\n CoreI18nService\r\n} from '../../../../services';\r\nimport { MycurrencyPipe } from '../../../../pipes';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { CustomDateFormat } from '../date-picker/date-format';\r\n\r\nconst CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BaseComponent),\r\n multi: true,\r\n};\r\n@Component({\r\n selector: 'app-base-component',\r\n template: '',\r\n styleUrls: ['./base-component.component.scss'],\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR],\r\n viewProviders: [{provide: ControlContainer, useExisting: NgForm}],\r\n standalone: true\r\n})\r\nexport class BaseComponent {\r\n @Input() hideOption = false;\r\n // hideOption: InputSignal<boolean> = input(false);\r\n @Input() type = 'text';\r\n // hideOption: InputSignal<string> = input('text');\r\n @Input() loading!: boolean;\r\n // loading: InputSignal<boolean>;\r\n @Input() field: any;\r\n // loafieldding: InputSignal<any>;\r\n @Input() labelTextReadMode: string;\r\n // labelTextReadMode: InputSignal<string>\r\n @Input() labelTextWriteMode: string;\r\n // labelTextWriteMode: InputSignal<string>\r\n @Input() isReadOnly: boolean;\r\n // isReadOnly: InputSignal<boolean>;\r\n @Input() name: string;\r\n // name: InputSignal<string>\r\n @Input() required = true;\r\n // required: InputSignal<boolean> = input(true);\r\n @Input() mask: string;\r\n // mask: InputSignal<string>\r\n @Input() allowedExtensions = '';\r\n // allowedExtensions: InputSignal<string> = input('');\r\n @Input() link: boolean;\r\n // link: InputSignal<boolean>;\r\n @Input() multiple: boolean;\r\n // multiple: InputSignal<boolean>;\r\n @Input() insideTable: boolean;\r\n // insideTable: InputSignal<boolean>;\r\n @Input() showIfEmpty = false;\r\n // showIfEmpty: InputSignal<boolean> = input(false);\r\n @Input() showErrorMessage: boolean;\r\n // showErrorMessage: InputSignal<boolean>;\r\n @Input() showHint = false;\r\n // showHint: InputSignal<boolean> = input(false);\r\n @Input() hint = '';\r\n // hint: InputSignal<string> = input('');\r\n @Input() errorMessage: string;\r\n // errorMessage: InputSignal<string>\r\n @Input() placeholder: string\r\n // placeholder: InputSignal<string>\r\n @Input() maxLength: number;\r\n // maxLength: InputSignal<number>\r\n @Input() minLength: number;\r\n // minLength: InputSignal<number>\r\n @Input() maxValue: string;\r\n // maxValue: InputSignal<string>\r\n @Input() minValue: string;\r\n // minValue: InputSignal<string>\r\n @Input() disabled = false;\r\n // disabled: InputSignal<boolean> = input(false);\r\n @Input() lov: any;\r\n // lov: InputSignal<any>\r\n @Input() hasLabel = true;\r\n // hasLabel: InputSignal<boolean> = input(true);\r\n @Input() section: Section;\r\n // section: InputSignal<Section>\r\n @Input() controller: FormControl = new FormControl();\r\n value: any;\r\n @Output() emitedValue = new EventEmitter();\r\n\r\n filesize: string;\r\n // public options: any;\r\n public randomID: number =\r\n Math.floor(Math.random() * (999999 - 100000)) + 100000;\r\n constructor(\r\n public i18n: CoreI18nService,\r\n public http: HttpClient,\r\n public fb: FormBuilder,\r\n private dateAdapter: DateAdapter<Date>,\r\n public cdRef: ChangeDetectorRef,\r\n public dialog: MatDialog,\r\n public dialogRef: MatDialogRef<any>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any,\r\n public mycurrencyPipe: MycurrencyPipe,\r\n @Inject(MAT_DATE_FORMATS) public dateFormat: CustomDateFormat,\r\n public sanitizer: DomSanitizer\r\n ) {\r\n this.dateAdapter.setLocale(this.i18n.language);\r\n this.value = this.field;\r\n this.emitedValue = new EventEmitter();\r\n if (this.shouldSetDateFormateInAr) {\r\n dateFormat.display = {dateInput: 'YYYY/MM/DD'};\r\n dateFormat.parse = {dateInput: 'YYYY/MM/DD'};\r\n }\r\n }\r\n\r\n get shouldSetDateFormateInAr(): boolean {\r\n return this.i18n.language == 'ar';\r\n }\r\n\r\n resetData() {\r\n if (!this.isReadOnly) {\r\n this.field = '';\r\n this.controller.setValue(this.field)\r\n this.controller.markAsUntouched()\r\n this.emitedValue.emit(this.field);\r\n }\r\n }\r\n}\r\n","import {Directive, Injector, Input, OnInit} from '@angular/core';\r\nimport {ControlValueAccessor, FormBuilder, FormControl, FormControlDirective, FormControlName, FormGroupDirective, NgControl, NgModel, Validators,} from '@angular/forms';\r\nimport {ActionStateService, CoreI18nService, CoreService} from '../../../services';\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\nimport {ToastrService} from \"ngx-toastr\";\r\nimport { ErrorMsg } from './validation-errors/validation-error-messages';\r\n\r\n@Directive({\r\n selector: '[appControlValueAccessor]',\r\n})\r\nexport class ControlValueAccessorDirective<Type>\r\n implements ControlValueAccessor, OnInit\r\n{\r\n @Input() tooltip;\r\n @Input() isReadOnly: boolean;\r\n @Input() hint = '';\r\n @Input() loading!: boolean;\r\n @Input() placeholder: string;\r\n @Input() type: string;\r\n @Input() showErrorMessage: string;\r\n @Input() showHint: string;\r\n @Input() showIfEmpty: string;\r\n @Input() insideTable: any;\r\n @Input() mask: any;\r\n @Input() label!: string;\r\n @Input() matSuffix: boolean;\r\n @Input() hasTooltip = false;\r\n @Input() name!: string;\r\n @Input() randomID!: string;\r\n @Input() multiple: boolean = false;\r\n @Input() customErrorMessages: Record<string, ErrorMsg>;\r\n searchControl = new FormControl();\r\n toggleButtonControl = new FormControl();\r\n employeeSearchControl = new FormControl();\r\n telephoneControl = new FormControl();\r\n attachments = [];\r\n\r\n\r\n startDateControl = new FormControl();\r\n endDateControl = new FormControl();\r\n Validators = Validators;\r\n\r\n\r\n\r\n\r\n minDateValue: any\r\n maxDateValue: any\r\n @Input() maxDate: 'today' | 'oneYear';\r\n // @ViewChild('default')\r\n public datepickerObj!: any;\r\n @Input() minDate: 'today';\r\n @Input() customMaxDate: string;\r\n @Input() customMinDate: string;\r\n\r\n value: any;\r\n control: FormControl | undefined;\r\n @Input() required: boolean; //hide optional label and add required validator from angular side\r\n @Input() mandatory: boolean; //only hide optional label\r\n\r\n isDisabled = false;\r\n onChangeFn: (val: Type | null) => void = () => {};\r\n onTouchedFn: () => void = () => {};\r\n\r\n constructor(\r\n private readonly injector: Injector, public i18n: CoreI18nService,\r\n public toasterService: ToastrService,\r\n public coreService: CoreService, public sanitizer: DomSanitizer,\r\n public fb: FormBuilder,\r\n public actionStateService: ActionStateService\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.setFormControl();\r\n }\r\n\r\n setFormControl() {\r\n try {\r\n const formControl = this.injector.get(NgControl);\r\n switch (formControl.constructor) {\r\n case FormControlName:\r\n this.control = this.injector\r\n .get(FormGroupDirective)\r\n .getControl(formControl as FormControlName);\r\n break;\r\n case NgModel:\r\n this.control = (formControl as NgModel).control;\r\n break;\r\n default:\r\n this.control = (formControl as FormControlDirective)\r\n .form as FormControl;\r\n break;\r\n }\r\n } catch (err) {\r\n this.control = new FormControl();\r\n }\r\n this.setFormValidators();\r\n }\r\n\r\n setFormValidators(){\r\n\r\n // this.required = this.control?.hasValidator(Validators.required) ?? false;\r\n if (this.required){\r\n this.searchControl.setValidators(Validators.required);\r\n this.employeeSearchControl.setValidators(Validators.required);\r\n } else {\r\n this.searchControl.clearValidators();\r\n this.employeeSearchControl.clearValidators();\r\n }\r\n this.searchControl.updateValueAndValidity();\r\n this.employeeSearchControl.updateValueAndValidity();\r\n }\r\n\r\n\r\n writeValue(value: Type): void {\r\n this.value = value;\r\n if(!this.value){\r\n this.startDateControl.reset();\r\n this.endDateControl.reset();\r\n this.telephoneControl.reset();\r\n this.toggleButtonControl.reset();\r\n this.attachments = [];\r\n this.searchControl.reset();\r\n this.employeeSearchControl.reset();\r\n } else {\r\n this.startDateControl.setValue(this.value?.startDate);\r\n this.endDateControl.setValue(this.value?.endDate);\r\n this.toggleButtonControl.setValue(value);\r\n this.searchControl.setValue(value['value']);\r\n this.telephoneControl.setValue(value)\r\n if(this.value['value'] === ''){\r\n this.control.reset()\r\n }\r\n this.employeeSearchControl.setValue(value['personName'])\r\n }\r\n }\r\n\r\n registerOnChange(fn: (val: Type | null) => void): void {\r\n this.onChangeFn = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouchedFn = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n setValue(value: any): void {\r\n this.value = value;\r\n this.onChangeFn(value);\r\n }\r\n}\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, Inject} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle} from '@angular/material/dialog';\r\nimport {CoreI18nService} from '../../../services';\r\n\r\n@Component({\r\n selector: 'app-terms-conditions',\r\n templateUrl: './terms-conditions.component.html',\r\n styleUrls: ['./terms-conditions.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n MatDialogContent,\r\n MatDialogClose,\r\n MatDialogTitle\r\n ],\r\n standalone: true\r\n})\r\nexport class TermsConditionsComponent {\r\n termsBody: string = null;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<TermsConditionsComponent>,\r\n public i18n: CoreI18nService,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) {\r\n this.termsBody = data;\r\n }\r\n}\r\n","<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-between\" mat-dialog-title>\r\n <h3 class=\"mb-0 font-16 fw-medium\" >{{i18n.translate('termsAndConditions')}}</h3>\r\n <ds-button matDialogClose icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"px-md-4\">\r\n <p class=\"fs-15 fw-normal bg-color-light-gray p-3 text-break\" [innerHTML]='termsBody' > </p>\r\n </div>\r\n </mat-dialog-content>\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport * as en from '../i18n/en';\r\nimport * as ar from '../i18n/ar';\r\n\r\n@Pipe({\r\n name: 'translate',\r\n standalone: true\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n private coreLocales: { [key: string]: { [key: string]: string } };\r\n public language: string;\r\n\r\n constructor() {\r\n // this.language = \"en\";\r\n this.language = (window as any).wmConfig.language;\r\n this.coreLocales = { en: en.default, ar: ar.default };\r\n }\r\n\r\n transform(key) {\r\n let result = null;\r\n try {\r\n result = this.coreLocales[this.language][key];\r\n } catch (e) {\r\n result = null;\r\n }\r\n return result || key;\r\n }\r\n\r\n getLanguage() {\r\n return this.language;\r\n }\r\n}","/* eslint-disable @angular-eslint/component-selector */\r\nimport { CoreI18nService } from '../../../../services';\r\nimport { Component, Input } from '@angular/core';\r\nimport {NgIf} from \"@angular/common\";\r\nimport {SatPopoverModule} from \"@ncstate/sat-popover\";\r\nimport {TranslatePipe} from \"../../../../pipes/translate.pipe\";\r\n\r\n\r\n@Component({\r\n selector: 'app-form-label',\r\n templateUrl: './form-label.component.html',\r\n styleUrls: ['./form-label.component.scss'],\r\n imports: [\r\n NgIf,\r\n SatPopoverModule,\r\n TranslatePipe\r\n\r\n ],\r\n standalone: true\r\n})\r\nexport class FormLabelComponent {\r\n @Input() tooltip: string;\r\n @Input() label = '';\r\n @Input() optional = false;\r\n constructor( public i18n: CoreI18nService) { }\r\n\r\n\r\n\r\n\r\n}\r\n","<div class=\"d-flex justify-content-between\">\r\n <div class=\"d-flex\">\r\n <span class=\"form-label mb-0\">{{ label }}</span>\r\n @if(tooltip) {\r\n <span class=\"form-label mb-0 mx-1\">\r\n <ds-icon\r\n icon=\"info fs-18\"\r\n class=\"cursor-pointer\"\r\n [satPopoverAnchor]=\"popover\"\r\n (click)=\"popover.toggle(); $event.stopImmediatePropagation()\"\r\n ></ds-icon>\r\n </span>\r\n }\r\n </div>\r\n <span *ngIf=\"optional\" class=\"optional-input\">\r\n {{ 'optional' | translate }}\r\n </span>\r\n</div>\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"default-popover p-3 fs-14\">\r\n <span class=\"fs-12 signature-notes\" [innerHTML]=\"tooltip\"></span>\r\n </div>\r\n</sat-popover>","import { ValidationErrors } from \"@angular/forms\";\r\n\r\ntype TextInEnAr = {ar: string; en: string};\r\nexport type ErrorMsg = TextInEnAr | ((errors: ValidationErrors) => TextInEnAr);\r\n\r\nexport class ValidationErrorMessages {\r\n private _msg: string;\r\n get msg(): string {\r\n return this._msg;\r\n }\r\n set msg(msg: string){\r\n this._msg = msg;\r\n }\r\n\r\n constructor(\r\n errors: ValidationErrors, \r\n msgs: Record<string, ErrorMsg>\r\n ){\r\n this.update(errors, msgs);\r\n }\r\n\r\n update(errors: ValidationErrors, msgs: Record<string, ErrorMsg>){\r\n if(!errors){\r\n this.msg = null;\r\n return;\r\n }\r\n for(const key in msgs){\r\n if(errors[key]){\r\n const msgBody = msgs[key];\r\n const obj = typeof msgBody === 'function' ? msgBody(errors) : msgBody;\r\n const currentLang = (window as any).wmConfig.language;\r\n this.msg = obj[currentLang];\r\n return;\r\n }\r\n }\r\n this.msg = null;\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, SimpleChanges } from '@angular/core';\r\nimport { MatError } from '@angular/material/form-field';\r\nimport { ErrorMsg, ValidationErrorMessages } from './validation-error-messages';\r\nimport { ValidationErrors } from '@angular/forms';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-validation-errors,[app-validation-errors]',\r\n templateUrl: './validation-errors.component.html',\r\n styleUrls: ['./validation-errors.component.scss'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatError\r\n ],\r\n animations: [\r\n trigger('fadeInDown', [\r\n state('hidden', style({opacity: 0, transform: 'translateY(-5px)'})),\r\n state('visible', style({opacity: 1, transform: 'translateY(0%)'})),\r\n transition('void => visible', [\r\n style({opacity: 0, transform: 'translateY(-5px)'}),\r\n animate('300ms ease-in-out')\r\n ]),\r\n transition('hidden => visible', [animate('300ms ease-in-out')])\r\n ])\r\n ],\r\n host: {\r\n 'class': 'mat-mdc-form-field-error',\r\n '[@fadeInDown]': \"isErrorMsgVisible ? 'visible' : 'hidden'\",\r\n '[style.display]': \"isErrorMsgVisible ? '' : 'none'\",\r\n }\r\n})\r\nexport class ValidationErrorsComponent {\r\n @Input() errors = {};\r\n @Input() customErrorMessages: Record<string, ErrorMsg>;\r\n validationErrorMsgs = new ValidationErrorMessages({}, this.getDefaultErrorMsgs());\r\n isErrorMsgVisible = false;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes?.errors || changes?.customErrorMessages){\r\n const msgs = {...this.getDefaultErrorMsgs(), ...this.customErrorMessages}\r\n this.validationErrorMsgs.update(this.errors, msgs);\r\n this.isErrorMsgVisible = this.validationErrorMsgs.msg ? true : false;\r\n }\r\n }\r\n\r\n private getDefaultErrorMsgs() : Record<string, ErrorMsg>{\r\n return {\r\n required: {en: \"This field is required\", ar: \"هذه الخانة مطلوبه\"},\r\n minlength: (errors: ValidationErrors) => {\r\n const minLengthError: {requiredLength: number, actualLength: number} = errors.minlength;\r\n return {\r\n en: `Minimum length is ${minLengthError.requiredLength} characters. You entered ${minLengthError.actualLength}.`,\r\n ar: `يجب ألا يقل عدد الأحرف عن ${minLengthError.requiredLength}. لقد أدخلت ${minLengthError.actualLength} حرفًا.`\r\n }\r\n },\r\n maxlength: (errors: ValidationErrors) => {\r\n const maxLengthError: {requiredLength: number, actualLength: number} = errors.maxlength;\r\n return {\r\n en: `Maximum length is ${maxLengthError.requiredLength} characters. You entered ${maxLengthError.actualLength}.`,\r\n ar: `يجب ألا يزيد عدد الأحرف عن ${maxLengthError.requiredLength}. لقد أدخلت ${maxLengthError.actualLength} حرفًا.`\r\n }\r\n },\r\n validatePhoneNumber: {\r\n en: \"Please enter valid number\",\r\n ar: \"برجاء إدخال رقم صحيح\"\r\n },\r\n invalidTimeFormat: {\r\n en: \"Invalid time format\",\r\n ar: \"صيغة الوقت غير صحيحة\"\r\n },\r\n max: (errors: ValidationErrors) => {\r\n const maxError: {max: number, actual: number} = errors.max;\r\n return {\r\n en: `The number must not exceed ${maxError.max}. You entered ${maxError.actual}.`,\r\n ar: `يجب ألا يتجاوز الرقم ${maxError.max}. لقد أدخلت ${maxError.actual}.`\r\n };\r\n },\r\n min: (errors: ValidationErrors) => {\r\n const minError: {min: number, actual: number} = errors.min;\r\n return {\r\n en: `The number must be at least ${minError.min}. You entered ${minError.actual}.`,\r\n ar: `يجب أن يكون الرقم على الأقل ${minError.min}. لقد أدخلت ${minError.actual}.`\r\n };\r\n },\r\n };\r\n }\r\n}\r\n","{{validationErrorMsgs.msg}}","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input, OnInit } from '@angular/core';\r\nimport { CoreI18nService } from '../../../../services';\r\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\r\nimport { DatePipe, DecimalPipe, NgClass, NgSwitch, NgSwitchCase, NgSwitchDefault } from '@angular/common';\r\nimport {TranslatePipe} from \"../../../../pipes/translate.pipe\";\r\nimport { format } from 'date-fns';\r\n\r\n@Component({\r\n selector: 'app-info-item',\r\n templateUrl: './info-item.component.html',\r\n styleUrls: ['./info-item.component.scss'],\r\n standalone: true,\r\n imports: [\r\n MatSlideToggle,\r\n NgSwitchCase,\r\n DecimalPipe,\r\n DatePipe,\r\n NgClass,\r\n NgSwitchDefault,\r\n NgSwitch,\r\n TranslatePipe\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class InfoItemComponent implements OnInit {\r\n @Input() label!: string;\r\n @Input() value!: any;\r\n @Input() name!: any;\r\n @Input() type = 'text';\r\n @Input() dateType!: string;\r\n @Input() multiple!: boolean;\r\n @Input() insideTable!: boolean;\r\n @Input() hasLabel = true;\r\n @Input() arrayList!: any[];\r\n @Input() actionType!: string;\r\n @Input() download!: boolean;\r\n\r\n constructor(public i18n: CoreI18nService) { }\r\n\r\n ngOnInit() {\r\n if (this.type == 'currency') {\r\n this.value = this.value.replaceAll(',', '');\r\n }\r\n }\r\n\r\n viewForm(url: string) {\r\n window.open('/group/i-gate/wm-bpm/forms?formId=' + url);\r\n }\r\n\r\n getImage(email: string) {\r\n return '/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=' + email;\r\n }\r\n\r\n getDate(date){\r\n return format(\r\n new Date(date),\r\n \"dd/MM/yyyy\"\r\n );\r\n }\r\n\r\n}\r\n","<ng-container [ngSwitch]=\"type\">\r\n @if(label){\r\n <span class=\"name \">{{ label }}</span>\r\n }\r\n\r\n <!-- class=\"disc\" -->\r\n <span *ngSwitchCase=\"'attach'\">\r\n<!-- <app-docs-uploader [field]=\"value\" styleHeight=\"mini\" display=\"only-files\"></app-docs-uploader>-->\r\n </span>\r\n <span class=\"disc mt-2 \" *ngSwitchCase=\"'user-picker'\">\r\n @if(!multiple){\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(value)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2\" [ngClass]=\"{'flex-grow-1': actionType === 'delete'}\">\r\n <h6 class=\"fs-14 fw-bold fc-onyx mb-0\">{{name}}</h6>\r\n <span class=\"fs-12 fc-dark-gray\">{{value}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if(multiple){\r\n @if(multiple){\r\n <ng-container>\r\n @for (emails of arrayList; track $index; let ind = $index) {\r\n <div class=\"d-flex flex-wrap\">\r\n <ng-container>\r\n <div class=\"img-card circled-img small mb-3\">\r\n <img [src]=\"getImage(value)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <div class=\"line-height-1 mx-2 mb-3\" [ngClass]=\"{'flex-grow-1': actionType === 'delete'}\">\r\n <h6 class=\"fs-14 fw-bold fc-onyx mb-0\"> {{(emails?.['personName'])}}</h6>\r\n <span class=\"fs-12 fc-dark-gray\"> {{emails?.['personEmail']}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n }\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'toggle'\">\r\n <mat-slide-toggle [checked]=\"value\"></mat-slide-toggle>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'toggleBtn'\">\r\n <span>{{value}}</span>\r\n </span>\r\n <span class=\"disc\" *ngSwitchCase=\"'telephone'\">\r\n <div class=\"d-flex align-items-center\">\r\n <bdi>{{ value }}</bdi>\r\n </div>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'currency'\">\r\n <span>{{value | number:'1.2-2'}}</span>\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'date'\">\r\n @if(dateType === 'hijri'){\r\n <span>\r\n {{ value }}\r\n </span>\r\n }\r\n @if(dateType === 'yearOnly'){\r\n <span>\r\n {{ value }}\r\n </span>\r\n }\r\n@if(dateType !== 'hijri' && dateType !== 'yearOnly' && !value?.startDate){\r\n <span>\r\n {{value | date :'dd/MM/yyyy' : 'GMT+3'}}\r\n<!-- {{ getDate(value) }}-->\r\n </span>\r\n}\r\n @if(dateType !== 'hijri' && dateType !== 'yearOnly' && value?.startDate){\r\n <span>\r\n {{value?.['startDate'] | date :'dd/MM/yyyy'}}\r\n -\r\n {{value?.['endDate'] | date :'dd/MM/yyyy'}}\r\n </span>\r\n }\r\n\r\n </span>\r\n\r\n <span class=\"disc\" *ngSwitchCase=\"'dateHijri'\">\r\n {{ value }}\r\n </span>\r\n\r\n <span class=\"disc breakLine fc-coral cursor-pointer\" *ngSwitchCase=\"'link'\">\r\n <a [href]=\"value\" target=\"_blank\">{{'View' | translate}} {{ label }} </a>\r\n </span>\r\n <span class=\"disc breakLine\" *ngSwitchCase=\"'formIdLink'\">\r\n <a (click)=\"viewForm(value)\">{{ value }} </a>\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'text'\">\r\n {{ value }}\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'multipleSelect'\">\r\n @for(item of value; track $index; let i =$index){\r\n <span>{{item.value}}\r\n @if(!(i === value.length-1)){\r\n <span>, </span>\r\n }\r\n </span>\r\n }\r\n\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" *ngSwitchCase=\"'time'\">\r\n {{ value | date : 'shortTime' : 'GMT+3' }}\r\n </span>\r\n <span [ngClass]=\"{'breakLine': !insideTable}\" class=\"disc \" [innerHTML]=\"value\" *ngSwitchDefault>\r\n </span>\r\n</ng-container>\r\n","import { MatDatepickerInput, MatDatepickerModule, MatDatepickerToggle } from \"@angular/material/datepicker\";\r\nimport { MatFormField, MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInput } from \"@angular/material/input\";\r\nimport { FormLabelComponent } from \"./form-label/form-label.component\";\r\nimport { ValidationErrorsComponent } from \"./validation-errors/validation-errors.component\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { InfoItemComponent } from \"./info-item/info-item.component\";\r\nimport { NgClass } from \"@angular/common\";\r\nimport { TranslatePipe } from \"../../../pipes/translate.pipe\";\r\nimport { MatNativeDateModule } from \"@angular/material/core\";\r\n\r\nexport const MatDatePickerImports = [\r\n MatDatepickerToggle,\r\n MatDatepickerInput,\r\n MatDatepickerModule,\r\n MatNativeDateModule\r\n]\r\n\r\nexport const MatFormImports = [\r\n MatFormFieldModule,\r\n MatFormField,\r\n MatInput,\r\n]\r\n\r\nexport const Shareds = [\r\n FormLabelComponent,\r\n ValidationErrorsComponent,\r\n InfoItemComponent,\r\n ReactiveFormsModule,\r\n NgClass,\r\n TranslatePipe\r\n]\r\n\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, EventEmitter, forwardRef, inject, Input, OnInit, Output } from '@angular/core';\r\nimport {MatCheckbox, MatCheckboxChange} from \"@angular/material/checkbox\";\r\nimport {FormsModule, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { TermsConditionsComponent } from '../../terms-conditions/terms-conditions.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n MatCheckbox,\r\n FormsModule,\r\n ...Shareds\r\n ],\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CheckBoxComponent),\r\n multi: true,\r\n },\r\n ]\r\n\r\n})\r\nexport class CheckBoxComponent<Type> extends ControlValueAccessorDirective<Type> implements OnInit {\r\n @Input() containTerms: boolean;\r\n @Input() termsLabel: string;\r\n @Input() linkText: string;\r\n @Input() hrefLink: string;\r\n @Input() link: string;\r\n @Input() termsBody: any;\r\n @Output() downloadCheckBox = new EventEmitter();\r\n destroyRef = inject(DestroyRef);\r\n dialog = inject(MatDialog);\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n\r\n\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n \r\n }\r\n\r\n openUrl(){\r\n window.open(this.hrefLink)\r\n }\r\n\r\n valueChange(event: MatCheckboxChange) {\r\n const checked = event.checked;\r\n this.control.setValue(checked.toString());\r\n if(!this.control.touched){\r\n this.control.markAsTouched();\r\n }\r\n }\r\n\r\n openTermsPopup(): void {\r\n const dialogRef = this.dialog.open(TermsConditionsComponent, {\r\n data: this.termsBody,\r\n width: '700px',\r\n panelClass: ['main-popup'],\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(() => {\r\n });\r\n }\r\n}\r\n","<mat-checkbox\r\n [ngClass]=\"{'mx-3': isReadOnly}\"\r\n class=\"mt-3 mb-1\"\r\n [style.pointerEvents]=\"isReadOnly ? 'none' : 'auto'\"\r\n id=\"{{ name }}{{ randomID }}\"\r\n [name]=\"name\"\r\n (change)=\"valueChange($event)\"\r\n [checked]=\"control.value === 'true' ? true : false\">\r\n\r\n <div class=\"d-flex pt-1\">\r\n @if(label){\r\n <app-form-label class=\"mb-0\" [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n @if(containTerms) {\r\n <span\r\n class=\"fs-12 fw-bold fc-coral cursor-pointer mx-1\"\r\n (click)=\"openTermsPopup(); false\">\r\n {{ termsLabel ? termsLabel : 'termsAndConditions' | translate }}\r\n </span>\r\n }\r\n </div>\r\n\r\n @if(link) {\r\n <ng-container>\r\n <span> | </span>\r\n <a\r\n class=\"fs-12 fw-bold fc-coral cursor-pointer mx-1 d-inline-flex align-items-center gap-1\"\r\n href=\"{{ hrefLink }}\"\r\n target=\"_blank\">\r\n <ds-icon icon=\"external-link\"></ds-icon>\r\n <span class=\"underline\">{{ linkText }}</span>\r\n </a>\r\n </ng-container>\r\n }\r\n</mat-checkbox>\r\n<div>\r\n @if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n</div>\r\n","import {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport { Component, Input, Output, EventEmitter, SimpleChanges, CUSTOM_ELEMENTS_SCHEMA, forwardRef, OnInit, DestroyRef, inject } from '@angular/core';\r\nimport {NgClass} from \"@angular/common\";\r\nimport {MatAutocomplete, MatAutocompleteTrigger, MatOption} from \"@angular/material/autocomplete\";\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n\r\n@Component({\r\n selector: 'app-custom-searchable',\r\n templateUrl: './custom-searchable.component.html',\r\n styleUrls: ['./custom-searchable.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n NgClass,\r\n MatAutocomplete,\r\n MatOption,\r\n MatAutocompleteTrigger,\r\n MatInputModule,\r\n ...Shareds\r\n],\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CustomSearchableComponent),\r\n multi: true,\r\n },\r\n ]\r\n})\r\n\r\n\r\n\r\nexport class CustomSearchableComponent <Type> extends ControlValueAccessorDirective<Type> implements OnInit {\r\n @Input() options!: any;\r\n @Output() selectedValue = new EventEmitter();\r\n @Output() isLengthGreaterThan4 = new EventEmitter();\r\n @Input() disabled = false;\r\n @Input() displayedLabel: string= 'description';\r\n @Input() key: string = 'value';\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n destroyRef = inject(DestroyRef);\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n\r\n noData = false;\r\n filteredOptions!: any;\r\n\r\n clearInput() {\r\n this.control.reset()\r\n this.searchControl.reset()\r\n if (!this.isReadOnly) {\r\n this.setFilteredOptions()\r\n }\r\n }\r\n\r\n onFocusOut(){\r\n this.control.markAsTouched()\r\n }\r\n\r\n onKeyDown(e: KeyboardEvent, input: HTMLInputElement){\r\n setTimeout(() => {\r\n //reset in case no value and delete or backspace pressed\r\n if( (e.keyCode == 8 || e.keyCode == 46) && !this.control.value){\r\n if(this.control){\r\n this.control.reset()\r\n this.control.markAsTouched()\r\n }\r\n input.focus();\r\n }\r\n })\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.setFilteredOptions()\r\n }\r\n onValueChange(data) {\r\n this.setFilteredOptions(data)\r\n }\r\n\r\n setFilteredOptions(data?) {\r\n if (this.options?.length > 0) {\r\n this.noData = false\r\n // this.loading = false\r\n this.filteredOptions = data?.target?.value ? this._filter(data.target.value) : this.options;\r\n } else {\r\n this.noData = true\r\n }\r\n }\r\n\r\n private _filter(value: any): any {\r\n const filterValue = typeof value === 'string' ? value?.toLowerCase() : value;\r\n return this.options?.filter((option: any) => Object.values(option).join('')?.toLowerCase().includes(filterValue));\r\n }\r\n\r\n displayFn(option: any): string {\r\n return option ? option : '';\r\n }\r\n\r\n getAutoComplete(value: any) {\r\n this.control.setValue({key:value[this.key],value:value[this.displayedLabel]});\r\n this.searchControl.setValue(value[this.displayedLabel]);\r\n this.selectedValue.emit(value)\r\n }\r\n\r\n}\r\n","@if(isReadOnly && control?.value) {\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [value]=\"control?.value.value\"\r\n ></app-info-item>\r\n</ng-container>\r\n} @if(!isReadOnly) {\r\n<ng-container>\r\n @if(label) {\r\n <app-form-label\r\n [label]=\"label\"\r\n [optional]=\"required || mandatory ? false : true\"\r\n [tooltip]=\"tooltip\"\r\n ></app-form-label>\r\n }\r\n\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': disabled || loading,\r\n 'custom-validation': !control.hasValidator(Validators['required'])\r\n }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <span class=\"sfi sfi-search fc-coral fs-18\" matPrefix></span>\r\n <label class=\"mat-form-content\">\r\n <input\r\n #autocompleteInput\r\n type=\"text\"\r\n (keydown)=\"onKeyDown($event, autocompleteInput)\"\r\n [attr.disabled]=\"disabled\"\r\n [placeholder]=\"placeholder || (label ? ('select' | translate) + ' ' + label : '')\"\r\n aria-label=\"Number\"\r\n matInput\r\n (input)=\"onValueChange($event)\"\r\n [formControl]=\"searchControl\"\r\n [name]=\"name\"\r\n [matAutocomplete]=\"auto\"\r\n [value]=\"value?.key\"\r\n (focusout)=\"onFocusOut()\"\r\n />\r\n </label>\r\n\r\n @if(loading) {\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n } @if(!loading && searchControl?.value) {\r\n <span\r\n class=\"sfi sfi-close d-inline-block fc-coral cursor-pointer fs-12\"\r\n (click)=\"clearInput()\"\r\n matSuffix\r\n ></span>\r\n }\r\n\r\n <mat-autocomplete\r\n autoActiveFirstOption\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayFn\"\r\n (optionSelected)=\"getAutoComplete($event.option.value)\">\r\n\r\n\r\n\r\n\r\n @if(!noData) {\r\n <ng-container>\r\n @for(option of filteredOptions; track option) {\r\n <mat-option [value]=\"option\">\r\n <div class=\"d-flex align-items-center\">\r\n @if(option['avatar_url']) {\r\n <figure class=\"img-card small circled-img p-0 m-0\">\r\n <img [src]=\"option['avatar_url']\" alt=\"\" />\r\n </figure>\r\n } @if(option['avatar_url']) {\r\n <span class=\"mx-2\"></span>\r\n }\r\n\r\n {{ option[displayedLabel] }}\r\n </div>\r\n </mat-option>\r\n }\r\n </ng-container>\r\n } @if(noData) {\r\n <ng-container>\r\n <mat-option [disabled]=\"true\" class=\"text-center\">No Data</mat-option>\r\n </ng-container>\r\n }\r\n </mat-autocomplete>\r\n\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">{{ 'validSelectError' | translate }}{{ label }}</mat-error> -->\r\n\r\n @if(showHint) {\r\n <mat-hint>\r\n <span\r\n class=\"sfi sfi-check-circle font-10 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n @if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n</ng-container>\r\n}\r\n","import {\r\n FormControl,\r\n NG_VALUE_ACCESSOR,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n DestroyRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Inject,\r\n Input,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { CustomDateFormat } from './date-format';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { format } from 'date-fns';\r\nimport { MatDatePickerImports, MatFormImports, Shareds } from '../shared-imports';\r\nimport { MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nconst YEAR_ONLY_FORMAT = {\r\n parse: {\r\n dateInput: 'YYYY',\r\n },\r\n display: {\r\n dateInput: 'YYYY',\r\n monthYearLabel: 'YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'YYYY',\r\n },\r\n};\r\n\r\n@Component({\r\n selector: 'app-datepicker',\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DatePickerComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: MAT_DATE_FORMATS,\r\n useClass: CustomDateFormat,\r\n },\r\n ],\r\n\r\n imports: [\r\n MatDatepicker,\r\n ...MatDatePickerImports,\r\n ...MatFormImports,\r\n ...Shareds\r\n ],\r\n})\r\nexport class DatePickerComponent<Type>\r\n extends ControlValueAccessorDirective<Type>\r\n implements AfterViewInit\r\n{\r\n date = new FormControl();\r\n @Input() className!: string;\r\n @Input() calendarType!: string;\r\n @Input() yearOnly: boolean;\r\n @Output() dateValue: EventEmitter<any> = new EventEmitter();\r\n showIslamic = false;\r\n @Input() error!: string;\r\n @Inject(MAT_DATE_FORMATS) public dateFormat: CustomDateFormat;\r\n destroyRef = inject(DestroyRef);\r\n\r\n @Input() set format(_format: string) {\r\n if (_format) {\r\n this.dateFormat.updateDateFormat(\r\n { dateInput: _format },\r\n { dateInput: _format }\r\n );\r\n }\r\n }\r\n\r\n @ViewChild(MatDatepicker) datepicker: MatDatepicker<any>;\r\n floatLabel: any = 'auto';\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.isReadOnly && this.yearOnly) this.activateYearOnlyMode();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.setDateFormControl();\r\n }\r\n\r\n setDateFormControl() {\r\n const today = new Date();\r\n const currentYear = today.getFullYear();\r\n const currentMonth = today.getMonth();\r\n const currentDay = today.getDate();\r\n if (this.minDate) {\r\n if (this.minDate == 'today') {\r\n this.minDateValue = new Date(currentYear, currentMonth, currentDay);\r\n }\r\n }\r\n\r\n if (this.maxDate) {\r\n if (this.maxDate == 'today') {\r\n this.maxDateValue = new Date(currentYear, currentMonth, currentDay);\r\n } else if (this.maxDate == 'oneYear') {\r\n this.maxDateValue = new Date(\r\n currentYear + 1,\r\n currentMonth,\r\n currentDay - 1\r\n );\r\n }\r\n }\r\n if (this.customMaxDate) {\r\n const date = new Date(this.customMaxDate);\r\n this.maxDateValue = new Date(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate()\r\n );\r\n }\r\n if (this.customMinDate) {\r\n const date = new Date(this.customMinDate);\r\n this.minDateValue = new Date(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate()\r\n );\r\n }\r\n // if (this.required) this.control.addValidators(Validators.required);\r\n }\r\n\r\n focusPicker(picker) {\r\n picker.open();\r\n }\r\n\r\n dateChange(event: any) {\r\n if (event?.value && !this.isDisabled) {\r\n let inputValue;\r\n inputValue = format(\r\n new Date(event.value),\r\n \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\"\r\n );\r\n this.control.setValue(inputValue);\r\n }\r\n }\r\n\r\n clearDateValue(event): void {\r\n this.control.reset();\r\n this.control.markAsTouched();\r\n }\r\n\r\n private activateYearOnlyMode(): void {\r\n this.dateFormat.updateDateFormat(\r\n YEAR_ONLY_FORMAT.parse,\r\n YEAR_ONLY_FORMAT.display\r\n );\r\n if (this.control) {\r\n this.control.setValue(format(new Date(this.control.value), 'yyyy'));\r\n }\r\n this.datepicker.startView = 'multi-year';\r\n this.datepicker.yearSelected.subscribe((e) => {\r\n this.control.setValue(format(new Date(e), 'yyyy'));\r\n this.datepicker.close();\r\n });\r\n this.datepicker.openedStream.subscribe(() => {\r\n document.body.classList.add('year-only');\r\n });\r\n this.datepicker.closedStream.subscribe(() => {\r\n document.body.classList.remove('year-only');\r\n });\r\n }\r\n}\r\n","@if(!isReadOnly) {\r\n <ng-container>\r\n @if(label) {\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n\r\n <div class=\"datePicker justify-content-between\">\r\n <mat-form-field\r\n [ngClass]=\"{ 'input-disabled': isDisabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n (dateInput)=\"dateChange($event)\"\r\n [placeholder]=\"placeholder || (label ? ('select' | translate) + ' ' + label : '')\"\r\n (click)=\"focusPicker(dp)\"\r\n [min]=\"minDateValue\"\r\n [max]=\"maxDateValue\"\r\n readonly\r\n [matDatepicker]=\"dp\"\r\n [formControl]=\"control\"\r\n />\r\n </label>\r\n\r\n @if(control?.value) {\r\n <ds-icon\r\n matSuffix\r\n icon=\"close\"\r\n class=\"fc-coral fs-10 mx-2 cursor-pointer\"\r\n (click)=\"clearDateValue($event)\"\r\n ></ds-icon>\r\n }\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"dp\">\r\n <ds-icon\r\n icon=\"calendar-o\"\r\n class=\"fc-black fs-18\"\r\n matDatepickerToggleIcon\r\n ></ds-icon>\r\n </mat-datepicker-toggle>\r\n\r\n <mat-datepicker #dp></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n @if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n\r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly && control.value) {\r\n <ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n type=\"date\"\r\n [insideTable]=\"insideTable\"\r\n [dateType]=\"calendarType\"\r\n [label]=\"label\"\r\n [value]=\"control.value\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n </ng-container>\r\n}\r\n","/* eslint-disable @angular-eslint/component-selector */\r\n/* eslint-disable @typescript-eslint/no-empty-function */\r\nimport {\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n DestroyRef,\r\n forwardRef,\r\n inject,\r\n Inject,\r\n Input,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { MatDatepicker } from '@angular/material/datepicker';\r\nimport { MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { CustomDateFormat } from '../date-picker/date-format';\r\nimport { format } from 'date-fns';\r\nimport { MatDatePickerImports, MatFormImports, Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nconst YEAR_ONLY_FORMAT = {\r\n parse: {\r\n dateInput: 'YYYY',\r\n },\r\n display: {\r\n dateInput: 'YYYY',\r\n monthYearLabel: 'YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'YYYY',\r\n },\r\n};\r\n\r\n@Component({\r\n selector: 'app-date-range-picker',\r\n templateUrl: './date-range-picker.component.html',\r\n styleUrls: ['./date-range-picker.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateRangePickerComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: MAT_DATE_FORMATS,\r\n useClass: CustomDateFormat,\r\n },\r\n ],\r\n imports: [\r\n ...MatDatePickerImports,\r\n ...MatFormImports,\r\n ...Shareds\r\n ],\r\n})\r\nexport class DateRangePickerComponent<\r\n Type\r\n> extends ControlValueAccessorDirective<Type> {\r\n @Input() className = 'white-input';\r\n @Input() yearOnly: boolean;\r\n @Inject(MAT_DATE_FORMATS) public dateFormat: CustomDateFormat;\r\n @ViewChild(MatDatepicker) datepicker: MatDatepicker<any>;\r\n @Input() calendarType!: string;\r\n startInputValue: string;\r\n endInputValue: string;\r\n destroyRef = inject(DestroyRef);\r\n dateRange: any;\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.isReadOnly && this.yearOnly) this.activateYearOnlyMode();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.setDateFormControl();\r\n }\r\n\r\n setDateFormControl() {\r\n const today = new Date();\r\n const currentYear = today.getFullYear();\r\n const currentMonth = today.getMonth();\r\n const currentDay = today.getDate();\r\n if (this.minDate) {\r\n if (this.minDate == 'today') {\r\n this.minDateValue = new Date(currentYear, currentMonth, currentDay);\r\n }\r\n }\r\n\r\n if (this.maxDate) {\r\n if (this.maxDate == 'today') {\r\n this.maxDateValue = new Date(currentYear, currentMonth, currentDay);\r\n }\r\n if (this.maxDate == 'oneYear') {\r\n this.maxDateValue = new Date(\r\n currentYear + 1,\r\n currentMonth,\r\n currentDay - 1\r\n );\r\n }\r\n }\r\n if (this.customMaxDate) {\r\n const date = new Date(this.customMaxDate);\r\n this.maxDateValue = new Date(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate()\r\n );\r\n }\r\n if (this.customMinDate) {\r\n const date = new Date(this.customMinDate);\r\n this.minDateValue = new Date(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate()\r\n );\r\n }\r\n\r\n if (this.required) this.control.addValidators(Validators.required);\r\n }\r\n\r\n focusPicker(picker) {\r\n picker.open();\r\n this.control.markAsTouched();\r\n }\r\n\r\n startDateChange(event: any) {\r\n if (event?.value && !this.isDisabled) {\r\n if (this.startDateControl.value) {\r\n this.startDateControl.setValue(\r\n format(new Date(event.value), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\r\n );\r\n }\r\n }\r\n }\r\n\r\n endDateChange(event: any) {\r\n if (event?.value && !this.isDisabled) {\r\n if (this.startDateControl.value && this.endDateControl.value) {\r\n this.endDateControl.setValue(\r\n format(new Date(event.value), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\r\n );\r\n this.setDateRangeControlValue();\r\n }\r\n }\r\n }\r\n\r\n setDateRangeControlValue() {\r\n this.dateRange = {\r\n startDate: this.startDateControl.value,\r\n endDate: this.endDateControl.value,\r\n };\r\n this.control.setValue(this.dateRange);\r\n }\r\n\r\n clearDateValue(event): void {\r\n this.dateRange = null;\r\n this.startInputValue = null;\r\n this.endInputValue = null;\r\n this.control.reset();\r\n this.endDateControl.reset();\r\n this.startDateControl.reset();\r\n this.control.markAsTouched();\r\n this.endDateControl.markAsTouched();\r\n this.startDateControl.markAsTouched();\r\n }\r\n\r\n private activateYearOnlyMode(): void {\r\n this.dateFormat.updateDateFormat(\r\n YEAR_ONLY_FORMAT.parse,\r\n YEAR_ONLY_FORMAT.display\r\n );\r\n if (this.control) {\r\n this.control.setValue(format(new Date(this.control.value), 'yyyy'));\r\n }\r\n this.datepicker.startView = 'multi-year';\r\n this.datepicker.yearSelected.subscribe((e) => {\r\n this.control.setValue(format(new Date(e), 'yyyy'));\r\n this.datepicker.close();\r\n });\r\n this.datepicker.openedStream.subscribe(() => {\r\n document.body.classList.add('year-only');\r\n });\r\n this.datepicker.closedStream.subscribe(() => {\r\n document.body.classList.remove('year-only');\r\n });\r\n }\r\n}\r\n","@if(!isReadOnly) {\r\n @if(label) {\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n\r\n<div class=\"datePicker\">\r\n <mat-form-field class=\"date-range primary-form {{ className }}\"\r\n [ngClass]=\"{\r\n 'custom-validation-error': !startDateControl.value && !endDateControl.value && startDateControl.touched\r\n }\">\r\n <label class=\"mat-form-content\">\r\n <mat-date-range-input\r\n [rangePicker]=\"picker\"\r\n [min]=\"minDateValue\"\r\n [max]=\"maxDateValue\"\r\n >\r\n <input\r\n matStartDate\r\n placeholder=\"{{ 'startDate' | translate }}\"\r\n [formControl]=\"startDateControl\"\r\n (dateInput)=\"startDateChange($event)\"\r\n (click)=\"focusPicker(picker)\"\r\n readonly\r\n />\r\n <input\r\n matEndDate\r\n placeholder=\"{{ 'endDate' | translate }}\"\r\n [formControl]=\"endDateControl\"\r\n (dateInput)=\"endDateChange($event)\"\r\n (click)=\"focusPicker(picker)\"\r\n readonly\r\n />\r\n </mat-date-range-input>\r\n </label>\r\n\r\n @if(control?.value) {\r\n <ds-icon\r\n matSuffix\r\n icon=\"close\"\r\n class=\"fc-coral fs-10 mx-2 cursor-pointer\"\r\n (click)=\"clearDateValue($event)\"\r\n ></ds-icon>\r\n }\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\" [disableRipple]=\"true\">\r\n <i class=\"sfi sfi-calendar-o fc-black font-18\" matDatepickerToggleIcon></i>\r\n </mat-datepicker-toggle>\r\n\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n </mat-form-field>\r\n</div>\r\n@if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n}\r\n\r\n\r\n} @else if(isReadOnly && control.value) {\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n type=\"date\"\r\n [insideTable]=\"insideTable\"\r\n [dateType]=\"calendarType\"\r\n [label]=\"label\"\r\n [value]=\"{\r\n startDate: control?.value?.startDate,\r\n endDate: control?.value?.endDate\r\n }\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n</ng-container>\r\n}\r\n","import { Directive, HostListener, Input, Optional, Self } from \"@angular/core\";\r\nimport { NgControl } from \"@angular/forms\";\r\nimport type { InputFilterFn, InputMapFn } from \"./types\";\r\n\r\n@Directive({\r\n selector: '[inputMapFilter]',\r\n standalone: true\r\n})\r\nexport class InputMapFilterDirective {\r\n @Input() mapFn: InputMapFn;\r\n @Input() filterFn: InputFilterFn;\r\n @Input() maxLength: number | string;\r\n\r\n constructor(@Optional() @Self() private ngControl: NgControl) {}\r\n\r\n @HostListener('keydown', ['$event'])\r\n handleKeydown(event: KeyboardEvent) {\r\n if(!this.shouldProceed()) return true;\r\n const key = event.key;\r\n const input = event.target as HTMLInputElement;\r\n const currentValue = input.value || '';\r\n const start = input.selectionStart || 0;\r\n const end = input.selectionEnd || 0;\r\n const isCtrl = event.ctrlKey || event.metaKey || event.altKey;\r\n \r\n // Allow native handling if user is using shortcut (e.g. Ctrl+V, Ctrl+A, etc.)\r\n if (isCtrl) return true;\r\n // Allow native handling of non-printable control keys (arrows, tab, etc.)\r\n if(event.key.length > 1 && key !== 'Backspace' && key !== 'Delete') return true;\r\n // Simulate Backspace or Delete\r\n if(key === 'Backspace' || key === 'Delete') {\r\n let nextValue = currentValue;\r\n let caretPos = start;\r\n if (key === 'Backspace') {\r\n if (start === end && start > 0) {\r\n nextValue = currentValue.slice(0, start - 1) + currentValue.slice(end);\r\n caretPos = Math.max(0, start - 1);\r\n } else {\r\n nextValue = currentValue.slice(0, start) + currentValue.slice(end);\r\n }\r\n }\r\n if (key === 'Delete') {\r\n if (start === end) {\r\n nextValue = currentValue.slice(0, start) + currentValue.slice(end + 1);\r\n } else {\r\n nextValue = currentValue.slice(0, start) + currentValue.slice(end);\r\n }\r\n }\r\n this.updateValue(input, '', currentValue, nextValue, caretPos, event);\r\n event.preventDefault();\r\n return false;\r\n }\r\n // Handle normal character input\r\n const char = key;\r\n const nextValue = currentValue.slice(0, start) + char + currentValue.slice(end);\r\n this.updateValue(input, char, currentValue, nextValue, start + 1, event);\r\n event.preventDefault();\r\n return false;\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n handlePaste(event: ClipboardEvent) {\r\n if(!this.shouldProceed()) return;\r\n const pasted = event.clipboardData?.getData('text') || '';\r\n const input = event.target as HTMLInputElement;\r\n for(let char of pasted) {\r\n const currentValue = input.value || '';\r\n const start = input.selectionStart || 0;\r\n const end = input.selectionEnd || 0;\r\n const nextValue = currentValue.slice(0, start) + char + currentValue.slice(end);\r\n this.updateValue(input, char, currentValue, nextValue, start + 1, event);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener('drop', ['$event'])\r\n handleDrop(event: DragEvent) {\r\n if(!this.shouldProceed()) return;\r\n const droppedText = event.dataTransfer?.getData('text') || '';\r\n const input = event.target as HTMLInputElement;\r\n for(let char of droppedText) {\r\n const currentValue = input.value || '';\r\n const start = input.selectionStart || 0;\r\n const end = input.selectionEnd || 0;\r\n const nextValue = currentValue.slice(0, start) + char + currentValue.slice(end);\r\n this.updateValue(input, char, currentValue, nextValue, start + 1, event);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n private shouldProceed(): boolean {\r\n if(this.mapFn || this.filterFn) return true;\r\n if(this.hasMaxLength) return true;\r\n return false;\r\n }\r\n\r\n private hasMaxLength(): boolean {\r\n return typeof +this.maxLength === 'number' && !isNaN(+this.maxLength);\r\n }\r\n\r\n private updateValue(\r\n input: HTMLInputElement, \r\n char: string, \r\n currentValue: string, \r\n nextValue: string, \r\n caretPos: number,\r\n event: KeyboardEvent | ClipboardEvent | DragEvent\r\n ) {\r\n if(this.hasMaxLength && nextValue.length > +this.maxLength) return;\r\n if(char ? (!this.filterFn || this.filterFn(char, currentValue, nextValue, event)) : true) {\r\n const value = this.mapFn ? this.mapFn(char, currentValue, nextValue) : nextValue;\r\n input.value = value;\r\n if (this.ngControl?.control) {\r\n this.ngControl.control.setValue(value);\r\n } else {\r\n input.dispatchEvent(new Event('input', { bubbles: true }));\r\n }\r\n input.setSelectionRange(caretPos, caretPos);\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n","import { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, Input, EventEmitter, forwardRef, inject, DestroyRef } from '@angular/core';\r\nimport { MatHint } from '@angular/material/form-field';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { MatFormImports, Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { InputMapFilterDirective } from '../../../../directives/input-map-filter/input-map-filter.directive';\r\nimport type { InputMapFn, InputFilterFn } from '../../../../directives/input-map-filter/types';\r\n\r\n\r\n@Component({\r\n selector: 'app-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n MatHint,\r\n ...Shareds,\r\n ...MatFormImports,\r\n InputMapFilterDirective\r\n ],\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputComponent),\r\n multi: true,\r\n },\r\n ]\r\n\r\n})\r\nexport class InputComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n @Input() iconPrefixName!: string;\r\n @Input() iconSuffixName!: string;\r\n @Input() emitedChangedValue1 = new EventEmitter();\r\n @Input() maxLength: number | string;\r\n\r\n /**\r\n * A mapping function that modifies the input value during typing, pasting, or dropping text.\r\n * You can use it to modify the full input value **before it appears** (e.g., for auto-capitalization,\r\n * formatting, or custom replacements).\r\n *\r\n * This function is called:\r\n * - On each **key press**, to determine how the input value should change when a character is typed.\r\n * - On **paste**, to transform the pasted content before it’s applied.\r\n * - On **drop**, to transform the dropped text before it’s applied.\r\n *\r\n * **Built-in mappers are available via the `InputMappers` utility class:**\r\n *\r\n * - `InputMappers.toUpperCase` — Transforms all input to UPPERCASE.\r\n * - `InputMappers.toLowerCase` — Transforms all input to lowercase.\r\n *\r\n * @param char - The character(s) being inserted. This is:\r\n * - A single character (e.g., `'a'`) during typing.\r\n * - The full pasted string during paste events.\r\n * - The full dropped string during drop events.\r\n * @param currentValue - The current value of the input **before** the change is applied.\r\n * @param nextValue - The simulated value of the input **after** the character, paste, or drop is inserted, but before transformation.\r\n *\r\n * @returns The final string to use as the new input value.\r\n *\r\n * @example\r\n * // Use a built-in mapper to force UPPERCASE input:\r\n * this.mapFn = InputMappers.toUpperCase;\r\n *\r\n * @example\r\n * // Custom mapper: Capitalize the first letter of each word\r\n * this.mapFn = (char, current, next) =>\r\n * typeof next === 'string' ? next.replace(/\\b\\w/g, c => c.toUpperCase()) : next;\r\n */\r\n @Input() mapFn: InputMapFn;\r\n\r\n /**\r\n * A filtering function that determines whether a character or string should be allowed into the input.\r\n *\r\n * This function is called during:\r\n * - **Typing**: When a key is pressed to decide if the character should be accepted.\r\n * - **Paste**: When text is pasted to decide if the entire pasted string should be accepted.\r\n * - **Drop**: When text is dropped into the input to decide if it should be allowed.\r\n *\r\n * You can use it to reject unwanted characters (e.g. numbers, symbols) or block input entirely based\r\n * on the current or predicted value.\r\n *\r\n * **Built-in filters are available via the `InputFilters` utility class:**\r\n *\r\n * - `InputFilters.arabicOnly` — Allows Arabic letters and digits, as well as common symbols.\r\n * - `InputFilters.englishOnly` — Allows English letters and digits, as well as common symbols.\r\n * - `InputFilters.digitsOnly` — Allows digits only (`0–9`), no letters or symbols.\r\n * - You can also use `InputFilters.buildPattern()` to define a custom filter.\r\n *\r\n * @param char - The character(s) being inserted:\r\n * - A single typed character (e.g., `'a'`) during key presses\r\n * - The full pasted or dropped string during paste/drop\r\n * @param currentValue - The current value of the input before the character or string is applied.\r\n * @param nextValue - The simulated next value if the character or string were applied.\r\n * @param event - The originating event triggering the input change. This can be a\r\n * `KeyboardEvent` (for typing), `ClipboardEvent` (for paste), or `DragEvent` (for drop).\r\n *\r\n * @returns `true` to allow the input, or `false` to block it.\r\n *\r\n *\r\n * @example\r\n * // Use a built-in filter to restrict to digits only\r\n * this.filterFn = InputFilters.digitsOnly;\r\n *\r\n * @example\r\n * // Custom filter: Allow only letters (no numbers or symbols)\r\n * this.filterFn = (char, current, next, event) => {\r\n * return /^[a-zA-Z]+$/.test(char);\r\n * };\r\n */\r\n @Input() filterFn: InputFilterFn;\r\n\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n }\r\n\r\n matSuffixClicked(){\r\n\r\n }\r\n\r\n}\r\n","@if(!isReadOnly){\r\n@if(label){\r\n<app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n}\r\n<mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': control.disabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n>\r\n @if(iconPrefixName){<span class=\"sfi {{ iconPrefixName }}\"></span>}\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n [value]=\"value\"\r\n oninput=\"validity.valid || (value='');\"\r\n [formControl]=\"control\"\r\n [type]=\"type\"\r\n [placeholder]=\"placeholder || (label ? ('enter' | translate) + ' ' + label : '')\"\r\n inputMapFilter\r\n [mapFn]=\"mapFn\"\r\n [filterFn]=\"filterFn\"\r\n [maxLength]=\"maxLength\"\r\n />\r\n </label>\r\n\r\n @if(iconSuffixName){<span (click)=\"matSuffixClicked()\" matSuffix class=\"sfi {{ iconSuffixName }}\"></span>}\r\n @if(hint){\r\n <mat-hint class=\"d-flex align-items-center gap-1 mt-1\">\r\n <span\r\n class=\"sfi sfi-info fs-17 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n <mat-error\r\n app-validation-errors\r\n [errors]=\"control.errors\"\r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n</mat-form-field>\r\n\r\n} @if(isReadOnly && control.value && (showIfEmpty || control)){\r\n<ng-container class=\"info-section\">\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [type]=\"type\"\r\n [value]=\"control.value\"\r\n ></app-info-item>\r\n</ng-container>\r\n}\r\n","import { InputFilterFn } from \"./types\";\r\n\r\nexport class InputFilters {\r\n /**\r\n * A filter that allows only Arabic characters (letters, punctuation) and Arabic-Indic digits (٠–٩),\r\n * as well as basic common symbols and spaces.\r\n *\r\n * @returns `true` if the character should be allowed; otherwise, `false`\r\n */\r\n static arabicOnly(\r\n char: string,\r\n current: string,\r\n next: string,\r\n event: KeyboardEvent | ClipboardEvent | DragEvent,\r\n ) {\r\n const additionalCharactersRegex = /^[~`!@#$%^&*()_+=[\\]\\{}|;':\",.\\/<>?0-9- ]+$/;\r\n const arabicAlphabetDigits = /[\\u0600-\\u06ff]|[\\u0750-\\u077f]|[\\ufb50-\\ufc3f]|[\\ufe70-\\ufefc]|[\\u0200]|[\\u00A0]/g;\r\n return additionalCharactersRegex.test(char) || arabicAlphabetDigits.test(char);\r\n }\r\n\r\n /**\r\n * A filter that allows only English letters (A–Z, a–z), digits (0–9), common symbols, and space.\r\n *\r\n * @returns `true` if the character should be allowed; otherwise, `false`\r\n */\r\n static englishOnly(\r\n char: string,\r\n current: string,\r\n next: string,\r\n event: KeyboardEvent | ClipboardEvent | DragEvent,\r\n ) {\r\n const additionalCharactersRegex = /^[~`!@#$%^&*()_+=[\\]\\{}|;':\",.\\/<>?0-9- ]+$/;\r\n const english = /^[a-zA-Z ]*$/;\r\n return additionalCharactersRegex.test(char) || english.test(char);\r\n }\r\n\r\n /**\r\n * A filter that allows only digits (0–9).\r\n *\r\n * @returns `true` if the character is a digit; otherwise, `false`\r\n */\r\n static digitsOnly(\r\n char: string,\r\n current: string,\r\n next: string,\r\n event: KeyboardEvent | ClipboardEvent | DragEvent,\r\n ) {\r\n return /^[0-9]+$/.test(char);\r\n };\r\n\r\n static decimalDigitsOnly(\r\n char: string,\r\n current: string,\r\n next: string,\r\n event: KeyboardEvent | ClipboardEvent | DragEvent,\r\n ) {\r\n return /^\\d*\\.?\\d*$/.test(next);\r\n };\r\n\r\n /**\r\n * Creates a new `PatternBuilder` instance for building a custom input filter.\r\n *\r\n * The builder allows chaining methods like `.allowArabicAlphabets()`, `.allowDigits()`, `.allowSpace()`, etc.\r\n * Once configured, call `.build()` to generate the `InputFilterFn`.\r\n *\r\n * @example\r\n * ```ts\r\n * this.filterFn = InputFilters.buildPattern()\r\n * .allowArabicAlphabets()\r\n * .allowArabicDigits()\r\n * .allowSpace()\r\n * .build();\r\n * ```\r\n *\r\n * @returns An instance of `PatternBuilder` for building a custom filter\r\n */\r\n static buildPattern(): PatternBuilder {\r\n return new PatternBuilder();\r\n }\r\n\r\n}\r\nclass PatternBuilder {\r\n private patternParts: string[] = [];\r\n\r\n /**\r\n * Allow Arabic letters and Arabic symbols (e.g., Tatweel, diacritics, Arabic punctuation).\r\n */\r\n allowArabicAlphabets() {\r\n this.patternParts.push(\r\n '\\u0621-\\u064A' + // Arabic letters\r\n '\\u060C\\u061B\\u061F' + // Arabic punctuation: ، ؛ ؟\r\n '\\u0640' + // Tatweel\r\n '\\u064B-\\u0652' + // Diacritics (Tashkeel)\r\n '\\u066A-\\u066C' // Arabic percent, decimal, thousands separator\r\n );\r\n return this;\r\n }\r\n\r\n /**\r\n * Allow Arabic-Indic digits: ٠١٢٣٤٥٦٧٨٩\r\n */\r\n allowArabicDigits() {\r\n this.patternParts.push('\\u0660-\\u0669');\r\n return this;\r\n }\r\n\r\n /**\r\n * Allow English letters A–Z (uppercase/lowercase).\r\n */\r\n allowEnglishAlphabets() {\r\n this.patternParts.push('a-zA-Z');\r\n return this;\r\n }\r\n\r\n allowDigits() {\r\n this.patternParts.push('0-9');\r\n return this;\r\n }\r\n\r\n allowSpace() {\r\n this.patternParts.push(' ');\r\n return this;\r\n }\r\n\r\n allowSymbols() {\r\n this.patternParts.push(`~\\`!@#$%^&*()_+=\\\\[\\\\]{}|;:'\",.<>/?\\\\-`);\r\n return this;\r\n }\r\n\r\n /**\r\n * Builds and returns the filter function.\r\n */\r\n build(): InputFilterFn {\r\n const regex = new RegExp(`^[${this.patternParts.join('')}]+$`);\r\n return (\r\n char: string,\r\n current: string,\r\n next: string,\r\n event: KeyboardEvent | ClipboardEvent | DragEvent\r\n ): boolean => {\r\n return regex.test(char);\r\n };\r\n }\r\n}\r\n","export class InputMappers {\r\n /**\r\n * A mapping function that transforms all input to UPPERCASE.\r\n */\r\n static toUpperCase(char: string, currentValue: string, nextValue: string): string {\r\n return typeof nextValue === 'string' ? nextValue.toUpperCase() : nextValue;\r\n };\r\n\r\n /**\r\n * A mapping function that transforms all input to lowercase.\r\n */\r\n static toLowerCase(char: string, currentValue: string, nextValue: string): string {\r\n return typeof nextValue === 'string' ? nextValue.toLowerCase() : nextValue;\r\n };\r\n}","/* eslint-disable @angular-eslint/use-lifecycle-interface */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, EventEmitter, forwardRef, inject, Input, Output } from '@angular/core';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { MatFormImports, Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { InputFilterFn, InputFilters, InputMapFilterDirective } from '../../../../directives/input-map-filter';\r\n\r\n\r\n@Component({\r\n selector: 'app-input-number',\r\n templateUrl: './input-number.component.html',\r\n styleUrls: ['./input-number.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n InputMapFilterDirective,\r\n ...Shareds,\r\n ...MatFormImports\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputNumberComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class InputNumberComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n @Input() iconPrefixName!: string;\r\n @Input() iconSuffixName!: string;\r\n @Input() numberSuffixName!: string;\r\n @Input() allowedPattern = '';\r\n destroyRef = inject(DestroyRef);\r\n @Output() emitedChangedValue = new EventEmitter();\r\n onlyNumbers: InputFilterFn = InputFilters.decimalDigitsOnly;\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n\r\n}\r\n","@if(!isReadOnly){\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': control.disabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n @if(iconPrefixName){<span class=\"sfi {{ iconPrefixName }}\"></span>}\r\n @if(loading){<span\r\n class=\"sfi sfi-spinner d-inline-block spin fc-coral\"\r\n matSuffix\r\n ></span\r\n >}\r\n <label class=\"mat-form-content\">\r\n <input\r\n matInput\r\n [value]=\"value\"\r\n oninput=\"validity.valid || (value='');\"\r\n [formControl]=\"control\"\r\n [type]=\"type\"\r\n [placeholder]=\"placeholder || (label ? ('enter' | translate) + ' ' + label : '')\"\r\n inputMapFilter\r\n [filterFn]=\"onlyNumbers\"\r\n />\r\n </label>\r\n @if(iconSuffixName){<span matSuffix class=\"sfi {{ iconSuffixName }}\"></span>}\r\n @if(hint){\r\n <mat-hint class=\"d-flex align-items-center gap-1 mt-1\">\r\n <span\r\n class=\"sfi sfi-info fs-17 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n </mat-form-field>\r\n } @if(isReadOnly && control.value && (showIfEmpty || control)){\r\n <ng-container class=\"info-section\">\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [type]=\"type\"\r\n [value]=\"control.value\"\r\n ></app-info-item>\r\n </ng-container>\r\n }\r\n","import {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Input } from '@angular/core';\r\nimport {NgClass} from \"@angular/common\";\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { MatFormImports, Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-input-email',\r\n templateUrl: './input-email.component.html',\r\n styleUrls: ['./input-email.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n ...Shareds,\r\n ...MatFormImports\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputEmailComponent),\r\n multi: true,\r\n },\r\n ]\r\n})\r\nexport class InputEmailComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n @Input() matPrefix!: boolean;\r\n @Input() iconPrefixName!: string;\r\n @Input() iconSuffixName!: string;\r\n @Input() numberSuffixName!: string;\r\n destroyRef = inject(DestroyRef);\r\n displayErrors(data){\r\n console.log(this.control.errors)\r\n }\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n}\r\n","@if(!isReadOnly){\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': control.disabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n @if(iconPrefixName){<span class=\"sfi {{ iconPrefixName }}\"></span>}\r\n @if(loading){<span\r\n class=\"sfi sfi-spinner d-inline-block spin fc-coral\"\r\n matSuffix\r\n ></span\r\n >}\r\n <label class=\"mat-form-content\">\r\n <!-- add input for ar && en custom directive with add type = arOnly || type = enOnly-->\r\n <input\r\n matInput\r\n [value]=\"value\"\r\n oninput=\"validity.valid || (value='');\"\r\n [formControl]=\"control\"\r\n [type]=\"type\"\r\n [placeholder]=\"placeholder || (label ? ('enter' | translate) + ' ' + label : '')\"\r\n (change)=\"displayErrors($event)\"\r\n />\r\n </label>\r\n @if(iconSuffixName){<span matSuffix class=\"sfi {{ iconSuffixName }}\"></span>}\r\n @if(hint){\r\n <mat-hint class=\"d-flex align-items-center gap-1 mt-1\">\r\n <span\r\n class=\"sfi sfi-info fs-17 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n </mat-form-field>\r\n } @if(isReadOnly && control.value && (showIfEmpty || control)){\r\n <ng-container class=\"info-section\">\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [type]=\"type\"\r\n [value]=\"control.value\"\r\n ></app-info-item>\r\n </ng-container>\r\n }\r\n","/* eslint-disable @angular-eslint/use-lifecycle-interface */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/component-selector */\r\n// import { Validators } from '@angular/forms';\r\nimport {\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n forwardRef,\r\n Input,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { MatFormField } from '@angular/material/form-field';\r\nimport { SatPopoverModule } from '@ncstate/sat-popover';\r\nimport { NgxMaskDirective } from 'ngx-mask';\r\nimport { NgClass, NgIf } from '@angular/common';\r\nimport { InfoItemComponent } from '../info-item/info-item.component';\r\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { TranslatePipe } from '../../../../pipes/translate.pipe';\r\n\r\n@Component({\r\n selector: 'app-input-mask',\r\n templateUrl: './input-mask.component.html',\r\n styleUrls: ['./input-mask.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputMaskComponent),\r\n multi: true,\r\n },\r\n ],\r\n imports: [\r\n SatPopoverModule,\r\n MatFormField,\r\n NgxMaskDirective,\r\n InfoItemComponent,\r\n ReactiveFormsModule,\r\n NgClass,\r\n TranslatePipe\r\n ],\r\n})\r\nexport class InputMaskComponent<\r\n Type\r\n> extends ControlValueAccessorDirective<Type> {\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n @Input() matPrefix!: boolean;\r\n @Input() iconPrefixName!: string;\r\n @Input() iconSuffixName!: string;\r\n @Input() numberSuffixName!: string;\r\n // ngOnInit(): void {\r\n // this.resetPropagator.subscribe(this, this.resetData);\r\n\r\n // code\tmeaning\r\n // 0\tdigits (like 0 to 9 numbers)\r\n // 9\tdigits (like 0 to 9 numbers), but optional\r\n // A\tletters (uppercase or lowercase) and digits\r\n // S\tonly letters (uppercase or lowercase)\r\n // U\tonly letters uppercase\r\n // L\tonly letters lowercase\r\n\r\n // }\r\n}\r\n","\r\n@if(!isReadOnly){\r\n <ng-container>\r\n <!-- <app-form-label [label]=\"label\" [optional]=\"!required\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\"></app-form-label> -->\r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">{{label}}</span>\r\n @if(!required){\r\n <span class=\"fs-11 fc-dark-gray\">{{i18n.translate('Optional')}}\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n <mat-form-field class=\"primary-form {{className}}\" [ngClass]=\"{'input-disabled' : isDisabled }\"\r\n [floatLabel]=\"floatLabel\">\r\n\r\n @if(iconPrefixName){\r\n <span matPrefix class=\"sfi {{iconPrefixName}}\"></span>\r\n }\r\n <label class=\"mat-form-content\">\r\n <input matInput [placeholder]=\"placeholder\" [value]=\"value\" [attr.disabled]=\"isDisabled\" [mask]=\"mask\"\r\n [showMaskTyped]=\"false\" oninput=\"validity.valid || (value='');\" [formControl]=\"control\"\r\n [required]=\"required\" [placeholder]=\"placeholder || (label ? ('enter' | translate) + ' ' + label : '')\">\r\n </label>\r\n\r\n @if(matSuffix){\r\n <span matSuffix class=\"sfi {{iconSuffixName}}\"></span>\r\n }\r\n @if(type === 'number'){\r\n <div matSuffix class=\"d-flex align-items-center gap-2\">\r\n @if(numberSuffixName){\r\n <span class=\"fs-14 fw-medium\">{{numberSuffixName}}</span>\r\n }\r\n <!-- <span class=\"sfi sfi-minus p-2 bc-light-gray fc-black\"></span>\r\n <span class=\"sfi sfi-plus p-2 bc-light-gray fc-black\"></span> -->\r\n </div>\r\n }\r\n <!-- @if((!control?.valid)){\r\n <mat-error class=\"mb-2\">\r\n {{i18n.translate('validFieldError')}}{{label}}\r\n </mat-error>\r\n } -->\r\n\r\n\r\n <!-- <mat-error *ngIf=\"(type ==='email' && !control?.valid)\">\r\n {{i18n.translate('validEmailError')}}\r\n </mat-error> -->\r\n @if(showHint){\r\n <mat-hint>\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n <!-- <span class=\"fc-coral\" style=\"color:#f44336\" *ngIf=\"( showErrorMessage && control.value)\">\r\n {{errorMessage}}\r\n </span> -->\r\n\r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly && control.value){\r\n <ng-container class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [insideTable]=\"insideTable\" [hasLabel]=\"label ? true: false\"\r\n [value]=\"control\"></app-info-item>\r\n </ng-container>\r\n\r\n}\r\n\r\n\r\n<!-- section tooltip -->\r\n<sat-popover #popover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"deafult-tooltip\">\r\n {{tooltip}}\r\n </div>\r\n</sat-popover>\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/directive-selector */\r\nimport {Directive, ElementRef, HostListener, Input, OnInit} from '@angular/core';\r\nimport {MycurrencyPipe} from \"../pipes\";\r\n\r\n@Directive({\r\n selector: '[appMycurrency]',\r\n standalone: true\r\n})\r\nexport class MycurrencyDirective implements OnInit{\r\n private el: any;\r\n @Input() decimals!: number;\r\n\r\n constructor(\r\n private elementRef:ElementRef,\r\n private formatcurrencypipe:MycurrencyPipe\r\n ) {\r\n this.el = this.elementRef.nativeElement;\r\n }\r\n ngOnInit(){\r\n setTimeout(() => {\r\n this.el.value = this.formatcurrencypipe.transform(this.el.value);\r\n });\r\n }\r\n @HostListener(\"focus\",[\"$event.target.value\",\"$event\"])\r\n onFocus(value,event) {\r\n this.el.value = this.formatcurrencypipe.parse(value); // opossite of transform\r\n if(event.which== 9)\r\n {\r\n return false;\r\n }\r\n return this.el.select();\r\n\r\n }\r\n\r\n @HostListener(\"blur\", [\"$event.target.value\"])\r\n onBlur(value) {\r\n this.el.value = this.formatcurrencypipe.transform(value);\r\n }\r\n @HostListener('keydown', ['$event']) onKeyDown(event) {\r\n const e = <KeyboardEvent> event;\r\n if(e.key == 'و' || e.key == 'ز'){\r\n e.preventDefault();\r\n }\r\n if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||\r\n // Allow: Ctrl+A\r\n (e.keyCode === 65 && (e.ctrlKey || e.metaKey)) ||\r\n // Allow: Ctrl+C\r\n (e.keyCode === 67 && (e.ctrlKey || e.metaKey)) ||\r\n // Allow: Ctrl+V\r\n (e.keyCode === 86 && (e.ctrlKey || e.metaKey)) ||\r\n // Allow: Ctrl+X\r\n (e.keyCode === 88 && (e.ctrlKey || e.metaKey)) ||\r\n (e.keyCode === 188 ) ||\r\n // Allow: home, end, left, right\r\n (e.keyCode >= 35 && e.keyCode <= 39)) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n // Ensure that it is a number and stop the keypress\r\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105 )) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n onPaste(event: ClipboardEvent) {\r\n const clipboardData = event.clipboardData ;\r\n const pastedText = clipboardData.getData('text');\r\n\r\n // Example: block pasting if pasted text contains forbidden characters\r\n if (pastedText.includes('و') || pastedText.includes('ز')) {\r\n event.preventDefault();\r\n }\r\n\r\n // Or only allow digits (example)\r\n if (!/^\\d+$/.test(pastedText)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n}\r\n","import {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Input } from '@angular/core';\r\nimport {MatHint} from '@angular/material/form-field';\r\nimport {NgClass, NgSwitchCase,} from \"@angular/common\";\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport {MycurrencyPipe} from \"../../../../pipes\";\r\nimport {MycurrencyDirective} from \"../../../../directives/currency.directive\";\r\nimport { MatFormImports, Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-input-currency',\r\n templateUrl: './input-currency.component.html',\r\n styleUrls: ['./input-currency.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n MatHint,\r\n MycurrencyDirective,\r\n ...Shareds,\r\n ...MatFormImports,\r\n NgSwitchCase\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputCurrencyComponent),\r\n multi: true,\r\n\r\n },\r\n MycurrencyPipe\r\n ]\r\n})\r\nexport class InputCurrencyComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n @Input() iconPrefixName!: string;\r\n @Input() iconSuffixName!: string;\r\n @Input() numberSuffixName!: string;\r\n destroyRef = inject(DestroyRef);\r\n public mycurrencyPipe: MycurrencyPipe\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n}\r\n","@if(!isReadOnly){\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [ngClass]=\"{ 'input-disabled': control.disabled }\"\r\n [floatLabel]=\"floatLabel\"\r\n >\r\n @if(iconPrefixName){<span class=\"sfi {{ iconPrefixName }}\"></span>}\r\n @if(loading){<span\r\n class=\"sfi sfi-spinner d-inline-block spin fc-coral\"\r\n matSuffix\r\n ></span\r\n >}\r\n <label class=\"mat-form-content\">\r\n <!-- add input for ar && en custom directive with add type = arOnly || type = enOnly-->\r\n <input\r\n matInput\r\n [value]=\"value\"\r\n oninput=\"validity.valid || (value='');\"\r\n [formControl]=\"control\"\r\n [type]=\"type\"\r\n [placeholder]=\"placeholder || (label ? ('enter' | translate) + ' ' + label : '')\"\r\n appMycurrency\r\n />\r\n </label>\r\n @if(iconSuffixName){<span matSuffix class=\"sfi {{ iconSuffixName }}\"></span>}\r\n @if(hint){\r\n <mat-hint class=\"d-flex align-items-center gap-1 mt-1\">\r\n <span\r\n class=\"sfi sfi-info fs-17 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n </mat-form-field>\r\n } @if(isReadOnly && control.value && (showIfEmpty || control)){\r\n <ng-container class=\"info-section\">\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [type]=\"'currency'\"\r\n [value]=\"control.value\"\r\n ></app-info-item>\r\n </ng-container>\r\n }\r\n","// export * from './input-autocomplete.module';\r\nexport * from './input-autocomplete.model';","import { NgxIntlTelInputModule } from 'ngx-intl-tel-input-gg';\r\nimport { CountryISO, SearchCountryField } from 'ngx-intl-tel-input-gg';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\r\nimport { Component, Input, CUSTOM_ELEMENTS_SCHEMA, forwardRef, OnInit, inject, DestroyRef } from '@angular/core';\r\nimport {InfoItemComponent} from \"../info-item/info-item.component\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { ValidationErrorsComponent } from '../validation-errors/validation-errors.component';\r\nimport { Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatError } from '@angular/material/form-field';\r\n\r\n@Component({\r\n selector: 'app-input-telephone',\r\n templateUrl: './input-telephone.component.html',\r\n styleUrls: ['./input-telephone.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgxIntlTelInputModule,\r\n ...Shareds,\r\n MatError\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputTelephoneComponent),\r\n multi: true,\r\n },\r\n ]\r\n})\r\nexport class InputTelephoneComponent<Type> extends ControlValueAccessorDirective<Type> implements OnInit {\r\n @Input() floatLabel: any = 'auto';\r\n @Input() className = 'bordered-input';\r\n controlValue:string = '';\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\noverride ngOnInit(): void {\r\n super.ngOnInit();\r\n if(this.control.hasValidator(this.Validators.required)){\r\n this.telephoneControl.setValidators(this.Validators.required)\r\n } else {\r\n this.telephoneControl.setValidators(null)\r\n }\r\n this.telephoneControl.updateValueAndValidity\r\n\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n \r\n}\r\n CountryISO = CountryISO;\r\n SearchCountryField = SearchCountryField;\r\n show:boolean = false;\r\n \r\n setControlValue(controlValue){\r\n console.log(this.telephoneControl.errors)\r\n if (this.telephoneControl.valid && controlValue){\r\n this.control.setValue(controlValue['internationalNumber'])\r\n this.telephoneControl.setValue(controlValue['internationalNumber'])\r\n } \r\n if(!controlValue){\r\n this.control.reset()\r\n }\r\n\r\n if ( this.telephoneControl.invalid && this.telephoneControl.touched){\r\n this.control.markAsTouched()\r\n }\r\n }\r\n}\r\n","@if(!isReadOnly){\r\n <ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <!-- <mat-form-field style=\"height: 50px;\" class=\"primary-form input-telephone {{className}}\" floatLabel=\"always\"> -->\r\n <div class=\"primary-form input-telephone {{className}}\" floatLabel=\"always\">\r\n <label class=\"mat-form-content\">\r\n <!-- [placeholder]=\"label\" -->\r\n <!-- <input matInput [disabled]=\"disabled\" ng2TelInput numberOnly #phone\r\n [ng2TelInputOptions]=\"{initialCountry: 'sa', utilsScript: 'assets/js/utils.js'}\" (hasError)=\"hasError($event)\"\r\n (ng2TelOutput)=\"getNumber($event)\" (intlTelInputObject)=\"telInputObject($event)\"\r\n (countryChange)=\"onCountryChange($event)\" [(ngModel)]=\"field\" [name]=\"name\"\r\n oninput=\"this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\\..*)\\./g, '$1');\"\r\n [maxlength]=\"maxLength\" [minLength]=\"minLength\" />-->\r\n <!-- <input matInput [hidden]=\"true\"/> -->\r\n <ngx-intl-tel-input\r\n (input)=\"setControlValue(telephoneControl.value)\"\r\n [formControl]=\"telephoneControl\"\r\n [cssClass]=\"'custom'\"\r\n [preferredCountries]=\"[CountryISO.UnitedStates, CountryISO.UnitedKingdom]\"\r\n [enableAutoCountrySelect]=\"false\"\r\n [enablePlaceholder]=\"true\"\r\n [searchCountryFlag]=\"true\"\r\n [searchCountryField]=\"[SearchCountryField.Iso2, SearchCountryField.Name]\"\r\n [selectFirstCountry]=\"false\"\r\n [selectedCountryISO]=\"CountryISO.SaudiArabia\"\r\n [maxLength]=\"17\"\r\n [phoneValidation]=\"true\"\r\n [inputId]=\"\"\r\n name=\"phone\"\r\n ></ngx-intl-tel-input>\r\n </label>\r\n </div>\r\n <!-- </mat-form-field> -->\r\n @if (telephoneControl.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"telephoneControl.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n\r\n </ng-container>\r\n}\r\n@if(isReadOnly && control.value){\r\n <ng-container>\r\n <app-info-item class=\"info-item w-100\" [type]=\"'telephone'\" [label]=\"label\"\r\n [value]=\"control.value\"></app-info-item>\r\n </ng-container>\r\n}\r\n","import {\r\n FormsModule,\r\n NG_VALUE_ACCESSOR,\r\n} from '@angular/forms';\r\nimport {\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n DestroyRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { MatError, MatFormField } from '@angular/material/form-field';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { SatPopoverModule } from '@ncstate/sat-popover';\r\nimport { Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-search-employee',\r\n templateUrl: './search-employee.component.html',\r\n styleUrls: ['./search-employee.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n MatFormField,\r\n MatError,\r\n MatInput,\r\n NgClass,\r\n MatAutocompleteModule,\r\n FormsModule,\r\n SatPopoverModule,\r\n ...Shareds,\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SearchEmployeeComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SearchEmployeeComponent<\r\n Type\r\n> extends ControlValueAccessorDirective<Type> {\r\n @Input() valueName!: string;\r\n @Input() className = 'bordered-input';\r\n @Input() optional = false;\r\n @Input() data!: any[];\r\n @Input() floatLabel: any = 'auto';\r\n @Input() error!: string;\r\n selected = false;\r\n @Input() ApiAlias!: any;\r\n @Input() parameters: any;\r\n @Input() hasCustomAPI = false;\r\n\r\n\r\n /**\r\n * Emits the full details of the selected employee.\r\n */\r\n @Output() selectedEmployee = new EventEmitter();\r\n @Input() showEdit = false;\r\n @Input() arrayList: any[] = [];\r\n @Input() isUniqueUsers = false;\r\n userAlreadyExist = false;\r\n @Output() emitedDeletedValue = new EventEmitter();\r\n destroyRef = inject(DestroyRef);\r\n\r\n @Input() hasCustomApi = false;\r\n @Output() customApiEmit = new EventEmitter();\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n deleteRow(ind: number, rowData) {\r\n if (!this.isReadOnly) {\r\n this.arrayList = this.arrayList?.filter((item: any, index) => {\r\n return index != ind;\r\n });\r\n const obj = {\r\n rowData: rowData,\r\n arrayList: this.arrayList,\r\n };\r\n this.emitedDeletedValue.emit(obj);\r\n }\r\n if (!this.arrayList?.length && this.multiple) {\r\n this.employeeSearchControl.markAsTouched();\r\n this.control.setValue([]);\r\n this.control.setValidators(this.Validators['required'])\r\n this.control.updateValueAndValidity()\r\n }\r\n }\r\n\r\n onLoadOptions(event: any) {\r\n const input = event.target.value;\r\n this.data = [];\r\n if (input.length >= 3) {\r\n this.selected = false;\r\n this.loading = true;\r\n if (this.hasCustomAPI) { \r\n this.coreService\r\n .customSearchEmployee(input,this.ApiAlias,this.parameters)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (form: any) => {\r\n this.loading = false;\r\n this.data = form.Users;\r\n },\r\n error: (err) => { },\r\n complete: () => { },\r\n });\r\n\r\n }\r\n else {\r\n\r\n this.coreService\r\n .searchEmployee(input)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (form: any) => {\r\n this.loading = false;\r\n this.data = form.Users;\r\n },\r\n error: (err) => { },\r\n complete: () => { },\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n\r\n } else if (input.length == 0) {\r\n if (this.multiple) {\r\n } else {\r\n this.control.reset();\r\n this.control.markAsTouched();\r\n }\r\n }\r\n }\r\n\r\n includeData(option: any, filterValue: string) {\r\n if (\r\n option?.email.toLowerCase().includes(filterValue) ||\r\n option?.name.toLowerCase().includes(filterValue)\r\n ) {\r\n return option;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n getImage(id: string): string {\r\n return '/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=' + id;\r\n }\r\n\r\n selectOption(object: any, ev: any) {\r\n this.selectedEmployee.emit(object);\r\n if (!this.control.touched) this.onTouchedFn();\r\n this.userAlreadyExist = false;\r\n this.selected = true;\r\n this.data = [];\r\n if (this.multiple) {\r\n if (this.arrayList?.some((item) => item?.personEmail === object?.email)) {\r\n this.userAlreadyExist = true;\r\n return;\r\n }\r\n let obj = {\r\n personName: object.name,\r\n personEmail: object.email,\r\n // job: object.job.name,\r\n // jobCode: object.job.code,\r\n // manager: object.manager,\r\n // department: object.department,\r\n // generalDepartment: object.generalDepartment,\r\n // sector: object.sector,\r\n // section: object.section,\r\n // seniorSectorName: object.seniorSectorName,\r\n };\r\n this.arrayList?.push(obj);\r\n this.control.setValue(this.arrayList);\r\n\r\n } else {\r\n const controlValue = {\r\n personName: object.name,\r\n personEmail: object.email,\r\n };\r\n this.control.setValue(controlValue);\r\n this.employeeSearchControl.setValue(object.name);\r\n }\r\n }\r\n}\r\n\r\nexport interface searchEmp {\r\n personName?: string;\r\n personEmail?: string;\r\n contact?: string;\r\n employeeNumber?: string;\r\n}\r\n","@if (!isReadOnly) {\r\n<ng-container>\r\n @if(label) {\r\n <app-form-label\r\n [label]=\"label\"\r\n [optional]=\"required || mandatory ? false : true\"\r\n [tooltip]=\"tooltip\"\r\n ></app-form-label>\r\n }\r\n <mat-form-field\r\n class=\"primary-form {{ className }}\"\r\n [floatLabel]=\"floatLabel\"\r\n [ngClass]=\"{\r\n 'custom-validation': !control?.errors\r\n }\"\r\n >\r\n <mat-label>{{ label }}</mat-label>\r\n <ds-icon icon=\"search\" class=\"fc-coral fs-18\"></ds-icon>\r\n <label class=\"mat-form-content\">\r\n <input\r\n type=\"text\"\r\n aria-label=\"Number\"\r\n (input)=\"onLoadOptions($event)\"\r\n matInput\r\n [disabled]=\"isDisabled\"\r\n [matAutocomplete]=\"auto\"\r\n [formControl]=\"employeeSearchControl\"\r\n [placeholder]=\"placeholder || (label ? ('select' | translate) + ' ' + label : '')\"\r\n />\r\n </label>\r\n @if (loading) {\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n }\r\n <mat-autocomplete #auto=\"matAutocomplete\">\r\n @for (option of data; track option) {\r\n <mat-option\r\n [value]=\"option?.['personName']\"\r\n (onSelectionChange)=\"selectOption(option, $event)\"\r\n >\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <div class=\"dropdown-img\">\r\n <ds-avatar\r\n [image]=\"getImage(option?.email)\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user.svg';\"\r\n slot=\"prefix\"\r\n class=\"avatar\"\r\n size=\"small\"\r\n >\r\n </ds-avatar>\r\n </div>\r\n <div class=\"line-height-1\">\r\n <h6 class=\"fs-14 fw-medium fc-onyx mb-0 line-height-1\">\r\n {{ option?.name }}\r\n </h6>\r\n <span class=\"fs-13 fw-normal fc-dark-gray\">{{\r\n option?.description\r\n }}</span>\r\n </div>\r\n </div>\r\n </mat-option>\r\n\r\n }\r\n </mat-autocomplete>\r\n @if (showHint) {\r\n <mat-hint>\r\n <span\r\n class=\"sfi sfi-check-circle font-10 fc-dark-gray\"\r\n [ngClass]=\"{ 'fc-oasis-light-imp': value }\"\r\n ></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n @if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control?.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n\r\n @if (userAlreadyExist) {\r\n <mat-error class=\"mb-2\">{{ \"userAlreadyExist\" | translate }}</mat-error>\r\n } @if (arrayList?.length && !isReadOnly && multiple) {\r\n <div class=\"col-12 mt-2\">\r\n <div class=\"example-list n-results\">\r\n @for (emails of arrayList; track $index) {\r\n <div class=\"example-box n-col px-3\" [ngClass]=\"{ 'mt-0': $index === 0 }\">\r\n <div class=\"d-flex flex-grow-1 w-100\">\r\n <div class=\"user-info flex-grow-1\">\r\n <ds-avatar\r\n [image]=\"getImage(emails?.['personEmail'])\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user.svg';\"\r\n slot=\"prefix\"\r\n class=\"avatar prof-img\"\r\n >\r\n </ds-avatar>\r\n @if (emails?.['personName']) {\r\n <label>\r\n {{ emails?.['personName'] }}\r\n <span class=\"title\">{{ emails?.['personEmail'] }}</span>\r\n </label>\r\n }\r\n </div>\r\n @if (!isReadOnly) {\r\n <ds-button\r\n class=\"ds-btn-action\"\r\n size=\"small\"\r\n (click)=\"deleteRow($index, emails)\"\r\n icon\r\n >\r\n <ds-icon icon=\"trash\" class=\"fc-coral fs-20\"></ds-icon>\r\n </ds-button>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n</ng-container>\r\n} @if (isReadOnly && control.value) {\r\n<ng-container>\r\n <app-info-item\r\n class=\"info-item\"\r\n type=\"user-picker\"\r\n [hasLabel]=\"!!label\"\r\n [multiple]=\"multiple\"\r\n [ngClass]=\"{ 'user-picker': !isReadOnly }\"\r\n [actionType]=\"!isReadOnly ? 'delete' : 'edit'\"\r\n [label]=\"label\"\r\n [name]=\"control.value['personName']\"\r\n [value]=\"control.value['personEmail']\"\r\n [arrayList]=\"arrayList\"\r\n >\r\n </app-info-item>\r\n</ng-container>\r\n}\r\n\r\n<sat-popover #searchEmpPopover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"default-popover p-3\">\r\n <ol class=\"px-3 m-0\">\r\n <li>{{ \"searchEmployeeTooltip_1\" | translate }}</li>\r\n <li>{{ \"searchEmployeeTooltip_2\" | translate }}</li>\r\n <li>{{ \"searchEmployeeTooltip_3\" | translate }}</li>\r\n <li>{{ \"searchEmployeeTooltip_4\" | translate }}</li>\r\n </ol>\r\n </div>\r\n</sat-popover>\r\n","import {ReactiveFormsModule, Validators} from '@angular/forms';\r\n/* eslint-disable @angular-eslint/component-selector */\r\n/* eslint-disable @angular-eslint/use-lifecycle-interface */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/no-output-on-prefix */\r\nimport { BaseComponent } from '../base-component/base-component.component';\r\nimport {MatError, MatFormField, MatLabel, MatOption, MatSelect, MatSelectChange} from '@angular/material/select';\r\nimport {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n SimpleChanges,\r\n ElementRef,\r\n ViewChild,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n} from '@angular/core';\r\nimport {MatProgressSpinner} from \"@angular/material/progress-spinner\";\r\nimport {NgForOf, NgIf} from \"@angular/common\";\r\nimport {InfoItemComponent} from \"../info-item/info-item.component\";\r\nimport {FormLabelComponent} from \"../form-label/form-label.component\";\r\n\r\n@Component({\r\n selector: 'app-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n MatSelect,\r\n MatOption,\r\n MatLabel,\r\n MatProgressSpinner,\r\n MatError,\r\n NgIf,\r\n NgForOf,\r\n InfoItemComponent,\r\n FormLabelComponent,\r\n MatFormField\r\n ]\r\n})\r\nexport class SelectComponent extends BaseComponent {\r\n emitedValues = [];\r\n @Input() valueName: any = 'description';\r\n @Input() parentKey = '';\r\n @Input() label!: string;\r\n @Input() tooltip!: string;\r\n @Input() className = 'bordered-input';\r\n @Input() showLabel = true;\r\n @Input() readonly = false;\r\n @Input() optional = false;\r\n @Input() data!: any[];\r\n @Output() onChange = new EventEmitter();\r\n @Input() error!: string;\r\n @Input() optionAr!: string;\r\n @Input() optionEn!: string;\r\n @Input() hasPlaceHolder = false;\r\n @Output() emitedMultiValue = new EventEmitter();\r\n @ViewChild('selectCtrl') selectCtrl!: ElementRef;\r\n selectAllEnabled = true;\r\n @ViewChild('selectAllOption') selectAllOption;\r\n selectedValues: string[] = [];\r\n @Input() parentValue: string;\r\n ngOnInit(): void {\r\n // this.resetPropagator.subscribe(this, this.resetKeyValue);\r\n if (this.field?.key) {\r\n this.controller.setValue(this.field.key);\r\n } else {\r\n this.controller.setValue('');\r\n }\r\n\r\n if (this.field?.length > 0) {\r\n this.controller.setValue(this.field);\r\n }\r\n\r\n if (this.required) {\r\n this.controller.setValidators([Validators.required]);\r\n }\r\n\r\n // send back case\r\n if (\r\n this.lov && this.lov?.options?.length &&\r\n Array.isArray(this.controller?.value) &&\r\n this.controller?.value?.length === this.lov?.options?.length\r\n ) {\r\n this.selectAllOption?.select();\r\n this.toggleAllOptions(true);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes?.['field'] && !this.multiple) {\r\n if (changes['field'].currentValue?.key == null) {\r\n this.controller.setValue('');\r\n } else {\r\n this.controller.setValue(changes['field'].currentValue.key);\r\n }\r\n }\r\n }\r\n\r\n resetKeyValue() {\r\n if (!this.isReadOnly) {\r\n this.controller.reset();\r\n this.controller.markAsUntouched();\r\n if (this.multiple) {\r\n this.field = [];\r\n this.emitedValues = [];\r\n this.emitedValue.emit(this.emitedValues);\r\n } else {\r\n this.field = {\r\n value: null,\r\n key: null,\r\n };\r\n this.emitedValue.emit(this.field);\r\n }\r\n }\r\n }\r\n\r\n toggleAllOptions(value: any) {\r\n this.selectCtrl['options'].forEach((option) => {\r\n if (value.selected) {\r\n option.select();\r\n } else {\r\n option.deselect();\r\n }\r\n });\r\n }\r\n\r\n transformSelectedData(value) {\r\n if (!value) {\r\n return '';\r\n }\r\n if (value[0] === 'all') {\r\n return this.lov.options[1]['description'];\r\n } else {\r\n const selectedOption = this.lov?.options?.find((option) => {\r\n let val = value[0];\r\n if (typeof val !== 'string') {\r\n val = val && val['value'];\r\n }\r\n return option.value === val;\r\n });\r\n return selectedOption?.description;\r\n }\r\n }\r\n\r\n handleOnOptionSelected(value: any) {\r\n value = value.filter((value) => value !== 'all'); // without all\r\n\r\n const selectedValues = value.map((val: any) => {\r\n const item = this.lov?.options?.find((element) => element.value == val);\r\n\r\n return {\r\n key: val,\r\n value: item.description,\r\n };\r\n });\r\n\r\n this.emitedMultiValue.emit(selectedValues);\r\n }\r\n\r\n emitSelectedValue(event: MatSelectChange): void {\r\n const index = this.lov.options.findIndex(\r\n (option) => option.value === event.value\r\n );\r\n this.controller.setValue(event.value);\r\n this.emitedValue.emit({\r\n key: event.value,\r\n value: this.lov.options[index].description,\r\n });\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isReadOnly\">\r\n <app-form-label [label]=\"label\" [optional]=\"optional\" [hideOption]=\"hideOption\" [showLabel]=\"showLabel\">\r\n </app-form-label>\r\n <mat-form-field class=\"{{className}}\" [floatLabel]=\"'auto'\">\r\n <mat-label>\r\n {{ hasPlaceHolder ? placeholder : i18n.translate('selectYourOption')}}\r\n </mat-label>\r\n <label class=\"mat-form-content\">\r\n <ng-container *ngIf=\"!multiple\">\r\n <mat-select disableOptionCentering [disabled]=\"disabled\" [formControl]=\"controller\"\r\n (selectionChange)=\"emitSelectedValue($event)\"\r\n [placeholder]=\"hasPlaceHolder ? placeholder : i18n.translate('selectYourOption')\">\r\n <ng-container *ngIf=\"parentKey !== ''\">\r\n <ng-container *ngFor=\"let element of lov?.options\">\r\n <mat-option *ngIf=\"element?.parentValue === parentKey\" [value]=\"element.value\">\r\n {{element.description}}\r\n </mat-option>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"parentKey ===''\">\r\n <mat-option *ngFor=\"let element of lov?.options\" [value]=\"element.value\">\r\n {{element.description}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </ng-container>\r\n <ng-container *ngIf=\"multiple\">\r\n <mat-select #selectCtrl [disabled]=\"disabled\" [formControl]=\"controller\" multiple\r\n (selectionChange)=\"handleOnOptionSelected($event?.value)\"\r\n [placeholder]=\"hasPlaceHolder ? placeholder : i18n.translate('selectYourOption')\">\r\n\r\n <mat-select-trigger *ngIf=\"selectAllEnabled\">\r\n {{ transformSelectedData(controller?.getRawValue())}}\r\n <span *ngIf=\"(controller.value?.length || 0) > 1\" >\r\n (+{{ (controller.value?.length || 0) - 1 }} {{ controller.value?.length === 2 ? i18n.translate('other') : i18n.translate('others') }})\r\n </span>\r\n </mat-select-trigger>\r\n\r\n <ng-container *ngIf=\"parentKey !== ''\" >\r\n <ng-container *ngFor=\"let element of lov?.options\" class=\"mx-2\">\r\n <mat-option *ngIf=\"element?.parentValue === parentKey\" [value]=\"element.value\">\r\n {{element.description}}\r\n </mat-option>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"parentKey ===''\" >\r\n\r\n <mat-option #selectAllOption *ngIf=\"selectAllEnabled && lov?.options?.length\" value=\"all\" class=\"mx-2\" (click)=\"toggleAllOptions(selectAllOption)\">\r\n {{i18n.translate('selectAll')}}\r\n </mat-option>\r\n\r\n <mat-option *ngFor=\"let element of lov?.options\" [value]=\"element.value\" class=\"mx-2\">\r\n {{element.description}}\r\n </mat-option>\r\n\r\n\r\n </ng-container>\r\n </mat-select>\r\n </ng-container>\r\n\r\n\r\n\r\n\r\n\r\n <mat-label *ngIf=\"loading\">\r\n <div class=\"select-placeholder-container\">\r\n <!-- <span>Loading...</span> -->\r\n <mat-spinner class=\"spinner\" diameter=\"20\"></mat-spinner>\r\n </div>\r\n </mat-label>\r\n\r\n </label>\r\n\r\n <mat-error class=\"mb-2\" *ngIf=\"(!controller?.valid)\">{{i18n.translate('validSelectError')}}{{label}}\r\n </mat-error>\r\n\r\n <mat-hint *ngIf=\"showHint && hint\" class=\"mb-2\">\r\n <span class=\"mat-error\">{{hint}}</span>\r\n </mat-hint>\r\n\r\n <!-- <mat-error *ngIf=\"!controller.valid\">{{error}}</mat-error> -->\r\n </mat-form-field>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && (showIfEmpty || field?.value)\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [hasLabel]=\"hasLabel\" [insideTable]=\"insideTable\"\r\n [value]=\"field?.value || field?.key\"></app-info-item>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"isReadOnly && multiple\" class=\"info-section\">\r\n <app-info-item class=\"info-item w-100\" [label]=\"label\" [type]=\"'multipleSelect'\" [hasLabel]=\"hasLabel\" [insideTable]=\"insideTable\"\r\n [value]=\"field\"></app-info-item>\r\n</ng-container>\r\n","import {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Input} from '@angular/core';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { MatFormImports, Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { InputMapFilterDirective } from '../../../../directives/input-map-filter/input-map-filter.directive';\r\nimport type { InputMapFn, InputFilterFn } from '../../../../directives/input-map-filter/types';\r\n\r\n@Component({\r\n selector: 'app-textarea',\r\n templateUrl: './textarea.component.html',\r\n styleUrls: ['./textarea.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n ...MatFormImports,\r\n ...Shareds,\r\n InputMapFilterDirective\r\n ],\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TextareaComponent),\r\n multi: true,\r\n },\r\n ]\r\n})\r\nexport class TextareaComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() className!: string;\r\n @Input() preventSpecailChar!: boolean;\r\n @Input() maxLength: number | string;\r\n\r\n /**\r\n * A mapping function that modifies the input value during typing, pasting, or dropping text.\r\n * You can use it to modify the full input value **before it appears** (e.g., for auto-capitalization,\r\n * formatting, or custom replacements).\r\n *\r\n * This function is called:\r\n * - On each **key press**, to determine how the input value should change when a character is typed.\r\n * - On **paste**, to transform the pasted content before it’s applied.\r\n * - On **drop**, to transform the dropped text before it’s applied.\r\n * \r\n * **Built-in mappers are available via the `InputMappers` utility class:**\r\n *\r\n * - `InputMappers.toUpperCase` — Transforms all input to UPPERCASE.\r\n * - `InputMappers.toLowerCase` — Transforms all input to lowercase.\r\n *\r\n * @param char - The character(s) being inserted. This is:\r\n * - A single character (e.g., `'a'`) during typing.\r\n * - The full pasted string during paste events.\r\n * - The full dropped string during drop events.\r\n * @param currentValue - The current value of the input **before** the change is applied.\r\n * @param nextValue - The simulated value of the input **after** the character, paste, or drop is inserted, but before transformation.\r\n *\r\n * @returns The final string to use as the new input value.\r\n * \r\n * @example\r\n * // Use a built-in mapper to force UPPERCASE input:\r\n * this.mapFn = InputMappers.toUpperCase;\r\n *\r\n * @example\r\n * // Custom mapper: Capitalize the first letter of each word\r\n * this.mapFn = (char, current, next) =>\r\n * typeof next === 'string' ? next.replace(/\\b\\w/g, c => c.toUpperCase()) : next;\r\n */\r\n @Input() mapFn: InputMapFn;\r\n\r\n /**\r\n * A filtering function that determines whether a character or string should be allowed into the input.\r\n *\r\n * This function is called during:\r\n * - **Typing**: When a key is pressed to decide if the character should be accepted.\r\n * - **Paste**: When text is pasted to decide if the entire pasted string should be accepted.\r\n * - **Drop**: When text is dropped into the input to decide if it should be allowed.\r\n *\r\n * You can use it to reject unwanted characters (e.g. numbers, symbols) or block input entirely based\r\n * on the current or predicted value.\r\n * \r\n * **Built-in filters are available via the `InputFilters` utility class:**\r\n *\r\n * - `InputFilters.arabicOnly` — Allows Arabic letters and digits, as well as common symbols.\r\n * - `InputFilters.englishOnly` — Allows English letters and digits, as well as common symbols.\r\n * - `InputFilters.digitsOnly` — Allows digits only (`0–9`), no letters or symbols.\r\n * - You can also use `InputFilters.buildPattern()` to define a custom filter.\r\n *\r\n * @param char - The character(s) being inserted:\r\n * - A single typed character (e.g., `'a'`) during key presses\r\n * - The full pasted or dropped string during paste/drop\r\n * @param currentValue - The current value of the input before the character or string is applied.\r\n * @param nextValue - The simulated next value if the character or string were applied.\r\n * @param event - The originating event triggering the input change. This can be a\r\n * `KeyboardEvent` (for typing), `ClipboardEvent` (for paste), or `DragEvent` (for drop).\r\n *\r\n * @returns `true` to allow the input, or `false` to block it.\r\n *\r\n *\r\n * @example\r\n * // Use a built-in filter to restrict to digits only\r\n * this.filterFn = InputFilters.digitsOnly;\r\n *\r\n * @example\r\n * // Custom filter: Allow only letters (no numbers or symbols)\r\n * this.filterFn = (char, current, next, event) => {\r\n * return /^[a-zA-Z]+$/.test(char);\r\n * };\r\n */\r\n @Input() filterFn: InputFilterFn;\r\n\r\n destroyRef = inject(DestroyRef);\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n}\r\n","@if(!isReadOnly){\r\n <ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-form-field class=\"custom-textarea bordered-input {{className}}\">\r\n <mat-label>{{ label }}</mat-label>\r\n <label class=\"mat-form-content\">\r\n <textarea \r\n #textarea \r\n [placeholder]=\"placeholder || (label ? ('enter' | translate) + ' ' + label : '')\"\r\n [value]=\"value\"\r\n (input)=\"setValue(textarea.value)\" \r\n (blur)=\"onTouchedFn()\" \r\n matInput\r\n inputMapFilter\r\n [mapFn]=\"mapFn\"\r\n [filterFn]=\"filterFn\"\r\n [maxLength]=\"maxLength\"\r\n >\r\n </textarea>\r\n </label>\r\n @if (showHint){\r\n <mat-hint class=\"d-flex align-items-center gap-1 mt-1\">\r\n <span class=\"sfi sfi-info fs-17 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n @if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n\r\n </ng-container>\r\n}\r\n@if (isReadOnly && control.value && (showIfEmpty || control)){\r\n <ng-container>\r\n <app-info-item class=\"info-item w-100\" [insideTable]=\"insideTable\" [label]=\"label\" [value]=\"control?.value\" [type]=\"type\"></app-info-item>\r\n </ng-container>\r\n}\r\n","import {Component, Input, Output, EventEmitter, forwardRef, inject, DestroyRef} from '@angular/core';\r\nimport {MatButtonToggle, MatButtonToggleGroup} from \"@angular/material/button-toggle\";\r\nimport {SatPopoverModule} from \"@ncstate/sat-popover\";\r\nimport {ControlValueAccessorDirective} from '../control-value-accessor.directive';\r\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {Shareds} from '../shared-imports';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-toggle-button',\r\n templateUrl: './toggle-button.component.html',\r\n styleUrls: ['./toggle-button.component.scss'],\r\n imports: [\r\n MatButtonToggleGroup,\r\n MatButtonToggle,\r\n SatPopoverModule,\r\n ...Shareds\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ToggleButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true\r\n})\r\nexport class ToggleButtonComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() className = 'bordered-input';\r\n @Input() data!: any[];\r\n @Output() onChange = new EventEmitter();\r\n @Input() error!: string;\r\n @Input() optionAr!: string;\r\n @Input() optionEn!: string;\r\n @Input() hasHint = false;\r\n @Input() options: any[];\r\n @Input() displayedLabel: string = 'description';\r\n @Input() key: string = 'value';\r\n destroyRef = inject(DestroyRef);\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n this.toggleButtonControl.setValue(this.control.value?.key)\r\n\r\n this.toggleButtonControl.valueChanges.subscribe((ctrlValue) => {\r\n if (ctrlValue?.key) {\r\n this.toggleButtonControl.setValue(ctrlValue?.key)\r\n }\r\n }\r\n )\r\n }\r\n\r\n setToggelButtonValue(hasHint: boolean, hintSection: any, item: any) {\r\n hasHint ? hintSection?.toggle() : null\r\n this.control.setValue({key: item[this.key], value: item[this.displayedLabel]})\r\n this.toggleButtonControl.setValue(item[this.key]);\r\n }\r\n}\r\n","@if(!isReadOnly){\r\n <ng-container>\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n\r\n @if(options){\r\n <mat-button-toggle-group class=\"Toggle__buttons d-flex align-items-center gap-3\" [value]=\"toggleButtonControl.value\" [formControl]=\"toggleButtonControl\"\r\n aria-label=\"Font Style\" [multiple]=\"multiple\">\r\n @for(item of options; track item){\r\n <mat-button-toggle (click)=\"setToggelButtonValue(hasHint, hintSection, item)\" [value]=\"item[key]\" [satPopoverAnchor]=\"hintSection\">\r\n <span>\r\n {{item[displayedLabel]}}\r\n </span>\r\n <sat-popover #hintSection [hasBackdrop]=\" true\" verticalAlign=\"below\">\r\n <div class=\"default-tooltip\">\r\n <p class=\"m-0\" [innerHTML]=\"item[displayedLabel]\"></p>\r\n </div>\r\n </sat-popover>\r\n </mat-button-toggle>\r\n }\r\n\r\n </mat-button-toggle-group>\r\n }\r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly && toggleButtonControl.value){\r\n <ng-container>\r\n <app-info-item class=\"info-item w-100\" [insideTable]=\"insideTable\" [type]=\"'toggleBtn'\" [label]=\"label\" [value]=\"control.value?.value\"></app-info-item>\r\n </ng-container>\r\n\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/component-selector */\r\n/* eslint-disable @typescript-eslint/no-empty-function */\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA, Input} from '@angular/core';\r\nimport {NgClass, NgForOf, NgIf} from \"@angular/common\";\r\nimport {SatPopoverModule} from \"@ncstate/sat-popover\";\r\n\r\n@Component({\r\n selector: 'app-repeated-list',\r\n templateUrl: './repeated-list.component.html',\r\n styleUrls: ['./repeated-list.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n NgForOf,\r\n SatPopoverModule,\r\n NgClass,\r\n NgIf\r\n ]\r\n})\r\nexport class RepeatedListComponent {\r\n @Input() listOfItems: any;\r\n @Input() type = ''; // users-avatar, categories\r\n constructor() { }\r\n\r\n getImage(email: string) {\r\n return \"/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=\" + email;\r\n }\r\n\r\n\r\n}\r\n","<div class=\"{{type}}\">\r\n <ng-container *ngFor=\"let item of listOfItems; let i = index\">\r\n <div class=\"item\" *ngIf=\"i <= 1\">\r\n <span class=\"img-card circled-img x-small\" *ngIf=\"item.image\">\r\n <img [src]=\"item.image\" [alt]=\"item.personName\">\r\n </span>\r\n <span class=\"name font-12\">\r\n {{item.personName}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n\r\n <span class=\"text-color-onyx font-14 font-weight-medium cursor-pointer more\" *ngIf=\"listOfItems.length > 2\"\r\n [satPopoverAnchor]=\"tooltipOfItems\" (mouseenter)=\"tooltipOfItems.open()\" (mouseleave)=\"tooltipOfItems.close()\">\r\n {{listOfItems.length - 2 !== 0 ? '+' + (listOfItems.length - 2) : ''}}\r\n </span>\r\n <sat-popover #tooltipOfItems horizontalAlign=\"center\" verticalAlign=\"above\">\r\n <div class=\"border bg-color-white\">\r\n <div class=\"d-flex align-items-center border-bottom p-2\" [ngClass]=\"{'border-0': last}\"\r\n *ngFor=\"let item of listOfItems; let i = index; let last = last\">\r\n <span class=\"img-card circled-img x-small\" *ngIf=\"item.image\">\r\n <img [src]=\"item.image\" [alt]=\"item.personName\">\r\n </span>\r\n <span class=\"mx-1\" *ngIf=\"item.image\"></span>\r\n <span class=\"name font-12\">\r\n {{item.personName}}\r\n </span>\r\n\r\n </div>\r\n </div>\r\n </sat-popover>\r\n\r\n\r\n</div>\r\n","/* eslint-disable @angular-eslint/use-lifecycle-interface */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport {CUSTOM_ELEMENTS_SCHEMA, EventEmitter} from '@angular/core';\r\nimport {BaseComponent} from './../base-component/base-component.component';\r\nimport {Component, Input, Output} from '@angular/core';\r\nimport {MatTableDataSource, MatTableModule} from '@angular/material/table';\r\nimport {MatPaginatorModule} from '@angular/material/paginator';\r\nimport {DatePipe, NgClass, NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault} from \"@angular/common\";\r\nimport {RouterLink} from \"@angular/router\";\r\nimport {RepeatedListComponent} from \"../repeated-list/repeated-list.component\";\r\nimport {MatButton} from \"@angular/material/button\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\n\r\n// import { ConfirmationPopupComponent } from '../../confirmation-popup/confirmation-popup.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-table-list',\r\n templateUrl: './table-list.component.html',\r\n styleUrls: ['./table-list.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n MatPaginatorModule,\r\n MatTableModule,\r\n NgForOf,\r\n NgClass,\r\n NgSwitchCase,\r\n RouterLink,\r\n NgSwitch,\r\n NgIf,\r\n DatePipe,\r\n RepeatedListComponent,\r\n MatButton,\r\n MatMenu,\r\n MatMenuTrigger,\r\n MatMenuItem,\r\n NgSwitchDefault\r\n ]\r\n})\r\nexport class TableListComponent extends BaseComponent {\r\n @Input() columns: any;\r\n @Input() columnsConfig: any;\r\n @Input() rows: any;\r\n @Input() actions: any = [];\r\n @Input() totalRecords !: number;\r\n @Input() className = '';\r\n public dataSource = new MatTableDataSource<any>();\r\n @Output() pageChanged: EventEmitter<any> = new EventEmitter();\r\n @Output() buttonAction: EventEmitter<any> = new EventEmitter();\r\n @Output() emitDataRow: EventEmitter<any> = new EventEmitter();\r\n\r\n // constructor(public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n this.dataSource.data = this.rows;\r\n }\r\n\r\n truncateName(text: string) {\r\n if (text) {\r\n const characters = text.match(/\\b(\\w)/g);\r\n if (characters) {\r\n return characters.join('');\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n onPageChange(event: any) {\r\n this.pageChanged.emit(event)\r\n }\r\n\r\n\r\n delete(): void {\r\n // const dialogRef = this.dialog.open(ConfirmationPopupComponent, {\r\n // width: '700px',\r\n // panelClass: ['confirm-popup', 'main-popup'],\r\n // data: {\r\n // title: 'Delete Match',\r\n // message: 'Are you sure you want delete',\r\n // confirmText: 'match making example name',\r\n // moreText: '',\r\n // type: 'delete',\r\n // icon: 'delete-match',\r\n // }\r\n // });\r\n\r\n // dialogRef.afterClosed().subscribe(() => {\r\n // // closed\r\n // });\r\n }\r\n\r\n buttonClicked(element, fn: string, $event: MouseEvent) {\r\n\r\n }\r\n\r\n selectedRow(row) {\r\n\r\n }\r\n\r\n getSlaColor(value: any, max: number) {\r\n\r\n }\r\n\r\n sentBack() {\r\n\r\n }\r\n}\r\n","<div class=\"overflow-auto\">\r\n <!-- #table (scroll)=\"onPageChange($event)\" -->\r\n <ng-container >\r\n <!-- (matSortChange)=\"sortData($event)\" -->\r\n <table mat-table [dataSource]=\"dataSource\" class=\"primary-table {{className}}\" matSort >\r\n <ng-container *ngFor=\"let column of columns; let i = index;\">\r\n <ng-container [matColumnDef]=\"column\">\r\n <th mat-header-cell *matHeaderCellDef [ngClass]=\"{'last-column' : columnsConfig[i].type === 'actions', 'sortArrow': columnsConfig[i]?.sortName?.length }\" mat-sort-header>\r\n {{i18n.translate(columnsConfig[i].label)}} </th>\r\n \r\n <td mat-cell [ngClass]=\"{'account-disabled': element?.user?.disabledCleanUp===true}\" *matCellDef=\"let element\">\r\n <ng-container [ngSwitch]=\"columnsConfig[i].type\" *ngIf=\"rows.length\">\r\n <a [ngClass]=\"columnsConfig[i].type\" [href]=\"element[column]\" *ngSwitchCase=\"'link'\">\r\n {{ element[column] }}\r\n </a>\r\n \r\n <a [ngClass]=\"columnsConfig[i].type\" [routerLink]=\"[element.id]\" [href]=\"element[column]\"\r\n *ngSwitchCase=\"'rout'\">\r\n {{ element[column] }}\r\n </a>\r\n \r\n <span class=\"d-inline-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'date'\">\r\n <span class=\"sfi sfi-clock text-color-coral\" *ngIf=\"!loading\"></span>\r\n <span class=\"mx-2\">\r\n <!-- {{ element?.Date.from }}\r\n <ng-container *ngIf=\"element?.Date.to\">\r\n : {{ element?.Date.to }}\r\n </ng-container> -->\r\n {{ element[column] | date: 'dd/MM/YYYY' }}\r\n </span>\r\n </span>\r\n \r\n <div class=\"d-inline-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'sla'\">\r\n <app-sla [value]=\"element?.SLA.value\" [maxValue]=\"element?.SLA.max\" [canvasScale]=\"45\"\r\n [outerLineColor]=\"getSlaColor(element?.SLA.value, element?.SLA.max)\"></app-sla>\r\n </div>\r\n \r\n <div class=\"img-card table-img\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'image'\">\r\n <img [src]=\"element?.image\" alt=\"\">\r\n </div>\r\n \r\n <span class=\"{{ element[column].type }}\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'status'\">\r\n {{ element[column].label }}\r\n </span>\r\n \r\n \r\n <div class=\"d-flex mx-n1\" *ngSwitchCase=\"'RequestType'\">\r\n <div class=\"request-type mx-1 {{item.status}}\" *ngFor=\"let item of element?.RequestType\">\r\n {{ item.label }}\r\n <span class=\"mx-1\" *ngIf=\"item.status === 'need-action'\"></span>\r\n <span class=\"sfi sfi-info \" *ngIf=\"item.status === 'need-action'\"></span>\r\n </div>\r\n </div>\r\n \r\n \r\n <span class=\"{{ element[column].type }} {{ element[column] ? 'text-color-coral underline' : '' }}\"\r\n [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'number'\">\r\n {{ element[column] ? element[column] : '-' }}\r\n </span>\r\n \r\n <div class=\"text-nowrap d-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\"\r\n *ngSwitchCase=\"'group'\">\r\n <span>{{element?.Group.groupName}}</span>\r\n <span class=\"mx-2\"></span>\r\n <app-repeated-list type=\"users-avatar\" [listOfItems]=\"element?.Group.users\"></app-repeated-list>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center gap-2\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'user'\">\r\n <span class=\"img-card circled-img small\" *ngIf=\"!loading\">\r\n <img src=\"{{'data:image/png;base64,' + element?.user?.personalPhoto}}\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </span>\r\n <div class=\"d-flex flex-column\">\r\n <span class=\"font-14 font-weight-medium\">{{element?.user?.name}}</span>\r\n <span class=\"font-12 font-weight-normal text-color-dark-gray mt-1\">{{element?.user?.email}}</span>\r\n </div>\r\n </div>\r\n \r\n \r\n <div class=\"delegate d-flex align-items-center\" [ngClass]=\"columnsConfig[i].type\"\r\n *ngSwitchCase=\"'assigned'\">\r\n <div class=\"img-card x-small circled-img\">\r\n <img [src]=\"element?.AssignedTo.image\" alt=\"\">\r\n </div>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"font-14 font-weight-medium text-color-onyx\">{{element?.AssignedTo.name}}</span>\r\n <span class=\"sfi sfi-close text-color-coral\"></span>\r\n </div>\r\n \r\n \r\n <ng-container *ngSwitchCase=\"'statusAction'\">\r\n <div class=\"table-action\">\r\n \r\n <div class=\"count-down mx-n1\" *ngIf=\"element[column] === 'need-action'\">\r\n <div class=\"item mx-1\">\r\n <span class=\"font-12 font-weight-medium text-color-onyx d-block\">01</span>\r\n <span class=\"font-8 font-weight-light text-color-onyx d-block\">Days</span>\r\n </div>\r\n <div class=\"item mx-1\">\r\n <span class=\"font-12 font-weight-medium text-color-onyx d-block\">18</span>\r\n <span class=\"font-8 font-weight-light text-color-onyx d-block\">Hours</span>\r\n </div>\r\n <div class=\"item mx-1\">\r\n <span class=\"font-12 font-weight-medium text-color-onyx d-block\">44</span>\r\n <span class=\"font-8 font-weight-light text-color-onyx d-block\">Mins</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center\" *ngIf=\"element[column] === 'approved'\">\r\n <span class=\"status approved\">\r\n Approved\r\n </span>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center\" *ngIf=\"element[column] === 'sent-back'\">\r\n <span class=\"status rejected\">\r\n Sent Back\r\n </span>\r\n <span class=\"mx-2\"></span>\r\n <button mat-stroked-button class=\"btn button-primary square br-w-1 font-14 font-weight-medium\"\r\n (click)=\"sentBack()\">\r\n <span class=\"sfi sfi-chat-o\"></span>\r\n </button>\r\n </div>\r\n \r\n <div class=\"d-flex align-items-center\" *ngIf=\"element[column] === 'pending'\">\r\n <span class=\"status pending\">\r\n Pending\r\n </span>\r\n <span class=\"mx-2\"></span>\r\n \r\n <div class=\"d-flex align-items-center mx-n1\">\r\n <div class=\"img-card circled-img x-small mx-1\">\r\n <img [src]=\"element?.pendingWith.image\" alt=\"\">\r\n </div>\r\n \r\n <div class=\"d-flex flex-column mx-1\">\r\n <span class=\"font-8 font-weight-medium text-color-yellow text-nowrap\">Pending With</span>\r\n <span class=\"font-11 font-weight-medium text-nowrap\">{{element?.pendingWith.name}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n \r\n </div>\r\n </ng-container>\r\n \r\n \r\n <ng-container *ngSwitchCase=\"'actions'\">\r\n \r\n <div class=\"d-flex justify-content-between mx-n2\">\r\n <ng-container *ngFor=\"let action of element[column]\">\r\n \r\n <div class=\"flex-grow-1\">\r\n <ng-container *ngIf=\"action.type.buttonType === 'stroked'\">\r\n <button mat-stroked-button (click)=\"buttonClicked(element,action.fn, $event)\"\r\n class=\"btn button-{{action.type.buttonClass}} mx-2\">\r\n {{action.label}}\r\n </button>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"action.type.buttonType === 'flat'\">\r\n <button mat-flat-button (click)=\"buttonClicked(element,action.fn, $event)\"\r\n class=\"btn button-{{action.type.buttonClass}} mx-2\">\r\n {{action.label}}\r\n </button>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"action.type.buttonType === 'icon'\">\r\n <button mat-icon-button (click)=\"buttonClicked(element,action.fn, $event)\"\r\n class=\"btn button-{{action.type.buttonClass}} mx-2\">\r\n <span class=\"sfi sfi-{{action.type.icon}}\"></span>\r\n </button>\r\n </ng-container>\r\n </div>\r\n \r\n <ng-container *ngIf=\"action.type.buttonType === 'all'\">\r\n <button mat-icon-button class=\"btn button-transparent square medium mx-2 text-end\"\r\n [matMenuTriggerFor]=\"menuAction\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"sfi sfi-dots text-color-onyx\"></span>\r\n </button>\r\n <mat-menu #menuAction=\"matMenu\" xPosition=\"before\" class=\"actions-menu\">\r\n <button *ngIf=\"!element?.user?.email && element?.user?.disabledCleanUp!==true\" mat-menu-item class=\"text-color-onyx font-12\"\r\n (click)=\"buttonClicked(element,'CreateEmail', $event)\">\r\n {{i18n.translate('createEmail')}} \r\n </button>\r\n <button *ngIf=\"element?.user?.email && element?.user?.enabled==='true'\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'DisableEmail', $event)\">\r\n {{ i18n.translate('disableEmail')}}\r\n </button>\r\n <button *ngIf=\"element?.user?.email && element?.user?.disabledCleanUp===true\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'EnableEmail', $event)\">\r\n {{ i18n.translate('enableEmail')}}\r\n </button>\r\n <button *ngIf=\"element?.user!==null && element?.user?.disabledCleanUp!==true\" mat-menu-item class=\"text-color-onyx font-12\"\r\n (click)=\"buttonClicked(element,'CreateEntryPermission', $event)\">\r\n {{ i18n.translate('createCEP')}}\r\n </button>\r\n <!-- <button *ngIf=\"!element?.user?.email\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'DisableEntryPermission', $event)\">\r\n {{i18n.translate('disableEntryPermission')}}\r\n </button> -->\r\n <button *ngIf=\"!element?.user?.email && element?.user?.disabledCleanUp!==true\" mat-menu-item class=\"text-color-red font-12\"\r\n (click)=\"buttonClicked(element,'DeleteAccount', $event)\">\r\n {{i18n.translate('deleteAccount')}}\r\n </button>\r\n\r\n <button *ngIf=\"element?.user?.email && element?.user?.disabledCleanUp!==true\" [disabled]=\"!element?.mailExtensionAllowed\" mat-menu-item class=\"text-color-onyx font-12\"\r\n (click)=\"buttonClicked(element,'ExtendAccount', $event)\">\r\n {{ i18n.translate('extendAccount')}}\r\n </button>\r\n <button mat-menu-item class=\"text-color-onyx font-12\" *ngIf=\"element?.user?.disabledCleanUp!==true\" (click)=\"buttonClicked(element,'update', $event)\">\r\n {{ i18n.translate('updateEmploymentInformation')}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n \r\n <span class=\"text-nowrap\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchDefault>\r\n {{ element[column] }}\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"loading\">\r\n <span class=\" d-block loading-bg\"></span>\r\n </ng-container>\r\n \r\n </td>\r\n \r\n \r\n </ng-container>\r\n </ng-container>\r\n \r\n <tr mat-header-row *matHeaderRowDef=\"columns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columns;\" class=\"cursor-pointer\" (click)=\"selectedRow(row)\"></tr>\r\n </table>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"loading\">\r\n <span>loading...</span>\r\n </ng-container> -->\r\n <!-- <ng-container *ngIf=\"loading\">-->\r\n <!-- <td *matCellDef=\"let element\" >loading....</td>-->\r\n <!-- </ng-container>-->\r\n <!--{{this.rows | json}}-->\r\n \r\n<!-- <app-no-data-placeholder *ngIf=\"noData && !loading\" [noDataPlaceholder]=\"noDataObj\"></app-no-data-placeholder> -->\r\n\r\n <mat-paginator [pageSize]=\"10\" [length]=\"totalRecords\" (page)=\"onPageChange($event)\" \r\n [pageSizeOptions]=\"[5, 10, 25, 100]\" aria-label=\"Select page of users\"></mat-paginator>\r\n <!-- style-paginator -->\r\n <!-- showFirstLastButtons -->\r\n</div>","import {DeleteDialogComponent} from '../../dialogs/delete-dialog/delete-dialog.component';\r\nimport {NoopScrollStrategy} from '@angular/cdk/overlay';\r\nimport {\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport * as FileSaver from 'file-saver';\r\nimport {DocumentFile} from '../../../../interfaces';\r\nimport {FormGroup, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {NgClass, NgTemplateOutlet} from \"@angular/common\";\r\nimport {MatError, MatHint} from \"@angular/material/form-field\";\r\nimport {ControlValueAccessorDirective} from '../control-value-accessor.directive';\r\nimport {MatDialog} from '@angular/material/dialog';\r\nimport {MatTooltip} from \"@angular/material/tooltip\";\r\nimport {FormLabelComponent} from '../form-label/form-label.component';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {TranslatePipe} from \"../../../../pipes/translate.pipe\";\r\n\r\n\r\n@Component({\r\n selector: 'app-file-uploader',\r\n templateUrl: './docs-uploader.component.html',\r\n styleUrls: ['./docs-uploader.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n MatError,\r\n NgTemplateOutlet,\r\n MatHint,\r\n MatTooltip,\r\n FormLabelComponent,\r\n TranslatePipe\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DocsUploaderComponent),\r\n multi: true,\r\n },\r\n ]\r\n})\r\nexport class DocsUploaderComponent<Type> extends ControlValueAccessorDirective<Type> implements OnInit, OnChanges {\r\n maxSizeFlag = true;\r\n maxSizeValue: any;\r\n wrongExtensionFlag = true;\r\n @Input() useCrop: boolean;\r\n @Input() formKey!: string;\r\n @Input() showLabel = true;\r\n @Input() downloadLink = false;\r\n @Input() showActions = true;\r\n @Input() styleHeight = ''; // medium, mini\r\n @Input() fileInputHeight = ''; // medium, mini\r\n @Input() styleWidth = '6';\r\n @Input() hints!: any;\r\n @Input() allowedExtensions = '';\r\n @Input() callApi: boolean = true;\r\n @Input() display = '';\r\n validExtension = true;\r\n @Input() attachType = '';\r\n @Input() error!: string;\r\n @Input() displayedFiles: DocumentFile[] = [];\r\n @Output() selectedTemplateAttachment = new EventEmitter();\r\n fileNotDuplicated = true;\r\n allowedFileSize = true;\r\n @Input() getDataFromTemplate = false;\r\n @Input() allowFileContentsWithMultiAttachments = false;\r\n @Input() accept: string[];\r\n filesize: string;\r\n wrongFile = {\r\n mimeType: \"\",\r\n fileContents: \"\",\r\n fileName: this.i18n.language == 'ar' ? \"امتداد الملف خاطىء\" : \"Wrong File Extension\",\r\n name: this.i18n.language == 'ar' ? \"امتداد الملف خاطىء\" : \"Wrong File Extension\"\r\n }\r\n @Input() allAttachments = [];\r\n\r\n uploadForm: FormGroup;\r\n @Input() signType = 'Sign';\r\n @Input() customDownload: boolean;\r\n @Input() showSignButton = false;\r\n @Input() printType = 'Print';\r\n @Input() showPrintButton = false;\r\n @Input() downloadType = 'Download';\r\n @Input() showDownloadButton = false;\r\n @Input() preventFileContents = false;\r\n @Output() addSignatureClicked = new EventEmitter();\r\n @Output() printActionClicked = new EventEmitter();\r\n @Output() emitedValue = new EventEmitter();\r\n @Output() downloadActionClicked = new EventEmitter();\r\n @Input() maxSize = '10';\r\n @ViewChild('inputFile') inputFile: ElementRef;\r\n dialog: MatDialog = inject(MatDialog)\r\n destroyRef = inject(DestroyRef);\r\n @Input() maxLength: number | string;\r\n\r\n private readonly validImageTypes = {\r\n jpg: ['image/jpeg', 'image/pjpeg'],\r\n JPG: ['image/jpeg', 'image/pjpeg'],\r\n jpeg: ['image/jpeg', 'image/pjpeg'],\r\n png: ['image/png']\r\n }\r\n\r\n validImgPdfTypes = {\r\n pdf: ['application/pdf'],\r\n jpg: ['image/jpeg', 'image/pjpeg'],\r\n JPG: ['image/jpeg', 'image/pjpeg'],\r\n jpeg: ['image/jpeg', 'image/pjpeg'],\r\n bmp: ['image/bmp', 'image/x-windows-bmp'],\r\n png: ['image/png']\r\n }\r\n\r\n validFileTypes = {\r\n 'pdf': ['application/pdf'],\r\n 'doc': ['application/msword'],\r\n 'docx': ['application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\r\n 'ppt': ['application/vnd.ms-powerpoint'],\r\n 'pptx': ['application/vnd.openxmlformats-officedocument.presentationml.presentation'],\r\n 'pps': ['application/vnd.ms-powerpoint'],\r\n 'ppsx': ['application/vnd.openxmlformats-officedocument.presentationml.slideshow'],\r\n 'odt': ['application/vnd.oasis.opendocument.text'],\r\n 'xls': ['application/vnd.ms-excel'],\r\n 'xlsx': ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\r\n 'zip': ['application/zip', 'application/x-zip-compressed', 'multipart/x-zip', 'application/zip'],\r\n 'msg': ['application/vnd.ms-outlook', 'application/msg'],\r\n 'csv': ['text/csv'],\r\n 'txt': ['text/plain'],\r\n 'rtf': ['application/rtf', 'application/x-rtf', 'text/richtext'],\r\n 'html': ['text/html'],\r\n // 'mp4': ['video/mp4'],\r\n // 'm4v': ['video/mp4'],\r\n 'mov': ['video/quicktime'],\r\n 'wmv': ['video/x-ms-wmv'],\r\n // 'avi': ['video/x-msvideo'],\r\n 'mpg': ['mpg'],\r\n 'rmvb': ['rmvb'],\r\n // 'ogv': ['video/ogg'],\r\n // '3gp': ['video/3gpp', 'audio/3gpp'],\r\n // '3g2': ['video/3gpp2', 'audio/3gpp'],\r\n 'jpg': ['image/jpeg', 'image/pjpeg'],\r\n 'jpeg': ['image/jpeg', 'image/pjpeg'],\r\n 'png': ['image/png'],\r\n 'gif': ['image/gif'],\r\n 'bmp': ['image/bmp', 'image/x-windows-bmp']\r\n }\r\n\r\n\r\n private readonly validPdfTypes = {\r\n 'pdf': ['application/pdf'],\r\n }\r\n uploading: boolean;\r\n lengthError: boolean;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.attachments?.length) {\r\n this.allAttachments = [...this.attachments];\r\n }\r\n }\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.reset();\r\n }\r\n });\r\n }\r\n\r\n getFileType(attachment: any): string {\r\n if (!attachment.fileName?.includes('.') && attachment.mimeType.includes('.')) {\r\n return this.checkFileType(attachment.mimeType);\r\n } else if (attachment.fileName) {\r\n return this.checkFileType(attachment.fileName);\r\n } else {\r\n return attachment.mimeType;\r\n }\r\n }\r\n\r\n private checkFileType(attachmentData: string): string {\r\n if (attachmentData.split('.').pop() == 'msg') {\r\n return 'email-icon'\r\n } else if (attachmentData.split('.').pop() == 'jpeg') {\r\n return 'jpg'\r\n } else if (attachmentData.split('.').pop() == 'xlsx' || attachmentData.split('.').pop() == 'xls') {\r\n return 'application/vnd.ms-excel;charset=utf-8';\r\n }\r\n return attachmentData.split('.').pop();\r\n }\r\n\r\n attachmentAction(type: any, index: number, field: any) {\r\n if (type == \"download\") {\r\n if (this.downloadLink) {\r\n window.open(field?.attachmentId, '_blank', 'top=0,left=0,height=auto,width=auto');\r\n } else if (field?.attachmentId) {\r\n this.downloadFile(type, field);\r\n } else if (field?.fileContents) {\r\n this.downloadFileNew(field);\r\n }\r\n }\r\n if (type == \"delete\") {\r\n if (this.validExtension) {\r\n if (this.multiple) {\r\n this.confirmDelete(index)\r\n } else {\r\n this.removeAttachedFile()\r\n }\r\n } else {\r\n this.validExtension = true;\r\n }\r\n }\r\n }\r\n\r\n confirmDelete(index: number) {\r\n const dialogRef = this.dialog.open(DeleteDialogComponent, {\r\n panelClass: ['main-popup', 'confirm-dialog'],\r\n scrollStrategy: new NoopScrollStrategy(),\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((returnValue) => {\r\n if (returnValue == 'yes') {\r\n this.removeMulti(index)\r\n }\r\n });\r\n }\r\n\r\n removeMulti(index: number) {\r\n this.displayedFiles.splice(index, 1);\r\n this.allAttachments.splice(index, 1);\r\n this.lengthError = this.displayedFiles?.length >= +this.maxLength;\r\n if(this.displayedFiles?.length==0){\r\n this.reset();\r\n }\r\n }\r\n\r\n downloadFileNew(fileData: any) {\r\n const fileType = this.getFileType(fileData);\r\n const blob = new Blob([fileData.fileContents], {type: fileType});\r\n FileSaver.saveAs(blob, `${fileData.fileName}`);\r\n }\r\n\r\n onValueChange(event: any) {\r\n const input = event.target;\r\n if(!this.multiple) this.reset();\r\n if (input?.files?.length > 0) {\r\n this.handleFileInput(input);\r\n this.processUploadedFile(input);\r\n }\r\n }\r\n\r\n private handleFileInput(input: any): void {\r\n if (input.files && this.formKey === 'TSV') {\r\n this.selectedTemplateAttachment.emit(input.files[0]);\r\n }\r\n\r\n const file: File = input.files[0];\r\n let fileType = file.name?.endsWith(\".msg\") ? 'application/vnd.ms-outlook' : file.type;\r\n\r\n if (this.accept?.length && !this.accept.includes(fileType)) {\r\n alert(this.i18n.translate('thisIsInvalidFile'));\r\n return;\r\n }\r\n\r\n this.uploadForm?.get('file')?.setValue(file);\r\n this.uploadForm?.get('name')?.setValue(file?.name);\r\n }\r\n\r\n private processUploadedFile(input: any): void {\r\n if (!this.uploading) {\r\n const fileData = new FileInfo(\r\n input.files[0].name,\r\n input.files[0].name,\r\n input.files[0].type,\r\n '',\r\n this.filesize\r\n );\r\n this.updateFileProperties(input, fileData);\r\n if (!this.lengthError && +this.filesize < +this.maxSize) {\r\n this.allowedFileSize = true;\r\n this.uploadValidAndNonDuplicateFile(input, fileData);\r\n } else {\r\n this.allowedFileSize = +this.filesize < +this.maxSize;\r\n }\r\n\r\n input.value = '';\r\n }\r\n }\r\n\r\n private updateFileProperties(input: any, fileInfo: FileInfo): void {\r\n this.maxSizeValue = this.maxSize ? this.maxSize : 1;\r\n this.filesize = ((input.files[0].size / 1024) / 1024).toFixed(4);\r\n this.maxSizeFlag = +this.filesize < +this.maxSize;\r\n this.lengthError = this.displayedFiles?.length >= +this.maxLength;\r\n this.wrongExtensionFlag = this.isValidMimeType(input.files[0].type);\r\n this.validExtension = this.isValidExtension(input.files[0].name.split('.').pop(), this.type);\r\n this.value = fileInfo;\r\n }\r\n\r\n private uploadValidAndNonDuplicateFile(input: any, fileData: FileInfo): void {\r\n if (this.validExtension) {\r\n if (this.getDataFromTemplate) this.selectedTemplateAttachment.emit(input);\r\n this.readFileAndUpload(input.files[0], fileData);\r\n } else if (!this.multiple) {\r\n this.emitEmptyFile();\r\n }\r\n }\r\n\r\n private readFileAndUpload(file: File, fileInfo: FileInfo): void {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const fileContents = (reader.result as string).split(',')[1];\r\n fileInfo.fileContents = fileContents;\r\n fileInfo.filesize = this.filesize;\r\n if (!this.multiple) {\r\n this.uploadSingleFile(fileContents, fileInfo);\r\n } else if (this.isFileNotDuplicate(fileInfo)) {\r\n this.addMultiAttachments(fileInfo);\r\n }\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n private uploadSingleFile(fileContents: string, fileInfo: FileInfo): void {\r\n this.fileNotDuplicated = this.isFileNotDuplicate(fileInfo);\r\n if (!this.fileNotDuplicated) {\r\n return;\r\n }\r\n this.value.fileContents = fileContents;\r\n if (this.callApi) {\r\n this.addAttachments()\r\n } else {\r\n this.updateValue(this.value);\r\n this.selectedTemplateAttachment.emit(this.value);\r\n }\r\n }\r\n\r\n private emitEmptyFile(): void {\r\n const emptyObj = {\r\n mimeType: \"\",\r\n fileContents: \"\",\r\n fileName: \"\",\r\n }\r\n this.updateValue(emptyObj)\r\n this.selectedTemplateAttachment.emit(null);\r\n }\r\n\r\n processAttachments(field: any, allowMultiAttachments: boolean) {\r\n const data = {\r\n \"fileDescription\": \"\",\r\n \"attachmentcomment\": \"\",\r\n \"fileName\": field.fileName,\r\n \"mimeType\": field.mimeType,\r\n \"fileContents\": field.fileContents,\r\n }\r\n this.uploading = true;\r\n this.coreService.getAttachments(data).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe({\r\n next: (form: any) => {\r\n const newObj = {\r\n \"fileName\": field.fileName,\r\n \"attachmentId\": form.attachment.attachmentId,\r\n \"mimeType\": form.attachment.mimeType,\r\n // \"fileContents\": field.fileContents\r\n }\r\n if (allowMultiAttachments) {\r\n if (this.allowFileContentsWithMultiAttachments) newObj['fileContents'] = field.fileContents;\r\n this.displayedFiles = this.displayedFiles?.length ? this.displayedFiles : []\r\n this.displayedFiles.push(newObj);\r\n this.allAttachments.push(newObj);\r\n this.updateValue(this.displayedFiles);\r\n } else {\r\n this.updateValue(newObj);\r\n }\r\n this.uploading = false;\r\n },\r\n error: (err) => {\r\n this.uploading = false;\r\n err?.error?.meta?.messages?.forEach((msg) => {\r\n this.toasterService.error(msg.message);\r\n });\r\n }\r\n });\r\n }\r\n\r\n addAttachments() {\r\n this.processAttachments(this.value, false);\r\n }\r\n\r\n addMultiAttachments(field: any) {\r\n this.processAttachments(field, true);\r\n }\r\n\r\n\r\n isFileNotDuplicate(file: FileInfo): boolean {\r\n if (this.allAttachments?.length) {\r\n return this.allAttachments?.findIndex(($file) => (file.fileName === $file.fileName)) === -1;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n\r\n isValidMimeType(value: any) {\r\n if (this.attachType == 'pdf') {\r\n return ([] as string[]).concat(...Object.values(this.validPdfTypes)).includes(value);\r\n } else if (this.attachType == 'image') {\r\n return ([] as string[]).concat(...Object.values(this.validImageTypes)).includes(value);\r\n } else {\r\n return true\r\n }\r\n }\r\n\r\n isValidExtension(value: string, type: string) {\r\n if (type == 'image') {\r\n return [].concat(...Object.keys(this.validImageTypes)).includes(value.toLowerCase());\r\n } else if (type == \"imagePdf\") {\r\n return [].concat(...Object.keys(this.validImgPdfTypes)).includes(value.toLowerCase());\r\n } else if (type === \"pdf\") {\r\n return [].concat(...Object.keys(this.validPdfTypes)).includes(value.toLowerCase());\r\n } else {\r\n return [].concat(...Object.keys(this.validFileTypes)).includes(value.toLowerCase());\r\n }\r\n }\r\n\r\n removeAttachedFile() {\r\n if (this.inputFile) {\r\n this.inputFile.nativeElement.value = null;\r\n }\r\n this.reset();\r\n }\r\n\r\n downloadFile(event, field) {\r\n if (this.customDownload) {\r\n this.downloadActionClicked.emit(field)\r\n } else {\r\n this.coreService.loadFile(field.attachmentId).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n (responseObject: { body: any; }) => {\r\n const fileInformation = responseObject.body;\r\n this.coreService.saveFile(fileInformation)\r\n },\r\n error => {\r\n this.toasterService.error(error.error?.['message'])\r\n }\r\n );\r\n\r\n }\r\n }\r\n\r\n private updateValue<T>(value: T | T[]) {\r\n if (this.preventFileContents) {\r\n value = JSON.parse(JSON.stringify(value));\r\n this.deleteFileContents(value);\r\n }\r\n this.control.setValue(value);\r\n this.emitedValue.emit(value);\r\n }\r\n\r\n private deleteFileContents(data: any) {\r\n if (typeof data === 'object' && 'fileContents' in data) {\r\n delete data.fileContents;\r\n } else if (Array.isArray(data)) {\r\n data.forEach(elem => this.deleteFileContents(elem));\r\n }\r\n }\r\n\r\n private reset(): void { \r\n this.control.reset();\r\n \r\n if(this.multiple)\r\n {\r\n this.allAttachments =[]\r\n this.displayedFiles =[]\r\n }\r\n this.emitedValue.emit(null);\r\n this.selectedTemplateAttachment.emit(null);\r\n console.log(this.allAttachments,this.displayedFiles);\r\n \r\n }\r\n}\r\n\r\nclass FileInfo {\r\n constructor(\r\n public fileName: string,\r\n public name: string,\r\n public mimeType: string,\r\n public fileContents: string,\r\n public filesize: string\r\n ) { }\r\n}\r\n","@if (!isReadOnly) {\r\n <ng-container>\r\n @if(label) {\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <section\r\n (click)=\"fileAttached.click()\"\r\n [ngClass]=\"insideTable ? 'file-uploader-table' : 'file-uploader'\" class=\" mb-2\"\r\n [class.insideTableStyle]=\"insideTable\">\r\n <div\r\n [ngClass]=\"insideTable ? 'file-uploader-table-dev' : ''\" class=\"file-uploader-input\"\r\n >\r\n @if (!uploading) {\r\n <div class=\"icon mb-1\">\r\n <svg\r\n [ngClass]=\"insideTable ? 'file-uploader-table-svg' : ''\" width=\"41\" height=\"38\" viewBox=\"0 0 41 38\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M0 22.1947V20.6736C0.0971303 20.1019 0.070094 19.5141 0.276371 18.9533C1.28372 16.2086 3.21231 14.5023 6.0421 13.8094C6.70499 13.6472 6.68497 13.6632 6.69899 12.9843C6.73203 11.3321 6.99839 9.71992 7.62423 8.17986C8.86289 5.13678 10.9467 2.83969 13.8816 1.39175C17.168 -0.230424 20.5956 -0.450719 24.0553 0.81598C27.4929 2.07467 29.9622 4.41581 31.4802 7.74828C31.7786 8.40316 32.027 9.08307 32.1712 9.79202C32.2402 10.1315 32.4035 10.2566 32.7529 10.3107C36.7012 10.9165 39.3358 13.1255 40.6946 16.8735C40.9069 17.4603 40.9199 18.0731 40.9599 18.6829C40.9649 18.7601 40.9389 18.8442 41 18.9113V20.5124C40.9109 20.995 40.969 21.4937 40.8608 21.9734C40.5244 23.4614 39.8454 24.7821 38.8501 25.9297C37.4522 27.5418 35.7059 28.5882 33.6161 29.0519C32.791 29.2351 31.9499 29.2521 31.1117 29.2922C30.6571 29.3142 30.584 29.193 30.592 28.7484C30.6451 25.8446 29.802 23.2571 27.8624 21.0591C25.9979 18.9463 23.6597 17.7167 20.867 17.4012C18.8553 17.1739 16.9057 17.4593 15.0612 18.3395C11.8319 19.8816 9.81416 22.4069 8.96102 25.8696C8.74273 26.7538 8.68265 27.658 8.70568 28.5702C8.7217 29.2111 8.60254 29.3122 7.95968 29.2972C5.95098 29.2511 4.10551 28.7234 2.58146 27.3596C1.07644 26.0168 0.0680913 24.3996 0.0400537 22.3028C0.0400537 22.2607 0.0250336 22.2257 0 22.1937V22.1947Z\"\r\n fill=\"#DEE0E2\"/>\r\n <path\r\n d=\"M29.0303 28.2632C29.0604 33.4031 24.8657 37.6187 19.6838 37.6548C14.5169 37.6908 10.2852 33.4952 10.2521 28.3042C10.2201 23.1403 14.4297 18.9126 19.6227 18.8946C24.8037 18.8766 28.9993 23.0542 29.0303 28.2632Z\"\r\n fill=\"#8E9AA0\"/>\r\n <path\r\n d=\"M20.5573 25.2644C20.4622 25.4477 20.5012 25.5939 20.5012 25.734C20.4982 28.2154 20.5002 30.6957 20.4982 33.177C20.4982 33.8099 20.2339 34.1704 19.7462 34.2234C19.2645 34.2765 18.88 33.9831 18.8169 33.5025C18.7959 33.3443 18.7969 33.183 18.7969 33.0238C18.7959 30.5826 18.7969 28.1423 18.7969 25.701C18.7969 25.5728 18.7969 25.4447 18.7969 25.2003C18.1971 25.8031 17.6774 26.3288 17.1527 26.8505C17.0115 26.9907 16.8683 27.1349 16.7061 27.2471C16.3566 27.4864 15.9341 27.4413 15.6457 27.154C15.3643 26.8746 15.3203 26.442 15.5486 26.0925C15.6207 25.9824 15.7128 25.8832 15.8069 25.7891C16.8613 24.7307 17.9167 23.6733 18.9732 22.6179C19.4017 22.1893 19.8784 22.1763 20.3039 22.5988C21.3914 23.6803 22.4739 24.7667 23.5533 25.8572C23.9809 26.2898 24.0129 26.8065 23.6534 27.167C23.299 27.5214 22.7753 27.4844 22.3437 27.0568C21.7499 26.47 21.1661 25.8732 20.5603 25.2644H20.5573Z\"\r\n fill=\"#F9F9F9\"/>\r\n </svg>\r\n </div>\r\n }\r\n @if (uploading) {\r\n <ds-icon class=\"sfi sfi-spinner d-inline-block spin fc-coral fs-30-imp\"></ds-icon>\r\n }\r\n @if (insideTable) {\r\n <ds-icon class=\"d-inline-block fc-black fs-20-imp\" icon=\"upload-to-cloud\"></ds-icon>\r\n }\r\n <div class=\"f-14 fc-black fw-normal\">\r\n <span class=\"fc-coral fw-medium\">{{ 'browse' | translate }}</span>\r\n </div>\r\n <div class=\"fs-10 fc-dark-gray\">\r\n {{ allowedExtensions ? allowedExtensions : '' }}\r\n </div>\r\n\r\n <input type=\"file\" #inputFile [accept]=\"accept\" class=\"d-none\" #fileAttached (change)=\"onValueChange($event)\">\r\n </div>\r\n </section>\r\n\r\n @if (hints) {\r\n <div class=\"d-flex align-items-center gap-3 mb-3\">\r\n @for (hint of hints; track hint) {\r\n <ng-container>\r\n <div class=\"d-flex align-items-center gap-1 fs-12\">\r\n <ds-icon\r\n icon=\"{{ hint.valid ? 'check-circle-f' : 'check-circle-o' }}\"\r\n class=\"fs-24 {{ hint.valid ? 'fc-green' : 'fc-dark-gray' }}\"></ds-icon>\r\n <span class=\"{{ hint.valid ? 'fc-black' : 'fc-dark-gray' }}\">{{ hint.label }}</span>\r\n </div>\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n\r\n @if (hint) {\r\n <mat-hint class=\"d-flex align-items-center gap-1\">\r\n <ds-icon icon=\"info\" class=\"fs-17 fc-dark-gray\"></ds-icon>\r\n <span class=\"fs-12 fc-black line-height-1\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n\r\n @if (multiple) {\r\n <section class=\"files-list\">\r\n @for (file of displayedFiles; track file; let i = $index) {\r\n <div class=\"file-item-container\">\r\n <ds-attachments\r\n [matTooltip]=\"file?.fileName\"\r\n [file]=\"{ name: file.fileName }\"\r\n (downloadEvent)=\"attachmentAction('download', i, file)\"\r\n (deleteEvent)=\"attachmentAction('delete', i, file)\"\r\n [showActions]=\"showActions\">\r\n </ds-attachments>\r\n </div>\r\n }\r\n </section>\r\n }\r\n\r\n @if (!multiple && (control?.value?.fileContents || control?.value?.attachmentId)) {\r\n <section class=\"files-list\">\r\n <div class=\"file-item-container file-item-container-actions\">\r\n <ds-attachments\r\n [matTooltip]=\"control?.value?.fileName\"\r\n [file]=\"{ name: control?.value.fileName }\"\r\n (downloadEvent)=\"attachmentAction('download', null, control?.value)\"\r\n (deleteEvent)=\"attachmentAction('delete', null, control?.value)\"\r\n [showActions]=\"showActions\">\r\n </ds-attachments>\r\n </div>\r\n </section>\r\n }\r\n\r\n <div class=\"attachments-error\">\r\n @if (!validExtension) {\r\n <section class=\"files-list mt-2\">\r\n <div class=\"file-item-container \">\r\n <ds-attachments\r\n [file]=\"wrongFile\" error [showActions]=\"false\">\r\n </ds-attachments>\r\n </div>\r\n </section>\r\n }\r\n\r\n @if (!this.lengthError && !allowedFileSize) {\r\n <mat-error class=\"fs-12 my-2\">\r\n {{ maxSize === \"0.3\" ? ('support3' | translate ): ('support2' | translate) + maxSize + ('mb' | translate) }}\r\n </mat-error>\r\n }\r\n\r\n @if (!fileNotDuplicated) {\r\n <mat-error class=\"fs-12 my-2\">{{ 'duplicated-error' | translate }}</mat-error>\r\n }\r\n\r\n @if (lengthError) {\r\n <mat-error class=\"fs-12\">{{ 'lengthError' | translate }}: {{ maxLength }}</mat-error>\r\n }\r\n\r\n @if (showErrorMessage) {\r\n <!-- <mat-error class=\"fs-12\">{{errorMessage}} </mat-error> -->\r\n }\r\n </div>\r\n </ng-container>\r\n}\r\n\r\n@if (isReadOnly) {\r\n <ng-container>\r\n @if (multiple && displayedFiles) {\r\n <ng-container>\r\n <div class=\"info-item\">\r\n @if (label) {\r\n <span class=\"name\">{{ label }}</span>\r\n }\r\n @if (displayedFiles?.length) {\r\n <span>\r\n @for (file of displayedFiles; track file; let i = $index) {\r\n <div class=\"file-item-container\">\r\n <ds-attachments\r\n [matTooltip]=\"file?.fileName\"\r\n class=\"my-2\" [file]=\"{ name: file.fileName }\" readOnly (downloadEvent)=\"downloadFile($event, file)\"\r\n [showActions]=\"showActions\">\r\n </ds-attachments>\r\n </div>\r\n }\r\n </span>\r\n }\r\n @if (!displayedFiles?.length) {\r\n <span class=\"disc\">\r\n {{ 'NoAttachments' | translate }}\r\n </span>\r\n }\r\n </div>\r\n </ng-container>\r\n }\r\n\r\n @if (!multiple && (control?.value?.['attachmentId'] || control?.value?.['fileContents'])) {\r\n <ng-container>\r\n <div class=\"info-item\">\r\n @if (label) {\r\n <span class=\"name\">{{ label }}</span>\r\n }\r\n <div class=\"disc file-item-container file-item-container-actions\" [ngClass]=\"{'insideTableWidth': insideTable}\">\r\n @if (control?.value?.['attachmentId'] || control?.value?.['fileContents']) {\r\n <ds-attachments\r\n [matTooltip]=\"control?.value?.fileName\" [file]=\"{ name: control?.value.fileName }\" [showActions]=\"showActions\"\r\n (downloadEvent)=\"attachmentAction('download', null, control?.value)\"\r\n (deleteEvent)=\"attachmentAction('delete', null, control?.value)\"\r\n readOnly>\r\n </ds-attachments>\r\n }\r\n </div>\r\n </div>\r\n </ng-container>\r\n }\r\n </ng-container>\r\n}","import {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Inject, Injector, Input,} from '@angular/core';\r\nimport {TextareaComponent} from '../textarea/textarea.component';\r\nimport {MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogModule, MatDialogRef,} from '@angular/material/dialog';\r\nimport {NgIf} from '@angular/common';\r\nimport {ControlValueAccessorDirective} from '../control-value-accessor.directive';\r\nimport {Section} from '../../../../interfaces';\r\nimport {FormBuilder, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators,} from '@angular/forms';\r\nimport {DocsUploaderComponent} from '../doc-uploader/docs-uploader.component';\r\nimport {ToastrService} from 'ngx-toastr';\r\nimport {DomSanitizer} from '@angular/platform-browser';\r\nimport {ActionStateService, CoreI18nService, CoreService} from \"../../../../services\";\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {TranslatePipe} from \"../../../../pipes/translate.pipe\";\r\n\r\n@Component({\r\n selector: 'app-add-attachment-section',\r\n templateUrl: './add-attachment-section.component.html',\r\n styleUrls: ['./add-attachment-section.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n TextareaComponent,\r\n MatDialogContent,\r\n DocsUploaderComponent,\r\n MatDialogActions,\r\n NgIf,\r\n MatDialogModule,\r\n ReactiveFormsModule,\r\n MatDialogClose,\r\n TranslatePipe\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AttachmentSectionDataComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class AttachmentSectionDataComponent<\r\n Type\r\n> extends ControlValueAccessorDirective<Type> {\r\n popupData: any = {};\r\n popupDataOrg: any = {};\r\n uploading: boolean;\r\n editMode: boolean;\r\n @Input() hasColumnBreak: boolean;\r\n @Input() section: Section;\r\n formGroup: FormGroup;\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor(\r\n injector: Injector,\r\n i18n: CoreI18nService,\r\n toasterService: ToastrService,\r\n coreService: CoreService,\r\n sanitizer: DomSanitizer,\r\n fb: FormBuilder,\r\n actionStateService: ActionStateService,\r\n public dialogRef: MatDialogRef<any>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any\r\n ) {\r\n super(injector, i18n, toasterService, coreService, sanitizer, fb, actionStateService);\r\n }\r\n\r\n override ngOnInit() {\r\n // super.ngOnInit()\r\n this.createForm();\r\n if (this.dialogData?.attachmentListData) {\r\n this.popupData = this.dialogData.attachmentListData;\r\n this.popupDataOrg = Object.assign({}, this.popupData);\r\n this.formGroup.controls['file'].setValue(\r\n this.dialogData.attachmentListData\r\n );\r\n this.formGroup.controls['description'].setValue(\r\n this.dialogData.attachmentListData.fileDescription\r\n );\r\n this.formGroup.controls['comments'].setValue(\r\n this.dialogData.attachmentListData.fileComments\r\n );\r\n this.editMode = true;\r\n }\r\n }\r\n createForm() {\r\n this.formGroup = this.fb.group({\r\n file: new FormControl(null, Validators.required),\r\n description: new FormControl(null,this.dialogData.descriptionRequired ? Validators.required: null),\r\n comments: new FormControl(null, this.dialogData.commentsRequired ? Validators.required: null),\r\n });\r\n }\r\n\r\n close() {\r\n this.dialogRef.close(this.popupDataOrg);\r\n }\r\n\r\n handleEmitValue(data: any, fieldName: string) {\r\n this.popupData[fieldName] = data;\r\n }\r\n\r\n handleAttachmentEmitValue(data: any) {\r\n this.popupData = {\r\n fileContents: data?.fileContents,\r\n fileName: data?.fileName,\r\n mimeType: data?.mimeType,\r\n fileDescription: this.popupData?.fileDescription,\r\n attachmentcomment: this.popupData?.attachmentcomment,\r\n fileComments: this.popupData?.attachmentcomment,\r\n };\r\n }\r\n\r\n addAttachments() {\r\n const newObj = {\r\n fileDescription: this.formGroup.controls['description'].value,\r\n attachmentcomment: this.formGroup.controls['comments'].value,\r\n fileComments: this.formGroup.controls['comments'].value,\r\n fileName: this.formGroup.controls['file'].value.fileName,\r\n attachmentId: this.formGroup.controls['file'].value.attachmentId,\r\n mimeType: this.formGroup.controls['file'].value.mimeType,\r\n };\r\n this.dialogRef.close(newObj);\r\n\r\n/* const data = {\r\n fileDescription: this.formGroup.controls['description'].value,\r\n attachmentcomment: this.formGroup.controls['comments'].value,\r\n fileComments: this.formGroup.controls['comments'].value,\r\n fileName: this.formGroup.controls['file'].value.fileName,\r\n mimeType: this.formGroup.controls['file'].value.mimeType,\r\n fileContents: this.formGroup.controls['file'].value.fileContents,\r\n };\r\n this.uploading = true;\r\n this.coreService.getAttachments(data).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((Response: any) => {\r\n this.uploading = false;\r\n if (Response) {\r\n const newObj = {\r\n fileDescription: this.formGroup.controls['description'].value,\r\n attachmentcomment: this.formGroup.controls['comments'].value,\r\n fileComments: this.formGroup.controls['comments'].value,\r\n fileName: this.formGroup.controls['file'].value.fileName,\r\n attachmentId: Response.attachment.attachmentId ?? this.formGroup.controls['file'].value.attachmentId,\r\n mimeType: this.formGroup.controls['file'].value.mimeType,\r\n };\r\n this.dialogRef.close(newObj);\r\n }\r\n });*/\r\n }\r\n}\r\n","<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-end\" mat-dialog-title>\r\n <h3 class=\"mb-0 font-16 fw-medium\">{{ 'addAttachments' | translate }}</h3>\r\n <ds-button icon matDialogClose>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"px-md-4 mt-3\">\r\n <form [formGroup]=\"formGroup\">\r\n <app-file-uploader\r\n class=\"section-item full\" [field]=\"popupData\" name=\"file\" [attachments]=\"dialogData?.attachments\"\r\n [labelTextReadMode]=\"'Attachment' | translate\" [labelTextWriteMode]=\"'Attachment' | translate\"\r\n [hasColumnBreak]=\"false\" [label]=\"'Attachment' | translate\" [mandatory]=\"true\" [multiple]=\"false\"\r\n [allowedExtensions]=\"dialogData?.data\"\r\n [allAttachments]=\"dialogData?.attachments\"\r\n [isReadOnly]=\"section?.header?.readOnly\" [showActions]=\"false\"\r\n formControlName=\"file\">\r\n </app-file-uploader>\r\n\r\n <app-textarea\r\n class=\"section-item d-block mt-4 mb-4\"\r\n (emitedValue)=\"handleEmitValue($event,'fileDescription')\"\r\n [label]=\"'description' | translate\" [maxLength]=\"500\"\r\n [isReadOnly]=\"section?.header?.readOnly\"\r\n formControlName=\"description\"\r\n [mandatory]=\"dialogData.descriptionRequired\">\r\n </app-textarea>\r\n\r\n <app-textarea\r\n class=\"section-item\"\r\n (emitedValue)=\"handleEmitValue($event,'attachmentcomment')\"\r\n [label]=\"'comments' | translate\" [maxLength]=\"500\"\r\n [isReadOnly]=\"section?.header?.readOnly\"\r\n formControlName=\"comments\"\r\n [mandatory]=\"dialogData.commentsRequired\">\r\n </app-textarea>\r\n </form>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"default-footer justify-content-end gap-3\">\r\n <ds-button shape=\"outline\" matDialogClose [disabled]=\"uploading\" [class.disabled]=\"uploading\">{{ 'cancel' | translate }}</ds-button>\r\n <ds-button\r\n (click)=\"addAttachments()\" [loading]=\"uploading\"\r\n [disabled]=\"(!formGroup?.value?.file?.attachmentId || uploading || !formGroup.valid)\">\r\n <ng-container *ngIf=\"!editMode; else editTemplate\">\r\n <span>{{ 'add' | translate }}</span>\r\n </ng-container>\r\n <ng-template #editTemplate>\r\n <span>{{ 'edit' | translate }}</span>\r\n </ng-template>\r\n </ds-button>\r\n </mat-dialog-actions>\r\n</div>\r\n","import {AfterViewInit, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, EventEmitter, forwardRef, inject, Input, OnDestroy, Output, ViewChild} from '@angular/core';\r\nimport {AttachmentSectionDataComponent} from '../add-attachment-section/add-attachment-section.component';\r\nimport {CdkDrag, CdkDragDrop, CdkDropList, moveItemInArray} from '@angular/cdk/drag-drop';\r\nimport {SatPopoverModule} from '@ncstate/sat-popover';\r\nimport {MatTooltip} from \"@angular/material/tooltip\";\r\nimport {NgClass, NgForOf, NgIf, SlicePipe} from \"@angular/common\";\r\nimport {DocsUploaderComponent} from '../doc-uploader/docs-uploader.component';\r\nimport {DeleteDialogComponent} from \"../../dialogs/delete-dialog/delete-dialog.component\";\r\nimport {ControlValueAccessorDirective} from \"../control-value-accessor.directive\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {MatPaginator} from \"@angular/material/paginator\";\r\nimport {\r\n MatCell,\r\n MatCellDef,\r\n MatColumnDef,\r\n MatHeaderCell,\r\n MatHeaderCellDef,\r\n MatHeaderRow,\r\n MatHeaderRowDef,\r\n MatRow,\r\n MatRowDef,\r\n MatTable,\r\n MatTableDataSource\r\n} from \"@angular/material/table\";\r\nimport { FormLabelComponent } from '../form-label/form-label.component';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {TranslatePipe} from \"../../../../pipes/translate.pipe\";\r\nimport { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { CoreI18nService } from '../../../../services/i18n.service';\r\n\r\n\r\nexport function getPaginatorIntl(i18nService: CoreI18nService): MatPaginatorIntl {\r\n const paginatorIntl = new MatPaginatorIntl();\r\n\r\n if (i18nService.getLanguage() === 'ar') {\r\n paginatorIntl.itemsPerPageLabel = 'عدد العناصر في الصفحة:';\r\n paginatorIntl.nextPageLabel = 'الصفحة التالية';\r\n paginatorIntl.previousPageLabel = 'الصفحة السابقة';\r\n paginatorIntl.firstPageLabel = 'الصفحة الأولى';\r\n paginatorIntl.lastPageLabel = 'الصفحة الأخيرة';\r\n paginatorIntl.getRangeLabel = (page: number, pageSize: number, length: number): string => {\r\n if (length === 0 || pageSize === 0) {\r\n return `0 من ${length}`;\r\n }\r\n const startIndex = page * pageSize;\r\n const endIndex = Math.min(startIndex + pageSize, length);\r\n return `${startIndex + 1} - ${endIndex} من ${length}`;\r\n };\r\n }\r\n return paginatorIntl;\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'app-attachment-section',\r\n templateUrl: './attachment-section.component.html',\r\n styleUrls: ['./attachment-section.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AttachmentSectionComponent),\r\n multi: true,\r\n },\r\n { provide: MatPaginatorIntl, useFactory: getPaginatorIntl, deps: [CoreI18nService] }\r\n ],\r\n imports: [\r\n SatPopoverModule,\r\n MatTooltip,\r\n NgClass,\r\n CdkDropList,\r\n DocsUploaderComponent,\r\n CdkDrag,\r\n SlicePipe,\r\n MatPaginator,\r\n MatTable,\r\n MatColumnDef,\r\n MatCell,\r\n MatCellDef,\r\n MatHeaderCellDef,\r\n MatHeaderCell,\r\n MatRow,\r\n MatHeaderRow,\r\n MatHeaderRowDef,\r\n MatRowDef,\r\n FormLabelComponent,\r\n TranslatePipe\r\n ],\r\n standalone: true\r\n})\r\nexport class AttachmentSectionComponent extends ControlValueAccessorDirective<any> implements AfterViewInit {\r\n @Input() className = 'info-section';\r\n @Output() downloadActionClicked = new EventEmitter();\r\n @Input() customDownload: boolean;\r\n\r\n @Input() attachmentsMax = 1000;\r\n @Input() isSortable = false;\r\n @Input() downloadAll = false;\r\n popupData: any = {};\r\n @Input() descriptionRequired: boolean;\r\n @Input() commentsRequired: boolean;\r\n @Input() allowedExtensions = '';\r\n @Output() emitedValue = new EventEmitter();\r\n dialog = inject(MatDialog);\r\n displayedColumns: string[] = [\"index\", \"file\", \"description\", \"comment\", \"actions\"];\r\n dataSource: MatTableDataSource<any>;\r\n @ViewChild('paginator') paginator: MatPaginator;\r\n totalRecords: number = 0;\r\n pageSize: number = 5;\r\n pageNumber: number = 0;\r\n destroyRef = inject(DestroyRef);\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n if (this.control.value) {\r\n this.attachments = this.control.value\r\n }\r\n /*if (this.attachments) {\r\n this.attachments.forEach(element => {\r\n element.name = element.fileName;\r\n });\r\n }*/\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addDataToTable();\r\n }\r\n\r\n onPaginateChange(event: any) {\r\n this.pageNumber = event.pageIndex\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>) {\r\n moveItemInArray(this.attachments, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n\r\n resetAttachmentData() {\r\n if (!this.isReadOnly) {\r\n this.attachments = [];\r\n this.emitedValue.emit(this.attachments);\r\n }\r\n }\r\n\r\n addDataToTable(){\r\n this.dataSource = new MatTableDataSource(this.attachments);\r\n this.totalRecords = this.dataSource.data.length;\r\n this.dataSource.paginator = this.paginator;\r\n }\r\n\r\n handleEmitValue(data: any, fieldName: string) {\r\n this.popupData[fieldName] = data;\r\n }\r\n\r\n addAttachment(): void {\r\n const dialogRef = this.dialog.open(AttachmentSectionDataComponent, {\r\n panelClass: ['main-popup', 'add-attachment-dialog'],\r\n data: {\r\n attachmentListData: null,\r\n data: this.allowedExtensions,\r\n multiple: this.multiple,\r\n attachments: this.attachments,\r\n descriptionRequired: this.descriptionRequired,\r\n commentsRequired: this.commentsRequired\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe((resultData) => {\r\n if (resultData != 'close') {\r\n if (resultData?.attachmentId) {\r\n this.attachments.push(resultData);\r\n this.addDataToTable();\r\n\r\n }\r\n }\r\n this.control.setValue(this.attachments)\r\n });\r\n }\r\n\r\n deleteAttachments(index: number, item: any) {\r\n const dialogRef = this.dialog.open(DeleteDialogComponent, {\r\n panelClass: ['main-popup', 'add-attachment-dialog']\r\n });\r\n dialogRef.afterClosed().subscribe((resultData) => {\r\n if (resultData == 'yes') {\r\n this.deleteAttachment(index, item);\r\n }\r\n });\r\n }\r\n\r\n deleteAttachment(index: number, item: any) {\r\n this.attachments = this.attachments.filter((row: any) => {\r\n return row.attachmentId != item.attachmentId;\r\n });\r\n this.addDataToTable();\r\n this.control.setValue(this.attachments)\r\n }\r\n\r\n editRow(rowData, index): void {\r\n const dialogRef = this.dialog.open(AttachmentSectionDataComponent, {\r\n panelClass: ['main-popup', 'add-attachment-dialog'],\r\n data: {\r\n attachmentListData: Object.assign(rowData),\r\n data: this.allowedExtensions,\r\n descriptionRequired: this.descriptionRequired,\r\n commentsRequired: this.commentsRequired,\r\n multiple: this.multiple,\r\n attachments: this.attachments,\r\n\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe((resultData) => {\r\n if (resultData != 'close') {\r\n if (resultData?.attachmentId) {\r\n this.attachments[index] = resultData;\r\n this.emitedValue.emit(this.attachments);\r\n this.addDataToTable();\r\n this.control.setValue(this.attachments)\r\n }\r\n }\r\n });\r\n }\r\n\r\n downloadAllAttachments(event) {\r\n this.loading = true\r\n const downloads = this.attachments.map((file) => this.downloadFile(event, file));\r\n Promise.all(downloads)\r\n .then(() => {\r\n this.loading = false\r\n })\r\n .catch((error) => {\r\n this.loading = false\r\n });\r\n }\r\n\r\n downloadFile(event, field): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n this.coreService.loadFile(field.attachmentId).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n (responseObject: { body: any; }) => {\r\n const fileInformation = responseObject.body;\r\n this.coreService.saveFile(fileInformation)\r\n resolve();\r\n },\r\n error => {\r\n this.toasterService.error(error.error?.['message']);\r\n }\r\n );\r\n });\r\n }\r\n\r\n customDownloadAction(event){\r\n this.downloadActionClicked.emit(event);\r\n }\r\n\r\n}\r\n","@if (isReadOnly ? attachments?.length : true) {\r\n <div class=\"mt-2 p-0\">\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"(required || mandatory ? false : true) && !isReadOnly\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n \r\n @if (!attachments?.length && !isReadOnly) {\r\n <section\r\n [ngClass]=\"insideTable ? 'file-uploader-table' : 'file-uploader'\"\r\n class=\"mb-2\"\r\n [class.insideTableStyle]=\"insideTable\"\r\n (click)=\"addAttachment()\">\r\n <div\r\n [ngClass]=\"insideTable ? 'file-uploader-table-dev' : ''\"\r\n class=\"file-uploader-input\">\r\n <div class=\"icon mb-1\">\r\n <svg\r\n [ngClass]=\"insideTable ? 'file-uploader-table-svg' : ''\"\r\n width=\"41\"\r\n height=\"38\"\r\n viewBox=\"0 0 41 38\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M0 22.1947V20.6736C0.0971303 20.1019 0.070094 19.5141 0.276371 18.9533C1.28372 16.2086 3.21231 14.5023 6.0421 13.8094C6.70499 13.6472 6.68497 13.6632 6.69899 12.9843C6.73203 11.3321 6.99839 9.71992 7.62423 8.17986C8.86289 5.13678 10.9467 2.83969 13.8816 1.39175C17.168 -0.230424 20.5956 -0.450719 24.0553 0.81598C27.4929 2.07467 29.9622 4.41581 31.4802 7.74828C31.7786 8.40316 32.027 9.08307 32.1712 9.79202C32.2402 10.1315 32.4035 10.2566 32.7529 10.3107C36.7012 10.9165 39.3358 13.1255 40.6946 16.8735C40.9069 17.4603 40.9199 18.0731 40.9599 18.6829C40.9649 18.7601 40.9389 18.8442 41 18.9113V20.5124C40.9109 20.995 40.969 21.4937 40.8608 21.9734C40.5244 23.4614 39.8454 24.7821 38.8501 25.9297C37.4522 27.5418 35.7059 28.5882 33.6161 29.0519C32.791 29.2351 31.9499 29.2521 31.1117 29.2922C30.6571 29.3142 30.584 29.193 30.592 28.7484C30.6451 25.8446 29.802 23.2571 27.8624 21.0591C25.9979 18.9463 23.6597 17.7167 20.867 17.4012C18.8553 17.1739 16.9057 17.4593 15.0612 18.3395C11.8319 19.8816 9.81416 22.4069 8.96102 25.8696C8.74273 26.7538 8.68265 27.658 8.70568 28.5702C8.7217 29.2111 8.60254 29.3122 7.95968 29.2972C5.95098 29.2511 4.10551 28.7234 2.58146 27.3596C1.07644 26.0168 0.0680913 24.3996 0.0400537 22.3028C0.0400537 22.2607 0.0250336 22.2257 0 22.1937V22.1947Z\"\r\n fill=\"#DEE0E2\"/>\r\n <path\r\n d=\"M29.0303 28.2632C29.0604 33.4031 24.8657 37.6187 19.6838 37.6548C14.5169 37.6908 10.2852 33.4952 10.2521 28.3042C10.2201 23.1403 14.4297 18.9126 19.6227 18.8946C24.8037 18.8766 28.9993 23.0542 29.0303 28.2632Z\"\r\n fill=\"#8E9AA0\"/>\r\n <path\r\n d=\"M20.5573 25.2644C20.4622 25.4477 20.5012 25.5939 20.5012 25.734C20.4982 28.2154 20.5002 30.6957 20.4982 33.177C20.4982 33.8099 20.2339 34.1704 19.7462 34.2234C19.2645 34.2765 18.88 33.9831 18.8169 33.5025C18.7959 33.3443 18.7969 33.183 18.7969 33.0238C18.7959 30.5826 18.7969 28.1423 18.7969 25.701C18.7969 25.5728 18.7969 25.4447 18.7969 25.2003C18.1971 25.8031 17.6774 26.3288 17.1527 26.8505C17.0115 26.9907 16.8683 27.1349 16.7061 27.2471C16.3566 27.4864 15.9341 27.4413 15.6457 27.154C15.3643 26.8746 15.3203 26.442 15.5486 26.0925C15.6207 25.9824 15.7128 25.8832 15.8069 25.7891C16.8613 24.7307 17.9167 23.6733 18.9732 22.6179C19.4017 22.1893 19.8784 22.1763 20.3039 22.5988C21.3914 23.6803 22.4739 24.7667 23.5533 25.8572C23.9809 26.2898 24.0129 26.8065 23.6534 27.167C23.299 27.5214 22.7753 27.4844 22.3437 27.0568C21.7499 26.47 21.1661 25.8732 20.5603 25.2644H20.5573Z\"\r\n fill=\"#F9F9F9\"/>\r\n </svg>\r\n </div>\r\n <div class=\"f-14 fc-black fw-normal\">\r\n <span class=\"fc-coral fw-medium\">{{ 'browse' | translate }}</span>\r\n </div>\r\n <div class=\"fs-10 fc-dark-gray\">\r\n {{ 'addMultiAttachments' | translate }}\r\n </div>\r\n </div>\r\n </section>\r\n }\r\n \r\n @if (attachments?.length) {\r\n <div\r\n class=\"table-responsive full\"\r\n cdkDropList\r\n [cdkDropListData]=\"attachments\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n >\r\n <table mat-table [dataSource]=\"dataSource\">\r\n \r\n <!-- index Column -->\r\n <ng-container matColumnDef=\"index\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ds-button\r\n [matTooltip]=\"'downloadAll' | translate\"\r\n square icon size=\"small\"\r\n (click)=\"downloadAllAttachments($event)\"\r\n class=\"icon-btn-shadow\">\r\n @if (loading) {\r\n <ds-icon class=\"sfi sfi-spinner d-inline-block spin fc-coral fs-30-imp\"></ds-icon>\r\n } @else {\r\n <ds-icon\r\n icon=\"download\"\r\n class=\"fs-20 fs-md-17 fc-purple\"></ds-icon>\r\n }\r\n </ds-button>\r\n </th>\r\n <td mat-cell *matCellDef=\"let element; let i = index\">{{ i + 1 + pageSize * (pageNumber) }}</td>\r\n </ng-container>\r\n \r\n <!-- Name Column -->\r\n <ng-container matColumnDef=\"file\">\r\n <th mat-header-cell *matHeaderCellDef>{{ 'FileName' | translate }}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <app-file-uploader\r\n [allowedExtensions]=\"allowedExtensions\"\r\n [displayedFiles]=\"[element]\"\r\n name=\"attachment\"\r\n [showActions]=\"true\"\r\n [isReadOnly]=\"true\"\r\n [customDownload]=\"customDownload\"\r\n (downloadActionClicked)=\"customDownloadAction($event)\"\r\n [multiple]=\"true\">\r\n </app-file-uploader>\r\n </td>\r\n </ng-container>\r\n \r\n <!-- Description Column -->\r\n <ng-container matColumnDef=\"description\">\r\n <th mat-header-cell *matHeaderCellDef>{{ 'FileDescription' | translate }}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <a\r\n class=\"fw-medium fc-black underline cursor-pointer fs-12\"\r\n [hidden]=\"!element?.['fileDescription']\"\r\n (click)=\"$event.stopPropagation(); fileDescriptionAnchor.popover.open()\"\r\n [satPopoverAnchor]=\"fileDescriptionPopover\"\r\n #fileDescriptionAnchor=\"satPopoverAnchor\"\r\n [matTooltip]=\"element?.['fileDescription']\">\r\n {{ element?.['fileDescription']?.length > 10 ? (element?.['fileDescription'] | slice : 0 : 10) + '....' : element?.['fileDescription'] }}\r\n </a>\r\n <sat-popover\r\n #fileDescriptionPopover\r\n [anchor]=\"fileDescriptionAnchor\"\r\n [hasBackdrop]=\"true\"\r\n [restoreFocus]=\"false\"\r\n verticalAlign=\"below\"\r\n horizontalAlign=\"center\">\r\n <div class=\"default-popover p-3 fs-14 text-break view-note-popover\">\r\n <bdi class=\"fc-black\">{{ element?.['fileDescription'] }}</bdi>\r\n </div>\r\n </sat-popover>\r\n </td>\r\n </ng-container>\r\n \r\n <!-- Comment Column -->\r\n <ng-container matColumnDef=\"comment\">\r\n <th mat-header-cell *matHeaderCellDef>{{ 'comment' | translate }}</th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <a\r\n class=\"fw-medium fc-black underline cursor-pointer fs-12\"\r\n [hidden]=\"!element?.['attachmentcomment']\"\r\n (click)=\"$event.stopPropagation(); commentsAnchor.popover.open()\"\r\n [satPopoverAnchor]=\"commentsPopover\"\r\n [matTooltip]=\"element?.['attachmentcomment']\"\r\n #commentsAnchor=\"satPopoverAnchor\">\r\n {{ element?.['attachmentcomment']?.length > 10 ? (element?.['attachmentcomment'] | slice : 0 : 10) + '....' : element?.['attachmentcomment'] }}\r\n </a>\r\n <sat-popover\r\n #commentsPopover\r\n [anchor]=\"commentsAnchor\"\r\n [hasBackdrop]=\"true\"\r\n [restoreFocus]=\"false\"\r\n verticalAlign=\"below\"\r\n horizontalAlign=\"center\">\r\n <div class=\"default-popover p-3 fs-14 text-break view-note-popover\">\r\n <bdi class=\"fc-black\">{{ element?.['attachmentcomment'] }}</bdi>\r\n </div>\r\n </sat-popover>\r\n </td>\r\n </ng-container>\r\n \r\n <ng-container matColumnDef=\"actions\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element; let i = index\">\r\n @if (!isReadOnly) {\r\n <td>\r\n <div class=\"d-flex gap-2\">\r\n <ds-button\r\n square\r\n icon\r\n size=\"small\"\r\n (click)=\"deleteAttachments(i, element)\"\r\n class=\"icon-btn-shadow\">\r\n <ds-icon icon=\"trash\" class=\"fs-20 fs-md-17 fc-coral\"></ds-icon>\r\n </ds-button>\r\n \r\n <ds-button\r\n square\r\n icon\r\n size=\"small\"\r\n (click)=\"editRow(element, i)\"\r\n class=\"icon-btn-shadow\">\r\n <ds-icon icon=\"pen\" class=\"fs-20 fs-md-17 fc-purple\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n </td>\r\n }\r\n </td>\r\n </ng-container>\r\n \r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n </table>\r\n \r\n <mat-paginator\r\n #paginator\r\n [pageSizeOptions]=\"[5]\"\r\n (page)=\"onPaginateChange($event)\"\r\n [length]=\"attachments.length\"\r\n [pageSize]=\"pageSize\"\r\n showFirstLastButtons></mat-paginator>\r\n </div>\r\n }\r\n \r\n @if (!isReadOnly && attachments?.length && attachments?.length < attachmentsMax) {\r\n <div class=\"text-center full mt-3\">\r\n <ds-button\r\n shape=\"{{ attachments?.length ? 'outline' : '' }}\"\r\n [ngClass]=\"{ 'full-add-btn w-100 pt-1': attachments?.length }\"\r\n (click)=\"addAttachment(); $event.stopPropagation()\">\r\n <ds-icon slot=\"prefix\" icon=\"plus\" class=\"fs-22 pb-1\"></ds-icon>\r\n {{ 'addAttachments' | translate }}\r\n </ds-button>\r\n </div>\r\n }\r\n </div>\r\n}\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Input } from '@angular/core';\r\nimport {MatRadioButton, MatRadioChange, MatRadioGroup} from '@angular/material/radio';\r\nimport {FormsModule, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport {NgSwitchCase} from \"@angular/common\";\r\nimport { Shareds } from '../shared-imports';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n/**\r\n * Radio Component for selecting a single option from a list of options.\r\n * \r\n * Supports both Reactive Forms and Template-driven forms.\r\n * \r\n * Inputs:\r\n * - `options`: Accepts an array of objects used as the selection list.\r\n * - `displayedLabel`: Property name from the option object to display in the UI (default: `'description'`).\r\n * - `key`: Property name from the option object used as the value (default: `'value'`).\r\n * - `label`: Defines the label text shown above the radio buttons.\r\n * - `isReadOnly`: Disables interaction and renders the component in a read-only display mode.\r\n * - `mandatory`: Hides the \"optional\" label visually. Does not add validation.\r\n * - `required`: Hides the \"optional\" label and also adds Angular's required validator.\r\n * - `tooltip`: Displays a tooltip beside the label.\r\n *\r\n * Emits:\r\n * - The selected value is emitted as an object with `key` and `value` properties:\r\n * ```ts\r\n * { key: option[key], value: option[displayedLabel] }\r\n * ```\r\n *\r\n * Example usage:\r\n * ```html\r\n*<app-radio\r\n* class=\"section-item\" \r\n* [isReadOnly]=\"isReadOnly\" \r\n* formControlName=\"radio\" \r\n* [options]=\"[]\" \r\n* label=\"Radio\"\r\n*>\r\n*</app-radio>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'app-radio',\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n MatRadioButton,\r\n MatRadioGroup,\r\n FormsModule,\r\n NgSwitchCase,\r\n ...Shareds\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RadioComponent),\r\n multi: true,\r\n },\r\n ]\r\n})\r\nexport class RadioComponent<Type> extends ControlValueAccessorDirective<Type> {\r\n @Input() options: Array<Record<string, any>> = [];\r\n @Input() displayedLabel: string= 'description';\r\n @Input() key: string = 'value';\r\n destroyRef = inject(DestroyRef);\r\n override ngOnInit(): void {\r\n super.ngOnInit()\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (!this.isReadOnly && this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n }\r\n\r\n onChange(event: MatRadioChange) {\r\n const controlValue = {key: event?.value, value: event?.source?.ariaLabel};\r\n this.setValue(controlValue);\r\n if(this.control && !this.control.touched) this.onTouchedFn();\r\n }\r\n}\r\n","@if(!isReadOnly){\r\n @if(label){\r\n <app-form-label [label]=\"label\" [optional]=\"required || mandatory ? false : true\" [tooltip]=\"tooltip\"></app-form-label>\r\n }\r\n <mat-radio-group\r\n [aria-label]=\"label\"\r\n [value]=\"control?.value?.key\"\r\n (change)=\"onChange($event)\"\r\n >\r\n @for(option of options; track $index){\r\n <mat-radio-button\r\n [disabled]=\"isReadOnly || isDisabled\"\r\n [value]=\"option[key]\"\r\n [aria-label]=\"option[displayedLabel]\"\r\n >\r\n <span class=\"fs-12 fw-medium fc-onyx cursor-pointer\">\r\n {{ option[displayedLabel] }}\r\n </span>\r\n </mat-radio-button>\r\n }\r\n </mat-radio-group>\r\n\r\n}@else if(isReadOnly && control.value) {\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [insideTable]=\"insideTable\"\r\n [label]=\"label\"\r\n [value]=\"control.value?.value\"\r\n [hasLabel]=\"!!label\"\r\n >\r\n </app-info-item>\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, forwardRef, inject, Input, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatSelectChange, MatSelectModule } from '@angular/material/select';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\n\r\nimport { FormLabelComponent } from '../form-label/form-label.component';\r\nimport { ControlValueAccessorDirective } from '../control-value-accessor.directive';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { InfoItemComponent } from '../info-item/info-item.component';\r\nimport { ValidationErrorsComponent } from '../validation-errors/validation-errors.component';\r\nimport { TranslatePipe } from '../../../../pipes/translate.pipe';\r\n\r\ninterface KeyValuePair {\r\n key: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * Multi-select dropdown component for selecting multiple options.\r\n * \r\n * Supports both Reactive Forms and Template-driven forms.\r\n * \r\n * Inputs:\r\n * - `options`: Accepts an array of objects used as the selection list.\r\n * - `displayedLabel`: Property name from the option object to display in the UI (default: `'description'`).\r\n * - `key`: Property name from the option object used as the value (default: `'value'`).\r\n * - `label`: Defines the label text shown above the multi-select field.\r\n * - `placeholder`: Sets the placeholder text when no value is selected.\r\n * - `isReadOnly`: Disables interaction and renders the component in a read-only display mode.\r\n * - `mandatory`: Hides the \"optional\" label visually. Does not add validation.\r\n * - `required`: Hides the \"optional\" label and also adds Angular's required validator.\r\n * - `tooltip`: Displays a tooltip beside the label.\r\n * - `loading`: Shows a loading spinner inside the dropdown when set to true.\r\n * - `customErrorMessages`: Custom messages for validation errors.\r\n *\r\n * Emits:\r\n * - The selected value is emitted as an array of objects:\r\n * ```ts\r\n * [{ key: option[key], value: option[displayedLabel] }, ...]\r\n * ```\r\n *\r\n * Example usage:\r\n * ```html\r\n * <app-multiselect\r\n * class=\"section-item\"\r\n * formControlName=\"multi\"\r\n * [options]=\"[]\"\r\n * label=\"Multi select\"\r\n * placeholder=\"Select from here\"\r\n * [isReadOnly]=\"false\"\r\n * [mandatory]=\"true\"\r\n * >\r\n * </app-multiselect>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'app-multiselect',\r\n templateUrl: './multiselect.component.html',\r\n styleUrls: ['./multiselect.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n CommonModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n FormLabelComponent,\r\n InfoItemComponent,\r\n ValidationErrorsComponent,\r\n TranslatePipe\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MultiselectComponent),\r\n multi: true,\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n\r\nexport class MultiselectComponent<Type> extends ControlValueAccessorDirective<Type> implements OnInit {\r\n\r\n @Input() options: any[] = [];\r\n @Input() displayedLabel: string= 'description';\r\n @Input() key: string = 'value';\r\n private cdRef = inject(ChangeDetectorRef);\r\n private destroyRef = inject(DestroyRef);\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n if(!this.isReadOnly){\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(res => {\r\n if (this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n \r\n if (this.control?.valueChanges) {\r\n this.control.valueChanges\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.cdRef.markForCheck());\r\n }\r\n }\r\n\r\n }\r\n\r\n selectionChange(event: MatSelectChange<any[]>){\r\n const selectedOptions: KeyValuePair[] = event.source.options.filter(op => op.selected).map(op => ({key: op.value, value: op.viewValue}));\r\n this.setValue(selectedOptions);\r\n if(!this.control.touched) this.control.markAsTouched();\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n mapKeyValuePairsToKeys(value: KeyValuePair[] | null): string[] {\r\n if(!value) return [];\r\n return value.map(item => item.key);\r\n }\r\n\r\n}\r\n","@if (isReadOnly) {\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [value]=\"control?.value\"\r\n type=\"multipleSelect\"\r\n ></app-info-item>\r\n} @else {\r\n @if(label){\r\n <app-form-label\r\n [label]=\"label\"\r\n [optional]=\"required || mandatory ? false : true\"\r\n [tooltip]=\"tooltip\"\r\n ></app-form-label>\r\n }\r\n <mat-form-field>\r\n <mat-select \r\n (selectionChange)=\"selectionChange($event)\" \r\n [value]=\"mapKeyValuePairsToKeys(value)\" \r\n multiple \r\n [placeholder]=\"placeholder || (label ? ('select' | translate) + ' ' + label : '')\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <mat-select-trigger>\r\n {{value?.[0]?.value || ''}}\r\n @if (value?.length > 1) {\r\n <span class=\"additional-selection\">\r\n (+{{value.length - 1}} {{value.length === 2 ? ('other' | translate) : ('others' | translate)}})\r\n </span>\r\n }\r\n </mat-select-trigger>\r\n @for (item of options; track item) {\r\n <mat-option [value]=\"item[key]\">{{item[displayedLabel]}}</mat-option>\r\n }\r\n </mat-select>\r\n @if (loading) {\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n }\r\n </mat-form-field>\r\n @if (control.touched) {\r\n <mat-error \r\n app-validation-errors \r\n [errors]=\"control.errors\" \r\n [customErrorMessages]=\"customErrorMessages\">\r\n </mat-error>\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n DestroyRef,\r\n forwardRef,\r\n inject,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { MatFormField, MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInput } from \"@angular/material/input\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { MatTimepickerModule } from \"@angular/material/timepicker\";\r\nimport { ValidationErrorsComponent } from \"../validation-errors/validation-errors.component\";\r\nimport { InfoItemComponent } from \"../info-item/info-item.component\";\r\nimport { FormLabelComponent } from \"../form-label/form-label.component\";\r\nimport { ControlValueAccessorDirective } from \"../control-value-accessor.directive\";\r\nimport { provideNativeDateAdapter } from \"@angular/material/core\";\r\nimport { TranslatePipe } from \"../../../../pipes/translate.pipe\";\r\n\r\n/**\r\n * Time picker component for selecting a time value.\r\n *\r\n * Supports both Reactive Forms and Template-driven forms.\r\n *\r\n * Inputs:\r\n * - `placeholder`: Placeholder text for the input field.\r\n * - `isReadOnly`: Renders the component in a read-only display mode.\r\n * - `label`: Text label displayed above the time picker.\r\n * - `required`: Hides the \"optional\" label and adds Angular's required validator.\r\n * - `mandatory`: Hides the \"optional\" label visually without adding validation.\r\n * - `customErrorMessages`: Object with custom validation error messages.\r\n * - `insideTable`: If true, renders styles suitable for inside-table use.\r\n *\r\n * Emits:\r\n * - The selected time is emitted as an ISO string (e.g. `\"2025-06-29T10:30:00.000Z\"`).\r\n *\r\n * Example usage:\r\n * ```html\r\n * <app-timepicker\r\n * formControlName=\"appointmentTime\"\r\n * label=\"Choose time\"\r\n * placeholder=\"Select time\"\r\n * [mandatory]=\"true\"\r\n * >\r\n * </app-timepicker>\r\n * ```\r\n */\r\n@Component({\r\n selector: \"app-timepicker\",\r\n templateUrl: \"./time-picker.component.html\",\r\n styleUrls: [\"./time-picker.component.scss\"],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n CommonModule,\r\n MatFormFieldModule,\r\n MatTimepickerModule,\r\n FormLabelComponent,\r\n InfoItemComponent,\r\n ValidationErrorsComponent,\r\n MatFormField,\r\n MatInput,\r\n FormsModule,\r\n TranslatePipe\r\n ],\r\n providers: [\r\n provideNativeDateAdapter(),\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TimepickerComponent),\r\n multi: true,\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class TimepickerComponent<Type>\r\n extends ControlValueAccessorDirective<Type>\r\n implements OnInit\r\n{\r\n private cdRef = inject(ChangeDetectorRef);\r\n private destroyRef = inject(DestroyRef);\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n if (!this.isReadOnly) {\r\n this.actionStateService.resetAction$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((res) => {\r\n if (this.control.enabled) {\r\n this.control.reset();\r\n }\r\n });\r\n\r\n if (this.control?.valueChanges) {\r\n this.control.valueChanges\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.cdRef.markForCheck());\r\n }\r\n }\r\n }\r\n\r\n timePickerChange(event: Date | null): void {\r\n if(this.control.hasError('invalidTimeFormat')) this.control.setErrors({ invalid: null });\r\n try {\r\n const newValue: string | null = event instanceof Date ? event.toISOString() : null;\r\n this.setValue(newValue);\r\n } catch (error){\r\n this.control.setErrors({ invalidTimeFormat: true });\r\n }\r\n }\r\n}\r\n","@if (isReadOnly) {\r\n <app-info-item\r\n class=\"info-item w-100\"\r\n [label]=\"label\"\r\n [insideTable]=\"insideTable\"\r\n [hasLabel]=\"!!label\"\r\n [value]=\"control?.value\"\r\n type=\"time\"\r\n ></app-info-item>\r\n} @else { \r\n @if(label){\r\n <app-form-label\r\n [label]=\"label\"\r\n [optional]=\"required || mandatory ? false : true\"\r\n [tooltip]=\"tooltip\"\r\n ></app-form-label>\r\n }\r\n <mat-form-field>\r\n <input\r\n matInput\r\n [matTimepicker]=\"timepicker\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"timePickerChange($event)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [placeholder]=\"placeholder || (label ? ('select' | translate) + ' ' + label : '')\"\r\n [disabled]=\"isDisabled\"\r\n />\r\n <mat-timepicker #timepicker (closed)=\"onTouchedFn()\" />\r\n <mat-timepicker-toggle [for]=\"timepicker\" matSuffix />\r\n </mat-form-field>\r\n @if (control.touched) {\r\n <mat-error\r\n app-validation-errors\r\n [errors]=\"control.errors\"\r\n [customErrorMessages]=\"customErrorMessages\"\r\n >\r\n </mat-error>\r\n } \r\n}\r\n","export function mapTo(path: string, source: any, allowUndefined = false, allowArrayWithSingleValue = false): any {\r\n let toBeReturned: any;\r\n if (source) {\r\n const attributes: string[] = path.split('.');\r\n toBeReturned = source[attributes[0]];\r\n for (let i = 1; i < attributes.length && toBeReturned != null; i++) toBeReturned = toBeReturned[attributes[i]];\r\n }\r\n\r\n\r\n // Check if the value is a valid date\r\n if (toBeReturned instanceof Date) {\r\n return toBeReturned;\r\n }\r\n\r\n // Return null for undefined or missing date values\r\n if (toBeReturned === undefined || toBeReturned === null) {\r\n return allowUndefined ? toBeReturned : null;\r\n }\r\n\r\n // Return '-' for other missing values\r\n let toReturn = toBeReturned || toBeReturned === 0 ? toBeReturned : '-';\r\n\r\n\r\n // // to make sure that if the returned data is undefined, we will override it by -\r\n // let toReturn = toBeReturned || toBeReturned === 0 ? toBeReturned : allowUndefined ? toBeReturned : '-';\r\n\r\n if (Array.isArray(toReturn) && toReturn.length == 1 && !allowArrayWithSingleValue) {\r\n toReturn = toReturn[0];\r\n }\r\n\r\n return toReturn;\r\n}","export enum Colors {\r\n RED = '#CA102F',\r\n GREEN = '#02C389',\r\n}","export enum Events {\r\n SCROLL = 'scroll',\r\n ENTER = 'enter',\r\n}","export enum Actions {\r\n VIEW = 'view',\r\n COPY = 'copy',\r\n EDIT = 'edit',\r\n CLOSE = 'close',\r\n DELETE = 'delete',\r\n DELETEPENDING = 'deletePendingContract',\r\n CHART = 'chart',\r\n APPROVE = 'approve',\r\n REJECT = 'reject',\r\n DETAILS = 'Details',\r\n START = 'Start',\r\n PREPARE = 'Prepare',\r\n CUSTOMACTION = 'customAction',\r\n CUSTOMACTIONMANAGE = 'customActionManage',\r\n CUSTOMACTIONEXTEND = 'customActionExtend',\r\n CUSTOMACTIONDETAILS = 'customActionDetails',\r\n STATUS = 'status',\r\n ALLOCATE = 'allocate'\r\n}\r\n","import {Directive, HostListener, Input} from '@angular/core';\r\nimport {Router} from '@angular/router';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[appSkipLocation]'\r\n})\r\nexport class SkipLocationDirective {\r\n @Input() appSkipLocation: any;\r\n\r\n constructor(private router: Router) {\r\n }\r\n\r\n @HostListener('click')\r\n onClick() {\r\n this.router.navigate([this.appSkipLocation], {skipLocationChange: true});\r\n }\r\n}\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from '@angular/forms';\r\nimport {MatDialog} from '@angular/material/dialog';\r\nimport {MatPaginator, PageEvent} from '@angular/material/paginator';\r\nimport {MatSort, Sort} from '@angular/material/sort';\r\nimport {\r\n MatCell,\r\n MatCellDef,\r\n MatColumnDef,\r\n MatHeaderCell,\r\n MatHeaderCellDef,\r\n MatHeaderRow,\r\n MatHeaderRowDef,\r\n MatRow,\r\n MatRowDef,\r\n MatTable,\r\n MatTableDataSource\r\n} from '@angular/material/table';\r\nimport {debounceTime, fromEvent, Subject} from 'rxjs';\r\n\r\nimport {DatePipe, JsonPipe, NgClass, NgFor, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault} from \"@angular/common\";\r\nimport {MatCheckbox} from \"@angular/material/checkbox\";\r\nimport {MatTooltip} from \"@angular/material/tooltip\";\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\r\nimport {MatSlideToggle} from \"@angular/material/slide-toggle\";\r\nimport {RouterLink} from \"@angular/router\";\r\n\r\nimport {ActionModel} from '../../../interfaces/action.interface';\r\nimport {mapTo} from '../../../helpers/shared.helper';\r\nimport {CustomSearchableComponent, InputComponent} from '../form-field';\r\nimport {Colors} from '../../../enums/colors.enum';\r\nimport {Events} from '../../../enums/events.enum';\r\nimport {Actions} from '../../../enums/actions.enum';\r\nimport {SkipLocationDirective} from '../../../directives/skip-location.directive';\r\nimport { CoreI18nService } from '../../../services';\r\nimport { TranslatePipe } from '../../../pipes/translate.pipe';\r\n\r\nconst matModules = [\r\n MatTable,\r\n MatColumnDef, MatHeaderCellDef,\r\n MatCheckbox, NgSwitch, MatCellDef, NgSwitchCase,\r\n NgClass, DatePipe, InputComponent, ReactiveFormsModule, MatTooltip,\r\n MatMenu, MatSlideToggle, MatMenuTrigger, MatMenuItem, MatSort, MatHeaderRowDef, MatHeaderRow, MatRow, MatRowDef,\r\n MatHeaderCell, MatCell, CustomSearchableComponent\r\n]\r\n\r\n@Component({\r\n selector: 'app-table',\r\n standalone: true,\r\n imports: [NgFor, NgIf, matModules, FormsModule, NgSwitchDefault, SkipLocationDirective, MatPaginator, TranslatePipe],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class TableComponent implements OnInit {\r\n @ViewChild('table', {read: ElementRef}) public matTableRef!: ElementRef;\r\n control = new FormControl(null);\r\n serviceDetailForm!: FormGroup;\r\n @Input() columns: any;\r\n @Input() isError: any = false;\r\n @Input() isLoading: any = false;\r\n @Input() customMessage!: string;\r\n @Input() columnsConfig: any;\r\n @Input() loadData: any;\r\n @Input() actions: ActionModel[] = [];\r\n @Input() className = '';\r\n @Input() totalElements: number = 0;\r\n @Input() showPagination: boolean = false;\r\n @Input() pageIndex: number = 0;\r\n @Input() pageSize: number = 15;\r\n @Input() sortDisabled: boolean = false;\r\n @Input() useScroll: boolean = false;\r\n @Output() serviceRowSelect = new EventEmitter<any>();\r\n @Output() selectPage = new EventEmitter<any>();\r\n @Output() rowClicked = new EventEmitter<any>();\r\n @Output() autoCompleteValueSelected = new EventEmitter<any>();\r\n @Output() selectValueSelected = new EventEmitter<any>();\r\n @Output() sortChanged = new EventEmitter<Sort>();\r\n @Output() inputCellChanged = new EventEmitter<any>()\r\n @Output() pageScroll = new EventEmitter<any>();\r\n @Output() toggleChanged = new EventEmitter<any>();\r\n @Output() eventClicked = new EventEmitter<any>();\r\n public dataSource = new MatTableDataSource<any>();\r\n @ViewChild('tableSort') tableSort = new MatSort();\r\n localControl = new FormControl()\r\n lang: string = '';\r\n spans = [];\r\n ctrl = new FormControl();\r\n protected readonly Actions = Actions;\r\n private unSubscribe = new Subject;\r\n @Input() hasPaginator = false;\r\n @Input() currentPage = 0;\r\n @Output() pageChange = new EventEmitter<any>();\r\n form: FormGroup;\r\n\r\n constructor(\r\n public dialog: MatDialog,\r\n public i18Service: CoreI18nService,\r\n private fb: FormBuilder\r\n ) {}\r\n\r\n @Input() set keyWord(value: string) {\r\n this.applyFilter(value)\r\n };\r\n\r\n _rows: any;\r\n\r\n get rows(): any {\r\n return this._rows;\r\n }\r\n\r\n @Input() set rows(value: any) {\r\n this._rows = value;\r\n this.dataSource = new MatTableDataSource(this.rows);\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log(this.rows)\r\n }\r\n\r\n pageChanged(event: PageEvent) {\r\n this.pageSize = event.pageSize;\r\n this.currentPage = event.pageIndex;\r\n this.pageChange.emit({pageSize: this.pageSize, pageIndex: this.currentPage})\r\n }\r\n\r\n ngAfterViewInit() {\r\n // this.tableSort.disableClear = true;\r\n // this.tableSort.disabled = this.sortDisabled;\r\n this.dataSource.sort = this.tableSort;\r\n //this.dataSource.paginator = this.paginator;\r\n this.handleScroll()\r\n }\r\n\r\n applyFilter(keyWord: string) {\r\n this.dataSource.filter = keyWord\r\n }\r\n\r\n truncateName(text: string) {\r\n if (text) {\r\n let characters = text.match(/\\b(\\w)/g);\r\n if (characters) {\r\n return characters.join('');\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n sortChange(sortState: Sort) {\r\n const data = this.dataSource.data.slice();\r\n if (!sortState.active || sortState.direction === '') {\r\n this.dataSource.data = data;\r\n return;\r\n }\r\n this.sortChanged.emit(sortState);\r\n }\r\n\r\n mapText(path: string, source: any) {\r\n return mapTo(path, source);\r\n }\r\n\r\n getSlaColor(min: number, max: number): string {\r\n const slaColor = min >= max ? Colors.RED : Colors.GREEN;\r\n return slaColor\r\n }\r\n\r\n\r\n clickRow(row: any) {\r\n this.rowClicked.emit(row)\r\n }\r\n\r\n emitElement(row: any) {\r\n this.eventClicked.emit(row)\r\n }\r\n\r\n toggleValueChange(e: any, element?: any) {\r\n this.toggleChanged.emit({e, element})\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubscribe.next;\r\n this.unSubscribe.complete();\r\n }\r\n\r\n\r\n parseInt(value: string) {\r\n return parseInt(value)\r\n }\r\n\r\n private handleScroll() {\r\n fromEvent(this.matTableRef.nativeElement, Events.SCROLL)\r\n .pipe(debounceTime(200))\r\n .subscribe((e: any) => this.onTableScroll(e));\r\n }\r\n\r\n viewForm(url: string) {\r\n window.open('/group/i-gate/wm-bpm/forms?formId=' + url);\r\n }\r\n\r\n private onTableScroll(e: any): void {\r\n const tableViewHeight = e.target.offsetHeight // viewport: ~500px\r\n const tableScrollHeight = e.target.scrollHeight // length of all table\r\n const scrollLocation = e.target.scrollTop; // how far user scrolled\r\n const scrollDownLimit = tableScrollHeight - tableViewHeight;\r\n const isScrollingVertically = e.target.scrollHeight > e.target.offsetHeight;\r\n if (isScrollingVertically && (scrollLocation + 2) > scrollDownLimit) {\r\n this.pageScroll.emit(true)\r\n }\r\n }\r\n}\r\n","<div #table class=\"table-container table-responsive sticky-table\">\r\n @if (!isLoading) {\r\n <ng-container>\r\n @if (dataSource.filteredData?.length! > 0) {\r\n <table #tableSort=\"matSort\" (matSortChange)=\"sortChange($event)\" [dataSource]=\"dataSource\" class=\"primary-table {{ className }}\" mat-table matSort>\r\n @for (column of columns; track $index; let i = $index) {\r\n <ng-container>\r\n <!-- Add a check to ensure 'columnsConfig' and 'columnsConfig[i]' are defined before using them -->\r\n\r\n @if (columnsConfig && columnsConfig[i]) {\r\n <ng-container>\r\n <ng-container [matColumnDef]=\"column\" [stickyEnd]=\"!!columnsConfig[i].stickyEnd!\">\r\n @if (!columnsConfig[i].notSortable) {\r\n <ng-container>\r\n <th *matHeaderCellDef [ngClass]=\"{ 'text-end': columnsConfig[i].type === 'actions' }\" mat-header-cell mat-sort-header>\r\n @if (columnsConfig[i].type !== 'checkbox' || ( this.columnsConfig[i]?.type! == 'actions' && this.columnsConfig[i]?.actions?.length === 0)) {\r\n <ng-container>\r\n @if (!(this.columnsConfig[i].type == 'actions' && this.columnsConfig[i].actions.length === 0)) {\r\n <div class=\"d-flex align-items-center th-center\">\r\n <div class=\"mx-1 fc-{{ columnsConfig[i].fontColor }}\">\r\n {{ columnsConfig[i].label | translate }}\r\n </div>\r\n @if (columnsConfig[i].slaMax) {\r\n <ds-sla\r\n [canvasScale]=\"'40'\"\r\n [innerLineWidth]=\"'3'\"\r\n [maxValue]=\"columnsConfig[i].slaMax\"\r\n [outerLineColor]=\"'limegreen'\"\r\n [outerLineWidth]=\"'3'\"\r\n [value]=\"columnsConfig[i].slaValue\"\r\n class=\"table-header-sla my-1\"\r\n ></ds-sla>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n } @if (columnsConfig[i].type == 'checkbox') {\r\n <mat-checkbox class=\"checkbox\"></mat-checkbox>\r\n }\r\n </th>\r\n </ng-container>\r\n } @if (columnsConfig[i].notSortable) {\r\n <ng-container>\r\n <th *matHeaderCellDef [ngClass]=\"{ 'text-end': columnsConfig[i].type === 'actions' }\" mat-header-cell>\r\n <div class=\"d-flex align-items-center th-center\">\r\n <div class=\"mx-1\">\r\n {{ columnsConfig[i].label | translate }}\r\n </div>\r\n @if (columnsConfig[i].slaMax) {\r\n <ds-sla\r\n [canvasScale]=\"'50'\"\r\n [innerLineWidth]=\"'3'\"\r\n [maxValue]=\"columnsConfig[i].slaMax\"\r\n [outerLineColor]=\"'limegreen'\"\r\n [outerLineWidth]=\"'3'\"\r\n [value]=\"columnsConfig[i].slaValue\"\r\n class=\"table-header-sla my-1\"\r\n ></ds-sla>\r\n }\r\n </div>\r\n </th>\r\n </ng-container>\r\n }\r\n\r\n <td *matCellDef=\"let element; let j = index\" mat-cell>\r\n <ng-container [ngSwitch]=\"columnsConfig[i].type\">\r\n <!-- <a target=\"_blank\"-->\r\n <!-- routerLink=\"/inbox\" [queryParams]=\"{ id: element[column] }\"-->\r\n <!-- class=\"fc-black text-decoration-underline fw-medium\" [ngClass]=\"columnsConfig[i].type\" *ngSwitchCase=\"'link'\">-->\r\n <!-- {{ element[column] }}-->\r\n <!-- </a>-->\r\n <span *ngSwitchCase=\"'serial'\" [ngClass]=\"columnsConfig[i].type\" class=\"fc-coral fw-medium\">\r\n {{ j+1 }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'formId'\" (click)=\"viewForm(element[column])\" [ngClass]=\"columnsConfig[i].type\" class=\"fc-coral cursor-pointer text-decoration-underline fw-medium\">\r\n {{ element[column] }}\r\n </span>\r\n <!-- <span\r\n *ngSwitchCase=\"'link'\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"fc-black text-decoration-underline fw-medium\"\r\n >\r\n {{ element[column] }}\r\n </span>-->\r\n\r\n <span *ngSwitchCase=\"'linkWithIcon'\" [appSkipLocation]=\"columnsConfig[i].link\" [ngClass]=\"columnsConfig[i].type\" class=\"fc-black text-decoration-underline fw-medium\">\r\n <ds-icon class=\"fs-20 fc-black\" icon=\" {{ columnsConfig[i].icon }}\"></ds-icon>\r\n <span class=\"fs-13 fc-coral px-1 text-decoration-underline\">{{ element[column] }}</span>\r\n </span>\r\n <span *ngSwitchCase=\"'underLineWithIcon'\" [ngClass]=\"columnsConfig[i].type\" class=\"fc-black text-decoration-underline fw-medium\">\r\n <ds-icon class=\"fs-20 fc-black\" icon=\" {{ columnsConfig[i].icon }}\"></ds-icon>\r\n <span class=\"fs-13 fc-coral px-1 text-decoration-underline\">{{ element[column] }}</span>\r\n </span>\r\n <mat-checkbox *ngSwitchCase=\"'checkbox'\" checked=\"{{ columnsConfig[i].checked }}\" class=\"checkbox\" disabled=\"{{ columnsConfig[i].disabled }}\"> </mat-checkbox>\r\n <span *ngSwitchCase=\"'ServiceDetails'\" [ngClass]=\"columnsConfig[i].type\" class=\"cursor-pointer\">\r\n {{ element[column] }}\r\n </span>\r\n <span *ngSwitchCase=\"'dateOnly'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center gap-2 text-nowrap\">\r\n <span class=\"sfi sfi-calendar-o fc-coral fs-18\"></span>\r\n {{ element[column] | date : \"MMM d, y\" }}\r\n </span>\r\n <span *ngSwitchCase=\"'Search'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center\">\r\n <app-input [formControl]=\"ctrl\" [placeholder]=\"'Search for item '\" [showLabel]=\"false\" class=\"\" className=\"no-padding \" prefix=\"sfi-search fs-16\" type=\"text\"> </app-input>\r\n </span>\r\n <span *ngSwitchCase=\"'Number'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center\">\r\n <app-input [formControl]=\"ctrl\" [placeholder]=\"'number'\" [showLabel]=\"false\" class=\"\" className=\"no-padding\" type=\"text\"> </app-input>\r\n </span>\r\n <span *ngSwitchCase=\"'dateFromTo'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center\">\r\n <span class=\"sfi sfi-clock fc-coral\"></span>\r\n <span class=\"mx-2\">\r\n {{ element?.date.from }} @if (element?.date.to) {\r\n <ng-container> : {{ element?.date.to }} </ng-container>\r\n }\r\n </span>\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'dateTime'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center gap-1 flex-wrap\">\r\n <span class=\"sfi sfi-calendar-o fc-dark-gray fs-20\"></span>\r\n {{ element[column] | date : \"MMM d, y, h:mm a\" }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'singleTimeOnly'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center gap-1 flex-wrap\">\r\n {{ element[column] | date : \"h:mm a\" }}\r\n </span>\r\n <!--dir=\"ltr\" and text-left for English text on ar page -->\r\n <span *ngSwitchCase=\"'timeOnly'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center gap-1 flex-wrap text-nowrap text-left\" dir=\"ltr\">\r\n <!-- -->\r\n {{ mapText(columnsConfig[i].firstVal, element[column]) | date : \"h:mm a\" }} @if (mapText(columnsConfig[i].secondVal, element[column])) {\r\n <ng-container>\r\n - {{ mapText(columnsConfig[i].secondVal, element[column]) | date : \"h:mm a\" }}\r\n </ng-container>\r\n }\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'multipleRows'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center gap-1 flex-wrap\">\r\n <!-- -->\r\n @if (!element[column].monthlyFineEscalation) {\r\n <div>\r\n {{ element[column].fixedFineValue }} {{ \"global.SAR\" | translate }}\r\n </div>\r\n } @if (element[column].monthlyFineEscalation) {\r\n <div>\r\n <br />\r\n {{ element[column].firstTimeFine }} {{ \"global.SAR\" | translate }} <br />\r\n <br />\r\n {{ element[column].secondTimeFine }} {{ \"global.SAR\" | translate }} <br />\r\n <br />\r\n {{ element[column].thirdTimeFine }} {{ \"global.SAR\" | translate }} <br />\r\n <br />\r\n </div>\r\n }\r\n </span>\r\n\r\n <div *ngSwitchCase=\"'sla'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-inline-flex align-items-center\">\r\n <!-- <app-sla [value]=\"element?.SLA.value\" [maxValue]=\"element?.SLA.max\" [canvasScale]=\"38\" -->\r\n <!-- class=\"font-9 fw-medium\" [outerLineColor]=\"getSlaColor(element?.SLA.value, element?.SLA.max)\">-->\r\n <!-- </app-sla>-->\r\n\r\n <ds-sla\r\n [attr.outerLineColor]=\"\r\n getSlaColor(element?.SLA.value, element?.SLA.max)\r\n \"\r\n [canvasScale]=\"'55'\"\r\n [innerLineWidth]=\"'3'\"\r\n [maxValue]=\"element?.SLA?.max\"\r\n [outerLineWidth]=\"'3'\"\r\n [value]=\"element?.SLA?.value\"\r\n ></ds-sla>\r\n </div>\r\n <div *ngSwitchCase=\"'slaProgress'\">\r\n <!-- <mat-sp-->\r\n\r\n @if (element[column]?.percentage >= 0) {\r\n <ds-sla\r\n [canvasScale]=\"'55'\"\r\n [customValue]=\"element[column]?.percentage + '%'\"\r\n [innerLineWidth]=\"'3'\"\r\n [maxValue]=\"'100'\"\r\n [outerLineColor]=\"\r\n getSlaColor(element[column]?.percentage, 100)\r\n \"\r\n [outerLineWidth]=\"'3'\"\r\n [value]=\"element[column]?.percentage\"\r\n ></ds-sla>\r\n } @else {\r\n <ng-template>Not started</ng-template>\r\n }\r\n </div>\r\n <div *ngSwitchCase=\"'Priority'\" [ngClass]=\"columnsConfig[i].type\" class=\"{{ element[column] }}\">\r\n {{ element[column] }}\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'serviceStatus'\" [ngClass]=\"columnsConfig[i].type\" class=\"{{ element[column] }}\">\r\n <span [ngClass]=\"element[column] == 'FALSE' ? 'green' : 'red'\" class=\"dot-status\"></span>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'image'\" [ngClass]=\"columnsConfig[i].type\" class=\"img-card table-img\">\r\n <img [src]=\"element?.image\" alt=\"\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" />\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'employee'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-flex align-items-center gap-2 text-nowrap\">\r\n <ds-avatar [image]=\"'https://igateapp.stc.com.sa'+element[column]?.['imageUrl']\" size=\"x-small\"> </ds-avatar>\r\n <span>{{ (element[column]?.['name']) }}</span>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'progress_group'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-flex gap-1\">\r\n <ng-container *ngFor=\"let item of element[column]\">\r\n <div class=\"progress-container default-progress medium radius-0\" matTooltip=\"Team assignment {{ item.value }}%\" matTooltipPosition=\"below\">\r\n <div [style.width.%]=\"item.value\" class=\"progress-bar bg-color-{{ item.color }}\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngSwitchCase=\"'input'\" [ngClass]=\"columnsConfig[i].type\" class=\"\">\r\n <app-input\r\n (input)=\"inputCellChanged.emit({element,column,i})\"\r\n [(ngModel)]=\"element[column]\"\r\n [min]=\"0\"\r\n [placeholder]=\"element[column]\"\r\n class=\"w-100\"\r\n className=\" no-padding w-100\"\r\n type=\"number\"\r\n value=\"{{ element[column] }}\"\r\n >\r\n </app-input>\r\n </div>\r\n <div *ngSwitchCase=\"'autoComplete'\"></div>\r\n <div *ngSwitchCase=\"'select'\" [ngClass]=\"columnsConfig[i].type\" class=\"\">\r\n <app-custom-searchable\r\n (selectedValue)=\"selectValueSelected.emit($event)\"\r\n [isSearchable]=\"columnsConfig[i].config?.isSearchable\"\r\n [key]=\"columnsConfig[i]?.key\"\r\n [displayedLabel]=\"columnsConfig[i]?.displayedLable\"\r\n [options]=\"columnsConfig[i]?.options\"\r\n [postKey]=\"columnsConfig[i]?.postKey\"\r\n [showLabel]=\"false\"\r\n className=\"no-padding w-100\"\r\n >\r\n </app-custom-searchable>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'status'\" [ngClass]=\"'New' + columnsConfig[i].type\" class=\"d-flex align-items-center gap-2\">\r\n @if (element[column]) {\r\n <ds-status [status]=\"element[column]?.status\" class=\"fs-12\">\r\n {{ element[column]?.title | translate }}\r\n </ds-status>\r\n } @if (element[column]?.reason) {\r\n <span\r\n (click)=\"$event.stopPropagation()\"\r\n [matMenuTriggerFor]=\"reasonMenu\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{\r\n columnsConfig[i].type\r\n }} fc-red underline cursor-pointer\"\r\n >\r\n Show reason\r\n </span>\r\n }\r\n\r\n <mat-menu #reasonMenu=\"matMenu\" class=\"p-4 text-center\">\r\n <span class=\"fs-14\">\r\n {{ element[column]?.reason }}\r\n </span>\r\n </mat-menu>\r\n </div>\r\n <div *ngSwitchCase=\"'toggle'\" [ngClass]=\"columnsConfig[i].type\">\r\n <mat-slide-toggle (change)=\"toggleValueChange($event, element)\" [checked]=\"element[column] == 1\" [disabled]=\"false\"></mat-slide-toggle>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'customToggle'\" [ngClass]=\"columnsConfig[i].type\">\r\n <mat-slide-toggle (change)=\"toggleValueChange($event, element)\" [checked]=\"element[column] == 7\" [disabled]=\"element[column] != 1\"></mat-slide-toggle>\r\n </div>\r\n <div *ngSwitchCase=\"'meetingStatus'\" [ngClass]=\"columnsConfig[i].type\" class=\"{{ columnsConfig[i].type }}\">\r\n @if (element[column].label == 'Finished') {\r\n <span class=\" {{ element[column].label }} status \">\r\n {{ element[column].label }}\r\n </span>\r\n } @if (element[column].label != 'Finished') {\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"Finished d-flex flex-column align-items-center justify-content-center py-1 fc-black\">\r\n <span class=\"fs-11 fw-medium mb-1\"> {{ element[column].hours }}</span>\r\n <span class=\"fs-10 fw-light\">HRS</span>\r\n </div>\r\n <div class=\"Finished d-flex flex-column align-items-center justify-content-center py-1 fc-black\">\r\n <span class=\"fs-11 fw-medium mb-1\"> {{ element[column].min }}</span>\r\n <span class=\"fs-10 fw-light\">MINS</span>\r\n </div>\r\n <div class=\"Finished d-flex flex-column align-items-center justify-content-center py-1 fc-black\">\r\n <span class=\"fs-11 fw-medium mb-1\"> {{ element[column].sec }}</span>\r\n <span class=\"fs-10 fw-light\">SECS</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <span\r\n *ngSwitchCase=\"'number'\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{ columnsConfig[i].type }} {{\r\n element[column] ? 'underline' : ''\r\n }}\"\r\n >\r\n {{ element[column] ? element[column] : 0 }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'currency'\" [ngClass]=\"columnsConfig[i].type\" class=\"{{ columnsConfig[i].type }}\">\r\n {{ element[column] ? parseInt(element[column]).toFixed(2) + (columnsConfig[i].currency | translate) : \"-\" }}\r\n </span>\r\n <span *ngSwitchCase=\"'active'\" [ngClass]=\"columnsConfig[i].type\" class=\"{{ columnsConfig[i].type }}\">\r\n <ds-icon [ngClass]=\"element[column] ? 'fc-green' : 'fc-gray'\" icon=\"check-circle-f fs-30\"></ds-icon>\r\n </span>\r\n <div\r\n *ngSwitchCase=\"'sync'\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{\r\n columnsConfig[i].type\r\n }} d-flex align-items-center gap-2\"\r\n >\r\n <svg fill=\"none\" height=\"19\" viewBox=\"0 0 18 19\" width=\"18\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M14.25 13.2604C13.9425 13.2604 13.6875 12.9913 13.6875 12.6667V5.14583C13.6875 4.59958 13.2675 4.15625 12.75 4.15625H8.625C8.3175 4.15625 8.0625 3.88708 8.0625 3.5625C8.0625 3.23792 8.3175 2.96875 8.625 2.96875H12.75C13.89 2.96875 14.8125 3.9425 14.8125 5.14583V12.6667C14.8125 12.9913 14.5575 13.2604 14.25 13.2604Z\"\r\n fill=\"#FF375E\"\r\n />\r\n <path\r\n d=\"M10.5 6.13549C10.3725 6.13549 10.245 6.088 10.14 6.00092L7.88999 4.02175C7.76249 3.91092 7.6875 3.74465 7.6875 3.56257C7.6875 3.38048 7.76249 3.22214 7.88999 3.10339L10.14 1.12422C10.38 0.910471 10.7325 0.950084 10.935 1.20342C11.1375 1.45675 11.1 1.82883 10.86 2.04258L9.12751 3.56257L10.86 5.08255C11.1 5.29631 11.13 5.66839 10.935 5.92172C10.8225 6.06422 10.6575 6.13549 10.5 6.13549Z\"\r\n fill=\"#FF375E\"\r\n />\r\n <path\r\n d=\"M14.25 18.0105C12.6975 18.0105 11.4375 16.6805 11.4375 15.0417C11.4375 13.403 12.6975 12.073 14.25 12.073C15.8025 12.073 17.0625 13.403 17.0625 15.0417C17.0625 16.6805 15.8025 18.0105 14.25 18.0105ZM14.25 13.2605C13.32 13.2605 12.5625 14.0601 12.5625 15.0417C12.5625 16.0234 13.32 16.823 14.25 16.823C15.18 16.823 15.9375 16.0234 15.9375 15.0417C15.9375 14.0601 15.18 13.2605 14.25 13.2605Z\"\r\n fill=\"#FF375E\"\r\n />\r\n <path\r\n d=\"M9.375 16.0312H5.25C4.11 16.0312 3.1875 15.0574 3.1875 13.8541V6.33325C3.1875 6.00867 3.4425 5.7395 3.75 5.7395C4.0575 5.7395 4.3125 6.00867 4.3125 6.33325V13.8541C4.3125 14.4003 4.7325 14.8437 5.25 14.8437H9.375C9.6825 14.8437 9.9375 15.1128 9.9375 15.4374C9.9375 15.762 9.6825 16.0312 9.375 16.0312Z\"\r\n fill=\"#FF375E\"\r\n />\r\n <path\r\n d=\"M7.4997 18.0104C7.3422 18.0104 7.17721 17.9391 7.06471 17.7966C6.86221 17.5433 6.89969 17.1712 7.13969 16.9574L8.87219 15.4375L7.13969 13.9175C6.89969 13.7037 6.86971 13.3316 7.06471 13.0783C7.26721 12.825 7.61971 12.7933 7.85971 12.9991L10.1097 14.9783C10.2372 15.0891 10.3122 15.2554 10.3122 15.4375C10.3122 15.6195 10.2372 15.7779 10.1097 15.8966L7.85971 17.8758C7.75471 17.9629 7.6272 18.0104 7.4997 18.0104Z\"\r\n fill=\"#FF375E\"\r\n />\r\n <path\r\n d=\"M3.75 6.927C2.1975 6.927 0.9375 5.597 0.9375 3.95825C0.9375 2.3195 2.1975 0.989502 3.75 0.989502C5.3025 0.989502 6.5625 2.3195 6.5625 3.95825C6.5625 5.597 5.3025 6.927 3.75 6.927ZM3.75 2.177C2.82 2.177 2.0625 2.97659 2.0625 3.95825C2.0625 4.93992 2.82 5.7395 3.75 5.7395C4.68 5.7395 5.4375 4.93992 5.4375 3.95825C5.4375 2.97659 4.68 2.177 3.75 2.177Z\"\r\n fill=\"#FF375E\"\r\n />\r\n </svg>\r\n {{ element[column] }}\r\n </div>\r\n\r\n <ng-container *ngSwitchCase=\"'clickable'\">\r\n @if (element?.[column]) {\r\n <span\r\n #statusMenuTrigger=\"matMenuTrigger\"\r\n (click)=\"$event.stopPropagation()\"\r\n [matMenuTriggerFor]=\"descMenu\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{\r\n columnsConfig[i].type\r\n }} fc-coral underline cursor-pointer\"\r\n >\r\n {{ columnsConfig[i].clickableText | translate }}\r\n </span>\r\n }\r\n\r\n <mat-menu #descMenu=\"matMenu\" class=\"p-4 text-center\">\r\n <span class=\"fs-14\">\r\n {{ element[column] }}\r\n </span>\r\n </mat-menu>\r\n </ng-container>\r\n\r\n <span\r\n #statusMenuTrigger=\"matMenuTrigger\"\r\n (click)=\"$event.stopPropagation()\"\r\n *ngSwitchCase=\"'translatedClickable'\"\r\n [matMenuTriggerFor]=\"descMenuTranslated\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{\r\n columnsConfig[i].type\r\n }} fc-coral underline cursor-pointer\"\r\n >\r\n {{ columnsConfig[i].clickableText | translate }}\r\n <!-- {{ 'global.view' | translate}} -->\r\n </span>\r\n\r\n <mat-menu #descMenuTranslated=\"matMenu\" class=\"p-4 text-center\">\r\n <span class=\"fs-14\">\r\n {{ columnsConfig[i].arKey ? i18Service.language == \"ar\" ? mapText(columnsConfig[i].arKey, element[column]) : mapText(columnsConfig[i].enKey, element[column]) : element[column] ?\r\n element[column] : \"-\" }}\r\n </span>\r\n </mat-menu>\r\n\r\n <span\r\n #statusMenuTrigger=\"matMenuTrigger\"\r\n (click)=\"$event.stopPropagation()\"\r\n *ngSwitchCase=\"'conditionalClickable'\"\r\n [matMenuTriggerFor]=\"descConditionalMenu\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{\r\n columnsConfig[i].type\r\n }} fc-coral underline cursor-pointer\"\r\n >\r\n @if (element[column] && element[column] != 'null') {\r\n <span>{{ columnsConfig[i].clickableText | translate }}</span>\r\n }\r\n <!-- {{ 'global.view' | translate}} -->\r\n </span>\r\n\r\n <mat-menu #descConditionalMenu=\"matMenu\" class=\"p-4 text-center\">\r\n <span class=\"fs-14\">\r\n {{ element[column] }}\r\n </span>\r\n </mat-menu>\r\n\r\n <span (click)=\"$event.stopPropagation()\" *ngSwitchCase=\"'dropdown'\" [matMenuTriggerFor]=\"dropdownMenu\" [ngClass]=\"columnsConfig[i].type\" class=\"{{ columnsConfig[i].type }} cursor-pointer\">\r\n {{ columnsConfig[i].arKey ? i18Service.language == \"ar\" ? mapText(columnsConfig[i].arKey, element[column]) : mapText(columnsConfig[i].enKey, element[column]) : element[column] ? element[column] :\r\n \"-\" }}\r\n <!-- <span *ngFor=\"let item of element[column]\">\r\n {{item.id}}\r\n </span> -->\r\n\r\n <ds-icon class=\"fc-black fw-medium\" icon=\"arrow\"></ds-icon>\r\n </span>\r\n\r\n <mat-menu #dropdownMenu=\"matMenu\" class=\"p-4 text-center\">\r\n <ng-container *ngSwitchCase=\"'dropdown'\">\r\n <span class=\"fs-12 fc-black\" mat-menu-item>\r\n <!-- {{translateService.currentLang == 'ar' ? item.groupNameAr : item.groupNameEn}} -->\r\n {{ columnsConfig[i].arKey ? i18Service.language == \"ar\" ? mapText(columnsConfig[i].arKey, element[column]) : mapText(columnsConfig[i].enKey, element[column]) : element[column] ?\r\n element[column] : \"-\" }}\r\n </span>\r\n </ng-container>\r\n </mat-menu>\r\n\r\n <span\r\n *ngSwitchCase=\"'formatNumber'\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n matTooltip=\"{{\r\n element[column] > 1000 ? element[column] : ''\r\n }}\"\r\n >\r\n {{ element[column] }}\r\n </span>\r\n\r\n <div *ngSwitchCase=\"'group'\" [ngClass]=\"columnsConfig[i].type\" class=\"text-nowrap d-flex align-items-center\"></div>\r\n\r\n <div *ngSwitchCase=\"'company'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-flex align-items-center\">\r\n <span class=\"img-card circled-img\">\r\n <img [src]=\"element?.image\" alt=\"\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" />\r\n </span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"full-name\">{{ element[column] }}</span>\r\n </div>\r\n\r\n <span *ngSwitchCase=\"'translated'\" [ngClass]=\"columnsConfig[i].type\" class=\"text-nowrap\">\r\n {{ element[column] }}\r\n </span>\r\n <span *ngSwitchCase=\"'title'\" [ngClass]=\"columnsConfig[i].type\" class=\"text-nowrap\">\r\n {{ element[column]?.title }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'maxWidth'\" [ngClass]=\"columnsConfig[i].type\">\r\n {{ element[column]?.title }}\r\n </span>\r\n\r\n <span *ngSwitchCase=\"'progress'\" [ngClass]=\"columnsConfig[i].type\">\r\n <div class=\"Progress\">\r\n <div class=\"progress-container default-progress\">\r\n <div\r\n [style.width.%]=\"\r\n (element[column].consumed! / element[column].total!) *\r\n 100\r\n \"\r\n class=\"progress-bar\"\r\n ></div>\r\n </div>\r\n <div class=\"Progress__footer\">\r\n <div></div>\r\n <div>\r\n <span class=\"fs-12\">\r\n <span>{{ element[column].consumed }}</span>\r\n <span>/</span>\r\n <span class=\"fc-silver\">{{ element[column].total }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </span>\r\n\r\n <div *ngSwitchCase=\"'subsidiary'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-flex align-items-center gap-2\">\r\n <img [alt]=\"element[column]?.title\" src=\"assets/subsidiaries/ids/{{ element[column]?.id }}.png\" />\r\n <!-- <span class=\"full-name\">{{element[column]}}</span>-->\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'Service'\" [ngClass]=\"columnsConfig[i].type\" class=\"d-flex align-items-center gap-2\">\r\n <svg fill=\"none\" height=\"35\" viewBox=\"0 0 34 35\" width=\"34\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect fill=\"#FF375E\" fill-opacity=\"0.1\" height=\"33.5\" rx=\"4\" width=\"33.5\" y=\"0.75\" />\r\n <path\r\n d=\"M24.213 17.0338H22.1448L21.4532 15.1884C21.2221 14.5845 20.649 14.1622 19.9761 14.1592H13.5315C12.8586 14.1622 12.2847 14.5838 12.0582 15.1771L12.0544 15.1876L11.3628 17.033H9.29312C9.05532 17.033 8.86328 17.2258 8.86328 17.4629V19.1845C8.86328 19.4223 9.05607 19.6143 9.29312 19.6143H10.2076L9.69896 20.378C9.53242 20.6233 9.4334 20.9263 9.4334 21.2519C9.4334 21.2527 9.4334 21.2527 9.4334 21.2534V26.0702C9.4334 26.308 9.62619 26.5 9.86324 26.5H12.1595C12.3973 26.5 12.5893 26.3072 12.5893 26.0702V24.7791H20.91V26.0702C20.91 26.308 21.1028 26.5 21.3399 26.5H23.6361C23.8739 26.5 24.066 26.3072 24.066 26.0702V21.2519C24.066 21.2512 24.066 21.2512 24.066 21.2504C24.066 20.9248 23.9669 20.6218 23.7974 20.3705L23.8011 20.3757L23.2925 19.6121H24.207C24.4448 19.6121 24.6368 19.4193 24.6368 19.1822V17.4606C24.6361 17.2258 24.4478 17.036 24.2145 17.0315L24.213 17.0338ZM12.8654 15.4915C12.9711 15.2176 13.2314 15.0271 13.5368 15.0264H19.9798C20.2852 15.0271 20.5455 15.2184 20.649 15.487L20.6505 15.4922L21.8747 18.7569H11.6359L12.8654 15.4915ZM23.2138 23.9202H10.2983V21.2542C10.2983 21.2534 10.2983 21.2534 10.2983 21.2527C10.2983 21.1049 10.3433 20.9676 10.4199 20.8536L10.4184 20.8558L11.245 19.6151H22.2618L23.0885 20.8558C23.1635 20.9668 23.2085 21.1049 23.2085 21.2519C23.2085 21.2527 23.2085 21.2527 23.2085 21.2534L23.2138 23.9202ZM9.72896 17.895H11.0357L10.7132 18.7561H9.72071L9.72896 17.895ZM11.7379 25.6411H10.2983V24.7799H11.7334L11.7379 25.6411ZM23.2153 25.6411H21.775V24.7799H23.21L23.2153 25.6411ZM23.7869 18.7546H22.7899L22.4674 17.8935H23.7831L23.7869 18.7546ZM12.1632 20.4762C11.2915 20.4762 10.5856 21.1829 10.5856 22.0538C10.5856 22.9248 11.2923 23.6314 12.1632 23.6314C13.0349 23.6314 13.7408 22.9248 13.7408 22.0538C13.7408 21.1821 13.0342 20.4762 12.1632 20.4762V20.4762ZM12.1632 22.7725C11.7671 22.7725 11.4461 22.4514 11.4461 22.0553C11.4461 21.6592 11.7671 21.3382 12.1632 21.3382C12.5593 21.3382 12.8804 21.6592 12.8804 22.0553C12.8804 22.4514 12.5593 22.7725 12.1632 22.7725V22.7725ZM21.3444 20.4762C20.4727 20.4762 19.7668 21.1829 19.7668 22.0538C19.7668 22.9248 20.4735 23.6314 21.3444 23.6314C22.2161 23.6314 22.922 22.9248 22.922 22.0538C22.922 21.1821 22.2153 20.4762 21.3444 20.4762ZM21.3444 22.7725C20.9483 22.7725 20.6272 22.4514 20.6272 22.0553C20.6272 21.6592 20.9483 21.3382 21.3444 21.3382C21.7405 21.3382 22.0615 21.6592 22.0615 22.0553C22.0615 22.4514 21.7405 22.7725 21.3444 22.7725ZM19.0489 21.0509H14.4579C14.2201 21.0509 14.0274 21.2437 14.0274 21.4815C14.0274 21.7193 14.2201 21.912 14.4579 21.912H19.0489C19.2867 21.912 19.4795 21.7193 19.4795 21.4815C19.4795 21.2437 19.2867 21.0509 19.0489 21.0509ZM19.0489 22.1986H14.4579C14.2201 22.1986 14.0274 22.3914 14.0274 22.6292C14.0274 22.867 14.2201 23.0598 14.4579 23.0598H19.0489C19.2867 23.0598 19.4795 22.867 19.4795 22.6292C19.4795 22.3914 19.2867 22.1986 19.0489 22.1986ZM15.2321 12.5703C15.1541 12.6484 15.1061 12.7556 15.1061 12.8742C15.1061 13.112 15.2989 13.304 15.5359 13.304C15.6544 13.304 15.7625 13.256 15.8397 13.178C16.0738 12.9439 16.3971 12.7991 16.7542 12.7991C17.1113 12.7991 17.4346 12.9439 17.6686 13.178C17.7466 13.256 17.8539 13.304 17.9724 13.304C18.2102 13.304 18.4023 13.1112 18.4023 12.8742C18.4023 12.7556 18.3543 12.6476 18.2762 12.5703C17.8862 12.181 17.3483 11.9395 16.7534 11.9395C16.1586 11.9395 15.6199 12.1803 15.2306 12.5703H15.2321ZM19.1877 12.0865C19.1884 12.0865 19.1884 12.0865 19.1892 12.0865C19.427 12.0865 19.619 11.8937 19.619 11.6567C19.619 11.5374 19.5703 11.4294 19.4915 11.3513C18.7909 10.6507 17.8224 10.2171 16.7527 10.2171C15.683 10.2171 14.7145 10.6507 14.0139 11.3513C13.9358 11.4294 13.8878 11.5366 13.8878 11.6552C13.8878 11.893 14.0806 12.085 14.3177 12.085C14.4362 12.085 14.5442 12.037 14.6215 11.959C15.1668 11.4136 15.92 11.0768 16.7519 11.0768C17.5838 11.0768 18.337 11.4136 18.8824 11.959C18.9604 12.037 19.0677 12.0857 19.1869 12.0857H19.1877V12.0865ZM13.4062 10.743C14.2637 9.88704 15.4467 9.35818 16.7542 9.35818C18.0617 9.35818 19.2447 9.88704 20.1021 10.743C20.1801 10.821 20.2874 10.869 20.4059 10.869C20.6437 10.869 20.8358 10.6762 20.8358 10.4392C20.8358 10.3206 20.7878 10.2126 20.7098 10.1353C19.6963 9.12488 18.298 8.5 16.7534 8.5C15.2089 8.5 13.8106 9.12488 12.7971 10.1353C12.7191 10.2134 12.6711 10.3206 12.6711 10.4392C12.6711 10.677 12.8639 10.869 13.1009 10.869C13.2194 10.869 13.3275 10.821 13.4047 10.743H13.4062Z\"\r\n fill=\"#FF375E\"\r\n />\r\n </svg>\r\n\r\n <span class=\"fs-12 fw-normal fc-black\">{{ element?.Service.name }}</span>\r\n </div>\r\n <div *ngSwitchCase=\"'Color'\" class=\"d-flex align-items-center gap-2\">\r\n <span\r\n [ngClass]=\"columnsConfig[i].type\"\r\n [style.background]=\"\r\n element[column]?.colorCode\r\n ? element[column]?.colorCode\r\n : element[column]\r\n \"\r\n ></span>\r\n {{ element[column].title }}\r\n </div>\r\n <div\r\n *ngSwitchCase=\"'colorBg'\"\r\n [style.background]=\"\r\n 'rgba(var(--rgb-' + element[column]?.colorName + '), 0.1)'\r\n \"\r\n class=\"d-flex align-items-center gap-2 Colorbg p-2\"\r\n >\r\n <span class=\"bc-{{ element[column]?.colorName }}\"></span>\r\n {{ element[column].title }}\r\n </div>\r\n <div *ngSwitchCase=\"'assigned'\" [ngClass]=\"columnsConfig[i].type\" class=\"delegate d-flex align-items-center\">\r\n <div class=\"img-card x-small circled-img\">\r\n <img [src]=\"element?.AssignedTo.image\" alt=\"\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" />\r\n </div>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-black\">{{ element?.AssignedTo.name }}</span>\r\n <!--\r\n <span class=\"sfi sfi-close fc-coral\"></span>\r\n -->\r\n </div>\r\n\r\n <span *ngSwitchCase=\"'coloredText'\" [style.color]=\"element[column]?.['color']\">{{ element[column]?.['title'] }}</span>\r\n <div *ngSwitchCase=\"'survey'\" [style.color]=\"element[column]?.['color']\" class=\"d-flex align-items-center gap-1 text-nowrap\">\r\n <span class=\"fs-20 sfi sfi-emoji-{{(element[column]?.['title']['en'].toLowerCase()) }}\"></span>\r\n {{ element[column]?.['title'] }}\r\n </div>\r\n\r\n <div *ngSwitchCase=\"'Satisfaction'\" [ngClass]=\"columnsConfig[i].type\" class=\"delegate d-flex gap-2 align-items-center\">\r\n <!--\r\n <ds-icon icon=\"star-f\" class=\"fc-dark-gray\"></ds-icon>\r\n -->\r\n\r\n <span class=\"fs-12 fc-black\">{{ element[column].percentage }}%</span>\r\n <ds-status class=\"auto-status\" size=\"small\" status=\"{{ element[column].status }}\">\r\n <span class=\"fs-10\">\r\n {{ element[column].percentageTrend }}%\r\n </span>\r\n @if (element[column].trendStatus == 'up') {\r\n <ds-icon class=\"fs-13 mx-1 growthIcon\" icon=\"up-growth\"> </ds-icon>\r\n } @if (element[column].trendStatus != 'up') {\r\n <ds-icon class=\"fs-13 mx-1 downIcon\" icon=\"down-growth\"> </ds-icon>\r\n }\r\n </ds-status>\r\n </div>\r\n\r\n <ng-container *ngSwitchCase=\"'actions'\">\r\n <div class=\"d-flex justify-content-start gap-2\">\r\n <ng-container *ngIf=\"columnsConfig[i]?.actions?.length <= 6\">\r\n <ng-container *ngFor=\"let action of columnsConfig[i]?.actions\">\r\n <ds-button (click)=\"$event.stopPropagation()\" *ngIf=\"action.viewMode === Actions.ALLOCATE\" shape=\"outline\" size=\"small\">\r\n <span class=\"fs-12 fc-{{ action?.actionFontColor }}\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n </ds-button>\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"action === Actions.ALLOCATE\"\r\n icon\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fs-15\" icon=\"pen\"></ds-icon>\r\n </ds-button>\r\n <ng-container\r\n *ngIf=\"\r\n action.viewMode != Actions.VIEW ||\r\n action.viewMode != Actions.COPY\r\n \"\r\n >\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.VIEW &&\r\n !action?.isHidden\r\n \"\r\n icon\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fs-15\" icon=\"eye\"></ds-icon>\r\n </ds-button>\r\n <ds-button (click)=\"$event.stopPropagation(); action?.onClick(element)\"\r\n *ngIf=\"action?.action === Actions.CLOSE && !action?.isHidden\"\r\n icon size=\"small\">\r\n <ds-icon class=\"fs-15 fc-coral\" icon=\"close\"></ds-icon>\r\n </ds-button>\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.COPY &&\r\n !action?.isHidden\r\n \"\r\n icon\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fs-15\" icon=\"files-copy\"></ds-icon>\r\n </ds-button>\r\n <!-- @if(element.hasOwnProperty('canUpdate')){\r\n <ds-button (click)=\"$event.stopPropagation();action?.onClick(element)\" icon size=\"small\"\r\n *ngIf=\"action?.action === 'edit' && !action?.isHidden && element.canUpdate == true\">\r\n <ds-icon icon=\"pen\" class=\"fs-15\"></ds-icon>\r\n </ds-button>\r\n }@else { -->\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\"\r\n *ngIf=\"\r\n action?.action === Actions.EDIT &&\r\n ![4, 7].includes(element?.contractStatus?.id)\"\r\n icon\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fs-15\" icon=\"pen\"></ds-icon>\r\n </ds-button>\r\n <!-- } -->\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.DELETE &&\r\n !action?.isHidden &&\r\n ![4, 7].includes(element?.contractStatus?.id)\r\n \"\r\n icon\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fc-coral fs-15\" icon=\"trash\"></ds-icon>\r\n </ds-button>\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.DELETEPENDING &&\r\n !action?.isHidden &&\r\n element?.contractStatus?.id == 1\r\n \"\r\n icon\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fc-coral fs-15\" icon=\"trash\"></ds-icon>\r\n </ds-button>\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"action?.action === Actions.CHART\"\r\n color=\"transparent\"\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fc-coral fs-15\" icon=\"chart-o\"></ds-icon>\r\n </ds-button>\r\n\r\n @if (element.hasOwnProperty('canTakeAction')) {\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n size=\"small\"\r\n *ngIf=\"\r\n action?.action === Actions.APPROVE &&\r\n element.canTakeAction == true\r\n \"\r\n >\r\n <span class=\"fs-12\">\r\n {{ \"global.approve\" | translate }}\r\n </span>\r\n </ds-button>\r\n <ds-button\r\n shape=\"outline\"\r\n color=\"dark-gray\"\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n size=\"small\"\r\n *ngIf=\"\r\n action?.action === Actions.REJECT &&\r\n element.canTakeAction == true\r\n \"\r\n shape=\"outline\"\r\n >\r\n <span class=\"fs-12\">\r\n {{ \"global.reject\" | translate }}\r\n </span>\r\n </ds-button>\r\n } @else {\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n size=\"small\"\r\n *ngIf=\"action?.action === Actions.APPROVE\"\r\n >\r\n <span class=\"fs-12\">\r\n {{ \"global.approve\" | translate }}\r\n </span>\r\n </ds-button>\r\n <ds-button\r\n shape=\"outline\"\r\n color=\"dark-gray\"\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n size=\"small\"\r\n *ngIf=\"action?.action === Actions.REJECT\"\r\n shape=\"outline\"\r\n >\r\n <span class=\"fs-12\">\r\n {{ \"global.reject\" | translate }}\r\n </span>\r\n </ds-button>\r\n }\r\n\r\n <ds-button *ngIf=\"action?.action === Actions.DETAILS\" shape=\"text\" size=\"small\">\r\n <span class=\"fs-12 underline\"> View Details </span>\r\n </ds-button>\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.START &&\r\n element?.isFinalize\r\n \"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n <ds-icon class=\"fs-16\" icon=\"media-play\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"action?.action === Actions.PREPARE\"\r\n color=\"light-gray\"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12 fc-black\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n <ds-icon class=\"fs-12 fc-black\" icon=\"settings\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.START &&\r\n element?.isFinalize\r\n \"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n <ds-icon class=\"fs-16\" icon=\"media-play\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n\r\n <!-- <ds-button [color]=\"action?.actionColor\" size=\"small\"\r\n *ngIf=\"action?.action === 'customAction'\"\r\n (click)=\"$event.stopPropagation();action?.onClick(element)\" shape=\"{{action?.actionShape}}\" [class]=\"action?.actionColor\"\r\n ></ds-button> -->\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"action?.action === Actions.CUSTOMACTION\"\r\n [class]=\"action?.actionColor\"\r\n [color]=\"action?.actionColor\"\r\n shape=\"{{ action?.actionShape }}\"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12 fc-{{ action?.actionFontColor }}\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n </ds-button>\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.CUSTOMACTIONMANAGE &&\r\n (element.contractStatus.id == 7 ||\r\n element.contractStatus.id == 1)\r\n \"\r\n [class]=\"action?.actionColor\"\r\n [color]=\"action?.actionColor\"\r\n shape=\"{{ action?.actionShape }}\"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12 fc-{{ action?.actionFontColor }}\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n </ds-button>\r\n\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.CUSTOMACTIONEXTEND &&\r\n element.contractStatus.id == 7\r\n \"\r\n [class]=\"action?.actionColor\"\r\n [color]=\"action?.actionColor\"\r\n shape=\"{{ action?.actionShape }}\"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12 fc-{{ action?.actionFontColor }}\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n </ds-button>\r\n <ds-button\r\n (click)=\"\r\n $event.stopPropagation(); action?.onClick(element)\r\n \"\r\n *ngIf=\"\r\n action?.action === Actions.CUSTOMACTIONDETAILS\r\n \"\r\n [class]=\"action?.actionColor\"\r\n [color]=\"action?.actionColor\"\r\n shape=\"{{ action?.actionShape }}\"\r\n size=\"small\"\r\n >\r\n <span class=\"fs-12 fc-{{ action?.actionFontColor }}\">\r\n {{ action?.actionName | translate }}\r\n </span>\r\n </ds-button>\r\n <ds-status *ngIf=\"action?.action === Actions.STATUS\" [status]=\"action?.Status.status\" class=\"fs-12 statusAction w-100\">\r\n <span class=\"fc-black\">\r\n {{ action?.Status.title | translate }}\r\n </span>\r\n </ds-status>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"columnsConfig[i]?.actions?.length > 6\">\r\n <ds-button\r\n #statusMenuTrigger=\"matMenuTrigger\"\r\n (click)=\"$event.stopPropagation()\"\r\n *ngIf=\"columnsConfig[i]?.actions?.length > 1\"\r\n [matMenuTriggerFor]=\"statusMenu\"\r\n class=\"dots\"\r\n shape=\"text\"\r\n size=\"small\"\r\n >\r\n <ds-icon class=\"fs-20 fc-dark-gray\" icon=\"dots\"></ds-icon>\r\n </ds-button>\r\n\r\n <mat-menu #statusMenu=\"matMenu\">\r\n <button (click)=\"action?.onClick(element)\" *ngFor=\"let action of columnsConfig[i]?.actions\" mat-menu-item>\r\n <span class=\"fs-12 fc-black\">{{ action?.actionName | translate }} </span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'specs'\">\r\n @if (element?.[column]) {\r\n <span\r\n #statusMenuTrigger=\"matMenuTrigger\"\r\n (click)=\"$event.stopPropagation()\"\r\n [matMenuTriggerFor]=\"specsMenu\"\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"{{\r\n columnsConfig[i].type\r\n }} fc-coral underline cursor-pointer\"\r\n >\r\n {{ columnsConfig[i].clickableText | translate }}\r\n </span>\r\n }\r\n\r\n <mat-menu #specsMenu=\"matMenu\" class=\"p-4 text-center\">\r\n <span class=\"fs-14\">\r\n {{ element[column] }}\r\n </span>\r\n </mat-menu>\r\n </ng-container>\r\n\r\n <!--<div\r\n *ngSwitchCase=\"'specs'\" [ngClass]=\"columnsConfig[i].type\"\r\n class=\"d-flex gap-1\">\r\n {{ element[column] | json }}\r\n <ng-container *ngFor=\"let item of element[column]\">\r\n\r\n <div\r\n class=\"progress-container default-progress medium radius-0 \"\r\n matTooltip=\"Team assignment {{item.value}}%\" matTooltipPosition=\"below\">\r\n <div\r\n [style.width.%]=\"item.value\"\r\n class=\"progress-bar bg-color-{{item.color}}\"></div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>-->\r\n\r\n <span\r\n *ngSwitchDefault\r\n [ngClass]=\"columnsConfig[i].type\"\r\n class=\"text-nowrap\"\r\n matTooltip=\" {{\r\n columnsConfig[i].arKey\r\n ? i18Service.language == 'ar'\r\n ? mapText(columnsConfig[i].arKey, element[column])\r\n : mapText(columnsConfig[i].enKey, element[column])\r\n : element[column]\r\n ? element[column]\r\n : '-'\r\n }}\"\r\n matTooltipPosition=\"below\"\r\n >\r\n {{ columnsConfig[i].arKey ? i18Service.language == \"ar\" ? mapText(columnsConfig[i].arKey, element[column]) : mapText(columnsConfig[i].enKey, element[column]) : element[column] ? element[column] :\r\n \"-\" }}\r\n </span>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n }\r\n </ng-container>\r\n }\r\n\r\n <tr *matHeaderRowDef=\"columns; sticky: true\" mat-header-row></tr>\r\n <tr (click)=\"clickRow(row)\" *matRowDef=\"let row; columns: columns\" [ngClass]=\"{ 'selected-row': row?.fastTrackSeen === false }\" mat-row role=\"button\"></tr>\r\n </table>\r\n }\r\n </ng-container>\r\n } @if (isLoading) {\r\n <ds-loading-table [cols]=\"columns.length\" [rows]=\"5\"></ds-loading-table>\r\n } @if (!isLoading && dataSource.filteredData?.length == 0) {\r\n <ds-message [label]=\" customMessage?? 'NoData' | translate\" type=\"emptyList\"></ds-message>\r\n }\r\n</div>\r\n@if (dataSource.filteredData?.length && hasPaginator) {\r\n<mat-paginator #paginator (page)=\"pageChanged($event)\" [length]=\"totalElements\" [pageIndex]=\"currentPage\" [pageSizeOptions]=\"[5, 10, 15, 20, 100]\" [pageSize]=\"pageSize\" aria-label=\"Select page\" showFirstLastButtons> </mat-paginator>\r\n}\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';\r\nimport {CoreI18nService, CoreService, SidenavService} from '../../../services';\r\n\r\n@Component({\r\n selector: 'app-approvals',\r\n templateUrl: './approvals.component.html',\r\n styleUrls: ['./approvals.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: []\r\n})\r\nexport class ApprovalsComponent {\r\n\r\n constructor(private readonly sidenavService: SidenavService,\r\n public i18n: CoreI18nService,\r\n public coreService: CoreService\r\n ) { }\r\n\r\n\r\n\r\n closeSidenav() {\r\n this.sidenavService.publish('close', null);\r\n }\r\n\r\n}\r\n","<section class=\"main-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('approvalCycle') }}</h3>\r\n <ds-button (click)=\"closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <div class=\"sidenav-body p-4\">\r\n @if (coreService.approvals) {\r\n <ds-approvals approvalsData=\"{{coreService.approvals}}\"></ds-approvals>\r\n } @else {\r\n <ds-message label=\"{{i18n.translate('NoData2')}}\"></ds-message>\r\n }\r\n </div>\r\n</section>\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Input} from '@angular/core';\r\nimport * as Constants from '../../../constants/constants';\r\nimport {CoreI18nService, CoreService, SidenavService} from '../../../services';\r\nimport {Form, Section} from '../../../interfaces';\r\nimport {ApprovalsComponent} from '../approvals/approvals.component';\r\nimport {ToastrService} from \"ngx-toastr\";\r\nimport {SatPopoverModule} from \"@ncstate/sat-popover\";\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nconst dangerStatusValues = [\r\n Constants.FORM_STATUS_REJECTED,\r\n Constants.FORM_STATUS_CANCELLED,\r\n 'deny',\r\n 'reject',\r\n 'unsatisfied',\r\n 'cancel'\r\n];\r\n\r\nconst warningStatusValues = [\r\n Constants.FORM_STATUS_PENDING,\r\n 'pending'\r\n];\r\n\r\n@Component({\r\n selector: 'lib-approvals-workflow',\r\n templateUrl: './approvals-workflow.component.html',\r\n styleUrls: ['./approvals-workflow.component.scss'],\r\n standalone: true,\r\n imports: [\r\n SatPopoverModule\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class ApprovalsWorkflowComponent {\r\n @Input() section: Section;\r\n @Input() form: Form;\r\n approvals: unknown[] = [];\r\n loading = false;\r\n destroyRef = inject(DestroyRef);\r\n\r\n constructor(\r\n public i18n: CoreI18nService,\r\n private readonly sidenavService: SidenavService,\r\n private readonly coreService: CoreService,\r\n private readonly toasterService: ToastrService\r\n ) { }\r\n\r\n getApprovals() {\r\n if (this.isLoading()) {\r\n return;\r\n }\r\n\r\n this.initializeApprovals();\r\n this.coreService.perspectiveApproves(this.section.body.details).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n response => this.handleResponse(response),\r\n err => this.handleError(err)\r\n );\r\n }\r\n\r\n isLoading(): boolean {\r\n return this.loading;\r\n }\r\n\r\n initializeApprovals() {\r\n this.approvals = [];\r\n this.loading = true;\r\n }\r\n\r\n handleResponse(response: any) {\r\n this.loading = false;\r\n if (response?.approvals) {\r\n this.approvals = response.approvals.map(approval => this.createApprovalObject(approval));\r\n this.showProspectiveApprovals();\r\n }\r\n }\r\n\r\n createApprovalObject(approval) {\r\n const stageDetails = this.getStageDetails(approval);\r\n const status = stageDetails ? this.getClassBasedOnStatus(stageDetails.header.status) : '';\r\n return {\r\n id: 1,\r\n name: approval.value,\r\n title: approval.key,\r\n image: `/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=${approval.key}`,\r\n status,\r\n statusLabel: status\r\n };\r\n }\r\n\r\n getStageDetails(approval) {\r\n return this.form.sections.find(stage =>\r\n stage.id === `${(approval?.role)?.toLowerCase()}Approval`\r\n );\r\n }\r\n\r\n handleError(err: any) {\r\n this.loading = false;\r\n err?.error?.meta?.messages?.forEach(msg => {\r\n this.toasterService.error(msg.message);\r\n });\r\n }\r\n\r\n transformStatus(status: string): string {\r\n return status?.toLowerCase() || '';\r\n }\r\n\r\n getClassBasedOnStatus(status: string) {\r\n const lowerStatus = this.transformStatus(status);\r\n\r\n if (!status ||\r\n warningStatusValues.includes(lowerStatus)) {\r\n return 'success';\r\n }\r\n\r\n if (dangerStatusValues.find(value => lowerStatus.includes(value))) {\r\n return 'danger';\r\n }\r\n\r\n if (warningStatusValues.find(value => lowerStatus.includes(value))) {\r\n return 'warning';\r\n }\r\n\r\n return 'success';\r\n }\r\n\r\n showProspectiveApprovals() {\r\n this.coreService.approvals = JSON.stringify(this.approvals);\r\n this.sidenavService.publish('open', ApprovalsComponent);\r\n }\r\n\r\n}\r\n","<ds-button\r\n color=\"white\" shape=\"text\" square size=\"small\"\r\n (click)=\"getApprovals()\">\r\n <slot name=\"prefix\">\r\n @if (loading) {\r\n <ds-icon class=\"sfi sfi-spinner d-inline-block spin fc-coral fs-30-imp\"></ds-icon>\r\n } @else {\r\n <ds-icon icon=\"workflow\" class=\"fs-24\"></ds-icon>\r\n }\r\n </slot>\r\n</ds-button>\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n CUSTOM_ELEMENTS_SCHEMA,\r\n DestroyRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n NO_ERRORS_SCHEMA,\r\n Output\r\n} from '@angular/core';\r\nimport * as constants from \"../../../constants\";\r\nimport {NgClass, NgForOf, NgIf} from \"@angular/common\";\r\nimport {InputComponent} from \"../form-field\";\r\nimport {ActionStateService, CoreI18nService, CoreService, SidenavService} from \"../../../services\";\r\nimport {Form, Section} from \"../../../interfaces\";\r\nimport {SubmitDialogComponent} from \"../dialogs/submit-dialog/submit-dialog.component\";\r\nimport {NoopScrollStrategy} from \"@angular/cdk/overlay\";\r\nimport {MatDialog} from \"@angular/material/dialog\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {ToastrService} from \"ngx-toastr\";\r\nimport {ApprovalsWorkflowComponent} from \"../../app-component-sections/approvals-workflow/approvals-workflow.component\";\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'lib-action-buttons',\r\n templateUrl: './action-buttons.component.html',\r\n styleUrl: './action-buttons.component.scss',\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\r\n imports: [\r\n NgClass,\r\n InputComponent,\r\n NgIf,\r\n NgForOf,\r\n ApprovalsWorkflowComponent\r\n ]\r\n})\r\nexport class ActionButtonsComponent implements AfterViewInit {\r\n @Input() lovOptions: any[];\r\n @Input() lovType: string;\r\n @Input() fieldsForm: FormGroup;\r\n @Input() form: Form;\r\n @Input() section: Section;\r\n @Input() sections: Section[];\r\n @Input() showApprovalCycle: boolean = true;\r\n @Input() customCall: boolean = false;\r\n @Output() resetFormEmit: EventEmitter<any> = new EventEmitter();\r\n @Output() customCallEmit: EventEmitter<any> = new EventEmitter();\r\n actionStates: { [action: string]: boolean };\r\n isSubmitting = {\r\n 'SUBMIT': false\r\n };\r\n submittingForm: boolean;\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor(public i18n: CoreI18nService,\r\n private actionStateService: ActionStateService,\r\n private coreService: CoreService,\r\n public dialog: MatDialog,\r\n private toasterService: ToastrService,\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n this.actionStateService.actionStates$.pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(states => this.actionStates = states);\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.lovOptions?.forEach((item) => {\r\n this.isSubmitting[item.value] = false\r\n })\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n resetForm() {\r\n this.resetFormEmit.emit()\r\n }\r\n\r\n onSubmit(action: string) {\r\n if (this.customCall) {\r\n this.customCallEmit.emit(action)\r\n } else {\r\n this.submitForm(action, this.section)\r\n }\r\n }\r\n\r\n submitForm(action: string, section: Section) {\r\n section = JSON.parse(JSON.stringify(section));\r\n if (section.body.details.decision) {\r\n section.body.details.decision['key'] = action;\r\n }\r\n\r\n this.isSubmitting[action] = true;\r\n this.submittingForm = true;\r\n\r\n this.coreService.submitForm(section, action).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n (response: any) => {\r\n if (response) {\r\n this.isSubmitting[action] = false;\r\n this.success(response);\r\n }\r\n },\r\n (err: any) => {\r\n err?.error?.meta?.messages?.forEach((msg) => {\r\n this.submittingForm = false;\r\n this.isSubmitting[action] = false;\r\n this.toasterService.error(msg.message);\r\n });\r\n }\r\n );\r\n }\r\n\r\n success(response) {\r\n console.log('success', response)\r\n const dialogRef = this.dialog.open(SubmitDialogComponent, {\r\n data: response,\r\n panelClass: ['main-popup', 'confirm-dialog'],\r\n scrollStrategy: new NoopScrollStrategy(),\r\n });\r\n dialogRef.afterClosed().subscribe(() => {\r\n window.location.reload();\r\n });\r\n }\r\n\r\n buttonShape(item) {\r\n if (item?.value === constants.FORM_STATUS_REJECT || item?.value === constants.FORM_STATUS_CANCEL || item?.value === constants.FORM_STATUS_SEND_BACK) {\r\n return 'outline';\r\n }\r\n return '';\r\n }\r\n\r\n buttonColor(item) {\r\n if (item?.value === constants.FORM_STATUS_REJECT || item?.value === constants.FORM_STATUS_SEND_BACK) {\r\n return 'red';\r\n }\r\n return '';\r\n }\r\n}\r\n","<div class=\"mt-4\">\r\n @if (lovType === 'button') {\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button shape=\"text\" color=\"red\" (click)=\"resetForm()\">\r\n <span class=\"fs-16 fw-medium\">{{ i18n.translate('reset') }}</span>\r\n </ds-button>\r\n @if (form?.sections?.length == 1 && showApprovalCycle) {\r\n <lib-approvals-workflow [section]=\"section\" [form]=\"form\"></lib-approvals-workflow>\r\n }\r\n <div class=\"d-flex flex-wrap align-items-center flex-grow-1 flex-row-reverse gap-3\">\r\n @for (item of lovOptions; track $index) {\r\n <ds-button\r\n loading=\"{{isSubmitting[item.value]}}\"\r\n [ngClass]=\"{'disabled': !actionStates[item.value] || submittingForm}\"\r\n shape=\"{{ buttonShape(item) }}\"\r\n color=\"{{ buttonColor(item) }}\"\r\n (click)=\"onSubmit(item?.value)\">\r\n {{ item?.['description'] }}\r\n </ds-button>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button shape=\"text\" color=\"red\" (click)=\"resetForm()\">\r\n <span class=\"fs-16 fw-medium\">{{ i18n.translate('reset') }}</span>\r\n </ds-button>\r\n @if (form?.sections?.length == 1 && showApprovalCycle) {\r\n <lib-approvals-workflow [section]=\"section\" [form]=\"form\"></lib-approvals-workflow>\r\n }\r\n <div class=\"d-flex flex-wrap align-items-center flex-grow-1 flex-row-reverse gap-3\">\r\n <ds-button\r\n [ngClass]=\"{'disabled': !actionStates['SUBMIT'] || submittingForm}\"\r\n loading=\"{{isSubmitting['SUBMIT']}}\"\r\n (click)=\"onSubmit('SUBMIT')\">\r\n {{ i18n.translate('submit') }}\r\n </ds-button>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\r\nimport { CoreI18nService } from '../../../services';\r\nimport { MatAccordion, MatExpansionPanel, MatExpansionPanelTitle } from '@angular/material/expansion';\r\n\r\ninterface FAQ {\r\n title: string,\r\n content: string\r\n}\r\n\r\n@Component({\r\n selector: 'app-faqs',\r\n templateUrl: './faqs.component.html',\r\n styleUrls: ['./faqs.component.scss'],\r\n standalone: true,\r\n imports: [\r\n MatAccordion,\r\n MatExpansionPanel,\r\n MatExpansionPanelTitle\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class FaqsComponent {\r\n @Input() adminView = false;\r\n @Input() faqs: FAQ[];\r\n\r\n constructor(public i18n: CoreI18nService) { }\r\n\r\n\r\n}\r\n","<mat-accordion class=\"primary-accordion\">\r\n @for (item of faqs; track $index) {\r\n <mat-expansion-panel [expanded]=\"$index==0\" class=\"mb-4\" hideToggle #expansionPanel=\"matExpansionPanel\">\r\n @if (item.title) {\r\n <mat-expansion-panel-header class=\"expansion-header\">\r\n <mat-panel-title>\r\n <h3 class=\"fs-14 fw-medium fc-black mb-0 flex-grow-1 align-self-center\">{{ item.title }}</h3>\r\n @if (expansionPanel.expanded) {\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n } @else {\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n }\r\n </mat-panel-title>\r\n\r\n </mat-expansion-panel-header>\r\n }\r\n <p class=\"fs-14 fc-dark-gray\">\r\n {{ item.content }}\r\n </p>\r\n </mat-expansion-panel>\r\n }\r\n</mat-accordion>\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { CoreI18nService, SidenavService } from '../../../services';\r\nimport { FaqsComponent } from '../faqs';\r\n\r\n@Component({\r\n selector: 'app-faq-sidenav',\r\n templateUrl: './faq-sidenav.component.html',\r\n styleUrls: ['./faq-sidenav.component.scss'],\r\n standalone: true,\r\n imports: [\r\n FaqsComponent\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n\r\n})\r\nexport class FaqSidenavComponent {\r\n\r\n data = [];\r\n\r\n constructor(private readonly sidenavService: SidenavService,\r\n public i18n: CoreI18nService) { }\r\n\r\n\r\n closeSidenav() {\r\n this.sidenavService.publish('close', FaqSidenavComponent);\r\n }\r\n\r\n}\r\n","<div class=\"main-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{i18n.translate('serviceBrief')}}</h3>\r\n\r\n <ds-button (click)=\"closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <div class=\"sidenav-body\">\r\n <app-faqs [faqs]=\"data\"></app-faqs>\r\n </div>\r\n</div>\r\n","/* eslint-disable @angular-eslint/component-selector */\r\nimport {Component, Input} from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { SidenavService } from '../../../services';\r\nimport {FaqSidenavComponent} from \"../../app-component-sections/faq-sidenav/faq-sidenav.component\";\r\n@Component({\r\n selector: 'app-title-section',\r\n templateUrl: './title-section.component.html',\r\n styleUrls: ['./title-section.component.scss']\r\n})\r\nexport class TitleSectionComponent {\r\n\r\n @Input() title = '';\r\n @Input() tooltip = true;\r\n // introJS = introJs();\r\n constructor(private sidenavService: SidenavService, private dialog: MatDialog ) { }\r\n\r\n\r\n openFaq(){\r\n this.sidenavService.publish('open', FaqSidenavComponent, 'end', 'over');\r\n }\r\n\r\n // add(): void {\r\n // const dialogRef = this.dialog.open(ConfirmationPopupComponent, {\r\n // width: '700px',\r\n // panelClass: ['confirm-popup', 'main-popup'],\r\n // data: {\r\n // title: 'Your request has been submitted Successfully',\r\n // id: '862456',\r\n // type: 'view',\r\n // icon: 'done',\r\n // },\r\n // });\r\n\r\n // // dialogRef.afterClosed().subscribe(() => {\r\n // // location.reload()\r\n // // });\r\n // }\r\n\r\n}\r\n","<header class=\"section-title\">\r\n <div class=\"d-flex align-items-center\">\r\n <h1 class=\"main-title mb-0\" >{{title}}</h1>\r\n <!-- <span class=\"mx-1\"></span>\r\n <button mat-icon-button class=\"btn button-transparent square\" *ngIf=\"tooltip\" (click)=\"openFaq()\">\r\n <span class=\"sfi sfi-info fc-dark-gray font-20-imp\" id=\"step1\"></span>\r\n </button>\r\n <span class=\"mx-1\"></span> -->\r\n </div>\r\n <div class=\"filter-actions\">\r\n <div class=\"filter-section\">\r\n <ng-content select=\"[filter]\"></ng-content>\r\n </div>\r\n <span class=\"mx-1\"></span>\r\n <ng-content select=\"[action]\"></ng-content>\r\n <ng-content select=\"[search]\"></ng-content>\r\n </div>\r\n</header>\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Inject, Input, Output} from '@angular/core';\r\nimport {MAT_DIALOG_DATA} from '@angular/material/dialog';\r\nimport {CoreI18nService, SidenavService} from '../../../services';\r\nimport {ProfileInfoDrop} from '../../../interfaces';\r\nimport {NgIf} from '@angular/common';\r\nimport {InfoItemComponent} from \"../../shared-components\";\r\n\r\n\r\n@Component({\r\n selector: 'app-profile-section',\r\n templateUrl: './profile-section.component.html',\r\n styleUrls: ['./profile-section.component.scss'],\r\n standalone: true,\r\n imports: [\r\n InfoItemComponent,\r\n NgIf\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [\r\n {provide: MAT_DIALOG_DATA, useValue: { }}\r\n ]\r\n})\r\nexport class ProfileSectionComponent {\r\n\r\n @Input() profileFormVisibility: any;\r\n profile: ProfileInfoDrop;\r\n message: any;\r\n @Output() close: EventEmitter<boolean> = new EventEmitter();\r\n\r\n constructor(public i18n: CoreI18nService,\r\n private readonly sidenavService: SidenavService,\r\n @Inject(MAT_DIALOG_DATA) public data: any) {\r\n this.profile = sidenavService.data;\r\n }\r\n\r\n\r\n closeSidenav() {\r\n this.sidenavService.publish('close', null);\r\n }\r\n\r\n}\r\n","<div class=\"main-sidenav\">\r\n <div class=\"sidenav-title bc-white\">\r\n <h3> {{ profile?.fullName }}</h3>\r\n <ds-icon icon=\"close\" class=\"fc-black fs-20 p-3 cursor-pointer\" (click)=\"closeSidenav()\"></ds-icon>\r\n </div>\r\n <div class=\"sidenav-body p-0\">\r\n <div class=\"d-flex flex-column align-items-center gap-3 sidenav-user bc-off-white text-center\">\r\n <ds-avatar image=\"/group/i-gate/wm-bpm/forms/-/proxy/portrait?email={{profile?.employeeEmail}}\" class=\"mb-2\"></ds-avatar>\r\n <div class=\"d-flex flex-column gap-1\">\r\n <h4 class=\"fs-16 fc-black fw-medium mb-0\">{{ profile?.fullName }}</h4>\r\n <h6 class=\"fs-12 fc-dark-gray fw-normal mb-0\" *ngIf=\"profile?.jobPosition\">{{ profile?.jobPosition }}</h6>\r\n </div>\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\">\r\n <ds-icon icon=\"mail-o\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'mailTo:' + profile?.employeeEmail\" class=\"fc-black\">{{ profile?.employeeEmail }}</a>\r\n </div>\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\" *ngIf=\"profile?.businessPhone\">\r\n <ds-icon icon=\"phone\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'tel:' + profile?.businessPhone\" class=\"fc-black\">\r\n <bdi>{{ profile?.businessPhone }}</bdi>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"info-section no-bg px-4 pb-4\"\r\n *ngIf=\"\r\n profile?.departmentName ||\r\n profile?.generalDepartmentName ||\r\n profile?.directManagerName ||\r\n profile?.humanResourcesLocation ||\r\n profile?.nationality ||\r\n profile?.generalDepartmentCode\r\n \"\r\n >\r\n <app-info-item\r\n *ngIf=\"profile?.employeeNumber\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('employeeID')\"\r\n [value]=\"profile?.employeeNumber\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.departmentName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('departmentName')\"\r\n [value]=\"profile?.departmentName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.generalDepartmentName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('generalDepartmentName')\"\r\n [value]=\"profile?.generalDepartmentName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.directManagerName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('directManager')\"\r\n [value]=\"profile?.directManagerName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.humanResourcesLocation\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('humanResourcesLocation')\"\r\n [value]=\"profile?.humanResourcesLocation\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.nationality\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('nationality') \"\r\n [value]=\"profile?.nationality\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.sectorName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('sector')\"\r\n [value]=\"profile?.sectorName\"\r\n ></app-info-item>\r\n\r\n </div>\r\n <ng-container\r\n *ngIf=\"\r\n !profile?.departmentName &&\r\n !profile?.generalDepartmentName &&\r\n !profile?.directManagerName &&\r\n !profile?.humanResourcesLocation &&\r\n !profile?.nationality &&\r\n !profile?.generalDepartmentCode\r\n \"\r\n >\r\n <ds-message type=\"emptyList\" [attr.label]=\"'noData' \"></ds-message>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","export class Form {\r\n constructor(\r\n public header: Header,\r\n public profileInfoDrop: ProfileInfoDrop,\r\n public commentsDrop: CommentsDrop[],\r\n public inboxItem: InboxItem,\r\n public sections: Section[],\r\n public lovs: any,\r\n public messages: Messages | null, // Added null as a type\r\n public confidentialComments?: CommentsDrop[]\r\n ) {}\r\n}\r\n\r\nexport class Header {\r\n constructor(\r\n public requesterName: string,\r\n public requesterPhoto: string,\r\n public formId?: string,\r\n public creationDate?: string,\r\n public status?: {[key:string]: string},\r\n public details?: any\r\n ) {}\r\n}\r\n\r\nexport class ProfileInfoDrop {\r\n constructor(\r\n public onBehalfAuthorized?: boolean,\r\n public employeeNumber?: string,\r\n public employeeEmail?: string,\r\n public fullName?: string,\r\n public generalDepartmentName?: string,\r\n public jobPosition?: string,\r\n public sectorName?: string,\r\n public departmentName?: string,\r\n public generalDepartmentCode?: string,\r\n public humanResourcesLocation?: string,\r\n public nationality?: string,\r\n public businessPhone?: string,\r\n public directManagerName?: string,\r\n public seniorSectorName?: string\r\n ) {}\r\n}\r\n\r\nexport class CommentsDrop {\r\n constructor(\r\n public profilePicture?: string,\r\n public employeeName?: string,\r\n public commentBody?: string,\r\n public commentDate?: string,\r\n public attachment?: string,\r\n public jobPosition?: string\r\n ) {}\r\n}\r\n\r\nexport class Section<T = any> {\r\n constructor(\r\n public id?: string,\r\n public header?: SectionHeader,\r\n public body?: any\r\n ) {}\r\n}\r\n\r\nexport class SectionHeader {\r\n constructor(\r\n public processedBy?: string,\r\n public processingDate?: string,\r\n public personTo?: string,\r\n public personToThumbnail?: string,\r\n public delegatedTo?: string,\r\n public delegatedToThumbnail?: string,\r\n public status?: string,\r\n public hasComments?: boolean,\r\n public readOnly?: boolean\r\n ) {}\r\n}\r\n\r\nexport class Messages {\r\n constructor(\r\n public errorFields?: any,\r\n public info?: string[],\r\n public warning?: string[],\r\n public error?: string[],\r\n public originalMsgs?: Array<{code: string; message: string; type: string}>\r\n ) {}\r\n}\r\n\r\n\r\nexport class InboxItem {\r\n constructor(\r\n public flagPriority?: string,\r\n public isFlagged?: string,\r\n public canRequestFeedback?: string,\r\n public hasFeedback?: string,\r\n public isPending?: string,\r\n public isRequested?: string,\r\n public isResponded?: string\r\n ) {}\r\n}\r\n","import {MAT_DIALOG_DATA, MatDialogClose, MatDialogContent, MatDialogTitle} from '@angular/material/dialog';\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Inject, Input, OnInit} from '@angular/core';\r\nimport {CoreI18nService} from '../../../services';\r\nimport {Form, InboxItem, Messages, ProfileInfoDrop} from '../../../interfaces';\r\nimport * as Constants from '../../../constants/constants';\r\nimport {NgIf} from '@angular/common';\r\nimport {InfoItemComponent, SearchEmployeeComponent, TextareaComponent} from \"../../shared-components\";\r\nimport {FeedBackService} from \"../../../services\";\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-feedback-section',\r\n templateUrl: './feedback-section.component.html',\r\n styleUrls: ['./feedback-section.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n MatDialogContent,\r\n NgIf,\r\n SearchEmployeeComponent,\r\n TextareaComponent,\r\n InfoItemComponent,\r\n MatDialogTitle,\r\n MatDialogClose\r\n ],\r\n standalone: true,\r\n})\r\nexport class FeedbackSectionComponent implements OnInit {\r\n @Input() inboxItem: InboxItem;\r\n @Input() profile: ProfileInfoDrop;\r\n form: Form;\r\n searchEmp: any;\r\n submitted = false;\r\n feedbackStatus: string = null;\r\n feedBackQuestion: string = null;\r\n feedBackResponse: string = null;\r\n isFeedbackValidated = false;\r\n isResponseValidated = false;\r\n employeeInput: string = null;\r\n feedbackId: string = null;\r\n destroyRef = inject(DestroyRef);\r\n\r\n constructor(\r\n public feedBackService: FeedBackService,\r\n public i18n: CoreI18nService,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) {\r\n this.profile = data.profile;\r\n this.inboxItem = data.inboxItem;\r\n this.form = data.form;\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.feedBackService.feedBackSent) {\r\n const item = this.inboxItem;\r\n if (item?.canRequestFeedback === 'true') {\r\n this.feedbackStatus = Constants.FEEDBACK_STATUS_REQUEST;\r\n this.feedBackService.feedbackForm = true;\r\n }\r\n\r\n if (\r\n item.isRequested === 'true' &&\r\n item.hasFeedback === 'true' &&\r\n item.isPending === 'false' &&\r\n item.isResponded === 'false'\r\n ) {\r\n this.feedbackStatus = Constants.FEEDBACK_STATUS_WAITING;\r\n this.feedBackService.pendingForm = true;\r\n this.getFeedBack();\r\n }\r\n\r\n if (\r\n item.isRequested === 'false' &&\r\n item.hasFeedback === 'true' &&\r\n item.isPending === 'true' &&\r\n item.isResponded === 'false'\r\n ) {\r\n this.feedbackStatus = Constants.FEEDBACK_STATUS_RESPOND;\r\n this.feedBackService.responderForm = true;\r\n this.getFeedBack();\r\n }\r\n\r\n if (\r\n item.isRequested === 'true' &&\r\n item.hasFeedback === 'true' &&\r\n item.isPending === 'false' &&\r\n item.isResponded === 'true'\r\n ) {\r\n this.feedbackStatus = Constants.FEEDBACK_STATUS_RESPONDED;\r\n this.feedBackService.pendingForm = true;\r\n this.getFeedBack();\r\n }\r\n /* const obj = {\r\n name: 'changeFeedbackStatus',\r\n data: this.feedbackStatus!\r\n };\r\n this._listenerService.filter(obj);*/\r\n }\r\n }\r\n\r\n getFeedBack() {\r\n this.feedBackService.getFeedback(this.profile.employeeEmail).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((Response: any) => {\r\n if (Response) {\r\n if (Response instanceof Messages) {\r\n this.showError(Response);\r\n } else {\r\n const resp = Response['items'][0];\r\n this.feedBackService.feedbackResponse.requestFrom =\r\n resp.from['firstName'] +\r\n ' ' +\r\n resp.from['middleName'] +\r\n ' ' +\r\n resp.from['familyName'];\r\n this.feedBackService.feedbackResponse.requestTo =\r\n resp.to['firstName'] +\r\n ' ' +\r\n resp.to['middleName'] +\r\n ' ' +\r\n resp.to['familyName'];\r\n this.feedBackService.feedbackResponse.requestFeedback =\r\n resp.query;\r\n this.feedBackService.feedbackResponse.responseFeedback =\r\n resp.response;\r\n this.feedbackId = resp.id;\r\n }\r\n }\r\n })\r\n }\r\n\r\n addFeedback() {\r\n if (this.isFeedbackValidated) {\r\n const email = this.searchEmp.personEmail,\r\n question = this.feedBackQuestion;\r\n this.feedBackService.submitFeedback({email, question}).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((Response: any) => {\r\n if (Response) {\r\n if (Response instanceof Messages) {\r\n this.showError(Response);\r\n } else {\r\n this.submitted = true;\r\n\r\n this.feedbackStatus = Constants.FEEDBACK_STATUS_WAITING;\r\n // const obj = {\r\n // name: 'changeFeedbackStatus',\r\n // data: this.feedbackStatus\r\n // };\r\n // this._listenerService.filter(obj);\r\n this.feedBackService.feedbackForm = false;\r\n this.feedBackService.pendingForm = true;\r\n this.feedBackService.feedBackSent = true;\r\n this.feedBackService.feedbackResponse.requestFrom =\r\n this.profile.fullName;\r\n this.feedBackService.feedbackResponse.requestTo =\r\n this.searchEmp.personName;\r\n this.feedBackService.feedbackResponse.requestFeedback =\r\n this.feedBackQuestion;\r\n }\r\n } else {\r\n this.submitted = true;\r\n }\r\n })\r\n }\r\n }\r\n\r\n\r\n addResponse() {\r\n if (this.isFeedbackValidated) {\r\n const feedbackId = this.feedbackId,\r\n feedbackResponse = this.feedBackResponse;\r\n this.feedBackService.addResponse({feedbackId, feedbackResponse}).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((Response: any) => {\r\n if (Response) {\r\n if (Response instanceof Messages) {\r\n this.showError(Response);\r\n } else {\r\n this.submitted = true;\r\n this.feedbackStatus = Constants.FEEDBACK_STATUS_RESPONDED;\r\n /*const obj = {\r\n name: 'changeFeedbackStatus',\r\n data: this.feedbackStatus\r\n };\r\n this._listenerService.filter(obj);*/\r\n this.feedBackService.responderForm = false;\r\n this.feedBackService.feedBackSent = true;\r\n this.feedBackService.pendingForm = true;\r\n this.feedBackService.feedbackResponse.responseFeedback =\r\n this.feedBackResponse;\r\n }\r\n } else {\r\n this.submitted = true;\r\n }\r\n })\r\n }\r\n }\r\n\r\n errorOccured = false;\r\n isSubmiting = false;\r\n errorMsg = '';\r\n\r\n showError(Response: any) {\r\n if (!this.form) {\r\n this.form = new Form(\r\n Constants.NO_VALUE,\r\n Constants.NO_VALUE,\r\n Constants.NO_VALUE,\r\n Constants.NO_VALUE,\r\n Constants.NO_VALUE,\r\n Constants.NO_VALUE,\r\n Response\r\n );\r\n } else {\r\n this.errorOccured = true;\r\n this.errorMsg = Response?.error[0];\r\n // this.form.messages = Response;\r\n }\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n handleFeedbackQuestion(event) {\r\n this.feedBackQuestion = event;\r\n this.handleFeedbackValidation();\r\n }\r\n\r\n handleFeedbackResponse(event) {\r\n this.feedBackResponse = event;\r\n this.handleResponseValidation();\r\n }\r\n\r\n handleUserSelected(event) {\r\n this.searchEmp = {\r\n personEmail: event.personEmail,\r\n personName: event.personName\r\n };\r\n if (!this.feedBackQuestion) {\r\n return;\r\n }\r\n this.handleFeedbackValidation();\r\n }\r\n\r\n handleResponseValidation() {\r\n if (\r\n this.feedBackResponse.length >= 1 &&\r\n this.feedBackResponse.length < 500\r\n ) {\r\n this.isResponseValidated = true;\r\n } else {\r\n this.isResponseValidated = false;\r\n }\r\n }\r\n\r\n handleFeedbackValidation() {\r\n if (\r\n this.feedBackQuestion.length >= 1 &&\r\n this.feedBackQuestion.length < 500 &&\r\n this.searchEmp.personEmail\r\n ) {\r\n this.isFeedbackValidated = true;\r\n } else {\r\n this.isFeedbackValidated = false;\r\n }\r\n }\r\n}\r\n","<div class=\"popup-container\">\r\n <div class=\"d-flex align-items-center justify-content-between\" mat-dialog-title>\r\n <h3>{{i18n.translate('requestFeedback')}}</h3>\r\n <ds-button square icon matDialogClose>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"d-flex flex-column align-items-center justify-content-center py-4\" *ngIf=\"submitted\">\r\n <div class=\"text-center mb-4\">\r\n <svg width=\"79\" height=\"76\" viewBox=\"0 0 79 76\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M59.9804 0.0998676L1.39239 19.2479C1.02223 19.3692 0.69498 19.5948 0.44999 19.8976C0.205 20.2005 0.0526985 20.5676 0.0113985 20.955C-0.0299016 21.3423 0.0415576 21.7333 0.217184 22.081C0.39281 22.4287 0.665128 22.7183 1.00139 22.9149L23.1454 35.7899C23.487 35.9886 23.8794 36.0828 24.274 36.0608C24.6686 36.0388 25.0481 35.9014 25.3654 35.6659L31.5894 31.0439L26.9674 37.2679C26.7318 37.5852 26.5944 37.9646 26.5722 38.3591C26.5499 38.7537 26.6439 39.1461 26.8424 39.4879L39.7174 61.6289C39.9138 61.9652 40.2031 62.2377 40.5506 62.4135C40.8981 62.5894 41.289 62.6611 41.6763 62.6201C42.0636 62.5791 42.4308 62.4272 42.7338 62.1825C43.0369 61.9378 43.2628 61.6108 43.3844 61.2409L62.5294 2.65187C62.6458 2.29686 62.6615 1.91654 62.5749 1.55313C62.4883 1.18971 62.3026 0.857401 62.0386 0.593071C61.7746 0.328741 61.4425 0.142726 61.0792 0.0556665C60.7159 -0.0313933 60.3355 -0.0160937 59.9804 0.0998676ZM40.9434 55.6999L31.0014 38.6069L42.9894 22.4689C43.2797 22.0798 43.4202 21.5993 43.3852 21.1152C43.3502 20.631 43.142 20.1757 42.7988 19.8325C42.4556 19.4893 42.0002 19.2811 41.5161 19.2461C41.032 19.2111 40.5514 19.3516 40.1624 19.6419L24.0254 31.6279L6.93339 21.6889L57.4514 5.18087L40.9434 55.6999ZM21.2134 44.2759L7.80139 57.6909C7.42253 58.0701 6.90853 58.2833 6.37246 58.2836C5.83638 58.2839 5.32215 58.0712 4.94289 57.6924C4.56363 57.3135 4.35041 56.7995 4.35013 56.2634C4.34985 55.7274 4.56253 55.2131 4.94139 54.8339L18.3564 41.4189C18.7353 41.04 19.2491 40.8272 19.7849 40.8272C20.3207 40.8272 20.8345 41.04 21.2134 41.4189C21.5923 41.7977 21.8051 42.3116 21.8051 42.8474C21.8051 43.3832 21.5923 43.897 21.2134 44.2759ZM3.49139 44.7839C3.30378 44.5963 3.15495 44.3736 3.05341 44.1285C2.95187 43.8834 2.89961 43.6207 2.89961 43.3554C2.89961 43.0901 2.95187 42.8274 3.05341 42.5823C3.15495 42.3371 3.30378 42.1144 3.49139 41.9269L8.78439 36.6339C9.16326 36.255 9.6771 36.0422 10.2129 36.0422C10.7487 36.0422 11.2625 36.255 11.6414 36.6339C12.0203 37.0127 12.2331 37.5266 12.2331 38.0624C12.2331 38.5982 12.0203 39.112 11.6414 39.4909L6.34939 44.7839C6.1618 44.9716 5.93903 45.1206 5.69384 45.2222C5.44864 45.3238 5.18582 45.3762 4.92039 45.3762C4.65497 45.3762 4.39215 45.3238 4.14695 45.2222C3.90176 45.1206 3.67899 44.9716 3.49139 44.7839ZM26.0014 50.9899C26.189 51.1774 26.3378 51.4001 26.4394 51.6453C26.5409 51.8904 26.5932 52.1531 26.5932 52.4184C26.5932 52.6837 26.5409 52.9464 26.4394 53.1915C26.3378 53.4366 26.189 53.6593 26.0014 53.8469L20.7014 59.1409C20.3225 59.5197 19.8087 59.7326 19.2729 59.7326C18.7371 59.7326 18.2233 59.5197 17.8444 59.1409C17.4655 58.762 17.2527 58.2482 17.2527 57.7124C17.2527 57.1766 17.4655 56.6627 17.8444 56.2839L23.1374 50.9909C23.325 50.8032 23.5477 50.6544 23.7928 50.5529C24.0379 50.4513 24.3006 50.3991 24.5659 50.3991C24.8312 50.3991 25.0939 50.4513 25.339 50.5529C25.5841 50.6544 25.8068 50.8032 25.9944 50.9909L26.0014 50.9899Z\"\r\n fill=\"#8E9AA0\" />\r\n <path\r\n d=\"M58.0015 75.3119C69.0472 75.3119 78.0015 66.3576 78.0015 55.3119C78.0015 44.2662 69.0472 35.3119 58.0015 35.3119C46.9558 35.3119 38.0015 44.2662 38.0015 55.3119C38.0015 66.3576 46.9558 75.3119 58.0015 75.3119Z\"\r\n fill=\"#00C48C\" />\r\n <path\r\n d=\"M56.8804 57.3183L54.0346 54.4725L52.9743 55.5336L56.8774 59.4367L65.8354 50.5267L65.4927 50.0138C63.8557 47.5812 61.1134 46.002 58.0015 46.002C53.0313 46.002 49.0015 50.031 49.0015 55.002C49.0015 59.9729 53.0305 64.002 58.0015 64.002C62.9716 64.002 67.0007 59.9729 67.0015 55.0035H65.5017C65.5017 55.005 65.5017 55.0072 65.5017 55.0095C65.5017 59.1503 62.1453 62.5067 58.0045 62.5067C53.8637 62.5067 50.5072 59.1503 50.5072 55.0095C50.5072 50.8686 53.8637 47.5122 58.0045 47.5122C60.3793 47.5122 62.4962 48.6168 63.87 50.3392L63.882 50.3542L56.8804 57.3183Z\"\r\n fill=\"white\" />\r\n </svg>\r\n\r\n </div>\r\n <h2 class=\"fs-16 fw-medium fc-black mb-4 text-center\">\r\n {{i18n.translate('submittedSuccessfully')}}\r\n </h2>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!submitted\">\r\n <div class=\"mb-3\" *ngIf=\"feedBackService.feedbackForm \">\r\n <app-search-employee #employee label=\"{{i18n.translate('requestTo')}}\" [field]=\"searchEmp\"\r\n [labelTextReadMode]=\"i18n.translate('requestTo')\" [labelTextWriteMode]=\"i18n.translate('requestTo')\"\r\n [name]=\"'searchEmp'\" (emitedValue)=\"handleUserSelected($event)\">\r\n </app-search-employee>\r\n <app-textarea #request [field]=\"employeeInput\" name=\"employeeInput\" label=\"{{i18n.translate('feedback')}}\"\r\n [required]=\"true\" [minLength]='1' (emitedValue)=\"handleFeedbackQuestion($event)\" [maxLength]='500'\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max500')\">\r\n </app-textarea>\r\n </div>\r\n\r\n <div class=\"info-section\" *ngIf=\"!feedBackService.feedbackForm\">\r\n <ng-container *ngIf=\"feedBackService.responderForm\">\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('requestFrom')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.requestFrom}}\"></app-info-item>\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('requestTo')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.requestTo}}\"></app-info-item>\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('feedbackQuestion')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.requestFeedback}}\"></app-info-item>\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('feedback')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.responseFeedback}}\"></app-info-item>\r\n <app-textarea #request class=\"full mx-3 mt-3 section-item\" [field]=\"employeeInput\" name=\"employeeInput\"\r\n label=\"{{i18n.translate('feedback')}}\" [required]=\"true\" [minLength]='1'\r\n (emitedValue)=\"handleFeedbackResponse($event)\" [maxLength]='500'\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max500')\">\r\n </app-textarea>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"feedBackService.pendingForm\" id=\"responce_form\">\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('requestFrom')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.requestFrom}}\"></app-info-item>\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('requestTo')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.requestTo}}\"></app-info-item>\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('feedbackQuestion')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.requestFeedback}}\"></app-info-item>\r\n <app-info-item class=\"info-item w-100\" label=\"{{i18n.translate('feedback')}}\"\r\n value=\"{{feedBackService?.feedbackResponse?.responseFeedback}}\"></app-info-item>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center justify-content-center w-100 gap-3\" *ngIf=\"!submitted\">\r\n <ds-button shape=\"outline\" matDialogClose>\r\n {{i18n.translate('Cancel')}}\r\n </ds-button>\r\n <ds-button *ngIf=\"feedBackService.feedbackForm\" (click)=\"addFeedback()\"\r\n disabled=\"{{!(isFeedbackValidated)}}\">\r\n {{i18n.translate('submit')}}\r\n </ds-button>\r\n <ds-button *ngIf=\"!feedBackService.feedbackForm && feedBackService.responderForm\"\r\n disabled=\"{{!(isResponseValidated)}}\" (click)=\"addResponse()\">\r\n {{i18n.translate('submit')}}\r\n </ds-button>\r\n </div>\r\n </ng-container>\r\n\r\n </mat-dialog-content>\r\n\r\n</div>\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject} from '@angular/core';\r\nimport {CoreI18nService, CoreService, SidenavService} from '../../../services';\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\n\r\n\r\n@Component({\r\n selector: 'app-activities',\r\n templateUrl: './activities.component.html',\r\n styleUrls: ['./activities.component.scss'],\r\n standalone: true,\r\n imports: [],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class ActivitiesComponent {\r\n parsedData: string;\r\n destroyRef = inject(DestroyRef);\r\n\r\n constructor(\r\n private readonly sidenavService: SidenavService,\r\n public i18n: CoreI18nService,\r\n public coreService: CoreService\r\n ) {\r\n this.parsedData = JSON.stringify(this.coreService.activities)\r\n }\r\n\r\n downloadFile(event: any) {\r\n console.log(event.detail.value);\r\n const placeholder = event.target.nextElementSibling;\r\n \r\n this.coreService.loadFile(event.detail.value.id).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe({\r\n next: (responseObject: { body: any }) => {\r\n const fileInformation = responseObject.body;\r\n const fileBlob = this.coreService.dataURItoBlob(fileInformation.fileContents);\r\n const file = new File([fileBlob], fileInformation.fileName, { type: fileInformation.mimeType });\r\n placeholder.href = URL.createObjectURL(file);\r\n placeholder.download = file.name;\r\n placeholder.click();\r\n },\r\n error: (error) => {\r\n console.error('Error loading file:', error);\r\n }\r\n });\r\n }\r\n\r\n\r\n closeSidenav() {\r\n this.sidenavService.publish('close', null);\r\n }\r\n}\r\n","<section class=\"main-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('commentHistory') }}</h3>\r\n\r\n <ds-button (click)=\"closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n\r\n </div>\r\n <div class=\"sidenav-body\">\r\n @if (coreService.activities) {\r\n <ds-activity-log activitiesData=\"{{parsedData}}\" readOnly (downloadEvent)=\"downloadFile($event)\">\r\n </ds-activity-log>\r\n <a href=\"\" class=\"d-none\"></a>\r\n } @else {\r\n <ds-message label=\"{{i18n.translate('NoData1')}}\"></ds-message>\r\n }\r\n </div>\r\n</section>\r\n","import {Pipe, PipeTransform} from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'statusClass',\r\n standalone: true,\r\n})\r\nexport class StatusStylePipe implements PipeTransform {\r\n transform(status: string): string {\r\n let statusClass = {\r\n APPROVED: 'success',\r\n STORED: 'success',\r\n GM_APPROVAL: 'success',\r\n COMPLETED: 'success',\r\n COMPLETE: 'success',\r\n ACCEPTED: 'success',\r\n SUBMIT: 'success',\r\n SUBMIT_TRAINING: 'success',\r\n VEHICLE_IS_AVAILABLE: 'success',\r\n VEHICLE_RECEIVED: 'success',\r\n RETRY: 'success',\r\n REJECT: 'danger',\r\n REJECTED: 'danger',\r\n AUTO_REJECT: 'danger',\r\n VEHICLE_IS_NOT_AVAILABLE: 'danger',\r\n SEND_TO_SAFETY_INSPECTOR: 'success',\r\n SEND_TO_DESIGN_TEAM: 'success',\r\n SEND_TO_SECURITY_SUPERVISOR: 'success',\r\n PENDING: 'warning',\r\n QUEUED: 'warning',\r\n UNACCEPTABLE: 'success',\r\n RECEIVED: 'success',\r\n CLOSED: 'success',\r\n\r\n SENT: 'info',\r\n\r\n SENDBACKTOREQUESTER: 'send_back',\r\n 'COLLECT_SITE_FEEDBACK': 'success',\r\n 'COLLECT_SITE_VISIT_FEEDBACK': 'success',\r\n 'SUBMIT_FEEDBACK': 'success',\r\n 'CONFIRM_SITE_HANDOVER': 'success',\r\n\r\n\r\n // \"SENDBACKTOREQUESTER\": \"send_back\",\r\n SEND_BACK_TO_REQUESTER: 'send_back',\r\n 'SEND BACK TO REQUESTER': 'send_back',\r\n SENDBACK: 'send_back',\r\n\r\n EXPIRED: 'expired',\r\n\r\n CANCELLED: 'pending',\r\n CANCELED: 'pending',\r\n SHIPMENT_DELIVERY_REJECTED: 'danger'\r\n }\r\n\r\n // status == 'SEND BACK TO REQUESTER' ? 'SENDBACKTOREQUESTER' : status\r\n\r\n return statusClass[status?.toUpperCase()] || 'success'\r\n }\r\n}\r\n","import {AfterViewInit, ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, OnInit} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {MatMenuModule} from \"@angular/material/menu\";\r\nimport {MatDialog, MatDialogModule} from \"@angular/material/dialog\";\r\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators} from \"@angular/forms\";\r\nimport {MatButtonToggleModule} from \"@angular/material/button-toggle\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {CoreI18nService, CoreService, SidenavService} from \"../../../services\";\r\nimport {StatusStylePipe} from \"../../../pipes/status-style.pipe\";\r\nimport {ToastrService} from \"ngx-toastr\";\r\nimport {CdkConnectedOverlay, CdkOverlayOrigin} from \"@angular/cdk/overlay\";\r\nimport {CustomSearchableComponent} from \"../../shared-components\";\r\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\r\nimport {Subject} from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'app-history',\r\n standalone: true,\r\n\r\n imports: [\r\n CommonModule,\r\n MatMenuModule,\r\n RouterModule,\r\n MatDialogModule,\r\n ReactiveFormsModule,\r\n MatButtonToggleModule,\r\n StatusStylePipe,\r\n CdkOverlayOrigin,\r\n CustomSearchableComponent,\r\n CdkConnectedOverlay\r\n\r\n ],\r\n templateUrl: './previous-requests.component.html',\r\n styleUrls: ['./previous-requests.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class PreviousRequestsComponent implements OnInit, AfterViewInit {\r\n previousRequests: any[] = []\r\n destroyRef = inject(DestroyRef);\r\n\r\n loading: boolean\r\n filterFormGroup: FormGroup;\r\n errorMessage: string\r\n isOpen: boolean = false;\r\n monthsOptions = [\r\n {key: '1', value: '1'},\r\n {key: '2', value: '2'},\r\n {key: '3', value: '3'},\r\n {key: '4', value: '4'},\r\n {key: '5', value: '5'},\r\n {key: '6', value: '6'},\r\n {key: '7', value: '7'},\r\n {key: '8', value: '8'},\r\n {key: '9', value: '9'},\r\n {key: '10', value: '10'},\r\n {key: '11', value: '11'},\r\n {key: '12', value: '12'}\r\n ];\r\n yearsOptions = [\r\n {key: new Date().getFullYear(), value: new Date().getFullYear()},\r\n {key: new Date().getFullYear() - 1, value: new Date().getFullYear() - 1},\r\n {key: new Date().getFullYear() - 2, value: new Date().getFullYear() - 2},\r\n {key: new Date().getFullYear() - 3, value: new Date().getFullYear() - 3}];\r\n\r\n statuses = []\r\n searchData = {\r\n year: null,\r\n month: null\r\n }\r\n\r\n constructor(public dialog: MatDialog,\r\n private readonly sidenavService: SidenavService,\r\n public coreService: CoreService,\r\n private readonly toasterService: ToastrService,\r\n public i18n: CoreI18nService,\r\n private readonly fb: FormBuilder,\r\n private cd: ChangeDetectorRef\r\n ) {}\r\n\r\n /**\r\n * Initializes the component on initialization.\r\n * It creates a form and sets the available statuses based on the current language.\r\n *\r\n * @return {void}\r\n */\r\n ngOnInit() {\r\n this.createForm();\r\n this.statuses = [\r\n {key: \"APPROVED\", value: this.i18n.language == 'en' ? \"Approve\" : \"موافقة\"},\r\n {key: \"REJECTED\", value: this.i18n.language == 'en' ? \"Reject\" : \"مرفوض\"},\r\n {key: \"PENDING\", value: this.i18n.language == 'en' ? \"Pending\" : \"معلق\"}\r\n ]\r\n }\r\n\r\n // variables to manage subscription\r\n private readonly ngUnsubscribe: Subject<void> = new Subject<void>();\r\n\r\n// new helper methods for form controls\r\n /**\r\n * Generates form controls for the current month and year.\r\n *\r\n * @return {object} An object containing form controls for the current month and year.\r\n * - month: FormControl for the current month with Validators required\r\n * - year: FormControl for the current year with Validators required\r\n */\r\n private currentDateControl(): { [key: string]: FormControl } {\r\n const date = new Date();\r\n const month = date.getUTCMonth() + 1;\r\n const year = date.getFullYear();\r\n\r\n return {\r\n month: new FormControl({key: month, value: month}, Validators.required),\r\n year: new FormControl({key: year, value: year}, Validators.required),\r\n };\r\n }\r\n\r\n /**\r\n * Initializes a form group for filtering data.\r\n * It creates form controls for the current date and status.\r\n * Also sets up a subscription to listen for changes in the status control.\r\n *\r\n * @return {void}\r\n */\r\n createForm() {\r\n this.filterFormGroup = this.fb.group({\r\n ...this.currentDateControl(),\r\n status: new FormControl('', Validators.required)\r\n });\r\n this.filterFormGroup.get('status').valueChanges.pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(value => {\r\n this.filterStatus()\r\n })\r\n }\r\n\r\n\r\n /**\r\n * Perform initialization after Angular has fully initialized a component's view.\r\n *\r\n * @return {void}\r\n */\r\n ngAfterViewInit() {\r\n if (this.coreService.historyDataLoaded) {\r\n this.previousRequests = this.coreService.historyData\r\n } else {\r\n this.getRequests()\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n /**\r\n * Clear all filters and reset the form group to its initial state.\r\n * Sets the month and year filters to the current date's month and year respectively.\r\n * Sets the status filter to an empty string.\r\n * Toggles the isOpen property and triggers the filterStatus method.\r\n *\r\n * @return {void}\r\n */\r\n clearFilters() {\r\n this.filterFormGroup.reset()\r\n this.filterFormGroup.get('month').setValue({key: new Date().getUTCMonth() + 1, value: new Date().getUTCMonth() + 1})\r\n this.filterFormGroup.get('year').setValue({key: new Date().getFullYear(), value: new Date().getFullYear() + 1})\r\n this.filterFormGroup.get('status').setValue('')\r\n this.isOpen = !this.isOpen\r\n this.filterStatus()\r\n }\r\n\r\n /**\r\n * Toggles the isOpen property and triggers the getRequests() method.\r\n *\r\n * @return {void}\r\n */\r\n applyFilters() {\r\n this.isOpen = !this.isOpen\r\n this.getRequests()\r\n }\r\n\r\n /**\r\n * Retrieves request data based on form values.\r\n *\r\n * @return {void}\r\n */\r\n getRequests() {\r\n const formValues = this.getFormValues()\r\n if (this.areFormValuesEqual(this.searchData, formValues)) {\r\n this.filterStatus()\r\n } else {\r\n this.updateSearchData(formValues)\r\n this.requestCoreData()\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the form values including the year and month.\r\n *\r\n * @return {Object} Returns an object containing the year and month values.\r\n */\r\n getFormValues() {\r\n return {\r\n year: this.getYearValue(),\r\n month: this.getMonthValue(),\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the selected year value from the filter form group.\r\n *\r\n * @return The selected year value as a number.\r\n */\r\n private getYearValue(): number {\r\n return this.filterFormGroup.get('year').value?.key;\r\n }\r\n\r\n /**\r\n * Retrieves the month value from the filter form group.\r\n *\r\n * @return {number} The month value retrieved from the form group.\r\n */\r\n private getMonthValue(): number {\r\n return this.filterFormGroup.get('month').value?.key;\r\n }\r\n\r\n /**\r\n * Checks if the year and month values of two form objects are equal.\r\n *\r\n * @param {Object} first - The first form object to compare.\r\n * @param {Object} second - The second form object to compare.\r\n * @returns {boolean} - true if the year and month values are equal, otherwise false.\r\n */\r\n areFormValuesEqual(first, second) {\r\n return first.year == second.year && first.month == second.month\r\n }\r\n\r\n /**\r\n * Update the search data with the provided data.\r\n *\r\n * @param {Object} data - The new search data to update.\r\n *\r\n * @return {void}\r\n */\r\n updateSearchData(data) {\r\n this.searchData = data\r\n }\r\n\r\n /**\r\n * Sends a request to retrieve core data using the Core Service API.\r\n * Initializes loading and requests before making the call.\r\n *\r\n * @return {void}\r\n */\r\n requestCoreData() {\r\n this.initializeLoadingAndRequests()\r\n this.loading = true\r\n this.coreService.historyData = []\r\n this.previousRequests = []\r\n this.coreService.myRequests(this.searchData).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe({\r\n next: (response: any) => {\r\n this.coreService.historyData = response.history;\r\n this.previousRequests = this.coreService.historyData\r\n this.coreService.historyDataLoaded = true\r\n this.filterStatus()\r\n },\r\n error: (err) => {\r\n this.loading = false;\r\n this.errorMessage = err?.error?.meta?.messages?.['0']?.message;\r\n this.toasterService.error(this.errorMessage)\r\n },\r\n complete: () => {\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Initializes loading and requests.\r\n *\r\n * @return {void}\r\n */\r\n initializeLoadingAndRequests() {\r\n this.loading = true\r\n this.coreService.historyData = []\r\n this.previousRequests = []\r\n }\r\n\r\n /**\r\n * Handles successful response from a request.\r\n *\r\n * @param {Object} response - The response object containing history data.\r\n * @return {void}\r\n */\r\n handleRequestSuccess(response) {\r\n this.coreService.historyData = response.history\r\n this.previousRequests = this.coreService.historyData\r\n this.coreService.historyDataLoaded = true\r\n this.filterStatus()\r\n }\r\n\r\n /**\r\n * Handles the error received from a request\r\n *\r\n * @param {Object} err - The error object containing information about the error\r\n * @return {void}\r\n */\r\n handleRequestError(err) {\r\n this.loading = false\r\n this.errorMessage = err?.error?.meta?.messages?.['0']?.message\r\n this.toasterService.error(this.errorMessage)\r\n }\r\n\r\n /**\r\n * Filters the previous requests based on the status selected in the filter form.\r\n *\r\n * @return {void}\r\n */\r\n filterStatus() {\r\n const statusKey = this.filterFormGroup.get('status').value?.key;\r\n this.previousRequests = this.coreService.historyData\r\n let filterData: any[];\r\n\r\n if (statusKey) {\r\n filterData = this.previousRequests.filter((request) => request.form?.['formStatus']?.key === statusKey);\r\n } else {\r\n filterData = this.previousRequests;\r\n }\r\n\r\n this.previousRequests = filterData;\r\n }\r\n\r\n /**\r\n * Opens a form in a new window based on the provided form ID.\r\n *\r\n * @param {string} formId - The ID of the form to be opened.\r\n * @return {void}\r\n */\r\n viewForm(formId: string) {\r\n if (formId) {\r\n window.open('/group/i-gate/wm-bpm/forms?formId=' + formId);\r\n }\r\n }\r\n\r\n /**\r\n * Closes the side navigation panel.\r\n *\r\n * @return {void}\r\n */\r\n closeSidenav() {\r\n this.sidenavService.publish('close', null);\r\n }\r\n\r\n /**\r\n * Emit the value to complete all active subscriptions\r\n *\r\n * @return {void}\r\n */\r\n ngOnDestroy() {\r\n // emit the value to complete all active subscriptions\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n}\r\n","<section class=\"main-sidenav history-sidenav\">\r\n <div class=\"sidenav-title\">\r\n <h3>{{ i18n.translate('PreviousRequests') }}</h3>\r\n <ds-button class=\"close-sidenav\" (click)=\"closeSidenav()\" icon>\r\n <ds-icon icon=\"close\" class=\"fs-20 fc-black\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n\r\n <div class=\"sidenav-body bc-light-gray\">\r\n <section class=\"p-3\">\r\n <header class=\"d-flex align-items-center justify-content-between gap-2 mb-3\">\r\n <h2 class=\"fs-20 fw-medium fc-black mb-0 d-flex align-items-center flex-grow-1 gap-3\">\r\n {{ i18n.translate('AllRequests') }}\r\n <span class=\"title-count fs-14 fw-normal\">{{ previousRequests?.length ? previousRequests?.length : '0' }}</span>\r\n </h2>\r\n <ds-button icon size=\"small\" (click)=\"isOpen = !isOpen\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <ds-icon icon=\"filter\" class=\"fc-coral fs-20\" slot=\"prefix\"></ds-icon>\r\n </ds-button>\r\n <mat-button-toggle-group\r\n class=\"icon-toggle flex-nowrap\"\r\n #pageView=\"matButtonToggleGroup\"\r\n (click)=\"$event.stopImmediatePropagation()\"\r\n value=\"list\"\r\n >\r\n <mat-button-toggle value=\"card\">\r\n <span class=\"sfi sfi-card fs-20\"></span>\r\n </mat-button-toggle>\r\n <mat-button-toggle value=\"list\">\r\n <span class=\"sfi sfi-list-dots fs-20\"></span>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </header>\r\n\r\n @if (pageView.value === 'card') {\r\n <div class=\"history-cards-container\">\r\n @if (loading) {\r\n <ng-container>\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of [0,1,2,3]\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3 class=\"loading-bg fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"></h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2 loading-bg\"></span>\r\n <span class=\"fs-12 fw-medium fc-black loading-bg\"></span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n } @else {\r\n <div class=\"p-4 line-height-1 bc-white radius-6 box-shadow\" *ngFor=\"let row of previousRequests\">\r\n <div class=\"d-flex align-items-center gap-2 mb-3\">\r\n <h3\r\n class=\"fs-16 fw-medium flex-grow-1 mb-0 cursor-pointer underline fw-bold\"\r\n (click)=\"viewForm(row?.form?.['formId'])\">{{ row?.form?.['formId'] }}</h3>\r\n </div>\r\n <div class=\"row g-3\">\r\n <div class=\"d-flex flex-column col-6\">\r\n <span class=\"fs-11 fc-dark-gray mb-2\">{{ i18n.translate('formTableCreationDate') }}</span>\r\n <span class=\"fs-12 fw-medium fc-black\">{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</span>\r\n </div>\r\n <div class=\"d-flex flex-column col-6 justify-content-end align-items-end\">\r\n\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n @if (pageView.value === 'list') {\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"previousRequests?.length && !loading\">\r\n <thead>\r\n <tr>\r\n <th>{{ i18n.translate('formTableFormId') }}</th>\r\n <th>{{ i18n.translate('formTableCreationDate') }}</th>\r\n <th>{{ i18n.translate('Status') }}</th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody *ngFor=\"let row of previousRequests\">\r\n <tr>\r\n <td>\r\n <span class=\"fw-medium cursor-pointer underline fw-bold \" (click)=\"viewForm(row?.form?.['formId'])\">\r\n {{ row?.form?.['formId'] }}\r\n </span>\r\n </td>\r\n <td>{{ row?.form?.['creationDate'] | date: 'dd/MM/yyyy hh:mm a' }}</td>\r\n <td>\r\n <ds-status [attr.status]=\"row?.form?.formStatus?.key | statusClass\">\r\n {{ row?.form?.formStatus?.value }}\r\n </ds-status>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <ds-loading-table *ngIf=\"loading\" [cols]=\"4\" [rows]=\"4\"></ds-loading-table>\r\n </div>\r\n }\r\n @if (!previousRequests?.length && !loading) {\r\n <ng-container *ngTemplateOutlet=\"emptyMessage\"></ng-container>\r\n }\r\n </section>\r\n </div>\r\n</section>\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"isOpen = false\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n>\r\n <form [formGroup]=\"filterFormGroup\">\r\n <div class=\"filter-container\">\r\n <div class=\"popup-header border-bottom pb-2\">\r\n <h3 class=\"fs-16 fc-black fw-medium\">{{ i18n.translate('filters') }}</h3>\r\n </div>\r\n <div class=\"d-flex flex-column gap-4 gap-md-3 filter-section bc-white mt-0 pt-3\">\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"status\"\r\n label=\"{{ i18n.translate('status') }}\"\r\n [options]=\"statuses\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"year\"\r\n label=\"{{ i18n.translate('year') }}\"\r\n [options]=\"yearsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <app-custom-searchable\r\n class=\"section-item\"\r\n formControlName=\"month\"\r\n label=\"{{ i18n.translate('month') }}\"\r\n [options]=\"monthsOptions\"\r\n [displayedLabel]=\"'value'\"\r\n [key]=\"'key'\">\r\n </app-custom-searchable>\r\n\r\n <div class=\"d-flex align-items-center gap-3 mt-4\">\r\n <ds-button shape=\"outline\" size=\"small\" (click)=\"clearFilters()\">\r\n <span class=\"fs-12\"> {{ i18n.translate('clear') }} </span>\r\n </ds-button>\r\n <ds-button class=\"w-100\" size=\"small\" (click)=\"applyFilters()\">\r\n <span class=\"fs-12\">{{ i18n.translate('applyFilters') }} </span>\r\n </ds-button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</ng-template>\r\n\r\n\r\n <ng-template #emptyMessage>\r\n <ds-message label=\"{{i18n.translate('NoData')}}\"></ds-message>\r\n </ng-template>\r\n","import {AfterViewInit, ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Input} from '@angular/core';\r\nimport {Form, Section} from '../../../interfaces';\r\nimport * as Constants from '../../../constants/constants';\r\nimport {MAT_DIALOG_DATA, MatDialog} from '@angular/material/dialog';\r\nimport {CoreI18nService, CoreService, FeedBackService, SidenavService} from '../../../services';\r\nimport {ProfileSectionComponent} from '../profile-section/profile-section.component';\r\nimport {FeedbackSectionComponent} from '../feedback-section/feedback-section.component';\r\nimport {NgClass, NgIf} from '@angular/common';\r\nimport {SatPopoverModule} from '@ncstate/sat-popover';\r\nimport {MatDivider} from '@angular/material/divider';\r\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from '@angular/material/menu';\r\nimport {FaqSidenavComponent} from '../faq-sidenav/faq-sidenav.component';\r\nimport {ActivitiesComponent} from '../activities/activities.component';\r\nimport {format} from 'date-fns';\r\nimport {ToastrService} from \"ngx-toastr\";\r\nimport {PreviousRequestsComponent} from \"../previous-requests/previous-requests.component\";\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nconst StatusMap = {\r\n [Constants.FORM_STATUS_REJECTED]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_CANCELLED]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_REJECT]: {class: 'danger', icon: 'close'},\r\n [Constants.SECTION_STATUS_UNSATISFIED]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_CANCEL]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_PENDING]: {class: 'warning', icon: 'clock'},\r\n 'default': {class: 'success', icon: 'check'}\r\n}\r\n\r\ninterface ApprovalHistoryItem {\r\n approver: {\r\n personName: string;\r\n personEmail: string;\r\n };\r\n positionType: string;\r\n}\r\n\r\n@Component({\r\n selector: 'core-service-header',\r\n templateUrl: './service-header.component.html',\r\n styleUrls: ['./service-header.component.scss'],\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n SatPopoverModule,\r\n MatDivider,\r\n MatMenuTrigger,\r\n NgClass,\r\n MatMenu,\r\n MatMenuItem\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [FeedBackService,\r\n {provide: MAT_DIALOG_DATA, useValue: {}},\r\n ]\r\n})\r\nexport class ServiceHeaderComponent implements AfterViewInit {\r\n @Input() form: Form;\r\n @Input() showHistory = false;\r\n @Input() isLoading = false;\r\n @Input() isReadOnly = false;\r\n @Input() showApprovalHistory = false;\r\n @Input() approvalHistory: any;\r\n @Input() creationDate: string;\r\n @Input() formTitle: string;\r\n @Input() section: Section;\r\n @Input() serviceFaq: any[] = [];\r\n approvals: any[] = [];\r\n flagPriority: string;\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor(\r\n private readonly cdRef: ChangeDetectorRef,\r\n public coreService: CoreService,\r\n public i18n: CoreI18nService, private readonly feedBackService: FeedBackService,\r\n private readonly dialog: MatDialog, private readonly sidenavService: SidenavService,\r\n private readonly toasterService: ToastrService\r\n ) {}\r\n\r\n /**\r\n * Executes after the view has been fully initialized.\r\n *\r\n * @return {void}\r\n */\r\n ngAfterViewInit() {\r\n this.getApprovalHistory(this.approvalHistory);\r\n if (this.form?.header?.creationDate) {\r\n this.creationDate = format(new Date(this.form?.header?.creationDate), \"dd/MM/yyyy hh:mm:ss\");\r\n }\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Handles the click event on the comments form.\r\n * Retrieves comments from the form, transforms them, and updates activities in the core service.\r\n * Finally, publishes an 'open' event to the sidenav service to open the ActivitiesComponent.\r\n *\r\n * @return {void}\r\n */\r\n onCommentsFormClick() {\r\n const formComments: any = this.form.commentsDrop;\r\n const transformedComments = [];\r\n for (const comment of formComments) {\r\n transformedComments.push(this.transformCommentItem(comment));\r\n }\r\n this.coreService.activities = transformedComments;\r\n this.sidenavService.publish('open', ActivitiesComponent);\r\n }\r\n\r\n /**\r\n * Transforms a comment item into a different format for display.\r\n *\r\n * @param {Object} item - The original comment item to transform.\r\n * @return {Object} - The transformed comment item with specific properties including name, title, image, date, time, comment, and attachments.\r\n */\r\n private transformCommentItem(item) {\r\n return {\r\n name: item['employeeName'],\r\n title: item.jobPosition,\r\n image: item['profilePicture'],\r\n date: format(new Date(item['commentDate']), 'yyyy-MM-dd'),\r\n time: format(new Date(item['commentDate']), 'h:mm a'),\r\n comment: item['commentBody'],\r\n attachments: item['attachment']\r\n };\r\n }\r\n\r\n /**\r\n * Opens a dialog for providing feedback.\r\n *\r\n * @return {void}\r\n */\r\n feedback(): void {\r\n this.dialog.open(FeedbackSectionComponent, {\r\n panelClass: ['main-popup'],\r\n data: {\r\n profile: this.form.profileInfoDrop,\r\n inboxItem: this.form.inboxItem,\r\n form: this.form\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Updates the sidenav with user profile information if not already loading.\r\n *\r\n * @return {void}\r\n */\r\n showUserInfo(): void {\r\n if (!this.isLoading) {\r\n this.sidenavService.data = this.form?.profileInfoDrop;\r\n this.sidenavService.publish('open', ProfileSectionComponent);\r\n }\r\n }\r\n\r\n /**\r\n * Set the priority flag for the inbox item with the provided ID.\r\n *\r\n * @param {string} id - The ID of the priority flag to be set for the inbox item.\r\n * @return {void}\r\n */\r\n setFlagPriority(id: string) {\r\n this.flagPriority = id;\r\n this.form.inboxItem.flagPriority = id;\r\n this.subscribeToSetFlagPriority(id);\r\n }\r\n\r\n /**\r\n * Subscribe to set flag priority for a specific identifier.\r\n *\r\n * @param {string} id - The identifier of the flag to set priority for.\r\n * @return {void}\r\n */\r\n subscribeToSetFlagPriority(id: string): void {\r\n this.coreService.setFlagPriority(id).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((response: any) => {\r\n if (response) {\r\n this.toasterService.success(this.i18n.translate('flagStatusUpdated'));\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Returns the CSS class associated with the input status.\r\n *\r\n * @param {string} status - The status for which the CSS class is needed.\r\n * @return {string} - The CSS class corresponding to the given status.\r\n */\r\n statusClass(status: string): string {\r\n // status = status ? status.toLowerCase() : '';\r\n let statusStrategy = StatusMap[status] || StatusMap['default'];\r\n return statusStrategy.class;\r\n }\r\n\r\n /**\r\n * Opens the FAQ side navigation.\r\n * @return {void}\r\n */\r\n openFaq() {\r\n this.sidenavService.publish('open', FaqSidenavComponent, 'end', 'over', this.serviceFaq);\r\n }\r\n\r\n /**\r\n * Retrieves approval history information for each approval item in the provided array.\r\n *\r\n * @param {ApprovalHistoryItem[]} approvalHistory - The array containing approval history items.\r\n *\r\n * @return {void} - This method does not return any value. It updates the internal 'approvals' array.\r\n */\r\n getApprovalHistory(approvalHistory: ApprovalHistoryItem[]) {\r\n approvalHistory?.forEach((approvalItem, index) => {\r\n let approvalStatus = this.getApprovalStatus(index);\r\n let approvalStatusLabel = this.getApprovalStatusLabel(index);\r\n const obj = {\r\n id: index + 1,\r\n name: approvalItem.approver.personName,\r\n title: approvalItem.positionType,\r\n image: this.getImageUrl(approvalItem.approver.personEmail),\r\n status: approvalStatus,\r\n statusLabel: approvalStatusLabel,\r\n };\r\n this.approvals.push(obj);\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves the approval status for a specific section in the form.\r\n *\r\n * @param {number} index - The index of the section for which the approval status is required.\r\n * @return {string} The approval status of the specified section. Returns an empty string if the section does not exist.\r\n */\r\n private getApprovalStatus(index: number): string {\r\n let status = '';\r\n if (this.form.sections[index + 1]) {\r\n status = this.statusClass(this.form.sections[index + 1].body.details.decision.key);\r\n }\r\n return status;\r\n }\r\n\r\n /**\r\n * Retrieves the approval status label from the form section based on the given index.\r\n *\r\n * @param {number} index - The index of the form section for which the approval status label will be retrieved.\r\n * @return {string} The approval status label retrieved from the specified form section.\r\n */\r\n private getApprovalStatusLabel(index: number): string {\r\n let statusLabel = '';\r\n if (this.form.sections[index + 1]) {\r\n statusLabel = this.form.sections[index + 1].body.details.decision.value;\r\n }\r\n return statusLabel;\r\n }\r\n\r\n /**\r\n * Retrieves the URL of the user's portrait image based on the provided email.\r\n *\r\n * @param {string} email - The email address of the user for whom the portrait URL is to be retrieved.\r\n * @return {string} - The URL used to fetch the user's portrait image.\r\n */\r\n private getImageUrl(email: string): string {\r\n return '/group/i-gate/wm-bpm/forms/-/proxy/portrait?email=' + email;\r\n }\r\n\r\n showPreviousRequests() {\r\n this.sidenavService.publish('open', PreviousRequestsComponent);\r\n }\r\n}\r\n","@if (form?.header?.status?.['key'] === 'NEW') {\r\n <section\r\n class=\"main-sidenav main-sidenav-full mb-4\"\r\n\r\n >\r\n <div class=\"sidenav-title\">\r\n <div class=\"d-flex align-items-center gap-3 w-100\">\r\n <!-- <ds-button icon class=\"rotate-arrow\" size=\"small\" (click)=\"goBack()\" *ngIf=\"!isInMobileApp() && showBack\">\r\n <ds-icon icon=\"arrow-right\" class=\"fs-19 fc-black\"></ds-icon>\r\n </ds-button>-->\r\n\r\n <!-- <h3 class=\"flex-grow-0\">\r\n {{ formTitle }}\r\n </h3>-->\r\n\r\n <section>\r\n <p class=\"fs-14 fs-md-12 fw-normal fc-dark-gray mb-1\">\r\n {{ i18n.translate('Hello') }}\r\n {{ coreService.getShortName(form?.header?.requesterName) }}, {{ i18n.translate('welcomeBack') }}!\r\n </p>\r\n <h1 class=\"fs-26 fs-md-20 fw-bold fc-black d-flex align-items-center gap-2 mb-1\">\r\n {{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n </section>\r\n <div class=\"d-flex align-items-center justify-content-end gap-2 flex-grow-1\">\r\n @if (serviceFaq.length) {\r\n <ds-button size=\"small\" icon>\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n </ds-button>\r\n }\r\n <!-- <ds-button size=\"small\" icon (click)=\"openWorkflow()\">\r\n <ds-icon icon=\"bell-2-o\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </ds-button> -->\r\n @if (!isReadOnly) {\r\n <ds-button size=\"small\" icon (click)=\"showPreviousRequests()\">\r\n <ds-icon icon=\"clock\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </ds-button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- <header class=\"mb-4 mt-4 d-flex align-items-center justify-content-between align-items-end gap-2\">\r\n <section>\r\n <h6 class=\"fs-14 fs-md-12 fw-normal fc-dark-gray mb-0\">\r\n {{ i18n.translate('Hello') }}\r\n {{ coreService.getShortName(form?.header?.requesterName) }}, {{ i18n.translate('welcomeBack') }}!\r\n </h6>\r\n <h1 class=\"fs-26 fs-md-20 fw-bold fc-black d-flex align-items-center gap-2 mb-1\">\r\n {{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n </section>\r\n </header>-->\r\n} @else {\r\n\r\n <div class=\"w-100\">\r\n <section class=\"request-main-info {{statusClass(form?.header?.status?.['key'])}}\">\r\n <section class=\"request-info\">\r\n <div class=\"request-info--body\">\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1\">\r\n <img\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMjkiIHZpZXdCb3g9IjAgMCAzMCAyOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI1LjEgMEg0LjlDMi4yIDAgMCAyLjIgMCA0LjlWMjguNkgyNS4xQzI3LjggMjguNiAzMCAyNi40IDMwIDIzLjdWNC45QzMwIDIuMiAyNy44IDAgMjUuMSAwWk0yIDQuOUMyIDMuMyAzLjMgMiA0LjkgMkgyNS4xQzI2LjcgMiAyOCAzLjMgMjggNC45VjIzLjdDMjggMjUuMyAyNi43IDI2LjYgMjUuMSAyNi42SDJWNC45Wk0xMS41IDYuM0M3LjEgNi4zIDMuNSA5LjkgMy41IDE0LjNDMy41IDE4LjcgNy4xIDIyLjMgMTEuNSAyMi4zQzE1LjkgMjIuMyAxOS41IDE4LjcgMTkuNSAxNC4zQzE5LjUgOS45IDE1LjkgNi4zIDExLjUgNi4zWk0xNS4xIDE5QzE0LjEgMTkuOCAxMi44IDIwLjIgMTEuNSAyMC4yQzEwLjIgMjAuMiA4LjkgMTkuOCA3LjkgMTlDOC43IDE3LjcgMTAgMTcgMTEuNSAxN0MxMyAxNyAxNC40IDE3LjggMTUuMSAxOVpNMTMuMSAxMy40QzEzLjEgMTQuMyAxMi40IDE1IDExLjUgMTVDMTAuNiAxNSA5LjkgMTQuMyA5LjkgMTMuNEM5LjkgMTIuNSAxMC42IDExLjggMTEuNSAxMS44QzEyLjQgMTEuOCAxMy4xIDEyLjUgMTMuMSAxMy40Wk0xNS4xIDEzLjRDMTUuMSAxMS40IDEzLjUgOS44IDExLjUgOS44QzkuNSA5LjggNy45IDExLjQgNy45IDEzLjRDNy45IDE0LjIgOC4yIDE1IDguNyAxNS43QzcuOCAxNi4xIDcuMSAxNi44IDYuNSAxNy42QzUuOCAxNi42IDUuNSAxNS41IDUuNSAxNC4zQzUuNSAxMSA4LjIgOC4zIDExLjUgOC4zQzE0LjggOC4zIDE3LjUgMTEgMTcuNSAxNC4zQzE3LjUgMTUuNSAxNy4yIDE2LjYgMTYuNSAxNy42QzE1LjkgMTYuOCAxNS4yIDE2LjIgMTQuMyAxNS43QzE0LjggMTUuMSAxNS4xIDE0LjIgMTUuMSAxMy40Wk0yMSA5LjFDMjEgOC42IDIxLjQgOC4xIDIyIDguMUgyNS41QzI2IDguMSAyNi41IDguNSAyNi41IDkuMUMyNi41IDkuNiAyNi4xIDEwLjEgMjUuNSAxMC4xSDIyQzIxLjQgMTAuMSAyMSA5LjYgMjEgOS4xWk0yMSAxMi41QzIxIDEyIDIxLjQgMTEuNSAyMiAxMS41SDI1LjVDMjYgMTEuNSAyNi41IDExLjkgMjYuNSAxMi41QzI2LjUgMTMgMjYuMSAxMy41IDI1LjUgMTMuNUgyMkMyMS40IDEzLjUgMjEgMTMuMSAyMSAxMi41Wk0yMSAxNkMyMSAxNS41IDIxLjQgMTUgMjIgMTVIMjUuNUMyNiAxNSAyNi41IDE1LjQgMjYuNSAxNkMyNi41IDE2LjUgMjYuMSAxNyAyNS41IDE3SDIyQzIxLjQgMTcgMjEgMTYuNiAyMSAxNlpNMjUuNSAyMC41SDIyQzIxLjUgMjAuNSAyMSAyMC4xIDIxIDE5LjVDMjEgMTguOSAyMS40IDE4LjUgMjIgMTguNUgyNS41QzI2IDE4LjUgMjYuNSAxOC45IDI2LjUgMTkuNUMyNi41IDIwLjEgMjYuMSAyMC41IDI1LjUgMjAuNVoiIGZpbGw9IiNGRjM3NUUiLz4KPC9zdmc+Cg==\"/>\r\n <h4 class=\"fs-22 fs-md-16 fc-black fw-medium mb-0 flex-grow-1 line-height-1-2\">\r\n {{ formTitle }}\r\n </h4>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 request-info--status-action\">\r\n <div class=\"d-inline-flex flex-column align-items-end\">\r\n @if (!isLoading) {\r\n <ds-status\r\n status=\"{{statusClass(form?.header?.status?.['key'])}}\" class=\"header-status\">{{ form?.header?.status?.['value'] }}\r\n </ds-status>\r\n }\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <!-- <ds-button\r\n *ngIf=\"form?.inboxItem && (form?.inboxItem?.canRequestFeedback =='true'|| form?.inboxItem?.hasFeedback=='true')\"\r\n square icon size=\"small\">\r\n <ds-icon icon=\"chat-o\" class=\"fs-20 fs-md-17 fc-coral\">\r\n &lt;!&ndash; [ngClass]=\"{'fc-green':feedBackIcon == 'feedbackResponded' , 'fc-red': feedBackIcon == 'respondToFeedback' , 'fc-yellow': feedBackIcon == 'waitingFeedback'}\"&ndash;&gt;\r\n </ds-icon>\r\n </ds-button>-->\r\n <!-- history-->\r\n <ds-button\r\n *ngIf=\"form?.commentsDrop?.length > 0 && !isLoading\" square icon size=\"small\"\r\n (click)=\"onCommentsFormClick()\" class=\"has-comments\">\r\n <ds-icon icon=\"clock\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </ds-button>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"request-info--footer\">\r\n @if (!isLoading) {\r\n <ds-avatar\r\n image=\"{{form?.header?.requesterPhoto}}\" size=\"xx-small\"\r\n class=\"d-inline-flex cursor-pointer\" (click)=\"showUserInfo()\"></ds-avatar>\r\n }\r\n <div\r\n class=\"d-flex align-items-center flex-wrap flex-grow-1 gap-1 gap-sm-2 line-height-1 request-info--header__details\">\r\n <span\r\n [ngClass]=\"{'loading-bg loading-width': isLoading}\"\r\n class=\"fs-12 fw-medium d-none d-sm-inline-block\">{{ coreService.getShortName(form?.header?.['requesterName']) }}</span>\r\n <span class=\"fs-20\">&#8226;</span>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\"> {{ form?.header?.formId }}</span>\r\n <span class=\"fs-20\" *ngIf=\"creationDate\">&#8226;</span>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\"> {{ creationDate }}</span>\r\n </div>\r\n </div>\r\n </section>\r\n </section>\r\n\r\n </div>\r\n\r\n\r\n <!--<ng-container>\r\n <div class=\"d-flex align-items-center justify-content-end gap-2 my-2\">\r\n <ds-button\r\n *ngIf=\"form?.inboxItem && !form.sections[form.sections.length -1].header.readOnly && !isLoading\"\r\n square\r\n icon\r\n size=\"small\"\r\n [matMenuTriggerFor]=\"menu\"\r\n class=\"icon-btn-shadow\">\r\n <ds-icon\r\n [ngClass]=\"{'fc-purple' : (flagPriority === '0' || flagPriority === null),'fc-yellow' : flagPriority === '1','fc-green' : flagPriority === '2','fc-coral' : flagPriority === '3'}\"\r\n icon=\"flag-o\" class=\"fs-20 fs-md-17 fc-purple\">\r\n </ds-icon>\r\n </ds-button>\r\n <mat-menu #menu=\"matMenu\" panelClass=\"action-menu\">\r\n <button mat-menu-item (click)=\"setFlagPriority('0')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-purple fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('1')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-yellow fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('2')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-green fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('3')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n </mat-menu>\r\n\r\n <ng-content></ng-content>\r\n </div>\r\n <header class=\"service-header bc-white p-3 p-sm-4 py-4 gap-3 {{statusClass(form?.header?.status?.['key'])}}\">\r\n\r\n <div class=\"service-header-icon\">\r\n <img\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMjkiIHZpZXdCb3g9IjAgMCAzMCAyOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI1LjEgMEg0LjlDMi4yIDAgMCAyLjIgMCA0LjlWMjguNkgyNS4xQzI3LjggMjguNiAzMCAyNi40IDMwIDIzLjdWNC45QzMwIDIuMiAyNy44IDAgMjUuMSAwWk0yIDQuOUMyIDMuMyAzLjMgMiA0LjkgMkgyNS4xQzI2LjcgMiAyOCAzLjMgMjggNC45VjIzLjdDMjggMjUuMyAyNi43IDI2LjYgMjUuMSAyNi42SDJWNC45Wk0xMS41IDYuM0M3LjEgNi4zIDMuNSA5LjkgMy41IDE0LjNDMy41IDE4LjcgNy4xIDIyLjMgMTEuNSAyMi4zQzE1LjkgMjIuMyAxOS41IDE4LjcgMTkuNSAxNC4zQzE5LjUgOS45IDE1LjkgNi4zIDExLjUgNi4zWk0xNS4xIDE5QzE0LjEgMTkuOCAxMi44IDIwLjIgMTEuNSAyMC4yQzEwLjIgMjAuMiA4LjkgMTkuOCA3LjkgMTlDOC43IDE3LjcgMTAgMTcgMTEuNSAxN0MxMyAxNyAxNC40IDE3LjggMTUuMSAxOVpNMTMuMSAxMy40QzEzLjEgMTQuMyAxMi40IDE1IDExLjUgMTVDMTAuNiAxNSA5LjkgMTQuMyA5LjkgMTMuNEM5LjkgMTIuNSAxMC42IDExLjggMTEuNSAxMS44QzEyLjQgMTEuOCAxMy4xIDEyLjUgMTMuMSAxMy40Wk0xNS4xIDEzLjRDMTUuMSAxMS40IDEzLjUgOS44IDExLjUgOS44QzkuNSA5LjggNy45IDExLjQgNy45IDEzLjRDNy45IDE0LjIgOC4yIDE1IDguNyAxNS43QzcuOCAxNi4xIDcuMSAxNi44IDYuNSAxNy42QzUuOCAxNi42IDUuNSAxNS41IDUuNSAxNC4zQzUuNSAxMSA4LjIgOC4zIDExLjUgOC4zQzE0LjggOC4zIDE3LjUgMTEgMTcuNSAxNC4zQzE3LjUgMTUuNSAxNy4yIDE2LjYgMTYuNSAxNy42QzE1LjkgMTYuOCAxNS4yIDE2LjIgMTQuMyAxNS43QzE0LjggMTUuMSAxNS4xIDE0LjIgMTUuMSAxMy40Wk0yMSA5LjFDMjEgOC42IDIxLjQgOC4xIDIyIDguMUgyNS41QzI2IDguMSAyNi41IDguNSAyNi41IDkuMUMyNi41IDkuNiAyNi4xIDEwLjEgMjUuNSAxMC4xSDIyQzIxLjQgMTAuMSAyMSA5LjYgMjEgOS4xWk0yMSAxMi41QzIxIDEyIDIxLjQgMTEuNSAyMiAxMS41SDI1LjVDMjYgMTEuNSAyNi41IDExLjkgMjYuNSAxMi41QzI2LjUgMTMgMjYuMSAxMy41IDI1LjUgMTMuNUgyMkMyMS40IDEzLjUgMjEgMTMuMSAyMSAxMi41Wk0yMSAxNkMyMSAxNS41IDIxLjQgMTUgMjIgMTVIMjUuNUMyNiAxNSAyNi41IDE1LjQgMjYuNSAxNkMyNi41IDE2LjUgMjYuMSAxNyAyNS41IDE3SDIyQzIxLjQgMTcgMjEgMTYuNiAyMSAxNlpNMjUuNSAyMC41SDIyQzIxLjUgMjAuNSAyMSAyMC4xIDIxIDE5LjVDMjEgMTguOSAyMS40IDE4LjUgMjIgMTguNUgyNS41QzI2IDE4LjUgMjYuNSAxOC45IDI2LjUgMTkuNUMyNi41IDIwLjEgMjYuMSAyMC41IDI1LjUgMjAuNVoiIGZpbGw9IiNGRjM3NUUiLz4KPC9zdmc+Cg==\"/>\r\n </div>\r\n\r\n <div class=\"flex-grow-1 d-flex flex-column flex-sm-row align-items-sm-center gap-2\">\r\n <div class=\"flex-grow-1\">\r\n <h1 class=\"fs-20 fs-md-16 fw-bold fc-black header-title m-0\">{{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n <div class=\"header-user d-flex align-items-sm-center gap-2 mt-sm-1\">\r\n @if (!isLoading) {\r\n <ds-avatar\r\n image=\"{{form?.header?.requesterPhoto}}\" size=\"xx-small\"\r\n class=\"d-inline-flex cursor-pointer\" (click)=\"showUserInfo()\"></ds-avatar>\r\n }\r\n <span\r\n class=\"fs-12 text-truncate d-sm-block cursor-pointer\" (click)=\"showUserInfo()\"\r\n [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ coreService.getShortName(form?.header?.requesterName) }}</span>\r\n <mat-divider class=\"divider circle mx-2 d-none d-sm-block\"></mat-divider>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ form?.header?.formId }}</span>\r\n @if (creationDate) {\r\n <mat-divider class=\"divider circle mx-2 d-none d-sm-block\"></mat-divider>\r\n <span class=\"fs-14\" [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ creationDate }}</span>\r\n }\r\n </div>\r\n\r\n </div>\r\n <div class=\"header-actions d-flex flex-row flex-sm-column justify-content-between justify-content-sm-center gap-2 mt-2 mt-sm-0\">\r\n @if (!isLoading) {\r\n <ds-status\r\n status=\"{{statusClass(form?.header?.status?.['key'])}}\" class=\"header-status\">{{ form?.header?.status?.['value'] }}\r\n </ds-status>\r\n }\r\n <div class=\"d-flex align-items-center justify-content-end gap-2\">\r\n &lt;!&ndash; feedback&ndash;&gt;\r\n &lt;!&ndash; *ngIf=\"form?.inboxItem && (form?.inboxItem?.canRequestFeedback ==='true'|| form?.inboxItem?.hasFeedback==='true') && !isLoading\"&ndash;&gt;\r\n &lt;!&ndash; <ds-button\r\n square icon size=\"small\" (click)=\"feedback()\">\r\n <ds-icon\r\n icon=\"chat-o\" class=\"fs-20 fs-md-17 fc-coral\"\r\n [ngClass]=\"{'fc-green':feedBackIcon === 'feedbackResponded' , 'fc-red': feedBackIcon === 'respondToFeedback' , 'fc-yellow': feedBackIcon === 'waitingFeedback'}\">\r\n </ds-icon>\r\n </ds-button>&ndash;&gt;\r\n <ds-button\r\n *ngIf=\"form?.commentsDrop?.length > 0 && !isLoading\" square icon size=\"small\"\r\n (click)=\"onCommentsFormClick()\" class=\"has-comments\">\r\n <ds-icon icon=\"clock\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </ds-button>\r\n @if (showApprovalHistory) {\r\n <ng-container>\r\n <ds-button\r\n color=\"white\" shape=\"text\" square size=\"small\" [satPopoverAnchor]=\"workflow\"\r\n #workflowAnchor=\"satPopoverAnchor\" (click)=\"workflowAnchor.popover.open()\">\r\n <slot name=\"prefix\">\r\n <ds-icon icon=\"workflow\" class=\"fs-24\"></ds-icon>\r\n </slot>\r\n </ds-button>\r\n <sat-popover\r\n #workflow [anchor]=\"workflowAnchor\" [hasBackdrop]=\"true\" verticalAlign=\"below\"\r\n horizontalAlign=\"end\">\r\n <div class=\"default-popover p-3\" style=\"min-width: 330px;\">\r\n <ds-approvals *ngIf=\"approvalHistory\" class=\"popover-approvals\" approvalsData=\"{{approvals}}\">\r\n </ds-approvals>\r\n </div>\r\n </sat-popover>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </header>\r\n </ng-container>-->\r\n}\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\r\nimport * as Constants from '../../../constants';\r\nimport { Form } from '../../../interfaces';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-status',\r\n templateUrl: './status.component.html',\r\n styleUrls: ['./status.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n standalone: true,\r\n imports: [\r\n NgClass\r\n ],\r\n})\r\nexport class StatusComponent {\r\n @Input() form: Form;\r\n\r\n statusClass(status: string) {\r\n if (status === Constants.FORM_STATUS_REJECTED || status === Constants.FORM_STATUS_CANCELLED) {\r\n return {\r\n status: true,\r\n danger: status === Constants.FORM_STATUS_REJECTED || status === Constants.FORM_STATUS_CANCELLED\r\n };\r\n } else if (status === Constants.FORM_STATUS_PENDING) {\r\n return {\r\n status: true,\r\n warning: status === Constants.FORM_STATUS_PENDING\r\n };\r\n } else {\r\n return {\r\n status: true,\r\n success: status === Constants.FORM_STATUS_COMPLETED || Constants.FORM_STATUS_APPROVED\r\n };\r\n }\r\n }\r\n\r\n}\r\n","<div [ngClass]=\"statusClass(form.header.status?.['key'])\">{{form.header.status?.['value']}}</div>\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Input, OnInit} from '@angular/core';\r\nimport {CoreI18nService, CoreService, SidenavService} from '../../../services';\r\nimport {ComponentOutletIoDirective, DynamicModule} from 'ng-dynamic-component';\r\nimport {NgClass, NgComponentOutlet, NgIf} from '@angular/common';\r\nimport {MatExpansionModule, MatExpansionPanel} from '@angular/material/expansion';\r\nimport {SatPopoverModule} from '@ncstate/sat-popover';\r\nimport {Form, ProfileInfoDrop, Section} from '../../../interfaces';\r\nimport * as Constants from '../../../constants';\r\nimport {ProfileSectionComponent} from \"../profile-section/profile-section.component\";\r\nimport {format} from 'date-fns';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nconst StatusMap = {\r\n [Constants.FORM_STATUS_REJECTED]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_CANCELLED]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_REJECT]: {class: 'danger', icon: 'close'},\r\n [Constants.SECTION_STATUS_UNSATISFIED]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_CANCEL]: {class: 'danger', icon: 'close'},\r\n [Constants.FORM_STATUS_PENDING]: {class: 'warning', icon: 'clock'},\r\n 'default': {class: 'success', icon: 'check'}\r\n}\r\n\r\n@Component({\r\n selector: 'app-form-section',\r\n templateUrl: './form-section.component.html',\r\n styleUrls: ['./form-section.component.scss'],\r\n standalone: true,\r\n imports: [\r\n MatExpansionModule,\r\n MatExpansionPanel,\r\n NgIf,\r\n NgComponentOutlet,\r\n ComponentOutletIoDirective,\r\n SatPopoverModule,\r\n NgClass,\r\n DynamicModule\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class FormSectionComponent\r\n implements OnInit {\r\n userType = 'recipient';\r\n popoverType = 'recipient';\r\n @Input() requestDetails: Section;\r\n userPopoverInfo: any = {};\r\n @Input() section: Section;\r\n @Input() form: Form;\r\n @Input() lov: any;\r\n @Input() isReadOnly: boolean;\r\n @Input() controllers: any;\r\n @Input() segmentDynamicLoaderService: any;\r\n @Input() sectionFormComponent: any = null;\r\n @Input() sectionName = 'SECTION_NAME.requestDetails';\r\n sectionStatusKey: string;\r\n recipient = {\r\n isShowing: false,\r\n profile: null\r\n };\r\n delegate = {\r\n isShowing: false,\r\n profile: null\r\n };\r\n public input;\r\n processingDate: string;\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor(\r\n public i18n: CoreI18nService,\r\n private readonly coreService: CoreService,\r\n private readonly sidenavService: SidenavService\r\n ) {\r\n }\r\n\r\n /**\r\n * Method to initialize various components when the component is initialized.\r\n *\r\n * @return {void}\r\n */\r\n ngOnInit() {\r\n this.initSectionFormComponent();\r\n this.initSectionName();\r\n this.initInput();\r\n this.initProcessingDate();\r\n }\r\n\r\n /**\r\n * Initializes the section form component by fetching it from the segment dynamic loader service.\r\n *\r\n * @return {void}\r\n */\r\n private initSectionFormComponent() {\r\n this.sectionFormComponent = this.segmentDynamicLoaderService.getComponent(\r\n this.section.id\r\n );\r\n }\r\n\r\n /**\r\n * Initializes the section name based on the provided section data.\r\n * If the section's body contains a 'stageName' property, the section name is set to the value of that property.\r\n * Otherwise, the section name is retrieved using the segmentDynamicLoaderService based on the section ID.\r\n *\r\n * @return {void}\r\n */\r\n private initSectionName() {\r\n if (this.section.body.details?.['stageName']) {\r\n this.sectionName = this.section.body.details['stageName']?.value ??this.section.body.details['stageName'];\r\n } else {\r\n this.sectionName = this.segmentDynamicLoaderService.getSectionName(this.section.id);\r\n }\r\n }\r\n\r\n /**\r\n * Initializes the input object with the provided values for read-only status, list of values, section, and form.\r\n *\r\n * @return {void}\r\n */\r\n private initInput() {\r\n this.input = {\r\n isReadOnly: this.isReadOnly,\r\n lov: this.lov,\r\n section: this.section,\r\n form: this.form\r\n };\r\n }\r\n\r\n /**\r\n * Initializes the processing date based on the section's header processing date.\r\n * If the processing date is available in the section header, it formats the processing date\r\n * and assigns it to the processingDate property of the instance.\r\n *\r\n * @return {void}\r\n */\r\n private initProcessingDate() {\r\n if (this.section?.header?.processingDate) {\r\n this.processingDate = format(new Date(this.section.header.processingDate), \"dd/MM/yyyy hh:mm:ss\");\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Check if the section is expanded.\r\n *\r\n * @return {boolean} Returns true if the section is expanded, false otherwise.\r\n */\r\n get isExpanded(): boolean {\r\n const hasSections = Boolean(this.form?.sections?.length);\r\n const isAnySectionExpandable = hasSections && this.form.sections.some(section => 'expandStage' in (section?.body?.details || {}));\r\n return isAnySectionExpandable ? (this.section?.body?.details?.['expandStage'] === 'true') : true;\r\n }\r\n\r\n /**\r\n * Create a ProfileInfoDrop object from the response object.\r\n *\r\n * @param {any} response - The response object containing user profile information.\r\n *\r\n * @return {ProfileInfoDrop} A ProfileInfoDrop object created from the response data.\r\n */\r\n private createUserProfileFromResponse(response: any): ProfileInfoDrop {\r\n const user = response?.[\"Users\"][0];\r\n return new ProfileInfoDrop(\r\n false,\r\n user?.employeeNumber,\r\n user?.email,\r\n user?.name,\r\n user?.generalDepartment?.name,\r\n user?.position?.name,\r\n user?.sector?.name,\r\n user?.department?.name,\r\n user?.generalDepartment?.code,\r\n user?.location,\r\n user?.nationality?.desc,\r\n user?.contact?.mobile,\r\n user?.manager?.name,\r\n user?.seniorSectorName?.name\r\n );\r\n }\r\n\r\n /**\r\n * Method to open or create a user profile.\r\n *\r\n * @param {ProfileInfoDrop} userData - The user profile data to open or create.\r\n * @param {string} personType - The type of person this profile belongs to.\r\n *\r\n * @return {void}\r\n */\r\n private openOrCreateUserProfile(userData: ProfileInfoDrop, personType: string) {\r\n this.sidenavService.data = userData;\r\n this.userPopoverInfo = userData;\r\n this[personType].profile = userData;\r\n this.sidenavService.publish('open', ProfileSectionComponent);\r\n }\r\n\r\n /**\r\n * Toggles the display of small profile information for a given person type\r\n *\r\n * @param {any} event - The event that triggered the toggle\r\n * @param {string} personType - The type of person for which to display the profile information\r\n *\r\n * @return {void}\r\n */\r\n toggleSmallProfileInfo(event: any, personType: string): void {\r\n this.userType = personType;\r\n event.stopPropagation();\r\n let userInfo = this[personType];\r\n if (!userInfo.profile) {\r\n this.popoverType = personType;\r\n let userEmail = this.getUserEmail(personType);\r\n this.fetchAndSetUserProfile(userEmail, personType);\r\n } else {\r\n this.openOrCreateUserProfile(userInfo.profile, personType);\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the email of the user based on the personType parameter.\r\n *\r\n * @param {string} personType - Type of the person ('recipient' or others).\r\n * @return {string} - The email address of the user.\r\n */\r\n private getUserEmail(personType: string): string {\r\n return (personType === 'recipient'\r\n ? this.section.header.personToThumbnail.split('=')[1]\r\n : this?.section?.header?.delegatedToThumbnail.split('=')[1]\r\n );\r\n }\r\n\r\n /**\r\n * Fetches the user profile using the provided user email and person type, then sets the profile.\r\n *\r\n * @param {string} userEmail - The email of the user whose profile is to be fetched and set.\r\n * @param {string} personType - The type of person (e.g., employee, customer) for whom the profile is being fetched.\r\n *\r\n * @return {void}\r\n */\r\n private fetchAndSetUserProfile(userEmail: string, personType: string): void {\r\n this.coreService.employeeProfile(userEmail).pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe((response: any) => {\r\n if (response) {\r\n let userData = this.createUserProfileFromResponse(response);\r\n this.openOrCreateUserProfile(userData, personType);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Returns the CSS class associated with the input status.\r\n *\r\n * @param {string} status - The status for which the CSS class is needed.\r\n * @return {string} - The CSS class corresponding to the given status.\r\n */\r\n statusClass(status: string): string {\r\n // status = status ? status.toLowerCase() : '';\r\n let statusStrategy = StatusMap[status] || StatusMap['default'];\r\n return statusStrategy.class;\r\n }\r\n\r\n /**\r\n * Returns the icon associated with the provided status.\r\n *\r\n * @param {string} status - The status for which to retrieve the icon.\r\n * @return {string} The icon corresponding to the provided status.\r\n */\r\n statusIcon(status: string): string {\r\n status = status ? status.toLowerCase() : '';\r\n let statusStrategy = StatusMap[status] || StatusMap['default'];\r\n return statusStrategy.icon;\r\n }\r\n}\r\n","<mat-expansion-panel class=\"mb-4\" [expanded]=\"isExpanded\" hideToggle #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusClass(sectionStatusKey)}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIcon(sectionStatusKey)}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n @if (section.header?.processedBy) {\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block mt-1\">\r\n {{ processingDate }}\r\n </bdi>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n @if (!section?.body?.details?.['stage0']?.['isStage0'] || section?.body?.details?.['stage0']?.['isStage0'] === 'false') {\r\n <ng-container>\r\n @if (section?.header?.personTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'recipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n @if (!section?.header?.delegatedTo) {\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\"\r\n [ngClass]=\"{'panel-user-only': !section?.header?.delegatedTo}\"\r\n >{{ section?.header?.personTo }}</span>\r\n }\r\n </div>\r\n @if (section?.header?.delegatedTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"/>\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n\r\n @if (section?.body?.details?.['decision']?.key) {\r\n <ds-status\r\n class=\"main-status\"\r\n status=\"{{statusClass(section?.body?.details?.['decision']?.key)}}\">{{ section?.body?.details?.['decision']?.value }}\r\n </ds-status>\r\n }\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n @if (approvalPanel.expanded) {\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n } @else {\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n }\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"border-top pt-4\">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\r\nimport { CoreI18nService } from '../../../services';\r\nimport { Form, Section } from '../../../interfaces';\r\nimport {MatAccordion, MatExpansionModule, MatExpansionPanel} from '@angular/material/expansion';\r\n\r\n@Component({\r\n selector: 'app-main-request-details',\r\n templateUrl: './main-request-details.component.html',\r\n styleUrls: ['./main-request-details.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n MatExpansionModule,\r\n MatAccordion,\r\n MatExpansionPanel\r\n ]\r\n})\r\nexport class MainRequestDetailsComponent {\r\n @Input() section: Section;\r\n @Input() lov: any;\r\n @Input() form: Form;\r\n constructor(public i18n: CoreI18nService) {}\r\n\r\n get isExpanded(): boolean {\r\n return this.section?.body?.details?.['expandStage'] === 'true';\r\n }\r\n}\r\n","<mat-accordion class=\"primary-accordion main-request-accordion border-top\">\r\n <mat-expansion-panel\r\n [expanded]=\"isExpanded || form?.sections?.length === 1\"\r\n class=\"mb-3\"\r\n hideToggle\r\n #requestPanel=\"matExpansionPanel\"\r\n >\r\n <mat-expansion-panel-header>\r\n <h2 class=\"fs-16 fw-medium fc-coral m-0 flex-grow-1\">\r\n {{ i18n.translate(\"requestDetailsTitle\") }}\r\n </h2>\r\n @if (requestPanel.expanded) {\r\n <div class=\"d-inline-flex align-items-center gap-2\">\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n </div>\r\n } @else {\r\n <div class=\"d-inline-flex align-items-center gap-2\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </div>\r\n }\r\n </mat-expansion-panel-header>\r\n <section class=\"default-box box-shadow p-4 rounded-4\">\r\n <ng-content></ng-content>\r\n </section>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n","import {ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, EventEmitter, inject, Input, Output, ViewChild} from '@angular/core';\r\nimport * as constants from '../../../constants';\r\nimport {FormsModule, NgForm} from '@angular/forms';\r\nimport {Form, Section} from '../../../interfaces';\r\nimport {CoreI18nService} from '../../../services';\r\nimport {NgClass, NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\r\nimport {MatAccordion} from '@angular/material/expansion';\r\nimport {FormSectionComponent} from '../form-section/form-section.component';\r\nimport {MainRequestDetailsComponent} from '../main-request-details/main-request-details.component';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-workflow-section',\r\n templateUrl: './workflow-section.component.html',\r\n styleUrls: ['./workflow-section.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n imports: [\r\n NgClass,\r\n MatAccordion,\r\n NgTemplateOutlet,\r\n FormSectionComponent,\r\n MainRequestDetailsComponent,\r\n FormsModule\r\n ],\r\n standalone: true\r\n})\r\nexport class WorkflowSectionComponent {\r\n @ViewChild('f') public formStateObject: NgForm;\r\n @Output() sectionSubmitted: EventEmitter<any> = new EventEmitter();\r\n @Input() sections: Section[];\r\n @Input() isReadOnly: boolean;\r\n @Input() isLoading: boolean;\r\n @Input() form: Form;\r\n @Input() contentClass = 'default-box box-shadow p-4';\r\n startedListener = false;\r\n @Input() sectionsController: any;\r\n showButtonMenu = false;\r\n @Input() segmentDynamicLoaderService = null;\r\n @Input() sectionFormComponent = null;\r\n @Input() sectionName = constants.SECTION_ID_REQUEST_DETAILS;\r\n destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor(\r\n public i18n: CoreI18nService,\r\n private cdRef: ChangeDetectorRef,\r\n ) {\r\n/* _listenerService.listen().subscribe((result: any) => {\r\n if (result?.function == 'resetForm') {\r\n this.resetForm();\r\n } else if (result?.function == 'onSubmit') {\r\n const sectionSize = this.sections.length - 1;\r\n const section = this.sections[sectionSize];\r\n const data = result.data ? result.data : section;\r\n this.onSubmit(result?.action, data);\r\n }\r\n });*/\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.formStateObject && this.form && !this.startedListener) {\r\n this.formStateObject.valueChanges.pipe(\r\n takeUntilDestroyed(this.destroyRef)\r\n ).subscribe(\r\n /* istanbul ignore next */\r\n (form) => {\r\n Object.keys(form).forEach((key) => {\r\n if (\r\n this.sections[this.sections.length - 1].body.details[key] !==\r\n form[key] &&\r\n form[key] !== undefined\r\n )\r\n this.sections[this.sections.length - 1].body.details[key] =\r\n form[key];\r\n });\r\n }\r\n );\r\n this.sectionsController = this.formStateObject.controls;\r\n this.startedListener = true;\r\n }\r\n this.checkButtons();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n/* isSubmitting = {};\r\n disableButtons = false;*/\r\n\r\n/* onSubmit(action: any, section: any) {\r\n const sectionSize = this.sections.length - 1;\r\n let sectionDecision = this.sections[sectionSize].body.details.decision;\r\n if (sectionDecision && action === 'SUBMIT') {\r\n sectionDecision = { key: action };\r\n }\r\n if (sectionDecision && action !== 'SUBMIT') {\r\n sectionDecision = { key: action };\r\n }\r\n this.sections[sectionSize].body.details.decision = sectionDecision;\r\n this.profileRequesterService.isSubmitting[action] = true;\r\n this.profileRequesterService.disableButtons = true;\r\n this.stateMachineService\r\n .dispatch(\r\n constants.STATE_MACHINE_ACTION_SUBMIT_FORM,\r\n section,\r\n action\r\n )\r\n .then((form: any) => {\r\n this.profileRequesterService.isSubmitting[action] = true;\r\n this.profileRequesterService.disableButtons = true;\r\n const obj = {\r\n form: form,\r\n action: action\r\n };\r\n this.sectionSubmitted.emit(obj);\r\n });\r\n }*/\r\n\r\n/* resetForm() {\r\n this.formStateObject.reset();\r\n this.resetPropagator.propagate();\r\n }*/\r\n\r\n get isExpandableFromBackend(): boolean {\r\n return this.form?.sections?.length && this.form.sections.some(section => 'expandStage' in section?.body?.details);\r\n }\r\n\r\n buttonTypes(type) {\r\n switch (type) {\r\n case 'APPROVE':\r\n return '';\r\n case 'SENDBACK':\r\n return 'red';\r\n case 'REJECT':\r\n return 'red';\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n checkButtons() {\r\n const options = this.form?.lovs?.decision?.options;\r\n if (!Array.isArray(options)) return;\r\n options.forEach((item) => {\r\n if (\r\n item?.value != 'APPROVE' &&\r\n item?.value != 'REJECT' &&\r\n item?.value != 'SENDBACK' &&\r\n item?.value != 'SUBMIT' &&\r\n item?.value != 'CANCEL'\r\n ) {\r\n this.showButtonMenu = true;\r\n }\r\n });\r\n }\r\n\r\n get hasStage0(): boolean {\r\n return this.sections?.[1]?.body?.details?.stage0?.isStage0 === 'true';\r\n }\r\n}\r\n","<form #f=\"ngForm\" autocomplete=\"off\">\r\n @if (form?.header?.status?.key === 'NEW') {\r\n <section class=\"default-box box-shadow p-4 rounded-4\">\r\n <ng-container *ngTemplateOutlet=\"contentReqDet\"></ng-container>\r\n </section>\r\n } @else {\r\n <div class=\"mt-n3\" id=\"accordion\" role=\"tablist\"\r\n aria-multiselectable=\"true\">\r\n @if (hasStage0) {\r\n <app-form-section \r\n class=\"app-form-section\" \r\n [segmentDynamicLoaderService]=\"segmentDynamicLoaderService\" \r\n [section]=\"sections[1]\" \r\n [lov]=\"form?.lovs\"\r\n [isReadOnly]=\"sections[1].header.readOnly\" \r\n [form]=\"form\" \r\n [controllers]=\"sectionsController\"\r\n >\r\n </app-form-section>\r\n }\r\n <app-main-request-details [lov]=\"form?.lovs\" [form]=\"form\" [section]=\"form?.sections[0]\">\r\n <ng-container *ngTemplateOutlet=\"contentReqDet\"></ng-container>\r\n </app-main-request-details>\r\n @if (hasStage0 ? form?.sections.length > 2 : form?.sections.length > 1) {\r\n <header class=\"header-line fs-12 fw-medium fc-dark-gray mt-sm-5 mt-4 mb-4\">\r\n {{i18n.translate('Approvals')}}\r\n </header>\r\n }\r\n <mat-accordion class=\"primary-accordion main-approval\">\r\n @for (section of form?.sections; track $index) {\r\n @if (hasStage0 ? $index > 1 : $index > 0) {\r\n <app-form-section \r\n class=\"app-form-section\" \r\n [segmentDynamicLoaderService]=\"segmentDynamicLoaderService\" \r\n [section]= \"section\" \r\n [lov]=\"form?.lovs\"\r\n [isReadOnly]=\"section.header.readOnly\" \r\n [form]=\"form\" \r\n [controllers]=\"sectionsController\"\r\n >\r\n </app-form-section>\r\n }\r\n }\r\n </mat-accordion>\r\n </div>\r\n }\r\n</form>\r\n\r\n\r\n<ng-template #contentReqDet><ng-content></ng-content></ng-template>\r\n","import {CommonModule} from '@angular/common';\r\nimport {Component, CUSTOM_ELEMENTS_SCHEMA, Inject, PLATFORM_ID} from '@angular/core';\r\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\r\nimport {MatMenuModule} from '@angular/material/menu';\r\nimport {MatToolbarModule} from '@angular/material/toolbar';\r\nimport {Router, RouterModule} from '@angular/router';\r\nimport {Subscription} from 'rxjs';\r\nimport {CoreI18nService, SidenavService} from '../../../../services';\r\nimport * as Constants from '../../../../constants';\r\nimport {CoreService} from \"../../../../services\";\r\n\r\n\r\n@Component({\r\n selector: 'app-header',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n MatMenuModule,\r\n MatToolbarModule\r\n ],\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class HeaderComponent {\r\n search = new FormControl('');\r\n sidenavSubscription!: Subscription;\r\n isSidenavOpened = false;\r\n device = '';\r\n isMobile!: boolean;\r\n userData: any;\r\n userName: any;\r\n\r\n constructor(\r\n public readonly translate: CoreI18nService,\r\n private sidenavService: SidenavService,\r\n public coreService: CoreService,\r\n private router: Router,\r\n @Inject(PLATFORM_ID) private platformId: any\r\n ) {\r\n this.device = navigator.userAgent;\r\n\r\n if (this.isMobile) {\r\n document.documentElement.classList.add('inside-mobile-app');\r\n }\r\n }\r\n\r\n\r\n setLanguage(): void {\r\n const targetLang = this.translate.getLanguage() === 'en' ? 'ar' : 'en';\r\n let url = location.origin + `/${targetLang}/group/i-gate/asset-management`;\r\n window.open(url, '_self');\r\n }\r\n\r\n logout() {\r\n let logoutUrl = Constants.LOGOUT_URL;\r\n localStorage.removeItem('token');\r\n localStorage.removeItem('userName');\r\n localStorage.removeItem('user');\r\n const userSelectedLanguage = localStorage.getItem('language') ?? 'en';\r\n sessionStorage.clear();\r\n localStorage.setItem('language', userSelectedLanguage);\r\n window.open(logoutUrl, '_self');\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n this.sidenavSubscription = this.sidenavService.sideNavOpened.subscribe((val) => {\r\n this.isSidenavOpened = val;\r\n });\r\n }\r\n\r\n\r\n toggleSideNav() {\r\n document.documentElement.classList.toggle('main-sidenav-opened');\r\n this.sidenavService.sideNavOpened.next(!this.isSidenavOpened);\r\n }\r\n\r\n protected readonly location = location;\r\n}\r\n","<ng-container *ngIf=\"!isMobile\">\r\n <mat-toolbar\r\n class=\"align-items-center justify-content-between gap-3 border-bottom\"\r\n >\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button\r\n shape=\"flat\"\r\n icon\r\n color=\"light-gray\"\r\n square\r\n (click)=\"toggleSideNav()\"\r\n >\r\n <ds-icon icon=\"burger-menu-1\" class=\"fs-24 fc-dark-gray\"></ds-icon>\r\n </ds-button>\r\n\r\n <a [href]=\"location.origin\">\r\n <figure class=\"m-0 d-flex\">\r\n <img class=\"main-logo\" src=\"assets/images/hub.svg\" alt=\"\" />\r\n </figure>\r\n </a>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button\r\n shape=\"flat\"\r\n color=\"light-gray\"\r\n class=\"user-menu-btn\"\r\n [matMenuTriggerFor]=\"userMenu\"\r\n >\r\n <ds-avatar\r\n image=\"/group/i-gate/wm-bpm/forms/-/proxy/portrait?email={{userData?.email}}\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user2.jpg'\"\r\n slot=\"prefix\"\r\n class=\"avatar\"\r\n >\r\n </ds-avatar>\r\n\r\n <span class=\"fs-14 fw-medium fc-black\">\r\n {{ coreService.getShortName( coreService?.loggedInUserData?.['name']) }}\r\n </span>\r\n\r\n <ds-icon\r\n slot=\"suffix\"\r\n icon=\"arrow\"\r\n class=\"fc-dark-gray fs-16\"\r\n ></ds-icon>\r\n </ds-button>\r\n </div>\r\n </mat-toolbar>\r\n\r\n <!-- User Menu -->\r\n <mat-menu #userMenu=\"matMenu\" class=\"user-menu\">\r\n <div mat-menu-item>\r\n <span class=\"fs-14\">{{ translate.translate('welcome') }}, </span>\r\n <br />\r\n <span class=\"fs-14 fw-medium line-height-1\">{{ coreService.getShortName( coreService?.loggedInUserData?.['name']) }}</span>\r\n </div>\r\n <button mat-menu-item (click)=\"setLanguage()\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <ds-icon icon=\"globe\" class=\"fs-25 fc-purple\"></ds-icon>\r\n <span class=\"fs-14 fw-medium fc-black\">{{\r\n translate.translate('otherLang')\r\n }}</span>\r\n </div>\r\n </button>\r\n <button mat-menu-item (click)=\"logout()\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <ds-icon icon=\"logout\" class=\"fs-25 fc-red\"></ds-icon>\r\n <span class=\"fs-14 fw-medium fc-black\">{{\r\n translate.translate('logout')\r\n }}</span>\r\n </div>\r\n </button>\r\n </mat-menu>\r\n</ng-container>\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, Input, ViewChild} from '@angular/core';\r\nimport {Router, RouterLink, RouterLinkActive} from '@angular/router';\r\nimport {MatTooltipModule} from '@angular/material/tooltip';\r\nimport {MatMenu, MatMenuTrigger} from '@angular/material/menu';\r\nimport {SidenavService} from '../../../../services';\r\n\r\n@Component({\r\n selector: 'app-side-nav',\r\n standalone: true,\r\n imports: [RouterLinkActive, RouterLink, MatTooltipModule, MatMenu, MatMenuTrigger],\r\n templateUrl: './side-nav.component.html',\r\n styleUrl: './side-nav.component.scss',\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class SideNavComponent {\r\n\r\n @Input() isOpened = false;\r\n lang: any = '';\r\n Menu = [\r\n {\r\n name: 'Home',\r\n routerLink: '/group/hub/home1',\r\n icon: 'home-o',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Inbox',\r\n routerLink: '/group/hub/inbox',\r\n icon: 'mail-o',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Dobox',\r\n routerLink: '/group/hub/dobox',\r\n icon: 'chick-sqaure',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Chat',\r\n routerLink: '/group/hub/chat',\r\n icon: 'chat-circle-2',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Mail',\r\n routerLink: '/group/hub/mail',\r\n icon: 'mail-f',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Meetings',\r\n routerLink: '/group/hub/meetings',\r\n icon: 'calendar',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Offers',\r\n routerLink: '/group/hub/hub-offers',\r\n icon: 'voucher',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'stc today',\r\n routerLink: '/group/hub/stc-profile',\r\n icon: 'stc-profile-o',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Articles',\r\n routerLink: '/group/hub/articles',\r\n icon: 'file-returned',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Timeline',\r\n routerLink: '/group/hub/timeline',\r\n icon: 'list-dots',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'eforms',\r\n routerLink: '/group/hub/efroms',\r\n icon: 'file-o',\r\n matmenu: false,\r\n List: []\r\n },\r\n {\r\n name: 'Apps',\r\n routerLink: '/group/hub/apps',\r\n icon: 'card',\r\n matmenu: false,\r\n List: []\r\n },\r\n ];\r\n\r\n constructor(public sidenavService: SidenavService, private router: Router) {}\r\n\r\n\r\n closeSidenav() {\r\n document.documentElement.classList.remove('main-sidenav-opened');\r\n // this.sidenavService.sideNavOpened.next(false);\r\n }\r\n\r\n navigateTo(item: any) {\r\n window.location.href = item.routerLink;\r\n }\r\n\r\n innerWidth: any;\r\n menuMobile!: boolean;\r\n @ViewChild('MenuTrigger') MenuTrigger!: MatMenuTrigger;\r\n\r\n ngOnInit() {\r\n this.innerWidth = window.innerWidth;\r\n if (this.innerWidth < 1024) {\r\n this.menuMobile = true;\r\n } else {\r\n this.menuMobile = false;\r\n }\r\n }\r\n\r\n mouseover(matmenu: boolean, i: number) {\r\n if (!this.menuMobile) {\r\n if (matmenu) {\r\n document.documentElement.classList.remove('main-overlay-closed');\r\n // this.MenuTrigger[i].openMenu();\r\n } else {\r\n document.documentElement.classList.add('main-overlay-closed');\r\n // this.MenuTrigger[i].closeMenu();\r\n }\r\n }\r\n }\r\n\r\n goto(url?: string, matmenu?: boolean) {\r\n if (!this.menuMobile) {\r\n if (matmenu) {\r\n document.documentElement.classList.remove('main-overlay-closed');\r\n } else {\r\n document.documentElement.classList.add('main-overlay-closed');\r\n }\r\n }\r\n this.router.navigate([url]);\r\n }\r\n}\r\n","<aside>\r\n <div class=\"header d-flex d-lg-none\">\r\n <div class=\"d-flex h-100 mt-auto justify-content-between w-100\">\r\n <h1 class=\"fs-26 fw-bold fc-white logo\">academy</h1>\r\n <ds-button size=\"small\" color=\"purple\" class=\"close purple\" (click)=\"closeSidenav()\">\r\n <ds-icon icon=\"close\" class=\"fs-15 fc-white\"></ds-icon>\r\n </ds-button>\r\n </div>\r\n </div>\r\n <nav>\r\n <ul>\r\n <!-- (mouseenter)=\"menuMobile ? null : MenuTrigger.openMenu()\"-->\r\n <!-- (click)=\"goto(item.routerLink,item.matmenu) -->\r\n @for (item of Menu; track $index) {\r\n @if (item.matmenu) {\r\n <li\r\n (click)=\"closeSidenav();navigateTo(item)\" matTooltipPosition=\"right\" matTooltip=\"{{item.name }}\"\r\n [routerLinkActive]=\"'active'\" (click)=\"goto(item.routerLink!,item.matmenu)\" #MenuTrigger=\"matMenuTrigger\"\r\n [matMenuTriggerFor]=\"menuMenu\" [routerLinkActiveOptions]=\"{ exact: true }\" class=\"cursor-pointer\">\r\n <ds-icon icon=\"{{item.icon}}\" class=\"icon\"></ds-icon>\r\n <span class=\"menu-label\">\r\n {{ item.name }}\r\n </span>\r\n </li>\r\n <mat-menu #menuMenu=\"matMenu\" class=\"aside-menu visible-{{item.matmenu}}\">\r\n <app-mat-menu [title]=\"item.name \" [icon]=\"item.icon\" [list]=\"item.List\"></app-mat-menu>\r\n </mat-menu>\r\n } @else {\r\n <li\r\n (click)=\"closeSidenav();navigateTo(item)\" matTooltipPosition=\"right\" matTooltip=\"{{item.name }}\"\r\n [routerLinkActive]=\"'active'\" [routerLinkActiveOptions]=\"{ exact: true }\" class=\"cursor-pointer\">\r\n <ds-icon icon=\"{{item.icon}}\" class=\"icon\"></ds-icon>\r\n <span class=\"menu-label\">\r\n {{ item.name }}\r\n </span>\r\n </li>\r\n }\r\n }\r\n </ul>\r\n </nav>\r\n</aside>\r\n","import {DOCUMENT, NgClass, NgComponentOutlet, NgIf} from '@angular/common'\r\nimport {Component, Inject, Input, OnDestroy, OnInit, ViewChild} from \"@angular/core\";\r\nimport {MatSidenav, MatSidenavModule} from '@angular/material/sidenav'\r\nimport {Router, RouterOutlet} from \"@angular/router\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {SidenavService} from \"../../../services\";\r\nimport {HeaderComponent} from \"./header/header.component\";\r\nimport {SideNavComponent} from \"./side-nav/side-nav.component\";\r\nimport {WorkflowSectionComponent} from \"../workflow-section/workflow-section.component\";\r\nimport {Form} from \"../../../interfaces\";\r\nimport {ServiceHeaderComponent} from \"../service-header/service-header.component\";\r\n\r\n@Component({\r\n selector: \"core-layout\",\r\n standalone: true,\r\n imports: [HeaderComponent, SideNavComponent, MatSidenavModule, RouterOutlet, NgComponentOutlet, WorkflowSectionComponent, ServiceHeaderComponent, NgClass, NgIf],\r\n templateUrl: \"./layout.component.html\",\r\n styleUrl: \"./layout.component.scss\",\r\n})\r\nexport class LayoutComponent implements OnInit, OnDestroy {\r\n @ViewChild(\"sidenav\", {static: true}) public sidenav!: MatSidenav;\r\n sideContent: any;\r\n private sidenavSubscription!: Subscription;\r\n @Input() form: Form;\r\n @Input() hubContainerMini: boolean = true;\r\n @Input() formTitle: string\r\n @Input() isLoading = false;\r\n @Input() serviceBrief: any[] = [];\r\n\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private readonly document: Document,\r\n private readonly router: Router,\r\n private readonly sidenavService: SidenavService,\r\n ) {}\r\n\r\n\r\n ngOnInit(): void {\r\n this.sidenavSubscription = this.sidenavService.subject.subscribe(\r\n (value: any) => {\r\n this.sideContent = value.componentName;\r\n this.sidenav.mode = value.mode;\r\n this.sidenav.position = value.position;\r\n if (value.eventName === \"open\") {\r\n this.openSideNav();\r\n } else {\r\n this.closeSideNav();\r\n }\r\n }\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.sidenavSubscription) {\r\n this.sidenavSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n onClose() {\r\n this.document.body.classList.remove(\"NoScroll\");\r\n this.document.documentElement.classList.remove(\"NoScroll\");\r\n }\r\n\r\n backdropClick() {\r\n this.sidenav.close().then(r => {});\r\n this.sidenavService.closeSidenav();\r\n this.document.body.classList.remove(\"NoScroll\");\r\n this.document.documentElement.classList.remove(\"NoScroll\");\r\n }\r\n\r\n private openSideNav() {\r\n this.sidenav.open().then(r => {});\r\n this.document.body.classList.add(\"NoScroll\");\r\n this.document.documentElement.classList.add(\"NoScroll\");\r\n }\r\n\r\n private closeSideNav() {\r\n this.sidenav.close().then(r => {});\r\n }\r\n}\r\n","<!--<app-header></app-header>-->\r\n<section class=\"d-flex\">\r\n<!-- <app-side-nav></app-side-nav>-->\r\n <mat-sidenav-container\r\n class=\"flex-grow-1\"\r\n [hasBackdrop]=\"true\"\r\n (backdropClick)=\"backdropClick()\"\r\n >\r\n <mat-sidenav\r\n #sidenav\r\n autoFocus=\"false\"\r\n fixedInViewport\r\n [position]=\"'end'\"\r\n (closedStart)=\"onClose()\"\r\n >\r\n <ng-container *ngComponentOutlet=\"sideContent\">\r\n<!-- <app-side-nav></app-side-nav>-->\r\n </ng-container>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <main\r\n class=\"hadPadding service-wrapper\"\r\n [ngClass]=\"hubContainerMini ? 'hub-container-mini' : 'hub-container'\">\r\n\r\n <ng-content ></ng-content>\r\n <ng-content select=\"[workflow]\"></ng-content>\r\n\r\n </main>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</section>\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Input, NO_ERRORS_SCHEMA, OnInit} from '@angular/core';\r\nimport {Form, Section} from \"../../interfaces\";\r\nimport {ActionStateService, CoreI18nService} from \"../../services\";\r\nimport {NgClass} from \"@angular/common\";\r\nimport {\r\n ActionButtonsComponent,\r\n AttachmentSectionComponent,\r\n CheckBoxComponent,\r\n CustomSearchableComponent,\r\n DatePickerComponent,\r\n DateRangePickerComponent,\r\n InputComponent,\r\n InputCurrencyComponent,\r\n InputEmailComponent,\r\n InputNumberComponent,\r\n InputTelephoneComponent,\r\n RadioComponent,\r\n SearchEmployeeComponent,\r\n TextareaComponent\r\n} from '../../components/shared-components';\r\nimport {RegexPatterns} from '../../regex/regex-patterns';\r\nimport {ToggleButtonComponent} from \"../../components/shared-components\";\r\nimport {TableComponent} from '../../components/shared-components/table/table.component';\r\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\r\nimport {FormBuilder, FormGroup, ReactiveFormsModule, Validators, FormControl, ValidatorFn, AbstractControl} from \"@angular/forms\";\r\nimport {DocsUploaderComponent} from \"../../components/shared-components\";\r\nimport {TranslatePipe} from '../../pipes/translate.pipe';\r\n\r\n// import { TranslatePipe } from '../../pipes/translate.pipe';\r\n\r\n@Component({\r\n selector: 'app-request-details-section',\r\n templateUrl: './request-details-section.component.html',\r\n styleUrls: ['./request-details-section.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\r\n imports: [\r\n NgClass,\r\n InputComponent,\r\n ActionButtonsComponent,\r\n ReactiveFormsModule,\r\n CustomSearchableComponent,\r\n CheckBoxComponent,\r\n TextareaComponent,\r\n InputCurrencyComponent,\r\n DatePickerComponent,\r\n DateRangePickerComponent,\r\n InputEmailComponent,\r\n InputNumberComponent,\r\n RadioComponent,\r\n ToggleButtonComponent,\r\n InputTelephoneComponent,\r\n DocsUploaderComponent,\r\n SearchEmployeeComponent,\r\n AttachmentSectionComponent,\r\n TableComponent,\r\n TranslatePipe\r\n ]\r\n})\r\n\r\n\r\nexport class RequestDetailsSectionComponent implements OnInit {\r\n\r\n @Input() isReadOnly: boolean;\r\n @Input() section: Section;\r\n @Input() form: Form;\r\n @Input() lov: any;\r\n isLoading: boolean = false;\r\n\r\n @Input() className: string = \"info-section\";\r\n formGroup: FormGroup;\r\n options: string[] = ['Option 1', 'Option 2', 'Option 3'];\r\n private readonly DEFAULT_PAGE_SIZE = 10;\r\n private readonly DEFAULT_PAGE_NUMBER = 0;\r\n pageNumber: number = this.DEFAULT_PAGE_NUMBER;\r\n pageSize: number = this.DEFAULT_PAGE_SIZE;\r\n columnsConfig: any[] = [];\r\n columns: string[] = [];\r\n destroyRef = inject(DestroyRef);\r\n requiredSearchable: boolean;\r\n\r\n isError: boolean = false;\r\n categoryData = [\r\n {\r\n \"assetDeviceType\": null,\r\n \"brand\": \"Benq\",\r\n \"colors\": null,\r\n \"assetCompanies\": null,\r\n \"descAr\": null,\r\n \"descEn\": null,\r\n \"estoreVisible\": false,\r\n \"id\": \"402\",\r\n \"model\": \"B400\",\r\n \"files\": null,\r\n \"vendors\": [\r\n {\r\n \"id\": 71,\r\n \"vendorName\": null,\r\n \"vendorNumber\": \"26\",\r\n \"__typename\": \"VendorDto\"\r\n }\r\n ],\r\n \"category\": null,\r\n \"assetType\": \"Scanner\",\r\n \"classifications\": null,\r\n \"consumedCount\": 0,\r\n \"consumedPercentage\": 0,\r\n \"specs\": [\r\n \"4GB\"\r\n ],\r\n \"sumQuantity\": 1,\r\n \"__typename\": \"AllAssetsDto\"\r\n },\r\n {\r\n \"assetDeviceType\": null,\r\n \"brand\": \"HP\",\r\n \"colors\": null,\r\n \"assetCompanies\": null,\r\n \"descAr\": null,\r\n \"descEn\": null,\r\n \"estoreVisible\": false,\r\n \"id\": \"403\",\r\n \"model\": \"EliteBook\",\r\n \"files\": null,\r\n \"vendors\": [\r\n {\r\n \"id\": 71,\r\n \"vendorName\": null,\r\n \"vendorNumber\": \"26\",\r\n \"__typename\": \"VendorDto\"\r\n }\r\n ],\r\n \"category\": null,\r\n \"assetType\": \"Laptop\",\r\n \"classifications\": null,\r\n \"consumedCount\": 0,\r\n \"consumedPercentage\": 0,\r\n \"specs\": [\r\n \"512GB\"\r\n ],\r\n \"sumQuantity\": 1,\r\n \"__typename\": \"AllAssetsDto\"\r\n },\r\n {\r\n \"assetDeviceType\": null,\r\n \"brand\": \"Hp\",\r\n \"colors\": null,\r\n \"assetCompanies\": null,\r\n \"descAr\": null,\r\n \"descEn\": null,\r\n \"estoreVisible\": false,\r\n \"id\": \"404\",\r\n \"model\": \"Laser\",\r\n \"files\": null,\r\n \"vendors\": [\r\n {\r\n \"id\": 71,\r\n \"vendorName\": null,\r\n \"vendorNumber\": \"26\",\r\n \"__typename\": \"VendorDto\"\r\n }\r\n ],\r\n \"category\": null,\r\n \"assetType\": \"Printer\",\r\n \"classifications\": null,\r\n \"consumedCount\": 0,\r\n \"consumedPercentage\": 0,\r\n \"specs\": [\r\n \"2GB\"\r\n ],\r\n \"sumQuantity\": 1,\r\n \"__typename\": \"AllAssetsDto\"\r\n },\r\n {\r\n \"assetDeviceType\": null,\r\n \"brand\": \"Asus\",\r\n \"colors\": null,\r\n \"assetCompanies\": null,\r\n \"descAr\": null,\r\n \"descEn\": null,\r\n \"estoreVisible\": false,\r\n \"id\": \"405\",\r\n \"model\": \"A500\",\r\n \"files\": null,\r\n \"vendors\": [\r\n {\r\n \"id\": 71,\r\n \"vendorName\": null,\r\n \"vendorNumber\": \"26\",\r\n \"__typename\": \"VendorDto\"\r\n }\r\n ],\r\n \"category\": null,\r\n \"assetType\": \"Laptop\",\r\n \"classifications\": null,\r\n \"consumedCount\": 0,\r\n \"consumedPercentage\": 0,\r\n \"specs\": [\r\n \"1TB\"\r\n ],\r\n \"sumQuantity\": 1,\r\n \"__typename\": \"AllAssetsDto\"\r\n },\r\n {\r\n \"assetDeviceType\": null,\r\n \"brand\": \"Dell\",\r\n \"colors\": null,\r\n \"assetCompanies\": null,\r\n \"descAr\": null,\r\n \"descEn\": null,\r\n \"estoreVisible\": false,\r\n \"id\": \"407\",\r\n \"model\": \"Latitude\",\r\n \"files\": null,\r\n \"vendors\": [\r\n {\r\n \"id\": 71,\r\n \"vendorName\": null,\r\n \"vendorNumber\": \"26\",\r\n \"__typename\": \"VendorDto\"\r\n }\r\n ],\r\n \"category\": null,\r\n \"assetType\": \"Laptop\",\r\n \"classifications\": null,\r\n \"consumedCount\": 0,\r\n \"consumedPercentage\": 0,\r\n \"specs\": [\r\n \"1TB\"\r\n ],\r\n \"sumQuantity\": 4,\r\n \"__typename\": \"AllAssetsDto\"\r\n },\r\n {\r\n \"assetDeviceType\": null,\r\n \"brand\": \"Samsung\",\r\n \"colors\": null,\r\n \"assetCompanies\": null,\r\n \"descAr\": null,\r\n \"descEn\": null,\r\n \"estoreVisible\": false,\r\n \"id\": \"408\",\r\n \"model\": \"Galaxy\",\r\n \"files\": null,\r\n \"vendors\": [\r\n {\r\n \"id\": 71,\r\n \"vendorName\": null,\r\n \"vendorNumber\": \"26\",\r\n \"__typename\": \"VendorDto\"\r\n }\r\n ],\r\n \"category\": null,\r\n \"assetType\": \"Tablet\",\r\n \"classifications\": null,\r\n \"consumedCount\": 0,\r\n \"consumedPercentage\": 0,\r\n \"specs\": [\r\n \"256GB\"\r\n ],\r\n \"sumQuantity\": 1,\r\n \"__typename\": \"AllAssetsDto\"\r\n }\r\n ]\r\n\r\n totalElements: number = 6;\r\n\r\n\r\n constructor(public i18n: CoreI18nService, private fb: FormBuilder, private actionStateService: ActionStateService) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.createForm();\r\n let data = this.section.body.details\r\n for (const key in data) {\r\n if (key !== 'decision') {\r\n this.formGroup.patchValue({[key]: data[key]});\r\n }\r\n }\r\n // this.initializeTableConfig()\r\n /* this.formGroup.get('checkbox').valueChanges.subscribe(res=> {\r\n if (res){\r\n this.formGroup.get('customSearchable').setValidators(Validators.required)\r\n this.requiredSearchable = true;\r\n console.log(this.requiredSearchable)\r\n }else {\r\n this.formGroup.get('customSearchable').clearValidators();\r\n this.requiredSearchable = false\r\n console.log(this.requiredSearchable)\r\n }\r\n this.formGroup.get('customSearchable').updateValueAndValidity();\r\n\r\n })*/\r\n }\r\n\r\n\r\n initializeTableConfig() {\r\n this.initializeColumns()\r\n this.initializeColumnConfig()\r\n\r\n }\r\n\r\n initializeColumns() {\r\n this.columns = ['id', 'assetType', 'brand', 'model', 'sumQuantity', 'specs', 'allocate'];\r\n }\r\n\r\n initializeColumnConfig() {\r\n this.columnsConfig = [\r\n {\r\n label: 'Id',\r\n type: 'text',\r\n },\r\n {\r\n label: 'Asset Type',\r\n type: 'text',\r\n },\r\n {\r\n label: 'Brand',\r\n type: 'text'\r\n },\r\n {\r\n label: 'Model',\r\n type: 'text'\r\n },\r\n {\r\n label: 'Quantity',\r\n type: 'formId'\r\n },\r\n {\r\n label: 'Capacity',\r\n type: 'specs',\r\n clickableText: 'View'\r\n },\r\n {\r\n label: 'Actions',\r\n type: 'actions',\r\n actions: [\r\n {viewMode: 'allocate', actionName: \"Allocate\", disabled: true},\r\n {\r\n viewMode: 'edit', actionName: \"Edit\", action: \"edit\", onClick: (asset: any) => {\r\n this.editAsset(asset);\r\n },\r\n },\r\n {\r\n viewMode: 'delete', actionName: \"Delete\", action: \"delete\", onClick: (asset: any) => {\r\n this.deleteAsset(asset);\r\n },\r\n },\r\n {viewMode: 'chart', actionName: \"Chart\", action: \"chart\"},\r\n ]\r\n },\r\n ];\r\n }\r\n\r\n\r\n createForm() {\r\n let newForm = {\r\n input1: ['', Validators.required]\r\n };\r\n this.lov?.['decision']?.options?.forEach(option => {\r\n newForm[option.value] = [''];\r\n })\r\n this.formGroup = this.fb.group({\r\n // input: new FormControl(null),\r\n // currencyInput: new FormControl(null, Validators.required),\r\n // emailInput: new FormControl({value: null, disabled: true}, Validators.required),\r\n // numberInput: new FormControl(null, Validators.required),\r\n // customSearchable: new FormControl(null, Validators.required),\r\n // checkbox: new FormControl(null, [Validators.requiredTrue, Validators.required]),\r\n // textArea: new FormControl(null, [Validators.required, Validators.maxLength(5)]),\r\n // datePicker: new FormControl(null, Validators.required),\r\n // datePickerRange: new FormControl(null, Validators.required),\r\n // radio: new FormControl(null, Validators.required),\r\n // toggle: new FormControl(null, Validators.required),\r\n // telephone: new FormControl(null, Validators.required),\r\n // approverList: new FormControl(null, Validators.required),\r\n // // ...newForm,\r\n attachment: new FormControl(null, Validators.required),\r\n // attachmentSection: new FormControl([], Validators.required),\r\n });\r\n/* if(this.lov?.['decision']?.options?.length){\r\n\r\n }else{\r\n\r\n }*/\r\n // this.lov?.['decision']?.options?.forEach(option => {\r\n // let isActionValid = this.checkValidity(option.value);\r\n // this.actionStateService.setActionValid(option.value, isActionValid);\r\n // console.log('isActionValid',isActionValid)\r\n\r\n // })\r\n\r\n\r\n // this.formGroup = this.fb.group({\r\n // input: new FormControl(null),\r\n // currencyInput: new FormControl(null),\r\n // emailInput: new FormControl({value: null,disabled: true}),\r\n // numberInput: new FormControl(null),\r\n // customSearchable: new FormControl(null),\r\n // checkbox: new FormControl(null),\r\n // textArea: new FormControl(null),\r\n // datePicker: new FormControl(null),\r\n // datePickerRange: new FormControl(null),\r\n // radio: new FormControl(null),\r\n // toggle: new FormControl(null),\r\n // telephone: new FormControl(null),\r\n // approverList: new FormControl(null),\r\n // // ...newForm,\r\n // attachment: new FormControl(null),\r\n // attachmentSection: new FormControl([]),\r\n // });\r\n // this.formGroup.setValue(this.section.body.details);\r\n // console.log(this.section.body.detils);\r\n // console.log(this.lov?.['approverActions']?.options)\r\n this.formGroup.valueChanges.subscribe(value => {\r\n this.lov?.['decision']?.options?.forEach(option => {\r\n let isActionValid = this.checkValidity(option.value);\r\n this.actionStateService.setActionValid(option.value, isActionValid);\r\n this.section.body.details = {...this.section.body.details, ...this.formGroup.value};\r\n\r\n })\r\n })\r\n }\r\n\r\n // this.formGroup.valueChanges.subscribe(value => {\r\n // this.lov?.['decision']?.options?.forEach(option => {\r\n // let isActionValid = this.checkValidity(option.value);\r\n // this.actionStateService.setActionValid(option.value, isActionValid);\r\n // this.section.body.details = this.formGroup.value\r\n // /!*{\r\n // input1: this.fieldsForm.get('input1').value\r\n // }*!/\r\n // })\r\n // })\r\n // }\r\n // createForm() {\r\n // this.formGroup = this.fb.group({\r\n // customerName: new FormControl(null, [Validators.required]),\r\n // customerPhone: new FormControl(null, [Validators.required]),\r\n // reasonForRequest: new FormControl(null, [Validators.required]),\r\n // callType: new FormControl(null, [Validators.required]),\r\n // centerOfCalls: new FormControl(null, [Validators.required]),\r\n // callDate: new FormControl(null, [Validators.required]),\r\n // agreement: new FormControl(null, [Validators.required,Validators.requiredTrue]),\r\n // });\r\n // this.formGroup.valueChanges.pipe(\r\n // takeUntilDestroyed(this.destroyRef)\r\n // ).subscribe(value => {\r\n // this.lov?.['decision']?.options?.forEach(option => {\r\n // let isActionValid = this.checkValidity(option.value);\r\n // this.actionStateService.setActionValid(option.value, isActionValid);\r\n // this.section.body.details = this.formGroup.value\r\n // this.section.body.details.customerPhone = this.section.body.details.customerPhone?.e164Number\r\n // // this.section.body.details.agreement = (this.section.body.details.agreement).toString()\r\n\r\n // })\r\n // })\r\n // console.log(this.lov?.['decision']?.options)\r\n // console.log(this.section.body.details)\r\n // this.formGroup.setValue(this.section.body.details);\r\n // console.log('customCallSubmit', this.formGroup.value)\r\n // }\r\n\r\n editAsset(asset) {\r\n console.log(asset)\r\n }\r\n\r\n startsWithDMOEOrCR(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const value = control.value;\r\n if (value && (value.startsWith('DMOE-') || value.startsWith('CR-'))) {\r\n return null; // Valid\r\n }\r\n return {startsWithInvalid: true}; // Invalid\r\n };\r\n }\r\n\r\n deleteAsset(asset) {\r\n console.log(asset)\r\n }\r\n\r\n formValue(form) {\r\n console.log(form.value)\r\n }\r\n\r\n checkValidity(action: string): boolean {\r\n switch (action) {\r\n case 'SUBMIT':\r\n return this.formGroup.valid;\r\n case 'APPROVE':\r\n return true;\r\n case 'REJECT':\r\n return this.formGroup.valid;\r\n case 'SENDBACK':\r\n return this.formGroup.valid;\r\n case 'SAVE_CHANGES':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n\r\n customCallSubmit(action: string) {\r\n console.log('customCallSubmit', action)\r\n }\r\n\r\n resetForm() {\r\n this.actionStateService.resetAction$.next();\r\n }\r\n\r\n pageChanged(event: any) {\r\n this.pageNumber = event.pageIndex\r\n this.pageSize = event.pageSize\r\n }\r\n\r\n}\r\n","<div>\r\n <form [ngClass]=\"{'form-section-divide form-section':!section?.header?.readOnly,'info-section':section?.header?.readOnly}\" [formGroup]=\"formGroup\">\r\n\r\n <!-- <app-search-employee\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"approverList\"\r\n [hasCustomAPI]=\"true\"\r\n [ApiAlias]=\"'getEmployeesByGd'\"\r\n [parameters]=\"{\r\n 'language':'en',\r\n 'gd': '6017'\r\n }\"\r\n label=\"Search-employee\"></app-search-employee> -->\r\n\r\n <!-- <app-attachment-section\r\n class=\"section-item full\"\r\n [descriptionRequired]=\"false\"\r\n label=\"Attachment section\"\r\n [commentsRequired]=\"false\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"attachmentSection\"></app-attachment-section> -->\r\n\r\n<!-- {{formGroup.valid}}-->\r\n<!-- <app-input class=\"section-item full\" [isReadOnly]=\"false\" [mandatory]=\"true\" [loading]=\"true\" type=\"enOnly\" formControlName=\"input\" label=\"Input\"></app-input>-->\r\n<!-- <app-checkbox\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"checkbox\"\r\n termsLabel=\"Terms and conditions\"\r\n label=\"check-box\"\r\n [containTerms]=\"true\"></app-checkbox>-->\r\n <!--\r\n <app-search-employee\r\n class=\"section-item full\"\r\n [multiple]=\"true\"\r\n [arrayList]=\"formGroup.get('searchEmployee').value\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"searchEmployee\"\r\n label=\"Search-employee\"></app-search-employee>\r\n <app-input class=\"section-item full\" [isReadOnly]=\"isReadOnly\" [loading]=\"true\" type=\"enOnly\" formControlName=\"input\" label=\"Input\"></app-input>\r\n <app-input-currency class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"currencyInput\" label=\"currency\"></app-input-currency>\r\n <app-input-email class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"emailInput\" label=\"email\"></app-input-email>\r\n <app-input-number class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"numberInput\" label=\"number\"></app-input-number>\r\n <app-custom-searchable\r\n class=\"section-item mb-0 full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"customSearchable\"\r\n label=\"Custom-searchable\"\r\n [options]=\"lov?.['approverActions']?.options\"\r\n [displayedLabel]=\"'name'\"\r\n [key]=\"'name'\"></app-custom-searchable>\r\n <app-checkbox\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"checkbox\"\r\n termsLabel=\"Terms and conditions\"\r\n label=\"check-box\"\r\n [containTerms]=\"true\"></app-checkbox>\r\n <app-textarea class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"textArea\" label=\"Text-area\"></app-textarea>\r\n\r\n <app-date-range-picker\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"datePickerRange\"\r\n label=\"Date-picker-range\"\r\n [matSuffix]=\"true\"></app-date-range-picker>\r\n <app-radio class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"radio\" [options]=\"options\" label=\"Radio\"></app-radio>-->\r\n <!-- <app-toggle-button\r\n class=\"section-item full\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"toggle\"\r\n [options]=\"lov?.['decision']?.options\"\r\n label=\"Toggle-button\"\r\n [displayedLabel]=\"'description'\"\r\n [key]=\"'value'\"></app-toggle-button>-->\r\n <!--<app-input-telephone class=\"section-item full\" [isReadOnly]=\"isReadOnly\" formControlName=\"telephone\" label=\"Telephone\"></app-input-telephone>\r\n-->\r\n <app-file-uploader\r\n class=\"section-item full\"\r\n [callApi]=\"true\"\r\n [isReadOnly]=\"isReadOnly\"\r\n [multiple]=\"true\"\r\n label=\"attachment\"\r\n formControlName=\"attachment\"></app-file-uploader>\r\n\r\n <!-- <app-attachment-section\r\n class=\"section-item full\"\r\n [descriptionRequired]=\"false\"\r\n label=\"Attachment section\"\r\n [commentsRequired]=\"false\"\r\n [isReadOnly]=\"isReadOnly\"\r\n formControlName=\"attachmentSection\"></app-attachment-section> -->\r\n\r\n\r\n\r\n\r\n <!-- <app-table\r\n [columnsConfig]=\"columnsConfig\"\r\n [columns]=\"columns\"\r\n [isError]=\"isError\"\r\n [isLoading]=\"isLoading\"\r\n [rows]=\"categoryData\" [hasPaginator]=\"true\"\r\n [pageSize]=\"pageSize\" [currentPage]=\"pageNumber\"\r\n [totalElements]=\"totalElements\"\r\n (pageChange)=\"pageChanged($event)\"\r\n class=\"new-primary-table full\">\r\n </app-table> -->\r\n\r\n<!-- <app-datepicker\r\n class=\"section-item full\"\r\n [isReadOnly]=\"false\"\r\n formControlName=\"datePicker\"\r\n [matSuffix]=\"true\"\r\n label=\"Date-picker\"></app-datepicker>-->\r\n\r\n\r\n </form>\r\n\r\n\r\n</div>\r\n@if (!section?.header?.readOnly) {\r\n <div class=\"mt-4\">\r\n <lib-action-buttons\r\n [lovOptions]=\"lov?.['decision']?.options\"\r\n [lovType]=\"lov?.['decision']?.type\"\r\n [section]=\"section\"\r\n [form]=\"form\"\r\n [sections]=\"form.sections\"\r\n [showApprovalCycle]=\"true\"\r\n [customCall]=\"false\"\r\n [fieldsForm]=\"formGroup\"\r\n (customCallEmit)=\"customCallSubmit($event)\"\r\n (resetFormEmit)=\"resetForm()\"\r\n />\r\n </div>\r\n}\r\n","import {Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Input, NO_ERRORS_SCHEMA, OnInit} from '@angular/core';\r\nimport {Form, Section} from \"../../interfaces\";\r\nimport {ActionStateService, CoreI18nService} from \"../../services\";\r\nimport {NgClass, NgForOf, NgIf} from \"@angular/common\";\r\nimport {ActionButtonsComponent, TextareaComponent} from \"../../components/shared-components\";\r\nimport {FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators} from \"@angular/forms\";\r\nimport {CustomSearchableComponent, InputComponent} from '../../components/shared-components';\r\nimport {ValidationErrorsComponent} from '../../components/shared-components/form-field/validation-errors/validation-errors.component';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: 'app-general-approver-section',\r\n templateUrl: './general-approver-section.component.html',\r\n styleUrls: ['./general-approver-section.component.scss'],\r\n standalone: true,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\r\n imports: [\r\n NgClass,\r\n InputComponent,\r\n NgIf,\r\n NgForOf,\r\n ActionButtonsComponent,\r\n ReactiveFormsModule,\r\n ValidationErrorsComponent,\r\n CustomSearchableComponent,\r\n TextareaComponent\r\n ]\r\n})\r\nexport class GeneralApproverSectionComponent implements OnInit{\r\n\r\n @Input() isReadOnly: boolean;\r\n @Input() section: Section;\r\n @Input() form: Form;\r\n @Input() lov: any;\r\n @Input() className: string = \"info-section\";\r\n fieldsForm: FormGroup;\r\n numbers = [...Array(100).keys()].map(i => i + 1);\r\n destroyRef = inject(DestroyRef);\r\n formGroup: FormGroup;\r\n\r\n\r\n constructor(public i18n: CoreI18nService, private fb: FormBuilder, private actionStateService: ActionStateService) {\r\n\r\n }\r\n\r\nngOnInit() {\r\n this.createForm();\r\n this.formGroup.setValue(this.section.body.details);\r\n }\r\n\r\n createForm() {\r\n this.formGroup = this.fb.group({\r\n comment: new FormControl('' ),\r\n decision: new FormControl(''),\r\n });\r\n this.formGroup.valueChanges.subscribe(value => {\r\n this.lov?.['decision']?.options?.forEach(option => {\r\n let isActionValid = this.checkValidity(option.value);\r\n this.actionStateService.setActionValid(option.value, isActionValid);\r\n this.section.body.details = this.formGroup.value\r\n })\r\n })\r\n }\r\n\r\n checkValidity(action: string): boolean {\r\n switch (action) {\r\n case 'APPROVE':\r\n return true;\r\n case 'REJECT':\r\n return this.fieldsForm.valid;\r\n case 'SENDBACK':\r\n return this.fieldsForm.valid;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n\r\n customCallSubmit(action: string) {\r\n console.log('customCallSubmit', action)\r\n }\r\n\r\n resetForm() {\r\n this.fieldsForm.reset()\r\n }\r\n\r\n}\r\n","<div>\r\n <form [ngClass]=\"{'form-section-divide form-section':!section?.header?.readOnly,'info-section':section?.header?.readOnly}\"\r\n [formGroup]=\"formGroup\">\r\n\r\n <app-textarea class=\"section-item\" formControlName=\"comment\" [label]=\"'comment'\" [required]=\"false\"\r\n [isReadOnly]=\"section?.header?.readOnly\">\r\n </app-textarea>\r\n\r\n </form>\r\n</div>\r\n\r\n\r\n@if (!section?.header?.readOnly) {\r\n<div class=\"mt-4\">\r\n <lib-action-buttons [lovOptions]=\"lov?.['decision']?.options\" [lovType]=\"lov?.['decision']?.type\" [section]=\"section\"\r\n [form]=\"form\" [sections]=\"form.sections\" [showApprovalCycle]=\"true\" [customCall]=\"false\" [fieldsForm]=\"formGroup\"\r\n (customCallEmit)=\"customCallSubmit($event)\" (resetFormEmit)=\"resetForm()\" />\r\n</div>\r\n}\r\n","import {GeneralApproverSectionComponent} from \"../general-approver-section/general-approver-section.component\";\r\n\r\n\r\nexport default {\r\n roleToApprovalSectionMapping: {\r\n vpr_d: GeneralApproverSectionComponent,\r\n sel_dsg : GeneralApproverSectionComponent,\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as en from '../../i18n/en';\r\nimport * as ar from '../../i18n/ar';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class I18nService {\r\n private locales: {[key: string]: {[key: string]: string}};\r\n private coreLocales: {[key: string]: {[key: string]: string}};\r\n private language : string;\r\n\r\n constructor() {\r\n this.language = (window as any).wmConfig.language;\r\n // this.language = \"en\";\r\n this.locales = {en: en.default, ar: ar.default};\r\n }\r\n\r\n translate(key) {\r\n let result = null;\r\n try {\r\n result = this.coreLocales[this.language][key];\r\n if (!result) {\r\n result = this.locales[this.language][key];\r\n }\r\n }\r\n catch(e) {\r\n result = null;\r\n }\r\n return result || key;\r\n }\r\n\r\n getLanguage() {\r\n return this.language;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as Constants from '../../constants';\r\nimport { I18nService } from './i18n.service';\r\nimport {RequestDetailsSectionComponent} from \"../request-details-section/request-details-section.component\";\r\nimport segmentDynamicLoaderConfiguration from '../config/segment-dynamic-loader.config';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class SegmentDynamicLoaderService {\r\n requestDetailsSection = RequestDetailsSectionComponent;\r\n roleToApprovalSectionMapping = segmentDynamicLoaderConfiguration.roleToApprovalSectionMapping;\r\n\r\n constructor(private i18n: I18nService) {\r\n\r\n }\r\n\r\n getComponent(componentId: string) {\r\n if (componentId.toLowerCase() === Constants.SECTION_ID_REQUEST_DETAILS.toLowerCase()) {\r\n return this.requestDetailsSection;\r\n }\r\n let role = componentId.toLowerCase().split(Constants.SECTION_ID_APPROVAL_PARTIAL_NAME.toLowerCase())[0].toLowerCase();\r\n return this.roleToApprovalSectionMapping[role];\r\n }\r\n\r\n getSectionName(componentId: string): string {\r\n if(componentId.toLowerCase() === Constants.SECTION_ID_REQUEST_DETAILS.toLowerCase()) {\r\n return this.i18n.translate('requestDetailsTitle');\r\n }\r\n else if(componentId.toLowerCase() === 'hrRequestDetails'.toLowerCase()) {\r\n return this.i18n.translate('hrRequestDetailsTitle');\r\n }\r\n let role = componentId.toLowerCase().split(Constants.SECTION_ID_APPROVAL_PARTIAL_NAME.toLowerCase())[0].toLowerCase();\r\n return this.i18n.translate(`${role.toLowerCase()}Role`);\r\n }\r\n\r\n getPrintPartialName (componentName: string) {\r\n\r\n\r\n\r\n if (componentName === Constants.SECTION_ID_REQUEST_DETAILS) {\r\n return 'sectionrequestDetails';\r\n }\r\n else if (componentName === 'wpo_dApproval' ) { return 'sectionGeneralApprover'}\r\n else if (componentName === 'wpo_gmApproval' ) { return 'sectionGeneralApprover'}\r\n\r\n else { return 'sectionGeneralApproval' }\r\n\r\n }\r\n}\r\n","import {AfterViewInit, Component, CUSTOM_ELEMENTS_SCHEMA, Inject, NO_ERRORS_SCHEMA, PLATFORM_ID} from '@angular/core';\r\nimport {LayoutComponent, ServiceHeaderComponent, WorkflowSectionComponent} from \"../components/app-component-sections\";\r\nimport {DOCUMENT, isPlatformBrowser} from \"@angular/common\";\r\nimport {Router} from \"@angular/router\";\r\nimport {CoreI18nService, CoreService, SidenavService} from \"../services\";\r\nimport {Form} from \"../interfaces\";\r\nimport {RequestDetailsSectionComponent} from \"../testComponent/request-details-section/request-details-section.component\";\r\nimport {SegmentDynamicLoaderService} from \"../testComponent/services/segment-dynamic-loader.service\";\r\nimport {DynamicComponentInjectorToken} from \"ng-dynamic-component\";\r\nimport {TranslatePipe} from \"../pipes/translate.pipe\";\r\n\r\n@Component({\r\n selector: 'lib-app',\r\n standalone: true,\r\n templateUrl: './app.component.html',\r\n styleUrl: './app.component.css',\r\n imports: [\r\n // DynamicModule,\r\n LayoutComponent,\r\n ServiceHeaderComponent,\r\n WorkflowSectionComponent,\r\n RequestDetailsSectionComponent,\r\n TranslatePipe\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\r\n providers: [\r\n {provide: DynamicComponentInjectorToken, useValue: { /* your value here */}}\r\n ]\r\n\r\n})\r\nexport class CoreAppComponent implements AfterViewInit {\r\n loading = {\r\n form: false\r\n }\r\n form: Form\r\n formTitle: string = 'Test';\r\n noError = true;\r\n errorMessage: [];\r\n constructor(\r\n public segmentDynamicLoader: SegmentDynamicLoaderService,\r\n @Inject(DOCUMENT) private readonly document: Document,\r\n private readonly router: Router,\r\n private readonly sidenavService: SidenavService,\r\n public i18n: CoreI18nService,\r\n private readonly coreService: CoreService,\r\n @Inject(PLATFORM_ID) private platformId: any\r\n ) {\r\n this.loading['form'] = true\r\n this.coreService.loadForm().subscribe({\r\n next: (form: any) => {\r\n this.form = form;\r\n this.loading['form'] = false\r\n },\r\n error: (err) => {\r\n this.noError = false;\r\n this.loading['form'] = false\r\n this.errorMessage = err?.error?.meta?.messages\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const direction = this.i18n.language == 'en' ? 'ltr' : 'rtl';\r\n document.documentElement.setAttribute('dir', direction);\r\n }\r\n }\r\n\r\n}\r\n","<core-layout>\r\n @if (!loading['form']) {\r\n\r\n @if (noError) {\r\n <core-service-header\r\n [isLoading]=\"false\"\r\n [formTitle]=\"formTitle\"\r\n [isReadOnly]=\"form.sections[0].header.readOnly\"\r\n [form]=\"form\">\r\n </core-service-header>\r\n <app-workflow-section\r\n workflow\r\n [segmentDynamicLoaderService]=\"segmentDynamicLoader\"\r\n [form]=\"form\" [sections]=\"form?.['sections']\">\r\n <app-request-details-section\r\n [section]=\"form.sections[0]\" [form]=\"form\" [lov]=\"form?.lovs\" className=\"form-section\"\r\n [isReadOnly]=\"form.sections[0].header.readOnly\"></app-request-details-section>\r\n </app-workflow-section>\r\n } @else {\r\n @if (errorMessage?.length) {\r\n <ds-message></ds-message>\r\n @for (item of errorMessage; track $index) {\r\n <div class=\"d-flex justify-content-center\">\r\n <span class=\"fc-coral fs-18\" >{{ item?.['message'] }}</span>\r\n </div>\r\n }\r\n } @else {\r\n <ds-message [label]=\"'pageErrorLoading' | translate\"></ds-message>\r\n }\r\n }\r\n } @else {\r\n <core-service-header header [formTitle]=\"formTitle\" [isLoading]=\"true\">\r\n </core-service-header>\r\n }\r\n</core-layout>\r\n","import { Form } from \"../interfaces\";\r\n\r\nexport default {\r\n beforeTranspilePayload (payload: {[key: string]: any}): {[key: string]: any} {\r\n const hookResult = payload;\r\n // Here should be the code to manipulate the payload before the transpile stage\r\n return hookResult;\r\n },\r\n\r\n afterTranspilePayload (form: Form): Form {\r\n const hookResult = form;\r\n // Here should be the code to manipulate the form object after the transpile stage\r\n return hookResult;\r\n }\r\n}\r\n","export function encodePassword(formId: string, password: string) {\r\n const formIdString = Array.from(\r\n new TextEncoder().encode(formId),\r\n (x) => String.fromCodePoint(x)\r\n ).join('');\r\n\r\n let encodedFormId = btoa(formIdString);\r\n\r\n let x = Math.floor(\r\n Math.random() * password.length\r\n );\r\n\r\n let [first, second] = [\r\n password.slice(0, x),\r\n password.slice(x),\r\n ];\r\n\r\n let newPassword = first + encodedFormId + second;\r\n\r\n const binString = Array.from(new TextEncoder().encode(newPassword), (x) =>\r\n String.fromCodePoint(x)\r\n ).join('');\r\n\r\n newPassword = btoa(binString);\r\n return newPassword;\r\n }","import { AbstractControl, FormArray, FormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\nconst ACTION_ERROR_SUFFIX = '_ACTION';\r\nclass ManageActionErrors {\r\n /*\r\n action error structure\r\n {error_key}_{action_name}ACTION_ERROR_SUFFIX\r\n e.g. required_REJECT_ACTION\r\n */\r\n hasActionError(errors: ValidationErrors, action: string): boolean {\r\n if(!errors) return false;\r\n return !!Object.keys(errors).filter(key => key.endsWith(`${action}${ACTION_ERROR_SUFFIX}`)).length;\r\n }\r\n\r\n hasOtherError(errors: ValidationErrors): boolean {\r\n if(!errors) return false;\r\n const actionErrorKeys = this.getActionErrorKeys(errors);\r\n const allErrorKeys = this.getAllErrorKeys(errors);\r\n if(actionErrorKeys.size === allErrorKeys.size) return false;\r\n return true;\r\n }\r\n\r\n private getActionErrorKeys(errors: ValidationErrors){\r\n return new Set(\r\n //required_REJECT_ACTION => required\r\n Object.keys(errors).filter(actionKey => actionKey.endsWith(ACTION_ERROR_SUFFIX)).map(key => key.split('_')[0])\r\n );\r\n }\r\n private getAllErrorKeys(errors: ValidationErrors){\r\n return new Set(\r\n Object.keys(errors).filter(key => !key.endsWith(ACTION_ERROR_SUFFIX))\r\n );\r\n }\r\n\r\n addActionError(actions: string[], errors: ValidationErrors) {\r\n const actionErrors = {};\r\n actions.forEach(action => {\r\n for(let key in errors){\r\n actionErrors[`${key}_${action}${ACTION_ERROR_SUFFIX}`] = errors[key];\r\n }\r\n })\r\n return {...errors, ...actionErrors};\r\n }\r\n}\r\n\r\n/**\r\n * Checks if the form group is valid for a specific action.\r\n * You should use this function to check form validity if you use `validateIfAction` function.\r\n * @param action The action to check against.\r\n * @param formGroup The form group or form array to validate.\r\n * @returns {boolean} True if all controls are valid for the action, false otherwise.\r\n */\r\nexport function isValidForAction(action: string, formGroup: FormGroup | FormArray): boolean {\r\n return Object.entries(formGroup.controls).every(([controlName, control]) => {\r\n if(control instanceof FormGroup || control instanceof FormArray) {\r\n return isValidForAction(action, control);\r\n }\r\n const errors = control.errors;\r\n if(!errors) return true;\r\n const invalidAction = new ManageActionErrors().hasActionError(errors, action);\r\n if(invalidAction) return false;\r\n const hasOtherError = new ManageActionErrors().hasOtherError(errors);\r\n if(hasOtherError) return false;\r\n return true;\r\n })\r\n}\r\n\r\n/**\r\n * Updates the value and validity of all controls.\r\n * Use this function when your validators depend on the values of other controls.\r\n * @param formGroup The FormGroup or FormArray to update.\r\n * @returns {void}\r\n */\r\nexport function updateValueAndValidity(formGroup: FormGroup | FormArray) {\r\n Object.values(formGroup.controls).forEach((control) => {\r\n if (control instanceof FormGroup || control instanceof FormArray) {\r\n updateValueAndValidity(control);\r\n } else {\r\n control.updateValueAndValidity({ emitEvent: false });\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Validates a control only when a certain condition is met.\r\n * @param condition A function that returns a boolean indicating whether to apply the validator.\r\n * @param validator A single ValidatorFn or an array of ValidatorFns to apply if the condition is true.\r\n * @returns {ValidatorFn} A ValidatorFn that applies the given validator only when the condition is true.\r\n */\r\nexport function validateOnlyWhen(\r\n condition: () => boolean,\r\n validator: ValidatorFn | ValidatorFn[]\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (condition()) {\r\n return Array.isArray(validator) ? Validators.compose(validator)(control) : validator(control);\r\n }\r\n return null;\r\n };\r\n}\r\n\r\n/**\r\n * Validates a control if the current action is one of the specified actions.\r\n * @param actions An array of action names to check against.\r\n * @param validator A single ValidatorFn or an array of ValidatorFns to apply if the current action matches one of the actions.\r\n * @returns {ValidatorFn} A ValidatorFn that applies the given validator only if the current action is one of the specified actions.\r\n * */\r\nexport function validateIfAction(actions: string[], validator: ValidatorFn | ValidatorFn[]): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const output: ValidationErrors | null = Array.isArray(validator) ? Validators.compose(validator)(control) : validator(control);\r\n if (output) {\r\n return new ManageActionErrors().addActionError(actions, output);\r\n }\r\n return null;\r\n };\r\n}\r\n\r\n/**\r\n * Logs the status of all controls in a FormGroup.\r\n * It traverses the form structure and logs whether each control is valid or invalid.\r\n * @param formGroup The FormGroup to log the status of.\r\n * @returns {void} This function does not return anything, it logs the status to the console.\r\n */\r\nexport function logFormStatus(formGroup: FormGroup): void {\r\n const stack = [{controls: formGroup.controls, path: ''}];\r\n const status = {\r\n all: {},\r\n valid: {},\r\n invalid: {}\r\n };\r\n while(stack.length){\r\n const {controls, path} = stack.pop();\r\n for(const key in controls){\r\n const control = controls[key];\r\n const newPath = path ? `${path}.${key}` : key;\r\n if(control instanceof FormGroup){\r\n stack.push({controls: control.controls, path: newPath});\r\n } else if(control instanceof FormArray) {\r\n const formArrayControlsAsObj = control.controls.reduce((prev, current, index) => {\r\n prev[index] = current;\r\n return prev;\r\n }, {});\r\n stack.push({controls: formArrayControlsAsObj, path: newPath});\r\n } else {\r\n status.all[newPath] = control.valid;\r\n if(control.valid) status.valid[newPath] = control.valid;\r\n else status.invalid[newPath] = control.valid;\r\n }\r\n }\r\n }\r\n console.log(status);\r\n}\r\n\r\n/**\r\n * A collection of custom validators for various data types.\r\n */\r\nexport class DataValidators {\r\n /**\r\n * Validates that the control's value is the string 'true'\r\n */\r\n static checkboxRequired(control: AbstractControl): ValidationErrors | null {\r\n if(control.value === 'true') return null;\r\n return {required: true};\r\n }\r\n\r\n /**\r\n * Validates that the control's value is a valid employee object.\r\n */\r\n static employeeRequired(control: AbstractControl): ValidationErrors | null {\r\n if(control.value?.personEmail) return null;\r\n return {required: true};\r\n }\r\n\r\n /**\r\n * Validates that the control's value is a valid attachment object.\r\n */\r\n static fileUploaderRequired(control: AbstractControl): ValidationErrors | null {\r\n if(control.value?.attachmentId) return null;\r\n return {required: true};\r\n }\r\n\r\n /**\r\n * Validates that the control's value is a valid attachments list.\r\n */\r\n static multiFileUploaderRequired(control: AbstractControl): ValidationErrors | null {\r\n if(!Array.isArray(control.value)) return {required: true};\r\n if(!control.value.length) return {required: true};\r\n if((control.value as any[]).every(item => item.attachmentId)) return null;\r\n return {required: true};\r\n }\r\n\r\n /**\r\n * Validates that the control's value is a valid select object.\r\n * The select object should have a 'key' property.\r\n */\r\n static selectRequired(control: AbstractControl): ValidationErrors | null {\r\n if(control.value?.key) return null;\r\n return {required: true};\r\n }\r\n}\r\n","import { Form, Messages } from \"../interfaces\";\r\nimport { NO_VALUE } from \"../constants/constants\";\r\n\r\nexport function handelErrorResponse<T extends {form: Form}>(obj: T, errorMsgs: Messages) {\r\n if (!obj.form) {\r\n obj.form = new Form(\r\n NO_VALUE,\r\n NO_VALUE,\r\n NO_VALUE,\r\n NO_VALUE,\r\n NO_VALUE,\r\n NO_VALUE,\r\n errorMsgs\r\n );\r\n } else {\r\n obj.form.messages = errorMsgs;\r\n }\r\n window.scrollTo(0, 0);\r\n }\r\n","export function dataURItoBlob(dataURI: any, mimeType?: string) {\r\n const byteString = atob(dataURI);\r\n const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n const blob = new Blob([arrayBuffer], { type: mimeType || 'image/jpeg' });\r\n return blob;\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nexport function validateSAID(this: any) {\r\n\r\n if (this?.personalInfoFormTemp) {\r\n let id = this?.personalInfoFormTemp?.get?.('elmIdNum')?.value\r\n const selectedType = this?.personalInfoFormTemp?.get?.('elmIdType')?.value?.value\r\n id = id.trim();\r\n if (id.length > 0 && (selectedType == 'IQAMA' || selectedType == 'NATIONAL ID')) {\r\n if (Number(id) === null) {\r\n // return { idInvalid: true };\r\n return false;\r\n }\r\n if (id.length !== 10) {\r\n return { idInvalid: true };\r\n // return false;\r\n }\r\n const type = id.substr(0, 1);\r\n if (type !== '2' && type !== '1') {\r\n return { idInvalid: true };\r\n // return false;\r\n }\r\n let idType\r\n if (selectedType == 'IQAMA') {\r\n idType = '2'\r\n } else if (selectedType == 'NATIONAL ID') {\r\n idType = '1'\r\n }\r\n if (idType !== type) {\r\n return { idInvalid: true };\r\n // return false;\r\n }\r\n\r\n let sum = 0;\r\n for (let i = 0; i < 10; i++) {\r\n if (i % 2 === 0) {\r\n const ZFOdd = String('00' + String(Number(id.substr(i, 1)) * 2)).slice(-2);\r\n sum += Number(ZFOdd.substr(0, 1)) + Number(ZFOdd.substr(1, 1));\r\n } else {\r\n sum += Number(id.substr(i, 1));\r\n }\r\n\r\n }\r\n return { idInvalid: (sum % 10 !== 0) ? true : false };\r\n // return (sum % 10 !== 0) ? false : true;\r\n }\r\n else if (id.length > 0 && selectedType == 'PASSPORT') {\r\n const nameWithNumbersRegex = '^[\\u0600-\\u065F\\u066A-\\u06EF\\u06FA-\\u06FFa-zA-Z0-9]+[\\u0600-\\u065F\\u066A-\\u06EF\\u06FA-\\u06FFa-zA-Z0-9-_ ]*$'\r\n if (!RegExp(nameWithNumbersRegex).test(id)) {\r\n return { idInvalid: true };\r\n // return false;\r\n }\r\n else {\r\n return { idInvalid: false };\r\n // return true;\r\n }\r\n }\r\n else {\r\n return { idInvalid: false };\r\n // return true;\r\n }\r\n } else {\r\n return { idInvalid: false };\r\n // return true;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable @angular-eslint/directive-selector */\r\n\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input\r\n} from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[textOnly]\"\r\n})\r\nexport class TextDirective {\r\n @Input() decimals = 0;\r\n\r\n constructor(private el: ElementRef) { }\r\n\r\n private check(value: string) {\r\n value.replace(/[\\u0000-\\u001F\\u007F-\\u009F]/g, \"\")\r\n const arabicAlphabetDigits = /[\\u0600-\\u06ff]|[\\u0750-\\u077f]|[\\ufb50-\\ufc3f]|[\\ufe70-\\ufefc]|[\\u0200]|[\\u00A0]/g;\r\n\r\n return (String(value).match(new RegExp('^[a-zA-Z ]*$')) || arabicAlphabetDigits.test(value) ) ;\r\n // return String(value).match(new RegExp('^[a-zA-Z ]*$'));\r\n }\r\n\r\n\r\n\r\n @HostListener(\"keydown\", [\"$event\"])\r\n onKeyDown(event: KeyboardEvent) {\r\n console.log(\"keydown\", event)\r\n const text = event.key;\r\n if (this.check(this.el.nativeElement.value + (event.key != 'Backspace' ? event.key : '')) || text == \" \" || text == 'Backspace' || (event.ctrlKey && (text == 'c' || text == 'ؤ' || text == 'v' || text == 'ر' || text == 'x' || text == 'ء' || text == 'a' || text == 'ش' || text == 'z' || text == 'ئ'))) {\r\n return;\r\n }\r\n else {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener(\"paste\", [\"$event\"])\r\n onPaste(event: ClipboardEvent) {\r\n const data = event.clipboardData.getData('text/plain');\r\n if (!this.check(data)) {\r\n event.preventDefault()\r\n\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"stringToBoolean\"\r\n})\r\nexport class stringToBooleanPipe implements PipeTransform {\r\n transform(value: string): boolean {\r\n return Boolean(value)\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"formatTime\"\r\n})\r\nexport class FormatTimePipe implements PipeTransform {\r\n transform(value: number): string {\r\n const minutes: number = Math.floor(value / 60);\r\n return (\r\n (\"00\" + minutes).slice(-2) +\r\n \":\" +\r\n (\"00\" + Math.floor(value - minutes * 60)).slice(-2)\r\n );\r\n }\r\n}\r\n","// export * from './ar.directive';\r\n// export * from './en.directive';\r\nexport * from './id.validator';\r\nexport * from './text.directive';\r\nexport * from './string-to-boolean.pipe';\r\nexport * from './timer.pipe';\r\n// export * from './currency.directive';\r\n","export const RegexPatterns = {\r\n email: '^[a-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$', // Email validation\r\n };","/*\r\n * Public API Surface of bpm-core\r\n */\r\nimport { InjectionToken } from '@angular/core';\r\nimport {MyLibConfig} from \"./lib/interfaces/shared.interface\";\r\n\r\nexport * from './lib/app/app.component';\r\nexport * from './lib/components/shared-components';\r\nexport * from './lib/components/app-component-sections';\r\nexport * from './lib/pipes';\r\nexport * from './lib/i18n';\r\nexport * from './lib/constants';\r\nexport * from './lib/interfaces';\r\nexport * from './lib/hooks';\r\nexport * from './lib/functions';\r\nexport * from './lib/validators';\r\nexport * from './lib/services';\r\nexport * from './lib/regex';\r\nexport * from './lib/directives/input-map-filter';\r\n\r\nexport const MY_LIB_CONFIG_TOKEN = new InjectionToken<MyLibConfig>('MyLibConfig');\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["coreEn.default","coreAr.default","constants.TARGET_SERVER_DP","constants.HTTP_METHOD_GET","constants.STATE_NAME_DP_GET_FEEDBACK","constants.HTTP_METHOD_POST","constants.SERVICE_NAME_DP_CREATE_FEEDBACK","constants.HTTP_METHOD_PUT","constants.SERVICE_NAME_DP_UPDATE_FEEDBACK","constants.TARGET_SERVER_WM","constants.SERVICE_NAME_WM_FORM","constants.SERVICE_NAME_DP_SEARCH_EMPLOYEE","constants.HEADER_CONTENT_TYPE_FORM","constants.WM_ACTION_SAVE_CHANGES","constants.SERVICE_NAME_WM_DRAFT_FORM","constants.SECTION_ID_REQUEST_DETAILS","constants.SECTION_STATUS_PENDING","constants.NO_VALUE","constants.TRUE_STRING","constants.TRUE_BOOL","constants.FALSE_STRING","constants.FALSE_BOOL","constants.IGATE_STATIC_ASSET_PROFILE_PHOTO_URL","constants.DONT_SHOW","constants.READ_ONLY","constants.HAS_COMMENTS","constants.NO_COMMENTS","constants.FORM_STATUS_SEND_BACK","constants.SECTION_ID_APPROVAL_PARTIAL_NAME","constants.SERVICE_NAME_DP_UPDATE_INBOX_ITEM","constants.STATE_MACHINE_ACTION_SUCCESS_INBOX_ITEM","constants.WORKFLOW_ITEMS","constants.STATE_MACHINE_ACTION_LOAD_HISTORY","constants.SERVICE_NAME_DP_INBOX_ITEM","constants.STATE_MACHINE_ACTION_GET_INBOX_ITEM","constants.APPROVERS","constants.STATE_MACHINE_ACTION_SUCCESS_RESPONSE","constants.INBOX_STATUS_SENT","constants.INBOX_STATUS_PENDING","i1","i2.CoreI18nService","i1.CoreI18nService","i1.CoreService","i2","i3","i4","i5","i6.MycurrencyPipe","i7","i1.ActionStateService","en.default","ar.default","i1.FormLabelComponent","i2.ValidationErrorsComponent","i5.TranslatePipe","i2.FormLabelComponent","i3.ValidationErrorsComponent","i4.InfoItemComponent","i6.TranslatePipe","YEAR_ONLY_FORMAT","i5.FormLabelComponent","i6.ValidationErrorsComponent","i7.InfoItemComponent","i8","i9","i10.TranslatePipe","i3.InfoItemComponent","i1.MycurrencyPipe","i6","i4.FormLabelComponent","i5.ValidationErrorsComponent","i6.InfoItemComponent","i7.TranslatePipe","MatOption","MatError","MatFormField","i2.InfoItemComponent","i1.SidenavService","Constants.FORM_STATUS_REJECTED","Constants.FORM_STATUS_CANCELLED","Constants.FORM_STATUS_PENDING","constants.FORM_STATUS_REJECT","constants.FORM_STATUS_CANCEL","Constants.FEEDBACK_STATUS_REQUEST","Constants.FEEDBACK_STATUS_WAITING","Constants.FEEDBACK_STATUS_RESPOND","Constants.FEEDBACK_STATUS_RESPONDED","Constants.NO_VALUE","i2.SidenavService","i2.CoreService","StatusMap","Constants.FORM_STATUS_REJECT","Constants.SECTION_STATUS_UNSATISFIED","Constants.FORM_STATUS_CANCEL","i1.FeedBackService","Constants.FORM_STATUS_COMPLETED","Constants.FORM_STATUS_APPROVED","Constants.LOGOUT_URL","Constants.SECTION_ID_REQUEST_DETAILS","Constants.SECTION_ID_APPROVAL_PARTIAL_NAME","i1.I18nService","i1.SegmentDynamicLoaderService","i3.SidenavService","i3.CoreI18nService","i3.CoreService"],"mappings":"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"}