// ** Mock Adapter import mock from '@/@fake-db/mock' const database = [ { id: 1, url: { name: 'dashboards-analytics' }, icon: 'tabler-timeline', title: 'Analytics Dashboard', category: 'dashboards', }, { id: 2, url: { name: 'dashboards-ecommerce' }, icon: 'tabler-shopping-cart', title: 'eCommerce Dashboard', category: 'dashboards', }, { id: 3, url: { name: 'dashboards-crm' }, icon: 'tabler-shopping-cart', title: 'CRM Dashboard', category: 'dashboards', }, { id: 4, url: { name: 'apps-email' }, icon: 'tabler-mail', title: 'Email', category: 'appsPages', }, { id: 5, url: { name: 'apps-chat' }, icon: 'tabler-message', title: 'Chat', category: 'appsPages', }, { id: 6, url: { name: 'apps-calendar' }, icon: 'tabler-calendar', title: 'Calendar', category: 'appsPages', }, { id: 7, url: { name: 'apps-invoice-list' }, icon: 'tabler-list', title: 'Invoice List', category: 'appsPages', }, { id: 8, url: { name: 'apps-invoice-preview-id', params: { id: '5036' } }, icon: 'tabler-file-description', title: 'Invoice Preview', category: 'appsPages', }, { id: 9, url: { name: 'apps-invoice-edit-id', params: { id: '5036' } }, icon: 'tabler-file-pencil', title: 'Invoice Edit', category: 'appsPages', }, { id: 11, url: { name: 'apps-invoice-add' }, icon: 'tabler-file-plus', title: 'Invoice Add', category: 'appsPages', }, { id: 12, url: { name: 'apps-user-list' }, icon: 'tabler-user', title: 'User List', category: 'appsPages', }, { id: 13, url: { name: 'apps-user-view-id', params: { id: 21 } }, icon: 'tabler-eye', title: 'User View', category: 'appsPages', }, { id: 15, url: { name: 'pages-help-center' }, icon: 'tabler-help', title: 'Help Center', category: 'appsPages', }, { id: 16, url: { name: 'pages-user-profile-tab', params: { tab: 'profile' } }, icon: 'tabler-user', title: 'User Profile - Profile', category: 'appsPages', }, { id: 17, url: { name: 'pages-account-settings-tab', params: { tab: 'account' } }, icon: 'tabler-user', title: 'Account Settings - Account', category: 'appsPages', }, { id: 18, url: { name: 'pages-account-settings-tab', params: { tab: 'security' } }, icon: 'tabler-lock-open', title: 'Account Settings - Security', category: 'appsPages', }, { id: 19, url: { name: 'pages-account-settings-tab', params: { tab: 'billing-plans' } }, icon: 'tabler-currency-dollar', title: 'Account Settings - Billing', category: 'appsPages', }, { id: 20, url: { name: 'pages-account-settings-tab', params: { tab: 'notification' } }, icon: 'tabler-bell', title: 'Account Settings - Notifications', category: 'appsPages', }, { id: 21, url: { name: 'pages-account-settings-tab', params: { tab: 'connection' } }, icon: 'tabler-link', title: 'Account Settings - Connections', category: 'appsPages', }, { id: 22, url: { name: 'pages-pricing' }, icon: 'tabler-currency-dollar', title: 'Pricing', category: 'appsPages', }, { id: 23, url: { name: 'pages-faq' }, icon: 'tabler-help', title: 'FAQ', category: 'appsPages', }, { id: 24, url: { name: 'pages-misc-coming-soon' }, icon: 'tabler-clock', title: 'Coming Soon', category: 'appsPages', }, { id: 25, url: { name: 'pages-misc-under-maintenance' }, icon: 'tabler-settings', title: 'Under Maintenance', category: 'appsPages', }, { id: 26, url: { name: 'pages-misc-not-found' }, icon: 'tabler-alert-circle', title: 'Page Not Found - 404', category: 'appsPages', }, { id: 27, url: { name: 'pages-misc-not-authorized' }, icon: 'tabler-users', title: 'Not Authorized - 401', category: 'appsPages', }, { id: 28, url: { name: 'pages-misc-internal-server-error' }, icon: 'tabler-list', title: 'Server Error - 500', category: 'appsPages', }, { id: 29, url: { name: 'pages-authentication-login-v1' }, icon: 'tabler-login', title: 'Login V1', category: 'appsPages', }, { id: 30, url: { name: 'pages-authentication-login-v2' }, icon: 'tabler-login', title: 'Login V2', category: 'appsPages', }, { id: 31, url: { name: 'pages-authentication-register-v1' }, icon: 'tabler-user-plus', title: 'Register V1', category: 'appsPages', }, { id: 32, url: { name: 'pages-authentication-register-v2' }, icon: 'tabler-user-plus', title: 'Register V2', category: 'appsPages', }, { id: 42, icon: 'tabler-mail', category: 'appsPages', title: 'Verify Email V1', url: { name: 'pages-authentication-verify-email-v1' }, }, { id: 43, icon: 'tabler-mail', category: 'appsPages', title: 'Verify Email V2', url: { name: 'pages-authentication-verify-email-v2' }, }, { id: 35, url: { name: 'pages-authentication-forgot-password-v1' }, icon: 'tabler-lock', title: 'Forgot Password V1', category: 'appsPages', }, { id: 36, url: { name: 'pages-authentication-forgot-password-v2' }, icon: 'tabler-lock', title: 'Forgot Password V2', category: 'appsPages', }, { id: 37, url: { name: 'pages-authentication-reset-password-v1' }, icon: 'tabler-lock', title: 'Reset Password V1', category: 'appsPages', }, { id: 38, url: { name: 'pages-authentication-reset-password-v2' }, icon: 'tabler-lock', title: 'Reset Password V2', category: 'appsPages', }, { id: 48, icon: 'tabler-devices', category: 'appsPages', title: 'Two Steps V1', url: { name: 'pages-authentication-two-steps-v1' }, }, { id: 49, icon: 'tabler-devices', category: 'appsPages', title: 'Two Steps V2', url: { name: 'pages-authentication-two-steps-v2' }, }, { id: 41, url: { name: 'pages-typography' }, icon: 'tabler-baseline', title: 'Typography', category: 'userInterface', }, { id: 42, url: { name: 'pages-icons' }, icon: 'tabler-brand-google', title: 'Icons', category: 'userInterface', }, { id: 43, url: { name: 'pages-cards-card-basic' }, icon: 'tabler-cards', title: 'Card Basic', category: 'userInterface', }, { id: 56, url: { name: 'pages-cards-card-advance' }, icon: 'tabler-cards', title: 'Card Advance', category: 'userInterface', }, { id: 58, url: { name: 'pages-cards-card-statistics' }, icon: 'tabler-chart-bar', title: 'Card Statistics', category: 'userInterface', }, { id: 59, url: { name: 'pages-cards-card-widgets' }, icon: 'tabler-id', title: 'Card Widgets', category: 'userInterface', }, { id: 46, url: { name: 'pages-cards-card-actions' }, icon: 'tabler-square-plus', title: 'Card Actions', category: 'userInterface', }, { id: 47, url: { name: 'components-alert' }, icon: 'tabler-alert-triangle', title: 'Alerts', category: 'userInterface', }, { id: 48, url: { name: 'components-avatar' }, icon: 'tabler-user-circle', title: 'Avatars', category: 'userInterface', }, { id: 49, url: { name: 'components-badge' }, icon: 'tabler-bell', title: 'Badges', category: 'userInterface', }, { id: 50, url: { name: 'components-button' }, icon: 'tabler-hand-click', title: 'Buttons', category: 'userInterface', }, { id: 51, url: { name: 'components-chip' }, icon: 'tabler-box', title: 'Chips', category: 'userInterface', }, { id: 52, url: { name: 'components-dialog' }, icon: 'tabler-square', title: 'Dialogs', category: 'userInterface', }, { id: 53, url: { name: 'components-list' }, icon: 'tabler-list', title: 'List', category: 'userInterface', }, { id: 54, url: { name: 'components-menu' }, icon: 'tabler-menu-2', title: 'Menu', category: 'userInterface', }, { id: 55, url: { name: 'components-pagination' }, icon: 'tabler-player-skip-forward', title: 'Pagination', category: 'userInterface', }, { id: 56, url: { name: 'components-progress-circular' }, icon: 'tabler-adjustments-alt', title: 'Progress Circular', category: 'userInterface', }, { id: 83, url: { name: 'components-progress-linear' }, icon: 'tabler-adjustments-alt', title: 'Progress Linear', category: 'userInterface', }, { id: 57, url: { name: 'components-expansion-panel' }, icon: 'tabler-fold', title: 'Expansion Panel', category: 'userInterface', }, { id: 58, url: { name: 'components-snackbar' }, icon: 'tabler-message', title: 'Snackbar', category: 'userInterface', }, { id: 59, url: { name: 'components-tabs' }, icon: 'tabler-square-plus', title: 'Tabs', category: 'userInterface', }, { id: 60, url: { name: 'components-timeline' }, icon: 'tabler-timeline-event', title: 'Timeline', category: 'userInterface', }, { id: 61, url: { name: 'components-tooltip' }, icon: 'tabler-message-chatbot', title: 'Tooltip', category: 'userInterface', }, { id: 62, url: { name: 'forms-textfield' }, icon: 'tabler-arrow-rotary-last-left', title: 'TextField', category: 'formsTables', }, { id: 63, url: { name: 'forms-select' }, icon: 'tabler-list-check', title: 'Select', category: 'formsTables', }, { id: 64, url: { name: 'forms-checkbox' }, icon: 'tabler-checkbox', title: 'Checkbox', category: 'formsTables', }, { id: 65, url: { name: 'forms-radio' }, icon: 'tabler-circle-dot', title: 'Radio', category: 'formsTables', }, { id: 66, url: { name: 'forms-combobox' }, icon: 'tabler-checkbox', title: 'Combobox', category: 'formsTables', }, { id: 67, url: { name: 'forms-date-time-picker' }, icon: 'tabler-calendar', title: 'Date Time picker', category: 'formsTables', }, { id: 68, url: { name: 'forms-textarea' }, icon: 'tabler-forms', title: 'Textarea', category: 'formsTables', }, { id: 70, url: { name: 'forms-switch' }, icon: 'tabler-toggle-left', title: 'Switch', category: 'formsTables', }, { id: 71, url: { name: 'forms-file-input' }, icon: 'tabler-upload', title: 'File Input', category: 'formsTables', }, { id: 72, url: { name: 'forms-rating' }, icon: 'tabler-star', title: 'Form Rating', category: 'formsTables', }, { id: 73, url: { name: 'forms-slider' }, icon: 'tabler-hand-click', title: 'Slider', category: 'formsTables', }, { id: 74, url: { name: 'forms-range-slider' }, icon: 'tabler-adjustments', title: 'Range Slider', category: 'formsTables', }, { id: 75, url: { name: 'forms-form-layouts' }, icon: 'tabler-box', title: 'Form Layouts', category: 'formsTables', }, { id: 76, url: { name: 'forms-form-validation' }, icon: 'tabler-checkbox', title: 'Form Validation', category: 'formsTables', }, { id: 77, url: { name: 'charts-apex-chart' }, icon: 'tabler-chart-line', title: 'Apex Charts', category: 'chartsMisc', }, { id: 78, url: { name: 'charts-chartjs' }, icon: 'tabler-chart-area', title: 'ChartJS', category: 'chartsMisc', }, { id: 79, url: { name: 'access-control' }, icon: 'tabler-shield', title: 'Access Control (ACL)', category: 'chartsMisc', }, { id: 80, url: { name: 'pages-dialog-examples' }, icon: 'tabler-square', title: 'Dialog Examples', category: 'appsPages', }, { id: 81, url: { name: 'forms-custom-input' }, icon: 'tabler-list-details', title: 'Custom Input', category: 'formsTables', }, { id: 82, url: { name: 'forms-autocomplete' }, icon: 'tabler-align-left', title: 'Autocomplete', category: 'formsTables', }, { id: 83, url: { name: 'extensions-tour' }, icon: 'mdi-cube-outline', title: 'Tour', category: 'userInterface', }, { id: 84, url: { name: 'pages-authentication-register-multi-steps' }, icon: 'tabler-user-plus', title: 'Register Multi-Steps', category: 'appsPages', }, { id: 85, url: { name: 'wizard-examples-checkout' }, icon: 'tabler-shopping-cart', title: 'Wizard - Checkout', category: 'appsPages', }, { id: 86, url: { name: 'wizard-examples-create-deal' }, icon: 'tabler-gift', title: 'Wizard - create deal', category: 'appsPages', }, { id: 87, url: { name: 'wizard-examples-property-listing' }, icon: 'tabler-home', title: 'Wizard - Property Listing', category: 'appsPages', }, { id: 88, url: { name: 'apps-roles' }, icon: 'tabler-shield', title: 'Roles', category: 'appsPages', }, { id: 89, url: { name: 'apps-permissions' }, icon: 'tabler-shield', title: 'Permissions', category: 'appsPages', }, { id: 90, url: { name: 'tables-data-table' }, icon: 'mdi-table', title: 'Data Table', category: 'formsTables', }, { id: 91, url: { name: 'tables-simple-table' }, icon: 'mdi-table', title: 'Simple Table', category: 'formsTables', }, ] // ** GET Search Data // eslint-disable-next-line sonarjs/cognitive-complexity mock.onGet('/app-bar/search').reply(config => { const { q = '' } = config.params const queryLowered = q.toLowerCase() const exactData = { dashboards: [], appsPages: [], userInterface: [], formsTables: [], chartsMisc: [], } const includeData = { dashboards: [], appsPages: [], userInterface: [], formsTables: [], chartsMisc: [], } database.forEach(obj => { const isMatched = obj.title.toLowerCase().startsWith(queryLowered) if (isMatched && exactData[obj.category].length < 5) exactData[obj.category].push(obj) }) database.forEach(obj => { const isMatched = !obj.title.toLowerCase().startsWith(queryLowered) && obj.title.toLowerCase().includes(queryLowered) if (isMatched && includeData[obj.category].length < 5) includeData[obj.category].push(obj) }) const categoriesCheck = [] Object.keys(exactData).forEach(category => { if (exactData[category].length > 0) categoriesCheck.push(category) }) if (categoriesCheck.length === 0) { Object.keys(includeData).forEach(category => { if (includeData[category].length > 0) categoriesCheck.push(category) }) } const resultsLength = categoriesCheck.length === 1 ? 5 : 3 const mergedData = [] Object.keys(exactData).forEach(element => { if (exactData[element].length || includeData[element].length) { const r = exactData[element].concat(includeData[element]).slice(0, resultsLength) r.unshift({ header: element, title: element }) mergedData.push(...r) } }) return [200, [...mergedData]] })