@hermes-ui/angular 0.1.4
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/README.md +52 -0
- package/accordion/_accordion.clarity.scss +81 -0
- package/accordion/_properties.accordion.scss +45 -0
- package/accordion/_variables.accordion.scss +91 -0
- package/addons/a11y/README.md +157 -0
- package/addons/a11y/forms/required-field-legend.component.scss +17 -0
- package/addons/card-container/card/appfx-card.component.scss +137 -0
- package/addons/card-container/container/appfx-card-container.component.scss +17 -0
- package/addons/card-container/settings/appfx-card-container-settings.component.scss +62 -0
- package/addons/certificate-viewer/certificate-viewer/certificate-viewer.component.scss +69 -0
- package/addons/certificate-viewer/certificate-viewer-details/certificate-viewer-details.component.scss +49 -0
- package/addons/certificate-viewer/certificate-viewer-general/certificate-viewer-general.component.scss +38 -0
- package/addons/datagrid/README.md +289 -0
- package/addons/datagrid/addons/action-bar/datagrid-action-bar.component.scss +81 -0
- package/addons/datagrid/addons/column-toggle/datagrid-column-toggle.component.scss +99 -0
- package/addons/datagrid/addons/export/export-datagrid.component.scss +9 -0
- package/addons/datagrid/datagrid.component.scss +339 -0
- package/addons/datagrid-filters/README.md +223 -0
- package/addons/datagrid-filters/advanced-filters/date-time-filter.component.scss +10 -0
- package/addons/datagrid-filters/advanced-filters/enum-filter.component.scss +40 -0
- package/addons/datagrid-filters/advanced-filters/users-filter.component.scss +11 -0
- package/addons/datagrid-filters/common-styles.scss +98 -0
- package/addons/datagrid-filters/composite-filters.component.scss +26 -0
- package/addons/datagrid-filters/datagrid-filters.component.scss +22 -0
- package/addons/datagrid-filters/manage-filters/manage-filter.component.scss +42 -0
- package/addons/dialog/README.md +112 -0
- package/addons/dialog/multi-page-dialog.a11y.scss +203 -0
- package/addons/dialog/multi-page-dialog.component.scss +102 -0
- package/addons/dialog/toggle-component/toggle.component.scss +15 -0
- package/addons/drag-and-drop/README.md +48 -0
- package/addons/menu/menu.component.scss +120 -0
- package/addons/property-view/components/property-view-category.component.scss +38 -0
- package/addons/property-view/components/property-view-message.component.scss +48 -0
- package/addons/property-view/components/property-view-property.component.scss +122 -0
- package/addons/property-view/components/property-view-section.component.scss +59 -0
- package/addons/property-view/components/property-view.component.scss +23 -0
- package/addons/stepper/stepper.component.scss +53 -0
- package/addons/tabs/tab-links/tab-links.component.scss +61 -0
- package/addons/tabs/tabs.a11y.scss +26 -0
- package/addons/tabs/tabs.component.scss +95 -0
- package/addons/theme-builder/README.md +70 -0
- package/addons/theme-builder/theme-builder.component.scss +194 -0
- package/addons/translate/README.md +124 -0
- package/addons/var/debug/workflow-model-monitor.component.scss +50 -0
- package/addons/var/error/error.component.scss +38 -0
- package/addons/var/spinner/spinner.component.scss +33 -0
- package/addons/wizard/summary/summary.component.scss +22 -0
- package/addons/wizard/wizard.component.scss +251 -0
- package/button/_buttons.clarity.scss +388 -0
- package/button/_mixins.buttons.scss +241 -0
- package/button/_properties.buttons.scss +387 -0
- package/button/_properties.toggles.scss +35 -0
- package/button/_variables.buttons.scss +905 -0
- package/button/_variables.toggles.scss +41 -0
- package/button/button-group/_button-group.clarity.scss +202 -0
- package/collapsible-panel/_mixins.collapsible-panel.scss +189 -0
- package/collapsible-panel/_properties.collapsible-panel.scss +42 -0
- package/collapsible-panel/_variables.collapsible-panel.scss +40 -0
- package/data/_mixins.tables.scss +114 -0
- package/data/_properties.tables.scss +77 -0
- package/data/_tables.clarity.scss +120 -0
- package/data/_variables.tables.scss +42 -0
- package/data/datagrid/_datagrid.clarity.scss +1871 -0
- package/data/datagrid/_mixins.datagrid.scss +102 -0
- package/data/datagrid/_properties.datagrid.scss +98 -0
- package/data/datagrid/_variables.datagrid.scss +98 -0
- package/data/stack-view/_properties.stack-view.scss +50 -0
- package/data/stack-view/_stack-view.clarity.scss +267 -0
- package/data/stack-view/_variables.stack-view.scss +32 -0
- package/data/tree-view/_properties.tree-view.scss +41 -0
- package/data/tree-view/_tree-view.clarity.scss +281 -0
- package/data/tree-view/_variables.tree-view.scss +51 -0
- package/emphasis/alert/_alert.clarity.scss +467 -0
- package/emphasis/alert/_mixins.alert.scss +96 -0
- package/emphasis/alert/_properties.alert.scss +183 -0
- package/emphasis/alert/_variables.alert.scss +502 -0
- package/emphasis/badge/_badges.clarity.scss +61 -0
- package/emphasis/badge/_mixins.bades.scss +34 -0
- package/emphasis/badge/_properties.badges.scss +82 -0
- package/emphasis/badge/_variables.badges.scss +160 -0
- package/emphasis/label/_labels.clarity.scss +179 -0
- package/emphasis/label/_mixins.label.scss +77 -0
- package/emphasis/label/_properties.label.scss +105 -0
- package/emphasis/label/_variables.label.scss +181 -0
- package/fesm2022/hermes-ui-angular-accordion.mjs +355 -0
- package/fesm2022/hermes-ui-angular-accordion.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-a11y.mjs +544 -0
- package/fesm2022/hermes-ui-angular-addons-a11y.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-card-container.mjs +1082 -0
- package/fesm2022/hermes-ui-angular-addons-card-container.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs +2520 -0
- package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs +2818 -0
- package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-datagrid.mjs +3131 -0
- package/fesm2022/hermes-ui-angular-addons-datagrid.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-dialog.mjs +386 -0
- package/fesm2022/hermes-ui-angular-addons-dialog.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-drag-and-drop.mjs +78 -0
- package/fesm2022/hermes-ui-angular-addons-drag-and-drop.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-menu.mjs +559 -0
- package/fesm2022/hermes-ui-angular-addons-menu.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-property-view.mjs +1142 -0
- package/fesm2022/hermes-ui-angular-addons-property-view.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-stepper.mjs +716 -0
- package/fesm2022/hermes-ui-angular-addons-stepper.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-tabs.mjs +539 -0
- package/fesm2022/hermes-ui-angular-addons-tabs.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-testing.mjs +2010 -0
- package/fesm2022/hermes-ui-angular-addons-testing.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs +922 -0
- package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-translate.mjs +295 -0
- package/fesm2022/hermes-ui-angular-addons-translate.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-var.mjs +2028 -0
- package/fesm2022/hermes-ui-angular-addons-var.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-wizard.mjs +610 -0
- package/fesm2022/hermes-ui-angular-addons-wizard.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-workflow-strings.mjs +121 -0
- package/fesm2022/hermes-ui-angular-addons-workflow-strings.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-addons-workflow.mjs +88 -0
- package/fesm2022/hermes-ui-angular-addons-workflow.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-button.mjs +719 -0
- package/fesm2022/hermes-ui-angular-button.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-collapsible-panel.mjs +201 -0
- package/fesm2022/hermes-ui-angular-collapsible-panel.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-data-datagrid.mjs +8045 -0
- package/fesm2022/hermes-ui-angular-data-datagrid.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-data-stack-view.mjs +442 -0
- package/fesm2022/hermes-ui-angular-data-stack-view.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-data-tree-view.mjs +1106 -0
- package/fesm2022/hermes-ui-angular-data-tree-view.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-data.mjs +40 -0
- package/fesm2022/hermes-ui-angular-data.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-emphasis-alert.mjs +624 -0
- package/fesm2022/hermes-ui-angular-emphasis-alert.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-emphasis-badge.mjs +69 -0
- package/fesm2022/hermes-ui-angular-emphasis-badge.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-emphasis-common.mjs +25 -0
- package/fesm2022/hermes-ui-angular-emphasis-common.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-emphasis-label.mjs +105 -0
- package/fesm2022/hermes-ui-angular-emphasis-label.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-emphasis.mjs +41 -0
- package/fesm2022/hermes-ui-angular-emphasis.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-checkbox.mjs +279 -0
- package/fesm2022/hermes-ui-angular-forms-checkbox.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-combobox.mjs +1775 -0
- package/fesm2022/hermes-ui-angular-forms-combobox.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-common.mjs +1251 -0
- package/fesm2022/hermes-ui-angular-forms-common.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-datalist.mjs +263 -0
- package/fesm2022/hermes-ui-angular-forms-datalist.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-datepicker.mjs +3274 -0
- package/fesm2022/hermes-ui-angular-forms-datepicker.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-file-input.mjs +826 -0
- package/fesm2022/hermes-ui-angular-forms-file-input.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-input.mjs +153 -0
- package/fesm2022/hermes-ui-angular-forms-input.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-native-select.mjs +153 -0
- package/fesm2022/hermes-ui-angular-forms-native-select.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-number-input.mjs +236 -0
- package/fesm2022/hermes-ui-angular-forms-number-input.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-password.mjs +233 -0
- package/fesm2022/hermes-ui-angular-forms-password.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-radio.mjs +224 -0
- package/fesm2022/hermes-ui-angular-forms-radio.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-range.mjs +186 -0
- package/fesm2022/hermes-ui-angular-forms-range.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-select.mjs +606 -0
- package/fesm2022/hermes-ui-angular-forms-select.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms-textarea.mjs +136 -0
- package/fesm2022/hermes-ui-angular-forms-textarea.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-forms.mjs +105 -0
- package/fesm2022/hermes-ui-angular-forms.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-icon.mjs +7413 -0
- package/fesm2022/hermes-ui-angular-icon.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-layout-breadcrumbs.mjs +120 -0
- package/fesm2022/hermes-ui-angular-layout-breadcrumbs.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-layout-main-container.mjs +100 -0
- package/fesm2022/hermes-ui-angular-layout-main-container.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-layout-nav.mjs +582 -0
- package/fesm2022/hermes-ui-angular-layout-nav.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-layout-tabs.mjs +807 -0
- package/fesm2022/hermes-ui-angular-layout-tabs.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs +507 -0
- package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-layout.mjs +44 -0
- package/fesm2022/hermes-ui-angular-layout.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-modal.mjs +619 -0
- package/fesm2022/hermes-ui-angular-modal.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-popover-common.mjs +1371 -0
- package/fesm2022/hermes-ui-angular-popover-common.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-popover-dropdown.mjs +492 -0
- package/fesm2022/hermes-ui-angular-popover-dropdown.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-popover-signpost.mjs +494 -0
- package/fesm2022/hermes-ui-angular-popover-signpost.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-popover-tooltip.mjs +293 -0
- package/fesm2022/hermes-ui-angular-popover-tooltip.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-popover.mjs +41 -0
- package/fesm2022/hermes-ui-angular-popover.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-progress-progress-bars.mjs +217 -0
- package/fesm2022/hermes-ui-angular-progress-progress-bars.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-progress-spinner.mjs +132 -0
- package/fesm2022/hermes-ui-angular-progress-spinner.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-stepper.mjs +694 -0
- package/fesm2022/hermes-ui-angular-stepper.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-timeline.mjs +316 -0
- package/fesm2022/hermes-ui-angular-timeline.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-toast.mjs +373 -0
- package/fesm2022/hermes-ui-angular-toast.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-utils-conditional.mjs +351 -0
- package/fesm2022/hermes-ui-angular-utils-conditional.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-utils-loading.mjs +107 -0
- package/fesm2022/hermes-ui-angular-utils-loading.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-utils.mjs +2086 -0
- package/fesm2022/hermes-ui-angular-utils.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular-wizard.mjs +3074 -0
- package/fesm2022/hermes-ui-angular-wizard.mjs.map +1 -0
- package/fesm2022/hermes-ui-angular.mjs +130 -0
- package/fesm2022/hermes-ui-angular.mjs.map +1 -0
- package/forms/combobox/_combobox.clarity.scss +330 -0
- package/forms/combobox/_properties.combobox.scss +46 -0
- package/forms/combobox/_variables.combobox.scss +32 -0
- package/forms/datepicker/_datepicker.clarity.scss +259 -0
- package/forms/datepicker/_mixins.datepicker.scss +89 -0
- package/forms/datepicker/_properties.datepicker.scss +46 -0
- package/forms/datepicker/_variables.datepicker.scss +74 -0
- package/forms/styles/_checkbox.clarity.scss +193 -0
- package/forms/styles/_containers.clarity.scss +230 -0
- package/forms/styles/_datalist.clarity.scss +47 -0
- package/forms/styles/_file-input.clarity.scss +134 -0
- package/forms/styles/_file.clarity.scss +52 -0
- package/forms/styles/_form.clarity.scss +87 -0
- package/forms/styles/_input-group.clarity.scss +126 -0
- package/forms/styles/_input.clarity.scss +83 -0
- package/forms/styles/_mixins.forms.scss +193 -0
- package/forms/styles/_native-select.clarity.scss +178 -0
- package/forms/styles/_number-input.clarity.scss +58 -0
- package/forms/styles/_password.clarity.scss +26 -0
- package/forms/styles/_properties.forms.scss +180 -0
- package/forms/styles/_radio.clarity.scss +120 -0
- package/forms/styles/_range.clarity.scss +124 -0
- package/forms/styles/_select.clarity.scss +158 -0
- package/forms/styles/_textarea.clarity.scss +71 -0
- package/forms/styles/_toggles.clarity.scss +209 -0
- package/forms/styles/_variables.forms.scss +156 -0
- package/hermes-ui.scss +7 -0
- package/icon/icon.component.scss +247 -0
- package/image/_icons.clarity.scss +101 -0
- package/image/_images.clarity.scss +42 -0
- package/image/_mixins.images.scss +11 -0
- package/layout/_card.clarity.scss +318 -0
- package/layout/_login.clarity.scss +240 -0
- package/layout/_properties.card.scss +39 -0
- package/layout/_properties.login.scss +32 -0
- package/layout/_variables.card.scss +24 -0
- package/layout/_variables.login.scss +22 -0
- package/layout/breadcrumbs/_breadcrumbs.clarity.scss +60 -0
- package/layout/breadcrumbs/_properties.breadcrumbs.scss +18 -0
- package/layout/breadcrumbs/_variables.breadcrumbs.scss +11 -0
- package/layout/grid/_grid.scss +23 -0
- package/layout/grid/grid/_grid.scss +39 -0
- package/layout/grid/mixins/_breakpoint.scss +83 -0
- package/layout/grid/mixins/_clearfix.scss +13 -0
- package/layout/grid/mixins/_grid-framework.scss +91 -0
- package/layout/grid/mixins/_grid.scss +39 -0
- package/layout/grid/utilities/_align.scss +30 -0
- package/layout/grid/utilities/_clearfix.scss +12 -0
- package/layout/grid/utilities/_display.scss +18 -0
- package/layout/grid/utilities/_flex.scss +222 -0
- package/layout/grid/utilities/_float.scss +26 -0
- package/layout/grid/utilities/_visibility.scss +60 -0
- package/layout/main-container/_layout.clarity.scss +87 -0
- package/layout/main-container/_properties.header.scss +55 -0
- package/layout/main-container/_variables.header.scss +32 -0
- package/layout/nav/_header.clarity.scss +40 -0
- package/layout/nav/_links.clarity.scss +84 -0
- package/layout/nav/_mixins.header.scss +332 -0
- package/layout/nav/_mixins.responsive-nav.scss +75 -0
- package/layout/nav/_nav.clarity.scss +100 -0
- package/layout/nav/_properties.nav.scss +27 -0
- package/layout/nav/_properties.responsive-nav.scss +23 -0
- package/layout/nav/_properties.subnav.scss +19 -0
- package/layout/nav/_responsive-nav.clarity.scss +490 -0
- package/layout/nav/_subnav.clarity.scss +48 -0
- package/layout/nav/_variables.nav.scss +13 -0
- package/layout/nav/_variables.responsive-nav.scss +28 -0
- package/layout/nav/_variables.subnav.scss +21 -0
- package/layout/tabs/_mixins.tabs.scss +41 -0
- package/layout/tabs/_properties.tabs.scss +25 -0
- package/layout/tabs/_tabs.clarity.scss +110 -0
- package/layout/tabs/_variables.tabs.scss +17 -0
- package/layout/vertical-nav/_mixins.vertical-nav.scss +52 -0
- package/layout/vertical-nav/_properties.vertical-nav.scss +73 -0
- package/layout/vertical-nav/_variables.vertical-nav.scss +52 -0
- package/layout/vertical-nav/_vertical-nav.clarity.scss +469 -0
- package/main.scss +14 -0
- package/modal/_modal.clarity.scss +379 -0
- package/modal/_properties.modal.scss +57 -0
- package/modal/_variables.modal.scss +41 -0
- package/package.json +325 -0
- package/popover/common/README.md +112 -0
- package/popover/common/_popover.clarity.scss +28 -0
- package/popover/dropdown/_dropdown.clarity.scss +326 -0
- package/popover/dropdown/_menu-mixins.clarity.scss +132 -0
- package/popover/dropdown/_properties.dropdown.scss +50 -0
- package/popover/dropdown/_variables.dropdown.scss +36 -0
- package/popover/signpost/_properties.signpost.scss +34 -0
- package/popover/signpost/_signposts.clarity.scss +414 -0
- package/popover/signpost/_variables.signpost.scss +21 -0
- package/popover/tooltip/_mixins.tooltip.scss +186 -0
- package/popover/tooltip/_properties.tooltip.scss +28 -0
- package/popover/tooltip/_tooltips.clarity.scss +122 -0
- package/popover/tooltip/_variables.tooltip.scss +20 -0
- package/progress/progress-bars/_progress-bars.clarity.scss +616 -0
- package/progress/progress-bars/_properties.progress-bars.scss +24 -0
- package/progress/progress-bars/_variables.progress-bars.scss +15 -0
- package/progress/progress-bars/utils/_mixins.clarity.scss +18 -0
- package/progress/spinner/_mixins.spinner.scss +30 -0
- package/progress/spinner/_properties.spinner.scss +37 -0
- package/progress/spinner/_spinner.clarity.scss +148 -0
- package/progress/spinner/_variables.spinner.scss +25 -0
- package/schematics/collection.json +14 -0
- package/stepper/_properties.stepper.scss +29 -0
- package/stepper/_stepper.clarity.scss +184 -0
- package/stepper/_variables.stepper.scss +13 -0
- package/styles/_a11y.scss +14 -0
- package/styles/_close.clarity.scss +60 -0
- package/styles/_components.clarity.scss +189 -0
- package/styles/_mixins.scss +460 -0
- package/styles/_normalize.scss +292 -0
- package/styles/_reboot.clarity.scss +374 -0
- package/styles/_variables.clarity.scss +139 -0
- package/styles/core/base/base.element.scss +97 -0
- package/styles/core/global.scss +12 -0
- package/styles/core/layout/_alignments.scss +18 -0
- package/styles/core/layout/_container.scss +29 -0
- package/styles/core/layout/_display.scss +58 -0
- package/styles/core/layout/_optimize.scss +60 -0
- package/styles/core/layout/_shadow-dom.scss +47 -0
- package/styles/core/layout/_spacing.scss +31 -0
- package/styles/core/layout/_type-grid.scss +66 -0
- package/styles/core/layout/_type-horizontal.scss +33 -0
- package/styles/core/layout/_type-vertical.scss +26 -0
- package/styles/core/layout/mixins/_mixins.alignment.scss +35 -0
- package/styles/core/layout/mixins/_mixins.display.scss +23 -0
- package/styles/core/layout/mixins/_mixins.grid.scss +105 -0
- package/styles/core/layout/mixins/_mixins.scss +106 -0
- package/styles/core/layout/mixins/_mixins.shadow-dom.scss +106 -0
- package/styles/core/layout/mixins/_mixins.type-horizontal.scss +113 -0
- package/styles/core/layout/mixins/_mixins.type-vertical.scss +108 -0
- package/styles/core/module.layout.scss +22 -0
- package/styles/core/module.reset.scss +48 -0
- package/styles/core/module.typography.scss +9 -0
- package/styles/core/theme.dark.scss +298 -0
- package/styles/core/theme.high-contrast.scss +42 -0
- package/styles/core/theme.low-motion.scss +20 -0
- package/styles/core/tokens/_alias-interaction.scss +74 -0
- package/styles/core/tokens/_alias-object-background.scss +29 -0
- package/styles/core/tokens/_alias-object-border.scss +21 -0
- package/styles/core/tokens/_alias-object-container.scss +20 -0
- package/styles/core/tokens/_alias-object-opacity.scss +15 -0
- package/styles/core/tokens/_alias-object-shadow.scss +17 -0
- package/styles/core/tokens/_alias-primary.scss +21 -0
- package/styles/core/tokens/_alias-status.scss +40 -0
- package/styles/core/tokens/_alias-typography.scss +107 -0
- package/styles/core/tokens/_alias-utility.scss +42 -0
- package/styles/core/tokens/_alias-viz-colors.scss +170 -0
- package/styles/core/tokens/_global-animation.scss +32 -0
- package/styles/core/tokens/_global-colors.scss +249 -0
- package/styles/core/tokens/_global-space.scss +52 -0
- package/styles/core/tokens/_internal-scale.scss +14 -0
- package/styles/core/tokens/_properties.tokens.scss +22 -0
- package/styles/core/tokens/_variables.tokens.scss +787 -0
- package/styles/core/typography/_legacy-typography.scss +328 -0
- package/styles/core/typography/_mixins.typography.scss +18 -0
- package/styles/core/typography/_typography.scss +328 -0
- package/styles/variables/_properties.density.scss +225 -0
- package/styles/variables/_properties.global.scss +51 -0
- package/styles/variables/_properties.layout.scss +21 -0
- package/styles/variables/_properties.scss +11 -0
- package/styles/variables/_properties.typography.scss +164 -0
- package/styles/variables/_variables.density.scss +116 -0
- package/styles/variables/_variables.global.scss +87 -0
- package/styles/variables/_variables.layout.scss +37 -0
- package/styles/variables/_variables.scss +11 -0
- package/styles/variables/_variables.typography.scss +156 -0
- package/timeline/_properties.timeline.scss +38 -0
- package/timeline/_timeline.clarity.scss +172 -0
- package/timeline/_variables.timeline.scss +29 -0
- package/toast/README.md +65 -0
- package/toast/_properties.toast.scss +56 -0
- package/toast/_toast.clarity.scss +190 -0
- package/toast/_variables.toast.scss +33 -0
- package/types/hermes-ui-angular-accordion.d.ts +101 -0
- package/types/hermes-ui-angular-accordion.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-a11y.d.ts +187 -0
- package/types/hermes-ui-angular-addons-a11y.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-card-container.d.ts +482 -0
- package/types/hermes-ui-angular-addons-card-container.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-certificate-viewer.d.ts +404 -0
- package/types/hermes-ui-angular-addons-certificate-viewer.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-datagrid-filters.d.ts +911 -0
- package/types/hermes-ui-angular-addons-datagrid-filters.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-datagrid.d.ts +1529 -0
- package/types/hermes-ui-angular-addons-datagrid.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-dialog.d.ts +233 -0
- package/types/hermes-ui-angular-addons-dialog.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-drag-and-drop.d.ts +35 -0
- package/types/hermes-ui-angular-addons-drag-and-drop.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-menu.d.ts +197 -0
- package/types/hermes-ui-angular-addons-menu.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-property-view.d.ts +387 -0
- package/types/hermes-ui-angular-addons-property-view.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-stepper.d.ts +298 -0
- package/types/hermes-ui-angular-addons-stepper.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-tabs.d.ts +173 -0
- package/types/hermes-ui-angular-addons-tabs.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-testing.d.ts +592 -0
- package/types/hermes-ui-angular-addons-testing.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-theme-builder.d.ts +200 -0
- package/types/hermes-ui-angular-addons-theme-builder.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-translate.d.ts +149 -0
- package/types/hermes-ui-angular-addons-translate.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-var.d.ts +923 -0
- package/types/hermes-ui-angular-addons-var.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-wizard.d.ts +241 -0
- package/types/hermes-ui-angular-addons-wizard.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-workflow-strings.d.ts +124 -0
- package/types/hermes-ui-angular-addons-workflow-strings.d.ts.map +1 -0
- package/types/hermes-ui-angular-addons-workflow.d.ts +15 -0
- package/types/hermes-ui-angular-addons-workflow.d.ts.map +1 -0
- package/types/hermes-ui-angular-button.d.ts +170 -0
- package/types/hermes-ui-angular-button.d.ts.map +1 -0
- package/types/hermes-ui-angular-collapsible-panel.d.ts +74 -0
- package/types/hermes-ui-angular-collapsible-panel.d.ts.map +1 -0
- package/types/hermes-ui-angular-data-datagrid.d.ts +1938 -0
- package/types/hermes-ui-angular-data-datagrid.d.ts.map +1 -0
- package/types/hermes-ui-angular-data-stack-view.d.ts +88 -0
- package/types/hermes-ui-angular-data-stack-view.d.ts.map +1 -0
- package/types/hermes-ui-angular-data-tree-view.d.ts +230 -0
- package/types/hermes-ui-angular-data-tree-view.d.ts.map +1 -0
- package/types/hermes-ui-angular-data.d.ts +16 -0
- package/types/hermes-ui-angular-data.d.ts.map +1 -0
- package/types/hermes-ui-angular-emphasis-alert.d.ts +176 -0
- package/types/hermes-ui-angular-emphasis-alert.d.ts.map +1 -0
- package/types/hermes-ui-angular-emphasis-badge.d.ts +26 -0
- package/types/hermes-ui-angular-emphasis-badge.d.ts.map +1 -0
- package/types/hermes-ui-angular-emphasis-common.d.ts +7 -0
- package/types/hermes-ui-angular-emphasis-common.d.ts.map +1 -0
- package/types/hermes-ui-angular-emphasis-label.d.ts +30 -0
- package/types/hermes-ui-angular-emphasis-label.d.ts.map +1 -0
- package/types/hermes-ui-angular-emphasis.d.ts +16 -0
- package/types/hermes-ui-angular-emphasis.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-checkbox.d.ts +73 -0
- package/types/hermes-ui-angular-forms-checkbox.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-combobox.d.ts +354 -0
- package/types/hermes-ui-angular-forms-combobox.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-common.d.ts +340 -0
- package/types/hermes-ui-angular-forms-common.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-datalist.d.ts +60 -0
- package/types/hermes-ui-angular-forms-datalist.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-datepicker.d.ts +987 -0
- package/types/hermes-ui-angular-forms-datepicker.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-file-input.d.ts +194 -0
- package/types/hermes-ui-angular-forms-file-input.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-input.d.ts +30 -0
- package/types/hermes-ui-angular-forms-input.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-native-select.d.ts +37 -0
- package/types/hermes-ui-angular-forms-native-select.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-number-input.d.ts +44 -0
- package/types/hermes-ui-angular-forms-number-input.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-password.d.ts +53 -0
- package/types/hermes-ui-angular-forms-password.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-radio.d.ts +50 -0
- package/types/hermes-ui-angular-forms-radio.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-range.d.ts +38 -0
- package/types/hermes-ui-angular-forms-range.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-select.d.ts +211 -0
- package/types/hermes-ui-angular-forms-select.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms-textarea.d.ts +30 -0
- package/types/hermes-ui-angular-forms-textarea.d.ts.map +1 -0
- package/types/hermes-ui-angular-forms.d.ts +39 -0
- package/types/hermes-ui-angular-forms.d.ts.map +1 -0
- package/types/hermes-ui-angular-icon.d.ts +1504 -0
- package/types/hermes-ui-angular-icon.d.ts.map +1 -0
- package/types/hermes-ui-angular-layout-breadcrumbs.d.ts +46 -0
- package/types/hermes-ui-angular-layout-breadcrumbs.d.ts.map +1 -0
- package/types/hermes-ui-angular-layout-main-container.d.ts +29 -0
- package/types/hermes-ui-angular-layout-main-container.d.ts.map +1 -0
- package/types/hermes-ui-angular-layout-nav.d.ts +143 -0
- package/types/hermes-ui-angular-layout-nav.d.ts.map +1 -0
- package/types/hermes-ui-angular-layout-tabs.d.ts +159 -0
- package/types/hermes-ui-angular-layout-tabs.d.ts.map +1 -0
- package/types/hermes-ui-angular-layout-vertical-nav.d.ts +129 -0
- package/types/hermes-ui-angular-layout-vertical-nav.d.ts.map +1 -0
- package/types/hermes-ui-angular-layout.d.ts +20 -0
- package/types/hermes-ui-angular-layout.d.ts.map +1 -0
- package/types/hermes-ui-angular-modal.d.ts +161 -0
- package/types/hermes-ui-angular-modal.d.ts.map +1 -0
- package/types/hermes-ui-angular-popover-common.d.ts +317 -0
- package/types/hermes-ui-angular-popover-common.d.ts.map +1 -0
- package/types/hermes-ui-angular-popover-dropdown.d.ts +124 -0
- package/types/hermes-ui-angular-popover-dropdown.d.ts.map +1 -0
- package/types/hermes-ui-angular-popover-signpost.d.ts +158 -0
- package/types/hermes-ui-angular-popover-signpost.d.ts.map +1 -0
- package/types/hermes-ui-angular-popover-tooltip.d.ts +84 -0
- package/types/hermes-ui-angular-popover-tooltip.d.ts.map +1 -0
- package/types/hermes-ui-angular-popover.d.ts +17 -0
- package/types/hermes-ui-angular-popover.d.ts.map +1 -0
- package/types/hermes-ui-angular-progress-progress-bars.d.ts +58 -0
- package/types/hermes-ui-angular-progress-progress-bars.d.ts.map +1 -0
- package/types/hermes-ui-angular-progress-spinner.d.ts +45 -0
- package/types/hermes-ui-angular-progress-spinner.d.ts.map +1 -0
- package/types/hermes-ui-angular-stepper.d.ts +180 -0
- package/types/hermes-ui-angular-stepper.d.ts.map +1 -0
- package/types/hermes-ui-angular-timeline.d.ts +87 -0
- package/types/hermes-ui-angular-timeline.d.ts.map +1 -0
- package/types/hermes-ui-angular-toast.d.ts +131 -0
- package/types/hermes-ui-angular-toast.d.ts.map +1 -0
- package/types/hermes-ui-angular-utils-conditional.d.ts +133 -0
- package/types/hermes-ui-angular-utils-conditional.d.ts.map +1 -0
- package/types/hermes-ui-angular-utils-loading.d.ts +39 -0
- package/types/hermes-ui-angular-utils-loading.d.ts.map +1 -0
- package/types/hermes-ui-angular-utils.d.ts +914 -0
- package/types/hermes-ui-angular-utils.d.ts.map +1 -0
- package/types/hermes-ui-angular-wizard.d.ts +1509 -0
- package/types/hermes-ui-angular-wizard.d.ts.map +1 -0
- package/types/hermes-ui-angular.d.ts +44 -0
- package/types/hermes-ui-angular.d.ts.map +1 -0
- package/typography/_code.scss +36 -0
- package/typography/_font-metropolis.scss +45 -0
- package/typography/_lists.scss +81 -0
- package/typography/_typography.scss +322 -0
- package/utils/animations/_animations.clarity.scss +44 -0
- package/utils/animations/_mixins.animations.scss +33 -0
- package/wizard/_properties.wizard.scss +54 -0
- package/wizard/_variables.wizard.scss +59 -0
- package/wizard/_wizard.clarity.scss +692 -0
|
@@ -0,0 +1,2010 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Component, Input, ViewContainerRef, ViewChild, ElementRef, EventEmitter, Output, Directive, Pipe, Injectable, NgModule } from '@angular/core';
|
|
3
|
+
import { ReplaySubject, of } from 'rxjs';
|
|
4
|
+
import { By } from '@angular/platform-browser';
|
|
5
|
+
import { HermesDatagrid } from '@hermes-ui/angular/data/datagrid';
|
|
6
|
+
import { FilterMode } from '@hermes-ui/angular/addons/datagrid-filters';
|
|
7
|
+
import { PropertyViewStrings, PropertyViewModelType } from '@hermes-ui/angular/addons/property-view';
|
|
8
|
+
import { HermesTabs } from '@hermes-ui/angular/layout/tabs';
|
|
9
|
+
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
|
10
|
+
import { StepValidationState } from '@hermes-ui/angular/addons/var';
|
|
11
|
+
import { tap } from 'rxjs/operators';
|
|
12
|
+
|
|
13
|
+
/*
|
|
14
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
15
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
16
|
+
* This software is released under MIT license.
|
|
17
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18
|
+
*/
|
|
19
|
+
class MockRequiredFieldLegendComponent {
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockRequiredFieldLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockRequiredFieldLegendComponent, isStandalone: false, selector: "appfx-required-field-legend", ngImport: i0, template: ``, isInline: true }); }
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockRequiredFieldLegendComponent, decorators: [{
|
|
24
|
+
type: Component,
|
|
25
|
+
args: [{
|
|
26
|
+
selector: 'appfx-required-field-legend',
|
|
27
|
+
standalone: false,
|
|
28
|
+
template: ``,
|
|
29
|
+
}]
|
|
30
|
+
}] });
|
|
31
|
+
class MockRequiredFieldLegendStandaloneComponent extends MockRequiredFieldLegendComponent {
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockRequiredFieldLegendStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
33
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockRequiredFieldLegendStandaloneComponent, isStandalone: true, selector: "appfx-required-field-legend", usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
|
|
34
|
+
}
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockRequiredFieldLegendStandaloneComponent, decorators: [{
|
|
36
|
+
type: Component,
|
|
37
|
+
args: [{
|
|
38
|
+
selector: 'appfx-required-field-legend',
|
|
39
|
+
standalone: true,
|
|
40
|
+
template: ``,
|
|
41
|
+
}]
|
|
42
|
+
}] });
|
|
43
|
+
|
|
44
|
+
/*
|
|
45
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
46
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
47
|
+
* This software is released under MIT license.
|
|
48
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
49
|
+
*/
|
|
50
|
+
class ZoomLevelServiceMock {
|
|
51
|
+
constructor() {
|
|
52
|
+
this.resizeSubject = new ReplaySubject(1);
|
|
53
|
+
this.onChange = this.resizeSubject.asObservable();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/*
|
|
58
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
59
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
60
|
+
* This software is released under MIT license.
|
|
61
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
/*
|
|
65
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
66
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
67
|
+
* This software is released under MIT license.
|
|
68
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
69
|
+
*/
|
|
70
|
+
class MockAppfxCardContainerComponent {
|
|
71
|
+
constructor() {
|
|
72
|
+
this.cards = [];
|
|
73
|
+
this.showCardContainerSettings = true;
|
|
74
|
+
this.dragDropEnabled = true;
|
|
75
|
+
}
|
|
76
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxCardContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxCardContainerComponent, isStandalone: false, selector: "appfx-card-container", inputs: { containerId: "containerId", cards: "cards", persistenceStore: "persistenceStore", showCardContainerSettings: "showCardContainerSettings", dragDropEnabled: "dragDropEnabled" }, ngImport: i0, template: '', isInline: true }); }
|
|
78
|
+
}
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxCardContainerComponent, decorators: [{
|
|
80
|
+
type: Component,
|
|
81
|
+
args: [{
|
|
82
|
+
selector: 'appfx-card-container',
|
|
83
|
+
standalone: false,
|
|
84
|
+
template: '',
|
|
85
|
+
}]
|
|
86
|
+
}], propDecorators: { containerId: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], cards: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], persistenceStore: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], showCardContainerSettings: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], dragDropEnabled: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}] } });
|
|
97
|
+
class MockAppfxCardContainerStandaloneComponent extends MockAppfxCardContainerComponent {
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxCardContainerStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
99
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxCardContainerStandaloneComponent, isStandalone: true, selector: "appfx-card-container", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
100
|
+
}
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxCardContainerStandaloneComponent, decorators: [{
|
|
102
|
+
type: Component,
|
|
103
|
+
args: [{
|
|
104
|
+
selector: 'appfx-card-container',
|
|
105
|
+
standalone: true,
|
|
106
|
+
template: '',
|
|
107
|
+
}]
|
|
108
|
+
}] });
|
|
109
|
+
|
|
110
|
+
/*
|
|
111
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
112
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
113
|
+
* This software is released under MIT license.
|
|
114
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
115
|
+
*/
|
|
116
|
+
// mock for container service
|
|
117
|
+
class MockContainerService {
|
|
118
|
+
getCardOrder() { }
|
|
119
|
+
moveCard() { }
|
|
120
|
+
getVisibleCardsCount() { }
|
|
121
|
+
}
|
|
122
|
+
// mock for A11y service
|
|
123
|
+
class MockA11yService {
|
|
124
|
+
isSelected() { }
|
|
125
|
+
isDraggableOver() { }
|
|
126
|
+
selectCard() { }
|
|
127
|
+
moveDropPosition() { }
|
|
128
|
+
}
|
|
129
|
+
// mock for DragDrop service
|
|
130
|
+
class MockDragDropService {
|
|
131
|
+
onDragStart() { }
|
|
132
|
+
onDragDrop() { }
|
|
133
|
+
}
|
|
134
|
+
// mock for Layout service
|
|
135
|
+
class MockLayoutService {
|
|
136
|
+
updateCardSize() { }
|
|
137
|
+
}
|
|
138
|
+
// Renderer2 Mock
|
|
139
|
+
class MockRenderer2 {
|
|
140
|
+
setStyle(el, name, style) {
|
|
141
|
+
el[name] = style;
|
|
142
|
+
}
|
|
143
|
+
removeStyle(el, name) {
|
|
144
|
+
el[name] = null;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// Mock Card Container for ViewContainerRef
|
|
148
|
+
class MockCardContainerComponent {
|
|
149
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockCardContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
150
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockCardContainerComponent, isStandalone: false, selector: "ng-component", viewQueries: [{ propertyName: "cardContainer", first: true, predicate: ["cardContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `
|
|
151
|
+
<div class="scrollable">
|
|
152
|
+
<div>
|
|
153
|
+
<ng-template #cardContainer></ng-template>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
`, isInline: true, styles: [".scrollable{overflow:auto;position:absolute;inset:0;max-height:20px}\n"] }); }
|
|
157
|
+
}
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockCardContainerComponent, decorators: [{
|
|
159
|
+
type: Component,
|
|
160
|
+
args: [{ standalone: false, template: `
|
|
161
|
+
<div class="scrollable">
|
|
162
|
+
<div>
|
|
163
|
+
<ng-template #cardContainer></ng-template>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
`, styles: [".scrollable{overflow:auto;position:absolute;inset:0;max-height:20px}\n"] }]
|
|
167
|
+
}], propDecorators: { cardContainer: [{
|
|
168
|
+
type: ViewChild,
|
|
169
|
+
args: ['cardContainer', { read: ViewContainerRef, static: true }]
|
|
170
|
+
}] } });
|
|
171
|
+
// Sample Card to test scenarios
|
|
172
|
+
class SampleCardComponent {
|
|
173
|
+
constructor(el) {
|
|
174
|
+
this.eleRef = el;
|
|
175
|
+
}
|
|
176
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SampleCardComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
177
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: SampleCardComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: `
|
|
178
|
+
<div class="card">
|
|
179
|
+
<div class="card-header">
|
|
180
|
+
<div class="card-title">Sample Card</div>
|
|
181
|
+
</div>
|
|
182
|
+
<div class="card-block"></div>
|
|
183
|
+
<div class="card-footer"></div>
|
|
184
|
+
</div>
|
|
185
|
+
`, isInline: true }); }
|
|
186
|
+
}
|
|
187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SampleCardComponent, decorators: [{
|
|
188
|
+
type: Component,
|
|
189
|
+
args: [{
|
|
190
|
+
standalone: false,
|
|
191
|
+
template: `
|
|
192
|
+
<div class="card">
|
|
193
|
+
<div class="card-header">
|
|
194
|
+
<div class="card-title">Sample Card</div>
|
|
195
|
+
</div>
|
|
196
|
+
<div class="card-block"></div>
|
|
197
|
+
<div class="card-footer"></div>
|
|
198
|
+
</div>
|
|
199
|
+
`,
|
|
200
|
+
}]
|
|
201
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
202
|
+
// Sample Card to without footer test scenarios
|
|
203
|
+
class SampleCardWithoutFooterComponent {
|
|
204
|
+
constructor(el) {
|
|
205
|
+
this.eleRef = el;
|
|
206
|
+
}
|
|
207
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SampleCardWithoutFooterComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
208
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: SampleCardWithoutFooterComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: `
|
|
209
|
+
<div class="card">
|
|
210
|
+
<div class="card-header">
|
|
211
|
+
<div class="card-title">Sample Card</div>
|
|
212
|
+
</div>
|
|
213
|
+
<div class="card-block"></div>
|
|
214
|
+
</div>
|
|
215
|
+
`, isInline: true }); }
|
|
216
|
+
}
|
|
217
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SampleCardWithoutFooterComponent, decorators: [{
|
|
218
|
+
type: Component,
|
|
219
|
+
args: [{
|
|
220
|
+
standalone: false,
|
|
221
|
+
template: `
|
|
222
|
+
<div class="card">
|
|
223
|
+
<div class="card-header">
|
|
224
|
+
<div class="card-title">Sample Card</div>
|
|
225
|
+
</div>
|
|
226
|
+
<div class="card-block"></div>
|
|
227
|
+
</div>
|
|
228
|
+
`,
|
|
229
|
+
}]
|
|
230
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
231
|
+
// Sample Card to without header test scenarios
|
|
232
|
+
class SampleCardWithoutHeaderComponent {
|
|
233
|
+
constructor(el) {
|
|
234
|
+
this.eleRef = el;
|
|
235
|
+
}
|
|
236
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SampleCardWithoutHeaderComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
237
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: SampleCardWithoutHeaderComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: `
|
|
238
|
+
<div class="card">
|
|
239
|
+
<div class="card-block">
|
|
240
|
+
<div class="card-title">Sample Card</div>
|
|
241
|
+
</div>
|
|
242
|
+
<div class="card-footer"></div>
|
|
243
|
+
</div>
|
|
244
|
+
`, isInline: true }); }
|
|
245
|
+
}
|
|
246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SampleCardWithoutHeaderComponent, decorators: [{
|
|
247
|
+
type: Component,
|
|
248
|
+
args: [{
|
|
249
|
+
standalone: false,
|
|
250
|
+
template: `
|
|
251
|
+
<div class="card">
|
|
252
|
+
<div class="card-block">
|
|
253
|
+
<div class="card-title">Sample Card</div>
|
|
254
|
+
</div>
|
|
255
|
+
<div class="card-footer"></div>
|
|
256
|
+
</div>
|
|
257
|
+
`,
|
|
258
|
+
}]
|
|
259
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
260
|
+
// mock element ref
|
|
261
|
+
class MockElementRef extends ElementRef {
|
|
262
|
+
constructor() {
|
|
263
|
+
super(...arguments);
|
|
264
|
+
this.nativeElement = {
|
|
265
|
+
querySelector: () => { },
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// sort function to display cards by sorted titles
|
|
270
|
+
const sortCardsFn = (a, b) => {
|
|
271
|
+
if (a.title && b.title) {
|
|
272
|
+
return a.title.localeCompare(b.title);
|
|
273
|
+
}
|
|
274
|
+
return 0;
|
|
275
|
+
};
|
|
276
|
+
// sample cards for unit tests
|
|
277
|
+
const sampleCards = [
|
|
278
|
+
{
|
|
279
|
+
id: 'sample-card-1',
|
|
280
|
+
title: 'Sample Card 1',
|
|
281
|
+
componentClass: SampleCardComponent,
|
|
282
|
+
hidden: false,
|
|
283
|
+
order: 0,
|
|
284
|
+
view: undefined,
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
id: 'sample-card-2',
|
|
288
|
+
title: 'Sample Card 2',
|
|
289
|
+
componentClass: SampleCardComponent,
|
|
290
|
+
hidden: false,
|
|
291
|
+
canHide: false,
|
|
292
|
+
order: 1,
|
|
293
|
+
view: undefined,
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
id: 'sample-card-3',
|
|
297
|
+
title: 'Sample Card 3',
|
|
298
|
+
componentClass: SampleCardComponent,
|
|
299
|
+
hidden: false,
|
|
300
|
+
canHide: false,
|
|
301
|
+
order: 5,
|
|
302
|
+
view: undefined,
|
|
303
|
+
},
|
|
304
|
+
];
|
|
305
|
+
// sample card settings
|
|
306
|
+
const sampleCardsSettings = [
|
|
307
|
+
{
|
|
308
|
+
id: 'sample-card-1',
|
|
309
|
+
hidden: false,
|
|
310
|
+
order: 0,
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
id: 'sample-card-2',
|
|
314
|
+
hidden: true,
|
|
315
|
+
order: 2,
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
id: 'sample-card-3',
|
|
319
|
+
hidden: false,
|
|
320
|
+
order: 5,
|
|
321
|
+
},
|
|
322
|
+
];
|
|
323
|
+
// card to order mapping
|
|
324
|
+
const cardIdToOrder = {
|
|
325
|
+
cardWithDefaultOrder: Infinity,
|
|
326
|
+
[sampleCards[0].id]: 0,
|
|
327
|
+
[sampleCards[1].id]: 1,
|
|
328
|
+
[sampleCards[2].id]: 2,
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
/*
|
|
332
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
333
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
334
|
+
* This software is released under MIT license.
|
|
335
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
336
|
+
*/
|
|
337
|
+
|
|
338
|
+
/*
|
|
339
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
340
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
341
|
+
* This software is released under MIT license.
|
|
342
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
343
|
+
*/
|
|
344
|
+
class MockAppfxDatagridComponent {
|
|
345
|
+
constructor() {
|
|
346
|
+
this.detailState = null;
|
|
347
|
+
this.selectedItemsChange = new EventEmitter();
|
|
348
|
+
this.gridItemsChange = new EventEmitter();
|
|
349
|
+
this.selectionChange = new EventEmitter();
|
|
350
|
+
this.searchTermChange = new EventEmitter();
|
|
351
|
+
this.refreshGridData = new EventEmitter();
|
|
352
|
+
this.refreshVirtualGridData = new EventEmitter();
|
|
353
|
+
this.actionClick = new EventEmitter();
|
|
354
|
+
this.rowActionMenuOpenChange = new EventEmitter();
|
|
355
|
+
this.exportDataEvent = new EventEmitter();
|
|
356
|
+
this.detailStateChange = new EventEmitter(true);
|
|
357
|
+
}
|
|
358
|
+
onModelChange() { }
|
|
359
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDatagridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
360
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxDatagridComponent, isStandalone: false, selector: "appfx-datagrid", inputs: { gridItems: "gridItems", columns: "columns", layoutModel: "layoutModel", footerModel: "footerModel", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions", totalItems: "totalItems", selectionType: "selectionType", selectedItems: "selectedItems", datagridLabels: "datagridLabels", preSelectFirstItem: "preSelectFirstItem", rowSelectionMode: "rowSelectionMode", actionBarActions: "actionBarActions", showFooter: "showFooter", singleRowActions: "singleRowActions", noItemsFoundPlaceholder: "noItemsFoundPlaceholder", loading: "loading", serverDrivenDatagrid: "serverDrivenDatagrid", filterMode: "filterMode", listItemsCount: "listItemsCount", trackByGridItemProperty: "trackByGridItemProperty", isRowLocked: "isRowLocked", detailHeader: "detailHeader", detailBody: "detailBody", rowDetailContent: "rowDetailContent", rowsExpandedByDefault: "rowsExpandedByDefault", vscPersistDatagridSettings: "vscPersistDatagridSettings", detailState: "detailState", trackByFunction: "trackByFunction", virtualScrolling: "virtualScrolling", dataRange: "dataRange" }, outputs: { selectedItemsChange: "selectedItemsChange", gridItemsChange: "gridItemsChange", selectionChange: "selectionChange", searchTermChange: "searchTermChange", refreshGridData: "refreshGridData", refreshVirtualGridData: "refreshVirtualGridData", actionClick: "actionClick", rowActionMenuOpenChange: "rowActionMenuOpenChange", exportDataEvent: "exportDataEvent", detailStateChange: "detailStateChange" }, ngImport: i0, template: ``, isInline: true }); }
|
|
361
|
+
}
|
|
362
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDatagridComponent, decorators: [{
|
|
363
|
+
type: Component,
|
|
364
|
+
args: [{
|
|
365
|
+
selector: 'appfx-datagrid',
|
|
366
|
+
standalone: false,
|
|
367
|
+
template: ``,
|
|
368
|
+
}]
|
|
369
|
+
}], propDecorators: { gridItems: [{
|
|
370
|
+
type: Input
|
|
371
|
+
}], columns: [{
|
|
372
|
+
type: Input
|
|
373
|
+
}], layoutModel: [{
|
|
374
|
+
type: Input
|
|
375
|
+
}], footerModel: [{
|
|
376
|
+
type: Input
|
|
377
|
+
}], pageSize: [{
|
|
378
|
+
type: Input
|
|
379
|
+
}], pageSizeOptions: [{
|
|
380
|
+
type: Input
|
|
381
|
+
}], totalItems: [{
|
|
382
|
+
type: Input
|
|
383
|
+
}], selectionType: [{
|
|
384
|
+
type: Input
|
|
385
|
+
}], selectedItems: [{
|
|
386
|
+
type: Input
|
|
387
|
+
}], datagridLabels: [{
|
|
388
|
+
type: Input
|
|
389
|
+
}], preSelectFirstItem: [{
|
|
390
|
+
type: Input
|
|
391
|
+
}], rowSelectionMode: [{
|
|
392
|
+
type: Input
|
|
393
|
+
}], actionBarActions: [{
|
|
394
|
+
type: Input
|
|
395
|
+
}], showFooter: [{
|
|
396
|
+
type: Input
|
|
397
|
+
}], singleRowActions: [{
|
|
398
|
+
type: Input
|
|
399
|
+
}], noItemsFoundPlaceholder: [{
|
|
400
|
+
type: Input
|
|
401
|
+
}], loading: [{
|
|
402
|
+
type: Input
|
|
403
|
+
}], serverDrivenDatagrid: [{
|
|
404
|
+
type: Input
|
|
405
|
+
}], filterMode: [{
|
|
406
|
+
type: Input
|
|
407
|
+
}], listItemsCount: [{
|
|
408
|
+
type: Input
|
|
409
|
+
}], trackByGridItemProperty: [{
|
|
410
|
+
type: Input
|
|
411
|
+
}], isRowLocked: [{
|
|
412
|
+
type: Input
|
|
413
|
+
}], detailHeader: [{
|
|
414
|
+
type: Input
|
|
415
|
+
}], detailBody: [{
|
|
416
|
+
type: Input
|
|
417
|
+
}], rowDetailContent: [{
|
|
418
|
+
type: Input
|
|
419
|
+
}], rowsExpandedByDefault: [{
|
|
420
|
+
type: Input
|
|
421
|
+
}], vscPersistDatagridSettings: [{
|
|
422
|
+
type: Input
|
|
423
|
+
}], detailState: [{
|
|
424
|
+
type: Input
|
|
425
|
+
}], trackByFunction: [{
|
|
426
|
+
type: Input
|
|
427
|
+
}], virtualScrolling: [{
|
|
428
|
+
type: Input
|
|
429
|
+
}], dataRange: [{
|
|
430
|
+
type: Input
|
|
431
|
+
}], selectedItemsChange: [{
|
|
432
|
+
type: Output
|
|
433
|
+
}], gridItemsChange: [{
|
|
434
|
+
type: Output
|
|
435
|
+
}], selectionChange: [{
|
|
436
|
+
type: Output
|
|
437
|
+
}], searchTermChange: [{
|
|
438
|
+
type: Output
|
|
439
|
+
}], refreshGridData: [{
|
|
440
|
+
type: Output
|
|
441
|
+
}], refreshVirtualGridData: [{
|
|
442
|
+
type: Output
|
|
443
|
+
}], actionClick: [{
|
|
444
|
+
type: Output
|
|
445
|
+
}], rowActionMenuOpenChange: [{
|
|
446
|
+
type: Output
|
|
447
|
+
}], exportDataEvent: [{
|
|
448
|
+
type: Output
|
|
449
|
+
}], detailStateChange: [{
|
|
450
|
+
type: Output
|
|
451
|
+
}] } });
|
|
452
|
+
class MockStandaloneDatagridComponent extends MockAppfxDatagridComponent {
|
|
453
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStandaloneDatagridComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
454
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockStandaloneDatagridComponent, isStandalone: true, selector: "appfx-datagrid", usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
|
|
455
|
+
}
|
|
456
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStandaloneDatagridComponent, decorators: [{
|
|
457
|
+
type: Component,
|
|
458
|
+
args: [{
|
|
459
|
+
selector: 'appfx-datagrid',
|
|
460
|
+
standalone: true,
|
|
461
|
+
template: ``,
|
|
462
|
+
}]
|
|
463
|
+
}] });
|
|
464
|
+
|
|
465
|
+
/*
|
|
466
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
467
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
468
|
+
* This software is released under MIT license.
|
|
469
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
470
|
+
*/
|
|
471
|
+
class MockDatagridActionBarComponent {
|
|
472
|
+
constructor() {
|
|
473
|
+
this.invokeAction = new EventEmitter();
|
|
474
|
+
}
|
|
475
|
+
onActionClick(action) {
|
|
476
|
+
this.invokeAction.emit(action);
|
|
477
|
+
}
|
|
478
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridActionBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
479
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: MockDatagridActionBarComponent, isStandalone: false, selector: "appfx-datagrid-action-bar", inputs: { actions: "actions" }, outputs: { invokeAction: "invokeAction" }, ngImport: i0, template: `
|
|
480
|
+
@for (action of actions; track action) {
|
|
481
|
+
<button
|
|
482
|
+
(click)="onActionClick(action)"
|
|
483
|
+
[title]="action.tooltip"
|
|
484
|
+
[attr.data-test-id]="action.id"
|
|
485
|
+
[disabled]="!action.enabled"
|
|
486
|
+
>
|
|
487
|
+
{{ action.label }}
|
|
488
|
+
</button>
|
|
489
|
+
}
|
|
490
|
+
`, isInline: true }); }
|
|
491
|
+
}
|
|
492
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridActionBarComponent, decorators: [{
|
|
493
|
+
type: Component,
|
|
494
|
+
args: [{
|
|
495
|
+
selector: 'appfx-datagrid-action-bar',
|
|
496
|
+
standalone: false,
|
|
497
|
+
template: `
|
|
498
|
+
@for (action of actions; track action) {
|
|
499
|
+
<button
|
|
500
|
+
(click)="onActionClick(action)"
|
|
501
|
+
[title]="action.tooltip"
|
|
502
|
+
[attr.data-test-id]="action.id"
|
|
503
|
+
[disabled]="!action.enabled"
|
|
504
|
+
>
|
|
505
|
+
{{ action.label }}
|
|
506
|
+
</button>
|
|
507
|
+
}
|
|
508
|
+
`,
|
|
509
|
+
}]
|
|
510
|
+
}], propDecorators: { actions: [{
|
|
511
|
+
type: Input
|
|
512
|
+
}], invokeAction: [{
|
|
513
|
+
type: Output
|
|
514
|
+
}] } });
|
|
515
|
+
|
|
516
|
+
/*
|
|
517
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
518
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
519
|
+
* This software is released under MIT license.
|
|
520
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
521
|
+
*/
|
|
522
|
+
/**
|
|
523
|
+
* Component for unit testing purposes to provide a template for rendering datagrid cell content.
|
|
524
|
+
*/
|
|
525
|
+
class MockDatagridCellContainerComponent {
|
|
526
|
+
constructor(componentFactoryResolver) {
|
|
527
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
528
|
+
}
|
|
529
|
+
ngOnInit() {
|
|
530
|
+
if (this.column.columnRenderer) {
|
|
531
|
+
const factory = this.componentFactoryResolver.resolveComponentFactory(this.column.columnRenderer);
|
|
532
|
+
this.componentRef = this.container.createComponent(factory);
|
|
533
|
+
this.instance = this.componentRef?.instance;
|
|
534
|
+
this.instance.item = this.item;
|
|
535
|
+
this.instance.column = this.column;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridCellContainerComponent, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
539
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: MockDatagridCellContainerComponent, isStandalone: false, selector: "appfx-dg-cell-container", inputs: { column: "column", item: "item" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["cellContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `
|
|
540
|
+
@if (!column.columnRenderer) {
|
|
541
|
+
{{ item?.[column.field] }}
|
|
542
|
+
}
|
|
543
|
+
<ng-template #cellContainer></ng-template>
|
|
544
|
+
`, isInline: true }); }
|
|
545
|
+
}
|
|
546
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridCellContainerComponent, decorators: [{
|
|
547
|
+
type: Component,
|
|
548
|
+
args: [{
|
|
549
|
+
selector: 'appfx-dg-cell-container',
|
|
550
|
+
standalone: false,
|
|
551
|
+
template: `
|
|
552
|
+
@if (!column.columnRenderer) {
|
|
553
|
+
{{ item?.[column.field] }}
|
|
554
|
+
}
|
|
555
|
+
<ng-template #cellContainer></ng-template>
|
|
556
|
+
`,
|
|
557
|
+
}]
|
|
558
|
+
}], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }], propDecorators: { column: [{
|
|
559
|
+
type: Input
|
|
560
|
+
}], item: [{
|
|
561
|
+
type: Input
|
|
562
|
+
}], container: [{
|
|
563
|
+
type: ViewChild,
|
|
564
|
+
args: ['cellContainer', { read: ViewContainerRef, static: true }]
|
|
565
|
+
}] } });
|
|
566
|
+
|
|
567
|
+
/*
|
|
568
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
569
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
570
|
+
* This software is released under MIT license.
|
|
571
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
572
|
+
*/
|
|
573
|
+
class MockDatagridColumnToggleComponent {
|
|
574
|
+
showColumn() { }
|
|
575
|
+
hideColumn() { }
|
|
576
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridColumnToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
577
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockDatagridColumnToggleComponent, isStandalone: false, selector: "appfx-dg-column-toggle", inputs: { columns: "columns" }, ngImport: i0, template: ``, isInline: true }); }
|
|
578
|
+
}
|
|
579
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridColumnToggleComponent, decorators: [{
|
|
580
|
+
type: Component,
|
|
581
|
+
args: [{
|
|
582
|
+
selector: 'appfx-dg-column-toggle',
|
|
583
|
+
standalone: false,
|
|
584
|
+
template: ``,
|
|
585
|
+
}]
|
|
586
|
+
}], propDecorators: { columns: [{
|
|
587
|
+
type: Input
|
|
588
|
+
}] } });
|
|
589
|
+
|
|
590
|
+
/*
|
|
591
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
592
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
593
|
+
* This software is released under MIT license.
|
|
594
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
595
|
+
*/
|
|
596
|
+
class MockDatagridPersistSettingsDirective {
|
|
597
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridPersistSettingsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
598
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: MockDatagridPersistSettingsDirective, isStandalone: false, selector: "appfx-datagrid[appfxPersistDatagridSettings]", inputs: { appfxPersistDatagridSettings: "appfxPersistDatagridSettings", persistPageSize: "persistPageSize", persistSortOrder: "persistSortOrder" }, ngImport: i0 }); }
|
|
599
|
+
}
|
|
600
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridPersistSettingsDirective, decorators: [{
|
|
601
|
+
type: Directive,
|
|
602
|
+
args: [{
|
|
603
|
+
selector: 'appfx-datagrid[appfxPersistDatagridSettings]',
|
|
604
|
+
standalone: false,
|
|
605
|
+
}]
|
|
606
|
+
}], propDecorators: { appfxPersistDatagridSettings: [{
|
|
607
|
+
type: Input
|
|
608
|
+
}], persistPageSize: [{
|
|
609
|
+
type: Input
|
|
610
|
+
}], persistSortOrder: [{
|
|
611
|
+
type: Input
|
|
612
|
+
}] } });
|
|
613
|
+
|
|
614
|
+
/*
|
|
615
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
616
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
617
|
+
* This software is released under MIT license.
|
|
618
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
619
|
+
*/
|
|
620
|
+
class MockDatagridPreserveSelectionDirective {
|
|
621
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridPreserveSelectionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
622
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: MockDatagridPreserveSelectionDirective, isStandalone: false, selector: "[appfxPreserveSelection]", inputs: { preserveExistingSelection: "preserveExistingSelection" }, ngImport: i0 }); }
|
|
623
|
+
}
|
|
624
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridPreserveSelectionDirective, decorators: [{
|
|
625
|
+
type: Directive,
|
|
626
|
+
args: [{
|
|
627
|
+
selector: '[appfxPreserveSelection]',
|
|
628
|
+
standalone: false,
|
|
629
|
+
}]
|
|
630
|
+
}], propDecorators: { preserveExistingSelection: [{
|
|
631
|
+
type: Input
|
|
632
|
+
}] } });
|
|
633
|
+
|
|
634
|
+
/*
|
|
635
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
636
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
637
|
+
* This software is released under MIT license.
|
|
638
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
639
|
+
*/
|
|
640
|
+
class GridHelper {
|
|
641
|
+
constructor(contextDebugElement, indexedEntry) {
|
|
642
|
+
this.indexedEntry = indexedEntry;
|
|
643
|
+
this.isExpandable = false;
|
|
644
|
+
const gridMatches = contextDebugElement.queryAll(By.directive(HermesDatagrid));
|
|
645
|
+
if (!gridMatches.length) {
|
|
646
|
+
throw Error('No grid found by scoped context');
|
|
647
|
+
}
|
|
648
|
+
else if (gridMatches.length > 1 && indexedEntry === undefined) {
|
|
649
|
+
throw Error(`${gridMatches.length} multiple grids under the passed context`);
|
|
650
|
+
}
|
|
651
|
+
else {
|
|
652
|
+
this.componentDebugElement = gridMatches[indexedEntry || 0];
|
|
653
|
+
this.component = this.componentDebugElement.injector.get(HermesDatagrid);
|
|
654
|
+
this.gridElement = this.componentDebugElement.nativeElement;
|
|
655
|
+
this.isExpandable = this.isRowDetailConfigured();
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
/**
|
|
659
|
+
* validate grid component that is undefined. If it is defined, its data items collection must be empty
|
|
660
|
+
* @param gridParentDebugElement
|
|
661
|
+
*/
|
|
662
|
+
static assertEmpty(gridParentDebugElement) {
|
|
663
|
+
const matchedGrid = gridParentDebugElement.query(By.directive(HermesDatagrid));
|
|
664
|
+
if (!matchedGrid) {
|
|
665
|
+
expect(matchedGrid).toBeNull();
|
|
666
|
+
return;
|
|
667
|
+
}
|
|
668
|
+
const hermesGrid = matchedGrid.injector.get(HermesDatagrid);
|
|
669
|
+
if (hermesGrid) {
|
|
670
|
+
expect(hermesGrid.items.all.length).toBeFalsy();
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
// many internal rendering changes occur throughout the Grid rendering pipeline. After sorting and filtering rows changes occur
|
|
674
|
+
detectChanges(fixture) {
|
|
675
|
+
fixture.detectChanges();
|
|
676
|
+
this.component.resize();
|
|
677
|
+
fixture.detectChanges();
|
|
678
|
+
}
|
|
679
|
+
getGridElement() {
|
|
680
|
+
return this.gridElement;
|
|
681
|
+
}
|
|
682
|
+
getGridInternalInstance() {
|
|
683
|
+
return this.component;
|
|
684
|
+
}
|
|
685
|
+
// team developers should annotate grids when multiple exist
|
|
686
|
+
getTestId() {
|
|
687
|
+
return this.getGridElement().dataset['testId'] || undefined;
|
|
688
|
+
}
|
|
689
|
+
// omits control columns such as selector and expandable row toggle
|
|
690
|
+
getHeaders() {
|
|
691
|
+
return Array.from(this.gridElement.querySelectorAll('.datagrid-table .datagrid-header hermes-dg-column .datagrid-column-title')).map((element) => (element.textContent ? element.textContent.trim() : ''));
|
|
692
|
+
}
|
|
693
|
+
// omits control columns such as selector and expandable row toggle
|
|
694
|
+
getHiddenHeaders() {
|
|
695
|
+
return Array.from(this.gridElement.querySelectorAll('.datagrid-table .datagrid-header hermes-dg-column.datagrid-hidden-column .datagrid-column-title')).map((element) => (element.textContent ? element.textContent.trim() : ''));
|
|
696
|
+
}
|
|
697
|
+
// testing utility logic to verify presence of label, optionally ensuring certain columns are not present
|
|
698
|
+
assertHeaderLabels(includeLabelList, excludeLabelList) {
|
|
699
|
+
const gridHeaderLabelList = this.getHeaders();
|
|
700
|
+
// these columns are present
|
|
701
|
+
if (Array.isArray(includeLabelList)) {
|
|
702
|
+
gridHeaderLabelList.forEach((headerLabel, index) => {
|
|
703
|
+
expect(headerLabel).toEqual(includeLabelList[index], `Cannot find "${headerLabel}" column.`);
|
|
704
|
+
});
|
|
705
|
+
}
|
|
706
|
+
// these columns are not present ( in the DOM ). Currently ignores hidden attribute
|
|
707
|
+
if (Array.isArray(excludeLabelList)) {
|
|
708
|
+
excludeLabelList.forEach(undefinedLabel => {
|
|
709
|
+
expect(gridHeaderLabelList.indexOf(undefinedLabel)).toBeLessThan(0, `There is a "${undefinedLabel}" column.`);
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
isRowDetailConfigured() {
|
|
714
|
+
return !!this.gridElement.querySelector('.datagrid-table .datagrid-header .datagrid-column.datagrid-expandable-caret');
|
|
715
|
+
}
|
|
716
|
+
// omits control columns such as selector and expandable row toggle
|
|
717
|
+
getHeaderElements() {
|
|
718
|
+
return Array.from(this.gridElement.querySelectorAll('hermes-dg-column')).map((element) => element);
|
|
719
|
+
}
|
|
720
|
+
// omits control columns such as selector and expandable row toggle
|
|
721
|
+
getHeaderElementAt(headerIndex) {
|
|
722
|
+
return this.getHeaderElements()[headerIndex] || undefined;
|
|
723
|
+
}
|
|
724
|
+
getSelectAllElement() {
|
|
725
|
+
return this.gridElement.querySelector(".datagrid-table .datagrid-header .datagrid-column.datagrid-select input[type='checkbox']");
|
|
726
|
+
}
|
|
727
|
+
// only if column title is within a button, consider it as a column sort action
|
|
728
|
+
isColumnSortable(header) {
|
|
729
|
+
const columnIndex = Array.from(this.gridElement.querySelectorAll('.datagrid-table .datagrid-header button.datagrid-column-title'))
|
|
730
|
+
.map((element) => (element.textContent ? element.textContent.trim() : ''))
|
|
731
|
+
.indexOf(header);
|
|
732
|
+
return columnIndex !== -1;
|
|
733
|
+
}
|
|
734
|
+
sortByColumn(header) {
|
|
735
|
+
const headerElements = Array.from(this.gridElement.querySelectorAll('.datagrid-table .datagrid-header button.datagrid-column-title')).filter((element) => {
|
|
736
|
+
return element.textContent && header === element.textContent.trim();
|
|
737
|
+
});
|
|
738
|
+
if (!headerElements || headerElements.length === 0) {
|
|
739
|
+
return false;
|
|
740
|
+
}
|
|
741
|
+
const headerElement = headerElements[0];
|
|
742
|
+
headerElement.click();
|
|
743
|
+
return true;
|
|
744
|
+
}
|
|
745
|
+
sortByColumnIndex(colIndex) {
|
|
746
|
+
const headerElement = this.getHeaderElementAt(colIndex);
|
|
747
|
+
if (!headerElement) {
|
|
748
|
+
throw Error(`The grid does not have column with index ${colIndex}`);
|
|
749
|
+
}
|
|
750
|
+
const columnSortButton = headerElement.querySelector('button.datagrid-column-title');
|
|
751
|
+
if (!columnSortButton) {
|
|
752
|
+
throw Error(`The column is not sortable at ${colIndex}`);
|
|
753
|
+
}
|
|
754
|
+
columnSortButton.click(); // toggle sort
|
|
755
|
+
return true;
|
|
756
|
+
}
|
|
757
|
+
// open filter overlay from icon in the right corner of header cell
|
|
758
|
+
openFilter(header) {
|
|
759
|
+
const headerElement = this.getHeaderElements().find((element) => {
|
|
760
|
+
const columnTitle = element.querySelector('.datagrid-column-title');
|
|
761
|
+
return !!(columnTitle && columnTitle.textContent && columnTitle.textContent.trim() === header);
|
|
762
|
+
});
|
|
763
|
+
if (headerElement) {
|
|
764
|
+
const filterButton = headerElement.querySelector('hermes-dg-filter .datagrid-filter-toggle');
|
|
765
|
+
if (filterButton) {
|
|
766
|
+
filterButton.click();
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
// shut down filter overlay
|
|
771
|
+
closeFilter() {
|
|
772
|
+
const closeButton = document.body.querySelector('.datagrid-filter button.close');
|
|
773
|
+
if (closeButton) {
|
|
774
|
+
closeButton.click();
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
openFilterByColumnIndex(colIndex) {
|
|
778
|
+
const headerElements = this.getHeaderElements();
|
|
779
|
+
if (!headerElements || headerElements.length - 1 < colIndex) {
|
|
780
|
+
throw Error(`The grid does not have column with index ${colIndex}`);
|
|
781
|
+
}
|
|
782
|
+
const filterButton = headerElements[colIndex].querySelector('hermes-dg-filter > .datagrid-filter-toggle');
|
|
783
|
+
filterButton.click();
|
|
784
|
+
}
|
|
785
|
+
getFilterInput() {
|
|
786
|
+
const inputElement = document.body.querySelector('.datagrid-filter input');
|
|
787
|
+
return new FilterInputTestHelper(inputElement);
|
|
788
|
+
}
|
|
789
|
+
getRows() {
|
|
790
|
+
const rowElements = this.gridElement.querySelectorAll('hermes-dg-row');
|
|
791
|
+
return Array.from(rowElements).map((element) => new GridRowTestHelper(this, element));
|
|
792
|
+
}
|
|
793
|
+
getFooter() {
|
|
794
|
+
const footerElement = this.gridElement.querySelector('hermes-dg-footer');
|
|
795
|
+
return new GridFooterTestHelper(footerElement);
|
|
796
|
+
}
|
|
797
|
+
getPlaceholder() {
|
|
798
|
+
const placeholderElement = this.gridElement.querySelector('hermes-dg-placeholder');
|
|
799
|
+
if (!placeholderElement) {
|
|
800
|
+
throw Error('No placeholder located in grid');
|
|
801
|
+
}
|
|
802
|
+
return new GridPlaceholder(placeholderElement);
|
|
803
|
+
}
|
|
804
|
+
// visible in the grid on the current page only. to get the actual model of selected items only the component state can determine array
|
|
805
|
+
getSelectedRows() {
|
|
806
|
+
const rowElements = this.gridElement.querySelectorAll('hermes-dg-row.datagrid-selected');
|
|
807
|
+
return Array.from(rowElements).map((element) => new GridRowTestHelper(this, element));
|
|
808
|
+
}
|
|
809
|
+
// if datagrid supports row selection mode, force all "visible" rows in view to be checked
|
|
810
|
+
selectAllRows() {
|
|
811
|
+
const canPerform = this.component.selection.rowSelectionMode;
|
|
812
|
+
if (canPerform) {
|
|
813
|
+
this.component.selection.toggleAll();
|
|
814
|
+
}
|
|
815
|
+
return canPerform;
|
|
816
|
+
}
|
|
817
|
+
// if datagrid supports row selection mode, force all "visible" rows in view to be unchecked
|
|
818
|
+
unselectAllRows() {
|
|
819
|
+
const canPerform = this.component.selection.rowSelectionMode;
|
|
820
|
+
if (canPerform) {
|
|
821
|
+
this.component.selection.clearSelection();
|
|
822
|
+
}
|
|
823
|
+
return canPerform;
|
|
824
|
+
}
|
|
825
|
+
clickActionBarButton(label) {
|
|
826
|
+
const btn = this.findActionBarButton(this.getButtonIdentifier(label));
|
|
827
|
+
if (btn) {
|
|
828
|
+
btn.click();
|
|
829
|
+
}
|
|
830
|
+
else {
|
|
831
|
+
throw Error("The action button '" + label + "' does not exist");
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
isActionBarButtonDisabled(label) {
|
|
835
|
+
const btn = this.findActionBarButton(this.getButtonIdentifier(label));
|
|
836
|
+
if (btn) {
|
|
837
|
+
return btn.disabled;
|
|
838
|
+
}
|
|
839
|
+
else {
|
|
840
|
+
throw Error("The action button '" + label + "' does not exist");
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
getActionBarActionLabels(hasSpan) {
|
|
844
|
+
const buttonElements = this.gridElement.querySelectorAll('hermes-dg-action-bar button' + (hasSpan ? ' > span' : ''));
|
|
845
|
+
return Array.from(buttonElements).map((element) => {
|
|
846
|
+
return element && element.innerText ? element.innerText.trim() : '';
|
|
847
|
+
});
|
|
848
|
+
}
|
|
849
|
+
isDataLoading() {
|
|
850
|
+
return this.component.loading;
|
|
851
|
+
}
|
|
852
|
+
findActionBarButton(label) {
|
|
853
|
+
const menuItems = this.gridElement.querySelectorAll('hermes-dg-action-bar button');
|
|
854
|
+
const matched = Array.from(menuItems)
|
|
855
|
+
.map(e => (e.textContent ? e.textContent.trim() : ''))
|
|
856
|
+
.indexOf(label);
|
|
857
|
+
return matched >= 0 ? menuItems[matched] : undefined;
|
|
858
|
+
}
|
|
859
|
+
findFooterButton(label) {
|
|
860
|
+
const buttons = this.gridElement.querySelectorAll('hermes-dg-footer button');
|
|
861
|
+
const matched = Array.from(buttons)
|
|
862
|
+
.map(e => (e.textContent ? e.textContent.trim() : ''))
|
|
863
|
+
.indexOf(label);
|
|
864
|
+
return matched >= 0 ? buttons[matched] : undefined;
|
|
865
|
+
}
|
|
866
|
+
findFooterDropdownChildButton(label) {
|
|
867
|
+
const buttons = document.querySelectorAll('hermes-dropdown-menu button');
|
|
868
|
+
const matched = Array.from(buttons)
|
|
869
|
+
.map(e => (e.textContent ? e.textContent.trim() : ''))
|
|
870
|
+
.indexOf(label);
|
|
871
|
+
return matched >= 0 ? buttons[matched] : undefined;
|
|
872
|
+
}
|
|
873
|
+
/**
|
|
874
|
+
* handle string and array-based i18n bundle-key structures
|
|
875
|
+
*/
|
|
876
|
+
getButtonIdentifier(label) {
|
|
877
|
+
if (typeof label === 'string') {
|
|
878
|
+
return label;
|
|
879
|
+
}
|
|
880
|
+
else {
|
|
881
|
+
throw Error('invalid i18n tuple argument');
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
class FilterInputTestHelper {
|
|
886
|
+
constructor(inputElement) {
|
|
887
|
+
this.inputElement = inputElement;
|
|
888
|
+
}
|
|
889
|
+
// presence (or not) of the filter control
|
|
890
|
+
assert(validFlag) {
|
|
891
|
+
if (validFlag) {
|
|
892
|
+
expect(this.inputElement).not.toBeNull();
|
|
893
|
+
expect(this.inputElement.disabled).toEqual(false);
|
|
894
|
+
}
|
|
895
|
+
else {
|
|
896
|
+
expect(this.inputElement).toBeNull();
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
inputText(text, triggerEvent) {
|
|
900
|
+
let eventName = 'input';
|
|
901
|
+
if (triggerEvent) {
|
|
902
|
+
eventName = triggerEvent;
|
|
903
|
+
}
|
|
904
|
+
this.inputElement.value = text;
|
|
905
|
+
this.inputElement.dispatchEvent(this.newEvent(eventName));
|
|
906
|
+
// should sync grid??
|
|
907
|
+
}
|
|
908
|
+
// note: should leverage the DebugElement eventing system instead of DOM directly
|
|
909
|
+
newEvent(eventName, bubbles = false, cancelable = false) {
|
|
910
|
+
const evt = document.createEvent('CustomEvent');
|
|
911
|
+
evt.initCustomEvent(eventName, bubbles, cancelable, null);
|
|
912
|
+
return evt;
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
class GridFooterTestHelper {
|
|
916
|
+
constructor(footerElement) {
|
|
917
|
+
this.footerElement = footerElement;
|
|
918
|
+
}
|
|
919
|
+
getElement() {
|
|
920
|
+
return this.footerElement;
|
|
921
|
+
}
|
|
922
|
+
getFooterText() {
|
|
923
|
+
return this.footerElement && this.footerElement.textContent ? this.footerElement.textContent.trim() : '';
|
|
924
|
+
}
|
|
925
|
+
openShowHideColumnsMenu() {
|
|
926
|
+
if (!this.footerElement) {
|
|
927
|
+
return;
|
|
928
|
+
}
|
|
929
|
+
const showHideColumnButton = this.footerElement.querySelector('button[cdkOverlayOrigin]');
|
|
930
|
+
showHideColumnButton.click();
|
|
931
|
+
}
|
|
932
|
+
clickShowHideColumnsItem(name) {
|
|
933
|
+
this.getShowHideColumnsItems();
|
|
934
|
+
const showHideColumnsItem = this.findShowHideColumnsItemByName(name);
|
|
935
|
+
if (showHideColumnsItem) {
|
|
936
|
+
showHideColumnsItem.click();
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
findShowHideColumnsItemByName(name) {
|
|
940
|
+
const checkBoxLabels = this.getShowHideColumnsItems();
|
|
941
|
+
const labelIndex = checkBoxLabels
|
|
942
|
+
.map((element) => (element.textContent ? element.textContent.trim() : ''))
|
|
943
|
+
.indexOf(name);
|
|
944
|
+
return labelIndex !== -1 ? checkBoxLabels[labelIndex] : null;
|
|
945
|
+
}
|
|
946
|
+
getShowHideColumnsItems() {
|
|
947
|
+
if (!this.footerElement) {
|
|
948
|
+
return [];
|
|
949
|
+
}
|
|
950
|
+
const checkBoxLabels = document.body.querySelectorAll('.column-switch hermes-checkbox-wrapper > label');
|
|
951
|
+
return Array.from(checkBoxLabels);
|
|
952
|
+
}
|
|
953
|
+
clickPreviousPaginationButton() {
|
|
954
|
+
if (!this.footerElement) {
|
|
955
|
+
return;
|
|
956
|
+
}
|
|
957
|
+
const button = this.footerElement.querySelector('hermes-dg-pagination button.pagination-previous');
|
|
958
|
+
if (button && !button.disabled) {
|
|
959
|
+
button.click();
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
clickNextPaginationButton() {
|
|
963
|
+
if (!this.footerElement) {
|
|
964
|
+
return;
|
|
965
|
+
}
|
|
966
|
+
const button = this.footerElement.querySelector('hermes-dg-pagination button.pagination-next');
|
|
967
|
+
if (button && !button.disabled) {
|
|
968
|
+
button.click();
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
clickPaginationButton(label) {
|
|
972
|
+
if (!this.footerElement) {
|
|
973
|
+
return;
|
|
974
|
+
}
|
|
975
|
+
const paginationButtons = this.footerElement.querySelectorAll('hermes-dg-pagination li button');
|
|
976
|
+
const paginationButtonIndex = Array.from(paginationButtons)
|
|
977
|
+
.map((element) => (element.textContent ? element.textContent.trim() : ''))
|
|
978
|
+
.indexOf(label);
|
|
979
|
+
if (paginationButtonIndex !== -1) {
|
|
980
|
+
paginationButtons[paginationButtonIndex].click();
|
|
981
|
+
}
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
class GridRowTestHelper {
|
|
985
|
+
constructor(grid, rowElement) {
|
|
986
|
+
this.grid = grid;
|
|
987
|
+
this.rowElement = rowElement;
|
|
988
|
+
}
|
|
989
|
+
// ignores control datagrid cells, which do not display data
|
|
990
|
+
getCell(header) {
|
|
991
|
+
const columnIndex = this.grid.getHeaders().indexOf(header);
|
|
992
|
+
return this.getCellAt(columnIndex);
|
|
993
|
+
}
|
|
994
|
+
// ignores control datagrid cells, which do not display data
|
|
995
|
+
getCellAt(index) {
|
|
996
|
+
return new GridCellTestHelper(this.rowElement.querySelectorAll('hermes-dg-cell').item(index));
|
|
997
|
+
}
|
|
998
|
+
getCellTextAt(index) {
|
|
999
|
+
const cellText = this.rowElement
|
|
1000
|
+
.querySelectorAll('hermes-dg-cell > span')
|
|
1001
|
+
.item(index).textContent;
|
|
1002
|
+
return cellText ? cellText.trim() : '';
|
|
1003
|
+
}
|
|
1004
|
+
getElement() {
|
|
1005
|
+
return this.rowElement;
|
|
1006
|
+
}
|
|
1007
|
+
isSelected() {
|
|
1008
|
+
return this.rowElement.classList.contains('datagrid-selected');
|
|
1009
|
+
}
|
|
1010
|
+
// testing utility logic to verify grid cell value (or substring ) match, and alternatively a negative (non-matching) way to exclude
|
|
1011
|
+
assertCellValues(includeValueList, excludeValueList) {
|
|
1012
|
+
// these cells are present for equality matching
|
|
1013
|
+
if (Array.isArray(includeValueList)) {
|
|
1014
|
+
includeValueList.forEach((cellValue, index) => {
|
|
1015
|
+
const gridCell = this.getCellAt(index);
|
|
1016
|
+
if (cellValue !== undefined) {
|
|
1017
|
+
if (Array.isArray(cellValue)) {
|
|
1018
|
+
// substring containment
|
|
1019
|
+
expect(cellValue.reduce((matched, phrase) => matched && gridCell.getText().includes(phrase), true)).toBe(true);
|
|
1020
|
+
}
|
|
1021
|
+
else {
|
|
1022
|
+
// scalar value
|
|
1023
|
+
expect(gridCell.getText()).toEqual(String(cellValue));
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
else {
|
|
1027
|
+
// undefined means the cell must not be present
|
|
1028
|
+
if (Array.isArray(cellValue)) {
|
|
1029
|
+
// substring containment (negated)
|
|
1030
|
+
expect(cellValue.reduce((matched, phrase) => matched && gridCell.getText().includes(phrase), true)).toBe(false);
|
|
1031
|
+
}
|
|
1032
|
+
else {
|
|
1033
|
+
expect(gridCell.getElement()).toBeNull(`There is no cell at position index ${index}.`);
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
});
|
|
1037
|
+
}
|
|
1038
|
+
// these cells do not match the actual value in the data cell
|
|
1039
|
+
if (Array.isArray(excludeValueList)) {
|
|
1040
|
+
excludeValueList.forEach((cellValue, index) => {
|
|
1041
|
+
const gridCell = this.getCellAt(index);
|
|
1042
|
+
if (cellValue !== undefined) {
|
|
1043
|
+
expect(gridCell.getText()).not.toEqual(String(cellValue));
|
|
1044
|
+
}
|
|
1045
|
+
else {
|
|
1046
|
+
// undefined means the cell must not be present
|
|
1047
|
+
expect(gridCell.getElement()).not.toBeNull(`There is a no cell at position index ${index}.`);
|
|
1048
|
+
}
|
|
1049
|
+
});
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
// find the row selector for single/multiple actions. Action performed programmatically on label ( despite it being empty )
|
|
1053
|
+
select() {
|
|
1054
|
+
const selectionElement = this.rowElement.querySelector('.datagrid-cell.datagrid-select .hermes-control-label');
|
|
1055
|
+
if (!selectionElement) {
|
|
1056
|
+
throw Error('The row is not selectable.');
|
|
1057
|
+
}
|
|
1058
|
+
selectionElement.click();
|
|
1059
|
+
}
|
|
1060
|
+
/**
|
|
1061
|
+
* In case the row selection in the Clarity grid is enabled for multiple selection,
|
|
1062
|
+
* ex. [hermesDgRowSelection]="true" clicking on the checkbox's input causes both the
|
|
1063
|
+
* events for the row selection and the checkbox to be triggered causing the select
|
|
1064
|
+
* and deselect of the element immediately one after the other
|
|
1065
|
+
*/
|
|
1066
|
+
selectMultiWithRowSelectionEnabled() {
|
|
1067
|
+
const selectionElement = this.rowElement.querySelector('.datagrid-select.datagrid-cell > .hermes-checkbox-wrapper');
|
|
1068
|
+
if (!selectionElement) {
|
|
1069
|
+
throw Error('The row is not selectable.');
|
|
1070
|
+
}
|
|
1071
|
+
selectionElement.click();
|
|
1072
|
+
}
|
|
1073
|
+
// clicking the row achieves what? focus
|
|
1074
|
+
click() {
|
|
1075
|
+
const selectionElement = this.rowElement.querySelector('div.datagrid-row-clickable');
|
|
1076
|
+
if (!selectionElement) {
|
|
1077
|
+
throw Error('The row is not clickable.');
|
|
1078
|
+
}
|
|
1079
|
+
selectionElement.click();
|
|
1080
|
+
}
|
|
1081
|
+
isRowClickable() {
|
|
1082
|
+
const selectionElement = this.rowElement.querySelector('div.datagrid-row-clickable');
|
|
1083
|
+
return !!selectionElement;
|
|
1084
|
+
}
|
|
1085
|
+
// check whether the row element has a nested input
|
|
1086
|
+
isSelectionAvailable() {
|
|
1087
|
+
const selectionInput = this.rowElement.querySelector('input');
|
|
1088
|
+
return selectionInput ? true : false;
|
|
1089
|
+
}
|
|
1090
|
+
// check whether the row element has a nested disabled input
|
|
1091
|
+
isSelectionDisabled() {
|
|
1092
|
+
const disabledSelectionInput = this.rowElement.querySelector('input[aria-disabled]');
|
|
1093
|
+
return disabledSelectionInput ? true : false;
|
|
1094
|
+
}
|
|
1095
|
+
expand() {
|
|
1096
|
+
const expandElement = this.rowElement.querySelector('.datagrid-expandable-caret > button.datagrid-expandable-caret-button');
|
|
1097
|
+
if (!expandElement) {
|
|
1098
|
+
throw Error('The row is not expandable.');
|
|
1099
|
+
}
|
|
1100
|
+
expandElement.click();
|
|
1101
|
+
}
|
|
1102
|
+
isExpanded() {
|
|
1103
|
+
return !!this.rowElement.querySelector('hermes-dg-row-detail');
|
|
1104
|
+
}
|
|
1105
|
+
isRowExpandable() {
|
|
1106
|
+
return (this.rowElement.querySelectorAll('.datagrid-expandable-caret > button.datagrid-expandable-caret-button').length >
|
|
1107
|
+
0);
|
|
1108
|
+
}
|
|
1109
|
+
getSingleRowActionMenuButton() {
|
|
1110
|
+
return this.rowElement.querySelector('.datagrid-action-toggle > hermes-icon');
|
|
1111
|
+
}
|
|
1112
|
+
openSingleRowActionMenu() {
|
|
1113
|
+
const menuItems = this.rowElement.querySelectorAll('hermes-dg-action-overflow button.datagrid-action-toggle');
|
|
1114
|
+
if (menuItems && menuItems.length > 0) {
|
|
1115
|
+
menuItems.item(0).click();
|
|
1116
|
+
return true;
|
|
1117
|
+
}
|
|
1118
|
+
return false;
|
|
1119
|
+
}
|
|
1120
|
+
// retrieve action menu item by name
|
|
1121
|
+
getSingleRowActionMenuItem(menuItemName) {
|
|
1122
|
+
const menuItems = document.querySelectorAll('div.datagrid-action-overflow button');
|
|
1123
|
+
const menuItemIndex = Array.from(menuItems)
|
|
1124
|
+
.map((element) => (element.textContent ? element.textContent.trim() : ''))
|
|
1125
|
+
.indexOf(menuItemName);
|
|
1126
|
+
if (menuItemIndex !== -1) {
|
|
1127
|
+
return menuItems[menuItemIndex];
|
|
1128
|
+
}
|
|
1129
|
+
return undefined;
|
|
1130
|
+
}
|
|
1131
|
+
clickOnSingleRowActionMenuItem(menuItemName) {
|
|
1132
|
+
const menuItem = this.getSingleRowActionMenuItem(menuItemName);
|
|
1133
|
+
if (menuItem) {
|
|
1134
|
+
menuItem.click();
|
|
1135
|
+
}
|
|
1136
|
+
}
|
|
1137
|
+
isRowSingleSelectable() {
|
|
1138
|
+
return (!!this.rowElement.querySelector('.datagrid-select.datagrid-cell > .hermes-radio-wrapper') &&
|
|
1139
|
+
!!this.grid
|
|
1140
|
+
.getGridElement()
|
|
1141
|
+
.querySelector('.datagrid-table .datagrid-header > .datagrid-row .datagrid-select.datagrid-column > .datagrid-column-separator'));
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
class GridCellTestHelper {
|
|
1145
|
+
constructor(cellElement) {
|
|
1146
|
+
this.cellElement = cellElement;
|
|
1147
|
+
}
|
|
1148
|
+
getElement() {
|
|
1149
|
+
return this.cellElement;
|
|
1150
|
+
}
|
|
1151
|
+
getText() {
|
|
1152
|
+
const cellElement = this.cellElement;
|
|
1153
|
+
return cellElement.innerText ? cellElement.innerText.trim() : '';
|
|
1154
|
+
}
|
|
1155
|
+
getChildElementText(selector) {
|
|
1156
|
+
const childElement = this.cellElement.querySelector(selector);
|
|
1157
|
+
if (childElement) {
|
|
1158
|
+
return childElement.innerText ? childElement.innerText.trim() : '';
|
|
1159
|
+
}
|
|
1160
|
+
return '';
|
|
1161
|
+
}
|
|
1162
|
+
// datagrid wrapper uses a custom cell objects to project client defined cell formatter
|
|
1163
|
+
// optionally query deeper into the custom cell component as defined by column registry
|
|
1164
|
+
getCellWrapperElement(selector) {
|
|
1165
|
+
const matchedElement = this.cellElement.querySelector('appfx-dg-cell-container');
|
|
1166
|
+
if (!matchedElement) {
|
|
1167
|
+
return null;
|
|
1168
|
+
}
|
|
1169
|
+
return selector ? matchedElement.querySelector(selector) : matchedElement;
|
|
1170
|
+
}
|
|
1171
|
+
// common icons follow the accepted practice of being wrapped in spanned element annotated with "object"
|
|
1172
|
+
getObjectIconElement() {
|
|
1173
|
+
return this.getElement().querySelector('span.object > i') || undefined;
|
|
1174
|
+
}
|
|
1175
|
+
// finds the first simple anchor link and fires a click event if found
|
|
1176
|
+
clickChildLink() {
|
|
1177
|
+
const selectionElement = this.cellElement.querySelector('A');
|
|
1178
|
+
if (!selectionElement) {
|
|
1179
|
+
throw Error('The cell is not clickable.');
|
|
1180
|
+
}
|
|
1181
|
+
else {
|
|
1182
|
+
selectionElement.click();
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
}
|
|
1186
|
+
class GridPlaceholder {
|
|
1187
|
+
constructor(placeholderComponentElement) {
|
|
1188
|
+
this.placeholderComponentElement = placeholderComponentElement;
|
|
1189
|
+
}
|
|
1190
|
+
getElement() {
|
|
1191
|
+
return this.placeholderComponentElement;
|
|
1192
|
+
}
|
|
1193
|
+
getText() {
|
|
1194
|
+
return this.placeholderComponentElement ? this.placeholderComponentElement.textContent.trim() : undefined;
|
|
1195
|
+
}
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
/*
|
|
1199
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1200
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1201
|
+
* This software is released under MIT license.
|
|
1202
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1203
|
+
*/
|
|
1204
|
+
class MockIsRowSelectablePipe {
|
|
1205
|
+
transform(rowItem, isLocked, disabled) {
|
|
1206
|
+
return !isLocked?.(rowItem) || !!disabled;
|
|
1207
|
+
}
|
|
1208
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockIsRowSelectablePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1209
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: MockIsRowSelectablePipe, isStandalone: false, name: "isRowSelectable" }); }
|
|
1210
|
+
}
|
|
1211
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockIsRowSelectablePipe, decorators: [{
|
|
1212
|
+
type: Pipe,
|
|
1213
|
+
args: [{ name: 'isRowSelectable', standalone: false }]
|
|
1214
|
+
}] });
|
|
1215
|
+
|
|
1216
|
+
/*
|
|
1217
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1218
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1219
|
+
* This software is released under MIT license.
|
|
1220
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1221
|
+
*/
|
|
1222
|
+
|
|
1223
|
+
/*
|
|
1224
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1225
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1226
|
+
* This software is released under MIT license.
|
|
1227
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1228
|
+
*/
|
|
1229
|
+
class MockDatagridFiltersComponent {
|
|
1230
|
+
constructor() {
|
|
1231
|
+
this.filterMode = FilterMode.Quick;
|
|
1232
|
+
this.searchTermChange = new EventEmitter();
|
|
1233
|
+
this.propertyFiltersChange = new EventEmitter();
|
|
1234
|
+
}
|
|
1235
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1236
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockDatagridFiltersComponent, isStandalone: false, selector: "appfx-datagrid-filters", inputs: { filterMode: "filterMode", filterableProperties: "filterableProperties" }, outputs: { searchTermChange: "searchTermChange", propertyFiltersChange: "propertyFiltersChange" }, ngImport: i0, template: '', isInline: true }); }
|
|
1237
|
+
}
|
|
1238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridFiltersComponent, decorators: [{
|
|
1239
|
+
type: Component,
|
|
1240
|
+
args: [{
|
|
1241
|
+
selector: 'appfx-datagrid-filters',
|
|
1242
|
+
standalone: false,
|
|
1243
|
+
template: '',
|
|
1244
|
+
}]
|
|
1245
|
+
}], propDecorators: { filterMode: [{
|
|
1246
|
+
type: Input
|
|
1247
|
+
}], filterableProperties: [{
|
|
1248
|
+
type: Input
|
|
1249
|
+
}], searchTermChange: [{
|
|
1250
|
+
type: Output
|
|
1251
|
+
}], propertyFiltersChange: [{
|
|
1252
|
+
type: Output
|
|
1253
|
+
}] } });
|
|
1254
|
+
class MockDatagridFiltersStandaloneComponent extends MockDatagridFiltersComponent {
|
|
1255
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridFiltersStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1256
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockDatagridFiltersStandaloneComponent, isStandalone: true, selector: "appfx-datagrid-filters", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
1257
|
+
}
|
|
1258
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridFiltersStandaloneComponent, decorators: [{
|
|
1259
|
+
type: Component,
|
|
1260
|
+
args: [{
|
|
1261
|
+
selector: 'appfx-datagrid-filters',
|
|
1262
|
+
standalone: true,
|
|
1263
|
+
template: '',
|
|
1264
|
+
}]
|
|
1265
|
+
}] });
|
|
1266
|
+
|
|
1267
|
+
/*
|
|
1268
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1269
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1270
|
+
* This software is released under MIT license.
|
|
1271
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1272
|
+
*/
|
|
1273
|
+
|
|
1274
|
+
/*
|
|
1275
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1276
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1277
|
+
* This software is released under MIT license.
|
|
1278
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1279
|
+
*/
|
|
1280
|
+
class MockAppfxDialogComponent {
|
|
1281
|
+
constructor() {
|
|
1282
|
+
this.onModelChange = new EventEmitter();
|
|
1283
|
+
this.onClose = new EventEmitter();
|
|
1284
|
+
this.openedChange = new EventEmitter();
|
|
1285
|
+
}
|
|
1286
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1287
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxDialogComponent, isStandalone: false, selector: "appfx-dialog", inputs: { title: "title", subTitle: "subTitle", size: "size", height: "height", defaultButton: "defaultButton", cancelButtonLabel: "cancelButtonLabel", okButtonLabel: "okButtonLabel", tabLayout: "tabLayout", disableTabsContent: "disableTabsContent", loading: "loading", steps: "steps", model: "model", closeHandler: "closeHandler", showTabLinks: "showTabLinks", opened: "opened" }, outputs: { onModelChange: "onModelChange", onClose: "onClose", openedChange: "openedChange" }, ngImport: i0, template: '', isInline: true }); }
|
|
1288
|
+
}
|
|
1289
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogComponent, decorators: [{
|
|
1290
|
+
type: Component,
|
|
1291
|
+
args: [{
|
|
1292
|
+
selector: 'appfx-dialog',
|
|
1293
|
+
standalone: false,
|
|
1294
|
+
template: '',
|
|
1295
|
+
}]
|
|
1296
|
+
}], propDecorators: { title: [{
|
|
1297
|
+
type: Input
|
|
1298
|
+
}], subTitle: [{
|
|
1299
|
+
type: Input
|
|
1300
|
+
}], size: [{
|
|
1301
|
+
type: Input
|
|
1302
|
+
}], height: [{
|
|
1303
|
+
type: Input
|
|
1304
|
+
}], defaultButton: [{
|
|
1305
|
+
type: Input
|
|
1306
|
+
}], cancelButtonLabel: [{
|
|
1307
|
+
type: Input
|
|
1308
|
+
}], okButtonLabel: [{
|
|
1309
|
+
type: Input
|
|
1310
|
+
}], tabLayout: [{
|
|
1311
|
+
type: Input
|
|
1312
|
+
}], disableTabsContent: [{
|
|
1313
|
+
type: Input
|
|
1314
|
+
}], loading: [{
|
|
1315
|
+
type: Input
|
|
1316
|
+
}], steps: [{
|
|
1317
|
+
type: Input
|
|
1318
|
+
}], model: [{
|
|
1319
|
+
type: Input
|
|
1320
|
+
}], closeHandler: [{
|
|
1321
|
+
type: Input
|
|
1322
|
+
}], showTabLinks: [{
|
|
1323
|
+
type: Input
|
|
1324
|
+
}], opened: [{
|
|
1325
|
+
type: Input
|
|
1326
|
+
}], onModelChange: [{
|
|
1327
|
+
type: Output
|
|
1328
|
+
}], onClose: [{
|
|
1329
|
+
type: Output
|
|
1330
|
+
}], openedChange: [{
|
|
1331
|
+
type: Output
|
|
1332
|
+
}] } });
|
|
1333
|
+
class MockAppfxDialogStandaloneComponent extends MockAppfxDialogComponent {
|
|
1334
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1335
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxDialogStandaloneComponent, isStandalone: true, selector: "appfx-dialog", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
1336
|
+
}
|
|
1337
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogStandaloneComponent, decorators: [{
|
|
1338
|
+
type: Component,
|
|
1339
|
+
args: [{
|
|
1340
|
+
selector: 'appfx-dialog',
|
|
1341
|
+
standalone: true,
|
|
1342
|
+
template: '',
|
|
1343
|
+
}]
|
|
1344
|
+
}] });
|
|
1345
|
+
|
|
1346
|
+
/*
|
|
1347
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1348
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1349
|
+
* This software is released under MIT license.
|
|
1350
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1351
|
+
*/
|
|
1352
|
+
class MockAppfxDialogHeaderComponent {
|
|
1353
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1354
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxDialogHeaderComponent, isStandalone: false, selector: "appfx-dialog-header", ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
|
|
1355
|
+
}
|
|
1356
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogHeaderComponent, decorators: [{
|
|
1357
|
+
type: Component,
|
|
1358
|
+
args: [{
|
|
1359
|
+
selector: 'appfx-dialog-header',
|
|
1360
|
+
standalone: false,
|
|
1361
|
+
template: `<ng-content></ng-content>`,
|
|
1362
|
+
}]
|
|
1363
|
+
}] });
|
|
1364
|
+
class MockAppfxDialogHeaderStandaloneComponent extends MockAppfxDialogHeaderComponent {
|
|
1365
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogHeaderStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1366
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxDialogHeaderStandaloneComponent, isStandalone: true, selector: "appfx-dialog-header", usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
|
|
1367
|
+
}
|
|
1368
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogHeaderStandaloneComponent, decorators: [{
|
|
1369
|
+
type: Component,
|
|
1370
|
+
args: [{
|
|
1371
|
+
selector: 'appfx-dialog-header',
|
|
1372
|
+
standalone: true,
|
|
1373
|
+
template: `<ng-content></ng-content>`,
|
|
1374
|
+
}]
|
|
1375
|
+
}] });
|
|
1376
|
+
|
|
1377
|
+
/*
|
|
1378
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1379
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1380
|
+
* This software is released under MIT license.
|
|
1381
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1382
|
+
*/
|
|
1383
|
+
|
|
1384
|
+
/*
|
|
1385
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1386
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1387
|
+
* This software is released under MIT license.
|
|
1388
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1389
|
+
*/
|
|
1390
|
+
class MockAppfxMenuActionComponent {
|
|
1391
|
+
constructor() {
|
|
1392
|
+
this.enabled = true;
|
|
1393
|
+
this.handle = new EventEmitter(true);
|
|
1394
|
+
}
|
|
1395
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1396
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxMenuActionComponent, isStandalone: false, selector: "appfx-menu-action", inputs: { actionId: "actionId", iconClass: "iconClass", text: "text", shortcut: "shortcut", enabled: "enabled" }, outputs: { handle: "handle" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
|
|
1397
|
+
}
|
|
1398
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuActionComponent, decorators: [{
|
|
1399
|
+
type: Component,
|
|
1400
|
+
args: [{
|
|
1401
|
+
selector: 'appfx-menu-action',
|
|
1402
|
+
standalone: false,
|
|
1403
|
+
template: '<ng-content></ng-content>',
|
|
1404
|
+
}]
|
|
1405
|
+
}], propDecorators: { actionId: [{
|
|
1406
|
+
type: Input
|
|
1407
|
+
}], iconClass: [{
|
|
1408
|
+
type: Input
|
|
1409
|
+
}], text: [{
|
|
1410
|
+
type: Input
|
|
1411
|
+
}], shortcut: [{
|
|
1412
|
+
type: Input
|
|
1413
|
+
}], enabled: [{
|
|
1414
|
+
type: Input
|
|
1415
|
+
}], handle: [{
|
|
1416
|
+
type: Output
|
|
1417
|
+
}] } });
|
|
1418
|
+
class MockAppfxMenuActionStandaloneComponent extends MockAppfxMenuActionComponent {
|
|
1419
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuActionStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1420
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxMenuActionStandaloneComponent, isStandalone: true, selector: "appfx-menu-action", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
|
|
1421
|
+
}
|
|
1422
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuActionStandaloneComponent, decorators: [{
|
|
1423
|
+
type: Component,
|
|
1424
|
+
args: [{
|
|
1425
|
+
selector: 'appfx-menu-action',
|
|
1426
|
+
standalone: true,
|
|
1427
|
+
template: '<ng-content></ng-content>',
|
|
1428
|
+
}]
|
|
1429
|
+
}] });
|
|
1430
|
+
|
|
1431
|
+
/*
|
|
1432
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1433
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1434
|
+
* This software is released under MIT license.
|
|
1435
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1436
|
+
*/
|
|
1437
|
+
class MockAppfxMenuComponent {
|
|
1438
|
+
constructor() {
|
|
1439
|
+
this.opened = new EventEmitter();
|
|
1440
|
+
this.closed = new EventEmitter();
|
|
1441
|
+
}
|
|
1442
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1443
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxMenuComponent, isStandalone: false, selector: "appfx-menu", inputs: { text: "text" }, outputs: { opened: "opened", closed: "closed" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
|
|
1444
|
+
}
|
|
1445
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuComponent, decorators: [{
|
|
1446
|
+
type: Component,
|
|
1447
|
+
args: [{
|
|
1448
|
+
selector: 'appfx-menu',
|
|
1449
|
+
standalone: false,
|
|
1450
|
+
template: '<ng-content></ng-content>',
|
|
1451
|
+
}]
|
|
1452
|
+
}], propDecorators: { text: [{
|
|
1453
|
+
type: Input
|
|
1454
|
+
}], opened: [{
|
|
1455
|
+
type: Output
|
|
1456
|
+
}], closed: [{
|
|
1457
|
+
type: Output
|
|
1458
|
+
}] } });
|
|
1459
|
+
class MockAppfxMenuStandaloneComponent extends MockAppfxMenuComponent {
|
|
1460
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1461
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxMenuStandaloneComponent, isStandalone: true, selector: "appfx-menu", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
|
|
1462
|
+
}
|
|
1463
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuStandaloneComponent, decorators: [{
|
|
1464
|
+
type: Component,
|
|
1465
|
+
args: [{
|
|
1466
|
+
selector: 'appfx-menu',
|
|
1467
|
+
standalone: true,
|
|
1468
|
+
template: '<ng-content></ng-content>',
|
|
1469
|
+
}]
|
|
1470
|
+
}] });
|
|
1471
|
+
|
|
1472
|
+
/*
|
|
1473
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1474
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1475
|
+
* This software is released under MIT license.
|
|
1476
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1477
|
+
*/
|
|
1478
|
+
|
|
1479
|
+
/*
|
|
1480
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1481
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1482
|
+
* This software is released under MIT license.
|
|
1483
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1484
|
+
*/
|
|
1485
|
+
class MockPropertyViewComponent {
|
|
1486
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1487
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockPropertyViewComponent, isStandalone: false, selector: "appfx-property-view", inputs: { data: "data", config: "config" }, ngImport: i0, template: '', isInline: true }); }
|
|
1488
|
+
}
|
|
1489
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewComponent, decorators: [{
|
|
1490
|
+
type: Component,
|
|
1491
|
+
args: [{
|
|
1492
|
+
selector: 'appfx-property-view',
|
|
1493
|
+
standalone: false,
|
|
1494
|
+
template: '',
|
|
1495
|
+
}]
|
|
1496
|
+
}], propDecorators: { data: [{
|
|
1497
|
+
type: Input
|
|
1498
|
+
}], config: [{
|
|
1499
|
+
type: Input
|
|
1500
|
+
}] } });
|
|
1501
|
+
class MockPropertyViewStandaloneComponent extends MockPropertyViewComponent {
|
|
1502
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1503
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockPropertyViewStandaloneComponent, isStandalone: true, selector: "appfx-property-view", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
1504
|
+
}
|
|
1505
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewStandaloneComponent, decorators: [{
|
|
1506
|
+
type: Component,
|
|
1507
|
+
args: [{
|
|
1508
|
+
selector: 'appfx-property-view',
|
|
1509
|
+
standalone: true,
|
|
1510
|
+
template: '',
|
|
1511
|
+
}]
|
|
1512
|
+
}] });
|
|
1513
|
+
|
|
1514
|
+
/*
|
|
1515
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1516
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1517
|
+
* This software is released under MIT license.
|
|
1518
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1519
|
+
*/
|
|
1520
|
+
/**
|
|
1521
|
+
* Mock user-visible strings used in the 'appfx-property-view' library.
|
|
1522
|
+
*/
|
|
1523
|
+
class MockPropertyViewStrings extends PropertyViewStrings {
|
|
1524
|
+
constructor() {
|
|
1525
|
+
super(...arguments);
|
|
1526
|
+
this.toggle = 'Toggle {0} section';
|
|
1527
|
+
this.actions = 'Actions';
|
|
1528
|
+
this.categoryListItemsAreaLabel = '{0} items grouped in {1} sections.';
|
|
1529
|
+
this.categoryListItemAreaLabel = '{0} items grouped in 1 section.';
|
|
1530
|
+
}
|
|
1531
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewStrings, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1532
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewStrings }); }
|
|
1533
|
+
}
|
|
1534
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewStrings, decorators: [{
|
|
1535
|
+
type: Injectable
|
|
1536
|
+
}] });
|
|
1537
|
+
|
|
1538
|
+
/*
|
|
1539
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1540
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1541
|
+
* This software is released under MIT license.
|
|
1542
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1543
|
+
*/
|
|
1544
|
+
function verifyPropertyViewProperty(key, value, propertyModel) {
|
|
1545
|
+
expect(propertyModel.type).toEqual(PropertyViewModelType.Property);
|
|
1546
|
+
expect(propertyModel.key.text).toEqual(key);
|
|
1547
|
+
for (let i = 0; i < value.length; i++) {
|
|
1548
|
+
expect(propertyModel.content[i].text).toEqual(value[i]);
|
|
1549
|
+
}
|
|
1550
|
+
}
|
|
1551
|
+
function verifyPropertyViewMessage(textValue, icon, messageModel) {
|
|
1552
|
+
expect(messageModel.type).toEqual(PropertyViewModelType.Message);
|
|
1553
|
+
expect(messageModel.text).toEqual(textValue);
|
|
1554
|
+
expect(messageModel.icon).toEqual(icon);
|
|
1555
|
+
}
|
|
1556
|
+
|
|
1557
|
+
/*
|
|
1558
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1559
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1560
|
+
* This software is released under MIT license.
|
|
1561
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1562
|
+
*/
|
|
1563
|
+
|
|
1564
|
+
/*
|
|
1565
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1566
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1567
|
+
* This software is released under MIT license.
|
|
1568
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1569
|
+
*/
|
|
1570
|
+
class MockStepperComponent {
|
|
1571
|
+
constructor() {
|
|
1572
|
+
this.onModelChange = new EventEmitter();
|
|
1573
|
+
this.onFinish = new EventEmitter();
|
|
1574
|
+
}
|
|
1575
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1576
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockStepperComponent, isStandalone: false, selector: "appfx-stepper", inputs: { steps: "steps", wizardModel: "wizardModel", loading: "loading" }, outputs: { onModelChange: "onModelChange", onFinish: "onFinish" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
|
|
1577
|
+
}
|
|
1578
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStepperComponent, decorators: [{
|
|
1579
|
+
type: Component,
|
|
1580
|
+
args: [{
|
|
1581
|
+
selector: 'appfx-stepper',
|
|
1582
|
+
standalone: false,
|
|
1583
|
+
template: '<ng-content></ng-content>',
|
|
1584
|
+
}]
|
|
1585
|
+
}], propDecorators: { steps: [{
|
|
1586
|
+
type: Input
|
|
1587
|
+
}], wizardModel: [{
|
|
1588
|
+
type: Input
|
|
1589
|
+
}], loading: [{
|
|
1590
|
+
type: Input
|
|
1591
|
+
}], onModelChange: [{
|
|
1592
|
+
type: Output
|
|
1593
|
+
}], onFinish: [{
|
|
1594
|
+
type: Output
|
|
1595
|
+
}] } });
|
|
1596
|
+
class MockStepperStandaloneComponent extends MockStepperComponent {
|
|
1597
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStepperStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1598
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockStepperStandaloneComponent, isStandalone: true, selector: "appfx-stepper", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
|
|
1599
|
+
}
|
|
1600
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStepperStandaloneComponent, decorators: [{
|
|
1601
|
+
type: Component,
|
|
1602
|
+
args: [{
|
|
1603
|
+
selector: 'appfx-stepper',
|
|
1604
|
+
standalone: true,
|
|
1605
|
+
template: '<ng-content></ng-content>',
|
|
1606
|
+
}]
|
|
1607
|
+
}] });
|
|
1608
|
+
|
|
1609
|
+
/*
|
|
1610
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1611
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1612
|
+
* This software is released under MIT license.
|
|
1613
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1614
|
+
*/
|
|
1615
|
+
|
|
1616
|
+
/*
|
|
1617
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1618
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1619
|
+
* This software is released under MIT license.
|
|
1620
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1621
|
+
*/
|
|
1622
|
+
class TabsHelper {
|
|
1623
|
+
constructor(contextDebugElement) {
|
|
1624
|
+
const tabsElementMatches = contextDebugElement.queryAll(By.directive(HermesTabs));
|
|
1625
|
+
if (!tabsElementMatches.length) {
|
|
1626
|
+
throw Error('No tabs found under passed context element');
|
|
1627
|
+
}
|
|
1628
|
+
else if (tabsElementMatches.length > 1) {
|
|
1629
|
+
throw Error('Unable to isolate targeted instance of tabs widget');
|
|
1630
|
+
}
|
|
1631
|
+
else {
|
|
1632
|
+
this.tabs = tabsElementMatches[0];
|
|
1633
|
+
this.component = this.tabs.injector.get(HermesTabs);
|
|
1634
|
+
}
|
|
1635
|
+
}
|
|
1636
|
+
/**
|
|
1637
|
+
* Discover clarity tab links of (zero or more) items within the tabs.
|
|
1638
|
+
*/
|
|
1639
|
+
getLinkList() {
|
|
1640
|
+
return this.tabs.queryAll(By.css(`[role="tablist"] > [role="presentation"] > [hermesTabLink]`));
|
|
1641
|
+
}
|
|
1642
|
+
/**
|
|
1643
|
+
* A DOM pointer to a tab link, as afforded by supplied index into collection.
|
|
1644
|
+
*/
|
|
1645
|
+
findLink(linkIndex) {
|
|
1646
|
+
return this.getLinkList()[linkIndex];
|
|
1647
|
+
}
|
|
1648
|
+
/**
|
|
1649
|
+
* Retrieves the active Clarity Tab instance.
|
|
1650
|
+
*/
|
|
1651
|
+
getActiveTab() {
|
|
1652
|
+
return this.component.tabsService.activeTab;
|
|
1653
|
+
}
|
|
1654
|
+
/**
|
|
1655
|
+
* Determines the active shown tab using relative sequences that map directly to DOM source order.
|
|
1656
|
+
*/
|
|
1657
|
+
getActiveTabIndex() {
|
|
1658
|
+
return this.component.tabLinkDirectives.findIndex(tabLink => tabLink.tabLinkId === this.component.tabsService.activeTab.tabLink.tabLinkId);
|
|
1659
|
+
}
|
|
1660
|
+
/**
|
|
1661
|
+
* Extract located projected content as provided for the active tab.
|
|
1662
|
+
*/
|
|
1663
|
+
getActiveTabContentElement() {
|
|
1664
|
+
const evr = this.getActiveTab().tabContent['viewRef'];
|
|
1665
|
+
return evr ? evr.rootNodes[0].firstElementChild || undefined : undefined;
|
|
1666
|
+
}
|
|
1667
|
+
/**
|
|
1668
|
+
* Clicks a tab link given the tab index.
|
|
1669
|
+
*/
|
|
1670
|
+
clickLink(linkIndex) {
|
|
1671
|
+
const tabLink = this.component.tabLinkDirectives[linkIndex];
|
|
1672
|
+
try {
|
|
1673
|
+
tabLink.activate();
|
|
1674
|
+
}
|
|
1675
|
+
catch {
|
|
1676
|
+
throw Error('No tab link found at index ' + linkIndex);
|
|
1677
|
+
}
|
|
1678
|
+
}
|
|
1679
|
+
/**
|
|
1680
|
+
* Searches for tab link text, as applied to a tab button.
|
|
1681
|
+
*/
|
|
1682
|
+
findLinkText(linkIndex) {
|
|
1683
|
+
const tabLinkElement = this.findLink(linkIndex);
|
|
1684
|
+
return tabLinkElement ? tabLinkElement.nativeElement.textContent.trim() : undefined;
|
|
1685
|
+
}
|
|
1686
|
+
/**
|
|
1687
|
+
* Debug element for the icon found inside the tab link.
|
|
1688
|
+
*/
|
|
1689
|
+
findLinkIcon(linkIndex) {
|
|
1690
|
+
const tabLinkElement = this.findLink(linkIndex);
|
|
1691
|
+
return (tabLinkElement && tabLinkElement.query(By.css('hermes-icon'))) || undefined;
|
|
1692
|
+
}
|
|
1693
|
+
/**
|
|
1694
|
+
* Optionally find the custom component or desired HTML element within the active panel.
|
|
1695
|
+
*/
|
|
1696
|
+
findContentView(childTabContentQuery) {
|
|
1697
|
+
const panel = this.tabs.query(By.css(`section.active`));
|
|
1698
|
+
return panel && childTabContentQuery ? panel.query(childTabContentQuery) || undefined : panel || undefined;
|
|
1699
|
+
}
|
|
1700
|
+
areTabsVisible() {
|
|
1701
|
+
const tabsPanel = this.tabs.query(By.css(`.nav`));
|
|
1702
|
+
return getComputedStyle(tabsPanel.nativeElement)['display'] !== 'none';
|
|
1703
|
+
}
|
|
1704
|
+
}
|
|
1705
|
+
|
|
1706
|
+
/*
|
|
1707
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1708
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1709
|
+
* This software is released under MIT license.
|
|
1710
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1711
|
+
*/
|
|
1712
|
+
|
|
1713
|
+
/*
|
|
1714
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1715
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1716
|
+
* This software is released under MIT license.
|
|
1717
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1718
|
+
*/
|
|
1719
|
+
class MockStepComponent {
|
|
1720
|
+
activate() {
|
|
1721
|
+
this.model.isActivated = true;
|
|
1722
|
+
}
|
|
1723
|
+
validate() {
|
|
1724
|
+
return of(true).pipe(tap(() => {
|
|
1725
|
+
this.model.isValidated = true;
|
|
1726
|
+
}));
|
|
1727
|
+
}
|
|
1728
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1729
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockStepComponent, isStandalone: false, selector: "appfx-mock-page-page", ngImport: i0, template: '<div>{{ model.mockPropertyValue }}</div>', isInline: true }); }
|
|
1730
|
+
}
|
|
1731
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStepComponent, decorators: [{
|
|
1732
|
+
type: Component,
|
|
1733
|
+
args: [{
|
|
1734
|
+
selector: 'appfx-mock-page-page',
|
|
1735
|
+
standalone: false,
|
|
1736
|
+
template: '<div>{{ model.mockPropertyValue }}</div>',
|
|
1737
|
+
}]
|
|
1738
|
+
}] });
|
|
1739
|
+
class InvalidMockComponent extends MockStepComponent {
|
|
1740
|
+
validate() {
|
|
1741
|
+
return of(false).pipe(tap(() => {
|
|
1742
|
+
this.model.isValidated = true;
|
|
1743
|
+
}));
|
|
1744
|
+
}
|
|
1745
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: InvalidMockComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1746
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: InvalidMockComponent, isStandalone: false, selector: "appfx-invalid-mock-page-page", usesInheritance: true, ngImport: i0, template: '<div></div>', isInline: true }); }
|
|
1747
|
+
}
|
|
1748
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: InvalidMockComponent, decorators: [{
|
|
1749
|
+
type: Component,
|
|
1750
|
+
args: [{
|
|
1751
|
+
selector: 'appfx-invalid-mock-page-page',
|
|
1752
|
+
standalone: false,
|
|
1753
|
+
template: '<div></div>',
|
|
1754
|
+
}]
|
|
1755
|
+
}] });
|
|
1756
|
+
class MockStepModel {
|
|
1757
|
+
constructor(mockPropertyValue) {
|
|
1758
|
+
this.mockPropertyValue = mockPropertyValue;
|
|
1759
|
+
this.isActivated = false;
|
|
1760
|
+
this.isValidated = false;
|
|
1761
|
+
this.validationState = new StepValidationState();
|
|
1762
|
+
}
|
|
1763
|
+
}
|
|
1764
|
+
/** Simple mock of {@link WorkflowConfigurationService} used by workflow-dependent tests. */
|
|
1765
|
+
class MockWorkflowConfigurationService {
|
|
1766
|
+
constructor() {
|
|
1767
|
+
this.debugValue = false;
|
|
1768
|
+
}
|
|
1769
|
+
get debug() {
|
|
1770
|
+
return this.debugValue;
|
|
1771
|
+
}
|
|
1772
|
+
set debug(newValue) {
|
|
1773
|
+
this.debugValue = newValue;
|
|
1774
|
+
}
|
|
1775
|
+
}
|
|
1776
|
+
class MockWorkflowTestModule {
|
|
1777
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockWorkflowTestModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1778
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: MockWorkflowTestModule, declarations: [InvalidMockComponent, MockStepComponent], imports: [NoopAnimationsModule] }); }
|
|
1779
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockWorkflowTestModule, imports: [NoopAnimationsModule] }); }
|
|
1780
|
+
}
|
|
1781
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockWorkflowTestModule, decorators: [{
|
|
1782
|
+
type: NgModule,
|
|
1783
|
+
args: [{
|
|
1784
|
+
imports: [NoopAnimationsModule],
|
|
1785
|
+
declarations: [InvalidMockComponent, MockStepComponent],
|
|
1786
|
+
}]
|
|
1787
|
+
}] });
|
|
1788
|
+
|
|
1789
|
+
/*
|
|
1790
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1791
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1792
|
+
* This software is released under MIT license.
|
|
1793
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1794
|
+
*/
|
|
1795
|
+
|
|
1796
|
+
/*
|
|
1797
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1798
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1799
|
+
* This software is released under MIT license.
|
|
1800
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1801
|
+
*/
|
|
1802
|
+
class MockAppfxWizardComponent {
|
|
1803
|
+
constructor() {
|
|
1804
|
+
this.openedChange = new EventEmitter();
|
|
1805
|
+
this.onModelChange = new EventEmitter();
|
|
1806
|
+
this.onFinish = new EventEmitter();
|
|
1807
|
+
this.onClose = new EventEmitter();
|
|
1808
|
+
}
|
|
1809
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxWizardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1810
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxWizardComponent, isStandalone: false, selector: "appfx-wizard", inputs: { title: "title", pages: "pages", wizardModel: "wizardModel", loading: "loading", size: "size", opened: "opened" }, outputs: { openedChange: "openedChange", onModelChange: "onModelChange", onFinish: "onFinish", onClose: "onClose" }, ngImport: i0, template: '', isInline: true }); }
|
|
1811
|
+
}
|
|
1812
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxWizardComponent, decorators: [{
|
|
1813
|
+
type: Component,
|
|
1814
|
+
args: [{
|
|
1815
|
+
selector: 'appfx-wizard',
|
|
1816
|
+
standalone: false,
|
|
1817
|
+
template: '',
|
|
1818
|
+
}]
|
|
1819
|
+
}], propDecorators: { title: [{
|
|
1820
|
+
type: Input
|
|
1821
|
+
}], pages: [{
|
|
1822
|
+
type: Input
|
|
1823
|
+
}], wizardModel: [{
|
|
1824
|
+
type: Input
|
|
1825
|
+
}], loading: [{
|
|
1826
|
+
type: Input
|
|
1827
|
+
}], size: [{
|
|
1828
|
+
type: Input
|
|
1829
|
+
}], opened: [{
|
|
1830
|
+
type: Input
|
|
1831
|
+
}], openedChange: [{
|
|
1832
|
+
type: Output
|
|
1833
|
+
}], onModelChange: [{
|
|
1834
|
+
type: Output
|
|
1835
|
+
}], onFinish: [{
|
|
1836
|
+
type: Output
|
|
1837
|
+
}], onClose: [{
|
|
1838
|
+
type: Output
|
|
1839
|
+
}] } });
|
|
1840
|
+
class MockWizardStandaloneComponent extends MockAppfxWizardComponent {
|
|
1841
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockWizardStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1842
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockWizardStandaloneComponent, isStandalone: true, selector: "appfx-wizard", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
1843
|
+
}
|
|
1844
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockWizardStandaloneComponent, decorators: [{
|
|
1845
|
+
type: Component,
|
|
1846
|
+
args: [{
|
|
1847
|
+
selector: 'appfx-wizard',
|
|
1848
|
+
standalone: true,
|
|
1849
|
+
template: '',
|
|
1850
|
+
}]
|
|
1851
|
+
}] });
|
|
1852
|
+
|
|
1853
|
+
/*
|
|
1854
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1855
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1856
|
+
* This software is released under MIT license.
|
|
1857
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1858
|
+
*/
|
|
1859
|
+
class WizardHelper {
|
|
1860
|
+
#navPanelSelector = '.hermes-wizard-stepnav-wrapper';
|
|
1861
|
+
#navitemSelector = 'hermes-wizard-stepnav .hermes-wizard-stepnav-item';
|
|
1862
|
+
#showStepNavBinSelector = '.btn-show-stepnav';
|
|
1863
|
+
#closeStepNavBinSelector = '.btn-close-stepnav';
|
|
1864
|
+
constructor(wizard) {
|
|
1865
|
+
this.wizard = wizard;
|
|
1866
|
+
}
|
|
1867
|
+
get pageNavTitles() {
|
|
1868
|
+
// getlastTextNode is needed because hermes-icon contains a span with text labels for
|
|
1869
|
+
// the icons which we don't care about.
|
|
1870
|
+
return this.wizard
|
|
1871
|
+
.queryAll(By.css(this.#navitemSelector + ' .hermes-wizard-stepnav-link-title'))
|
|
1872
|
+
.map((v) => this.getLastTextNode(v));
|
|
1873
|
+
}
|
|
1874
|
+
get isVisible() {
|
|
1875
|
+
return getComputedStyle(this.wizard.nativeElement)['visibility'] === 'visible';
|
|
1876
|
+
}
|
|
1877
|
+
get activePageNavTitle() {
|
|
1878
|
+
const activeNavItem = this.wizard.query(By.css(this.#navitemSelector + '.active .hermes-wizard-stepnav-link-title'));
|
|
1879
|
+
if (!activeNavItem) {
|
|
1880
|
+
return '';
|
|
1881
|
+
}
|
|
1882
|
+
return this.getLastTextNode(activeNavItem);
|
|
1883
|
+
}
|
|
1884
|
+
get activePageTitle() {
|
|
1885
|
+
return this.wizard.query(By.css('.hermes-wizard-page-title')).nativeElement.innerText.trim();
|
|
1886
|
+
}
|
|
1887
|
+
get size() {
|
|
1888
|
+
return Array.from(this.wizard.nativeElement.classList)
|
|
1889
|
+
.map((value) => {
|
|
1890
|
+
const matches = value.match(/^wizard-(sm|md|lg|xl)$/);
|
|
1891
|
+
return (matches || [])[1];
|
|
1892
|
+
})
|
|
1893
|
+
.filter(v => !!v)
|
|
1894
|
+
.pop();
|
|
1895
|
+
}
|
|
1896
|
+
get buttons() {
|
|
1897
|
+
return this.wizard.queryAll(By.css('hermes-wizard-button button'));
|
|
1898
|
+
}
|
|
1899
|
+
get visibleButtons() {
|
|
1900
|
+
return this.buttons.filter((value) => {
|
|
1901
|
+
return value.nativeElement.parentElement.getAttribute('aria-hidden') === 'false';
|
|
1902
|
+
});
|
|
1903
|
+
}
|
|
1904
|
+
get cancelButton() {
|
|
1905
|
+
return this.buttons[0];
|
|
1906
|
+
}
|
|
1907
|
+
get cancelButtonText() {
|
|
1908
|
+
return this.cancelButton.nativeElement.innerText.trim();
|
|
1909
|
+
}
|
|
1910
|
+
get backButton() {
|
|
1911
|
+
return this.buttons[1];
|
|
1912
|
+
}
|
|
1913
|
+
get backButtonText() {
|
|
1914
|
+
return this.backButton.nativeElement.innerText.trim();
|
|
1915
|
+
}
|
|
1916
|
+
get nextButton() {
|
|
1917
|
+
return this.buttons[2];
|
|
1918
|
+
}
|
|
1919
|
+
get nextButtonText() {
|
|
1920
|
+
return this.nextButton.nativeElement.innerText.trim();
|
|
1921
|
+
}
|
|
1922
|
+
get finishButton() {
|
|
1923
|
+
return this.buttons[3];
|
|
1924
|
+
}
|
|
1925
|
+
get finishButtonText() {
|
|
1926
|
+
return this.finishButton.nativeElement.innerText.trim();
|
|
1927
|
+
}
|
|
1928
|
+
get stepNavPanel() {
|
|
1929
|
+
return this.wizard.query(By.css(this.#navPanelSelector));
|
|
1930
|
+
}
|
|
1931
|
+
get stepNavs() {
|
|
1932
|
+
return this.wizard.queryAll(By.css(this.#navitemSelector + ' .hermes-wizard-stepnav-link'));
|
|
1933
|
+
}
|
|
1934
|
+
get showStepNavBtn() {
|
|
1935
|
+
return this.wizard.query(By.css(this.#showStepNavBinSelector));
|
|
1936
|
+
}
|
|
1937
|
+
get closeStepNavBtn() {
|
|
1938
|
+
return this.wizard.query(By.css(this.#closeStepNavBinSelector));
|
|
1939
|
+
}
|
|
1940
|
+
navigateToStep(stepIndex) {
|
|
1941
|
+
this.click(this.stepNavs[stepIndex]);
|
|
1942
|
+
}
|
|
1943
|
+
isNavVisible() {
|
|
1944
|
+
return getComputedStyle(this.stepNavPanel.nativeElement)['display'] !== 'none';
|
|
1945
|
+
}
|
|
1946
|
+
isStepNavEnabled(stepIndex) {
|
|
1947
|
+
return this.stepNavs[stepIndex].attributes['disabled'] === undefined;
|
|
1948
|
+
}
|
|
1949
|
+
isShowNavIconVisible() {
|
|
1950
|
+
return getComputedStyle(this.showStepNavBtn.nativeElement)['display'] !== 'none';
|
|
1951
|
+
}
|
|
1952
|
+
showNavigator() {
|
|
1953
|
+
this.click(this.showStepNavBtn);
|
|
1954
|
+
}
|
|
1955
|
+
closeNavigator() {
|
|
1956
|
+
this.click(this.closeStepNavBtn);
|
|
1957
|
+
}
|
|
1958
|
+
cancel() {
|
|
1959
|
+
this.click(this.cancelButton);
|
|
1960
|
+
}
|
|
1961
|
+
back() {
|
|
1962
|
+
this.click(this.backButton);
|
|
1963
|
+
}
|
|
1964
|
+
next() {
|
|
1965
|
+
this.click(this.nextButton);
|
|
1966
|
+
}
|
|
1967
|
+
finish() {
|
|
1968
|
+
this.click(this.finishButton);
|
|
1969
|
+
}
|
|
1970
|
+
click(el) {
|
|
1971
|
+
el.triggerEventHandler('click', null);
|
|
1972
|
+
}
|
|
1973
|
+
getLastTextNode(debugElement) {
|
|
1974
|
+
// Find the last child node of type text (3)
|
|
1975
|
+
const childNodes = debugElement.nativeElement.childNodes;
|
|
1976
|
+
let result = '';
|
|
1977
|
+
childNodes.forEach((node) => {
|
|
1978
|
+
if (node.nodeType === 3) {
|
|
1979
|
+
const text = node.textContent?.trim() || '';
|
|
1980
|
+
// comments included by Angular are seen as text nodes, but terxtContent returns
|
|
1981
|
+
// an empty string. We should ignore those.
|
|
1982
|
+
if (text !== '') {
|
|
1983
|
+
result = text;
|
|
1984
|
+
}
|
|
1985
|
+
}
|
|
1986
|
+
});
|
|
1987
|
+
return result;
|
|
1988
|
+
}
|
|
1989
|
+
}
|
|
1990
|
+
|
|
1991
|
+
/*
|
|
1992
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1993
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1994
|
+
* This software is released under MIT license.
|
|
1995
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1996
|
+
*/
|
|
1997
|
+
|
|
1998
|
+
/*
|
|
1999
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
2000
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
2001
|
+
* This software is released under MIT license.
|
|
2002
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
2003
|
+
*/
|
|
2004
|
+
|
|
2005
|
+
/**
|
|
2006
|
+
* Generated bundle index. Do not edit.
|
|
2007
|
+
*/
|
|
2008
|
+
|
|
2009
|
+
export { FilterInputTestHelper, GridCellTestHelper, GridFooterTestHelper, GridHelper, GridPlaceholder, GridRowTestHelper, InvalidMockComponent, MockA11yService, MockAppfxCardContainerComponent, MockAppfxCardContainerStandaloneComponent, MockAppfxDatagridComponent, MockAppfxDialogComponent, MockAppfxDialogHeaderComponent, MockAppfxDialogHeaderStandaloneComponent, MockAppfxDialogStandaloneComponent, MockAppfxMenuActionComponent, MockAppfxMenuActionStandaloneComponent, MockAppfxMenuComponent, MockAppfxMenuStandaloneComponent, MockAppfxWizardComponent, MockCardContainerComponent, MockContainerService, MockDatagridActionBarComponent, MockDatagridCellContainerComponent, MockDatagridColumnToggleComponent, MockDatagridFiltersComponent, MockDatagridFiltersStandaloneComponent, MockDatagridPersistSettingsDirective, MockDatagridPreserveSelectionDirective, MockDragDropService, MockElementRef, MockIsRowSelectablePipe, MockLayoutService, MockPropertyViewComponent, MockPropertyViewStandaloneComponent, MockPropertyViewStrings, MockRenderer2, MockRequiredFieldLegendComponent, MockRequiredFieldLegendStandaloneComponent, MockStandaloneDatagridComponent, MockStepComponent, MockStepModel, MockStepperComponent, MockStepperStandaloneComponent, MockWizardStandaloneComponent, MockWorkflowConfigurationService, MockWorkflowTestModule, SampleCardComponent, SampleCardWithoutFooterComponent, SampleCardWithoutHeaderComponent, TabsHelper, WizardHelper, ZoomLevelServiceMock, cardIdToOrder, sampleCards, sampleCardsSettings, sortCardsFn, verifyPropertyViewMessage, verifyPropertyViewProperty };
|
|
2010
|
+
//# sourceMappingURL=hermes-ui-angular-addons-testing.mjs.map
|