@salesforce/ui-bundle-template-app-angular-template-b2x 11.31.11 → 11.31.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/dist/CHANGELOG.md +16 -0
- package/dist/force-app/main/default/digitalExperienceConfigs/{angularexternalapp1.digitalExperienceConfig-meta.xml → angularextapp1.digitalExperienceConfig-meta.xml} +3 -3
- package/dist/force-app/main/default/digitalExperiences/site/{angularexternalapp1/angularexternalapp1.digitalExperience-meta.xml → angularextapp1/angularextapp1.digitalExperience-meta.xml} +1 -1
- package/dist/force-app/main/default/digitalExperiences/site/{angularexternalapp1/sfdc_cms__site/angularexternalapp1 → angularextapp1/sfdc_cms__site/angularextapp1}/_meta.json +1 -1
- package/dist/force-app/main/default/digitalExperiences/site/{angularexternalapp1/sfdc_cms__site/angularexternalapp1 → angularextapp1/sfdc_cms__site/angularextapp1}/content.json +3 -3
- package/dist/force-app/main/default/networks/{angularexternalapp.network-meta.xml → angularextapp.network-meta.xml} +4 -4
- package/dist/force-app/main/default/package.xml +5 -5
- package/dist/force-app/main/default/permissionsets/{angularexternalapp_Guest_User_Api_Access.permissionset-meta.xml → angularextapp_Guest_User_Api_Access.permissionset-meta.xml} +1 -1
- package/dist/force-app/main/default/sites/{angularexternalapp.site-meta.xml → angularextapp.site-meta.xml} +2 -2
- package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/angular.json +7 -4
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/angularexternalapp.uibundle-meta.xml → angularextapp/angularextapp.uibundle-meta.xml} +1 -1
- package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/app.routes.ts +11 -11
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/layout/app-layout/app-layout.component.html → angularextapp/src/app/components/layout/app-layout/app-layout.html} +17 -17
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/layout/app-layout/app-layout.component.spec.ts → angularextapp/src/app/components/layout/app-layout/app-layout.spec.ts} +2 -2
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/layout/app-layout/app-layout.component.ts → angularextapp/src/app/components/layout/app-layout/app-layout.ts} +2 -2
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/alert/alert.component.ts → angularextapp/src/app/components/ui/alert/alert.ts} +1 -1
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/button/button.component.ts → angularextapp/src/app/components/ui/button/button.ts} +2 -2
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/card/card.component.ts → angularextapp/src/app/components/ui/card/card.ts} +1 -1
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/collapsible/collapsible.component.ts → angularextapp/src/app/components/ui/collapsible/collapsible.ts} +1 -1
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/date-picker/date-picker.component.ts → angularextapp/src/app/components/ui/date-picker/date-picker.ts} +2 -2
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/date-range-picker/date-range-picker.component.ts → angularextapp/src/app/components/ui/date-range-picker/date-range-picker.ts} +2 -2
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/dialog/dialog.component.ts → angularextapp/src/app/components/ui/dialog/dialog.ts} +1 -1
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/field/field.component.ts → angularextapp/src/app/components/ui/field/field.ts} +1 -1
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/input/input.component.ts → angularextapp/src/app/components/ui/input/input.ts} +2 -2
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/label/label.component.ts → angularextapp/src/app/components/ui/label/label.ts} +1 -1
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/paginator/paginator.component.ts → angularextapp/src/app/components/ui/paginator/paginator.ts} +1 -1
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/popover/popover.component.ts → angularextapp/src/app/components/ui/popover/popover.ts} +1 -1
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/select/select.component.ts → angularextapp/src/app/components/ui/select/select.ts} +2 -2
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/separator/separator.component.ts → angularextapp/src/app/components/ui/separator/separator.ts} +2 -2
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/skeleton/skeleton.component.ts → angularextapp/src/app/components/ui/skeleton/skeleton.ts} +2 -2
- package/dist/force-app/main/default/uiBundles/angularextapp/src/app/features/authentication/auth-form/auth-form.html +34 -0
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/forms/auth-form/auth-form.component.ts → angularextapp/src/app/features/authentication/auth-form/auth-form.ts} +6 -6
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/layouts/auth-app-layout/auth-app-layout.component.ts → angularextapp/src/app/features/authentication/auth-layout/auth-layout.ts} +3 -3
- package/dist/force-app/main/default/uiBundles/angularextapp/src/app/features/authentication/card-layout/card-layout.html +16 -0
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/layouts/card-layout/card-layout.component.ts → angularextapp/src/app/features/authentication/card-layout/card-layout.ts} +2 -2
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/forms/footer-link/footer-link.component.html → angularextapp/src/app/features/authentication/footer-link/footer-link.html} +1 -3
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/forms/footer-link/footer-link.component.ts → angularextapp/src/app/features/authentication/footer-link/footer-link.ts} +1 -1
- package/dist/force-app/main/default/uiBundles/angularextapp/src/app/features/authentication/menu/auth-menu/auth-menu.html +26 -0
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/menu/auth-menu/auth-menu.component.ts → angularextapp/src/app/features/authentication/menu/auth-menu/auth-menu.ts} +2 -2
- package/dist/force-app/main/default/uiBundles/angularextapp/src/app/features/authentication/session/session.html +55 -0
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/session-timeout/session-timeout-validator/session-timeout-validator.component.ts → angularextapp/src/app/features/authentication/session/session.ts} +8 -8
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/components/status-alert/status-alert.component.html → angularextapp/src/app/features/authentication/status-alert/status-alert.html} +2 -4
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/components/status-alert/status-alert.component.ts → angularextapp/src/app/features/authentication/status-alert/status-alert.ts} +2 -2
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/forms/submit-button/submit-button.component.html → angularextapp/src/app/features/authentication/submit-button/submit-button.html} +2 -5
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/forms/submit-button/submit-button.component.ts → angularextapp/src/app/features/authentication/submit-button/submit-button.ts} +4 -4
- package/dist/force-app/main/default/uiBundles/angularextapp/src/app/features/object-search/breadcrumb/breadcrumb.html +54 -0
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/object-breadcrumb/object-breadcrumb.component.ts → angularextapp/src/app/features/object-search/breadcrumb/breadcrumb.ts} +2 -2
- package/dist/force-app/main/default/uiBundles/angularextapp/src/app/features/object-search/filters/active-filters.html +23 -0
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/active-filters/active-filters.component.ts → angularextapp/src/app/features/object-search/filters/active-filters.ts} +4 -4
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/date-filter/date-filter.component.ts → angularextapp/src/app/features/object-search/filters/date-filter.ts} +6 -6
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/date-range-filter/date-range-filter.component.ts → angularextapp/src/app/features/object-search/filters/date-range-filter.ts} +6 -6
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/filter-field-wrapper/filter-field-wrapper.component.html → angularextapp/src/app/features/object-search/filters/filter-field-wrapper.html} +2 -2
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/filter-field-wrapper/filter-field-wrapper.component.ts → angularextapp/src/app/features/object-search/filters/filter-field-wrapper.ts} +3 -3
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/multi-select-filter/multi-select-filter.component.ts → angularextapp/src/app/features/object-search/filters/multi-select-filter.ts} +6 -6
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/numeric-range-filter/numeric-range-filter.component.ts → angularextapp/src/app/features/object-search/filters/numeric-range-filter.ts} +6 -6
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/search-filter/search-filter.component.ts → angularextapp/src/app/features/object-search/filters/search-filter.ts} +6 -6
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/select-filter/select-filter.component.ts → angularextapp/src/app/features/object-search/filters/select-filter.ts} +5 -5
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/text-filter/text-filter.component.ts → angularextapp/src/app/features/object-search/filters/text-filter.ts} +6 -6
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/pagination-controls/pagination-controls.component.ts → angularextapp/src/app/features/object-search/pagination/pagination.ts} +3 -3
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/search-bar/search-bar.component.html → angularextapp/src/app/features/object-search/search-bar/search-bar.html} +5 -5
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/search-bar/search-bar.component.ts → angularextapp/src/app/features/object-search/search-bar/search-bar.ts} +6 -6
- package/dist/force-app/main/default/uiBundles/angularextapp/src/app/features/object-search/sort-control/sort-control.html +50 -0
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/sort-control/sort-control.component.ts → angularextapp/src/app/features/object-search/sort-control/sort-control.ts} +5 -5
- package/dist/force-app/main/default/uiBundles/angularextapp/src/app/pages/account-detail/account-detail-page.html +164 -0
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/account-detail/account-detail-page.component.ts → angularextapp/src/app/pages/account-detail/account-detail-page.ts} +9 -12
- package/dist/force-app/main/default/uiBundles/angularextapp/src/app/pages/account-search/account-search-page.html +111 -0
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/account-search/account-search-page.component.ts → angularextapp/src/app/pages/account-search/account-search-page.ts} +15 -15
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/change-password/change-password-page.component.ts → angularextapp/src/app/pages/change-password/change-password-page.ts} +5 -5
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/forgot-password/forgot-password-page.component.ts → angularextapp/src/app/pages/forgot-password/forgot-password-page.ts} +5 -5
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/home/home-page.component.ts → angularextapp/src/app/pages/home/home-page.ts} +3 -3
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/home/home.component.spec.ts → angularextapp/src/app/pages/home/home.spec.ts} +1 -1
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/home/home.component.ts → angularextapp/src/app/pages/home/home.ts} +1 -1
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/login/login-page.component.ts → angularextapp/src/app/pages/login/login-page.ts} +5 -5
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/not-found/not-found.component.spec.ts → angularextapp/src/app/pages/not-found/not-found.spec.ts} +1 -1
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/not-found/not-found.component.ts → angularextapp/src/app/pages/not-found/not-found.ts} +1 -1
- package/dist/force-app/main/default/uiBundles/angularextapp/src/app/pages/profile/profile-page.html +116 -0
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/profile/profile-page.component.ts → angularextapp/src/app/pages/profile/profile-page.ts} +7 -7
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/register/register-page.component.ts → angularextapp/src/app/pages/register/register-page.ts} +5 -5
- package/dist/force-app/main/default/uiBundles/angularextapp/src/app/pages/reset-password/reset-password-page.html +60 -0
- package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/reset-password/reset-password-page.component.ts → angularextapp/src/app/pages/reset-password/reset-password-page.ts} +7 -7
- package/dist/package-lock.json +2 -2
- package/dist/package.json +1 -1
- package/dist/scripts/org-setup.config.json +1 -1
- package/package.json +1 -1
- package/dist/force-app/main/default/uiBundles/angularexternalapp/src/app/features/authentication/forms/auth-form/auth-form.component.html +0 -38
- package/dist/force-app/main/default/uiBundles/angularexternalapp/src/app/features/authentication/layouts/card-layout/card-layout.component.html +0 -17
- package/dist/force-app/main/default/uiBundles/angularexternalapp/src/app/features/authentication/menu/auth-menu/auth-menu.component.html +0 -26
- package/dist/force-app/main/default/uiBundles/angularexternalapp/src/app/features/authentication/session-timeout/session-timeout-validator/session-timeout-validator.component.html +0 -57
- package/dist/force-app/main/default/uiBundles/angularexternalapp/src/app/features/object-search/components/active-filters/active-filters.component.html +0 -23
- package/dist/force-app/main/default/uiBundles/angularexternalapp/src/app/features/object-search/components/object-breadcrumb/object-breadcrumb.component.html +0 -55
- package/dist/force-app/main/default/uiBundles/angularexternalapp/src/app/features/object-search/components/sort-control/sort-control.component.html +0 -50
- package/dist/force-app/main/default/uiBundles/angularexternalapp/src/app/pages/account-detail/account-detail-page.component.html +0 -174
- package/dist/force-app/main/default/uiBundles/angularexternalapp/src/app/pages/account-search/account-search-page.component.html +0 -111
- package/dist/force-app/main/default/uiBundles/angularexternalapp/src/app/pages/profile/profile-page.component.html +0 -126
- package/dist/force-app/main/default/uiBundles/angularexternalapp/src/app/pages/reset-password/reset-password-page.component.html +0 -60
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/.forceignore +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/.postcssrc.json +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/.prettierignore +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/.prettierrc +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/CHANGELOG.md +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/README.md +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/e2e/app.spec.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/esbuild/api-version.mjs +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/eslint.config.js +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/middleware/html.mjs +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/middleware/proxy.mjs +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/package.json +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/playwright.config.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/public/favicon.ico +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/scripts/rewrite-e2e-assets.mjs +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/api/account/account-search.service.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/api/account/distinctAccountIndustries.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/api/account/distinctAccountTypes.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/api/account/getAccountDetail.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/api/account/searchAccounts.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/api/data-client.service.spec.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/api/data-client.service.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/api/user-profile.service.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/app.config.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/app.html +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/app.spec.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/app.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/components/ui/_field-size.scss +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/alert/alert.component.html → angularextapp/src/app/components/ui/alert/alert.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/button/button.component.html → angularextapp/src/app/components/ui/button/button.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/button/button.component.scss → angularextapp/src/app/components/ui/button/button.scss} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/card/card.component.scss → angularextapp/src/app/components/ui/card/card.scss} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/collapsible/collapsible.component.html → angularextapp/src/app/components/ui/collapsible/collapsible.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/date-picker/date-picker.component.html → angularextapp/src/app/components/ui/date-picker/date-picker.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/date-picker/date-picker.component.scss → angularextapp/src/app/components/ui/date-picker/date-picker.scss} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/date-range-picker/date-range-picker.component.html → angularextapp/src/app/components/ui/date-range-picker/date-range-picker.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/date-range-picker/date-range-picker.component.scss → angularextapp/src/app/components/ui/date-range-picker/date-range-picker.scss} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/dialog/dialog.component.html → angularextapp/src/app/components/ui/dialog/dialog.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/field/field.component.html → angularextapp/src/app/components/ui/field/field.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/components/ui/field-size.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/input/input.component.html → angularextapp/src/app/components/ui/input/input.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/input/input.component.scss → angularextapp/src/app/components/ui/input/input.scss} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/label/label.component.html → angularextapp/src/app/components/ui/label/label.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/paginator/paginator.component.html → angularextapp/src/app/components/ui/paginator/paginator.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/popover/popover.component.html → angularextapp/src/app/components/ui/popover/popover.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/select/select.component.html → angularextapp/src/app/components/ui/select/select.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/select/select.component.scss → angularextapp/src/app/components/ui/select/select.scss} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/separator/separator.component.html → angularextapp/src/app/components/ui/separator/separator.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/separator/separator.component.scss → angularextapp/src/app/components/ui/separator/separator.scss} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/skeleton/skeleton.component.html → angularextapp/src/app/components/ui/skeleton/skeleton.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/skeleton/skeleton.component.scss → angularextapp/src/app/components/ui/skeleton/skeleton.scss} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/components/ui/spinner/spinner.component.ts → angularextapp/src/app/components/ui/spinner/spinner.ts} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/features/authentication/auth/auth.guard.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/features/authentication/auth/auth.service.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/layouts/auth-app-layout/auth-app-layout.component.html → angularextapp/src/app/features/authentication/auth-layout/auth-layout.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/features/authentication/config/authentication.config.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/forms → angularextapp/src/app/features/authentication}/reactive-form-page.base.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/forms/submit-button/submit-button.component.scss → angularextapp/src/app/features/authentication/submit-button/submit-button.scss} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/features/authentication/utils/auth-helpers.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/features/authentication/utils/auth-validators.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/features/authentication/utils/helpers.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/session-timeout → angularextapp/src/app/features/authentication/utils}/session-time-servlet.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/session-timeout → angularextapp/src/app/features/authentication/utils}/session-timeout.config.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/authentication/session-timeout → angularextapp/src/app/features/authentication/utils}/session-timeout.service.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/date-filter/date-filter.component.html → angularextapp/src/app/features/object-search/filters/date-filter.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/date-range-filter/date-range-filter.component.html → angularextapp/src/app/features/object-search/filters/date-range-filter.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/multi-select-filter/multi-select-filter.component.html → angularextapp/src/app/features/object-search/filters/multi-select-filter.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/numeric-range-filter/numeric-range-filter.component.html → angularextapp/src/app/features/object-search/filters/numeric-range-filter.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/search-filter/search-filter.component.html → angularextapp/src/app/features/object-search/filters/search-filter.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/select-filter/select-filter.component.html → angularextapp/src/app/features/object-search/filters/select-filter.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/filters/text-filter/text-filter.component.html → angularextapp/src/app/features/object-search/filters/text-filter.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/features/object-search/object-search-state.service.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/features/object-search/components/pagination-controls/pagination-controls.component.html → angularextapp/src/app/features/object-search/pagination/pagination.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/features/object-search/utils/debounce.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/features/object-search/utils/field-utils.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/features/object-search/utils/filter-utils.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/features/object-search/utils/index.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/features/object-search/utils/sort-utils.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/account-detail/account-detail-page.component.scss → angularextapp/src/app/pages/account-detail/account-detail-page.scss} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/change-password/change-password-page.component.html → angularextapp/src/app/pages/change-password/change-password-page.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/forgot-password/forgot-password-page.component.html → angularextapp/src/app/pages/forgot-password/forgot-password-page.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/home/home-page.component.html → angularextapp/src/app/pages/home/home-page.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/home/home.component.html → angularextapp/src/app/pages/home/home.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/login/login-page.component.html → angularextapp/src/app/pages/login/login-page.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/not-found/not-found.component.html → angularextapp/src/app/pages/not-found/not-found.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp/src/app/pages/register/register-page.component.html → angularextapp/src/app/pages/register/register-page.html} +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/app/utils/async-data.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/index.html +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/main.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/styles.scss +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/theme.scss +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/src/types/sf-globals.d.ts +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/tsconfig.app.json +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/tsconfig.json +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/tsconfig.spec.json +0 -0
- /package/dist/force-app/main/default/uiBundles/{angularexternalapp → angularextapp}/ui-bundle.json +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<div class="flex items-center gap-2">
|
|
2
|
+
<span class="text-sm text-muted-foreground whitespace-nowrap">{{ label() }}</span>
|
|
3
|
+
<app-select
|
|
4
|
+
class="w-[160px]"
|
|
5
|
+
[options]="options()"
|
|
6
|
+
[value]="selectedValue()"
|
|
7
|
+
(valueChange)="onFieldChange($event)"
|
|
8
|
+
placeholder="Default"
|
|
9
|
+
/>
|
|
10
|
+
@if (sort(); as active) {
|
|
11
|
+
<app-button
|
|
12
|
+
appearance="text"
|
|
13
|
+
size="icon-sm"
|
|
14
|
+
[attr.aria-label]="'Sort ' + (active.direction === 'ASC' ? 'descending' : 'ascending')"
|
|
15
|
+
(clicked)="toggleDirection()"
|
|
16
|
+
>
|
|
17
|
+
@if (active.direction === "ASC") {
|
|
18
|
+
<svg
|
|
19
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
20
|
+
class="h-4 w-4"
|
|
21
|
+
viewBox="0 0 24 24"
|
|
22
|
+
fill="none"
|
|
23
|
+
stroke="currentColor"
|
|
24
|
+
stroke-width="2"
|
|
25
|
+
stroke-linecap="round"
|
|
26
|
+
stroke-linejoin="round"
|
|
27
|
+
aria-hidden="true"
|
|
28
|
+
>
|
|
29
|
+
<path d="m5 12 7-7 7 7" />
|
|
30
|
+
<path d="M12 19V5" />
|
|
31
|
+
</svg>
|
|
32
|
+
} @else {
|
|
33
|
+
<svg
|
|
34
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
35
|
+
class="h-4 w-4"
|
|
36
|
+
viewBox="0 0 24 24"
|
|
37
|
+
fill="none"
|
|
38
|
+
stroke="currentColor"
|
|
39
|
+
stroke-width="2"
|
|
40
|
+
stroke-linecap="round"
|
|
41
|
+
stroke-linejoin="round"
|
|
42
|
+
aria-hidden="true"
|
|
43
|
+
>
|
|
44
|
+
<path d="M12 5v14" />
|
|
45
|
+
<path d="m19 12-7 7-7-7" />
|
|
46
|
+
</svg>
|
|
47
|
+
}
|
|
48
|
+
</app-button>
|
|
49
|
+
}
|
|
50
|
+
</div>
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
* For full license text, see the LICENSE.txt file
|
|
5
5
|
*/
|
|
6
6
|
import { ChangeDetectionStrategy, Component, computed, inject, input } from "@angular/core";
|
|
7
|
-
import { ButtonComponent } from "
|
|
7
|
+
import { ButtonComponent } from "../../../components/ui/button/button";
|
|
8
8
|
import {
|
|
9
9
|
SelectComponent,
|
|
10
10
|
type AppSelectOption,
|
|
11
|
-
} from "
|
|
12
|
-
import { ObjectSearchStateService } from "
|
|
13
|
-
import type { SortFieldConfig, SortState } from "
|
|
11
|
+
} from "../../../components/ui/select/select";
|
|
12
|
+
import { ObjectSearchStateService } from "../object-search-state.service";
|
|
13
|
+
import type { SortFieldConfig, SortState } from "../utils/sort-utils";
|
|
14
14
|
|
|
15
15
|
/** Sentinel value used in the select to represent "no sort". */
|
|
16
16
|
const NONE_VALUE = "__none__";
|
|
@@ -27,7 +27,7 @@ const NONE_VALUE = "__none__";
|
|
|
27
27
|
selector: "app-sort-control",
|
|
28
28
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
29
29
|
imports: [ButtonComponent, SelectComponent],
|
|
30
|
-
templateUrl: "./sort-control.
|
|
30
|
+
templateUrl: "./sort-control.html",
|
|
31
31
|
})
|
|
32
32
|
export class SortControlComponent {
|
|
33
33
|
/** Sortable fields to expose in the select. */
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-6" [attr.aria-busy]="loading()">
|
|
2
|
+
<app-object-breadcrumb
|
|
3
|
+
listPath="/accounts"
|
|
4
|
+
listLabel="Accounts"
|
|
5
|
+
[loading]="loading()"
|
|
6
|
+
[recordName]="recordName()"
|
|
7
|
+
/>
|
|
8
|
+
|
|
9
|
+
@if (loading()) {
|
|
10
|
+
<!-- Loading state -->
|
|
11
|
+
<app-skeleton class="h-8 w-56 mb-4" />
|
|
12
|
+
<app-card>
|
|
13
|
+
<app-card-content class="space-y-8">
|
|
14
|
+
<div class="space-y-4">
|
|
15
|
+
@for (row of skeletonRows; track row) {
|
|
16
|
+
<div class="grid grid-cols-2 gap-x-8 gap-y-4">
|
|
17
|
+
<div>
|
|
18
|
+
<app-skeleton class="h-4 w-24 mb-1.5" />
|
|
19
|
+
<app-skeleton class="h-5 w-40" />
|
|
20
|
+
</div>
|
|
21
|
+
<div>
|
|
22
|
+
<app-skeleton class="h-4 w-24 mb-1.5" />
|
|
23
|
+
<app-skeleton class="h-5 w-40" />
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
}
|
|
27
|
+
</div>
|
|
28
|
+
<app-separator />
|
|
29
|
+
<div class="space-y-4">
|
|
30
|
+
<app-skeleton class="h-7 w-48 py-2" />
|
|
31
|
+
<div class="grid grid-cols-2 gap-x-8 gap-y-4">
|
|
32
|
+
<app-skeleton class="h-12 w-full" />
|
|
33
|
+
<app-skeleton class="h-12 w-full" />
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</app-card-content>
|
|
37
|
+
</app-card>
|
|
38
|
+
} @else if (error()) {
|
|
39
|
+
<!-- Error state -->
|
|
40
|
+
<app-alert
|
|
41
|
+
variant="destructive"
|
|
42
|
+
icon="error"
|
|
43
|
+
title="Failed to load account"
|
|
44
|
+
description="Something went wrong while loading this account. Please try again later."
|
|
45
|
+
/>
|
|
46
|
+
<div class="mt-4 flex gap-3">
|
|
47
|
+
<app-button appearance="outlined" (clicked)="goBack()">← Back</app-button>
|
|
48
|
+
<app-button appearance="outlined" (clicked)="reload()">Retry</app-button>
|
|
49
|
+
</div>
|
|
50
|
+
} @else if (notFound()) {
|
|
51
|
+
<!-- Not found state -->
|
|
52
|
+
<app-card>
|
|
53
|
+
<app-card-content class="flex flex-col items-center justify-center py-16 text-center">
|
|
54
|
+
<svg
|
|
55
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
56
|
+
class="size-12 text-muted-foreground mb-4"
|
|
57
|
+
viewBox="0 0 24 24"
|
|
58
|
+
fill="none"
|
|
59
|
+
stroke="currentColor"
|
|
60
|
+
stroke-width="2"
|
|
61
|
+
stroke-linecap="round"
|
|
62
|
+
stroke-linejoin="round"
|
|
63
|
+
aria-hidden="true"
|
|
64
|
+
>
|
|
65
|
+
<path d="M12 17h.01" />
|
|
66
|
+
<path d="M10.1 9a2.4 2.4 0 0 1 3.9 1.9c0 1.5-2 2-2 3" />
|
|
67
|
+
<path d="M14.5 4.5 20 10l-2 2" />
|
|
68
|
+
<path d="M4 4h9l7 7v9a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z" />
|
|
69
|
+
</svg>
|
|
70
|
+
<h2 class="text-lg font-semibold mb-1">Account not found</h2>
|
|
71
|
+
<p class="text-sm text-muted-foreground mb-6">
|
|
72
|
+
The account you're looking for doesn't exist or may have been deleted.
|
|
73
|
+
</p>
|
|
74
|
+
<app-button appearance="outlined" (clicked)="goBack()">← Go back</app-button>
|
|
75
|
+
</app-card-content>
|
|
76
|
+
</app-card>
|
|
77
|
+
} @else if (account()) {
|
|
78
|
+
<!-- Content -->
|
|
79
|
+
<h1 class="text-2xl font-bold mb-4">Account: {{ title() }}</h1>
|
|
80
|
+
|
|
81
|
+
<app-card>
|
|
82
|
+
<app-card-content class="space-y-8">
|
|
83
|
+
<!-- Top section -->
|
|
84
|
+
<div class="space-y-4">
|
|
85
|
+
@for (row of topRows(); track $index) {
|
|
86
|
+
<div class="grid grid-cols-2 gap-x-8 gap-y-4">
|
|
87
|
+
@for (field of row; track field.label) {
|
|
88
|
+
<div>
|
|
89
|
+
<dt class="text-sm text-muted-foreground">{{ field.label }}</dt>
|
|
90
|
+
<dd class="mt-0.5">
|
|
91
|
+
@if (field.value && field.telephone) {
|
|
92
|
+
<a [href]="'tel:' + field.value" class="underline">{{ field.value }}</a>
|
|
93
|
+
} @else { {{ field.value ?? "—" }} }
|
|
94
|
+
</dd>
|
|
95
|
+
</div>
|
|
96
|
+
}
|
|
97
|
+
</div>
|
|
98
|
+
}
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
<app-separator />
|
|
102
|
+
|
|
103
|
+
<!-- Additional Information -->
|
|
104
|
+
<app-collapsible title="Additional Information" [(open)]="additionalOpen">
|
|
105
|
+
<div class="space-y-4">
|
|
106
|
+
@for (row of additionalRows(); track $index) {
|
|
107
|
+
<div class="grid grid-cols-2 gap-x-8 gap-y-4">
|
|
108
|
+
@for (field of row; track field.label) {
|
|
109
|
+
<div>
|
|
110
|
+
<dt class="text-sm text-muted-foreground">{{ field.label }}</dt>
|
|
111
|
+
<dd class="mt-0.5">{{ field.value ?? "—" }}</dd>
|
|
112
|
+
</div>
|
|
113
|
+
}
|
|
114
|
+
</div>
|
|
115
|
+
}
|
|
116
|
+
<div>
|
|
117
|
+
<dt class="text-sm text-muted-foreground">Description</dt>
|
|
118
|
+
<dd class="mt-0.5">{{ description() ?? "—" }}</dd>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</app-collapsible>
|
|
122
|
+
<div class="space-y-4"></div>
|
|
123
|
+
<app-separator />
|
|
124
|
+
|
|
125
|
+
<!-- Address Information -->
|
|
126
|
+
<app-collapsible title="Address Information" [(open)]="addressOpen">
|
|
127
|
+
<div class="grid grid-cols-2 gap-x-8 gap-y-4">
|
|
128
|
+
<div>
|
|
129
|
+
<dt class="text-sm text-muted-foreground">Billing Address</dt>
|
|
130
|
+
<dd class="mt-0.5">
|
|
131
|
+
@if (billingAddress()) { @for (line of billingAddress(); track $index) {
|
|
132
|
+
<div>{{ line }}</div>
|
|
133
|
+
} } @else { — }
|
|
134
|
+
</dd>
|
|
135
|
+
</div>
|
|
136
|
+
<div>
|
|
137
|
+
<dt class="text-sm text-muted-foreground">Shipping Address</dt>
|
|
138
|
+
<dd class="mt-0.5">
|
|
139
|
+
@if (shippingAddress()) { @for (line of shippingAddress(); track $index) {
|
|
140
|
+
<div>{{ line }}</div>
|
|
141
|
+
} } @else { — }
|
|
142
|
+
</dd>
|
|
143
|
+
</div>
|
|
144
|
+
</div>
|
|
145
|
+
</app-collapsible>
|
|
146
|
+
<div class="space-y-4"></div>
|
|
147
|
+
<app-separator />
|
|
148
|
+
<!-- System Information -->
|
|
149
|
+
<app-collapsible title="System Information" [(open)]="systemOpen">
|
|
150
|
+
<div class="grid grid-cols-2 gap-x-8 gap-y-4">
|
|
151
|
+
<div>
|
|
152
|
+
<dt class="text-sm text-muted-foreground">Created By</dt>
|
|
153
|
+
<dd class="mt-0.5">{{ createdBy() ?? "—" }}</dd>
|
|
154
|
+
</div>
|
|
155
|
+
<div>
|
|
156
|
+
<dt class="text-sm text-muted-foreground">Last Modified By</dt>
|
|
157
|
+
<dd class="mt-0.5">{{ lastModifiedBy() ?? "—" }}</dd>
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
</app-collapsible>
|
|
161
|
+
</app-card-content>
|
|
162
|
+
</app-card>
|
|
163
|
+
}
|
|
164
|
+
</div>
|
|
@@ -10,17 +10,14 @@ import { map } from "rxjs/operators";
|
|
|
10
10
|
// Base-app UI wrappers, inherited (not recreated) by this feature. Post-compose
|
|
11
11
|
// they land at uiBundles/<target>/src/app/components/ui/..., three levels up from this
|
|
12
12
|
// page folder (app/features/account-search/ -> app/components/ui/).
|
|
13
|
-
import { AlertComponent } from "../../components/ui/alert/alert
|
|
14
|
-
import { ButtonComponent } from "../../components/ui/button/button
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
} from "../../components/ui/
|
|
19
|
-
import { CollapsibleComponent } from "../../components/ui/collapsible/collapsible.component";
|
|
20
|
-
import { SeparatorComponent } from "../../components/ui/separator/separator.component";
|
|
21
|
-
import { SkeletonComponent } from "../../components/ui/skeleton/skeleton.component";
|
|
13
|
+
import { AlertComponent } from "../../components/ui/alert/alert";
|
|
14
|
+
import { ButtonComponent } from "../../components/ui/button/button";
|
|
15
|
+
import { CardComponent, CardContentComponent } from "../../components/ui/card/card";
|
|
16
|
+
import { CollapsibleComponent } from "../../components/ui/collapsible/collapsible";
|
|
17
|
+
import { SeparatorComponent } from "../../components/ui/separator/separator";
|
|
18
|
+
import { SkeletonComponent } from "../../components/ui/skeleton/skeleton";
|
|
22
19
|
// Object-search feature building blocks (Waves 1-2), two levels up.
|
|
23
|
-
import { ObjectBreadcrumbComponent } from "../../features/object-search/
|
|
20
|
+
import { ObjectBreadcrumbComponent } from "../../features/object-search/breadcrumb/breadcrumb";
|
|
24
21
|
import { createAsyncData } from "../../utils/async-data";
|
|
25
22
|
import {
|
|
26
23
|
fieldValue,
|
|
@@ -66,8 +63,8 @@ interface Field {
|
|
|
66
63
|
SkeletonComponent,
|
|
67
64
|
ObjectBreadcrumbComponent,
|
|
68
65
|
],
|
|
69
|
-
templateUrl: "./account-detail-page.
|
|
70
|
-
styleUrl: "./account-detail-page.
|
|
66
|
+
templateUrl: "./account-detail-page.html",
|
|
67
|
+
styleUrl: "./account-detail-page.scss",
|
|
71
68
|
})
|
|
72
69
|
export class AccountDetailPageComponent {
|
|
73
70
|
private readonly service = inject(AccountSearchService);
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-6">
|
|
2
|
+
<app-object-breadcrumb listPath="/accounts" listLabel="Accounts" />
|
|
3
|
+
|
|
4
|
+
<h1 class="text-2xl font-bold mb-4">Search Accounts</h1>
|
|
5
|
+
|
|
6
|
+
<div class="flex flex-col lg:flex-row gap-6">
|
|
7
|
+
<!-- Sidebar — Filter Panel -->
|
|
8
|
+
<aside class="w-full lg:w-80 shrink-0">
|
|
9
|
+
<app-collapsible title="Filters" [(open)]="filtersOpen">
|
|
10
|
+
<div class="space-y-1">
|
|
11
|
+
<app-search-filter [config]="searchConfig" />
|
|
12
|
+
<app-text-filter [config]="nameConfig" />
|
|
13
|
+
<app-select-filter [config]="industryConfig()" />
|
|
14
|
+
<app-multi-select-filter [config]="typeConfig()" />
|
|
15
|
+
<app-numeric-range-filter [config]="revenueConfig" />
|
|
16
|
+
<app-date-filter [config]="createdConfig" filterType="datetime" />
|
|
17
|
+
<app-date-range-filter [config]="lastModifiedConfig" filterType="datetimerange" />
|
|
18
|
+
</div>
|
|
19
|
+
</app-collapsible>
|
|
20
|
+
</aside>
|
|
21
|
+
|
|
22
|
+
<!-- Main area — Sort + Results -->
|
|
23
|
+
<div class="flex-1 min-w-0">
|
|
24
|
+
<div class="flex flex-wrap items-center gap-2 mb-4">
|
|
25
|
+
<app-sort-control [sortFields]="sortConfigs" />
|
|
26
|
+
<app-active-filters />
|
|
27
|
+
</div>
|
|
28
|
+
|
|
29
|
+
<div class="min-h-132" [attr.aria-busy]="loading()">
|
|
30
|
+
@if (loading()) {
|
|
31
|
+
<app-skeleton class="h-5 w-30 mb-3" />
|
|
32
|
+
<div class="divide-y">
|
|
33
|
+
@for (row of skeletonRows(); track row) {
|
|
34
|
+
<div class="flex items-center justify-between py-3">
|
|
35
|
+
<div class="space-y-2">
|
|
36
|
+
<app-skeleton class="h-5 w-40" />
|
|
37
|
+
<app-skeleton class="h-4 w-28" />
|
|
38
|
+
</div>
|
|
39
|
+
<div class="space-y-2 flex flex-col items-end">
|
|
40
|
+
<app-skeleton class="h-4 w-24" />
|
|
41
|
+
<app-skeleton class="h-4 w-20" />
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
}
|
|
45
|
+
</div>
|
|
46
|
+
} @else if (error()) {
|
|
47
|
+
<p class="text-sm text-muted-foreground mb-3">0 accounts found</p>
|
|
48
|
+
<app-alert
|
|
49
|
+
variant="destructive"
|
|
50
|
+
icon="error"
|
|
51
|
+
title="Failed to load accounts"
|
|
52
|
+
description="Something went wrong while loading accounts. Please try again later."
|
|
53
|
+
/>
|
|
54
|
+
} @else if (nodes().length > 0) {
|
|
55
|
+
<p class="text-sm text-muted-foreground mb-3">{{ resultCountLabel() }}</p>
|
|
56
|
+
<ul class="divide-y">
|
|
57
|
+
@for (node of nodes(); track node.Id) {
|
|
58
|
+
<li>
|
|
59
|
+
<a
|
|
60
|
+
[routerLink]="['/accounts', node.Id]"
|
|
61
|
+
class="flex items-center justify-between py-3 px-3 -mx-3 rounded-md transition-colors hover:bg-accent"
|
|
62
|
+
>
|
|
63
|
+
<div>
|
|
64
|
+
<span class="font-medium">{{ name(node) }}</span>
|
|
65
|
+
<p class="text-sm text-muted-foreground">{{ secondaryLine(node) }}</p>
|
|
66
|
+
</div>
|
|
67
|
+
<div class="text-right text-sm">
|
|
68
|
+
<p>{{ phone(node) }}</p>
|
|
69
|
+
<p class="text-muted-foreground">{{ ownerName(node) }}</p>
|
|
70
|
+
</div>
|
|
71
|
+
</a>
|
|
72
|
+
</li>
|
|
73
|
+
}
|
|
74
|
+
</ul>
|
|
75
|
+
} @else {
|
|
76
|
+
<div class="flex flex-col items-center justify-center py-16 text-center">
|
|
77
|
+
<svg
|
|
78
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
79
|
+
class="size-12 text-muted-foreground mb-4"
|
|
80
|
+
viewBox="0 0 24 24"
|
|
81
|
+
fill="none"
|
|
82
|
+
stroke="currentColor"
|
|
83
|
+
stroke-width="2"
|
|
84
|
+
stroke-linecap="round"
|
|
85
|
+
stroke-linejoin="round"
|
|
86
|
+
aria-hidden="true"
|
|
87
|
+
>
|
|
88
|
+
<path d="m13.5 8.5-5 5" />
|
|
89
|
+
<path d="m8.5 8.5 5 5" />
|
|
90
|
+
<circle cx="11" cy="11" r="8" />
|
|
91
|
+
<path d="m21 21-4.3-4.3" />
|
|
92
|
+
</svg>
|
|
93
|
+
<h2 class="text-lg font-semibold mb-1">No accounts found</h2>
|
|
94
|
+
<p class="text-sm text-muted-foreground">
|
|
95
|
+
Try adjusting your filters or search criteria.
|
|
96
|
+
</p>
|
|
97
|
+
</div>
|
|
98
|
+
}
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
<!-- Pagination — always visible, disabled while loading or on error -->
|
|
102
|
+
<app-pagination-controls
|
|
103
|
+
[totalCount]="totalCount()"
|
|
104
|
+
[hasNextPage]="hasNextPage()"
|
|
105
|
+
[endCursor]="endCursor()"
|
|
106
|
+
[pageSizeOptions]="pageSizeOptions"
|
|
107
|
+
[disabled]="controlsDisabled()"
|
|
108
|
+
/>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
@@ -8,21 +8,21 @@ import { RouterLink } from "@angular/router";
|
|
|
8
8
|
// Base-app UI wrappers, inherited (not recreated) by this feature. Post-compose
|
|
9
9
|
// they land at uiBundles/<target>/src/app/components/ui/..., three levels up from this
|
|
10
10
|
// page folder (app/features/account-search/ -> app/components/ui/).
|
|
11
|
-
import { AlertComponent } from "../../components/ui/alert/alert
|
|
12
|
-
import { CollapsibleComponent } from "../../components/ui/collapsible/collapsible
|
|
13
|
-
import { SkeletonComponent } from "../../components/ui/skeleton/skeleton
|
|
11
|
+
import { AlertComponent } from "../../components/ui/alert/alert";
|
|
12
|
+
import { CollapsibleComponent } from "../../components/ui/collapsible/collapsible";
|
|
13
|
+
import { SkeletonComponent } from "../../components/ui/skeleton/skeleton";
|
|
14
14
|
// Object-search feature building blocks (Waves 1-2), two levels up.
|
|
15
|
-
import { ObjectBreadcrumbComponent } from "../../features/object-search/
|
|
16
|
-
import { SortControlComponent } from "../../features/object-search/
|
|
17
|
-
import { ActiveFiltersComponent } from "../../features/object-search/
|
|
18
|
-
import { PaginationControlsComponent } from "../../features/object-search/
|
|
19
|
-
import { SearchFilterComponent } from "../../features/object-search/
|
|
20
|
-
import { TextFilterComponent } from "../../features/object-search/
|
|
21
|
-
import { SelectFilterComponent } from "../../features/object-search/
|
|
22
|
-
import { MultiSelectFilterComponent } from "../../features/object-search/
|
|
23
|
-
import { NumericRangeFilterComponent } from "../../features/object-search/
|
|
24
|
-
import { DateFilterComponent } from "../../features/object-search/
|
|
25
|
-
import { DateRangeFilterComponent } from "../../features/object-search/
|
|
15
|
+
import { ObjectBreadcrumbComponent } from "../../features/object-search/breadcrumb/breadcrumb";
|
|
16
|
+
import { SortControlComponent } from "../../features/object-search/sort-control/sort-control";
|
|
17
|
+
import { ActiveFiltersComponent } from "../../features/object-search/filters/active-filters";
|
|
18
|
+
import { PaginationControlsComponent } from "../../features/object-search/pagination/pagination";
|
|
19
|
+
import { SearchFilterComponent } from "../../features/object-search/filters/search-filter";
|
|
20
|
+
import { TextFilterComponent } from "../../features/object-search/filters/text-filter";
|
|
21
|
+
import { SelectFilterComponent } from "../../features/object-search/filters/select-filter";
|
|
22
|
+
import { MultiSelectFilterComponent } from "../../features/object-search/filters/multi-select-filter";
|
|
23
|
+
import { NumericRangeFilterComponent } from "../../features/object-search/filters/numeric-range-filter";
|
|
24
|
+
import { DateFilterComponent } from "../../features/object-search/filters/date-filter";
|
|
25
|
+
import { DateRangeFilterComponent } from "../../features/object-search/filters/date-range-filter";
|
|
26
26
|
import {
|
|
27
27
|
ObjectSearchStateService,
|
|
28
28
|
type PaginationConfig,
|
|
@@ -109,7 +109,7 @@ const ACCOUNT_SORT_CONFIGS: SortFieldConfig[] = [
|
|
|
109
109
|
DateFilterComponent,
|
|
110
110
|
DateRangeFilterComponent,
|
|
111
111
|
],
|
|
112
|
-
templateUrl: "./account-search-page.
|
|
112
|
+
templateUrl: "./account-search-page.html",
|
|
113
113
|
})
|
|
114
114
|
export class AccountSearchPageComponent {
|
|
115
115
|
private readonly service = inject(AccountSearchService);
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
import { ChangeDetectionStrategy, Component, inject, signal } from "@angular/core";
|
|
7
7
|
import { FormBuilder } from "@angular/forms";
|
|
8
8
|
import { DataClient } from "../../api/data-client.service";
|
|
9
|
-
import { AuthFormComponent } from "../../features/authentication/
|
|
10
|
-
import { ReactiveFormPageBase } from "../../features/authentication/
|
|
11
|
-
import { FieldComponent } from "../../components/ui/field/field
|
|
12
|
-
import { InputComponent } from "../../components/ui/input/input
|
|
9
|
+
import { AuthFormComponent } from "../../features/authentication/auth-form/auth-form";
|
|
10
|
+
import { ReactiveFormPageBase } from "../../features/authentication/reactive-form-page.base";
|
|
11
|
+
import { FieldComponent } from "../../components/ui/field/field";
|
|
12
|
+
import { InputComponent } from "../../components/ui/input/input";
|
|
13
13
|
import {
|
|
14
14
|
API_ROUTES,
|
|
15
15
|
AUTH_PLACEHOLDERS,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
selector: "app-change-password-page",
|
|
33
33
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
34
34
|
imports: [AuthFormComponent, FieldComponent, InputComponent],
|
|
35
|
-
templateUrl: "./change-password-page.
|
|
35
|
+
templateUrl: "./change-password-page.html",
|
|
36
36
|
})
|
|
37
37
|
export class ChangePasswordPageComponent extends ReactiveFormPageBase {
|
|
38
38
|
private readonly fb = inject(FormBuilder);
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
import { ChangeDetectionStrategy, Component, inject, signal } from "@angular/core";
|
|
7
7
|
import { FormBuilder } from "@angular/forms";
|
|
8
8
|
import { DataClient } from "../../api/data-client.service";
|
|
9
|
-
import { AuthFormComponent } from "../../features/authentication/
|
|
10
|
-
import { ReactiveFormPageBase } from "../../features/authentication/
|
|
11
|
-
import { FieldComponent } from "../../components/ui/field/field
|
|
12
|
-
import { InputComponent } from "../../components/ui/input/input
|
|
9
|
+
import { AuthFormComponent } from "../../features/authentication/auth-form/auth-form";
|
|
10
|
+
import { ReactiveFormPageBase } from "../../features/authentication/reactive-form-page.base";
|
|
11
|
+
import { FieldComponent } from "../../components/ui/field/field";
|
|
12
|
+
import { InputComponent } from "../../components/ui/input/input";
|
|
13
13
|
import {
|
|
14
14
|
API_ROUTES,
|
|
15
15
|
AUTH_PLACEHOLDERS,
|
|
@@ -43,7 +43,7 @@ function usernameValidator(control: AbstractControl): ValidationErrors | null {
|
|
|
43
43
|
selector: "app-forgot-password-page",
|
|
44
44
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
45
45
|
imports: [AuthFormComponent, FieldComponent, InputComponent],
|
|
46
|
-
templateUrl: "./forgot-password-page.
|
|
46
|
+
templateUrl: "./forgot-password-page.html",
|
|
47
47
|
})
|
|
48
48
|
export class ForgotPasswordPageComponent extends ReactiveFormPageBase {
|
|
49
49
|
private readonly fb = inject(FormBuilder);
|
|
@@ -8,8 +8,8 @@ import { Router } from "@angular/router";
|
|
|
8
8
|
// Base-app UI wrappers, inherited (not recreated) by this feature. Post-compose
|
|
9
9
|
// they land at uiBundles/<target>/src/app/components/ui/{button,input}/..., three levels
|
|
10
10
|
// up from this page folder (app/features/account-search/ -> app/components/ui/).
|
|
11
|
-
import { ButtonComponent } from "../../components/ui/button/button
|
|
12
|
-
import { InputComponent } from "../../components/ui/input/input
|
|
11
|
+
import { ButtonComponent } from "../../components/ui/button/button";
|
|
12
|
+
import { InputComponent } from "../../components/ui/input/input";
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Account-search landing page. Mirrors the React `Home` page: a single search
|
|
@@ -24,7 +24,7 @@ import { InputComponent } from "../../components/ui/input/input.component";
|
|
|
24
24
|
selector: "app-home-page",
|
|
25
25
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
26
26
|
imports: [ButtonComponent, InputComponent],
|
|
27
|
-
templateUrl: "./home-page.
|
|
27
|
+
templateUrl: "./home-page.html",
|
|
28
28
|
})
|
|
29
29
|
export class HomePageComponent {
|
|
30
30
|
private readonly router = inject(Router);
|
|
@@ -8,6 +8,6 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
|
8
8
|
@Component({
|
|
9
9
|
selector: 'app-home',
|
|
10
10
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11
|
-
templateUrl: './home.
|
|
11
|
+
templateUrl: './home.html',
|
|
12
12
|
})
|
|
13
13
|
export class HomeComponent {}
|
|
@@ -7,10 +7,10 @@ import { ChangeDetectionStrategy, Component, inject, signal } from "@angular/cor
|
|
|
7
7
|
import { FormBuilder } from "@angular/forms";
|
|
8
8
|
import { ActivatedRoute, Router, RouterLink } from "@angular/router";
|
|
9
9
|
import { DataClient } from "../../api/data-client.service";
|
|
10
|
-
import { AuthFormComponent } from "../../features/authentication/
|
|
11
|
-
import { ReactiveFormPageBase } from "../../features/authentication/
|
|
12
|
-
import { FieldComponent } from "../../components/ui/field/field
|
|
13
|
-
import { InputComponent } from "../../components/ui/input/input
|
|
10
|
+
import { AuthFormComponent } from "../../features/authentication/auth-form/auth-form";
|
|
11
|
+
import { ReactiveFormPageBase } from "../../features/authentication/reactive-form-page.base";
|
|
12
|
+
import { FieldComponent } from "../../components/ui/field/field";
|
|
13
|
+
import { InputComponent } from "../../components/ui/input/input";
|
|
14
14
|
import {
|
|
15
15
|
API_ROUTES,
|
|
16
16
|
AUTH_PLACEHOLDERS,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
selector: "app-login-page",
|
|
34
34
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
35
35
|
imports: [RouterLink, AuthFormComponent, FieldComponent, InputComponent],
|
|
36
|
-
templateUrl: "./login-page.
|
|
36
|
+
templateUrl: "./login-page.html",
|
|
37
37
|
})
|
|
38
38
|
export class LoginPageComponent extends ReactiveFormPageBase {
|
|
39
39
|
private readonly fb = inject(FormBuilder);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TestBed } from '@angular/core/testing';
|
|
2
2
|
import { provideRouter } from '@angular/router';
|
|
3
|
-
import { NotFoundComponent } from './not-found
|
|
3
|
+
import { NotFoundComponent } from './not-found';
|
|
4
4
|
|
|
5
5
|
describe('NotFoundComponent', () => {
|
|
6
6
|
beforeEach(async () => {
|
|
@@ -10,6 +10,6 @@ import { RouterLink } from '@angular/router';
|
|
|
10
10
|
selector: 'app-not-found',
|
|
11
11
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
12
12
|
imports: [RouterLink],
|
|
13
|
-
templateUrl: './not-found.
|
|
13
|
+
templateUrl: './not-found.html',
|
|
14
14
|
})
|
|
15
15
|
export class NotFoundComponent {}
|