monkey-style-guide 21.2.12 → 21.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/scss/partials/_breakpoints.scss +20 -4
- package/fesm2022/monkey-style-guide.mjs +933 -1977
- package/fesm2022/monkey-style-guide.mjs.map +1 -1
- package/monkey-style-guide-21.2.13.tgz +0 -0
- package/package.json +1 -1
- package/types/monkey-style-guide.d.ts +178 -429
- package/monkey-style-guide-21.2.12.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monkey-style-guide.mjs","sources":["../../../projects/monkey-style-guide/src/utils/id-generator.ts","../../../projects/monkey-style-guide/src/utils/utils.ts","../../../projects/monkey-style-guide/src/utils/icon.ts","../../../projects/monkey-style-guide/src/lib/components/accordion/accordion.component.ts","../../../projects/monkey-style-guide/src/lib/components/accordion/accordion.component.html","../../../projects/monkey-style-guide/src/lib/components/accordion/index.ts","../../../projects/monkey-style-guide/src/lib/components/action-bar/action-bar.component.ts","../../../projects/monkey-style-guide/src/lib/components/action-bar/index.ts","../../../projects/monkey-style-guide/src/lib/components/alert/alert.component.ts","../../../projects/monkey-style-guide/src/lib/components/alert/alert.component.html","../../../projects/monkey-style-guide/src/lib/components/alert/index.ts","../../../projects/monkey-style-guide/src/lib/tokens/index.ts","../../../projects/monkey-style-guide/src/lib/directives/popover.ts","../../../projects/monkey-style-guide/src/lib/services/address.service.ts","../../../projects/monkey-style-guide/src/lib/services/dictionary.service.ts","../../../projects/monkey-style-guide/src/lib/services/stepper.service.ts","../../../projects/monkey-style-guide/src/lib/components/button/button.component.ts","../../../projects/monkey-style-guide/src/lib/components/button/button.component.html","../../../projects/monkey-style-guide/src/lib/components/button/index.ts","../../../projects/monkey-style-guide/src/lib/components/toast/toast.component.ts","../../../projects/monkey-style-guide/src/lib/components/toast/toast.component.html","../../../projects/monkey-style-guide/src/lib/components/toast/index.ts","../../../projects/monkey-style-guide/src/lib/interfaces/toast.ts","../../../projects/monkey-style-guide/src/lib/interfaces/index.ts","../../../projects/monkey-style-guide/src/lib/services/toast.service.ts","../../../projects/monkey-style-guide/src/lib/services/index.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field-control.ts","../../../projects/monkey-style-guide/src/lib/directives/display.ts","../../../projects/monkey-style-guide/src/lib/directives/error.ts","../../../projects/monkey-style-guide/src/lib/directives/helper.ts","../../../projects/monkey-style-guide/src/lib/directives/info.ts","../../../projects/monkey-style-guide/src/lib/directives/label.ts","../../../projects/monkey-style-guide/src/lib/directives/prefix.ts","../../../projects/monkey-style-guide/src/lib/directives/suffix.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/utils.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field.component.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field.component.html","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field.module.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/index.ts","../../../projects/monkey-style-guide/src/lib/components/option/option.component.ts","../../../projects/monkey-style-guide/src/lib/components/option/index.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete/autocomplete.component.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete/index.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete-address/autocomplete-address.component.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete-address/index.ts","../../../projects/monkey-style-guide/src/lib/components/avatar/avatar.component.ts","../../../projects/monkey-style-guide/src/lib/components/avatar/avatar.component.html","../../../projects/monkey-style-guide/src/lib/components/avatar/index.ts","../../../projects/monkey-style-guide/src/lib/components/badge/badge.component.ts","../../../projects/monkey-style-guide/src/lib/components/badge/badge.component.html","../../../projects/monkey-style-guide/src/lib/components/badge/index.ts","../../../projects/monkey-style-guide/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/monkey-style-guide/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/monkey-style-guide/src/lib/components/breadcrumb/index.ts","../../../projects/monkey-style-guide/src/lib/components/checkbox/checkbox.component.ts","../../../projects/monkey-style-guide/src/lib/components/checkbox/checkbox.component.html","../../../projects/monkey-style-guide/src/lib/components/checkbox/index.ts","../../../projects/monkey-style-guide/src/lib/components/input/input-currency.directive.ts","../../../projects/monkey-style-guide/src/lib/components/input/validators.ts","../../../projects/monkey-style-guide/src/lib/components/input/input.directive.ts","../../../projects/monkey-style-guide/src/lib/components/input/input.module.ts","../../../projects/monkey-style-guide/src/lib/components/input/index.ts","../../../projects/monkey-style-guide/src/lib/components/icon-button/icon-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/icon-button/icon-button.component.html","../../../projects/monkey-style-guide/src/lib/components/icon-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/utils.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/month/month.component.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/month/month.component.html","../../../projects/monkey-style-guide/src/lib/components/date-range/month/index.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/quick-actions/quick-actions.component.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/quick-actions/quick-actions.component.html","../../../projects/monkey-style-guide/src/lib/components/date-range/quick-actions/index.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/date-range.component.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/date-range.component.html","../../../projects/monkey-style-guide/src/lib/components/date-range/index.ts","../../../projects/monkey-style-guide/src/lib/components/divider/divider.component.ts","../../../projects/monkey-style-guide/src/lib/components/divider/index.ts","../../../projects/monkey-style-guide/src/lib/components/download-button/download-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/download-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-bar.service.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/complex-filter-bar.component.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/index.ts","../../../projects/monkey-style-guide/src/lib/components/radio-button/radio-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/radio-button/radio-button.component.html","../../../projects/monkey-style-guide/src/lib/components/radio-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-bar.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-config.interface.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/index.ts","../../../projects/monkey-style-guide/src/lib/components/scrollbar/scrollbar.component.ts","../../../projects/monkey-style-guide/src/lib/components/scrollbar/scrollbar.component.html","../../../projects/monkey-style-guide/src/lib/components/scrollbar/index.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/filter-chip.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/filter-chip.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/filter-menu.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/filter-menu.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/filter-menu-item.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/filter-menu-item.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/anchored-menu.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/filter-segment.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/filter-segment.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/filter-trigger.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/filter-trigger.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/flip.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/first-paint.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/filter-bar-v2.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/filter-bar-v2.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar-v2/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-code/input-code.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-code/input-code.component.html","../../../projects/monkey-style-guide/src/lib/components/input-code/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-date-range/input-date-range.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-date-range/index.ts","../../../projects/monkey-style-guide/src/lib/components/select/select.component.ts","../../../projects/monkey-style-guide/src/lib/components/select/select.component.html","../../../projects/monkey-style-guide/src/lib/components/select/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-phone/input-phone.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-phone/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-upload/input-upload.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-upload/index.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/actions.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/content.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/subtitle.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/title.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal-config.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal-ref.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal.component.ts","../../../projects/monkey-style-guide/src/lib/components/modal/utils.ts","../../../projects/monkey-style-guide/src/lib/components/modal/components/confirmation.component.ts","../../../projects/monkey-style-guide/src/lib/components/modal/components/default.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal.module.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal.service.ts","../../../projects/monkey-style-guide/src/lib/components/modal/index.ts","../../../projects/monkey-style-guide/src/lib/components/pass-number/pass-number.component.ts","../../../projects/monkey-style-guide/src/lib/components/pass-number/pass-secret-number.component.ts","../../../projects/monkey-style-guide/src/lib/components/pass-number/index.ts","../../../projects/monkey-style-guide/src/lib/components/security-level/security-level.component.ts","../../../projects/monkey-style-guide/src/lib/components/security-level/security-level.component.html","../../../projects/monkey-style-guide/src/lib/components/security-level/index.ts","../../../projects/monkey-style-guide/src/lib/components/status/status.component.ts","../../../projects/monkey-style-guide/src/lib/components/status/status.component.html","../../../projects/monkey-style-guide/src/lib/components/status/index.ts","../../../projects/monkey-style-guide/src/lib/components/stepper/step/step.component.ts","../../../projects/monkey-style-guide/src/lib/components/stepper/stepper.component.ts","../../../projects/monkey-style-guide/src/lib/components/stepper/stepper.module.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-action/pagination-action.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-action/pagination-action.html","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-label/pagination-label.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-label/pagination-label.html","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-size/pagination-size.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-size/pagination-size.html","../../../projects/monkey-style-guide/src/lib/components/table/table-column.directive.ts","../../../projects/monkey-style-guide/src/lib/components/table/table-core.ts","../../../projects/monkey-style-guide/src/lib/components/table/table-virtual-scroll.ts","../../../projects/monkey-style-guide/src/lib/components/table/table.component.ts","../../../projects/monkey-style-guide/src/lib/components/table/table.component.html","../../../projects/monkey-style-guide/src/lib/components/table/index.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tab-link.directive.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tab.component.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tabs.component.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tabs.module.ts","../../../projects/monkey-style-guide/src/lib/components/toggle/toggle.component.ts","../../../projects/monkey-style-guide/src/lib/components/toggle/toggle.component.html","../../../projects/monkey-style-guide/src/lib/components/toggle/index.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line-button/toggle-line-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line-button/toggle-line-button.component.html","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line.component.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line.component.html","../../../projects/monkey-style-guide/src/lib/components/toggle-line/index.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip/tooltip.component.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip/tooltip.component.html","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip/index.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/index.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile/user-profile.component.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile/index.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile-button/user-profile-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/index.ts","../../../projects/monkey-style-guide/src/lib/directives/badge.ts","../../../projects/monkey-style-guide/src/lib/directives/form.ts","../../../projects/monkey-style-guide/src/public-api.ts","../../../projects/monkey-style-guide/src/monkey-style-guide.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\nconst counters: Record<string, number> = {};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class IdGenerator {\r\n getId(prefix: string): string {\r\n if (!Object.prototype.hasOwnProperty.call(counters, prefix)) {\r\n counters[prefix] = 1;\r\n }\r\n\r\n const currentCount = counters[prefix];\r\n counters[prefix] = currentCount + 1;\r\n\r\n return `${prefix}${currentCount}`;\r\n }\r\n}\r\n","export function getRandomString(len: number, charSet?: string): string {\r\n charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n\r\n return new Array(len)\r\n .fill('1')\r\n .map(() => {\r\n return charSet?.charAt(Math.floor(Math.random() * charSet.length));\r\n })\r\n .join('');\r\n}\r\n\r\nexport const objHaveProperty = (obj: object, property: string): boolean => {\r\n return typeof obj === 'object' && obj !== null && property in obj;\r\n};\r\n\r\nexport function formatFileSize(bytes: number): string {\r\n if (bytes === 0) return '0 Bytes';\r\n\r\n const k = 1024;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n\r\n return `${parseFloat((bytes / k ** i).toFixed(2))} ${sizes[i]}`;\r\n}\r\n\r\nexport function getFileExtension(filename: string) {\r\n const name = filename.toLowerCase();\r\n const lastDotIndex = name.lastIndexOf('.');\r\n return lastDotIndex === -1 ? '' : name.slice(lastDotIndex + 1);\r\n}\r\n\r\nexport function sanitizeString(input: string): string {\r\n return input\r\n .replace(/<script.*?>.*?<\\/script>/gi, '')\r\n .replace(/on\\w+=\"[^\"]*\"/gi, '')\r\n .replace(/on\\w+='[^']*'/gi, '')\r\n .replace(/javascript:/gi, '')\r\n .replace(/<\\/?[^>]+>/gi, '')\r\n .trim();\r\n}\r\n\r\nexport function normalizeStringToSearch(text: string): string {\r\n return text\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n .toLowerCase();\r\n}\r\n\r\nexport function shuffle<T>(array: T[]): T[] {\r\n for (let i = array.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [array[i], array[j]] = [array[j], array[i]];\r\n }\r\n return array;\r\n}\r\n","/* eslint-disable max-len */\r\nimport { Component, input } from '@angular/core';\r\n\r\ntype IconName =\r\n | 'clear'\r\n | 'calendar'\r\n | 'arrowDown'\r\n | 'arrowRight'\r\n | 'check'\r\n | 'minus'\r\n | 'loading'\r\n | 'searchFail'\r\n | 'search'\r\n | 'addPlus'\r\n | 'googleMaps'\r\n | 'location'\r\n | 'edit';\r\n\r\n@Component({\r\n selector: 'util-icon',\r\n template: `\r\n @switch (name()) {\r\n @case ('clear') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\">\r\n <path\r\n d=\"M7.815 7.277a.802.802 0 0 0-.459.349c-.103.167-.123.529-.038.694.028.055.854.906 1.836 1.89L10.939 12l-1.785 1.79c-.982.985-1.808 1.835-1.836 1.89a.926.926 0 0 0-.051.324c0 .494.414.812.922.707.183-.038.266-.114 2.001-1.844L12 13.062l1.81 1.805c1.731 1.725 1.818 1.806 2 1.844.58.12 1.021-.321.901-.901-.038-.182-.119-.269-1.844-2L13.062 12l1.805-1.81c1.73-1.735 1.806-1.818 1.844-2.001.105-.508-.213-.922-.707-.922a.926.926 0 0 0-.324.051c-.055.028-.905.854-1.89 1.836L12 10.939l-1.79-1.785c-.984-.982-1.826-1.803-1.87-1.825a.99.99 0 0 0-.525-.052\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('calendar') {\r\n <svg width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M7.815 1.277a.8.8 0 0 0-.462.354c-.087.139-.094.198-.107.875l-.013.725-1.347.019c-1.236.018-1.371.026-1.646.107A2.807 2.807 0 0 0 2.352 5.26l-.092.32v13.84l.092.32a2.797 2.797 0 0 0 1.908 1.908l.32.092h14.84l.32-.092a2.797 2.797 0 0 0 1.908-1.908l.092-.32V5.58l-.092-.32a2.807 2.807 0 0 0-1.888-1.903c-.276-.081-.41-.089-1.65-.107l-1.35-.019v-.593c0-.757-.042-.96-.238-1.156-.349-.349-.903-.279-1.169.149-.087.139-.094.198-.107.879l-.014.73H8.76l-.001-.61c-.001-.68-.039-.91-.179-1.094-.159-.209-.502-.325-.765-.259M7.246 5.49c.013.681.02.74.107.879.357.574 1.223.443 1.363-.207.024-.113.044-.475.044-.804V4.76h6.472l.014.73c.013.681.02.74.107.879.357.574 1.223.443 1.363-.207.024-.113.044-.475.044-.804V4.76h1.238c1.452 0 1.525.014 1.876.366.352.351.366.424.366 1.876V8.24H3.756l.012-1.31c.012-1.277.014-1.314.104-1.482.155-.29.475-.562.768-.651.055-.016.661-.032 1.346-.034l1.246-.003.014.73m12.994 9.008c0 4.664-.001 4.742-.081 4.956-.109.29-.415.596-.705.705-.215.08-.28.081-7.454.081-7.159 0-7.239-.001-7.453-.081-.245-.091-.544-.363-.679-.615l-.088-.164-.011-4.81-.01-4.81H20.24v4.738M6.7 12.028a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m5 0a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m5 0a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m-10 4a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m5 0a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('arrowDown') {\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M8 10L12 14L16 10\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('arrowRight') {\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M19 12H5\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14 17L19 12\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14 7L19 12\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('check') {\r\n <svg\r\n width=\"12\"\r\n height=\"12\"\r\n viewBox=\"0 0 12 12\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M9.808 2.528 C 9.752 2.542,9.671 2.574,9.628 2.599 C 9.585 2.625,8.414 3.781,7.025 5.168 L 4.500 7.690 3.475 6.667 C 2.865 6.059,2.414 5.624,2.360 5.594 C 2.137 5.467,1.822 5.478,1.603 5.620 C 1.226 5.863,1.141 6.369,1.419 6.715 C 1.558 6.887,4.068 9.375,4.140 9.411 C 4.366 9.525,4.634 9.525,4.860 9.411 C 4.931 9.376,10.438 3.892,10.581 3.715 C 10.688 3.582,10.742 3.425,10.742 3.250 C 10.742 2.758,10.293 2.410,9.808 2.528 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-theme-contrast-500\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('minus') {\r\n <svg width=\"8\" height=\"2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M1.333 0.268 C 1.300 0.274,1.225 0.303,1.167 0.332 C 1.054 0.388,0.939 0.490,0.866 0.599 C 0.776 0.732,0.732 0.936,0.757 1.098 C 0.786 1.283,0.848 1.405,0.977 1.532 C 1.071 1.624,1.148 1.673,1.253 1.710 L 1.340 1.740 4.000 1.740 L 6.660 1.740 6.747 1.710 C 6.943 1.642,7.128 1.462,7.200 1.270 C 7.265 1.095,7.265 0.904,7.200 0.730 C 7.118 0.510,6.880 0.308,6.655 0.267 C 6.565 0.250,1.420 0.251,1.333 0.268\"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-theme-contrast-500\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('loading') {\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <style>\r\n .spinner_ajPY {\r\n transform-origin: center;\r\n animation: spinner_AtaB 0.75s infinite linear;\r\n }\r\n @keyframes spinner_AtaB {\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n </style>\r\n <path\r\n d=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\"\r\n opacity=\".25\"\r\n />\r\n <path\r\n d=\"M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z\"\r\n class=\"spinner_ajPY\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('searchFail') {\r\n <svg width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n clip-rule=\"evenodd\"\r\n d=\"M18.934 11.467v0c0 4.124-3.343 7.467-7.467 7.467v0C7.343 18.934 4 15.591 4 11.467v0C4 7.343 7.343 4 11.467 4v0c4.124 0 7.467 3.343 7.467 7.467Z\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"m20 20-3.25-3.25M13.815 9.11914 9.119 13.8151M13.815 13.8151 9.119 9.11914\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('search') {\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M6.920 1.521 C 4.175 1.717,1.944 3.809,1.558 6.548 C 1.500 6.965,1.500 7.722,1.558 8.120 C 1.945 10.745,3.921 12.721,6.547 13.108 C 6.735 13.136,7.016 13.152,7.333 13.152 C 7.885 13.152,8.225 13.111,8.738 12.985 C 9.504 12.797,10.253 12.439,10.859 11.972 C 10.972 11.885,11.074 11.813,11.085 11.813 C 11.097 11.813,11.677 12.384,12.373 13.082 C 13.070 13.779,13.691 14.381,13.754 14.418 C 14.182 14.673,14.673 14.182,14.418 13.754 C 14.381 13.691,13.779 13.070,13.082 12.373 C 12.384 11.677,11.813 11.097,11.813 11.085 C 11.813 11.074,11.885 10.972,11.972 10.859 C 12.439 10.253,12.797 9.504,12.985 8.738 C 13.111 8.225,13.152 7.885,13.152 7.333 C 13.152 6.782,13.111 6.441,12.985 5.928 C 12.471 3.841,10.826 2.196,8.738 1.681 C 8.150 1.536,7.501 1.479,6.920 1.521 M8.277 2.586 C 10.023 2.962,11.414 4.208,11.943 5.870 C 12.118 6.421,12.145 6.615,12.145 7.333 C 12.145 8.052,12.118 8.246,11.943 8.797 C 11.473 10.272,10.272 11.473,8.797 11.943 C 8.246 12.118,8.052 12.145,7.333 12.145 C 6.615 12.145,6.421 12.118,5.870 11.943 C 4.394 11.473,3.193 10.272,2.724 8.797 C 2.547 8.242,2.521 8.052,2.522 7.333 C 2.522 6.615,2.549 6.419,2.724 5.870 C 3.244 4.236,4.636 2.971,6.320 2.602 C 6.679 2.523,6.858 2.510,7.440 2.520 C 7.898 2.527,8.066 2.540,8.277 2.586 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('addPlus') {\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M11.340 2.281 C 7.073 2.553,3.439 5.660,2.499 9.840 C 2.187 11.227,2.187 12.773,2.499 14.160 C 3.317 17.797,6.203 20.683,9.840 21.501 C 11.233 21.814,12.770 21.813,14.176 21.498 C 17.465 20.759,20.161 18.310,21.244 15.076 C 21.795 13.432,21.887 11.556,21.501 9.840 C 20.683 6.203,17.797 3.317,14.160 2.499 C 13.288 2.303,12.254 2.223,11.340 2.281 M12.961 3.802 C 14.493 3.991,16.079 4.659,17.184 5.581 C 18.160 6.395,18.877 7.297,19.404 8.374 C 19.982 9.557,20.240 10.675,20.240 12.000 C 20.240 12.966,20.126 13.689,19.834 14.584 C 18.848 17.602,16.153 19.804,12.961 20.198 C 12.525 20.252,11.475 20.252,11.039 20.198 C 9.507 20.009,7.921 19.341,6.816 18.419 C 5.826 17.593,5.138 16.728,4.598 15.626 C 4.019 14.448,3.760 13.327,3.760 12.000 C 3.760 10.673,4.019 9.552,4.598 8.374 C 5.044 7.464,5.564 6.750,6.285 6.058 C 7.568 4.824,9.221 4.032,10.984 3.806 C 11.379 3.755,12.563 3.753,12.961 3.802 M11.815 7.277 C 11.638 7.321,11.461 7.456,11.353 7.631 L 11.260 7.780 11.248 9.508 L 11.236 11.236 9.505 11.248 L 7.774 11.260 7.612 11.367 C 7.372 11.526,7.267 11.721,7.267 12.007 C 7.267 12.203,7.286 12.270,7.383 12.408 C 7.447 12.499,7.572 12.610,7.660 12.656 C 7.814 12.737,7.886 12.740,9.528 12.752 L 11.236 12.764 11.248 14.492 L 11.260 16.220 11.353 16.369 C 11.710 16.943,12.576 16.812,12.716 16.162 C 12.744 16.031,12.760 15.374,12.760 14.358 L 12.760 12.760 14.358 12.760 C 15.374 12.760,16.031 12.744,16.162 12.716 C 16.904 12.557,16.924 11.471,16.189 11.286 C 16.064 11.255,15.479 11.240,14.382 11.240 L 12.760 11.240 12.759 9.630 C 12.758 8.669,12.741 7.948,12.717 7.841 C 12.623 7.432,12.215 7.177,11.815 7.277 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('googleMaps') {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n width=\"120\"\r\n height=\"22\"\r\n viewBox=\"0 0 264.6 50.86\"\r\n >\r\n <path\r\n d=\"M9.835 37.67a51.38 51.38 0 0 1 4.007 5.91c1.022 1.938 1.448 3.252 2.195 5.587.458 1.29.872 1.675 1.762 1.675.97 0 1.41-.655 1.75-1.668.706-2.205 1.26-3.888 2.134-5.478 1.715-3.07 3.846-5.798 5.94-8.42.567-.742 4.232-5.065 5.882-8.476 0 0 2.028-3.747 2.028-8.98 0-4.895-2-8.29-2-8.29l-5.758 1.542-3.497 9.21-.865 1.27-.173.23-.23.288-.404.46-.577.577-3.114 2.537-7.785 4.495z\"\r\n fill=\"#34a853\"\r\n />\r\n <path\r\n d=\"M1.8 26.17c1.9 4.34 5.564 8.155 8.043 11.503L23.01 22.076s-1.855 2.426-5.22 2.426c-3.748 0-6.776-2.993-6.776-6.767 0-2.588 1.557-4.366 1.557-4.366l-8.938 2.395z\"\r\n fill=\"#fbbc04\"\r\n />\r\n <path\r\n d=\"M23.157.792c4.373 1.41 8.116 4.37 10.38 8.735l-10.523 12.54s1.557-1.81 1.557-4.382c0-3.862-3.252-6.747-6.765-6.747-3.322 0-5.23 2.422-5.23 2.422v-7.9z\"\r\n fill=\"#4285f4\"\r\n />\r\n <path\r\n d=\"M4.212 6.333C6.824 3.208 11.42-.01 17.756-.01c3.074 0 5.39.807 5.39.807l-10.58 12.57H5.07z\"\r\n fill=\"#1a73e8\"\r\n />\r\n <path\r\n d=\"M1.8 26.17S.052 22.747.052 17.788c0-4.687 1.822-8.784 4.16-11.455l8.36 7.035z\"\r\n fill=\"#ea4335\"\r\n />\r\n <g fill=\"#767676\">\r\n <path\r\n d=\"M181.68 41.235V14.508h3.434l9.295 16.275h.15l9.295-16.275h3.434v26.727h-3.434V25.37l.15-4.48h-.15l-8.36 14.67h-2.015l-8.36-14.67h-.15l.15 4.48v15.864zm35.648.56c-1.94 0-3.565-.56-4.87-1.68s-1.96-2.6-1.96-4.442c0-2 .77-3.552 2.314-4.685s3.446-1.698 5.7-1.698c2.016 0 3.67.373 4.965 1.12v-.523c0-1.344-.46-2.42-1.38-3.228s-2.053-1.213-3.398-1.213c-.995 0-1.896.236-2.705.7s-1.362 1.12-1.66 1.94l-3.136-1.343c.423-1.095 1.257-2.1 2.5-3.042s2.886-1.4 4.927-1.4c2.34 0 4.28.685 5.823 2.053s2.314 3.298 2.314 5.787V41.2h-3.284v-2.54h-.15c-1.37 2.1-3.373 3.135-6 3.135zm.56-3.135c1.418 0 2.705-.53 3.863-1.586s1.736-2.3 1.736-3.75c-.97-.797-2.426-1.195-4.367-1.195-1.668 0-2.925.36-3.77 1.083s-1.27 1.568-1.27 2.538c0 .896.386 1.605 1.157 2.128s1.655.784 2.65.784zm21.742 3.135c-1.393 0-2.644-.3-3.75-.896s-1.935-1.344-2.48-2.24h-.15l.15 2.538v8.063h-3.434V22.908h3.286v2.538h.15c.547-.896 1.374-1.642 2.48-2.24s2.358-.896 3.75-.896c2.364 0 4.405.933 6.122 2.8s2.576 4.18 2.576 6.943-.86 5.077-2.576 6.943-3.758 2.8-6.122 2.8zm-.56-3.135c1.593 0 2.96-.604 4.106-1.8s1.717-2.806 1.717-4.797-.572-3.6-1.717-4.797-2.514-1.8-4.106-1.8c-1.617 0-2.993.597-4.125 1.792s-1.697 2.8-1.697 4.815.566 3.62 1.697 4.815 2.507 1.792 4.125 1.792zm18.385 3.135c-2.04 0-3.726-.498-5.058-1.493s-2.3-2.24-2.93-3.733l3.06-1.27c.97 2.3 2.626 3.433 4.966 3.433 1.07 0 1.948-.236 2.632-.7s1.027-1.095 1.027-1.866c0-1.194-.834-2.004-2.502-2.426l-3.695-.895c-1.17-.298-2.277-.865-3.322-1.698s-1.568-1.96-1.568-3.377c0-1.617.715-2.93 2.146-3.94s3.13-1.512 5.095-1.512c1.617 0 3.06.367 4.33 1.1a6.21 6.21 0 0 1 2.725 3.154l-2.987 1.232c-.67-1.617-2.065-2.426-4.18-2.426-1.02 0-1.88.212-2.575.634s-1.045.996-1.045 1.718c0 1.045.8 1.754 2.426 2.128l3.62.858c1.717.398 2.986 1.083 3.807 2.053s1.232 2.066 1.232 3.286c0 1.642-.672 3-2.016 4.106s-3.073 1.642-5.2 1.642zM79.916 25.3H65.83v4.18h10c-.493 5.86-5.37 8.36-9.973 8.36a10.98 10.98 0 0 1-11.029-11.128c0-6.327 4.898-11.2 11.04-11.2 4.74 0 7.53 3.022 7.53 3.022l2.927-3.03s-3.757-4.18-10.607-4.18c-8.723 0-15.473 7.363-15.473 15.316 0 7.792 6.35 15.393 15.696 15.393 8.22 0 14.24-5.632 14.24-13.96 0-1.756-.255-2.772-.255-2.772z\"\r\n />\r\n <use xlink:href=\"#B\" />\r\n <use xlink:href=\"#B\" x=\"21.476\" />\r\n <path\r\n d=\"M134.102 22.327c-5.305 0-9.476 4.647-9.476 9.862 0 5.94 4.834 9.88 9.383 9.88 2.813 0 4.308-1.117 5.414-2.4v1.946c0 3.405-2.068 5.445-5.2 5.445-3.015 0-4.526-2.242-5.052-3.514l-3.793 1.586c1.346 2.845 4.054 5.813 8.878 5.813 5.275 0 9.296-3.322 9.296-10.3v-17.73h-4.138v1.672c-1.272-1.37-3.012-2.265-5.32-2.265zm.384 3.87c2.602 0 5.272 2.22 5.272 6.013 0 3.856-2.665 5.98-5.33 5.98-2.828 0-5.46-2.296-5.46-5.944 0-3.8 2.732-6.05 5.518-6.05zm27.534-3.87c-5.004 0-9.207 3.98-9.207 9.857 0 6.216 4.683 9.904 9.687 9.904 4.176 0 6.74-2.285 8.268-4.332l-3.4-2.27c-.885 1.374-2.366 2.718-4.835 2.718-2.775 0-4.05-1.52-4.84-2.992l13.234-5.5-.687-1.6c-1.28-3.152-4.262-5.784-8.2-5.784zm.172 3.796c1.804 0 3.1.96 3.653 2.108l-8.838 3.694c-.38-2.86 2.328-5.802 5.186-5.802zm-15.7 15.377h4.346V12.4h-4.346z\"\r\n />\r\n </g>\r\n <defs>\r\n <path\r\n id=\"B\"\r\n d=\"M91.48 22.327c-5.78 0-9.922 4.518-9.922 9.788 0 5.348 4.018 9.95 10 9.95 5.407 0 9.836-4.132 9.836-9.836 0-6.537-5.153-9.904-9.904-9.904zm.057 3.877c2.843 0 5.536 2.298 5.536 6 0 3.624-2.683 5.99-5.55 5.99-3.15 0-5.635-2.523-5.635-6.017 0-3.418 2.455-5.972 5.648-5.972z\"\r\n />\r\n </defs>\r\n </svg>\r\n }\r\n\r\n @case ('location') {\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"var(--mecx-color-gray-900)\">\r\n <path\r\n d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7m0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('edit') {\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M5.293 15.619L15.619 5.29299C16.009 4.90299 16.642 4.90299 17.032 5.29299L18.708 6.96899C19.098 7.35899 19.098 7.99199 18.708 8.38199L8.381 18.707C8.194 18.895 7.94 19 7.675 19H5V16.325C5 16.06 5.105 15.806 5.293 15.619Z\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M13.75 7.16016L16.84 10.2502\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n }\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: flex;\r\n background-color: transparent;\r\n }\r\n `\r\n ]\r\n})\r\nexport class UtilIconComponent {\r\n name = input.required<IconName | string>();\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { booleanAttribute, Component, inject, Input, TemplateRef } from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-accordion',\r\n imports: [CommonModule, UtilIconComponent],\r\n templateUrl: './accordion.component.html',\r\n styleUrl: './accordion.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-accordion',\r\n '[class.disabled]': 'disabled',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n },\r\n animations: [\r\n trigger('content', [\r\n state(\r\n 'void',\r\n style({\r\n height: '0px'\r\n })\r\n ),\r\n transition(':enter', [\r\n animate(\r\n '300ms ease-in-out',\r\n style({\r\n height: '*'\r\n })\r\n )\r\n ]),\r\n transition(':leave', [\r\n animate(\r\n '300ms ease-in-out',\r\n style({\r\n height: '0px'\r\n })\r\n )\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class MonkeyAccordionComponent {\r\n @Input({ transform: booleanAttribute }) open = false;\r\n\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n @Input() set title(data: string | TemplateRef<any>) {\r\n if (data instanceof TemplateRef) {\r\n this.titleRef = data;\r\n } else {\r\n this.titleStr = data;\r\n }\r\n }\r\n\r\n titleStr: string | undefined;\r\n\r\n titleRef: TemplateRef<any> | undefined;\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-accordion-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n onClick() {\r\n if (this.disabled) return;\r\n this.open = !this.open;\r\n }\r\n}\r\n","<div class=\"header\" (click)=\"onClick()\">\r\n <div class=\"title\">\r\n @if (titleRef) {\r\n <ng-container *ngTemplateOutlet=\"titleRef\" />\r\n } @else {\r\n {{ titleStr }}\r\n }\r\n </div>\r\n <util-icon class=\"icon\" name=\"arrowDown\" [class.rotated]=\"open\" />\r\n</div>\r\n<div class=\"content-wrapper\">\r\n @if (open) {\r\n <div [@content]>\r\n <div class=\"content\">\r\n <ng-content />\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './accordion.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, HostBinding, inject, Input, input, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-action-bar',\r\n styleUrl: './action-bar.component.scss',\r\n template: `@if (open()) {\r\n @if (label(); as lb) {\r\n <span style=\"font-size: 13px\" data-testid=\"label\">\r\n {{ lb }}\r\n </span>\r\n }\r\n\r\n <ng-content></ng-content>\r\n }`,\r\n host: {\r\n 'data-testid': 'monkey-action-bar',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class.open]': 'open()'\r\n }\r\n})\r\nexport class MonkeyActionBarComponent {\r\n @HostBinding('class')\r\n get classes() {\r\n return this.position();\r\n }\r\n\r\n label = input<string>();\r\n\r\n position = input<string>();\r\n\r\n open = input<boolean>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-action-bar-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './action-bar.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n inject,\r\n Input,\r\n input,\r\n InputSignal,\r\n output,\r\n OutputEmitterRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { type MonkeyAlertType } from '../../interfaces';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-alert',\r\n styleUrl: './alert.component.scss',\r\n templateUrl: './alert.component.html',\r\n host: {\r\n 'data-testid': 'monkey-alert',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyAlertComponent {\r\n buttonLabel: InputSignal<string> = input('');\r\n\r\n message: InputSignal<string> = input.required<string>();\r\n\r\n title: InputSignal<string> = input.required<string>();\r\n\r\n type: InputSignal<MonkeyAlertType> = input.required<MonkeyAlertType>();\r\n\r\n onButtonClicked: OutputEmitterRef<void> = output<void>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-alert-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n icon(type: MonkeyAlertType): string {\r\n const typeIcons = {\r\n alert: 'warning-outline',\r\n default: 'info',\r\n error: 'error-outline',\r\n info: 'info',\r\n success: 'checkmark-big-circle'\r\n };\r\n\r\n return typeIcons[type];\r\n }\r\n}\r\n","<div [class]=\"'monkey-alert__card ' + type()\">\r\n @if (type()) {\r\n <i class=\"mk-i mk-i-{{icon(type())}} {{'monkey-alert__card__type-' + type()}}\"></i>\r\n }\r\n <div class=\"monkey-alert__card__content\">\r\n <h4 class=\"monkey-alert__card__title\">{{ title() }}</h4>\r\n <h5 class=\"monkey-alert__card__message\">{{ message() }}</h5>\r\n @if (buttonLabel()) {\r\n <div>\r\n <a\r\n href=\"javascript:void(0)\"\r\n class=\"mecx-link fw-medium fs-base\"\r\n (click)=\"onButtonClicked.emit()\"\r\n >\r\n <span>{{ buttonLabel() }}</span>\r\n </a>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './alert.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { inject, InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport const MECX_I18N_WRAPPER = new InjectionToken<BehaviorSubject<string>>('');\r\nexport const MECX_POPOVER_OPTIONS = new InjectionToken('MECX_POPOVER_OPTIONS');\r\nexport const MECX_COUNTRY_ISO_CODE = new InjectionToken<string>('BR');\r\nexport const MECX_GOOGLE_API_KEY = new InjectionToken<string>('');\r\n\r\nexport function injectTokenWithWarning<T>(token: InjectionToken<T>, name?: string): T | null {\r\n const value = inject(token, { optional: true });\r\n if (!value) {\r\n // eslint-disable-next-line no-console\r\n console.error(`MECXInjectors -> Token \"${name || token.toString()}\" is not provided.`);\r\n }\r\n return value;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ConnectedPosition,\r\n FlexibleConnectedPositionStrategy,\r\n FlexibleConnectedPositionStrategyOrigin,\r\n Overlay,\r\n OverlayPositionBuilder,\r\n OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n booleanAttribute,\r\n Component,\r\n ComponentRef,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n inject,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { filter } from 'rxjs';\r\nimport { UtilIconComponent } from '../../utils';\r\nimport { MonkeyPopoverDir, MonkeyPopoverOptions } from '../interfaces';\r\nimport { MECX_POPOVER_OPTIONS } from '../tokens';\r\n\r\n@Component({\r\n selector: 'monkey-popover-content',\r\n imports: [CommonModule, NgTemplateOutlet, UtilIconComponent],\r\n template: `\r\n <div class=\"mecx-popover-container\">\r\n @if (!hideHeader) {\r\n <div class=\"mecx-popover-header\">\r\n @if (title) {\r\n <div>\r\n @if (isTemplate(title)) {\r\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\r\n } @else {\r\n {{ title }}\r\n }\r\n </div>\r\n }\r\n\r\n @if (!hideClose) {\r\n <util-icon class=\"mecx-popover-close\" name=\"clear\" (click)=\"onClose.next(null)\" />\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"mecx-popover-content\" [class.add-radius]=\"hideHeader\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </div>\r\n\r\n @if (!hideActions) {\r\n @if (actions) {\r\n <div class=\"mecx-popover-actions\">\r\n @if (isTemplate(actions)) {\r\n <ng-container *ngTemplateOutlet=\"actions\"></ng-container>\r\n } @else {\r\n <span>{{ actions }}</span>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n `\r\n})\r\nexport class MonkeyPopoverContentComponent implements AfterViewInit {\r\n @Input() title?: string | TemplateRef<any>;\r\n\r\n @Input() content!: TemplateRef<any>;\r\n\r\n @Input() actions?: string | TemplateRef<any>;\r\n\r\n @Output() onClose = new EventEmitter();\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideHeader!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideClose!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideActions!: boolean;\r\n\r\n @Input()\r\n enableAutofocus = false;\r\n\r\n constructor(private host: ElementRef<HTMLElement>) {\r\n // not to do\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.enableAutofocus) {\r\n setTimeout(() => {\r\n const focusable = this.host.nativeElement.querySelector<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n focusable?.focus();\r\n });\r\n }\r\n }\r\n\r\n isTemplate(value: unknown): value is TemplateRef<any> {\r\n return value instanceof TemplateRef;\r\n }\r\n}\r\n\r\ntype HorizontalPosition = 'start' | 'center' | 'end';\r\ntype VerticalPosition = 'top' | 'center' | 'bottom';\r\n\r\n@Directive({\r\n selector: '[monkeyPopover]'\r\n})\r\nexport class MonkeyPopoverDirective implements OnDestroy {\r\n private readonly _tpl = inject(TemplateRef);\r\n\r\n private readonly _vcr = inject(ViewContainerRef);\r\n\r\n private readonly _el = inject(ElementRef);\r\n\r\n private readonly _zone = inject(NgZone);\r\n\r\n private readonly _overlay = inject(Overlay);\r\n\r\n private readonly _overlayPositionBuilder = inject(OverlayPositionBuilder);\r\n\r\n private readonly _router = inject(Router);\r\n\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n @Optional() @Inject(MECX_POPOVER_OPTIONS) private readonly _options?: MonkeyPopoverOptions;\r\n\r\n private _overlayRef?: OverlayRef;\r\n\r\n private _componentRef?: ComponentRef<MonkeyPopoverContentComponent>;\r\n\r\n private _positionStrategy?: FlexibleConnectedPositionStrategy;\r\n\r\n private _resizeObserver?: ResizeObserver;\r\n\r\n private _show = false;\r\n\r\n @Input('monkeyPopover')\r\n set popover(show: boolean) {\r\n if (this._show === show) {\r\n return;\r\n }\r\n this._show = show;\r\n if (show) {\r\n setTimeout(() => {\r\n this.createPopover();\r\n }, 0);\r\n } else {\r\n this.disposePopover();\r\n }\r\n }\r\n\r\n get popover(): boolean {\r\n return this._show;\r\n }\r\n\r\n @Input('monkeyPopoverClosed')\r\n closed?: (e?: MouseEvent) => void;\r\n\r\n private _target?: HTMLElement;\r\n\r\n @Input('monkeyPopoverTarget')\r\n set target(value: any | undefined) {\r\n this._target = value;\r\n }\r\n\r\n get target(): HTMLElement | undefined {\r\n return this._target;\r\n }\r\n\r\n @Input('monkeyPopoverMinwidth')\r\n minwidth = false;\r\n\r\n @Input('monkeyPopoverBackdrop')\r\n backdrop = true;\r\n\r\n @Input('monkeyPopoverWatch')\r\n watch = false;\r\n\r\n @Input('monkeyPopoverDir')\r\n dir: MonkeyPopoverDir = 'ltr';\r\n\r\n @Input('monkeyPopoverContextmenu')\r\n contextmenu = false;\r\n\r\n @Input('monkeyPopoverHeight')\r\n height?: number | string;\r\n\r\n @Input('monkeyPopoverTitle') title?: string | TemplateRef<unknown>;\r\n\r\n @Input('monkeyPopoverActions') actions?: string | TemplateRef<unknown>;\r\n\r\n @Input({ alias: 'monkeyPopoverHideClose', transform: booleanAttribute })\r\n hideClose!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverHideHeader', transform: booleanAttribute })\r\n hideHeader!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverHideActions', transform: booleanAttribute })\r\n hideActions!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverEnableAutofocus', transform: booleanAttribute })\r\n enableAutofocus!: boolean;\r\n\r\n constructor() {\r\n this._router.events\r\n .pipe(\r\n filter((event): event is NavigationStart => {\r\n return event instanceof NavigationStart;\r\n }),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe(() => {\r\n this.closePopover();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.disposePopover();\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n private closePopover(event?: MouseEvent): void {\r\n if (this._show) {\r\n this._show = false;\r\n this.disposePopover();\r\n this._zone.run(() => {\r\n this.closed?.(event);\r\n });\r\n }\r\n }\r\n\r\n private disposePopover(): void {\r\n this._resizeObserver?.disconnect();\r\n this._resizeObserver = undefined;\r\n\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = undefined;\r\n }\r\n }\r\n\r\n private getPositions(dir: MonkeyPopoverDir): ConnectedPosition[] {\r\n const oppositeVertical: Record<VerticalPosition, VerticalPosition> = {\r\n top: 'bottom',\r\n bottom: 'top',\r\n center: 'center'\r\n };\r\n\r\n const oppositeHorizontal: Record<HorizontalPosition, HorizontalPosition> = {\r\n start: 'end',\r\n end: 'start',\r\n center: 'center'\r\n };\r\n\r\n const centerY = (pos: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: 'center',\r\n originY: pos,\r\n overlayX: 'center',\r\n overlayY: oppositeVertical[pos]\r\n };\r\n };\r\n\r\n const centerX = (pos: HorizontalPosition): ConnectedPosition => {\r\n return {\r\n originX: oppositeHorizontal[pos],\r\n originY: 'center',\r\n overlayX: pos,\r\n overlayY: 'center'\r\n };\r\n };\r\n\r\n const ltr = (axis: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: 'start',\r\n originY: axis,\r\n overlayX: 'start',\r\n overlayY: oppositeVertical[axis]\r\n };\r\n };\r\n\r\n const rtl = (axis: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: 'end',\r\n originY: axis,\r\n overlayX: 'end',\r\n overlayY: oppositeVertical[axis]\r\n };\r\n };\r\n\r\n const side = (axisX: HorizontalPosition, axisY: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: axisX,\r\n originY: axisY,\r\n overlayX: oppositeHorizontal[axisX],\r\n overlayY: axisY\r\n };\r\n };\r\n\r\n const cmp = dir ?? this._options?.dir ?? this.dir;\r\n\r\n switch (cmp) {\r\n case 'ct':\r\n return [centerY('top'), centerY('bottom'), centerX('start'), centerX('end')];\r\n case 'cr':\r\n return [centerX('end'), centerX('start'), centerY('top'), centerY('bottom')];\r\n case 'cc':\r\n return [centerX('center')];\r\n case 'ltr':\r\n return [ltr('bottom'), ltr('top')];\r\n case 'rtl':\r\n return [rtl('bottom'), rtl('top')];\r\n case 'tltr':\r\n return [ltr('top'), ltr('bottom')];\r\n case 'trtl':\r\n return [rtl('top'), rtl('bottom')];\r\n case 'rt':\r\n return [side('end', 'top'), side('end', 'bottom'), ltr('top')];\r\n case 'rb':\r\n return [side('end', 'bottom'), side('end', 'top'), ltr('bottom'), rtl('bottom')];\r\n case 'lt':\r\n return [side('start', 'top'), side('start', 'bottom'), rtl('top')];\r\n case 'lb':\r\n return [side('start', 'bottom'), side('start', 'top'), rtl('bottom')];\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n private createPopover(\r\n origin?: FlexibleConnectedPositionStrategyOrigin,\r\n options?: MonkeyPopoverOptions\r\n ): void {\r\n if (!this.target) {\r\n // eslint-disable-next-line no-console\r\n console.error('MonkeyPopoverDirective -> target element is not defined.');\r\n return;\r\n }\r\n\r\n const originEl =\r\n this.target instanceof HTMLElement ? this.target : (this.target as any).element;\r\n\r\n this._positionStrategy = this._overlayPositionBuilder\r\n .flexibleConnectedTo(origin ?? originEl)\r\n .withPush(true)\r\n .withGrowAfterOpen(true)\r\n .withPositions(this.getPositions(options?.dir!));\r\n\r\n this._overlayRef = this._overlay.create({\r\n positionStrategy: this._positionStrategy,\r\n disposeOnNavigation: true,\r\n direction: 'ltr',\r\n hasBackdrop: this.backdrop,\r\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n width: this._options?.minwidth || this.minwidth ? this.target.offsetWidth - 2 : undefined,\r\n maxHeight: '95%',\r\n height: this.height\r\n });\r\n\r\n this._overlayRef\r\n .backdropClick()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((event) => {\r\n this.closePopover(event);\r\n });\r\n\r\n const portal = new ComponentPortal(MonkeyPopoverContentComponent, this._vcr);\r\n\r\n this._componentRef = this._overlayRef.attach(portal);\r\n this._componentRef.instance.content = this._tpl;\r\n this._componentRef.instance.title = this.title as any;\r\n this._componentRef.instance.actions = this.actions as any;\r\n this._componentRef.instance.hideClose = this.hideClose;\r\n this._componentRef.instance.hideHeader = this.hideHeader;\r\n this._componentRef.instance.hideActions = this.hideActions;\r\n this._componentRef.instance.enableAutofocus = this.enableAutofocus;\r\n\r\n if (!this.hideClose || !this.hideHeader) {\r\n this._componentRef.instance.onClose\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this.closePopover();\r\n });\r\n }\r\n\r\n if (this.watch && 'ResizeObserver' in window) {\r\n this._resizeObserver = new ResizeObserver(() => {\r\n this._overlayRef?.updatePosition();\r\n });\r\n\r\n this._resizeObserver.observe(this._componentRef.location.nativeElement);\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { map, of } from 'rxjs';\r\nimport {\r\n GoogleApiPlaces,\r\n GoogleApiPlacesAddressComponents,\r\n GoogleApiPlacesResponse\r\n} from '../interfaces';\r\nimport { injectTokenWithWarning, MECX_GOOGLE_API_KEY } from '../tokens';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MonkeyEcxAddressService {\r\n private readonly _http = inject(HttpClient);\r\n\r\n private readonly _googleApiKey = injectTokenWithWarning(\r\n MECX_GOOGLE_API_KEY,\r\n 'MECX_GOOGLE_API_KEY'\r\n )!;\r\n\r\n private mappingData(places: GoogleApiPlaces[]) {\r\n const getComponent = (\r\n components: GoogleApiPlacesAddressComponents[],\r\n type:\r\n | 'street_number'\r\n | 'route'\r\n | 'sublocality_level_1'\r\n | 'sublocality'\r\n | 'political'\r\n | 'administrative_area_level_1'\r\n | 'administrative_area_level_2'\r\n | 'country'\r\n | 'postal_code',\r\n field = 'longText'\r\n ) => {\r\n const result = components.find((c) => {\r\n return c.types.includes(type);\r\n });\r\n\r\n return result?.[field] || '';\r\n };\r\n\r\n return places.map((_: GoogleApiPlaces) => {\r\n const { addressComponents } = _;\r\n\r\n const address = getComponent(addressComponents!, 'route');\r\n const addressNumber = getComponent(addressComponents!, 'street_number');\r\n const neighborhood = getComponent(addressComponents!, 'sublocality_level_1');\r\n const city = getComponent(addressComponents!, 'administrative_area_level_2');\r\n const state = getComponent(addressComponents!, 'administrative_area_level_1');\r\n const country = getComponent(addressComponents!, 'country', 'shortText');\r\n const zipCode = getComponent(addressComponents!, 'postal_code');\r\n\r\n return {\r\n formattedAddress: _.formattedAddress,\r\n adrFormatAddress: _.adrFormatAddress,\r\n address,\r\n addressNumber,\r\n neighborhood,\r\n city,\r\n state,\r\n country,\r\n zipCode\r\n };\r\n });\r\n }\r\n\r\n get(textQuery: string) {\r\n if (!textQuery) {\r\n return of([]);\r\n }\r\n\r\n return this._http\r\n .post<any>(\r\n 'https://places.googleapis.com/v1/places:searchText',\r\n {\r\n textQuery\r\n },\r\n {\r\n headers: {\r\n 'X-Goog-Api-Key': this._googleApiKey,\r\n 'X-Goog-FieldMask':\r\n 'places.formattedAddress,places.addressComponents,places.displayName,places.adrFormatAddress'\r\n }\r\n }\r\n )\r\n .pipe(\r\n map((resp: GoogleApiPlacesResponse) => {\r\n return this.mappingData(resp.places);\r\n })\r\n );\r\n }\r\n}\r\n","/* eslint-disable no-console */\r\n/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { DestroyRef, inject, Injectable, LOCALE_ID } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { BehaviorSubject, map } from 'rxjs';\r\nimport { MECX_I18N_WRAPPER } from '../tokens';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MonkeyDictionaryService {\r\n private _localeId = inject(LOCALE_ID);\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _data$ = new BehaviorSubject<Record<string, Record<string, any>>>({\r\n 'pt-BR': {\r\n EDIT: 'Editar',\r\n 'NO-RESULTS': 'Nenhum resultado encontrado',\r\n 'NO-DATA': 'Sem dados',\r\n 'NO-DATA-ADDRESS': 'Nenhum endereço encontrado com esta pesquisa',\r\n 'NOT-PROVIDED': 'Não informado',\r\n LOADING: 'Carregando...',\r\n // `{label}`, `{position}` and `{total}` are filled in by the table.\r\n TABLE: {\r\n EMPTY: 'Nenhum resultado.',\r\n SORT: {\r\n 'TEXT-ASC': 'Ordenar de A a Z',\r\n 'TEXT-DESC': 'Ordenar de Z a A',\r\n 'NUMBER-ASC': 'Menor para maior',\r\n 'NUMBER-DESC': 'Maior para menor',\r\n 'DATE-ASC': 'Mais antigo',\r\n 'DATE-DESC': 'Mais recente'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Mover esquerda',\r\n 'MOVE-RIGHT': 'Mover direita',\r\n HIDE: 'Remover visualização',\r\n PIN: 'Fixar coluna',\r\n UNPIN: 'Desfixar coluna'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Selecionar todas as linhas desta página',\r\n SELECT: 'Selecionar {label}',\r\n EXPAND: 'Expandir {label}',\r\n COLLAPSE: 'Recolher {label}',\r\n DETAIL: 'Detalhe',\r\n LIMIT: 'Limite de {max} selecionados atingido',\r\n 'NOT-SELECTABLE': 'Esta linha não pode ser selecionada'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Data de início',\r\n 'END-DATE': 'Data de término',\r\n INVALID: 'Intervalo de datas inválido',\r\n ACTIONS: {\r\n CANCEL: 'Cancelar',\r\n APPLY: 'Aplicar'\r\n },\r\n 'WEEK-DAYS': ['Dom.', '2ª', '3ª', '4ª', '5ª', '6ª', 'Sab.'],\r\n MONTHS: {\r\n 0: 'Janeiro',\r\n 1: 'Fevereiro',\r\n 2: 'Março',\r\n 3: 'Abril',\r\n 4: 'Maio',\r\n 5: 'Junho',\r\n 6: 'Julho',\r\n 7: 'Agosto',\r\n 8: 'Setembro',\r\n 9: 'Outubro',\r\n 10: 'Novembro',\r\n 11: 'Dezembro'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Customizado',\r\n LAST_30_DAYS: 'Ultimos 30 dias',\r\n LAST_60_DAYS: 'Ultimos 60 dias',\r\n LAST_90_DAYS: 'Ultimos 90 dias',\r\n LAST_6_MONTHS: 'Ultimos 6 meses',\r\n LAST_12_MONTHS: 'Ultimos 12 meses',\r\n NEXT_30_DAYS: 'Próximos 30 dias',\r\n NEXT_60_DAYS: 'Próximos 60 dias',\r\n NEXT_90_DAYS: 'Próximos 90 dias',\r\n NEXT_6_MONTHS: 'Próximos 6 meses',\r\n NEXT_12_MONTHS: 'Próximos 12 meses'\r\n }\r\n },\r\n OR: 'ou'\r\n },\r\n 'es-CL': {\r\n EDIT: 'Editar',\r\n 'NO-RESULTS': 'No se encontraron resultados',\r\n 'NO-DATA': 'Sin datos',\r\n 'NO-DATA-ADDRESS': 'No se encontraron direcciones con esta búsqueda',\r\n 'NOT-PROVIDED': 'No informado',\r\n LOADING: 'Cargando...',\r\n TABLE: {\r\n EMPTY: 'Sin resultados.',\r\n SORT: {\r\n 'TEXT-ASC': 'Ordenar de A a Z',\r\n 'TEXT-DESC': 'Ordenar de Z a A',\r\n 'NUMBER-ASC': 'De menor a mayor',\r\n 'NUMBER-DESC': 'De mayor a menor',\r\n 'DATE-ASC': 'Más antiguo',\r\n 'DATE-DESC': 'Más reciente'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Mover a la izquierda',\r\n 'MOVE-RIGHT': 'Mover a la derecha',\r\n HIDE: 'Quitar de la vista',\r\n PIN: 'Fijar columna',\r\n UNPIN: 'Desfijar columna'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Seleccionar todas las filas de esta página',\r\n SELECT: 'Seleccionar {label}',\r\n EXPAND: 'Expandir {label}',\r\n COLLAPSE: 'Contraer {label}',\r\n DETAIL: 'Detalle',\r\n LIMIT: 'Límite de {max} seleccionados alcanzado',\r\n 'NOT-SELECTABLE': 'Esta fila no se puede seleccionar'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Fecha de inicio',\r\n 'END-DATE': 'Fecha de termino',\r\n INVALID: 'Rango de fechas no válido',\r\n ACTIONS: {\r\n CANCEL: 'Cancelar',\r\n APPLY: 'Aplicar'\r\n },\r\n 'WEEK-DAYS': ['Dom.', 'Lun.', 'Mar.', 'Mié.', 'Jue.', 'Vie.', 'Sab.'],\r\n MONTHS: {\r\n 0: 'Enero',\r\n 1: 'Febrero',\r\n 2: 'Marzo',\r\n 3: 'Abril',\r\n 4: 'Mayo',\r\n 5: 'Junio',\r\n 6: 'Julio',\r\n 7: 'Agosto',\r\n 8: 'Septiembre',\r\n 9: 'Octubre',\r\n 10: 'Noviembre',\r\n 11: 'Diciembre'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Personalizado',\r\n LAST_30_DAYS: 'Últimos 30 días',\r\n LAST_60_DAYS: 'Últimos 60 días',\r\n LAST_90_DAYS: 'Últimos 90 días',\r\n LAST_6_MONTHS: 'Últimos 6 meses',\r\n LAST_12_MONTHS: 'Últimos 12 meses',\r\n NEXT_30_DAYS: 'Próximos 30 días',\r\n NEXT_60_DAYS: 'Próximos 60 días',\r\n NEXT_90_DAYS: 'Próximos 90 días',\r\n NEXT_6_MONTHS: 'Próximos 6 meses',\r\n NEXT_12_MONTHS: 'Próximos 12 meses'\r\n }\r\n },\r\n OR: 'o'\r\n },\r\n 'es-MX': {\r\n EDIT: 'Editar',\r\n 'NO-RESULTS': 'No se encontraron resultados',\r\n 'NO-DATA': 'Sin datos',\r\n 'NO-DATA-ADDRESS': 'No se encontraron direcciones con esta búsqueda',\r\n 'NOT-PROVIDED': 'No informado',\r\n LOADING: 'Cargando...',\r\n TABLE: {\r\n EMPTY: 'Sin resultados.',\r\n SORT: {\r\n 'TEXT-ASC': 'Ordenar de A a Z',\r\n 'TEXT-DESC': 'Ordenar de Z a A',\r\n 'NUMBER-ASC': 'De menor a mayor',\r\n 'NUMBER-DESC': 'De mayor a menor',\r\n 'DATE-ASC': 'Más antiguo',\r\n 'DATE-DESC': 'Más reciente'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Mover a la izquierda',\r\n 'MOVE-RIGHT': 'Mover a la derecha',\r\n HIDE: 'Quitar de la vista',\r\n PIN: 'Fijar columna',\r\n UNPIN: 'Desfijar columna'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Seleccionar todas las filas de esta página',\r\n SELECT: 'Seleccionar {label}',\r\n EXPAND: 'Expandir {label}',\r\n COLLAPSE: 'Contraer {label}',\r\n DETAIL: 'Detalle',\r\n LIMIT: 'Límite de {max} seleccionados alcanzado',\r\n 'NOT-SELECTABLE': 'Esta fila no se puede seleccionar'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Fecha de inicio',\r\n 'END-DATE': 'Fecha de termino',\r\n INVALID: 'Rango de fechas no válido',\r\n ACTIONS: {\r\n CANCEL: 'Cancelar',\r\n APPLY: 'Aplicar'\r\n },\r\n 'WEEK-DAYS': ['Dom.', 'Lun.', 'Mar.', 'Mié.', 'Jue.', 'Vie.', 'Sab.'],\r\n MONTHS: {\r\n 0: 'Enero',\r\n 1: 'Febrero',\r\n 2: 'Marzo',\r\n 3: 'Abril',\r\n 4: 'Mayo',\r\n 5: 'Junio',\r\n 6: 'Julio',\r\n 7: 'Agosto',\r\n 8: 'Septiembre',\r\n 9: 'Octubre',\r\n 10: 'Noviembre',\r\n 11: 'Diciembre'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Personalizado',\r\n LAST_30_DAYS: 'Últimos 30 días',\r\n LAST_60_DAYS: 'Últimos 60 días',\r\n LAST_90_DAYS: 'Últimos 90 días',\r\n LAST_6_MONTHS: 'Últimos 6 meses',\r\n LAST_12_MONTHS: 'Últimos 12 meses',\r\n NEXT_30_DAYS: 'Próximos 30 días',\r\n NEXT_60_DAYS: 'Próximos 60 días',\r\n NEXT_90_DAYS: 'Próximos 90 días',\r\n NEXT_6_MONTHS: 'Próximos 6 meses',\r\n NEXT_12_MONTHS: 'Próximos 12 meses'\r\n }\r\n },\r\n OR: 'o'\r\n },\r\n 'en-US': {\r\n EDIT: 'Edit',\r\n 'NO-RESULTS': 'No results found',\r\n 'NO-DATA': 'No data',\r\n 'NO-DATA-ADDRESS': 'No address found with this search',\r\n 'NOT-PROVIDED': 'Not provided',\r\n LOADING: 'Loading...',\r\n TABLE: {\r\n EMPTY: 'No results.',\r\n SORT: {\r\n 'TEXT-ASC': 'Sort A to Z',\r\n 'TEXT-DESC': 'Sort Z to A',\r\n 'NUMBER-ASC': 'Lowest to highest',\r\n 'NUMBER-DESC': 'Highest to lowest',\r\n 'DATE-ASC': 'Oldest first',\r\n 'DATE-DESC': 'Newest first'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Move left',\r\n 'MOVE-RIGHT': 'Move right',\r\n HIDE: 'Remove from view',\r\n PIN: 'Pin column',\r\n UNPIN: 'Unpin column'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Select all rows on this page',\r\n SELECT: 'Select {label}',\r\n EXPAND: 'Expand {label}',\r\n COLLAPSE: 'Collapse {label}',\r\n DETAIL: 'Detail',\r\n LIMIT: 'Limit of {max} selected reached',\r\n 'NOT-SELECTABLE': 'This row cannot be selected'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Start date',\r\n 'END-DATE': 'End Date',\r\n INVALID: 'Invalid date range',\r\n ACTIONS: {\r\n CANCEL: 'Cancel',\r\n APPLY: 'Apply'\r\n },\r\n 'WEEK-DAYS': ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.'],\r\n MONTHS: {\r\n 0: 'January',\r\n 1: 'February',\r\n 2: 'March',\r\n 3: 'April',\r\n 4: 'May',\r\n 5: 'June',\r\n 6: 'July',\r\n 7: 'August',\r\n 8: 'September',\r\n 9: 'October',\r\n 10: 'November',\r\n 11: 'December'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Custom',\r\n LAST_30_DAYS: 'Last 30 days',\r\n LAST_60_DAYS: 'Last 60 days',\r\n LAST_90_DAYS: 'Last 90 days',\r\n LAST_6_MONTHS: 'Last 6 months',\r\n LAST_12_MONTHS: 'Last 12 months',\r\n NEXT_30_DAYS: 'Next 30 days',\r\n NEXT_60_DAYS: 'Next 60 days',\r\n NEXT_90_DAYS: 'Next 90 days',\r\n NEXT_6_MONTHS: 'Next 6 months',\r\n NEXT_12_MONTHS: 'Next 12 months'\r\n }\r\n },\r\n OR: 'or'\r\n }\r\n });\r\n\r\n constructor() {\r\n const tokenSubject = inject(MECX_I18N_WRAPPER, { optional: true });\r\n tokenSubject?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((value) => {\r\n this.handleWrapperValues(value);\r\n });\r\n }\r\n\r\n private handleWrapperValues(value: string) {\r\n try {\r\n const locale = this._localeId || 'pt-BR';\r\n const wrappedData = JSON.parse(value);\r\n const currentData = this._data$.value;\r\n\r\n const updated = {\r\n ...currentData,\r\n [locale]: {\r\n ...currentData[locale],\r\n ...wrappedData\r\n }\r\n };\r\n\r\n this._data$.next(updated);\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(`MonkeyDictionaryService - handleWrapperValues -> ${e}`);\r\n }\r\n }\r\n\r\n get(key: string) {\r\n const locale = this._localeId || 'pt-BR';\r\n return this._data$.pipe(\r\n map((data) => {\r\n return data[locale]?.[key] ?? null;\r\n })\r\n );\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { computed, Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MonkeyStepperService {\r\n private _steppers = signal<Map<string, string>>(new Map());\r\n\r\n currentStep(id: string) {\r\n return computed(() => {\r\n return this._steppers().get(id);\r\n });\r\n }\r\n\r\n setCurrentStep(id: string, step: string): void {\r\n this._steppers.update((items) => {\r\n return new Map(items).set(id, step);\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeyButtonColor, MonkeyButtonType } from '../../interfaces/button';\r\nimport { MonkeySize } from '../../interfaces/sizes';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [UtilIconComponent],\r\n selector: 'monkey-button',\r\n standalone: true,\r\n styleUrl: './button.component.scss',\r\n templateUrl: './button.component.html',\r\n host: {\r\n 'data-testid': 'monkey-button',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[attr.tabindex]': 'null'\r\n }\r\n})\r\nexport class MonkeyButtonComponent {\r\n @Input() disabled!: boolean;\r\n\r\n @Input() color: MonkeyButtonColor = 'default';\r\n\r\n @Input() size: MonkeySize = 'md';\r\n\r\n @Input() type: MonkeyButtonType = 'primary';\r\n\r\n @Input() loading!: boolean;\r\n\r\n private readonly elementRef = inject(ElementRef);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-button-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n }\r\n\r\n get element(): HTMLElement {\r\n return this.elementRef.nativeElement;\r\n }\r\n}\r\n","<button class=\"mecx-button {{ type }} {{ size }} {{ color }}\" [disabled]=\"disabled || loading\">\r\n <div class=\"content\">\r\n @if (!loading) {\r\n <ng-content select=\"[first]\"></ng-content>\r\n }\r\n <span><ng-content></ng-content></span>\r\n @if (!loading) {\r\n <ng-content select=\"[last]\"></ng-content>\r\n }\r\n @if (loading) {\r\n <util-icon class=\"mecx-button-loading\" name=\"loading\" />\r\n }\r\n </div>\r\n</button>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n Output,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { type MonkeyToastType } from '../../interfaces';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\n@Component({\r\n selector: 'monkey-toast',\r\n imports: [MonkeyButtonComponent, UtilIconComponent],\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-toast',\r\n '(animationend)': 'onAnimationEnd($event)',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyToastComponent {\r\n @Input() message: string | undefined;\r\n\r\n @Input() icon: string | undefined = 'close-circle';\r\n\r\n @Input() type: MonkeyToastType = 'default';\r\n\r\n @Input({ transform: booleanAttribute }) isClosable: boolean = false;\r\n\r\n @Input() actionLabel: string | undefined;\r\n\r\n @Input() actionIcon: string | undefined;\r\n\r\n @Output() onActionClick = new EventEmitter<string>();\r\n\r\n @Output() onClose = new EventEmitter<string>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-toast-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n return this.type;\r\n }\r\n\r\n constructor(private host: ElementRef<HTMLElement>) {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n close() {\r\n this.host.nativeElement.classList.add('closed');\r\n }\r\n\r\n onAnimationEnd(event: AnimationEvent) {\r\n if (event.animationName.includes('fade-out')) {\r\n this.onClose.emit(this.id);\r\n }\r\n }\r\n}\r\n","<div class=\"monkey-toast-content\">\r\n @if (icon) {\r\n <i class=\"mk-i mk-i-{{icon}} lg\"></i>\r\n }\r\n <div>\r\n <div class=\"monkey-toast-message\">\r\n {{ message }}\r\n </div>\r\n @if (actionLabel) {\r\n <div class=\"monkey-toast-action\">\r\n <monkey-button\r\n class=\"monkey-toast-btn-action\"\r\n type=\"tertiary\"\r\n size=\"sm\"\r\n (click)=\"onActionClick.emit(id)\"\r\n >\r\n {{ actionLabel }}\r\n @if (actionIcon) {\r\n <i class=\"mk-i mk-i-{{actionIcon}} xs\" first></i>\r\n }\r\n </monkey-button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n@if (isClosable) {\r\n <div class=\"monkey-toast-divider\"></div>\r\n <div class=\"monkey-toast-close\" (click)=\"close()\">\r\n <util-icon name=\"clear\" />\r\n </div>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toast.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { ComponentRef } from '@angular/core';\r\n// The toast component by its own path, not through the `../components` barrel:\r\n// reaching for the barrel from outside it makes every component in the library\r\n// a dependency of this file, and that closes a cycle — the barrel loads\r\n// form-field, form-field pulls in the services, and the services land back\r\n// here before form-field has finished exporting its own component.\r\nimport { MonkeyToastComponent } from '../components/toast';\r\n\r\nexport class MonkeyToastRef {\r\n constructor(private readonly componentRef: ComponentRef<MonkeyToastComponent>) {\r\n // not to do\r\n }\r\n\r\n close() {\r\n this.componentRef.instance.close();\r\n }\r\n}\r\n\r\nexport type MonkeyToastPosition =\r\n | 'top-center'\r\n | 'top-left'\r\n | 'top-right'\r\n | 'bottom-center'\r\n | 'bottom-left'\r\n | 'bottom-right';\r\n\r\nexport type MonkeyToastType = 'default' | 'success' | 'error' | 'warning' | 'question';\r\n\r\nexport type ToastConfig = {\r\n type?: MonkeyToastType;\r\n icon?: string;\r\n isClosable?: boolean;\r\n message: string;\r\n position?: MonkeyToastPosition;\r\n duration?: number;\r\n keepOpen?: boolean;\r\n actionLabel?: string;\r\n actionIcon?: string;\r\n action?: () => void;\r\n closeOnAction?: boolean;\r\n};\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './alert';\r\nexport * from './autocomplete';\r\nexport * from './autocomplete-address';\r\nexport * from './breadcrumb';\r\nexport * from './button';\r\nexport * from './popover';\r\nexport * from './sizes';\r\nexport * from './table';\r\nexport * from './toast';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { GlobalPositionStrategy, Overlay } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { getRandomString } from '../../utils';\r\n// The toast component by its own path — see the note in interfaces/toast.ts:\r\n// importing the `../components` barrel from outside it closes a load-order\r\n// cycle through form-field.\r\nimport { MonkeyToastComponent } from '../components/toast';\r\nimport { type MonkeyToastPosition, MonkeyToastRef, type ToastConfig } from '../interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MonkeyToastService {\r\n private lastToast?: MonkeyToastRef;\r\n\r\n private overlay = inject(Overlay);\r\n\r\n private getPositionStrategy(position?: MonkeyToastPosition): GlobalPositionStrategy {\r\n const globalPosition = this.overlay.position().global();\r\n\r\n switch (position) {\r\n case 'top-left':\r\n return globalPosition.top('40px').start('40px');\r\n case 'top-center':\r\n return globalPosition.top('40px').centerHorizontally();\r\n case 'top-right':\r\n return globalPosition.top('40px').end('40px');\r\n case 'bottom-left':\r\n return globalPosition.bottom('40px').start('40px');\r\n case 'bottom-center':\r\n return globalPosition.bottom('40px').centerHorizontally();\r\n default:\r\n return globalPosition.bottom('40px').end('40px');\r\n }\r\n }\r\n\r\n show(toastConfig: ToastConfig) {\r\n if (this.lastToast) {\r\n this.lastToast.close();\r\n }\r\n\r\n const overlayRef = this.overlay.create({\r\n hasBackdrop: false,\r\n positionStrategy: this.getPositionStrategy(toastConfig.position)\r\n });\r\n const portal = new ComponentPortal(MonkeyToastComponent);\r\n const componentRef = overlayRef.attach(portal);\r\n this.lastToast = new MonkeyToastRef(componentRef);\r\n\r\n componentRef.instance.id = getRandomString(6);\r\n componentRef.instance.type = toastConfig.type ?? 'default';\r\n componentRef.instance.icon = toastConfig.icon;\r\n componentRef.instance.isClosable = toastConfig.isClosable ?? false;\r\n componentRef.instance.message = toastConfig.message;\r\n componentRef.instance.actionLabel = toastConfig.actionLabel;\r\n componentRef.instance.actionIcon = toastConfig.actionIcon;\r\n componentRef.instance.onActionClick.subscribe(() => {\r\n if (toastConfig.action) {\r\n toastConfig.action();\r\n\r\n if (toastConfig.closeOnAction ?? true) {\r\n componentRef.instance.close();\r\n }\r\n }\r\n });\r\n\r\n componentRef.instance.onClose.subscribe(() => {\r\n overlayRef.detach();\r\n });\r\n\r\n if (!toastConfig.keepOpen) {\r\n setTimeout(() => {\r\n componentRef.instance.close();\r\n }, toastConfig.duration ?? 4000);\r\n }\r\n\r\n return componentRef.instance;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './address.service';\r\nexport * from './dictionary.service';\r\nexport * from './stepper.service';\r\nexport * from './toast.service';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\nimport { AbstractControlDirective, NgControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Directive()\r\nexport abstract class MonkeyFormFieldControl {\r\n readonly id!: string;\r\n\r\n readonly ngControl!: NgControl | AbstractControlDirective | null;\r\n\r\n readonly disabled!: boolean;\r\n\r\n readonly focused!: boolean;\r\n\r\n readonly stateChanges!: Observable<void>;\r\n\r\n readonly type?: string;\r\n\r\n readonly currency?: boolean;\r\n\r\n readonly percent?: boolean;\r\n\r\n abstract onContainerClick(event: MouseEvent): void;\r\n\r\n abstract onClear?(): void;\r\n\r\n loading?: boolean;\r\n\r\n disableToBeDirty?: boolean;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { computed, Directive, effect, ElementRef, inject, input } from '@angular/core';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { MonkeyDictionaryService } from '../services';\r\n\r\n@Directive({\r\n selector: 'monkey-display'\r\n})\r\nexport class MonkeyDisplayDirective {\r\n private fallbackText = 'Not provided';\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('NOT-PROVIDED');\r\n\r\n displayValue = input.required<string>();\r\n\r\n private displayedText = computed(() => {\r\n const value = this.displayValue();\r\n\r\n if (value === null || value === undefined || value === '') {\r\n return this.fallbackText;\r\n }\r\n\r\n return String(value);\r\n });\r\n\r\n constructor(private el: ElementRef<HTMLElement>) {\r\n effect(async () => {\r\n this.el.nativeElement.innerHTML = this.displayedText();\r\n this.fallbackText = await firstValueFrom(this.i18nDictionary);\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-error'\r\n})\r\nexport class MonkeyErrorDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-helper'\r\n})\r\nexport class MonkeyHelperDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-info'\r\n})\r\nexport class MonkeyInfoDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-label'\r\n})\r\nexport class MonkeyLabelDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-prefix'\r\n})\r\nexport class MonkeyPrefixDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, HostListener, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-suffix',\r\n host: {\r\n '[class.has-action]': 'hasAction'\r\n }\r\n})\r\nexport class MonkeySuffixDirective {\r\n @Input('hasAction')\r\n set _hasAction(value: '') {\r\n this.hasAction = true;\r\n }\r\n\r\n hasAction = false;\r\n\r\n action: Function | null = null;\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: PointerEvent): void {\r\n if (!this.action) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n } else {\r\n this.action(event);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport function getCurrencySymbol(code: string) {\r\n const currency = code || 'BRL';\r\n\r\n const symbol = {\r\n BRL: 'R$',\r\n CLP: '$',\r\n MXN: '$',\r\n USD: '$'\r\n }[currency];\r\n\r\n return symbol;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentChecked,\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Component,\r\n computed,\r\n ContentChild,\r\n ContentChildren,\r\n DEFAULT_CURRENCY_CODE,\r\n DestroyRef,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n Input,\r\n OnDestroy,\r\n output,\r\n QueryList,\r\n signal,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { merge, Subscription } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyDisplayDirective } from '../../directives/display';\r\nimport { MonkeyErrorDirective } from '../../directives/error';\r\nimport { MonkeyHelperDirective } from '../../directives/helper';\r\nimport { MonkeyInfoDirective } from '../../directives/info';\r\nimport { MonkeyLabelDirective } from '../../directives/label';\r\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\r\nimport { MonkeySuffixDirective } from '../../directives/suffix';\r\nimport { MonkeySize } from '../../interfaces';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport { MonkeyFormFieldControl } from './form-field-control';\r\nimport { getCurrencySymbol } from './utils';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-form-field',\r\n exportAs: 'monkeyFormField',\r\n templateUrl: './form-field.component.html',\r\n styleUrl: './form-field.component.scss',\r\n host: {\r\n class: 'mecx-form-field',\r\n '[class.mecx-disabled]': 'control.disabled',\r\n '[class.mecx-form-field-focused]': 'control.focused',\r\n '[class.mecx-form-field-invalid]': 'showInvalid',\r\n '[class.mecx-form-field-borderless]': 'hideBorder()',\r\n '[class.no-footer-space]': 'noFooterSpace',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class]': 'size'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyFormFieldComponent implements AfterContentInit, AfterContentChecked, OnDestroy {\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideAction!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n enableClear!: boolean;\r\n\r\n @Input() size: MonkeySize = 'md';\r\n\r\n @Input({ transform: booleanAttribute }) noFooterSpace = false;\r\n\r\n displayOnly = input<boolean>(false);\r\n\r\n onDisplayOnlyChange = output<boolean>();\r\n\r\n @ContentChild(MonkeyFormFieldControl) private _formFieldControl!: MonkeyFormFieldControl;\r\n\r\n private _displayChild: QueryList<MonkeyDisplayDirective> = ContentChildren(\r\n MonkeyDisplayDirective,\r\n {\r\n descendants: true\r\n }\r\n );\r\n\r\n private _labelChildren: QueryList<MonkeyLabelDirective> = ContentChildren(MonkeyLabelDirective, {\r\n descendants: true\r\n });\r\n\r\n private _helperChildren: QueryList<MonkeyHelperDirective> = ContentChildren(\r\n MonkeyHelperDirective,\r\n {\r\n descendants: true\r\n }\r\n );\r\n\r\n private _prefixChildren: QueryList<MonkeyPrefixDirective> = ContentChildren(\r\n MonkeyPrefixDirective,\r\n {\r\n descendants: true\r\n }\r\n );\r\n\r\n private _suffixChildren: QueryList<MonkeySuffixDirective> = ContentChildren(\r\n MonkeySuffixDirective,\r\n {\r\n descendants: true\r\n }\r\n );\r\n\r\n private _infoChildren: QueryList<MonkeyInfoDirective> = ContentChildren(MonkeyInfoDirective, {\r\n descendants: true\r\n });\r\n\r\n private _errorChildren: QueryList<MonkeyErrorDirective> = ContentChildren(MonkeyErrorDirective, {\r\n descendants: true\r\n });\r\n\r\n public elementRef = inject(ElementRef);\r\n\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n private readonly _idGenerator = inject(IdGenerator);\r\n\r\n private readonly _labelId = this._idGenerator.getId('monkey-label-');\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-form-field-');\r\n\r\n protected _id!: string;\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _isFocused: boolean | null = null;\r\n\r\n private _previousControl: MonkeyFormFieldControl | null = null;\r\n\r\n private _stateChanges: Subscription | undefined;\r\n\r\n private _valueChanges: Subscription | undefined;\r\n\r\n readonly currencySymbol = getCurrencySymbol(inject(DEFAULT_CURRENCY_CODE));\r\n\r\n readonly percentSymbol = '%';\r\n\r\n hasLabel = false;\r\n\r\n hasHelper = false;\r\n\r\n hasPrefix = false;\r\n\r\n hasSuffix = false;\r\n\r\n hasInfo = false;\r\n\r\n hasError = false;\r\n\r\n get control(): MonkeyFormFieldControl {\r\n return this._formFieldControl;\r\n }\r\n\r\n get labelId(): string {\r\n return this._labelId;\r\n }\r\n\r\n hideBorder = computed(() => {\r\n const { control } = this;\r\n return (\r\n control?.type === 'input-code' ||\r\n control?.type === 'radio-button' ||\r\n this.internalDisplayOnly()\r\n );\r\n });\r\n\r\n get showHeader(): boolean {\r\n return this.hasLabel || this.hasHelper;\r\n }\r\n\r\n get showFooter(): boolean {\r\n return this.hasInfo || this.hasError;\r\n }\r\n\r\n get showInvalid(): boolean {\r\n if (this.showLoading) {\r\n return false;\r\n }\r\n const touched = this.control.ngControl?.touched || false;\r\n const invalid = this.control.ngControl?.invalid || false;\r\n return (\r\n this.hasError && !this._isFocused && touched && invalid && !this.control.disableToBeDirty\r\n );\r\n }\r\n\r\n showClear = computed(() => {\r\n return (\r\n !!this.control.ngControl?.control?.value &&\r\n !this.control.disabled &&\r\n !this.control.loading &&\r\n (!this.hideAction || this.enableClear) &&\r\n !this.displayOnly()\r\n );\r\n });\r\n\r\n get showCalendar(): boolean {\r\n return this.control.type === 'date' && !this.hideAction;\r\n }\r\n\r\n get showCurrency(): boolean {\r\n return this.control.currency || false;\r\n }\r\n\r\n get showPercent(): boolean {\r\n return this.control.percent || false;\r\n }\r\n\r\n get showLoading(): boolean {\r\n return this.control.loading || false;\r\n }\r\n\r\n internalDisplayOnly = signal<boolean>(this.displayOnly());\r\n\r\n readonly editDictionary = inject(MonkeyDictionaryService).get('EDIT');\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n\r\n effect(() => {\r\n const value = this.displayOnly();\r\n this.internalDisplayOnly.set(value);\r\n });\r\n }\r\n\r\n private updateFocusState() {\r\n if (this.control.focused && !this._isFocused) {\r\n this._isFocused = true;\r\n } else if (!this.control.focused && (this._isFocused || this._isFocused === null)) {\r\n this._isFocused = false;\r\n }\r\n }\r\n\r\n private handleFormFieldControl() {\r\n if (!this.control) {\r\n throw Error('monkey-form-field must have a MonkeyFormFieldControl');\r\n }\r\n }\r\n\r\n private checkPrefixAndSuffix() {\r\n this.hasPrefix = !!this._prefixChildren?.length;\r\n this.hasSuffix = !!this._suffixChildren?.length;\r\n const suffix = this._suffixChildren?.get?.(0);\r\n if (suffix) {\r\n suffix.action = (event: MouseEvent) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n };\r\n }\r\n }\r\n\r\n private initializePrefixAndSuffix() {\r\n this.checkPrefixAndSuffix();\r\n\r\n if (this._prefixChildren?.changes || this._suffixChildren?.changes) {\r\n merge(this._prefixChildren?.changes, this._suffixChildren?.changes).subscribe(() => {\r\n this.checkPrefixAndSuffix();\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n private checkInfoError() {\r\n this.hasInfo = !!this._infoChildren?.length;\r\n this.hasError = !!this._errorChildren?.length;\r\n }\r\n\r\n private initializeInfoError() {\r\n this.checkInfoError();\r\n\r\n if (this._infoChildren?.changes || this._errorChildren?.changes) {\r\n merge(this._infoChildren?.changes, this._errorChildren?.changes).subscribe(() => {\r\n this.checkInfoError();\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n private initializeComponents() {\r\n this.hasLabel = Array.isArray(this._labelChildren) && this._labelChildren.length > 0;\r\n this.hasHelper = Array.isArray(this._helperChildren) && this._helperChildren.length > 0;\r\n\r\n this.initializePrefixAndSuffix();\r\n this.initializeInfoError();\r\n }\r\n\r\n private initializeControl() {\r\n const { control } = this;\r\n\r\n this._stateChanges?.unsubscribe();\r\n this._stateChanges = control.stateChanges.subscribe(() => {\r\n this.updateFocusState();\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n\r\n this._valueChanges?.unsubscribe();\r\n\r\n if (control.ngControl && control.ngControl.valueChanges) {\r\n this._valueChanges = control.ngControl.valueChanges\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n private openDatePicker() {\r\n const input: any = document.getElementById(this.control.id);\r\n if (input.showPicker) {\r\n input.showPicker();\r\n } else {\r\n input.focus();\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.handleFormFieldControl();\r\n this.initializeComponents();\r\n\r\n if (this.displayOnly() && !this._displayChild) {\r\n throw new Error(\r\n 'monkey-form-field: When `displayOnly` is true, a <monkey-display> element is required inside.'\r\n );\r\n }\r\n }\r\n\r\n ngAfterContentChecked() {\r\n this.handleFormFieldControl();\r\n\r\n if (this.control !== this._previousControl) {\r\n this.initializeControl();\r\n this._previousControl = this.control;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._stateChanges?.unsubscribe();\r\n this._valueChanges?.unsubscribe();\r\n }\r\n\r\n getFooterMessages(): 'info' | 'error' | '' {\r\n const touched = this.control.ngControl?.touched;\r\n const invalid = this.control.ngControl?.invalid;\r\n const isFocused = this._isFocused;\r\n const hasInfoChildren = this._infoChildren && this._infoChildren.length > 0;\r\n\r\n const isControlEnabled = !this.control.disabled;\r\n const isControlDisableToBeDirty = !this.control.disableToBeDirty;\r\n const isTouched = touched;\r\n const isInvalid = invalid;\r\n const isNotFocused = !isFocused;\r\n\r\n if (\r\n !this.showLoading &&\r\n isControlEnabled &&\r\n isTouched &&\r\n isInvalid &&\r\n isNotFocused &&\r\n isControlDisableToBeDirty\r\n ) {\r\n return 'error';\r\n }\r\n\r\n if (hasInfoChildren) {\r\n return 'info';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n getSymbols(): string {\r\n if (this.showCurrency && this.currencySymbol) {\r\n return this.currencySymbol;\r\n }\r\n if (this.showPercent && this.percentSymbol) {\r\n return this.percentSymbol;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n onClear(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.control.ngControl?.control?.setValue('');\r\n this.control.ngControl?.control?.markAsTouched();\r\n this.control?.onClear?.();\r\n }\r\n\r\n onOpenCalendar(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.control.type === 'date') {\r\n this.openDatePicker();\r\n }\r\n }\r\n\r\n onCancelDisplayOnly(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.internalDisplayOnly.set(false);\r\n this.onDisplayOnlyChange.emit(false);\r\n setTimeout(() => {\r\n this.control.onContainerClick(event);\r\n }, 0);\r\n }\r\n}\r\n","@if (internalDisplayOnly()) {\r\n <div class=\"mecx-form-field-display-only\" (click)=\"onCancelDisplayOnly($event)\">\r\n <div class=\"mecx-form-field-display-only-header\">\r\n <ng-container *ngTemplateOutlet=\"labelTpl\"></ng-container>\r\n </div>\r\n <div class=\"mecx-form-field-display-only-body\">\r\n <ng-content select=\"monkey-display\"></ng-content>\r\n </div>\r\n <div class=\"mecx-form-field-display-only-action\">\r\n {{ editDictionary | async }} <util-icon name=\"edit\" />\r\n </div>\r\n </div>\r\n} @else {\r\n @if (showHeader) {\r\n <div class=\"mecx-form-field-header\" (click)=\"control.onContainerClick($event)\">\r\n <label [id]=\"labelId\" [attr.for]=\"control.id\">\r\n <ng-container *ngTemplateOutlet=\"labelTpl\"></ng-container>\r\n </label>\r\n <ng-content select=\"monkey-helper\"></ng-content>\r\n </div>\r\n }\r\n\r\n <div class=\"mecx-form-field-body\" (click)=\"control.onContainerClick($event)\">\r\n @if (hasPrefix) {\r\n <ng-content select=\"monkey-prefix\"></ng-content>\r\n }\r\n @if (getSymbols(); as symbols) {\r\n <div class=\"mecx-form-field-prefix-symbol\">\r\n {{ symbols }}\r\n </div>\r\n }\r\n\r\n <ng-content></ng-content>\r\n\r\n @if (showClear()) {\r\n <util-icon class=\"mecx-clear\" name=\"clear\" (click)=\"onClear($event)\" />\r\n }\r\n @if (showCalendar) {\r\n <util-icon class=\"mecx-calendar\" name=\"calendar\" (click)=\"onOpenCalendar($event)\" />\r\n }\r\n @if (showLoading) {\r\n <util-icon class=\"mecx-form-field-loading\" name=\"loading\" />\r\n }\r\n\r\n @if (hasSuffix) {\r\n <ng-content select=\"monkey-suffix\"></ng-content>\r\n }\r\n </div>\r\n\r\n @if (showFooter) {\r\n <div class=\"mecx-form-field-footer\" (click)=\"control.onContainerClick($event)\">\r\n @switch (getFooterMessages()) {\r\n @case ('error') {\r\n <ng-content select=\"monkey-error\"></ng-content>\r\n }\r\n @case ('info') {\r\n <div class=\"mecx-form-field-info\">\r\n <ng-content select=\"monkey-info\"></ng-content>\r\n </div>\r\n }\r\n }\r\n </div>\r\n }\r\n}\r\n\r\n<ng-template #labelTpl>\r\n <ng-content select=\"monkey-label\"></ng-content>\r\n</ng-template>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { MonkeyFormFieldComponent } from './form-field.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, UtilIconComponent],\r\n declarations: [MonkeyFormFieldComponent],\r\n exports: [MonkeyFormFieldComponent]\r\n})\r\nexport class MonkeyFormFieldModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './form-field-control';\r\nexport * from './form-field.component';\r\nexport * from './form-field.module';\r\nexport * from './utils';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n Input,\r\n input,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-option',\r\n standalone: true,\r\n imports: [UtilIconComponent],\r\n template: `\r\n @if (type === 'checkbox') {\r\n <span class=\"mecx-option-checkbox\">\r\n <util-icon class=\"icon\" name=\"check\" />\r\n </span>\r\n }\r\n <div #content><ng-content /></div>\r\n `,\r\n styleUrls: ['./option.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-option',\r\n '[attr.id]': 'id',\r\n class: 'mecx-option',\r\n '[class.mecx-option-disabled]': 'disabled',\r\n '[class.mecx-option-selected]': 'isSelected()',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '[class]': 'type'\r\n }\r\n})\r\nexport class MonkeyOptionComponent {\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n @ViewChild('content', { static: true }) _content: ElementRef<HTMLElement> | undefined;\r\n\r\n readonly value = input<any>();\r\n\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n @Input() type = 'select';\r\n\r\n get displayContent(): string {\r\n return (this._content?.nativeElement.textContent || '').trim();\r\n }\r\n\r\n selected = input<boolean>(false);\r\n\r\n tabIndex = 0;\r\n\r\n action!: Function;\r\n\r\n isSelected = computed(() => {\r\n return this._selectedState();\r\n });\r\n\r\n readonly id: string = this.idGenerator.getId('mecx-option-');\r\n\r\n private _selectedState = signal(false);\r\n\r\n private handleAction(event: MouseEvent | KeyboardEvent) {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n } else {\r\n this.action?.();\r\n }\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n this._selectedState.set(this.selected());\r\n });\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n this.handleAction(event);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n handleKeyDown(event: KeyboardEvent): void {\r\n const { key } = event;\r\n\r\n if (key === 'Enter' || key === ' ') {\r\n this.handleAction(event);\r\n }\r\n }\r\n\r\n onSelect(select: boolean) {\r\n this._selectedState.set(select);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './option.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n distinctUntilChanged,\r\n Observable,\r\n of,\r\n Subject,\r\n switchMap\r\n} from 'rxjs';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyAutocompleteData, MonkeyAutocompleteResponse } from '../../interfaces';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport {\r\n MonkeyFormFieldComponent,\r\n MonkeyFormFieldControl,\r\n MonkeyFormFieldModule\r\n} from '../form-field';\r\nimport { MonkeyOptionComponent } from '../option';\r\n\r\n@Component({\r\n selector: 'monkey-autocomplete',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyPopoverDirective,\r\n MonkeyOptionComponent,\r\n UtilIconComponent\r\n ],\r\n template: `\r\n <input\r\n #input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n class=\"mecx-input\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur($event)\"\r\n [attr.id]=\"inputId\"\r\n [(ngModel)]=\"searchData\"\r\n />\r\n\r\n <ng-template\r\n [monkeyPopover]=\"showPopOver\"\r\n [monkeyPopoverTarget]=\"elementTarget\"\r\n [monkeyPopoverClosed]=\"closePopOver\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverBackdrop]=\"false\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n [monkeyPopoverWatch]=\"true\"\r\n >\r\n <div\r\n #containerWrapper\r\n class=\"mecx-autocomplete-wrapper\"\r\n [style.width.px]=\"initialDisplayWidth\"\r\n >\r\n @if (options.length > 0) {\r\n <div class=\"mecx-autocomplete-options\">\r\n @for (option of options; track option) {\r\n <div\r\n class=\"mecx-autocomplete-option\"\r\n (click)=\"onSelect(option)\"\r\n [class.mecx-autocomplete-selected]=\"isSelected(option)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n optionTemplate || defaultTemplate;\r\n context: { $implicit: option }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if (loading) {\r\n <div class=\"mecx-autocomplete-loading\">\r\n <util-icon name=\"loading\" />\r\n {{ loadingDictionary | async }}\r\n </div>\r\n }\r\n @if (!loading && !options.length) {\r\n <div class=\"mecx-autocomplete-no-data\">\r\n <util-icon class=\"mecx-autocomplete-no-data-icon\" name=\"searchFail\" />\r\n {{ noDataDictionary | async }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <ng-template #defaultTemplate let-option>\r\n <monkey-option>\r\n {{ option.description }}\r\n </monkey-option>\r\n </ng-template>\r\n </ng-template>\r\n `,\r\n styleUrl: './autocomplete.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyAutocompleteComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-autocomplete'\",\r\n class: 'mecx-autocomplete',\r\n '[class.mecx-autocomplete-disabled]': '_disabled',\r\n '[class.mecx-autocomplete-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur($event)'\r\n }\r\n})\r\nexport class MonkeyAutocompleteComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy\r\n{\r\n @Input({ required: true }) placeholder!: string;\r\n\r\n @Input() debounce = 300;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input() fetchOptions!: (queryOrLink: string | any) => Observable<MonkeyAutocompleteResponse>;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n // this.handleValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor(\r\n @Optional() public formField: MonkeyFormFieldComponent,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-autocomplete-');\r\n\r\n readonly inputId: string = this.idGenerator.getId('monkey-autocomplete-input-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'autocomplete';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n get elementTarget() {\r\n if (this.formField?.elementRef) {\r\n return this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n }\r\n\r\n return this._elementRef?.nativeElement;\r\n }\r\n\r\n private _searchEvent = new EventEmitter();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _resizeObserver?: ResizeObserver;\r\n\r\n initialDisplayWidth = 0;\r\n\r\n showPopOver = false;\r\n\r\n options: MonkeyAutocompleteData[] = [];\r\n\r\n readonly loadingDictionary = inject(MonkeyDictionaryService).get('LOADING');\r\n\r\n readonly noDataDictionary = inject(MonkeyDictionaryService).get('NO-DATA');\r\n\r\n loading = false;\r\n\r\n searchData = '';\r\n\r\n @ContentChild('optionTemplate', { static: false }) optionTemplate?: TemplateRef<any>;\r\n\r\n @ViewChild('containerWrapper') containerWrapper!: ElementRef;\r\n\r\n private updateWidth() {\r\n this.initialDisplayWidth = (this.elementTarget?.offsetWidth || 0) - 12;\r\n }\r\n\r\n closePopOver = () => {\r\n setTimeout(() => {\r\n this.focused = false;\r\n this.showPopOver = false;\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n };\r\n\r\n ngAfterContentInit(): void {\r\n this._searchEvent\r\n ?.pipe(\r\n debounceTime(this.debounce),\r\n distinctUntilChanged((prev, current) => {\r\n if (prev === current) {\r\n this.loading = false;\r\n }\r\n\r\n return prev === current;\r\n }),\r\n switchMap((query) => {\r\n return this.fetchOptions\r\n ? this.fetchOptions(query || '').pipe(\r\n catchError(() => {\r\n return of({ data: [] });\r\n })\r\n )\r\n : of({ data: [] });\r\n }),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe({\r\n next: (result: MonkeyAutocompleteResponse) => {\r\n this.openPopOver();\r\n this.options = result.data;\r\n this.loading = false;\r\n }\r\n });\r\n\r\n this._resizeObserver = new ResizeObserver(() => {\r\n return this.updateWidth();\r\n });\r\n this._resizeObserver.observe(this._elementRef.nativeElement);\r\n this.updateWidth();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n onClear(): void {\r\n this.searchData = '';\r\n this._onChange(null);\r\n this.onChange.emit(null);\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n if (this.options.length) {\r\n this.openPopOver();\r\n }\r\n }\r\n }\r\n\r\n _onBlur(event: FocusEvent) {\r\n const next = event?.relatedTarget as HTMLElement | null;\r\n if (next && this.containerWrapper?.nativeElement?.contains(next)) {\r\n return;\r\n }\r\n\r\n this.focused = false;\r\n this.stateChanges.next();\r\n this.closePopOver();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n openPopOver() {\r\n this.showPopOver = true;\r\n }\r\n\r\n onInputChange(event: Event) {\r\n const { value } = event.target as HTMLInputElement;\r\n this.loading = true;\r\n this._searchEvent.next(value);\r\n this.openPopOver();\r\n }\r\n\r\n onSelect(option: MonkeyAutocompleteData) {\r\n this.value = option.value;\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n this.searchData = option.description;\r\n this.closePopOver();\r\n }\r\n\r\n isSelected(option: MonkeyAutocompleteData) {\r\n return option?.value === this.value;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './autocomplete.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { catchError, debounceTime, distinctUntilChanged, of, Subject, switchMap } from 'rxjs';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { GoogleApiPlaces } from '../../interfaces';\r\nimport { MonkeyDictionaryService, MonkeyEcxAddressService } from '../../services';\r\nimport {\r\n MonkeyFormFieldComponent,\r\n MonkeyFormFieldControl,\r\n MonkeyFormFieldModule\r\n} from '../form-field';\r\nimport { MonkeyOptionComponent } from '../option';\r\n\r\n@Component({\r\n selector: 'monkey-autocomplete-address',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyPopoverDirective,\r\n MonkeyOptionComponent,\r\n UtilIconComponent\r\n ],\r\n template: `\r\n <input\r\n #input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n class=\"mecx-input\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur($event)\"\r\n [attr.id]=\"inputId\"\r\n [(ngModel)]=\"searchData\"\r\n />\r\n\r\n <ng-template\r\n [monkeyPopover]=\"showPopOver\"\r\n [monkeyPopoverTarget]=\"elementTarget\"\r\n [monkeyPopoverClosed]=\"closePopOver\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverBackdrop]=\"false\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n [monkeyPopoverWatch]=\"true\"\r\n >\r\n <div\r\n #containerWrapper\r\n class=\"mecx-autocomplete-address-wrapper\"\r\n [style.width.px]=\"initialDisplayWidth\"\r\n >\r\n <div class=\"flex-grow-1\">\r\n @if (loading) {\r\n <div class=\"mecx-autocomplete-address-loading\">\r\n <util-icon name=\"loading\" />\r\n {{ loadingDictionary | async }}\r\n </div>\r\n }\r\n @if (options.length > 0) {\r\n <div class=\"mecx-autocomplete-address-options\">\r\n @for (option of options; track option) {\r\n <monkey-option\r\n class=\"mecx-autocomplete-address-option\"\r\n (click)=\"onSelect(option)\"\r\n [class.mecx-option-selected]=\"isSelected(option)\"\r\n >\r\n <util-icon class=\"mecx-autocomplete-address-option-icon\" name=\"location\" />\r\n <span [innerHTML]=\"option.adrFormatAddress\"></span>\r\n </monkey-option>\r\n }\r\n </div>\r\n }\r\n @if (!loading && !options.length) {\r\n <div class=\"mecx-autocomplete-address-no-data\">\r\n <util-icon class=\"mecx-autocomplete-address-no-data-icon\" name=\"searchFail\" />\r\n {{ noDataDictionary | async }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"mecx-autocomplete-address-footer\">\r\n <util-icon name=\"googleMaps\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n `,\r\n styleUrl: './autocomplete-address.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyAutocompleteAddressComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-autocomplete-address'\",\r\n class: 'mecx-autocomplete-address',\r\n '[class.mecx-autocomplete-address-disabled]': '_disabled',\r\n '[class.mecx-autocomplete-address-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur($event)'\r\n }\r\n})\r\nexport class MonkeyAutocompleteAddressComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy\r\n{\r\n @Input({ required: true }) placeholder!: string;\r\n\r\n @Input() debounce = 300;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n if (!this.searchData) {\r\n this.searchData = value;\r\n }\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor(\r\n @Optional() public formField: MonkeyFormFieldComponent,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-autocomplete-address-');\r\n\r\n readonly inputId: string = this.idGenerator.getId('monkey-autocomplete-address-input-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'autocomplete-address';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n private readonly _addressService = inject(MonkeyEcxAddressService);\r\n\r\n private _searchEvent = new EventEmitter();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _resizeObserver?: ResizeObserver;\r\n\r\n initialDisplayWidth = 0;\r\n\r\n showPopOver = false;\r\n\r\n options: GoogleApiPlaces[] = [];\r\n\r\n readonly loadingDictionary = inject(MonkeyDictionaryService).get('LOADING');\r\n\r\n readonly noDataDictionary = inject(MonkeyDictionaryService).get('NO-DATA-ADDRESS');\r\n\r\n loading = false;\r\n\r\n searchData = '';\r\n\r\n get elementTarget() {\r\n if (this.formField?.elementRef) {\r\n return this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n }\r\n\r\n return this._elementRef.nativeElement;\r\n }\r\n\r\n @ContentChild('optionTemplate', { static: false }) optionTemplate?: TemplateRef<any>;\r\n\r\n @ViewChild('containerWrapper') containerWrapper!: ElementRef;\r\n\r\n private updateWidth() {\r\n this.initialDisplayWidth = (this.elementTarget?.offsetWidth || 0) - 12;\r\n }\r\n\r\n closePopOver = () => {\r\n setTimeout(() => {\r\n this.focused = false;\r\n this.showPopOver = false;\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n };\r\n\r\n ngAfterContentInit(): void {\r\n this._searchEvent\r\n ?.pipe(\r\n debounceTime(this.debounce),\r\n distinctUntilChanged((prev, current) => {\r\n if (prev === current) {\r\n this.loading = false;\r\n }\r\n\r\n return prev === current;\r\n }),\r\n switchMap((query) => {\r\n return this._addressService.get(query || '').pipe(\r\n catchError(() => {\r\n return of([]);\r\n })\r\n );\r\n }),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe({\r\n next: (result: any[]) => {\r\n this.openPopOver();\r\n this.options = result;\r\n this.loading = false;\r\n }\r\n });\r\n\r\n this._resizeObserver = new ResizeObserver(() => {\r\n return this.updateWidth();\r\n });\r\n this._resizeObserver.observe(this._elementRef.nativeElement);\r\n this.updateWidth();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n onClear(): void {\r\n this.searchData = '';\r\n this._onChange(null);\r\n this.onChange.emit(null);\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n if (this.options.length) {\r\n this.openPopOver();\r\n }\r\n }\r\n }\r\n\r\n _onBlur(event: FocusEvent) {\r\n const next = event?.relatedTarget as HTMLElement | null;\r\n if (next && this.containerWrapper?.nativeElement?.contains(next)) {\r\n return;\r\n }\r\n\r\n this.focused = false;\r\n this.stateChanges.next();\r\n this.closePopOver();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n openPopOver() {\r\n this.showPopOver = true;\r\n }\r\n\r\n onInputChange(event: Event) {\r\n const { value } = event.target as HTMLInputElement;\r\n this.loading = true;\r\n this._searchEvent.next(value);\r\n this.openPopOver();\r\n }\r\n\r\n onSelect(option: GoogleApiPlaces) {\r\n this.value = option;\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n this.searchData = option?.formattedAddress;\r\n this.closePopOver();\r\n }\r\n\r\n isSelected(option: GoogleApiPlaces) {\r\n return option === this.value;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './autocomplete-address.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n HostBinding,\r\n inject,\r\n input,\r\n InputSignal,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, objHaveProperty } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\ntype MonkeyAvatarSrc = { iconName: string } | { imageUrl: string } | { name: string };\r\ntype MonkeyAvatarType = 'icon' | 'image' | 'name';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-avatar',\r\n styleUrl: './avatar.component.scss',\r\n templateUrl: './avatar.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-avatar',\r\n '[attr.id]': '_id',\r\n '[id]': '_id'\r\n }\r\n})\r\nexport class MonkeyAvatarComponent {\r\n protected _id: any = inject(IdGenerator).getId('monkey-avatar-');\r\n\r\n readonly size: InputSignal<MonkeySize> = input('xs' as MonkeySize);\r\n\r\n readonly src: InputSignal<MonkeyAvatarSrc> = input.required();\r\n\r\n readonly id: InputSignal<string | undefined> = input();\r\n\r\n public avatar = '?';\r\n\r\n public avatarType: MonkeyAvatarType = 'name';\r\n\r\n @HostBinding('class')\r\n get classes(): string {\r\n return this.size();\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n this._id = this.id() || this._id;\r\n\r\n this.handleAvatarType();\r\n });\r\n }\r\n\r\n private getInitial(text: string): string {\r\n return text.toUpperCase()[0];\r\n }\r\n\r\n private handleAvatarType(): void {\r\n const { getInitial, src } = this;\r\n const value = src();\r\n\r\n if (objHaveProperty(value, 'iconName')) {\r\n this.avatarType = 'icon';\r\n this.avatar = (value as { iconName: string }).iconName;\r\n\r\n return;\r\n }\r\n\r\n if (objHaveProperty(value, 'imageUrl')) {\r\n this.avatarType = 'image';\r\n this.avatar = (value as { imageUrl: string }).imageUrl;\r\n\r\n return;\r\n }\r\n\r\n if (objHaveProperty(value, 'name')) {\r\n this.avatarType = 'name';\r\n this.avatar = getInitial((value as { name: string }).name);\r\n }\r\n }\r\n}\r\n","@switch (avatarType) {\r\n @case ('name') {\r\n <p [class]=\"size()\">{{ avatar }}</p>\r\n }\r\n\r\n @case ('icon') {\r\n <i class=\"mk-i mk-i-{{ avatar }} {{size()}}\"></i>\r\n }\r\n\r\n @case ('image') {\r\n <img loading=\"lazy\" [alt]=\"'Avatar ' + avatarType\" [class]=\"size()\" [src]=\"avatar\" />\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './avatar.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { booleanAttribute, Component, HostBinding, inject, Input } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'monkey-badge',\r\n templateUrl: './badge.component.html',\r\n styleUrl: './badge.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-badge',\r\n '[attr.id]': 'id'\r\n }\r\n})\r\nexport class MonkeyBadgeComponent {\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-badge-');\r\n\r\n @HostBinding('style') hostVariables = {};\r\n\r\n @Input() set type(value: 'success' | 'alert' | 'error' | 'info' | 'default') {\r\n const styles = {\r\n success: { background: '#F5FFFB', color: '#005236' },\r\n alert: { background: '#FFF8EB', color: '#1F2024' },\r\n error: { background: '#FFECEC', color: '#DB0505' },\r\n info: { background: '#F4EBFF', color: '#2D0264' },\r\n default: { background: '#F1F2F3', color: '#1F2024' }\r\n }[value];\r\n\r\n this.hostVariables = {\r\n '--monkey-badge-background': styles?.background,\r\n '--monkey-badge-color': styles?.color\r\n };\r\n }\r\n\r\n @Input()\r\n set typeColors(value: { background: string; color: string }) {\r\n if (value) {\r\n this.hostVariables = {\r\n '--monkey-badge-background': value?.background,\r\n '--monkey-badge-color': value?.color\r\n };\r\n }\r\n }\r\n\r\n @HostBinding('class')\r\n @Input()\r\n size: MonkeySize = 'sm';\r\n\r\n @HostBinding('class.large-padding')\r\n @Input({ transform: booleanAttribute })\r\n largePadding = false;\r\n\r\n @Input() icon: string = '';\r\n\r\n @Input() text: string = '';\r\n}\r\n","@if (text) {\r\n @if (icon) {\r\n <i class=\"mk-i mk-i-{{icon}}\"></i>\r\n }\r\n <span>\r\n {{ text }}\r\n </span>\r\n} @else {\r\n <ng-content></ng-content>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './badge.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { booleanAttribute, Component, inject, Input, ViewEncapsulation } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyBreadcrumb } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'monkey-breadcrumb',\r\n imports: [CommonModule],\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrl: './breadcrumb.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-breadcrumb',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyBreadcrumbComponent {\r\n @Input({ required: true }) first!: MonkeyBreadcrumb;\r\n\r\n @Input({ required: true }) last!: MonkeyBreadcrumb;\r\n\r\n @Input({ transform: booleanAttribute }) colapsed: boolean = false;\r\n\r\n protected _router = inject(Router);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-breadcrumb-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n handleNavigate(item: MonkeyBreadcrumb) {\r\n if (item.callback) {\r\n item.callback();\r\n } else {\r\n this._router.navigate([item.path]);\r\n }\r\n }\r\n}\r\n","<div class=\"breadcrumbs\">\r\n <a class=\"first\" (click)=\"handleNavigate(first)\">\r\n {{ first.label | titlecase }}\r\n </a>\r\n <span>/</span>\r\n @if(colapsed){\r\n <span>...</span>\r\n <span>/</span>\r\n }\r\n <a class=\"last\" (click)=\"handleNavigate(last)\">\r\n {{ last.label | titlecase }}\r\n </a>\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './breadcrumb.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { animate, keyframes, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControlDirective,\r\n FormControlName,\r\n FormGroupDirective,\r\n FormsModule,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n NgControl,\r\n NgModel,\r\n ReactiveFormsModule,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyHelperDirective } from '../../directives/helper';\r\nimport { MonkeyInfoDirective } from '../../directives/info';\r\nimport { MonkeyLabelDirective } from '../../directives/label';\r\n\r\n@Component({\r\n selector: 'monkey-checkbox',\r\n imports: [ReactiveFormsModule, FormsModule, UtilIconComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n animations: [\r\n trigger('iconAnimation', [\r\n transition(':enter', [\r\n animate(\r\n '250ms ease-in-out',\r\n keyframes([\r\n style({ opacity: 0, transform: 'scale(0.7)' }),\r\n style({ opacity: 1, transform: 'scale(1)' })\r\n ])\r\n )\r\n ]),\r\n transition(':leave', [\r\n animate(\r\n '250ms ease-in-out',\r\n keyframes([\r\n style({ opacity: 1, transform: 'scale(1)' }),\r\n style({ opacity: 0, transform: 'scale(.7)' })\r\n ])\r\n )\r\n ])\r\n ])\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => {\r\n // eslint-disable-next-line no-use-before-define\r\n return MonkeyCheckboxComponent;\r\n }),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n // eslint-disable-next-line no-use-before-define\r\n useExisting: MonkeyCheckboxComponent,\r\n multi: true\r\n }\r\n ],\r\n host: {\r\n 'data-testid': 'input-checkbox',\r\n class: 'mecx-checkbox',\r\n '[class.mecx-disabled]': 'disabled',\r\n '[class.mecx-checkbox-checked]': 'value',\r\n '[class.mecx-checkbox-focused]': 'isFocused',\r\n '[class.mecx-checkbox-indeterminate]': 'indeterminate',\r\n '[class.mecx-checkbox-invalid]': 'showInvalid',\r\n '[class.sm]': 'size.includes(\"sm\")',\r\n '[class.md]': 'size.includes(\"md\")',\r\n '[class.lg]': 'size.includes(\"lg\")'\r\n }\r\n})\r\nexport class MonkeyCheckboxComponent implements ControlValueAccessor, OnChanges, OnInit, Validator {\r\n @ContentChildren(MonkeyInfoDirective, { descendants: true })\r\n private infoChildren!: QueryList<MonkeyInfoDirective>;\r\n\r\n @ContentChildren(MonkeyLabelDirective, { descendants: true })\r\n private labelChildren!: QueryList<MonkeyLabelDirective>;\r\n\r\n @ContentChildren(MonkeyHelperDirective, { descendants: true })\r\n private helperChildren!: QueryList<MonkeyHelperDirective>;\r\n\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n @Input({ transform: booleanAttribute }) indeterminate = false;\r\n\r\n @Input({ transform: booleanAttribute }) required = false;\r\n\r\n @Input({ transform: booleanAttribute }) showFooter = true;\r\n\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Output() onChange = new EventEmitter<boolean>();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n private injector = inject(Injector);\r\n\r\n private cdr = inject(ChangeDetectorRef);\r\n\r\n control: AbstractControl<any, any> | null | undefined;\r\n\r\n readonly inputId = this.idGenerator.getId('input-checkbox-');\r\n\r\n @Input() value = false;\r\n\r\n isFocused = false;\r\n\r\n get showInvalid(): boolean {\r\n const touched = this.control?.touched || false;\r\n const invalid = this.control?.invalid || false;\r\n return !this.isFocused && touched && invalid;\r\n }\r\n\r\n get hasHeader(): boolean {\r\n return this.labelChildren.length > 0 || this.helperChildren.length > 0;\r\n }\r\n\r\n get isTouched(): boolean {\r\n return this.control?.touched ?? false;\r\n }\r\n\r\n get isInvalid(): boolean {\r\n return this.control?.invalid ?? false;\r\n }\r\n\r\n ngOnInit() {\r\n const ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\r\n\r\n if (ngControl instanceof FormControlDirective || ngControl instanceof NgModel) {\r\n this.control = ngControl.control;\r\n } else if (ngControl instanceof FormControlName) {\r\n this.control = this.injector.get(FormGroupDirective).getControl(ngControl as FormControlName);\r\n\r\n this.control.statusChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n _onValidatorChange: any = () => {};\r\n\r\n ngOnChanges(changes: any) {\r\n if (changes.required) {\r\n this._onValidatorChange();\r\n }\r\n }\r\n\r\n onBlur = () => {\r\n this._onTouched();\r\n this.isFocused = false;\r\n };\r\n\r\n onFocus = (event: any) => {\r\n if (event.relatedTarget) {\r\n this.isFocused = true;\r\n }\r\n };\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.required && control.value !== true ? { required: true } : null;\r\n }\r\n\r\n writeValue(value: boolean): void {\r\n this.value = value;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this._onValidatorChange = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onChangeEvent(event: Event): void {\r\n const checkbox = event.target as HTMLInputElement;\r\n\r\n if (this.indeterminate) {\r\n this.indeterminate = false;\r\n }\r\n\r\n this.value = checkbox.checked;\r\n this._onChange(this.value);\r\n this.onChange.next(this.value);\r\n this._onTouched();\r\n }\r\n\r\n getFooterMessages(): 'info' | 'error' | '' {\r\n const hasInfoChildren = this.infoChildren && this.infoChildren.length > 0;\r\n\r\n if (!this.disabled && this.isTouched && this.isInvalid) {\r\n return 'error';\r\n }\r\n\r\n if (hasInfoChildren) {\r\n return 'info';\r\n }\r\n\r\n return '';\r\n }\r\n}\r\n","@if (hasHeader) {\r\n <div class=\"header\">\r\n <ng-content select=\"monkey-label\" />\r\n <ng-content select=\"monkey-helper\" />\r\n </div>\r\n}\r\n<label [attr.for]=\"inputId\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"value\"\r\n [indeterminate]=\"indeterminate\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChangeEvent($event)\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus($event)\"\r\n [id]=\"inputId\"\r\n [required]=\"required\"\r\n />\r\n <span class=\"checkbox\">\r\n @if (indeterminate) {\r\n <util-icon class=\"icon\" name=\"minus\" />\r\n } @else if (value) {\r\n <util-icon class=\"icon\" name=\"check\" />\r\n }\r\n </span>\r\n <span class=\"checkbox-label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n@if (showFooter) {\r\n @switch (getFooterMessages()) {\r\n @case ('error') {\r\n <ng-content select=\"monkey-error\" />\r\n }\r\n @case ('info') {\r\n <ng-content select=\"monkey-info\" />\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './checkbox.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CurrencyPipe } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n DEFAULT_CURRENCY_CODE,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n inject,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NgControl, Validators } from '@angular/forms';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldControl } from '../form-field';\r\n\r\n@Directive({\r\n selector: 'input[monkey-input-currency]',\r\n exportAs: 'monkeyInput',\r\n host: {\r\n class: 'mecx-input',\r\n '[class.mecx-input-disabled]': 'disabled',\r\n '[id]': 'id',\r\n '[disabled]': 'disabled',\r\n '[required]': 'required',\r\n '[attr.name]': 'name || null',\r\n '[attr.disabled]': 'disabled || null',\r\n '[attr.aria-required]': 'required',\r\n '[attr.id]': 'id',\r\n '(focus)': 'focusChanged(true)',\r\n '(focusout)': 'focusOutChanged()',\r\n '(blur)': 'focusChanged(false)'\r\n },\r\n providers: [\r\n {\r\n provide: MonkeyFormFieldControl,\r\n // eslint-disable-next-line no-use-before-define\r\n useExisting: MonkeyInputCurrencyDirective\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class MonkeyInputCurrencyDirective\r\n implements MonkeyFormFieldControl, OnChanges, OnInit, OnDestroy\r\n{\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-input-currency-');\r\n\r\n protected _id!: string;\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n @Input() name!: string;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: BooleanInput) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n protected _required: boolean | undefined;\r\n\r\n protected _disabled = false;\r\n\r\n @Input()\r\n get type(): string {\r\n return this._type;\r\n }\r\n\r\n set type(value: string) {\r\n this._type = value;\r\n }\r\n\r\n protected _type = 'text';\r\n\r\n get currency(): boolean {\r\n return true;\r\n }\r\n\r\n get percent(): boolean {\r\n return false;\r\n }\r\n\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n private readonly _currencyCode = inject(DEFAULT_CURRENCY_CODE);\r\n\r\n private readonly _localeId = inject(LOCALE_ID);\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _valueChanges: Subscription | undefined;\r\n\r\n private _rawValue = 0;\r\n\r\n ngControl = inject(NgControl, { self: true, optional: true });\r\n\r\n focused: boolean = false;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private currencyPipe: CurrencyPipe\r\n ) {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n private markAsUntouched() {\r\n this.ngControl?.control?.markAsUntouched();\r\n }\r\n\r\n private focus(options?: FocusOptions): void {\r\n this._elementRef.nativeElement.focus(options);\r\n this.markAsUntouched();\r\n }\r\n\r\n private formatValue(value: string): string | null {\r\n return this.currencyPipe.transform(\r\n value,\r\n this._currencyCode || 'BRL',\r\n '',\r\n '1.2-2',\r\n this._localeId || 'pt-BR'\r\n );\r\n }\r\n\r\n private handleControlValue() {\r\n const value = this.ngControl?.control?.value;\r\n if (this._rawValue !== value) {\r\n this._rawValue = value;\r\n\r\n if (value === null || value === undefined) {\r\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\r\n this._changeDetectorRef.markForCheck();\r\n return;\r\n }\r\n\r\n let handled = value;\r\n const decimal = `${value}`.split('.')[1];\r\n if (`${decimal}`.length >= 2) {\r\n handled = `${value}`.replace(/[^0-9]/g, '');\r\n handled = `${Number(handled) / 100}`;\r\n }\r\n\r\n this.ngControl?.control?.setValue(Number(handled), { emitEvent: false, onlySelf: true });\r\n const formattedValue = this.formatValue(handled);\r\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.handleControlValue();\r\n this._valueChanges?.unsubscribe();\r\n\r\n this._valueChanges = this.ngControl?.control?.valueChanges\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this.handleControlValue();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n this._valueChanges?.unsubscribe();\r\n }\r\n\r\n ngOnChanges({ disabled }: SimpleChanges): void {\r\n if (!disabled) {\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n this.focus();\r\n }\r\n }\r\n\r\n focusChanged(isFocused: boolean) {\r\n if (isFocused === this.focused) {\r\n return;\r\n }\r\n\r\n if (isFocused && this.disabled) {\r\n const element = this._elementRef.nativeElement as HTMLInputElement;\r\n element.setSelectionRange(0, 0);\r\n }\r\n\r\n this.markAsUntouched();\r\n this.focused = isFocused;\r\n this.stateChanges.next();\r\n }\r\n\r\n focusOutChanged() {\r\n this.ngControl?.control?.markAsTouched();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { getSupportedInputTypes } from '@angular/cdk/platform';\r\n\r\nconst INPUT_INVALID_TYPES = [\r\n 'button',\r\n 'checkbox',\r\n 'file',\r\n 'image',\r\n 'radio',\r\n 'range',\r\n 'reset',\r\n 'submit'\r\n];\r\n\r\nexport function validateType(type: string) {\r\n if (INPUT_INVALID_TYPES.indexOf(type) > -1 || !getSupportedInputTypes().has(type)) {\r\n throw Error(`Input type \"${type}\" isn't supported.`);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport {\r\n booleanAttribute,\r\n Directive,\r\n ElementRef,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { NgControl, Validators } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldControl } from '../form-field';\r\nimport { validateType } from './validators';\r\n\r\n@Directive({\r\n selector: 'input[monkey-input],textarea[monkey-input]',\r\n exportAs: 'monkeyInput',\r\n host: {\r\n class: 'mecx-input',\r\n 'data-testid': 'monkey-input',\r\n '[class.mecx-input-disabled]': 'disabled',\r\n '[id]': 'id',\r\n '[disabled]': 'disabled',\r\n '[required]': 'required',\r\n '[attr.name]': 'name || null',\r\n '[attr.disabled]': 'disabled || null',\r\n '[attr.aria-required]': 'required',\r\n '[attr.id]': 'id',\r\n '(focus)': 'focusChanged(true)',\r\n '(focusout)': 'focusOutChanged()',\r\n '(blur)': 'focusChanged(false)'\r\n },\r\n providers: [\r\n {\r\n provide: MonkeyFormFieldControl,\r\n // eslint-disable-next-line no-use-before-define\r\n useExisting: MonkeyInputDirective\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class MonkeyInputDirective implements MonkeyFormFieldControl, OnChanges, OnDestroy {\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-input-');\r\n\r\n protected _id!: string;\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n @Input() name!: string;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: BooleanInput) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n protected _required: boolean | undefined;\r\n\r\n protected _disabled = false;\r\n\r\n @Input()\r\n get type(): string {\r\n return this._type;\r\n }\r\n\r\n set type(value: string) {\r\n validateType(value);\r\n this._type = value || 'text';\r\n\r\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\r\n }\r\n\r\n @Input()\r\n get min(): string {\r\n return this._min;\r\n }\r\n\r\n set min(value: string) {\r\n this._min = value;\r\n\r\n if (this._type === 'date') {\r\n (this._elementRef.nativeElement as HTMLInputElement).min = this._min;\r\n }\r\n }\r\n\r\n @Input()\r\n get max(): string {\r\n return this._max;\r\n }\r\n\r\n set max(value: string) {\r\n this._max = value;\r\n\r\n if (this._type === 'date') {\r\n (this._elementRef.nativeElement as HTMLInputElement).max = this._max;\r\n }\r\n }\r\n\r\n protected _type = 'text';\r\n\r\n protected _min!: string;\r\n\r\n protected _max!: string;\r\n\r\n get currency(): boolean {\r\n return false;\r\n }\r\n\r\n @Input()\r\n get percent(): boolean {\r\n return this._percent;\r\n }\r\n\r\n set percent(value: '') {\r\n this._percent = true;\r\n }\r\n\r\n protected _percent = false;\r\n\r\n ngControl = inject(NgControl, { self: true, optional: true });\r\n\r\n focused: boolean = false;\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n private markAsUntouched() {\r\n this.ngControl?.control?.markAsUntouched();\r\n }\r\n\r\n private focus(options?: FocusOptions): void {\r\n this._elementRef.nativeElement.focus(options);\r\n this.markAsUntouched();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n ngOnChanges({ disabled }: SimpleChanges): void {\r\n if (!disabled) {\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n this.focus();\r\n }\r\n }\r\n\r\n focusChanged(isFocused: boolean) {\r\n if (isFocused === this.focused) {\r\n return;\r\n }\r\n\r\n if (isFocused && this.disabled) {\r\n const element = this._elementRef.nativeElement as HTMLInputElement;\r\n\r\n if (element.type === 'number') {\r\n element.type = 'text';\r\n element.setSelectionRange(0, 0);\r\n element.type = 'number';\r\n } else {\r\n element.setSelectionRange(0, 0);\r\n }\r\n }\r\n\r\n this.markAsUntouched();\r\n this.focused = isFocused;\r\n this.stateChanges.next();\r\n }\r\n\r\n focusOutChanged() {\r\n this.ngControl?.control?.markAsTouched();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CurrencyPipe } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MonkeyInputCurrencyDirective } from './input-currency.directive';\r\nimport { MonkeyInputDirective } from './input.directive';\r\n\r\n@NgModule({\r\n providers: [CurrencyPipe],\r\n declarations: [MonkeyInputDirective, MonkeyInputCurrencyDirective],\r\n exports: [MonkeyInputDirective, MonkeyInputCurrencyDirective]\r\n})\r\nexport class MonkeyInputModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-currency.directive';\r\nexport * from './input.directive';\r\nexport * from './input.module';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyButtonColor } from '../../interfaces/button';\r\n\r\n@Component({\r\n selector: 'monkey-icon-button',\r\n imports: [CommonModule, UtilIconComponent],\r\n templateUrl: './icon-button.component.html',\r\n styleUrl: './icon-button.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-icon-button',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyIconButtonComponent {\r\n @Input() type: 'primary' | 'secondary' | 'tertiary' = 'primary';\r\n\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Input() disabled: boolean = false;\r\n\r\n @Input() icon = '';\r\n\r\n @Input() loading!: boolean;\r\n\r\n @Input() color: MonkeyButtonColor = 'default';\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-icon-button-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: any) {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n }\r\n}\r\n","<button\r\n class=\"mecx-icon-button\"\r\n [ngClass]=\"type + ' ' + size + ' ' + color\"\r\n [disabled]=\"disabled || loading\"\r\n>\r\n <div class=\"content\">\r\n @if (loading) {\r\n <util-icon class=\"mecx-icon-loading\" name=\"loading\" />\r\n }\r\n @if (!loading) {\r\n <i class=\"mk-i mk-i-{{icon}} {{size}}\"></i>\r\n }\r\n </div>\r\n</button>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './icon-button.component';\r\n","/* eslint-disable no-unused-vars */\r\n/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n addDays,\r\n addMonths,\r\n addYears,\r\n endOfMonth,\r\n endOfWeek,\r\n format,\r\n getMonth,\r\n getYear,\r\n isAfter,\r\n isBefore,\r\n isSameMonth,\r\n isToday,\r\n parseISO,\r\n startOfMonth,\r\n startOfWeek,\r\n subMonths,\r\n subYears\r\n} from 'date-fns';\r\n\r\nexport interface DefaultDates {\r\n minDate: string;\r\n maxDate: string;\r\n}\r\n\r\nexport interface WeekDay {\r\n date: Date | null;\r\n isDisabled: boolean;\r\n isToday: boolean;\r\n}\r\n\r\nexport interface CalendarWeekDay {\r\n blockNext: boolean;\r\n blockPrev: boolean;\r\n days: (WeekDay | null)[];\r\n}\r\n\r\nexport enum QuickActionsEnum {\r\n LAST_30_DAYS = -30,\r\n LAST_60_DAYS = -60,\r\n LAST_90_DAYS = -90,\r\n LAST_6_MONTHS = -180,\r\n LAST_12_MONTHS = -365,\r\n NEXT_30_DAYS = 30,\r\n NEXT_60_DAYS = 60,\r\n NEXT_90_DAYS = 90,\r\n NEXT_6_MONTHS = 180,\r\n NEXT_12_MONTHS = 365\r\n}\r\n\r\nexport function parseStringDate(val: Date | string) {\r\n if (typeof val === 'string') {\r\n return format(parseISO(val as string), 'yyyy-MM-dd');\r\n }\r\n\r\n return val.toISOString().split('T')[0];\r\n}\r\n\r\nexport function getDefaultdates(): DefaultDates {\r\n return {\r\n minDate: format(subYears(new Date(), 15), 'yyyy-MM-dd'),\r\n maxDate: format(addYears(new Date(), 15), 'yyyy-MM-dd')\r\n };\r\n}\r\n\r\nexport function buildCalendars(date: Date | string, action?: 'previous' | 'next') {\r\n if (action) {\r\n if (action === 'previous') {\r\n date = subMonths(date, 1);\r\n } else {\r\n date = addMonths(date, 1);\r\n }\r\n }\r\n\r\n const firstMonth = getMonth(date);\r\n const firstYear = getYear(date);\r\n\r\n const secondDate = addMonths(date, 1);\r\n\r\n const secondMonth = getMonth(secondDate);\r\n const secondYear = getYear(secondDate);\r\n\r\n return {\r\n firstCalendar: {\r\n month: firstMonth,\r\n year: firstYear\r\n },\r\n secondCalendar: {\r\n month: secondMonth,\r\n year: secondYear\r\n }\r\n };\r\n}\r\n\r\nexport function buildMonthByDays(\r\n year: number,\r\n month: number,\r\n minDate: Date | string,\r\n maxDate: Date | string\r\n): CalendarWeekDay {\r\n const date = new Date(year, month, 1);\r\n const start = startOfWeek(startOfMonth(date), { weekStartsOn: 0 });\r\n const end = endOfWeek(endOfMonth(date), { weekStartsOn: 0 });\r\n\r\n const days: (WeekDay | null)[] = [];\r\n let blockPrev = false;\r\n let blockNext = false;\r\n\r\n let current = start;\r\n while (current <= end) {\r\n const isCurrentMonth = isSameMonth(current, date);\r\n const isBeforeMin = minDate\r\n ? isBefore(parseStringDate(current), parseStringDate(minDate))\r\n : false;\r\n if (isBeforeMin) {\r\n blockPrev = true;\r\n }\r\n const isAfterMax = maxDate\r\n ? isAfter(parseStringDate(current), parseStringDate(maxDate))\r\n : false;\r\n if (isAfterMax) {\r\n blockNext = true;\r\n }\r\n\r\n days.push({\r\n date: isCurrentMonth ? current : null,\r\n isDisabled: !isCurrentMonth || isBeforeMin || isAfterMax,\r\n isToday: isToday(current)\r\n });\r\n current = addDays(current, 1);\r\n }\r\n\r\n return {\r\n blockPrev,\r\n blockNext,\r\n days\r\n };\r\n}\r\n\r\nexport function getEnumKeys(enumObj: any): any[] {\r\n return Object.entries(enumObj)\r\n .filter(([key]) => {\r\n return Number.isNaN(Number(key));\r\n })\r\n .map(([key, value]) => {\r\n return { key, value };\r\n });\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n Output\r\n} from '@angular/core';\r\nimport { format, isAfter, isWithinInterval } from 'date-fns';\r\nimport { IdGenerator } from '../../../../utils';\r\nimport { MonkeyDictionaryService } from '../../../services/dictionary.service';\r\nimport { MonkeyIconButtonComponent } from '../../icon-button';\r\nimport * as Utils from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-date-range-month',\r\n imports: [CommonModule, MonkeyIconButtonComponent],\r\n templateUrl: './month.component.html',\r\n styleUrl: './month.component.scss',\r\n host: {\r\n 'data-testid': 'month',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDateRangeMonthComponent implements OnChanges {\r\n @Input({ required: true }) month!: number;\r\n\r\n @Input({ required: true }) year!: number;\r\n\r\n @Input() set startDate(val: string) {\r\n this._handledStartDate = val;\r\n }\r\n\r\n @Input() set endDate(val: string) {\r\n this._handledEndDate = val;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n hidePrevious!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideNext!: boolean;\r\n\r\n @Input() minDate!: string;\r\n\r\n @Input() maxDate!: string;\r\n\r\n @Output() onNavigate = new EventEmitter();\r\n\r\n @Output() onDate = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-date-range-month-');\r\n\r\n protected _id!: string;\r\n\r\n private readonly _today = new Date();\r\n\r\n private _handledStartDate!: string;\r\n\r\n private _handledEndDate!: string;\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('DATE-RANGE');\r\n\r\n daysInMonth!: Utils.CalendarWeekDay;\r\n\r\n temporaryEndDate!: Utils.WeekDay | null;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.daysInMonth = Utils.buildMonthByDays(this.year, this.month, this.minDate, this.maxDate);\r\n }\r\n\r\n isFirst(param: Utils.WeekDay): boolean {\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n return (this._handledStartDate && this._handledStartDate === date) || false;\r\n }\r\n\r\n isLast(param: Utils.WeekDay): boolean {\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n return (this._handledEndDate && this._handledEndDate === date) || false;\r\n }\r\n\r\n isSelected(param: Utils.WeekDay): boolean {\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n return (\r\n (this._handledStartDate && this._handledStartDate === date) ||\r\n (this._handledEndDate && this._handledEndDate === date) ||\r\n false\r\n );\r\n }\r\n\r\n isInRange(param: Utils.WeekDay): boolean {\r\n if (!this._handledStartDate || !this._handledEndDate || !param.date) return false;\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n\r\n return isWithinInterval(new Date(date), {\r\n start: new Date(this._handledStartDate),\r\n end: new Date(this._handledEndDate)\r\n });\r\n }\r\n\r\n isInRangeTemporary(param: Utils.WeekDay): boolean {\r\n if (\r\n !this._handledStartDate ||\r\n !this.temporaryEndDate?.date ||\r\n !param.date ||\r\n param.isDisabled ||\r\n (this._handledStartDate && this._handledEndDate)\r\n )\r\n return false;\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n\r\n return isWithinInterval(new Date(date), {\r\n start: new Date(this._handledStartDate),\r\n end: new Date(this.temporaryEndDate.date)\r\n });\r\n }\r\n\r\n isInLastTemporary(param: Utils.WeekDay): boolean {\r\n if (!this.temporaryEndDate?.date || !param.date || this._handledEndDate) return false;\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n const cmp = format(this.temporaryEndDate?.date!, 'yyyy-MM-dd');\r\n return (this.temporaryEndDate?.date && cmp === date) || false;\r\n }\r\n\r\n onSelectDate(event: Event, param: Utils.WeekDay) {\r\n if (param?.isDisabled || !param.date) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const date = format(param.date, 'yyyy-MM-dd');\r\n if (this._handledStartDate && this._handledEndDate) {\r\n this._handledStartDate = '';\r\n this._handledEndDate = '';\r\n }\r\n\r\n if (!this._handledStartDate) {\r\n this._handledStartDate = date;\r\n } else {\r\n this._handledEndDate = date;\r\n }\r\n\r\n const cmp = isAfter(this._handledStartDate, this._handledEndDate);\r\n\r\n if (this._handledStartDate && this._handledEndDate && cmp) {\r\n const start = this._handledStartDate;\r\n const end = this._handledEndDate;\r\n this._handledStartDate = end;\r\n this._handledEndDate = start;\r\n }\r\n\r\n this.onDate.next({\r\n startDate: this._handledStartDate,\r\n endDate: this._handledEndDate\r\n });\r\n }\r\n}\r\n","@if (i18nDictionary | async; as i18n) {\r\n <div class=\"header\">\r\n @if (!hidePrevious) {\r\n <monkey-icon-button\r\n size=\"sm\"\r\n icon=\"arrow-left\"\r\n type=\"secondary\"\r\n class=\"previous\"\r\n [disabled]=\"daysInMonth.blockPrev\"\r\n (click)=\"onNavigate.next('previous')\"\r\n >\r\n </monkey-icon-button>\r\n }\r\n {{ i18n?.['MONTHS']?.[month] }} {{ year }}\r\n @if (!hideNext) {\r\n <monkey-icon-button\r\n size=\"sm\"\r\n icon=\"arrow-right\"\r\n type=\"secondary\"\r\n class=\"next\"\r\n [disabled]=\"daysInMonth.blockNext\"\r\n (click)=\"onNavigate.next('next')\"\r\n >\r\n </monkey-icon-button>\r\n }\r\n </div>\r\n <div class=\"week-labels\">\r\n @for (day of i18n?.['WEEK-DAYS']; track day) {\r\n <span class=\"day\">{{ day }}</span>\r\n }\r\n </div>\r\n <div class=\"dates\">\r\n @for (day of daysInMonth.days; track $index) {\r\n <div\r\n class=\"day\"\r\n [class.disabled]=\"day!.isDisabled\"\r\n [class.in-range]=\"isInRange(day!)\"\r\n [class.selected]=\"isSelected(day!)\"\r\n [class.first]=\"isFirst(day!)\"\r\n [class.last]=\"isLast(day!)\"\r\n [class.in-range-temporary]=\"isInRangeTemporary(day!)\"\r\n [class.temporary-last]=\"isInLastTemporary(day!)\"\r\n (click)=\"onSelectDate($event, day!)\"\r\n (mouseenter)=\"temporaryEndDate = day!\"\r\n (mouseleave)=\"temporaryEndDate = null\"\r\n >\r\n {{ day!.date | date: 'd' }}\r\n @if (day?.isToday) {\r\n <span class=\"today\"></span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './month.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\nimport { MonkeyDictionaryService } from '../../../services/dictionary.service';\r\nimport * as Utils from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-date-range-quick-actions',\r\n imports: [CommonModule],\r\n templateUrl: './quick-actions.component.html',\r\n styleUrl: './quick-actions.component.scss',\r\n host: {\r\n 'data-testid': 'quick-actions',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDateRangeQuickActionsComponent {\r\n @Output() onChange = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-date-range-month-quick-actions-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n selectedAction = '';\r\n\r\n readonly actions = Utils.getEnumKeys(Utils.QuickActionsEnum);\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('DATE-RANGE');\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n onHandleAction({ key, value }: { key: string; value: number }) {\r\n this.selectedAction = key;\r\n this.onChange.next(value);\r\n }\r\n}\r\n","@if (i18nDictionary | async; as i18n) {\r\n @for (item of actions; track item.key) {\r\n <div\r\n class=\"item\"\r\n [class.selected]=\"item.key === selectedAction\"\r\n (click)=\"onHandleAction(item)\"\r\n [attr.tabindex]=\"$index\"\r\n >\r\n {{ i18n?.['QUICK-ACTIONS']?.[item.key] }}\r\n </div>\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './quick-actions.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { addDays, isAfter, isBefore, subDays } from 'date-fns';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyErrorDirective } from '../../directives/error';\r\nimport { MonkeyLabelDirective } from '../../directives/label';\r\nimport { MonkeyDictionaryService } from '../../services/dictionary.service';\r\nimport { MonkeyButtonComponent } from '../button';\r\nimport { MonkeyFormFieldModule } from '../form-field';\r\nimport { MonkeyInputModule } from '../input';\r\nimport { MonkeyDateRangeMonthComponent } from './month';\r\nimport { MonkeyDateRangeQuickActionsComponent } from './quick-actions';\r\nimport * as Utils from './utils';\r\n\r\ninterface Calendar {\r\n month: number;\r\n year: number;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-date-range',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MonkeyInputModule,\r\n MonkeyFormFieldModule,\r\n MonkeyLabelDirective,\r\n MonkeyErrorDirective,\r\n MonkeyButtonComponent,\r\n MonkeyDateRangeMonthComponent,\r\n MonkeyDateRangeQuickActionsComponent\r\n ],\r\n templateUrl: './date-range.component.html',\r\n styleUrl: './date-range.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-date-range',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDateRangeComponent implements OnInit {\r\n @Input() set startDate(val: string) {\r\n this.handledStartDate = val;\r\n }\r\n\r\n @Input() set endDate(val: string) {\r\n this.handledEndDate = val;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideQuickAction!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideHeader!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideActions!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideSecondCalendar!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n allowFastActionOnHeader!: boolean;\r\n\r\n @Input() set minDate(val: Date | string) {\r\n if (val) {\r\n this.handledMinDate = Utils.parseStringDate(val);\r\n }\r\n }\r\n\r\n @Input() set maxDate(val: Date | string) {\r\n if (val) {\r\n this.handledMaxDate = Utils.parseStringDate(val);\r\n }\r\n }\r\n\r\n @Output() onCancel = new EventEmitter();\r\n\r\n @Output() onDate = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-date-range-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n private _screenWidth: number = window.innerWidth;\r\n\r\n private _allowChangeFastAction = true;\r\n\r\n private _allowChangeSecondCalendar = true;\r\n\r\n private readonly _today = new Date();\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('DATE-RANGE');\r\n\r\n handledStartDate!: string;\r\n\r\n handledEndDate!: string;\r\n\r\n firstCalendar!: Calendar;\r\n\r\n secondCalendar!: Calendar;\r\n\r\n isInvalidInterval = false;\r\n\r\n handledMinDate: string = Utils.getDefaultdates().minDate;\r\n\r\n handledMaxDate: string = Utils.getDefaultdates().maxDate;\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n private handleInitialValues() {\r\n const calendars = Utils.buildCalendars(this.handledStartDate || new Date());\r\n this.firstCalendar = calendars.firstCalendar;\r\n this.secondCalendar = calendars.secondCalendar;\r\n }\r\n\r\n private handleProperties() {\r\n if (this._screenWidth < 950) {\r\n if (this._allowChangeFastAction) {\r\n this.hideQuickAction = true;\r\n this.allowFastActionOnHeader = false;\r\n }\r\n if (this._allowChangeSecondCalendar) {\r\n this.hideSecondCalendar = true;\r\n }\r\n } else {\r\n if (this._allowChangeFastAction) {\r\n this.hideQuickAction = false;\r\n this.allowFastActionOnHeader = false;\r\n }\r\n if (this._allowChangeSecondCalendar) {\r\n this.hideSecondCalendar = false;\r\n }\r\n }\r\n }\r\n\r\n private handleInputChange(event: Event, isStart: boolean): void {\r\n const input = event.target as HTMLInputElement;\r\n const { value } = input;\r\n const [year] = value.split('-');\r\n if (`${Number(year)}`.length < 4) return;\r\n\r\n if (!input.checkValidity()) {\r\n event.preventDefault();\r\n input.value = '';\r\n this.isInvalidInterval = true;\r\n return;\r\n }\r\n\r\n this.isInvalidInterval = false;\r\n\r\n if (isStart) {\r\n this.handledStartDate = value;\r\n } else {\r\n this.handledEndDate = value;\r\n }\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any) {\r\n this._screenWidth = (event.target as Window).innerWidth;\r\n this.handleProperties();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.hideQuickAction) {\r\n this._allowChangeFastAction = false;\r\n }\r\n if (this.hideSecondCalendar) {\r\n this._allowChangeSecondCalendar = false;\r\n }\r\n if (this.allowFastActionOnHeader) {\r\n this._allowChangeFastAction = false;\r\n this.hideQuickAction = true;\r\n }\r\n\r\n this.handleInitialValues();\r\n this.handleProperties();\r\n }\r\n\r\n onHandleDate({ startDate, endDate }: { startDate: string; endDate: string }) {\r\n this.handledStartDate = startDate;\r\n this.handledEndDate = endDate;\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n onSubmit() {\r\n this.onDate.next({\r\n startDate: this.handledStartDate ?? '',\r\n endDate: this.handledEndDate ?? ''\r\n });\r\n }\r\n\r\n onHandleQuickAction(event: number) {\r\n const isBackward = event < 0;\r\n const days = Math.abs(event);\r\n\r\n if (isBackward) {\r\n const baseDate = Utils.parseStringDate(\r\n this.handledEndDate || this.handledStartDate || this._today\r\n );\r\n\r\n let startDate: string | Date = subDays(baseDate, days);\r\n\r\n if (isBefore(startDate, this.handledMinDate)) {\r\n startDate = this.handledMinDate;\r\n }\r\n\r\n this.handledStartDate = Utils.parseStringDate(startDate);\r\n this.handledEndDate = Utils.parseStringDate(baseDate);\r\n } else {\r\n const baseDate = Utils.parseStringDate(\r\n this.handledStartDate || this.handledEndDate || this._today\r\n );\r\n\r\n let endDate: string | Date = addDays(baseDate, days);\r\n\r\n if (isAfter(endDate, this.handledMaxDate)) {\r\n endDate = this.handledMaxDate;\r\n }\r\n\r\n this.handledStartDate = Utils.parseStringDate(baseDate);\r\n this.handledEndDate = Utils.parseStringDate(endDate);\r\n }\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n onChangeInputStartDate(event: Event) {\r\n this.handleInputChange(event, true);\r\n }\r\n\r\n onChangeInputEndDate(event: Event) {\r\n this.handleInputChange(event, false);\r\n }\r\n\r\n onDataChange(event: string, isStart: boolean) {\r\n if (isStart) {\r\n this.handledStartDate = event;\r\n this.handledEndDate = '';\r\n } else {\r\n this.handledEndDate = event;\r\n }\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n onHandleNavigate(action: 'previous' | 'next') {\r\n if (!action) return;\r\n const date = new Date(this.firstCalendar.year, this.firstCalendar.month, 1);\r\n const calendars = Utils.buildCalendars(date, action);\r\n this.firstCalendar = calendars.firstCalendar;\r\n this.secondCalendar = calendars.secondCalendar;\r\n }\r\n}\r\n","@if (i18nDictionary | async; as i18n) {\r\n <div class=\"container-date-range-group\">\r\n @if (!hideQuickAction) {\r\n <div class=\"quick-actions\">\r\n <monkey-date-range-quick-actions (onChange)=\"onHandleQuickAction($event)\">\r\n </monkey-date-range-quick-actions>\r\n </div>\r\n }\r\n <div class=\"container-date-range\">\r\n @if (!hideHeader) {\r\n <div class=\"header\" [class.no-quick-action]=\"hideQuickAction\">\r\n @if (allowFastActionOnHeader) {\r\n <div class=\"quick-actions\">\r\n <monkey-date-range-quick-actions (onChange)=\"onHandleQuickAction($event)\">\r\n </monkey-date-range-quick-actions>\r\n </div>\r\n } @else {\r\n <div class=\"inputs\">\r\n <monkey-form-field hideAction enableClear size=\"sm\">\r\n <monkey-label>{{ i18n?.['START-DATE'] }}</monkey-label>\r\n <input\r\n type=\"date\"\r\n monkey-input\r\n id=\"startDate\"\r\n [(ngModel)]=\"handledStartDate\"\r\n (ngModelChange)=\"onDataChange($event, true)\"\r\n [min]=\"handledMinDate\"\r\n [max]=\"handledEndDate ? handledEndDate : handledMaxDate\"\r\n (change)=\"onChangeInputStartDate($event)\"\r\n />\r\n </monkey-form-field>\r\n <monkey-form-field hideAction enableClear size=\"sm\">\r\n <monkey-label>{{ i18n?.['END-DATE'] }}</monkey-label>\r\n <input\r\n type=\"date\"\r\n monkey-input\r\n id=\"endDate\"\r\n [(ngModel)]=\"handledEndDate\"\r\n (ngModelChange)=\"onDataChange($event, false)\"\r\n [min]=\"handledStartDate ? handledStartDate : ''\"\r\n [max]=\"handledMaxDate\"\r\n (change)=\"onChangeInputEndDate($event)\"\r\n />\r\n </monkey-form-field>\r\n </div>\r\n @if (isInvalidInterval) {\r\n <monkey-error>{{ i18n?.['INVALID'] }}</monkey-error>\r\n }\r\n }\r\n </div>\r\n }\r\n <div class=\"body\">\r\n <div class=\"calendars\">\r\n <monkey-date-range-month\r\n [month]=\"firstCalendar.month\"\r\n [year]=\"firstCalendar.year\"\r\n [startDate]=\"handledStartDate\"\r\n [endDate]=\"handledEndDate\"\r\n (onDate)=\"onHandleDate($event)\"\r\n (onNavigate)=\"onHandleNavigate($event)\"\r\n [hideNext]=\"!hideSecondCalendar\"\r\n [minDate]=\"handledMinDate\"\r\n [maxDate]=\"handledMaxDate\"\r\n >\r\n </monkey-date-range-month>\r\n @if (!hideSecondCalendar) {\r\n <monkey-date-range-month\r\n [month]=\"secondCalendar.month\"\r\n [year]=\"secondCalendar.year\"\r\n [startDate]=\"handledStartDate\"\r\n [endDate]=\"handledEndDate\"\r\n (onDate)=\"onHandleDate($event)\"\r\n (onNavigate)=\"onHandleNavigate($event)\"\r\n hidePrevious\r\n [minDate]=\"handledMinDate\"\r\n [maxDate]=\"handledMaxDate\"\r\n >\r\n </monkey-date-range-month>\r\n }\r\n </div>\r\n </div>\r\n @if (!hideActions) {\r\n <div class=\"actions\">\r\n <monkey-button size=\"sm\" type=\"secondary\" (click)=\"onCancel.next(null)\">\r\n {{ i18n?.ACTIONS?.CANCEL }}\r\n </monkey-button>\r\n <monkey-button\r\n size=\"sm\"\r\n (click)=\"onSubmit()\"\r\n [disabled]=\"!this.handledStartDate || !this.handledEndDate\"\r\n >\r\n {{ i18n?.ACTIONS?.APPLY }}\r\n </monkey-button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './date-range.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n HostBinding,\r\n inject,\r\n Input,\r\n input,\r\n InputSignal,\r\n InputSignalWithTransform,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-divider',\r\n standalone: true,\r\n styleUrl: './divider.component.scss',\r\n template: '',\r\n host: {\r\n 'data-testid': 'monkey-divider',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDividerComponent {\r\n size: InputSignal<MonkeySize> = input<MonkeySize>('sm');\r\n\r\n vertical: InputSignalWithTransform<boolean, unknown> = input(false, {\r\n transform: booleanAttribute\r\n });\r\n\r\n @HostBinding('class')\r\n get classes(): string {\r\n return `${this.size()} ${this.vertical() ? 'vertical' : ''}`;\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-divider-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './divider.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeyButtonColor, MonkeyButtonType } from '../../interfaces/button';\r\nimport { MonkeySize } from '../../interfaces/sizes';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\nexport type MonkeyDownloadButtonChangeEvent = {\r\n // eslint-disable-next-line no-use-before-define\r\n component: MonkeyDownloadButtonComponent;\r\n};\r\n\r\n@Component({\r\n selector: 'monkey-download-button',\r\n imports: [MonkeyButtonComponent],\r\n template: `\r\n <monkey-button\r\n [type]=\"type\"\r\n [color]=\"color\"\r\n [size]=\"size\"\r\n [class.has-progress]=\"hasProgress\"\r\n [disabled]=\"disabled || hasProgress\"\r\n (click)=\"onDownload()\"\r\n class=\"w-100\"\r\n >\r\n <div class=\"content-download\">\r\n @if (!loading) {\r\n <ng-content select=\"[first]\"></ng-content>\r\n }\r\n <span><ng-content></ng-content></span>\r\n @if (!loading) {\r\n <ng-content select=\"[last]\"></ng-content>\r\n }\r\n </div>\r\n\r\n @if (hasProgress) {\r\n <div\r\n class=\"content-download-progress\"\r\n [style.--mecx-button-progress]=\"hasProgress ? safeProgress + '%' : null\"\r\n >\r\n <span [class.pe-2]=\"enablleMargin\">{{ safeProgress }}%</span>\r\n </div>\r\n }\r\n </monkey-button>\r\n `,\r\n styleUrl: './download-button.component.scss',\r\n host: {\r\n '[attr.data-testid]': \"'monkey-download-button'\",\r\n class: 'mecx-download-button',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex'\r\n }\r\n})\r\nexport class MonkeyDownloadButtonComponent {\r\n @Input() progress: number = 0;\r\n\r\n @Input() disabled!: boolean;\r\n\r\n @Input() color: MonkeyButtonColor = 'default';\r\n\r\n @Input() size: MonkeySize = 'md';\r\n\r\n @Input() type: MonkeyButtonType = 'primary';\r\n\r\n @Input() loading!: boolean;\r\n\r\n @Input() tabIndex = -1;\r\n\r\n @Output() onChange = new EventEmitter<MonkeyDownloadButtonChangeEvent>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-download-button-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n get safeProgress(): number {\r\n return Math.min(Math.max(this.progress, 1), 100);\r\n }\r\n\r\n get hasProgress(): boolean {\r\n return typeof this.progress === 'number' && this.progress > 0;\r\n }\r\n\r\n get enablleMargin(): boolean {\r\n return this.safeProgress === 100;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n onDownload() {\r\n this.onChange.emit({ component: this });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './download-button.component';\r\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport { computed, Injectable, signal } from '@angular/core';\nimport {\n ActiveFilter,\n AutocompleteSuggestion,\n ComplexFilterCondition,\n ComplexFilterGroup,\n ComplexFilterOperator,\n FilterBarConfig,\n FilterOption\n} from './filter-config.interface';\n\nexport interface FilterBarState {\n search: string;\n filters: ActiveFilter[];\n complexQuery?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MonkeyFilterBarService {\n private _configs = signal<Map<string, FilterBarConfig>>(new Map());\n private _activeFilters = signal<Map<string, ActiveFilter[]>>(new Map());\n private _searchValues = signal<Map<string, string>>(new Map());\n private _complexQueries = signal<Map<string, string>>(new Map());\n\n setConfig(storageKey: string, config: FilterBarConfig): void {\n this._configs.update((configs) => {\n const updated = new Map(configs);\n updated.set(storageKey, config);\n return updated;\n });\n }\n\n getConfig(storageKey: string): FilterBarConfig | undefined {\n return this._configs().get(storageKey);\n }\n\n config(storageKey: string) {\n return computed(() => this._configs().get(storageKey));\n }\n\n availableFilterOptions(storageKey: string): FilterOption[] {\n const config = this._configs().get(storageKey);\n if (!config || !config.filterOptions) return [];\n const activeKeys = this._activeFilters().get(storageKey)?.map((f) => f.key) || [];\n return config.filterOptions.filter((option) => !activeKeys.includes(option.key));\n }\n\n getActiveFilters(storageKey: string): ActiveFilter[] {\n return this._activeFilters().get(storageKey) || [];\n }\n\n activeFilters(storageKey: string) {\n return computed(() => this._activeFilters().get(storageKey) || []);\n }\n\n isFilterActive(storageKey: string, filterKey: string): boolean {\n const filters = this._activeFilters().get(storageKey) || [];\n return filters.some((f) => f.key === filterKey);\n }\n\n setActiveFilters(storageKey: string, filters: ActiveFilter[]): void {\n this._activeFilters.update((filtersMap) => {\n const updated = new Map(filtersMap);\n updated.set(storageKey, [...filters]);\n return updated;\n });\n }\n\n addFilter(\n storageKey: string,\n option: FilterOption,\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[]\n ): void {\n if (this.isFilterActive(storageKey, option.key)) return;\n const displayText = this.formatFilterValuePlain(option, value);\n const activeFilter: ActiveFilter = {\n key: option.key,\n label: option.label,\n type: option.type,\n value,\n displayText,\n icon: option.icon\n };\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n const currentFilters = updated.get(storageKey) || [];\n updated.set(storageKey, [...currentFilters, activeFilter]);\n return updated;\n });\n }\n\n updateFilter(\n storageKey: string,\n filterKey: string,\n option: FilterOption,\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[]\n ): void {\n const displayText = this.formatFilterValuePlain(option, value);\n const updatedFilter: ActiveFilter = {\n key: option.key,\n label: option.label,\n type: option.type,\n value,\n displayText,\n icon: option.icon\n };\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n const currentFilters = updated.get(storageKey) || [];\n const index = currentFilters.findIndex((f) => f.key === filterKey);\n if (index !== -1) {\n const newFilters = [...currentFilters];\n newFilters[index] = updatedFilter;\n updated.set(storageKey, newFilters);\n }\n return updated;\n });\n }\n\n removeFilter(storageKey: string, filterKey: string): void {\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n const currentFilters = updated.get(storageKey) || [];\n updated.set(storageKey, currentFilters.filter((f) => f.key !== filterKey));\n return updated;\n });\n }\n\n clearAllFilters(storageKey: string): void {\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n updated.set(storageKey, []);\n return updated;\n });\n this.clearComplexQuery(storageKey);\n }\n\n getSearchValue(storageKey: string): string {\n return this._searchValues().get(storageKey) || '';\n }\n\n searchValue(storageKey: string) {\n return computed(() => this._searchValues().get(storageKey) || '');\n }\n\n setSearchValue(storageKey: string, value: string): void {\n this._searchValues.update((values) => {\n const updated = new Map(values);\n updated.set(storageKey, value);\n return updated;\n });\n }\n\n // ─── Complex query ──────────────────────────────────────────────────────────\n\n getComplexQuery(storageKey: string): string {\n return this._complexQueries().get(storageKey) || '';\n }\n\n setComplexQuery(storageKey: string, query: string): void {\n this._complexQueries.update((map) => {\n const updated = new Map(map);\n updated.set(storageKey, query);\n return updated;\n });\n }\n\n clearComplexQuery(storageKey: string): void {\n this._complexQueries.update((map) => {\n const updated = new Map(map);\n updated.delete(storageKey);\n return updated;\n });\n }\n\n getState(storageKey: string): FilterBarState {\n const complexQuery = this.getComplexQuery(storageKey);\n return {\n search: this.getSearchValue(storageKey),\n filters: this.getActiveFilters(storageKey),\n ...(complexQuery ? { complexQuery } : {})\n };\n }\n\n state(storageKey: string) {\n return computed(() => ({\n search: this.getSearchValue(storageKey),\n filters: this.getActiveFilters(storageKey),\n complexQuery: this.getComplexQuery(storageKey) || undefined\n }));\n }\n\n // ─── Autocomplete engine ────────────────────────────────────────────────────\n\n /**\n * Returns autocomplete suggestions for the complex filter input.\n *\n * Token resolution (relative to cursorPos):\n * - Scan backwards from cursor over non-whitespace / non-paren chars → currentToken\n * - Token with operator (fieldKey[:<>]valuePrefix) → suggest status values\n * - Token without operator → suggest fields, AND/OR (after a complete term), and ( (at top level)\n */\n getAutocompleteSuggestions(\n storageKey: string,\n query: string,\n cursorPos: number\n ): AutocompleteSuggestion[] {\n const config = this._configs().get(storageKey);\n if (!config?.filterOptions?.length) return [];\n\n const textBefore = query.substring(0, cursorPos);\n\n // Current word: scan back over non-whitespace, non-paren characters\n let tokenStart = cursorPos;\n while (tokenStart > 0 && !/[\\s()]/.test(textBefore[tokenStart - 1])) tokenStart--;\n const currentToken = textBefore.substring(tokenStart);\n\n // Token has an operator → suggest status values only\n const withOperator = currentToken.match(/^([a-zA-Z_][a-zA-Z0-9_]*)([:<>])(.*)$/);\n if (withOperator) {\n const fieldKey = withOperator[1];\n const valuePrefix = withOperator[3];\n const field = config.filterOptions.find((o) => o.key === fieldKey);\n if (field?.type === 'status' && field.statusOptions?.length) {\n return field.statusOptions\n .filter((s) => s.value.toLowerCase().startsWith(valuePrefix.toLowerCase()))\n .map((s) => ({\n type: 'value' as const,\n label: s.description,\n sublabel: s.value,\n insertValue: s.value\n }));\n }\n return [];\n }\n\n const items: AutocompleteSuggestion[] = [];\n const fieldPrefix = currentToken.toLowerCase();\n\n // What comes just before the current token (trimmed)?\n const textBeforeToken = textBefore.substring(0, tokenStart).trimEnd();\n const lastNonSpace = textBeforeToken.at(-1) ?? '';\n\n // Unmatched open-paren count tells us whether we're inside a group\n const openCount = (textBefore.match(/\\(/g) ?? []).length;\n const closeCount = (textBefore.match(/\\)/g) ?? []).length;\n const parenDepth = openCount - closeCount;\n\n // A complete term or closing group precedes → AND/OR can follow\n const afterComplete =\n lastNonSpace === ')' ||\n /[a-zA-Z_][a-zA-Z0-9_]*[:<>]\\S+$/.test(textBeforeToken);\n\n if (afterComplete) {\n if ('AND'.startsWith(fieldPrefix.toUpperCase()))\n items.push({ type: 'logical', label: 'AND', insertValue: 'AND ' });\n if ('OR'.startsWith(fieldPrefix.toUpperCase()))\n items.push({ type: 'logical', label: 'OR', insertValue: 'OR ' });\n }\n\n // Suggest ( at top-level, but only when not directly after a complete term\n if (parenDepth === 0 && !afterComplete && '('.startsWith(fieldPrefix)) {\n items.push({ type: 'logical', label: '( grupo )', insertValue: '(' });\n }\n\n // Field names matching the current prefix (always, so typing after AND/OR still helps)\n config.filterOptions\n .filter((o) => o.key.toLowerCase().startsWith(fieldPrefix))\n .forEach((o) =>\n items.push({\n type: 'field',\n label: o.label,\n sublabel: o.key,\n insertValue: o.key,\n explanation: o.explanation\n })\n );\n\n return items;\n }\n\n /**\n * Parses a raw complex query string into structured groups.\n * Parenthesised expressions become a single group; bare conditions\n * each become their own single-condition group.\n *\n * Example: `(a:1 OR b:2) AND c:3` →\n * [{ conditions:[{a:1},{logicalOp:OR,b:2}] }, { logicalOp:AND, conditions:[{c:3}] }]\n */\n parseComplexQuery(raw: string): ComplexFilterGroup[] {\n if (!raw.trim()) return [];\n\n const groups: ComplexFilterGroup[] = [];\n let i = 0;\n let groupLogicalOp: 'AND' | 'OR' | undefined;\n\n const skipWS = () => {\n while (i < raw.length && raw[i] === ' ') i++;\n };\n\n const readWord = (): string => {\n const start = i;\n while (i < raw.length && raw[i] !== ' ' && raw[i] !== '(' && raw[i] !== ')') i++;\n return raw.substring(start, i);\n };\n\n const parseGroup = (): ComplexFilterCondition[] => {\n const conditions: ComplexFilterCondition[] = [];\n let condLogicalOp: 'AND' | 'OR' | undefined;\n while (i < raw.length && raw[i] !== ')') {\n skipWS();\n if (i >= raw.length || raw[i] === ')') break;\n const word = readWord();\n if (!word) { i++; continue; }\n const upper = word.toUpperCase();\n if (upper === 'AND' || upper === 'OR') {\n condLogicalOp = upper as 'AND' | 'OR';\n } else {\n const cond = this._parseConditionToken(word, condLogicalOp);\n if (cond) conditions.push(cond);\n condLogicalOp = undefined;\n }\n }\n return conditions;\n };\n\n while (i < raw.length) {\n skipWS();\n if (i >= raw.length) break;\n\n if (raw[i] === '(') {\n i++; // consume '('\n const conditions = parseGroup();\n if (raw[i] === ')') i++; // consume ')'\n if (conditions.length > 0) {\n groups.push({ ...(groupLogicalOp ? { logicalOp: groupLogicalOp } : {}), conditions });\n groupLogicalOp = undefined;\n }\n } else {\n const word = readWord();\n if (!word) { i++; continue; }\n const upper = word.toUpperCase();\n if (upper === 'AND' || upper === 'OR') {\n groupLogicalOp = upper as 'AND' | 'OR';\n } else {\n const cond = this._parseConditionToken(word, undefined);\n if (cond) {\n groups.push({ ...(groupLogicalOp ? { logicalOp: groupLogicalOp } : {}), conditions: [cond] });\n groupLogicalOp = undefined;\n }\n }\n }\n }\n\n return groups;\n }\n\n private _parseConditionToken(\n token: string,\n logicalOp?: 'AND' | 'OR'\n ): ComplexFilterCondition | null {\n const match = token.match(/^([a-zA-Z_][a-zA-Z0-9_]*)([:<>])(.+)$/);\n if (!match) return null;\n return {\n ...(logicalOp ? { logicalOp } : {}),\n field: match[1],\n operator: match[2] as ComplexFilterOperator,\n value: match[3].trim()\n };\n }\n\n private formatFilterValuePlain(\n option: FilterOption,\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[]\n ): string {\n switch (option.type) {\n case 'text':\n return value as string;\n\n case 'date': {\n const dateValue = value as { startDate: string; endDate: string };\n if (dateValue.startDate && dateValue.endDate) {\n return `${dateValue.startDate} - ${dateValue.endDate}`;\n }\n return '';\n }\n\n case 'currency': {\n const currencyValue = value as { min?: number; max?: number };\n if (currencyValue.min !== undefined && currencyValue.max !== undefined) {\n return `${currencyValue.min} - ${currencyValue.max}`;\n } else if (currencyValue.min !== undefined) {\n return `De ${currencyValue.min}`;\n } else if (currencyValue.max !== undefined) {\n return `Até ${currencyValue.max}`;\n }\n return '';\n }\n\n case 'status': {\n const statusValue = value as string[];\n if (statusValue?.length && option.statusOptions) {\n return statusValue\n .map((val) => option.statusOptions?.find((opt) => opt.value === val)?.description || val)\n .join(', ');\n }\n return '';\n }\n\n default:\n return String(value);\n }\n }\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n computed,\n effect,\n ElementRef,\n EventEmitter,\n inject,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MonkeyInfoDirective } from '../../directives/info';\nimport { MonkeyPopoverDirective } from '../../directives/popover';\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\nimport { MonkeyButtonComponent } from '../button';\nimport { MonkeyFilterBarService } from '../filter-bar/filter-bar.service';\nimport {\n AutocompleteSuggestion,\n ComplexFilterResult,\n FilterBarConfig\n} from '../filter-bar/filter-config.interface';\nimport { MonkeyFormFieldModule } from '../form-field';\nimport { MonkeyIconButtonComponent } from '../icon-button';\nimport { MonkeyInputModule } from '../input';\n\n@Component({\n selector: 'monkey-complex-filter-bar',\n imports: [\n CommonModule,\n FormsModule,\n MonkeyFormFieldModule,\n MonkeyInputModule,\n MonkeyButtonComponent,\n MonkeyIconButtonComponent,\n MonkeyPrefixDirective,\n MonkeyInfoDirective,\n MonkeyPopoverDirective\n ],\n template: `\n <!-- Query input row -->\n <div class=\"complex-filter-bar-row\">\n <div class=\"complex-filter-bar-input-wrap\">\n <monkey-form-field\n class=\"complex-filter-bar-field complex-filter-bar-field--textarea\"\n size=\"sm\"\n [class.complex-filter-bar-field--invalid]=\"!!queryError\"\n >\n <textarea\n #queryInput\n monkey-input\n class=\"complex-filter-bar-input\"\n rows=\"1\"\n autocomplete=\"off\"\n [placeholder]=\"queryPlaceholder()\"\n [(ngModel)]=\"complexQuery\"\n (focus)=\"onInputFocus(queryInput)\"\n (input)=\"onTextareaInput(queryInput)\"\n (keyup)=\"onQueryInput(queryInput)\"\n (keydown)=\"onKeydown($event, queryInput)\"\n (blur)=\"onInputBlur()\"\n ></textarea>\n <monkey-prefix>\n <i class=\"mk-i mk-i-search fs-md\"></i>\n </monkey-prefix>\n <monkey-info>\n <span class=\"me-1\">Use : to equal, > to greater then, < to lower then.</span>\n <a href=\"javascript:void(0)\" class=\"mecx-link fw-regular fs-12\" (click)=\"onShowDocs($event)\">\n <span>Docs</span>\n </a>\n </monkey-info>\n </monkey-form-field>\n\n @if (queryError) {\n <p class=\"complex-filter-bar-error-msg\">{{ queryError }}</p>\n }\n\n @if (autocompleteItems.length > 0) {\n <div class=\"complex-filter-bar-autocomplete\">\n @for (item of autocompleteItems; track item.insertValue; let i = $index) {\n <div\n class=\"complex-filter-bar-autocomplete-item\"\n [class.active]=\"i === autocompleteActiveIndex\"\n (mousedown)=\"onSelectSuggestion(item, queryInput)\"\n >\n <span class=\"complex-filter-bar-autocomplete-badge complex-filter-bar-autocomplete-badge--{{ item.type }}\">\n {{ item.type === 'field' ? 'campo' : item.type === 'logical' ? 'lógico' : 'valor' }}\n </span>\n <span class=\"complex-filter-bar-autocomplete-label\">{{ item.label }}</span>\n @if (item.sublabel) {\n <span class=\"complex-filter-bar-autocomplete-sublabel\">{{ item.sublabel }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <monkey-button size=\"sm\" type=\"primary\" [disabled]=\"!!queryError\" (click)=\"applyQuery()\">\n Aplicar\n </monkey-button>\n\n <div class=\"complex-filter-bar-extra-actions\">\n <ng-content></ng-content>\n </div>\n </div>\n\n <!-- Documentation panel popover -->\n <ng-template\n [monkeyPopover]=\"showDocsPanel\"\n [monkeyPopoverTarget]=\"docsPanelTarget\"\n [monkeyPopoverClosed]=\"closeDocs\"\n monkeyPopoverDir=\"ltr\"\n [monkeyPopoverHideHeader]=\"true\"\n >\n <div class=\"complex-filter-bar-docs-panel\">\n <div class=\"complex-filter-bar-docs-header\">\n <i class=\"mk-i mk-i-info fs-md\"></i>\n <span>Campos disponíveis</span>\n </div>\n <div class=\"complex-filter-bar-docs-body\">\n @for (opt of allFilterOptions(); track opt.key) {\n <div class=\"complex-filter-bar-docs-field\">\n <div class=\"complex-filter-bar-docs-field-row\">\n <code class=\"complex-filter-bar-docs-key\">{{ opt.key }}</code>\n <span class=\"complex-filter-bar-docs-label\">{{ opt.label }}</span>\n <div class=\"complex-filter-bar-docs-operators\">\n <span class=\"complex-filter-bar-docs-op\">:</span>\n @if (opt.type === 'currency' || opt.type === 'date') {\n <span class=\"complex-filter-bar-docs-op\">></span>\n <span class=\"complex-filter-bar-docs-op\"><</span>\n }\n </div>\n </div>\n @if (opt.explanation) {\n <p class=\"complex-filter-bar-docs-explanation\">{{ opt.explanation }}</p>\n }\n @if (opt.type === 'status' && opt.statusOptions) {\n <div class=\"complex-filter-bar-docs-values\">\n @for (s of opt.statusOptions; track s.value) {\n <code class=\"complex-filter-bar-docs-value-badge\">{{ s.value }}</code>\n }\n </div>\n }\n </div>\n }\n </div>\n <div class=\"complex-filter-bar-docs-actions\">\n <monkey-button size=\"sm\" type=\"secondary\" (click)=\"closeDocs()\">\n Fechar\n </monkey-button>\n </div>\n </div>\n </ng-template>\n `,\n styleUrl: './complex-filter-bar.component.scss',\n host: {\n '[attr.data-testid]': \"'monkey-complex-filter-bar'\",\n class: 'mecx-complex-filter-bar'\n }\n})\nexport class MonkeyComplexFilterBarComponent\n implements OnInit, OnChanges, AfterViewInit, OnDestroy\n{\n private _service = inject(MonkeyFilterBarService);\n\n key = input.required<string>();\n config = input<FilterBarConfig>();\n placeholder = input<string>();\n\n @Output() complexFilterChange = new EventEmitter<ComplexFilterResult>();\n\n @ViewChild('queryInput') private _queryInputRef?: ElementRef<HTMLTextAreaElement>;\n\n // Input state\n complexQuery = '';\n queryError = '';\n autocompleteItems: AutocompleteSuggestion[] = [];\n autocompleteActiveIndex = -1;\n\n // Docs panel state\n showDocsPanel = false;\n docsPanelTarget: HTMLElement | null = null;\n\n serviceConfig = computed(() => {\n const k = this.key();\n return k ? this._service.getConfig(k) ?? this.config() : undefined;\n });\n\n allFilterOptions = computed(() => this.serviceConfig()?.filterOptions ?? []);\n\n queryPlaceholder = computed(\n () => this.placeholder() ?? 'campo:valor AND (campo>valor OR campo<valor)'\n );\n\n hasActiveQuery = computed(() => {\n const k = this.key();\n return k ? !!this._service.getComplexQuery(k) : false;\n });\n\n constructor() {\n effect(() => {\n const k = this.key();\n const cfg = this.config();\n if (k && cfg) this._service.setConfig(k, cfg);\n });\n }\n\n ngOnInit(): void {\n const k = this.key();\n const cfg = this.config();\n if (k && cfg) this._service.setConfig(k, cfg);\n if (k) this.complexQuery = this._service.getComplexQuery(k);\n }\n\n ngAfterViewInit(): void {\n if (this.complexQuery && this._queryInputRef) {\n this._autoResize(this._queryInputRef.nativeElement);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const k = this.key();\n const cfg = this.config();\n if (k && cfg && (changes['key'] || changes['config'])) {\n this._service.setConfig(k, cfg);\n }\n }\n\n ngOnDestroy(): void {}\n\n // ─── Validation ─────────────────────────────────────────────────────────────\n\n private validateQuery(query: string): string {\n if (!query.trim()) return '';\n\n // Check balanced parentheses\n let depth = 0;\n for (const ch of query) {\n if (ch === '(') depth++;\n else if (ch === ')') depth--;\n if (depth < 0) return 'Parênteses desbalanceados';\n }\n if (depth !== 0) return 'Parênteses desbalanceados';\n\n // Check field names only on tokens that already have an operator\n const validKeys = new Set(this.allFilterOptions().map((o) => o.key));\n const tokenPattern = /([a-zA-Z_][a-zA-Z0-9_]*)([:<>])/g;\n let match: RegExpExecArray | null;\n while ((match = tokenPattern.exec(query)) !== null) {\n if (!validKeys.has(match[1])) {\n return `Campo inválido: \"${match[1]}\"`;\n }\n }\n return '';\n }\n\n // ─── Textarea helpers ────────────────────────────────────────────────────────\n\n private _autoResize(el: HTMLTextAreaElement): void {\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n }\n\n // ─── Query input handlers ───────────────────────────────────────────────────\n\n onInputFocus(textarea: HTMLTextAreaElement): void {\n const k = this.key();\n if (!k) return;\n this.autocompleteActiveIndex = -1;\n this.autocompleteItems = this._service.getAutocompleteSuggestions(\n k,\n textarea.value,\n textarea.selectionStart ?? textarea.value.length\n );\n }\n\n onTextareaInput(textarea: HTMLTextAreaElement): void {\n this._autoResize(textarea);\n }\n\n onQueryInput(textarea: HTMLTextAreaElement): void {\n const k = this.key();\n if (!k) return;\n this.queryError = this.validateQuery(textarea.value);\n this.autocompleteActiveIndex = -1;\n this.autocompleteItems = this._service.getAutocompleteSuggestions(\n k,\n textarea.value,\n textarea.selectionStart ?? textarea.value.length\n );\n }\n\n onKeydown(event: KeyboardEvent, textarea: HTMLTextAreaElement): void {\n if (event.key === 'Escape') {\n this.autocompleteItems = [];\n this.autocompleteActiveIndex = -1;\n return;\n }\n\n if (this.autocompleteItems.length > 0) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.autocompleteActiveIndex = Math.min(\n this.autocompleteActiveIndex + 1,\n this.autocompleteItems.length - 1\n );\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.autocompleteActiveIndex = Math.max(this.autocompleteActiveIndex - 1, -1);\n return;\n }\n if ((event.key === 'Enter' || event.key === 'Tab') && this.autocompleteActiveIndex >= 0) {\n event.preventDefault();\n this.onSelectSuggestion(this.autocompleteItems[this.autocompleteActiveIndex], textarea);\n return;\n }\n }\n\n // Ctrl+Enter / Cmd+Enter applies the query; plain Enter inserts a newline\n if (event.key === 'Enter' && (event.ctrlKey || event.metaKey)) {\n event.preventDefault();\n this.applyQuery();\n }\n }\n\n onSelectSuggestion(item: AutocompleteSuggestion, textarea: HTMLTextAreaElement): void {\n const k = this.key();\n if (!k) return;\n\n const cursorPos = textarea.selectionStart ?? textarea.value.length;\n const textBefore = this.complexQuery.substring(0, cursorPos);\n const textAfter = this.complexQuery.substring(cursorPos);\n\n // Find start of current token (scan back over non-whitespace, non-paren chars)\n let tokenStart = cursorPos;\n while (tokenStart > 0 && !/[\\s()]/.test(textBefore[tokenStart - 1])) tokenStart--;\n\n let replacement: string;\n\n if (item.type === 'value') {\n const currentToken = textBefore.substring(tokenStart);\n const opMatch = currentToken.match(/^([a-zA-Z_][a-zA-Z0-9_]*)([:<>])(.*)$/);\n replacement = opMatch\n ? textBefore.substring(0, tokenStart) + opMatch[1] + opMatch[2] + item.insertValue\n : textBefore.substring(0, tokenStart) + item.insertValue;\n } else {\n replacement = textBefore.substring(0, tokenStart) + item.insertValue;\n }\n\n this.complexQuery = replacement + textAfter;\n this.queryError = this.validateQuery(this.complexQuery);\n this.autocompleteItems = [];\n this.autocompleteActiveIndex = -1;\n\n setTimeout(() => {\n textarea.focus();\n const newCursor = replacement.length;\n textarea.setSelectionRange(newCursor, newCursor);\n this._autoResize(textarea);\n this.autocompleteItems = this._service.getAutocompleteSuggestions(\n k,\n this.complexQuery,\n newCursor\n );\n });\n }\n\n onInputBlur(): void {\n setTimeout(() => {\n this.autocompleteItems = [];\n this.autocompleteActiveIndex = -1;\n }, 150);\n }\n\n applyQuery(): void {\n const k = this.key();\n if (!k) return;\n const trimmed = this.complexQuery.trim();\n if (!trimmed) {\n this.clearQuery();\n return;\n }\n this.queryError = this.validateQuery(trimmed);\n if (this.queryError) return;\n this._service.setComplexQuery(k, trimmed);\n const groups = this._service.parseComplexQuery(trimmed);\n this.complexFilterChange.emit({ raw: trimmed, groups });\n }\n\n clearQuery(): void {\n const k = this.key();\n if (k) this._service.clearComplexQuery(k);\n this.complexQuery = '';\n this.queryError = '';\n this.autocompleteItems = [];\n if (this._queryInputRef) this._autoResize(this._queryInputRef.nativeElement);\n this.complexFilterChange.emit({ raw: '', groups: [] });\n }\n\n // ─── Docs panel ─────────────────────────────────────────────────────────────\n\n onShowDocs(event: MouseEvent): void {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.docsPanelTarget = event.currentTarget as HTMLElement;\n this.showDocsPanel = true;\n }\n\n closeDocs = () => {\n this.showDocsPanel = false;\n };\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './complex-filter-bar.component';\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n Optional,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeySize } from '../../interfaces';\r\nimport { MonkeyFormFieldControl } from '../form-field/form-field-control';\r\nimport { MonkeyFormFieldComponent } from '../form-field/form-field.component';\r\nimport { MonkeyOptionComponent } from '../option/option.component';\r\n\r\n@Component({\r\n selector: 'monkey-radiobutton',\r\n imports: [ReactiveFormsModule, FormsModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: 'radio-button.component.html',\r\n styleUrls: ['./radio-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyRadioButtonComponent }\r\n ],\r\n host: {\r\n 'data-testid': 'monkey-radiobutton',\r\n class: 'mecx-radiobutton',\r\n '[class.mecx-disabled]': 'disabled',\r\n '[class.mecx-radiobutton-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyRadioButtonComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit\r\n{\r\n @ContentChildren(MonkeyOptionComponent) options!: QueryList<MonkeyOptionComponent>;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Output() onSearch = new EventEmitter();\r\n\r\n @Input() position = 'horizontal';\r\n\r\n @Input()\r\n size: MonkeySize = 'lg';\r\n\r\n @HostBinding('class')\r\n get classes() {\r\n return `${this.position} ${this.size}`;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value) {\r\n this._value = value;\r\n this._onChange(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value = null;\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n focused: boolean = false;\r\n\r\n _disabled: boolean = false;\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-radiobutton-');\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n readonly type: string = 'radio-button';\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef,\r\n @Optional() private formField: MonkeyFormFieldComponent\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n private changeSelected() {\r\n setTimeout(() => {\r\n if (this.options) {\r\n this.options.forEach((opt) => {\r\n opt.onSelect(opt.value() === this.value);\r\n });\r\n }\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n private initializeOptions() {\r\n setTimeout(() => {\r\n this.options?.forEach((option) => {\r\n option.type = 'radio';\r\n if (!option.action) {\r\n option.action = this.selectOption.bind(this, option);\r\n }\r\n });\r\n this.changeDetectorRef.markForCheck();\r\n }, 0);\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initializeOptions();\r\n this.options.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\r\n this.initializeOptions();\r\n this.changeSelected();\r\n });\r\n }\r\n\r\n selectOption(option: MonkeyOptionComponent): void {\r\n if (!option.disabled && !this.disabled) {\r\n this.value = option.value();\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n\r\n this.options.forEach((opt) => {\r\n opt.onSelect(opt.value() === this.value);\r\n });\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n this.changeSelected();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (this.disabled) return;\r\n\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n this.initializeOptions();\r\n }\r\n}\r\n","<ng-content />\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './radio-button.component';\r\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n effect,\n ElementRef,\n EventEmitter,\n inject,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n signal,\n SimpleChanges\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { addDays, addMonths, format, subDays, subMonths } from 'date-fns';\nimport { MonkeyLabelDirective } from '../../directives/label';\nimport { MonkeyPopoverDirective } from '../../directives/popover';\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\nimport { MonkeyBadgeComponent } from '../badge';\nimport { MonkeyButtonComponent } from '../button';\nimport { MonkeyCheckboxComponent } from '../checkbox';\nimport { MonkeyDateRangeComponent } from '../date-range';\nimport { MonkeyDividerComponent } from '../divider';\nimport { MonkeyFilterBarService } from '../filter-bar/filter-bar.service';\nimport { ActiveFilter, FilterBarConfig, FilterOption } from '../filter-bar/filter-config.interface';\nimport { MonkeyFormFieldModule } from '../form-field';\nimport { MonkeyIconButtonComponent } from '../icon-button';\nimport { MonkeyInputModule } from '../input';\nimport { MonkeyOptionComponent } from '../option';\nimport { MonkeyRadioButtonComponent } from '../radio-button';\n\n@Component({\n selector: 'monkey-filter-bar',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MonkeyFormFieldModule,\n MonkeyInputModule,\n MonkeyButtonComponent,\n MonkeyOptionComponent,\n MonkeyPopoverDirective,\n MonkeyDateRangeComponent,\n MonkeyBadgeComponent,\n MonkeyLabelDirective,\n MonkeyDividerComponent,\n MonkeyRadioButtonComponent,\n MonkeyIconButtonComponent,\n MonkeyPrefixDirective,\n MonkeyCheckboxComponent\n ],\n template: `\n <!-- Top action bar -->\n <div class=\"filter-bar-top-bar\">\n <monkey-form-field class=\"filter-bar-search-field\" size=\"sm\">\n <input\n type=\"text\"\n monkey-input\n [placeholder]=\"searchPlaceholder()\"\n [ngModel]=\"searchValue()\"\n (ngModelChange)=\"onSearchChange($event)\"\n />\n <monkey-prefix>\n <i class=\"mk-i mk-i-search fs-md\"></i>\n </monkey-prefix>\n </monkey-form-field>\n\n <monkey-button\n #addFilterBtn\n type=\"secondary\"\n size=\"sm\"\n (click)=\"onShowFilterMenu(addFilterBtn)\"\n >\n <i class=\"mk-i mk-i-add-plus fs-md\" first></i>\n Adicionar Filtro\n </monkey-button>\n\n <div class=\"filter-bar-extra-actions\">\n <ng-content></ng-content>\n </div>\n </div>\n\n <!-- Filter options popover -->\n <ng-template\n [monkeyPopover]=\"showFilterMenu\"\n [monkeyPopoverTarget]=\"filterMenuTarget\"\n [monkeyPopoverClosed]=\"closeFilterMenu\"\n monkeyPopoverDir=\"ltr\"\n [monkeyPopoverHideHeader]=\"true\"\n >\n @for (\n option of availableFilterOptions();\n track option.key;\n let i = $index;\n let first = $first;\n let last = $last\n ) {\n <div\n [id]=\"getOptionId(option.key)\"\n class=\"filter-bar-option-item\"\n [class.first]=\"first\"\n [class.disabled]=\"isFilterActive(option.key)\"\n (click)=\"onSelectOption(option)\"\n >\n @if (option.icon) {\n <i [class]=\"'mk-i mk-i-' + option.icon + ' fs-md'\"></i>\n }\n <span>{{ option.label }}</span>\n @if (isFilterActive(option.key)) {\n <i class=\"mk-i mk-i-check fs-sm filter-bar-active-check\"></i>\n }\n </div>\n @if (!last && availableFilterOptions()[i + 1]?.type !== option.type) {\n <monkey-divider />\n }\n }\n </ng-template>\n\n <!-- Date quick-pick submenu popover -->\n <ng-template\n [monkeyPopover]=\"showDateSubmenu\"\n [monkeyPopoverTarget]=\"dateSubmenuTarget\"\n [monkeyPopoverClosed]=\"closeDateSubmenu\"\n monkeyPopoverDir=\"rt\"\n [monkeyPopoverHideHeader]=\"true\"\n >\n <div class=\"filter-bar-filter-panel\">\n <div class=\"filter-bar-filter-header\">\n @if (activeOption()?.icon) {\n <i [class]=\"'mk-i mk-i-' + activeOption()!.icon + ' fs-md'\"></i>\n }\n <span>{{ activeOption()?.label }}</span>\n </div>\n\n <div class=\"filter-bar-option-item first\" (click)=\"onQuickDate('1-week-after')\">\n 1 semana a partir de hoje\n </div>\n <div class=\"filter-bar-option-item\" (click)=\"onQuickDate('1-month-after')\">\n 1 mês a partir de hoje\n </div>\n <div class=\"filter-bar-option-item\" (click)=\"onQuickDate('3-months-after')\">\n 3 meses a partir de hoje\n </div>\n <div class=\"filter-bar-option-item\" (click)=\"onQuickDate('1-week-before')\">\n 1 semana antes de hoje\n </div>\n <div class=\"filter-bar-option-item\" (click)=\"onQuickDate('1-month-before')\">\n 1 mês antes de hoje\n </div>\n <div class=\"filter-bar-option-item\" (click)=\"onQuickDate('3-months-before')\">\n 3 meses antes de hoje\n </div>\n <div class=\"filter-bar-option-item\" (click)=\"onQuickDate('custom')\">Personalizado</div>\n </div>\n </ng-template>\n\n <!-- Filter input popover (text / date / currency / status) -->\n <ng-template\n [monkeyPopover]=\"showFilterInput\"\n [monkeyPopoverTarget]=\"filterInputTarget\"\n [monkeyPopoverClosed]=\"closeFilterInput\"\n [monkeyPopoverDir]=\"isEditingFilter ? 'ltr' : 'rt'\"\n [monkeyPopoverHideHeader]=\"true\"\n >\n <div class=\"filter-bar-filter-panel\">\n <div class=\"filter-bar-filter-header\">\n @if (activeOption()?.icon) {\n <i [class]=\"'mk-i mk-i-' + activeOption()!.icon + ' fs-md'\"></i>\n }\n <span>{{ activeOption()?.label }}</span>\n </div>\n\n @if (activeOption(); as opt) {\n @if (opt.type === 'text') {\n <div class=\"filter-bar-filter-body\">\n <monkey-form-field size=\"sm\">\n <input\n type=\"text\"\n monkey-input\n [placeholder]=\"opt.placeholder || 'Digite o valor'\"\n [(ngModel)]=\"textValue\"\n (keyup.enter)=\"onApply()\"\n />\n </monkey-form-field>\n </div>\n }\n\n @if (opt.type === 'date' && showCustomDate) {\n <monkey-date-range\n [startDate]=\"dateRange.startDate\"\n [endDate]=\"dateRange.endDate\"\n (onDate)=\"onDateChange($event)\"\n ></monkey-date-range>\n }\n\n @if (opt.type === 'currency') {\n <div class=\"filter-bar-currency-body\">\n <monkey-radiobutton [(ngModel)]=\"currencyMode\" position=\"vertical\" size=\"sm\">\n <monkey-option [value]=\"'from'\">De</monkey-option>\n <monkey-option [value]=\"'until'\">Até</monkey-option>\n </monkey-radiobutton>\n <monkey-form-field size=\"sm\">\n <input\n type=\"text\"\n monkey-input-currency\n [placeholder]=\"currencyMode === 'from' ? 'Valor mínimo' : 'Valor máximo'\"\n [(ngModel)]=\"currencyValue\"\n (keyup.enter)=\"onApply()\"\n />\n </monkey-form-field>\n </div>\n }\n\n @if (opt.type === 'status' && opt.statusOptions) {\n <div class=\"filter-bar-status-body\">\n @for (s of opt.statusOptions; track s.value) {\n <monkey-checkbox\n [value]=\"statusValues.includes(s.value)\"\n (onChange)=\"onStatusChange(s.value, $event)\"\n size=\"sm\"\n >\n {{ s.description }}\n </monkey-checkbox>\n }\n </div>\n }\n\n @if (opt.type !== 'date') {\n <div class=\"filter-bar-filter-actions\">\n <monkey-button size=\"sm\" type=\"secondary\" (click)=\"closeFilterInput()\">\n Cancelar\n </monkey-button>\n <monkey-button size=\"sm\" type=\"primary\" (click)=\"onApply()\">\n Aplicar\n </monkey-button>\n </div>\n }\n }\n </div>\n </ng-template>\n\n <!-- Active filters row -->\n @if (activeFilters().length > 0) {\n <div class=\"filter-bar-active-bar\">\n <monkey-icon-button\n type=\"secondary\"\n size=\"sm\"\n icon=\"trash\"\n (click)=\"onClearAll()\"\n ></monkey-icon-button>\n\n <div class=\"filter-bar-active-scroll\">\n @for (f of activeFilters(); track f.key) {\n <div\n class=\"filter-bar-filter-tag\"\n [id]=\"getActiveFilterId(f.key)\"\n (click)=\"onEditFilter(f)\"\n >\n @if (f.icon) {\n <i [class]=\"'mk-i mk-i-' + f.icon + ' fs-sm'\"></i>\n }\n <span class=\"filter-bar-tag-label\">{{ f.label }}:</span>\n <span class=\"filter-bar-tag-value\">{{ f.displayText }}</span>\n <div class=\"filter-bar-tag-remove\">\n <monkey-icon-button\n type=\"tertiary\"\n color=\"error\"\n size=\"sm\"\n icon=\"close\"\n (click)=\"onRemoveFilter(f.key, $event)\"\n ></monkey-icon-button>\n </div>\n </div>\n }\n </div>\n </div>\n }\n `,\n styleUrl: './filter-bar.component.scss',\n host: {\n '[attr.data-testid]': \"'monkey-filter-bar'\",\n class: 'mecx-filter-bar'\n }\n})\nexport class MonkeyFilterBarComponent implements OnInit, OnChanges, OnDestroy {\n protected _elementRef = inject(ElementRef);\n private _service = inject(MonkeyFilterBarService);\n\n key = input.required<string>();\n config = input<FilterBarConfig>();\n\n @Output() filtersChange = new EventEmitter<{ search?: string; filters: ActiveFilter[] }>();\n @Output() searchChange = new EventEmitter<string>();\n\n showFilterMenu = false;\n showDateSubmenu = false;\n showFilterInput = false;\n filterMenuTarget: HTMLElement | null = null;\n dateSubmenuTarget: HTMLElement | null = null;\n filterInputTarget: HTMLElement | null = null;\n isEditingFilter = false;\n\n activeOption = signal<FilterOption | null>(null);\n textValue = '';\n currencyValue: number | null = null;\n currencyMode: 'from' | 'until' = 'from';\n statusValues: string[] = [];\n dateRange = { startDate: '', endDate: '' };\n showCustomDate = false;\n\n serviceConfig = computed(() => {\n const k = this.key();\n return k ? this._service.getConfig(k) ?? this.config() : undefined;\n });\n\n activeFilters = computed(() => {\n const k = this.key();\n return k ? this._service.getActiveFilters(k) : [];\n });\n\n searchValue = computed(() => {\n const k = this.key();\n return k ? this._service.getSearchValue(k) : '';\n });\n\n searchPlaceholder = computed(() => this.serviceConfig()?.searchPlaceholder ?? 'Pesquisar...');\n\n constructor() {\n effect(() => {\n const k = this.key();\n const cfg = this.config();\n if (k && cfg) this._service.setConfig(k, cfg);\n });\n }\n\n ngOnInit(): void {\n const k = this.key();\n const cfg = this.config();\n if (k && cfg) this._service.setConfig(k, cfg);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const k = this.key();\n const cfg = this.config();\n if (k && cfg && (changes['key'] || changes['config'])) {\n this._service.setConfig(k, cfg);\n }\n }\n\n ngOnDestroy(): void {}\n\n availableFilterOptions(): FilterOption[] {\n const k = this.key();\n return k ? this._service.availableFilterOptions(k) : [];\n }\n\n isFilterActive(filterKey: string): boolean {\n const k = this.key();\n return k ? this._service.isFilterActive(k, filterKey) : false;\n }\n\n getOptionId(optionKey: string): string {\n return `filter-bar-opt-${this.key()}-${optionKey}`;\n }\n\n getActiveFilterId(filterKey: string): string {\n return `filter-bar-active-${this.key()}-${filterKey}`;\n }\n\n onShowFilterMenu(btn: MonkeyButtonComponent): void {\n this.filterMenuTarget = btn.element;\n this.showFilterMenu = true;\n }\n\n onSelectOption(option: FilterOption): void {\n if (this.isFilterActive(option.key)) return;\n this.activeOption.set(option);\n const optEl = document.getElementById(this.getOptionId(option.key));\n if (!optEl) return;\n if (option.type === 'date') {\n this.dateSubmenuTarget = optEl;\n this.showCustomDate = false;\n this.showDateSubmenu = true;\n } else {\n this.filterInputTarget = optEl;\n this.isEditingFilter = false;\n this._resetInputState();\n this.showFilterInput = true;\n }\n }\n\n onQuickDate(preset: string): void {\n const k = this.key();\n const opt = this.activeOption();\n if (!k || !opt || opt.type !== 'date') return;\n const today = new Date();\n if (preset === 'custom') {\n this.closeDateSubmenu();\n this.showCustomDate = true;\n this.dateRange = { startDate: '', endDate: '' };\n this.filterInputTarget = this.dateSubmenuTarget;\n this.showFilterInput = true;\n return;\n }\n let start: Date;\n let end: Date = today;\n switch (preset) {\n case '1-week-after':\n start = today;\n end = addDays(today, 7);\n break;\n case '1-month-after':\n start = today;\n end = addMonths(today, 1);\n break;\n case '3-months-after':\n start = today;\n end = addMonths(today, 3);\n break;\n case '1-week-before':\n start = subDays(today, 7);\n break;\n case '1-month-before':\n start = subMonths(today, 1);\n break;\n case '3-months-before':\n start = subMonths(today, 3);\n break;\n default:\n return;\n }\n const value = {\n startDate: format(start!, 'yyyy-MM-dd'),\n endDate: format(end, 'yyyy-MM-dd')\n };\n this._service.addFilter(k, opt, value);\n this.closeDateSubmenu();\n this.closeFilterMenu();\n this._emit();\n }\n\n onDateChange(event: { startDate: string; endDate: string }): void {\n this.dateRange = event;\n if (event.startDate && event.endDate) {\n setTimeout(() => this.onApply(), 100);\n }\n }\n\n onStatusChange(val: string, checked: boolean): void {\n if (checked) {\n if (!this.statusValues.includes(val)) this.statusValues = [...this.statusValues, val];\n } else {\n this.statusValues = this.statusValues.filter((v) => v !== val);\n }\n }\n\n onApply(): void {\n const k = this.key();\n const opt = this.activeOption();\n if (!k || !opt) return;\n let value: any;\n switch (opt.type) {\n case 'text':\n if (!this.textValue.trim()) return;\n value = this.textValue.trim();\n break;\n case 'date':\n if (!this.dateRange.startDate || !this.dateRange.endDate) return;\n value = { startDate: this.dateRange.startDate, endDate: this.dateRange.endDate };\n break;\n case 'currency': {\n const raw = this.currencyValue;\n if (raw === null || raw === undefined) return;\n value =\n this.currencyMode === 'from'\n ? { min: raw, max: undefined }\n : { min: undefined, max: raw };\n break;\n }\n case 'status':\n if (this.statusValues.length === 0) return;\n value = [...this.statusValues];\n break;\n default:\n return;\n }\n const isEditing = this._service.isFilterActive(k, opt.key);\n if (isEditing) {\n this._service.updateFilter(k, opt.key, opt, value);\n } else {\n this._service.addFilter(k, opt, value);\n }\n this.closeFilterInput();\n this.closeFilterMenu();\n this._emit();\n }\n\n onEditFilter(filter: ActiveFilter): void {\n const k = this.key();\n if (!k) return;\n const cfg = this.serviceConfig();\n const opt = cfg?.filterOptions.find((o) => o.key === filter.key);\n if (!opt) return;\n this.activeOption.set(opt);\n switch (filter.type) {\n case 'text':\n this.textValue = filter.value as string;\n break;\n case 'date': {\n const dv = filter.value as { startDate: string; endDate: string };\n this.dateRange = { startDate: dv.startDate ?? '', endDate: dv.endDate ?? '' };\n this.showCustomDate = true;\n break;\n }\n case 'currency': {\n const cv = filter.value as { min?: number; max?: number };\n if (cv.min !== undefined) {\n this.currencyMode = 'from';\n this.currencyValue = cv.min;\n } else if (cv.max !== undefined) {\n this.currencyMode = 'until';\n this.currencyValue = cv.max;\n }\n break;\n }\n case 'status':\n this.statusValues = [...((filter.value as string[]) ?? [])];\n break;\n }\n const tagEl = document.getElementById(this.getActiveFilterId(filter.key));\n if (tagEl) {\n this.filterInputTarget = tagEl;\n this.isEditingFilter = true;\n this.showFilterInput = true;\n }\n }\n\n onRemoveFilter(filterKey: string, event: Event): void {\n event.stopPropagation();\n const k = this.key();\n if (!k) return;\n this._service.removeFilter(k, filterKey);\n this._emit();\n }\n\n onClearAll(): void {\n const k = this.key();\n if (!k) return;\n this._service.clearAllFilters(k);\n this._emit();\n }\n\n onSearchChange(value: string): void {\n const k = this.key();\n if (!k) return;\n this._service.setSearchValue(k, value);\n this.searchChange.emit(value);\n this._emit();\n }\n\n closeFilterMenu = () => {\n this.showFilterMenu = false;\n };\n\n closeDateSubmenu = () => {\n this.showDateSubmenu = false;\n };\n\n closeFilterInput = () => {\n this.showFilterInput = false;\n this.showCustomDate = false;\n this.isEditingFilter = false;\n this.activeOption.set(null);\n this._resetInputState();\n };\n\n private _resetInputState(): void {\n this.textValue = '';\n this.currencyValue = null;\n this.currencyMode = 'from';\n this.statusValues = [];\n this.dateRange = { startDate: '', endDate: '' };\n }\n\n private _emit(): void {\n const k = this.key();\n if (!k) return;\n const state = this._service.getState(k);\n this.filtersChange.emit({ search: state.search, filters: state.filters });\n }\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nexport type FilterType = 'text' | 'date' | 'currency' | 'status';\n\nexport interface StatusOption {\n value: string;\n description: string;\n}\n\nexport interface FilterOption {\n key: string;\n label: string;\n icon?: string;\n type: FilterType;\n placeholder?: string;\n minDate?: Date | string;\n maxDate?: Date | string;\n currency?: string;\n statusOptions?: StatusOption[];\n /** Human-readable explanation shown in the complex filter documentation panel */\n explanation?: string;\n}\n\nexport interface ActiveFilter {\n key: string;\n label: string;\n type: FilterType;\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[];\n displayText: string;\n icon?: string;\n}\n\nexport interface FilterBarConfig {\n filterOptions: FilterOption[];\n searchPlaceholder?: string;\n}\n\n// ─── Complex filter types ────────────────────────────────────────────────────\n\nexport type ComplexFilterOperator = ':' | '>' | '<';\n\nexport interface ComplexFilterCondition {\n logicalOp?: 'AND' | 'OR';\n field: string;\n operator: ComplexFilterOperator;\n value: string;\n}\n\nexport interface ComplexFilterGroup {\n /** Logical operator connecting this group to the previous one */\n logicalOp?: 'AND' | 'OR';\n conditions: ComplexFilterCondition[];\n}\n\nexport interface ComplexFilterResult {\n raw: string;\n groups: ComplexFilterGroup[];\n}\n\nexport type AutocompleteSuggestionType = 'field' | 'logical' | 'value';\n\nexport interface AutocompleteSuggestion {\n type: AutocompleteSuggestionType;\n label: string;\n /** Field key shown as secondary text for field suggestions */\n sublabel?: string;\n /** Text spliced into the query when the suggestion is selected */\n insertValue: string;\n explanation?: string;\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './filter-bar.component';\nexport * from './filter-bar.service';\nexport * from './filter-config.interface';\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n signal,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\n\nexport type MonkeyScrollbarOrientation = 'horizontal' | 'vertical';\n\n/** `small` = 8px track (menus) · `medium` = 16px (page bar, what the table uses). */\nexport type MonkeyScrollbarSize = 'small' | 'medium';\n\n/**\n * Shortest the thumb may get, in px — matches the `--mecx-spaces-medium`\n * floor in the stylesheet. A very long list would otherwise give a 2px thumb,\n * too small to grab.\n */\nconst MIN_THUMB = 24;\n\n/**\n * A DRAWN scrollbar, not the native one styled — a native scrollbar can't\n * live outside the element that scrolls (e.g. below a table's rows, next to\n * its footer), and cross-browser track styling (radius, border) is\n * inconsistent enough that matching a design exactly isn't reliable with\n * `::-webkit-scrollbar`/`scrollbar-color` alone.\n *\n * It does NOT replace real scrolling: `target` keeps its own\n * `overflow: auto`, so keyboard, wheel and trackpad scrolling all keep\n * working — this is a draggable mirror drawn on top. That's also why it's\n * `aria-hidden`: a screen reader user scrolls the real region, and a second\n * widget announcing the same position would only add noise.\n */\n@Component({\n selector: 'monkey-scrollbar',\n templateUrl: './scrollbar.component.html',\n styleUrl: './scrollbar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'mecx-scrollbar',\n 'aria-hidden': 'true',\n '[class.mecx-scrollbar--horizontal]': \"orientation() === 'horizontal'\",\n '[class.mecx-scrollbar--vertical]': \"orientation() === 'vertical'\",\n '[class.mecx-scrollbar--small]': \"size() === 'small'\",\n '[class.mecx-scrollbar--medium]': \"size() === 'medium'\",\n '[class.mecx-scrollbar--inert]': '!scrollable()'\n }\n})\nexport class MonkeyScrollbarComponent implements OnDestroy {\n private readonly _zone = inject(NgZone);\n\n readonly orientation = input<MonkeyScrollbarOrientation>('horizontal');\n\n readonly size = input<MonkeyScrollbarSize>('medium');\n\n /** The element that actually scrolls. */\n readonly target = input.required<HTMLElement>();\n\n private readonly trackEl = viewChild.required<ElementRef<HTMLElement>>('track');\n\n /** Scrollable length of the content, in px. */\n private readonly total = signal(0);\n\n /** Visible length of the viewport, in px. */\n private readonly visible = signal(0);\n\n /** How far the target is scrolled, in px. */\n private readonly scrolled = signal(0);\n\n /** Length of the track the thumb slides along, in px. */\n private readonly trackLength = signal(0);\n\n protected readonly scrollable = computed(() => this.total() - this.visible() > 1);\n\n protected readonly thumbSize = computed(() => {\n const total = this.total();\n return `${total > 0 ? Math.min(1, this.visible() / total) * 100 : 100}%`;\n });\n\n /**\n * A px distance, applied as a `translate`, not as `left`/`top`: moving the\n * thumb then costs a composited transform instead of a layout pass on every\n * scroll frame. It has to be px rather than a percentage of the thumb\n * because the thumb has a minimum length — once that kicks in, a\n * percentage of its own (clamped) size no longer maps to track distance.\n */\n protected readonly thumbOffset = computed(() => {\n const total = this.total();\n const visible = this.visible();\n const track = this.trackLength();\n if (total <= 0 || track <= 0) return '0px';\n\n const thumb = Math.max(MIN_THUMB, (visible / total) * track);\n const free = Math.max(0, track - thumb);\n const progress = Math.min(1, Math.max(0, this.scrolled() / Math.max(1, total - visible)));\n return `${free * progress}px`;\n });\n\n private resizeObserver?: ResizeObserver;\n\n private observedTarget?: HTMLElement;\n\n /** Pending animation frame, 0 when none is queued. */\n private frame = 0;\n\n /** Whether the cached lengths need re-reading on the next frame. */\n private sizeStale = true;\n\n private readonly onScroll = () => this.schedule();\n\n /** Drag state. `null` = nobody is dragging. */\n private drag: { start: number; initialScroll: number } | null = null;\n\n constructor() {\n effect((onCleanup) => {\n const target = this.target();\n this.attach(target);\n onCleanup(() => this.detach());\n });\n }\n\n ngOnDestroy(): void {\n this.detach();\n }\n\n private attach(target: HTMLElement): void {\n this.detach();\n this.observedTarget = target;\n\n // Outside the Angular zone: a zone-patched 'scroll' listener costs a full\n // global change-detection pass per event. The signals `measure()` writes\n // still schedule change detection by themselves.\n this._zone.runOutsideAngular(() => {\n target.addEventListener('scroll', this.onScroll, { passive: true });\n\n // The target AND its content: the bar should disappear when the content\n // shrinks, not only when the container itself is resized — a column\n // removed from the table doesn't resize the scrolling wrapper, only how\n // far it needs to scroll. The track too, so the thumb's px offset stays\n // right when the bar itself changes width.\n this.resizeObserver = new ResizeObserver(() => this.schedule(true));\n this.resizeObserver.observe(target);\n this.resizeObserver.observe(this.trackEl().nativeElement);\n Array.from(target.children).forEach((child) => this.resizeObserver?.observe(child));\n });\n\n this.sizeStale = true;\n this.measure();\n }\n\n private detach(): void {\n this.observedTarget?.removeEventListener('scroll', this.onScroll);\n this.observedTarget = undefined;\n this.resizeObserver?.disconnect();\n this.resizeObserver = undefined;\n if (this.frame) cancelAnimationFrame(this.frame);\n this.frame = 0;\n }\n\n /**\n * Scroll events fire far more often than the screen refreshes, and each\n * measurement reads layout. Coalescing to one read per frame is what keeps\n * a long table from thrashing layout while it scrolls.\n */\n private schedule(resized = false): void {\n if (resized) this.sizeStale = true;\n if (this.frame) return;\n this.frame = this._zone.runOutsideAngular(() => {\n return requestAnimationFrame(() => {\n this.frame = 0;\n this.measure();\n });\n });\n }\n\n private measure(): void {\n const target = this.observedTarget;\n if (!target) return;\n\n const horizontal = this.orientation() === 'horizontal';\n\n // Only the scroll offset changes while scrolling; the lengths can't, so\n // re-reading them per frame would force layout for nothing.\n if (this.sizeStale) {\n this.sizeStale = false;\n const track = this.trackEl().nativeElement;\n this.total.set(horizontal ? target.scrollWidth : target.scrollHeight);\n this.visible.set(horizontal ? target.clientWidth : target.clientHeight);\n this.trackLength.set(horizontal ? track.clientWidth : track.clientHeight);\n }\n\n this.scrolled.set(horizontal ? target.scrollLeft : target.scrollTop);\n }\n\n protected onPointerDown(event: PointerEvent): void {\n const target = this.observedTarget;\n if (!target || !this.scrollable()) return;\n\n const horizontal = this.orientation() === 'horizontal';\n event.preventDefault();\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n\n this.drag = {\n start: horizontal ? event.clientX : event.clientY,\n initialScroll: horizontal ? target.scrollLeft : target.scrollTop\n };\n }\n\n protected onPointerMove(event: PointerEvent): void {\n const target = this.observedTarget;\n if (!this.drag || !target) return;\n\n const horizontal = this.orientation() === 'horizontal';\n const track = this.trackEl().nativeElement.getBoundingClientRect();\n const trackLength = horizontal ? track.width : track.height;\n if (trackLength <= 0) return;\n\n // One thumb pixel is worth (total / track) content pixels — without this\n // conversion, dragging moves at the wrong speed and the thumb drifts\n // away from the pointer.\n const total = horizontal ? target.scrollWidth : target.scrollHeight;\n const moved = (horizontal ? event.clientX : event.clientY) - this.drag.start;\n const destination = this.drag.initialScroll + moved * (total / trackLength);\n\n if (horizontal) target.scrollLeft = destination;\n else target.scrollTop = destination;\n }\n\n protected onPointerUp(event: PointerEvent): void {\n if (!this.drag) return;\n this.drag = null;\n (event.target as HTMLElement).releasePointerCapture?.(event.pointerId);\n }\n\n /** Clicking the track outside the thumb jumps the content there, centered on the click. */\n protected onTrackPointerDown(event: PointerEvent): void {\n const target = this.observedTarget;\n if (!target || !this.scrollable() || this.drag) return;\n\n const horizontal = this.orientation() === 'horizontal';\n const track = this.trackEl().nativeElement.getBoundingClientRect();\n const length = horizontal ? track.width : track.height;\n if (length <= 0) return;\n\n const point = horizontal ? event.clientX - track.left : event.clientY - track.top;\n const total = horizontal ? target.scrollWidth : target.scrollHeight;\n const visible = horizontal ? target.clientWidth : target.clientHeight;\n\n const destination = (point / length) * total - visible / 2;\n if (horizontal) target.scrollLeft = destination;\n else target.scrollTop = destination;\n }\n\n /**\n * Manual re-measure. Public on purpose: the automatic triggers (scroll,\n * ResizeObserver on the target and its children) cover what the browser\n * reports on its own — this is the escape hatch for what it doesn't, e.g.\n * a target swapped out from under the component.\n */\n remeasure(): void {\n this.sizeStale = true;\n this.measure();\n }\n}\n","<div #track class=\"mecx-scrollbar-track\" (pointerdown)=\"onTrackPointerDown($event)\">\n <div\n class=\"mecx-scrollbar-thumb\"\n [style.--mecx-scrollbar-thumb-size]=\"thumbSize()\"\n [style.--mecx-scrollbar-thumb-offset]=\"thumbOffset()\"\n (pointerdown)=\"onPointerDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPointerUp($event)\"\n (pointercancel)=\"onPointerUp($event)\"\n ></div>\n</div>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './scrollbar.component';\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n ViewEncapsulation\n} from '@angular/core';\n\n/**\n * The segmented row that replaces the trigger once the user has picked a\n * filter. Two segments and a bin:\n *\n * [ icon Data de Emissão | 01/01/2025 - 31/01/2025 | 🗑 ]\n * category value action\n *\n * How many segments there are is the consumer's decision — the value segment\n * is projected as soon as there is something to answer:\n *\n * <monkey-filter-chip (remove)=\"drop()\">\n * <monkey-filter-segment icon=\"calendar-box\" text=\"Data\" readonlySegment />\n * <monkey-filter-segment placeholder=\"Selecione\" [(open)]=\"open\" />\n * </monkey-filter-chip>\n *\n * The chip carries NO `overflow: hidden`. It would clip the panels the\n * segments open right below themselves; the ends are rounded by radius, not by\n * clipping.\n */\n@Component({\n selector: 'monkey-filter-chip',\n templateUrl: './filter-chip.component.html',\n styleUrl: './filter-chip.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-chip',\n class: 'mecx-filter-chip'\n }\n})\nexport class MonkeyFilterChipComponent {\n /** Icon font name of the remove action, without the `mk-i-` prefix. */\n readonly removeIcon = input<string>('trash');\n\n readonly removeLabel = input<string>('Remover filtro');\n\n readonly remove = output<void>();\n}\n","<ng-content></ng-content>\n\n<!-- 2px of room around a 24px button = 28px, the same height as the segments.\n The numbers add up on their own, with nothing to compensate for. -->\n<span class=\"mecx-filter-chip-action\">\n <button\n class=\"mecx-filter-chip-remove\"\n type=\"button\"\n [attr.aria-label]=\"removeLabel()\"\n (click)=\"remove.emit()\"\n >\n <i class=\"mk-i mk-i-{{ removeIcon() }}\" aria-hidden=\"true\"></i>\n </button>\n</span>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n output,\n signal,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\nimport { MonkeyFormFieldModule } from '../form-field';\nimport { MonkeyInputModule } from '../input';\n\n/**\n * The panel every dropdown of monkey-filter-bar-v2 opens: a surface with an\n * optional search field on top and the projected rows below it.\n *\n * Only the WIDTH changes from one panel to the next, and it is set from the\n * bar's own stylesheet through a class on this host — the panel component has\n * no opinion on how wide a company list should be.\n *\n * `width` and not `min-width` on those classes: each panel is a fixed-width\n * frame in the design and a long label ellipsizes inside it. With a floor the\n * content would win, and the measurement would turn into a suggestion.\n */\n@Component({\n selector: 'monkey-filter-menu',\n imports: [FormsModule, MonkeyFormFieldModule, MonkeyInputModule, MonkeyPrefixDirective],\n templateUrl: './filter-menu.component.html',\n styleUrl: './filter-menu.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-menu',\n class: 'mecx-filter-menu'\n }\n})\nexport class MonkeyFilterMenuComponent implements OnDestroy {\n readonly showSearch = input(false, { transform: booleanAttribute });\n\n readonly searchPlaceholder = input<string>('Buscar');\n\n /** Lets the row list scroll instead of growing past the viewport. */\n readonly showScroll = input(true, { transform: booleanAttribute });\n\n /** Ceiling of the scrolling list, in px. */\n readonly maxHeight = input<number>(240);\n\n readonly searchChange = output<string>();\n\n protected searchValue = '';\n\n private readonly _zone = inject(NgZone);\n\n private readonly _items = viewChild<ElementRef<HTMLElement>>('items');\n\n /** Is the list actually overflowing right now? */\n private readonly _overflowing = signal(false);\n\n /**\n * Draw the track only when the content OVERFLOWS.\n *\n * Tied to `showScroll` alone, a three-row panel lost 12px of width to a\n * track that was never going to appear.\n */\n protected readonly scrolling = computed(() => {\n return this.showScroll() && this._overflowing();\n });\n\n private _observer?: ResizeObserver;\n\n constructor() {\n effect((onCleanup) => {\n const items = this._items()?.nativeElement;\n if (!items) return;\n\n // Outside the Angular zone: a zone-patched observer costs a global\n // change-detection pass per callback, and the signal written below\n // already schedules one by itself when the value actually changes.\n this._zone.runOutsideAngular(() => {\n this._observer = new ResizeObserver(() => {\n this._overflowing.set(items.scrollHeight - items.clientHeight > 1);\n });\n this._observer.observe(items);\n Array.from(items.children).forEach((child) => {\n return this._observer?.observe(child);\n });\n });\n\n onCleanup(() => {\n return this._disconnect();\n });\n });\n }\n\n ngOnDestroy(): void {\n this._disconnect();\n }\n\n protected onSearchInput(value: string): void {\n this.searchValue = value;\n this.searchChange.emit(value);\n }\n\n private _disconnect(): void {\n this._observer?.disconnect();\n this._observer = undefined;\n }\n}\n","<!-- Search — optional, no label and no footer -->\n@if (showSearch()) {\n <div class=\"mecx-filter-menu-search\">\n <monkey-form-field size=\"sm\">\n <input\n type=\"text\"\n monkey-input\n [placeholder]=\"searchPlaceholder()\"\n [ngModel]=\"searchValue\"\n (ngModelChange)=\"onSearchInput($event)\"\n />\n <monkey-prefix>\n <i class=\"mk-i mk-i-search fs-md\"></i>\n </monkey-prefix>\n </monkey-form-field>\n </div>\n}\n\n<!-- Projected rows. `--scroll` allows scrolling; `--scrolling` draws the track\n and hands it the right-hand breathing room, and only kicks in once the\n content really overflows — otherwise the panel reserves 20px for a bar\n that does not exist. -->\n<div\n #items\n class=\"mecx-filter-menu-items\"\n [class.mecx-filter-menu-items--scroll]=\"showScroll()\"\n [class.mecx-filter-menu-items--scrolling]=\"scrolling()\"\n [style.max-height.px]=\"showScroll() ? maxHeight() : null\"\n>\n <ng-content></ng-content>\n</div>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n ViewEncapsulation\n} from '@angular/core';\nimport { MonkeyCheckboxComponent } from '../checkbox';\n\n/** `text` is a plain row; `checkbox` puts a box in front of the label. */\nexport type MonkeyFilterMenuItemProperty = 'text' | 'checkbox';\n\n/**\n * One row of a monkey-filter-menu.\n *\n * The ROW is the click target, which is why the checkbox inside it does not\n * grow one of its own: the boxes sit 18px apart inside rows of 32px that touch\n * each other, so a 40px floor on each would make two targets OVERLAP by 8px —\n * inside rows that are already clickable end to end.\n */\n@Component({\n selector: 'monkey-filter-menu-item',\n imports: [MonkeyCheckboxComponent],\n templateUrl: './filter-menu-item.component.html',\n styleUrl: './filter-menu-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-menu-item',\n class: 'mecx-filter-menu-item',\n role: 'option',\n '[class.mecx-filter-menu-item--disabled]': 'disabled()',\n '[class.mecx-filter-menu-item--selected]': 'selected()',\n '[attr.aria-selected]': 'selected() || checked()',\n '[attr.aria-disabled]': 'disabled() || null',\n '(click)': 'onClick()'\n }\n})\nexport class MonkeyFilterMenuItemComponent {\n readonly property = input<MonkeyFilterMenuItemProperty>('text');\n\n /** Icon font name, without the `mk-i-` prefix. */\n readonly leadIcon = input<string | null>(null);\n\n readonly label = input<string>('');\n\n /** Secondary line under the label — a document number, a key. */\n readonly description = input<string | null>(null);\n\n readonly checked = input(false, { transform: booleanAttribute });\n\n /** Already answered elsewhere: the row shows a check and stops responding. */\n readonly selected = input(false, { transform: booleanAttribute });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly itemClick = output<void>();\n\n protected onClick(): void {\n if (this.disabled()) return;\n this.itemClick.emit();\n }\n}\n","@if (property() === 'checkbox') {\n <monkey-checkbox\n class=\"mecx-filter-menu-item-checkbox\"\n size=\"sm\"\n [value]=\"checked()\"\n [disabled]=\"disabled()\"\n [showFooter]=\"false\"\n ></monkey-checkbox>\n} @else if (leadIcon()) {\n <i class=\"mk-i mk-i-{{ leadIcon() }} mecx-filter-menu-item-icon\"></i>\n}\n\n<span class=\"mecx-filter-menu-item-text\">\n <span class=\"mecx-filter-menu-item-label\">{{ label() }}</span>\n @if (description()) {\n <span class=\"mecx-filter-menu-item-description\">{{ description() }}</span>\n }\n</span>\n\n<!-- The row was already answered somewhere else — the check says so without\n taking the row out of the list, which is what tells the user the filter\n they are looking for is already on. -->\n@if (selected()) {\n <i class=\"mk-i mk-i-check mecx-filter-menu-item-check\"></i>\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\n// ─── A menu that escapes the clip of whatever scrolls ───────────────────────\n// Places a `position: fixed` panel right against its trigger.\n//\n// Why `fixed`: the filter row scrolls horizontally, and `overflow-x: auto`\n// creates a clipping context on BOTH axes — the spec forces the axis left as\n// `visible` to become `auto`. An `absolute` panel inside the row would be cut\n// off right below the 28px of the chip, which is to say entirely. `fixed` is\n// not clipped by an ancestor's overflow.\n//\n// The price is that `fixed` does not FOLLOW anything either: the position\n// becomes a number and has to be redone whenever something scrolls.\n//\n// The trap this file exists to solve: `fixed` resolves against the viewport\n// ONLY while no ancestor has `transform`, `filter`, `perspective`, `contain`\n// or `will-change`. Any one of those becomes a containing block and the\n// coordinates start being read from it instead. Rather than hunting for the\n// guilty ancestor, we ask the browser: the panel is given a known `top`/`left`\n// and we measure where it landed. That measurement IS the containing block's\n// origin, whatever it happens to be.\n\ninterface Gaps {\n readonly top: number;\n readonly left: number;\n}\n\n/**\n * Which edge of the trigger the panel lines up with.\n *\n * `start` is what the chip segments use: the chip grows left to right, and a\n * panel aligned with the beginning of the segment is the one that points at\n * what is being chosen. `end` is what the add-filter trigger uses, so the\n * panel's right edge meets the button's own however wide the button is.\n */\nexport type MenuAlignment = 'start' | 'end';\n\n/**\n * Picks the panel's horizontal: align, FLIP, or butt against the edge.\n *\n * Three steps, in this order:\n *\n * 1. The preferred edge — the one `alignment` asks for.\n * 2. The OPPOSITE edge, when the preferred one does not fit. Aligned to the\n * start with no room to the right, the panel flips and ends where the\n * trigger ends, growing back into the screen.\n * 3. Clamped to the viewport, when not even flipped fits — i.e. when the\n * panel is WIDER than the viewport. There is no good position then, and\n * the fix is a narrower panel, not a better coordinate.\n *\n * Step 2 is the one that matters visually: nudging the panel just enough to\n * fit leaves it misaligned with BOTH edges of the trigger, looking displaced\n * for no reason. Flipped, it is still anchored to an edge — just the other one.\n *\n * A viewport of width 0 returns the preferred value without measuring. That is\n * not defensive padding: jsdom reports `clientWidth: 0`, and measuring against\n * zero would send every panel to the left edge.\n */\nfunction horizontalOf(\n target: DOMRect,\n width: number,\n gap: number,\n alignment: MenuAlignment\n): number {\n // The horizontal gap is the panel's breathing room, not a one-sided border:\n // aligned to the end it pushes inwards, which is the mirrored gesture.\n const atStart = target.left + gap;\n const atEnd = target.right - width - gap;\n const preferred = alignment === 'end' ? atEnd : atStart;\n\n const viewport = document.documentElement.clientWidth || 0;\n if (viewport <= 0) return preferred;\n\n const fits = (x: number): boolean => {\n return x >= 0 && x + width <= viewport;\n };\n if (fits(preferred)) return preferred;\n\n const opposite = alignment === 'end' ? atStart : atEnd;\n if (fits(opposite)) return opposite;\n\n return Math.max(0, Math.min(preferred, viewport - width));\n}\n\n/**\n * The offset the panel is applying to ITSELF.\n *\n * `getBoundingClientRect` includes the element's own translate, and the\n * zero-measurement uses that rect to discover the containing block's origin.\n * Without subtracting this share, the translate of the ENTRANCE animation is\n * baked into `top` as if it were origin — and comes back out when the\n * animation ends, taking the panel with it.\n *\n * Only `translate` matters. The `scale` of the same animation does not move\n * the top edge, because the entrance fixes `transform-origin: top` and scales\n * X by 1.\n */\nfunction ownOffset(menu: HTMLElement): { x: number; y: number } {\n const raw = getComputedStyle(menu).translate;\n if (!raw || raw === 'none') return { x: 0, y: 0 };\n const [x, y] = raw.split(' ');\n return { x: parseFloat(x) || 0, y: parseFloat(y ?? '') || 0 };\n}\n\n/**\n * Butts the panel against the requested side of the trigger.\n *\n * The breathing room stays in the stylesheet, as the panel's `margin`. It has\n * to come back into the sum because the measurement ALREADY includes it:\n * without adding it again the margin would cancel itself out and the panel\n * would sit glued to the trigger.\n *\n * The containing block's origin comes out of the same sum without moving\n * anything: with `top: T` applied, `rect.top = origin + T + translate`, so\n * `origin = rect.top - T - translate`. All it takes is for the panel to have a\n * known inline `top`, which `anchorMenu` guarantees the first time round.\n *\n * The earlier way to find the origin was to write `top: 0; left: 0`, measure,\n * then write the final value. That was a round trip PER scroll event — dozens\n * a second on an inertial scroll, each one throwing the panel into the corner\n * and back with a forced layout read in between. The symptom is a panel\n * flickering between the right place and the top of the window instead of\n * following its trigger.\n */\nfunction place(\n target: DOMRect,\n menu: HTMLElement,\n gaps: Gaps,\n alignment: MenuAlignment\n): void {\n const own = ownOffset(menu);\n const appliedTop = parseFloat(menu.style.top) || 0;\n const appliedLeft = parseFloat(menu.style.left) || 0;\n\n const current = menu.getBoundingClientRect();\n const originTop = current.top - own.y - appliedTop;\n const originLeft = current.left - own.x - appliedLeft;\n\n const x = horizontalOf(target, current.width, gaps.left, alignment);\n const y = target.bottom + gaps.top;\n\n menu.style.top = `${y - originTop}px`;\n menu.style.left = `${x - originLeft}px`;\n}\n\n/** The nearest ancestor that SCROLLS — it is the one clipping the trigger. */\nfunction scrollingAncestor(el: HTMLElement): HTMLElement | null {\n let node = el.parentElement;\n while (node) {\n const { overflowX, overflowY } = getComputedStyle(node);\n if (/(auto|scroll|hidden|clip)/.test(overflowX + overflowY)) return node;\n node = node.parentElement;\n }\n return null;\n}\n\n/**\n * Has the trigger gone out of sight?\n *\n * A panel anchored to a trigger that is no longer on screen is worse than no\n * panel at all: it hangs in the middle of the content with no visible anchor,\n * and the user has no way of knowing what those options belong to.\n *\n * Two boundaries count: the window, and the CLIP of the ancestor that scrolls.\n * The second is the one that catches a chip scrolling sideways out of the\n * filter row — there the trigger's rect is still inside the window, and only\n * the container knows it is gone.\n *\n * With no measurable viewport nothing is hidden: in jsdom `clientWidth` is 0,\n * and closing every menu because of that would be worse than the defect.\n */\nfunction outOfSight(trigger: HTMLElement, target: DOMRect): boolean {\n const vh = document.documentElement.clientHeight || 0;\n const vw = document.documentElement.clientWidth || 0;\n if (vh <= 0 || vw <= 0) return false;\n if (target.bottom <= 0 || target.top >= vh) return true;\n if (target.right <= 0 || target.left >= vw) return true;\n\n const scroller = scrollingAncestor(trigger);\n if (!scroller) return false;\n const rect = scroller.getBoundingClientRect();\n if (rect.width <= 0 || rect.height <= 0) return false;\n return (\n target.bottom <= rect.top ||\n target.top >= rect.bottom ||\n target.right <= rect.left ||\n target.left >= rect.right\n );\n}\n\nfunction readGaps(menu: HTMLElement): Gaps {\n const style = getComputedStyle(menu);\n return {\n top: parseFloat(style.marginTop) || 0,\n left: parseFloat(style.marginLeft) || 0\n };\n}\n\n/**\n * Butts the panel against the trigger and KEEPS it there while anything\n * scrolls. Returns the function that switches it all off.\n *\n * Anchoring and following are one job: a positioned panel that stops following\n * is already wrong on the first scroll, and one that follows without having\n * been positioned never reaches the right place.\n *\n * `capture: true` is not a detail: an element's `scroll` event does NOT\n * bubble, so without the capture phase the filter row scrolling under the\n * panel would go unnoticed and the panel would stay planted at the old spot.\n *\n * The margins are read once — they do not change. The ORIGIN does: if the page\n * scrolls and the containing block is a transformed ancestor, it moves down\n * with the trigger, and only re-measuring both keeps the sum standing.\n *\n * `transitionend` is there for one specific and expensive-to-find reason.\n * While an ancestor's `translate` is ANIMATING it is a containing block; when\n * the transition ends, it stops being one. A scroll that lands inside that\n * window measures the transformed origin, and the sum stays wrong FOREVER —\n * the panel is born displaced and nothing corrects it. That is exactly what\n * happens here: the row scrolls to follow the new filter at the same instant\n * the FLIP translates the slots.\n *\n * `animationend` closes the SAME window from the other side. The chip's\n * entrance is not a transition, it is a `@keyframes` animating `translate`. A\n * chip born with its panel already open — which is the normal case, because\n * the value panel opens on its own — has that panel anchored against a slot\n * that is still a containing block, and when the animation ends the slot stops\n * being one: the same coordinates now resolve against the viewport and the\n * panel jumps the slot's whole offset.\n *\n * The guard is `target.contains(menu)` rather than the animation's name. Only\n * an ANCESTOR's animation changes the panel's containing block, so the right\n * question is one of kinship — and it does not tie this helper to the list of\n * keyframes used by whoever calls it.\n */\nexport function anchorMenu(\n trigger: HTMLElement,\n menu: HTMLElement,\n alignment: MenuAlignment = 'start',\n onOutOfSight?: () => void\n): () => void {\n const gaps = readGaps(menu);\n\n // A KNOWN starting point for the first measurement: with `top: auto` the\n // panel sits at its static position, and the containing block's origin\n // cannot be derived from that. Once only, before any paint — from then on\n // `place` derives from the applied position and never moves the panel just\n // to measure it.\n if (!menu.style.top) {\n menu.style.top = '0px';\n menu.style.left = '0px';\n }\n\n const reposition = (): void => {\n // One read of the trigger per event, reused by both sums.\n const target = trigger.getBoundingClientRect();\n if (onOutOfSight && outOfSight(trigger, target)) {\n onOutOfSight();\n return;\n }\n place(target, menu, gaps, alignment);\n };\n\n // Only `translate` is of interest: it is the property that turns an ancestor\n // into a containing block. Without the filter, every COLOUR transition in\n // the document — and each hover on a chip is three — would fire a\n // reposition with a forced layout read, leaving the panel trembling while\n // the pointer wanders across the bar.\n const onTransitionEnd = (event: Event): void => {\n if ((event as TransitionEvent).propertyName === 'translate') reposition();\n };\n\n const onAnimationEnd = (event: Event): void => {\n const node = event.target as Node | null;\n if (node?.contains(menu)) reposition();\n };\n\n // The panel's own SIZE feeds the horizontal sum — it is what decides whether\n // the preferred edge fits. A panel that CHANGES size after being anchored\n // would otherwise stay at the position that fitted the old size, and that is\n // not a rare case here: the date panel swaps its content on \"Personalizado\",\n // trading a short shortcut list for the full date range, without recreating\n // the element. Repositioning changes nobody's size, so there is no loop.\n const observer = new ResizeObserver(() => {\n reposition();\n });\n observer.observe(menu);\n\n reposition();\n document.addEventListener('scroll', reposition, { capture: true, passive: true });\n document.addEventListener('transitionend', onTransitionEnd, { capture: true, passive: true });\n document.addEventListener('animationend', onAnimationEnd, { capture: true, passive: true });\n window.addEventListener('resize', reposition, { passive: true });\n\n return () => {\n observer.disconnect();\n document.removeEventListener('scroll', reposition, { capture: true });\n document.removeEventListener('transitionend', onTransitionEnd, { capture: true });\n document.removeEventListener('animationend', onAnimationEnd, { capture: true });\n window.removeEventListener('resize', reposition);\n };\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\nimport { anchorMenu } from './anchored-menu';\n\n/**\n * One segment of a monkey-filter-chip.\n *\n * ONE component for the two roles the chip has — the category name and the\n * answer. Both share the same state table, the same padding, the same\n * typography and the same height; what changes between them is the content\n * (the first has an icon) and the rounding of the ends, which belongs to the\n * chip and not to the segment. Two components would be two copies of the same\n * stylesheet waiting to drift apart.\n *\n * `filled` is not an input: it is `text() !== ''`. Letting the consumer\n * declare \"filled\" with an empty text would be a state impossible to draw.\n *\n * The projected panel is `position: fixed` and anchored by script — see\n * `anchored-menu.ts` for why an `absolute` one cannot survive inside a row\n * that scrolls.\n */\n@Component({\n selector: 'monkey-filter-segment',\n templateUrl: './filter-segment.component.html',\n styleUrl: './filter-segment.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-segment',\n class: 'mecx-filter-segment',\n '[class.mecx-filter-segment--open]': 'open()',\n '[class.mecx-filter-segment--filled]': 'filled()',\n '(document:pointerdown)': 'onDocumentPointerdown($event)',\n '(document:keydown.escape)': 'onEscape()'\n }\n})\nexport class MonkeyFilterSegmentComponent {\n /** Category icon — usually only the chip's first segment has one. */\n readonly icon = input<string | null>(null);\n\n /** The chosen value. Empty means the segment is still waiting. */\n readonly text = input<string>('');\n\n /** Waiting text, in the complement colour. */\n readonly placeholder = input<string>('');\n\n /** A segment with no panel to open. */\n readonly readonlySegment = input(false, { transform: booleanAttribute });\n\n readonly open = model<boolean>(false);\n\n readonly segmentClick = output<void>();\n\n readonly filled = computed(() => {\n return this.text().length > 0;\n });\n\n /** What is shown: the value when there is one, the waiting text when not. */\n readonly label = computed(() => {\n return this.filled() ? this.text() : this.placeholder();\n });\n\n private readonly _hostEl: ElementRef<HTMLElement> = inject(ElementRef);\n\n private readonly _menuEl = viewChild<ElementRef<HTMLElement>>('menu');\n\n constructor() {\n // The panel is `fixed` to escape the clip of the row that scrolls, and\n // `fixed` follows nobody — the position is recomputed on every opening and\n // kept by the listeners `anchorMenu` installs.\n effect((onCleanup) => {\n const menu = this._menuEl()?.nativeElement;\n if (!menu) return;\n\n onCleanup(anchorMenu(this._hostEl.nativeElement, menu, 'start'));\n });\n }\n\n toggle(): void {\n this.segmentClick.emit();\n if (this.readonlySegment()) return;\n this.open.set(!this.open());\n }\n\n /**\n * A click outside closes. Without it the panel would only close by clicking\n * the segment again — behaviour no system menu has, and which left two\n * panels open at once on a row with several chips.\n */\n onDocumentPointerdown(event: PointerEvent): void {\n if (!this.open()) return;\n const target = event.target as Node | null;\n if (target && this._hostEl.nativeElement.contains(target)) return;\n this.open.set(false);\n }\n\n /**\n * Escape closes and hands the focus back to the segment's button. Without\n * the hand-back the focus falls to `<body>` and Tab restarts from the top of\n * the page: whoever opened the panel from the keyboard loses their place in\n * the middle of the row.\n */\n onEscape(): void {\n if (!this.open()) return;\n this.open.set(false);\n this.focusButton();\n }\n\n /** Closes and returns the focus. Public for whoever needs to close from outside. */\n closeAndFocus(): void {\n this.open.set(false);\n this.focusButton();\n }\n\n private focusButton(): void {\n this._hostEl.nativeElement.querySelector<HTMLElement>('.mecx-filter-segment-btn')?.focus();\n }\n}\n","<button\n class=\"mecx-filter-segment-btn\"\n type=\"button\"\n [attr.aria-expanded]=\"readonlySegment() ? null : open()\"\n [attr.aria-haspopup]=\"readonlySegment() ? null : 'listbox'\"\n (click)=\"toggle()\"\n>\n @if (icon()) {\n <i class=\"mk-i mk-i-{{ icon() }} mecx-filter-segment-icon\" aria-hidden=\"true\"></i>\n }\n <span class=\"mecx-filter-segment-label\">{{ label() }}</span>\n</button>\n\n@if (open()) {\n <div\n #menu\n class=\"mecx-filter-segment-menu\"\n animate.enter=\"mecx-filter-segment-menu--entering\"\n animate.leave=\"mecx-filter-segment-menu--leaving\"\n >\n <ng-content></ng-content>\n </div>\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n model,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\nimport { anchorMenu } from './anchored-menu';\n\n/** `text` is the 28px button with a label; `icon` is the 28px square. */\nexport type MonkeyFilterTriggerVariant = 'text' | 'icon';\n\n/**\n * The button that adds a filter, and the panel of categories it opens.\n *\n * It is always the LAST slot of the row. While the bar is empty the trigger is\n * the CALL to action and earns its label; with filters on screen it becomes\n * the ADDITION, and a 28px square is enough.\n *\n * Both are 28px tall — the same as a chip segment — because the button turns\n * into a chip in place, and 1px of difference would show up as a jump at the\n * moment of the swap.\n */\n@Component({\n selector: 'monkey-filter-trigger',\n templateUrl: './filter-trigger.component.html',\n styleUrl: './filter-trigger.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-trigger',\n class: 'mecx-filter-trigger',\n '[class.mecx-filter-trigger--text]': 'variant() === \"text\"',\n '[class.mecx-filter-trigger--icon]': 'variant() === \"icon\"',\n '[class.mecx-filter-trigger--open]': 'open()',\n '(document:pointerdown)': 'onDocumentPointerdown($event)',\n '(document:keydown.escape)': 'onEscape()'\n }\n})\nexport class MonkeyFilterTriggerComponent {\n readonly variant = input<MonkeyFilterTriggerVariant>('text');\n\n /** Icon font name, without the `mk-i-` prefix. */\n readonly icon = input<string>('filter');\n\n readonly text = input<string>('Filtro');\n\n readonly ariaLabel = input<string>('Adicionar filtro');\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * The panel leaves with no exit animation.\n *\n * It exists for ONE case: when the closing goes along with the trigger\n * itself changing place. The panel is a child of the button, so it travels\n * with it — and a fade on an element that has just teleported 160px does not\n * read as an exit, it reads as a glitch. Closing by Escape or by an outside\n * click is not that case and keeps its fade.\n */\n readonly immediateExit = input(false, { transform: booleanAttribute });\n\n readonly open = model<boolean>(false);\n\n /**\n * `aria-label` only on the variant with no visible label. Where there is a\n * label, an `aria-label` over it would swap the name the user reads for one\n * they cannot see — breaking voice control and the \"Label in Name\" criterion.\n */\n readonly ariaLabelAttr = computed(() => {\n return this.variant() === 'icon' ? this.ariaLabel() || null : null;\n });\n\n private readonly _hostEl: ElementRef<HTMLElement> = inject(ElementRef);\n\n private readonly _menuEl = viewChild<ElementRef<HTMLElement>>('menu');\n\n constructor() {\n effect((onCleanup) => {\n const menu = this._menuEl()?.nativeElement;\n if (!menu) return;\n\n // Aligned to the END, so the panel's right edge meets the button's own\n // however wide the button happens to be — the label and the square are\n // very different widths and the panel must not jump between them.\n //\n // Going out of sight closes: a `fixed` panel anchored to a trigger that\n // has scrolled away hangs in the middle of the content with no visible\n // anchor.\n onCleanup(\n anchorMenu(this._hostEl.nativeElement, menu, 'end', () => {\n return this.open.set(false);\n })\n );\n });\n }\n\n toggle(): void {\n if (this.disabled()) return;\n this.open.set(!this.open());\n }\n\n onDocumentPointerdown(event: PointerEvent): void {\n if (!this.open()) return;\n const target = event.target as Node | null;\n if (target && this._hostEl.nativeElement.contains(target)) return;\n this.open.set(false);\n }\n\n onEscape(): void {\n if (!this.open()) return;\n this.open.set(false);\n this._hostEl.nativeElement.querySelector<HTMLElement>('.mecx-filter-trigger-btn')?.focus();\n }\n}\n","<button\n class=\"mecx-filter-trigger-btn\"\n type=\"button\"\n [disabled]=\"disabled() || null\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-label]=\"ariaLabelAttr()\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n>\n <!-- The glyph comes BEFORE the label, and there is no caret — the trigger is\n an action, not a select. -->\n <i class=\"mk-i mk-i-{{ icon() }} mecx-filter-trigger-icon\" aria-hidden=\"true\"></i>\n @if (variant() === 'text') {\n <span class=\"mecx-filter-trigger-text\">{{ text() }}</span>\n }\n</button>\n\n@if (open()) {\n <div\n #menu\n class=\"mecx-filter-trigger-menu\"\n animate.enter=\"mecx-filter-trigger-menu--entering\"\n [animate.leave]=\"immediateExit() ? '' : 'mecx-filter-trigger-menu--leaving'\"\n >\n <ng-content></ng-content>\n </div>\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\n// ─── FLIP ───────────────────────────────────────────────────────────────────\n// First, Last, Invert, Play: measure where the elements were, let the layout\n// change, then put each one back at its old position with a `translate` and\n// animate to zero. The result is that EVERYTHING slides from where it was,\n// even though the browser repositioned all of it in one pass.\n//\n// Why it exists: when the bar's trigger turns into a chip, the whole row is\n// rebuilt — the chip is born where the button was and the new button moves to\n// the right. Without FLIP the only thing that can be animated is the chip\n// coming in, and the neighbours jump. With it, the swap reads as a swap of\n// PLACE.\n//\n// Two decisions that are not details:\n//\n// • Only `translate`. Transform and opacity compose on the GPU and skip\n// layout and paint. The duration and the curve stay in the stylesheet, in\n// `--mecx-fbv2-*` custom properties, and this file reads no motion value\n// at all — that is how `prefers-reduced-motion` keeps working for free,\n// because the media query redefines the properties themselves.\n//\n// • Forced reflow, NEVER requestAnimationFrame. In a hidden tab rAF does not\n// fire: the elements would sit at the inverted position until the tab came\n// back, which is worse than not animating. With the synchronous reflow the\n// final state is always correct — in a hidden tab the transition simply\n// does not run and the layout is already right.\n\n/** Attribute that gives an element identity across the two measurements. */\nexport const FLIP_ATTR = 'data-flip-id';\n\n/**\n * Where each identified element is RIGHT NOW. Call before changing the state.\n */\nexport function measureFlip(container: HTMLElement): Map<string, DOMRect> {\n const before = new Map<string, DOMRect>();\n container.querySelectorAll<HTMLElement>(`[${FLIP_ATTR}]`).forEach((el) => {\n const id = el.getAttribute(FLIP_ATTR);\n if (id) before.set(id, el.getBoundingClientRect());\n });\n return before;\n}\n\n/**\n * Puts every element back at the measured position and releases the\n * transition. Call AFTER the DOM already reflects the new state.\n *\n * @param frozenClass class that zeroes the transition on the inverted frame\n */\nexport function animateFlip(\n container: HTMLElement,\n before: Map<string, DOMRect>,\n frozenClass: string\n): void {\n const moved: HTMLElement[] = [];\n\n container.querySelectorAll<HTMLElement>(`[${FLIP_ATTR}]`).forEach((el) => {\n const id = el.getAttribute(FLIP_ATTR);\n if (!id) return;\n\n const from = before.get(id);\n // No previous measurement means the element was BORN just now. It does not\n // slide from anywhere — it comes in through its own entrance animation,\n // which is a different movement.\n if (!from) return;\n\n const to = el.getBoundingClientRect();\n const dx = from.left - to.left;\n const dy = from.top - to.top;\n if (dx === 0 && dy === 0) return;\n\n el.classList.add(frozenClass);\n el.style.translate = `${dx}px ${dy}px`;\n moved.push(el);\n });\n\n if (moved.length === 0) return;\n\n // This read is mandatory and is not a hack: it forces the browser to compute\n // style with the inverted translate ALREADY applied. Without it the two\n // writes (invert and release) collapse into the same pass and nothing\n // animates.\n // eslint-disable-next-line no-void\n void container.offsetWidth;\n\n moved.forEach((el) => {\n el.classList.remove(frozenClass);\n el.style.translate = '';\n });\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\n// ─── \"Has the app painted yet?\" ─────────────────────────────────────────────\n// A single shared boolean, so that components which animate on ENTERING the\n// DOM do not animate when they were already there at the first paint.\n//\n// Why it exists: `animate.enter` fires on the initial render of the view, not\n// only when the consumer mounts the component later. A filter bar that opens\n// with filters already seeded by the consumer would replay the whole row's\n// entrance on every page load and on every F5, for chips that were always\n// there. Users read that as the page still assembling itself.\n//\n// Why it cannot be solved inside the component: a per-instance signal does not\n// work. `animate.enter` is evaluated at the moment of INSERTION, and at that\n// moment the instance has just been created — any flag of its own is still\n// false, so the chip would simply never animate. \"Has painted\" is a notion of\n// the PAGE, not of the component.\n//\n// The double rAF is the usual pattern: the first frame schedules, the second\n// runs after the browser has painted.\n\n/** False until the browser paints the first frame. Read-only for consumers. */\nlet painted = false;\n\n// There is no `requestAnimationFrame` under SSR — and no animation to suppress\n// either, because the server does not paint. It stays false, and the client\n// reschedules on hydration.\nif (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n painted = true;\n });\n });\n}\n\n/**\n * Has the page painted its first frame?\n *\n * Use it to decide whether an `animate.enter` should apply:\n *\n * [animate.enter]=\"appPainted() ? 'mecx-x--entering' : ''\"\n *\n * A component already on screen at the first paint comes in without animation;\n * one the consumer mounts later animates normally.\n */\nexport function appPainted(): boolean {\n return painted;\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\n// ─── monkey-filter-bar-v2 ───────────────────────────────────────────────────\n// A restyle of monkey-filter-bar: the same contract, the same service and the\n// same state, drawn as the segmented row of the monkey-design-system filter\n// bar.\n//\n// WHAT IS THE SAME as monkey-filter-bar, deliberately — this component is a\n// drop-in replacement and a consumer swaps the tag without touching anything\n// else:\n//\n// · `key` + `config` in, `filtersChange` + `searchChange` out\n// · MonkeyFilterBarService owns the state, keyed by `key`\n// · the four filter types (text · date · currency · status) and the same\n// answers for each: date shortcuts and a custom range, currency as a\n// from/until with one amount, status as a multiple choice\n// · nothing is written to the service until the answer is CONFIRMED, except\n// for the date shortcuts, where the click on the row already is the answer\n//\n// WHAT CHANGES is the drawing and the movement:\n//\n// · the active filter becomes a two-segment CHIP instead of a tag. The\n// second segment is the edit affordance the tag used to be, and clicking\n// it reopens exactly the panel that filled it.\n// · the add-filter button lives at the END of the row and swaps variants:\n// while the bar is empty it is the CALL to action and carries the label;\n// with filters on screen it becomes a 28px `+`, because then it no longer\n// opens \"the filters\", it ADDS one more.\n// · the row SCROLLS horizontally instead of wrapping. Wrapping would push\n// everything below the bar down by one line on every filter added;\n// scrolling keeps the height stable.\n// · every change of the row is animated by FLIP (see flip.ts). Each step\n// changes the width of the whole row, and without FLIP only the new piece\n// would move while everything else jumped.\n//\n// The bar OWNS the state and the animation. The pieces below it —\n// monkey-filter-chip, monkey-filter-segment, monkey-filter-trigger,\n// monkey-filter-menu — know nothing about the progression: each one only draws\n// what it is given.\n\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n output,\n signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { addDays, addMonths, format, subDays, subMonths } from 'date-fns';\nimport { MonkeyLabelDirective } from '../../directives/label';\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\nimport { MonkeyButtonComponent } from '../button';\nimport { MonkeyCheckboxComponent } from '../checkbox';\nimport { MonkeyDateRangeComponent } from '../date-range';\nimport { MonkeyDividerComponent } from '../divider';\nimport { MonkeyFilterBarService } from '../filter-bar/filter-bar.service';\nimport {\n ActiveFilter,\n FilterBarConfig,\n FilterOption,\n FilterType\n} from '../filter-bar/filter-config.interface';\nimport { MonkeyFormFieldModule } from '../form-field';\nimport { MonkeyInputModule } from '../input';\nimport { MonkeyOptionComponent } from '../option';\nimport { MonkeyRadioButtonComponent } from '../radio-button';\nimport { MonkeyScrollbarComponent } from '../scrollbar';\nimport { MonkeyFilterChipComponent } from './filter-chip.component';\nimport { MonkeyFilterMenuComponent } from './filter-menu.component';\nimport { MonkeyFilterMenuItemComponent } from './filter-menu-item.component';\nimport { MonkeyFilterSegmentComponent } from './filter-segment.component';\nimport { MonkeyFilterTriggerComponent } from './filter-trigger.component';\nimport { animateFlip, FLIP_ATTR, measureFlip } from './flip';\nimport { appPainted } from './first-paint';\n\n/** Which panel of which chip is open. Only one is ever open at a time. */\ninterface OpenPanel {\n readonly key: string;\n readonly part: 'category' | 'value';\n}\n\n/** One slot of the row: an active filter, or the one being built. */\nexport interface MonkeyFilterBarV2Row {\n readonly key: string;\n readonly label: string;\n readonly icon?: string;\n readonly type: FilterType;\n /** What the value segment shows. Empty while the answer is pending. */\n readonly value: string;\n /** True while the filter is being built and is not in the service yet. */\n readonly pending: boolean;\n}\n\n/** Class that freezes the transition on the FLIP's inverted frame. */\nconst FROZEN = 'mecx-filter-bar-v2-slot--frozen';\n\n@Component({\n selector: 'monkey-filter-bar-v2',\n imports: [\n FormsModule,\n MonkeyButtonComponent,\n MonkeyCheckboxComponent,\n MonkeyDateRangeComponent,\n MonkeyDividerComponent,\n MonkeyFilterChipComponent,\n MonkeyFilterMenuComponent,\n MonkeyFilterMenuItemComponent,\n MonkeyFilterSegmentComponent,\n MonkeyFilterTriggerComponent,\n MonkeyFormFieldModule,\n MonkeyInputModule,\n MonkeyLabelDirective,\n MonkeyOptionComponent,\n MonkeyPrefixDirective,\n MonkeyRadioButtonComponent,\n MonkeyScrollbarComponent\n ],\n templateUrl: './filter-bar-v2.component.html',\n styleUrl: './filter-bar-v2.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-bar-v2',\n class: 'mecx-filter-bar-v2'\n }\n})\nexport class MonkeyFilterBarV2Component {\n private readonly _service = inject(MonkeyFilterBarService);\n\n private readonly _hostEl: ElementRef<HTMLElement> = inject(ElementRef);\n\n private readonly _injector = inject(Injector);\n\n /** Storage key of this bar's state inside MonkeyFilterBarService. */\n readonly key = input.required<string>();\n\n readonly config = input<FilterBarConfig>();\n\n /** Label of the trigger while the bar is still empty. */\n readonly addFilterLabel = input<string>('Filtro');\n\n readonly clearAllLabel = input<string>('Limpar filtros');\n\n readonly filtersChange = output<{ search?: string; filters: ActiveFilter[] }>();\n\n readonly searchChange = output<string>();\n\n /** A chip seeded by the consumer does not animate; one the user made does. */\n readonly appPainted = appPainted;\n\n // ── State ────────────────────────────────────────────────────────────────\n\n /**\n * The filter being built — chosen from the trigger, not yet confirmed, so\n * not yet in the service.\n *\n * It exists so the chip can be BORN where the trigger was, which is the\n * whole point of the row's animation, without the bar reporting a filter\n * that has no answer. Closing the panel without confirming drops it again:\n * monkey-filter-bar has no half-filled state and neither does this one.\n */\n protected readonly pending = signal<FilterOption | null>(null);\n\n protected readonly openPanel = signal<OpenPanel | null>(null);\n\n protected readonly triggerOpen = signal(false);\n\n /**\n * The filter whose date panel is showing the CALENDAR instead of the\n * shortcuts, or `null`.\n *\n * It is the same panel, anchored to the same segment — \"Personalizado\" only\n * swaps its content. No modal: the dialog would be almost all frame around a\n * calendar, and frame is not an answer to anything.\n */\n protected readonly calendarOpen = signal<string | null>(null);\n\n /** Search of the category panel. */\n protected readonly categorySearch = signal('');\n\n /**\n * Turns off the fade on the trigger's panel. It is written BEFORE the\n * mutation on purpose: `animate.leave` is read the instant the node leaves,\n * and turning it on afterwards would arrive too late.\n */\n protected readonly immediateTriggerExit = signal(false);\n\n // Draft answers of the open panel. They are plain fields and not signals:\n // they are bound with `[(ngModel)]`, so the template writes them directly,\n // and nothing else in the view is derived from them.\n protected textValue = '';\n\n protected currencyValue: number | null = null;\n\n protected currencyMode: 'from' | 'until' = 'from';\n\n protected statusValues: string[] = [];\n\n protected dateRange = { startDate: '', endDate: '' };\n\n // ── Derived ──────────────────────────────────────────────────────────────\n\n protected readonly serviceConfig = computed(() => {\n const k = this.key();\n return k ? this._service.getConfig(k) ?? this.config() : undefined;\n });\n\n protected readonly activeFilters = computed(() => {\n const k = this.key();\n return k ? this._service.getActiveFilters(k) : [];\n });\n\n protected readonly searchValue = computed(() => {\n const k = this.key();\n return k ? this._service.getSearchValue(k) : '';\n });\n\n protected readonly searchPlaceholder = computed(() => {\n return this.serviceConfig()?.searchPlaceholder ?? 'Pesquisar...';\n });\n\n /** The slots of the row, in order: the confirmed ones, then the draft. */\n protected readonly rows = computed<MonkeyFilterBarV2Row[]>(() => {\n const confirmed = this.activeFilters().map((f) => {\n return {\n key: f.key,\n label: f.label,\n icon: f.icon,\n type: f.type,\n value: f.displayText,\n pending: false\n };\n });\n\n const draft = this.pending();\n if (!draft) return confirmed;\n\n return [\n ...confirmed,\n {\n key: draft.key,\n label: draft.label,\n icon: draft.icon,\n type: draft.type,\n value: '',\n pending: true\n }\n ];\n });\n\n /**\n * What the TRIGGER offers: only what can still be added.\n *\n * This is monkey-filter-bar's rule — a filter already on the row is not on\n * offer, because the bar holds one filter per key.\n */\n protected readonly addOptions = computed(() => {\n const k = this.key();\n const available = k ? this._service.availableFilterOptions(k) : [];\n return this._matchingSearch(available);\n });\n\n /**\n * What a chip's CATEGORY segment offers: the whole list.\n *\n * A different list from the trigger's on purpose. Here the question is \"what\n * else could this chip be\", so the current category has to be visible — it\n * is the one carrying the check — and the other filters already on the row\n * are shown greyed out rather than hidden, which is what tells the user the\n * category they were looking for is already in use.\n */\n protected readonly changeOptions = computed(() => {\n return this._matchingSearch(this.serviceConfig()?.filterOptions ?? []);\n });\n\n /**\n * While the bar is empty the trigger is the CALL and earns the label. With\n * filters on screen a 28px square is enough.\n */\n protected readonly triggerVariant = computed(() => {\n return this.rows().length === 0 ? 'text' : 'icon';\n });\n\n /**\n * The glyph of the collapsed trigger is a `+`, not the funnel.\n *\n * The variant says what the button IS; the glyph says what it DOES. With\n * filters already on screen the button does not open \"the filters\", it ADDS\n * one more — and a funnel there reads as the wrong thing. With the bar empty\n * the funnel is exact.\n */\n protected readonly triggerIcon = computed(() => {\n return this.rows().length === 0 ? 'filter' : 'add-plus';\n });\n\n /**\n * The FLIP identity changes along with the variant, and that is the fix: the\n * text trigger is REMOVED and the icon one is BORN in its place, instead of\n * one button sliding to the right. Before this, the button dragged along the\n * panel that was closing — the list vanished travelling sideways.\n *\n * From the second filter on the identity holds, and then the `+` really does\n * slide: that movement is what says \"the row grew\".\n */\n protected readonly triggerFlipId = computed(() => {\n return this.rows().length === 0 ? 'trigger-text' : 'trigger-icon';\n });\n\n constructor() {\n // The config is registered in the service by the same key the state uses,\n // so any other consumer of the service sees the same option list. An\n // effect and not ngOnInit/ngOnChanges: `key` and `config` are signal\n // inputs, so one reactive registration covers the first value and every\n // one after it.\n effect(() => {\n const k = this.key();\n const cfg = this.config();\n if (k && cfg) this._service.setConfig(k, cfg);\n });\n }\n\n // ── Queries used by the template ─────────────────────────────────────────\n\n protected isOpen(rowKey: string, part: OpenPanel['part']): boolean {\n const panel = this.openPanel();\n return !!panel && panel.key === rowKey && panel.part === part;\n }\n\n protected isFilterActive(optionKey: string): boolean {\n const k = this.key();\n return k ? this._service.isFilterActive(k, optionKey) : false;\n }\n\n /** A divider goes where the type changes relative to the row above. */\n protected needsDivider(options: readonly FilterOption[], index: number): boolean {\n return index > 0 && options[index].type !== options[index - 1].type;\n }\n\n protected valuePlaceholder(row: MonkeyFilterBarV2Row): string {\n return this._optionFor(row.key)?.placeholder ?? 'Selecione';\n }\n\n protected statusOptionsOf(row: MonkeyFilterBarV2Row) {\n return this._optionFor(row.key)?.statusOptions ?? [];\n }\n\n protected minDateOf(row: MonkeyFilterBarV2Row): Date | string {\n return this._optionFor(row.key)?.minDate ?? '';\n }\n\n protected maxDateOf(row: MonkeyFilterBarV2Row): Date | string {\n return this._optionFor(row.key)?.maxDate ?? '';\n }\n\n // ── Progression ──────────────────────────────────────────────────────────\n\n /**\n * `index` is the position in the list the template walked — the one the\n * search filtered. Indexing the full list would pick the wrong option.\n */\n protected onSelectCategory(index: number): void {\n const option = this.addOptions()[index];\n if (!option) return;\n\n // Choosing a category swaps the trigger's VARIANT (text → icon) and with\n // it its place in the row. The panel is a child of the button and would\n // travel along.\n this.immediateTriggerExit.set(true);\n\n this._withFlip(() => {\n this.triggerOpen.set(false);\n this.categorySearch.set('');\n this._resetDraft();\n this.calendarOpen.set(null);\n this.pending.set(option);\n // The answer panel is born ALREADY OPEN: the user asked for this filter,\n // and making them click the fresh chip to be asked for a value would\n // charge twice for one decision.\n this.openPanel.set({ key: option.key, part: 'value' });\n });\n }\n\n /**\n * Swaps the category of a chip that already exists, from its first segment.\n *\n * The answer always falls: it belongs to the old category's domain — a list\n * of statuses means nothing inside a date range — so the chip goes back to\n * waiting, with its value panel open.\n */\n protected onChangeCategory(row: MonkeyFilterBarV2Row, index: number): void {\n const option = this.changeOptions()[index];\n if (!option) return;\n\n // The same category: nothing to swap, so the click just moves on to the\n // answer, which is the only thing left to change.\n if (option.key === row.key) {\n this._openValuePanel(row);\n return;\n }\n\n if (this.isFilterActive(option.key)) return;\n\n this._withFlip(\n () => {\n const k = this.key();\n if (k && !row.pending) this._service.removeFilter(k, row.key);\n this._resetDraft();\n this.calendarOpen.set(null);\n this.categorySearch.set('');\n this.pending.set(option);\n this.openPanel.set({ key: option.key, part: 'value' });\n },\n // The slot keyed by the old category disappears either way — a new chip\n // is born under the new key — so it always leaves through the ghost.\n { leaving: [row.key], follow: false }\n );\n\n if (!row.pending) this._emit();\n }\n\n /**\n * Opening the trigger closes whatever chip panel was open: only one panel is\n * ever on screen, and a draft chip whose panel was abandoned goes with it.\n */\n protected onTriggerOpenChange(open: boolean): void {\n this.categorySearch.set('');\n this.triggerOpen.set(open);\n if (!open) return;\n\n if (this.pending()) {\n this._dropPending();\n return;\n }\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this._resetDraft();\n }\n\n protected onCategoryOpenChange(row: MonkeyFilterBarV2Row, open: boolean): void {\n this.categorySearch.set('');\n if (!open) {\n this._closePanel(row);\n return;\n }\n this.triggerOpen.set(false);\n this.openPanel.set({ key: row.key, part: 'category' });\n }\n\n protected onValueOpenChange(row: MonkeyFilterBarV2Row, open: boolean): void {\n if (!open) {\n this._closePanel(row);\n return;\n }\n this.triggerOpen.set(false);\n this._openValuePanel(row);\n }\n\n // ── Date ─────────────────────────────────────────────────────────────────\n\n /**\n * The same shortcuts monkey-filter-bar offers. \"Personalizado\" is the only\n * one that does not resolve the interval on its own: it swaps the panel's\n * content for the calendar, in the same place.\n */\n protected onQuickDate(row: MonkeyFilterBarV2Row, preset: string): void {\n const option = this._optionFor(row.key);\n if (!option || option.type !== 'date') return;\n\n if (preset === 'custom') {\n this.dateRange = { startDate: '', endDate: '' };\n this.calendarOpen.set(row.key);\n return;\n }\n\n const today = new Date();\n let start = today;\n let end = today;\n\n switch (preset) {\n case '1-week-after':\n end = addDays(today, 7);\n break;\n case '1-month-after':\n end = addMonths(today, 1);\n break;\n case '3-months-after':\n end = addMonths(today, 3);\n break;\n case '1-week-before':\n start = subDays(today, 7);\n break;\n case '1-month-before':\n start = subMonths(today, 1);\n break;\n case '3-months-before':\n start = subMonths(today, 3);\n break;\n default:\n return;\n }\n\n this.dateRange = {\n startDate: format(start, 'yyyy-MM-dd'),\n endDate: format(end, 'yyyy-MM-dd')\n };\n this.onApply(row);\n }\n\n protected onDateChange(\n row: MonkeyFilterBarV2Row,\n event: { startDate: string; endDate: string }\n ): void {\n this.dateRange = event;\n if (event.startDate && event.endDate) {\n // The 100ms is monkey-filter-bar's own: the date range emits while it is\n // still settling its own state, and applying inside that turn would\n // close the panel from under it.\n setTimeout(() => {\n return this.onApply(row);\n }, 100);\n }\n }\n\n /** Cancel inside the calendar goes back to the shortcuts, panel still open. */\n protected onBackToShortcuts(): void {\n this.calendarOpen.set(null);\n }\n\n // ── Answers ──────────────────────────────────────────────────────────────\n\n protected onStatusChange(value: string, checked: boolean): void {\n if (checked) {\n if (!this.statusValues.includes(value)) this.statusValues = [...this.statusValues, value];\n return;\n }\n this.statusValues = this.statusValues.filter((v) => {\n return v !== value;\n });\n }\n\n protected onToggleStatus(value: string): void {\n this.onStatusChange(value, !this.statusValues.includes(value));\n }\n\n /**\n * The one place where an answer is written. Same validation as\n * monkey-filter-bar: an empty answer is not an answer, and the panel stays\n * open instead of writing a filter with nothing in it.\n */\n protected onApply(row: MonkeyFilterBarV2Row): void {\n const k = this.key();\n const option = this._optionFor(row.key);\n if (!k || !option) return;\n\n let value: ActiveFilter['value'];\n\n switch (option.type) {\n case 'text':\n if (!this.textValue.trim()) return;\n value = this.textValue.trim();\n break;\n case 'date':\n if (!this.dateRange.startDate || !this.dateRange.endDate) return;\n value = { startDate: this.dateRange.startDate, endDate: this.dateRange.endDate };\n break;\n case 'currency': {\n const raw = this.currencyValue;\n if (raw === null || raw === undefined) return;\n value = this.currencyMode === 'from' ? { min: raw } : { max: raw };\n break;\n }\n case 'status':\n if (this.statusValues.length === 0) return;\n value = [...this.statusValues];\n break;\n default:\n return;\n }\n\n this._withFlip(() => {\n if (this._service.isFilterActive(k, option.key)) {\n this._service.updateFilter(k, option.key, option, value);\n } else {\n this._service.addFilter(k, option, value);\n }\n this.pending.set(null);\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this._resetDraft();\n });\n\n this._emit();\n }\n\n protected onRemove(row: MonkeyFilterBarV2Row): void {\n const k = this.key();\n if (!k) return;\n\n // Does not follow the end: the row shrank, and jumping to the end after\n // deleting something is disorienting — the eye is on the hole that was\n // left, not on the queue.\n this._withFlip(\n () => {\n if (row.pending) {\n this.pending.set(null);\n } else {\n this._service.removeFilter(k, row.key);\n }\n if (this.openPanel()?.key === row.key) this.openPanel.set(null);\n if (this.calendarOpen() === row.key) this.calendarOpen.set(null);\n this._resetDraft();\n },\n { leaving: [row.key], follow: false }\n );\n\n if (!row.pending) this._emit();\n }\n\n /** Zeroes the whole bar. The trigger goes back to being the call with a label. */\n protected onClearAll(): void {\n const k = this.key();\n if (!k) return;\n\n const leaving = this.rows().map((row) => {\n return row.key;\n });\n\n this._withFlip(\n () => {\n this._service.clearAllFilters(k);\n this.pending.set(null);\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this._resetDraft();\n },\n { leaving, follow: false }\n );\n\n this._emit();\n }\n\n protected onSearchChange(value: string): void {\n const k = this.key();\n if (!k) return;\n this._service.setSearchValue(k, value);\n this.searchChange.emit(value);\n this._emit();\n }\n\n // ── Panel bookkeeping ────────────────────────────────────────────────────\n\n /**\n * Opens a chip's answer panel, pre-filled with the answer it already holds —\n * this is the edit path the active-filter tag used to be.\n */\n private _openValuePanel(row: MonkeyFilterBarV2Row): void {\n this._resetDraft();\n this.calendarOpen.set(null);\n\n const k = this.key();\n const filter = k\n ? this._service.getActiveFilters(k).find((f) => {\n return f.key === row.key;\n })\n : undefined;\n\n if (filter) {\n switch (filter.type) {\n case 'text':\n this.textValue = filter.value as string;\n break;\n case 'date': {\n const range = filter.value as { startDate: string; endDate: string };\n this.dateRange = { startDate: range.startDate ?? '', endDate: range.endDate ?? '' };\n // Editing a date goes straight to the calendar: the shortcuts are the\n // way IN, and there is nothing to pick from them once an interval\n // already exists.\n this.calendarOpen.set(row.key);\n break;\n }\n case 'currency': {\n const amount = filter.value as { min?: number; max?: number };\n if (amount.min !== undefined) {\n this.currencyMode = 'from';\n this.currencyValue = amount.min;\n } else if (amount.max !== undefined) {\n this.currencyMode = 'until';\n this.currencyValue = amount.max;\n }\n break;\n }\n case 'status':\n this.statusValues = [...((filter.value as string[]) ?? [])];\n break;\n default:\n break;\n }\n }\n\n this.openPanel.set({ key: row.key, part: 'value' });\n }\n\n /**\n * Closing the value panel of a chip that was never confirmed drops the chip:\n * monkey-filter-bar adds nothing until Apply, and a chip left on the row\n * with no answer would be a state it does not have.\n *\n * Closing the panel of a CONFIRMED chip changes no width — the segment shows\n * the same text it did before — so that path needs no FLIP.\n */\n private _closePanel(row: MonkeyFilterBarV2Row): void {\n if (!this.isOpen(row.key, 'category') && !this.isOpen(row.key, 'value')) return;\n\n if (row.pending) {\n this._dropPending();\n return;\n }\n\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this._resetDraft();\n }\n\n /** Takes the draft chip off the row, ghost and all. */\n private _dropPending(): void {\n const draft = this.pending();\n if (!draft) return;\n\n this._withFlip(\n () => {\n this.pending.set(null);\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this._resetDraft();\n },\n { leaving: [draft.key], follow: false }\n );\n }\n\n private _optionFor(optionKey: string): FilterOption | undefined {\n return this.serviceConfig()?.filterOptions.find((o) => {\n return o.key === optionKey;\n });\n }\n\n private _matchingSearch(options: readonly FilterOption[]): FilterOption[] {\n const term = this.categorySearch().trim().toLowerCase();\n if (!term) return [...options];\n return options.filter((o) => {\n return o.label.toLowerCase().includes(term);\n });\n }\n\n private _resetDraft(): void {\n this.textValue = '';\n this.currencyValue = null;\n this.currencyMode = 'from';\n this.statusValues = [];\n this.dateRange = { startDate: '', endDate: '' };\n }\n\n private _emit(): void {\n const k = this.key();\n if (!k) return;\n const state = this._service.getState(k);\n this.filtersChange.emit({ search: state.search, filters: state.filters });\n }\n\n // ── Coordinating state and DOM ───────────────────────────────────────────\n\n /**\n * Takes the slots that are about to leave out of the flow, at the exact\n * place where they are.\n *\n * This is done HERE and not by the `animate.leave` class because of ORDER:\n * Angular only applies the exit class the instant it removes the node, and\n * that happens AFTER the `afterNextRender` that runs the FLIP. The FLIP\n * would then measure a layout that had not collapsed yet, see no\n * displacement at all, and the neighbours would snap into their new place\n * with no animation — the chip's exit worked and the neighbours' arrival did\n * not.\n *\n * Released from the flow BEFORE the mutation, the row collapses in the same\n * pass: the FLIP measures a real before and a real after, and the ghost\n * fades out on top, in place. Explicit `left`/`top` are mandatory — the\n * static position of an absolute element inside a flex container is the\n * container's corner, not where the element was.\n */\n private _releaseFromFlow(container: HTMLElement, leaving: readonly string[]): void {\n leaving.forEach((id) => {\n const slot = container.querySelector<HTMLElement>(`[${FLIP_ATTR}=\"${id}\"]`);\n if (!slot) return;\n slot.style.left = `${slot.offsetLeft}px`;\n slot.style.top = `${slot.offsetTop}px`;\n slot.style.position = 'absolute';\n });\n }\n\n /**\n * Takes the row to the end of its travel, so that what has just come in is\n * not left hidden — and with it the trigger, which is always last in line.\n *\n * It runs BEFORE the \"after\" measurement on purpose. FLIP works in VIEWPORT\n * coordinates, so scrolling first folds the scroll offset into the same sum:\n * every piece slides from where the eye saw it to where it ended up, pan\n * included. One single synchronised movement.\n *\n * It is also what makes `scroll-behavior: smooth` unnecessary, which has no\n * token, guarantees nothing under reduced motion, and stalls in a throttled\n * tab.\n *\n * The sum comes from the LAST SLOT, never from `scrollWidth`. `scrollWidth`\n * at this instant is a poisoned measurement: the chip that has just been\n * born brings its answer panel already open, and the panel has not been\n * anchored yet — it is at its static position, far ahead, and counts as\n * overflow. The scroll would go hundreds of pixels chasing a ghost, the FLIP\n * would animate the whole row that distance, and the browser would clamp the\n * scroll back when the panel got anchored — a hard jump with no animation,\n * right in the middle of the chip's entrance.\n *\n * The slots do not have that problem: they are flow content, already at\n * their final position on the first render, and none of them is `fixed`.\n */\n private _followEnd(container: HTMLElement): void {\n const row = container.querySelector<HTMLElement>('.mecx-filter-bar-v2-row');\n if (!row) return;\n\n const slots = row.querySelectorAll<HTMLElement>(`[${FLIP_ATTR}]`);\n const last = slots[slots.length - 1];\n if (!last) return;\n\n // The breathing room at the end is padding INSIDE the row's box, so the\n // usable right edge sits before it. Without discounting it, the trigger\n // comes to rest exactly where the gradient dilutes it.\n const room = parseFloat(getComputedStyle(row).paddingInlineEnd) || 0;\n const excess = last.getBoundingClientRect().right + room - row.getBoundingClientRect().right;\n\n // Only ever forward. With no overflow this is inert, and going backwards\n // would drag the eye back at the moment the queue grew.\n if (excess <= 0) return;\n row.scrollLeft += excess;\n }\n\n /**\n * Measures, lets the state change, then makes everything slide from its old\n * position.\n *\n * `afterNextRender` and not a `setTimeout`: we need the first instant at\n * which the DOM ALREADY reflects the new state, and that is exactly what it\n * delivers.\n */\n private _withFlip(\n mutate: () => void,\n options: { leaving?: readonly string[]; follow?: boolean } = {}\n ): void {\n const { leaving = [], follow = true } = options;\n const container = this._hostEl.nativeElement;\n const before = measureFlip(container);\n this._releaseFromFlow(container, leaving);\n\n mutate();\n\n afterNextRender(\n () => {\n if (follow) this._followEnd(container);\n animateFlip(container, before, FROZEN);\n // The panel is gone; the next close goes back to a normal fade.\n this.immediateTriggerExit.set(false);\n },\n { injector: this._injector }\n );\n }\n}\n","<!-- Top row: the free-text search and whatever the consumer projects. Kept\n from monkey-filter-bar — the search is part of this bar's contract\n (`searchChange`), not of the chip row. -->\n<div class=\"mecx-filter-bar-v2-top\">\n <monkey-form-field class=\"mecx-filter-bar-v2-search\" size=\"sm\">\n <input\n type=\"text\"\n monkey-input\n [placeholder]=\"searchPlaceholder()\"\n [ngModel]=\"searchValue()\"\n (ngModelChange)=\"onSearchChange($event)\"\n />\n <monkey-prefix>\n <i class=\"mk-i mk-i-search fs-md\"></i>\n </monkey-prefix>\n </monkey-form-field>\n\n <div class=\"mecx-filter-bar-v2-extra\">\n <ng-content></ng-content>\n </div>\n</div>\n\n<div class=\"mecx-filter-bar-v2-line\">\n <div #rowEl class=\"mecx-filter-bar-v2-row\">\n @for (f of rows(); track f.key) {\n <span\n class=\"mecx-filter-bar-v2-slot\"\n [attr.data-flip-id]=\"f.key\"\n [animate.enter]=\"appPainted() ? 'mecx-filter-bar-v2-slot--entering' : ''\"\n animate.leave=\"mecx-filter-bar-v2-slot--leaving\"\n >\n <monkey-filter-chip (remove)=\"onRemove(f)\">\n <!-- 1 · Category — opens the same list as the trigger, so the user\n can move a filter to another field without deleting it and\n starting over.\n\n The list is repeated here and further down on purpose, and it\n should NOT become a shared <ng-template>: the two differ in what\n they offer (only what can be added, vs. the whole list), in what\n counts as selected, and in what the click does. Sharing the\n markup would mean threading three parameters through a context\n object to save fifteen lines. -->\n <monkey-filter-segment\n [icon]=\"f.icon ?? null\"\n [text]=\"f.label\"\n [open]=\"isOpen(f.key, 'category')\"\n (openChange)=\"onCategoryOpenChange(f, $event)\"\n >\n <!-- Guarded by the same condition the segment uses to show its\n panel. Projected content is created with the view that\n DECLARES it, not with the one that renders it, so without this\n every chip would build both of its panels — menus, rows,\n fields and all — and keep them alive while closed. -->\n @if (isOpen(f.key, 'category')) {\n <monkey-filter-menu\n class=\"mecx-filter-bar-v2-menu-categories\"\n [showSearch]=\"true\"\n searchPlaceholder=\"Buscar filtro\"\n (searchChange)=\"categorySearch.set($event)\"\n >\n @for (opt of changeOptions(); track opt.key; let i = $index) {\n @if (needsDivider(changeOptions(), i)) {\n <monkey-divider />\n }\n <monkey-filter-menu-item\n [leadIcon]=\"opt.icon ?? null\"\n [label]=\"opt.label\"\n [selected]=\"opt.key === f.key\"\n [disabled]=\"opt.key !== f.key && isFilterActive(opt.key)\"\n (itemClick)=\"onChangeCategory(f, i)\"\n />\n }\n </monkey-filter-menu>\n }\n </monkey-filter-segment>\n\n <!-- 2 · Value — the panel it opens is decided by the filter type,\n and it is the same panel that the chip's answer came from. That\n is what makes clicking a chip an EDIT instead of a restart. -->\n <monkey-filter-segment\n [placeholder]=\"valuePlaceholder(f)\"\n [text]=\"f.value\"\n [open]=\"isOpen(f.key, 'value')\"\n (openChange)=\"onValueOpenChange(f, $event)\"\n >\n @if (isOpen(f.key, 'value')) {\n @switch (f.type) {\n <!-- status — a multiple choice, so the answer is only written\n on Confirmar. Ticking a box is not yet a decision. -->\n @case ('status') {\n <monkey-filter-menu class=\"mecx-filter-bar-v2-menu-status\" [showSearch]=\"false\">\n @for (s of statusOptionsOf(f); track s.value) {\n <monkey-filter-menu-item\n property=\"checkbox\"\n [label]=\"s.description\"\n [checked]=\"statusValues.includes(s.value)\"\n (itemClick)=\"onToggleStatus(s.value)\"\n />\n }\n <div class=\"mecx-filter-bar-v2-panel-actions\">\n <monkey-button type=\"secondary\" size=\"sm\" (click)=\"onApply(f)\">\n Confirmar\n </monkey-button>\n </div>\n </monkey-filter-menu>\n }\n\n <!-- date — the shortcuts are the way in and the calendar is\n the detour. \"Personalizado\" swaps the CONTENT of this\n panel, which stays anchored to the same segment: no modal,\n because the dialog was almost all frame around a calendar\n and the segment already knows how to hang anything. The\n footer here is the date range's own, and Cancelar goes\n back to the shortcuts. -->\n @case ('date') {\n @if (calendarOpen() === f.key) {\n <monkey-date-range\n class=\"mecx-filter-bar-v2-calendar\"\n [startDate]=\"dateRange.startDate\"\n [endDate]=\"dateRange.endDate\"\n [minDate]=\"minDateOf(f)\"\n [maxDate]=\"maxDateOf(f)\"\n (onDate)=\"onDateChange(f, $event)\"\n (onCancel)=\"onBackToShortcuts()\"\n ></monkey-date-range>\n } @else {\n <monkey-filter-menu [showSearch]=\"false\">\n <monkey-filter-menu-item\n label=\"1 semana a partir de hoje\"\n (itemClick)=\"onQuickDate(f, '1-week-after')\"\n />\n <monkey-filter-menu-item\n label=\"1 mês a partir de hoje\"\n (itemClick)=\"onQuickDate(f, '1-month-after')\"\n />\n <monkey-filter-menu-item\n label=\"3 meses a partir de hoje\"\n (itemClick)=\"onQuickDate(f, '3-months-after')\"\n />\n <monkey-filter-menu-item\n label=\"1 semana antes de hoje\"\n (itemClick)=\"onQuickDate(f, '1-week-before')\"\n />\n <monkey-filter-menu-item\n label=\"1 mês antes de hoje\"\n (itemClick)=\"onQuickDate(f, '1-month-before')\"\n />\n <monkey-filter-menu-item\n label=\"3 meses antes de hoje\"\n (itemClick)=\"onQuickDate(f, '3-months-before')\"\n />\n <monkey-filter-menu-item\n label=\"Personalizado\"\n (itemClick)=\"onQuickDate(f, 'custom')\"\n />\n </monkey-filter-menu>\n }\n }\n\n <!-- currency — one amount and the side it applies to. The\n label lives inside the field, which is what lets the panel\n close in 238px instead of spending a line on a title. -->\n @case ('currency') {\n <monkey-filter-menu class=\"mecx-filter-bar-v2-menu-field\" [showSearch]=\"false\">\n <div class=\"mecx-filter-bar-v2-field\">\n <monkey-radiobutton [(ngModel)]=\"currencyMode\" position=\"vertical\" size=\"sm\">\n <monkey-option [value]=\"'from'\">De</monkey-option>\n <monkey-option [value]=\"'until'\">Até</monkey-option>\n </monkey-radiobutton>\n\n <monkey-form-field size=\"sm\">\n <monkey-label>{{ f.label }}</monkey-label>\n <input\n type=\"text\"\n monkey-input-currency\n [placeholder]=\"currencyMode === 'from' ? 'Valor mínimo' : 'Valor máximo'\"\n [(ngModel)]=\"currencyValue\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n\n <monkey-button type=\"secondary\" size=\"sm\" (click)=\"onApply(f)\">\n Confirmar\n </monkey-button>\n </div>\n </monkey-filter-menu>\n }\n\n <!-- text — a single field, so the answer is the text itself. -->\n @default {\n <monkey-filter-menu class=\"mecx-filter-bar-v2-menu-field\" [showSearch]=\"false\">\n <div class=\"mecx-filter-bar-v2-field\">\n <monkey-form-field size=\"sm\">\n <monkey-label>{{ f.label }}</monkey-label>\n <input\n type=\"text\"\n monkey-input\n [placeholder]=\"valuePlaceholder(f)\"\n [(ngModel)]=\"textValue\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n\n <monkey-button type=\"secondary\" size=\"sm\" (click)=\"onApply(f)\">\n Confirmar\n </monkey-button>\n </div>\n </monkey-filter-menu>\n }\n }\n }\n </monkey-filter-segment>\n </monkey-filter-chip>\n </span>\n }\n\n <!-- The trigger is the last slot of the row. Its FLIP identity changes\n along with the variant (see triggerFlipId): with the bar empty it is\n the labelled \"Filtro\" and it goes away with the first filter; the \"+\"\n that takes its place inherits no position, so there is no button\n sliding along and dragging the panel that is closing. -->\n <span class=\"mecx-filter-bar-v2-slot\" [attr.data-flip-id]=\"triggerFlipId()\">\n <monkey-filter-trigger\n [variant]=\"triggerVariant()\"\n [icon]=\"triggerIcon()\"\n [text]=\"addFilterLabel()\"\n [immediateExit]=\"immediateTriggerExit()\"\n [open]=\"triggerOpen()\"\n (openChange)=\"onTriggerOpenChange($event)\"\n >\n @if (triggerOpen()) {\n <monkey-filter-menu\n class=\"mecx-filter-bar-v2-menu-categories\"\n [showSearch]=\"true\"\n searchPlaceholder=\"Buscar filtro\"\n (searchChange)=\"categorySearch.set($event)\"\n >\n @for (opt of addOptions(); track opt.key; let i = $index) {\n @if (needsDivider(addOptions(), i)) {\n <monkey-divider />\n }\n <monkey-filter-menu-item\n [leadIcon]=\"opt.icon ?? null\"\n [label]=\"opt.label\"\n (itemClick)=\"onSelectCategory(i)\"\n />\n }\n </monkey-filter-menu>\n }\n </monkey-filter-trigger>\n </span>\n </div>\n\n <!-- Gradient plus action. The gradient exists so the chips FADE OUT as they\n pass underneath instead of being cut off hard by the edge of what\n scrolls. -->\n @if (rows().length > 0) {\n <div class=\"mecx-filter-bar-v2-actions\">\n <monkey-button type=\"tertiary\" size=\"sm\" (click)=\"onClearAll()\">\n {{ clearAllLabel() }}\n </monkey-button>\n </div>\n }\n</div>\n\n<!-- Drawn bar plus divider. The bar hides itself when there is nothing to\n scroll, so filters existing is enough for it to be mounted. -->\n@if (rows().length > 0) {\n <monkey-scrollbar orientation=\"horizontal\" size=\"small\" [target]=\"rowEl\" />\n <monkey-divider />\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './filter-bar-v2.component';\nexport * from './filter-chip.component';\nexport * from './filter-menu.component';\nexport * from './filter-menu-item.component';\nexport * from './filter-segment.component';\nexport * from './filter-trigger.component';\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n Input,\r\n InputSignal,\r\n Optional,\r\n QueryList,\r\n ViewChildren,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldComponent, MonkeyFormFieldControl } from '../form-field';\r\n\r\ntype KeyboardKeys = 'Backspace' | 'Delete' | 'ArrowLeft' | 'ArrowUp' | 'ArrowRight' | 'ArrowDown';\r\n\r\ninterface AllowedKeyboardKeys {\r\n Backspace: () => void;\r\n Delete: () => void;\r\n ArrowLeft: () => void;\r\n ArrowUp: () => void;\r\n ArrowRight: () => void;\r\n ArrowDown: () => void;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-input-code',\r\n styleUrl: './input-code.component.scss',\r\n templateUrl: './input-code.component.html',\r\n imports: [FormsModule],\r\n host: {\r\n 'data-testid': 'monkey-input-code',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n },\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputCodeComponent }\r\n ]\r\n})\r\nexport class MonkeyInputCodeComponent\r\n implements ControlValueAccessor, MonkeyFormFieldControl, AfterViewInit\r\n{\r\n readonly stateChanges = new Subject<void>();\r\n\r\n readonly type: string = 'input-code';\r\n\r\n readonly currency: boolean = false;\r\n\r\n readonly percent: boolean = false;\r\n\r\n readonly id: any = inject(IdGenerator).getId('monkey-input-code-');\r\n\r\n private _onChange: any = () => {};\r\n\r\n private _onTouched: any = () => {};\r\n\r\n private _value = null;\r\n\r\n public ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n public focused: boolean = false;\r\n\r\n public length: InputSignal<number> = input<number>(6);\r\n\r\n public inputType: InputSignal<string> = input<string>('numeric');\r\n\r\n public inputIndices = computed(() => {\r\n return Array.from({ length: this.length() }, (_, i) => {\r\n return '';\r\n });\r\n });\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched();\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n @ViewChildren('codeInput') inputs!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n constructor(@Optional() private formField: MonkeyFormFieldComponent) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n\r\n if (this.formField) {\r\n this.formField.hideAction = true;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.formField) {\r\n const input = this.formField.elementRef.nativeElement.querySelector(\r\n '.mecx-form-field-body'\r\n ) as HTMLElement;\r\n\r\n const height = input.offsetHeight > 40 ? input.offsetHeight : 40;\r\n\r\n this.inputs.forEach((inputEl) => {\r\n inputEl.nativeElement.style.height = `${height}px`;\r\n inputEl.nativeElement.style.width = `${height}px`;\r\n });\r\n }\r\n }\r\n\r\n private _onFocus(): void {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n private propagateCode(): void {\r\n const code = this.inputIndices().join('');\r\n\r\n this.writeValue(code);\r\n }\r\n\r\n private focusNextInput(input: HTMLInputElement): void {\r\n const next: HTMLInputElement = input.nextElementSibling as HTMLInputElement;\r\n\r\n next?.focus();\r\n }\r\n\r\n private focusPreviousInput(input: HTMLInputElement): void {\r\n const previous: HTMLInputElement = input.previousElementSibling as HTMLInputElement;\r\n\r\n previous?.focus();\r\n }\r\n\r\n private setFullInputValue(value: string): void {\r\n const chars: string[] = value?.slice(0, this.length()).split('') || '';\r\n\r\n chars.forEach((digit: string, index: number) => {\r\n this.inputIndices()[index] = digit;\r\n });\r\n }\r\n\r\n public isInvalid(): boolean {\r\n return this.formField.showInvalid;\r\n }\r\n\r\n public onContainerClick(): void {\r\n if (!this._value) {\r\n this.inputs.first.nativeElement.focus();\r\n }\r\n }\r\n\r\n public onKeyDown(event: KeyboardEvent, index: number): void {\r\n const input = event.target as HTMLInputElement;\r\n this.inputIndices()[index] = input.value;\r\n\r\n const { key } = event;\r\n const keys: AllowedKeyboardKeys = {\r\n Backspace: (): void => {\r\n if (input.value === '') {\r\n this.focusPreviousInput(input);\r\n }\r\n },\r\n Delete: (): void => {\r\n if (input.value === '') {\r\n this.focusNextInput(input);\r\n }\r\n },\r\n ArrowLeft: (): void => {\r\n if (index > 0) {\r\n this.focusPreviousInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n },\r\n ArrowUp: (): void => {\r\n if (index > 0) {\r\n this.focusPreviousInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n },\r\n ArrowRight: (): void => {\r\n if (index < this.length()) {\r\n this.focusNextInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n },\r\n ArrowDown: (): void => {\r\n if (index < this.length()) {\r\n this.focusNextInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n }\r\n };\r\n\r\n if (keys[key as KeyboardKeys]) {\r\n keys[key as KeyboardKeys]();\r\n }\r\n }\r\n\r\n public onInput(event: Event, index: number): void {\r\n const input = event.target as HTMLInputElement;\r\n const { value } = input;\r\n\r\n if (value.length > 1) {\r\n this.setFullInputValue(value);\r\n\r\n input.value = value.charAt(0);\r\n } else {\r\n input.value = value;\r\n }\r\n\r\n this.inputIndices()[index] = input.value;\r\n\r\n if (input.value && index < this.length()) {\r\n this.focusNextInput(input);\r\n }\r\n\r\n this.propagateCode();\r\n }\r\n\r\n public onPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n\r\n const pastedData: string = event.clipboardData?.getData('text').trim() ?? '';\r\n const chars: string[] = pastedData.slice(0, this.length()).split('');\r\n\r\n chars.forEach((digit, index) => {\r\n this.inputIndices()[index] = digit;\r\n });\r\n\r\n if (this.inputs.length > chars.length) {\r\n this.inputs.get(chars.length)?.nativeElement.focus();\r\n }\r\n\r\n if (this.inputs.length <= chars.length) {\r\n this.onBlur();\r\n }\r\n\r\n this.propagateCode();\r\n }\r\n\r\n public onBlur(): void {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n public onFocus(event: FocusEvent): void {\r\n const input = event.target as HTMLInputElement;\r\n\r\n input.select();\r\n this._onFocus();\r\n }\r\n\r\n public writeValue(value: string): void {\r\n this.value = value;\r\n }\r\n\r\n public registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","<div class=\"monkey-input-code\">\r\n @for (idx of inputIndices(); track $index; let i = $index) {\r\n <input\r\n #codeInput\r\n class=\"focus\"\r\n autocomplete=\"one-time-code\"\r\n [attr.type]=\"inputType()\"\r\n [disabled]=\"_disabled\"\r\n [attr.maxlength]=\"1\"\r\n [class.invalid]=\"isInvalid()\"\r\n [(ngModel)]=\"inputIndices()[i]\"\r\n (focus)=\"onFocus($event)\"\r\n (input)=\"onInput($event, i)\"\r\n (keydown)=\"onKeyDown($event, i)\"\r\n (paste)=\"onPaste($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n }\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-code.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Optional,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyDateRangeComponent } from '../date-range/date-range.component';\r\nimport {\r\n MonkeyFormFieldComponent,\r\n MonkeyFormFieldControl,\r\n MonkeyFormFieldModule\r\n} from '../form-field';\r\n\r\n@Component({\r\n selector: 'monkey-input-date-range',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyPopoverDirective,\r\n MonkeyDateRangeComponent\r\n ],\r\n template: `\r\n <span #popoverTarget (click)=\"onOpenPopover()\">\r\n @if (startDate) {\r\n {{ startDate | date }} - {{ endDate | date }}\r\n } @else {\r\n {{ placeholder }}\r\n }\r\n </span>\r\n\r\n <ng-template\r\n [monkeyPopover]=\"showPopOver\"\r\n [monkeyPopoverTarget]=\"elementTarget\"\r\n [monkeyPopoverClosed]=\"closePopOver\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverTitle]=\"title\"\r\n >\r\n <monkey-date-range\r\n hideHeader\r\n hideActions\r\n [startDate]=\"startDate\"\r\n [endDate]=\"endDate\"\r\n (onDate)=\"onHandleDate($event)\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n >\r\n </monkey-date-range>\r\n </ng-template>\r\n `,\r\n styleUrl: './input-date-range.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputDateRangeComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-input-date-range'\",\r\n class: 'mecx-input-date-range',\r\n '[class.mecx-input-date-range-disabled]': '_disabled',\r\n '[class.mecx-input-date-range-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyInputDateRangeComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy, OnChanges\r\n{\r\n @Input({ required: true }) placeholder!: string;\r\n\r\n @Input({ required: true }) title!: string;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input() minDate: Date | string = '';\r\n\r\n @Input() maxDate: Date | string = '';\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this.handleValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor(@Optional() public formField: MonkeyFormFieldComponent) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-input-date-range-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'input-date-range';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n showPopOver = false;\r\n\r\n startDate = '';\r\n\r\n endDate = '';\r\n\r\n handledMinDate: string = '';\r\n\r\n handledMaxDate: string = '';\r\n\r\n get elementTarget() {\r\n if (this.formField?.elementRef) {\r\n return this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n }\r\n\r\n return this._elementRef.nativeElement;\r\n }\r\n\r\n closePopOver = () => {\r\n this.showPopOver = false;\r\n this.validateValue();\r\n };\r\n\r\n ngAfterContentInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n ngOnDestroy(): void {}\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n this.onOpenPopover();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n private handleValue(value: any) {\r\n try {\r\n const { startDate, endDate } = value || {\r\n startDate: '',\r\n endDate: ''\r\n };\r\n this.startDate = startDate;\r\n this.endDate = endDate;\r\n } catch (e) {\r\n // not to do\r\n }\r\n }\r\n\r\n private validateValue() {\r\n const { startDate, endDate } = this.value;\r\n if (!startDate || !endDate) {\r\n this.ngControl?.control?.setErrors({\r\n dateRange: true\r\n });\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this.handleValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n onOpenPopover() {\r\n if (!this.disabled) {\r\n this.showPopOver = true;\r\n }\r\n }\r\n\r\n onHandleDate(event: any) {\r\n try {\r\n this.value = null;\r\n const { startDate, endDate } = event;\r\n this.value = event;\r\n if (startDate && endDate) {\r\n this.closePopOver();\r\n }\r\n } catch (e) {\r\n // not to do\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-date-range.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n QueryList,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { debounceTime, Subject } from 'rxjs';\r\nimport { normalizeStringToSearch, sanitizeString, UtilIconComponent } from '../../../utils';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeyDictionaryService } from '../../services/dictionary.service';\r\nimport { MonkeyFormFieldControl } from '../form-field/form-field-control';\r\nimport { MonkeyFormFieldComponent } from '../form-field/form-field.component';\r\nimport { MonkeyOptionComponent } from '../option/option.component';\r\n\r\n@Component({\r\n selector: 'monkey-select',\r\n imports: [CommonModule, ReactiveFormsModule, FormsModule, UtilIconComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: 'select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeySelectComponent }\r\n ],\r\n animations: [\r\n trigger('animation', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n transform: 'scaleY(.9)'\r\n }),\r\n animate(\r\n '100ms ease-in-out',\r\n style({\r\n opacity: 1,\r\n transform: 'scaleY(1)'\r\n })\r\n )\r\n ]),\r\n state(\r\n 'closed',\r\n style({\r\n transform: 'scaleY(.9)',\r\n opacity: 0\r\n })\r\n ),\r\n transition('closed <=> open', animate('200ms ease-in-out'))\r\n ])\r\n ],\r\n host: {\r\n 'data-testid': 'monkey-select',\r\n class: 'mecx-select',\r\n '[class.mecx-select-disabled]': '_disabled',\r\n '[class.mecx-select-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeySelectComponent\r\n implements\r\n MonkeyFormFieldControl,\r\n ControlValueAccessor,\r\n AfterContentInit,\r\n OnInit,\r\n OnDestroy,\r\n OnChanges\r\n{\r\n @ViewChild('overlayTemplate') overlayTemplate!: TemplateRef<any>;\r\n\r\n @ViewChild('overlay') overlayEl!: ElementRef;\r\n\r\n @ViewChild('trigger') trigger!: ElementRef;\r\n\r\n @ContentChildren(MonkeyOptionComponent) options!: QueryList<MonkeyOptionComponent>;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input({ required: true }) placeholder = '';\r\n\r\n @Input({ transform: booleanAttribute })\r\n loading = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n showSearch = true;\r\n\r\n @Input()\r\n searchPlaceholder = '';\r\n\r\n @Input()\r\n type = 'select';\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value) {\r\n this._value = value;\r\n this._onChange(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value = null;\r\n\r\n labelSelected = '';\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n readonly currency: boolean = false;\r\n\r\n focused: boolean = false;\r\n\r\n _disabled: boolean = false;\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-select-');\r\n\r\n readonly percent: boolean = false;\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n readonly searchHandle = new EventEmitter<string>();\r\n\r\n readonly searchDictionary = inject(MonkeyDictionaryService).get('NO-DATA');\r\n\r\n readonly loadingDictionary = inject(MonkeyDictionaryService).get('LOADING');\r\n\r\n showSearchNoData = false;\r\n\r\n isOpen = false;\r\n\r\n searchData = '';\r\n\r\n constructor(\r\n private overlay: Overlay,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private viewContainerRef: ViewContainerRef,\r\n @Optional() private formField: MonkeyFormFieldComponent\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n private changeControl() {\r\n if (this.formField?.control) {\r\n this.formField.control.loading = this.loading;\r\n }\r\n }\r\n\r\n private changeSelected(): void {\r\n setTimeout(() => {\r\n if (!this.options) return;\r\n\r\n if (this.type === 'checkbox') {\r\n const selectedValues = this.getComparationValue();\r\n this.options.forEach((opt) => {\r\n if (!opt.disabled) {\r\n opt.selected = selectedValues.includes(String(opt.value()));\r\n }\r\n });\r\n } else {\r\n this.options.forEach((opt) => {\r\n opt.onSelect(String(opt.value()) === this.value);\r\n });\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n private initializeOptions() {\r\n setTimeout(() => {\r\n this.options.forEach((option) => {\r\n option.type = this.type;\r\n if (!option.action) {\r\n option.action = this.selectOption.bind(this, option);\r\n }\r\n });\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n private openDropdown(): void {\r\n if (this.options?.length) {\r\n this.formField.control.disableToBeDirty = true;\r\n this.isOpen = true;\r\n this.createOverlay();\r\n }\r\n }\r\n\r\n private closeDropdown() {\r\n this.isOpen = false;\r\n this.focused = false;\r\n this.formField.control.disableToBeDirty = false;\r\n this.searchData = '';\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private closeOverlay(): void {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null;\r\n }\r\n }\r\n\r\n private initializeWithOverlay() {\r\n if (this.showSearch) {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${this.id}-search`\r\n ) as HTMLElement;\r\n\r\n this.options.forEach((opt) => {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${opt.id}`\r\n ) as HTMLElement | null;\r\n if (!element) return;\r\n element.style.display = '';\r\n });\r\n\r\n setTimeout(() => {\r\n element?.focus();\r\n }, 0);\r\n this.showSearchNoData = false;\r\n }\r\n\r\n setTimeout(() => {\r\n const selected = this.options.find((opt) => {\r\n return opt.selected();\r\n });\r\n\r\n if (selected) {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${selected.id}`\r\n ) as HTMLElement;\r\n element?.scrollIntoView({ behavior: 'instant', block: 'center' });\r\n }\r\n }, 0);\r\n }\r\n\r\n private createOverlay(): void {\r\n if (this.overlayRef) {\r\n return;\r\n }\r\n\r\n const offset = 4;\r\n const positions: ConnectedPosition[] = [\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: offset\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -offset\r\n }\r\n ];\r\n\r\n let anchor = this.trigger;\r\n let width = anchor.nativeElement.offsetWidth;\r\n\r\n if (this.formField?.elementRef) {\r\n const el = this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n anchor = el;\r\n width = el.offsetWidth;\r\n }\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(anchor)\r\n .withPositions(positions)\r\n .withPush(true);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'no-class'\r\n });\r\n\r\n const portal = new TemplatePortal(this.overlayTemplate, this.viewContainerRef);\r\n\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef\r\n .backdropClick()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n return this.closeDropdown();\r\n });\r\n\r\n this.initializeWithOverlay();\r\n }\r\n\r\n private updateSelectedLabel(): void {\r\n if (!this.options) return;\r\n\r\n if (this.type === 'checkbox') {\r\n const selectedValues = this.getComparationValue();\r\n\r\n const selectedOptions = this.options.filter((opt) => {\r\n return selectedValues.includes(String(opt.value()));\r\n });\r\n\r\n const maxToShow = 3;\r\n const displayContents = selectedOptions.slice(0, maxToShow).map((opt) => {\r\n return opt.displayContent;\r\n });\r\n\r\n const hasMore = selectedOptions.length > maxToShow;\r\n\r\n this.labelSelected = hasMore\r\n ? `${displayContents.join(', ')}...`\r\n : displayContents.join(', ');\r\n } else {\r\n const selectedOption = this.options.find((opt) => {\r\n return String(opt.value()) === this.value;\r\n });\r\n this.labelSelected = selectedOption ? selectedOption.displayContent : '';\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private executeSearch(search: string): void {\r\n let found = false;\r\n this.options.forEach((opt) => {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${opt.id}`\r\n ) as HTMLElement | null;\r\n\r\n if (!element) return;\r\n\r\n const isMatch = normalizeStringToSearch(opt.displayContent).includes(\r\n normalizeStringToSearch(search)\r\n );\r\n if (isMatch) {\r\n found = true;\r\n }\r\n element.style.display = isMatch ? '' : 'none';\r\n });\r\n\r\n this.repositionScroll();\r\n this.showSearchNoData = !found;\r\n }\r\n\r\n private repositionScroll() {\r\n const overlayElement = this.overlayRef?.overlayElement.querySelector(\r\n '.mecx-select-overlay'\r\n ) as HTMLElement;\r\n\r\n if (overlayElement) {\r\n overlayElement.scrollTop = 0;\r\n }\r\n }\r\n\r\n private getComparationValue() {\r\n return (this.value || '')\r\n .split(',')\r\n .map((v: string) => {\r\n return v.trim();\r\n })\r\n .filter(Boolean);\r\n }\r\n\r\n ngOnInit() {\r\n this.searchHandle\r\n .pipe(debounceTime(200), takeUntilDestroyed(this._destroyRef))\r\n .subscribe((search: string) => {\r\n this.executeSearch(search);\r\n });\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initializeOptions();\r\n this.updateSelectedLabel();\r\n\r\n this.options.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((resp) => {\r\n this.updateSelectedLabel();\r\n this.initializeOptions();\r\n this.changeSelected();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n }\r\n }\r\n\r\n toggleDropdown(): void {\r\n if (!this.disabled) {\r\n if (this.isOpen) {\r\n this.closeDropdown();\r\n this._onTouched();\r\n } else {\r\n this.openDropdown();\r\n }\r\n }\r\n }\r\n\r\n onAnimationEnd = (event: any) => {\r\n if (event.toState === 'closed') {\r\n this.closeOverlay();\r\n }\r\n };\r\n\r\n selectOption(option: MonkeyOptionComponent): void {\r\n if (option.disabled || this.disabled) return;\r\n\r\n if (this.type === 'checkbox') {\r\n const values = this.getComparationValue();\r\n const index = values.indexOf(`${option.value()}`);\r\n\r\n if (index === -1) {\r\n values.push(`${option.value()}`);\r\n option.onSelect(true);\r\n } else {\r\n values.splice(index, 1);\r\n option.onSelect(false);\r\n }\r\n\r\n this.value = values.join(',');\r\n } else {\r\n this.value = `${option.value()}`;\r\n\r\n this.options.forEach((opt) => {\r\n opt.onSelect(`${opt.value()}` === `${this.value}`);\r\n });\r\n\r\n this.closeDropdown();\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n }\r\n\r\n this.updateSelectedLabel();\r\n }\r\n\r\n writeValue(value: any): void {\r\n // Normalized to a string because that's what the value is compared\r\n // against: `updateSelectedLabel` matches `String(opt.value()) ===\r\n // this.value`, and `selectOption` already stores `${option.value()}`.\r\n // Writing the raw value left a NUMBER here, so `'10' === 10` was false,\r\n // no option matched, the label came out empty and the placeholder showed\r\n // instead — a numeric value bound through ngModel/formControl never\r\n // displayed, while picking the same option by hand worked.\r\n // null/undefined are preserved, so \"no selection\" doesn't become \"null\".\r\n this.value = value === null || value === undefined ? value : String(value);\r\n this.changeSelected();\r\n this.updateSelectedLabel();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (this.disabled) return;\r\n\r\n this.openDropdown();\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let hasChanges = false;\r\n // eslint-disable-next-line dot-notation\r\n const changesLoading = changes?.['loading'];\r\n if (changesLoading?.currentValue !== changesLoading?.previousValue) {\r\n hasChanges = true;\r\n this.changeControl();\r\n }\r\n\r\n if (hasChanges) {\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onHandleSearch(event: Event) {\r\n try {\r\n const { value } = event.target as HTMLInputElement;\r\n const handled = sanitizeString(value);\r\n this.searchHandle.next(handled || '');\r\n } catch (e) {\r\n // not to do\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"mecx-select-trigger\"\r\n [class.open]=\"isOpen\"\r\n (click)=\"toggleDropdown()\"\r\n role=\"combobox\"\r\n [attr.aria-expanded]=\"isOpen\"\r\n #trigger\r\n>\r\n <div class=\"mecx-select-value\" [class.has-value]=\"value\">\r\n <span>{{ labelSelected || placeholder }}</span>\r\n </div>\r\n\r\n @if (!loading) {\r\n <util-icon class=\"mecx-select-icon\" name=\"arrowDown\" />\r\n }\r\n</div>\r\n\r\n<ng-template #overlayTemplate>\r\n <div class=\"mecx-select-body-overlay\">\r\n @if (showSearch) {\r\n <div class=\"mecx-select-search\">\r\n <util-icon class=\"mecx-select-search-icon\" name=\"search\" />\r\n <input\r\n (input)=\"onHandleSearch($event)\"\r\n type=\"text\"\r\n [id]=\"id + '-search'\"\r\n autocomplete=\"off\"\r\n maxlength=\"50\"\r\n [placeholder]=\"searchPlaceholder\"\r\n [(ngModel)]=\"searchData\"\r\n />\r\n </div>\r\n }\r\n <div\r\n class=\"mecx-select-overlay\"\r\n #overlay\r\n [@animation]=\"isOpen ? 'open' : 'closed'\"\r\n (@animation.done)=\"onAnimationEnd($event)\"\r\n >\r\n <ng-content />\r\n </div>\r\n @if (showSearch && showSearchNoData) {\r\n <div class=\"mecx-select-search-no-data\">\r\n <util-icon class=\"mecx-select-search-no-data-icon\" name=\"searchFail\" />\r\n {{ searchDictionary | async }}\r\n </div>\r\n }\r\n @if (loading) {\r\n <div class=\"mecx-select-search-loading\">\r\n {{ loadingDictionary | async }}\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './select.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n OnDestroy,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport parsePhoneNumberFromString, {\r\n AsYouType,\r\n CountryCode,\r\n getCountries,\r\n getCountryCallingCode,\r\n getExampleNumber\r\n} from 'libphonenumber-js';\r\nimport examples from 'libphonenumber-js/examples.mobile.json';\r\nimport { isValidPhoneNumber } from 'libphonenumber-js/max';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { injectTokenWithWarning, MECX_COUNTRY_ISO_CODE } from '../../tokens';\r\nimport { MonkeyFormFieldControl, MonkeyFormFieldModule } from '../form-field';\r\nimport { MonkeyOptionComponent } from '../option';\r\nimport { MonkeySelectComponent } from '../select';\r\n\r\ninterface Country {\r\n iso: string;\r\n code: string;\r\n name: string;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-input-phone',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeySelectComponent,\r\n MonkeyOptionComponent,\r\n MonkeyFormFieldModule\r\n ],\r\n template: `\r\n <monkey-select\r\n placeholder=\"\"\r\n [disabled]=\"disabled\"\r\n showSearch\r\n [(ngModel)]=\"selectedCallingCode\"\r\n class=\"mecx-phone-select-country\"\r\n (onChange)=\"onCountryChange()\"\r\n >\r\n @for (item of countries; track $index) {\r\n <monkey-option [value]=\"item.iso\">\r\n <div class=\"option-flag\">\r\n <img class=\"img-flag\" [src]=\"'https://flagcdn.com/w20/' + item.iso.toLowerCase() + '.png'\" loading=\"lazy\">\r\n </div>\r\n <div class=\"option-name\">{{ item.name }} {{ item.code }}</div>\r\n </monkey-option>\r\n }\r\n </monkey-select>\r\n <input\r\n #input\r\n type=\"tel\"\r\n class=\"mecx-input\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\"\r\n [ngModel]=\"phoneFormatted\"\r\n [maxlength]=\"getMaxLength()\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur()\"\r\n [attr.id]=\"inputId\"\r\n />\r\n `,\r\n styleUrl: './input-phone.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputPhoneComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-input-phone'\",\r\n class: 'mecx-input-phone',\r\n '[class.mecx-input-phone-disabled]': '_disabled',\r\n '[class.mecx-input-phone-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyInputPhoneComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy, OnChanges\r\n{\r\n @Input() placeholder: string = '';\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n this._value = value;\r\n this.formatValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor() {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n private readonly countryIsoCode = injectTokenWithWarning(\r\n MECX_COUNTRY_ISO_CODE,\r\n 'MECX_COUNTRY_ISO_CODE'\r\n )!;\r\n\r\n private readonly locale = inject(LOCALE_ID);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-input-phone-');\r\n\r\n readonly inputId: string = this.idGenerator.getId('monkey-input-phone-input-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'input-phone';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n countries: Country[] = getCountries()\r\n .map((code) => {\r\n return {\r\n iso: code,\r\n code: `+${getCountryCallingCode(code)}`,\r\n name: this.getCountryNameFromCode(code)\r\n };\r\n })\r\n .sort((a, b) => {\r\n return a.name.localeCompare(b.name);\r\n });\r\n\r\n selectedCallingCode = this.countryIsoCode.toString();\r\n\r\n phoneFormatted = '';\r\n\r\n phoneValid = false;\r\n\r\n @ViewChildren('input') inputs!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n private getCountryNameFromCode(code: string) {\r\n try {\r\n const locale = this.locale.toString();\r\n const display = new Intl.DisplayNames([locale], { type: 'region' });\r\n return display.of(code.toUpperCase()) || code;\r\n } catch {\r\n return code;\r\n }\r\n }\r\n\r\n private getCountryByCallingCode(code: string): CountryCode | null {\r\n const cleanCode = code.replace('+', '');\r\n\r\n return (\r\n getCountries().find((country) => {\r\n return country === cleanCode;\r\n }) || null\r\n );\r\n }\r\n\r\n private getCountryFromPhoneNumber(input: string, changedCountry: boolean): string {\r\n try {\r\n if (changedCountry) {\r\n return this.selectedCallingCode;\r\n }\r\n\r\n const parsed = parsePhoneNumberFromString(input);\r\n return parsed!.country as string;\r\n } catch (e) {\r\n // not to do\r\n }\r\n\r\n return this.selectedCallingCode;\r\n }\r\n\r\n private performValue(value: string) {\r\n const countryCode = `+${getCountryCallingCode(this.selectedCallingCode as CountryCode)}`;\r\n\r\n this._value = `${countryCode}${value}`;\r\n this._onChange(this._value);\r\n this._onTouched(this._value);\r\n }\r\n\r\n private validateValue() {\r\n const { phoneValid } = this;\r\n if (!phoneValid) {\r\n const countryCode = this.selectedCallingCode as CountryCode;\r\n const example = getExampleNumber(countryCode!, examples);\r\n\r\n const formatter = new AsYouType(countryCode);\r\n const phoneAllowed = formatter.input(example!.nationalNumber);\r\n\r\n this.ngControl?.control?.setErrors({\r\n phone: true,\r\n phoneAllowed\r\n });\r\n }\r\n }\r\n\r\n private formatValue(value: string, changedCountry = false) {\r\n if (!value) {\r\n this.phoneFormatted = '';\r\n this.phoneValid = false;\r\n this.validateValue();\r\n return;\r\n }\r\n\r\n const detectedCallingCode = this.getCountryFromPhoneNumber(value, changedCountry);\r\n const isCountryChanged = changedCountry || detectedCallingCode !== this.selectedCallingCode;\r\n\r\n if (isCountryChanged && detectedCallingCode) {\r\n this.selectedCallingCode = detectedCallingCode;\r\n }\r\n\r\n const countryCode = `+${getCountryCallingCode(this.selectedCallingCode as CountryCode)}`;\r\n\r\n if (!countryCode) {\r\n this.phoneFormatted = value;\r\n this.phoneValid = false;\r\n this.validateValue();\r\n return;\r\n }\r\n\r\n let nationalPart = value.replace(this.selectedCallingCode, '').replace(/[^\\d+]/g, '');\r\n nationalPart = nationalPart.replace(countryCode, '');\r\n\r\n const formatter = new AsYouType(this.selectedCallingCode as CountryCode);\r\n this.phoneFormatted = formatter.input(nationalPart);\r\n\r\n this.performValue(nationalPart);\r\n\r\n this.phoneValid = isValidPhoneNumber(nationalPart, this.selectedCallingCode as CountryCode);\r\n this.validateValue();\r\n }\r\n\r\n disableToBeDirty?: boolean | undefined;\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n ngAfterContentInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n ngOnDestroy(): void {}\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n this.inputs.first.nativeElement.focus();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n this.validateValue();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n onInputChange(event: Event) {\r\n const { value } = event.target as HTMLInputElement;\r\n this.formatValue(value);\r\n }\r\n\r\n onCountryChange() {\r\n this.formatValue(this._value!, true);\r\n this.validateValue();\r\n }\r\n\r\n getMaxLength(): number {\r\n try {\r\n const countryCode = this.getCountryByCallingCode(this.selectedCallingCode);\r\n\r\n if (!countryCode) return 20;\r\n\r\n const example = getExampleNumber(countryCode, examples);\r\n const formatted = new AsYouType(countryCode).input(example!.nationalNumber);\r\n\r\n return formatted.length;\r\n } catch {\r\n return 20;\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-phone.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NgControl, Validators } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { formatFileSize, getFileExtension, IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldControl } from '../form-field';\r\n\r\n// eslint-disable-next-line no-use-before-define\r\nexport type MonkeyInputUploadChangeEvent = { component: MonkeyInputUploadComponent; file: File };\r\n\r\n@Component({\r\n selector: 'monkey-input-upload',\r\n imports: [],\r\n template: `\r\n <div class=\"mecx-input-upload-value\" [class.has-value]=\"value\">\r\n {{ value?.filename || value?.fileName || placeholder }}\r\n </div>\r\n <input\r\n (change)=\"onFileSelected($event)\"\r\n type=\"file\"\r\n class=\"file-input\"\r\n #fileInput\r\n [accept]=\"allowedExtensions.join(',')\"\r\n />\r\n @if (loading) {\r\n <div class=\"progress\">\r\n <div class=\"progress-bar\" [style.width.%]=\"progress\"></div>\r\n </div>\r\n }\r\n `,\r\n styleUrl: './input-upload.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputUploadComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-input-upload'\",\r\n class: 'mecx-input-upload',\r\n '[class.mecx-input-upload-disabled]': '_disabled',\r\n '[class.mecx-input-upload-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyInputUploadComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy, OnChanges\r\n{\r\n @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n @Input() progress: number = 0;\r\n\r\n @Input() placeholder: string = '';\r\n\r\n @Input() maxSizeBytes = 5 * 1024 * 1024;\r\n\r\n @Input() allowedExtensions = ['.jpg', '.jpeg', '.png', '.pdf', '.txt', '.xls', '.xlsx'];\r\n\r\n @Input({ transform: booleanAttribute })\r\n loading = false;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value = null;\r\n\r\n constructor() {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n @Output() onChange = new EventEmitter<MonkeyInputUploadChangeEvent>();\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-input-upload-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = '';\r\n\r\n currency: boolean = false;\r\n\r\n readonly percent: boolean = false;\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n private validateFileSize(file: File): boolean {\r\n return file.size <= this.maxSizeBytes;\r\n }\r\n\r\n private validateFileExtension(file: File): boolean {\r\n if (!this.allowedExtensions || !this.allowedExtensions.length) {\r\n return true;\r\n }\r\n const fileExtension = getFileExtension(file.name);\r\n\r\n const allowedExts = this.allowedExtensions.map((ext) => {\r\n return ext.trim().replace('.', '').toLowerCase();\r\n });\r\n\r\n return allowedExts.includes(fileExtension);\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (!this.loading) {\r\n this.fileInput.nativeElement.click();\r\n }\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n disableToBeDirty?: boolean | undefined;\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n ngAfterContentInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n ngOnDestroy(): void {}\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.disabled = isDisabled;\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n reset(): void {\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n }\r\n\r\n onFileSelected(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n this._onTouched();\r\n if (!input.files?.length) {\r\n return;\r\n }\r\n\r\n const file = input.files.item(0);\r\n\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n\r\n if (!this.validateFileSize(file!)) {\r\n this.ngControl?.control?.setErrors({\r\n maxFileSize: true,\r\n sizeAllowed: formatFileSize(this.maxSizeBytes)\r\n });\r\n this._onBlur();\r\n this.reset();\r\n return;\r\n }\r\n\r\n if (!this.validateFileExtension(file!)) {\r\n this.ngControl?.control?.setErrors({\r\n fileExtension: true,\r\n extensionAllowed: this.allowedExtensions.join(', ')\r\n });\r\n this._onBlur();\r\n this.reset();\r\n return;\r\n }\r\n\r\n this.ngControl?.control?.setErrors(null);\r\n\r\n this._onBlur();\r\n if (this.onChange.observed) {\r\n this.onChange.emit({ component: this, file: file! });\r\n } else {\r\n this.value = {\r\n fileName: file!.name,\r\n file\r\n };\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-upload.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject, Input } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-actions, [monkey-modal-actions]',\r\n host: {\r\n '[class]': `'mecx-modal-actions align-'+mkAlign`,\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalActionsDirective {\r\n @Input() mkAlign: 'start' | 'center' | 'end' = 'end';\r\n\r\n id = inject(IdGenerator).getId('monkey-modal-actions-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-content, [monkey-modal-content]',\r\n host: {\r\n class: 'mecx-modal-content',\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalContentDirective {\r\n id = inject(IdGenerator).getId('monkey-modal-content-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-subtitle, [monkey-modal-subtitle]',\r\n host: {\r\n class: 'mecx-modal-subtitle',\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalSubtitleDirective {\r\n id = inject(IdGenerator).getId('monkey-modal-subtitle-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-title, [monkey-modal-title]',\r\n host: {\r\n class: 'mecx-modal-title',\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalTitleDirective {\r\n id = inject(IdGenerator).getId('monkey-modal-title-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { StaticProvider } from '@angular/core';\r\n\r\nexport class MonkeyModalConfig {\r\n id?: string;\r\n\r\n icon?: string;\r\n\r\n panelClass?: string | string[] = '';\r\n\r\n hasBackdrop?: boolean = true;\r\n\r\n backdropClass?: string | string[] = 'mecx-modal-overlay';\r\n\r\n disableClose?: boolean = false;\r\n\r\n disableBackdropClose?: boolean = false;\r\n\r\n maxWidth?: number | string;\r\n\r\n maxHeight?: number | string;\r\n\r\n fullscreen?: boolean = false;\r\n\r\n position?:\r\n | 'left-top'\r\n | 'center-top'\r\n | 'right-top'\r\n | 'left-center'\r\n | 'center-center'\r\n | 'right-center'\r\n | 'left-bottom'\r\n | 'center-bottom'\r\n | 'right-bottom' = 'center-center';\r\n\r\n data?: any | null = null;\r\n\r\n closeOnNavigation?: boolean = true;\r\n\r\n providers?: StaticProvider[];\r\n}\r\n\r\nexport interface MonkeyModalDefaultConfig {\r\n title: string;\r\n subtitle?: string;\r\n content: string;\r\n cancelLabel: string;\r\n okLabel: string;\r\n}\r\n\r\nexport interface MonkeyModalConfirmationConfig {\r\n title: string;\r\n content: string;\r\n cancelLabel: string;\r\n okLabel: string;\r\n type?: 'error' | 'success' | 'warning';\r\n confirmColor?: 'error' | 'success' | 'theme';\r\n icon?: string;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { hasModifierKey } from '@angular/cdk/keycodes';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentRef } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { MonkeyModalConfig } from './modal-config';\r\n\r\nexport class MonkeyModalRef {\r\n readonly id?: string;\r\n\r\n readonly componentInstance!: any;\r\n\r\n readonly componentRef!: ComponentRef<any> | null;\r\n\r\n readonly icon?: string;\r\n\r\n disableClose: boolean | undefined;\r\n\r\n disableBackdropClose: boolean | undefined;\r\n\r\n closeOnNavigation: boolean | undefined;\r\n\r\n componentElement!: HTMLElement;\r\n\r\n readonly closed: Observable<any> = new Subject<any>();\r\n\r\n readonly backdropClick: Observable<MouseEvent>;\r\n\r\n readonly keydownEvents: Observable<KeyboardEvent>;\r\n\r\n readonly outsidePointerEvents: Observable<MouseEvent>;\r\n\r\n constructor(\r\n readonly overlayRef: OverlayRef,\r\n readonly config: MonkeyModalConfig\r\n ) {\r\n this.id = config.id;\r\n this.icon = config.icon;\r\n this.disableClose = config.disableClose;\r\n this.disableBackdropClose = config.disableBackdropClose;\r\n this.closeOnNavigation = config.closeOnNavigation;\r\n this.backdropClick = overlayRef.backdropClick();\r\n this.keydownEvents = overlayRef.keydownEvents();\r\n this.outsidePointerEvents = overlayRef.outsidePointerEvents();\r\n\r\n if (!this.disableBackdropClose) {\r\n this.keydownEvents.subscribe((event) => {\r\n if (event.key === 'Escape' && !this.disableClose && !hasModifierKey(event)) {\r\n event.preventDefault();\r\n this.close(undefined);\r\n }\r\n });\r\n\r\n this.backdropClick.subscribe(() => {\r\n if (!this.disableClose) {\r\n this.close(undefined);\r\n }\r\n });\r\n }\r\n }\r\n\r\n close(result?: any): void {\r\n if (this.componentInstance) {\r\n const closedSubject = this.closed as Subject<any>;\r\n\r\n const active = document.activeElement as HTMLElement;\r\n if (active && this.componentElement.contains(active)) {\r\n active.blur();\r\n }\r\n\r\n this.componentElement.querySelectorAll('monkey-modal')[0].classList.add('fade-out');\r\n setTimeout(() => {\r\n this.overlayRef.detach();\r\n }, 150);\r\n closedSubject.next(result);\r\n closedSubject.complete();\r\n // eslint-disable-next-line no-multi-assign\r\n (this as { componentInstance: any }).componentInstance = null!;\r\n }\r\n }\r\n\r\n afterClosed(): Observable<any> {\r\n return this.closed;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n inject,\r\n OnDestroy,\r\n Optional,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { MonkeyModalRef } from './modal-ref';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-modal',\r\n template: `\r\n <div class=\"mecx-modal-header\">\r\n <div class=\"mecx-modal-header-group\">\r\n <div class=\"mecx-modal-header-title\">\r\n @if (modalRef?.icon) {\r\n <div class=\"mecx-modal-header-icon\">\r\n <i class=\"mk-i mk-i-{{ modalRef?.icon }}\"></i>\r\n </div>\r\n }\r\n <ng-content select=\"monkey-modal-title\"></ng-content>\r\n <ng-content select=\"[monkey-modal-title]\"></ng-content>\r\n </div>\r\n\r\n <ng-content select=\"monkey-modal-subtitle\"></ng-content>\r\n <ng-content select=\"[monkey-modal-subtitle]\"></ng-content>\r\n </div>\r\n @if (!modalRef?.disableClose) {\r\n <monkey-icon-button\r\n size=\"sm\"\r\n type=\"tertiary\"\r\n icon=\"close\"\r\n class=\"mecx-modal-close\"\r\n (click)=\"close()\"\r\n >\r\n </monkey-icon-button>\r\n }\r\n </div>\r\n <ng-content select=\"monkey-modal-content\"></ng-content>\r\n <ng-content select=\"[monkey-modal-content]\"></ng-content>\r\n <ng-content select=\"monkey-modal-actions\"></ng-content>\r\n <ng-content select=\"[monkey-modal-actions]\"></ng-content>\r\n `,\r\n host: {\r\n class: 'mecx-modal',\r\n tabindex: '-1',\r\n '[attr.id]': 'modalRef?.id || null'\r\n },\r\n styleUrl: './modal.component.scss',\r\n standalone: false\r\n})\r\nexport class MonkeyModalComponent implements AfterViewInit, OnDestroy {\r\n private _navigationSubscription: Subscription | null = null;\r\n\r\n private _router = inject(Router);\r\n\r\n constructor(\r\n private _elementRef: ElementRef,\r\n @Optional() public overlayRef?: OverlayRef,\r\n @Optional() public modalRef?: MonkeyModalRef\r\n ) {\r\n // not to do\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this._elementRef) {\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n if (this.modalRef?.closeOnNavigation) {\r\n this._navigationSubscription = this._router.events.subscribe((event) => {\r\n if (event instanceof NavigationStart) {\r\n this.close();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._navigationSubscription) {\r\n this._navigationSubscription.unsubscribe();\r\n this._navigationSubscription = null;\r\n }\r\n }\r\n\r\n close() {\r\n const element = this._elementRef.nativeElement as HTMLElement;\r\n\r\n element.classList.add('fade-out');\r\n\r\n setTimeout(() => {\r\n this.modalRef?.close();\r\n }, 150);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { InjectionToken } from '@angular/core';\r\nimport { MonkeyModalConfirmationConfig, MonkeyModalDefaultConfig } from './modal-config';\r\n\r\nexport const MECX_MODAL_DATA = new InjectionToken<any>('mecxModalData');\r\nexport const MECX_MODAL_DEFAULT_CONFIG = new InjectionToken<MonkeyModalDefaultConfig>(\r\n 'mecxModalDefaultConfig'\r\n);\r\nexport const MECX_MODAL_CONFIRMATION_CONFIG = new InjectionToken<MonkeyModalConfirmationConfig>(\r\n 'mecxModalConfirmationConfig'\r\n);\r\n\r\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.dev/license\r\n */\r\nexport function reverseForEach<T>(items: T[] | readonly T[], callback: (current: T) => void) {\r\n let i = items.length;\r\n\r\n // eslint-disable-next-line no-plusplus\r\n while (i--) {\r\n callback(items[i]);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, Inject, ViewEncapsulation } from '@angular/core';\r\nimport { MonkeyModalConfirmationConfig } from '../modal-config';\r\nimport { MonkeyModalRef } from '../modal-ref';\r\nimport { MECX_MODAL_CONFIRMATION_CONFIG } from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-modal-confirmation',\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: ['./confirmation.component.scss'],\r\n template: `\r\n <monkey-modal class=\"modal-confirmation\">\r\n <monkey-modal-content>\r\n @if (config.icon) {\r\n <div class=\"modal-confirmation-icon {{ config.type }}\">\r\n <i class=\"mk-i mk-i-{{ config.icon }} xxl\"></i>\r\n </div>\r\n }\r\n <div class=\"confirmation-title\" [innerHTML]=\"config.title\"></div>\r\n <div class=\"confirmation-description\" [innerHTML]=\"config.content\"></div>\r\n </monkey-modal-content>\r\n <monkey-modal-actions>\r\n <monkey-button type=\"tertiary\" (click)=\"onClose()\">{{ config.cancelLabel }}</monkey-button>\r\n <monkey-button type=\"primary\" (click)=\"onSubmit()\">{{ config.okLabel }}</monkey-button>\r\n </monkey-modal-actions>\r\n </monkey-modal>\r\n `,\r\n standalone: false\r\n})\r\nexport class MonkeyModalConfirmationComponent {\r\n constructor(\r\n @Inject(MECX_MODAL_CONFIRMATION_CONFIG) public config: MonkeyModalConfirmationConfig,\r\n @Inject(MonkeyModalRef) private modalRef: MonkeyModalRef\r\n ) {\r\n // not to do\r\n }\r\n\r\n onSubmit() {\r\n this.modalRef.close(true);\r\n }\r\n\r\n onClose() {\r\n this.modalRef.close();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MonkeyModalDefaultConfig } from '../modal-config';\r\nimport { MonkeyModalRef } from '../modal-ref';\r\nimport { MECX_MODAL_DEFAULT_CONFIG } from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-modal-default',\r\n template: `\r\n <monkey-modal>\r\n <monkey-modal-title [innerHTML]=\"config.title\"></monkey-modal-title>\r\n <monkey-modal-subtitle [innerHTML]=\"config.subtitle\"></monkey-modal-subtitle>\r\n <monkey-modal-content [innerHTML]=\"config.content\"></monkey-modal-content>\r\n <monkey-modal-actions mkAlign=\"end\">\r\n <monkey-button type=\"tertiary\" (click)=\"onClose()\">{{ config.cancelLabel }}</monkey-button>\r\n <monkey-button type=\"primary\" (click)=\"onSubmit()\">{{ config.okLabel }}</monkey-button>\r\n </monkey-modal-actions>\r\n </monkey-modal>\r\n `,\r\n standalone: false\r\n})\r\nexport class MonkeyModalDefaultComponent {\r\n constructor(\r\n @Inject(MECX_MODAL_DEFAULT_CONFIG) public config: MonkeyModalDefaultConfig,\r\n @Inject(MonkeyModalRef) private modalRef: MonkeyModalRef\r\n ) {\r\n // not to do\r\n }\r\n\r\n onSubmit() {\r\n this.modalRef.close(true);\r\n }\r\n\r\n onClose() {\r\n this.modalRef.close();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MonkeyButtonComponent } from '../button';\r\nimport { MonkeyIconButtonComponent } from '../icon-button/icon-button.component';\r\nimport { MonkeyModalConfirmationComponent } from './components/confirmation.component';\r\nimport { MonkeyModalDefaultComponent } from './components/default';\r\nimport { MonkeyModalActionsDirective } from './directives/actions';\r\nimport { MonkeyModalContentDirective } from './directives/content';\r\nimport { MonkeyModalSubtitleDirective } from './directives/subtitle';\r\nimport { MonkeyModalTitleDirective } from './directives/title';\r\nimport { MonkeyModalComponent } from './modal.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MonkeyButtonComponent, MonkeyIconButtonComponent],\r\n declarations: [\r\n MonkeyModalComponent,\r\n MonkeyModalDefaultComponent,\r\n MonkeyModalConfirmationComponent,\r\n MonkeyModalTitleDirective,\r\n MonkeyModalSubtitleDirective,\r\n MonkeyModalContentDirective,\r\n MonkeyModalActionsDirective\r\n ],\r\n exports: [\r\n MonkeyModalComponent,\r\n MonkeyModalTitleDirective,\r\n MonkeyModalSubtitleDirective,\r\n MonkeyModalContentDirective,\r\n MonkeyModalActionsDirective\r\n ]\r\n})\r\nexport class MonkeyModalModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\r\nimport { inject, Injectable, Injector, StaticProvider } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyModalConfirmationComponent } from './components/confirmation.component';\r\nimport { MonkeyModalDefaultComponent } from './components/default';\r\nimport {\r\n MonkeyModalConfig,\r\n MonkeyModalConfirmationConfig,\r\n MonkeyModalDefaultConfig\r\n} from './modal-config';\r\nimport { MonkeyModalRef } from './modal-ref';\r\nimport {\r\n MECX_MODAL_CONFIRMATION_CONFIG,\r\n MECX_MODAL_DATA,\r\n MECX_MODAL_DEFAULT_CONFIG,\r\n reverseForEach\r\n} from './utils';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MonkeyModalService {\r\n protected _idGenerator = inject(IdGenerator);\r\n\r\n protected _injector = inject(Injector);\r\n\r\n protected _overlay = inject(Overlay);\r\n\r\n protected _openDialogsAtThisLevel: MonkeyModalRef[] = [];\r\n\r\n protected _parentDialog = inject(MonkeyModalService, { optional: true, skipSelf: true });\r\n\r\n protected get openDialogs(): readonly MonkeyModalRef[] {\r\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\r\n }\r\n\r\n private getOverlayConfig(config: MonkeyModalConfig): OverlayConfig {\r\n let positionStrategy;\r\n const marginStrategy = '20px';\r\n if (config.position === 'left-top') {\r\n positionStrategy = this._overlay.position().global().left(marginStrategy).top(marginStrategy);\r\n } else if (config.position === 'center-top') {\r\n positionStrategy = this._overlay.position().global().centerHorizontally().top(marginStrategy);\r\n } else if (config.position === 'right-top') {\r\n positionStrategy = this._overlay\r\n .position()\r\n .global()\r\n .right(marginStrategy)\r\n .top(marginStrategy);\r\n } else if (config.position === 'left-center') {\r\n positionStrategy = this._overlay.position().global().left(marginStrategy).centerVertically();\r\n } else if (config.position === 'center-center') {\r\n positionStrategy = this._overlay.position().global().centerHorizontally().centerVertically();\r\n } else if (config.position === 'right-center') {\r\n positionStrategy = this._overlay.position().global().right(marginStrategy).centerVertically();\r\n } else if (config.position === 'left-bottom') {\r\n positionStrategy = this._overlay\r\n .position()\r\n .global()\r\n .left(marginStrategy)\r\n .bottom(marginStrategy);\r\n } else if (config.position === 'center-bottom') {\r\n positionStrategy = this._overlay.position().global().centerHorizontally().bottom('20px');\r\n } else if (config.position === 'right-bottom') {\r\n positionStrategy = this._overlay\r\n .position()\r\n .global()\r\n .right(marginStrategy)\r\n .bottom(marginStrategy);\r\n }\r\n\r\n let panelClass = ['monkey-modal-panel'];\r\n\r\n if (config.fullscreen) {\r\n panelClass.push('monkey-modal-fullscreen');\r\n }\r\n\r\n if (Array.isArray(config.panelClass)) {\r\n panelClass = [...panelClass, ...config.panelClass];\r\n } else {\r\n panelClass.push(config.panelClass as string);\r\n }\r\n\r\n const state = new OverlayConfig({\r\n positionStrategy,\r\n scrollStrategy: this._overlay.scrollStrategies.block(),\r\n panelClass,\r\n hasBackdrop: config.hasBackdrop,\r\n maxWidth: config.maxWidth,\r\n maxHeight: config.maxHeight,\r\n disposeOnNavigation: config.closeOnNavigation\r\n });\r\n\r\n if (config.backdropClass) {\r\n state.backdropClass = config.backdropClass;\r\n }\r\n\r\n if (config.maxWidth) {\r\n state.width = '100%';\r\n }\r\n if (config.maxHeight) {\r\n state.height = '100%';\r\n }\r\n\r\n return state;\r\n }\r\n\r\n private createInjector(\r\n config: MonkeyModalConfig,\r\n dialogRef: MonkeyModalRef,\r\n overlayRef: OverlayRef,\r\n fallbackInjector: Injector | undefined\r\n ): Injector {\r\n const providers: StaticProvider[] = [\r\n { provide: OverlayRef, useValue: overlayRef },\r\n { provide: MonkeyModalRef, useValue: dialogRef },\r\n { provide: MECX_MODAL_DATA, useValue: config.data }\r\n ];\r\n\r\n if (config.providers) {\r\n providers.push(...config.providers);\r\n }\r\n\r\n return Injector.create({ parent: fallbackInjector, providers });\r\n }\r\n\r\n open<T>(component: ComponentType<T>, config: MonkeyModalConfig) {\r\n const defaultConfig = new MonkeyModalConfig();\r\n\r\n config = { ...defaultConfig, ...config };\r\n config.id = this._idGenerator.getId('monkey-modal-');\r\n\r\n const overlayConfig = this.getOverlayConfig(config);\r\n const overlayRef = this._overlay.create(overlayConfig);\r\n const modalRef = new MonkeyModalRef(overlayRef, config);\r\n\r\n const injector = this.createInjector(config, modalRef, overlayRef, this._injector);\r\n\r\n const componentPortal = new ComponentPortal(component, null, injector);\r\n const componentRef = overlayRef.attach(componentPortal);\r\n\r\n const componentElement = componentRef.location.nativeElement as HTMLElement;\r\n componentElement.style.width = '100%';\r\n componentElement.style.height = '100%';\r\n modalRef.componentElement = componentElement;\r\n\r\n (modalRef as { componentInstance: T }).componentInstance = componentRef.instance;\r\n\r\n (this.openDialogs as MonkeyModalRef[]).push(modalRef);\r\n\r\n return modalRef;\r\n }\r\n\r\n openDefault(params: MonkeyModalDefaultConfig, config: MonkeyModalConfig) {\r\n config.providers = [{ provide: MECX_MODAL_DEFAULT_CONFIG, useValue: params }];\r\n config.icon = config.icon ? config.icon : 'help';\r\n\r\n return this.open(MonkeyModalDefaultComponent, config);\r\n }\r\n\r\n openConfirmation(params: MonkeyModalConfirmationConfig, config: MonkeyModalConfig) {\r\n config.providers = [{ provide: MECX_MODAL_CONFIRMATION_CONFIG, useValue: params }];\r\n\r\n return this.open(MonkeyModalConfirmationComponent, config);\r\n }\r\n\r\n closeAll(): void {\r\n reverseForEach(this.openDialogs, (dialog) => {\r\n return dialog.close();\r\n });\r\n\r\n (this.openDialogs as MonkeyModalRef[]).splice(0, this.openDialogs.length);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './directives/actions';\r\nexport * from './directives/content';\r\nexport * from './directives/subtitle';\r\nexport * from './directives/title';\r\nexport * from './modal-config';\r\nexport * from './modal-ref';\r\nexport * from './modal.component';\r\nexport * from './modal.module';\r\nexport * from './modal.service';\r\nexport { MECX_MODAL_DATA, MECX_MODAL_DEFAULT_CONFIG } from './utils';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, inject, Input, output } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\n@Component({\r\n selector: 'monkey-pass-number',\r\n imports: [MonkeyButtonComponent],\r\n template: `\r\n <div class=\"pin-selected\">\r\n @for (input of [0, 1, 2, 3]; track input) {\r\n <div class=\"pin-input\">\r\n {{ selected[input] }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"grid\">\r\n @for (pin of [1, 2, 3, 4, 5, 6, 7, 8, 9]; track pin) {\r\n <monkey-button\r\n size=\"lg\"\r\n (click)=\"onPress(pin)\"\r\n [disabled]=\"isDisabledNumbers || disabled\"\r\n color=\"black\"\r\n >\r\n {{ pin }}\r\n </monkey-button>\r\n }\r\n <div></div>\r\n <monkey-button\r\n size=\"lg\"\r\n (click)=\"onPress(0)\"\r\n [disabled]=\"isDisabledNumbers || disabled\"\r\n color=\"black\"\r\n >\r\n 0\r\n </monkey-button>\r\n <monkey-button\r\n size=\"lg\"\r\n type=\"secondary\"\r\n (click)=\"clear()\"\r\n [disabled]=\"isDisabledClear || disabled\"\r\n >\r\n <i class=\"mk-i mk-i-delete\"></i>\r\n </monkey-button>\r\n </div>\r\n `,\r\n styleUrl: './pass-number.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-pass-number',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPassNumberComponent {\r\n @Input() disabled!: boolean;\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-pass-number-');\r\n\r\n protected _id!: string;\r\n\r\n protected selected: number[] = [];\r\n\r\n onChange = output<number[]>();\r\n\r\n get isDisabledNumbers() {\r\n return this.selected?.length === 4;\r\n }\r\n\r\n get isDisabledClear() {\r\n return this.selected?.length === 0;\r\n }\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n protected clear(): void {\r\n this.selected = [];\r\n this.onChange.emit(this.selected);\r\n }\r\n protected onPress(pin: number): void {\r\n if (this.selected.length < 4) {\r\n this.selected.push(pin);\r\n this.onChange.emit(this.selected);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { Component, inject, Input, OnInit, output } from '@angular/core';\r\nimport { IdGenerator, shuffle } from '../../../utils';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\ntype PinCombinations = {\r\n first: number;\r\n last: number;\r\n};\r\n\r\ntype PinResult = {\r\n passNumber1: string;\r\n passNumber2: string;\r\n passNumber3: string;\r\n passNumber4: string;\r\n};\r\n\r\n@Component({\r\n selector: 'monkey-pass-secret-number',\r\n imports: [AsyncPipe, MonkeyButtonComponent],\r\n template: `\r\n <div class=\"pin-selected\">\r\n @for (input of [0, 1, 2, 3]; track input) {\r\n <div class=\"pin-input\" [class.filled]=\"selected[input]\"></div>\r\n }\r\n </div>\r\n <div class=\"grid\">\r\n @for (pin of pins; track pin) {\r\n <monkey-button\r\n size=\"lg\"\r\n (click)=\"onPress(pin)\"\r\n [disabled]=\"isDisabledNumbers || disabled\"\r\n color=\"black\"\r\n >\r\n {{ pin.first }} {{ orLabel | async }} {{ pin.last }}\r\n </monkey-button>\r\n }\r\n <monkey-button\r\n data-testid=\"clear-button\"\r\n size=\"lg\"\r\n type=\"secondary\"\r\n (click)=\"clear()\"\r\n [disabled]=\"isDisabledClear || disabled\"\r\n >\r\n <i class=\"mk-i mk-i-delete\"></i>\r\n </monkey-button>\r\n </div>\r\n `,\r\n styleUrl: './pass-number.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-pass-secret-number',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPassSecretNumberComponent implements OnInit {\r\n protected _uid = inject(IdGenerator).getId('monkey-pass-secret-number-');\r\n\r\n @Input() disabled!: boolean;\r\n\r\n protected _id!: string;\r\n\r\n readonly orLabel = inject(MonkeyDictionaryService).get('OR');\r\n\r\n protected pins: PinCombinations[] = [];\r\n\r\n protected selected: string[] = [];\r\n\r\n onChange = output<PinResult>();\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n get isDisabledNumbers() {\r\n return this.selected?.length === 4;\r\n }\r\n\r\n get isDisabledClear() {\r\n return this.selected?.length === 0;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n ngOnInit() {\r\n const qtd = 10;\r\n\r\n const pinPasswords = shuffle(\r\n new Array(qtd).fill(qtd).map((value: number, i: number) => {\r\n return (value * i) / qtd;\r\n })\r\n );\r\n\r\n this.pins = pinPasswords\r\n .map((value: number, index: number) => {\r\n return {\r\n first: value,\r\n last: pinPasswords[pinPasswords.length - index - 1]\r\n };\r\n })\r\n .slice(0, 5);\r\n }\r\n\r\n protected clear(): void {\r\n this.selected = [];\r\n this.onChange.emit(this.getPinPassword());\r\n }\r\n\r\n private getPinPassword(): PinResult {\r\n const result: PinResult = {\r\n passNumber1: '',\r\n passNumber2: '',\r\n passNumber3: '',\r\n passNumber4: ''\r\n };\r\n this.selected.forEach((value, index) => {\r\n result[`passNumber${index + 1}` as keyof PinResult] = value;\r\n });\r\n return result!;\r\n }\r\n\r\n protected onPress(pin: PinCombinations): void {\r\n if (this.selected.length < 4) {\r\n this.selected.push(`${pin.first}${pin.last}`);\r\n this.onChange.emit(this.getPinPassword());\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './pass-number.component';\r\nexport * from './pass-secret-number.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, HostBinding, inject, Input, input, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [],\r\n selector: 'monkey-security-level',\r\n styleUrl: './security-level.component.scss',\r\n templateUrl: './security-level.component.html',\r\n host: {\r\n 'data-testid': 'monkey-security-level',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeySecurityLevelComponent {\r\n label = input<string>();\r\n\r\n score = input.required<number>();\r\n\r\n strengthLabel = input<string>();\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n if (this.score() === 0) {\r\n return 'empty';\r\n }\r\n\r\n if (this.score() < 300) {\r\n return 'weak';\r\n }\r\n\r\n if (this.score() >= 300 && this.score() < 800) {\r\n return 'medium';\r\n }\r\n\r\n if (this.score() >= 800 && this.score() < 1000) {\r\n return 'strong';\r\n }\r\n\r\n return 'very-strong';\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-security-level-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<div class=\"body\">\r\n <div>\r\n @if (label(); as lb) {\r\n <span data-testid=\"label\">\r\n {{ lb }}\r\n </span>\r\n }\r\n @if (strengthLabel(); as strLabel) {\r\n <span data-testid=\"str-label\" class=\"level-info\">\r\n {{ strLabel }}\r\n </span>\r\n }\r\n </div>\r\n <div class=\"bar\"></div>\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './security-level.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n inject,\r\n Input,\r\n input\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\ntype Status = 'default' | 'success' | 'warning' | 'error' | 'question' | 'info';\r\n\r\n@Component({\r\n selector: 'monkey-status',\r\n imports: [],\r\n templateUrl: './status.component.html',\r\n styleUrl: './status.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-status',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyStatusComponent {\r\n type = input.required<Status>();\r\n\r\n size = input<MonkeySize>('md');\r\n\r\n label = input<string>();\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n return `${this.type()} ${this.size()}`;\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-status-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<div class=\"status\"></div>\r\n@if (label(); as lb) {\r\n <span>\r\n {{ lb }}\r\n </span>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './status.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n inject,\r\n Input,\r\n QueryList,\r\n signal\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-step',\r\n standalone: false,\r\n template: `\r\n <div\r\n class=\"item\"\r\n [class.active]=\"isActive()\"\r\n [class.complete]=\"isComplete()\"\r\n [class.current]=\"isCurrent()\"\r\n [class.substep]=\"isSubStep()\"\r\n >\r\n <div class=\"step\">\r\n <div class=\"number\" [class.icon]=\"!!icon\">\r\n @if (icon) {\r\n <i class=\"mk-i mk-i-{{ icon }} sm\"></i>\r\n } @else if (isComplete()) {\r\n <util-icon name=\"check\" />\r\n } @else {\r\n {{ number() }}\r\n }\r\n </div>\r\n </div>\r\n <div class=\"label\">\r\n <div>{{ label }}</div>\r\n @if (isCurrent()) {\r\n <div class=\"current-icon\">\r\n <i class=\"mk-i mk-i-arrow-line-right sm\"></i>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (hasSubSteps() && (isActive() || isCurrent())) {\r\n <div class=\"substeps\">\r\n <ng-content />\r\n </div>\r\n }\r\n `,\r\n styleUrl: './step.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-step',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyStepComponent implements AfterContentInit {\r\n protected id = inject(IdGenerator).getId('monkey-step-');\r\n\r\n // eslint-disable-next-line no-use-before-define\r\n @ContentChildren(MonkeyStepComponent) subSteps!: QueryList<MonkeyStepComponent>;\r\n\r\n @Input() label = '';\r\n\r\n @Input() step = '';\r\n\r\n @Input() icon = '';\r\n\r\n number = signal<number | undefined>(undefined);\r\n\r\n hasSubSteps = signal<boolean>(true);\r\n\r\n isSubStep = signal<boolean>(false);\r\n\r\n isCurrent = signal<boolean>(false);\r\n\r\n isComplete = signal<boolean>(false);\r\n\r\n isActive = signal<boolean>(false);\r\n\r\n ngAfterContentInit(): void {\r\n if (this.subSteps.length <= 0) {\r\n this.hasSubSteps.set(false);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n inject,\r\n Input,\r\n OnChanges,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyStepComponent } from './step/step.component';\r\n\r\n@Component({\r\n selector: 'monkey-stepper',\r\n standalone: false,\r\n template: `<ng-content />`,\r\n styleUrl: './stepper.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-stepper',\r\n '[attr.id]': 'monkeyId',\r\n '[id]': 'monkeyId',\r\n '[class.horizontal]': `direction === 'horizontal'`\r\n }\r\n})\r\nexport class MonkeyStepperComponent implements AfterContentInit, OnChanges {\r\n protected monkeyId = inject(IdGenerator).getId('monkey-stepper-');\r\n\r\n @ContentChildren(MonkeyStepComponent) steps!: QueryList<MonkeyStepComponent>;\r\n\r\n @Input() direction: 'horizontal' | 'vertical' = 'vertical';\r\n\r\n private _id = '';\r\n\r\n @Input()\r\n set id(value: string) {\r\n this._id = value;\r\n }\r\n\r\n get id() {\r\n return this._id;\r\n }\r\n\r\n @Input() currentStep? = '';\r\n\r\n ngAfterContentInit(): void {\r\n this.render();\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.steps) {\r\n this.render();\r\n }\r\n }\r\n\r\n render() {\r\n let stepFound = false;\r\n\r\n this.steps.forEach((step, index) => {\r\n step.number.set(index + 1);\r\n\r\n step.isCurrent.set(this.currentStep === step.step);\r\n if (step.isCurrent()) {\r\n stepFound = true;\r\n }\r\n\r\n if (step.hasSubSteps()) {\r\n step.subSteps.forEach((subStep) => {\r\n subStep.isSubStep.set(true);\r\n subStep.isCurrent.set(this.currentStep === subStep.step);\r\n if (subStep.isCurrent()) {\r\n stepFound = true;\r\n }\r\n subStep.isComplete.set(!stepFound);\r\n });\r\n\r\n step.isComplete.set(\r\n step.subSteps.toArray().every((_) => {\r\n return _.isComplete();\r\n })\r\n );\r\n\r\n step.isActive.set(\r\n step.subSteps.toArray().some((_) => {\r\n return _.isCurrent();\r\n })\r\n );\r\n } else {\r\n step.isComplete.set(!stepFound);\r\n }\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { NgModule } from '@angular/core';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { MonkeyStepComponent } from './step/step.component';\r\nimport { MonkeyStepperComponent } from './stepper.component';\r\n\r\n@NgModule({\r\n declarations: [MonkeyStepperComponent, MonkeyStepComponent],\r\n imports: [UtilIconComponent],\r\n exports: [MonkeyStepperComponent, MonkeyStepComponent]\r\n})\r\nexport class MonkeyStepperModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../../../utils';\r\nimport { MonkeyButtonComponent } from '../../../button';\r\n\r\n@Component({\r\n imports: [MonkeyButtonComponent],\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-pagination-action',\r\n exportAs: 'monkeyPaginationAction',\r\n templateUrl: './pagination-action.html',\r\n styleUrl: './pagination-action.scss',\r\n host: {\r\n 'data-testid': 'monkey-pagination-action',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPaginationActionComponent {\r\n @Input() disabled!: boolean;\r\n\r\n @Input() first!: boolean;\r\n\r\n @Input() last!: boolean;\r\n\r\n @Input({ required: true }) next: boolean = false;\r\n\r\n @Input({ required: true }) prev: boolean = false;\r\n\r\n @Output() onAction = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-pagination-action-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<monkey-button\r\n type=\"secondary\"\r\n size=\"sm\"\r\n (click)=\"onAction.next('prev')\"\r\n [disabled]=\"disabled || !prev\"\r\n>\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.670 8.630 C 9.335 10.964,8.550 11.772,8.523 11.870 C 8.501 11.947,8.501 12.053,8.523 12.130 C 8.574 12.316,14.682 18.423,14.870 18.477 C 15.231 18.581,15.581 18.231,15.477 17.869 C 15.450 17.774,14.687 16.987,12.570 14.870 L 9.700 12.000 12.570 9.130 C 14.687 7.013,15.450 6.226,15.477 6.131 C 15.528 5.951,15.464 5.747,15.316 5.623 C 15.219 5.541,15.151 5.520,14.988 5.520 L 14.781 5.520 11.670 8.630 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"black\"\r\n ></path>\r\n </svg>\r\n</monkey-button>\r\n\r\n<monkey-button\r\n type=\"secondary\"\r\n size=\"sm\"\r\n (click)=\"onAction.next('next')\"\r\n [disabled]=\"disabled || !next\"\r\n>\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M8.751 5.583 C 8.552 5.691,8.459 6.004,8.564 6.213 C 8.588 6.261,9.889 7.583,11.454 9.150 L 14.300 12.000 11.454 14.850 C 9.889 16.418,8.588 17.739,8.564 17.787 C 8.357 18.197,8.823 18.640,9.232 18.423 C 9.363 18.353,15.373 12.337,15.436 12.213 C 15.497 12.092,15.491 11.897,15.423 11.768 C 15.353 11.637,9.337 5.627,9.213 5.564 C 9.092 5.503,8.881 5.512,8.751 5.583 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"black\"\r\n ></path>\r\n </svg>\r\n</monkey-button>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, inject, Input, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../../../utils';\r\n\r\n@Component({\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-pagination-label',\r\n exportAs: 'monkeyPaginationLabel',\r\n templateUrl: './pagination-label.html',\r\n styleUrl: './pagination-label.scss',\r\n host: {\r\n 'data-testid': 'monkey-pagination-label',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPaginationLabelComponent {\r\n protected _uid = inject(IdGenerator).getId('monkey-pagination-label-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { IdGenerator } from '../../../../../utils';\r\nimport { MonkeyFormFieldModule } from '../../../form-field/form-field.module';\r\nimport { MonkeyOptionComponent } from '../../../option/option.component';\r\nimport { MonkeySelectComponent } from '../../../select/select.component';\r\n\r\n@Component({\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeySelectComponent,\r\n MonkeyOptionComponent,\r\n MonkeyFormFieldModule\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-pagination-size',\r\n exportAs: 'monkeyPaginationSize',\r\n templateUrl: './pagination-size.html',\r\n styleUrl: './pagination-size.scss',\r\n host: {\r\n 'data-testid': 'monkey-pagination-size',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPaginationSizeComponent {\r\n @Input({ required: true }) size!: 10 | 20 | 50 | 100;\r\n\r\n @Input() disabled!: boolean;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-pagination-size-');\r\n\r\n protected _id!: string;\r\n\r\n sizes = [10, 20, 50, 100];\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n<monkey-form-field hideClear size=\"sm\" noFooterSpace>\r\n <monkey-select\r\n placeholder=\"\"\r\n [ngModel]=\"size\"\r\n (onChange)=\"onChange.next($event)\"\r\n [disabled]=\"disabled\"\r\n [showSearch]=\"false\"\r\n >\r\n @for (item of sizes; track item) {\r\n <monkey-option [value]=\"item\">{{ item }}</monkey-option>\r\n }\r\n </monkey-select>\r\n</monkey-form-field>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Directive,\r\n TemplateRef,\r\n booleanAttribute,\r\n contentChild,\r\n inject,\r\n input,\r\n model\r\n} from '@angular/core';\r\nimport { ColumnAlign, ColumnPinned } from './table-core';\r\n\r\nexport interface MonkeyTableCellContext<T> {\r\n $implicit: T;\r\n row: T;\r\n index: number;\r\n first: boolean;\r\n last: boolean;\r\n}\r\n\r\nexport type MonkeyTableSortKind = 'text' | 'number' | 'date';\r\n\r\n@Directive({\r\n selector: 'ng-template[mkCell]'\r\n})\r\nexport class MonkeyTableCellDirective<T> {\r\n readonly template = inject<TemplateRef<MonkeyTableCellContext<T>>>(TemplateRef);\r\n\r\n static ngTemplateContextGuard<T>(\r\n _dir: MonkeyTableCellDirective<T>,\r\n _ctx: unknown\r\n ): _ctx is MonkeyTableCellContext<T> {\r\n return true;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkHeaderCell]'\r\n})\r\nexport class MonkeyTableHeaderCellDirective {\r\n readonly template = inject<TemplateRef<void>>(TemplateRef);\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-container[mkColumn]'\r\n})\r\nexport class MonkeyTableColumnDirective<T = any> {\r\n readonly name = input.required<string>({ alias: 'mkColumn' });\r\n\r\n readonly label = input.required<string>();\r\n\r\n readonly labelHidden = input(false, { transform: booleanAttribute });\r\n\r\n readonly unit = input<string>('');\r\n\r\n readonly width = input<string>('');\r\n\r\n readonly align = input<ColumnAlign>('start');\r\n\r\n readonly sortable = input(false, { transform: booleanAttribute });\r\n\r\n readonly sortKind = input<MonkeyTableSortKind>('text');\r\n\r\n readonly hideable = input(true, { transform: booleanAttribute });\r\n\r\n readonly movable = input(true, { transform: booleanAttribute });\r\n\r\n readonly pinnable = input(true, { transform: booleanAttribute });\r\n\r\n readonly pinned = model<ColumnPinned>('none');\r\n\r\n readonly hidden = model(false);\r\n\r\n readonly cell = contentChild(MonkeyTableCellDirective<T>);\r\n\r\n readonly headerCell = contentChild(MonkeyTableHeaderCellDirective);\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkRowDetail]'\r\n})\r\nexport class MonkeyTableRowDetailDirective<T> {\r\n readonly template = inject<TemplateRef<{ $implicit: T; row: T }>>(TemplateRef);\r\n\r\n static ngTemplateContextGuard<T>(\r\n _dir: MonkeyTableRowDetailDirective<T>,\r\n _ctx: unknown\r\n ): _ctx is { $implicit: T; row: T } {\r\n return true;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkEmpty]'\r\n})\r\nexport class MonkeyTableEmptyDirective {\r\n readonly template = inject<TemplateRef<void>>(TemplateRef);\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkLoading]'\r\n})\r\nexport class MonkeyTableLoadingDirective {\r\n readonly template = inject<TemplateRef<void>>(TemplateRef);\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\n\r\nexport type SortDirection = 'ascending' | 'descending';\r\n\r\nexport interface SortState {\r\n column: string;\r\n direction: SortDirection;\r\n}\r\n\r\nexport type SelectionState = 'none' | 'partial' | 'all';\r\n\r\nexport type ColumnAlign = 'start' | 'end';\r\n\r\nexport type ColumnPinned = 'none' | 'left' | 'right';\r\n\r\nexport interface MonkeyTableColumnState {\r\n name: string;\r\n hidden: boolean;\r\n pinned: ColumnPinned;\r\n}\r\n\r\nexport function sameColumnState(\r\n a: readonly MonkeyTableColumnState[],\r\n b: readonly MonkeyTableColumnState[]\r\n): boolean {\r\n return (\r\n a.length === b.length &&\r\n a.every((item, index) => {\r\n return (\r\n item.name === b[index].name &&\r\n item.hidden === b[index].hidden &&\r\n item.pinned === b[index].pinned\r\n );\r\n })\r\n );\r\n}\r\n\r\nexport function ariaSortOf(sort: SortState | null, column: string): SortDirection | null {\r\n return sort?.column === column ? sort.direction : null;\r\n}\r\n\r\nexport function interpolate(template: string, values: Record<string, string | number>): string {\r\n if (!template) return '';\r\n return template.replace(/\\{(\\w+)\\}/g, (placeholder, key: string) => {\r\n return values[key] === undefined ? placeholder : String(values[key]);\r\n });\r\n}\r\n\r\nexport function toggleKey(current: ReadonlySet<string>, key: string): ReadonlySet<string> {\r\n const next = new Set(current);\r\n if (!next.delete(key)) next.add(key);\r\n return next;\r\n}\r\n\r\nexport function selectionState(\r\n current: ReadonlySet<string>,\r\n keys: readonly string[]\r\n): SelectionState {\r\n const count = keys.filter((key) => current.has(key)).length;\r\n if (count === 0) return 'none';\r\n return count === keys.length ? 'all' : 'partial';\r\n}\r\n\r\nexport function addKeys(\r\n current: ReadonlySet<string>,\r\n keys: readonly string[],\r\n limit = 0\r\n): ReadonlySet<string> {\r\n const next = new Set(current);\r\n keys.forEach((key) => {\r\n if (limit > 0 && next.size >= limit && !next.has(key)) return;\r\n next.add(key);\r\n });\r\n return next;\r\n}\r\n\r\nexport function removeKeys(\r\n current: ReadonlySet<string>,\r\n keys: readonly string[]\r\n): ReadonlySet<string> {\r\n const next = new Set(current);\r\n keys.forEach((key) => next.delete(key));\r\n return next;\r\n}\r\n\r\nexport function sortByOrder<T>(\r\n items: readonly T[],\r\n nameOf: (item: T) => string,\r\n order: readonly string[]\r\n): T[] {\r\n const position = new Map(order.map((name, index) => [name, index]));\r\n const rank = (item: T) => position.get(nameOf(item)) ?? order.length;\r\n return [...items].sort((a, b) => rank(a) - rank(b));\r\n}\r\n\r\nexport function mergeOrder(previous: readonly string[], next: readonly string[]): string[] {\r\n const incoming = [...next];\r\n const kept = previous.map((name) => (next.includes(name) ? (incoming.shift() ?? name) : name));\r\n return [...kept, ...incoming];\r\n}\r\n\r\nexport interface RowMetrics {\r\n count: number;\r\n rowHeight: number;\r\n detailHeight: number;\r\n openIndices: readonly number[];\r\n}\r\n\r\nfunction openBefore(index: number, open: readonly number[]): number {\r\n let low = 0;\r\n let high = open.length;\r\n while (low < high) {\r\n const mid = (low + high) >>> 1;\r\n if (open[mid] < index) low = mid + 1;\r\n else high = mid;\r\n }\r\n return low;\r\n}\r\n\r\nexport function totalHeight(metrics: RowMetrics): number {\r\n const { count, rowHeight, detailHeight, openIndices } = metrics;\r\n return count * rowHeight + openIndices.length * detailHeight;\r\n}\r\n\r\nexport function offsetOfIndex(index: number, metrics: RowMetrics): number {\r\n const clamped = Math.max(0, Math.min(metrics.count, index));\r\n return (\r\n clamped * metrics.rowHeight + openBefore(clamped, metrics.openIndices) * metrics.detailHeight\r\n );\r\n}\r\n\r\nexport function indexAtOffset(offset: number, metrics: RowMetrics): number {\r\n if (metrics.count <= 0 || metrics.rowHeight <= 0) return 0;\r\n if (offset <= 0) return 0;\r\n\r\n let low = 0;\r\n let high = metrics.count - 1;\r\n while (low < high) {\r\n const mid = (low + high + 1) >>> 1;\r\n if (offsetOfIndex(mid, metrics) <= offset) low = mid;\r\n else high = mid - 1;\r\n }\r\n return low;\r\n}\r\n\r\nexport function toPx(width: string | null | undefined): number {\r\n const matched = width ? /^(-?\\d+(?:\\.\\d+)?)px$/.exec(width.trim()) : null;\r\n return matched ? Math.max(0, Number(matched[1])) : 0;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CdkVirtualScrollViewport, VirtualScrollStrategy } from '@angular/cdk/scrolling';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { indexAtOffset, offsetOfIndex, totalHeight, type RowMetrics } from './table-core';\r\n\r\nexport class MonkeyTableVirtualScroll implements VirtualScrollStrategy {\r\n private readonly _indexChange = new Subject<number>();\r\n\r\n readonly scrolledIndexChange: Observable<number> = this._indexChange.asObservable();\r\n\r\n private _viewport: CdkVirtualScrollViewport | null = null;\r\n\r\n private _metrics: RowMetrics = {\r\n count: 0,\r\n rowHeight: 1,\r\n detailHeight: 0,\r\n openIndices: []\r\n };\r\n\r\n private _buffer = 6;\r\n\r\n attach(viewport: CdkVirtualScrollViewport): void {\r\n this._viewport = viewport;\r\n this.update();\r\n }\r\n\r\n detach(): void {\r\n this._indexChange.complete();\r\n this._viewport = null;\r\n }\r\n\r\n onContentScrolled(): void {\r\n this.update();\r\n }\r\n\r\n onDataLengthChanged(): void {\r\n this.update();\r\n }\r\n\r\n onContentRendered(): void {\r\n }\r\n\r\n onRenderedOffsetChanged(): void {\r\n }\r\n\r\n scrollToIndex(index: number, behavior: ScrollBehavior): void {\r\n this._viewport?.scrollToOffset(offsetOfIndex(index, this._metrics), behavior);\r\n }\r\n\r\n setMetrics(metrics: RowMetrics, buffer: number): void {\r\n this._metrics = metrics;\r\n this._buffer = Math.max(1, buffer);\r\n this.update();\r\n }\r\n\r\n private update(): void {\r\n const viewport = this._viewport;\r\n if (!viewport) return;\r\n\r\n const metrics = this._metrics;\r\n viewport.setTotalContentSize(totalHeight(metrics));\r\n\r\n if (metrics.count <= 0) {\r\n viewport.setRenderedRange({ start: 0, end: 0 });\r\n viewport.setRenderedContentOffset(0);\r\n return;\r\n }\r\n\r\n const offset = viewport.measureScrollOffset();\r\n const size = viewport.getViewportSize();\r\n const firstVisible = indexAtOffset(offset, metrics);\r\n const lastVisible = indexAtOffset(offset + size, metrics);\r\n\r\n const start = Math.max(0, firstVisible - this._buffer);\r\n const end = Math.min(metrics.count, lastVisible + 1 + this._buffer);\r\n\r\n viewport.setRenderedRange({ start, end });\r\n viewport.setRenderedContentOffset(offsetOfIndex(start, metrics));\r\n this._indexChange.next(firstVisible);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n CdkVirtualScrollViewport,\r\n ScrollingModule,\r\n VIRTUAL_SCROLL_STRATEGY\r\n} from '@angular/cdk/scrolling';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n contentChildren,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n model,\r\n NgZone,\r\n OnDestroy,\r\n output,\r\n signal,\r\n untracked,\r\n viewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport { MonkeyCheckboxComponent } from '../checkbox';\r\nimport { MonkeyDividerComponent } from '../divider';\r\nimport { MonkeyIconButtonComponent } from '../icon-button';\r\nimport { MonkeyOptionComponent } from '../option';\r\nimport { MonkeyScrollbarComponent } from '../scrollbar';\r\nimport {\r\n MonkeyTableColumnDirective,\r\n MonkeyTableEmptyDirective,\r\n MonkeyTableLoadingDirective,\r\n MonkeyTableRowDetailDirective\r\n} from './table-column.directive';\r\nimport {\r\n addKeys,\r\n ariaSortOf,\r\n interpolate,\r\n mergeOrder,\r\n removeKeys,\r\n sameColumnState,\r\n selectionState,\r\n sortByOrder,\r\n toggleKey,\r\n toPx,\r\n type ColumnAlign,\r\n type ColumnPinned,\r\n type MonkeyTableColumnState,\r\n type SortDirection,\r\n type SortState\r\n} from './table-core';\r\nimport { MonkeyTableVirtualScroll } from './table-virtual-scroll';\r\n\r\nconst SELECTION_WIDTH = 44;\r\nconst EXPAND_WIDTH = 32;\r\nconst PINNED_MIN_WIDTH = 768;\r\nconst DEFAULT_ROW_HEIGHT = 65;\r\nconst DEFAULT_MAX_VISIBLE_ROWS = 20;\r\nconst DEFAULT_SKELETON_ROWS = 5;\r\nconst WINDOW_BUFFER = 6;\r\n\r\nconst VIRTUAL_MIN_ROWS = 19;\r\n\r\ninterface TableText {\r\n EMPTY: string;\r\n SORT: Record<string, string>;\r\n COLUMN: Record<string, string>;\r\n ROW: Record<string, string>;\r\n}\r\n\r\ntype Column<T> = MonkeyTableColumnDirective<T>;\r\n\r\ninterface SlotBase {\r\n key: string;\r\n width: string | null;\r\n px: number;\r\n pinned: ColumnPinned;\r\n offset: number;\r\n align: ColumnAlign;\r\n}\r\n\r\ntype Slot<T> =\r\n | (SlotBase & { kind: 'data'; column: Column<T> })\r\n | (SlotBase & { kind: 'selection' | 'expand'; column: null });\r\n\r\ninterface RowView<T> {\r\n row: T;\r\n key: string;\r\n index: number;\r\n selectable: boolean;\r\n}\r\n\r\ninterface RenderRow<T> extends RowView<T> {\r\n selected: boolean;\r\n open: boolean;\r\n blockedReason: string | null;\r\n selectLabel: string;\r\n expandLabel: string;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-table',\r\n imports: [\r\n NgTemplateOutlet,\r\n ScrollingModule,\r\n MonkeyCheckboxComponent,\r\n MonkeyDividerComponent,\r\n MonkeyIconButtonComponent,\r\n MonkeyOptionComponent,\r\n MonkeyPopoverDirective,\r\n MonkeyScrollbarComponent\r\n ],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: VIRTUAL_SCROLL_STRATEGY,\r\n useFactory: (table: MonkeyTableComponent<unknown>) => table.virtualStrategy,\r\n deps: [MonkeyTableComponent]\r\n }\r\n ],\r\n host: {\r\n class: 'mecx-table',\r\n '[class.mecx-table--striped]': 'striped()',\r\n '[class.mecx-table--menu-open]': '!!openMenu()',\r\n '[attr.aria-busy]': \"loading() ? 'true' : null\"\r\n }\r\n})\r\nexport class MonkeyTableComponent<T> implements OnDestroy {\r\n readonly virtualStrategy = new MonkeyTableVirtualScroll();\r\n\r\n private readonly _zone = inject(NgZone);\r\n\r\n private readonly _text = toSignal<TableText>(inject(MonkeyDictionaryService).get('TABLE'));\r\n\r\n private readonly _columns = contentChildren(MonkeyTableColumnDirective<T>);\r\n\r\n private readonly _columnByName = computed(() => {\r\n return new Map(this._columns().map((column) => [column.name(), column]));\r\n });\r\n\r\n private readonly _visibleColumns = computed(() => {\r\n const shown = this._columns().filter((column) => !column.hidden());\r\n return sortByOrder(shown, (column) => column.name(), this.columnOrder());\r\n });\r\n\r\n private readonly _selectableKeys = computed(() => {\r\n return this.rowViews()\r\n .filter((view) => view.selectable)\r\n .map((view) => view.key);\r\n });\r\n\r\n private readonly _selection = computed(() => {\r\n return selectionState(this.selected(), this._selectableKeys());\r\n });\r\n\r\n private readonly _narrow = signal(false);\r\n\r\n private readonly _detailHeight = signal(0);\r\n\r\n private readonly _headHeight = signal(0);\r\n\r\n private readonly _host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n private _scroller?: HTMLElement;\r\n\r\n private _observer?: ResizeObserver;\r\n\r\n private _frame = 0;\r\n\r\n private _sizeStale = true;\r\n\r\n private _clientWidth = 0;\r\n\r\n private _scrollWidth = 0;\r\n\r\n private readonly _layout = computed(() => {\r\n const columns = this._visibleColumns();\r\n const controlPinned: ColumnPinned = columns.some((column) => column.pinned() === 'left')\r\n ? 'left'\r\n : 'none';\r\n\r\n const control = (kind: 'selection' | 'expand', px: number, pinned: ColumnPinned): Slot<T> => {\r\n return {\r\n kind,\r\n key: `__${kind}`,\r\n column: null,\r\n width: `${px}px`,\r\n px,\r\n pinned,\r\n offset: 0,\r\n align: 'start'\r\n };\r\n };\r\n\r\n const slots: Slot<T>[] = [];\r\n if (this.selectionMode() !== 'none') {\r\n slots.push(control('selection', SELECTION_WIDTH, controlPinned));\r\n }\r\n if (this.expandable()) {\r\n slots.push(control('expand', EXPAND_WIDTH, this._narrow() ? 'none' : controlPinned));\r\n }\r\n columns.forEach((column) => {\r\n slots.push({\r\n kind: 'data',\r\n key: column.name(),\r\n column,\r\n width: column.width() || null,\r\n px: toPx(column.width()),\r\n pinned: this.effectivePinned(column),\r\n offset: 0,\r\n align: column.align()\r\n });\r\n });\r\n\r\n let startWidth = 0;\r\n slots.forEach((slot) => {\r\n if (slot.pinned !== 'left') return;\r\n slot.offset = startWidth;\r\n startWidth += slot.px;\r\n });\r\n\r\n let endWidth = 0;\r\n [...slots].reverse().forEach((slot) => {\r\n if (slot.pinned !== 'right') return;\r\n slot.offset = endWidth;\r\n endWidth += slot.px;\r\n });\r\n\r\n return { slots, startWidth, endWidth };\r\n });\r\n\r\n readonly rows = input.required<readonly T[]>();\r\n\r\n readonly rowKey = input.required<(row: T) => string>();\r\n\r\n readonly rowLabel = input<(row: T) => string>();\r\n\r\n readonly rowSelectable = input<(row: T) => boolean>();\r\n\r\n readonly ariaLabel = input.required<string>();\r\n\r\n readonly caption = input<string>('');\r\n\r\n readonly selectionMode = input<'none' | 'multiple'>('none');\r\n\r\n readonly selected = model<ReadonlySet<string>>(new Set());\r\n\r\n readonly maxSelected = input<number>(0);\r\n\r\n readonly sort = input<SortState | null>(null);\r\n\r\n readonly expandable = input(false, { transform: booleanAttribute });\r\n\r\n readonly expanded = model<ReadonlySet<string>>(new Set());\r\n\r\n readonly reorderable = input(false, { transform: booleanAttribute });\r\n\r\n readonly hideable = input(false, { transform: booleanAttribute });\r\n\r\n readonly pinnable = input(false, { transform: booleanAttribute });\r\n\r\n readonly rowHeight = input<number>(DEFAULT_ROW_HEIGHT);\r\n\r\n readonly maxVisibleRows = input<number | 'none'>(DEFAULT_MAX_VISIBLE_ROWS);\r\n\r\n readonly virtualScroll = input<'auto' | 'off'>('auto');\r\n\r\n readonly columnOrder = model<readonly string[]>([]);\r\n\r\n readonly columnState = input<readonly MonkeyTableColumnState[]>([]);\r\n\r\n readonly striped = input(false, { transform: booleanAttribute });\r\n\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n\r\n readonly emptyText = input<string>('');\r\n\r\n readonly skeletonRows = input<number | 'auto'>('auto');\r\n\r\n readonly onSortChange = output<SortState | null>();\r\n\r\n readonly onColumnHidden = output<{ name: string; label: string }>();\r\n\r\n readonly onColumnStateChange = output<MonkeyTableColumnState[]>();\r\n\r\n readonly onSelectionChange = output<string[]>();\r\n\r\n readonly onExpandChange = output<{ row: T; key: string; expanded: boolean }>();\r\n\r\n protected readonly emptyTemplate = contentChild(MonkeyTableEmptyDirective);\r\n\r\n protected readonly loadingTemplate = contentChild(MonkeyTableLoadingDirective);\r\n\r\n protected readonly rowDetailTemplate = contentChild(MonkeyTableRowDetailDirective<T>);\r\n\r\n protected readonly plainScroller = viewChild<ElementRef<HTMLElement>>('scroller');\r\n\r\n protected readonly headClip = viewChild<ElementRef<HTMLElement>>('headClip');\r\n\r\n protected readonly virtualViewport = viewChild(CdkVirtualScrollViewport);\r\n\r\n protected readonly scrollTarget = computed(() => {\r\n const viewport = this.virtualViewport();\r\n if (viewport) return viewport.elementRef.nativeElement;\r\n return this.plainScroller()?.nativeElement ?? null;\r\n });\r\n\r\n private readonly _rowCap = computed(() => {\r\n const cap = this.maxVisibleRows();\r\n return cap === 'none' ? 0 : Math.max(0, Math.floor(cap));\r\n });\r\n\r\n protected readonly bounded = computed(() => {\r\n const cap = this._rowCap();\r\n return cap > 0 && this.rows().length > cap;\r\n });\r\n\r\n protected readonly virtual = computed(() => {\r\n if (this.virtualScroll() === 'off' || !this.bounded() || this.loading()) return false;\r\n\r\n const threshold = Math.max(this._rowCap(), VIRTUAL_MIN_ROWS);\r\n return this.rowViews().length > threshold;\r\n });\r\n\r\n protected readonly effectiveHeight = computed(() => {\r\n if (!this.bounded()) return '';\r\n\r\n const body = this._rowCap() * this.rowHeight();\r\n return `${this.virtual() ? body : body + this._headHeight()}px`;\r\n });\r\n\r\n protected readonly rowMetrics = computed(() => {\r\n const expanded = this.expanded();\r\n const openIndices = expanded.size\r\n ? this.rowViews()\r\n .filter((view) => expanded.has(view.key))\r\n .map((view) => view.index)\r\n : [];\r\n\r\n return {\r\n openIndices,\r\n count: this.rowViews().length,\r\n rowHeight: Math.max(1, this.rowHeight()),\r\n detailHeight: this.expandable() ? this._detailHeight() : 0\r\n };\r\n });\r\n\r\n protected readonly overflowing = signal(false);\r\n\r\n protected readonly atStart = signal(true);\r\n\r\n protected readonly atEnd = signal(true);\r\n\r\n protected readonly openMenu = signal<string | null>(null);\r\n\r\n protected readonly slots = computed(() => this._layout().slots);\r\n\r\n protected readonly pinnedStartWidth = computed(() => this._layout().startWidth);\r\n\r\n protected readonly pinnedEndWidth = computed(() => this._layout().endWidth);\r\n\r\n protected readonly totalWidth = computed(() => {\r\n const slots = this.slots();\r\n if (!slots.length || slots.some((slot) => slot.px <= 0)) return 0;\r\n return slots.reduce((total, slot) => total + slot.px, 0);\r\n });\r\n\r\n protected readonly allSelected = computed(() => this._selection() === 'all');\r\n\r\n protected readonly someSelected = computed(() => this._selection() === 'partial');\r\n\r\n protected readonly atSelectionLimit = computed(() => {\r\n const limit = this.maxSelected();\r\n return limit > 0 && this.selected().size >= limit;\r\n });\r\n\r\n protected readonly hasSelectable = computed(() => this._selectableKeys().length > 0);\r\n\r\n protected readonly rowViews = computed<RowView<T>[]>(() => {\r\n const keyOf = this.rowKey();\r\n const allows = this.rowSelectable();\r\n const canSelect = this.selectionMode() !== 'none';\r\n\r\n return this.rows().map((row, index) => {\r\n return {\r\n row,\r\n index,\r\n key: keyOf(row),\r\n selectable: canSelect && (!allows || allows(row))\r\n };\r\n });\r\n });\r\n\r\n protected readonly renderRows = computed<RenderRow<T>[]>(() => {\r\n const labelOf = this.rowLabel();\r\n const selected = this.selected();\r\n const expanded = this.expanded();\r\n const atLimit = this.atSelectionLimit();\r\n const canSelect = this.selectionMode() !== 'none';\r\n const canExpand = this.expandable();\r\n const text = this.labels();\r\n const select = canSelect ? this.word('ROW', 'SELECT') : '';\r\n const expand = canExpand ? this.word('ROW', 'EXPAND') : '';\r\n const collapse = canExpand ? this.word('ROW', 'COLLAPSE') : '';\r\n\r\n return this.rowViews().map((view) => {\r\n const label = labelOf ? labelOf(view.row) : view.key;\r\n const isSelected = selected.has(view.key);\r\n const open = expanded.has(view.key);\r\n let blockedReason: string | null = null;\r\n if (!isSelected && !view.selectable) blockedReason = text.notSelectable;\r\n else if (!isSelected && atLimit) blockedReason = text.limit;\r\n\r\n return {\r\n ...view,\r\n open,\r\n blockedReason,\r\n selected: isSelected,\r\n selectLabel: canSelect ? interpolate(select, { label }) : '',\r\n expandLabel: canExpand ? interpolate(open ? collapse : expand, { label }) : ''\r\n };\r\n });\r\n });\r\n\r\n protected readonly skeletonRange = computed(() => {\r\n const requested = this.skeletonRows();\r\n if (requested === 'auto') {\r\n const cap = this._rowCap();\r\n return Array.from({ length: cap > 0 ? cap : DEFAULT_SKELETON_ROWS }, (_, i) => i);\r\n }\r\n\r\n const count = Number(requested);\r\n const length = Number.isFinite(count) && count > 0 ? Math.floor(count) : DEFAULT_SKELETON_ROWS;\r\n return Array.from({ length }, (_, index) => index);\r\n });\r\n\r\n protected readonly labels = computed(() => {\r\n return {\r\n moveLeft: this.word('COLUMN', 'MOVE-LEFT'),\r\n moveRight: this.word('COLUMN', 'MOVE-RIGHT'),\r\n hide: this.word('COLUMN', 'HIDE'),\r\n pin: this.word('COLUMN', 'PIN'),\r\n unpin: this.word('COLUMN', 'UNPIN'),\r\n selectAll: this.word('ROW', 'SELECT-ALL'),\r\n detail: this.word('ROW', 'DETAIL'),\r\n limit: interpolate(this.word('ROW', 'LIMIT'), { max: this.maxSelected() }),\r\n notSelectable: this.word('ROW', 'NOT-SELECTABLE'),\r\n empty: this.emptyText() || this._text()?.EMPTY || ''\r\n };\r\n });\r\n\r\n constructor() {\r\n this.closeMenuWhenColumnGone();\r\n this.restoreColumnState();\r\n\r\n effect((onCleanup) => {\r\n const target = this.scrollTarget();\r\n if (!target) return;\r\n const onScroll = () => this.schedule();\r\n\r\n const observer = this._zone.runOutsideAngular(() => {\r\n target.addEventListener('scroll', onScroll, { passive: true });\r\n const resize = new ResizeObserver(() => this.schedule(true));\r\n resize.observe(target);\r\n Array.from(target.children).forEach((child) => resize.observe(child));\r\n return resize;\r\n });\r\n\r\n this._scroller = target;\r\n this._observer = observer;\r\n this.measure();\r\n\r\n onCleanup(() => {\r\n target.removeEventListener('scroll', onScroll);\r\n observer.disconnect();\r\n this._observer = undefined;\r\n this.cancelFrame();\r\n });\r\n });\r\n\r\n effect(() => {\r\n this.slots();\r\n this.rows();\r\n queueMicrotask(() => this.schedule(true));\r\n });\r\n\r\n effect(() => {\r\n const metrics = this.rowMetrics();\r\n if (!this.virtual()) return;\r\n this.virtualStrategy.setMetrics(metrics, WINDOW_BUFFER);\r\n });\r\n }\r\n\r\n private word(group: 'SORT' | 'COLUMN' | 'ROW', key: string): string {\r\n return this._text()?.[group]?.[key] ?? '';\r\n }\r\n\r\n private effectivePinned(column: Column<T>): ColumnPinned {\r\n const pinned = column.pinned();\r\n return this._narrow() && pinned === 'left' ? 'none' : pinned;\r\n }\r\n\r\n private schedule(resized = false): void {\r\n if (resized) this._sizeStale = true;\r\n if (this._frame) return;\r\n this._frame = this._zone.runOutsideAngular(() => {\r\n return requestAnimationFrame(() => {\r\n this._frame = 0;\r\n this.measure();\r\n });\r\n });\r\n }\r\n\r\n private cancelFrame(): void {\r\n if (this._frame) cancelAnimationFrame(this._frame);\r\n this._frame = 0;\r\n }\r\n\r\n private measure(): void {\r\n const el = this._scroller;\r\n if (!el) return;\r\n\r\n if (this._sizeStale) {\r\n this._sizeStale = false;\r\n this._clientWidth = el.clientWidth;\r\n this._scrollWidth = el.scrollWidth;\r\n\r\n const host = this._host.nativeElement;\r\n const detail = host.querySelector<HTMLElement>('.mecx-table-row--detail');\r\n if (detail?.offsetHeight) this._detailHeight.set(detail.offsetHeight);\r\n\r\n const head = host.querySelector<HTMLElement>('thead');\r\n if (head?.offsetHeight) this._headHeight.set(head.offsetHeight);\r\n }\r\n\r\n const maxScroll = this._scrollWidth - this._clientWidth;\r\n const scrolled = el.scrollLeft;\r\n\r\n this._narrow.set(this._clientWidth > 0 && this._clientWidth < PINNED_MIN_WIDTH);\r\n this.overflowing.set(maxScroll > 1);\r\n this.atStart.set(scrolled <= 1);\r\n this.atEnd.set(maxScroll <= 1 || scrolled >= maxScroll - 1);\r\n\r\n const head = this.headClip()?.nativeElement;\r\n if (head && head.scrollLeft !== scrolled) head.scrollLeft = scrolled;\r\n }\r\n\r\n private closeMenuWhenColumnGone(): void {\r\n effect(() => {\r\n const open = untracked(() => this.openMenu());\r\n const stillThere = this._visibleColumns().some((column) => {\r\n return column.name() === open && this.hasMenu(column);\r\n });\r\n if (open && !stillThere) this.openMenu.set(null);\r\n });\r\n }\r\n\r\n private currentOrder(): string[] {\r\n const names = this._columns().map((column) => column.name());\r\n return sortByOrder(names, (name) => name, this.columnOrder());\r\n }\r\n\r\n private currentColumnState(): MonkeyTableColumnState[] {\r\n return this.currentOrder().map((name) => {\r\n const column = this._columnByName().get(name);\r\n return {\r\n name,\r\n hidden: column?.hidden() ?? false,\r\n pinned: column?.pinned() ?? 'none'\r\n };\r\n });\r\n }\r\n\r\n private commitSelection(next: ReadonlySet<string>): void {\r\n this.selected.set(next);\r\n this.onSelectionChange.emit([...next]);\r\n }\r\n\r\n private applyOrder(order: readonly string[]): void {\r\n this.columnOrder.set(mergeOrder(this.columnOrder(), order));\r\n this.onColumnStateChange.emit(this.currentColumnState());\r\n this.openMenu.set(null);\r\n }\r\n\r\n private restoreColumnState(): void {\r\n effect(() => {\r\n const incoming = this.columnState();\r\n if (!incoming.length) return;\r\n\r\n untracked(() => {\r\n if (!this._columns().length) return;\r\n if (sameColumnState(incoming, this.currentColumnState())) return;\r\n\r\n incoming.forEach((item) => {\r\n const column = this._columnByName().get(item.name);\r\n column?.hidden.set(item.hidden);\r\n column?.pinned.set(item.pinned);\r\n });\r\n\r\n this.columnOrder.set(\r\n mergeOrder(\r\n this.columnOrder(),\r\n incoming.map((item) => item.name)\r\n )\r\n );\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._observer?.disconnect();\r\n this.cancelFrame();\r\n }\r\n\r\n protected closeMenu = (): void => {\r\n this.openMenu.set(null);\r\n };\r\n\r\n protected trackKey = (_index: number, view: RowView<T>): string => {\r\n return view.key;\r\n };\r\n\r\n protected toggleMenu(column: Column<T>): void {\r\n this.openMenu.set(this.openMenu() === column.name() ? null : column.name());\r\n }\r\n\r\n protected hasMenu(column: Column<T> | null): boolean {\r\n if (!column) return false;\r\n return (\r\n column.sortable() || this.canReorder(column) || this.canHide(column) || this.canPin(column)\r\n );\r\n }\r\n\r\n protected canHide(column: Column<T>): boolean {\r\n return this.hideable() && column.hideable();\r\n }\r\n\r\n protected canReorder(column: Column<T>): boolean {\r\n return this.reorderable() && column.movable();\r\n }\r\n\r\n protected canPin(column: Column<T>): boolean {\r\n return this.pinnable() && column.pinnable() && !this._narrow();\r\n }\r\n\r\n protected isLastColumn(): boolean {\r\n return this._visibleColumns().length <= 1;\r\n }\r\n\r\n protected sortLabels(column: Column<T>): { asc: string; desc: string } {\r\n const kind = column.sortKind().toUpperCase();\r\n return { asc: this.word('SORT', `${kind}-ASC`), desc: this.word('SORT', `${kind}-DESC`) };\r\n }\r\n\r\n protected ariaSortFor(column: Column<T> | null): string | null {\r\n return column ? ariaSortOf(this.sort(), column.name()) : null;\r\n }\r\n\r\n protected isSortedBy(column: Column<T>, direction: SortDirection): boolean {\r\n const current = this.sort();\r\n return current?.column === column.name() && current.direction === direction;\r\n }\r\n\r\n protected sortBy(column: Column<T>, direction: SortDirection): void {\r\n const unchanged = this.isSortedBy(column, direction);\r\n this.onSortChange.emit(unchanged ? null : { column: column.name(), direction });\r\n this.openMenu.set(null);\r\n }\r\n\r\n protected canMove(column: Column<T>, delta: -1 | 1): boolean {\r\n if (!this.canReorder(column)) return false;\r\n\r\n const visible = this._visibleColumns();\r\n const neighbour = visible[visible.indexOf(column) + delta];\r\n if (!neighbour || !neighbour.movable()) return false;\r\n return this.effectivePinned(neighbour) === this.effectivePinned(column);\r\n }\r\n\r\n protected move(column: Column<T>, delta: -1 | 1): void {\r\n if (!this.canMove(column, delta)) return;\r\n\r\n const visible = this._visibleColumns();\r\n const neighbour = visible[visible.indexOf(column) + delta];\r\n const order = this.currentOrder();\r\n const from = order.indexOf(column.name());\r\n const to = order.indexOf(neighbour.name());\r\n [order[from], order[to]] = [order[to], order[from]];\r\n\r\n this.applyOrder(order);\r\n }\r\n\r\n protected hide(column: Column<T>): void {\r\n if (!this.canHide(column) || this.isLastColumn()) return;\r\n\r\n column.hidden.set(true);\r\n this.onColumnHidden.emit({ name: column.name(), label: column.label() });\r\n this.applyOrder(this.currentOrder());\r\n }\r\n\r\n protected togglePin(column: Column<T>): void {\r\n if (!this.canPin(column)) return;\r\n\r\n const was = column.pinned();\r\n column.pinned.set(was === 'none' ? 'left' : 'none');\r\n\r\n const others = this.currentOrder().filter((name) => name !== column.name());\r\n const pinnedOf = (name: string) => this._columnByName().get(name)?.pinned() ?? 'none';\r\n const afterLeft = others.filter((name) => pinnedOf(name) === 'left').length;\r\n const rightStart = others.findIndex((name) => pinnedOf(name) === 'right');\r\n const beforeRight = rightStart === -1 ? others.length : rightStart;\r\n\r\n others.splice(\r\n was === 'right' ? beforeRight : Math.min(afterLeft, beforeRight),\r\n 0,\r\n column.name()\r\n );\r\n this.applyOrder(others);\r\n }\r\n\r\n protected toggleRow(view: RowView<T>): void {\r\n const selected = this.selected();\r\n const blocked = !view.selectable || this.atSelectionLimit();\r\n if (!selected.has(view.key) && blocked) return;\r\n this.commitSelection(toggleKey(selected, view.key));\r\n }\r\n\r\n protected toggleAllRows(): void {\r\n const selected = this.selected();\r\n const keys = this._selectableKeys();\r\n\r\n if (this.allSelected() || this.atSelectionLimit()) {\r\n this.commitSelection(removeKeys(selected, keys));\r\n return;\r\n }\r\n\r\n this.commitSelection(addKeys(selected, keys, this.maxSelected()));\r\n }\r\n\r\n protected toggleOpen(view: RowView<T>): void {\r\n const next = toggleKey(this.expanded(), view.key);\r\n this.expanded.set(next);\r\n this.onExpandChange.emit({ row: view.row, key: view.key, expanded: next.has(view.key) });\r\n }\r\n}\r\n","<div class=\"mecx-table-main\">\n <div class=\"mecx-table-viewport\">\n @if (virtual()) {\n <div #headClip class=\"mecx-table-head-clip\">\n <table\n class=\"mecx-table-grid mecx-table-grid--head\"\n [style.width.px]=\"totalWidth() || null\"\n >\n <ng-container [ngTemplateOutlet]=\"tableHead\" />\n </table>\n </div>\n\n <cdk-virtual-scroll-viewport\n class=\"mecx-table-scroll mecx-table-scroll--virtual\"\n [itemSize]=\"rowHeight()\"\n [minBufferPx]=\"rowHeight() * 6\"\n [maxBufferPx]=\"rowHeight() * 12\"\n [style.height]=\"effectiveHeight()\"\n role=\"region\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.tabindex]=\"overflowing() ? 0 : null\"\n >\n <table\n class=\"mecx-table-grid\"\n [attr.aria-rowcount]=\"rows().length + 1\"\n [style.width.px]=\"totalWidth() || null\"\n >\n <ng-container [ngTemplateOutlet]=\"colGroup\" />\n <tbody class=\"mecx-table-body\">\n <ng-container\n *cdkVirtualFor=\"\n let view of renderRows();\n trackBy: trackKey;\n templateCacheSize: 30\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"dataRow\"\n [ngTemplateOutletContext]=\"{ $implicit: view }\"\n />\n </ng-container>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n } @else {\n <div\n #scroller\n class=\"mecx-table-scroll\"\n [class.mecx-table-scroll--vertical]=\"!!effectiveHeight()\"\n [style.max-height]=\"effectiveHeight() || null\"\n role=\"region\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.tabindex]=\"overflowing() ? 0 : null\"\n >\n <table class=\"mecx-table-grid\">\n <ng-container [ngTemplateOutlet]=\"tableHead\" />\n <tbody class=\"mecx-table-body\">\n @if (loading()) {\n @if (loadingTemplate(); as tpl) {\n <tr class=\"mecx-table-row\">\n <td\n class=\"mecx-table-cell mecx-table-cell--wide\"\n [attr.colspan]=\"slots().length\"\n >\n <ng-container [ngTemplateOutlet]=\"tpl.template\" />\n </td>\n </tr>\n } @else {\n @for (line of skeletonRange(); track line) {\n <tr class=\"mecx-table-row\" aria-hidden=\"true\">\n @for (slot of slots(); track slot.key) {\n <td\n class=\"mecx-table-cell\"\n [class.mecx-table-cell--end]=\"slot.align === 'end'\"\n [class.mecx-table-cell--control]=\"slot.kind !== 'data'\"\n [class.mecx-table-cell--pinned]=\"slot.pinned !== 'none'\"\n [style.left.px]=\"slot.pinned === 'left' ? slot.offset : null\"\n [style.right.px]=\"slot.pinned === 'right' ? slot.offset : null\"\n >\n <span class=\"mecx-table-skeleton\"></span>\n </td>\n }\n </tr>\n }\n }\n } @else if (rows().length === 0) {\n <tr class=\"mecx-table-row\">\n <td\n class=\"mecx-table-cell mecx-table-cell--wide\"\n [attr.colspan]=\"slots().length\"\n >\n @if (emptyTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.template\" />\n } @else {\n <p class=\"mecx-table-empty\">{{ labels().empty }}</p>\n }\n </td>\n </tr>\n } @else {\n @for (view of renderRows(); track view.key) {\n <ng-container\n [ngTemplateOutlet]=\"dataRow\"\n [ngTemplateOutletContext]=\"{ $implicit: view }\"\n />\n }\n }\n </tbody>\n </table>\n </div>\n }\n\n @if (pinnedStartWidth() > 0) {\n <div\n class=\"mecx-table-pinned-shadow\"\n [class.mecx-table-pinned-shadow--visible]=\"!atStart()\"\n [style.left.px]=\"0\"\n [style.width.px]=\"pinnedStartWidth()\"\n aria-hidden=\"true\"\n ></div>\n }\n @if (pinnedEndWidth() > 0) {\n <div\n class=\"mecx-table-pinned-shadow mecx-table-pinned-shadow--end\"\n [class.mecx-table-pinned-shadow--visible]=\"!atEnd()\"\n [style.right.px]=\"0\"\n [style.width.px]=\"pinnedEndWidth()\"\n aria-hidden=\"true\"\n ></div>\n }\n\n @if (pinnedStartWidth() === 0) {\n <div\n class=\"mecx-table-fade mecx-table-fade--start\"\n [class.mecx-table-fade--visible]=\"!atStart()\"\n aria-hidden=\"true\"\n ></div>\n }\n <div\n class=\"mecx-table-fade\"\n [class.mecx-table-fade--visible]=\"!atEnd()\"\n [style.right.px]=\"pinnedEndWidth()\"\n aria-hidden=\"true\"\n ></div>\n </div>\n\n @if (effectiveHeight() && scrollTarget(); as target) {\n <div class=\"mecx-table-scrollbar-vertical\">\n <monkey-scrollbar orientation=\"vertical\" [target]=\"target\" />\n </div>\n }\n</div>\n\n@if (scrollTarget(); as target) {\n <div class=\"mecx-table-scrollbar\">\n <monkey-scrollbar orientation=\"horizontal\" [target]=\"target\" />\n </div>\n}\n\n<div class=\"mecx-table-footer\">\n <ng-content select=\"monkey-pagination-size\"></ng-content>\n <div class=\"mecx-table-footer-actions\">\n <ng-content select=\"monkey-pagination-label\"></ng-content>\n <ng-content select=\"monkey-pagination-action\"></ng-content>\n </div>\n</div>\n\n<ng-template #colGroup>\n <colgroup>\n @for (slot of slots(); track slot.key) {\n <col [style.width]=\"slot.width\" />\n }\n </colgroup>\n</ng-template>\n\n<ng-template #tableHead>\n @if (caption()) {\n <caption class=\"mecx-table-caption\">\n {{\n caption()\n }}\n </caption>\n }\n\n <ng-container [ngTemplateOutlet]=\"colGroup\" />\n\n <thead>\n <tr class=\"mecx-table-row\">\n @for (slot of slots(); track slot.key) {\n <th\n scope=\"col\"\n class=\"mecx-table-cell mecx-table-cell--head\"\n [class.mecx-table-cell--end]=\"slot.align === 'end'\"\n [class.mecx-table-cell--control]=\"slot.kind !== 'data'\"\n [class.mecx-table-cell--pinned]=\"slot.pinned !== 'none'\"\n [style.left.px]=\"slot.pinned === 'left' ? slot.offset : null\"\n [style.right.px]=\"slot.pinned === 'right' ? slot.offset : null\"\n [class.mecx-table-cell--active]=\"openMenu() === slot.key\"\n [attr.aria-sort]=\"ariaSortFor(slot.column)\"\n >\n @switch (slot.kind) {\n @case ('selection') {\n <label class=\"mecx-table-select-all\">\n <span class=\"mecx-sr-only\">{{ labels().selectAll }}</span>\n <monkey-checkbox\n size=\"sm\"\n [value]=\"allSelected()\"\n [indeterminate]=\"someSelected()\"\n [disabled]=\"loading() || !hasSelectable()\"\n (onChange)=\"toggleAllRows()\"\n />\n </label>\n }\n @case ('expand') {\n <span class=\"mecx-sr-only\">{{ labels().detail }}</span>\n }\n @default {\n @if (hasMenu(slot.column)) {\n <button\n #trigger\n type=\"button\"\n class=\"mecx-table-heading mecx-table-trigger\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"openMenu() === slot.key\"\n (click)=\"toggleMenu(slot.column)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"heading\"\n [ngTemplateOutletContext]=\"{ $implicit: slot.column }\"\n />\n </button>\n\n <ng-template\n [monkeyPopover]=\"openMenu() === slot.key\"\n [monkeyPopoverTarget]=\"trigger\"\n [monkeyPopoverClosed]=\"closeMenu\"\n monkeyPopoverDir=\"ltr\"\n [monkeyPopoverHideHeader]=\"true\"\n >\n <div class=\"mecx-table-menu\" (click)=\"openMenu.set(null)\">\n @if (slot.column.sortable()) {\n @let sortText = sortLabels(slot.column);\n <monkey-option\n [selected]=\"isSortedBy(slot.column, 'ascending')\"\n (click)=\"sortBy(slot.column, 'ascending')\"\n >\n <i class=\"mk-i mk-i-arrows-up-down sm\" aria-hidden=\"true\"></i>\n {{ sortText.asc }}\n </monkey-option>\n <monkey-option\n [selected]=\"isSortedBy(slot.column, 'descending')\"\n (click)=\"sortBy(slot.column, 'descending')\"\n >\n <i class=\"mk-i mk-i-arrows-up-down sm\" aria-hidden=\"true\"></i>\n {{ sortText.desc }}\n </monkey-option>\n }\n\n @if (canReorder(slot.column)) {\n @if (slot.column.sortable()) {\n <monkey-divider />\n }\n <monkey-option\n [disabled]=\"!canMove(slot.column, -1)\"\n (click)=\"move(slot.column, -1)\"\n >\n <i class=\"mk-i mk-i-arrow-line-left sm\" aria-hidden=\"true\"></i>\n {{ labels().moveLeft }}\n </monkey-option>\n <monkey-option\n [disabled]=\"!canMove(slot.column, 1)\"\n (click)=\"move(slot.column, 1)\"\n >\n <i class=\"mk-i mk-i-arrow-line-right sm\" aria-hidden=\"true\"></i>\n {{ labels().moveRight }}\n </monkey-option>\n }\n\n @if (canHide(slot.column) || canPin(slot.column)) {\n @if (slot.column.sortable() || canReorder(slot.column)) {\n <monkey-divider />\n }\n @if (canHide(slot.column)) {\n <monkey-option [disabled]=\"isLastColumn()\" (click)=\"hide(slot.column)\">\n <i class=\"mk-i mk-i-eye-closed sm\" aria-hidden=\"true\"></i>\n {{ labels().hide }}\n </monkey-option>\n }\n @if (canPin(slot.column)) {\n <monkey-option (click)=\"togglePin(slot.column)\">\n <i class=\"mk-i mk-i-pin-navigation sm\" aria-hidden=\"true\"></i>\n {{ slot.column.pinned() !== 'none' ? labels().unpin : labels().pin }}\n </monkey-option>\n }\n }\n </div>\n </ng-template>\n } @else {\n <div class=\"mecx-table-heading\">\n <ng-container\n [ngTemplateOutlet]=\"heading\"\n [ngTemplateOutletContext]=\"{ $implicit: slot.column }\"\n />\n </div>\n }\n }\n }\n </th>\n }\n </tr>\n </thead>\n</ng-template>\n\n<ng-template #dataRow let-view>\n <tr\n class=\"mecx-table-row mecx-table-row--data\"\n [class.mecx-table-row--odd]=\"view.index % 2 === 1\"\n [class.mecx-table-row--selected]=\"view.selected\"\n [attr.aria-rowindex]=\"virtual() ? view.index + 2 : null\"\n [style.height.px]=\"virtual() ? rowHeight() : null\"\n >\n @for (slot of slots(); track slot.key) {\n <td\n class=\"mecx-table-cell\"\n [class.mecx-table-cell--end]=\"slot.align === 'end'\"\n [class.mecx-table-cell--control]=\"slot.kind !== 'data'\"\n [class.mecx-table-cell--pinned]=\"slot.pinned !== 'none'\"\n [style.left.px]=\"slot.pinned === 'left' ? slot.offset : null\"\n [style.right.px]=\"slot.pinned === 'right' ? slot.offset : null\"\n >\n @switch (slot.kind) {\n @case ('selection') {\n <label class=\"mecx-table-select-row\" [attr.title]=\"view.blockedReason\">\n <span class=\"mecx-sr-only\">{{ view.selectLabel }}</span>\n <monkey-checkbox\n size=\"sm\"\n [value]=\"view.selected\"\n [disabled]=\"!!view.blockedReason\"\n (onChange)=\"toggleRow(view)\"\n />\n </label>\n }\n @case ('expand') {\n <monkey-icon-button\n type=\"tertiary\"\n size=\"sm\"\n icon=\"arrow-right\"\n class=\"mecx-table-expand-toggle\"\n [class.mecx-table-expand-toggle--open]=\"view.open\"\n [attr.aria-expanded]=\"view.open\"\n [attr.aria-label]=\"view.expandLabel\"\n (click)=\"toggleOpen(view)\"\n />\n }\n @default {\n @if (slot.column.cell(); as cell) {\n <ng-container\n [ngTemplateOutlet]=\"cell.template\"\n [ngTemplateOutletContext]=\"{\n $implicit: view.row,\n row: view.row,\n index: view.index,\n first: view.index === 0,\n last: view.index === rows().length - 1\n }\"\n />\n }\n }\n }\n </td>\n }\n </tr>\n\n @if (expandable() && view.open) {\n @if (rowDetailTemplate(); as tpl) {\n <tr\n class=\"mecx-table-row mecx-table-row--detail\"\n [class.mecx-table-row--selected]=\"view.selected\"\n >\n <td class=\"mecx-table-cell mecx-table-cell--wide\" [attr.colspan]=\"slots().length\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"{ $implicit: view.row, row: view.row }\"\n />\n </td>\n </tr>\n }\n }\n</ng-template>\n\n<ng-template #heading let-column>\n @if (column.headerCell(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.template\" />\n } @else {\n @if (column.labelHidden()) {\n <span class=\"mecx-sr-only\">{{ column.label() }}</span>\n } @else {\n <span class=\"mecx-table-label\">{{ column.label() }}</span>\n @if (column.unit()) {\n <span class=\"mecx-table-unit\">{{ column.unit() }}</span>\n }\n }\n }\n</ng-template>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './components/pagination-action/pagination-action';\nexport * from './components/pagination-label/pagination-label';\nexport * from './components/pagination-size/pagination-size';\nexport * from './table-column.directive';\nexport * from './table-core';\nexport * from './table.component';\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n HostBinding,\r\n inject,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Optional\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { filter } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[monkey-tab-link]',\r\n standalone: false\r\n})\r\nexport class MonkeyTabLinkDirective implements OnInit {\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n @HostBinding('class.disabled')\r\n get isDisabled() {\r\n return this.disabled;\r\n }\r\n\r\n @HostBinding('attr.tabindex')\r\n get tabIndex() {\r\n return this.disabled ? -1 : 0;\r\n }\r\n\r\n private destroyRef = inject(DestroyRef);\r\n\r\n private el = inject(ElementRef<HTMLAnchorElement>);\r\n\r\n constructor(@Optional() @Inject(Router) private router: Router) {\r\n // ignore\r\n }\r\n\r\n ngOnInit() {\r\n if (this.router) {\r\n this.updateActiveState();\r\n\r\n this.router.events\r\n .pipe(\r\n filter((event) => {\r\n return event instanceof NavigationEnd;\r\n }),\r\n takeUntilDestroyed(this.destroyRef)\r\n )\r\n .subscribe(() => {\r\n this.updateActiveState();\r\n });\r\n }\r\n }\r\n\r\n private updateActiveState() {\r\n if (this.disabled) return;\r\n\r\n const link = this.el.nativeElement;\r\n const routerLink = link.getAttribute('routerLink');\r\n\r\n if (routerLink && this.router) {\r\n const isActive =\r\n this.router.url === routerLink ||\r\n (routerLink !== '/' && this.router.url.startsWith(routerLink));\r\n\r\n if (isActive) {\r\n link.classList.add('active');\r\n } else {\r\n link.classList.remove('active');\r\n }\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'monkey-tab',\r\n standalone: false,\r\n template: `\r\n <button type=\"button\" [disabled]=\"disabled\" (click)=\"handleClick()\">\r\n <ng-content />\r\n </button>\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: block;\r\n }\r\n `\r\n ]\r\n})\r\nexport class MonkeyTabComponent {\r\n @Input() value: string = '';\r\n\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n @Output() onClick = new EventEmitter<string>();\r\n\r\n @Input()\r\n @HostBinding('class.selected')\r\n isSelected: boolean = false;\r\n\r\n handleClick() {\r\n if (!this.disabled) {\r\n this.onClick.emit(this.value);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n booleanAttribute,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyTabComponent } from './tab.component';\r\n\r\n@Component({\r\n selector: 'monkey-tabs',\r\n standalone: false,\r\n encapsulation: ViewEncapsulation.None,\r\n template: `\r\n @if (hasScroll) {\r\n <button\r\n class=\"scroll-arrow scroll-arrow-left\"\r\n [class.enabled]=\"enabledLeftArrow\"\r\n (click)=\"scrollLeft()\"\r\n type=\"button\"\r\n >\r\n ‹\r\n </button>\r\n }\r\n\r\n <div class=\"monkey-tabs-header\" #tabsHeader>\r\n <div\r\n class=\"monkey-tabs-content\"\r\n [class.full-width]=\"fullWidth\"\r\n [class]=\"position\"\r\n #tabsContent\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n\r\n @if (hasScroll) {\r\n <button\r\n class=\"scroll-arrow scroll-arrow-right\"\r\n [class.enabled]=\"enabledRightArrow\"\r\n (click)=\"scrollRight()\"\r\n type=\"button\"\r\n >\r\n ›\r\n </button>\r\n }\r\n `,\r\n styleUrls: ['./tabs.component.scss'],\r\n host: {\r\n 'data-testid': 'monkey-tabs',\r\n '[attr.id]': 'monkeyId',\r\n '[id]': 'monkeyId'\r\n }\r\n})\r\nexport class MonkeyTabsComponent implements AfterContentInit, AfterViewInit, OnDestroy, OnChanges {\r\n protected monkeyId = inject(IdGenerator).getId('monkey-tabs-');\r\n\r\n @Input() selected: string = '';\r\n\r\n @Input({ transform: booleanAttribute }) fullWidth: boolean = false;\r\n\r\n @Input() position: 'start' | 'center' | 'end' = 'start';\r\n\r\n @Output() onChange = new EventEmitter<string>();\r\n\r\n @ContentChildren(MonkeyTabComponent) tabs!: QueryList<MonkeyTabComponent>;\r\n\r\n @ViewChild('tabsHeader') tabsHeader!: ElementRef<HTMLDivElement>;\r\n\r\n @ViewChild('tabsContent') tabsContent!: ElementRef<HTMLDivElement>;\r\n\r\n enabledLeftArrow = false;\r\n\r\n enabledRightArrow = false;\r\n\r\n hasScroll = false;\r\n\r\n scrollPosition = 0;\r\n\r\n private destroyRef = inject(DestroyRef);\r\n\r\n private resizeObserver?: ResizeObserver;\r\n\r\n private updateScrollPosition() {\r\n this.tabsContent.nativeElement.style.transform = `translateX(-${this.scrollPosition}px)`;\r\n this.updateScrollArrows();\r\n }\r\n\r\n private updateScrollArrows() {\r\n if (!this.tabsHeader || !this.tabsContent) return;\r\n\r\n const headerWidth = this.tabsHeader.nativeElement.offsetWidth;\r\n const contentWidth = this.tabsContent.nativeElement.scrollWidth;\r\n const maxScroll = contentWidth - headerWidth;\r\n\r\n this.hasScroll = maxScroll > 0;\r\n this.enabledLeftArrow = this.scrollPosition > 0;\r\n this.enabledRightArrow = this.scrollPosition < maxScroll && maxScroll > 0;\r\n }\r\n\r\n private selectTab(value: string) {\r\n this.selected = value;\r\n this.onChange.emit(value);\r\n this.updateTabSelection();\r\n }\r\n\r\n private updateTabSelection() {\r\n if (!this.tabs) return;\r\n\r\n this.tabs.forEach((tab) => {\r\n tab.isSelected = tab.value === this.selected;\r\n });\r\n }\r\n\r\n ngOnChanges() {\r\n this.updateTabSelection();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (typeof ResizeObserver !== 'undefined') {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.updateScrollArrows();\r\n });\r\n this.resizeObserver.observe(this.tabsHeader.nativeElement);\r\n }\r\n\r\n setTimeout(() => {\r\n this.updateScrollArrows();\r\n }, 0);\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.updateTabsEvents();\r\n }\r\n\r\n updateTabsEvents() {\r\n this.tabs.forEach((tab) => {\r\n tab.onClick.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value: string) => {\r\n this.selectTab(value);\r\n });\r\n });\r\n\r\n this.updateTabSelection();\r\n }\r\n\r\n scrollLeft() {\r\n const headerWidth = this.tabsHeader.nativeElement.offsetWidth;\r\n const scrollAmount = headerWidth * 0.8;\r\n this.scrollPosition = Math.max(0, this.scrollPosition - scrollAmount);\r\n this.updateScrollPosition();\r\n }\r\n\r\n scrollRight() {\r\n const headerWidth = this.tabsHeader.nativeElement.offsetWidth;\r\n const contentWidth = this.tabsContent.nativeElement.scrollWidth;\r\n const maxScroll = contentWidth - headerWidth;\r\n const scrollAmount = headerWidth * 0.8;\r\n this.scrollPosition = Math.min(maxScroll, this.scrollPosition + scrollAmount);\r\n this.updateScrollPosition();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.resizeObserver?.disconnect();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { NgModule } from '@angular/core';\r\nimport { MonkeyTabLinkDirective } from './tab-link.directive';\r\nimport { MonkeyTabComponent } from './tab.component';\r\nimport { MonkeyTabsComponent } from './tabs.component';\r\n\r\n@NgModule({\r\n declarations: [MonkeyTabsComponent, MonkeyTabComponent, MonkeyTabLinkDirective],\r\n exports: [MonkeyTabsComponent, MonkeyTabComponent, MonkeyTabLinkDirective]\r\n})\r\nexport class MonkeyTabsModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-toggle',\r\n imports: [CommonModule],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-toggle',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyToggleComponent {\r\n @HostBinding('class.disabled') @Input() disabled = false;\r\n\r\n @HostBinding('class')\r\n @Input()\r\n size: 'lg' | 'md' | 'sm' = 'md';\r\n\r\n @Output() onChange = new EventEmitter<any>();\r\n\r\n @Input() set value(_: boolean | 'true' | 'false') {\r\n if (typeof _ === 'string') {\r\n this._checked = _ === 'true';\r\n } else {\r\n this._checked = _;\r\n }\r\n }\r\n\r\n _checked: boolean = false;\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-toggle-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: any) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n\r\n if (!this.disabled) {\r\n this.onChange.next(!this._checked);\r\n this._checked = !this._checked;\r\n }\r\n }\r\n}\r\n","<input type=\"checkbox\" [checked]=\"_checked\" />\r\n<div class=\"slider\" [ngClass]=\"{ checked: _checked }\"></div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toggle.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'monkey-toggle-line-button',\r\n standalone: true,\r\n templateUrl: './toggle-line-button.component.html',\r\n styleUrl: './toggle-line-button.component.scss',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class MonkeyToggleLineButtonComponent {\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input() value: boolean | undefined;\r\n\r\n checked: boolean | undefined;\r\n\r\n @Input() name: string | undefined;\r\n}\r\n","<input\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [id]=\"value + '-' + name\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange.emit(this.value)\"\r\n/>\r\n<label [for]=\"value + '-' + name\">\r\n <ng-content></ng-content>\r\n</label>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toggle-line-button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyToggleLineButtonComponent } from './toggle-line-button';\r\n\r\n@Component({\r\n selector: 'monkey-toggle-line',\r\n imports: [],\r\n templateUrl: './toggle-line.component.html',\r\n styleUrl: './toggle-line.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-toggle-line',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyToggleLineComponent implements AfterContentInit, OnDestroy, OnChanges {\r\n @Input() value: boolean | undefined;\r\n\r\n @Input() name = Math.random().toString();\r\n\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n @Output() onChange = new EventEmitter<any>();\r\n\r\n private subscriptions: Subscription = new Subscription();\r\n\r\n @ContentChildren(MonkeyToggleLineButtonComponent)\r\n radioButtons!: QueryList<MonkeyToggleLineButtonComponent>;\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n return this.size;\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-toggle-line-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.radioButtons.forEach((_, i) => {\r\n _.value = !!i;\r\n _.checked = this.value === _.value;\r\n _.name = this.name;\r\n _.disabled = this.disabled;\r\n\r\n const subscription = _.onChange.subscribe((value: boolean) => {\r\n this.onChange.emit(value);\r\n });\r\n this.subscriptions.add(subscription);\r\n });\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (!this.radioButtons) return;\r\n this.radioButtons.forEach((_, i) => {\r\n _.checked = this.value === _.value;\r\n _.disabled = this.disabled;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.unsubscribe();\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toggle-line-button';\r\nexport * from './toggle-line.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n Output,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-tooltip',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-tooltip',\r\n '[style.left.px]': 'left',\r\n '[style.top.px]': 'top',\r\n '(animationend)': 'onAnimationEnd($event)',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyTooltipComponent {\r\n @Input() text: string | undefined;\r\n\r\n @Input() template!: null | TemplateRef<HTMLElement>;\r\n\r\n @Input() left: number | undefined;\r\n\r\n @Input() top: number | undefined;\r\n\r\n @Output() afterClose = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-tooltip-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor(private host: ElementRef<HTMLElement>) {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n close() {\r\n this.host.nativeElement.classList.add('closed');\r\n }\r\n\r\n onAnimationEnd(event: AnimationEvent) {\r\n if (event.animationName.includes('fade-out')) {\r\n this.afterClose.emit(true);\r\n }\r\n }\r\n}\r\n","@if (template) {\r\n <ng-container *ngTemplateOutlet=\"template\"> </ng-container>\r\n}\r\n@if (text) {\r\n {{ text }}\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './tooltip.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ApplicationRef,\r\n booleanAttribute,\r\n ComponentRef,\r\n Directive,\r\n DOCUMENT,\r\n ElementRef,\r\n HostListener,\r\n Inject,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { MonkeyTooltipComponent } from './tooltip';\r\n\r\ntype Position = 'top' | 'bottom' | 'left' | 'right' | undefined;\r\n\r\n@Directive({\r\n selector: '[monkeyTooltip]',\r\n standalone: true,\r\n host: {\r\n '(mouseenter)': 'show()',\r\n '(mouseleave)': 'hide()',\r\n '(click)': 'hide()'\r\n }\r\n})\r\nexport class MonkeyTooltipDirective {\r\n @Input('monkeyTooltip') tooltipText: string | TemplateRef<HTMLElement> | undefined;\r\n\r\n @Input() tooltipPosition: Position;\r\n\r\n @Input({ transform: booleanAttribute }) enabled = true;\r\n\r\n private offset = 8;\r\n\r\n private tooltipComponent?: ComponentRef<MonkeyTooltipComponent>;\r\n\r\n private bounds!: {\r\n elBounds: DOMRect;\r\n tooltipBounds: DOMRect;\r\n scroll: number;\r\n viewport: { width: number; height: number };\r\n };\r\n\r\n constructor(\r\n private viewContainerRef: ViewContainerRef,\r\n private elementRef: ElementRef,\r\n private appRef: ApplicationRef,\r\n @Inject(DOCUMENT) private document: Document\r\n ) {\r\n // to do not\r\n }\r\n\r\n private setBounds() {\r\n this.tooltipComponent!.hostView.detectChanges();\r\n this.bounds = {\r\n elBounds: this.elementRef.nativeElement.getBoundingClientRect(),\r\n tooltipBounds: this.tooltipComponent?.location.nativeElement.getBoundingClientRect(),\r\n scroll: document.documentElement.scrollTop || document.body.scrollTop || 0,\r\n viewport: {\r\n width:\r\n window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,\r\n height:\r\n window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\r\n }\r\n };\r\n }\r\n\r\n private createTooltip() {\r\n this.tooltipComponent = this.viewContainerRef.createComponent(MonkeyTooltipComponent);\r\n this.document.body.appendChild(this.tooltipComponent.location.nativeElement);\r\n\r\n if (this.tooltipText instanceof TemplateRef) {\r\n this.tooltipComponent.instance.template = this.tooltipText;\r\n } else {\r\n this.tooltipComponent.instance.text = this.tooltipText;\r\n }\r\n this.setBounds();\r\n\r\n this.positionTooltip(this.tooltipPosition);\r\n }\r\n\r\n private positionTooltip(position: Position) {\r\n switch (position) {\r\n case 'left':\r\n this.positionLeft();\r\n if (this.isOutOfBounds()) {\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionTop();\r\n }\r\n }\r\n }\r\n break;\r\n case 'right':\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionLeft();\r\n if (this.isOutOfBounds()) {\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionTop();\r\n }\r\n }\r\n }\r\n break;\r\n case 'top':\r\n this.positionTop();\r\n if (this.isOutOfBounds()) {\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionLeft();\r\n }\r\n }\r\n }\r\n break;\r\n case 'bottom':\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionTop();\r\n if (this.isOutOfBounds()) {\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionLeft();\r\n }\r\n }\r\n }\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n private isOutOfBounds() {\r\n const { tooltipBounds, viewport } = this.bounds;\r\n\r\n return (\r\n tooltipBounds.left < 0 ||\r\n tooltipBounds.top < 0 ||\r\n tooltipBounds.left + tooltipBounds.width > viewport.width ||\r\n tooltipBounds.top + tooltipBounds.height > viewport.height\r\n );\r\n }\r\n\r\n private positionLeft() {\r\n const { elBounds, tooltipBounds, scroll } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.left - tooltipBounds.width - this.offset;\r\n this.tooltipComponent!.instance.top = scroll + (elBounds.top + elBounds.height / 2);\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateY(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n private positionRight() {\r\n const { elBounds, scroll } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.right + this.offset;\r\n this.tooltipComponent!.instance.top = scroll + (elBounds.top + elBounds.height / 2);\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateY(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n private positionTop() {\r\n const { elBounds, tooltipBounds, scroll } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.left + elBounds.width / 2;\r\n this.tooltipComponent!.instance.top =\r\n scroll + elBounds.top - tooltipBounds.height - this.offset;\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateX(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n private positionBottom() {\r\n const { elBounds, scroll } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.left + elBounds.width / 2;\r\n this.tooltipComponent!.instance.top = scroll + elBounds.bottom + this.offset;\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateX(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n show(): void {\r\n if (!this.enabled || this.tooltipComponent) {\r\n return;\r\n }\r\n\r\n this.createTooltip();\r\n }\r\n\r\n hide(): void {\r\n if (!this.tooltipComponent) {\r\n return;\r\n }\r\n this.tooltipComponent.instance.close();\r\n const subscribe = this.tooltipComponent.instance.afterClose.subscribe(() => {\r\n if (!this.tooltipComponent) {\r\n return;\r\n }\r\n this.appRef.detachView(this.tooltipComponent!.hostView);\r\n this.tooltipComponent!.destroy();\r\n this.tooltipComponent = undefined;\r\n subscribe.unsubscribe();\r\n });\r\n }\r\n\r\n @HostListener('window:scroll')\r\n @HostListener('window:resize')\r\n onScroll() {\r\n this.hide();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './tooltip';\r\nexport * from './tooltip.directive';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n inject,\r\n Input,\r\n input,\r\n InputSignal,\r\n output,\r\n OutputEmitterRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { type MonkeyAlertType, MonkeySize } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'monkey-user-profile',\r\n styleUrl: './user-profile.component.scss',\r\n template: `\r\n <div class=\"icon\">\r\n <i class=\"mk-i mk-i-user-profile {{size()}}\"></i>\r\n </div>\r\n <div class=\"text-truncate\">{{ email() }}</div>\r\n `,\r\n host: {\r\n 'data-testid': 'monkey-user-profile',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class]': 'size()'\r\n }\r\n})\r\nexport class MonkeyUserProfileComponent {\r\n email: InputSignal<string> = input.required();\r\n\r\n size: InputSignal<MonkeySize> = input('sm' as MonkeySize);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-user-profile-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './user-profile.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n ElementRef,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeySize } from '../../interfaces';\r\nimport { MonkeyAvatarComponent } from '../avatar';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [MonkeyAvatarComponent, UtilIconComponent, MonkeyPopoverDirective],\r\n selector: 'monkey-user-profile-button',\r\n styleUrl: './user-profile-button.component.scss',\r\n template: `\r\n <monkey-avatar [size]=\"size\" [src]=\"iconName ? { iconName } : { name }\" />\r\n <div class=\"lh-24 text-truncate flex-grow-1 fs-xxs text-gray-900\">\r\n {{ name }}\r\n </div>\r\n <util-icon class=\"arrow\" name=\"arrowDown\" />\r\n\r\n <ng-template\r\n [monkeyPopover]=\"open\"\r\n [monkeyPopoverTarget]=\"elementRef.nativeElement\"\r\n [monkeyPopoverClosed]=\"handleClose\"\r\n monkeyPopoverDir=\"rtl\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n >\r\n <div class=\"context-menu\" (click)=\"open = false\">\r\n <ng-content />\r\n </div>\r\n </ng-template>\r\n `,\r\n host: {\r\n 'data-testid': 'monkey-user-profile-button',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class.open]': 'open'\r\n }\r\n})\r\nexport class MonkeyUserProfileButtonComponent {\r\n protected _uid = inject(IdGenerator).getId('monkey-user-profile-button-');\r\n\r\n public elementRef = inject(ElementRef);\r\n\r\n @HostBinding('class')\r\n @Input()\r\n size: MonkeySize = 'xs';\r\n\r\n @Input({ required: true }) name!: string;\r\n\r\n @Input() iconName: string = '';\r\n\r\n protected _id!: string;\r\n\r\n open = false;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n this.open = true;\r\n }\r\n\r\n handleClose = () => {\r\n this.open = false;\r\n };\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './user-profile-button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './accordion';\r\nexport * from './action-bar';\r\nexport * from './alert';\r\nexport * from './autocomplete';\r\nexport * from './autocomplete-address';\r\nexport * from './avatar';\r\nexport * from './badge';\r\nexport * from './breadcrumb';\r\nexport * from './button';\r\nexport * from './checkbox';\r\nexport * from './date-range';\r\nexport * from './divider';\r\nexport * from './download-button';\r\nexport * from './complex-filter-bar';\r\nexport * from './filter-bar';\r\nexport * from './filter-bar-v2';\r\nexport * from './form-field';\r\nexport * from './icon-button';\r\nexport * from './input';\r\nexport * from './input-code';\r\nexport * from './input-date-range';\r\nexport * from './input-phone';\r\nexport * from './input-upload';\r\nexport * from './modal';\r\nexport * from './option';\r\nexport * from './pass-number';\r\nexport * from './radio-button';\r\nexport * from './scrollbar';\r\nexport * from './security-level';\r\nexport * from './select';\r\nexport * from './status';\r\nexport * from './stepper';\r\nexport * from './table';\r\nexport * from './tabs';\r\nexport * from './toast';\r\nexport * from './toggle';\r\nexport * from './toggle-line';\r\nexport * from './tooltip';\r\nexport * from './user-profile';\r\nexport * from './user-profile-button';\r\n\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, ElementRef, Input, OnChanges, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[monkeyBadge]'\r\n})\r\nexport class MonkeyBadgeDirective implements OnChanges {\r\n @Input() badgePosition: 'left' | 'right' = 'right';\r\n\r\n @Input() badgeSize: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Input() badgeHidden = false;\r\n\r\n @Input() monkeyBadge: string = '';\r\n\r\n @Input() badgeBackground: string | null = null;\r\n\r\n @Input() badgeColor: string | null = null;\r\n\r\n private badgeEl: HTMLElement | null = null;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2\r\n ) {\r\n // not to do\r\n }\r\n\r\n ngOnChanges(): void {\r\n const { badgeHidden, badgeEl, renderer, el } = this;\r\n\r\n if (badgeHidden) {\r\n this.removeBadge();\r\n return;\r\n }\r\n\r\n if (!badgeEl) {\r\n this.badgeEl = renderer.createElement('span');\r\n renderer.setStyle(el.nativeElement, 'position', 'relative');\r\n renderer.appendChild(el.nativeElement, this.badgeEl);\r\n }\r\n\r\n this.updateBadge();\r\n }\r\n\r\n private updateBadge(): void {\r\n const {\r\n badgeEl,\r\n renderer,\r\n monkeyBadge,\r\n badgeSize,\r\n badgeColor,\r\n badgePosition,\r\n badgeBackground\r\n } = this;\r\n\r\n renderer.addClass(badgeEl, 'monkey-badge');\r\n renderer.addClass(badgeEl, `monkey-badge-${badgeSize}`);\r\n renderer.addClass(badgeEl, `monkey-badge-${badgePosition}`);\r\n renderer.setAttribute(\r\n badgeEl,\r\n 'style',\r\n `\r\n --badge-background: ${badgeBackground ?? 'unset'};\r\n --badge-color: ${badgeColor ?? 'unset'}\r\n `\r\n );\r\n\r\n this.renderer.setProperty(this.badgeEl, 'textContent', monkeyBadge);\r\n }\r\n\r\n private removeBadge(): void {\r\n const { renderer, el, badgeEl } = this;\r\n if (!el.nativeElement || !badgeEl) return;\r\n renderer.removeChild(el.nativeElement, badgeEl);\r\n renderer.removeStyle(el.nativeElement, 'position');\r\n this.badgeEl = null;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { AfterContentInit, Directive, ElementRef, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'form[monkey-form]',\r\n standalone: true\r\n})\r\nexport class MonkeyFormDirective implements AfterContentInit {\r\n constructor(\r\n private readonly el: ElementRef<HTMLElement>,\r\n private readonly renderer: Renderer2\r\n ) {}\r\n\r\n ngAfterContentInit(): void {\r\n this.createSubmitButton();\r\n }\r\n\r\n private createSubmitButton(): void {\r\n const form = this.el.nativeElement;\r\n\r\n const existing = form.querySelector('button[monkey-submit-button]');\r\n if (existing) return;\r\n\r\n const button: HTMLButtonElement = this.renderer.createElement('button');\r\n\r\n this.renderer.setAttribute(button, 'type', 'submit');\r\n this.renderer.setAttribute(button, 'monkey-submit-button', 'true'); // marker\r\n this.renderer.setAttribute(button, 'aria-hidden', 'true');\r\n this.renderer.setAttribute(button, 'tabindex', '-1');\r\n\r\n this.renderer.setStyle(button, 'position', 'absolute');\r\n this.renderer.setStyle(button, 'width', '0');\r\n this.renderer.setStyle(button, 'height', '0');\r\n this.renderer.setStyle(button, 'padding', '0');\r\n this.renderer.setStyle(button, 'margin', '0');\r\n this.renderer.setStyle(button, 'border', 'none');\r\n this.renderer.setStyle(button, 'overflow', 'hidden');\r\n this.renderer.setStyle(button, 'opacity', '0');\r\n this.renderer.setStyle(button, 'pointer-events', 'none');\r\n this.renderer.setStyle(button, 'clip', 'rect(0 0 0 0)');\r\n\r\n this.renderer.appendChild(this.el.nativeElement, button);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './lib/components';\r\nexport * from './lib/directives/badge';\r\nexport * from './lib/directives/display';\r\nexport * from './lib/directives/error';\r\nexport * from './lib/directives/helper';\r\nexport * from './lib/directives/info';\r\nexport * from './lib/directives/label';\r\nexport * from './lib/directives/popover';\r\nexport * from './lib/directives/prefix';\r\nexport * from './lib/directives/suffix';\r\nexport * from './lib/directives/form';\r\nexport * from './lib/interfaces';\r\nexport * from './lib/services';\r\nexport * from './lib/tokens';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.UtilIconComponent","i1.MonkeyFormFieldComponent","i2","i3","Utils.buildMonthByDays","Utils.getEnumKeys","Utils.QuickActionsEnum","Utils.parseStringDate","Utils.getDefaultdates","Utils.buildCalendars","i1","i2.MonkeyInputDirective","i3.MonkeyFormFieldComponent","i4","i2.MonkeyFormFieldComponent","i3.MonkeyInputDirective","i4.MonkeyInputCurrencyDirective","i2.MonkeyModalRef","i3.MonkeyIconButtonComponent","i1.MonkeyButtonComponent","i2.MonkeyModalComponent","i3.MonkeyModalContentDirective","i4.MonkeyModalActionsDirective","i3.MonkeyModalTitleDirective","i4.MonkeyModalSubtitleDirective","i5.MonkeyModalContentDirective","i6.MonkeyModalActionsDirective","i1.UtilIconComponent"],"mappings":"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AA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UA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"}
|
|
1
|
+
{"version":3,"file":"monkey-style-guide.mjs","sources":["../../../projects/monkey-style-guide/src/utils/id-generator.ts","../../../projects/monkey-style-guide/src/utils/utils.ts","../../../projects/monkey-style-guide/src/utils/icon.ts","../../../projects/monkey-style-guide/src/lib/components/accordion/accordion.component.ts","../../../projects/monkey-style-guide/src/lib/components/accordion/accordion.component.html","../../../projects/monkey-style-guide/src/lib/components/accordion/index.ts","../../../projects/monkey-style-guide/src/lib/components/action-bar/action-bar.component.ts","../../../projects/monkey-style-guide/src/lib/components/action-bar/index.ts","../../../projects/monkey-style-guide/src/lib/components/alert/alert.component.ts","../../../projects/monkey-style-guide/src/lib/components/alert/alert.component.html","../../../projects/monkey-style-guide/src/lib/components/alert/index.ts","../../../projects/monkey-style-guide/src/lib/tokens/index.ts","../../../projects/monkey-style-guide/src/lib/directives/popover.ts","../../../projects/monkey-style-guide/src/lib/services/address.service.ts","../../../projects/monkey-style-guide/src/lib/services/dictionary.service.ts","../../../projects/monkey-style-guide/src/lib/services/stepper.service.ts","../../../projects/monkey-style-guide/src/lib/components/button/button.component.ts","../../../projects/monkey-style-guide/src/lib/components/button/button.component.html","../../../projects/monkey-style-guide/src/lib/components/button/index.ts","../../../projects/monkey-style-guide/src/lib/components/toast/toast.component.ts","../../../projects/monkey-style-guide/src/lib/components/toast/toast.component.html","../../../projects/monkey-style-guide/src/lib/components/toast/index.ts","../../../projects/monkey-style-guide/src/lib/interfaces/toast.ts","../../../projects/monkey-style-guide/src/lib/interfaces/index.ts","../../../projects/monkey-style-guide/src/lib/services/toast.service.ts","../../../projects/monkey-style-guide/src/lib/services/index.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field-control.ts","../../../projects/monkey-style-guide/src/lib/directives/display.ts","../../../projects/monkey-style-guide/src/lib/directives/error.ts","../../../projects/monkey-style-guide/src/lib/directives/helper.ts","../../../projects/monkey-style-guide/src/lib/directives/info.ts","../../../projects/monkey-style-guide/src/lib/directives/label.ts","../../../projects/monkey-style-guide/src/lib/directives/prefix.ts","../../../projects/monkey-style-guide/src/lib/directives/suffix.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/utils.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field.component.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field.component.html","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field.module.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/index.ts","../../../projects/monkey-style-guide/src/lib/components/option/option.component.ts","../../../projects/monkey-style-guide/src/lib/components/option/index.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete/autocomplete.component.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete/index.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete-address/autocomplete-address.component.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete-address/index.ts","../../../projects/monkey-style-guide/src/lib/components/avatar/avatar.component.ts","../../../projects/monkey-style-guide/src/lib/components/avatar/avatar.component.html","../../../projects/monkey-style-guide/src/lib/components/avatar/index.ts","../../../projects/monkey-style-guide/src/lib/components/badge/badge.component.ts","../../../projects/monkey-style-guide/src/lib/components/badge/badge.component.html","../../../projects/monkey-style-guide/src/lib/components/badge/index.ts","../../../projects/monkey-style-guide/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/monkey-style-guide/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/monkey-style-guide/src/lib/components/breadcrumb/index.ts","../../../projects/monkey-style-guide/src/lib/components/checkbox/checkbox.component.ts","../../../projects/monkey-style-guide/src/lib/components/checkbox/checkbox.component.html","../../../projects/monkey-style-guide/src/lib/components/checkbox/index.ts","../../../projects/monkey-style-guide/src/lib/components/input/input-currency.directive.ts","../../../projects/monkey-style-guide/src/lib/components/input/validators.ts","../../../projects/monkey-style-guide/src/lib/components/input/input.directive.ts","../../../projects/monkey-style-guide/src/lib/components/input/input.module.ts","../../../projects/monkey-style-guide/src/lib/components/input/index.ts","../../../projects/monkey-style-guide/src/lib/components/icon-button/icon-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/icon-button/icon-button.component.html","../../../projects/monkey-style-guide/src/lib/components/icon-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/utils.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/month/month.component.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/month/month.component.html","../../../projects/monkey-style-guide/src/lib/components/date-range/month/index.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/quick-actions/quick-actions.component.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/quick-actions/quick-actions.component.html","../../../projects/monkey-style-guide/src/lib/components/date-range/quick-actions/index.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/date-range.component.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/date-range.component.html","../../../projects/monkey-style-guide/src/lib/components/date-range/index.ts","../../../projects/monkey-style-guide/src/lib/components/divider/divider.component.ts","../../../projects/monkey-style-guide/src/lib/components/divider/index.ts","../../../projects/monkey-style-guide/src/lib/components/download-button/download-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/download-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/complex-filter-bar.service.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/complex-filter-bar.component.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/filter-config.interface.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/index.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-bar-domain.ts","../../../projects/monkey-style-guide/src/lib/components/scrollbar/scrollbar.component.ts","../../../projects/monkey-style-guide/src/lib/components/scrollbar/scrollbar.component.html","../../../projects/monkey-style-guide/src/lib/components/scrollbar/index.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-chip.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-chip.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-menu.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-menu.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-menu-item.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-menu-item.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/anchored-menu.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-segment.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-segment.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-trigger.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-trigger.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/flip.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/first-paint.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-bar.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-bar.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-code/input-code.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-code/input-code.component.html","../../../projects/monkey-style-guide/src/lib/components/input-code/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-date-range/input-date-range.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-date-range/index.ts","../../../projects/monkey-style-guide/src/lib/components/select/select.component.ts","../../../projects/monkey-style-guide/src/lib/components/select/select.component.html","../../../projects/monkey-style-guide/src/lib/components/select/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-phone/input-phone.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-phone/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-upload/input-upload.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-upload/index.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/actions.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/content.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/subtitle.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/title.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal-config.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal-ref.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal.component.ts","../../../projects/monkey-style-guide/src/lib/components/modal/utils.ts","../../../projects/monkey-style-guide/src/lib/components/modal/components/confirmation.component.ts","../../../projects/monkey-style-guide/src/lib/components/modal/components/default.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal.module.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal.service.ts","../../../projects/monkey-style-guide/src/lib/components/modal/index.ts","../../../projects/monkey-style-guide/src/lib/components/pass-number/pass-number.component.ts","../../../projects/monkey-style-guide/src/lib/components/pass-number/pass-secret-number.component.ts","../../../projects/monkey-style-guide/src/lib/components/pass-number/index.ts","../../../projects/monkey-style-guide/src/lib/components/radio-button/radio-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/radio-button/radio-button.component.html","../../../projects/monkey-style-guide/src/lib/components/radio-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/security-level/security-level.component.ts","../../../projects/monkey-style-guide/src/lib/components/security-level/security-level.component.html","../../../projects/monkey-style-guide/src/lib/components/security-level/index.ts","../../../projects/monkey-style-guide/src/lib/components/status/status.component.ts","../../../projects/monkey-style-guide/src/lib/components/status/status.component.html","../../../projects/monkey-style-guide/src/lib/components/status/index.ts","../../../projects/monkey-style-guide/src/lib/components/stepper/step/step.component.ts","../../../projects/monkey-style-guide/src/lib/components/stepper/stepper.component.ts","../../../projects/monkey-style-guide/src/lib/components/stepper/stepper.module.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-action/pagination-action.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-action/pagination-action.html","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-label/pagination-label.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-label/pagination-label.html","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-size/pagination-size.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-size/pagination-size.html","../../../projects/monkey-style-guide/src/lib/components/table/table-column.directive.ts","../../../projects/monkey-style-guide/src/lib/components/table/table-core.ts","../../../projects/monkey-style-guide/src/lib/components/table/table-virtual-scroll.ts","../../../projects/monkey-style-guide/src/lib/components/table/table.component.ts","../../../projects/monkey-style-guide/src/lib/components/table/table.component.html","../../../projects/monkey-style-guide/src/lib/components/table/index.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tab-link.directive.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tab.component.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tabs.component.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tabs.module.ts","../../../projects/monkey-style-guide/src/lib/components/toggle/toggle.component.ts","../../../projects/monkey-style-guide/src/lib/components/toggle/toggle.component.html","../../../projects/monkey-style-guide/src/lib/components/toggle/index.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line-button/toggle-line-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line-button/toggle-line-button.component.html","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line.component.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line.component.html","../../../projects/monkey-style-guide/src/lib/components/toggle-line/index.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip/tooltip.component.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip/tooltip.component.html","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip/index.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/index.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile/user-profile.component.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile/index.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile-button/user-profile-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/index.ts","../../../projects/monkey-style-guide/src/lib/directives/badge.ts","../../../projects/monkey-style-guide/src/lib/directives/form.ts","../../../projects/monkey-style-guide/src/public-api.ts","../../../projects/monkey-style-guide/src/monkey-style-guide.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\nconst counters: Record<string, number> = {};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class IdGenerator {\r\n getId(prefix: string): string {\r\n if (!Object.prototype.hasOwnProperty.call(counters, prefix)) {\r\n counters[prefix] = 1;\r\n }\r\n\r\n const currentCount = counters[prefix];\r\n counters[prefix] = currentCount + 1;\r\n\r\n return `${prefix}${currentCount}`;\r\n }\r\n}\r\n","export function getRandomString(len: number, charSet?: string): string {\r\n charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n\r\n return new Array(len)\r\n .fill('1')\r\n .map(() => {\r\n return charSet?.charAt(Math.floor(Math.random() * charSet.length));\r\n })\r\n .join('');\r\n}\r\n\r\nexport const objHaveProperty = (obj: object, property: string): boolean => {\r\n return typeof obj === 'object' && obj !== null && property in obj;\r\n};\r\n\r\nexport function formatFileSize(bytes: number): string {\r\n if (bytes === 0) return '0 Bytes';\r\n\r\n const k = 1024;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n\r\n return `${parseFloat((bytes / k ** i).toFixed(2))} ${sizes[i]}`;\r\n}\r\n\r\nexport function getFileExtension(filename: string) {\r\n const name = filename.toLowerCase();\r\n const lastDotIndex = name.lastIndexOf('.');\r\n return lastDotIndex === -1 ? '' : name.slice(lastDotIndex + 1);\r\n}\r\n\r\nexport function sanitizeString(input: string): string {\r\n return input\r\n .replace(/<script.*?>.*?<\\/script>/gi, '')\r\n .replace(/on\\w+=\"[^\"]*\"/gi, '')\r\n .replace(/on\\w+='[^']*'/gi, '')\r\n .replace(/javascript:/gi, '')\r\n .replace(/<\\/?[^>]+>/gi, '')\r\n .trim();\r\n}\r\n\r\nexport function normalizeStringToSearch(text: string): string {\r\n return text\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n .toLowerCase();\r\n}\r\n\r\nexport function shuffle<T>(array: T[]): T[] {\r\n for (let i = array.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [array[i], array[j]] = [array[j], array[i]];\r\n }\r\n return array;\r\n}\r\n","/* eslint-disable max-len */\r\nimport { Component, input } from '@angular/core';\r\n\r\ntype IconName =\r\n | 'clear'\r\n | 'calendar'\r\n | 'arrowDown'\r\n | 'arrowRight'\r\n | 'check'\r\n | 'minus'\r\n | 'loading'\r\n | 'searchFail'\r\n | 'search'\r\n | 'addPlus'\r\n | 'googleMaps'\r\n | 'location'\r\n | 'edit';\r\n\r\n@Component({\r\n selector: 'util-icon',\r\n template: `\r\n @switch (name()) {\r\n @case ('clear') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\">\r\n <path\r\n d=\"M7.815 7.277a.802.802 0 0 0-.459.349c-.103.167-.123.529-.038.694.028.055.854.906 1.836 1.89L10.939 12l-1.785 1.79c-.982.985-1.808 1.835-1.836 1.89a.926.926 0 0 0-.051.324c0 .494.414.812.922.707.183-.038.266-.114 2.001-1.844L12 13.062l1.81 1.805c1.731 1.725 1.818 1.806 2 1.844.58.12 1.021-.321.901-.901-.038-.182-.119-.269-1.844-2L13.062 12l1.805-1.81c1.73-1.735 1.806-1.818 1.844-2.001.105-.508-.213-.922-.707-.922a.926.926 0 0 0-.324.051c-.055.028-.905.854-1.89 1.836L12 10.939l-1.79-1.785c-.984-.982-1.826-1.803-1.87-1.825a.99.99 0 0 0-.525-.052\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('calendar') {\r\n <svg width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M7.815 1.277a.8.8 0 0 0-.462.354c-.087.139-.094.198-.107.875l-.013.725-1.347.019c-1.236.018-1.371.026-1.646.107A2.807 2.807 0 0 0 2.352 5.26l-.092.32v13.84l.092.32a2.797 2.797 0 0 0 1.908 1.908l.32.092h14.84l.32-.092a2.797 2.797 0 0 0 1.908-1.908l.092-.32V5.58l-.092-.32a2.807 2.807 0 0 0-1.888-1.903c-.276-.081-.41-.089-1.65-.107l-1.35-.019v-.593c0-.757-.042-.96-.238-1.156-.349-.349-.903-.279-1.169.149-.087.139-.094.198-.107.879l-.014.73H8.76l-.001-.61c-.001-.68-.039-.91-.179-1.094-.159-.209-.502-.325-.765-.259M7.246 5.49c.013.681.02.74.107.879.357.574 1.223.443 1.363-.207.024-.113.044-.475.044-.804V4.76h6.472l.014.73c.013.681.02.74.107.879.357.574 1.223.443 1.363-.207.024-.113.044-.475.044-.804V4.76h1.238c1.452 0 1.525.014 1.876.366.352.351.366.424.366 1.876V8.24H3.756l.012-1.31c.012-1.277.014-1.314.104-1.482.155-.29.475-.562.768-.651.055-.016.661-.032 1.346-.034l1.246-.003.014.73m12.994 9.008c0 4.664-.001 4.742-.081 4.956-.109.29-.415.596-.705.705-.215.08-.28.081-7.454.081-7.159 0-7.239-.001-7.453-.081-.245-.091-.544-.363-.679-.615l-.088-.164-.011-4.81-.01-4.81H20.24v4.738M6.7 12.028a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m5 0a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m5 0a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m-10 4a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m5 0a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('arrowDown') {\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M8 10L12 14L16 10\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('arrowRight') {\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M19 12H5\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14 17L19 12\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14 7L19 12\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('check') {\r\n <svg\r\n width=\"12\"\r\n height=\"12\"\r\n viewBox=\"0 0 12 12\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M9.808 2.528 C 9.752 2.542,9.671 2.574,9.628 2.599 C 9.585 2.625,8.414 3.781,7.025 5.168 L 4.500 7.690 3.475 6.667 C 2.865 6.059,2.414 5.624,2.360 5.594 C 2.137 5.467,1.822 5.478,1.603 5.620 C 1.226 5.863,1.141 6.369,1.419 6.715 C 1.558 6.887,4.068 9.375,4.140 9.411 C 4.366 9.525,4.634 9.525,4.860 9.411 C 4.931 9.376,10.438 3.892,10.581 3.715 C 10.688 3.582,10.742 3.425,10.742 3.250 C 10.742 2.758,10.293 2.410,9.808 2.528 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-theme-contrast-500\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('minus') {\r\n <svg width=\"8\" height=\"2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M1.333 0.268 C 1.300 0.274,1.225 0.303,1.167 0.332 C 1.054 0.388,0.939 0.490,0.866 0.599 C 0.776 0.732,0.732 0.936,0.757 1.098 C 0.786 1.283,0.848 1.405,0.977 1.532 C 1.071 1.624,1.148 1.673,1.253 1.710 L 1.340 1.740 4.000 1.740 L 6.660 1.740 6.747 1.710 C 6.943 1.642,7.128 1.462,7.200 1.270 C 7.265 1.095,7.265 0.904,7.200 0.730 C 7.118 0.510,6.880 0.308,6.655 0.267 C 6.565 0.250,1.420 0.251,1.333 0.268\"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-theme-contrast-500\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('loading') {\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <style>\r\n .spinner_ajPY {\r\n transform-origin: center;\r\n animation: spinner_AtaB 0.75s infinite linear;\r\n }\r\n @keyframes spinner_AtaB {\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n </style>\r\n <path\r\n d=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\"\r\n opacity=\".25\"\r\n />\r\n <path\r\n d=\"M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z\"\r\n class=\"spinner_ajPY\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('searchFail') {\r\n <svg width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n clip-rule=\"evenodd\"\r\n d=\"M18.934 11.467v0c0 4.124-3.343 7.467-7.467 7.467v0C7.343 18.934 4 15.591 4 11.467v0C4 7.343 7.343 4 11.467 4v0c4.124 0 7.467 3.343 7.467 7.467Z\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"m20 20-3.25-3.25M13.815 9.11914 9.119 13.8151M13.815 13.8151 9.119 9.11914\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('search') {\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M6.920 1.521 C 4.175 1.717,1.944 3.809,1.558 6.548 C 1.500 6.965,1.500 7.722,1.558 8.120 C 1.945 10.745,3.921 12.721,6.547 13.108 C 6.735 13.136,7.016 13.152,7.333 13.152 C 7.885 13.152,8.225 13.111,8.738 12.985 C 9.504 12.797,10.253 12.439,10.859 11.972 C 10.972 11.885,11.074 11.813,11.085 11.813 C 11.097 11.813,11.677 12.384,12.373 13.082 C 13.070 13.779,13.691 14.381,13.754 14.418 C 14.182 14.673,14.673 14.182,14.418 13.754 C 14.381 13.691,13.779 13.070,13.082 12.373 C 12.384 11.677,11.813 11.097,11.813 11.085 C 11.813 11.074,11.885 10.972,11.972 10.859 C 12.439 10.253,12.797 9.504,12.985 8.738 C 13.111 8.225,13.152 7.885,13.152 7.333 C 13.152 6.782,13.111 6.441,12.985 5.928 C 12.471 3.841,10.826 2.196,8.738 1.681 C 8.150 1.536,7.501 1.479,6.920 1.521 M8.277 2.586 C 10.023 2.962,11.414 4.208,11.943 5.870 C 12.118 6.421,12.145 6.615,12.145 7.333 C 12.145 8.052,12.118 8.246,11.943 8.797 C 11.473 10.272,10.272 11.473,8.797 11.943 C 8.246 12.118,8.052 12.145,7.333 12.145 C 6.615 12.145,6.421 12.118,5.870 11.943 C 4.394 11.473,3.193 10.272,2.724 8.797 C 2.547 8.242,2.521 8.052,2.522 7.333 C 2.522 6.615,2.549 6.419,2.724 5.870 C 3.244 4.236,4.636 2.971,6.320 2.602 C 6.679 2.523,6.858 2.510,7.440 2.520 C 7.898 2.527,8.066 2.540,8.277 2.586 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('addPlus') {\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M11.340 2.281 C 7.073 2.553,3.439 5.660,2.499 9.840 C 2.187 11.227,2.187 12.773,2.499 14.160 C 3.317 17.797,6.203 20.683,9.840 21.501 C 11.233 21.814,12.770 21.813,14.176 21.498 C 17.465 20.759,20.161 18.310,21.244 15.076 C 21.795 13.432,21.887 11.556,21.501 9.840 C 20.683 6.203,17.797 3.317,14.160 2.499 C 13.288 2.303,12.254 2.223,11.340 2.281 M12.961 3.802 C 14.493 3.991,16.079 4.659,17.184 5.581 C 18.160 6.395,18.877 7.297,19.404 8.374 C 19.982 9.557,20.240 10.675,20.240 12.000 C 20.240 12.966,20.126 13.689,19.834 14.584 C 18.848 17.602,16.153 19.804,12.961 20.198 C 12.525 20.252,11.475 20.252,11.039 20.198 C 9.507 20.009,7.921 19.341,6.816 18.419 C 5.826 17.593,5.138 16.728,4.598 15.626 C 4.019 14.448,3.760 13.327,3.760 12.000 C 3.760 10.673,4.019 9.552,4.598 8.374 C 5.044 7.464,5.564 6.750,6.285 6.058 C 7.568 4.824,9.221 4.032,10.984 3.806 C 11.379 3.755,12.563 3.753,12.961 3.802 M11.815 7.277 C 11.638 7.321,11.461 7.456,11.353 7.631 L 11.260 7.780 11.248 9.508 L 11.236 11.236 9.505 11.248 L 7.774 11.260 7.612 11.367 C 7.372 11.526,7.267 11.721,7.267 12.007 C 7.267 12.203,7.286 12.270,7.383 12.408 C 7.447 12.499,7.572 12.610,7.660 12.656 C 7.814 12.737,7.886 12.740,9.528 12.752 L 11.236 12.764 11.248 14.492 L 11.260 16.220 11.353 16.369 C 11.710 16.943,12.576 16.812,12.716 16.162 C 12.744 16.031,12.760 15.374,12.760 14.358 L 12.760 12.760 14.358 12.760 C 15.374 12.760,16.031 12.744,16.162 12.716 C 16.904 12.557,16.924 11.471,16.189 11.286 C 16.064 11.255,15.479 11.240,14.382 11.240 L 12.760 11.240 12.759 9.630 C 12.758 8.669,12.741 7.948,12.717 7.841 C 12.623 7.432,12.215 7.177,11.815 7.277 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('googleMaps') {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n width=\"120\"\r\n height=\"22\"\r\n viewBox=\"0 0 264.6 50.86\"\r\n >\r\n <path\r\n d=\"M9.835 37.67a51.38 51.38 0 0 1 4.007 5.91c1.022 1.938 1.448 3.252 2.195 5.587.458 1.29.872 1.675 1.762 1.675.97 0 1.41-.655 1.75-1.668.706-2.205 1.26-3.888 2.134-5.478 1.715-3.07 3.846-5.798 5.94-8.42.567-.742 4.232-5.065 5.882-8.476 0 0 2.028-3.747 2.028-8.98 0-4.895-2-8.29-2-8.29l-5.758 1.542-3.497 9.21-.865 1.27-.173.23-.23.288-.404.46-.577.577-3.114 2.537-7.785 4.495z\"\r\n fill=\"#34a853\"\r\n />\r\n <path\r\n d=\"M1.8 26.17c1.9 4.34 5.564 8.155 8.043 11.503L23.01 22.076s-1.855 2.426-5.22 2.426c-3.748 0-6.776-2.993-6.776-6.767 0-2.588 1.557-4.366 1.557-4.366l-8.938 2.395z\"\r\n fill=\"#fbbc04\"\r\n />\r\n <path\r\n d=\"M23.157.792c4.373 1.41 8.116 4.37 10.38 8.735l-10.523 12.54s1.557-1.81 1.557-4.382c0-3.862-3.252-6.747-6.765-6.747-3.322 0-5.23 2.422-5.23 2.422v-7.9z\"\r\n fill=\"#4285f4\"\r\n />\r\n <path\r\n d=\"M4.212 6.333C6.824 3.208 11.42-.01 17.756-.01c3.074 0 5.39.807 5.39.807l-10.58 12.57H5.07z\"\r\n fill=\"#1a73e8\"\r\n />\r\n <path\r\n d=\"M1.8 26.17S.052 22.747.052 17.788c0-4.687 1.822-8.784 4.16-11.455l8.36 7.035z\"\r\n fill=\"#ea4335\"\r\n />\r\n <g fill=\"#767676\">\r\n <path\r\n d=\"M181.68 41.235V14.508h3.434l9.295 16.275h.15l9.295-16.275h3.434v26.727h-3.434V25.37l.15-4.48h-.15l-8.36 14.67h-2.015l-8.36-14.67h-.15l.15 4.48v15.864zm35.648.56c-1.94 0-3.565-.56-4.87-1.68s-1.96-2.6-1.96-4.442c0-2 .77-3.552 2.314-4.685s3.446-1.698 5.7-1.698c2.016 0 3.67.373 4.965 1.12v-.523c0-1.344-.46-2.42-1.38-3.228s-2.053-1.213-3.398-1.213c-.995 0-1.896.236-2.705.7s-1.362 1.12-1.66 1.94l-3.136-1.343c.423-1.095 1.257-2.1 2.5-3.042s2.886-1.4 4.927-1.4c2.34 0 4.28.685 5.823 2.053s2.314 3.298 2.314 5.787V41.2h-3.284v-2.54h-.15c-1.37 2.1-3.373 3.135-6 3.135zm.56-3.135c1.418 0 2.705-.53 3.863-1.586s1.736-2.3 1.736-3.75c-.97-.797-2.426-1.195-4.367-1.195-1.668 0-2.925.36-3.77 1.083s-1.27 1.568-1.27 2.538c0 .896.386 1.605 1.157 2.128s1.655.784 2.65.784zm21.742 3.135c-1.393 0-2.644-.3-3.75-.896s-1.935-1.344-2.48-2.24h-.15l.15 2.538v8.063h-3.434V22.908h3.286v2.538h.15c.547-.896 1.374-1.642 2.48-2.24s2.358-.896 3.75-.896c2.364 0 4.405.933 6.122 2.8s2.576 4.18 2.576 6.943-.86 5.077-2.576 6.943-3.758 2.8-6.122 2.8zm-.56-3.135c1.593 0 2.96-.604 4.106-1.8s1.717-2.806 1.717-4.797-.572-3.6-1.717-4.797-2.514-1.8-4.106-1.8c-1.617 0-2.993.597-4.125 1.792s-1.697 2.8-1.697 4.815.566 3.62 1.697 4.815 2.507 1.792 4.125 1.792zm18.385 3.135c-2.04 0-3.726-.498-5.058-1.493s-2.3-2.24-2.93-3.733l3.06-1.27c.97 2.3 2.626 3.433 4.966 3.433 1.07 0 1.948-.236 2.632-.7s1.027-1.095 1.027-1.866c0-1.194-.834-2.004-2.502-2.426l-3.695-.895c-1.17-.298-2.277-.865-3.322-1.698s-1.568-1.96-1.568-3.377c0-1.617.715-2.93 2.146-3.94s3.13-1.512 5.095-1.512c1.617 0 3.06.367 4.33 1.1a6.21 6.21 0 0 1 2.725 3.154l-2.987 1.232c-.67-1.617-2.065-2.426-4.18-2.426-1.02 0-1.88.212-2.575.634s-1.045.996-1.045 1.718c0 1.045.8 1.754 2.426 2.128l3.62.858c1.717.398 2.986 1.083 3.807 2.053s1.232 2.066 1.232 3.286c0 1.642-.672 3-2.016 4.106s-3.073 1.642-5.2 1.642zM79.916 25.3H65.83v4.18h10c-.493 5.86-5.37 8.36-9.973 8.36a10.98 10.98 0 0 1-11.029-11.128c0-6.327 4.898-11.2 11.04-11.2 4.74 0 7.53 3.022 7.53 3.022l2.927-3.03s-3.757-4.18-10.607-4.18c-8.723 0-15.473 7.363-15.473 15.316 0 7.792 6.35 15.393 15.696 15.393 8.22 0 14.24-5.632 14.24-13.96 0-1.756-.255-2.772-.255-2.772z\"\r\n />\r\n <use xlink:href=\"#B\" />\r\n <use xlink:href=\"#B\" x=\"21.476\" />\r\n <path\r\n d=\"M134.102 22.327c-5.305 0-9.476 4.647-9.476 9.862 0 5.94 4.834 9.88 9.383 9.88 2.813 0 4.308-1.117 5.414-2.4v1.946c0 3.405-2.068 5.445-5.2 5.445-3.015 0-4.526-2.242-5.052-3.514l-3.793 1.586c1.346 2.845 4.054 5.813 8.878 5.813 5.275 0 9.296-3.322 9.296-10.3v-17.73h-4.138v1.672c-1.272-1.37-3.012-2.265-5.32-2.265zm.384 3.87c2.602 0 5.272 2.22 5.272 6.013 0 3.856-2.665 5.98-5.33 5.98-2.828 0-5.46-2.296-5.46-5.944 0-3.8 2.732-6.05 5.518-6.05zm27.534-3.87c-5.004 0-9.207 3.98-9.207 9.857 0 6.216 4.683 9.904 9.687 9.904 4.176 0 6.74-2.285 8.268-4.332l-3.4-2.27c-.885 1.374-2.366 2.718-4.835 2.718-2.775 0-4.05-1.52-4.84-2.992l13.234-5.5-.687-1.6c-1.28-3.152-4.262-5.784-8.2-5.784zm.172 3.796c1.804 0 3.1.96 3.653 2.108l-8.838 3.694c-.38-2.86 2.328-5.802 5.186-5.802zm-15.7 15.377h4.346V12.4h-4.346z\"\r\n />\r\n </g>\r\n <defs>\r\n <path\r\n id=\"B\"\r\n d=\"M91.48 22.327c-5.78 0-9.922 4.518-9.922 9.788 0 5.348 4.018 9.95 10 9.95 5.407 0 9.836-4.132 9.836-9.836 0-6.537-5.153-9.904-9.904-9.904zm.057 3.877c2.843 0 5.536 2.298 5.536 6 0 3.624-2.683 5.99-5.55 5.99-3.15 0-5.635-2.523-5.635-6.017 0-3.418 2.455-5.972 5.648-5.972z\"\r\n />\r\n </defs>\r\n </svg>\r\n }\r\n\r\n @case ('location') {\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"var(--mecx-color-gray-900)\">\r\n <path\r\n d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7m0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('edit') {\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M5.293 15.619L15.619 5.29299C16.009 4.90299 16.642 4.90299 17.032 5.29299L18.708 6.96899C19.098 7.35899 19.098 7.99199 18.708 8.38199L8.381 18.707C8.194 18.895 7.94 19 7.675 19H5V16.325C5 16.06 5.105 15.806 5.293 15.619Z\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M13.75 7.16016L16.84 10.2502\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n }\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: flex;\r\n background-color: transparent;\r\n }\r\n `\r\n ]\r\n})\r\nexport class UtilIconComponent {\r\n name = input.required<IconName | string>();\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { booleanAttribute, Component, inject, Input, TemplateRef } from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-accordion',\r\n imports: [CommonModule, UtilIconComponent],\r\n templateUrl: './accordion.component.html',\r\n styleUrl: './accordion.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-accordion',\r\n '[class.disabled]': 'disabled',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n },\r\n animations: [\r\n trigger('content', [\r\n state(\r\n 'void',\r\n style({\r\n height: '0px'\r\n })\r\n ),\r\n transition(':enter', [\r\n animate(\r\n '300ms ease-in-out',\r\n style({\r\n height: '*'\r\n })\r\n )\r\n ]),\r\n transition(':leave', [\r\n animate(\r\n '300ms ease-in-out',\r\n style({\r\n height: '0px'\r\n })\r\n )\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class MonkeyAccordionComponent {\r\n @Input({ transform: booleanAttribute }) open = false;\r\n\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n @Input() set title(data: string | TemplateRef<any>) {\r\n if (data instanceof TemplateRef) {\r\n this.titleRef = data;\r\n } else {\r\n this.titleStr = data;\r\n }\r\n }\r\n\r\n titleStr: string | undefined;\r\n\r\n titleRef: TemplateRef<any> | undefined;\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-accordion-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n onClick() {\r\n if (this.disabled) return;\r\n this.open = !this.open;\r\n }\r\n}\r\n","<div class=\"header\" (click)=\"onClick()\">\r\n <div class=\"title\">\r\n @if (titleRef) {\r\n <ng-container *ngTemplateOutlet=\"titleRef\" />\r\n } @else {\r\n {{ titleStr }}\r\n }\r\n </div>\r\n <util-icon class=\"icon\" name=\"arrowDown\" [class.rotated]=\"open\" />\r\n</div>\r\n<div class=\"content-wrapper\">\r\n @if (open) {\r\n <div [@content]>\r\n <div class=\"content\">\r\n <ng-content />\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './accordion.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, HostBinding, inject, Input, input, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-action-bar',\r\n styleUrl: './action-bar.component.scss',\r\n template: `@if (open()) {\r\n @if (label(); as lb) {\r\n <span style=\"font-size: 13px\" data-testid=\"label\">\r\n {{ lb }}\r\n </span>\r\n }\r\n\r\n <ng-content></ng-content>\r\n }`,\r\n host: {\r\n 'data-testid': 'monkey-action-bar',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class.open]': 'open()'\r\n }\r\n})\r\nexport class MonkeyActionBarComponent {\r\n @HostBinding('class')\r\n get classes() {\r\n return this.position();\r\n }\r\n\r\n label = input<string>();\r\n\r\n position = input<string>();\r\n\r\n open = input<boolean>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-action-bar-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './action-bar.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n inject,\r\n Input,\r\n input,\r\n InputSignal,\r\n output,\r\n OutputEmitterRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { type MonkeyAlertType } from '../../interfaces';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-alert',\r\n styleUrl: './alert.component.scss',\r\n templateUrl: './alert.component.html',\r\n host: {\r\n 'data-testid': 'monkey-alert',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyAlertComponent {\r\n buttonLabel: InputSignal<string> = input('');\r\n\r\n message: InputSignal<string> = input.required<string>();\r\n\r\n title: InputSignal<string> = input.required<string>();\r\n\r\n type: InputSignal<MonkeyAlertType> = input.required<MonkeyAlertType>();\r\n\r\n onButtonClicked: OutputEmitterRef<void> = output<void>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-alert-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n icon(type: MonkeyAlertType): string {\r\n const typeIcons = {\r\n alert: 'warning-outline',\r\n default: 'info',\r\n error: 'error-outline',\r\n info: 'info',\r\n success: 'checkmark-big-circle'\r\n };\r\n\r\n return typeIcons[type];\r\n }\r\n}\r\n","<div [class]=\"'monkey-alert__card ' + type()\">\r\n @if (type()) {\r\n <i class=\"mk-i mk-i-{{icon(type())}} {{'monkey-alert__card__type-' + type()}}\"></i>\r\n }\r\n <div class=\"monkey-alert__card__content\">\r\n <h4 class=\"monkey-alert__card__title\">{{ title() }}</h4>\r\n <h5 class=\"monkey-alert__card__message\">{{ message() }}</h5>\r\n @if (buttonLabel()) {\r\n <div>\r\n <a\r\n href=\"javascript:void(0)\"\r\n class=\"mecx-link fw-medium fs-base\"\r\n (click)=\"onButtonClicked.emit()\"\r\n >\r\n <span>{{ buttonLabel() }}</span>\r\n </a>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './alert.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { inject, InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport const MECX_I18N_WRAPPER = new InjectionToken<BehaviorSubject<string>>('');\r\nexport const MECX_POPOVER_OPTIONS = new InjectionToken('MECX_POPOVER_OPTIONS');\r\nexport const MECX_COUNTRY_ISO_CODE = new InjectionToken<string>('BR');\r\nexport const MECX_GOOGLE_API_KEY = new InjectionToken<string>('');\r\n\r\nexport function injectTokenWithWarning<T>(token: InjectionToken<T>, name?: string): T | null {\r\n const value = inject(token, { optional: true });\r\n if (!value) {\r\n // eslint-disable-next-line no-console\r\n console.error(`MECXInjectors -> Token \"${name || token.toString()}\" is not provided.`);\r\n }\r\n return value;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ConnectedPosition,\r\n FlexibleConnectedPositionStrategy,\r\n FlexibleConnectedPositionStrategyOrigin,\r\n Overlay,\r\n OverlayPositionBuilder,\r\n OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n booleanAttribute,\r\n Component,\r\n ComponentRef,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n inject,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { filter } from 'rxjs';\r\nimport { UtilIconComponent } from '../../utils';\r\nimport { MonkeyPopoverDir, MonkeyPopoverOptions } from '../interfaces';\r\nimport { MECX_POPOVER_OPTIONS } from '../tokens';\r\n\r\n@Component({\r\n selector: 'monkey-popover-content',\r\n imports: [CommonModule, NgTemplateOutlet, UtilIconComponent],\r\n template: `\r\n <div class=\"mecx-popover-container\">\r\n @if (!hideHeader) {\r\n <div class=\"mecx-popover-header\">\r\n @if (title) {\r\n <div>\r\n @if (isTemplate(title)) {\r\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\r\n } @else {\r\n {{ title }}\r\n }\r\n </div>\r\n }\r\n\r\n @if (!hideClose) {\r\n <util-icon class=\"mecx-popover-close\" name=\"clear\" (click)=\"onClose.next(null)\" />\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"mecx-popover-content\" [class.add-radius]=\"hideHeader\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </div>\r\n\r\n @if (!hideActions) {\r\n @if (actions) {\r\n <div class=\"mecx-popover-actions\">\r\n @if (isTemplate(actions)) {\r\n <ng-container *ngTemplateOutlet=\"actions\"></ng-container>\r\n } @else {\r\n <span>{{ actions }}</span>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n `\r\n})\r\nexport class MonkeyPopoverContentComponent implements AfterViewInit {\r\n @Input() title?: string | TemplateRef<any>;\r\n\r\n @Input() content!: TemplateRef<any>;\r\n\r\n @Input() actions?: string | TemplateRef<any>;\r\n\r\n @Output() onClose = new EventEmitter();\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideHeader!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideClose!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideActions!: boolean;\r\n\r\n @Input()\r\n enableAutofocus = false;\r\n\r\n constructor(private host: ElementRef<HTMLElement>) {\r\n // not to do\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.enableAutofocus) {\r\n setTimeout(() => {\r\n const focusable = this.host.nativeElement.querySelector<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n focusable?.focus();\r\n });\r\n }\r\n }\r\n\r\n isTemplate(value: unknown): value is TemplateRef<any> {\r\n return value instanceof TemplateRef;\r\n }\r\n}\r\n\r\ntype HorizontalPosition = 'start' | 'center' | 'end';\r\ntype VerticalPosition = 'top' | 'center' | 'bottom';\r\n\r\n@Directive({\r\n selector: '[monkeyPopover]'\r\n})\r\nexport class MonkeyPopoverDirective implements OnDestroy {\r\n private readonly _tpl = inject(TemplateRef);\r\n\r\n private readonly _vcr = inject(ViewContainerRef);\r\n\r\n private readonly _el = inject(ElementRef);\r\n\r\n private readonly _zone = inject(NgZone);\r\n\r\n private readonly _overlay = inject(Overlay);\r\n\r\n private readonly _overlayPositionBuilder = inject(OverlayPositionBuilder);\r\n\r\n private readonly _router = inject(Router);\r\n\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n @Optional() @Inject(MECX_POPOVER_OPTIONS) private readonly _options?: MonkeyPopoverOptions;\r\n\r\n private _overlayRef?: OverlayRef;\r\n\r\n private _componentRef?: ComponentRef<MonkeyPopoverContentComponent>;\r\n\r\n private _positionStrategy?: FlexibleConnectedPositionStrategy;\r\n\r\n private _resizeObserver?: ResizeObserver;\r\n\r\n private _show = false;\r\n\r\n @Input('monkeyPopover')\r\n set popover(show: boolean) {\r\n if (this._show === show) {\r\n return;\r\n }\r\n this._show = show;\r\n if (show) {\r\n setTimeout(() => {\r\n this.createPopover();\r\n }, 0);\r\n } else {\r\n this.disposePopover();\r\n }\r\n }\r\n\r\n get popover(): boolean {\r\n return this._show;\r\n }\r\n\r\n @Input('monkeyPopoverClosed')\r\n closed?: (e?: MouseEvent) => void;\r\n\r\n private _target?: HTMLElement;\r\n\r\n @Input('monkeyPopoverTarget')\r\n set target(value: any | undefined) {\r\n this._target = value;\r\n }\r\n\r\n get target(): HTMLElement | undefined {\r\n return this._target;\r\n }\r\n\r\n @Input('monkeyPopoverMinwidth')\r\n minwidth = false;\r\n\r\n @Input('monkeyPopoverBackdrop')\r\n backdrop = true;\r\n\r\n @Input('monkeyPopoverWatch')\r\n watch = false;\r\n\r\n @Input('monkeyPopoverDir')\r\n dir: MonkeyPopoverDir = 'ltr';\r\n\r\n @Input('monkeyPopoverContextmenu')\r\n contextmenu = false;\r\n\r\n @Input('monkeyPopoverHeight')\r\n height?: number | string;\r\n\r\n @Input('monkeyPopoverTitle') title?: string | TemplateRef<unknown>;\r\n\r\n @Input('monkeyPopoverActions') actions?: string | TemplateRef<unknown>;\r\n\r\n @Input({ alias: 'monkeyPopoverHideClose', transform: booleanAttribute })\r\n hideClose!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverHideHeader', transform: booleanAttribute })\r\n hideHeader!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverHideActions', transform: booleanAttribute })\r\n hideActions!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverEnableAutofocus', transform: booleanAttribute })\r\n enableAutofocus!: boolean;\r\n\r\n constructor() {\r\n this._router.events\r\n .pipe(\r\n filter((event): event is NavigationStart => {\r\n return event instanceof NavigationStart;\r\n }),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe(() => {\r\n this.closePopover();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.disposePopover();\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n private closePopover(event?: MouseEvent): void {\r\n if (this._show) {\r\n this._show = false;\r\n this.disposePopover();\r\n this._zone.run(() => {\r\n this.closed?.(event);\r\n });\r\n }\r\n }\r\n\r\n private disposePopover(): void {\r\n this._resizeObserver?.disconnect();\r\n this._resizeObserver = undefined;\r\n\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = undefined;\r\n }\r\n }\r\n\r\n private getPositions(dir: MonkeyPopoverDir): ConnectedPosition[] {\r\n const oppositeVertical: Record<VerticalPosition, VerticalPosition> = {\r\n top: 'bottom',\r\n bottom: 'top',\r\n center: 'center'\r\n };\r\n\r\n const oppositeHorizontal: Record<HorizontalPosition, HorizontalPosition> = {\r\n start: 'end',\r\n end: 'start',\r\n center: 'center'\r\n };\r\n\r\n const centerY = (pos: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: 'center',\r\n originY: pos,\r\n overlayX: 'center',\r\n overlayY: oppositeVertical[pos]\r\n };\r\n };\r\n\r\n const centerX = (pos: HorizontalPosition): ConnectedPosition => {\r\n return {\r\n originX: oppositeHorizontal[pos],\r\n originY: 'center',\r\n overlayX: pos,\r\n overlayY: 'center'\r\n };\r\n };\r\n\r\n const ltr = (axis: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: 'start',\r\n originY: axis,\r\n overlayX: 'start',\r\n overlayY: oppositeVertical[axis]\r\n };\r\n };\r\n\r\n const rtl = (axis: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: 'end',\r\n originY: axis,\r\n overlayX: 'end',\r\n overlayY: oppositeVertical[axis]\r\n };\r\n };\r\n\r\n const side = (axisX: HorizontalPosition, axisY: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: axisX,\r\n originY: axisY,\r\n overlayX: oppositeHorizontal[axisX],\r\n overlayY: axisY\r\n };\r\n };\r\n\r\n const cmp = dir ?? this._options?.dir ?? this.dir;\r\n\r\n switch (cmp) {\r\n case 'ct':\r\n return [centerY('top'), centerY('bottom'), centerX('start'), centerX('end')];\r\n case 'cr':\r\n return [centerX('end'), centerX('start'), centerY('top'), centerY('bottom')];\r\n case 'cc':\r\n return [centerX('center')];\r\n case 'ltr':\r\n return [ltr('bottom'), ltr('top')];\r\n case 'rtl':\r\n return [rtl('bottom'), rtl('top')];\r\n case 'tltr':\r\n return [ltr('top'), ltr('bottom')];\r\n case 'trtl':\r\n return [rtl('top'), rtl('bottom')];\r\n case 'rt':\r\n return [side('end', 'top'), side('end', 'bottom'), ltr('top')];\r\n case 'rb':\r\n return [side('end', 'bottom'), side('end', 'top'), ltr('bottom'), rtl('bottom')];\r\n case 'lt':\r\n return [side('start', 'top'), side('start', 'bottom'), rtl('top')];\r\n case 'lb':\r\n return [side('start', 'bottom'), side('start', 'top'), rtl('bottom')];\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n private createPopover(\r\n origin?: FlexibleConnectedPositionStrategyOrigin,\r\n options?: MonkeyPopoverOptions\r\n ): void {\r\n if (!this.target) {\r\n // eslint-disable-next-line no-console\r\n console.error('MonkeyPopoverDirective -> target element is not defined.');\r\n return;\r\n }\r\n\r\n const originEl =\r\n this.target instanceof HTMLElement ? this.target : (this.target as any).element;\r\n\r\n this._positionStrategy = this._overlayPositionBuilder\r\n .flexibleConnectedTo(origin ?? originEl)\r\n .withPush(true)\r\n .withGrowAfterOpen(true)\r\n .withPositions(this.getPositions(options?.dir!));\r\n\r\n this._overlayRef = this._overlay.create({\r\n positionStrategy: this._positionStrategy,\r\n disposeOnNavigation: true,\r\n direction: 'ltr',\r\n hasBackdrop: this.backdrop,\r\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n width: this._options?.minwidth || this.minwidth ? this.target.offsetWidth - 2 : undefined,\r\n maxHeight: '95%',\r\n height: this.height\r\n });\r\n\r\n this._overlayRef\r\n .backdropClick()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((event) => {\r\n this.closePopover(event);\r\n });\r\n\r\n const portal = new ComponentPortal(MonkeyPopoverContentComponent, this._vcr);\r\n\r\n this._componentRef = this._overlayRef.attach(portal);\r\n this._componentRef.instance.content = this._tpl;\r\n this._componentRef.instance.title = this.title as any;\r\n this._componentRef.instance.actions = this.actions as any;\r\n this._componentRef.instance.hideClose = this.hideClose;\r\n this._componentRef.instance.hideHeader = this.hideHeader;\r\n this._componentRef.instance.hideActions = this.hideActions;\r\n this._componentRef.instance.enableAutofocus = this.enableAutofocus;\r\n\r\n if (!this.hideClose || !this.hideHeader) {\r\n this._componentRef.instance.onClose\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this.closePopover();\r\n });\r\n }\r\n\r\n if (this.watch && 'ResizeObserver' in window) {\r\n this._resizeObserver = new ResizeObserver(() => {\r\n this._overlayRef?.updatePosition();\r\n });\r\n\r\n this._resizeObserver.observe(this._componentRef.location.nativeElement);\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { map, of } from 'rxjs';\r\nimport {\r\n GoogleApiPlaces,\r\n GoogleApiPlacesAddressComponents,\r\n GoogleApiPlacesResponse\r\n} from '../interfaces';\r\nimport { injectTokenWithWarning, MECX_GOOGLE_API_KEY } from '../tokens';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MonkeyEcxAddressService {\r\n private readonly _http = inject(HttpClient);\r\n\r\n private readonly _googleApiKey = injectTokenWithWarning(\r\n MECX_GOOGLE_API_KEY,\r\n 'MECX_GOOGLE_API_KEY'\r\n )!;\r\n\r\n private mappingData(places: GoogleApiPlaces[]) {\r\n const getComponent = (\r\n components: GoogleApiPlacesAddressComponents[],\r\n type:\r\n | 'street_number'\r\n | 'route'\r\n | 'sublocality_level_1'\r\n | 'sublocality'\r\n | 'political'\r\n | 'administrative_area_level_1'\r\n | 'administrative_area_level_2'\r\n | 'country'\r\n | 'postal_code',\r\n field = 'longText'\r\n ) => {\r\n const result = components.find((c) => {\r\n return c.types.includes(type);\r\n });\r\n\r\n return result?.[field] || '';\r\n };\r\n\r\n return places.map((_: GoogleApiPlaces) => {\r\n const { addressComponents } = _;\r\n\r\n const address = getComponent(addressComponents!, 'route');\r\n const addressNumber = getComponent(addressComponents!, 'street_number');\r\n const neighborhood = getComponent(addressComponents!, 'sublocality_level_1');\r\n const city = getComponent(addressComponents!, 'administrative_area_level_2');\r\n const state = getComponent(addressComponents!, 'administrative_area_level_1');\r\n const country = getComponent(addressComponents!, 'country', 'shortText');\r\n const zipCode = getComponent(addressComponents!, 'postal_code');\r\n\r\n return {\r\n formattedAddress: _.formattedAddress,\r\n adrFormatAddress: _.adrFormatAddress,\r\n address,\r\n addressNumber,\r\n neighborhood,\r\n city,\r\n state,\r\n country,\r\n zipCode\r\n };\r\n });\r\n }\r\n\r\n get(textQuery: string) {\r\n if (!textQuery) {\r\n return of([]);\r\n }\r\n\r\n return this._http\r\n .post<any>(\r\n 'https://places.googleapis.com/v1/places:searchText',\r\n {\r\n textQuery\r\n },\r\n {\r\n headers: {\r\n 'X-Goog-Api-Key': this._googleApiKey,\r\n 'X-Goog-FieldMask':\r\n 'places.formattedAddress,places.addressComponents,places.displayName,places.adrFormatAddress'\r\n }\r\n }\r\n )\r\n .pipe(\r\n map((resp: GoogleApiPlacesResponse) => {\r\n return this.mappingData(resp.places);\r\n })\r\n );\r\n }\r\n}\r\n","/* eslint-disable no-console */\r\n/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { DestroyRef, inject, Injectable, LOCALE_ID } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { BehaviorSubject, map } from 'rxjs';\r\nimport { MECX_I18N_WRAPPER } from '../tokens';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MonkeyDictionaryService {\r\n private _localeId = inject(LOCALE_ID);\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _data$ = new BehaviorSubject<Record<string, Record<string, any>>>({\r\n 'pt-BR': {\r\n EDIT: 'Editar',\r\n 'NO-RESULTS': 'Nenhum resultado encontrado',\r\n 'NO-DATA': 'Sem dados',\r\n 'NO-DATA-ADDRESS': 'Nenhum endereço encontrado com esta pesquisa',\r\n 'NOT-PROVIDED': 'Não informado',\r\n LOADING: 'Carregando...',\r\n // `{label}`, `{position}` and `{total}` are filled in by the table.\r\n TABLE: {\r\n EMPTY: 'Nenhum resultado.',\r\n SORT: {\r\n 'TEXT-ASC': 'Ordenar de A a Z',\r\n 'TEXT-DESC': 'Ordenar de Z a A',\r\n 'NUMBER-ASC': 'Menor para maior',\r\n 'NUMBER-DESC': 'Maior para menor',\r\n 'DATE-ASC': 'Mais antigo',\r\n 'DATE-DESC': 'Mais recente'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Mover esquerda',\r\n 'MOVE-RIGHT': 'Mover direita',\r\n HIDE: 'Remover visualização',\r\n PIN: 'Fixar coluna',\r\n UNPIN: 'Desfixar coluna'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Selecionar todas as linhas desta página',\r\n SELECT: 'Selecionar {label}',\r\n EXPAND: 'Expandir {label}',\r\n COLLAPSE: 'Recolher {label}',\r\n DETAIL: 'Detalhe',\r\n LIMIT: 'Limite de {max} selecionados atingido',\r\n 'NOT-SELECTABLE': 'Esta linha não pode ser selecionada'\r\n }\r\n },\r\n 'FILTER-BAR': {\r\n ADD: 'Filtro',\r\n 'ADD-ARIA': 'Adicionar filtro',\r\n REMOVE: 'Remover filtro',\r\n CLEAR: 'Limpar filtros',\r\n SEARCH: 'Buscar filtro',\r\n 'SELECT-CONDITION': 'Selecione condição',\r\n SELECT: 'Selecione',\r\n CONFIRM: 'Confirmar',\r\n 'RANGE-FROM': 'Valor inicial',\r\n 'RANGE-TO': 'Valor final',\r\n SELECTED: '{count} selecionados',\r\n DATE: {\r\n 'WEEK-AFTER': '1 semana a partir de hoje',\r\n 'MONTH-AFTER': '1 mês a partir de hoje',\r\n 'QUARTER-AFTER': '3 meses a partir de hoje',\r\n 'WEEK-BEFORE': '1 semana antes de hoje',\r\n 'MONTH-BEFORE': '1 mês antes de hoje',\r\n 'QUARTER-BEFORE': '3 meses antes de hoje',\r\n CUSTOM: 'Personalizado'\r\n },\r\n OPERATOR: {\r\n EQ: 'É igual',\r\n NEQ: 'Não é igual',\r\n LIKE: 'Contém',\r\n NOT_LIKE: 'Não contém',\r\n STARTS_WITH: 'Começa com',\r\n ENDS_WITH: 'Termina com',\r\n IS_EMPTY: 'Vazio',\r\n BETWEEN: 'Entre',\r\n GT: 'Maior que',\r\n LT: 'Menor que',\r\n BEFORE: 'Antes de',\r\n AFTER: 'Depois de'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Data de início',\r\n 'END-DATE': 'Data de término',\r\n INVALID: 'Intervalo de datas inválido',\r\n ACTIONS: {\r\n CANCEL: 'Cancelar',\r\n APPLY: 'Aplicar'\r\n },\r\n 'WEEK-DAYS': ['Dom.', '2ª', '3ª', '4ª', '5ª', '6ª', 'Sab.'],\r\n MONTHS: {\r\n 0: 'Janeiro',\r\n 1: 'Fevereiro',\r\n 2: 'Março',\r\n 3: 'Abril',\r\n 4: 'Maio',\r\n 5: 'Junho',\r\n 6: 'Julho',\r\n 7: 'Agosto',\r\n 8: 'Setembro',\r\n 9: 'Outubro',\r\n 10: 'Novembro',\r\n 11: 'Dezembro'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Customizado',\r\n LAST_30_DAYS: 'Ultimos 30 dias',\r\n LAST_60_DAYS: 'Ultimos 60 dias',\r\n LAST_90_DAYS: 'Ultimos 90 dias',\r\n LAST_6_MONTHS: 'Ultimos 6 meses',\r\n LAST_12_MONTHS: 'Ultimos 12 meses',\r\n NEXT_30_DAYS: 'Próximos 30 dias',\r\n NEXT_60_DAYS: 'Próximos 60 dias',\r\n NEXT_90_DAYS: 'Próximos 90 dias',\r\n NEXT_6_MONTHS: 'Próximos 6 meses',\r\n NEXT_12_MONTHS: 'Próximos 12 meses'\r\n }\r\n },\r\n OR: 'ou'\r\n },\r\n 'es-CL': {\r\n EDIT: 'Editar',\r\n 'NO-RESULTS': 'No se encontraron resultados',\r\n 'NO-DATA': 'Sin datos',\r\n 'NO-DATA-ADDRESS': 'No se encontraron direcciones con esta búsqueda',\r\n 'NOT-PROVIDED': 'No informado',\r\n LOADING: 'Cargando...',\r\n TABLE: {\r\n EMPTY: 'Sin resultados.',\r\n SORT: {\r\n 'TEXT-ASC': 'Ordenar de A a Z',\r\n 'TEXT-DESC': 'Ordenar de Z a A',\r\n 'NUMBER-ASC': 'De menor a mayor',\r\n 'NUMBER-DESC': 'De mayor a menor',\r\n 'DATE-ASC': 'Más antiguo',\r\n 'DATE-DESC': 'Más reciente'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Mover a la izquierda',\r\n 'MOVE-RIGHT': 'Mover a la derecha',\r\n HIDE: 'Quitar de la vista',\r\n PIN: 'Fijar columna',\r\n UNPIN: 'Desfijar columna'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Seleccionar todas las filas de esta página',\r\n SELECT: 'Seleccionar {label}',\r\n EXPAND: 'Expandir {label}',\r\n COLLAPSE: 'Contraer {label}',\r\n DETAIL: 'Detalle',\r\n LIMIT: 'Límite de {max} seleccionados alcanzado',\r\n 'NOT-SELECTABLE': 'Esta fila no se puede seleccionar'\r\n }\r\n },\r\n 'FILTER-BAR': {\r\n ADD: 'Filtro',\r\n 'ADD-ARIA': 'Agregar filtro',\r\n REMOVE: 'Eliminar filtro',\r\n CLEAR: 'Limpiar filtros',\r\n SEARCH: 'Buscar filtro',\r\n 'SELECT-CONDITION': 'Seleccione condición',\r\n SELECT: 'Seleccione',\r\n CONFIRM: 'Confirmar',\r\n 'RANGE-FROM': 'Valor inicial',\r\n 'RANGE-TO': 'Valor final',\r\n SELECTED: '{count} seleccionados',\r\n DATE: {\r\n 'WEEK-AFTER': '1 semana a partir de hoy',\r\n 'MONTH-AFTER': '1 mes a partir de hoy',\r\n 'QUARTER-AFTER': '3 meses a partir de hoy',\r\n 'WEEK-BEFORE': '1 semana antes de hoy',\r\n 'MONTH-BEFORE': '1 mes antes de hoy',\r\n 'QUARTER-BEFORE': '3 meses antes de hoy',\r\n CUSTOM: 'Personalizado'\r\n },\r\n OPERATOR: {\r\n EQ: 'Es igual',\r\n NEQ: 'No es igual',\r\n LIKE: 'Contiene',\r\n NOT_LIKE: 'No contiene',\r\n STARTS_WITH: 'Empieza con',\r\n ENDS_WITH: 'Termina con',\r\n IS_EMPTY: 'Vacío',\r\n BETWEEN: 'Entre',\r\n GT: 'Mayor que',\r\n LT: 'Menor que',\r\n BEFORE: 'Antes de',\r\n AFTER: 'Después de'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Fecha de inicio',\r\n 'END-DATE': 'Fecha de termino',\r\n INVALID: 'Rango de fechas no válido',\r\n ACTIONS: {\r\n CANCEL: 'Cancelar',\r\n APPLY: 'Aplicar'\r\n },\r\n 'WEEK-DAYS': ['Dom.', 'Lun.', 'Mar.', 'Mié.', 'Jue.', 'Vie.', 'Sab.'],\r\n MONTHS: {\r\n 0: 'Enero',\r\n 1: 'Febrero',\r\n 2: 'Marzo',\r\n 3: 'Abril',\r\n 4: 'Mayo',\r\n 5: 'Junio',\r\n 6: 'Julio',\r\n 7: 'Agosto',\r\n 8: 'Septiembre',\r\n 9: 'Octubre',\r\n 10: 'Noviembre',\r\n 11: 'Diciembre'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Personalizado',\r\n LAST_30_DAYS: 'Últimos 30 días',\r\n LAST_60_DAYS: 'Últimos 60 días',\r\n LAST_90_DAYS: 'Últimos 90 días',\r\n LAST_6_MONTHS: 'Últimos 6 meses',\r\n LAST_12_MONTHS: 'Últimos 12 meses',\r\n NEXT_30_DAYS: 'Próximos 30 días',\r\n NEXT_60_DAYS: 'Próximos 60 días',\r\n NEXT_90_DAYS: 'Próximos 90 días',\r\n NEXT_6_MONTHS: 'Próximos 6 meses',\r\n NEXT_12_MONTHS: 'Próximos 12 meses'\r\n }\r\n },\r\n OR: 'o'\r\n },\r\n 'es-MX': {\r\n EDIT: 'Editar',\r\n 'NO-RESULTS': 'No se encontraron resultados',\r\n 'NO-DATA': 'Sin datos',\r\n 'NO-DATA-ADDRESS': 'No se encontraron direcciones con esta búsqueda',\r\n 'NOT-PROVIDED': 'No informado',\r\n LOADING: 'Cargando...',\r\n TABLE: {\r\n EMPTY: 'Sin resultados.',\r\n SORT: {\r\n 'TEXT-ASC': 'Ordenar de A a Z',\r\n 'TEXT-DESC': 'Ordenar de Z a A',\r\n 'NUMBER-ASC': 'De menor a mayor',\r\n 'NUMBER-DESC': 'De mayor a menor',\r\n 'DATE-ASC': 'Más antiguo',\r\n 'DATE-DESC': 'Más reciente'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Mover a la izquierda',\r\n 'MOVE-RIGHT': 'Mover a la derecha',\r\n HIDE: 'Quitar de la vista',\r\n PIN: 'Fijar columna',\r\n UNPIN: 'Desfijar columna'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Seleccionar todas las filas de esta página',\r\n SELECT: 'Seleccionar {label}',\r\n EXPAND: 'Expandir {label}',\r\n COLLAPSE: 'Contraer {label}',\r\n DETAIL: 'Detalle',\r\n LIMIT: 'Límite de {max} seleccionados alcanzado',\r\n 'NOT-SELECTABLE': 'Esta fila no se puede seleccionar'\r\n }\r\n },\r\n 'FILTER-BAR': {\r\n ADD: 'Filtro',\r\n 'ADD-ARIA': 'Agregar filtro',\r\n REMOVE: 'Eliminar filtro',\r\n CLEAR: 'Limpiar filtros',\r\n SEARCH: 'Buscar filtro',\r\n 'SELECT-CONDITION': 'Seleccione condición',\r\n SELECT: 'Seleccione',\r\n CONFIRM: 'Confirmar',\r\n 'RANGE-FROM': 'Valor inicial',\r\n 'RANGE-TO': 'Valor final',\r\n SELECTED: '{count} seleccionados',\r\n DATE: {\r\n 'WEEK-AFTER': '1 semana a partir de hoy',\r\n 'MONTH-AFTER': '1 mes a partir de hoy',\r\n 'QUARTER-AFTER': '3 meses a partir de hoy',\r\n 'WEEK-BEFORE': '1 semana antes de hoy',\r\n 'MONTH-BEFORE': '1 mes antes de hoy',\r\n 'QUARTER-BEFORE': '3 meses antes de hoy',\r\n CUSTOM: 'Personalizado'\r\n },\r\n OPERATOR: {\r\n EQ: 'Es igual',\r\n NEQ: 'No es igual',\r\n LIKE: 'Contiene',\r\n NOT_LIKE: 'No contiene',\r\n STARTS_WITH: 'Empieza con',\r\n ENDS_WITH: 'Termina con',\r\n IS_EMPTY: 'Vacío',\r\n BETWEEN: 'Entre',\r\n GT: 'Mayor que',\r\n LT: 'Menor que',\r\n BEFORE: 'Antes de',\r\n AFTER: 'Después de'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Fecha de inicio',\r\n 'END-DATE': 'Fecha de termino',\r\n INVALID: 'Rango de fechas no válido',\r\n ACTIONS: {\r\n CANCEL: 'Cancelar',\r\n APPLY: 'Aplicar'\r\n },\r\n 'WEEK-DAYS': ['Dom.', 'Lun.', 'Mar.', 'Mié.', 'Jue.', 'Vie.', 'Sab.'],\r\n MONTHS: {\r\n 0: 'Enero',\r\n 1: 'Febrero',\r\n 2: 'Marzo',\r\n 3: 'Abril',\r\n 4: 'Mayo',\r\n 5: 'Junio',\r\n 6: 'Julio',\r\n 7: 'Agosto',\r\n 8: 'Septiembre',\r\n 9: 'Octubre',\r\n 10: 'Noviembre',\r\n 11: 'Diciembre'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Personalizado',\r\n LAST_30_DAYS: 'Últimos 30 días',\r\n LAST_60_DAYS: 'Últimos 60 días',\r\n LAST_90_DAYS: 'Últimos 90 días',\r\n LAST_6_MONTHS: 'Últimos 6 meses',\r\n LAST_12_MONTHS: 'Últimos 12 meses',\r\n NEXT_30_DAYS: 'Próximos 30 días',\r\n NEXT_60_DAYS: 'Próximos 60 días',\r\n NEXT_90_DAYS: 'Próximos 90 días',\r\n NEXT_6_MONTHS: 'Próximos 6 meses',\r\n NEXT_12_MONTHS: 'Próximos 12 meses'\r\n }\r\n },\r\n OR: 'o'\r\n },\r\n 'en-US': {\r\n EDIT: 'Edit',\r\n 'NO-RESULTS': 'No results found',\r\n 'NO-DATA': 'No data',\r\n 'NO-DATA-ADDRESS': 'No address found with this search',\r\n 'NOT-PROVIDED': 'Not provided',\r\n LOADING: 'Loading...',\r\n TABLE: {\r\n EMPTY: 'No results.',\r\n SORT: {\r\n 'TEXT-ASC': 'Sort A to Z',\r\n 'TEXT-DESC': 'Sort Z to A',\r\n 'NUMBER-ASC': 'Lowest to highest',\r\n 'NUMBER-DESC': 'Highest to lowest',\r\n 'DATE-ASC': 'Oldest first',\r\n 'DATE-DESC': 'Newest first'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Move left',\r\n 'MOVE-RIGHT': 'Move right',\r\n HIDE: 'Remove from view',\r\n PIN: 'Pin column',\r\n UNPIN: 'Unpin column'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Select all rows on this page',\r\n SELECT: 'Select {label}',\r\n EXPAND: 'Expand {label}',\r\n COLLAPSE: 'Collapse {label}',\r\n DETAIL: 'Detail',\r\n LIMIT: 'Limit of {max} selected reached',\r\n 'NOT-SELECTABLE': 'This row cannot be selected'\r\n }\r\n },\r\n 'FILTER-BAR': {\r\n ADD: 'Filter',\r\n 'ADD-ARIA': 'Add filter',\r\n REMOVE: 'Remove filter',\r\n CLEAR: 'Clear filters',\r\n SEARCH: 'Search filter',\r\n 'SELECT-CONDITION': 'Select condition',\r\n SELECT: 'Select',\r\n CONFIRM: 'Confirm',\r\n 'RANGE-FROM': 'From',\r\n 'RANGE-TO': 'To',\r\n SELECTED: '{count} selected',\r\n DATE: {\r\n 'WEEK-AFTER': '1 week from today',\r\n 'MONTH-AFTER': '1 month from today',\r\n 'QUARTER-AFTER': '3 months from today',\r\n 'WEEK-BEFORE': '1 week before today',\r\n 'MONTH-BEFORE': '1 month before today',\r\n 'QUARTER-BEFORE': '3 months before today',\r\n CUSTOM: 'Custom'\r\n },\r\n OPERATOR: {\r\n EQ: 'Is equal to',\r\n NEQ: 'Is not equal to',\r\n LIKE: 'Contains',\r\n NOT_LIKE: 'Does not contain',\r\n STARTS_WITH: 'Starts with',\r\n ENDS_WITH: 'Ends with',\r\n IS_EMPTY: 'Is empty',\r\n BETWEEN: 'Between',\r\n GT: 'Greater than',\r\n LT: 'Less than',\r\n BEFORE: 'Before',\r\n AFTER: 'After'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Start date',\r\n 'END-DATE': 'End Date',\r\n INVALID: 'Invalid date range',\r\n ACTIONS: {\r\n CANCEL: 'Cancel',\r\n APPLY: 'Apply'\r\n },\r\n 'WEEK-DAYS': ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.'],\r\n MONTHS: {\r\n 0: 'January',\r\n 1: 'February',\r\n 2: 'March',\r\n 3: 'April',\r\n 4: 'May',\r\n 5: 'June',\r\n 6: 'July',\r\n 7: 'August',\r\n 8: 'September',\r\n 9: 'October',\r\n 10: 'November',\r\n 11: 'December'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Custom',\r\n LAST_30_DAYS: 'Last 30 days',\r\n LAST_60_DAYS: 'Last 60 days',\r\n LAST_90_DAYS: 'Last 90 days',\r\n LAST_6_MONTHS: 'Last 6 months',\r\n LAST_12_MONTHS: 'Last 12 months',\r\n NEXT_30_DAYS: 'Next 30 days',\r\n NEXT_60_DAYS: 'Next 60 days',\r\n NEXT_90_DAYS: 'Next 90 days',\r\n NEXT_6_MONTHS: 'Next 6 months',\r\n NEXT_12_MONTHS: 'Next 12 months'\r\n }\r\n },\r\n OR: 'or'\r\n }\r\n });\r\n\r\n constructor() {\r\n const tokenSubject = inject(MECX_I18N_WRAPPER, { optional: true });\r\n tokenSubject?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((value) => {\r\n this.handleWrapperValues(value);\r\n });\r\n }\r\n\r\n private handleWrapperValues(value: string) {\r\n try {\r\n const locale = this._localeId || 'pt-BR';\r\n const wrappedData = JSON.parse(value);\r\n const currentData = this._data$.value;\r\n\r\n const updated = {\r\n ...currentData,\r\n [locale]: {\r\n ...currentData[locale],\r\n ...wrappedData\r\n }\r\n };\r\n\r\n this._data$.next(updated);\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(`MonkeyDictionaryService - handleWrapperValues -> ${e}`);\r\n }\r\n }\r\n\r\n get(key: string) {\r\n const locale = this._localeId || 'pt-BR';\r\n return this._data$.pipe(\r\n map((data) => {\r\n return data[locale]?.[key] ?? null;\r\n })\r\n );\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { computed, Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MonkeyStepperService {\r\n private _steppers = signal<Map<string, string>>(new Map());\r\n\r\n currentStep(id: string) {\r\n return computed(() => {\r\n return this._steppers().get(id);\r\n });\r\n }\r\n\r\n setCurrentStep(id: string, step: string): void {\r\n this._steppers.update((items) => {\r\n return new Map(items).set(id, step);\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeyButtonColor, MonkeyButtonType } from '../../interfaces/button';\r\nimport { MonkeySize } from '../../interfaces/sizes';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [UtilIconComponent],\r\n selector: 'monkey-button',\r\n standalone: true,\r\n styleUrl: './button.component.scss',\r\n templateUrl: './button.component.html',\r\n host: {\r\n 'data-testid': 'monkey-button',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[attr.tabindex]': 'null'\r\n }\r\n})\r\nexport class MonkeyButtonComponent {\r\n @Input() disabled!: boolean;\r\n\r\n @Input() color: MonkeyButtonColor = 'default';\r\n\r\n @Input() size: MonkeySize = 'md';\r\n\r\n @Input() type: MonkeyButtonType = 'primary';\r\n\r\n @Input() loading!: boolean;\r\n\r\n private readonly elementRef = inject(ElementRef);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-button-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n }\r\n\r\n get element(): HTMLElement {\r\n return this.elementRef.nativeElement;\r\n }\r\n}\r\n","<button class=\"mecx-button {{ type }} {{ size }} {{ color }}\" [disabled]=\"disabled || loading\">\r\n <div class=\"content\">\r\n @if (!loading) {\r\n <ng-content select=\"[first]\"></ng-content>\r\n }\r\n <span><ng-content></ng-content></span>\r\n @if (!loading) {\r\n <ng-content select=\"[last]\"></ng-content>\r\n }\r\n @if (loading) {\r\n <util-icon class=\"mecx-button-loading\" name=\"loading\" />\r\n }\r\n </div>\r\n</button>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n Output,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { type MonkeyToastType } from '../../interfaces';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\n@Component({\r\n selector: 'monkey-toast',\r\n imports: [MonkeyButtonComponent, UtilIconComponent],\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-toast',\r\n '(animationend)': 'onAnimationEnd($event)',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyToastComponent {\r\n @Input() message: string | undefined;\r\n\r\n @Input() icon: string | undefined = 'close-circle';\r\n\r\n @Input() type: MonkeyToastType = 'default';\r\n\r\n @Input({ transform: booleanAttribute }) isClosable: boolean = false;\r\n\r\n @Input() actionLabel: string | undefined;\r\n\r\n @Input() actionIcon: string | undefined;\r\n\r\n @Output() onActionClick = new EventEmitter<string>();\r\n\r\n @Output() onClose = new EventEmitter<string>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-toast-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n return this.type;\r\n }\r\n\r\n constructor(private host: ElementRef<HTMLElement>) {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n close() {\r\n this.host.nativeElement.classList.add('closed');\r\n }\r\n\r\n onAnimationEnd(event: AnimationEvent) {\r\n if (event.animationName.includes('fade-out')) {\r\n this.onClose.emit(this.id);\r\n }\r\n }\r\n}\r\n","<div class=\"monkey-toast-content\">\r\n @if (icon) {\r\n <i class=\"mk-i mk-i-{{icon}} lg\"></i>\r\n }\r\n <div>\r\n <div class=\"monkey-toast-message\">\r\n {{ message }}\r\n </div>\r\n @if (actionLabel) {\r\n <div class=\"monkey-toast-action\">\r\n <monkey-button\r\n class=\"monkey-toast-btn-action\"\r\n type=\"tertiary\"\r\n size=\"sm\"\r\n (click)=\"onActionClick.emit(id)\"\r\n >\r\n {{ actionLabel }}\r\n @if (actionIcon) {\r\n <i class=\"mk-i mk-i-{{actionIcon}} xs\" first></i>\r\n }\r\n </monkey-button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n@if (isClosable) {\r\n <div class=\"monkey-toast-divider\"></div>\r\n <div class=\"monkey-toast-close\" (click)=\"close()\">\r\n <util-icon name=\"clear\" />\r\n </div>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toast.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { ComponentRef } from '@angular/core';\r\n// The toast component by its own path, not through the `../components` barrel:\r\n// reaching for the barrel from outside it makes every component in the library\r\n// a dependency of this file, and that closes a cycle — the barrel loads\r\n// form-field, form-field pulls in the services, and the services land back\r\n// here before form-field has finished exporting its own component.\r\nimport { MonkeyToastComponent } from '../components/toast';\r\n\r\nexport class MonkeyToastRef {\r\n constructor(private readonly componentRef: ComponentRef<MonkeyToastComponent>) {\r\n // not to do\r\n }\r\n\r\n close() {\r\n this.componentRef.instance.close();\r\n }\r\n}\r\n\r\nexport type MonkeyToastPosition =\r\n | 'top-center'\r\n | 'top-left'\r\n | 'top-right'\r\n | 'bottom-center'\r\n | 'bottom-left'\r\n | 'bottom-right';\r\n\r\nexport type MonkeyToastType = 'default' | 'success' | 'error' | 'warning' | 'question';\r\n\r\nexport type ToastConfig = {\r\n type?: MonkeyToastType;\r\n icon?: string;\r\n isClosable?: boolean;\r\n message: string;\r\n position?: MonkeyToastPosition;\r\n duration?: number;\r\n keepOpen?: boolean;\r\n actionLabel?: string;\r\n actionIcon?: string;\r\n action?: () => void;\r\n closeOnAction?: boolean;\r\n};\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './alert';\r\nexport * from './autocomplete';\r\nexport * from './autocomplete-address';\r\nexport * from './breadcrumb';\r\nexport * from './button';\r\nexport * from './popover';\r\nexport * from './sizes';\r\nexport * from './table';\r\nexport * from './toast';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { GlobalPositionStrategy, Overlay } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { getRandomString } from '../../utils';\r\n// The toast component by its own path — see the note in interfaces/toast.ts:\r\n// importing the `../components` barrel from outside it closes a load-order\r\n// cycle through form-field.\r\nimport { MonkeyToastComponent } from '../components/toast';\r\nimport { type MonkeyToastPosition, MonkeyToastRef, type ToastConfig } from '../interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MonkeyToastService {\r\n private lastToast?: MonkeyToastRef;\r\n\r\n private overlay = inject(Overlay);\r\n\r\n private getPositionStrategy(position?: MonkeyToastPosition): GlobalPositionStrategy {\r\n const globalPosition = this.overlay.position().global();\r\n\r\n switch (position) {\r\n case 'top-left':\r\n return globalPosition.top('40px').start('40px');\r\n case 'top-center':\r\n return globalPosition.top('40px').centerHorizontally();\r\n case 'top-right':\r\n return globalPosition.top('40px').end('40px');\r\n case 'bottom-left':\r\n return globalPosition.bottom('40px').start('40px');\r\n case 'bottom-center':\r\n return globalPosition.bottom('40px').centerHorizontally();\r\n default:\r\n return globalPosition.bottom('40px').end('40px');\r\n }\r\n }\r\n\r\n show(toastConfig: ToastConfig) {\r\n if (this.lastToast) {\r\n this.lastToast.close();\r\n }\r\n\r\n const overlayRef = this.overlay.create({\r\n hasBackdrop: false,\r\n positionStrategy: this.getPositionStrategy(toastConfig.position)\r\n });\r\n const portal = new ComponentPortal(MonkeyToastComponent);\r\n const componentRef = overlayRef.attach(portal);\r\n this.lastToast = new MonkeyToastRef(componentRef);\r\n\r\n componentRef.instance.id = getRandomString(6);\r\n componentRef.instance.type = toastConfig.type ?? 'default';\r\n componentRef.instance.icon = toastConfig.icon;\r\n componentRef.instance.isClosable = toastConfig.isClosable ?? false;\r\n componentRef.instance.message = toastConfig.message;\r\n componentRef.instance.actionLabel = toastConfig.actionLabel;\r\n componentRef.instance.actionIcon = toastConfig.actionIcon;\r\n componentRef.instance.onActionClick.subscribe(() => {\r\n if (toastConfig.action) {\r\n toastConfig.action();\r\n\r\n if (toastConfig.closeOnAction ?? true) {\r\n componentRef.instance.close();\r\n }\r\n }\r\n });\r\n\r\n componentRef.instance.onClose.subscribe(() => {\r\n overlayRef.detach();\r\n });\r\n\r\n if (!toastConfig.keepOpen) {\r\n setTimeout(() => {\r\n componentRef.instance.close();\r\n }, toastConfig.duration ?? 4000);\r\n }\r\n\r\n return componentRef.instance;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './address.service';\r\nexport * from './dictionary.service';\r\nexport * from './stepper.service';\r\nexport * from './toast.service';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\nimport { AbstractControlDirective, NgControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Directive()\r\nexport abstract class MonkeyFormFieldControl {\r\n readonly id!: string;\r\n\r\n readonly ngControl!: NgControl | AbstractControlDirective | null;\r\n\r\n readonly disabled!: boolean;\r\n\r\n readonly focused!: boolean;\r\n\r\n readonly stateChanges!: Observable<void>;\r\n\r\n readonly type?: string;\r\n\r\n readonly currency?: boolean;\r\n\r\n readonly percent?: boolean;\r\n\r\n abstract onContainerClick(event: MouseEvent): void;\r\n\r\n abstract onClear?(): void;\r\n\r\n loading?: boolean;\r\n\r\n disableToBeDirty?: boolean;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { computed, Directive, effect, ElementRef, inject, input } from '@angular/core';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { MonkeyDictionaryService } from '../services';\r\n\r\n@Directive({\r\n selector: 'monkey-display'\r\n})\r\nexport class MonkeyDisplayDirective {\r\n private fallbackText = 'Not provided';\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('NOT-PROVIDED');\r\n\r\n displayValue = input.required<string>();\r\n\r\n private displayedText = computed(() => {\r\n const value = this.displayValue();\r\n\r\n if (value === null || value === undefined || value === '') {\r\n return this.fallbackText;\r\n }\r\n\r\n return String(value);\r\n });\r\n\r\n constructor(private el: ElementRef<HTMLElement>) {\r\n effect(async () => {\r\n this.el.nativeElement.innerHTML = this.displayedText();\r\n this.fallbackText = await firstValueFrom(this.i18nDictionary);\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-error'\r\n})\r\nexport class MonkeyErrorDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-helper'\r\n})\r\nexport class MonkeyHelperDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-info'\r\n})\r\nexport class MonkeyInfoDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-label'\r\n})\r\nexport class MonkeyLabelDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-prefix'\r\n})\r\nexport class MonkeyPrefixDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, HostListener, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-suffix',\r\n host: {\r\n '[class.has-action]': 'hasAction'\r\n }\r\n})\r\nexport class MonkeySuffixDirective {\r\n @Input('hasAction')\r\n set _hasAction(value: '') {\r\n this.hasAction = true;\r\n }\r\n\r\n hasAction = false;\r\n\r\n action: Function | null = null;\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: PointerEvent): void {\r\n if (!this.action) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n } else {\r\n this.action(event);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport function getCurrencySymbol(code: string) {\r\n const currency = code || 'BRL';\r\n\r\n const symbol = {\r\n BRL: 'R$',\r\n CLP: '$',\r\n MXN: '$',\r\n USD: '$'\r\n }[currency];\r\n\r\n return symbol;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentChecked,\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Component,\r\n computed,\r\n ContentChild,\r\n ContentChildren,\r\n DEFAULT_CURRENCY_CODE,\r\n DestroyRef,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n Input,\r\n OnDestroy,\r\n output,\r\n QueryList,\r\n signal,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { merge, Subscription } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyDisplayDirective } from '../../directives/display';\r\nimport { MonkeyErrorDirective } from '../../directives/error';\r\nimport { MonkeyHelperDirective } from '../../directives/helper';\r\nimport { MonkeyInfoDirective } from '../../directives/info';\r\nimport { MonkeyLabelDirective } from '../../directives/label';\r\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\r\nimport { MonkeySuffixDirective } from '../../directives/suffix';\r\nimport { MonkeySize } from '../../interfaces';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport { MonkeyFormFieldControl } from './form-field-control';\r\nimport { getCurrencySymbol } from './utils';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-form-field',\r\n exportAs: 'monkeyFormField',\r\n templateUrl: './form-field.component.html',\r\n styleUrl: './form-field.component.scss',\r\n host: {\r\n class: 'mecx-form-field',\r\n '[class.mecx-disabled]': 'control.disabled',\r\n '[class.mecx-form-field-focused]': 'control.focused',\r\n '[class.mecx-form-field-invalid]': 'showInvalid',\r\n '[class.mecx-form-field-borderless]': 'hideBorder()',\r\n '[class.no-footer-space]': 'noFooterSpace',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class]': 'size'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyFormFieldComponent implements AfterContentInit, AfterContentChecked, OnDestroy {\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideAction!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n enableClear!: boolean;\r\n\r\n @Input() size: MonkeySize = 'md';\r\n\r\n @Input({ transform: booleanAttribute }) noFooterSpace = false;\r\n\r\n displayOnly = input<boolean>(false);\r\n\r\n onDisplayOnlyChange = output<boolean>();\r\n\r\n @ContentChild(MonkeyFormFieldControl) private _formFieldControl!: MonkeyFormFieldControl;\r\n\r\n private _displayChild: QueryList<MonkeyDisplayDirective> = ContentChildren(\r\n MonkeyDisplayDirective,\r\n {\r\n descendants: true\r\n }\r\n );\r\n\r\n private _labelChildren: QueryList<MonkeyLabelDirective> = ContentChildren(MonkeyLabelDirective, {\r\n descendants: true\r\n });\r\n\r\n private _helperChildren: QueryList<MonkeyHelperDirective> = ContentChildren(\r\n MonkeyHelperDirective,\r\n {\r\n descendants: true\r\n }\r\n );\r\n\r\n private _prefixChildren: QueryList<MonkeyPrefixDirective> = ContentChildren(\r\n MonkeyPrefixDirective,\r\n {\r\n descendants: true\r\n }\r\n );\r\n\r\n private _suffixChildren: QueryList<MonkeySuffixDirective> = ContentChildren(\r\n MonkeySuffixDirective,\r\n {\r\n descendants: true\r\n }\r\n );\r\n\r\n private _infoChildren: QueryList<MonkeyInfoDirective> = ContentChildren(MonkeyInfoDirective, {\r\n descendants: true\r\n });\r\n\r\n private _errorChildren: QueryList<MonkeyErrorDirective> = ContentChildren(MonkeyErrorDirective, {\r\n descendants: true\r\n });\r\n\r\n public elementRef = inject(ElementRef);\r\n\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n private readonly _idGenerator = inject(IdGenerator);\r\n\r\n private readonly _labelId = this._idGenerator.getId('monkey-label-');\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-form-field-');\r\n\r\n protected _id!: string;\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _isFocused: boolean | null = null;\r\n\r\n private _previousControl: MonkeyFormFieldControl | null = null;\r\n\r\n private _stateChanges: Subscription | undefined;\r\n\r\n private _valueChanges: Subscription | undefined;\r\n\r\n readonly currencySymbol = getCurrencySymbol(inject(DEFAULT_CURRENCY_CODE));\r\n\r\n readonly percentSymbol = '%';\r\n\r\n hasLabel = false;\r\n\r\n hasHelper = false;\r\n\r\n hasPrefix = false;\r\n\r\n hasSuffix = false;\r\n\r\n hasInfo = false;\r\n\r\n hasError = false;\r\n\r\n get control(): MonkeyFormFieldControl {\r\n return this._formFieldControl;\r\n }\r\n\r\n get labelId(): string {\r\n return this._labelId;\r\n }\r\n\r\n hideBorder = computed(() => {\r\n const { control } = this;\r\n return (\r\n control?.type === 'input-code' ||\r\n control?.type === 'radio-button' ||\r\n this.internalDisplayOnly()\r\n );\r\n });\r\n\r\n get showHeader(): boolean {\r\n return this.hasLabel || this.hasHelper;\r\n }\r\n\r\n get showFooter(): boolean {\r\n return this.hasInfo || this.hasError;\r\n }\r\n\r\n get showInvalid(): boolean {\r\n if (this.showLoading) {\r\n return false;\r\n }\r\n const touched = this.control.ngControl?.touched || false;\r\n const invalid = this.control.ngControl?.invalid || false;\r\n return (\r\n this.hasError && !this._isFocused && touched && invalid && !this.control.disableToBeDirty\r\n );\r\n }\r\n\r\n showClear = computed(() => {\r\n return (\r\n !!this.control.ngControl?.control?.value &&\r\n !this.control.disabled &&\r\n !this.control.loading &&\r\n (!this.hideAction || this.enableClear) &&\r\n !this.displayOnly()\r\n );\r\n });\r\n\r\n get showCalendar(): boolean {\r\n return this.control.type === 'date' && !this.hideAction;\r\n }\r\n\r\n get showCurrency(): boolean {\r\n return this.control.currency || false;\r\n }\r\n\r\n get showPercent(): boolean {\r\n return this.control.percent || false;\r\n }\r\n\r\n get showLoading(): boolean {\r\n return this.control.loading || false;\r\n }\r\n\r\n internalDisplayOnly = signal<boolean>(this.displayOnly());\r\n\r\n readonly editDictionary = inject(MonkeyDictionaryService).get('EDIT');\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n\r\n effect(() => {\r\n const value = this.displayOnly();\r\n this.internalDisplayOnly.set(value);\r\n });\r\n }\r\n\r\n private updateFocusState() {\r\n if (this.control.focused && !this._isFocused) {\r\n this._isFocused = true;\r\n } else if (!this.control.focused && (this._isFocused || this._isFocused === null)) {\r\n this._isFocused = false;\r\n }\r\n }\r\n\r\n private handleFormFieldControl() {\r\n if (!this.control) {\r\n throw Error('monkey-form-field must have a MonkeyFormFieldControl');\r\n }\r\n }\r\n\r\n private checkPrefixAndSuffix() {\r\n this.hasPrefix = !!this._prefixChildren?.length;\r\n this.hasSuffix = !!this._suffixChildren?.length;\r\n const suffix = this._suffixChildren?.get?.(0);\r\n if (suffix) {\r\n suffix.action = (event: MouseEvent) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n };\r\n }\r\n }\r\n\r\n private initializePrefixAndSuffix() {\r\n this.checkPrefixAndSuffix();\r\n\r\n if (this._prefixChildren?.changes || this._suffixChildren?.changes) {\r\n merge(this._prefixChildren?.changes, this._suffixChildren?.changes).subscribe(() => {\r\n this.checkPrefixAndSuffix();\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n private checkInfoError() {\r\n this.hasInfo = !!this._infoChildren?.length;\r\n this.hasError = !!this._errorChildren?.length;\r\n }\r\n\r\n private initializeInfoError() {\r\n this.checkInfoError();\r\n\r\n if (this._infoChildren?.changes || this._errorChildren?.changes) {\r\n merge(this._infoChildren?.changes, this._errorChildren?.changes).subscribe(() => {\r\n this.checkInfoError();\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n private initializeComponents() {\r\n this.hasLabel = Array.isArray(this._labelChildren) && this._labelChildren.length > 0;\r\n this.hasHelper = Array.isArray(this._helperChildren) && this._helperChildren.length > 0;\r\n\r\n this.initializePrefixAndSuffix();\r\n this.initializeInfoError();\r\n }\r\n\r\n private initializeControl() {\r\n const { control } = this;\r\n\r\n this._stateChanges?.unsubscribe();\r\n this._stateChanges = control.stateChanges.subscribe(() => {\r\n this.updateFocusState();\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n\r\n this._valueChanges?.unsubscribe();\r\n\r\n if (control.ngControl && control.ngControl.valueChanges) {\r\n this._valueChanges = control.ngControl.valueChanges\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n private openDatePicker() {\r\n const input: any = document.getElementById(this.control.id);\r\n if (input.showPicker) {\r\n input.showPicker();\r\n } else {\r\n input.focus();\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.handleFormFieldControl();\r\n this.initializeComponents();\r\n\r\n if (this.displayOnly() && !this._displayChild) {\r\n throw new Error(\r\n 'monkey-form-field: When `displayOnly` is true, a <monkey-display> element is required inside.'\r\n );\r\n }\r\n }\r\n\r\n ngAfterContentChecked() {\r\n this.handleFormFieldControl();\r\n\r\n if (this.control !== this._previousControl) {\r\n this.initializeControl();\r\n this._previousControl = this.control;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._stateChanges?.unsubscribe();\r\n this._valueChanges?.unsubscribe();\r\n }\r\n\r\n getFooterMessages(): 'info' | 'error' | '' {\r\n const touched = this.control.ngControl?.touched;\r\n const invalid = this.control.ngControl?.invalid;\r\n const isFocused = this._isFocused;\r\n const hasInfoChildren = this._infoChildren && this._infoChildren.length > 0;\r\n\r\n const isControlEnabled = !this.control.disabled;\r\n const isControlDisableToBeDirty = !this.control.disableToBeDirty;\r\n const isTouched = touched;\r\n const isInvalid = invalid;\r\n const isNotFocused = !isFocused;\r\n\r\n if (\r\n !this.showLoading &&\r\n isControlEnabled &&\r\n isTouched &&\r\n isInvalid &&\r\n isNotFocused &&\r\n isControlDisableToBeDirty\r\n ) {\r\n return 'error';\r\n }\r\n\r\n if (hasInfoChildren) {\r\n return 'info';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n getSymbols(): string {\r\n if (this.showCurrency && this.currencySymbol) {\r\n return this.currencySymbol;\r\n }\r\n if (this.showPercent && this.percentSymbol) {\r\n return this.percentSymbol;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n onClear(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.control.ngControl?.control?.setValue('');\r\n this.control.ngControl?.control?.markAsTouched();\r\n this.control?.onClear?.();\r\n }\r\n\r\n onOpenCalendar(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.control.type === 'date') {\r\n this.openDatePicker();\r\n }\r\n }\r\n\r\n onCancelDisplayOnly(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.internalDisplayOnly.set(false);\r\n this.onDisplayOnlyChange.emit(false);\r\n setTimeout(() => {\r\n this.control.onContainerClick(event);\r\n }, 0);\r\n }\r\n}\r\n","@if (internalDisplayOnly()) {\r\n <div class=\"mecx-form-field-display-only\" (click)=\"onCancelDisplayOnly($event)\">\r\n <div class=\"mecx-form-field-display-only-header\">\r\n <ng-container *ngTemplateOutlet=\"labelTpl\"></ng-container>\r\n </div>\r\n <div class=\"mecx-form-field-display-only-body\">\r\n <ng-content select=\"monkey-display\"></ng-content>\r\n </div>\r\n <div class=\"mecx-form-field-display-only-action\">\r\n {{ editDictionary | async }} <util-icon name=\"edit\" />\r\n </div>\r\n </div>\r\n} @else {\r\n @if (showHeader) {\r\n <div class=\"mecx-form-field-header\" (click)=\"control.onContainerClick($event)\">\r\n <label [id]=\"labelId\" [attr.for]=\"control.id\">\r\n <ng-container *ngTemplateOutlet=\"labelTpl\"></ng-container>\r\n </label>\r\n <ng-content select=\"monkey-helper\"></ng-content>\r\n </div>\r\n }\r\n\r\n <div class=\"mecx-form-field-body\" (click)=\"control.onContainerClick($event)\">\r\n @if (hasPrefix) {\r\n <ng-content select=\"monkey-prefix\"></ng-content>\r\n }\r\n @if (getSymbols(); as symbols) {\r\n <div class=\"mecx-form-field-prefix-symbol\">\r\n {{ symbols }}\r\n </div>\r\n }\r\n\r\n <ng-content></ng-content>\r\n\r\n @if (showClear()) {\r\n <util-icon class=\"mecx-clear\" name=\"clear\" (click)=\"onClear($event)\" />\r\n }\r\n @if (showCalendar) {\r\n <util-icon class=\"mecx-calendar\" name=\"calendar\" (click)=\"onOpenCalendar($event)\" />\r\n }\r\n @if (showLoading) {\r\n <util-icon class=\"mecx-form-field-loading\" name=\"loading\" />\r\n }\r\n\r\n @if (hasSuffix) {\r\n <ng-content select=\"monkey-suffix\"></ng-content>\r\n }\r\n </div>\r\n\r\n @if (showFooter) {\r\n <div class=\"mecx-form-field-footer\" (click)=\"control.onContainerClick($event)\">\r\n @switch (getFooterMessages()) {\r\n @case ('error') {\r\n <ng-content select=\"monkey-error\"></ng-content>\r\n }\r\n @case ('info') {\r\n <div class=\"mecx-form-field-info\">\r\n <ng-content select=\"monkey-info\"></ng-content>\r\n </div>\r\n }\r\n }\r\n </div>\r\n }\r\n}\r\n\r\n<ng-template #labelTpl>\r\n <ng-content select=\"monkey-label\"></ng-content>\r\n</ng-template>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { MonkeyFormFieldComponent } from './form-field.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, UtilIconComponent],\r\n declarations: [MonkeyFormFieldComponent],\r\n exports: [MonkeyFormFieldComponent]\r\n})\r\nexport class MonkeyFormFieldModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './form-field-control';\r\nexport * from './form-field.component';\r\nexport * from './form-field.module';\r\nexport * from './utils';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n Input,\r\n input,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-option',\r\n standalone: true,\r\n imports: [UtilIconComponent],\r\n template: `\r\n @if (type === 'checkbox') {\r\n <span class=\"mecx-option-checkbox\">\r\n <util-icon class=\"icon\" name=\"check\" />\r\n </span>\r\n }\r\n <div #content><ng-content /></div>\r\n `,\r\n styleUrls: ['./option.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-option',\r\n '[attr.id]': 'id',\r\n class: 'mecx-option',\r\n '[class.mecx-option-disabled]': 'disabled',\r\n '[class.mecx-option-selected]': 'isSelected()',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '[class]': 'type'\r\n }\r\n})\r\nexport class MonkeyOptionComponent {\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n @ViewChild('content', { static: true }) _content: ElementRef<HTMLElement> | undefined;\r\n\r\n readonly value = input<any>();\r\n\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n @Input() type = 'select';\r\n\r\n get displayContent(): string {\r\n return (this._content?.nativeElement.textContent || '').trim();\r\n }\r\n\r\n selected = input<boolean>(false);\r\n\r\n tabIndex = 0;\r\n\r\n action!: Function;\r\n\r\n isSelected = computed(() => {\r\n return this._selectedState();\r\n });\r\n\r\n readonly id: string = this.idGenerator.getId('mecx-option-');\r\n\r\n private _selectedState = signal(false);\r\n\r\n private handleAction(event: MouseEvent | KeyboardEvent) {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n } else {\r\n this.action?.();\r\n }\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n this._selectedState.set(this.selected());\r\n });\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n this.handleAction(event);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n handleKeyDown(event: KeyboardEvent): void {\r\n const { key } = event;\r\n\r\n if (key === 'Enter' || key === ' ') {\r\n this.handleAction(event);\r\n }\r\n }\r\n\r\n onSelect(select: boolean) {\r\n this._selectedState.set(select);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './option.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n distinctUntilChanged,\r\n Observable,\r\n of,\r\n Subject,\r\n switchMap\r\n} from 'rxjs';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyAutocompleteData, MonkeyAutocompleteResponse } from '../../interfaces';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport {\r\n MonkeyFormFieldComponent,\r\n MonkeyFormFieldControl,\r\n MonkeyFormFieldModule\r\n} from '../form-field';\r\nimport { MonkeyOptionComponent } from '../option';\r\n\r\n@Component({\r\n selector: 'monkey-autocomplete',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyPopoverDirective,\r\n MonkeyOptionComponent,\r\n UtilIconComponent\r\n ],\r\n template: `\r\n <input\r\n #input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n class=\"mecx-input\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur($event)\"\r\n [attr.id]=\"inputId\"\r\n [(ngModel)]=\"searchData\"\r\n />\r\n\r\n <ng-template\r\n [monkeyPopover]=\"showPopOver\"\r\n [monkeyPopoverTarget]=\"elementTarget\"\r\n [monkeyPopoverClosed]=\"closePopOver\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverBackdrop]=\"false\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n [monkeyPopoverWatch]=\"true\"\r\n >\r\n <div\r\n #containerWrapper\r\n class=\"mecx-autocomplete-wrapper\"\r\n [style.width.px]=\"initialDisplayWidth\"\r\n >\r\n @if (options.length > 0) {\r\n <div class=\"mecx-autocomplete-options\">\r\n @for (option of options; track option) {\r\n <div\r\n class=\"mecx-autocomplete-option\"\r\n (click)=\"onSelect(option)\"\r\n [class.mecx-autocomplete-selected]=\"isSelected(option)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n optionTemplate || defaultTemplate;\r\n context: { $implicit: option }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if (loading) {\r\n <div class=\"mecx-autocomplete-loading\">\r\n <util-icon name=\"loading\" />\r\n {{ loadingDictionary | async }}\r\n </div>\r\n }\r\n @if (!loading && !options.length) {\r\n <div class=\"mecx-autocomplete-no-data\">\r\n <util-icon class=\"mecx-autocomplete-no-data-icon\" name=\"searchFail\" />\r\n {{ noDataDictionary | async }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <ng-template #defaultTemplate let-option>\r\n <monkey-option>\r\n {{ option.description }}\r\n </monkey-option>\r\n </ng-template>\r\n </ng-template>\r\n `,\r\n styleUrl: './autocomplete.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyAutocompleteComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-autocomplete'\",\r\n class: 'mecx-autocomplete',\r\n '[class.mecx-autocomplete-disabled]': '_disabled',\r\n '[class.mecx-autocomplete-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur($event)'\r\n }\r\n})\r\nexport class MonkeyAutocompleteComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy\r\n{\r\n @Input({ required: true }) placeholder!: string;\r\n\r\n @Input() debounce = 300;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input() fetchOptions!: (queryOrLink: string | any) => Observable<MonkeyAutocompleteResponse>;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n // this.handleValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor(\r\n @Optional() public formField: MonkeyFormFieldComponent,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-autocomplete-');\r\n\r\n readonly inputId: string = this.idGenerator.getId('monkey-autocomplete-input-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'autocomplete';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n get elementTarget() {\r\n if (this.formField?.elementRef) {\r\n return this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n }\r\n\r\n return this._elementRef?.nativeElement;\r\n }\r\n\r\n private _searchEvent = new EventEmitter();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _resizeObserver?: ResizeObserver;\r\n\r\n initialDisplayWidth = 0;\r\n\r\n showPopOver = false;\r\n\r\n options: MonkeyAutocompleteData[] = [];\r\n\r\n readonly loadingDictionary = inject(MonkeyDictionaryService).get('LOADING');\r\n\r\n readonly noDataDictionary = inject(MonkeyDictionaryService).get('NO-DATA');\r\n\r\n loading = false;\r\n\r\n searchData = '';\r\n\r\n @ContentChild('optionTemplate', { static: false }) optionTemplate?: TemplateRef<any>;\r\n\r\n @ViewChild('containerWrapper') containerWrapper!: ElementRef;\r\n\r\n private updateWidth() {\r\n this.initialDisplayWidth = (this.elementTarget?.offsetWidth || 0) - 12;\r\n }\r\n\r\n closePopOver = () => {\r\n setTimeout(() => {\r\n this.focused = false;\r\n this.showPopOver = false;\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n };\r\n\r\n ngAfterContentInit(): void {\r\n this._searchEvent\r\n ?.pipe(\r\n debounceTime(this.debounce),\r\n distinctUntilChanged((prev, current) => {\r\n if (prev === current) {\r\n this.loading = false;\r\n }\r\n\r\n return prev === current;\r\n }),\r\n switchMap((query) => {\r\n return this.fetchOptions\r\n ? this.fetchOptions(query || '').pipe(\r\n catchError(() => {\r\n return of({ data: [] });\r\n })\r\n )\r\n : of({ data: [] });\r\n }),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe({\r\n next: (result: MonkeyAutocompleteResponse) => {\r\n this.openPopOver();\r\n this.options = result.data;\r\n this.loading = false;\r\n }\r\n });\r\n\r\n this._resizeObserver = new ResizeObserver(() => {\r\n return this.updateWidth();\r\n });\r\n this._resizeObserver.observe(this._elementRef.nativeElement);\r\n this.updateWidth();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n onClear(): void {\r\n this.searchData = '';\r\n this._onChange(null);\r\n this.onChange.emit(null);\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n if (this.options.length) {\r\n this.openPopOver();\r\n }\r\n }\r\n }\r\n\r\n _onBlur(event: FocusEvent) {\r\n const next = event?.relatedTarget as HTMLElement | null;\r\n if (next && this.containerWrapper?.nativeElement?.contains(next)) {\r\n return;\r\n }\r\n\r\n this.focused = false;\r\n this.stateChanges.next();\r\n this.closePopOver();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n openPopOver() {\r\n this.showPopOver = true;\r\n }\r\n\r\n onInputChange(event: Event) {\r\n const { value } = event.target as HTMLInputElement;\r\n this.loading = true;\r\n this._searchEvent.next(value);\r\n this.openPopOver();\r\n }\r\n\r\n onSelect(option: MonkeyAutocompleteData) {\r\n this.value = option.value;\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n this.searchData = option.description;\r\n this.closePopOver();\r\n }\r\n\r\n isSelected(option: MonkeyAutocompleteData) {\r\n return option?.value === this.value;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './autocomplete.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { catchError, debounceTime, distinctUntilChanged, of, Subject, switchMap } from 'rxjs';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { GoogleApiPlaces } from '../../interfaces';\r\nimport { MonkeyDictionaryService, MonkeyEcxAddressService } from '../../services';\r\nimport {\r\n MonkeyFormFieldComponent,\r\n MonkeyFormFieldControl,\r\n MonkeyFormFieldModule\r\n} from '../form-field';\r\nimport { MonkeyOptionComponent } from '../option';\r\n\r\n@Component({\r\n selector: 'monkey-autocomplete-address',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyPopoverDirective,\r\n MonkeyOptionComponent,\r\n UtilIconComponent\r\n ],\r\n template: `\r\n <input\r\n #input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n class=\"mecx-input\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur($event)\"\r\n [attr.id]=\"inputId\"\r\n [(ngModel)]=\"searchData\"\r\n />\r\n\r\n <ng-template\r\n [monkeyPopover]=\"showPopOver\"\r\n [monkeyPopoverTarget]=\"elementTarget\"\r\n [monkeyPopoverClosed]=\"closePopOver\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverBackdrop]=\"false\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n [monkeyPopoverWatch]=\"true\"\r\n >\r\n <div\r\n #containerWrapper\r\n class=\"mecx-autocomplete-address-wrapper\"\r\n [style.width.px]=\"initialDisplayWidth\"\r\n >\r\n <div class=\"flex-grow-1\">\r\n @if (loading) {\r\n <div class=\"mecx-autocomplete-address-loading\">\r\n <util-icon name=\"loading\" />\r\n {{ loadingDictionary | async }}\r\n </div>\r\n }\r\n @if (options.length > 0) {\r\n <div class=\"mecx-autocomplete-address-options\">\r\n @for (option of options; track option) {\r\n <monkey-option\r\n class=\"mecx-autocomplete-address-option\"\r\n (click)=\"onSelect(option)\"\r\n [class.mecx-option-selected]=\"isSelected(option)\"\r\n >\r\n <util-icon class=\"mecx-autocomplete-address-option-icon\" name=\"location\" />\r\n <span [innerHTML]=\"option.adrFormatAddress\"></span>\r\n </monkey-option>\r\n }\r\n </div>\r\n }\r\n @if (!loading && !options.length) {\r\n <div class=\"mecx-autocomplete-address-no-data\">\r\n <util-icon class=\"mecx-autocomplete-address-no-data-icon\" name=\"searchFail\" />\r\n {{ noDataDictionary | async }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"mecx-autocomplete-address-footer\">\r\n <util-icon name=\"googleMaps\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n `,\r\n styleUrl: './autocomplete-address.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyAutocompleteAddressComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-autocomplete-address'\",\r\n class: 'mecx-autocomplete-address',\r\n '[class.mecx-autocomplete-address-disabled]': '_disabled',\r\n '[class.mecx-autocomplete-address-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur($event)'\r\n }\r\n})\r\nexport class MonkeyAutocompleteAddressComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy\r\n{\r\n @Input({ required: true }) placeholder!: string;\r\n\r\n @Input() debounce = 300;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n if (!this.searchData) {\r\n this.searchData = value;\r\n }\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor(\r\n @Optional() public formField: MonkeyFormFieldComponent,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-autocomplete-address-');\r\n\r\n readonly inputId: string = this.idGenerator.getId('monkey-autocomplete-address-input-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'autocomplete-address';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n private readonly _addressService = inject(MonkeyEcxAddressService);\r\n\r\n private _searchEvent = new EventEmitter();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _resizeObserver?: ResizeObserver;\r\n\r\n initialDisplayWidth = 0;\r\n\r\n showPopOver = false;\r\n\r\n options: GoogleApiPlaces[] = [];\r\n\r\n readonly loadingDictionary = inject(MonkeyDictionaryService).get('LOADING');\r\n\r\n readonly noDataDictionary = inject(MonkeyDictionaryService).get('NO-DATA-ADDRESS');\r\n\r\n loading = false;\r\n\r\n searchData = '';\r\n\r\n get elementTarget() {\r\n if (this.formField?.elementRef) {\r\n return this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n }\r\n\r\n return this._elementRef.nativeElement;\r\n }\r\n\r\n @ContentChild('optionTemplate', { static: false }) optionTemplate?: TemplateRef<any>;\r\n\r\n @ViewChild('containerWrapper') containerWrapper!: ElementRef;\r\n\r\n private updateWidth() {\r\n this.initialDisplayWidth = (this.elementTarget?.offsetWidth || 0) - 12;\r\n }\r\n\r\n closePopOver = () => {\r\n setTimeout(() => {\r\n this.focused = false;\r\n this.showPopOver = false;\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n };\r\n\r\n ngAfterContentInit(): void {\r\n this._searchEvent\r\n ?.pipe(\r\n debounceTime(this.debounce),\r\n distinctUntilChanged((prev, current) => {\r\n if (prev === current) {\r\n this.loading = false;\r\n }\r\n\r\n return prev === current;\r\n }),\r\n switchMap((query) => {\r\n return this._addressService.get(query || '').pipe(\r\n catchError(() => {\r\n return of([]);\r\n })\r\n );\r\n }),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe({\r\n next: (result: any[]) => {\r\n this.openPopOver();\r\n this.options = result;\r\n this.loading = false;\r\n }\r\n });\r\n\r\n this._resizeObserver = new ResizeObserver(() => {\r\n return this.updateWidth();\r\n });\r\n this._resizeObserver.observe(this._elementRef.nativeElement);\r\n this.updateWidth();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n onClear(): void {\r\n this.searchData = '';\r\n this._onChange(null);\r\n this.onChange.emit(null);\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n if (this.options.length) {\r\n this.openPopOver();\r\n }\r\n }\r\n }\r\n\r\n _onBlur(event: FocusEvent) {\r\n const next = event?.relatedTarget as HTMLElement | null;\r\n if (next && this.containerWrapper?.nativeElement?.contains(next)) {\r\n return;\r\n }\r\n\r\n this.focused = false;\r\n this.stateChanges.next();\r\n this.closePopOver();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n openPopOver() {\r\n this.showPopOver = true;\r\n }\r\n\r\n onInputChange(event: Event) {\r\n const { value } = event.target as HTMLInputElement;\r\n this.loading = true;\r\n this._searchEvent.next(value);\r\n this.openPopOver();\r\n }\r\n\r\n onSelect(option: GoogleApiPlaces) {\r\n this.value = option;\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n this.searchData = option?.formattedAddress;\r\n this.closePopOver();\r\n }\r\n\r\n isSelected(option: GoogleApiPlaces) {\r\n return option === this.value;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './autocomplete-address.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n HostBinding,\r\n inject,\r\n input,\r\n InputSignal,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, objHaveProperty } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\ntype MonkeyAvatarSrc = { iconName: string } | { imageUrl: string } | { name: string };\r\ntype MonkeyAvatarType = 'icon' | 'image' | 'name';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-avatar',\r\n styleUrl: './avatar.component.scss',\r\n templateUrl: './avatar.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-avatar',\r\n '[attr.id]': '_id',\r\n '[id]': '_id'\r\n }\r\n})\r\nexport class MonkeyAvatarComponent {\r\n protected _id: any = inject(IdGenerator).getId('monkey-avatar-');\r\n\r\n readonly size: InputSignal<MonkeySize> = input('xs' as MonkeySize);\r\n\r\n readonly src: InputSignal<MonkeyAvatarSrc> = input.required();\r\n\r\n readonly id: InputSignal<string | undefined> = input();\r\n\r\n public avatar = '?';\r\n\r\n public avatarType: MonkeyAvatarType = 'name';\r\n\r\n @HostBinding('class')\r\n get classes(): string {\r\n return this.size();\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n this._id = this.id() || this._id;\r\n\r\n this.handleAvatarType();\r\n });\r\n }\r\n\r\n private getInitial(text: string): string {\r\n return text.toUpperCase()[0];\r\n }\r\n\r\n private handleAvatarType(): void {\r\n const { getInitial, src } = this;\r\n const value = src();\r\n\r\n if (objHaveProperty(value, 'iconName')) {\r\n this.avatarType = 'icon';\r\n this.avatar = (value as { iconName: string }).iconName;\r\n\r\n return;\r\n }\r\n\r\n if (objHaveProperty(value, 'imageUrl')) {\r\n this.avatarType = 'image';\r\n this.avatar = (value as { imageUrl: string }).imageUrl;\r\n\r\n return;\r\n }\r\n\r\n if (objHaveProperty(value, 'name')) {\r\n this.avatarType = 'name';\r\n this.avatar = getInitial((value as { name: string }).name);\r\n }\r\n }\r\n}\r\n","@switch (avatarType) {\r\n @case ('name') {\r\n <p [class]=\"size()\">{{ avatar }}</p>\r\n }\r\n\r\n @case ('icon') {\r\n <i class=\"mk-i mk-i-{{ avatar }} {{size()}}\"></i>\r\n }\r\n\r\n @case ('image') {\r\n <img loading=\"lazy\" [alt]=\"'Avatar ' + avatarType\" [class]=\"size()\" [src]=\"avatar\" />\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './avatar.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { booleanAttribute, Component, HostBinding, inject, Input } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'monkey-badge',\r\n templateUrl: './badge.component.html',\r\n styleUrl: './badge.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-badge',\r\n '[attr.id]': 'id'\r\n }\r\n})\r\nexport class MonkeyBadgeComponent {\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-badge-');\r\n\r\n @HostBinding('style') hostVariables = {};\r\n\r\n @Input() set type(value: 'success' | 'alert' | 'error' | 'info' | 'default') {\r\n const styles = {\r\n success: { background: '#F5FFFB', color: '#005236' },\r\n alert: { background: '#FFF8EB', color: '#1F2024' },\r\n error: { background: '#FFECEC', color: '#DB0505' },\r\n info: { background: '#F4EBFF', color: '#2D0264' },\r\n default: { background: '#F1F2F3', color: '#1F2024' }\r\n }[value];\r\n\r\n this.hostVariables = {\r\n '--monkey-badge-background': styles?.background,\r\n '--monkey-badge-color': styles?.color\r\n };\r\n }\r\n\r\n @Input()\r\n set typeColors(value: { background: string; color: string }) {\r\n if (value) {\r\n this.hostVariables = {\r\n '--monkey-badge-background': value?.background,\r\n '--monkey-badge-color': value?.color\r\n };\r\n }\r\n }\r\n\r\n @HostBinding('class')\r\n @Input()\r\n size: MonkeySize = 'sm';\r\n\r\n @HostBinding('class.large-padding')\r\n @Input({ transform: booleanAttribute })\r\n largePadding = false;\r\n\r\n @Input() icon: string = '';\r\n\r\n @Input() text: string = '';\r\n}\r\n","@if (text) {\r\n @if (icon) {\r\n <i class=\"mk-i mk-i-{{icon}}\"></i>\r\n }\r\n <span>\r\n {{ text }}\r\n </span>\r\n} @else {\r\n <ng-content></ng-content>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './badge.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { booleanAttribute, Component, inject, Input, ViewEncapsulation } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyBreadcrumb } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'monkey-breadcrumb',\r\n imports: [CommonModule],\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrl: './breadcrumb.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-breadcrumb',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyBreadcrumbComponent {\r\n @Input({ required: true }) first!: MonkeyBreadcrumb;\r\n\r\n @Input({ required: true }) last!: MonkeyBreadcrumb;\r\n\r\n @Input({ transform: booleanAttribute }) colapsed: boolean = false;\r\n\r\n protected _router = inject(Router);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-breadcrumb-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n handleNavigate(item: MonkeyBreadcrumb) {\r\n if (item.callback) {\r\n item.callback();\r\n } else {\r\n this._router.navigate([item.path]);\r\n }\r\n }\r\n}\r\n","<div class=\"breadcrumbs\">\r\n <a class=\"first\" (click)=\"handleNavigate(first)\">\r\n {{ first.label | titlecase }}\r\n </a>\r\n <span>/</span>\r\n @if(colapsed){\r\n <span>...</span>\r\n <span>/</span>\r\n }\r\n <a class=\"last\" (click)=\"handleNavigate(last)\">\r\n {{ last.label | titlecase }}\r\n </a>\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './breadcrumb.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { animate, keyframes, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControlDirective,\r\n FormControlName,\r\n FormGroupDirective,\r\n FormsModule,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n NgControl,\r\n NgModel,\r\n ReactiveFormsModule,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyHelperDirective } from '../../directives/helper';\r\nimport { MonkeyInfoDirective } from '../../directives/info';\r\nimport { MonkeyLabelDirective } from '../../directives/label';\r\n\r\n@Component({\r\n selector: 'monkey-checkbox',\r\n imports: [ReactiveFormsModule, FormsModule, UtilIconComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n animations: [\r\n trigger('iconAnimation', [\r\n transition(':enter', [\r\n animate(\r\n '250ms ease-in-out',\r\n keyframes([\r\n style({ opacity: 0, transform: 'scale(0.7)' }),\r\n style({ opacity: 1, transform: 'scale(1)' })\r\n ])\r\n )\r\n ]),\r\n transition(':leave', [\r\n animate(\r\n '250ms ease-in-out',\r\n keyframes([\r\n style({ opacity: 1, transform: 'scale(1)' }),\r\n style({ opacity: 0, transform: 'scale(.7)' })\r\n ])\r\n )\r\n ])\r\n ])\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => {\r\n // eslint-disable-next-line no-use-before-define\r\n return MonkeyCheckboxComponent;\r\n }),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n // eslint-disable-next-line no-use-before-define\r\n useExisting: MonkeyCheckboxComponent,\r\n multi: true\r\n }\r\n ],\r\n host: {\r\n 'data-testid': 'input-checkbox',\r\n class: 'mecx-checkbox',\r\n '[class.mecx-disabled]': 'disabled',\r\n '[class.mecx-checkbox-checked]': 'value',\r\n '[class.mecx-checkbox-focused]': 'isFocused',\r\n '[class.mecx-checkbox-indeterminate]': 'indeterminate',\r\n '[class.mecx-checkbox-invalid]': 'showInvalid',\r\n '[class.sm]': 'size.includes(\"sm\")',\r\n '[class.md]': 'size.includes(\"md\")',\r\n '[class.lg]': 'size.includes(\"lg\")'\r\n }\r\n})\r\nexport class MonkeyCheckboxComponent implements ControlValueAccessor, OnChanges, OnInit, Validator {\r\n @ContentChildren(MonkeyInfoDirective, { descendants: true })\r\n private infoChildren!: QueryList<MonkeyInfoDirective>;\r\n\r\n @ContentChildren(MonkeyLabelDirective, { descendants: true })\r\n private labelChildren!: QueryList<MonkeyLabelDirective>;\r\n\r\n @ContentChildren(MonkeyHelperDirective, { descendants: true })\r\n private helperChildren!: QueryList<MonkeyHelperDirective>;\r\n\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n @Input({ transform: booleanAttribute }) indeterminate = false;\r\n\r\n @Input({ transform: booleanAttribute }) required = false;\r\n\r\n @Input({ transform: booleanAttribute }) showFooter = true;\r\n\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Output() onChange = new EventEmitter<boolean>();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n private injector = inject(Injector);\r\n\r\n private cdr = inject(ChangeDetectorRef);\r\n\r\n control: AbstractControl<any, any> | null | undefined;\r\n\r\n readonly inputId = this.idGenerator.getId('input-checkbox-');\r\n\r\n @Input() value = false;\r\n\r\n isFocused = false;\r\n\r\n get showInvalid(): boolean {\r\n const touched = this.control?.touched || false;\r\n const invalid = this.control?.invalid || false;\r\n return !this.isFocused && touched && invalid;\r\n }\r\n\r\n get hasHeader(): boolean {\r\n return this.labelChildren.length > 0 || this.helperChildren.length > 0;\r\n }\r\n\r\n get isTouched(): boolean {\r\n return this.control?.touched ?? false;\r\n }\r\n\r\n get isInvalid(): boolean {\r\n return this.control?.invalid ?? false;\r\n }\r\n\r\n ngOnInit() {\r\n const ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\r\n\r\n if (ngControl instanceof FormControlDirective || ngControl instanceof NgModel) {\r\n this.control = ngControl.control;\r\n } else if (ngControl instanceof FormControlName) {\r\n this.control = this.injector.get(FormGroupDirective).getControl(ngControl as FormControlName);\r\n\r\n this.control.statusChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n _onValidatorChange: any = () => {};\r\n\r\n ngOnChanges(changes: any) {\r\n if (changes.required) {\r\n this._onValidatorChange();\r\n }\r\n }\r\n\r\n onBlur = () => {\r\n this._onTouched();\r\n this.isFocused = false;\r\n };\r\n\r\n onFocus = (event: any) => {\r\n if (event.relatedTarget) {\r\n this.isFocused = true;\r\n }\r\n };\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.required && control.value !== true ? { required: true } : null;\r\n }\r\n\r\n writeValue(value: boolean): void {\r\n this.value = value;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this._onValidatorChange = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onChangeEvent(event: Event): void {\r\n const checkbox = event.target as HTMLInputElement;\r\n\r\n if (this.indeterminate) {\r\n this.indeterminate = false;\r\n }\r\n\r\n this.value = checkbox.checked;\r\n this._onChange(this.value);\r\n this.onChange.next(this.value);\r\n this._onTouched();\r\n }\r\n\r\n getFooterMessages(): 'info' | 'error' | '' {\r\n const hasInfoChildren = this.infoChildren && this.infoChildren.length > 0;\r\n\r\n if (!this.disabled && this.isTouched && this.isInvalid) {\r\n return 'error';\r\n }\r\n\r\n if (hasInfoChildren) {\r\n return 'info';\r\n }\r\n\r\n return '';\r\n }\r\n}\r\n","@if (hasHeader) {\r\n <div class=\"header\">\r\n <ng-content select=\"monkey-label\" />\r\n <ng-content select=\"monkey-helper\" />\r\n </div>\r\n}\r\n<label [attr.for]=\"inputId\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"value\"\r\n [indeterminate]=\"indeterminate\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChangeEvent($event)\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus($event)\"\r\n [id]=\"inputId\"\r\n [required]=\"required\"\r\n />\r\n <span class=\"checkbox\">\r\n @if (indeterminate) {\r\n <util-icon class=\"icon\" name=\"minus\" />\r\n } @else if (value) {\r\n <util-icon class=\"icon\" name=\"check\" />\r\n }\r\n </span>\r\n <span class=\"checkbox-label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n@if (showFooter) {\r\n @switch (getFooterMessages()) {\r\n @case ('error') {\r\n <ng-content select=\"monkey-error\" />\r\n }\r\n @case ('info') {\r\n <ng-content select=\"monkey-info\" />\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './checkbox.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CurrencyPipe } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n DEFAULT_CURRENCY_CODE,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n inject,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NgControl, Validators } from '@angular/forms';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldControl } from '../form-field';\r\n\r\n@Directive({\r\n selector: 'input[monkey-input-currency]',\r\n exportAs: 'monkeyInput',\r\n host: {\r\n class: 'mecx-input',\r\n '[class.mecx-input-disabled]': 'disabled',\r\n '[id]': 'id',\r\n '[disabled]': 'disabled',\r\n '[required]': 'required',\r\n '[attr.name]': 'name || null',\r\n '[attr.disabled]': 'disabled || null',\r\n '[attr.aria-required]': 'required',\r\n '[attr.id]': 'id',\r\n '(focus)': 'focusChanged(true)',\r\n '(focusout)': 'focusOutChanged()',\r\n '(blur)': 'focusChanged(false)'\r\n },\r\n providers: [\r\n {\r\n provide: MonkeyFormFieldControl,\r\n // eslint-disable-next-line no-use-before-define\r\n useExisting: MonkeyInputCurrencyDirective\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class MonkeyInputCurrencyDirective\r\n implements MonkeyFormFieldControl, OnChanges, OnInit, OnDestroy\r\n{\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-input-currency-');\r\n\r\n protected _id!: string;\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n @Input() name!: string;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: BooleanInput) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n protected _required: boolean | undefined;\r\n\r\n protected _disabled = false;\r\n\r\n @Input()\r\n get type(): string {\r\n return this._type;\r\n }\r\n\r\n set type(value: string) {\r\n this._type = value;\r\n }\r\n\r\n protected _type = 'text';\r\n\r\n get currency(): boolean {\r\n return true;\r\n }\r\n\r\n get percent(): boolean {\r\n return false;\r\n }\r\n\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n private readonly _currencyCode = inject(DEFAULT_CURRENCY_CODE);\r\n\r\n private readonly _localeId = inject(LOCALE_ID);\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _valueChanges: Subscription | undefined;\r\n\r\n private _rawValue = 0;\r\n\r\n ngControl = inject(NgControl, { self: true, optional: true });\r\n\r\n focused: boolean = false;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private currencyPipe: CurrencyPipe\r\n ) {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n private markAsUntouched() {\r\n this.ngControl?.control?.markAsUntouched();\r\n }\r\n\r\n private focus(options?: FocusOptions): void {\r\n this._elementRef.nativeElement.focus(options);\r\n this.markAsUntouched();\r\n }\r\n\r\n private formatValue(value: string): string | null {\r\n return this.currencyPipe.transform(\r\n value,\r\n this._currencyCode || 'BRL',\r\n '',\r\n '1.2-2',\r\n this._localeId || 'pt-BR'\r\n );\r\n }\r\n\r\n private handleControlValue() {\r\n const value = this.ngControl?.control?.value;\r\n if (this._rawValue !== value) {\r\n this._rawValue = value;\r\n\r\n if (value === null || value === undefined) {\r\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\r\n this._changeDetectorRef.markForCheck();\r\n return;\r\n }\r\n\r\n let handled = value;\r\n const decimal = `${value}`.split('.')[1];\r\n if (`${decimal}`.length >= 2) {\r\n handled = `${value}`.replace(/[^0-9]/g, '');\r\n handled = `${Number(handled) / 100}`;\r\n }\r\n\r\n this.ngControl?.control?.setValue(Number(handled), { emitEvent: false, onlySelf: true });\r\n const formattedValue = this.formatValue(handled);\r\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.handleControlValue();\r\n this._valueChanges?.unsubscribe();\r\n\r\n this._valueChanges = this.ngControl?.control?.valueChanges\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this.handleControlValue();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n this._valueChanges?.unsubscribe();\r\n }\r\n\r\n ngOnChanges({ disabled }: SimpleChanges): void {\r\n if (!disabled) {\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n this.focus();\r\n }\r\n }\r\n\r\n focusChanged(isFocused: boolean) {\r\n if (isFocused === this.focused) {\r\n return;\r\n }\r\n\r\n if (isFocused && this.disabled) {\r\n const element = this._elementRef.nativeElement as HTMLInputElement;\r\n element.setSelectionRange(0, 0);\r\n }\r\n\r\n this.markAsUntouched();\r\n this.focused = isFocused;\r\n this.stateChanges.next();\r\n }\r\n\r\n focusOutChanged() {\r\n this.ngControl?.control?.markAsTouched();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { getSupportedInputTypes } from '@angular/cdk/platform';\r\n\r\nconst INPUT_INVALID_TYPES = [\r\n 'button',\r\n 'checkbox',\r\n 'file',\r\n 'image',\r\n 'radio',\r\n 'range',\r\n 'reset',\r\n 'submit'\r\n];\r\n\r\nexport function validateType(type: string) {\r\n if (INPUT_INVALID_TYPES.indexOf(type) > -1 || !getSupportedInputTypes().has(type)) {\r\n throw Error(`Input type \"${type}\" isn't supported.`);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport {\r\n booleanAttribute,\r\n Directive,\r\n ElementRef,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { NgControl, Validators } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldControl } from '../form-field';\r\nimport { validateType } from './validators';\r\n\r\n@Directive({\r\n selector: 'input[monkey-input],textarea[monkey-input]',\r\n exportAs: 'monkeyInput',\r\n host: {\r\n class: 'mecx-input',\r\n 'data-testid': 'monkey-input',\r\n '[class.mecx-input-disabled]': 'disabled',\r\n '[id]': 'id',\r\n '[disabled]': 'disabled',\r\n '[required]': 'required',\r\n '[attr.name]': 'name || null',\r\n '[attr.disabled]': 'disabled || null',\r\n '[attr.aria-required]': 'required',\r\n '[attr.id]': 'id',\r\n '(focus)': 'focusChanged(true)',\r\n '(focusout)': 'focusOutChanged()',\r\n '(blur)': 'focusChanged(false)'\r\n },\r\n providers: [\r\n {\r\n provide: MonkeyFormFieldControl,\r\n // eslint-disable-next-line no-use-before-define\r\n useExisting: MonkeyInputDirective\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class MonkeyInputDirective implements MonkeyFormFieldControl, OnChanges, OnDestroy {\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-input-');\r\n\r\n protected _id!: string;\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n @Input() name!: string;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: BooleanInput) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n protected _required: boolean | undefined;\r\n\r\n protected _disabled = false;\r\n\r\n @Input()\r\n get type(): string {\r\n return this._type;\r\n }\r\n\r\n set type(value: string) {\r\n validateType(value);\r\n this._type = value || 'text';\r\n\r\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\r\n }\r\n\r\n @Input()\r\n get min(): string {\r\n return this._min;\r\n }\r\n\r\n set min(value: string) {\r\n this._min = value;\r\n\r\n if (this._type === 'date') {\r\n (this._elementRef.nativeElement as HTMLInputElement).min = this._min;\r\n }\r\n }\r\n\r\n @Input()\r\n get max(): string {\r\n return this._max;\r\n }\r\n\r\n set max(value: string) {\r\n this._max = value;\r\n\r\n if (this._type === 'date') {\r\n (this._elementRef.nativeElement as HTMLInputElement).max = this._max;\r\n }\r\n }\r\n\r\n protected _type = 'text';\r\n\r\n protected _min!: string;\r\n\r\n protected _max!: string;\r\n\r\n get currency(): boolean {\r\n return false;\r\n }\r\n\r\n @Input()\r\n get percent(): boolean {\r\n return this._percent;\r\n }\r\n\r\n set percent(value: '') {\r\n this._percent = true;\r\n }\r\n\r\n protected _percent = false;\r\n\r\n ngControl = inject(NgControl, { self: true, optional: true });\r\n\r\n focused: boolean = false;\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n private markAsUntouched() {\r\n this.ngControl?.control?.markAsUntouched();\r\n }\r\n\r\n private focus(options?: FocusOptions): void {\r\n this._elementRef.nativeElement.focus(options);\r\n this.markAsUntouched();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n ngOnChanges({ disabled }: SimpleChanges): void {\r\n if (!disabled) {\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n this.focus();\r\n }\r\n }\r\n\r\n focusChanged(isFocused: boolean) {\r\n if (isFocused === this.focused) {\r\n return;\r\n }\r\n\r\n if (isFocused && this.disabled) {\r\n const element = this._elementRef.nativeElement as HTMLInputElement;\r\n\r\n if (element.type === 'number') {\r\n element.type = 'text';\r\n element.setSelectionRange(0, 0);\r\n element.type = 'number';\r\n } else {\r\n element.setSelectionRange(0, 0);\r\n }\r\n }\r\n\r\n this.markAsUntouched();\r\n this.focused = isFocused;\r\n this.stateChanges.next();\r\n }\r\n\r\n focusOutChanged() {\r\n this.ngControl?.control?.markAsTouched();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CurrencyPipe } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MonkeyInputCurrencyDirective } from './input-currency.directive';\r\nimport { MonkeyInputDirective } from './input.directive';\r\n\r\n@NgModule({\r\n providers: [CurrencyPipe],\r\n declarations: [MonkeyInputDirective, MonkeyInputCurrencyDirective],\r\n exports: [MonkeyInputDirective, MonkeyInputCurrencyDirective]\r\n})\r\nexport class MonkeyInputModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-currency.directive';\r\nexport * from './input.directive';\r\nexport * from './input.module';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyButtonColor } from '../../interfaces/button';\r\n\r\n@Component({\r\n selector: 'monkey-icon-button',\r\n imports: [CommonModule, UtilIconComponent],\r\n templateUrl: './icon-button.component.html',\r\n styleUrl: './icon-button.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-icon-button',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyIconButtonComponent {\r\n @Input() type: 'primary' | 'secondary' | 'tertiary' = 'primary';\r\n\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Input() disabled: boolean = false;\r\n\r\n @Input() icon = '';\r\n\r\n @Input() loading!: boolean;\r\n\r\n @Input() color: MonkeyButtonColor = 'default';\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-icon-button-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: any) {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n }\r\n}\r\n","<button\r\n class=\"mecx-icon-button\"\r\n [ngClass]=\"type + ' ' + size + ' ' + color\"\r\n [disabled]=\"disabled || loading\"\r\n>\r\n <div class=\"content\">\r\n @if (loading) {\r\n <util-icon class=\"mecx-icon-loading\" name=\"loading\" />\r\n }\r\n @if (!loading) {\r\n <i class=\"mk-i mk-i-{{icon}} {{size}}\"></i>\r\n }\r\n </div>\r\n</button>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './icon-button.component';\r\n","/* eslint-disable no-unused-vars */\r\n/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n addDays,\r\n addMonths,\r\n addYears,\r\n endOfMonth,\r\n endOfWeek,\r\n format,\r\n getMonth,\r\n getYear,\r\n isAfter,\r\n isBefore,\r\n isSameMonth,\r\n isToday,\r\n parseISO,\r\n startOfMonth,\r\n startOfWeek,\r\n subMonths,\r\n subYears\r\n} from 'date-fns';\r\n\r\nexport interface DefaultDates {\r\n minDate: string;\r\n maxDate: string;\r\n}\r\n\r\nexport interface WeekDay {\r\n date: Date | null;\r\n isDisabled: boolean;\r\n isToday: boolean;\r\n}\r\n\r\nexport interface CalendarWeekDay {\r\n blockNext: boolean;\r\n blockPrev: boolean;\r\n days: (WeekDay | null)[];\r\n}\r\n\r\nexport enum QuickActionsEnum {\r\n LAST_30_DAYS = -30,\r\n LAST_60_DAYS = -60,\r\n LAST_90_DAYS = -90,\r\n LAST_6_MONTHS = -180,\r\n LAST_12_MONTHS = -365,\r\n NEXT_30_DAYS = 30,\r\n NEXT_60_DAYS = 60,\r\n NEXT_90_DAYS = 90,\r\n NEXT_6_MONTHS = 180,\r\n NEXT_12_MONTHS = 365\r\n}\r\n\r\nexport function parseStringDate(val: Date | string) {\r\n if (typeof val === 'string') {\r\n return format(parseISO(val as string), 'yyyy-MM-dd');\r\n }\r\n\r\n return val.toISOString().split('T')[0];\r\n}\r\n\r\nexport function getDefaultdates(): DefaultDates {\r\n return {\r\n minDate: format(subYears(new Date(), 15), 'yyyy-MM-dd'),\r\n maxDate: format(addYears(new Date(), 15), 'yyyy-MM-dd')\r\n };\r\n}\r\n\r\nexport function buildCalendars(date: Date | string, action?: 'previous' | 'next') {\r\n if (action) {\r\n if (action === 'previous') {\r\n date = subMonths(date, 1);\r\n } else {\r\n date = addMonths(date, 1);\r\n }\r\n }\r\n\r\n const firstMonth = getMonth(date);\r\n const firstYear = getYear(date);\r\n\r\n const secondDate = addMonths(date, 1);\r\n\r\n const secondMonth = getMonth(secondDate);\r\n const secondYear = getYear(secondDate);\r\n\r\n return {\r\n firstCalendar: {\r\n month: firstMonth,\r\n year: firstYear\r\n },\r\n secondCalendar: {\r\n month: secondMonth,\r\n year: secondYear\r\n }\r\n };\r\n}\r\n\r\nexport function buildMonthByDays(\r\n year: number,\r\n month: number,\r\n minDate: Date | string,\r\n maxDate: Date | string\r\n): CalendarWeekDay {\r\n const date = new Date(year, month, 1);\r\n const start = startOfWeek(startOfMonth(date), { weekStartsOn: 0 });\r\n const end = endOfWeek(endOfMonth(date), { weekStartsOn: 0 });\r\n\r\n const days: (WeekDay | null)[] = [];\r\n let blockPrev = false;\r\n let blockNext = false;\r\n\r\n let current = start;\r\n while (current <= end) {\r\n const isCurrentMonth = isSameMonth(current, date);\r\n const isBeforeMin = minDate\r\n ? isBefore(parseStringDate(current), parseStringDate(minDate))\r\n : false;\r\n if (isBeforeMin) {\r\n blockPrev = true;\r\n }\r\n const isAfterMax = maxDate\r\n ? isAfter(parseStringDate(current), parseStringDate(maxDate))\r\n : false;\r\n if (isAfterMax) {\r\n blockNext = true;\r\n }\r\n\r\n days.push({\r\n date: isCurrentMonth ? current : null,\r\n isDisabled: !isCurrentMonth || isBeforeMin || isAfterMax,\r\n isToday: isToday(current)\r\n });\r\n current = addDays(current, 1);\r\n }\r\n\r\n return {\r\n blockPrev,\r\n blockNext,\r\n days\r\n };\r\n}\r\n\r\nexport function getEnumKeys(enumObj: any): any[] {\r\n return Object.entries(enumObj)\r\n .filter(([key]) => {\r\n return Number.isNaN(Number(key));\r\n })\r\n .map(([key, value]) => {\r\n return { key, value };\r\n });\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n Output\r\n} from '@angular/core';\r\nimport { format, isAfter, isWithinInterval } from 'date-fns';\r\nimport { IdGenerator } from '../../../../utils';\r\nimport { MonkeyDictionaryService } from '../../../services/dictionary.service';\r\nimport { MonkeyIconButtonComponent } from '../../icon-button';\r\nimport * as Utils from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-date-range-month',\r\n imports: [CommonModule, MonkeyIconButtonComponent],\r\n templateUrl: './month.component.html',\r\n styleUrl: './month.component.scss',\r\n host: {\r\n 'data-testid': 'month',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDateRangeMonthComponent implements OnChanges {\r\n @Input({ required: true }) month!: number;\r\n\r\n @Input({ required: true }) year!: number;\r\n\r\n @Input() set startDate(val: string) {\r\n this._handledStartDate = val;\r\n }\r\n\r\n @Input() set endDate(val: string) {\r\n this._handledEndDate = val;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n hidePrevious!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideNext!: boolean;\r\n\r\n @Input() minDate!: string;\r\n\r\n @Input() maxDate!: string;\r\n\r\n @Output() onNavigate = new EventEmitter();\r\n\r\n @Output() onDate = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-date-range-month-');\r\n\r\n protected _id!: string;\r\n\r\n private readonly _today = new Date();\r\n\r\n private _handledStartDate!: string;\r\n\r\n private _handledEndDate!: string;\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('DATE-RANGE');\r\n\r\n daysInMonth!: Utils.CalendarWeekDay;\r\n\r\n temporaryEndDate!: Utils.WeekDay | null;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.daysInMonth = Utils.buildMonthByDays(this.year, this.month, this.minDate, this.maxDate);\r\n }\r\n\r\n isFirst(param: Utils.WeekDay): boolean {\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n return (this._handledStartDate && this._handledStartDate === date) || false;\r\n }\r\n\r\n isLast(param: Utils.WeekDay): boolean {\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n return (this._handledEndDate && this._handledEndDate === date) || false;\r\n }\r\n\r\n isSelected(param: Utils.WeekDay): boolean {\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n return (\r\n (this._handledStartDate && this._handledStartDate === date) ||\r\n (this._handledEndDate && this._handledEndDate === date) ||\r\n false\r\n );\r\n }\r\n\r\n isInRange(param: Utils.WeekDay): boolean {\r\n if (!this._handledStartDate || !this._handledEndDate || !param.date) return false;\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n\r\n return isWithinInterval(new Date(date), {\r\n start: new Date(this._handledStartDate),\r\n end: new Date(this._handledEndDate)\r\n });\r\n }\r\n\r\n isInRangeTemporary(param: Utils.WeekDay): boolean {\r\n if (\r\n !this._handledStartDate ||\r\n !this.temporaryEndDate?.date ||\r\n !param.date ||\r\n param.isDisabled ||\r\n (this._handledStartDate && this._handledEndDate)\r\n )\r\n return false;\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n\r\n return isWithinInterval(new Date(date), {\r\n start: new Date(this._handledStartDate),\r\n end: new Date(this.temporaryEndDate.date)\r\n });\r\n }\r\n\r\n isInLastTemporary(param: Utils.WeekDay): boolean {\r\n if (!this.temporaryEndDate?.date || !param.date || this._handledEndDate) return false;\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n const cmp = format(this.temporaryEndDate?.date!, 'yyyy-MM-dd');\r\n return (this.temporaryEndDate?.date && cmp === date) || false;\r\n }\r\n\r\n onSelectDate(event: Event, param: Utils.WeekDay) {\r\n if (param?.isDisabled || !param.date) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const date = format(param.date, 'yyyy-MM-dd');\r\n if (this._handledStartDate && this._handledEndDate) {\r\n this._handledStartDate = '';\r\n this._handledEndDate = '';\r\n }\r\n\r\n if (!this._handledStartDate) {\r\n this._handledStartDate = date;\r\n } else {\r\n this._handledEndDate = date;\r\n }\r\n\r\n const cmp = isAfter(this._handledStartDate, this._handledEndDate);\r\n\r\n if (this._handledStartDate && this._handledEndDate && cmp) {\r\n const start = this._handledStartDate;\r\n const end = this._handledEndDate;\r\n this._handledStartDate = end;\r\n this._handledEndDate = start;\r\n }\r\n\r\n this.onDate.next({\r\n startDate: this._handledStartDate,\r\n endDate: this._handledEndDate\r\n });\r\n }\r\n}\r\n","@if (i18nDictionary | async; as i18n) {\r\n <div class=\"header\">\r\n @if (!hidePrevious) {\r\n <monkey-icon-button\r\n size=\"sm\"\r\n icon=\"arrow-left\"\r\n type=\"secondary\"\r\n class=\"previous\"\r\n [disabled]=\"daysInMonth.blockPrev\"\r\n (click)=\"onNavigate.next('previous')\"\r\n >\r\n </monkey-icon-button>\r\n }\r\n {{ i18n?.['MONTHS']?.[month] }} {{ year }}\r\n @if (!hideNext) {\r\n <monkey-icon-button\r\n size=\"sm\"\r\n icon=\"arrow-right\"\r\n type=\"secondary\"\r\n class=\"next\"\r\n [disabled]=\"daysInMonth.blockNext\"\r\n (click)=\"onNavigate.next('next')\"\r\n >\r\n </monkey-icon-button>\r\n }\r\n </div>\r\n <div class=\"week-labels\">\r\n @for (day of i18n?.['WEEK-DAYS']; track day) {\r\n <span class=\"day\">{{ day }}</span>\r\n }\r\n </div>\r\n <div class=\"dates\">\r\n @for (day of daysInMonth.days; track $index) {\r\n <div\r\n class=\"day\"\r\n [class.disabled]=\"day!.isDisabled\"\r\n [class.in-range]=\"isInRange(day!)\"\r\n [class.selected]=\"isSelected(day!)\"\r\n [class.first]=\"isFirst(day!)\"\r\n [class.last]=\"isLast(day!)\"\r\n [class.in-range-temporary]=\"isInRangeTemporary(day!)\"\r\n [class.temporary-last]=\"isInLastTemporary(day!)\"\r\n (click)=\"onSelectDate($event, day!)\"\r\n (mouseenter)=\"temporaryEndDate = day!\"\r\n (mouseleave)=\"temporaryEndDate = null\"\r\n >\r\n {{ day!.date | date: 'd' }}\r\n @if (day?.isToday) {\r\n <span class=\"today\"></span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './month.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\nimport { MonkeyDictionaryService } from '../../../services/dictionary.service';\r\nimport * as Utils from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-date-range-quick-actions',\r\n imports: [CommonModule],\r\n templateUrl: './quick-actions.component.html',\r\n styleUrl: './quick-actions.component.scss',\r\n host: {\r\n 'data-testid': 'quick-actions',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDateRangeQuickActionsComponent {\r\n @Output() onChange = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-date-range-month-quick-actions-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n selectedAction = '';\r\n\r\n readonly actions = Utils.getEnumKeys(Utils.QuickActionsEnum);\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('DATE-RANGE');\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n onHandleAction({ key, value }: { key: string; value: number }) {\r\n this.selectedAction = key;\r\n this.onChange.next(value);\r\n }\r\n}\r\n","@if (i18nDictionary | async; as i18n) {\r\n @for (item of actions; track item.key) {\r\n <div\r\n class=\"item\"\r\n [class.selected]=\"item.key === selectedAction\"\r\n (click)=\"onHandleAction(item)\"\r\n [attr.tabindex]=\"$index\"\r\n >\r\n {{ i18n?.['QUICK-ACTIONS']?.[item.key] }}\r\n </div>\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './quick-actions.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { addDays, isAfter, isBefore, subDays } from 'date-fns';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyErrorDirective } from '../../directives/error';\r\nimport { MonkeyLabelDirective } from '../../directives/label';\r\nimport { MonkeyDictionaryService } from '../../services/dictionary.service';\r\nimport { MonkeyButtonComponent } from '../button';\r\nimport { MonkeyFormFieldModule } from '../form-field';\r\nimport { MonkeyInputModule } from '../input';\r\nimport { MonkeyDateRangeMonthComponent } from './month';\r\nimport { MonkeyDateRangeQuickActionsComponent } from './quick-actions';\r\nimport * as Utils from './utils';\r\n\r\ninterface Calendar {\r\n month: number;\r\n year: number;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-date-range',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MonkeyInputModule,\r\n MonkeyFormFieldModule,\r\n MonkeyLabelDirective,\r\n MonkeyErrorDirective,\r\n MonkeyButtonComponent,\r\n MonkeyDateRangeMonthComponent,\r\n MonkeyDateRangeQuickActionsComponent\r\n ],\r\n templateUrl: './date-range.component.html',\r\n styleUrl: './date-range.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-date-range',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDateRangeComponent implements OnInit {\r\n @Input() set startDate(val: string) {\r\n this.handledStartDate = val;\r\n }\r\n\r\n @Input() set endDate(val: string) {\r\n this.handledEndDate = val;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideQuickAction!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideHeader!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideActions!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideSecondCalendar!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n allowFastActionOnHeader!: boolean;\r\n\r\n @Input() set minDate(val: Date | string) {\r\n if (val) {\r\n this.handledMinDate = Utils.parseStringDate(val);\r\n }\r\n }\r\n\r\n @Input() set maxDate(val: Date | string) {\r\n if (val) {\r\n this.handledMaxDate = Utils.parseStringDate(val);\r\n }\r\n }\r\n\r\n @Output() onCancel = new EventEmitter();\r\n\r\n @Output() onDate = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-date-range-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n private _screenWidth: number = window.innerWidth;\r\n\r\n private _allowChangeFastAction = true;\r\n\r\n private _allowChangeSecondCalendar = true;\r\n\r\n private readonly _today = new Date();\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('DATE-RANGE');\r\n\r\n handledStartDate!: string;\r\n\r\n handledEndDate!: string;\r\n\r\n firstCalendar!: Calendar;\r\n\r\n secondCalendar!: Calendar;\r\n\r\n isInvalidInterval = false;\r\n\r\n handledMinDate: string = Utils.getDefaultdates().minDate;\r\n\r\n handledMaxDate: string = Utils.getDefaultdates().maxDate;\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n private handleInitialValues() {\r\n const calendars = Utils.buildCalendars(this.handledStartDate || new Date());\r\n this.firstCalendar = calendars.firstCalendar;\r\n this.secondCalendar = calendars.secondCalendar;\r\n }\r\n\r\n private handleProperties() {\r\n if (this._screenWidth < 950) {\r\n if (this._allowChangeFastAction) {\r\n this.hideQuickAction = true;\r\n this.allowFastActionOnHeader = false;\r\n }\r\n if (this._allowChangeSecondCalendar) {\r\n this.hideSecondCalendar = true;\r\n }\r\n } else {\r\n if (this._allowChangeFastAction) {\r\n this.hideQuickAction = false;\r\n this.allowFastActionOnHeader = false;\r\n }\r\n if (this._allowChangeSecondCalendar) {\r\n this.hideSecondCalendar = false;\r\n }\r\n }\r\n }\r\n\r\n private handleInputChange(event: Event, isStart: boolean): void {\r\n const input = event.target as HTMLInputElement;\r\n const { value } = input;\r\n const [year] = value.split('-');\r\n if (`${Number(year)}`.length < 4) return;\r\n\r\n if (!input.checkValidity()) {\r\n event.preventDefault();\r\n input.value = '';\r\n this.isInvalidInterval = true;\r\n return;\r\n }\r\n\r\n this.isInvalidInterval = false;\r\n\r\n if (isStart) {\r\n this.handledStartDate = value;\r\n } else {\r\n this.handledEndDate = value;\r\n }\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any) {\r\n this._screenWidth = (event.target as Window).innerWidth;\r\n this.handleProperties();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.hideQuickAction) {\r\n this._allowChangeFastAction = false;\r\n }\r\n if (this.hideSecondCalendar) {\r\n this._allowChangeSecondCalendar = false;\r\n }\r\n if (this.allowFastActionOnHeader) {\r\n this._allowChangeFastAction = false;\r\n this.hideQuickAction = true;\r\n }\r\n\r\n this.handleInitialValues();\r\n this.handleProperties();\r\n }\r\n\r\n onHandleDate({ startDate, endDate }: { startDate: string; endDate: string }) {\r\n this.handledStartDate = startDate;\r\n this.handledEndDate = endDate;\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n onSubmit() {\r\n this.onDate.next({\r\n startDate: this.handledStartDate ?? '',\r\n endDate: this.handledEndDate ?? ''\r\n });\r\n }\r\n\r\n onHandleQuickAction(event: number) {\r\n const isBackward = event < 0;\r\n const days = Math.abs(event);\r\n\r\n if (isBackward) {\r\n const baseDate = Utils.parseStringDate(\r\n this.handledEndDate || this.handledStartDate || this._today\r\n );\r\n\r\n let startDate: string | Date = subDays(baseDate, days);\r\n\r\n if (isBefore(startDate, this.handledMinDate)) {\r\n startDate = this.handledMinDate;\r\n }\r\n\r\n this.handledStartDate = Utils.parseStringDate(startDate);\r\n this.handledEndDate = Utils.parseStringDate(baseDate);\r\n } else {\r\n const baseDate = Utils.parseStringDate(\r\n this.handledStartDate || this.handledEndDate || this._today\r\n );\r\n\r\n let endDate: string | Date = addDays(baseDate, days);\r\n\r\n if (isAfter(endDate, this.handledMaxDate)) {\r\n endDate = this.handledMaxDate;\r\n }\r\n\r\n this.handledStartDate = Utils.parseStringDate(baseDate);\r\n this.handledEndDate = Utils.parseStringDate(endDate);\r\n }\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n onChangeInputStartDate(event: Event) {\r\n this.handleInputChange(event, true);\r\n }\r\n\r\n onChangeInputEndDate(event: Event) {\r\n this.handleInputChange(event, false);\r\n }\r\n\r\n onDataChange(event: string, isStart: boolean) {\r\n if (isStart) {\r\n this.handledStartDate = event;\r\n this.handledEndDate = '';\r\n } else {\r\n this.handledEndDate = event;\r\n }\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n onHandleNavigate(action: 'previous' | 'next') {\r\n if (!action) return;\r\n const date = new Date(this.firstCalendar.year, this.firstCalendar.month, 1);\r\n const calendars = Utils.buildCalendars(date, action);\r\n this.firstCalendar = calendars.firstCalendar;\r\n this.secondCalendar = calendars.secondCalendar;\r\n }\r\n}\r\n","@if (i18nDictionary | async; as i18n) {\r\n <div class=\"container-date-range-group\">\r\n @if (!hideQuickAction) {\r\n <div class=\"quick-actions\">\r\n <monkey-date-range-quick-actions (onChange)=\"onHandleQuickAction($event)\">\r\n </monkey-date-range-quick-actions>\r\n </div>\r\n }\r\n <div class=\"container-date-range\">\r\n @if (!hideHeader) {\r\n <div class=\"header\" [class.no-quick-action]=\"hideQuickAction\">\r\n @if (allowFastActionOnHeader) {\r\n <div class=\"quick-actions\">\r\n <monkey-date-range-quick-actions (onChange)=\"onHandleQuickAction($event)\">\r\n </monkey-date-range-quick-actions>\r\n </div>\r\n } @else {\r\n <div class=\"inputs\">\r\n <monkey-form-field hideAction enableClear size=\"sm\">\r\n <monkey-label>{{ i18n?.['START-DATE'] }}</monkey-label>\r\n <input\r\n type=\"date\"\r\n monkey-input\r\n id=\"startDate\"\r\n [(ngModel)]=\"handledStartDate\"\r\n (ngModelChange)=\"onDataChange($event, true)\"\r\n [min]=\"handledMinDate\"\r\n [max]=\"handledEndDate ? handledEndDate : handledMaxDate\"\r\n (change)=\"onChangeInputStartDate($event)\"\r\n />\r\n </monkey-form-field>\r\n <monkey-form-field hideAction enableClear size=\"sm\">\r\n <monkey-label>{{ i18n?.['END-DATE'] }}</monkey-label>\r\n <input\r\n type=\"date\"\r\n monkey-input\r\n id=\"endDate\"\r\n [(ngModel)]=\"handledEndDate\"\r\n (ngModelChange)=\"onDataChange($event, false)\"\r\n [min]=\"handledStartDate ? handledStartDate : ''\"\r\n [max]=\"handledMaxDate\"\r\n (change)=\"onChangeInputEndDate($event)\"\r\n />\r\n </monkey-form-field>\r\n </div>\r\n @if (isInvalidInterval) {\r\n <monkey-error>{{ i18n?.['INVALID'] }}</monkey-error>\r\n }\r\n }\r\n </div>\r\n }\r\n <div class=\"body\">\r\n <div class=\"calendars\">\r\n <monkey-date-range-month\r\n [month]=\"firstCalendar.month\"\r\n [year]=\"firstCalendar.year\"\r\n [startDate]=\"handledStartDate\"\r\n [endDate]=\"handledEndDate\"\r\n (onDate)=\"onHandleDate($event)\"\r\n (onNavigate)=\"onHandleNavigate($event)\"\r\n [hideNext]=\"!hideSecondCalendar\"\r\n [minDate]=\"handledMinDate\"\r\n [maxDate]=\"handledMaxDate\"\r\n >\r\n </monkey-date-range-month>\r\n @if (!hideSecondCalendar) {\r\n <monkey-date-range-month\r\n [month]=\"secondCalendar.month\"\r\n [year]=\"secondCalendar.year\"\r\n [startDate]=\"handledStartDate\"\r\n [endDate]=\"handledEndDate\"\r\n (onDate)=\"onHandleDate($event)\"\r\n (onNavigate)=\"onHandleNavigate($event)\"\r\n hidePrevious\r\n [minDate]=\"handledMinDate\"\r\n [maxDate]=\"handledMaxDate\"\r\n >\r\n </monkey-date-range-month>\r\n }\r\n </div>\r\n </div>\r\n @if (!hideActions) {\r\n <div class=\"actions\">\r\n <monkey-button size=\"sm\" type=\"secondary\" (click)=\"onCancel.next(null)\">\r\n {{ i18n?.ACTIONS?.CANCEL }}\r\n </monkey-button>\r\n <monkey-button\r\n size=\"sm\"\r\n (click)=\"onSubmit()\"\r\n [disabled]=\"!this.handledStartDate || !this.handledEndDate\"\r\n >\r\n {{ i18n?.ACTIONS?.APPLY }}\r\n </monkey-button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './date-range.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n HostBinding,\r\n inject,\r\n Input,\r\n input,\r\n InputSignal,\r\n InputSignalWithTransform,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-divider',\r\n standalone: true,\r\n styleUrl: './divider.component.scss',\r\n template: '',\r\n host: {\r\n 'data-testid': 'monkey-divider',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDividerComponent {\r\n size: InputSignal<MonkeySize> = input<MonkeySize>('sm');\r\n\r\n vertical: InputSignalWithTransform<boolean, unknown> = input(false, {\r\n transform: booleanAttribute\r\n });\r\n\r\n @HostBinding('class')\r\n get classes(): string {\r\n return `${this.size()} ${this.vertical() ? 'vertical' : ''}`;\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-divider-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './divider.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeyButtonColor, MonkeyButtonType } from '../../interfaces/button';\r\nimport { MonkeySize } from '../../interfaces/sizes';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\nexport type MonkeyDownloadButtonChangeEvent = {\r\n // eslint-disable-next-line no-use-before-define\r\n component: MonkeyDownloadButtonComponent;\r\n};\r\n\r\n@Component({\r\n selector: 'monkey-download-button',\r\n imports: [MonkeyButtonComponent],\r\n template: `\r\n <monkey-button\r\n [type]=\"type\"\r\n [color]=\"color\"\r\n [size]=\"size\"\r\n [class.has-progress]=\"hasProgress\"\r\n [disabled]=\"disabled || hasProgress\"\r\n (click)=\"onDownload()\"\r\n class=\"w-100\"\r\n >\r\n <div class=\"content-download\">\r\n @if (!loading) {\r\n <ng-content select=\"[first]\"></ng-content>\r\n }\r\n <span><ng-content></ng-content></span>\r\n @if (!loading) {\r\n <ng-content select=\"[last]\"></ng-content>\r\n }\r\n </div>\r\n\r\n @if (hasProgress) {\r\n <div\r\n class=\"content-download-progress\"\r\n [style.--mecx-button-progress]=\"hasProgress ? safeProgress + '%' : null\"\r\n >\r\n <span [class.pe-2]=\"enablleMargin\">{{ safeProgress }}%</span>\r\n </div>\r\n }\r\n </monkey-button>\r\n `,\r\n styleUrl: './download-button.component.scss',\r\n host: {\r\n '[attr.data-testid]': \"'monkey-download-button'\",\r\n class: 'mecx-download-button',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex'\r\n }\r\n})\r\nexport class MonkeyDownloadButtonComponent {\r\n @Input() progress: number = 0;\r\n\r\n @Input() disabled!: boolean;\r\n\r\n @Input() color: MonkeyButtonColor = 'default';\r\n\r\n @Input() size: MonkeySize = 'md';\r\n\r\n @Input() type: MonkeyButtonType = 'primary';\r\n\r\n @Input() loading!: boolean;\r\n\r\n @Input() tabIndex = -1;\r\n\r\n @Output() onChange = new EventEmitter<MonkeyDownloadButtonChangeEvent>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-download-button-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n get safeProgress(): number {\r\n return Math.min(Math.max(this.progress, 1), 100);\r\n }\r\n\r\n get hasProgress(): boolean {\r\n return typeof this.progress === 'number' && this.progress > 0;\r\n }\r\n\r\n get enablleMargin(): boolean {\r\n return this.safeProgress === 100;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n onDownload() {\r\n this.onChange.emit({ component: this });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './download-button.component';\r\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport { computed, Injectable, signal } from '@angular/core';\nimport {\n ActiveFilter,\n AutocompleteSuggestion,\n ComplexFilterCondition,\n ComplexFilterGroup,\n ComplexFilterOperator,\n FilterBarConfig,\n FilterOption\n} from './filter-config.interface';\n\nexport interface FilterBarState {\n search: string;\n filters: ActiveFilter[];\n complexQuery?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MonkeyFilterBarService {\n private _configs = signal<Map<string, FilterBarConfig>>(new Map());\n private _activeFilters = signal<Map<string, ActiveFilter[]>>(new Map());\n private _searchValues = signal<Map<string, string>>(new Map());\n private _complexQueries = signal<Map<string, string>>(new Map());\n\n setConfig(storageKey: string, config: FilterBarConfig): void {\n this._configs.update((configs) => {\n const updated = new Map(configs);\n updated.set(storageKey, config);\n return updated;\n });\n }\n\n getConfig(storageKey: string): FilterBarConfig | undefined {\n return this._configs().get(storageKey);\n }\n\n config(storageKey: string) {\n return computed(() => this._configs().get(storageKey));\n }\n\n availableFilterOptions(storageKey: string): FilterOption[] {\n const config = this._configs().get(storageKey);\n if (!config || !config.filterOptions) return [];\n const activeKeys = this._activeFilters().get(storageKey)?.map((f) => f.key) || [];\n return config.filterOptions.filter((option) => !activeKeys.includes(option.key));\n }\n\n getActiveFilters(storageKey: string): ActiveFilter[] {\n return this._activeFilters().get(storageKey) || [];\n }\n\n activeFilters(storageKey: string) {\n return computed(() => this._activeFilters().get(storageKey) || []);\n }\n\n isFilterActive(storageKey: string, filterKey: string): boolean {\n const filters = this._activeFilters().get(storageKey) || [];\n return filters.some((f) => f.key === filterKey);\n }\n\n setActiveFilters(storageKey: string, filters: ActiveFilter[]): void {\n this._activeFilters.update((filtersMap) => {\n const updated = new Map(filtersMap);\n updated.set(storageKey, [...filters]);\n return updated;\n });\n }\n\n addFilter(\n storageKey: string,\n option: FilterOption,\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[]\n ): void {\n if (this.isFilterActive(storageKey, option.key)) return;\n const displayText = this.formatFilterValuePlain(option, value);\n const activeFilter: ActiveFilter = {\n key: option.key,\n label: option.label,\n type: option.type,\n value,\n displayText,\n icon: option.icon\n };\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n const currentFilters = updated.get(storageKey) || [];\n updated.set(storageKey, [...currentFilters, activeFilter]);\n return updated;\n });\n }\n\n updateFilter(\n storageKey: string,\n filterKey: string,\n option: FilterOption,\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[]\n ): void {\n const displayText = this.formatFilterValuePlain(option, value);\n const updatedFilter: ActiveFilter = {\n key: option.key,\n label: option.label,\n type: option.type,\n value,\n displayText,\n icon: option.icon\n };\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n const currentFilters = updated.get(storageKey) || [];\n const index = currentFilters.findIndex((f) => f.key === filterKey);\n if (index !== -1) {\n const newFilters = [...currentFilters];\n newFilters[index] = updatedFilter;\n updated.set(storageKey, newFilters);\n }\n return updated;\n });\n }\n\n removeFilter(storageKey: string, filterKey: string): void {\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n const currentFilters = updated.get(storageKey) || [];\n updated.set(storageKey, currentFilters.filter((f) => f.key !== filterKey));\n return updated;\n });\n }\n\n clearAllFilters(storageKey: string): void {\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n updated.set(storageKey, []);\n return updated;\n });\n this.clearComplexQuery(storageKey);\n }\n\n getSearchValue(storageKey: string): string {\n return this._searchValues().get(storageKey) || '';\n }\n\n searchValue(storageKey: string) {\n return computed(() => this._searchValues().get(storageKey) || '');\n }\n\n setSearchValue(storageKey: string, value: string): void {\n this._searchValues.update((values) => {\n const updated = new Map(values);\n updated.set(storageKey, value);\n return updated;\n });\n }\n\n // ─── Complex query ──────────────────────────────────────────────────────────\n\n getComplexQuery(storageKey: string): string {\n return this._complexQueries().get(storageKey) || '';\n }\n\n setComplexQuery(storageKey: string, query: string): void {\n this._complexQueries.update((map) => {\n const updated = new Map(map);\n updated.set(storageKey, query);\n return updated;\n });\n }\n\n clearComplexQuery(storageKey: string): void {\n this._complexQueries.update((map) => {\n const updated = new Map(map);\n updated.delete(storageKey);\n return updated;\n });\n }\n\n getState(storageKey: string): FilterBarState {\n const complexQuery = this.getComplexQuery(storageKey);\n return {\n search: this.getSearchValue(storageKey),\n filters: this.getActiveFilters(storageKey),\n ...(complexQuery ? { complexQuery } : {})\n };\n }\n\n state(storageKey: string) {\n return computed(() => ({\n search: this.getSearchValue(storageKey),\n filters: this.getActiveFilters(storageKey),\n complexQuery: this.getComplexQuery(storageKey) || undefined\n }));\n }\n\n // ─── Autocomplete engine ────────────────────────────────────────────────────\n\n /**\n * Returns autocomplete suggestions for the complex filter input.\n *\n * Token resolution (relative to cursorPos):\n * - Scan backwards from cursor over non-whitespace / non-paren chars → currentToken\n * - Token with operator (fieldKey[:<>]valuePrefix) → suggest status values\n * - Token without operator → suggest fields, AND/OR (after a complete term), and ( (at top level)\n */\n getAutocompleteSuggestions(\n storageKey: string,\n query: string,\n cursorPos: number\n ): AutocompleteSuggestion[] {\n const config = this._configs().get(storageKey);\n if (!config?.filterOptions?.length) return [];\n\n const textBefore = query.substring(0, cursorPos);\n\n // Current word: scan back over non-whitespace, non-paren characters\n let tokenStart = cursorPos;\n while (tokenStart > 0 && !/[\\s()]/.test(textBefore[tokenStart - 1])) tokenStart--;\n const currentToken = textBefore.substring(tokenStart);\n\n // Token has an operator → suggest status values only\n const withOperator = currentToken.match(/^([a-zA-Z_][a-zA-Z0-9_]*)([:<>])(.*)$/);\n if (withOperator) {\n const fieldKey = withOperator[1];\n const valuePrefix = withOperator[3];\n const field = config.filterOptions.find((o) => o.key === fieldKey);\n if (field?.type === 'status' && field.statusOptions?.length) {\n return field.statusOptions\n .filter((s) => s.value.toLowerCase().startsWith(valuePrefix.toLowerCase()))\n .map((s) => ({\n type: 'value' as const,\n label: s.description,\n sublabel: s.value,\n insertValue: s.value\n }));\n }\n return [];\n }\n\n const items: AutocompleteSuggestion[] = [];\n const fieldPrefix = currentToken.toLowerCase();\n\n // What comes just before the current token (trimmed)?\n const textBeforeToken = textBefore.substring(0, tokenStart).trimEnd();\n const lastNonSpace = textBeforeToken.at(-1) ?? '';\n\n // Unmatched open-paren count tells us whether we're inside a group\n const openCount = (textBefore.match(/\\(/g) ?? []).length;\n const closeCount = (textBefore.match(/\\)/g) ?? []).length;\n const parenDepth = openCount - closeCount;\n\n // A complete term or closing group precedes → AND/OR can follow\n const afterComplete =\n lastNonSpace === ')' ||\n /[a-zA-Z_][a-zA-Z0-9_]*[:<>]\\S+$/.test(textBeforeToken);\n\n if (afterComplete) {\n if ('AND'.startsWith(fieldPrefix.toUpperCase()))\n items.push({ type: 'logical', label: 'AND', insertValue: 'AND ' });\n if ('OR'.startsWith(fieldPrefix.toUpperCase()))\n items.push({ type: 'logical', label: 'OR', insertValue: 'OR ' });\n }\n\n // Suggest ( at top-level, but only when not directly after a complete term\n if (parenDepth === 0 && !afterComplete && '('.startsWith(fieldPrefix)) {\n items.push({ type: 'logical', label: '( grupo )', insertValue: '(' });\n }\n\n // Field names matching the current prefix (always, so typing after AND/OR still helps)\n config.filterOptions\n .filter((o) => o.key.toLowerCase().startsWith(fieldPrefix))\n .forEach((o) =>\n items.push({\n type: 'field',\n label: o.label,\n sublabel: o.key,\n insertValue: o.key,\n explanation: o.explanation\n })\n );\n\n return items;\n }\n\n /**\n * Parses a raw complex query string into structured groups.\n * Parenthesised expressions become a single group; bare conditions\n * each become their own single-condition group.\n *\n * Example: `(a:1 OR b:2) AND c:3` →\n * [{ conditions:[{a:1},{logicalOp:OR,b:2}] }, { logicalOp:AND, conditions:[{c:3}] }]\n */\n parseComplexQuery(raw: string): ComplexFilterGroup[] {\n if (!raw.trim()) return [];\n\n const groups: ComplexFilterGroup[] = [];\n let i = 0;\n let groupLogicalOp: 'AND' | 'OR' | undefined;\n\n const skipWS = () => {\n while (i < raw.length && raw[i] === ' ') i++;\n };\n\n const readWord = (): string => {\n const start = i;\n while (i < raw.length && raw[i] !== ' ' && raw[i] !== '(' && raw[i] !== ')') i++;\n return raw.substring(start, i);\n };\n\n const parseGroup = (): ComplexFilterCondition[] => {\n const conditions: ComplexFilterCondition[] = [];\n let condLogicalOp: 'AND' | 'OR' | undefined;\n while (i < raw.length && raw[i] !== ')') {\n skipWS();\n if (i >= raw.length || raw[i] === ')') break;\n const word = readWord();\n if (!word) { i++; continue; }\n const upper = word.toUpperCase();\n if (upper === 'AND' || upper === 'OR') {\n condLogicalOp = upper as 'AND' | 'OR';\n } else {\n const cond = this._parseConditionToken(word, condLogicalOp);\n if (cond) conditions.push(cond);\n condLogicalOp = undefined;\n }\n }\n return conditions;\n };\n\n while (i < raw.length) {\n skipWS();\n if (i >= raw.length) break;\n\n if (raw[i] === '(') {\n i++; // consume '('\n const conditions = parseGroup();\n if (raw[i] === ')') i++; // consume ')'\n if (conditions.length > 0) {\n groups.push({ ...(groupLogicalOp ? { logicalOp: groupLogicalOp } : {}), conditions });\n groupLogicalOp = undefined;\n }\n } else {\n const word = readWord();\n if (!word) { i++; continue; }\n const upper = word.toUpperCase();\n if (upper === 'AND' || upper === 'OR') {\n groupLogicalOp = upper as 'AND' | 'OR';\n } else {\n const cond = this._parseConditionToken(word, undefined);\n if (cond) {\n groups.push({ ...(groupLogicalOp ? { logicalOp: groupLogicalOp } : {}), conditions: [cond] });\n groupLogicalOp = undefined;\n }\n }\n }\n }\n\n return groups;\n }\n\n private _parseConditionToken(\n token: string,\n logicalOp?: 'AND' | 'OR'\n ): ComplexFilterCondition | null {\n const match = token.match(/^([a-zA-Z_][a-zA-Z0-9_]*)([:<>])(.+)$/);\n if (!match) return null;\n return {\n ...(logicalOp ? { logicalOp } : {}),\n field: match[1],\n operator: match[2] as ComplexFilterOperator,\n value: match[3].trim()\n };\n }\n\n private formatFilterValuePlain(\n option: FilterOption,\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[]\n ): string {\n switch (option.type) {\n case 'text':\n return value as string;\n\n case 'date': {\n const dateValue = value as { startDate: string; endDate: string };\n if (dateValue.startDate && dateValue.endDate) {\n return `${dateValue.startDate} - ${dateValue.endDate}`;\n }\n return '';\n }\n\n case 'currency': {\n const currencyValue = value as { min?: number; max?: number };\n if (currencyValue.min !== undefined && currencyValue.max !== undefined) {\n return `${currencyValue.min} - ${currencyValue.max}`;\n } else if (currencyValue.min !== undefined) {\n return `De ${currencyValue.min}`;\n } else if (currencyValue.max !== undefined) {\n return `Até ${currencyValue.max}`;\n }\n return '';\n }\n\n case 'status': {\n const statusValue = value as string[];\n if (statusValue?.length && option.statusOptions) {\n return statusValue\n .map((val) => option.statusOptions?.find((opt) => opt.value === val)?.description || val)\n .join(', ');\n }\n return '';\n }\n\n default:\n return String(value);\n }\n }\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n computed,\n effect,\n ElementRef,\n EventEmitter,\n inject,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MonkeyInfoDirective } from '../../directives/info';\nimport { MonkeyPopoverDirective } from '../../directives/popover';\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\nimport { MonkeyButtonComponent } from '../button';\nimport { MonkeyFormFieldModule } from '../form-field';\nimport { MonkeyIconButtonComponent } from '../icon-button';\nimport { MonkeyInputModule } from '../input';\nimport { MonkeyFilterBarService } from './complex-filter-bar.service';\nimport {\n AutocompleteSuggestion,\n ComplexFilterResult,\n FilterBarConfig\n} from './filter-config.interface';\n\n@Component({\n selector: 'monkey-complex-filter-bar',\n imports: [\n CommonModule,\n FormsModule,\n MonkeyFormFieldModule,\n MonkeyInputModule,\n MonkeyButtonComponent,\n MonkeyIconButtonComponent,\n MonkeyPrefixDirective,\n MonkeyInfoDirective,\n MonkeyPopoverDirective\n ],\n template: `\n <!-- Query input row -->\n <div class=\"complex-filter-bar-row\">\n <div class=\"complex-filter-bar-input-wrap\">\n <monkey-form-field\n class=\"complex-filter-bar-field complex-filter-bar-field--textarea\"\n size=\"sm\"\n [class.complex-filter-bar-field--invalid]=\"!!queryError\"\n >\n <textarea\n #queryInput\n monkey-input\n class=\"complex-filter-bar-input\"\n rows=\"1\"\n autocomplete=\"off\"\n [placeholder]=\"queryPlaceholder()\"\n [(ngModel)]=\"complexQuery\"\n (focus)=\"onInputFocus(queryInput)\"\n (input)=\"onTextareaInput(queryInput)\"\n (keyup)=\"onQueryInput(queryInput)\"\n (keydown)=\"onKeydown($event, queryInput)\"\n (blur)=\"onInputBlur()\"\n ></textarea>\n <monkey-prefix>\n <i class=\"mk-i mk-i-search fs-md\"></i>\n </monkey-prefix>\n <monkey-info>\n <span class=\"me-1\">Use : to equal, > to greater then, < to lower then.</span>\n <a href=\"javascript:void(0)\" class=\"mecx-link fw-regular fs-12\" (click)=\"onShowDocs($event)\">\n <span>Docs</span>\n </a>\n </monkey-info>\n </monkey-form-field>\n\n @if (queryError) {\n <p class=\"complex-filter-bar-error-msg\">{{ queryError }}</p>\n }\n\n @if (autocompleteItems.length > 0) {\n <div class=\"complex-filter-bar-autocomplete\">\n @for (item of autocompleteItems; track item.insertValue; let i = $index) {\n <div\n class=\"complex-filter-bar-autocomplete-item\"\n [class.active]=\"i === autocompleteActiveIndex\"\n (mousedown)=\"onSelectSuggestion(item, queryInput)\"\n >\n <span class=\"complex-filter-bar-autocomplete-badge complex-filter-bar-autocomplete-badge--{{ item.type }}\">\n {{ item.type === 'field' ? 'campo' : item.type === 'logical' ? 'lógico' : 'valor' }}\n </span>\n <span class=\"complex-filter-bar-autocomplete-label\">{{ item.label }}</span>\n @if (item.sublabel) {\n <span class=\"complex-filter-bar-autocomplete-sublabel\">{{ item.sublabel }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <monkey-button size=\"sm\" type=\"primary\" [disabled]=\"!!queryError\" (click)=\"applyQuery()\">\n Aplicar\n </monkey-button>\n\n <div class=\"complex-filter-bar-extra-actions\">\n <ng-content></ng-content>\n </div>\n </div>\n\n <!-- Documentation panel popover -->\n <ng-template\n [monkeyPopover]=\"showDocsPanel\"\n [monkeyPopoverTarget]=\"docsPanelTarget\"\n [monkeyPopoverClosed]=\"closeDocs\"\n monkeyPopoverDir=\"ltr\"\n [monkeyPopoverHideHeader]=\"true\"\n >\n <div class=\"complex-filter-bar-docs-panel\">\n <div class=\"complex-filter-bar-docs-header\">\n <i class=\"mk-i mk-i-info fs-md\"></i>\n <span>Campos disponíveis</span>\n </div>\n <div class=\"complex-filter-bar-docs-body\">\n @for (opt of allFilterOptions(); track opt.key) {\n <div class=\"complex-filter-bar-docs-field\">\n <div class=\"complex-filter-bar-docs-field-row\">\n <code class=\"complex-filter-bar-docs-key\">{{ opt.key }}</code>\n <span class=\"complex-filter-bar-docs-label\">{{ opt.label }}</span>\n <div class=\"complex-filter-bar-docs-operators\">\n <span class=\"complex-filter-bar-docs-op\">:</span>\n @if (opt.type === 'currency' || opt.type === 'date') {\n <span class=\"complex-filter-bar-docs-op\">></span>\n <span class=\"complex-filter-bar-docs-op\"><</span>\n }\n </div>\n </div>\n @if (opt.explanation) {\n <p class=\"complex-filter-bar-docs-explanation\">{{ opt.explanation }}</p>\n }\n @if (opt.type === 'status' && opt.statusOptions) {\n <div class=\"complex-filter-bar-docs-values\">\n @for (s of opt.statusOptions; track s.value) {\n <code class=\"complex-filter-bar-docs-value-badge\">{{ s.value }}</code>\n }\n </div>\n }\n </div>\n }\n </div>\n <div class=\"complex-filter-bar-docs-actions\">\n <monkey-button size=\"sm\" type=\"secondary\" (click)=\"closeDocs()\">\n Fechar\n </monkey-button>\n </div>\n </div>\n </ng-template>\n `,\n styleUrl: './complex-filter-bar.component.scss',\n host: {\n '[attr.data-testid]': \"'monkey-complex-filter-bar'\",\n class: 'mecx-complex-filter-bar'\n }\n})\nexport class MonkeyComplexFilterBarComponent\n implements OnInit, OnChanges, AfterViewInit, OnDestroy\n{\n private _service = inject(MonkeyFilterBarService);\n\n key = input.required<string>();\n config = input<FilterBarConfig>();\n placeholder = input<string>();\n\n @Output() complexFilterChange = new EventEmitter<ComplexFilterResult>();\n\n @ViewChild('queryInput') private _queryInputRef?: ElementRef<HTMLTextAreaElement>;\n\n // Input state\n complexQuery = '';\n queryError = '';\n autocompleteItems: AutocompleteSuggestion[] = [];\n autocompleteActiveIndex = -1;\n\n // Docs panel state\n showDocsPanel = false;\n docsPanelTarget: HTMLElement | null = null;\n\n serviceConfig = computed(() => {\n const k = this.key();\n return k ? this._service.getConfig(k) ?? this.config() : undefined;\n });\n\n allFilterOptions = computed(() => this.serviceConfig()?.filterOptions ?? []);\n\n queryPlaceholder = computed(\n () => this.placeholder() ?? 'campo:valor AND (campo>valor OR campo<valor)'\n );\n\n hasActiveQuery = computed(() => {\n const k = this.key();\n return k ? !!this._service.getComplexQuery(k) : false;\n });\n\n constructor() {\n effect(() => {\n const k = this.key();\n const cfg = this.config();\n if (k && cfg) this._service.setConfig(k, cfg);\n });\n }\n\n ngOnInit(): void {\n const k = this.key();\n const cfg = this.config();\n if (k && cfg) this._service.setConfig(k, cfg);\n if (k) this.complexQuery = this._service.getComplexQuery(k);\n }\n\n ngAfterViewInit(): void {\n if (this.complexQuery && this._queryInputRef) {\n this._autoResize(this._queryInputRef.nativeElement);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const k = this.key();\n const cfg = this.config();\n if (k && cfg && (changes['key'] || changes['config'])) {\n this._service.setConfig(k, cfg);\n }\n }\n\n ngOnDestroy(): void {}\n\n // ─── Validation ─────────────────────────────────────────────────────────────\n\n private validateQuery(query: string): string {\n if (!query.trim()) return '';\n\n // Check balanced parentheses\n let depth = 0;\n for (const ch of query) {\n if (ch === '(') depth++;\n else if (ch === ')') depth--;\n if (depth < 0) return 'Parênteses desbalanceados';\n }\n if (depth !== 0) return 'Parênteses desbalanceados';\n\n // Check field names only on tokens that already have an operator\n const validKeys = new Set(this.allFilterOptions().map((o) => o.key));\n const tokenPattern = /([a-zA-Z_][a-zA-Z0-9_]*)([:<>])/g;\n let match: RegExpExecArray | null;\n while ((match = tokenPattern.exec(query)) !== null) {\n if (!validKeys.has(match[1])) {\n return `Campo inválido: \"${match[1]}\"`;\n }\n }\n return '';\n }\n\n // ─── Textarea helpers ────────────────────────────────────────────────────────\n\n private _autoResize(el: HTMLTextAreaElement): void {\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n }\n\n // ─── Query input handlers ───────────────────────────────────────────────────\n\n onInputFocus(textarea: HTMLTextAreaElement): void {\n const k = this.key();\n if (!k) return;\n this.autocompleteActiveIndex = -1;\n this.autocompleteItems = this._service.getAutocompleteSuggestions(\n k,\n textarea.value,\n textarea.selectionStart ?? textarea.value.length\n );\n }\n\n onTextareaInput(textarea: HTMLTextAreaElement): void {\n this._autoResize(textarea);\n }\n\n onQueryInput(textarea: HTMLTextAreaElement): void {\n const k = this.key();\n if (!k) return;\n this.queryError = this.validateQuery(textarea.value);\n this.autocompleteActiveIndex = -1;\n this.autocompleteItems = this._service.getAutocompleteSuggestions(\n k,\n textarea.value,\n textarea.selectionStart ?? textarea.value.length\n );\n }\n\n onKeydown(event: KeyboardEvent, textarea: HTMLTextAreaElement): void {\n if (event.key === 'Escape') {\n this.autocompleteItems = [];\n this.autocompleteActiveIndex = -1;\n return;\n }\n\n if (this.autocompleteItems.length > 0) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.autocompleteActiveIndex = Math.min(\n this.autocompleteActiveIndex + 1,\n this.autocompleteItems.length - 1\n );\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.autocompleteActiveIndex = Math.max(this.autocompleteActiveIndex - 1, -1);\n return;\n }\n if ((event.key === 'Enter' || event.key === 'Tab') && this.autocompleteActiveIndex >= 0) {\n event.preventDefault();\n this.onSelectSuggestion(this.autocompleteItems[this.autocompleteActiveIndex], textarea);\n return;\n }\n }\n\n // Ctrl+Enter / Cmd+Enter applies the query; plain Enter inserts a newline\n if (event.key === 'Enter' && (event.ctrlKey || event.metaKey)) {\n event.preventDefault();\n this.applyQuery();\n }\n }\n\n onSelectSuggestion(item: AutocompleteSuggestion, textarea: HTMLTextAreaElement): void {\n const k = this.key();\n if (!k) return;\n\n const cursorPos = textarea.selectionStart ?? textarea.value.length;\n const textBefore = this.complexQuery.substring(0, cursorPos);\n const textAfter = this.complexQuery.substring(cursorPos);\n\n // Find start of current token (scan back over non-whitespace, non-paren chars)\n let tokenStart = cursorPos;\n while (tokenStart > 0 && !/[\\s()]/.test(textBefore[tokenStart - 1])) tokenStart--;\n\n let replacement: string;\n\n if (item.type === 'value') {\n const currentToken = textBefore.substring(tokenStart);\n const opMatch = currentToken.match(/^([a-zA-Z_][a-zA-Z0-9_]*)([:<>])(.*)$/);\n replacement = opMatch\n ? textBefore.substring(0, tokenStart) + opMatch[1] + opMatch[2] + item.insertValue\n : textBefore.substring(0, tokenStart) + item.insertValue;\n } else {\n replacement = textBefore.substring(0, tokenStart) + item.insertValue;\n }\n\n this.complexQuery = replacement + textAfter;\n this.queryError = this.validateQuery(this.complexQuery);\n this.autocompleteItems = [];\n this.autocompleteActiveIndex = -1;\n\n setTimeout(() => {\n textarea.focus();\n const newCursor = replacement.length;\n textarea.setSelectionRange(newCursor, newCursor);\n this._autoResize(textarea);\n this.autocompleteItems = this._service.getAutocompleteSuggestions(\n k,\n this.complexQuery,\n newCursor\n );\n });\n }\n\n onInputBlur(): void {\n setTimeout(() => {\n this.autocompleteItems = [];\n this.autocompleteActiveIndex = -1;\n }, 150);\n }\n\n applyQuery(): void {\n const k = this.key();\n if (!k) return;\n const trimmed = this.complexQuery.trim();\n if (!trimmed) {\n this.clearQuery();\n return;\n }\n this.queryError = this.validateQuery(trimmed);\n if (this.queryError) return;\n this._service.setComplexQuery(k, trimmed);\n const groups = this._service.parseComplexQuery(trimmed);\n this.complexFilterChange.emit({ raw: trimmed, groups });\n }\n\n clearQuery(): void {\n const k = this.key();\n if (k) this._service.clearComplexQuery(k);\n this.complexQuery = '';\n this.queryError = '';\n this.autocompleteItems = [];\n if (this._queryInputRef) this._autoResize(this._queryInputRef.nativeElement);\n this.complexFilterChange.emit({ raw: '', groups: [] });\n }\n\n // ─── Docs panel ─────────────────────────────────────────────────────────────\n\n onShowDocs(event: MouseEvent): void {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.docsPanelTarget = event.currentTarget as HTMLElement;\n this.showDocsPanel = true;\n }\n\n closeDocs = () => {\n this.showDocsPanel = false;\n };\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nexport type FilterType = 'text' | 'date' | 'currency' | 'status';\n\nexport interface StatusOption {\n value: string;\n description: string;\n}\n\nexport interface FilterOption {\n key: string;\n label: string;\n icon?: string;\n type: FilterType;\n placeholder?: string;\n minDate?: Date | string;\n maxDate?: Date | string;\n currency?: string;\n statusOptions?: StatusOption[];\n /** Human-readable explanation shown in the complex filter documentation panel */\n explanation?: string;\n}\n\nexport interface ActiveFilter {\n key: string;\n label: string;\n type: FilterType;\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[];\n displayText: string;\n icon?: string;\n}\n\nexport interface FilterBarConfig {\n filterOptions: FilterOption[];\n searchPlaceholder?: string;\n}\n\n// ─── Complex filter types ────────────────────────────────────────────────────\n\nexport type ComplexFilterOperator = ':' | '>' | '<';\n\nexport interface ComplexFilterCondition {\n logicalOp?: 'AND' | 'OR';\n field: string;\n operator: ComplexFilterOperator;\n value: string;\n}\n\nexport interface ComplexFilterGroup {\n /** Logical operator connecting this group to the previous one */\n logicalOp?: 'AND' | 'OR';\n conditions: ComplexFilterCondition[];\n}\n\nexport interface ComplexFilterResult {\n raw: string;\n groups: ComplexFilterGroup[];\n}\n\nexport type AutocompleteSuggestionType = 'field' | 'logical' | 'value';\n\nexport interface AutocompleteSuggestion {\n type: AutocompleteSuggestionType;\n label: string;\n /** Field key shown as secondary text for field suggestions */\n sublabel?: string;\n /** Text spliced into the query when the suggestion is selected */\n insertValue: string;\n explanation?: string;\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './complex-filter-bar.component';\nexport * from './complex-filter-bar.service';\nexport * from './filter-config.interface';\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nexport type MonkeyFilterBarType = 'text' | 'date' | 'currency' | 'status';\n\nexport interface MonkeyFilterBarStatusOption {\n readonly value: string;\n readonly description: string;\n}\n\nexport interface MonkeyFilterBarOption {\n readonly key: string;\n readonly label: string;\n readonly icon?: string;\n readonly type: MonkeyFilterBarType;\n\n readonly placeholder?: string;\n readonly minDate?: Date | string;\n readonly maxDate?: Date | string;\n readonly currency?: string;\n\n readonly statusOptions?: readonly MonkeyFilterBarStatusOption[];\n}\n\nexport interface MonkeyFilterBarConfig {\n readonly filterOptions: readonly MonkeyFilterBarOption[];\n}\n\nexport type MonkeyFilterOperator =\n | 'EQ'\n | 'NEQ'\n | 'LIKE'\n | 'NOT_LIKE'\n | 'STARTS_WITH'\n | 'ENDS_WITH'\n | 'IS_EMPTY'\n | 'BETWEEN'\n | 'GT'\n | 'LT'\n | 'BEFORE'\n | 'AFTER';\n\nexport type MonkeyFilterCondition = MonkeyFilterOperator | '';\n\nexport type MonkeyFilterArity = 0 | 1 | 2;\n\nexport type MonkeyFilterPanel = 'none' | 'status' | 'field' | 'date-day' | 'date-range';\n\nexport type MonkeyFilterOperand =\n | { readonly kind: 'text'; readonly value: string }\n | { readonly kind: 'number'; readonly value: number }\n | { readonly kind: 'date'; readonly value: string }\n | { readonly kind: 'selection'; readonly values: readonly string[] };\n\nexport interface MonkeyAppliedFilter {\n readonly key: string;\n readonly label: string;\n readonly type: MonkeyFilterBarType;\n readonly condition: MonkeyFilterOperator;\n readonly operands: readonly MonkeyFilterOperand[];\n}\n\nexport interface MonkeyFilterRow {\n readonly key: string;\n readonly label: string;\n readonly icon?: string;\n readonly type: MonkeyFilterBarType;\n readonly condition: MonkeyFilterCondition;\n readonly operands: readonly MonkeyFilterOperand[];\n}\n\nconst CONDITIONS: Record<MonkeyFilterBarType, readonly MonkeyFilterOperator[]> = {\n text: ['LIKE', 'NOT_LIKE', 'STARTS_WITH', 'ENDS_WITH', 'IS_EMPTY'],\n currency: ['EQ', 'NEQ', 'BETWEEN', 'GT', 'LT'],\n date: ['EQ', 'NEQ', 'BETWEEN', 'BEFORE', 'AFTER'],\n status: ['EQ', 'NEQ']\n};\n\nconst NO_OPERAND = new Set<MonkeyFilterCondition>(['IS_EMPTY']);\n\nconst TWO_OPERANDS = new Set<MonkeyFilterCondition>(['BETWEEN']);\n\nexport function conditionsOf(type: MonkeyFilterBarType): readonly MonkeyFilterOperator[] {\n return CONDITIONS[type] ?? [];\n}\n\nexport function arityOf(condition: MonkeyFilterCondition): MonkeyFilterArity {\n if (NO_OPERAND.has(condition)) return 0;\n if (TWO_OPERANDS.has(condition)) return 2;\n return 1;\n}\n\nexport function panelOf(type: MonkeyFilterBarType, condition: MonkeyFilterCondition): MonkeyFilterPanel {\n if (!condition || arityOf(condition) === 0) return 'none';\n\n switch (type) {\n case 'status':\n return 'status';\n case 'date':\n return arityOf(condition) === 2 ? 'date-range' : 'date-day';\n default:\n return 'field';\n }\n}\n\nexport function isComplete(row: MonkeyFilterRow): boolean {\n return !!row.condition && row.operands.length === arityOf(row.condition);\n}\n\nexport function appliedFrom(rows: readonly MonkeyFilterRow[]): MonkeyAppliedFilter[] {\n return rows.filter(isComplete).map((row) => {\n return {\n key: row.key,\n label: row.label,\n type: row.type,\n condition: row.condition as MonkeyFilterOperator,\n operands: row.operands\n };\n });\n}\n\nexport function withCondition(\n row: MonkeyFilterRow,\n condition: MonkeyFilterOperator\n): MonkeyFilterRow {\n const sameArity = arityOf(row.condition) === arityOf(condition);\n if (sameArity) return { ...row, condition };\n return { ...row, condition, operands: [] };\n}\n\nexport function withType(\n row: MonkeyFilterRow,\n next: { key: string; label: string; icon?: string; type: MonkeyFilterBarType }\n): MonkeyFilterRow {\n const condition = conditionsOf(next.type).includes(row.condition as MonkeyFilterOperator)\n ? row.condition\n : '';\n return { ...next, condition, operands: [] };\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n signal,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\n\nexport type MonkeyScrollbarOrientation = 'horizontal' | 'vertical';\n\n/** `small` = 8px track (menus) · `medium` = 16px (page bar, what the table uses). */\nexport type MonkeyScrollbarSize = 'small' | 'medium';\n\n/**\n * Shortest the thumb may get, in px — matches the `--mecx-spaces-medium`\n * floor in the stylesheet. A very long list would otherwise give a 2px thumb,\n * too small to grab.\n */\nconst MIN_THUMB = 24;\n\n/**\n * A DRAWN scrollbar, not the native one styled — a native scrollbar can't\n * live outside the element that scrolls (e.g. below a table's rows, next to\n * its footer), and cross-browser track styling (radius, border) is\n * inconsistent enough that matching a design exactly isn't reliable with\n * `::-webkit-scrollbar`/`scrollbar-color` alone.\n *\n * It does NOT replace real scrolling: `target` keeps its own\n * `overflow: auto`, so keyboard, wheel and trackpad scrolling all keep\n * working — this is a draggable mirror drawn on top. That's also why it's\n * `aria-hidden`: a screen reader user scrolls the real region, and a second\n * widget announcing the same position would only add noise.\n */\n@Component({\n selector: 'monkey-scrollbar',\n templateUrl: './scrollbar.component.html',\n styleUrl: './scrollbar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'mecx-scrollbar',\n 'aria-hidden': 'true',\n '[class.mecx-scrollbar--horizontal]': \"orientation() === 'horizontal'\",\n '[class.mecx-scrollbar--vertical]': \"orientation() === 'vertical'\",\n '[class.mecx-scrollbar--small]': \"size() === 'small'\",\n '[class.mecx-scrollbar--medium]': \"size() === 'medium'\",\n '[class.mecx-scrollbar--inert]': '!scrollable()'\n }\n})\nexport class MonkeyScrollbarComponent implements OnDestroy {\n private readonly _zone = inject(NgZone);\n\n readonly orientation = input<MonkeyScrollbarOrientation>('horizontal');\n\n readonly size = input<MonkeyScrollbarSize>('medium');\n\n /** The element that actually scrolls. */\n readonly target = input.required<HTMLElement>();\n\n private readonly trackEl = viewChild.required<ElementRef<HTMLElement>>('track');\n\n /** Scrollable length of the content, in px. */\n private readonly total = signal(0);\n\n /** Visible length of the viewport, in px. */\n private readonly visible = signal(0);\n\n /** How far the target is scrolled, in px. */\n private readonly scrolled = signal(0);\n\n /** Length of the track the thumb slides along, in px. */\n private readonly trackLength = signal(0);\n\n protected readonly scrollable = computed(() => this.total() - this.visible() > 1);\n\n protected readonly thumbSize = computed(() => {\n const total = this.total();\n return `${total > 0 ? Math.min(1, this.visible() / total) * 100 : 100}%`;\n });\n\n /**\n * A px distance, applied as a `translate`, not as `left`/`top`: moving the\n * thumb then costs a composited transform instead of a layout pass on every\n * scroll frame. It has to be px rather than a percentage of the thumb\n * because the thumb has a minimum length — once that kicks in, a\n * percentage of its own (clamped) size no longer maps to track distance.\n */\n protected readonly thumbOffset = computed(() => {\n const total = this.total();\n const visible = this.visible();\n const track = this.trackLength();\n if (total <= 0 || track <= 0) return '0px';\n\n const thumb = Math.max(MIN_THUMB, (visible / total) * track);\n const free = Math.max(0, track - thumb);\n const progress = Math.min(1, Math.max(0, this.scrolled() / Math.max(1, total - visible)));\n return `${free * progress}px`;\n });\n\n private resizeObserver?: ResizeObserver;\n\n private observedTarget?: HTMLElement;\n\n /** Pending animation frame, 0 when none is queued. */\n private frame = 0;\n\n /** Whether the cached lengths need re-reading on the next frame. */\n private sizeStale = true;\n\n private readonly onScroll = () => this.schedule();\n\n /** Drag state. `null` = nobody is dragging. */\n private drag: { start: number; initialScroll: number } | null = null;\n\n constructor() {\n effect((onCleanup) => {\n const target = this.target();\n this.attach(target);\n onCleanup(() => this.detach());\n });\n }\n\n ngOnDestroy(): void {\n this.detach();\n }\n\n private attach(target: HTMLElement): void {\n this.detach();\n this.observedTarget = target;\n\n // Outside the Angular zone: a zone-patched 'scroll' listener costs a full\n // global change-detection pass per event. The signals `measure()` writes\n // still schedule change detection by themselves.\n this._zone.runOutsideAngular(() => {\n target.addEventListener('scroll', this.onScroll, { passive: true });\n\n // The target AND its content: the bar should disappear when the content\n // shrinks, not only when the container itself is resized — a column\n // removed from the table doesn't resize the scrolling wrapper, only how\n // far it needs to scroll. The track too, so the thumb's px offset stays\n // right when the bar itself changes width.\n this.resizeObserver = new ResizeObserver(() => this.schedule(true));\n this.resizeObserver.observe(target);\n this.resizeObserver.observe(this.trackEl().nativeElement);\n Array.from(target.children).forEach((child) => this.resizeObserver?.observe(child));\n });\n\n this.sizeStale = true;\n this.measure();\n }\n\n private detach(): void {\n this.observedTarget?.removeEventListener('scroll', this.onScroll);\n this.observedTarget = undefined;\n this.resizeObserver?.disconnect();\n this.resizeObserver = undefined;\n if (this.frame) cancelAnimationFrame(this.frame);\n this.frame = 0;\n }\n\n /**\n * Scroll events fire far more often than the screen refreshes, and each\n * measurement reads layout. Coalescing to one read per frame is what keeps\n * a long table from thrashing layout while it scrolls.\n */\n private schedule(resized = false): void {\n if (resized) this.sizeStale = true;\n if (this.frame) return;\n this.frame = this._zone.runOutsideAngular(() => {\n return requestAnimationFrame(() => {\n this.frame = 0;\n this.measure();\n });\n });\n }\n\n private measure(): void {\n const target = this.observedTarget;\n if (!target) return;\n\n const horizontal = this.orientation() === 'horizontal';\n\n // Only the scroll offset changes while scrolling; the lengths can't, so\n // re-reading them per frame would force layout for nothing.\n if (this.sizeStale) {\n this.sizeStale = false;\n const track = this.trackEl().nativeElement;\n this.total.set(horizontal ? target.scrollWidth : target.scrollHeight);\n this.visible.set(horizontal ? target.clientWidth : target.clientHeight);\n this.trackLength.set(horizontal ? track.clientWidth : track.clientHeight);\n }\n\n this.scrolled.set(horizontal ? target.scrollLeft : target.scrollTop);\n }\n\n protected onPointerDown(event: PointerEvent): void {\n const target = this.observedTarget;\n if (!target || !this.scrollable()) return;\n\n const horizontal = this.orientation() === 'horizontal';\n event.preventDefault();\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n\n this.drag = {\n start: horizontal ? event.clientX : event.clientY,\n initialScroll: horizontal ? target.scrollLeft : target.scrollTop\n };\n }\n\n protected onPointerMove(event: PointerEvent): void {\n const target = this.observedTarget;\n if (!this.drag || !target) return;\n\n const horizontal = this.orientation() === 'horizontal';\n const track = this.trackEl().nativeElement.getBoundingClientRect();\n const trackLength = horizontal ? track.width : track.height;\n if (trackLength <= 0) return;\n\n // One thumb pixel is worth (total / track) content pixels — without this\n // conversion, dragging moves at the wrong speed and the thumb drifts\n // away from the pointer.\n const total = horizontal ? target.scrollWidth : target.scrollHeight;\n const moved = (horizontal ? event.clientX : event.clientY) - this.drag.start;\n const destination = this.drag.initialScroll + moved * (total / trackLength);\n\n if (horizontal) target.scrollLeft = destination;\n else target.scrollTop = destination;\n }\n\n protected onPointerUp(event: PointerEvent): void {\n if (!this.drag) return;\n this.drag = null;\n (event.target as HTMLElement).releasePointerCapture?.(event.pointerId);\n }\n\n /** Clicking the track outside the thumb jumps the content there, centered on the click. */\n protected onTrackPointerDown(event: PointerEvent): void {\n const target = this.observedTarget;\n if (!target || !this.scrollable() || this.drag) return;\n\n const horizontal = this.orientation() === 'horizontal';\n const track = this.trackEl().nativeElement.getBoundingClientRect();\n const length = horizontal ? track.width : track.height;\n if (length <= 0) return;\n\n const point = horizontal ? event.clientX - track.left : event.clientY - track.top;\n const total = horizontal ? target.scrollWidth : target.scrollHeight;\n const visible = horizontal ? target.clientWidth : target.clientHeight;\n\n const destination = (point / length) * total - visible / 2;\n if (horizontal) target.scrollLeft = destination;\n else target.scrollTop = destination;\n }\n\n /**\n * Manual re-measure. Public on purpose: the automatic triggers (scroll,\n * ResizeObserver on the target and its children) cover what the browser\n * reports on its own — this is the escape hatch for what it doesn't, e.g.\n * a target swapped out from under the component.\n */\n remeasure(): void {\n this.sizeStale = true;\n this.measure();\n }\n}\n","<div #track class=\"mecx-scrollbar-track\" (pointerdown)=\"onTrackPointerDown($event)\">\n <div\n class=\"mecx-scrollbar-thumb\"\n [style.--mecx-scrollbar-thumb-size]=\"thumbSize()\"\n [style.--mecx-scrollbar-thumb-offset]=\"thumbOffset()\"\n (pointerdown)=\"onPointerDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPointerUp($event)\"\n (pointercancel)=\"onPointerUp($event)\"\n ></div>\n</div>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './scrollbar.component';\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n ViewEncapsulation\n} from '@angular/core';\n\n@Component({\n selector: 'monkey-filter-chip',\n templateUrl: './filter-chip.component.html',\n styleUrl: './filter-chip.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-chip',\n class: 'mecx-filter-chip',\n '[class.mecx-filter-chip--disabled]': 'disabled()'\n }\n})\nexport class MonkeyFilterChipComponent {\n readonly removeIcon = input<string>('trash');\n\n readonly removeLabel = input<string>('');\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly onRemove = output<void>();\n}\n","<ng-content></ng-content>\n<span class=\"mecx-filter-chip-action\">\n <button\n class=\"mecx-filter-chip-remove\"\n type=\"button\"\n [disabled]=\"disabled() || null\"\n [attr.aria-label]=\"removeLabel()\"\n (click)=\"onRemove.emit()\"\n >\n <i class=\"mk-i mk-i-{{ removeIcon() }}\" aria-hidden=\"true\"></i>\n </button>\n</span>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n output,\n signal,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\nimport { MonkeyFormFieldModule } from '../form-field';\nimport { MonkeyInputModule } from '../input';\n\n@Component({\n selector: 'monkey-filter-menu',\n imports: [FormsModule, MonkeyFormFieldModule, MonkeyInputModule, MonkeyPrefixDirective],\n templateUrl: './filter-menu.component.html',\n styleUrl: './filter-menu.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-menu',\n class: 'mecx-filter-menu'\n }\n})\nexport class MonkeyFilterMenuComponent implements OnDestroy {\n private readonly _zone = inject(NgZone);\n\n private readonly _items = viewChild<ElementRef<HTMLElement>>('items');\n\n private readonly _overflowing = signal(false);\n\n private _observer?: ResizeObserver;\n\n readonly showSearch = input(false, { transform: booleanAttribute });\n\n readonly searchPlaceholder = input<string>('');\n\n readonly showScroll = input(true, { transform: booleanAttribute });\n\n readonly maxHeight = input<number>(240);\n\n readonly onSearchChange = output<string>();\n\n protected searchValue = '';\n\n protected readonly scrolling = computed(() => {\n return this.showScroll() && this._overflowing();\n });\n\n constructor() {\n effect((onCleanup) => {\n const items = this._items()?.nativeElement;\n if (!items) return;\n\n this._zone.runOutsideAngular(() => {\n this._observer = new ResizeObserver(() => {\n this._overflowing.set(items.scrollHeight - items.clientHeight > 1);\n });\n this._observer.observe(items);\n Array.from(items.children).forEach((child) => {\n return this._observer?.observe(child);\n });\n });\n\n onCleanup(() => {\n return this.disconnect();\n });\n });\n }\n\n private disconnect(): void {\n this._observer?.disconnect();\n this._observer = undefined;\n }\n\n ngOnDestroy(): void {\n this.disconnect();\n }\n\n protected onSearchInput(value: string): void {\n this.searchValue = value;\n this.onSearchChange.emit(value);\n }\n}\n","@if (showSearch()) {\n <div class=\"mecx-filter-menu-search\">\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input\n [placeholder]=\"searchPlaceholder()\"\n [ngModel]=\"searchValue\"\n (ngModelChange)=\"onSearchInput($event)\"\n />\n <monkey-prefix>\n <i class=\"mk-i mk-i-search fs-md\"></i>\n </monkey-prefix>\n </monkey-form-field>\n </div>\n}\n\n<div\n #items\n class=\"mecx-filter-menu-items\"\n [class.mecx-filter-menu-items--scroll]=\"showScroll()\"\n [class.mecx-filter-menu-items--scrolling]=\"scrolling()\"\n [style.max-height.px]=\"showScroll() ? maxHeight() : null\"\n>\n <ng-content></ng-content>\n</div>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n ViewEncapsulation\n} from '@angular/core';\nimport { MonkeyCheckboxComponent } from '../checkbox';\n\nexport type MonkeyFilterMenuItemProperty = 'text' | 'checkbox';\n\n@Component({\n selector: 'monkey-filter-menu-item',\n imports: [MonkeyCheckboxComponent],\n templateUrl: './filter-menu-item.component.html',\n styleUrl: './filter-menu-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-menu-item',\n class: 'mecx-filter-menu-item',\n role: 'option',\n '[class.mecx-filter-menu-item--disabled]': 'disabled()',\n '[class.mecx-filter-menu-item--selected]': 'selected()',\n '[attr.aria-selected]': 'selected() || checked()',\n '[attr.aria-disabled]': 'disabled() || null',\n '(click)': 'onClick()'\n }\n})\nexport class MonkeyFilterMenuItemComponent {\n readonly property = input<MonkeyFilterMenuItemProperty>('text');\n\n readonly leadIcon = input<string | null>(null);\n\n readonly label = input<string>('');\n\n readonly description = input<string | null>(null);\n\n readonly checked = input(false, { transform: booleanAttribute });\n\n readonly selected = input(false, { transform: booleanAttribute });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly onItemClick = output<void>();\n\n protected onClick(): void {\n if (this.disabled()) return;\n this.onItemClick.emit();\n }\n}\n","@if (property() === 'checkbox') {\n <monkey-checkbox\n class=\"mecx-filter-menu-item-checkbox\"\n size=\"sm\"\n [value]=\"checked()\"\n [disabled]=\"disabled()\"\n [showFooter]=\"false\"\n ></monkey-checkbox>\n} @else if (leadIcon()) {\n <i class=\"mk-i mk-i-{{ leadIcon() }} mecx-filter-menu-item-icon\"></i>\n}\n\n<span class=\"mecx-filter-menu-item-text\">\n <span class=\"mecx-filter-menu-item-label\">{{ label() }}</span>\n @if (description()) {\n <span class=\"mecx-filter-menu-item-description\">{{ description() }}</span>\n }\n</span>\n@if (selected()) {\n <i class=\"mk-i mk-i-check mecx-filter-menu-item-check\"></i>\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\ninterface Gaps {\n readonly top: number;\n readonly left: number;\n}\n\nexport type MenuAlignment = 'start' | 'end';\n\nfunction horizontalOf(\n target: DOMRect,\n width: number,\n gap: number,\n alignment: MenuAlignment\n): number {\n const atStart = target.left + gap;\n const atEnd = target.right - width - gap;\n const preferred = alignment === 'end' ? atEnd : atStart;\n\n const viewport = document.documentElement.clientWidth || 0;\n if (viewport <= 0) return preferred;\n\n const fits = (x: number): boolean => {\n return x >= 0 && x + width <= viewport;\n };\n if (fits(preferred)) return preferred;\n\n const opposite = alignment === 'end' ? atStart : atEnd;\n if (fits(opposite)) return opposite;\n\n return Math.max(0, Math.min(preferred, viewport - width));\n}\n\nfunction ownOffset(menu: HTMLElement): { x: number; y: number } {\n const raw = getComputedStyle(menu).translate;\n if (!raw || raw === 'none') return { x: 0, y: 0 };\n const [x, y] = raw.split(' ');\n return { x: parseFloat(x) || 0, y: parseFloat(y ?? '') || 0 };\n}\n\nfunction place(\n target: DOMRect,\n menu: HTMLElement,\n gaps: Gaps,\n alignment: MenuAlignment\n): void {\n const own = ownOffset(menu);\n const appliedTop = parseFloat(menu.style.top) || 0;\n const appliedLeft = parseFloat(menu.style.left) || 0;\n\n const current = menu.getBoundingClientRect();\n const originTop = current.top - own.y - appliedTop;\n const originLeft = current.left - own.x - appliedLeft;\n\n const x = horizontalOf(target, current.width, gaps.left, alignment);\n const y = target.bottom + gaps.top;\n\n menu.style.top = `${y - originTop}px`;\n menu.style.left = `${x - originLeft}px`;\n}\n\nfunction scrollingAncestor(el: HTMLElement): HTMLElement | null {\n let node = el.parentElement;\n while (node) {\n const { overflowX, overflowY } = getComputedStyle(node);\n if (/(auto|scroll|hidden|clip)/.test(overflowX + overflowY)) return node;\n node = node.parentElement;\n }\n return null;\n}\n\nfunction outOfSight(trigger: HTMLElement, target: DOMRect): boolean {\n const vh = document.documentElement.clientHeight || 0;\n const vw = document.documentElement.clientWidth || 0;\n if (vh <= 0 || vw <= 0) return false;\n if (target.bottom <= 0 || target.top >= vh) return true;\n if (target.right <= 0 || target.left >= vw) return true;\n\n const scroller = scrollingAncestor(trigger);\n if (!scroller) return false;\n const rect = scroller.getBoundingClientRect();\n if (rect.width <= 0 || rect.height <= 0) return false;\n return (\n target.bottom <= rect.top ||\n target.top >= rect.bottom ||\n target.right <= rect.left ||\n target.left >= rect.right\n );\n}\n\nfunction readGaps(menu: HTMLElement): Gaps {\n const style = getComputedStyle(menu);\n return {\n top: parseFloat(style.marginTop) || 0,\n left: parseFloat(style.marginLeft) || 0\n };\n}\n\nexport function anchorMenu(\n trigger: HTMLElement,\n menu: HTMLElement,\n alignment: MenuAlignment = 'start',\n onOutOfSight?: () => void\n): () => void {\n const gaps = readGaps(menu);\n\n if (!menu.style.top) {\n menu.style.top = '0px';\n menu.style.left = '0px';\n }\n\n const reposition = (): void => {\n const target = trigger.getBoundingClientRect();\n if (onOutOfSight && outOfSight(trigger, target)) {\n onOutOfSight();\n return;\n }\n place(target, menu, gaps, alignment);\n };\n\n const onTransitionEnd = (event: Event): void => {\n if ((event as TransitionEvent).propertyName === 'translate') reposition();\n };\n\n const onAnimationEnd = (event: Event): void => {\n const node = event.target as Node | null;\n if (node?.contains(menu)) reposition();\n };\n\n const observer = new ResizeObserver(() => {\n reposition();\n });\n observer.observe(menu);\n\n reposition();\n document.addEventListener('scroll', reposition, { capture: true, passive: true });\n document.addEventListener('transitionend', onTransitionEnd, { capture: true, passive: true });\n document.addEventListener('animationend', onAnimationEnd, { capture: true, passive: true });\n window.addEventListener('resize', reposition, { passive: true });\n\n return () => {\n observer.disconnect();\n document.removeEventListener('scroll', reposition, { capture: true });\n document.removeEventListener('transitionend', onTransitionEnd, { capture: true });\n document.removeEventListener('animationend', onAnimationEnd, { capture: true });\n window.removeEventListener('resize', reposition);\n };\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n output,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\nimport { anchorMenu } from './anchored-menu';\n\n@Component({\n selector: 'monkey-filter-segment',\n templateUrl: './filter-segment.component.html',\n styleUrl: './filter-segment.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-segment',\n class: 'mecx-filter-segment',\n '[class.mecx-filter-segment--open]': 'open()',\n '[class.mecx-filter-segment--filled]': 'filled()',\n '[class.mecx-filter-segment--disabled]': 'disabled()',\n '(document:pointerdown)': 'onDocumentPointerdown($event)',\n '(document:keydown.escape)': 'onEscape()'\n }\n})\nexport class MonkeyFilterSegmentComponent {\n private readonly _hostEl: ElementRef<HTMLElement> = inject(ElementRef);\n\n private readonly _menuEl = viewChild<ElementRef<HTMLElement>>('menu');\n\n readonly icon = input<string | null>(null);\n\n readonly text = input<string>('');\n\n readonly placeholder = input<string>('');\n\n readonly readonlySegment = input(false, { transform: booleanAttribute });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly open = input(false, { transform: booleanAttribute });\n\n readonly onOpenChange = output<boolean>();\n\n readonly onSegmentClick = output<void>();\n\n readonly filled = computed(() => {\n return this.text().length > 0;\n });\n\n readonly label = computed(() => {\n return this.filled() ? this.text() : this.placeholder();\n });\n\n constructor() {\n effect((onCleanup) => {\n const menu = this._menuEl()?.nativeElement;\n if (!menu) return;\n\n onCleanup(anchorMenu(this._hostEl.nativeElement, menu, 'start'));\n });\n }\n\n private focusButton(): void {\n this._hostEl.nativeElement.querySelector<HTMLElement>('.mecx-filter-segment-btn')?.focus();\n }\n\n toggle(): void {\n if (this.disabled()) return;\n this.onSegmentClick.emit();\n if (this.readonlySegment()) return;\n this.onOpenChange.emit(!this.open());\n }\n\n onDocumentPointerdown(event: PointerEvent): void {\n if (!this.open()) return;\n const target = event.target as Node | null;\n if (target && this._hostEl.nativeElement.contains(target)) return;\n this.onOpenChange.emit(false);\n }\n\n onEscape(): void {\n if (!this.open()) return;\n this.onOpenChange.emit(false);\n this.focusButton();\n }\n\n closeAndFocus(): void {\n this.onOpenChange.emit(false);\n this.focusButton();\n }\n}\n","<button\n class=\"mecx-filter-segment-btn\"\n type=\"button\"\n [disabled]=\"disabled() || null\"\n [attr.aria-expanded]=\"readonlySegment() ? null : open()\"\n [attr.aria-haspopup]=\"readonlySegment() ? null : 'listbox'\"\n (click)=\"toggle()\"\n>\n @if (icon()) {\n <i class=\"mk-i mk-i-{{ icon() }} mecx-filter-segment-icon\" aria-hidden=\"true\"></i>\n }\n <span class=\"mecx-filter-segment-label\">{{ label() }}</span>\n</button>\n@if (open()) {\n <div\n #menu\n class=\"mecx-filter-segment-menu\"\n animate.enter=\"mecx-filter-segment-menu--entering\"\n animate.leave=\"mecx-filter-segment-menu--leaving\"\n >\n <ng-content></ng-content>\n </div>\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n output,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\nimport { anchorMenu } from './anchored-menu';\n\nexport type MonkeyFilterTriggerVariant = 'text' | 'icon';\n\n@Component({\n selector: 'monkey-filter-trigger',\n templateUrl: './filter-trigger.component.html',\n styleUrl: './filter-trigger.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-trigger',\n class: 'mecx-filter-trigger',\n '[class.mecx-filter-trigger--text]': 'variant() === \"text\"',\n '[class.mecx-filter-trigger--icon]': 'variant() === \"icon\"',\n '[class.mecx-filter-trigger--open]': 'open()',\n '(document:pointerdown)': 'onDocumentPointerdown($event)',\n '(document:keydown.escape)': 'onEscape()'\n }\n})\nexport class MonkeyFilterTriggerComponent {\n private readonly _hostEl: ElementRef<HTMLElement> = inject(ElementRef);\n\n private readonly _menuEl = viewChild<ElementRef<HTMLElement>>('menu');\n\n readonly variant = input<MonkeyFilterTriggerVariant>('text');\n\n readonly icon = input<string>('filter');\n\n readonly text = input<string>('');\n\n readonly ariaLabel = input<string>('');\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly immediateExit = input(false, { transform: booleanAttribute });\n\n readonly open = input(false, { transform: booleanAttribute });\n\n readonly onOpenChange = output<boolean>();\n\n readonly ariaLabelAttr = computed(() => {\n return this.variant() === 'icon' ? this.ariaLabel() || null : null;\n });\n\n constructor() {\n effect((onCleanup) => {\n const menu = this._menuEl()?.nativeElement;\n if (!menu) return;\n\n onCleanup(\n anchorMenu(this._hostEl.nativeElement, menu, 'end', () => {\n return this.onOpenChange.emit(false);\n })\n );\n });\n }\n\n toggle(): void {\n if (this.disabled()) return;\n this.onOpenChange.emit(!this.open());\n }\n\n onDocumentPointerdown(event: PointerEvent): void {\n if (!this.open()) return;\n const target = event.target as Node | null;\n if (target && this._hostEl.nativeElement.contains(target)) return;\n this.onOpenChange.emit(false);\n }\n\n onEscape(): void {\n if (!this.open()) return;\n this.onOpenChange.emit(false);\n this._hostEl.nativeElement.querySelector<HTMLElement>('.mecx-filter-trigger-btn')?.focus();\n }\n}\n","<button\n class=\"mecx-filter-trigger-btn\"\n type=\"button\"\n [disabled]=\"disabled() || null\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-label]=\"ariaLabelAttr()\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n>\n <i class=\"mk-i mk-i-{{ icon() }} mecx-filter-trigger-icon\" aria-hidden=\"true\"></i>\n @if (variant() === 'text') {\n <span class=\"mecx-filter-trigger-text\">{{ text() }}</span>\n }\n</button>\n@if (open()) {\n <div\n #menu\n class=\"mecx-filter-trigger-menu\"\n animate.enter=\"mecx-filter-trigger-menu--entering\"\n [animate.leave]=\"immediateExit() ? '' : 'mecx-filter-trigger-menu--leaving'\"\n >\n <ng-content></ng-content>\n </div>\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nexport const FLIP_ATTR = 'data-flip-id';\n\nexport function measureFlip(container: HTMLElement): Map<string, DOMRect> {\n const before = new Map<string, DOMRect>();\n container.querySelectorAll<HTMLElement>(`[${FLIP_ATTR}]`).forEach((el) => {\n const id = el.getAttribute(FLIP_ATTR);\n if (id) before.set(id, el.getBoundingClientRect());\n });\n return before;\n}\n\nexport function animateFlip(\n container: HTMLElement,\n before: Map<string, DOMRect>,\n frozenClass: string\n): void {\n const moved: HTMLElement[] = [];\n\n container.querySelectorAll<HTMLElement>(`[${FLIP_ATTR}]`).forEach((el) => {\n const id = el.getAttribute(FLIP_ATTR);\n if (!id) return;\n\n const from = before.get(id);\n\n if (!from) return;\n\n const to = el.getBoundingClientRect();\n const dx = from.left - to.left;\n const dy = from.top - to.top;\n if (dx === 0 && dy === 0) return;\n\n el.classList.add(frozenClass);\n el.style.translate = `${dx}px ${dy}px`;\n moved.push(el);\n });\n\n if (moved.length === 0) return;\n\n void container.offsetWidth;\n\n moved.forEach((el) => {\n el.classList.remove(frozenClass);\n el.style.translate = '';\n });\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nlet painted = false;\n\nif (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n painted = true;\n });\n });\n}\n\nexport function appPainted(): boolean {\n return painted;\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n output,\n signal,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { addDays, addMonths, format, parseISO, subDays, subMonths } from 'date-fns';\nimport { MonkeyDictionaryService } from '../../services';\nimport { MonkeyButtonComponent } from '../button';\nimport { MonkeyDateRangeComponent } from '../date-range';\nimport { MonkeyDividerComponent } from '../divider';\nimport { MonkeyFormFieldModule } from '../form-field';\nimport { MonkeyInputModule } from '../input';\nimport { MonkeyScrollbarComponent } from '../scrollbar';\nimport {\n appliedFrom,\n arityOf,\n conditionsOf,\n isComplete,\n panelOf,\n withCondition,\n withType,\n type MonkeyAppliedFilter,\n type MonkeyFilterBarConfig,\n type MonkeyFilterBarOption,\n type MonkeyFilterCondition,\n type MonkeyFilterOperand,\n type MonkeyFilterOperator,\n type MonkeyFilterPanel,\n type MonkeyFilterRow\n} from './filter-bar-domain';\nimport { MonkeyFilterChipComponent } from './filter-chip.component';\nimport { MonkeyFilterMenuComponent } from './filter-menu.component';\nimport { MonkeyFilterMenuItemComponent } from './filter-menu-item.component';\nimport { MonkeyFilterSegmentComponent } from './filter-segment.component';\nimport { MonkeyFilterTriggerComponent } from './filter-trigger.component';\nimport { animateFlip, FLIP_ATTR, measureFlip } from './flip';\nimport { appPainted } from './first-paint';\n\ninterface OpenPanel {\n readonly key: string;\n readonly part: 'category' | 'condition' | 'value';\n}\n\ninterface FilterBarText {\n ADD: string;\n 'ADD-ARIA': string;\n REMOVE: string;\n CLEAR: string;\n SEARCH: string;\n 'SELECT-CONDITION': string;\n SELECT: string;\n CONFIRM: string;\n 'RANGE-FROM': string;\n 'RANGE-TO': string;\n SELECTED: string;\n DATE: Record<string, string>;\n OPERATOR: Record<string, string>;\n}\n\nconst DATE_SHORTCUTS: readonly {\n readonly key: string;\n readonly resolve: (today: Date) => { start: Date; end: Date };\n}[] = [\n { key: 'WEEK-AFTER', resolve: (t) => ({ start: t, end: addDays(t, 7) }) },\n { key: 'MONTH-AFTER', resolve: (t) => ({ start: t, end: addMonths(t, 1) }) },\n { key: 'QUARTER-AFTER', resolve: (t) => ({ start: t, end: addMonths(t, 3) }) },\n { key: 'WEEK-BEFORE', resolve: (t) => ({ start: subDays(t, 7), end: t }) },\n { key: 'MONTH-BEFORE', resolve: (t) => ({ start: subMonths(t, 1), end: t }) },\n { key: 'QUARTER-BEFORE', resolve: (t) => ({ start: subMonths(t, 3), end: t }) }\n];\n\nconst FROZEN = 'mecx-filter-bar-slot--frozen';\n\nconst OPERAND_DATE_FORMAT = 'yyyy-MM-dd';\n\nconst DEFAULT_DISPLAY_FORMAT = 'MM/dd/yyyy';\n\n@Component({\n selector: 'monkey-filter-bar',\n imports: [\n FormsModule,\n MonkeyButtonComponent,\n MonkeyDateRangeComponent,\n MonkeyDividerComponent,\n MonkeyFilterChipComponent,\n MonkeyFilterMenuComponent,\n MonkeyFilterMenuItemComponent,\n MonkeyFilterSegmentComponent,\n MonkeyFilterTriggerComponent,\n MonkeyFormFieldModule,\n MonkeyInputModule,\n MonkeyScrollbarComponent\n ],\n templateUrl: './filter-bar.component.html',\n styleUrl: './filter-bar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-bar',\n class: 'mecx-filter-bar',\n '[class.mecx-filter-bar--disabled]': 'disabled()'\n }\n})\nexport class MonkeyFilterBarComponent {\n private readonly _hostEl: ElementRef<HTMLElement> = inject(ElementRef);\n\n private readonly _injector = inject(Injector);\n\n private readonly _text = toSignal<FilterBarText>(\n inject(MonkeyDictionaryService).get('FILTER-BAR')\n );\n\n private _commitTimer: ReturnType<typeof setTimeout> | null = null;\n\n private readonly _reported = signal<readonly MonkeyAppliedFilter[]>([]);\n\n readonly config = input<MonkeyFilterBarConfig>();\n\n readonly filters = input<readonly MonkeyAppliedFilter[]>([]);\n\n readonly onFiltersChange = output<readonly MonkeyAppliedFilter[]>();\n\n readonly dateFormat = input<string>(DEFAULT_DISPLAY_FORMAT);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly debounce = input(0);\n\n readonly appPainted = appPainted;\n\n protected readonly rows = signal<readonly MonkeyFilterRow[]>([]);\n\n protected readonly openPanel = signal<OpenPanel | null>(null);\n\n protected readonly triggerOpen = signal(false);\n\n protected readonly calendarOpen = signal<string | null>(null);\n\n protected readonly categorySearch = signal('');\n\n protected readonly immediateTriggerExit = signal(false);\n\n protected textValue = '';\n\n protected textValue2 = '';\n\n protected currencyValue: number | null = null;\n\n protected currencyValue2: number | null = null;\n\n protected statusValues: string[] = [];\n\n protected dateRange = { startDate: '', endDate: '' };\n\n protected dayValue = '';\n\n protected readonly options = computed(() => this.config()?.filterOptions ?? []);\n\n protected readonly labels = computed(() => {\n const text = this._text();\n return {\n add: text?.ADD ?? '',\n addAria: text?.['ADD-ARIA'] ?? '',\n clear: text?.CLEAR ?? '',\n search: text?.SEARCH ?? '',\n selectCondition: text?.['SELECT-CONDITION'] ?? '',\n select: text?.SELECT ?? '',\n confirm: text?.CONFIRM ?? '',\n rangeFrom: text?.['RANGE-FROM'] ?? '',\n rangeTo: text?.['RANGE-TO'] ?? '',\n remove: text?.REMOVE ?? ''\n };\n });\n\n protected readonly dateShortcuts = computed(() => {\n const date = this._text()?.DATE ?? {};\n return [...DATE_SHORTCUTS.map((shortcut) => shortcut.key), 'CUSTOM'].map((key) => {\n return { key, label: date[key] ?? '' };\n });\n });\n\n protected readonly addOptions = computed(() => {\n const taken = new Set(this.rows().map((row) => row.key));\n return this.matchingSearch(this.options().filter((option) => !taken.has(option.key)));\n });\n\n protected readonly canAddFilter = computed(() => {\n const taken = new Set(this.rows().map((row) => row.key));\n return this.options().some((option) => !taken.has(option.key));\n });\n\n protected readonly changeOptions = computed(() => this.matchingSearch(this.options()));\n\n protected readonly triggerVariant = computed(() => {\n return this.rows().length === 0 ? 'text' : 'icon';\n });\n\n protected readonly triggerIcon = computed(() => {\n return this.rows().length === 0 ? 'filter' : 'add-plus';\n });\n\n protected readonly triggerFlipId = computed(() => {\n return this.rows().length === 0 ? 'trigger-text' : 'trigger-icon';\n });\n\n constructor() {\n effect(() => {\n const incoming = this.filters();\n untracked(() => {\n if (this.sameAsRows(incoming)) return;\n this._reported.set(incoming);\n this.rows.set(\n incoming.map((filter) => {\n const option = this.options().find((item) => item.key === filter.key);\n return {\n key: filter.key,\n label: filter.label,\n icon: option?.icon,\n type: filter.type,\n condition: filter.condition,\n operands: filter.operands\n };\n })\n );\n });\n });\n\n effect(() => {\n if (!this.disabled()) return;\n untracked(() => {\n this.triggerOpen.set(false);\n this.closePanel();\n });\n });\n\n inject(DestroyRef).onDestroy(() => this.cancelCommit());\n }\n\n private askForAnswer(row: MonkeyFilterRow): void {\n if (isComplete(row)) {\n this.resetDraft();\n this.openPanel.set(null);\n return;\n }\n\n this.seedDraft(row);\n this.openPanel.set({ key: row.key, part: 'value' });\n }\n\n private seedDraft(row: MonkeyFilterRow): void {\n this.resetDraft();\n this.calendarOpen.set(null);\n\n const [first, second] = row.operands;\n\n switch (this.panelFor(row)) {\n case 'status':\n this.statusValues = first?.kind === 'selection' ? [...first.values] : [];\n break;\n case 'field':\n if (row.type === 'currency') {\n this.currencyValue = first?.kind === 'number' ? first.value : null;\n this.currencyValue2 = second?.kind === 'number' ? second.value : null;\n } else {\n this.textValue = first?.kind === 'text' ? first.value : '';\n this.textValue2 = second?.kind === 'text' ? second.value : '';\n }\n break;\n case 'date-day':\n this.dayValue = first?.kind === 'date' ? first.value : '';\n break;\n case 'date-range':\n this.dateRange = {\n startDate: first?.kind === 'date' ? first.value : '',\n endDate: second?.kind === 'date' ? second.value : ''\n };\n\n if (this.dateRange.startDate) this.calendarOpen.set(row.key);\n break;\n default:\n break;\n }\n }\n\n private readDraft(row: MonkeyFilterRow): MonkeyFilterOperand[] | null {\n const range = this.isRange(row);\n\n switch (this.panelFor(row)) {\n case 'status': {\n if (this.statusValues.length === 0) return null;\n return [{ kind: 'selection', values: [...this.statusValues] }];\n }\n\n case 'field': {\n if (row.type === 'currency') {\n const from = this.currencyValue;\n if (from === null || from === undefined) return null;\n if (!range) return [{ kind: 'number', value: from }];\n\n const to = this.currencyValue2;\n if (to === null || to === undefined) return null;\n\n const [low, high] = from <= to ? [from, to] : [to, from];\n return [\n { kind: 'number', value: low },\n { kind: 'number', value: high }\n ];\n }\n\n const text = this.textValue.trim();\n if (!text) return null;\n if (!range) return [{ kind: 'text', value: text }];\n\n const text2 = this.textValue2.trim();\n if (!text2) return null;\n return [\n { kind: 'text', value: text },\n { kind: 'text', value: text2 }\n ];\n }\n\n case 'date-day': {\n if (!this.dayValue) return null;\n return [{ kind: 'date', value: this.dayValue }];\n }\n\n case 'date-range': {\n const { startDate, endDate } = this.dateRange;\n if (!startDate || !endDate) return null;\n return [\n { kind: 'date', value: startDate },\n { kind: 'date', value: endDate }\n ];\n }\n\n default:\n return null;\n }\n }\n\n private money(value: number): string {\n return value.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' });\n }\n\n private showDate(iso: string): string {\n if (!iso) return '';\n const parsed = parseISO(iso);\n\n if (Number.isNaN(parsed.getTime())) return iso;\n return format(parsed, this.dateFormat() || DEFAULT_DISPLAY_FORMAT);\n }\n\n private open(key: string, part: OpenPanel['part']): void {\n this.openPanel.set({ key, part });\n }\n\n private closePanel(): void {\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this.resetDraft();\n }\n\n private optionFor(optionKey: string): MonkeyFilterBarOption | undefined {\n return this.options().find((option) => option.key === optionKey);\n }\n\n private matchingSearch(options: readonly MonkeyFilterBarOption[]): MonkeyFilterBarOption[] {\n const term = this.categorySearch().trim().toLowerCase();\n if (!term) return [...options];\n return options.filter((option) => option.label.toLowerCase().includes(term));\n }\n\n private resetDraft(): void {\n this.textValue = '';\n this.textValue2 = '';\n this.currencyValue = null;\n this.currencyValue2 = null;\n this.statusValues = [];\n this.dateRange = { startDate: '', endDate: '' };\n this.dayValue = '';\n }\n\n private sameAsRows(incoming: readonly MonkeyAppliedFilter[]): boolean {\n const current = appliedFrom(this.rows());\n if (current.length !== incoming.length) return false;\n return current.every((filter, index) => {\n const other = incoming[index];\n return (\n filter.key === other.key &&\n filter.condition === other.condition &&\n JSON.stringify(filter.operands) === JSON.stringify(other.operands)\n );\n });\n }\n\n private commit(): void {\n this.cancelCommit();\n\n if (this.sameAsRows(this._reported())) return;\n\n const wait = this.debounce();\n if (wait <= 0) {\n this.publish();\n return;\n }\n\n this._commitTimer = setTimeout(() => {\n this._commitTimer = null;\n this.publish();\n }, wait);\n }\n\n private publish(): void {\n const applied = appliedFrom(this.rows());\n this._reported.set(applied);\n this.onFiltersChange.emit(applied);\n }\n\n private cancelCommit(): void {\n if (this._commitTimer === null) return;\n clearTimeout(this._commitTimer);\n this._commitTimer = null;\n }\n\n private releaseFromFlow(container: HTMLElement, leaving: readonly string[]): void {\n leaving.forEach((id) => {\n const slot = container.querySelector<HTMLElement>(`[${FLIP_ATTR}=\"${id}\"]`);\n if (!slot) return;\n slot.style.left = `${slot.offsetLeft}px`;\n slot.style.top = `${slot.offsetTop}px`;\n slot.style.position = 'absolute';\n });\n }\n\n private followEnd(container: HTMLElement): void {\n const row = container.querySelector<HTMLElement>('.mecx-filter-bar-row');\n if (!row) return;\n\n const last = this.lastMovingSlot(row);\n if (!last) return;\n\n const room = parseFloat(getComputedStyle(row).paddingInlineEnd) || 0;\n const excess = last.getBoundingClientRect().right + room - row.getBoundingClientRect().right;\n\n if (excess <= 0) return;\n row.scrollLeft += excess;\n }\n\n private lastMovingSlot(row: HTMLElement): HTMLElement | null {\n const slots = Array.from(row.querySelectorAll<HTMLElement>(`[${FLIP_ATTR}]`));\n for (let index = slots.length - 1; index >= 0; index -= 1) {\n if (getComputedStyle(slots[index]).position !== 'sticky') return slots[index];\n }\n return null;\n }\n\n private withFlip(\n mutate: () => void,\n options: { leaving?: readonly string[]; follow?: boolean } = {}\n ): void {\n const { leaving = [], follow = true } = options;\n const container = this._hostEl.nativeElement;\n const before = measureFlip(container);\n this.releaseFromFlow(container, leaving);\n\n mutate();\n\n afterNextRender(\n () => {\n if (follow) this.followEnd(container);\n animateFlip(container, before, FROZEN);\n this.immediateTriggerExit.set(false);\n },\n { injector: this._injector }\n );\n }\n\n protected operatorLabel(operator: MonkeyFilterCondition): string {\n if (!operator) return '';\n return this._text()?.OPERATOR?.[operator] ?? '';\n }\n\n protected isOpen(rowKey: string, part: OpenPanel['part']): boolean {\n const panel = this.openPanel();\n return !!panel && panel.key === rowKey && panel.part === part;\n }\n\n protected isFilterActive(optionKey: string): boolean {\n return this.rows().some((row) => row.key === optionKey);\n }\n\n protected needsDivider(options: readonly MonkeyFilterBarOption[], index: number): boolean {\n return index > 0 && options[index].type !== options[index - 1].type;\n }\n\n protected conditionsFor(row: MonkeyFilterRow): readonly MonkeyFilterOperator[] {\n return conditionsOf(row.type);\n }\n\n protected panelFor(row: MonkeyFilterRow): MonkeyFilterPanel {\n return panelOf(row.type, row.condition);\n }\n\n protected hasValueSegment(row: MonkeyFilterRow): boolean {\n return this.panelFor(row) !== 'none';\n }\n\n protected isRange(row: MonkeyFilterRow): boolean {\n return arityOf(row.condition) === 2;\n }\n\n protected displayOf(row: MonkeyFilterRow): string {\n const [first, second] = row.operands;\n\n switch (this.panelFor(row)) {\n case 'status': {\n if (first?.kind !== 'selection' || first.values.length === 0) return '';\n if (first.values.length > 1) {\n return (this._text()?.SELECTED ?? '').replace('{count}', String(first.values.length));\n }\n const option = this.statusOptionsOf(row).find((item) => item.value === first.values[0]);\n return option?.description ?? first.values[0];\n }\n\n case 'field': {\n const write = (operand?: MonkeyFilterOperand): string => {\n if (operand?.kind === 'number') return this.money(operand.value);\n if (operand?.kind === 'text') return operand.value;\n return '';\n };\n if (!this.isRange(row)) return write(first);\n return `${write(first)} – ${write(second)}`;\n }\n\n case 'date-day':\n return first?.kind === 'date' ? this.showDate(first.value) : '';\n\n case 'date-range': {\n if (first?.kind !== 'date' || second?.kind !== 'date') return '';\n return `${this.showDate(first.value)} – ${this.showDate(second.value)}`;\n }\n\n default:\n return '';\n }\n }\n\n protected valuePlaceholder(row: MonkeyFilterRow): string {\n return this.optionFor(row.key)?.placeholder ?? this.labels().select;\n }\n\n protected statusOptionsOf(row: MonkeyFilterRow) {\n return this.optionFor(row.key)?.statusOptions ?? [];\n }\n\n protected minDateOf(row: MonkeyFilterRow): Date | string {\n return this.optionFor(row.key)?.minDate ?? '';\n }\n\n protected maxDateOf(row: MonkeyFilterRow): Date | string {\n return this.optionFor(row.key)?.maxDate ?? '';\n }\n\n protected onSelectCategory(index: number): void {\n const option = this.addOptions()[index];\n if (!option) return;\n\n this.immediateTriggerExit.set(true);\n\n this.withFlip(() => {\n this.triggerOpen.set(false);\n this.categorySearch.set('');\n this.resetDraft();\n this.calendarOpen.set(null);\n this.rows.update((rows) => [\n ...rows,\n {\n key: option.key,\n label: option.label,\n icon: option.icon,\n type: option.type,\n condition: '',\n operands: []\n }\n ]);\n\n this.openPanel.set({ key: option.key, part: 'condition' });\n });\n }\n\n protected onChangeCategory(row: MonkeyFilterRow, index: number): void {\n const option = this.changeOptions()[index];\n if (!option) return;\n\n if (option.key === row.key) {\n this.open(row.key, 'condition');\n return;\n }\n\n if (this.isFilterActive(option.key)) return;\n\n this.withFlip(\n () => {\n this.resetDraft();\n this.calendarOpen.set(null);\n this.categorySearch.set('');\n\n const next = withType(row, {\n key: option.key,\n label: option.label,\n icon: option.icon,\n type: option.type\n });\n this.rows.update((rows) => rows.map((item) => (item.key === row.key ? next : item)));\n\n if (next.condition) this.askForAnswer(next);\n else this.openPanel.set({ key: next.key, part: 'condition' });\n },\n\n { leaving: [row.key], follow: false }\n );\n\n this.commit();\n }\n\n protected onSelectCondition(row: MonkeyFilterRow, condition: MonkeyFilterOperator): void {\n const next = withCondition(row, condition);\n\n this.withFlip(() => {\n this.rows.update((rows) => rows.map((item) => (item.key === row.key ? next : item)));\n this.calendarOpen.set(null);\n this.askForAnswer(next);\n });\n\n this.commit();\n }\n\n protected onTriggerOpenChange(open: boolean): void {\n this.categorySearch.set('');\n this.triggerOpen.set(open);\n if (!open) return;\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this.resetDraft();\n }\n\n protected onCategoryOpenChange(row: MonkeyFilterRow, open: boolean): void {\n this.categorySearch.set('');\n if (!open) {\n this.closePanel();\n return;\n }\n this.triggerOpen.set(false);\n this.open(row.key, 'category');\n }\n\n protected onConditionOpenChange(row: MonkeyFilterRow, open: boolean): void {\n if (!open) {\n this.closePanel();\n return;\n }\n this.triggerOpen.set(false);\n this.open(row.key, 'condition');\n }\n\n protected onValueOpenChange(row: MonkeyFilterRow, open: boolean): void {\n if (!open) {\n this.closePanel();\n return;\n }\n this.triggerOpen.set(false);\n this.seedDraft(row);\n this.open(row.key, 'value');\n }\n\n protected onQuickDate(row: MonkeyFilterRow, key: string): void {\n if (row.type !== 'date') return;\n\n if (key === 'CUSTOM') {\n this.dateRange = { startDate: '', endDate: '' };\n this.calendarOpen.set(row.key);\n return;\n }\n\n const shortcut = DATE_SHORTCUTS.find((item) => item.key === key);\n if (!shortcut) return;\n\n const { start, end } = shortcut.resolve(new Date());\n\n this.dateRange = {\n startDate: format(start, OPERAND_DATE_FORMAT),\n endDate: format(end, OPERAND_DATE_FORMAT)\n };\n this.onApply(row);\n }\n\n protected onDateChange(row: MonkeyFilterRow, event: { startDate: string; endDate: string }): void {\n this.dateRange = event;\n if (event.startDate && event.endDate) {\n setTimeout(() => this.onApply(row), 100);\n }\n }\n\n protected onBackToShortcuts(): void {\n this.calendarOpen.set(null);\n }\n\n protected onToggleStatus(value: string): void {\n this.statusValues = this.statusValues.includes(value)\n ? this.statusValues.filter((item) => item !== value)\n : [...this.statusValues, value];\n }\n\n protected onApply(row: MonkeyFilterRow): void {\n const operands = this.readDraft(row);\n if (!operands) return;\n\n this.withFlip(() => {\n this.rows.update((rows) => {\n return rows.map((item) => (item.key === row.key ? { ...item, operands } : item));\n });\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this.resetDraft();\n });\n\n this.commit();\n }\n\n protected onRemove(row: MonkeyFilterRow): void {\n this.withFlip(\n () => {\n this.rows.update((rows) => rows.filter((item) => item.key !== row.key));\n if (this.openPanel()?.key === row.key) this.openPanel.set(null);\n if (this.calendarOpen() === row.key) this.calendarOpen.set(null);\n this.resetDraft();\n },\n { leaving: [row.key], follow: false }\n );\n\n this.commit();\n }\n\n protected onClearAll(): void {\n const leaving = this.rows().map((row) => row.key);\n\n this.withFlip(\n () => {\n this.rows.set([]);\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this.resetDraft();\n },\n { leaving, follow: false }\n );\n\n this.commit();\n }\n}\n","<div class=\"mecx-filter-bar-line\">\n <div #rowEl class=\"mecx-filter-bar-row\">\n @for (f of rows(); track f.key) {\n <span\n class=\"mecx-filter-bar-slot\"\n [attr.data-flip-id]=\"f.key\"\n [animate.enter]=\"appPainted() ? 'mecx-filter-bar-slot--entering' : ''\"\n animate.leave=\"mecx-filter-bar-slot--leaving\"\n >\n <monkey-filter-chip\n [removeLabel]=\"labels().remove\"\n [disabled]=\"disabled()\"\n (onRemove)=\"onRemove(f)\"\n >\n <monkey-filter-segment\n [icon]=\"f.icon ?? null\"\n [text]=\"f.label\"\n [disabled]=\"disabled()\"\n [open]=\"isOpen(f.key, 'category')\"\n (onOpenChange)=\"onCategoryOpenChange(f, $event)\"\n >\n @if (isOpen(f.key, 'category')) {\n <monkey-filter-menu\n class=\"mecx-filter-bar-menu-categories\"\n [showSearch]=\"true\"\n [searchPlaceholder]=\"labels().search\"\n (onSearchChange)=\"categorySearch.set($event)\"\n >\n @for (opt of changeOptions(); track opt.key; let i = $index) {\n @if (needsDivider(changeOptions(), i)) {\n <monkey-divider />\n }\n <monkey-filter-menu-item\n [leadIcon]=\"opt.icon ?? null\"\n [label]=\"opt.label\"\n [selected]=\"opt.key === f.key\"\n [disabled]=\"opt.key !== f.key && isFilterActive(opt.key)\"\n (onItemClick)=\"onChangeCategory(f, i)\"\n />\n }\n </monkey-filter-menu>\n }\n </monkey-filter-segment>\n <monkey-filter-segment\n [placeholder]=\"labels().selectCondition\"\n [text]=\"operatorLabel(f.condition)\"\n [disabled]=\"disabled()\"\n [open]=\"isOpen(f.key, 'condition')\"\n (onOpenChange)=\"onConditionOpenChange(f, $event)\"\n >\n @if (isOpen(f.key, 'condition')) {\n <monkey-filter-menu class=\"mecx-filter-bar-menu-conditions\" [showSearch]=\"false\">\n @for (c of conditionsFor(f); track c) {\n <monkey-filter-menu-item\n [label]=\"operatorLabel(c)\"\n [selected]=\"c === f.condition\"\n (onItemClick)=\"onSelectCondition(f, c)\"\n />\n }\n </monkey-filter-menu>\n }\n </monkey-filter-segment>\n @if (hasValueSegment(f)) {\n <monkey-filter-segment\n [placeholder]=\"valuePlaceholder(f)\"\n [text]=\"displayOf(f)\"\n [disabled]=\"disabled()\"\n [open]=\"isOpen(f.key, 'value')\"\n (onOpenChange)=\"onValueOpenChange(f, $event)\"\n >\n @if (isOpen(f.key, 'value')) {\n @switch (panelFor(f)) {\n @case ('status') {\n <monkey-filter-menu class=\"mecx-filter-bar-menu-status\" [showSearch]=\"false\">\n @for (s of statusOptionsOf(f); track s.value) {\n <monkey-filter-menu-item\n property=\"checkbox\"\n [label]=\"s.description\"\n [checked]=\"statusValues.includes(s.value)\"\n (onItemClick)=\"onToggleStatus(s.value)\"\n />\n }\n <div class=\"mecx-filter-bar-panel-actions\">\n <monkey-button type=\"secondary\" size=\"sm\" (click)=\"onApply(f)\">\n {{ labels().confirm }}\n </monkey-button>\n </div>\n </monkey-filter-menu>\n }\n\n @case ('date-day') {\n <monkey-filter-menu class=\"mecx-filter-bar-menu-field\" [showSearch]=\"false\">\n <div class=\"mecx-filter-bar-field\">\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">{{ f.label }}</span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"date\"\n monkey-input\n [(ngModel)]=\"dayValue\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n <monkey-button type=\"secondary\" size=\"sm\" (click)=\"onApply(f)\">\n {{ labels().confirm }}\n </monkey-button>\n </div>\n </monkey-filter-menu>\n }\n\n @case ('date-range') {\n @if (calendarOpen() === f.key) {\n <monkey-date-range\n class=\"mecx-filter-bar-calendar\"\n [startDate]=\"dateRange.startDate\"\n [endDate]=\"dateRange.endDate\"\n [minDate]=\"minDateOf(f)\"\n [maxDate]=\"maxDateOf(f)\"\n (onDate)=\"onDateChange(f, $event)\"\n (onCancel)=\"onBackToShortcuts()\"\n ></monkey-date-range>\n } @else {\n <monkey-filter-menu [showSearch]=\"false\">\n @for (shortcut of dateShortcuts(); track shortcut.key) {\n <monkey-filter-menu-item\n [label]=\"shortcut.label\"\n (onItemClick)=\"onQuickDate(f, shortcut.key)\"\n />\n }\n </monkey-filter-menu>\n }\n }\n\n @default {\n <monkey-filter-menu class=\"mecx-filter-bar-menu-field\" [showSearch]=\"false\">\n <div class=\"mecx-filter-bar-field\">\n @if (f.type === 'currency') {\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">\n {{ isRange(f) ? labels().rangeFrom : f.label }}\n </span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input-currency\n [(ngModel)]=\"currencyValue\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n @if (isRange(f)) {\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">{{ labels().rangeTo }}</span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input-currency\n [(ngModel)]=\"currencyValue2\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n }\n } @else {\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">\n {{ isRange(f) ? labels().rangeFrom : f.label }}\n </span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input\n [placeholder]=\"valuePlaceholder(f)\"\n [(ngModel)]=\"textValue\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n @if (isRange(f)) {\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">{{ labels().rangeTo }}</span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input\n [(ngModel)]=\"textValue2\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n }\n }\n\n <monkey-button type=\"secondary\" size=\"sm\" (click)=\"onApply(f)\">\n {{ labels().confirm }}\n </monkey-button>\n </div>\n </monkey-filter-menu>\n }\n }\n }\n </monkey-filter-segment>\n }\n </monkey-filter-chip>\n </span>\n }\n\n @if (canAddFilter()) {\n <span\n class=\"mecx-filter-bar-slot mecx-filter-bar-slot--trigger\"\n [attr.data-flip-id]=\"triggerFlipId()\"\n >\n <monkey-filter-trigger\n [variant]=\"triggerVariant()\"\n [icon]=\"triggerIcon()\"\n [text]=\"labels().add\"\n [ariaLabel]=\"labels().addAria\"\n [disabled]=\"disabled()\"\n [immediateExit]=\"immediateTriggerExit()\"\n [open]=\"triggerOpen()\"\n (onOpenChange)=\"onTriggerOpenChange($event)\"\n >\n @if (triggerOpen()) {\n <monkey-filter-menu\n class=\"mecx-filter-bar-menu-categories\"\n [showSearch]=\"true\"\n [searchPlaceholder]=\"labels().search\"\n (onSearchChange)=\"categorySearch.set($event)\"\n >\n @for (opt of addOptions(); track opt.key; let i = $index) {\n @if (needsDivider(addOptions(), i)) {\n <monkey-divider />\n }\n <monkey-filter-menu-item\n [leadIcon]=\"opt.icon ?? null\"\n [label]=\"opt.label\"\n (onItemClick)=\"onSelectCategory(i)\"\n />\n }\n </monkey-filter-menu>\n }\n </monkey-filter-trigger>\n </span>\n }\n </div>\n @if (rows().length > 0) {\n <monkey-scrollbar\n class=\"mecx-filter-bar-bar\"\n orientation=\"horizontal\"\n size=\"small\"\n [target]=\"rowEl\"\n />\n }\n\n <div class=\"mecx-filter-bar-tail\">\n @if (rows().length > 0) {\n <div class=\"mecx-filter-bar-actions\">\n <monkey-button type=\"tertiary\" size=\"sm\" [disabled]=\"disabled()\" (click)=\"onClearAll()\">\n {{ labels().clear }}\n </monkey-button>\n </div>\n }\n\n <div class=\"mecx-filter-bar-extra\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n@if (rows().length > 0) {\n <monkey-divider />\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './filter-bar-domain';\nexport * from './filter-bar.component';\nexport * from './filter-chip.component';\nexport * from './filter-menu.component';\nexport * from './filter-menu-item.component';\nexport * from './filter-segment.component';\nexport * from './filter-trigger.component';\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n Input,\r\n InputSignal,\r\n Optional,\r\n QueryList,\r\n ViewChildren,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldComponent, MonkeyFormFieldControl } from '../form-field';\r\n\r\ntype KeyboardKeys = 'Backspace' | 'Delete' | 'ArrowLeft' | 'ArrowUp' | 'ArrowRight' | 'ArrowDown';\r\n\r\ninterface AllowedKeyboardKeys {\r\n Backspace: () => void;\r\n Delete: () => void;\r\n ArrowLeft: () => void;\r\n ArrowUp: () => void;\r\n ArrowRight: () => void;\r\n ArrowDown: () => void;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-input-code',\r\n styleUrl: './input-code.component.scss',\r\n templateUrl: './input-code.component.html',\r\n imports: [FormsModule],\r\n host: {\r\n 'data-testid': 'monkey-input-code',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n },\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputCodeComponent }\r\n ]\r\n})\r\nexport class MonkeyInputCodeComponent\r\n implements ControlValueAccessor, MonkeyFormFieldControl, AfterViewInit\r\n{\r\n readonly stateChanges = new Subject<void>();\r\n\r\n readonly type: string = 'input-code';\r\n\r\n readonly currency: boolean = false;\r\n\r\n readonly percent: boolean = false;\r\n\r\n readonly id: any = inject(IdGenerator).getId('monkey-input-code-');\r\n\r\n private _onChange: any = () => {};\r\n\r\n private _onTouched: any = () => {};\r\n\r\n private _value = null;\r\n\r\n public ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n public focused: boolean = false;\r\n\r\n public length: InputSignal<number> = input<number>(6);\r\n\r\n public inputType: InputSignal<string> = input<string>('numeric');\r\n\r\n public inputIndices = computed(() => {\r\n return Array.from({ length: this.length() }, (_, i) => {\r\n return '';\r\n });\r\n });\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched();\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n @ViewChildren('codeInput') inputs!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n constructor(@Optional() private formField: MonkeyFormFieldComponent) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n\r\n if (this.formField) {\r\n this.formField.hideAction = true;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.formField) {\r\n const input = this.formField.elementRef.nativeElement.querySelector(\r\n '.mecx-form-field-body'\r\n ) as HTMLElement;\r\n\r\n const height = input.offsetHeight > 40 ? input.offsetHeight : 40;\r\n\r\n this.inputs.forEach((inputEl) => {\r\n inputEl.nativeElement.style.height = `${height}px`;\r\n inputEl.nativeElement.style.width = `${height}px`;\r\n });\r\n }\r\n }\r\n\r\n private _onFocus(): void {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n private propagateCode(): void {\r\n const code = this.inputIndices().join('');\r\n\r\n this.writeValue(code);\r\n }\r\n\r\n private focusNextInput(input: HTMLInputElement): void {\r\n const next: HTMLInputElement = input.nextElementSibling as HTMLInputElement;\r\n\r\n next?.focus();\r\n }\r\n\r\n private focusPreviousInput(input: HTMLInputElement): void {\r\n const previous: HTMLInputElement = input.previousElementSibling as HTMLInputElement;\r\n\r\n previous?.focus();\r\n }\r\n\r\n private setFullInputValue(value: string): void {\r\n const chars: string[] = value?.slice(0, this.length()).split('') || '';\r\n\r\n chars.forEach((digit: string, index: number) => {\r\n this.inputIndices()[index] = digit;\r\n });\r\n }\r\n\r\n public isInvalid(): boolean {\r\n return this.formField.showInvalid;\r\n }\r\n\r\n public onContainerClick(): void {\r\n if (!this._value) {\r\n this.inputs.first.nativeElement.focus();\r\n }\r\n }\r\n\r\n public onKeyDown(event: KeyboardEvent, index: number): void {\r\n const input = event.target as HTMLInputElement;\r\n this.inputIndices()[index] = input.value;\r\n\r\n const { key } = event;\r\n const keys: AllowedKeyboardKeys = {\r\n Backspace: (): void => {\r\n if (input.value === '') {\r\n this.focusPreviousInput(input);\r\n }\r\n },\r\n Delete: (): void => {\r\n if (input.value === '') {\r\n this.focusNextInput(input);\r\n }\r\n },\r\n ArrowLeft: (): void => {\r\n if (index > 0) {\r\n this.focusPreviousInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n },\r\n ArrowUp: (): void => {\r\n if (index > 0) {\r\n this.focusPreviousInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n },\r\n ArrowRight: (): void => {\r\n if (index < this.length()) {\r\n this.focusNextInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n },\r\n ArrowDown: (): void => {\r\n if (index < this.length()) {\r\n this.focusNextInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n }\r\n };\r\n\r\n if (keys[key as KeyboardKeys]) {\r\n keys[key as KeyboardKeys]();\r\n }\r\n }\r\n\r\n public onInput(event: Event, index: number): void {\r\n const input = event.target as HTMLInputElement;\r\n const { value } = input;\r\n\r\n if (value.length > 1) {\r\n this.setFullInputValue(value);\r\n\r\n input.value = value.charAt(0);\r\n } else {\r\n input.value = value;\r\n }\r\n\r\n this.inputIndices()[index] = input.value;\r\n\r\n if (input.value && index < this.length()) {\r\n this.focusNextInput(input);\r\n }\r\n\r\n this.propagateCode();\r\n }\r\n\r\n public onPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n\r\n const pastedData: string = event.clipboardData?.getData('text').trim() ?? '';\r\n const chars: string[] = pastedData.slice(0, this.length()).split('');\r\n\r\n chars.forEach((digit, index) => {\r\n this.inputIndices()[index] = digit;\r\n });\r\n\r\n if (this.inputs.length > chars.length) {\r\n this.inputs.get(chars.length)?.nativeElement.focus();\r\n }\r\n\r\n if (this.inputs.length <= chars.length) {\r\n this.onBlur();\r\n }\r\n\r\n this.propagateCode();\r\n }\r\n\r\n public onBlur(): void {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n public onFocus(event: FocusEvent): void {\r\n const input = event.target as HTMLInputElement;\r\n\r\n input.select();\r\n this._onFocus();\r\n }\r\n\r\n public writeValue(value: string): void {\r\n this.value = value;\r\n }\r\n\r\n public registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","<div class=\"monkey-input-code\">\r\n @for (idx of inputIndices(); track $index; let i = $index) {\r\n <input\r\n #codeInput\r\n class=\"focus\"\r\n autocomplete=\"one-time-code\"\r\n [attr.type]=\"inputType()\"\r\n [disabled]=\"_disabled\"\r\n [attr.maxlength]=\"1\"\r\n [class.invalid]=\"isInvalid()\"\r\n [(ngModel)]=\"inputIndices()[i]\"\r\n (focus)=\"onFocus($event)\"\r\n (input)=\"onInput($event, i)\"\r\n (keydown)=\"onKeyDown($event, i)\"\r\n (paste)=\"onPaste($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n }\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-code.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Optional,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyDateRangeComponent } from '../date-range/date-range.component';\r\nimport {\r\n MonkeyFormFieldComponent,\r\n MonkeyFormFieldControl,\r\n MonkeyFormFieldModule\r\n} from '../form-field';\r\n\r\n@Component({\r\n selector: 'monkey-input-date-range',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyPopoverDirective,\r\n MonkeyDateRangeComponent\r\n ],\r\n template: `\r\n <span #popoverTarget (click)=\"onOpenPopover()\">\r\n @if (startDate) {\r\n {{ startDate | date }} - {{ endDate | date }}\r\n } @else {\r\n {{ placeholder }}\r\n }\r\n </span>\r\n\r\n <ng-template\r\n [monkeyPopover]=\"showPopOver\"\r\n [monkeyPopoverTarget]=\"elementTarget\"\r\n [monkeyPopoverClosed]=\"closePopOver\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverTitle]=\"title\"\r\n >\r\n <monkey-date-range\r\n hideHeader\r\n hideActions\r\n [startDate]=\"startDate\"\r\n [endDate]=\"endDate\"\r\n (onDate)=\"onHandleDate($event)\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n >\r\n </monkey-date-range>\r\n </ng-template>\r\n `,\r\n styleUrl: './input-date-range.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputDateRangeComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-input-date-range'\",\r\n class: 'mecx-input-date-range',\r\n '[class.mecx-input-date-range-disabled]': '_disabled',\r\n '[class.mecx-input-date-range-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyInputDateRangeComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy, OnChanges\r\n{\r\n @Input({ required: true }) placeholder!: string;\r\n\r\n @Input({ required: true }) title!: string;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input() minDate: Date | string = '';\r\n\r\n @Input() maxDate: Date | string = '';\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this.handleValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor(@Optional() public formField: MonkeyFormFieldComponent) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-input-date-range-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'input-date-range';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n showPopOver = false;\r\n\r\n startDate = '';\r\n\r\n endDate = '';\r\n\r\n handledMinDate: string = '';\r\n\r\n handledMaxDate: string = '';\r\n\r\n get elementTarget() {\r\n if (this.formField?.elementRef) {\r\n return this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n }\r\n\r\n return this._elementRef.nativeElement;\r\n }\r\n\r\n closePopOver = () => {\r\n this.showPopOver = false;\r\n this.validateValue();\r\n };\r\n\r\n ngAfterContentInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n ngOnDestroy(): void {}\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n this.onOpenPopover();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n private handleValue(value: any) {\r\n try {\r\n const { startDate, endDate } = value || {\r\n startDate: '',\r\n endDate: ''\r\n };\r\n this.startDate = startDate;\r\n this.endDate = endDate;\r\n } catch (e) {\r\n // not to do\r\n }\r\n }\r\n\r\n private validateValue() {\r\n const { startDate, endDate } = this.value;\r\n if (!startDate || !endDate) {\r\n this.ngControl?.control?.setErrors({\r\n dateRange: true\r\n });\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this.handleValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n onOpenPopover() {\r\n if (!this.disabled) {\r\n this.showPopOver = true;\r\n }\r\n }\r\n\r\n onHandleDate(event: any) {\r\n try {\r\n this.value = null;\r\n const { startDate, endDate } = event;\r\n this.value = event;\r\n if (startDate && endDate) {\r\n this.closePopOver();\r\n }\r\n } catch (e) {\r\n // not to do\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-date-range.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n QueryList,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { debounceTime, Subject } from 'rxjs';\r\nimport { normalizeStringToSearch, sanitizeString, UtilIconComponent } from '../../../utils';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeyDictionaryService } from '../../services/dictionary.service';\r\nimport { MonkeyFormFieldControl } from '../form-field/form-field-control';\r\nimport { MonkeyFormFieldComponent } from '../form-field/form-field.component';\r\nimport { MonkeyOptionComponent } from '../option/option.component';\r\n\r\n@Component({\r\n selector: 'monkey-select',\r\n imports: [CommonModule, ReactiveFormsModule, FormsModule, UtilIconComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: 'select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeySelectComponent }\r\n ],\r\n animations: [\r\n trigger('animation', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n transform: 'scaleY(.9)'\r\n }),\r\n animate(\r\n '100ms ease-in-out',\r\n style({\r\n opacity: 1,\r\n transform: 'scaleY(1)'\r\n })\r\n )\r\n ]),\r\n state(\r\n 'closed',\r\n style({\r\n transform: 'scaleY(.9)',\r\n opacity: 0\r\n })\r\n ),\r\n transition('closed <=> open', animate('200ms ease-in-out'))\r\n ])\r\n ],\r\n host: {\r\n 'data-testid': 'monkey-select',\r\n class: 'mecx-select',\r\n '[class.mecx-select-disabled]': '_disabled',\r\n '[class.mecx-select-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeySelectComponent\r\n implements\r\n MonkeyFormFieldControl,\r\n ControlValueAccessor,\r\n AfterContentInit,\r\n OnInit,\r\n OnDestroy,\r\n OnChanges\r\n{\r\n @ViewChild('overlayTemplate') overlayTemplate!: TemplateRef<any>;\r\n\r\n @ViewChild('overlay') overlayEl!: ElementRef;\r\n\r\n @ViewChild('trigger') trigger!: ElementRef;\r\n\r\n @ContentChildren(MonkeyOptionComponent) options!: QueryList<MonkeyOptionComponent>;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input({ required: true }) placeholder = '';\r\n\r\n @Input({ transform: booleanAttribute })\r\n loading = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n showSearch = true;\r\n\r\n @Input()\r\n searchPlaceholder = '';\r\n\r\n @Input()\r\n type = 'select';\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value) {\r\n this._value = value;\r\n this._onChange(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value = null;\r\n\r\n labelSelected = '';\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n readonly currency: boolean = false;\r\n\r\n focused: boolean = false;\r\n\r\n _disabled: boolean = false;\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-select-');\r\n\r\n readonly percent: boolean = false;\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n readonly searchHandle = new EventEmitter<string>();\r\n\r\n readonly searchDictionary = inject(MonkeyDictionaryService).get('NO-DATA');\r\n\r\n readonly loadingDictionary = inject(MonkeyDictionaryService).get('LOADING');\r\n\r\n showSearchNoData = false;\r\n\r\n isOpen = false;\r\n\r\n searchData = '';\r\n\r\n constructor(\r\n private overlay: Overlay,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private viewContainerRef: ViewContainerRef,\r\n @Optional() private formField: MonkeyFormFieldComponent\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n private changeControl() {\r\n if (this.formField?.control) {\r\n this.formField.control.loading = this.loading;\r\n }\r\n }\r\n\r\n private changeSelected(): void {\r\n setTimeout(() => {\r\n if (!this.options) return;\r\n\r\n if (this.type === 'checkbox') {\r\n const selectedValues = this.getComparationValue();\r\n this.options.forEach((opt) => {\r\n if (!opt.disabled) {\r\n opt.selected = selectedValues.includes(String(opt.value()));\r\n }\r\n });\r\n } else {\r\n this.options.forEach((opt) => {\r\n opt.onSelect(String(opt.value()) === this.value);\r\n });\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n private initializeOptions() {\r\n setTimeout(() => {\r\n this.options.forEach((option) => {\r\n option.type = this.type;\r\n if (!option.action) {\r\n option.action = this.selectOption.bind(this, option);\r\n }\r\n });\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n private openDropdown(): void {\r\n if (this.options?.length) {\r\n this.formField.control.disableToBeDirty = true;\r\n this.isOpen = true;\r\n this.createOverlay();\r\n }\r\n }\r\n\r\n private closeDropdown() {\r\n this.isOpen = false;\r\n this.focused = false;\r\n this.formField.control.disableToBeDirty = false;\r\n this.searchData = '';\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private closeOverlay(): void {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null;\r\n }\r\n }\r\n\r\n private initializeWithOverlay() {\r\n if (this.showSearch) {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${this.id}-search`\r\n ) as HTMLElement;\r\n\r\n this.options.forEach((opt) => {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${opt.id}`\r\n ) as HTMLElement | null;\r\n if (!element) return;\r\n element.style.display = '';\r\n });\r\n\r\n setTimeout(() => {\r\n element?.focus();\r\n }, 0);\r\n this.showSearchNoData = false;\r\n }\r\n\r\n setTimeout(() => {\r\n const selected = this.options.find((opt) => {\r\n return opt.selected();\r\n });\r\n\r\n if (selected) {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${selected.id}`\r\n ) as HTMLElement;\r\n element?.scrollIntoView({ behavior: 'instant', block: 'center' });\r\n }\r\n }, 0);\r\n }\r\n\r\n private createOverlay(): void {\r\n if (this.overlayRef) {\r\n return;\r\n }\r\n\r\n const offset = 4;\r\n const positions: ConnectedPosition[] = [\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: offset\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -offset\r\n }\r\n ];\r\n\r\n let anchor = this.trigger;\r\n let width = anchor.nativeElement.offsetWidth;\r\n\r\n if (this.formField?.elementRef) {\r\n const el = this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n anchor = el;\r\n width = el.offsetWidth;\r\n }\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(anchor)\r\n .withPositions(positions)\r\n .withPush(true);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'no-class'\r\n });\r\n\r\n const portal = new TemplatePortal(this.overlayTemplate, this.viewContainerRef);\r\n\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef\r\n .backdropClick()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n return this.closeDropdown();\r\n });\r\n\r\n this.initializeWithOverlay();\r\n }\r\n\r\n private updateSelectedLabel(): void {\r\n if (!this.options) return;\r\n\r\n if (this.type === 'checkbox') {\r\n const selectedValues = this.getComparationValue();\r\n\r\n const selectedOptions = this.options.filter((opt) => {\r\n return selectedValues.includes(String(opt.value()));\r\n });\r\n\r\n const maxToShow = 3;\r\n const displayContents = selectedOptions.slice(0, maxToShow).map((opt) => {\r\n return opt.displayContent;\r\n });\r\n\r\n const hasMore = selectedOptions.length > maxToShow;\r\n\r\n this.labelSelected = hasMore\r\n ? `${displayContents.join(', ')}...`\r\n : displayContents.join(', ');\r\n } else {\r\n const selectedOption = this.options.find((opt) => {\r\n return String(opt.value()) === this.value;\r\n });\r\n this.labelSelected = selectedOption ? selectedOption.displayContent : '';\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private executeSearch(search: string): void {\r\n let found = false;\r\n this.options.forEach((opt) => {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${opt.id}`\r\n ) as HTMLElement | null;\r\n\r\n if (!element) return;\r\n\r\n const isMatch = normalizeStringToSearch(opt.displayContent).includes(\r\n normalizeStringToSearch(search)\r\n );\r\n if (isMatch) {\r\n found = true;\r\n }\r\n element.style.display = isMatch ? '' : 'none';\r\n });\r\n\r\n this.repositionScroll();\r\n this.showSearchNoData = !found;\r\n }\r\n\r\n private repositionScroll() {\r\n const overlayElement = this.overlayRef?.overlayElement.querySelector(\r\n '.mecx-select-overlay'\r\n ) as HTMLElement;\r\n\r\n if (overlayElement) {\r\n overlayElement.scrollTop = 0;\r\n }\r\n }\r\n\r\n private getComparationValue() {\r\n return (this.value || '')\r\n .split(',')\r\n .map((v: string) => {\r\n return v.trim();\r\n })\r\n .filter(Boolean);\r\n }\r\n\r\n ngOnInit() {\r\n this.searchHandle\r\n .pipe(debounceTime(200), takeUntilDestroyed(this._destroyRef))\r\n .subscribe((search: string) => {\r\n this.executeSearch(search);\r\n });\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initializeOptions();\r\n this.updateSelectedLabel();\r\n\r\n this.options.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((resp) => {\r\n this.updateSelectedLabel();\r\n this.initializeOptions();\r\n this.changeSelected();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n }\r\n }\r\n\r\n toggleDropdown(): void {\r\n if (!this.disabled) {\r\n if (this.isOpen) {\r\n this.closeDropdown();\r\n this._onTouched();\r\n } else {\r\n this.openDropdown();\r\n }\r\n }\r\n }\r\n\r\n onAnimationEnd = (event: any) => {\r\n if (event.toState === 'closed') {\r\n this.closeOverlay();\r\n }\r\n };\r\n\r\n selectOption(option: MonkeyOptionComponent): void {\r\n if (option.disabled || this.disabled) return;\r\n\r\n if (this.type === 'checkbox') {\r\n const values = this.getComparationValue();\r\n const index = values.indexOf(`${option.value()}`);\r\n\r\n if (index === -1) {\r\n values.push(`${option.value()}`);\r\n option.onSelect(true);\r\n } else {\r\n values.splice(index, 1);\r\n option.onSelect(false);\r\n }\r\n\r\n this.value = values.join(',');\r\n } else {\r\n this.value = `${option.value()}`;\r\n\r\n this.options.forEach((opt) => {\r\n opt.onSelect(`${opt.value()}` === `${this.value}`);\r\n });\r\n\r\n this.closeDropdown();\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n }\r\n\r\n this.updateSelectedLabel();\r\n }\r\n\r\n writeValue(value: any): void {\r\n // Normalized to a string because that's what the value is compared\r\n // against: `updateSelectedLabel` matches `String(opt.value()) ===\r\n // this.value`, and `selectOption` already stores `${option.value()}`.\r\n // Writing the raw value left a NUMBER here, so `'10' === 10` was false,\r\n // no option matched, the label came out empty and the placeholder showed\r\n // instead — a numeric value bound through ngModel/formControl never\r\n // displayed, while picking the same option by hand worked.\r\n // null/undefined are preserved, so \"no selection\" doesn't become \"null\".\r\n this.value = value === null || value === undefined ? value : String(value);\r\n this.changeSelected();\r\n this.updateSelectedLabel();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (this.disabled) return;\r\n\r\n this.openDropdown();\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let hasChanges = false;\r\n // eslint-disable-next-line dot-notation\r\n const changesLoading = changes?.['loading'];\r\n if (changesLoading?.currentValue !== changesLoading?.previousValue) {\r\n hasChanges = true;\r\n this.changeControl();\r\n }\r\n\r\n if (hasChanges) {\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onHandleSearch(event: Event) {\r\n try {\r\n const { value } = event.target as HTMLInputElement;\r\n const handled = sanitizeString(value);\r\n this.searchHandle.next(handled || '');\r\n } catch (e) {\r\n // not to do\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"mecx-select-trigger\"\r\n [class.open]=\"isOpen\"\r\n (click)=\"toggleDropdown()\"\r\n role=\"combobox\"\r\n [attr.aria-expanded]=\"isOpen\"\r\n #trigger\r\n>\r\n <div class=\"mecx-select-value\" [class.has-value]=\"value\">\r\n <span>{{ labelSelected || placeholder }}</span>\r\n </div>\r\n\r\n @if (!loading) {\r\n <util-icon class=\"mecx-select-icon\" name=\"arrowDown\" />\r\n }\r\n</div>\r\n\r\n<ng-template #overlayTemplate>\r\n <div class=\"mecx-select-body-overlay\">\r\n @if (showSearch) {\r\n <div class=\"mecx-select-search\">\r\n <util-icon class=\"mecx-select-search-icon\" name=\"search\" />\r\n <input\r\n (input)=\"onHandleSearch($event)\"\r\n type=\"text\"\r\n [id]=\"id + '-search'\"\r\n autocomplete=\"off\"\r\n maxlength=\"50\"\r\n [placeholder]=\"searchPlaceholder\"\r\n [(ngModel)]=\"searchData\"\r\n />\r\n </div>\r\n }\r\n <div\r\n class=\"mecx-select-overlay\"\r\n #overlay\r\n [@animation]=\"isOpen ? 'open' : 'closed'\"\r\n (@animation.done)=\"onAnimationEnd($event)\"\r\n >\r\n <ng-content />\r\n </div>\r\n @if (showSearch && showSearchNoData) {\r\n <div class=\"mecx-select-search-no-data\">\r\n <util-icon class=\"mecx-select-search-no-data-icon\" name=\"searchFail\" />\r\n {{ searchDictionary | async }}\r\n </div>\r\n }\r\n @if (loading) {\r\n <div class=\"mecx-select-search-loading\">\r\n {{ loadingDictionary | async }}\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './select.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n OnDestroy,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport parsePhoneNumberFromString, {\r\n AsYouType,\r\n CountryCode,\r\n getCountries,\r\n getCountryCallingCode,\r\n getExampleNumber\r\n} from 'libphonenumber-js';\r\nimport examples from 'libphonenumber-js/examples.mobile.json';\r\nimport { isValidPhoneNumber } from 'libphonenumber-js/max';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { injectTokenWithWarning, MECX_COUNTRY_ISO_CODE } from '../../tokens';\r\nimport { MonkeyFormFieldControl, MonkeyFormFieldModule } from '../form-field';\r\nimport { MonkeyOptionComponent } from '../option';\r\nimport { MonkeySelectComponent } from '../select';\r\n\r\ninterface Country {\r\n iso: string;\r\n code: string;\r\n name: string;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-input-phone',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeySelectComponent,\r\n MonkeyOptionComponent,\r\n MonkeyFormFieldModule\r\n ],\r\n template: `\r\n <monkey-select\r\n placeholder=\"\"\r\n [disabled]=\"disabled\"\r\n showSearch\r\n [(ngModel)]=\"selectedCallingCode\"\r\n class=\"mecx-phone-select-country\"\r\n (onChange)=\"onCountryChange()\"\r\n >\r\n @for (item of countries; track $index) {\r\n <monkey-option [value]=\"item.iso\">\r\n <div class=\"option-flag\">\r\n <img class=\"img-flag\" [src]=\"'https://flagcdn.com/w20/' + item.iso.toLowerCase() + '.png'\" loading=\"lazy\">\r\n </div>\r\n <div class=\"option-name\">{{ item.name }} {{ item.code }}</div>\r\n </monkey-option>\r\n }\r\n </monkey-select>\r\n <input\r\n #input\r\n type=\"tel\"\r\n class=\"mecx-input\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\"\r\n [ngModel]=\"phoneFormatted\"\r\n [maxlength]=\"getMaxLength()\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur()\"\r\n [attr.id]=\"inputId\"\r\n />\r\n `,\r\n styleUrl: './input-phone.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputPhoneComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-input-phone'\",\r\n class: 'mecx-input-phone',\r\n '[class.mecx-input-phone-disabled]': '_disabled',\r\n '[class.mecx-input-phone-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyInputPhoneComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy, OnChanges\r\n{\r\n @Input() placeholder: string = '';\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n this._value = value;\r\n this.formatValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor() {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n private readonly countryIsoCode = injectTokenWithWarning(\r\n MECX_COUNTRY_ISO_CODE,\r\n 'MECX_COUNTRY_ISO_CODE'\r\n )!;\r\n\r\n private readonly locale = inject(LOCALE_ID);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-input-phone-');\r\n\r\n readonly inputId: string = this.idGenerator.getId('monkey-input-phone-input-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'input-phone';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n countries: Country[] = getCountries()\r\n .map((code) => {\r\n return {\r\n iso: code,\r\n code: `+${getCountryCallingCode(code)}`,\r\n name: this.getCountryNameFromCode(code)\r\n };\r\n })\r\n .sort((a, b) => {\r\n return a.name.localeCompare(b.name);\r\n });\r\n\r\n selectedCallingCode = this.countryIsoCode.toString();\r\n\r\n phoneFormatted = '';\r\n\r\n phoneValid = false;\r\n\r\n @ViewChildren('input') inputs!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n private getCountryNameFromCode(code: string) {\r\n try {\r\n const locale = this.locale.toString();\r\n const display = new Intl.DisplayNames([locale], { type: 'region' });\r\n return display.of(code.toUpperCase()) || code;\r\n } catch {\r\n return code;\r\n }\r\n }\r\n\r\n private getCountryByCallingCode(code: string): CountryCode | null {\r\n const cleanCode = code.replace('+', '');\r\n\r\n return (\r\n getCountries().find((country) => {\r\n return country === cleanCode;\r\n }) || null\r\n );\r\n }\r\n\r\n private getCountryFromPhoneNumber(input: string, changedCountry: boolean): string {\r\n try {\r\n if (changedCountry) {\r\n return this.selectedCallingCode;\r\n }\r\n\r\n const parsed = parsePhoneNumberFromString(input);\r\n return parsed!.country as string;\r\n } catch (e) {\r\n // not to do\r\n }\r\n\r\n return this.selectedCallingCode;\r\n }\r\n\r\n private performValue(value: string) {\r\n const countryCode = `+${getCountryCallingCode(this.selectedCallingCode as CountryCode)}`;\r\n\r\n this._value = `${countryCode}${value}`;\r\n this._onChange(this._value);\r\n this._onTouched(this._value);\r\n }\r\n\r\n private validateValue() {\r\n const { phoneValid } = this;\r\n if (!phoneValid) {\r\n const countryCode = this.selectedCallingCode as CountryCode;\r\n const example = getExampleNumber(countryCode!, examples);\r\n\r\n const formatter = new AsYouType(countryCode);\r\n const phoneAllowed = formatter.input(example!.nationalNumber);\r\n\r\n this.ngControl?.control?.setErrors({\r\n phone: true,\r\n phoneAllowed\r\n });\r\n }\r\n }\r\n\r\n private formatValue(value: string, changedCountry = false) {\r\n if (!value) {\r\n this.phoneFormatted = '';\r\n this.phoneValid = false;\r\n this.validateValue();\r\n return;\r\n }\r\n\r\n const detectedCallingCode = this.getCountryFromPhoneNumber(value, changedCountry);\r\n const isCountryChanged = changedCountry || detectedCallingCode !== this.selectedCallingCode;\r\n\r\n if (isCountryChanged && detectedCallingCode) {\r\n this.selectedCallingCode = detectedCallingCode;\r\n }\r\n\r\n const countryCode = `+${getCountryCallingCode(this.selectedCallingCode as CountryCode)}`;\r\n\r\n if (!countryCode) {\r\n this.phoneFormatted = value;\r\n this.phoneValid = false;\r\n this.validateValue();\r\n return;\r\n }\r\n\r\n let nationalPart = value.replace(this.selectedCallingCode, '').replace(/[^\\d+]/g, '');\r\n nationalPart = nationalPart.replace(countryCode, '');\r\n\r\n const formatter = new AsYouType(this.selectedCallingCode as CountryCode);\r\n this.phoneFormatted = formatter.input(nationalPart);\r\n\r\n this.performValue(nationalPart);\r\n\r\n this.phoneValid = isValidPhoneNumber(nationalPart, this.selectedCallingCode as CountryCode);\r\n this.validateValue();\r\n }\r\n\r\n disableToBeDirty?: boolean | undefined;\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n ngAfterContentInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n ngOnDestroy(): void {}\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n this.inputs.first.nativeElement.focus();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n this.validateValue();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n onInputChange(event: Event) {\r\n const { value } = event.target as HTMLInputElement;\r\n this.formatValue(value);\r\n }\r\n\r\n onCountryChange() {\r\n this.formatValue(this._value!, true);\r\n this.validateValue();\r\n }\r\n\r\n getMaxLength(): number {\r\n try {\r\n const countryCode = this.getCountryByCallingCode(this.selectedCallingCode);\r\n\r\n if (!countryCode) return 20;\r\n\r\n const example = getExampleNumber(countryCode, examples);\r\n const formatted = new AsYouType(countryCode).input(example!.nationalNumber);\r\n\r\n return formatted.length;\r\n } catch {\r\n return 20;\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-phone.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NgControl, Validators } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { formatFileSize, getFileExtension, IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldControl } from '../form-field';\r\n\r\n// eslint-disable-next-line no-use-before-define\r\nexport type MonkeyInputUploadChangeEvent = { component: MonkeyInputUploadComponent; file: File };\r\n\r\n@Component({\r\n selector: 'monkey-input-upload',\r\n imports: [],\r\n template: `\r\n <div class=\"mecx-input-upload-value\" [class.has-value]=\"value\">\r\n {{ value?.filename || value?.fileName || placeholder }}\r\n </div>\r\n <input\r\n (change)=\"onFileSelected($event)\"\r\n type=\"file\"\r\n class=\"file-input\"\r\n #fileInput\r\n [accept]=\"allowedExtensions.join(',')\"\r\n />\r\n @if (loading) {\r\n <div class=\"progress\">\r\n <div class=\"progress-bar\" [style.width.%]=\"progress\"></div>\r\n </div>\r\n }\r\n `,\r\n styleUrl: './input-upload.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputUploadComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-input-upload'\",\r\n class: 'mecx-input-upload',\r\n '[class.mecx-input-upload-disabled]': '_disabled',\r\n '[class.mecx-input-upload-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyInputUploadComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy, OnChanges\r\n{\r\n @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n @Input() progress: number = 0;\r\n\r\n @Input() placeholder: string = '';\r\n\r\n @Input() maxSizeBytes = 5 * 1024 * 1024;\r\n\r\n @Input() allowedExtensions = ['.jpg', '.jpeg', '.png', '.pdf', '.txt', '.xls', '.xlsx'];\r\n\r\n @Input({ transform: booleanAttribute })\r\n loading = false;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value = null;\r\n\r\n constructor() {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n @Output() onChange = new EventEmitter<MonkeyInputUploadChangeEvent>();\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-input-upload-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = '';\r\n\r\n currency: boolean = false;\r\n\r\n readonly percent: boolean = false;\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n private validateFileSize(file: File): boolean {\r\n return file.size <= this.maxSizeBytes;\r\n }\r\n\r\n private validateFileExtension(file: File): boolean {\r\n if (!this.allowedExtensions || !this.allowedExtensions.length) {\r\n return true;\r\n }\r\n const fileExtension = getFileExtension(file.name);\r\n\r\n const allowedExts = this.allowedExtensions.map((ext) => {\r\n return ext.trim().replace('.', '').toLowerCase();\r\n });\r\n\r\n return allowedExts.includes(fileExtension);\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (!this.loading) {\r\n this.fileInput.nativeElement.click();\r\n }\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n disableToBeDirty?: boolean | undefined;\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n ngAfterContentInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n ngOnDestroy(): void {}\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.disabled = isDisabled;\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n reset(): void {\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n }\r\n\r\n onFileSelected(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n this._onTouched();\r\n if (!input.files?.length) {\r\n return;\r\n }\r\n\r\n const file = input.files.item(0);\r\n\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n\r\n if (!this.validateFileSize(file!)) {\r\n this.ngControl?.control?.setErrors({\r\n maxFileSize: true,\r\n sizeAllowed: formatFileSize(this.maxSizeBytes)\r\n });\r\n this._onBlur();\r\n this.reset();\r\n return;\r\n }\r\n\r\n if (!this.validateFileExtension(file!)) {\r\n this.ngControl?.control?.setErrors({\r\n fileExtension: true,\r\n extensionAllowed: this.allowedExtensions.join(', ')\r\n });\r\n this._onBlur();\r\n this.reset();\r\n return;\r\n }\r\n\r\n this.ngControl?.control?.setErrors(null);\r\n\r\n this._onBlur();\r\n if (this.onChange.observed) {\r\n this.onChange.emit({ component: this, file: file! });\r\n } else {\r\n this.value = {\r\n fileName: file!.name,\r\n file\r\n };\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-upload.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject, Input } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-actions, [monkey-modal-actions]',\r\n host: {\r\n '[class]': `'mecx-modal-actions align-'+mkAlign`,\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalActionsDirective {\r\n @Input() mkAlign: 'start' | 'center' | 'end' = 'end';\r\n\r\n id = inject(IdGenerator).getId('monkey-modal-actions-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-content, [monkey-modal-content]',\r\n host: {\r\n class: 'mecx-modal-content',\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalContentDirective {\r\n id = inject(IdGenerator).getId('monkey-modal-content-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-subtitle, [monkey-modal-subtitle]',\r\n host: {\r\n class: 'mecx-modal-subtitle',\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalSubtitleDirective {\r\n id = inject(IdGenerator).getId('monkey-modal-subtitle-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-title, [monkey-modal-title]',\r\n host: {\r\n class: 'mecx-modal-title',\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalTitleDirective {\r\n id = inject(IdGenerator).getId('monkey-modal-title-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { StaticProvider } from '@angular/core';\r\n\r\nexport class MonkeyModalConfig {\r\n id?: string;\r\n\r\n icon?: string;\r\n\r\n panelClass?: string | string[] = '';\r\n\r\n hasBackdrop?: boolean = true;\r\n\r\n backdropClass?: string | string[] = 'mecx-modal-overlay';\r\n\r\n disableClose?: boolean = false;\r\n\r\n disableBackdropClose?: boolean = false;\r\n\r\n maxWidth?: number | string;\r\n\r\n maxHeight?: number | string;\r\n\r\n fullscreen?: boolean = false;\r\n\r\n position?:\r\n | 'left-top'\r\n | 'center-top'\r\n | 'right-top'\r\n | 'left-center'\r\n | 'center-center'\r\n | 'right-center'\r\n | 'left-bottom'\r\n | 'center-bottom'\r\n | 'right-bottom' = 'center-center';\r\n\r\n data?: any | null = null;\r\n\r\n closeOnNavigation?: boolean = true;\r\n\r\n providers?: StaticProvider[];\r\n}\r\n\r\nexport interface MonkeyModalDefaultConfig {\r\n title: string;\r\n subtitle?: string;\r\n content: string;\r\n cancelLabel: string;\r\n okLabel: string;\r\n}\r\n\r\nexport interface MonkeyModalConfirmationConfig {\r\n title: string;\r\n content: string;\r\n cancelLabel: string;\r\n okLabel: string;\r\n type?: 'error' | 'success' | 'warning';\r\n confirmColor?: 'error' | 'success' | 'theme';\r\n icon?: string;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { hasModifierKey } from '@angular/cdk/keycodes';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentRef } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { MonkeyModalConfig } from './modal-config';\r\n\r\nexport class MonkeyModalRef {\r\n readonly id?: string;\r\n\r\n readonly componentInstance!: any;\r\n\r\n readonly componentRef!: ComponentRef<any> | null;\r\n\r\n readonly icon?: string;\r\n\r\n disableClose: boolean | undefined;\r\n\r\n disableBackdropClose: boolean | undefined;\r\n\r\n closeOnNavigation: boolean | undefined;\r\n\r\n componentElement!: HTMLElement;\r\n\r\n readonly closed: Observable<any> = new Subject<any>();\r\n\r\n readonly backdropClick: Observable<MouseEvent>;\r\n\r\n readonly keydownEvents: Observable<KeyboardEvent>;\r\n\r\n readonly outsidePointerEvents: Observable<MouseEvent>;\r\n\r\n constructor(\r\n readonly overlayRef: OverlayRef,\r\n readonly config: MonkeyModalConfig\r\n ) {\r\n this.id = config.id;\r\n this.icon = config.icon;\r\n this.disableClose = config.disableClose;\r\n this.disableBackdropClose = config.disableBackdropClose;\r\n this.closeOnNavigation = config.closeOnNavigation;\r\n this.backdropClick = overlayRef.backdropClick();\r\n this.keydownEvents = overlayRef.keydownEvents();\r\n this.outsidePointerEvents = overlayRef.outsidePointerEvents();\r\n\r\n if (!this.disableBackdropClose) {\r\n this.keydownEvents.subscribe((event) => {\r\n if (event.key === 'Escape' && !this.disableClose && !hasModifierKey(event)) {\r\n event.preventDefault();\r\n this.close(undefined);\r\n }\r\n });\r\n\r\n this.backdropClick.subscribe(() => {\r\n if (!this.disableClose) {\r\n this.close(undefined);\r\n }\r\n });\r\n }\r\n }\r\n\r\n close(result?: any): void {\r\n if (this.componentInstance) {\r\n const closedSubject = this.closed as Subject<any>;\r\n\r\n const active = document.activeElement as HTMLElement;\r\n if (active && this.componentElement.contains(active)) {\r\n active.blur();\r\n }\r\n\r\n this.componentElement.querySelectorAll('monkey-modal')[0].classList.add('fade-out');\r\n setTimeout(() => {\r\n this.overlayRef.detach();\r\n }, 150);\r\n closedSubject.next(result);\r\n closedSubject.complete();\r\n // eslint-disable-next-line no-multi-assign\r\n (this as { componentInstance: any }).componentInstance = null!;\r\n }\r\n }\r\n\r\n afterClosed(): Observable<any> {\r\n return this.closed;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n inject,\r\n OnDestroy,\r\n Optional,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { MonkeyModalRef } from './modal-ref';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-modal',\r\n template: `\r\n <div class=\"mecx-modal-header\">\r\n <div class=\"mecx-modal-header-group\">\r\n <div class=\"mecx-modal-header-title\">\r\n @if (modalRef?.icon) {\r\n <div class=\"mecx-modal-header-icon\">\r\n <i class=\"mk-i mk-i-{{ modalRef?.icon }}\"></i>\r\n </div>\r\n }\r\n <ng-content select=\"monkey-modal-title\"></ng-content>\r\n <ng-content select=\"[monkey-modal-title]\"></ng-content>\r\n </div>\r\n\r\n <ng-content select=\"monkey-modal-subtitle\"></ng-content>\r\n <ng-content select=\"[monkey-modal-subtitle]\"></ng-content>\r\n </div>\r\n @if (!modalRef?.disableClose) {\r\n <monkey-icon-button\r\n size=\"sm\"\r\n type=\"tertiary\"\r\n icon=\"close\"\r\n class=\"mecx-modal-close\"\r\n (click)=\"close()\"\r\n >\r\n </monkey-icon-button>\r\n }\r\n </div>\r\n <ng-content select=\"monkey-modal-content\"></ng-content>\r\n <ng-content select=\"[monkey-modal-content]\"></ng-content>\r\n <ng-content select=\"monkey-modal-actions\"></ng-content>\r\n <ng-content select=\"[monkey-modal-actions]\"></ng-content>\r\n `,\r\n host: {\r\n class: 'mecx-modal',\r\n tabindex: '-1',\r\n '[attr.id]': 'modalRef?.id || null'\r\n },\r\n styleUrl: './modal.component.scss',\r\n standalone: false\r\n})\r\nexport class MonkeyModalComponent implements AfterViewInit, OnDestroy {\r\n private _navigationSubscription: Subscription | null = null;\r\n\r\n private _router = inject(Router);\r\n\r\n constructor(\r\n private _elementRef: ElementRef,\r\n @Optional() public overlayRef?: OverlayRef,\r\n @Optional() public modalRef?: MonkeyModalRef\r\n ) {\r\n // not to do\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this._elementRef) {\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n if (this.modalRef?.closeOnNavigation) {\r\n this._navigationSubscription = this._router.events.subscribe((event) => {\r\n if (event instanceof NavigationStart) {\r\n this.close();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._navigationSubscription) {\r\n this._navigationSubscription.unsubscribe();\r\n this._navigationSubscription = null;\r\n }\r\n }\r\n\r\n close() {\r\n const element = this._elementRef.nativeElement as HTMLElement;\r\n\r\n element.classList.add('fade-out');\r\n\r\n setTimeout(() => {\r\n this.modalRef?.close();\r\n }, 150);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { InjectionToken } from '@angular/core';\r\nimport { MonkeyModalConfirmationConfig, MonkeyModalDefaultConfig } from './modal-config';\r\n\r\nexport const MECX_MODAL_DATA = new InjectionToken<any>('mecxModalData');\r\nexport const MECX_MODAL_DEFAULT_CONFIG = new InjectionToken<MonkeyModalDefaultConfig>(\r\n 'mecxModalDefaultConfig'\r\n);\r\nexport const MECX_MODAL_CONFIRMATION_CONFIG = new InjectionToken<MonkeyModalConfirmationConfig>(\r\n 'mecxModalConfirmationConfig'\r\n);\r\n\r\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.dev/license\r\n */\r\nexport function reverseForEach<T>(items: T[] | readonly T[], callback: (current: T) => void) {\r\n let i = items.length;\r\n\r\n // eslint-disable-next-line no-plusplus\r\n while (i--) {\r\n callback(items[i]);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, Inject, ViewEncapsulation } from '@angular/core';\r\nimport { MonkeyModalConfirmationConfig } from '../modal-config';\r\nimport { MonkeyModalRef } from '../modal-ref';\r\nimport { MECX_MODAL_CONFIRMATION_CONFIG } from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-modal-confirmation',\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: ['./confirmation.component.scss'],\r\n template: `\r\n <monkey-modal class=\"modal-confirmation\">\r\n <monkey-modal-content>\r\n @if (config.icon) {\r\n <div class=\"modal-confirmation-icon {{ config.type }}\">\r\n <i class=\"mk-i mk-i-{{ config.icon }} xxl\"></i>\r\n </div>\r\n }\r\n <div class=\"confirmation-title\" [innerHTML]=\"config.title\"></div>\r\n <div class=\"confirmation-description\" [innerHTML]=\"config.content\"></div>\r\n </monkey-modal-content>\r\n <monkey-modal-actions>\r\n <monkey-button type=\"tertiary\" (click)=\"onClose()\">{{ config.cancelLabel }}</monkey-button>\r\n <monkey-button type=\"primary\" (click)=\"onSubmit()\">{{ config.okLabel }}</monkey-button>\r\n </monkey-modal-actions>\r\n </monkey-modal>\r\n `,\r\n standalone: false\r\n})\r\nexport class MonkeyModalConfirmationComponent {\r\n constructor(\r\n @Inject(MECX_MODAL_CONFIRMATION_CONFIG) public config: MonkeyModalConfirmationConfig,\r\n @Inject(MonkeyModalRef) private modalRef: MonkeyModalRef\r\n ) {\r\n // not to do\r\n }\r\n\r\n onSubmit() {\r\n this.modalRef.close(true);\r\n }\r\n\r\n onClose() {\r\n this.modalRef.close();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MonkeyModalDefaultConfig } from '../modal-config';\r\nimport { MonkeyModalRef } from '../modal-ref';\r\nimport { MECX_MODAL_DEFAULT_CONFIG } from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-modal-default',\r\n template: `\r\n <monkey-modal>\r\n <monkey-modal-title [innerHTML]=\"config.title\"></monkey-modal-title>\r\n <monkey-modal-subtitle [innerHTML]=\"config.subtitle\"></monkey-modal-subtitle>\r\n <monkey-modal-content [innerHTML]=\"config.content\"></monkey-modal-content>\r\n <monkey-modal-actions mkAlign=\"end\">\r\n <monkey-button type=\"tertiary\" (click)=\"onClose()\">{{ config.cancelLabel }}</monkey-button>\r\n <monkey-button type=\"primary\" (click)=\"onSubmit()\">{{ config.okLabel }}</monkey-button>\r\n </monkey-modal-actions>\r\n </monkey-modal>\r\n `,\r\n standalone: false\r\n})\r\nexport class MonkeyModalDefaultComponent {\r\n constructor(\r\n @Inject(MECX_MODAL_DEFAULT_CONFIG) public config: MonkeyModalDefaultConfig,\r\n @Inject(MonkeyModalRef) private modalRef: MonkeyModalRef\r\n ) {\r\n // not to do\r\n }\r\n\r\n onSubmit() {\r\n this.modalRef.close(true);\r\n }\r\n\r\n onClose() {\r\n this.modalRef.close();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MonkeyButtonComponent } from '../button';\r\nimport { MonkeyIconButtonComponent } from '../icon-button/icon-button.component';\r\nimport { MonkeyModalConfirmationComponent } from './components/confirmation.component';\r\nimport { MonkeyModalDefaultComponent } from './components/default';\r\nimport { MonkeyModalActionsDirective } from './directives/actions';\r\nimport { MonkeyModalContentDirective } from './directives/content';\r\nimport { MonkeyModalSubtitleDirective } from './directives/subtitle';\r\nimport { MonkeyModalTitleDirective } from './directives/title';\r\nimport { MonkeyModalComponent } from './modal.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MonkeyButtonComponent, MonkeyIconButtonComponent],\r\n declarations: [\r\n MonkeyModalComponent,\r\n MonkeyModalDefaultComponent,\r\n MonkeyModalConfirmationComponent,\r\n MonkeyModalTitleDirective,\r\n MonkeyModalSubtitleDirective,\r\n MonkeyModalContentDirective,\r\n MonkeyModalActionsDirective\r\n ],\r\n exports: [\r\n MonkeyModalComponent,\r\n MonkeyModalTitleDirective,\r\n MonkeyModalSubtitleDirective,\r\n MonkeyModalContentDirective,\r\n MonkeyModalActionsDirective\r\n ]\r\n})\r\nexport class MonkeyModalModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\r\nimport { inject, Injectable, Injector, StaticProvider } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyModalConfirmationComponent } from './components/confirmation.component';\r\nimport { MonkeyModalDefaultComponent } from './components/default';\r\nimport {\r\n MonkeyModalConfig,\r\n MonkeyModalConfirmationConfig,\r\n MonkeyModalDefaultConfig\r\n} from './modal-config';\r\nimport { MonkeyModalRef } from './modal-ref';\r\nimport {\r\n MECX_MODAL_CONFIRMATION_CONFIG,\r\n MECX_MODAL_DATA,\r\n MECX_MODAL_DEFAULT_CONFIG,\r\n reverseForEach\r\n} from './utils';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MonkeyModalService {\r\n protected _idGenerator = inject(IdGenerator);\r\n\r\n protected _injector = inject(Injector);\r\n\r\n protected _overlay = inject(Overlay);\r\n\r\n protected _openDialogsAtThisLevel: MonkeyModalRef[] = [];\r\n\r\n protected _parentDialog = inject(MonkeyModalService, { optional: true, skipSelf: true });\r\n\r\n protected get openDialogs(): readonly MonkeyModalRef[] {\r\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\r\n }\r\n\r\n private getOverlayConfig(config: MonkeyModalConfig): OverlayConfig {\r\n let positionStrategy;\r\n const marginStrategy = '20px';\r\n if (config.position === 'left-top') {\r\n positionStrategy = this._overlay.position().global().left(marginStrategy).top(marginStrategy);\r\n } else if (config.position === 'center-top') {\r\n positionStrategy = this._overlay.position().global().centerHorizontally().top(marginStrategy);\r\n } else if (config.position === 'right-top') {\r\n positionStrategy = this._overlay\r\n .position()\r\n .global()\r\n .right(marginStrategy)\r\n .top(marginStrategy);\r\n } else if (config.position === 'left-center') {\r\n positionStrategy = this._overlay.position().global().left(marginStrategy).centerVertically();\r\n } else if (config.position === 'center-center') {\r\n positionStrategy = this._overlay.position().global().centerHorizontally().centerVertically();\r\n } else if (config.position === 'right-center') {\r\n positionStrategy = this._overlay.position().global().right(marginStrategy).centerVertically();\r\n } else if (config.position === 'left-bottom') {\r\n positionStrategy = this._overlay\r\n .position()\r\n .global()\r\n .left(marginStrategy)\r\n .bottom(marginStrategy);\r\n } else if (config.position === 'center-bottom') {\r\n positionStrategy = this._overlay.position().global().centerHorizontally().bottom('20px');\r\n } else if (config.position === 'right-bottom') {\r\n positionStrategy = this._overlay\r\n .position()\r\n .global()\r\n .right(marginStrategy)\r\n .bottom(marginStrategy);\r\n }\r\n\r\n let panelClass = ['monkey-modal-panel'];\r\n\r\n if (config.fullscreen) {\r\n panelClass.push('monkey-modal-fullscreen');\r\n }\r\n\r\n if (Array.isArray(config.panelClass)) {\r\n panelClass = [...panelClass, ...config.panelClass];\r\n } else {\r\n panelClass.push(config.panelClass as string);\r\n }\r\n\r\n const state = new OverlayConfig({\r\n positionStrategy,\r\n scrollStrategy: this._overlay.scrollStrategies.block(),\r\n panelClass,\r\n hasBackdrop: config.hasBackdrop,\r\n maxWidth: config.maxWidth,\r\n maxHeight: config.maxHeight,\r\n disposeOnNavigation: config.closeOnNavigation\r\n });\r\n\r\n if (config.backdropClass) {\r\n state.backdropClass = config.backdropClass;\r\n }\r\n\r\n if (config.maxWidth) {\r\n state.width = '100%';\r\n }\r\n if (config.maxHeight) {\r\n state.height = '100%';\r\n }\r\n\r\n return state;\r\n }\r\n\r\n private createInjector(\r\n config: MonkeyModalConfig,\r\n dialogRef: MonkeyModalRef,\r\n overlayRef: OverlayRef,\r\n fallbackInjector: Injector | undefined\r\n ): Injector {\r\n const providers: StaticProvider[] = [\r\n { provide: OverlayRef, useValue: overlayRef },\r\n { provide: MonkeyModalRef, useValue: dialogRef },\r\n { provide: MECX_MODAL_DATA, useValue: config.data }\r\n ];\r\n\r\n if (config.providers) {\r\n providers.push(...config.providers);\r\n }\r\n\r\n return Injector.create({ parent: fallbackInjector, providers });\r\n }\r\n\r\n open<T>(component: ComponentType<T>, config: MonkeyModalConfig) {\r\n const defaultConfig = new MonkeyModalConfig();\r\n\r\n config = { ...defaultConfig, ...config };\r\n config.id = this._idGenerator.getId('monkey-modal-');\r\n\r\n const overlayConfig = this.getOverlayConfig(config);\r\n const overlayRef = this._overlay.create(overlayConfig);\r\n const modalRef = new MonkeyModalRef(overlayRef, config);\r\n\r\n const injector = this.createInjector(config, modalRef, overlayRef, this._injector);\r\n\r\n const componentPortal = new ComponentPortal(component, null, injector);\r\n const componentRef = overlayRef.attach(componentPortal);\r\n\r\n const componentElement = componentRef.location.nativeElement as HTMLElement;\r\n componentElement.style.width = '100%';\r\n componentElement.style.height = '100%';\r\n modalRef.componentElement = componentElement;\r\n\r\n (modalRef as { componentInstance: T }).componentInstance = componentRef.instance;\r\n\r\n (this.openDialogs as MonkeyModalRef[]).push(modalRef);\r\n\r\n return modalRef;\r\n }\r\n\r\n openDefault(params: MonkeyModalDefaultConfig, config: MonkeyModalConfig) {\r\n config.providers = [{ provide: MECX_MODAL_DEFAULT_CONFIG, useValue: params }];\r\n config.icon = config.icon ? config.icon : 'help';\r\n\r\n return this.open(MonkeyModalDefaultComponent, config);\r\n }\r\n\r\n openConfirmation(params: MonkeyModalConfirmationConfig, config: MonkeyModalConfig) {\r\n config.providers = [{ provide: MECX_MODAL_CONFIRMATION_CONFIG, useValue: params }];\r\n\r\n return this.open(MonkeyModalConfirmationComponent, config);\r\n }\r\n\r\n closeAll(): void {\r\n reverseForEach(this.openDialogs, (dialog) => {\r\n return dialog.close();\r\n });\r\n\r\n (this.openDialogs as MonkeyModalRef[]).splice(0, this.openDialogs.length);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './directives/actions';\r\nexport * from './directives/content';\r\nexport * from './directives/subtitle';\r\nexport * from './directives/title';\r\nexport * from './modal-config';\r\nexport * from './modal-ref';\r\nexport * from './modal.component';\r\nexport * from './modal.module';\r\nexport * from './modal.service';\r\nexport { MECX_MODAL_DATA, MECX_MODAL_DEFAULT_CONFIG } from './utils';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, inject, Input, output } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\n@Component({\r\n selector: 'monkey-pass-number',\r\n imports: [MonkeyButtonComponent],\r\n template: `\r\n <div class=\"pin-selected\">\r\n @for (input of [0, 1, 2, 3]; track input) {\r\n <div class=\"pin-input\">\r\n {{ selected[input] }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"grid\">\r\n @for (pin of [1, 2, 3, 4, 5, 6, 7, 8, 9]; track pin) {\r\n <monkey-button\r\n size=\"lg\"\r\n (click)=\"onPress(pin)\"\r\n [disabled]=\"isDisabledNumbers || disabled\"\r\n color=\"black\"\r\n >\r\n {{ pin }}\r\n </monkey-button>\r\n }\r\n <div></div>\r\n <monkey-button\r\n size=\"lg\"\r\n (click)=\"onPress(0)\"\r\n [disabled]=\"isDisabledNumbers || disabled\"\r\n color=\"black\"\r\n >\r\n 0\r\n </monkey-button>\r\n <monkey-button\r\n size=\"lg\"\r\n type=\"secondary\"\r\n (click)=\"clear()\"\r\n [disabled]=\"isDisabledClear || disabled\"\r\n >\r\n <i class=\"mk-i mk-i-delete\"></i>\r\n </monkey-button>\r\n </div>\r\n `,\r\n styleUrl: './pass-number.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-pass-number',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPassNumberComponent {\r\n @Input() disabled!: boolean;\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-pass-number-');\r\n\r\n protected _id!: string;\r\n\r\n protected selected: number[] = [];\r\n\r\n onChange = output<number[]>();\r\n\r\n get isDisabledNumbers() {\r\n return this.selected?.length === 4;\r\n }\r\n\r\n get isDisabledClear() {\r\n return this.selected?.length === 0;\r\n }\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n protected clear(): void {\r\n this.selected = [];\r\n this.onChange.emit(this.selected);\r\n }\r\n protected onPress(pin: number): void {\r\n if (this.selected.length < 4) {\r\n this.selected.push(pin);\r\n this.onChange.emit(this.selected);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { Component, inject, Input, OnInit, output } from '@angular/core';\r\nimport { IdGenerator, shuffle } from '../../../utils';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\ntype PinCombinations = {\r\n first: number;\r\n last: number;\r\n};\r\n\r\ntype PinResult = {\r\n passNumber1: string;\r\n passNumber2: string;\r\n passNumber3: string;\r\n passNumber4: string;\r\n};\r\n\r\n@Component({\r\n selector: 'monkey-pass-secret-number',\r\n imports: [AsyncPipe, MonkeyButtonComponent],\r\n template: `\r\n <div class=\"pin-selected\">\r\n @for (input of [0, 1, 2, 3]; track input) {\r\n <div class=\"pin-input\" [class.filled]=\"selected[input]\"></div>\r\n }\r\n </div>\r\n <div class=\"grid\">\r\n @for (pin of pins; track pin) {\r\n <monkey-button\r\n size=\"lg\"\r\n (click)=\"onPress(pin)\"\r\n [disabled]=\"isDisabledNumbers || disabled\"\r\n color=\"black\"\r\n >\r\n {{ pin.first }} {{ orLabel | async }} {{ pin.last }}\r\n </monkey-button>\r\n }\r\n <monkey-button\r\n data-testid=\"clear-button\"\r\n size=\"lg\"\r\n type=\"secondary\"\r\n (click)=\"clear()\"\r\n [disabled]=\"isDisabledClear || disabled\"\r\n >\r\n <i class=\"mk-i mk-i-delete\"></i>\r\n </monkey-button>\r\n </div>\r\n `,\r\n styleUrl: './pass-number.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-pass-secret-number',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPassSecretNumberComponent implements OnInit {\r\n protected _uid = inject(IdGenerator).getId('monkey-pass-secret-number-');\r\n\r\n @Input() disabled!: boolean;\r\n\r\n protected _id!: string;\r\n\r\n readonly orLabel = inject(MonkeyDictionaryService).get('OR');\r\n\r\n protected pins: PinCombinations[] = [];\r\n\r\n protected selected: string[] = [];\r\n\r\n onChange = output<PinResult>();\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n get isDisabledNumbers() {\r\n return this.selected?.length === 4;\r\n }\r\n\r\n get isDisabledClear() {\r\n return this.selected?.length === 0;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n ngOnInit() {\r\n const qtd = 10;\r\n\r\n const pinPasswords = shuffle(\r\n new Array(qtd).fill(qtd).map((value: number, i: number) => {\r\n return (value * i) / qtd;\r\n })\r\n );\r\n\r\n this.pins = pinPasswords\r\n .map((value: number, index: number) => {\r\n return {\r\n first: value,\r\n last: pinPasswords[pinPasswords.length - index - 1]\r\n };\r\n })\r\n .slice(0, 5);\r\n }\r\n\r\n protected clear(): void {\r\n this.selected = [];\r\n this.onChange.emit(this.getPinPassword());\r\n }\r\n\r\n private getPinPassword(): PinResult {\r\n const result: PinResult = {\r\n passNumber1: '',\r\n passNumber2: '',\r\n passNumber3: '',\r\n passNumber4: ''\r\n };\r\n this.selected.forEach((value, index) => {\r\n result[`passNumber${index + 1}` as keyof PinResult] = value;\r\n });\r\n return result!;\r\n }\r\n\r\n protected onPress(pin: PinCombinations): void {\r\n if (this.selected.length < 4) {\r\n this.selected.push(`${pin.first}${pin.last}`);\r\n this.onChange.emit(this.getPinPassword());\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './pass-number.component';\r\nexport * from './pass-secret-number.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n Optional,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeySize } from '../../interfaces';\r\nimport { MonkeyFormFieldControl } from '../form-field/form-field-control';\r\nimport { MonkeyFormFieldComponent } from '../form-field/form-field.component';\r\nimport { MonkeyOptionComponent } from '../option/option.component';\r\n\r\n@Component({\r\n selector: 'monkey-radiobutton',\r\n imports: [ReactiveFormsModule, FormsModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: 'radio-button.component.html',\r\n styleUrls: ['./radio-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyRadioButtonComponent }\r\n ],\r\n host: {\r\n 'data-testid': 'monkey-radiobutton',\r\n class: 'mecx-radiobutton',\r\n '[class.mecx-disabled]': 'disabled',\r\n '[class.mecx-radiobutton-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyRadioButtonComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit\r\n{\r\n @ContentChildren(MonkeyOptionComponent) options!: QueryList<MonkeyOptionComponent>;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Output() onSearch = new EventEmitter();\r\n\r\n @Input() position = 'horizontal';\r\n\r\n @Input()\r\n size: MonkeySize = 'lg';\r\n\r\n @HostBinding('class')\r\n get classes() {\r\n return `${this.position} ${this.size}`;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value) {\r\n this._value = value;\r\n this._onChange(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value = null;\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n focused: boolean = false;\r\n\r\n _disabled: boolean = false;\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-radiobutton-');\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n readonly type: string = 'radio-button';\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef,\r\n @Optional() private formField: MonkeyFormFieldComponent\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n private changeSelected() {\r\n setTimeout(() => {\r\n if (this.options) {\r\n this.options.forEach((opt) => {\r\n opt.onSelect(opt.value() === this.value);\r\n });\r\n }\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n private initializeOptions() {\r\n setTimeout(() => {\r\n this.options?.forEach((option) => {\r\n option.type = 'radio';\r\n if (!option.action) {\r\n option.action = this.selectOption.bind(this, option);\r\n }\r\n });\r\n this.changeDetectorRef.markForCheck();\r\n }, 0);\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initializeOptions();\r\n this.options.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\r\n this.initializeOptions();\r\n this.changeSelected();\r\n });\r\n }\r\n\r\n selectOption(option: MonkeyOptionComponent): void {\r\n if (!option.disabled && !this.disabled) {\r\n this.value = option.value();\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n\r\n this.options.forEach((opt) => {\r\n opt.onSelect(opt.value() === this.value);\r\n });\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n this.changeSelected();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (this.disabled) return;\r\n\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n this.initializeOptions();\r\n }\r\n}\r\n","<ng-content />\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './radio-button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, HostBinding, inject, Input, input, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [],\r\n selector: 'monkey-security-level',\r\n styleUrl: './security-level.component.scss',\r\n templateUrl: './security-level.component.html',\r\n host: {\r\n 'data-testid': 'monkey-security-level',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeySecurityLevelComponent {\r\n label = input<string>();\r\n\r\n score = input.required<number>();\r\n\r\n strengthLabel = input<string>();\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n if (this.score() === 0) {\r\n return 'empty';\r\n }\r\n\r\n if (this.score() < 300) {\r\n return 'weak';\r\n }\r\n\r\n if (this.score() >= 300 && this.score() < 800) {\r\n return 'medium';\r\n }\r\n\r\n if (this.score() >= 800 && this.score() < 1000) {\r\n return 'strong';\r\n }\r\n\r\n return 'very-strong';\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-security-level-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<div class=\"body\">\r\n <div>\r\n @if (label(); as lb) {\r\n <span data-testid=\"label\">\r\n {{ lb }}\r\n </span>\r\n }\r\n @if (strengthLabel(); as strLabel) {\r\n <span data-testid=\"str-label\" class=\"level-info\">\r\n {{ strLabel }}\r\n </span>\r\n }\r\n </div>\r\n <div class=\"bar\"></div>\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './security-level.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n inject,\r\n Input,\r\n input\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\ntype Status = 'default' | 'success' | 'warning' | 'error' | 'question' | 'info';\r\n\r\n@Component({\r\n selector: 'monkey-status',\r\n imports: [],\r\n templateUrl: './status.component.html',\r\n styleUrl: './status.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-status',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyStatusComponent {\r\n type = input.required<Status>();\r\n\r\n size = input<MonkeySize>('md');\r\n\r\n label = input<string>();\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n return `${this.type()} ${this.size()}`;\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-status-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<div class=\"status\"></div>\r\n@if (label(); as lb) {\r\n <span>\r\n {{ lb }}\r\n </span>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './status.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n inject,\r\n Input,\r\n QueryList,\r\n signal\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-step',\r\n standalone: false,\r\n template: `\r\n <div\r\n class=\"item\"\r\n [class.active]=\"isActive()\"\r\n [class.complete]=\"isComplete()\"\r\n [class.current]=\"isCurrent()\"\r\n [class.substep]=\"isSubStep()\"\r\n >\r\n <div class=\"step\">\r\n <div class=\"number\" [class.icon]=\"!!icon\">\r\n @if (icon) {\r\n <i class=\"mk-i mk-i-{{ icon }} sm\"></i>\r\n } @else if (isComplete()) {\r\n <util-icon name=\"check\" />\r\n } @else {\r\n {{ number() }}\r\n }\r\n </div>\r\n </div>\r\n <div class=\"label\">\r\n <div>{{ label }}</div>\r\n @if (isCurrent()) {\r\n <div class=\"current-icon\">\r\n <i class=\"mk-i mk-i-arrow-line-right sm\"></i>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (hasSubSteps() && (isActive() || isCurrent())) {\r\n <div class=\"substeps\">\r\n <ng-content />\r\n </div>\r\n }\r\n `,\r\n styleUrl: './step.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-step',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyStepComponent implements AfterContentInit {\r\n protected id = inject(IdGenerator).getId('monkey-step-');\r\n\r\n // eslint-disable-next-line no-use-before-define\r\n @ContentChildren(MonkeyStepComponent) subSteps!: QueryList<MonkeyStepComponent>;\r\n\r\n @Input() label = '';\r\n\r\n @Input() step = '';\r\n\r\n @Input() icon = '';\r\n\r\n number = signal<number | undefined>(undefined);\r\n\r\n hasSubSteps = signal<boolean>(true);\r\n\r\n isSubStep = signal<boolean>(false);\r\n\r\n isCurrent = signal<boolean>(false);\r\n\r\n isComplete = signal<boolean>(false);\r\n\r\n isActive = signal<boolean>(false);\r\n\r\n ngAfterContentInit(): void {\r\n if (this.subSteps.length <= 0) {\r\n this.hasSubSteps.set(false);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n inject,\r\n Input,\r\n OnChanges,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyStepComponent } from './step/step.component';\r\n\r\n@Component({\r\n selector: 'monkey-stepper',\r\n standalone: false,\r\n template: `<ng-content />`,\r\n styleUrl: './stepper.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-stepper',\r\n '[attr.id]': 'monkeyId',\r\n '[id]': 'monkeyId',\r\n '[class.horizontal]': `direction === 'horizontal'`\r\n }\r\n})\r\nexport class MonkeyStepperComponent implements AfterContentInit, OnChanges {\r\n protected monkeyId = inject(IdGenerator).getId('monkey-stepper-');\r\n\r\n @ContentChildren(MonkeyStepComponent) steps!: QueryList<MonkeyStepComponent>;\r\n\r\n @Input() direction: 'horizontal' | 'vertical' = 'vertical';\r\n\r\n private _id = '';\r\n\r\n @Input()\r\n set id(value: string) {\r\n this._id = value;\r\n }\r\n\r\n get id() {\r\n return this._id;\r\n }\r\n\r\n @Input() currentStep? = '';\r\n\r\n ngAfterContentInit(): void {\r\n this.render();\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.steps) {\r\n this.render();\r\n }\r\n }\r\n\r\n render() {\r\n let stepFound = false;\r\n\r\n this.steps.forEach((step, index) => {\r\n step.number.set(index + 1);\r\n\r\n step.isCurrent.set(this.currentStep === step.step);\r\n if (step.isCurrent()) {\r\n stepFound = true;\r\n }\r\n\r\n if (step.hasSubSteps()) {\r\n step.subSteps.forEach((subStep) => {\r\n subStep.isSubStep.set(true);\r\n subStep.isCurrent.set(this.currentStep === subStep.step);\r\n if (subStep.isCurrent()) {\r\n stepFound = true;\r\n }\r\n subStep.isComplete.set(!stepFound);\r\n });\r\n\r\n step.isComplete.set(\r\n step.subSteps.toArray().every((_) => {\r\n return _.isComplete();\r\n })\r\n );\r\n\r\n step.isActive.set(\r\n step.subSteps.toArray().some((_) => {\r\n return _.isCurrent();\r\n })\r\n );\r\n } else {\r\n step.isComplete.set(!stepFound);\r\n }\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { NgModule } from '@angular/core';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { MonkeyStepComponent } from './step/step.component';\r\nimport { MonkeyStepperComponent } from './stepper.component';\r\n\r\n@NgModule({\r\n declarations: [MonkeyStepperComponent, MonkeyStepComponent],\r\n imports: [UtilIconComponent],\r\n exports: [MonkeyStepperComponent, MonkeyStepComponent]\r\n})\r\nexport class MonkeyStepperModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../../../utils';\r\nimport { MonkeyButtonComponent } from '../../../button';\r\n\r\n@Component({\r\n imports: [MonkeyButtonComponent],\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-pagination-action',\r\n exportAs: 'monkeyPaginationAction',\r\n templateUrl: './pagination-action.html',\r\n styleUrl: './pagination-action.scss',\r\n host: {\r\n 'data-testid': 'monkey-pagination-action',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPaginationActionComponent {\r\n @Input() disabled!: boolean;\r\n\r\n @Input() first!: boolean;\r\n\r\n @Input() last!: boolean;\r\n\r\n @Input({ required: true }) next: boolean = false;\r\n\r\n @Input({ required: true }) prev: boolean = false;\r\n\r\n @Output() onAction = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-pagination-action-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<monkey-button\r\n type=\"secondary\"\r\n size=\"sm\"\r\n (click)=\"onAction.next('prev')\"\r\n [disabled]=\"disabled || !prev\"\r\n>\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.670 8.630 C 9.335 10.964,8.550 11.772,8.523 11.870 C 8.501 11.947,8.501 12.053,8.523 12.130 C 8.574 12.316,14.682 18.423,14.870 18.477 C 15.231 18.581,15.581 18.231,15.477 17.869 C 15.450 17.774,14.687 16.987,12.570 14.870 L 9.700 12.000 12.570 9.130 C 14.687 7.013,15.450 6.226,15.477 6.131 C 15.528 5.951,15.464 5.747,15.316 5.623 C 15.219 5.541,15.151 5.520,14.988 5.520 L 14.781 5.520 11.670 8.630 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"black\"\r\n ></path>\r\n </svg>\r\n</monkey-button>\r\n\r\n<monkey-button\r\n type=\"secondary\"\r\n size=\"sm\"\r\n (click)=\"onAction.next('next')\"\r\n [disabled]=\"disabled || !next\"\r\n>\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M8.751 5.583 C 8.552 5.691,8.459 6.004,8.564 6.213 C 8.588 6.261,9.889 7.583,11.454 9.150 L 14.300 12.000 11.454 14.850 C 9.889 16.418,8.588 17.739,8.564 17.787 C 8.357 18.197,8.823 18.640,9.232 18.423 C 9.363 18.353,15.373 12.337,15.436 12.213 C 15.497 12.092,15.491 11.897,15.423 11.768 C 15.353 11.637,9.337 5.627,9.213 5.564 C 9.092 5.503,8.881 5.512,8.751 5.583 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"black\"\r\n ></path>\r\n </svg>\r\n</monkey-button>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, inject, Input, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../../../utils';\r\n\r\n@Component({\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-pagination-label',\r\n exportAs: 'monkeyPaginationLabel',\r\n templateUrl: './pagination-label.html',\r\n styleUrl: './pagination-label.scss',\r\n host: {\r\n 'data-testid': 'monkey-pagination-label',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPaginationLabelComponent {\r\n protected _uid = inject(IdGenerator).getId('monkey-pagination-label-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { IdGenerator } from '../../../../../utils';\r\nimport { MonkeyFormFieldModule } from '../../../form-field/form-field.module';\r\nimport { MonkeyOptionComponent } from '../../../option/option.component';\r\nimport { MonkeySelectComponent } from '../../../select/select.component';\r\n\r\n@Component({\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeySelectComponent,\r\n MonkeyOptionComponent,\r\n MonkeyFormFieldModule\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-pagination-size',\r\n exportAs: 'monkeyPaginationSize',\r\n templateUrl: './pagination-size.html',\r\n styleUrl: './pagination-size.scss',\r\n host: {\r\n 'data-testid': 'monkey-pagination-size',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPaginationSizeComponent {\r\n @Input({ required: true }) size!: 10 | 20 | 50 | 100;\r\n\r\n @Input() disabled!: boolean;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-pagination-size-');\r\n\r\n protected _id!: string;\r\n\r\n sizes = [10, 20, 50, 100];\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n<monkey-form-field hideClear size=\"sm\" noFooterSpace>\r\n <monkey-select\r\n placeholder=\"\"\r\n [ngModel]=\"size\"\r\n (onChange)=\"onChange.next($event)\"\r\n [disabled]=\"disabled\"\r\n [showSearch]=\"false\"\r\n >\r\n @for (item of sizes; track item) {\r\n <monkey-option [value]=\"item\">{{ item }}</monkey-option>\r\n }\r\n </monkey-select>\r\n</monkey-form-field>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Directive,\r\n TemplateRef,\r\n booleanAttribute,\r\n contentChild,\r\n inject,\r\n input,\r\n model\r\n} from '@angular/core';\r\nimport { ColumnAlign, ColumnPinned } from './table-core';\r\n\r\nexport interface MonkeyTableCellContext<T> {\r\n $implicit: T;\r\n row: T;\r\n index: number;\r\n first: boolean;\r\n last: boolean;\r\n}\r\n\r\nexport type MonkeyTableSortKind = 'text' | 'number' | 'date';\r\n\r\n@Directive({\r\n selector: 'ng-template[mkCell]'\r\n})\r\nexport class MonkeyTableCellDirective<T> {\r\n readonly template = inject<TemplateRef<MonkeyTableCellContext<T>>>(TemplateRef);\r\n\r\n static ngTemplateContextGuard<T>(\r\n _dir: MonkeyTableCellDirective<T>,\r\n _ctx: unknown\r\n ): _ctx is MonkeyTableCellContext<T> {\r\n return true;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkHeaderCell]'\r\n})\r\nexport class MonkeyTableHeaderCellDirective {\r\n readonly template = inject<TemplateRef<void>>(TemplateRef);\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-container[mkColumn]'\r\n})\r\nexport class MonkeyTableColumnDirective<T = any> {\r\n readonly name = input.required<string>({ alias: 'mkColumn' });\r\n\r\n readonly label = input.required<string>();\r\n\r\n readonly labelHidden = input(false, { transform: booleanAttribute });\r\n\r\n readonly unit = input<string>('');\r\n\r\n readonly width = input<string>('');\r\n\r\n readonly align = input<ColumnAlign>('start');\r\n\r\n readonly sortable = input(false, { transform: booleanAttribute });\r\n\r\n readonly sortKind = input<MonkeyTableSortKind>('text');\r\n\r\n readonly hideable = input(true, { transform: booleanAttribute });\r\n\r\n readonly movable = input(true, { transform: booleanAttribute });\r\n\r\n readonly pinnable = input(true, { transform: booleanAttribute });\r\n\r\n readonly pinned = model<ColumnPinned>('none');\r\n\r\n readonly hidden = model(false);\r\n\r\n readonly cell = contentChild(MonkeyTableCellDirective<T>);\r\n\r\n readonly headerCell = contentChild(MonkeyTableHeaderCellDirective);\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkRowDetail]'\r\n})\r\nexport class MonkeyTableRowDetailDirective<T> {\r\n readonly template = inject<TemplateRef<{ $implicit: T; row: T }>>(TemplateRef);\r\n\r\n static ngTemplateContextGuard<T>(\r\n _dir: MonkeyTableRowDetailDirective<T>,\r\n _ctx: unknown\r\n ): _ctx is { $implicit: T; row: T } {\r\n return true;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkEmpty]'\r\n})\r\nexport class MonkeyTableEmptyDirective {\r\n readonly template = inject<TemplateRef<void>>(TemplateRef);\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkLoading]'\r\n})\r\nexport class MonkeyTableLoadingDirective {\r\n readonly template = inject<TemplateRef<void>>(TemplateRef);\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\n\r\nexport type SortDirection = 'ascending' | 'descending';\r\n\r\nexport interface SortState {\r\n column: string;\r\n direction: SortDirection;\r\n}\r\n\r\nexport type SelectionState = 'none' | 'partial' | 'all';\r\n\r\nexport type ColumnAlign = 'start' | 'end';\r\n\r\nexport type ColumnPinned = 'none' | 'left' | 'right';\r\n\r\nexport interface MonkeyTableColumnState {\r\n name: string;\r\n hidden: boolean;\r\n pinned: ColumnPinned;\r\n}\r\n\r\nexport function sameColumnState(\r\n a: readonly MonkeyTableColumnState[],\r\n b: readonly MonkeyTableColumnState[]\r\n): boolean {\r\n return (\r\n a.length === b.length &&\r\n a.every((item, index) => {\r\n return (\r\n item.name === b[index].name &&\r\n item.hidden === b[index].hidden &&\r\n item.pinned === b[index].pinned\r\n );\r\n })\r\n );\r\n}\r\n\r\nexport function ariaSortOf(sort: SortState | null, column: string): SortDirection | null {\r\n return sort?.column === column ? sort.direction : null;\r\n}\r\n\r\nexport function interpolate(template: string, values: Record<string, string | number>): string {\r\n if (!template) return '';\r\n return template.replace(/\\{(\\w+)\\}/g, (placeholder, key: string) => {\r\n return values[key] === undefined ? placeholder : String(values[key]);\r\n });\r\n}\r\n\r\nexport function toggleKey(current: ReadonlySet<string>, key: string): ReadonlySet<string> {\r\n const next = new Set(current);\r\n if (!next.delete(key)) next.add(key);\r\n return next;\r\n}\r\n\r\nexport function selectionState(\r\n current: ReadonlySet<string>,\r\n keys: readonly string[]\r\n): SelectionState {\r\n const count = keys.filter((key) => current.has(key)).length;\r\n if (count === 0) return 'none';\r\n return count === keys.length ? 'all' : 'partial';\r\n}\r\n\r\nexport function addKeys(\r\n current: ReadonlySet<string>,\r\n keys: readonly string[],\r\n limit = 0\r\n): ReadonlySet<string> {\r\n const next = new Set(current);\r\n keys.forEach((key) => {\r\n if (limit > 0 && next.size >= limit && !next.has(key)) return;\r\n next.add(key);\r\n });\r\n return next;\r\n}\r\n\r\nexport function removeKeys(\r\n current: ReadonlySet<string>,\r\n keys: readonly string[]\r\n): ReadonlySet<string> {\r\n const next = new Set(current);\r\n keys.forEach((key) => next.delete(key));\r\n return next;\r\n}\r\n\r\nexport function sortByOrder<T>(\r\n items: readonly T[],\r\n nameOf: (item: T) => string,\r\n order: readonly string[]\r\n): T[] {\r\n const position = new Map(order.map((name, index) => [name, index]));\r\n const rank = (item: T) => position.get(nameOf(item)) ?? order.length;\r\n return [...items].sort((a, b) => rank(a) - rank(b));\r\n}\r\n\r\nexport function mergeOrder(previous: readonly string[], next: readonly string[]): string[] {\r\n const incoming = [...next];\r\n const kept = previous.map((name) => (next.includes(name) ? (incoming.shift() ?? name) : name));\r\n return [...kept, ...incoming];\r\n}\r\n\r\nexport interface RowMetrics {\r\n count: number;\r\n rowHeight: number;\r\n detailHeight: number;\r\n openIndices: readonly number[];\r\n}\r\n\r\nfunction openBefore(index: number, open: readonly number[]): number {\r\n let low = 0;\r\n let high = open.length;\r\n while (low < high) {\r\n const mid = (low + high) >>> 1;\r\n if (open[mid] < index) low = mid + 1;\r\n else high = mid;\r\n }\r\n return low;\r\n}\r\n\r\nexport function totalHeight(metrics: RowMetrics): number {\r\n const { count, rowHeight, detailHeight, openIndices } = metrics;\r\n return count * rowHeight + openIndices.length * detailHeight;\r\n}\r\n\r\nexport function offsetOfIndex(index: number, metrics: RowMetrics): number {\r\n const clamped = Math.max(0, Math.min(metrics.count, index));\r\n return (\r\n clamped * metrics.rowHeight + openBefore(clamped, metrics.openIndices) * metrics.detailHeight\r\n );\r\n}\r\n\r\nexport function indexAtOffset(offset: number, metrics: RowMetrics): number {\r\n if (metrics.count <= 0 || metrics.rowHeight <= 0) return 0;\r\n if (offset <= 0) return 0;\r\n\r\n let low = 0;\r\n let high = metrics.count - 1;\r\n while (low < high) {\r\n const mid = (low + high + 1) >>> 1;\r\n if (offsetOfIndex(mid, metrics) <= offset) low = mid;\r\n else high = mid - 1;\r\n }\r\n return low;\r\n}\r\n\r\nexport function toPx(width: string | null | undefined): number {\r\n const matched = width ? /^(-?\\d+(?:\\.\\d+)?)px$/.exec(width.trim()) : null;\r\n return matched ? Math.max(0, Number(matched[1])) : 0;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CdkVirtualScrollViewport, VirtualScrollStrategy } from '@angular/cdk/scrolling';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { indexAtOffset, offsetOfIndex, totalHeight, type RowMetrics } from './table-core';\r\n\r\nexport class MonkeyTableVirtualScroll implements VirtualScrollStrategy {\r\n private readonly _indexChange = new Subject<number>();\r\n\r\n readonly scrolledIndexChange: Observable<number> = this._indexChange.asObservable();\r\n\r\n private _viewport: CdkVirtualScrollViewport | null = null;\r\n\r\n private _metrics: RowMetrics = {\r\n count: 0,\r\n rowHeight: 1,\r\n detailHeight: 0,\r\n openIndices: []\r\n };\r\n\r\n private _buffer = 6;\r\n\r\n attach(viewport: CdkVirtualScrollViewport): void {\r\n this._viewport = viewport;\r\n this.update();\r\n }\r\n\r\n detach(): void {\r\n this._indexChange.complete();\r\n this._viewport = null;\r\n }\r\n\r\n onContentScrolled(): void {\r\n this.update();\r\n }\r\n\r\n onDataLengthChanged(): void {\r\n this.update();\r\n }\r\n\r\n onContentRendered(): void {\r\n }\r\n\r\n onRenderedOffsetChanged(): void {\r\n }\r\n\r\n scrollToIndex(index: number, behavior: ScrollBehavior): void {\r\n this._viewport?.scrollToOffset(offsetOfIndex(index, this._metrics), behavior);\r\n }\r\n\r\n setMetrics(metrics: RowMetrics, buffer: number): void {\r\n this._metrics = metrics;\r\n this._buffer = Math.max(1, buffer);\r\n this.update();\r\n }\r\n\r\n private update(): void {\r\n const viewport = this._viewport;\r\n if (!viewport) return;\r\n\r\n const metrics = this._metrics;\r\n viewport.setTotalContentSize(totalHeight(metrics));\r\n\r\n if (metrics.count <= 0) {\r\n viewport.setRenderedRange({ start: 0, end: 0 });\r\n viewport.setRenderedContentOffset(0);\r\n return;\r\n }\r\n\r\n const offset = viewport.measureScrollOffset();\r\n const size = viewport.getViewportSize();\r\n const firstVisible = indexAtOffset(offset, metrics);\r\n const lastVisible = indexAtOffset(offset + size, metrics);\r\n\r\n const start = Math.max(0, firstVisible - this._buffer);\r\n const end = Math.min(metrics.count, lastVisible + 1 + this._buffer);\r\n\r\n viewport.setRenderedRange({ start, end });\r\n viewport.setRenderedContentOffset(offsetOfIndex(start, metrics));\r\n this._indexChange.next(firstVisible);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n CdkVirtualScrollViewport,\r\n ScrollingModule,\r\n VIRTUAL_SCROLL_STRATEGY\r\n} from '@angular/cdk/scrolling';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n contentChildren,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n model,\r\n NgZone,\r\n OnDestroy,\r\n output,\r\n signal,\r\n untracked,\r\n viewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport { MonkeyCheckboxComponent } from '../checkbox';\r\nimport { MonkeyDividerComponent } from '../divider';\r\nimport { MonkeyIconButtonComponent } from '../icon-button';\r\nimport { MonkeyOptionComponent } from '../option';\r\nimport { MonkeyScrollbarComponent } from '../scrollbar';\r\nimport {\r\n MonkeyTableColumnDirective,\r\n MonkeyTableEmptyDirective,\r\n MonkeyTableLoadingDirective,\r\n MonkeyTableRowDetailDirective\r\n} from './table-column.directive';\r\nimport {\r\n addKeys,\r\n ariaSortOf,\r\n interpolate,\r\n mergeOrder,\r\n removeKeys,\r\n sameColumnState,\r\n selectionState,\r\n sortByOrder,\r\n toggleKey,\r\n toPx,\r\n type ColumnAlign,\r\n type ColumnPinned,\r\n type MonkeyTableColumnState,\r\n type SortDirection,\r\n type SortState\r\n} from './table-core';\r\nimport { MonkeyTableVirtualScroll } from './table-virtual-scroll';\r\n\r\nconst SELECTION_WIDTH = 44;\r\nconst EXPAND_WIDTH = 32;\r\nconst PINNED_MIN_WIDTH = 768;\r\nconst DEFAULT_ROW_HEIGHT = 65;\r\nconst DEFAULT_MAX_VISIBLE_ROWS = 20;\r\nconst DEFAULT_SKELETON_ROWS = 5;\r\nconst WINDOW_BUFFER = 6;\r\n\r\nconst VIRTUAL_MIN_ROWS = 19;\r\n\r\ninterface TableText {\r\n EMPTY: string;\r\n SORT: Record<string, string>;\r\n COLUMN: Record<string, string>;\r\n ROW: Record<string, string>;\r\n}\r\n\r\ntype Column<T> = MonkeyTableColumnDirective<T>;\r\n\r\ninterface SlotBase {\r\n key: string;\r\n width: string | null;\r\n px: number;\r\n pinned: ColumnPinned;\r\n offset: number;\r\n align: ColumnAlign;\r\n}\r\n\r\ntype Slot<T> =\r\n | (SlotBase & { kind: 'data'; column: Column<T> })\r\n | (SlotBase & { kind: 'selection' | 'expand'; column: null });\r\n\r\ninterface RowView<T> {\r\n row: T;\r\n key: string;\r\n index: number;\r\n selectable: boolean;\r\n}\r\n\r\ninterface RenderRow<T> extends RowView<T> {\r\n selected: boolean;\r\n open: boolean;\r\n blockedReason: string | null;\r\n selectLabel: string;\r\n expandLabel: string;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-table',\r\n imports: [\r\n NgTemplateOutlet,\r\n ScrollingModule,\r\n MonkeyCheckboxComponent,\r\n MonkeyDividerComponent,\r\n MonkeyIconButtonComponent,\r\n MonkeyOptionComponent,\r\n MonkeyPopoverDirective,\r\n MonkeyScrollbarComponent\r\n ],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: VIRTUAL_SCROLL_STRATEGY,\r\n useFactory: (table: MonkeyTableComponent<unknown>) => table.virtualStrategy,\r\n deps: [MonkeyTableComponent]\r\n }\r\n ],\r\n host: {\r\n class: 'mecx-table',\r\n '[class.mecx-table--striped]': 'striped()',\r\n '[class.mecx-table--menu-open]': '!!openMenu()',\r\n '[attr.aria-busy]': \"loading() ? 'true' : null\"\r\n }\r\n})\r\nexport class MonkeyTableComponent<T> implements OnDestroy {\r\n readonly virtualStrategy = new MonkeyTableVirtualScroll();\r\n\r\n private readonly _zone = inject(NgZone);\r\n\r\n private readonly _text = toSignal<TableText>(inject(MonkeyDictionaryService).get('TABLE'));\r\n\r\n private readonly _columns = contentChildren(MonkeyTableColumnDirective<T>);\r\n\r\n private readonly _columnByName = computed(() => {\r\n return new Map(this._columns().map((column) => [column.name(), column]));\r\n });\r\n\r\n private readonly _visibleColumns = computed(() => {\r\n const shown = this._columns().filter((column) => !column.hidden());\r\n return sortByOrder(shown, (column) => column.name(), this.columnOrder());\r\n });\r\n\r\n private readonly _selectableKeys = computed(() => {\r\n return this.rowViews()\r\n .filter((view) => view.selectable)\r\n .map((view) => view.key);\r\n });\r\n\r\n private readonly _selection = computed(() => {\r\n return selectionState(this.selected(), this._selectableKeys());\r\n });\r\n\r\n private readonly _narrow = signal(false);\r\n\r\n private readonly _detailHeight = signal(0);\r\n\r\n private readonly _headHeight = signal(0);\r\n\r\n private readonly _host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n private _scroller?: HTMLElement;\r\n\r\n private _observer?: ResizeObserver;\r\n\r\n private _frame = 0;\r\n\r\n private _sizeStale = true;\r\n\r\n private _clientWidth = 0;\r\n\r\n private _scrollWidth = 0;\r\n\r\n private readonly _layout = computed(() => {\r\n const columns = this._visibleColumns();\r\n const controlPinned: ColumnPinned = columns.some((column) => column.pinned() === 'left')\r\n ? 'left'\r\n : 'none';\r\n\r\n const control = (kind: 'selection' | 'expand', px: number, pinned: ColumnPinned): Slot<T> => {\r\n return {\r\n kind,\r\n key: `__${kind}`,\r\n column: null,\r\n width: `${px}px`,\r\n px,\r\n pinned,\r\n offset: 0,\r\n align: 'start'\r\n };\r\n };\r\n\r\n const slots: Slot<T>[] = [];\r\n if (this.selectionMode() !== 'none') {\r\n slots.push(control('selection', SELECTION_WIDTH, controlPinned));\r\n }\r\n if (this.expandable()) {\r\n slots.push(control('expand', EXPAND_WIDTH, this._narrow() ? 'none' : controlPinned));\r\n }\r\n columns.forEach((column) => {\r\n slots.push({\r\n kind: 'data',\r\n key: column.name(),\r\n column,\r\n width: column.width() || null,\r\n px: toPx(column.width()),\r\n pinned: this.effectivePinned(column),\r\n offset: 0,\r\n align: column.align()\r\n });\r\n });\r\n\r\n let startWidth = 0;\r\n slots.forEach((slot) => {\r\n if (slot.pinned !== 'left') return;\r\n slot.offset = startWidth;\r\n startWidth += slot.px;\r\n });\r\n\r\n let endWidth = 0;\r\n [...slots].reverse().forEach((slot) => {\r\n if (slot.pinned !== 'right') return;\r\n slot.offset = endWidth;\r\n endWidth += slot.px;\r\n });\r\n\r\n return { slots, startWidth, endWidth };\r\n });\r\n\r\n readonly rows = input.required<readonly T[]>();\r\n\r\n readonly rowKey = input.required<(row: T) => string>();\r\n\r\n readonly rowLabel = input<(row: T) => string>();\r\n\r\n readonly rowSelectable = input<(row: T) => boolean>();\r\n\r\n readonly ariaLabel = input.required<string>();\r\n\r\n readonly caption = input<string>('');\r\n\r\n readonly selectionMode = input<'none' | 'multiple'>('none');\r\n\r\n readonly selected = model<ReadonlySet<string>>(new Set());\r\n\r\n readonly maxSelected = input<number>(0);\r\n\r\n readonly sort = input<SortState | null>(null);\r\n\r\n readonly expandable = input(false, { transform: booleanAttribute });\r\n\r\n readonly expanded = model<ReadonlySet<string>>(new Set());\r\n\r\n readonly reorderable = input(false, { transform: booleanAttribute });\r\n\r\n readonly hideable = input(false, { transform: booleanAttribute });\r\n\r\n readonly pinnable = input(false, { transform: booleanAttribute });\r\n\r\n readonly rowHeight = input<number>(DEFAULT_ROW_HEIGHT);\r\n\r\n readonly maxVisibleRows = input<number | 'none'>(DEFAULT_MAX_VISIBLE_ROWS);\r\n\r\n readonly virtualScroll = input<'auto' | 'off'>('auto');\r\n\r\n readonly columnOrder = model<readonly string[]>([]);\r\n\r\n readonly columnState = input<readonly MonkeyTableColumnState[]>([]);\r\n\r\n readonly striped = input(false, { transform: booleanAttribute });\r\n\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n\r\n readonly emptyText = input<string>('');\r\n\r\n readonly skeletonRows = input<number | 'auto'>('auto');\r\n\r\n readonly onSortChange = output<SortState | null>();\r\n\r\n readonly onColumnHidden = output<{ name: string; label: string }>();\r\n\r\n readonly onColumnStateChange = output<MonkeyTableColumnState[]>();\r\n\r\n readonly onSelectionChange = output<string[]>();\r\n\r\n readonly onExpandChange = output<{ row: T; key: string; expanded: boolean }>();\r\n\r\n protected readonly emptyTemplate = contentChild(MonkeyTableEmptyDirective);\r\n\r\n protected readonly loadingTemplate = contentChild(MonkeyTableLoadingDirective);\r\n\r\n protected readonly rowDetailTemplate = contentChild(MonkeyTableRowDetailDirective<T>);\r\n\r\n protected readonly plainScroller = viewChild<ElementRef<HTMLElement>>('scroller');\r\n\r\n protected readonly headClip = viewChild<ElementRef<HTMLElement>>('headClip');\r\n\r\n protected readonly virtualViewport = viewChild(CdkVirtualScrollViewport);\r\n\r\n protected readonly scrollTarget = computed(() => {\r\n const viewport = this.virtualViewport();\r\n if (viewport) return viewport.elementRef.nativeElement;\r\n return this.plainScroller()?.nativeElement ?? null;\r\n });\r\n\r\n private readonly _rowCap = computed(() => {\r\n const cap = this.maxVisibleRows();\r\n return cap === 'none' ? 0 : Math.max(0, Math.floor(cap));\r\n });\r\n\r\n protected readonly bounded = computed(() => {\r\n const cap = this._rowCap();\r\n return cap > 0 && this.rows().length > cap;\r\n });\r\n\r\n protected readonly virtual = computed(() => {\r\n if (this.virtualScroll() === 'off' || !this.bounded() || this.loading()) return false;\r\n\r\n const threshold = Math.max(this._rowCap(), VIRTUAL_MIN_ROWS);\r\n return this.rowViews().length > threshold;\r\n });\r\n\r\n protected readonly effectiveHeight = computed(() => {\r\n if (!this.bounded()) return '';\r\n\r\n const body = this._rowCap() * this.rowHeight();\r\n return `${this.virtual() ? body : body + this._headHeight()}px`;\r\n });\r\n\r\n protected readonly rowMetrics = computed(() => {\r\n const expanded = this.expanded();\r\n const openIndices = expanded.size\r\n ? this.rowViews()\r\n .filter((view) => expanded.has(view.key))\r\n .map((view) => view.index)\r\n : [];\r\n\r\n return {\r\n openIndices,\r\n count: this.rowViews().length,\r\n rowHeight: Math.max(1, this.rowHeight()),\r\n detailHeight: this.expandable() ? this._detailHeight() : 0\r\n };\r\n });\r\n\r\n protected readonly overflowing = signal(false);\r\n\r\n protected readonly atStart = signal(true);\r\n\r\n protected readonly atEnd = signal(true);\r\n\r\n protected readonly openMenu = signal<string | null>(null);\r\n\r\n protected readonly slots = computed(() => this._layout().slots);\r\n\r\n protected readonly pinnedStartWidth = computed(() => this._layout().startWidth);\r\n\r\n protected readonly pinnedEndWidth = computed(() => this._layout().endWidth);\r\n\r\n protected readonly totalWidth = computed(() => {\r\n const slots = this.slots();\r\n if (!slots.length || slots.some((slot) => slot.px <= 0)) return 0;\r\n return slots.reduce((total, slot) => total + slot.px, 0);\r\n });\r\n\r\n protected readonly allSelected = computed(() => this._selection() === 'all');\r\n\r\n protected readonly someSelected = computed(() => this._selection() === 'partial');\r\n\r\n protected readonly atSelectionLimit = computed(() => {\r\n const limit = this.maxSelected();\r\n return limit > 0 && this.selected().size >= limit;\r\n });\r\n\r\n protected readonly hasSelectable = computed(() => this._selectableKeys().length > 0);\r\n\r\n protected readonly rowViews = computed<RowView<T>[]>(() => {\r\n const keyOf = this.rowKey();\r\n const allows = this.rowSelectable();\r\n const canSelect = this.selectionMode() !== 'none';\r\n\r\n return this.rows().map((row, index) => {\r\n return {\r\n row,\r\n index,\r\n key: keyOf(row),\r\n selectable: canSelect && (!allows || allows(row))\r\n };\r\n });\r\n });\r\n\r\n protected readonly renderRows = computed<RenderRow<T>[]>(() => {\r\n const labelOf = this.rowLabel();\r\n const selected = this.selected();\r\n const expanded = this.expanded();\r\n const atLimit = this.atSelectionLimit();\r\n const canSelect = this.selectionMode() !== 'none';\r\n const canExpand = this.expandable();\r\n const text = this.labels();\r\n const select = canSelect ? this.word('ROW', 'SELECT') : '';\r\n const expand = canExpand ? this.word('ROW', 'EXPAND') : '';\r\n const collapse = canExpand ? this.word('ROW', 'COLLAPSE') : '';\r\n\r\n return this.rowViews().map((view) => {\r\n const label = labelOf ? labelOf(view.row) : view.key;\r\n const isSelected = selected.has(view.key);\r\n const open = expanded.has(view.key);\r\n let blockedReason: string | null = null;\r\n if (!isSelected && !view.selectable) blockedReason = text.notSelectable;\r\n else if (!isSelected && atLimit) blockedReason = text.limit;\r\n\r\n return {\r\n ...view,\r\n open,\r\n blockedReason,\r\n selected: isSelected,\r\n selectLabel: canSelect ? interpolate(select, { label }) : '',\r\n expandLabel: canExpand ? interpolate(open ? collapse : expand, { label }) : ''\r\n };\r\n });\r\n });\r\n\r\n protected readonly skeletonRange = computed(() => {\r\n const requested = this.skeletonRows();\r\n if (requested === 'auto') {\r\n const cap = this._rowCap();\r\n return Array.from({ length: cap > 0 ? cap : DEFAULT_SKELETON_ROWS }, (_, i) => i);\r\n }\r\n\r\n const count = Number(requested);\r\n const length = Number.isFinite(count) && count > 0 ? Math.floor(count) : DEFAULT_SKELETON_ROWS;\r\n return Array.from({ length }, (_, index) => index);\r\n });\r\n\r\n protected readonly labels = computed(() => {\r\n return {\r\n moveLeft: this.word('COLUMN', 'MOVE-LEFT'),\r\n moveRight: this.word('COLUMN', 'MOVE-RIGHT'),\r\n hide: this.word('COLUMN', 'HIDE'),\r\n pin: this.word('COLUMN', 'PIN'),\r\n unpin: this.word('COLUMN', 'UNPIN'),\r\n selectAll: this.word('ROW', 'SELECT-ALL'),\r\n detail: this.word('ROW', 'DETAIL'),\r\n limit: interpolate(this.word('ROW', 'LIMIT'), { max: this.maxSelected() }),\r\n notSelectable: this.word('ROW', 'NOT-SELECTABLE'),\r\n empty: this.emptyText() || this._text()?.EMPTY || ''\r\n };\r\n });\r\n\r\n constructor() {\r\n this.closeMenuWhenColumnGone();\r\n this.restoreColumnState();\r\n\r\n effect((onCleanup) => {\r\n const target = this.scrollTarget();\r\n if (!target) return;\r\n const onScroll = () => this.schedule();\r\n\r\n const observer = this._zone.runOutsideAngular(() => {\r\n target.addEventListener('scroll', onScroll, { passive: true });\r\n const resize = new ResizeObserver(() => this.schedule(true));\r\n resize.observe(target);\r\n Array.from(target.children).forEach((child) => resize.observe(child));\r\n return resize;\r\n });\r\n\r\n this._scroller = target;\r\n this._observer = observer;\r\n this.measure();\r\n\r\n onCleanup(() => {\r\n target.removeEventListener('scroll', onScroll);\r\n observer.disconnect();\r\n this._observer = undefined;\r\n this.cancelFrame();\r\n });\r\n });\r\n\r\n effect(() => {\r\n this.slots();\r\n this.rows();\r\n queueMicrotask(() => this.schedule(true));\r\n });\r\n\r\n effect(() => {\r\n const metrics = this.rowMetrics();\r\n if (!this.virtual()) return;\r\n this.virtualStrategy.setMetrics(metrics, WINDOW_BUFFER);\r\n });\r\n }\r\n\r\n private word(group: 'SORT' | 'COLUMN' | 'ROW', key: string): string {\r\n return this._text()?.[group]?.[key] ?? '';\r\n }\r\n\r\n private effectivePinned(column: Column<T>): ColumnPinned {\r\n const pinned = column.pinned();\r\n return this._narrow() && pinned === 'left' ? 'none' : pinned;\r\n }\r\n\r\n private schedule(resized = false): void {\r\n if (resized) this._sizeStale = true;\r\n if (this._frame) return;\r\n this._frame = this._zone.runOutsideAngular(() => {\r\n return requestAnimationFrame(() => {\r\n this._frame = 0;\r\n this.measure();\r\n });\r\n });\r\n }\r\n\r\n private cancelFrame(): void {\r\n if (this._frame) cancelAnimationFrame(this._frame);\r\n this._frame = 0;\r\n }\r\n\r\n private measure(): void {\r\n const el = this._scroller;\r\n if (!el) return;\r\n\r\n if (this._sizeStale) {\r\n this._sizeStale = false;\r\n this._clientWidth = el.clientWidth;\r\n this._scrollWidth = el.scrollWidth;\r\n\r\n const host = this._host.nativeElement;\r\n const detail = host.querySelector<HTMLElement>('.mecx-table-row--detail');\r\n if (detail?.offsetHeight) this._detailHeight.set(detail.offsetHeight);\r\n\r\n const head = host.querySelector<HTMLElement>('thead');\r\n if (head?.offsetHeight) this._headHeight.set(head.offsetHeight);\r\n }\r\n\r\n const maxScroll = this._scrollWidth - this._clientWidth;\r\n const scrolled = el.scrollLeft;\r\n\r\n this._narrow.set(this._clientWidth > 0 && this._clientWidth < PINNED_MIN_WIDTH);\r\n this.overflowing.set(maxScroll > 1);\r\n this.atStart.set(scrolled <= 1);\r\n this.atEnd.set(maxScroll <= 1 || scrolled >= maxScroll - 1);\r\n\r\n const head = this.headClip()?.nativeElement;\r\n if (head && head.scrollLeft !== scrolled) head.scrollLeft = scrolled;\r\n }\r\n\r\n private closeMenuWhenColumnGone(): void {\r\n effect(() => {\r\n const open = untracked(() => this.openMenu());\r\n const stillThere = this._visibleColumns().some((column) => {\r\n return column.name() === open && this.hasMenu(column);\r\n });\r\n if (open && !stillThere) this.openMenu.set(null);\r\n });\r\n }\r\n\r\n private currentOrder(): string[] {\r\n const names = this._columns().map((column) => column.name());\r\n return sortByOrder(names, (name) => name, this.columnOrder());\r\n }\r\n\r\n private currentColumnState(): MonkeyTableColumnState[] {\r\n return this.currentOrder().map((name) => {\r\n const column = this._columnByName().get(name);\r\n return {\r\n name,\r\n hidden: column?.hidden() ?? false,\r\n pinned: column?.pinned() ?? 'none'\r\n };\r\n });\r\n }\r\n\r\n private commitSelection(next: ReadonlySet<string>): void {\r\n this.selected.set(next);\r\n this.onSelectionChange.emit([...next]);\r\n }\r\n\r\n private applyOrder(order: readonly string[]): void {\r\n this.columnOrder.set(mergeOrder(this.columnOrder(), order));\r\n this.onColumnStateChange.emit(this.currentColumnState());\r\n this.openMenu.set(null);\r\n }\r\n\r\n private restoreColumnState(): void {\r\n effect(() => {\r\n const incoming = this.columnState();\r\n if (!incoming.length) return;\r\n\r\n untracked(() => {\r\n if (!this._columns().length) return;\r\n if (sameColumnState(incoming, this.currentColumnState())) return;\r\n\r\n incoming.forEach((item) => {\r\n const column = this._columnByName().get(item.name);\r\n column?.hidden.set(item.hidden);\r\n column?.pinned.set(item.pinned);\r\n });\r\n\r\n this.columnOrder.set(\r\n mergeOrder(\r\n this.columnOrder(),\r\n incoming.map((item) => item.name)\r\n )\r\n );\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._observer?.disconnect();\r\n this.cancelFrame();\r\n }\r\n\r\n protected closeMenu = (): void => {\r\n this.openMenu.set(null);\r\n };\r\n\r\n protected trackKey = (_index: number, view: RowView<T>): string => {\r\n return view.key;\r\n };\r\n\r\n protected toggleMenu(column: Column<T>): void {\r\n this.openMenu.set(this.openMenu() === column.name() ? null : column.name());\r\n }\r\n\r\n protected hasMenu(column: Column<T> | null): boolean {\r\n if (!column) return false;\r\n return (\r\n column.sortable() || this.canReorder(column) || this.canHide(column) || this.canPin(column)\r\n );\r\n }\r\n\r\n protected canHide(column: Column<T>): boolean {\r\n return this.hideable() && column.hideable();\r\n }\r\n\r\n protected canReorder(column: Column<T>): boolean {\r\n return this.reorderable() && column.movable();\r\n }\r\n\r\n protected canPin(column: Column<T>): boolean {\r\n return this.pinnable() && column.pinnable() && !this._narrow();\r\n }\r\n\r\n protected isLastColumn(): boolean {\r\n return this._visibleColumns().length <= 1;\r\n }\r\n\r\n protected sortLabels(column: Column<T>): { asc: string; desc: string } {\r\n const kind = column.sortKind().toUpperCase();\r\n return { asc: this.word('SORT', `${kind}-ASC`), desc: this.word('SORT', `${kind}-DESC`) };\r\n }\r\n\r\n protected ariaSortFor(column: Column<T> | null): string | null {\r\n return column ? ariaSortOf(this.sort(), column.name()) : null;\r\n }\r\n\r\n protected isSortedBy(column: Column<T>, direction: SortDirection): boolean {\r\n const current = this.sort();\r\n return current?.column === column.name() && current.direction === direction;\r\n }\r\n\r\n protected sortBy(column: Column<T>, direction: SortDirection): void {\r\n const unchanged = this.isSortedBy(column, direction);\r\n this.onSortChange.emit(unchanged ? null : { column: column.name(), direction });\r\n this.openMenu.set(null);\r\n }\r\n\r\n protected canMove(column: Column<T>, delta: -1 | 1): boolean {\r\n if (!this.canReorder(column)) return false;\r\n\r\n const visible = this._visibleColumns();\r\n const neighbour = visible[visible.indexOf(column) + delta];\r\n if (!neighbour || !neighbour.movable()) return false;\r\n return this.effectivePinned(neighbour) === this.effectivePinned(column);\r\n }\r\n\r\n protected move(column: Column<T>, delta: -1 | 1): void {\r\n if (!this.canMove(column, delta)) return;\r\n\r\n const visible = this._visibleColumns();\r\n const neighbour = visible[visible.indexOf(column) + delta];\r\n const order = this.currentOrder();\r\n const from = order.indexOf(column.name());\r\n const to = order.indexOf(neighbour.name());\r\n [order[from], order[to]] = [order[to], order[from]];\r\n\r\n this.applyOrder(order);\r\n }\r\n\r\n protected hide(column: Column<T>): void {\r\n if (!this.canHide(column) || this.isLastColumn()) return;\r\n\r\n column.hidden.set(true);\r\n this.onColumnHidden.emit({ name: column.name(), label: column.label() });\r\n this.applyOrder(this.currentOrder());\r\n }\r\n\r\n protected togglePin(column: Column<T>): void {\r\n if (!this.canPin(column)) return;\r\n\r\n const was = column.pinned();\r\n column.pinned.set(was === 'none' ? 'left' : 'none');\r\n\r\n const others = this.currentOrder().filter((name) => name !== column.name());\r\n const pinnedOf = (name: string) => this._columnByName().get(name)?.pinned() ?? 'none';\r\n const afterLeft = others.filter((name) => pinnedOf(name) === 'left').length;\r\n const rightStart = others.findIndex((name) => pinnedOf(name) === 'right');\r\n const beforeRight = rightStart === -1 ? others.length : rightStart;\r\n\r\n others.splice(\r\n was === 'right' ? beforeRight : Math.min(afterLeft, beforeRight),\r\n 0,\r\n column.name()\r\n );\r\n this.applyOrder(others);\r\n }\r\n\r\n protected toggleRow(view: RowView<T>): void {\r\n const selected = this.selected();\r\n const blocked = !view.selectable || this.atSelectionLimit();\r\n if (!selected.has(view.key) && blocked) return;\r\n this.commitSelection(toggleKey(selected, view.key));\r\n }\r\n\r\n protected toggleAllRows(): void {\r\n const selected = this.selected();\r\n const keys = this._selectableKeys();\r\n\r\n if (this.allSelected() || this.atSelectionLimit()) {\r\n this.commitSelection(removeKeys(selected, keys));\r\n return;\r\n }\r\n\r\n this.commitSelection(addKeys(selected, keys, this.maxSelected()));\r\n }\r\n\r\n protected toggleOpen(view: RowView<T>): void {\r\n const next = toggleKey(this.expanded(), view.key);\r\n this.expanded.set(next);\r\n this.onExpandChange.emit({ row: view.row, key: view.key, expanded: next.has(view.key) });\r\n }\r\n}\r\n","<div class=\"mecx-table-main\">\n <div class=\"mecx-table-viewport\">\n @if (virtual()) {\n <div #headClip class=\"mecx-table-head-clip\">\n <table\n class=\"mecx-table-grid mecx-table-grid--head\"\n [style.width.px]=\"totalWidth() || null\"\n >\n <ng-container [ngTemplateOutlet]=\"tableHead\" />\n </table>\n </div>\n\n <cdk-virtual-scroll-viewport\n class=\"mecx-table-scroll mecx-table-scroll--virtual\"\n [itemSize]=\"rowHeight()\"\n [minBufferPx]=\"rowHeight() * 6\"\n [maxBufferPx]=\"rowHeight() * 12\"\n [style.height]=\"effectiveHeight()\"\n role=\"region\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.tabindex]=\"overflowing() ? 0 : null\"\n >\n <table\n class=\"mecx-table-grid\"\n [attr.aria-rowcount]=\"rows().length + 1\"\n [style.width.px]=\"totalWidth() || null\"\n >\n <ng-container [ngTemplateOutlet]=\"colGroup\" />\n <tbody class=\"mecx-table-body\">\n <ng-container\n *cdkVirtualFor=\"\n let view of renderRows();\n trackBy: trackKey;\n templateCacheSize: 30\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"dataRow\"\n [ngTemplateOutletContext]=\"{ $implicit: view }\"\n />\n </ng-container>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n } @else {\n <div\n #scroller\n class=\"mecx-table-scroll\"\n [class.mecx-table-scroll--vertical]=\"!!effectiveHeight()\"\n [style.max-height]=\"effectiveHeight() || null\"\n role=\"region\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.tabindex]=\"overflowing() ? 0 : null\"\n >\n <table class=\"mecx-table-grid\">\n <ng-container [ngTemplateOutlet]=\"tableHead\" />\n <tbody class=\"mecx-table-body\">\n @if (loading()) {\n @if (loadingTemplate(); as tpl) {\n <tr class=\"mecx-table-row\">\n <td\n class=\"mecx-table-cell mecx-table-cell--wide\"\n [attr.colspan]=\"slots().length\"\n >\n <ng-container [ngTemplateOutlet]=\"tpl.template\" />\n </td>\n </tr>\n } @else {\n @for (line of skeletonRange(); track line) {\n <tr class=\"mecx-table-row\" aria-hidden=\"true\">\n @for (slot of slots(); track slot.key) {\n <td\n class=\"mecx-table-cell\"\n [class.mecx-table-cell--end]=\"slot.align === 'end'\"\n [class.mecx-table-cell--control]=\"slot.kind !== 'data'\"\n [class.mecx-table-cell--pinned]=\"slot.pinned !== 'none'\"\n [style.left.px]=\"slot.pinned === 'left' ? slot.offset : null\"\n [style.right.px]=\"slot.pinned === 'right' ? slot.offset : null\"\n >\n <span class=\"mecx-table-skeleton\"></span>\n </td>\n }\n </tr>\n }\n }\n } @else if (rows().length === 0) {\n <tr class=\"mecx-table-row\">\n <td\n class=\"mecx-table-cell mecx-table-cell--wide\"\n [attr.colspan]=\"slots().length\"\n >\n @if (emptyTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.template\" />\n } @else {\n <p class=\"mecx-table-empty\">{{ labels().empty }}</p>\n }\n </td>\n </tr>\n } @else {\n @for (view of renderRows(); track view.key) {\n <ng-container\n [ngTemplateOutlet]=\"dataRow\"\n [ngTemplateOutletContext]=\"{ $implicit: view }\"\n />\n }\n }\n </tbody>\n </table>\n </div>\n }\n\n @if (pinnedStartWidth() > 0) {\n <div\n class=\"mecx-table-pinned-shadow\"\n [class.mecx-table-pinned-shadow--visible]=\"!atStart()\"\n [style.left.px]=\"0\"\n [style.width.px]=\"pinnedStartWidth()\"\n aria-hidden=\"true\"\n ></div>\n }\n @if (pinnedEndWidth() > 0) {\n <div\n class=\"mecx-table-pinned-shadow mecx-table-pinned-shadow--end\"\n [class.mecx-table-pinned-shadow--visible]=\"!atEnd()\"\n [style.right.px]=\"0\"\n [style.width.px]=\"pinnedEndWidth()\"\n aria-hidden=\"true\"\n ></div>\n }\n\n @if (pinnedStartWidth() === 0) {\n <div\n class=\"mecx-table-fade mecx-table-fade--start\"\n [class.mecx-table-fade--visible]=\"!atStart()\"\n aria-hidden=\"true\"\n ></div>\n }\n <div\n class=\"mecx-table-fade\"\n [class.mecx-table-fade--visible]=\"!atEnd()\"\n [style.right.px]=\"pinnedEndWidth()\"\n aria-hidden=\"true\"\n ></div>\n </div>\n\n @if (effectiveHeight() && scrollTarget(); as target) {\n <div class=\"mecx-table-scrollbar-vertical\">\n <monkey-scrollbar orientation=\"vertical\" [target]=\"target\" />\n </div>\n }\n</div>\n\n@if (scrollTarget(); as target) {\n <div class=\"mecx-table-scrollbar\">\n <monkey-scrollbar orientation=\"horizontal\" [target]=\"target\" />\n </div>\n}\n\n<div class=\"mecx-table-footer\">\n <ng-content select=\"monkey-pagination-size\"></ng-content>\n <div class=\"mecx-table-footer-actions\">\n <ng-content select=\"monkey-pagination-label\"></ng-content>\n <ng-content select=\"monkey-pagination-action\"></ng-content>\n </div>\n</div>\n\n<ng-template #colGroup>\n <colgroup>\n @for (slot of slots(); track slot.key) {\n <col [style.width]=\"slot.width\" />\n }\n </colgroup>\n</ng-template>\n\n<ng-template #tableHead>\n @if (caption()) {\n <caption class=\"mecx-table-caption\">\n {{\n caption()\n }}\n </caption>\n }\n\n <ng-container [ngTemplateOutlet]=\"colGroup\" />\n\n <thead>\n <tr class=\"mecx-table-row\">\n @for (slot of slots(); track slot.key) {\n <th\n scope=\"col\"\n class=\"mecx-table-cell mecx-table-cell--head\"\n [class.mecx-table-cell--end]=\"slot.align === 'end'\"\n [class.mecx-table-cell--control]=\"slot.kind !== 'data'\"\n [class.mecx-table-cell--pinned]=\"slot.pinned !== 'none'\"\n [style.left.px]=\"slot.pinned === 'left' ? slot.offset : null\"\n [style.right.px]=\"slot.pinned === 'right' ? slot.offset : null\"\n [class.mecx-table-cell--active]=\"openMenu() === slot.key\"\n [attr.aria-sort]=\"ariaSortFor(slot.column)\"\n >\n @switch (slot.kind) {\n @case ('selection') {\n <label class=\"mecx-table-select-all\">\n <span class=\"mecx-sr-only\">{{ labels().selectAll }}</span>\n <monkey-checkbox\n size=\"sm\"\n [value]=\"allSelected()\"\n [indeterminate]=\"someSelected()\"\n [disabled]=\"loading() || !hasSelectable()\"\n (onChange)=\"toggleAllRows()\"\n />\n </label>\n }\n @case ('expand') {\n <span class=\"mecx-sr-only\">{{ labels().detail }}</span>\n }\n @default {\n @if (hasMenu(slot.column)) {\n <button\n #trigger\n type=\"button\"\n class=\"mecx-table-heading mecx-table-trigger\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"openMenu() === slot.key\"\n (click)=\"toggleMenu(slot.column)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"heading\"\n [ngTemplateOutletContext]=\"{ $implicit: slot.column }\"\n />\n </button>\n\n <ng-template\n [monkeyPopover]=\"openMenu() === slot.key\"\n [monkeyPopoverTarget]=\"trigger\"\n [monkeyPopoverClosed]=\"closeMenu\"\n monkeyPopoverDir=\"ltr\"\n [monkeyPopoverHideHeader]=\"true\"\n >\n <div class=\"mecx-table-menu\" (click)=\"openMenu.set(null)\">\n @if (slot.column.sortable()) {\n @let sortText = sortLabels(slot.column);\n <monkey-option\n [selected]=\"isSortedBy(slot.column, 'ascending')\"\n (click)=\"sortBy(slot.column, 'ascending')\"\n >\n <i class=\"mk-i mk-i-arrows-up-down sm\" aria-hidden=\"true\"></i>\n {{ sortText.asc }}\n </monkey-option>\n <monkey-option\n [selected]=\"isSortedBy(slot.column, 'descending')\"\n (click)=\"sortBy(slot.column, 'descending')\"\n >\n <i class=\"mk-i mk-i-arrows-up-down sm\" aria-hidden=\"true\"></i>\n {{ sortText.desc }}\n </monkey-option>\n }\n\n @if (canReorder(slot.column)) {\n @if (slot.column.sortable()) {\n <monkey-divider />\n }\n <monkey-option\n [disabled]=\"!canMove(slot.column, -1)\"\n (click)=\"move(slot.column, -1)\"\n >\n <i class=\"mk-i mk-i-arrow-line-left sm\" aria-hidden=\"true\"></i>\n {{ labels().moveLeft }}\n </monkey-option>\n <monkey-option\n [disabled]=\"!canMove(slot.column, 1)\"\n (click)=\"move(slot.column, 1)\"\n >\n <i class=\"mk-i mk-i-arrow-line-right sm\" aria-hidden=\"true\"></i>\n {{ labels().moveRight }}\n </monkey-option>\n }\n\n @if (canHide(slot.column) || canPin(slot.column)) {\n @if (slot.column.sortable() || canReorder(slot.column)) {\n <monkey-divider />\n }\n @if (canHide(slot.column)) {\n <monkey-option [disabled]=\"isLastColumn()\" (click)=\"hide(slot.column)\">\n <i class=\"mk-i mk-i-eye-closed sm\" aria-hidden=\"true\"></i>\n {{ labels().hide }}\n </monkey-option>\n }\n @if (canPin(slot.column)) {\n <monkey-option (click)=\"togglePin(slot.column)\">\n <i class=\"mk-i mk-i-pin-navigation sm\" aria-hidden=\"true\"></i>\n {{ slot.column.pinned() !== 'none' ? labels().unpin : labels().pin }}\n </monkey-option>\n }\n }\n </div>\n </ng-template>\n } @else {\n <div class=\"mecx-table-heading\">\n <ng-container\n [ngTemplateOutlet]=\"heading\"\n [ngTemplateOutletContext]=\"{ $implicit: slot.column }\"\n />\n </div>\n }\n }\n }\n </th>\n }\n </tr>\n </thead>\n</ng-template>\n\n<ng-template #dataRow let-view>\n <tr\n class=\"mecx-table-row mecx-table-row--data\"\n [class.mecx-table-row--odd]=\"view.index % 2 === 1\"\n [class.mecx-table-row--selected]=\"view.selected\"\n [attr.aria-rowindex]=\"virtual() ? view.index + 2 : null\"\n [style.height.px]=\"virtual() ? rowHeight() : null\"\n >\n @for (slot of slots(); track slot.key) {\n <td\n class=\"mecx-table-cell\"\n [class.mecx-table-cell--end]=\"slot.align === 'end'\"\n [class.mecx-table-cell--control]=\"slot.kind !== 'data'\"\n [class.mecx-table-cell--pinned]=\"slot.pinned !== 'none'\"\n [style.left.px]=\"slot.pinned === 'left' ? slot.offset : null\"\n [style.right.px]=\"slot.pinned === 'right' ? slot.offset : null\"\n >\n @switch (slot.kind) {\n @case ('selection') {\n <label class=\"mecx-table-select-row\" [attr.title]=\"view.blockedReason\">\n <span class=\"mecx-sr-only\">{{ view.selectLabel }}</span>\n <monkey-checkbox\n size=\"sm\"\n [value]=\"view.selected\"\n [disabled]=\"!!view.blockedReason\"\n (onChange)=\"toggleRow(view)\"\n />\n </label>\n }\n @case ('expand') {\n <monkey-icon-button\n type=\"tertiary\"\n size=\"sm\"\n icon=\"arrow-right\"\n class=\"mecx-table-expand-toggle\"\n [class.mecx-table-expand-toggle--open]=\"view.open\"\n [attr.aria-expanded]=\"view.open\"\n [attr.aria-label]=\"view.expandLabel\"\n (click)=\"toggleOpen(view)\"\n />\n }\n @default {\n @if (slot.column.cell(); as cell) {\n <ng-container\n [ngTemplateOutlet]=\"cell.template\"\n [ngTemplateOutletContext]=\"{\n $implicit: view.row,\n row: view.row,\n index: view.index,\n first: view.index === 0,\n last: view.index === rows().length - 1\n }\"\n />\n }\n }\n }\n </td>\n }\n </tr>\n\n @if (expandable() && view.open) {\n @if (rowDetailTemplate(); as tpl) {\n <tr\n class=\"mecx-table-row mecx-table-row--detail\"\n [class.mecx-table-row--selected]=\"view.selected\"\n >\n <td class=\"mecx-table-cell mecx-table-cell--wide\" [attr.colspan]=\"slots().length\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"{ $implicit: view.row, row: view.row }\"\n />\n </td>\n </tr>\n }\n }\n</ng-template>\n\n<ng-template #heading let-column>\n @if (column.headerCell(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.template\" />\n } @else {\n @if (column.labelHidden()) {\n <span class=\"mecx-sr-only\">{{ column.label() }}</span>\n } @else {\n <span class=\"mecx-table-label\">{{ column.label() }}</span>\n @if (column.unit()) {\n <span class=\"mecx-table-unit\">{{ column.unit() }}</span>\n }\n }\n }\n</ng-template>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './components/pagination-action/pagination-action';\nexport * from './components/pagination-label/pagination-label';\nexport * from './components/pagination-size/pagination-size';\nexport * from './table-column.directive';\nexport * from './table-core';\nexport * from './table.component';\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n HostBinding,\r\n inject,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Optional\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { filter } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[monkey-tab-link]',\r\n standalone: false\r\n})\r\nexport class MonkeyTabLinkDirective implements OnInit {\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n @HostBinding('class.disabled')\r\n get isDisabled() {\r\n return this.disabled;\r\n }\r\n\r\n @HostBinding('attr.tabindex')\r\n get tabIndex() {\r\n return this.disabled ? -1 : 0;\r\n }\r\n\r\n private destroyRef = inject(DestroyRef);\r\n\r\n private el = inject(ElementRef<HTMLAnchorElement>);\r\n\r\n constructor(@Optional() @Inject(Router) private router: Router) {\r\n // ignore\r\n }\r\n\r\n ngOnInit() {\r\n if (this.router) {\r\n this.updateActiveState();\r\n\r\n this.router.events\r\n .pipe(\r\n filter((event) => {\r\n return event instanceof NavigationEnd;\r\n }),\r\n takeUntilDestroyed(this.destroyRef)\r\n )\r\n .subscribe(() => {\r\n this.updateActiveState();\r\n });\r\n }\r\n }\r\n\r\n private updateActiveState() {\r\n if (this.disabled) return;\r\n\r\n const link = this.el.nativeElement;\r\n const routerLink = link.getAttribute('routerLink');\r\n\r\n if (routerLink && this.router) {\r\n const isActive =\r\n this.router.url === routerLink ||\r\n (routerLink !== '/' && this.router.url.startsWith(routerLink));\r\n\r\n if (isActive) {\r\n link.classList.add('active');\r\n } else {\r\n link.classList.remove('active');\r\n }\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'monkey-tab',\r\n standalone: false,\r\n template: `\r\n <button type=\"button\" [disabled]=\"disabled\" (click)=\"handleClick()\">\r\n <ng-content />\r\n </button>\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: block;\r\n }\r\n `\r\n ]\r\n})\r\nexport class MonkeyTabComponent {\r\n @Input() value: string = '';\r\n\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n @Output() onClick = new EventEmitter<string>();\r\n\r\n @Input()\r\n @HostBinding('class.selected')\r\n isSelected: boolean = false;\r\n\r\n handleClick() {\r\n if (!this.disabled) {\r\n this.onClick.emit(this.value);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n booleanAttribute,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyTabComponent } from './tab.component';\r\n\r\n@Component({\r\n selector: 'monkey-tabs',\r\n standalone: false,\r\n encapsulation: ViewEncapsulation.None,\r\n template: `\r\n @if (hasScroll) {\r\n <button\r\n class=\"scroll-arrow scroll-arrow-left\"\r\n [class.enabled]=\"enabledLeftArrow\"\r\n (click)=\"scrollLeft()\"\r\n type=\"button\"\r\n >\r\n ‹\r\n </button>\r\n }\r\n\r\n <div class=\"monkey-tabs-header\" #tabsHeader>\r\n <div\r\n class=\"monkey-tabs-content\"\r\n [class.full-width]=\"fullWidth\"\r\n [class]=\"position\"\r\n #tabsContent\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n\r\n @if (hasScroll) {\r\n <button\r\n class=\"scroll-arrow scroll-arrow-right\"\r\n [class.enabled]=\"enabledRightArrow\"\r\n (click)=\"scrollRight()\"\r\n type=\"button\"\r\n >\r\n ›\r\n </button>\r\n }\r\n `,\r\n styleUrls: ['./tabs.component.scss'],\r\n host: {\r\n 'data-testid': 'monkey-tabs',\r\n '[attr.id]': 'monkeyId',\r\n '[id]': 'monkeyId'\r\n }\r\n})\r\nexport class MonkeyTabsComponent implements AfterContentInit, AfterViewInit, OnDestroy, OnChanges {\r\n protected monkeyId = inject(IdGenerator).getId('monkey-tabs-');\r\n\r\n @Input() selected: string = '';\r\n\r\n @Input({ transform: booleanAttribute }) fullWidth: boolean = false;\r\n\r\n @Input() position: 'start' | 'center' | 'end' = 'start';\r\n\r\n @Output() onChange = new EventEmitter<string>();\r\n\r\n @ContentChildren(MonkeyTabComponent) tabs!: QueryList<MonkeyTabComponent>;\r\n\r\n @ViewChild('tabsHeader') tabsHeader!: ElementRef<HTMLDivElement>;\r\n\r\n @ViewChild('tabsContent') tabsContent!: ElementRef<HTMLDivElement>;\r\n\r\n enabledLeftArrow = false;\r\n\r\n enabledRightArrow = false;\r\n\r\n hasScroll = false;\r\n\r\n scrollPosition = 0;\r\n\r\n private destroyRef = inject(DestroyRef);\r\n\r\n private resizeObserver?: ResizeObserver;\r\n\r\n private updateScrollPosition() {\r\n this.tabsContent.nativeElement.style.transform = `translateX(-${this.scrollPosition}px)`;\r\n this.updateScrollArrows();\r\n }\r\n\r\n private updateScrollArrows() {\r\n if (!this.tabsHeader || !this.tabsContent) return;\r\n\r\n const headerWidth = this.tabsHeader.nativeElement.offsetWidth;\r\n const contentWidth = this.tabsContent.nativeElement.scrollWidth;\r\n const maxScroll = contentWidth - headerWidth;\r\n\r\n this.hasScroll = maxScroll > 0;\r\n this.enabledLeftArrow = this.scrollPosition > 0;\r\n this.enabledRightArrow = this.scrollPosition < maxScroll && maxScroll > 0;\r\n }\r\n\r\n private selectTab(value: string) {\r\n this.selected = value;\r\n this.onChange.emit(value);\r\n this.updateTabSelection();\r\n }\r\n\r\n private updateTabSelection() {\r\n if (!this.tabs) return;\r\n\r\n this.tabs.forEach((tab) => {\r\n tab.isSelected = tab.value === this.selected;\r\n });\r\n }\r\n\r\n ngOnChanges() {\r\n this.updateTabSelection();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (typeof ResizeObserver !== 'undefined') {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.updateScrollArrows();\r\n });\r\n this.resizeObserver.observe(this.tabsHeader.nativeElement);\r\n }\r\n\r\n setTimeout(() => {\r\n this.updateScrollArrows();\r\n }, 0);\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.updateTabsEvents();\r\n }\r\n\r\n updateTabsEvents() {\r\n this.tabs.forEach((tab) => {\r\n tab.onClick.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value: string) => {\r\n this.selectTab(value);\r\n });\r\n });\r\n\r\n this.updateTabSelection();\r\n }\r\n\r\n scrollLeft() {\r\n const headerWidth = this.tabsHeader.nativeElement.offsetWidth;\r\n const scrollAmount = headerWidth * 0.8;\r\n this.scrollPosition = Math.max(0, this.scrollPosition - scrollAmount);\r\n this.updateScrollPosition();\r\n }\r\n\r\n scrollRight() {\r\n const headerWidth = this.tabsHeader.nativeElement.offsetWidth;\r\n const contentWidth = this.tabsContent.nativeElement.scrollWidth;\r\n const maxScroll = contentWidth - headerWidth;\r\n const scrollAmount = headerWidth * 0.8;\r\n this.scrollPosition = Math.min(maxScroll, this.scrollPosition + scrollAmount);\r\n this.updateScrollPosition();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.resizeObserver?.disconnect();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { NgModule } from '@angular/core';\r\nimport { MonkeyTabLinkDirective } from './tab-link.directive';\r\nimport { MonkeyTabComponent } from './tab.component';\r\nimport { MonkeyTabsComponent } from './tabs.component';\r\n\r\n@NgModule({\r\n declarations: [MonkeyTabsComponent, MonkeyTabComponent, MonkeyTabLinkDirective],\r\n exports: [MonkeyTabsComponent, MonkeyTabComponent, MonkeyTabLinkDirective]\r\n})\r\nexport class MonkeyTabsModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-toggle',\r\n imports: [CommonModule],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-toggle',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyToggleComponent {\r\n @HostBinding('class.disabled') @Input() disabled = false;\r\n\r\n @HostBinding('class')\r\n @Input()\r\n size: 'lg' | 'md' | 'sm' = 'md';\r\n\r\n @Output() onChange = new EventEmitter<any>();\r\n\r\n @Input() set value(_: boolean | 'true' | 'false') {\r\n if (typeof _ === 'string') {\r\n this._checked = _ === 'true';\r\n } else {\r\n this._checked = _;\r\n }\r\n }\r\n\r\n _checked: boolean = false;\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-toggle-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: any) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n\r\n if (!this.disabled) {\r\n this.onChange.next(!this._checked);\r\n this._checked = !this._checked;\r\n }\r\n }\r\n}\r\n","<input type=\"checkbox\" [checked]=\"_checked\" />\r\n<div class=\"slider\" [ngClass]=\"{ checked: _checked }\"></div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toggle.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'monkey-toggle-line-button',\r\n standalone: true,\r\n templateUrl: './toggle-line-button.component.html',\r\n styleUrl: './toggle-line-button.component.scss',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class MonkeyToggleLineButtonComponent {\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input() value: boolean | undefined;\r\n\r\n checked: boolean | undefined;\r\n\r\n @Input() name: string | undefined;\r\n}\r\n","<input\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [id]=\"value + '-' + name\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange.emit(this.value)\"\r\n/>\r\n<label [for]=\"value + '-' + name\">\r\n <ng-content></ng-content>\r\n</label>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toggle-line-button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyToggleLineButtonComponent } from './toggle-line-button';\r\n\r\n@Component({\r\n selector: 'monkey-toggle-line',\r\n imports: [],\r\n templateUrl: './toggle-line.component.html',\r\n styleUrl: './toggle-line.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-toggle-line',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyToggleLineComponent implements AfterContentInit, OnDestroy, OnChanges {\r\n @Input() value: boolean | undefined;\r\n\r\n @Input() name = Math.random().toString();\r\n\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n @Output() onChange = new EventEmitter<any>();\r\n\r\n private subscriptions: Subscription = new Subscription();\r\n\r\n @ContentChildren(MonkeyToggleLineButtonComponent)\r\n radioButtons!: QueryList<MonkeyToggleLineButtonComponent>;\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n return this.size;\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-toggle-line-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.radioButtons.forEach((_, i) => {\r\n _.value = !!i;\r\n _.checked = this.value === _.value;\r\n _.name = this.name;\r\n _.disabled = this.disabled;\r\n\r\n const subscription = _.onChange.subscribe((value: boolean) => {\r\n this.onChange.emit(value);\r\n });\r\n this.subscriptions.add(subscription);\r\n });\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (!this.radioButtons) return;\r\n this.radioButtons.forEach((_, i) => {\r\n _.checked = this.value === _.value;\r\n _.disabled = this.disabled;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.unsubscribe();\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toggle-line-button';\r\nexport * from './toggle-line.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n Output,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-tooltip',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-tooltip',\r\n '[style.left.px]': 'left',\r\n '[style.top.px]': 'top',\r\n '(animationend)': 'onAnimationEnd($event)',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyTooltipComponent {\r\n @Input() text: string | undefined;\r\n\r\n @Input() template!: null | TemplateRef<HTMLElement>;\r\n\r\n @Input() left: number | undefined;\r\n\r\n @Input() top: number | undefined;\r\n\r\n @Output() afterClose = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-tooltip-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor(private host: ElementRef<HTMLElement>) {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n close() {\r\n this.host.nativeElement.classList.add('closed');\r\n }\r\n\r\n onAnimationEnd(event: AnimationEvent) {\r\n if (event.animationName.includes('fade-out')) {\r\n this.afterClose.emit(true);\r\n }\r\n }\r\n}\r\n","@if (template) {\r\n <ng-container *ngTemplateOutlet=\"template\"> </ng-container>\r\n}\r\n@if (text) {\r\n {{ text }}\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './tooltip.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ApplicationRef,\r\n booleanAttribute,\r\n ComponentRef,\r\n Directive,\r\n DOCUMENT,\r\n ElementRef,\r\n HostListener,\r\n Inject,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { MonkeyTooltipComponent } from './tooltip';\r\n\r\ntype Position = 'top' | 'bottom' | 'left' | 'right' | undefined;\r\n\r\n@Directive({\r\n selector: '[monkeyTooltip]',\r\n standalone: true,\r\n host: {\r\n '(mouseenter)': 'show()',\r\n '(mouseleave)': 'hide()',\r\n '(click)': 'hide()'\r\n }\r\n})\r\nexport class MonkeyTooltipDirective {\r\n @Input('monkeyTooltip') tooltipText: string | TemplateRef<HTMLElement> | undefined;\r\n\r\n @Input() tooltipPosition: Position;\r\n\r\n @Input({ transform: booleanAttribute }) enabled = true;\r\n\r\n private offset = 8;\r\n\r\n private tooltipComponent?: ComponentRef<MonkeyTooltipComponent>;\r\n\r\n private bounds!: {\r\n elBounds: DOMRect;\r\n tooltipBounds: DOMRect;\r\n scroll: number;\r\n viewport: { width: number; height: number };\r\n };\r\n\r\n constructor(\r\n private viewContainerRef: ViewContainerRef,\r\n private elementRef: ElementRef,\r\n private appRef: ApplicationRef,\r\n @Inject(DOCUMENT) private document: Document\r\n ) {\r\n // to do not\r\n }\r\n\r\n private setBounds() {\r\n this.tooltipComponent!.hostView.detectChanges();\r\n this.bounds = {\r\n elBounds: this.elementRef.nativeElement.getBoundingClientRect(),\r\n tooltipBounds: this.tooltipComponent?.location.nativeElement.getBoundingClientRect(),\r\n scroll: document.documentElement.scrollTop || document.body.scrollTop || 0,\r\n viewport: {\r\n width:\r\n window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,\r\n height:\r\n window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\r\n }\r\n };\r\n }\r\n\r\n private createTooltip() {\r\n this.tooltipComponent = this.viewContainerRef.createComponent(MonkeyTooltipComponent);\r\n this.document.body.appendChild(this.tooltipComponent.location.nativeElement);\r\n\r\n if (this.tooltipText instanceof TemplateRef) {\r\n this.tooltipComponent.instance.template = this.tooltipText;\r\n } else {\r\n this.tooltipComponent.instance.text = this.tooltipText;\r\n }\r\n this.setBounds();\r\n\r\n this.positionTooltip(this.tooltipPosition);\r\n }\r\n\r\n private positionTooltip(position: Position) {\r\n switch (position) {\r\n case 'left':\r\n this.positionLeft();\r\n if (this.isOutOfBounds()) {\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionTop();\r\n }\r\n }\r\n }\r\n break;\r\n case 'right':\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionLeft();\r\n if (this.isOutOfBounds()) {\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionTop();\r\n }\r\n }\r\n }\r\n break;\r\n case 'top':\r\n this.positionTop();\r\n if (this.isOutOfBounds()) {\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionLeft();\r\n }\r\n }\r\n }\r\n break;\r\n case 'bottom':\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionTop();\r\n if (this.isOutOfBounds()) {\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionLeft();\r\n }\r\n }\r\n }\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n private isOutOfBounds() {\r\n const { tooltipBounds, viewport } = this.bounds;\r\n\r\n return (\r\n tooltipBounds.left < 0 ||\r\n tooltipBounds.top < 0 ||\r\n tooltipBounds.left + tooltipBounds.width > viewport.width ||\r\n tooltipBounds.top + tooltipBounds.height > viewport.height\r\n );\r\n }\r\n\r\n private positionLeft() {\r\n const { elBounds, tooltipBounds, scroll } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.left - tooltipBounds.width - this.offset;\r\n this.tooltipComponent!.instance.top = scroll + (elBounds.top + elBounds.height / 2);\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateY(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n private positionRight() {\r\n const { elBounds, scroll } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.right + this.offset;\r\n this.tooltipComponent!.instance.top = scroll + (elBounds.top + elBounds.height / 2);\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateY(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n private positionTop() {\r\n const { elBounds, tooltipBounds, scroll } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.left + elBounds.width / 2;\r\n this.tooltipComponent!.instance.top =\r\n scroll + elBounds.top - tooltipBounds.height - this.offset;\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateX(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n private positionBottom() {\r\n const { elBounds, scroll } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.left + elBounds.width / 2;\r\n this.tooltipComponent!.instance.top = scroll + elBounds.bottom + this.offset;\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateX(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n show(): void {\r\n if (!this.enabled || this.tooltipComponent) {\r\n return;\r\n }\r\n\r\n this.createTooltip();\r\n }\r\n\r\n hide(): void {\r\n if (!this.tooltipComponent) {\r\n return;\r\n }\r\n this.tooltipComponent.instance.close();\r\n const subscribe = this.tooltipComponent.instance.afterClose.subscribe(() => {\r\n if (!this.tooltipComponent) {\r\n return;\r\n }\r\n this.appRef.detachView(this.tooltipComponent!.hostView);\r\n this.tooltipComponent!.destroy();\r\n this.tooltipComponent = undefined;\r\n subscribe.unsubscribe();\r\n });\r\n }\r\n\r\n @HostListener('window:scroll')\r\n @HostListener('window:resize')\r\n onScroll() {\r\n this.hide();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './tooltip';\r\nexport * from './tooltip.directive';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n inject,\r\n Input,\r\n input,\r\n InputSignal,\r\n output,\r\n OutputEmitterRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { type MonkeyAlertType, MonkeySize } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'monkey-user-profile',\r\n styleUrl: './user-profile.component.scss',\r\n template: `\r\n <div class=\"icon\">\r\n <i class=\"mk-i mk-i-user-profile {{size()}}\"></i>\r\n </div>\r\n <div class=\"text-truncate\">{{ email() }}</div>\r\n `,\r\n host: {\r\n 'data-testid': 'monkey-user-profile',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class]': 'size()'\r\n }\r\n})\r\nexport class MonkeyUserProfileComponent {\r\n email: InputSignal<string> = input.required();\r\n\r\n size: InputSignal<MonkeySize> = input('sm' as MonkeySize);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-user-profile-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './user-profile.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n ElementRef,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeySize } from '../../interfaces';\r\nimport { MonkeyAvatarComponent } from '../avatar';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [MonkeyAvatarComponent, UtilIconComponent, MonkeyPopoverDirective],\r\n selector: 'monkey-user-profile-button',\r\n styleUrl: './user-profile-button.component.scss',\r\n template: `\r\n <monkey-avatar [size]=\"size\" [src]=\"iconName ? { iconName } : { name }\" />\r\n <div class=\"lh-24 text-truncate flex-grow-1 fs-xxs text-gray-900\">\r\n {{ name }}\r\n </div>\r\n <util-icon class=\"arrow\" name=\"arrowDown\" />\r\n\r\n <ng-template\r\n [monkeyPopover]=\"open\"\r\n [monkeyPopoverTarget]=\"elementRef.nativeElement\"\r\n [monkeyPopoverClosed]=\"handleClose\"\r\n monkeyPopoverDir=\"rtl\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n >\r\n <div class=\"context-menu\" (click)=\"open = false\">\r\n <ng-content />\r\n </div>\r\n </ng-template>\r\n `,\r\n host: {\r\n 'data-testid': 'monkey-user-profile-button',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class.open]': 'open'\r\n }\r\n})\r\nexport class MonkeyUserProfileButtonComponent {\r\n protected _uid = inject(IdGenerator).getId('monkey-user-profile-button-');\r\n\r\n public elementRef = inject(ElementRef);\r\n\r\n @HostBinding('class')\r\n @Input()\r\n size: MonkeySize = 'xs';\r\n\r\n @Input({ required: true }) name!: string;\r\n\r\n @Input() iconName: string = '';\r\n\r\n protected _id!: string;\r\n\r\n open = false;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n this.open = true;\r\n }\r\n\r\n handleClose = () => {\r\n this.open = false;\r\n };\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './user-profile-button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './accordion';\r\nexport * from './action-bar';\r\nexport * from './alert';\r\nexport * from './autocomplete';\r\nexport * from './autocomplete-address';\r\nexport * from './avatar';\r\nexport * from './badge';\r\nexport * from './breadcrumb';\r\nexport * from './button';\r\nexport * from './checkbox';\r\nexport * from './date-range';\r\nexport * from './divider';\r\nexport * from './download-button';\r\nexport * from './complex-filter-bar';\r\nexport * from './filter-bar';\r\nexport * from './form-field';\r\nexport * from './icon-button';\r\nexport * from './input';\r\nexport * from './input-code';\r\nexport * from './input-date-range';\r\nexport * from './input-phone';\r\nexport * from './input-upload';\r\nexport * from './modal';\r\nexport * from './option';\r\nexport * from './pass-number';\r\nexport * from './radio-button';\r\nexport * from './scrollbar';\r\nexport * from './security-level';\r\nexport * from './select';\r\nexport * from './status';\r\nexport * from './stepper';\r\nexport * from './table';\r\nexport * from './tabs';\r\nexport * from './toast';\r\nexport * from './toggle';\r\nexport * from './toggle-line';\r\nexport * from './tooltip';\r\nexport * from './user-profile';\r\nexport * from './user-profile-button';\r\n\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, ElementRef, Input, OnChanges, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[monkeyBadge]'\r\n})\r\nexport class MonkeyBadgeDirective implements OnChanges {\r\n @Input() badgePosition: 'left' | 'right' = 'right';\r\n\r\n @Input() badgeSize: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Input() badgeHidden = false;\r\n\r\n @Input() monkeyBadge: string = '';\r\n\r\n @Input() badgeBackground: string | null = null;\r\n\r\n @Input() badgeColor: string | null = null;\r\n\r\n private badgeEl: HTMLElement | null = null;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2\r\n ) {\r\n // not to do\r\n }\r\n\r\n ngOnChanges(): void {\r\n const { badgeHidden, badgeEl, renderer, el } = this;\r\n\r\n if (badgeHidden) {\r\n this.removeBadge();\r\n return;\r\n }\r\n\r\n if (!badgeEl) {\r\n this.badgeEl = renderer.createElement('span');\r\n renderer.setStyle(el.nativeElement, 'position', 'relative');\r\n renderer.appendChild(el.nativeElement, this.badgeEl);\r\n }\r\n\r\n this.updateBadge();\r\n }\r\n\r\n private updateBadge(): void {\r\n const {\r\n badgeEl,\r\n renderer,\r\n monkeyBadge,\r\n badgeSize,\r\n badgeColor,\r\n badgePosition,\r\n badgeBackground\r\n } = this;\r\n\r\n renderer.addClass(badgeEl, 'monkey-badge');\r\n renderer.addClass(badgeEl, `monkey-badge-${badgeSize}`);\r\n renderer.addClass(badgeEl, `monkey-badge-${badgePosition}`);\r\n renderer.setAttribute(\r\n badgeEl,\r\n 'style',\r\n `\r\n --badge-background: ${badgeBackground ?? 'unset'};\r\n --badge-color: ${badgeColor ?? 'unset'}\r\n `\r\n );\r\n\r\n this.renderer.setProperty(this.badgeEl, 'textContent', monkeyBadge);\r\n }\r\n\r\n private removeBadge(): void {\r\n const { renderer, el, badgeEl } = this;\r\n if (!el.nativeElement || !badgeEl) return;\r\n renderer.removeChild(el.nativeElement, badgeEl);\r\n renderer.removeStyle(el.nativeElement, 'position');\r\n this.badgeEl = null;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { AfterContentInit, Directive, ElementRef, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'form[monkey-form]',\r\n standalone: true\r\n})\r\nexport class MonkeyFormDirective implements AfterContentInit {\r\n constructor(\r\n private readonly el: ElementRef<HTMLElement>,\r\n private readonly renderer: Renderer2\r\n ) {}\r\n\r\n ngAfterContentInit(): void {\r\n this.createSubmitButton();\r\n }\r\n\r\n private createSubmitButton(): void {\r\n const form = this.el.nativeElement;\r\n\r\n const existing = form.querySelector('button[monkey-submit-button]');\r\n if (existing) return;\r\n\r\n const button: HTMLButtonElement = this.renderer.createElement('button');\r\n\r\n this.renderer.setAttribute(button, 'type', 'submit');\r\n this.renderer.setAttribute(button, 'monkey-submit-button', 'true'); // marker\r\n this.renderer.setAttribute(button, 'aria-hidden', 'true');\r\n this.renderer.setAttribute(button, 'tabindex', '-1');\r\n\r\n this.renderer.setStyle(button, 'position', 'absolute');\r\n this.renderer.setStyle(button, 'width', '0');\r\n this.renderer.setStyle(button, 'height', '0');\r\n this.renderer.setStyle(button, 'padding', '0');\r\n this.renderer.setStyle(button, 'margin', '0');\r\n this.renderer.setStyle(button, 'border', 'none');\r\n this.renderer.setStyle(button, 'overflow', 'hidden');\r\n this.renderer.setStyle(button, 'opacity', '0');\r\n this.renderer.setStyle(button, 'pointer-events', 'none');\r\n this.renderer.setStyle(button, 'clip', 'rect(0 0 0 0)');\r\n\r\n this.renderer.appendChild(this.el.nativeElement, button);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './lib/components';\r\nexport * from './lib/directives/badge';\r\nexport * from './lib/directives/display';\r\nexport * from './lib/directives/error';\r\nexport * from './lib/directives/helper';\r\nexport * from './lib/directives/info';\r\nexport * from './lib/directives/label';\r\nexport * from './lib/directives/popover';\r\nexport * from './lib/directives/prefix';\r\nexport * from './lib/directives/suffix';\r\nexport * from './lib/directives/form';\r\nexport * from './lib/interfaces';\r\nexport * from './lib/services';\r\nexport * from './lib/tokens';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.UtilIconComponent","i1.MonkeyFormFieldComponent","i2","i3","Utils.buildMonthByDays","Utils.getEnumKeys","Utils.QuickActionsEnum","Utils.parseStringDate","Utils.getDefaultdates","Utils.buildCalendars","i1","i2.MonkeyInputDirective","i3.MonkeyFormFieldComponent","i4","i2.MonkeyFormFieldComponent","i3.MonkeyInputDirective","i4.MonkeyInputCurrencyDirective","i2.MonkeyModalRef","i3.MonkeyIconButtonComponent","i1.MonkeyButtonComponent","i2.MonkeyModalComponent","i3.MonkeyModalContentDirective","i4.MonkeyModalActionsDirective","i3.MonkeyModalTitleDirective","i4.MonkeyModalSubtitleDirective","i5.MonkeyModalContentDirective","i6.MonkeyModalActionsDirective","i1.UtilIconComponent"],"mappings":"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"}
|